- ;;
- ;; 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 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 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