diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 87f219a0..6b792df2 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index 0896624b..bcb35b0b 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Errata.pdf b/Doc/RomWBW Errata.pdf index 44170091..e6c3a0f3 100644 Binary files a/Doc/RomWBW Errata.pdf and b/Doc/RomWBW Errata.pdf differ diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index b5e4abed..45836989 100644 Binary files a/Doc/RomWBW System Guide.pdf and b/Doc/RomWBW System Guide.pdf differ diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index a72f4f9a..badced4a 100644 Binary files a/Doc/RomWBW User Guide.pdf and b/Doc/RomWBW User Guide.pdf differ diff --git a/Source/Doc/UserGuide.md b/Source/Doc/UserGuide.md index b198812a..df026e77 100644 --- a/Source/Doc/UserGuide.md +++ b/Source/Doc/UserGuide.md @@ -576,7 +576,7 @@ Boot [H=Help]: h D - Device Inventory R - Reboot System W - RomWBW Configure - I [] - Set Console Interface/Baud code + I [] - Set Console Interface/Baud Rate V [] - View/Set HBIOS Diagnostic Verbosity [.] - Boot Disk Unit/Slice ``` diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index d33e96e8..8fce3e31 100644 --- a/Source/HBIOS/cvdu.asm +++ b/Source/HBIOS/cvdu.asm @@ -921,11 +921,3 @@ CVDU_IDAT: .DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER .DB CVDU_KBDST .DB CVDU_KBDDATA -; -; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE -; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT -; HANDLER IN PS2IFACE.INC. -; -#IF (KBDINTS) -KBDIDAT .EQU CVDU_IDAT -#ENDIF diff --git a/Source/HBIOS/gdc.asm b/Source/HBIOS/gdc.asm index 9be0bcd4..6e0fc085 100644 --- a/Source/HBIOS/gdc.asm +++ b/Source/HBIOS/gdc.asm @@ -350,11 +350,3 @@ GDC_IDAT: .DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER .DB GDC_KBDST .DB GDC_KBDDATA -; -; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE -; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT -; HANDLER IN PS2IFACE.INC. -; -#IF (KBDINTS) -KBDIDAT .EQU GDC_IDAT -#ENDIF diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index f94bfbc5..53333209 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -3030,8 +3030,6 @@ HB_SPDTST: ;-------------------------------------------------------------------------------------------------- ; ENABLE INTERRUPTS ;-------------------------------------------------------------------------------------------------- -; - ;;;CALL HB_PREINT_HOOKS ; HACK TO ALLOW SOME DRIVERS TO DO PRE INTERRUPT STUFF ; #IFDEF TESTING ; @@ -9374,15 +9372,6 @@ SIZ_EZ80DRVS .EQU $ - ORG_EZ80DRVS MEMECHO "RTCDEF=" MEMECHO RTCDEF MEMECHO "\n" -;;;; -;;;; PRE-INTERRUPT HOOKS -;;;; -;;;HB_PREINT_HOOKS: -;;;; -;;;#IF (KBDENABLE) -;;; CALL KBD_PREINT_HOOK -;;;#ENDIF -;;; RET ; HB_DRIVERS_END .EQU $ ; diff --git a/Source/HBIOS/kbd.asm b/Source/HBIOS/kbd.asm index 3b963e87..3d1e9f44 100644 --- a/Source/HBIOS/kbd.asm +++ b/Source/HBIOS/kbd.asm @@ -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) diff --git a/Source/HBIOS/ps2iface.inc b/Source/HBIOS/ps2iface.inc index 8ca320c4..ad99eb9b 100644 --- a/Source/HBIOS/ps2iface.inc +++ b/Source/HBIOS/ps2iface.inc @@ -38,7 +38,7 @@ KBDQ .FILL KBDQSIZ,0 ; CIRCULAR KEYBOARD BUFFER ; KBD_INT: ; CALL KBDQDBG - LD IY,KBDIDAT + LD IY,(KBD_IDAT) ; POINT TO INSTANCE DATA LD C,(IY+KBD_ST) ; READ CONTROLLER STATUS EZ80_IO IN A,(C) diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index 07e08ad9..4439a90a 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -1189,14 +1189,6 @@ TMS_IDAT: .DB TMS_DATREG .DB TMS_CMDREG ; -; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE -; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT -; HANDLER IN PS2IFACE.INC. -; -#IF ((TMSKBD == TMSKBD_KBD) & KBDINTS) -KBDIDAT .EQU TMS_IDAT -#ENDIF -; ;================================================================================================== ; TMS DRIVER - TMS9918 REGISTER INITIALIZATION ;================================================================================================== diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index c977415a..1b5e023b 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -1056,11 +1056,3 @@ VGA_IDAT: .DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER .DB VGA_KBDST .DB VGA_KBDDATA -; -; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE -; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT -; HANDLER IN PS2IFACE.INC. -; -#IF (KBDINTS) -KBDIDAT .EQU VGA_IDAT -#ENDIF diff --git a/Source/HBIOS/vrc.asm b/Source/HBIOS/vrc.asm index e0986f7a..98b12a59 100644 --- a/Source/HBIOS/vrc.asm +++ b/Source/HBIOS/vrc.asm @@ -675,11 +675,3 @@ VRC_IDAT: .DB KBDMODE_VRC ; VGARC KEYBOARD CONTROLLER .DB VRC_KBDST .DB VRC_KBDDATA -; -; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE -; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT -; HANDLER IN PS2IFACE.INC. -; -#IF (KBDINTS) -KBDIDAT .EQU VRC_IDAT -#ENDIF