diff --git a/Source/Fonts/fontcgac.png b/Source/Fonts/fontcgac.png new file mode 100644 index 00000000..aacd2cf1 Binary files /dev/null and b/Source/Fonts/fontcgac.png differ diff --git a/Source/Fonts/fontcgau.png b/Source/Fonts/fontcgau.png new file mode 100644 index 00000000..df9638c5 Binary files /dev/null and b/Source/Fonts/fontcgau.png differ diff --git a/Source/HBIOS/gdc.asm b/Source/HBIOS/gdc.asm index 6e0fc085..3ded2170 100644 --- a/Source/HBIOS/gdc.asm +++ b/Source/HBIOS/gdc.asm @@ -71,6 +71,11 @@ KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT ; GDC DRIVER - INITIALIZATION ;====================================================================== ; +GDC_PREINIT: + LD IY,GDC_IDAT ; POINTER TO INSTANCE DATA + JP KBD_PREINIT ; INITIALIZE KEYBOARD +; RET + GDC_INIT: LD IY,GDC_IDAT ; POINTER TO INSTANCE DATA diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 01ad296d..4085220c 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -3885,6 +3885,12 @@ HB_PCINITTBL: #IF (UFENABLE) .DW UF_PREINIT #ENDIF +#IF (VGAENABLE) + .DW VGA_PREINIT +#ENDIF +#IF (GDCENABLE) + .DW GDC_PREINIT +#ENDIF #IF (TMSENABLE) .DW TMS_PREINIT #ENDIF @@ -5315,12 +5321,6 @@ SYS_RESWARM: ; RESTART SYSTEM AS THOUGH POWER HAD JUST BEEN TURNED ON ; SYS_RESCOLD: -; -; TURN OFF SPURIOUS INTERRUPT SOURCES -; -;;;#IF ((INTMODE == 2) & KBDINTS)) -;;; CALL KBD_DEINIT -;;;#ENDIF #IFDEF APPBOOT JP HB_RESTART #ELSE diff --git a/Source/HBIOS/kbd.asm b/Source/HBIOS/kbd.asm index d7542921..de4b2479 100644 --- a/Source/HBIOS/kbd.asm +++ b/Source/HBIOS/kbd.asm @@ -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 diff --git a/Source/HBIOS/prp.asm b/Source/HBIOS/prp.asm index f00557ed..db923c5a 100644 --- a/Source/HBIOS/prp.asm +++ b/Source/HBIOS/prp.asm @@ -280,7 +280,7 @@ PRPSD_TYPESDXC .EQU 4 ; SDXC CARD (V3) PRPSD_STOK .EQU 0 ; OK PRPSD_STINVUNIT .EQU -1 ; INVALID UNIT PRPSD_STRDYTO .EQU -2 ; TIMEOUT WAITING FOR CARD TO BE READY -PRPSD_STINITTO .EQU -3 ; INITIALIZATOIN TIMEOUT +PRPSD_STINITTO .EQU -3 ; INITIALIZATION TIMEOUT PRPSD_STCMDTO .EQU -4 ; TIMEOUT WAITING FOR COMMAND RESPONSE PRPSD_STCMDERR .EQU -5 ; COMMAND ERROR OCCURRED (REF PRPSD_RC) PRPSD_STDATAERR .EQU -6 ; DATA ERROR OCCURRED (REF PRPSD_TOK) diff --git a/Source/HBIOS/ps2iface.inc b/Source/HBIOS/ps2iface.inc index 3ed1e7f7..decf0d60 100644 --- a/Source/HBIOS/ps2iface.inc +++ b/Source/HBIOS/ps2iface.inc @@ -21,7 +21,7 @@ KBDQPUTX .DB 0 ; QUEUE INDEX ; .DB $55 ; GUARD BYTE FOR DEBUGGING ; NOTE THAT SCAN CODES ARE BEING KBDQ .FILL KBDQSIZ,0 ; CIRCULAR KEYBOARD BUFFER ; BUFFERED. ONE KEY PRESS CAN ; .DB $AA ; GUARD BYTE FOR DEBUGGING ; GENERATE SEVERAL SCAN CODES - +; ;__________________________________________________________________________________________________ ; RESET THE QUEUE TO EMPTY ;__________________________________________________________________________________________________ @@ -58,17 +58,8 @@ KBD_INT: ; CALL KBDQDBG ; RET -;;;;__________________________________________________________________________________________________ -;;;; KEYBOARD DEINITIALIZATION -;;;;__________________________________________________________________________________________________ -;;;; -;;;KBD_DEINIT: -;;; LD IY,(KBD_IDAT) ; SETUP PORT POINTER -;;; LD A,KBD_CON_WCR ; LOAD WRITE COMMAND -;;; CALL KBD_CMDOUT ; WRITE IT -;;; LD A,KBD_CON_IOF ; LOAD DISABLE INTERRUPTS CFG -;;; JP KBD_DTAOUT ; WRITE IT #ENDIF +; ;__________________________________________________________________________________________________ ; KEYBOARD READ ;__________________________________________________________________________________________________ diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index 1b5e023b..171b32c2 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -104,6 +104,11 @@ KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT ; VGA DRIVER - INITIALIZATION ;====================================================================== ; +VGA_PREINIT: + LD IY,VGA_IDAT ; POINTER TO INSTANCE DATA + JP KBD_PREINIT ; INITIALIZE KEYBOARD +; RET +; VGA_INIT: LD IY,VGA_IDAT ; POINTER TO INSTANCE DATA ;