home *** CD-ROM | disk | FTP | other *** search
- 0100 ; CONSOLE KEY EXPANDER¢0110 ; BY MATT LOVELESS AND MIKE EGGERS¢0120 ; (c) 1987, ANTIC PUBLISHING¢0130 ; EQUATES¢0140 CONSOL = $D01F ;CONSOLE BUTTONS¢0150 SKSTAT = $D20F ;SERIAL PORT/KEYBOARD STATUS¢0160 VALRTRN = 212 ;LOCATION TO STORE USR RETURN VALUE¢0170 SETVBV = $E45C ;SET VBI VECTOR¢0180 SYSVBV = $E45F ;SYSTEM VBI¢0190 XITVBV = $E462 ;EXIT VBI¢0200 ;¢0210 *= $0600¢0220 LDA #$00¢0230 STA FLAG ;ZERO THE FLAG¢0240 PLA ¢0250 BNE INIT¢0260 ;¢0270 RTS ¢0280 INIT¢0290 TAX ¢0300 PLA ;DISCARD HIGH BYTE AWAY¢0310 PLA ;GET LOW BYTE¢0320 STA BUTTON ;SAVE IT¢0330 DEX ;COMPENSATE FOR REMOVING FIRST ARGUMENT¢0340 BEQ GETVBI ;IF ALL PARAMETERS ARE OFF THEN BRANCH¢0350 LOOP1¢0360 PLA ;REMOVE BAD¢0370 PLA ;VALUES WHICH¢0380 DEX ;MIGHT OCCUR¢0390 BNE LOOP1 ;IN THE USR CALL¢0400 ;¢0410 GETVBI¢0420 BIT BUTTON¢0430 BEQ VBIOFF ;OPTION #0¢0440 ;¢0450 BMI VBION ;OPTION #128¢0460 ;¢0470 ;OPTION #1¢0480 ;¢0490 LDA #$01¢0500 STA FLAG¢0510 ;¢0520 VBION¢0530 LDA #BUTTON/256 ;HIGH BYTE FOR USR RETURN¢0540 STA VALRTRN+1¢0550 LDA #BUTTON&255 ;LOW BYTE¢0560 STA VALRTRN¢0570 ; GRAB VBI¢0580 LDX #VBI/256 ;HIGH BYTE¢0590 LDY #VBI&255 ;LOW BYTE¢0600 LDA #$07 ;DEFERRED VBI¢0610 JSR SETVBV¢0620 LDA #$00¢0630 STA BUTTON¢0640 RTS ¢0650 ;¢0660 VBIOFF¢0670 LDA #CONSOL/256 ;HIGH BYTE FOR USR¢0680 STA VALRTRN+1¢0690 LDA #CONSOL&255 ;LOW BYTE¢0700 STA VALRTRN¢0710 LDX #XITVBV/256 ;HIGH BYTE¢0720 LDY #XITVBV&255 ;LOW BYTE¢0730 LDA #$07 ;DEFERRED VBI¢0740 JMP SETVBV ;ITS RTS WILL RETURN TO CARTRIDGE¢0750 ;¢0760 ; THE DEFERRED VBI VECTOR POINTS¢0770 ; HERE.¢0780 ;¢0790 VBI¢0800 LDA SKSTAT¢0810 AND #$08 ;"AND-OUT" ALL BUT BIT-3 (SHIFT KEY)¢0820 ORA CONSOL ;OR, IN CONSOLE KEYS¢0830 EOR #$0F ;SWITCH THE LOWER NIBBLE.¢0840 LDX FLAG¢0850 BNE ZERO ;ARE WE IN LATCHED MODE?¢0860 ;---YES¢0870 TAX ;COPY A-REG INTO X-REG¢0880 AND #$F7 ;AND OUT SHIFT VALUE¢0890 BEQ EXIT ;IF NO CONSOLE KEYS THEN EXIT¢0900 ;¢0910 TXA ;ELSE RETURN ORIGINAL VALUE¢0920 JMP STORE¢0930 ZERO¢0940 TAX ¢0950 AND #$F7 ;"AND-OUT" SHIFT VALUE¢0960 BEQ STORE ;IF NO CONSOLE KEYS THEN STORE A ZERO¢0970 ;¢0980 TXA ;OTHERWISE STORE THE ORIGINAL VALUE¢0990 ;¢1000 STORE¢1010 STA BUTTON¢1020 EXIT¢1030 JMP XITVBV¢1040 ;¢1050 FLAG¢1060 .BYTE 0¢1070 BUTTON¢1080 .BYTE 0¢1090 ;¢1100 .END ¢