📄 scankey.asm
字号:
scan_keyboard:
ldx #0
paint06:
stz <KeyNo ;; PreClear Key No.
lda ScanKeyTal,x
sta <Pb ;; Scan out.先扫描地线
jsr delay_xxx
lda <pa
eor #0ffh
bne paintxxx
clc ;;
lda <KeyNo ;;
adc #8 ;;
sta <KeyNo ;;
paint2:
inx
lda ScanKeyTal,x
sta <pb ;; Scan out.
jsr delay_xxx
paintxxx:
lda <KeyNo
bbr0 <PA,kinc0 ;; Key press.
bbr1 <PA,kinc1
bbr2 <PA,kinc2
bbr3 <PA,kinc3
bbr4 <PA,kinc4
bbr5 <PA,kinc5
bbr6 <PA,kinc6
bbr7 <PA,kinc7
cpx #9
bcs paint5 ;; Branch if end scan.
adc #8
sta <KeyNo
bra paint2
paint5:
stz <Pb ;; Scan all key。
lda #80h ;; Set null key number.
sta <KeyNo ;; Set key off state.
smb4 <EFlag ;; 设定Key up事件处理旗号.
jsr NxSeed
pla
pla
jmp painte
kinc7: inc <KeyNo
kinc6: inc <KeyNo
kinc5: inc <KeyNo
kinc4: inc <KeyNo
kinc3: inc <KeyNo
kinc2: inc <KeyNo
kinc1: inc <KeyNo
kinc0:
paint55:
stz <pb ;; Scan all key。
smb3 <EFlag ;; 设定 Key down 事件处理旗号。
rts
;;======================================================
porta_int:
JPAInt:
pha
phx
phy
cld
jsr scan_keyboard ;; It's power key on mode.
ldy <keyno
bmi painte
jsr scan_keyboard ;; It's power key on mode.
cpy <keyno
bne painte
lda AlarmFlag2
and #00100000b ;; Alarm sound ?
beq paint7 ;; No !
lda AlarmFlag2
and #11011111b ;; Stop Alarm sound.
sta AlarmFlag2
stz ToneCounter
rmb4 <soundflag
LSoundOff
rmb3 <EFlag ;; Clear Key down 事件。
bra painte
paint7: ldx #0 ;; Reload auto power off time counter.
bbr4 <SysOpt,paint8 ;; Branch if auto power timer is 3 minuts.
ldx #2 ;; Index to 5 minuts table.
paint8: lda ATPTab,x
sta PowerT
lda ATPTab+1,x
sta PowerT+1
jsr NxSeed
painte: lda <PA ;; Reload last states。
jmp IntRt
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -