From 0a7067e89be89ce82bc4a932586031e941afba0e Mon Sep 17 00:00:00 2001 From: cuz Date: Mon, 28 Mar 2005 16:01:08 +0000 Subject: [PATCH] Squeezed out a few bytes git-svn-id: svn://svn.cc65.org/cc65/trunk@3427 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/apple2/revers.s | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/libsrc/apple2/revers.s b/libsrc/apple2/revers.s index 2e79e6c8f..982925b9e 100644 --- a/libsrc/apple2/revers.s +++ b/libsrc/apple2/revers.s @@ -1,5 +1,5 @@ ; -; Kevin Ruland +; Ullrich von Bassewitz, 2005-03-28 ; ; unsigned char __fastcall__ revers (unsigned char onoff) ; @@ -9,15 +9,14 @@ .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