10 ; KEYCOMM.ASM 20 ; BY PAUL DRIVER 30 ; ANTIC MAGAZINE 40 ATRACT = $4D 50 VKEYBD = $0208 60 SRTIMR = $022B 70 COLBAK = $02C8 80 INITAD = $02E2 90 KEYDEL = $02F1 0100 CH1 = $02F2 0110 CH = $02FC 0120 SSFLAG = $02FF 0130 CONSOL = $D01F 0140 KBCODE = $D209 0150 SETVBV = $E45C 0160 XITVBV = $E462 0170 *= $0600 0180 ;INITIALIZATION ROUTINE 0190 INIT LDA #PINIT/256 0200 STA $0D 0210 LDA #PINIT&255 0220 STA $0C 0230 LDA #DVINT/256 0240 STA $0B 0250 LDA #DVINT&255 0260 STA $0A 0270 LDA #60 ; turn off the 0280 STA $D302 ; cassette motor 0290 LDA #7 ; DEFERRED VBLANK 0300 LDX # >VBVRTN 0310 LDY # <VBVRTN 0320 JSR SETVBV 0330 LDA #6 ; INITIALIZE OLD 0340 STA OLD 0350 LDA #0 ; INITIALIZE LOCK 0360 STA LOCK 0370 LDA #7 0380 STA OLD 0390 LDA # <KYBDINT ;point to our 0400 STA VKEYBD ; keyboard 0410 LDA # >KYBDINT ;interrupt 0420 STA VKEYBD+1 ; routine 0430 RTS 0440 ;KEYBOARD INTERUPT HANDLER 0450 KYBDINT LDA KBCODE 0460 CMP CH1 0470 BNE PIRQ3 0480 LDA KEYDEL 0490 BNE PIRQ4 0500 PIRQ3 LDA KBCODE 0510 CMP #$9F ;CTRL-1 0520 BNE PIRQ1 0530 LDA SSFLAG 0540 EOR #$FF 0550 STA SSFLAG 0560 BCS PIRQ4 0570 PIRQ1 ORA LOCK ;OUR CUSTOMIZATION 0580 STA CH 0590 STA CH1 0600 LDA #3 0610 STA KEYDEL 0620 LDA #0 0630 STA ATRACT 0640 PIRQ4 LDA #$30 0650 STA SRTIMR 0660 PIRQ2 PLA 0670 RTI 0680 ;VERTICAL BLANK ROUTINE 0690 VBVRTN 0700 LDA CONSOL ;get console key 0710 AND #6 ;mask SELECT/OPTION 0720 CMP OLD ;has it changed? 0730 BEQ EXIT ;branch if not 0740 STA OLD ;hold new value 0750 EOR #6 ;invert bits 0760 ASL A ;move to MSB 0770 ASL A 0780 ASL A 0790 ASL A 0800 ASL A 0810 EOR LOCK ;toggle value 0820 STA LOCK ;hold onto new val 0830 BEQ SKIP ;branch if 0 0840 ORA #4 ;turn up luminance 0850 SKIP STA COLBAK 0860 EXIT LDA LOCK ;Added for repeat 0870 ORA CH ;feature 0880 STA CH 0890 JMP XITVBV 0900 OLD *= *+1 0910 LOCK *= *+1 0920 PATCH LDA $0C 0930 STA PINIT+1 0940 LDA $0D 0950 STA PINIT+2 0960 LDA $0A 0970 STA DVINT+1 0980 LDA $0B 0990 STA DVINT+2 1000 JMP INIT 1010 PINIT JSR INIT 1020 JMP INIT 1030 DVINT JSR INIT 1040 JMP INIT 1050 *= INITAD 1060 .WORD PATCH
Back to previous page