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
Back to previous page