|
|
|
@ -101,9 +101,9 @@ KBD_CON_IOF .EQU $20 ; XLAT DISABLED, MOUSE DISABLED, NO INTS |
|
|
|
; KEYBOARD PRE-INITIALIZATION |
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
; |
|
|
|
; TO BE CALLED PRIOR TO INITERRUPTS BEING ENABLED |
|
|
|
; TO BE CALLED PRIOR TO INTERRUPTS BEING ENABLED |
|
|
|
; MUST BE CALLED FROM VIDEO DRIVER PREINIT WITH IY SET |
|
|
|
; THIS PREVENTS INTRERRUPT ISSUES IF 8242 HAS INTERRUPTS ENABLED |
|
|
|
; THIS PREVENTS INTERRUPT ISSUES IF 8242 HAS INTERRUPTS ENABLED |
|
|
|
; |
|
|
|
; AT STARTUP. NOT USING IT FOR NOW BECAUSE IT IS NOT A PROBLEM IF |
|
|
|
; YOU DON'T USE THE KEYBOARD DURING BOOT. |
|
|
|
@ -156,11 +156,11 @@ KBD_INIT: |
|
|
|
CP KBDMODE_VRC ; VRC? |
|
|
|
JR Z,KBD_INIT1 ; IF SO, MUST ASSUME PRESENT |
|
|
|
; |
|
|
|
HB_DI ; DISABLE INTERRUPTS WHILE WE PROBE |
|
|
|
; HB_DI ; DISABLE INTERRUPTS WHILE WE PROBE |
|
|
|
LD A,KBD_CON_CST ; CONTROLLER SELF TEST |
|
|
|
CALL KBD_PUTCMD ; SEND IT |
|
|
|
CALL KBD_GETDATA_P ; CONTROLLER SHOULD RESPOND WITH $55 (ACK) |
|
|
|
HB_EI ; RESTORE INTERRUPTS |
|
|
|
; HB_EI ; RESTORE INTERRUPTS |
|
|
|
; |
|
|
|
CP $55 ; IS IT THERE? |
|
|
|
JR Z,KBD_INIT1 ; IF SO, CONTINUE |
|
|
|
@ -386,7 +386,7 @@ KBD_RESET: |
|
|
|
LD A,$FF ; RESET COMMAND |
|
|
|
CALL KBD_PUTDATA ; SEND IT |
|
|
|
CALL KBD_GETDATA ; GET THE ACK |
|
|
|
LD B,0 ; SETUP LOOP COUNTER |
|
|
|
LD B,KBD_WAITTO ; SETUP LOOP COUNTER |
|
|
|
KBD_RESET0: |
|
|
|
PUSH BC ; PRESERVE COUNTER |
|
|
|
CALL KBD_GETDATA ; TRY TO GET THE RESPONSE |
|
|
|
@ -394,7 +394,6 @@ KBD_RESET0: |
|
|
|
JR NZ,KBD_RESET1 ; GOT A BYTE? IF SO, GET OUT OF LOOP |
|
|
|
DJNZ KBD_RESET0 ; LOOP TILL COUNTER EXHAUSTED |
|
|
|
KBD_RESET1: |
|
|
|
; LD A,B |
|
|
|
XOR A ; SIGNAL SUCCESS (RESPONSE IS IGNORED...) |
|
|
|
RET ; DONE |
|
|
|
; |
|
|
|
@ -549,8 +548,8 @@ KBD_DEC1: ; PROCESS NEXT SCANCODE |
|
|
|
RET Z ; NO KEY READY, RETURN WITH A=0, Z SET |
|
|
|
LD (KBD_SCANCODE),A ; SAVE SCANCODE |
|
|
|
|
|
|
|
KBD_DEC2: ; DETECT AND HANDLE SPECIAL KEYCODES |
|
|
|
LD A,(KBD_SCANCODE) ; GET THE CURRENT SCANCODE |
|
|
|
;KBD_DEC2: ; DETECT AND HANDLE SPECIAL KEYCODES |
|
|
|
; LD A,(KBD_SCANCODE) ; GET THE CURRENT SCANCODE |
|
|
|
CP $AA ; KEYBOARD INSERTION? |
|
|
|
JR NZ,KBD_DEC3 ; NOPE, BYPASS |
|
|
|
CALL LDELAY ; WAIT A BIT |
|
|
|
|