]> git.sur5r.net Git - cc65/blobdiff - libsrc/apple2/revers.s
assert parm count
[cc65] / libsrc / apple2 / revers.s
index 2e79e6c8fc7bb8660e51b7130e3a3ca5b980ad7f..83fcb2ae70d1acb5d36319386d57349d6416bfc4 100644 (file)
@@ -1,23 +1,22 @@
 ;
-; Kevin Ruland
+; 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     INVFLG          ; Stash old value
-       and     #$FF            ; Test for any bit
-       beq     normal          ; Nothing set
-       lda     #~$3F           ; Not Inverse
-normal:        eor     #$FF            ; Xor Normal
-       sta     INVFLG
-       tya                     ; What was the old value?
-       eor     #$FF            ; Normal = $FF, Inverse = $3F
-       beq     :+
-       lda     #$01
-:      ldx     #$00
-       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