Browse Source

Spurious interrupt fix.

pull/460/head
b1ackmai1er 1 year ago
parent
commit
cfa86a9f2a
  1. 18
      Source/HBIOS/kbd.asm

18
Source/HBIOS/kbd.asm

@ -94,16 +94,28 @@ KBD_INIT:
CP KBDMODE_VRC ; VRC?
JR Z,KBD_INIT1 ; IF SO, MUST ASSUME PRESENT
;
#IF ((INTMODE == 2) & INTPS2KBD)
HB_DI ; DISABLE INTERRUPTS WHILE WE PROBE
#ENDIF
LD A,$AA ; CONTROLLER SELF TEST
CALL KBD_PUTCMD ; SEND IT
CALL KBD_GETDATA_P ; CONTROLLER SHOULD RESPOND WITH $55 (ACK)
;
CP $55 ; IS IT THERE?
JR Z,KBD_INIT1 ; IF SO, CONTINUE
#IF ((INTMODE == 2) & INTPS2KBD)
HB_EI ; RESTORE INTERRUPTS
#ENDIF
PRTS(" NOT PRESENT$") ; DIAGNOSE PROBLEM
RET ; BAIL OUT
;
KBD_INIT1:
#IF ((INTMODE == 2) & INTPS2KBD)
; CALL KBDQINIT ; INITIALIZE QUEUE
LD HL,KBD_INT ; INSTALL VECTOR
LD (IVT(INT_PS2KB)),HL ; IVT INDEX
HB_EI ; ENABLE INTERUPTS
#ENDIF
PRTS(" MODE=$") ; TAG
LD A,(IY+KBD_MODE) ; GET MODE VALUE
LD DE,KBD_STR_MODEPS2
@ -115,12 +127,6 @@ KBD_INIT1:
LD DE,KBD_STR_MODEUNK
KBD_INIT2:
CALL WRITESTR
;
#IF ((INTMODE == 2) & INTPS2KBD)
; CALL KBDQINIT ; INITIALIZE QUEUE
LD HL,KBD_INT ; INSTALL VECTOR
LD (IVT(INT_PS2KB)),HL ; IVT INDEX
#ENDIF
;
LD A,$60 ; SET COMMAND REGISTER
CALL KBD_PUTCMD ; SEND IT

Loading…
Cancel
Save