;System equates used CASINI = $02 TRAMSZ = $06 BOOT = $09 ATRACT = $4D VKEYBD = $0208 VVBLKI = $0222 SRTIMR = $022B KEYDEL = $02F1 CH1 = $02F2 CH = $02FC SSFLAG = $02FF KBCODE = $D209 SYSVBV = $E45F ;End of system equates ;Zero-page equates ; ;Z0001 = $CD bufin = $CD ; idx for putting things ; into buf ;Z0002 = $CE bufout = $CE ; idx for taking things ; ; out of buf ; ;Z0003 = $CB ;Z0004 = $CC ksbufp = $CB ; keystroke buffer ; ;End of zero-page equates ; *= $0600 *= $B000 ; new ver PLA start: LDA #$03 STA BOOT ;$0009 LDA #start\ STA CASINI ;$0002 LDA #start^ STA CASINI+1 ;$0003 LDA #$00 STA bufin ;$00CD STA bufout ;$00CE ; LDA #$E0 lda #ksbuf\ STA ksbufp ;$00CB ; LDA #$06 lda #ksbuf^ STA ksbufp+1 ;$00CC ; LDA #$B4 lda #keyvbi\ STA VVBLKI ;$0222 ; LDA #$06 lda #keyvbi^ STA VVBLKI+1 ;$0223 ; LDA #$30 lda #ikeybd\ STA VKEYBD ;$0208 ; LDA #$06 lda #ikeybd^ STA VKEYBD+1 ;$0209 RTS ; ikeybd: ; keyboard interrupt TYA PHA LDA #$03 STA BOOT ;$0009 LDA #start\ STA CASINI ;$0002 LDA #start^ STA CASINI+1 ;$0003 LDA KBCODE ;$D209 CMP CH1 ;$02F2 BNE L0005 ;$064B LDA KEYDEL ;$02F1 BNE L0006 ;$06AB L0005 LDA KBCODE ;$D209 CMP #$9F BNE L0007 ;$065C LDA SSFLAG ;$02FF EOR #$FF STA SSFLAG ;$02FF BCS L0006 ;$06AB L0007 CMP #$B2 BNE L0008 ;$066D LDA #$00 STA bufin ;$00CD STA bufout ;$00CE LDA #$FF STA CH ;$02FC BCS L0006 ;$06AB L0008 STA CH1 ;$02F2 LDA #$03 STA KEYDEL ;$02F1 LDA #$00 STA ATRACT ;$004D LDA bufin ;$00CD CMP bufout ;$00CE BEQ L0009 ;$068B LDY bufin ;$00CD INY TYA CMP bufout ;$00CE BEQ L0006 ;$06AB LDA bufin ;$00CD BPL L0010 ;$069A L0009 LDA CH ;$02FC CMP #$FF BNE L0010 ;$069A LDA KBCODE ;$D209 STA CH ;$02FC BCS L0006 ;$06AB L0010 LDA KBCODE ;$D209 LDY bufin ;$00CD STA (ksbufp),Y ;$00CB INY TYA ; CMP #$1E cmp #kssize BNE L0011 ;$06A9 LDA #$00 L0011 STA bufin ;$00CD L0006 LDA #$30 STA SRTIMR ;$022B PLA TAY PLA RTI ; keyvbi: ; deferred processing, ; at vblank time LDA bufin ;$00CD CMP bufout ;$00CE BEQ L0012 ;$06D7 LDA #$30 STA SRTIMR ;$022B LDA CH ;$02FC CMP #$FF BNE L0012 ;$06D7 LDY bufout ;$00CE LDA (ksbufp),Y ;$00CB STA CH ;$02FC INY TYA ; CMP #$1E cmp #kssize BNE L0013 ;$06D5 LDA #$00 L0013 STA bufout ;$00CE L0012 JMP SYSVBV ;$E45F .BYTE $22,$0C ; ??? ; ;ksbuf = $6E0 ksbuf: kssize = $1E ; *= $02E2 ; ORA (TRAMSZ ,X) ;$0006 .word start ; ;External reference equates ;End of external references ; .END $2075