X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fcbm510%2Fkscnkey.s;h=37af3b1e4098558e1ef18c3b444e3eb8364e12f3;hb=86fe20fb1459438a88ef97e35672798717f18119;hp=d29845d026cba1383713a4b879668db3b18edb40;hpb=14f2349ea1d8f24eec6bc0240b81a3396b1d67c2;p=cc65 diff --git a/libsrc/cbm510/kscnkey.s b/libsrc/cbm510/kscnkey.s index d29845d02..37af3b1e4 100644 --- a/libsrc/cbm510/kscnkey.s +++ b/libsrc/cbm510/kscnkey.s @@ -4,123 +4,123 @@ ; Keyboard polling stuff for the 510. ; - .export k_scnkey - .importzp tpi2, ktab1, ktab2, ktab3, ktab4 + .export scnkey + .importzp tpi2, ktab1, ktab2, ktab3, ktab4 + .importzp keyidx, keybuf, keyscanbuf, keysave, modkey, norkey + .importzp graphmode, lastidx, rptdelay, rptcount - .include "zeropage.inc" - .include "io.inc" - .include "page3.inc" + .include "cbm510.inc" -.proc k_scnkey +.proc scnkey lda #$FF - sta ModKey - sta NorKey - lda #$00 - sta KbdScanBuf - ldy #tpiPortB - sta (tpi2),y - ldy #tpiPortA - sta (tpi2),y + sta modkey + sta norkey + lda #$00 + sta keyscanbuf + ldy #TPI::PRB + sta (tpi2),y + ldy #TPI::PRA + sta (tpi2),y jsr Poll and #$3F eor #$3F bne L1 jmp NoKey -L1: lda #$FF - ldy #tpiPortA - sta (tpi2),y +L1: lda #$FF + ldy #TPI::PRA + sta (tpi2),y asl a - ldy #tpiPortB - sta (tpi2),y + ldy #TPI::PRB + sta (tpi2),y jsr Poll pha - sta ModKey + sta modkey ora #$30 - bne L3 ; Branch always + bne L3 ; Branch always -L2: jsr Poll -L3: ldx #$05 - ldy #$00 -L4: lsr a +L2: jsr Poll +L3: ldx #$05 + ldy #$00 +L4: lsr a bcc L5 - inc KbdScanBuf + inc keyscanbuf dex bpl L4 sec - ldy #tpiPortB - lda (tpi2),y - rol a - sta (tpi2),y - ldy #tpiPortA - lda (tpi2),y - rol a - sta (tpi2),y + ldy #TPI::PRB + lda (tpi2),y + rol a + sta (tpi2),y + ldy #TPI::PRA + lda (tpi2),y + rol a + sta (tpi2),y bcs L2 pla - bcc NoKey ; Branch always + bcc NoKey ; Branch always -L5: ldy KbdScanBuf - sty NorKey +L5: ldy keyscanbuf + sty norkey pla asl a asl a asl a bcc L6 bmi L7 - lda (ktab2),y ; Shifted normal key - ldx GrafMode + lda (ktab2),y ; Shifted normal key + ldx graphmode beq L8 - lda (ktab3),y ; Shifted key in graph mode + lda (ktab3),y ; Shifted key in graph mode bne L8 -L6: lda (ktab4),y ; Key with ctrl pressed - bne L8 -L7: lda (ktab1),y ; Normal key -L8: tax - cpx #$FF ; Valid key? +L6: lda (ktab4),y ; Key with ctrl pressed + bne L8 +L7: lda (ktab1),y ; Normal key +L8: tax + cpx #$FF ; Valid key? beq Done - cpy LastIndex + cpy lastidx beq Repeat ldx #$13 - stx RepeatDelay - ldx KeyIndex + stx rptdelay + ldx keyidx cpx #$09 beq NoKey cpy #$59 bne PutKey cpx #$08 beq NoKey - sta KeyBuf,x + sta keybuf,x inx bne PutKey -NoKey: ldy #$FF -Done: sty LastIndex -End: lda #$7F - ldy #tpiPortA - sta (tpi2),y - ldy #tpiPortB - lda #$FF - sta (tpi2),y +NoKey: ldy #$FF +Done: sty lastidx +End: lda #$7F + ldy #TPI::PRA + sta (tpi2),y + ldy #TPI::PRB + lda #$FF + sta (tpi2),y rts -Repeat: dec RepeatDelay +Repeat: dec rptdelay bpl End - inc RepeatDelay - dec RepeatCount + inc rptdelay + dec rptcount bpl End - inc RepeatCount - ldx KeyIndex + inc rptcount + ldx keyidx bne End -PutKey: sta KeyBuf,x +PutKey: sta keybuf,x inx - stx KeyIndex + stx keyidx ldx #$03 - stx RepeatCount + stx rptcount bne Done .endproc @@ -128,19 +128,16 @@ PutKey: sta KeyBuf,x ; Poll the keyboard port until it's stable -.proc Poll - ldy #tpiPortC -L1: lda (tpi2),y - sta KeySave - lda (tpi2),y - cmp KeySave - bne L1 - rts +.proc Poll + ldy #TPI::PRC +L1: lda (tpi2),y + sta keysave + lda (tpi2),y + cmp keysave + bne L1 + rts .endproc -.bss - -KeySave: .res 1