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 DRIVER - INITIALIZATION
;====================================================================== ;======================================================================
; ;
GDC_PREINIT:
LD IY,GDC_IDAT ; POINTER TO INSTANCE DATA
JP KBD_PREINIT ; INITIALIZE KEYBOARD
; RET
GDC_INIT: GDC_INIT:
LD IY,GDC_IDAT ; POINTER TO INSTANCE DATA LD IY,GDC_IDAT ; POINTER TO INSTANCE DATA

12
Source/HBIOS/hbios.asm

@ -3885,6 +3885,12 @@ HB_PCINITTBL:
#IF (UFENABLE) #IF (UFENABLE)
.DW UF_PREINIT .DW UF_PREINIT
#ENDIF #ENDIF
#IF (VGAENABLE)
.DW VGA_PREINIT
#ENDIF
#IF (GDCENABLE)
.DW GDC_PREINIT
#ENDIF
#IF (TMSENABLE) #IF (TMSENABLE)
.DW TMS_PREINIT .DW TMS_PREINIT
#ENDIF #ENDIF
@ -5315,12 +5321,6 @@ SYS_RESWARM:
; RESTART SYSTEM AS THOUGH POWER HAD JUST BEEN TURNED ON ; RESTART SYSTEM AS THOUGH POWER HAD JUST BEEN TURNED ON
; ;
SYS_RESCOLD: SYS_RESCOLD:
;
; TURN OFF SPURIOUS INTERRUPT SOURCES
;
;;;#IF ((INTMODE == 2) & KBDINTS))
;;; CALL KBD_DEINIT
;;;#ENDIF
#IFDEF APPBOOT #IFDEF APPBOOT
JP HB_RESTART JP HB_RESTART
#ELSE #ELSE

15
Source/HBIOS/kbd.asm

@ -101,9 +101,9 @@ KBD_CON_IOF .EQU $20 ; XLAT DISABLED, MOUSE DISABLED, NO INTS
; KEYBOARD PRE-INITIALIZATION ; 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 ; 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 ; AT STARTUP. NOT USING IT FOR NOW BECAUSE IT IS NOT A PROBLEM IF
; YOU DON'T USE THE KEYBOARD DURING BOOT. ; YOU DON'T USE THE KEYBOARD DURING BOOT.
@ -156,11 +156,11 @@ KBD_INIT:
CP KBDMODE_VRC ; VRC? CP KBDMODE_VRC ; VRC?
JR Z,KBD_INIT1 ; IF SO, MUST ASSUME PRESENT 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 LD A,KBD_CON_CST ; CONTROLLER SELF TEST
CALL KBD_PUTCMD ; SEND IT CALL KBD_PUTCMD ; SEND IT
CALL KBD_GETDATA_P ; CONTROLLER SHOULD RESPOND WITH $55 (ACK) CALL KBD_GETDATA_P ; CONTROLLER SHOULD RESPOND WITH $55 (ACK)
HB_EI ; RESTORE INTERRUPTS
; HB_EI ; RESTORE INTERRUPTS
; ;
CP $55 ; IS IT THERE? CP $55 ; IS IT THERE?
JR Z,KBD_INIT1 ; IF SO, CONTINUE JR Z,KBD_INIT1 ; IF SO, CONTINUE
@ -386,7 +386,7 @@ KBD_RESET:
LD A,$FF ; RESET COMMAND LD A,$FF ; RESET COMMAND
CALL KBD_PUTDATA ; SEND IT CALL KBD_PUTDATA ; SEND IT
CALL KBD_GETDATA ; GET THE ACK CALL KBD_GETDATA ; GET THE ACK
LD B,0 ; SETUP LOOP COUNTER
LD B,KBD_WAITTO ; SETUP LOOP COUNTER
KBD_RESET0: KBD_RESET0:
PUSH BC ; PRESERVE COUNTER PUSH BC ; PRESERVE COUNTER
CALL KBD_GETDATA ; TRY TO GET THE RESPONSE 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 JR NZ,KBD_RESET1 ; GOT A BYTE? IF SO, GET OUT OF LOOP
DJNZ KBD_RESET0 ; LOOP TILL COUNTER EXHAUSTED DJNZ KBD_RESET0 ; LOOP TILL COUNTER EXHAUSTED
KBD_RESET1: KBD_RESET1:
; LD A,B
XOR A ; SIGNAL SUCCESS (RESPONSE IS IGNORED...) XOR A ; SIGNAL SUCCESS (RESPONSE IS IGNORED...)
RET ; DONE RET ; DONE
; ;
@ -549,8 +548,8 @@ KBD_DEC1: ; PROCESS NEXT SCANCODE
RET Z ; NO KEY READY, RETURN WITH A=0, Z SET RET Z ; NO KEY READY, RETURN WITH A=0, Z SET
LD (KBD_SCANCODE),A ; SAVE SCANCODE 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? CP $AA ; KEYBOARD INSERTION?
JR NZ,KBD_DEC3 ; NOPE, BYPASS JR NZ,KBD_DEC3 ; NOPE, BYPASS
CALL LDELAY ; WAIT A BIT 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_STOK .EQU 0 ; OK
PRPSD_STINVUNIT .EQU -1 ; INVALID UNIT PRPSD_STINVUNIT .EQU -1 ; INVALID UNIT
PRPSD_STRDYTO .EQU -2 ; TIMEOUT WAITING FOR CARD TO BE READY 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_STCMDTO .EQU -4 ; TIMEOUT WAITING FOR COMMAND RESPONSE
PRPSD_STCMDERR .EQU -5 ; COMMAND ERROR OCCURRED (REF PRPSD_RC) PRPSD_STCMDERR .EQU -5 ; COMMAND ERROR OCCURRED (REF PRPSD_RC)
PRPSD_STDATAERR .EQU -6 ; DATA ERROR OCCURRED (REF PRPSD_TOK) 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 ; .DB $55 ; GUARD BYTE FOR DEBUGGING ; NOTE THAT SCAN CODES ARE BEING
KBDQ .FILL KBDQSIZ,0 ; CIRCULAR KEYBOARD BUFFER ; BUFFERED. ONE KEY PRESS CAN KBDQ .FILL KBDQSIZ,0 ; CIRCULAR KEYBOARD BUFFER ; BUFFERED. ONE KEY PRESS CAN
; .DB $AA ; GUARD BYTE FOR DEBUGGING ; GENERATE SEVERAL SCAN CODES ; .DB $AA ; GUARD BYTE FOR DEBUGGING ; GENERATE SEVERAL SCAN CODES
;
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
; RESET THE QUEUE TO EMPTY ; RESET THE QUEUE TO EMPTY
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
@ -58,17 +58,8 @@ KBD_INT:
; CALL KBDQDBG ; CALL KBDQDBG
; ;
RET 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 #ENDIF
;
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
; KEYBOARD READ ; KEYBOARD READ
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________

5
Source/HBIOS/vga.asm

@ -104,6 +104,11 @@ KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
; VGA DRIVER - INITIALIZATION ; VGA DRIVER - INITIALIZATION
;====================================================================== ;======================================================================
; ;
VGA_PREINIT:
LD IY,VGA_IDAT ; POINTER TO INSTANCE DATA
JP KBD_PREINIT ; INITIALIZE KEYBOARD
; RET
;
VGA_INIT: VGA_INIT:
LD IY,VGA_IDAT ; POINTER TO INSTANCE DATA LD IY,VGA_IDAT ; POINTER TO INSTANCE DATA
; ;

Loading…
Cancel
Save