Added code to expand F-key definitions.

This commit is contained in:
Bobbi Webber-Manners 2022-12-19 18:44:39 -05:00
parent 287fa9fab3
commit c8264a17b8
3 changed files with 38 additions and 36 deletions

Binary file not shown.

View File

@ -55,7 +55,6 @@ FXESCEFFECT EQU BYTEVARBASE+230
FX200VAR EQU BYTEVARBASE+200
FXSOFTLEN EQU BYTEVARBASE+216
FXSOFTOK EQU BYTEVARBASE+244
SOFTKEYOFF EQU $03FF ; *TEMP*
FX254VAR EQU BYTEVARBASE+254
FX2VAR EQU BYTEVARBASE+$B1
@ -97,20 +96,13 @@ WRCHHND4 PLA ; Drop stacked character
* Character Input
*****************
* Default keyboard OSBYTE variables
*DEFBYTELOW EQU 219 ; First default OSBYTE value
*DEFBYTE DB $09,$1B ; Default key codes
* DB $01,$D0,$E0,$F0 ; Default key expansion
* DB $01,$80,$90,$00 ; Default key expansion
*DEFBYTEEND
* TEMP as no *KEY
* Default keyboard OSBYTE variables
DEFBYTELOW EQU 219 ; First default OSBYTE value
DEFBYTE DB $09,$1B ; Default key codes
DB $C0,$D0,$E0,$F0 ; Default key expansion
DB $80,$90,$A0,$B0 ; Default key expansion
DEFBYTELOW EQU 219 ; First default OSBYTE value
DEFBYTE DB $09,$1B ; Default key codes
DB $01,$D0,$E0,$F0 ; Default key expansion
DB $01,$80,$90,$00 ; Default key expansion
DEFBYTEEND
KBDINIT LDX #DEFBYTEEND-DEFBYTE-1
:KBDINITLP LDA DEFBYTE,X ; Initialise KBD OSBYTE variables
STA BYTEVARBASE+DEFBYTELOW,X
@ -480,22 +472,17 @@ KEYREAD LDY FXEXEC ; See if EXEC file is open
LDA #$00 ; EOF, close EXEC file
STA FXEXEC ; Clear EXEC handle
JSR OSFIND ; And close it
KEYREAD1
*
* TO DO: expand current soft key
* LDA FXSOFTLEN
* BEQ KEYREAD2
* LDX SOFTKEYOFF
* page in main memory
* LDA SOFTKEYS,X
* page out main memory
* INC SOFTKEYOFF
* DEC FXSOFTLEN
* CLC
* RTS
* KEYREAD2
*
JSR KBDREAD ; Fetch character from KBD "buffer"
KEYREAD1 LDA FXSOFTLEN
BEQ KEYREAD2
LDX SOFTKEYOFF
>>> RDMAIN
LDA FKEYBUF,X
>>> RDAUX
INC SOFTKEYOFF
DEC FXSOFTLEN
CLC
RTS
KEYREAD2 JSR KBDREAD ; Fetch character from KBD "buffer"
BCS KEYREADOK ; Nothing pending
TAY ; Y=unmodified character
BPL KEYREADOK ; Not top-bit key
@ -528,12 +515,9 @@ KEYSOFTY TYA ; Get key including Shift/Ctrl
EOR #$04 ; Offset into KEYBASE
TAX
LDA FXKEYBASE-8,X
* TO DO:
*BEQ KEYNONE ; $00=ignored
*DEC A
*BEQ expandfunction
CMP #2 ; *TEMP*
BCC KEYNONE ; *TEMP*
BEQ KEYNONE ; Value 0 means 'ignore key'
DEC A
BEQ EXPANDKEY ; Value 1 means 'expand key'
TYA
AND #$0F
CLC
@ -541,6 +525,24 @@ KEYSOFTY TYA ; Get key including Shift/Ctrl
CLC
RTS
* Expand soft key
* On entry: Y key code ($8n where n is F-key num)
EXPANDKEY TYA
AND #$0F ; Obtain F-key number
TAX
PHX
JSR KEYSUMLENS ; Obtain starting offset
STA SOFTKEYOFF
PLX
>>> RDMAIN
LDA FKEYLENS,X ; Obtain length of *KEY string
>>> RDAUX
STA FXSOFTLEN
RTS
SOFTKEYOFF DB $00
* Process cursor keys
KEYCURSOR CMP #$C9
BEQ KEYCOPY

View File

@ -218,6 +218,6 @@ BYTE00 BEQ BYTE00A ; OSBYTE 0,0 - generate error
RTS ; %000x1xxx host type, 'A'pple
BYTE00A BRK
DB $F7
HELLO ASC 'Applecorn MOS 2022-12-18'
HELLO ASC 'Applecorn MOS 2022-12-19'
DB $00 ; Unify MOS messages