|
|
|
@ -6,6 +6,16 @@ |
|
|
|
; ROMWBW ADAPTATION BY WAYNE WARTHEN |
|
|
|
; INTERRUPT DRIVER ADDITION BY PHIL SUMMERS |
|
|
|
; |
|
|
|
; THIS DRIVER IS INVOKED BY VIDEO DRIVERS AS NEEDED. WHEN INVOKED, |
|
|
|
; THE VIDEO DRIVER IS RESPONSIBLE FOR SETTING IY TO THE INSTANCE |
|
|
|
; DATA FOR IT'S INSTANCE OF THE KBD DRIVER. THIS ALLOWS THIS CODE |
|
|
|
; TO BE REUSED BY MULTIPLE VIDEO DRIVERS USING MULTIPLE PS/2 KBD |
|
|
|
; INTERFACES IN A SINGLE SYSTEM. |
|
|
|
; |
|
|
|
; WARNING: WHEN INTERRUPTS ARE ENABLED FOR THIS DRIVER (KBDINTS), IT IS |
|
|
|
; *NOT* POSSIBLE TO HAVE MULTIPLE VIDEO DRIVERS USING THIS KBD DRIVER |
|
|
|
; ACTIVELY IN A SYSTEM. THE USE OF INTERRUPTS IMPLIES ONLY ONE PS/2 |
|
|
|
; KBD INTERFACE CAN BE USED CONCURRENTLY. |
|
|
|
; |
|
|
|
; IN DEBUG MODE: |
|
|
|
; >>nn SHOWS HEX COMMAND nn BEING WRITTEN TO THE COMMAND PORT |
|
|
|
@ -70,12 +80,22 @@ KBD_IDLE .DB 0 ; IDLE COUNT |
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
; |
|
|
|
#INCLUDE "ps2iface.inc" |
|
|
|
; |
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
; KEYBOARD PRE-INITIALIZATION |
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
; |
|
|
|
; TO BE CALLED PRIOR TO INITERRUPTS BEING ENABLED |
|
|
|
; MUST BE CALLED FROM VIDEO DRIVER PREINIT WITH IY SET |
|
|
|
; THIS PREVENTS INTRERRUPT 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. |
|
|
|
; |
|
|
|
;;;KBD_PREINT: |
|
|
|
;;;; |
|
|
|
;;;; HACK TO ENSURE PS/2 CONTROLLER INTERRUPTS ARE TURNED OFF!!! |
|
|
|
;;;; |
|
|
|
;;;KBD_PREINT_HOOK: |
|
|
|
;;;#IF (KBDINTS) |
|
|
|
;;; LD IY,KBDIDAT |
|
|
|
;;; LD A,$60 ; SET COMMAND REGISTER |
|
|
|
;;; CALL KBD_PUTCMD ; SEND IT |
|
|
|
;;; LD A,$20 ; XLAT DISABLED, MOUSE DISABLED, NO INTS |
|
|
|
@ -87,7 +107,7 @@ KBD_IDLE .DB 0 ; IDLE COUNT |
|
|
|
;;; CALL KBD_IN_P |
|
|
|
;;; DJNZ KBD_PREINT_HOOK1 |
|
|
|
;;;#ENDIF |
|
|
|
RET |
|
|
|
;;; RET |
|
|
|
; |
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
; KEYBOARD INITIALIZATION |
|
|
|
@ -127,6 +147,7 @@ KBD_INIT: |
|
|
|
KBD_INIT1: |
|
|
|
#IF ((INTMODE == 2) & KBDINTS) |
|
|
|
; CALL KBDQINIT ; INITIALIZE QUEUE |
|
|
|
LD (KBD_IDAT),IY ; SAVE IY FOR INT HANDLER |
|
|
|
LD HL,KBD_INT ; INSTALL VECTOR |
|
|
|
LD (IVT(INT_PS2KB)),HL ; IVT INDEX |
|
|
|
#ENDIF |
|
|
|
@ -770,6 +791,10 @@ KBD_STR_MODEPS2 .TEXT "PS2$" |
|
|
|
KBD_STR_MODEVRC .TEXT "VRC$" |
|
|
|
KBD_STR_MODEUNK .TEXT "???$" |
|
|
|
; |
|
|
|
#IF ((INTMODE == 2) & KBDINTS) |
|
|
|
KBD_IDAT .DW 0 ; ADR OF INSTANCE DATA FOR INTS |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
; |
|
|
|
; |
|
|
|
#IF (KBDKBLOUT == KBD_US) |
|
|
|
|