From 94ea416652b7900c50a601d06fff37f31a1a02ad Mon Sep 17 00:00:00 2001 From: cuz Date: Fri, 9 Aug 2002 05:07:06 +0000 Subject: [PATCH] Optimization git-svn-id: svn://svn.cc65.org/cc65/trunk@1384 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/vic20/readjoy.s | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/libsrc/vic20/readjoy.s b/libsrc/vic20/readjoy.s index 9aec6bd49..b3dace61c 100644 --- a/libsrc/vic20/readjoy.s +++ b/libsrc/vic20/readjoy.s @@ -16,26 +16,25 @@ .proc _readjoy - lda #$C3 ; mask for VIA1 JOYBITS: sw0,sw1,sw2,sw4 - ldx #$7F ; mask for VIA2 JOYBIT: sw3 + lda #$7F ; mask for VIA2 JOYBIT: sw3 + ldx #$C3 ; mask for VIA1 JOYBITS: sw0,sw1,sw2,sw4 sei ; necessary? - ldy VIA1_DDRA ; remember the state of DDRA - sta VIA1_DDRA ; set JOYBITS on this VIA for input - lda VIA1_JOY ; read JOYBITS: sw0,sw1,sw2,sw4 - sty VIA1_DDRA ; restore the state of DDRA - and #$3C ; Mask relevant bits... - sta tmp1 ; ...and save for later - ldy VIA2_DDRB ; remember the date of DDRB - stx VIA2_DDRB ; set JOYBITS on this VIA for input + sta VIA2_DDRB ; set JOYBITS on this VIA for input lda VIA2_JOY ; read JOYBIT: sw3 sty VIA2_DDRB ; restore the state of DDRB + asl ; Shift sw3 into carry + + ldy VIA1_DDRA ; remember the state of DDRA + stx VIA1_DDRA ; set JOYBITS on this VIA for input + lda VIA1_JOY ; read JOYBITS: sw0,sw1,sw2,sw4 + sty VIA1_DDRA ; restore the state of DDRA cli ; necessary? - and #$80 ; Mask sw3 - ora tmp1 ; Get sw0, sw1, sw2, sw4 - eor #$BC ; Active states are inverted + ror ; Shift sw3 into bit 7 + and #$9E ; Mask relevant bits + eor #$9E ; Active states are inverted rts -- 2.39.5