]> git.sur5r.net Git - cc65/blobdiff - libsrc/apple2/revers.s
assert parm count
[cc65] / libsrc / apple2 / revers.s
index 7020829006a70b50b6aed6645a4147c42a2bdd07..83fcb2ae70d1acb5d36319386d57349d6416bfc4 100644 (file)
@@ -1,25 +1,22 @@
-       ;;
-       ;; Kevin Ruland
-       ;;
-       ;; unsigned char __fastcall__ revers (unsigned char onoff)
-       ;;
+;
+; Ullrich von Bassewitz, 2005-03-28
+;
+; unsigned char __fastcall__ revers (unsigned char onoff)
+;
 
-       .export         _revers
+        .export         _revers
 
-       .include        "apple2.inc"
+        .include        "apple2.inc"
 
 _revers:
-       ldy     TEXTTYP         ; Stash old value
-       and     #$FF            ; Test for any bit
-       bne     reverse         ; Nothing set
-       lda     #$FF
-reverse:       
-       ora     #$3F    
-       sta     TEXTTYP
-       tya                     ; What was the old value?
-       eor     #$FF            ; Normal = $FF, Reverse = $3F
-       beq     L2
-       lda     #01
-L2:    
-       rts
-
+        tax                     ; Test onoff
+        beq     normal          ; If zero, "normal" must be set
+        ldx     #$3F+1          ; Set "inverse"
+normal: dex                     ; $00->$FF, $40->$3F
+        lda     #$00            ; Preload return code for "normal"
+        ldy     INVFLG          ; Load current flag value
+        stx     INVFLG          ; Save new flag value
+        bmi     :+              ; Jump if current value is $FF (normal)
+        lda     #$01            ; Return "inverse"
+:       ldx     #$00
+        rts