;
-; Kevin Ruland
+; Ullrich von Bassewitz, 2005-03-28
;
; unsigned char __fastcall__ revers (unsigned char onoff)
;
.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
+ 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