|
|
|
@ -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 |
|
|
|
|