0100 ; JOYSTICK EXPANDER›0110 ; BY MATT LOVELESS AND MIKE EGGERS›0120 ; (c) 1987, ANTIC PUBLISHING›0130 ;›0140 *= $0600 ;Page 6›0150 SETVBV = $E45C ;Routine to set VBI vectors›0160 XITVBV = $E462 ;EXIT VBI VECTOR›0170 STICK = $0278 ;beginning of OS's joystick values›0180 DVBVLK = $0224 ;Address of deferred VBI vector›0190 ;›0200 SETUP›0210 LDA DVBVLK ;Save old vector›0220 STA RETADD›0230 LDA DVBVLK+1›0240 STA RETADD+1›0250 LDX #UPDATE/256 ;High byte of VBI vector›0260 LDY #UPDATE&255 ;Low byte›0270 LDA #7 ;Use deferred vector›0280 JSR SETVBV ;Set VBLANK›0290 PLA ;* BASIC ONLY *›0300 RTS ›0310 ;›0320 UPDATE›0330 LDX #$03 ;4 sticks (0-3)›0340 ;›0350 LOOP›0360 LDA STICK,X ;Get this joystick reading...›0370 TAY ; -- AND --›0380 LDA TABLE,Y ;use it to index into the table›0390 STA STICK,X ;Store new value›0400 DEX ›0410 BPL LOOP ;If not finished then branch back›0420 ;›0430 JMP (RETADD)›0440 TABLE›0450 .BYTE 0,0,0,0,0 ;Bad values return a zero›0460 .BYTE 4 ;RIGHT/BACK›0470 .BYTE 2 ;RIGHT/FORWARD›0480 .BYTE 3 ;RIGHT›0490 .BYTE 0›0500 .BYTE 6 ;LEFT/BACK›0510 .BYTE 8 ;LEFT/FORWARD›0520 .BYTE 7 ;LEFT›0530 .BYTE 0›0540 .BYTE 5 ;BACK›0550 .BYTE 1 ;FORWARD›0560 .BYTE 0 ;CENTERED›0570 ;›0580 RETADD›0590 *= *+2 ;Return address›0600 .END ›