Browse Source

Merge pull request #475 from b1ackmai1er/master

Roll out kbd preinit into cga, gdc and vga driver
pull/476/head
Wayne Warthen 1 year ago
committed by GitHub
parent
commit
5bb168eb6e
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. BIN
      Source/Fonts/fontcgac.png
  2. BIN
      Source/Fonts/fontcgau.png
  3. 5
      Source/HBIOS/gdc.asm
  4. 12
      Source/HBIOS/hbios.asm
  5. 15
      Source/HBIOS/kbd.asm
  6. 2
      Source/HBIOS/prp.asm
  7. 13
      Source/HBIOS/ps2iface.inc
  8. 5
      Source/HBIOS/vga.asm

BIN
Source/Fonts/fontcgac.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
Source/Fonts/fontcgau.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

5
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

12
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

15
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

2
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)

13
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
;__________________________________________________________________________________________________

5
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
;

Loading…
Cancel
Save