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

View File

@ -36,6 +36,7 @@
* 12-Dec-2022 Test code to write *KEY data to mainmem. * 12-Dec-2022 Test code to write *KEY data to mainmem.
* 24-Dec-2022 Minor bit of tidying. * 24-Dec-2022 Minor bit of tidying.
* 26-Dec-2022 Integrated ADB extended keyboard keys. * 26-Dec-2022 Integrated ADB extended keyboard keys.
* 27-Dec-2022 Bobbi's keyboard uses $60+n extended keys.
* Hardware locations * Hardware locations
@ -120,7 +121,7 @@ KBDINIT LDX #DEFBYTEEND-DEFBYTE-1
LDA #$80 ; Keypad keys are function keys LDA #$80 ; Keypad keys are function keys
STA FXKEYPADBASE STA FXKEYPADBASE
JSR SOFTKEYCHK ; Clear soft keys 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 STX FX254VAR ; b7-b4=default KBD map, b3-b0=default MODE
BIT SETV ; Set V BIT SETV ; Set V
JSR KBDTEST ; Test if key being pressed 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 BPL KEYREADOK ; Not top-bit key
AND #$CF ; Drop Shift/Ctrl bits AND #$CF ; Drop Shift/Ctrl bits
CMP #$C9 CMP #$C9
BCC KEYSOFTY ; Not cursor key BCC KEYSOFTHI ; Not cursor key
* BCC KEYSOFTY ; Not cursor key
LDX FX4VAR LDX FX4VAR
BEQ KEYCURSOR ; *FX4,0 - editing keys BEQ KEYCURSOR ; *FX4,0 - editing keys
CPY #$C9 CPY #$C9
@ -518,7 +520,8 @@ KEYSOFTHI LDX FX254VAR
CPX #$C0 CPX #$C0
BCC KEYSOFTY BCC KEYSOFTY
TYA TYA
AND #$BF EOR #$40 ; Toggle keyboard map
* AND #$BF
TAY TAY
KEYSOFTY TYA ; Get key including Shift/Ctrl KEYSOFTY TYA ; Get key including Shift/Ctrl
LSR A LSR A
@ -564,7 +567,7 @@ KEYCURSOR CMP #$C9
JSR GETCHRC ; Save char under cursor JSR GETCHRC ; Save char under cursor
STA OLDCHAR STA OLDCHAR
KEYNONE SEC KEYNONE SEC
RTS KBDDONE2 RTS
KEYCOPY BIT VDUSTATUS KEYCOPY BIT VDUSTATUS
KEYCOPYTAB LDA FXTABCHAR ; Prepare TAB if no copy cursor 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 KBDTEST LDA KBDDATA ; VS here to test for keypress
EOR #$80 ; Toggle bit 7 EOR #$80 ; Toggle bit 7
CMP #$80 CMP #$80
BCS KBDDONE ; No key pressed BCS KBDDONE2 ; No key pressed
BVS KBDDONE ; VS=test for keypress BVS KBDDONE2 ; VS=test for keypress
STA KBDACK ; Ack. keypress STA KBDACK ; Ack. keypress
KBDREAD2 TAX ; X=raw keypress KBDREAD2 TAX ; X=raw keypress
* *
@ -636,7 +639,13 @@ KBDREAD2B AND #$10
BEQ KBDREAD5 ; Not keypad BEQ KBDREAD5 ; Not keypad
PLP ; Drop NoALT PLP ; Drop NoALT
TXA ; A=raw keypress 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 BEQ KBDCHKESC ; $00=use unchanged
BPL KBDREAD4 ; Keypad not function keys BPL KBDREAD4 ; Keypad not function keys
CMP #$20 CMP #$20
@ -699,6 +708,10 @@ KBDCURSR CLC
ADC #$C4 ; Cursor keys $C0+x ADC #$C4 ; Cursor keys $C0+x
BRA KBDFUNC 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 * Poll the keyboard to update Escape state
* On exit, MI=Escape state pending * On exit, MI=Escape state pending