From 69021f298d91caeb4e2eddd1b4854c15efb3dfee Mon Sep 17 00:00:00 2001 From: Rob Gowin Date: Thu, 11 Dec 2025 14:38:31 -0600 Subject: [PATCH 1/3] Move KBD STATE constants to hbios.inc --- Source/HBIOS/hbios.inc | 11 +++++++++++ Source/HBIOS/kbd.asm | 11 ----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index f642679f..58cf4417 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -502,6 +502,17 @@ KY_F3 .EQU $19 ; F3 KY_F2 .EQU $1A ; F2 KY_F1 .EQU $1B ; F1 ; +; KEYBOARD STATE BITS (FOR KBD_STATE, KBD_LSTATE, KBD_RSTATE) +; +KBD_SHIFT .EQU 01H ; BIT 0, SHIFT ACTIVE (PRESSED) +KBD_CTRL .EQU 02H ; BIT 1, CONTROL ACTIVE (PRESSED) +KBD_ALT .EQU 04H ; BIT 2, ALT ACTIVE (PRESSED) +KBD_WIN .EQU 08H ; BIT 3, WIN ACTIVE (PRESSED) +KBD_SCRLCK .EQU 10H ; BIT 4, CAPS LOCK ACTIVE (TOGGLED ON) +KBD_NUMLCK .EQU 20H ; BIT 5, NUM LOCK ACTIVE (TOGGLED ON) +KBD_CAPSLCK .EQU 40H ; BIT 6, SCROLL LOCK ACTIVE (TOGGLED ON) +KBD_NUMPAD .EQU 80H ; BIT 7, NUM PAD KEY (KEY PRESSED IS ON NUM PAD) +; ; HBIOS CONTROL BLOCK OFFSETS ; WARNING: THESE OFFSETS WILL CHANGE SIGNIFICANTLY BETWEEN RELEASES ; IT IS STRONGLY RECOMMENDED THAT YOU DO NOT USE THEM! diff --git a/Source/HBIOS/kbd.asm b/Source/HBIOS/kbd.asm index aef2881f..91c59415 100644 --- a/Source/HBIOS/kbd.asm +++ b/Source/HBIOS/kbd.asm @@ -46,17 +46,6 @@ KBD_EXT .EQU 01H ; BIT 0, EXTENDED SCANCODE ACTIVE KBD_BREAK .EQU 02H ; BIT 1, THIS IS A KEY UP (BREAK) EVENT KBD_KEYRDY .EQU 80H ; BIT 7, INDICATES A DECODED KEYCODE IS READY ; -; STATE BITS (FOR KBD_STATE, KBD_LSTATE, KBD_RSTATE) -; -KBD_SHIFT .EQU 01H ; BIT 0, SHIFT ACTIVE (PRESSED) -KBD_CTRL .EQU 02H ; BIT 1, CONTROL ACTIVE (PRESSED) -KBD_ALT .EQU 04H ; BIT 2, ALT ACTIVE (PRESSED) -KBD_WIN .EQU 08H ; BIT 3, WIN ACTIVE (PRESSED) -KBD_SCRLCK .EQU 10H ; BIT 4, CAPS LOCK ACTIVE (TOGGLED ON) -KBD_NUMLCK .EQU 20H ; BIT 5, NUM LOCK ACTIVE (TOGGLED ON) -KBD_CAPSLCK .EQU 40H ; BIT 6, SCROLL LOCK ACTIVE (TOGGLED ON) -KBD_NUMPAD .EQU 80H ; BIT 7, NUM PAD KEY (KEY PRESSED IS ON NUM PAD) -; KBD_DEFRPT .EQU $40 ; DEFAULT REPEAT RATE (.5 SEC DELAY, 30CPS) KBD_DEFSTATE .EQU KBD_NUMLCK ; DEFAULT STATE (NUM LOCK ON) KBD_ACK .EQU $FA ; CMD ACKNOWLEDGE From 9b8320e34a912b359324bcb183737f832328b6fc Mon Sep 17 00:00:00 2001 From: Rob Gowin Date: Fri, 12 Dec 2025 09:14:35 -0600 Subject: [PATCH 2/3] Change ppk.asm to use KBD_* STATE constants. --- Source/HBIOS/ppk.asm | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/Source/HBIOS/ppk.asm b/Source/HBIOS/ppk.asm index 45c30d5f..fa913492 100644 --- a/Source/HBIOS/ppk.asm +++ b/Source/HBIOS/ppk.asm @@ -32,19 +32,8 @@ PPK_EXT .EQU 01H ; BIT 0, EXTENDED SCANCODE ACTIVE PPK_BREAK .EQU 02H ; BIT 1, THIS IS A KEY UP (BREAK) EVENT PPK_KEYRDY .EQU 80H ; BIT 7, INDICATES A DECODED KEYCODE IS READY ; -; STATE BITS (FOR PPK_STATE, PPK_LSTATE, PPK_RSTATE) -; -PPK_SHIFT .EQU 01H ; BIT 0, SHIFT ACTIVE (PRESSED) -PPK_CTRL .EQU 02H ; BIT 1, CONTROL ACTIVE (PRESSED) -PPK_ALT .EQU 04H ; BIT 2, ALT ACTIVE (PRESSED) -PPK_WIN .EQU 08H ; BIT 3, WIN ACTIVE (PRESSED) -PPK_SCRLCK .EQU 10H ; BIT 4, CAPS LOCK ACTIVE (TOGGLED ON) -PPK_NUMLCK .EQU 20H ; BIT 5, NUM LOCK ACTIVE (TOGGLED ON) -PPK_CAPSLCK .EQU 40H ; BIT 6, SCROLL LOCK ACTIVE (TOGGLED ON) -PPK_NUMPAD .EQU 80H ; BIT 7, NUM PAD KEY (KEY PRESSED IS ON NUM PAD) -; PPK_DEFRPT .EQU $40 ; DEFAULT REPEAT RATE (.5 SEC DELAY, 30CPS) -PPK_DEFSTATE .EQU PPK_NUMLCK ; DEFAULT STATE (NUM LOCK ON) +PPK_DEFSTATE .EQU KBD_NUMLCK ; DEFAULT STATE (NUM LOCK ON) ; ;__________________________________________________________________________________________________ ; DATA @@ -608,7 +597,7 @@ PPK_DEC5C: ; PERFORM REGULAR KEY (NOT EXTENDED) KEY MAPPING ; SETUP POINTER TO MAPPING TABLE BASED ON SHIFTED OR UNSHIFTED STATE LD A,(PPK_STATE) ; GET STATE - AND PPK_SHIFT ; SHIFT ACTIVE? + AND KBD_SHIFT ; SHIFT ACTIVE? LD HL,PPK_MAPSTD ; LOAD ADDRESS OF NON-SHIFTED MAPPING TABLE JR Z,PPK_DEC5D ; NON-SHIFTED, MOVE ON LD HL,PPK_MAPSHIFT ; LOAD ADDRESS OF SHIFTED MAPPING TABLE @@ -683,13 +672,13 @@ PPK_DEC7: ; COMPLETE PROCESSING OF EXTENDED AND KEY BREAK EVENTS PPK_DEC8: ; HANDLE TOGGLE KEYS LD A,(PPK_KEYCODE) ; GET THE CURRENT KEYCODE INTO A - LD E,PPK_CAPSLCK ; SETUP E WITH CAPS LOCK STATE BIT + LD E,KBD_CAPSLCK ; SETUP E WITH CAPS LOCK STATE BIT CP $BC ; IS THIS THE CAPS LOCK KEY? JR Z,PPK_DEC8A ; YES, GO TO BIT SET ROUTINE - LD E,PPK_NUMLCK ; SETUP E WITH NUM LOCK STATE BIT + LD E,KBD_NUMLCK ; SETUP E WITH NUM LOCK STATE BIT CP $BD ; IS THIS THE NUM LOCK KEY? JR Z,PPK_DEC8A ; YES, GO TO BIT SET ROUTINE - LD E,PPK_SCRLCK ; SETUP E WITH SCROLL LOCK STATE BIT + LD E,KBD_SCRLCK ; SETUP E WITH SCROLL LOCK STATE BIT CP $BE ; IS THIS THE SCROLL LOCK KEY? JR Z,PPK_DEC8A ; YES, GO TO BIT SET ROUTINE JR PPK_DEC9 ; NOT A TOGGLE KEY, CONTINUE @@ -703,7 +692,7 @@ PPK_DEC8A: ; RECORD THE TOGGLE PPK_DEC9: ; ADJUST KEYCODE FOR CONTROL MODIFIER LD A,(PPK_STATE) ; GET THE CURRENT STATE BITS - AND PPK_CTRL ; CHECK THE CONTROL BIT + AND KBD_CTRL ; CHECK THE CONTROL BIT JR Z,PPK_DEC10 ; CONTROL KEY NOT PRESSED, MOVE ON LD A,(PPK_KEYCODE) ; GET CURRENT KEYCODE IN A CP 'a' ; COMPARE TO LOWERCASE A @@ -721,7 +710,7 @@ PPK_DEC9A: PPK_DEC10: ; ADJUST KEYCODE FOR CAPS LOCK LD A,(PPK_STATE) ; LOAD THE STATE FLAGS - AND PPK_CAPSLCK ; CHECK CAPS LOCK + AND KBD_CAPSLCK ; CHECK CAPS LOCK JR Z,PPK_DEC11 ; CAPS LOCK NOT ACTIVE, MOVE ON LD A,(PPK_KEYCODE) ; GET THE CURRENT KEYCODE VALUE CP 'a' ; COMPARE TO LOWERCASE A @@ -742,7 +731,7 @@ PPK_DEC10B: PPK_DEC11: ; HANDLE NUM PAD KEYS LD A,(PPK_STATE) ; GET THE CURRENT STATE FLAGS - AND ~PPK_NUMPAD ; ASSUME NOT A NUMPAD KEY, CLEAR THE NUMPAD BIT + AND ~KBD_NUMPAD ; ASSUME NOT A NUMPAD KEY, CLEAR THE NUMPAD BIT LD (PPK_STATE),A ; SAVE IT LD A,(PPK_KEYCODE) ; GET THE CURRENT KEYCODE @@ -751,10 +740,10 @@ PPK_DEC11: ; HANDLE NUM PAD KEYS JR NZ,PPK_DEC12 ; NOPE, GET OUT LD A,(PPK_STATE) ; LOAD THE CURRENT STATE FLAGS - OR PPK_NUMPAD ; TURN ON THE NUMPAD BIT + OR KBD_NUMPAD ; TURN ON THE NUMPAD BIT LD (PPK_STATE),A ; SAVE IT - AND PPK_NUMLCK ; IS NUM LOCK BIT SET? + AND KBD_NUMLCK ; IS NUM LOCK BIT SET? JR Z,PPK_DEC11A ; NO, SKIP NUMLOCK PROCESSING LD A,(PPK_KEYCODE) ; GET THE KEYCODE XOR $10 ; FLIP VALUES FOR NUMLOCK From b8439c29e636136db558f5c26c5e89cb326a1905 Mon Sep 17 00:00:00 2001 From: Rob Gowin Date: Fri, 12 Dec 2025 09:15:23 -0600 Subject: [PATCH 3/3] Change mky.asm to use KBD_* STATE constants. --- Source/HBIOS/mky.asm | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/Source/HBIOS/mky.asm b/Source/HBIOS/mky.asm index d580655c..177b628f 100644 --- a/Source/HBIOS/mky.asm +++ b/Source/HBIOS/mky.asm @@ -75,19 +75,8 @@ MKY_EXT .EQU 01H ; BIT 0, EXTENDED SCANCODE ACTIVE MKY_BREAK .EQU 02H ; BIT 1, THIS IS A KEY UP (BREAK) EVENT MKY_KEYRDY .EQU 80H ; BIT 7, INDICATES A DECODED KEYCODE IS READY ; -; STATE BITS (FOR MKY_STATE, MKY_LSTATE, MKY_RSTATE) -; -MKY_SHIFT .EQU 01H ; BIT 0, SHIFT ACTIVE (PRESSED) -MKY_CTRL .EQU 02H ; BIT 1, CONTROL ACTIVE (PRESSED) -MKY_ALT .EQU 04H ; BIT 2, ALT ACTIVE (PRESSED) -MKY_WIN .EQU 08H ; BIT 3, WIN ACTIVE (PRESSED) -MKY_SCRLCK .EQU 10H ; BIT 4, CAPS LOCK ACTIVE (TOGGLED ON) -MKY_NUMLCK .EQU 20H ; BIT 5, NUM LOCK ACTIVE (TOGGLED ON) -MKY_CAPSLCK .EQU 40H ; BIT 6, SCROLL LOCK ACTIVE (TOGGLED ON) -MKY_NUMPAD .EQU 80H ; BIT 7, NUM PAD KEY (KEY PRESSED IS ON NUM PAD) -; MKY_DEFRPT .EQU $40 ; DEFAULT REPEAT RATE (.5 SEC DELAY, 30CPS) -MKY_DEFSTATE .EQU MKY_NUMLCK ; DEFAULT STATE (NUM LOCK ON) +MKY_DEFSTATE .EQU KBD_NUMLCK ; DEFAULT STATE (NUM LOCK ON) ; --------------.----------------------- ; SCAN CODE TABL.ES @@ -374,7 +363,7 @@ MKY_GETDATAX: ; MKY_SETLEDS: LD A,(MKY_STATE) ; LOAD THE STATE FLAGS - AND MKY_CAPSLCK ; CHECK CAPS LOCK + AND KBD_CAPSLCK ; CHECK CAPS LOCK JR Z, MKY_LEDCAPSOFF ; ;__________________________________________________________________________________________________ @@ -579,7 +568,7 @@ MKY_DEC5C: ; PERFORM REGULAR KEY (NOT EXTENDED) KEY MAPPING ; SETUP POINTER TO MAPPING TABLE BASED ON SHIFTED OR UNSHIFTED STATE LD A,(MKY_STATE) ; GET STATE - AND MKY_SHIFT ; SHIFT ACTIVE? + AND KBD_SHIFT ; SHIFT ACTIVE? LD HL,MKY_MAPSTD ; LOAD ADDRESS OF NON-SHIFTED MAPPING TABLE JR Z,MKY_DEC5D ; NON-SHIFTED, MOVE ON LD HL,MKY_MAPSHIFT ; LOAD ADDRESS OF SHIFTED MAPPING TABLE @@ -654,13 +643,13 @@ MKY_DEC7: ; COMPLETE PROCESSING OF EXTENDED AND KEY BREAK EVENTS MKY_DEC8: ; HANDLE TOGGLE KEYS LD A,(MKY_KEYCODE) ; GET THE CURRENT KEYCODE INTO A - LD E,MKY_CAPSLCK ; SETUP E WITH CAPS LOCK STATE BIT + LD E,KBD_CAPSLCK ; SETUP E WITH CAPS LOCK STATE BIT CP $BC ; IS THIS THE CAPS LOCK KEY? JR Z,MKY_DEC8A ; YES, GO TO BIT SET ROUTINE - LD E,MKY_NUMLCK ; SETUP E WITH NUM LOCK STATE BIT + LD E,KBD_NUMLCK ; SETUP E WITH NUM LOCK STATE BIT CP $BD ; IS THIS THE NUM LOCK KEY? JR Z,MKY_DEC8A ; YES, GO TO BIT SET ROUTINE - LD E,MKY_SCRLCK ; SETUP E WITH SCROLL LOCK STATE BIT + LD E,KBD_SCRLCK ; SETUP E WITH SCROLL LOCK STATE BIT CP $BE ; IS THIS THE SCROLL LOCK KEY? JR Z,MKY_DEC8A ; YES, GO TO BIT SET ROUTINE JR MKY_DEC9 ; NOT A TOGGLE KEY, CONTINUE @@ -674,7 +663,7 @@ MKY_DEC8A: ; RECORD THE TOGGLE MKY_DEC9: ; ADJUST KEYCODE FOR CONTROL MODIFIER LD A,(MKY_STATE) ; GET THE CURRENT STATE BITS - AND MKY_CTRL ; CHECK THE CONTROL BIT + AND KBD_CTRL ; CHECK THE CONTROL BIT JR Z,MKY_DEC10 ; CONTROL KEY NOT PRESSED, MOVE ON LD A,(MKY_KEYCODE) ; GET CURRENT KEYCODE IN A CP 'a' ; COMPARE TO LOWERCASE A @@ -692,7 +681,7 @@ MKY_DEC9A: MKY_DEC10: ; ADJUST KEYCODE FOR CAPS LOCK LD A,(MKY_STATE) ; LOAD THE STATE FLAGS - AND MKY_CAPSLCK ; CHECK CAPS LOCK + AND KBD_CAPSLCK ; CHECK CAPS LOCK JR Z,MKY_DEC12 ; CAPS LOCK NOT ACTIVE, MOVE ON LD A,(MKY_KEYCODE) ; GET THE CURRENT KEYCODE VALUE CP 'a' ; COMPARE TO LOWERCASE A