0100 ;KEYJOY.M65›0110 ;BY TED STOCKWELL›0120 ;MODIFIED BY PATRICK BASS›0130 ;(c) 1986, ANTIC PUBLISHING›0140 ; V. 010786›0150 .SET 1,20›0160 .TAB 8,12,30›0170 TOTALCODE = ENDCODE-STARTCODE›0180 .OPT NO LIST›0190 ;---------------------------›0200 ;›0210 STARTCODE = $0110›0220 SETVBV = $E45C ;Set Vector.›0230 SYSVBV = $E45F ;Do VBlank.›0240 VBSETCODE = 6›0250 STICK0 = $0278 ;Stick shadow.›0260 SPEED = $00 ;Repeat Speed.›0270 CH = $02FC›0280 CUR.UP = 142 ;Cursor Values.›0290 CUR.DOWN = 143›0300 CUR.LEFT = 134›0310 CUR.RIGHT = 135›0320 ;›0330 ;---------------------------›0340 *= STARTCODE›0350 ;›0360 ;To activate, point the VBlank vector to our routine.›0370 INSTALL›0380 PLA ›0390 LDY # MAIN›0410 LDA #VBSETCODE›0420 JSR SETVBV›0430 RTS ›0440 ;›0450 ;------------------------›0460 ;Now every vertical blank sends us here first.›0470 MAIN›0480 DEC COUNT ;Bump down.›0490 BNE DONE ;Branch out if timer still on.›0500 LDA SPEED ;Else refresh›0510 STA COUNT ;delay counter.›0520 ;›0530 LDA STICK0 ;Get stick val›0540 EOR #$0F ;Invert it.›0550 BEQ DONE ;If 0, no press.›0560 ;›0570 LDX #$FF ;Otherwise reset key selector.›0580 MLOOP›0590 INX ;point to next ;key selection.›0600 LSR A ;Check for bit.›0610 BCC MLOOP ;Branch if no bit available.›0620 LDA KEYS,X ;Else grab Key›0630 STA CH ;Store in shadow›0640 DONE›0650 JMP SYSVBV ;Do rest of Vertical Blank.›0660 ;›0670 ;-----------------------------›0680 KEYS›0690 .BYTE CUR.UP,CUR.DOWN›0700 .BYTE CUR.LEFT,CUR.RIGHT›0710 ;›0720 COUNT›0730 .BYTE 5›0740 ;›0750 ENDCODE›0760 .END ›