From cfa86a9f2a1b6daa79d27980f0710c04a6481722 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sat, 7 Dec 2024 11:28:24 +0800 Subject: [PATCH] Spurious interrupt fix. --- Source/HBIOS/kbd.asm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Source/HBIOS/kbd.asm b/Source/HBIOS/kbd.asm index 2030e570..339ffa30 100644 --- a/Source/HBIOS/kbd.asm +++ b/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