Merged $60+n ADB keycode translation

This commit is contained in:
jgharston 2022-12-27 03:52:30 +00:00 committed by GitHub
parent 5fcc8dae06
commit 43369b00f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 7 deletions

View File

@ -36,6 +36,7 @@
* 12-Dec-2022 Test code to write *KEY data to mainmem.
* 24-Dec-2022 Minor bit of tidying.
* 26-Dec-2022 Integrated ADB extended keyboard keys.
* 27-Dec-2022 Bobbi's keyboard uses $60+n extended keys.
* Hardware locations
@ -120,7 +121,7 @@ KBDINIT LDX #DEFBYTEEND-DEFBYTE-1
LDA #$80 ; Keypad keys are function keys
STA FXKEYPADBASE
JSR SOFTKEYCHK ; Clear soft keys
LDX #$C3 ; Default KBD=Native, MODE=3
LDX #$83 ; Default KBD=Native, MODE=3
STX FX254VAR ; b7-b4=default KBD map, b3-b0=default MODE
BIT SETV ; Set V
JSR KBDTEST ; Test if key being pressed
@ -501,7 +502,8 @@ KEYREAD2 JSR KBDREAD ; Fetch character from KBD "buffer"
BPL KEYREADOK ; Not top-bit key
AND #$CF ; Drop Shift/Ctrl bits
CMP #$C9
BCC KEYSOFTY ; Not cursor key
BCC KEYSOFTHI ; Not cursor key
* BCC KEYSOFTY ; Not cursor key
LDX FX4VAR
BEQ KEYCURSOR ; *FX4,0 - editing keys
CPY #$C9
@ -518,7 +520,8 @@ KEYSOFTHI LDX FX254VAR
CPX #$C0
BCC KEYSOFTY
TYA
AND #$BF
EOR #$40 ; Toggle keyboard map
* AND #$BF
TAY
KEYSOFTY TYA ; Get key including Shift/Ctrl
LSR A
@ -564,7 +567,7 @@ KEYCURSOR CMP #$C9
JSR GETCHRC ; Save char under cursor
STA OLDCHAR
KEYNONE SEC
RTS
KBDDONE2 RTS
KEYCOPY BIT VDUSTATUS
KEYCOPYTAB LDA FXTABCHAR ; Prepare TAB if no copy cursor
@ -600,8 +603,8 @@ KBDREAD CLV ; VC=return keypress
KBDTEST LDA KBDDATA ; VS here to test for keypress
EOR #$80 ; Toggle bit 7
CMP #$80
BCS KBDDONE ; No key pressed
BVS KBDDONE ; VS=test for keypress
BCS KBDDONE2 ; No key pressed
BVS KBDDONE2 ; VS=test for keypress
STA KBDACK ; Ack. keypress
KBDREAD2 TAX ; X=raw keypress
*
@ -636,7 +639,13 @@ KBDREAD2B AND #$10
BEQ KBDREAD5 ; Not keypad
PLP ; Drop NoALT
TXA ; A=raw keypress
LDX FXKEYPADBASE
BMI KBDREADPAD ; Translate keypad
CMP #$60
BCC KBDREADPAD
LDA KBDADBKEYS-$60,X ; Translate $60-$7E keys
BRA KBDREAD6
KBDREADPAD LDX FXKEYPADBASE
BEQ KBDCHKESC ; $00=use unchanged
BPL KBDREAD4 ; Keypad not function keys
CMP #$20
@ -699,6 +708,10 @@ KBDCURSR CLC
ADC #$C4 ; Cursor keys $C0+x
BRA KBDFUNC
KBDADBKEYS DB $85,$86,$87,$83,$88,$89,$80,$8B
DB $80,$8D,$80,$8E,$80,$8A,$80,$8C
DB $80,$8F,$C6,$C8,$CB,$C7,$84,$87
DB $82,$CA,$81,$CC,$CD,$CE,$C4,$7F
* Poll the keyboard to update Escape state
* On exit, MI=Escape state pending