Browse Source

LPT Driver Boot Messages, Issue #555

LPT driver will now display hardware that is not detected.  Thanks and credit to @robbbates.
pull/561/head
Wayne Warthen 8 months ago
parent
commit
2ffd248eb5
No known key found for this signature in database GPG Key ID: 8B34ED29C07EEB0A
  1. 2
      Doc/ChangeLog.txt
  2. 46
      Source/HBIOS/lpt.asm

2
Doc/ChangeLog.txt

@ -2,6 +2,8 @@ Version 3.6
----------- -----------
- MGG: Added COBOL language disk image - MGG: Added COBOL language disk image
- WDC: Added config options to PCF driver - WDC: Added config options to PCF driver
- WBW: Enabled dynamic CPU speed update on LCD screen
- WBW: Improve LPT driver boot messaging when not detected (per Robb Bates)
Version 3.5.1 Version 3.5.1
------------- -------------

46
Source/HBIOS/lpt.asm

@ -95,10 +95,18 @@ LPT_INIT:
LD IY,LPT_CFG ; POINT TO START OF CFG TABLE LD IY,LPT_CFG ; POINT TO START OF CFG TABLE
LPT_INIT0: LPT_INIT0:
PUSH BC ; SAVE LOOP CONTROL PUSH BC ; SAVE LOOP CONTROL
CALL LPT_PRTCFG ; PRINT CONFIG
CALL LPT_INITUNIT ; HAND OFF TO UNIT INIT CODE CALL LPT_INITUNIT ; HAND OFF TO UNIT INIT CODE
POP BC ; RESTORE LOOP CONTROL POP BC ; RESTORE LOOP CONTROL
; ;
LD A,(IY+1) ; GET THE LPT TYPE DETECTED
JR Z,LPT_INIT1 ; IF DETECTED, CONTINUE INIT
CALL PC_SPACE ; FORMATTING
LD DE,LPT_STR_NOLPT ; NO LPT MESSAGE
CALL WRITESTR ; DISPLAY IT
JR LPT_INIT2 ; AND LOOP AS NEEDED
;
LPT_INIT1:
LD A,(IY+1) ; GET THE LPT TYPE
OR A ; SET FLAGS OR A ; SET FLAGS
JR Z,LPT_INIT2 ; SKIP IT IF NOTHING FOUND JR Z,LPT_INIT2 ; SKIP IT IF NOTHING FOUND
; ;
@ -107,7 +115,6 @@ LPT_INIT0:
POP DE ; ... TO DE POP DE ; ... TO DE
LD BC,LPT_FNTBL ; BC := FUNCTION TABLE ADDRESS LD BC,LPT_FNTBL ; BC := FUNCTION TABLE ADDRESS
CALL NZ,CIO_ADDENT ; ADD ENTRY IF LPT FOUND, BC:DE CALL NZ,CIO_ADDENT ; ADD ENTRY IF LPT FOUND, BC:DE
CALL LPT_PRTCFG ; PRINT IF NOT ZERO
POP BC ; RESTORE LOOP CONTROL POP BC ; RESTORE LOOP CONTROL
; ;
LPT_INIT2: LPT_INIT2:
@ -123,9 +130,7 @@ LPT_INIT3:
; ;
LPT_INITUNIT: LPT_INITUNIT:
CALL LPT_DETECT ; DETERMINE LPT TYPE CALL LPT_DETECT ; DETERMINE LPT TYPE
LD (IY+1),A ; SAVE IN CONFIG TABLE
OR A ; SET FLAGS
RET Z ; ABORT IF NOTHING THERE
RET NZ ; ABORT IF NOTHING THERE
; ;
; UPDATE WORKING LPT DEVICE NUM ; UPDATE WORKING LPT DEVICE NUM
LD HL,LPT_DEV ; POINT TO CURRENT DEVICE NUM LD HL,LPT_DEV ; POINT TO CURRENT DEVICE NUM
@ -326,15 +331,7 @@ LPT_DETECT:
; ;
LPT_DETECT: LPT_DETECT:
LD C,(IY+3) ; BASE PORT ADDRESS LD C,(IY+3) ; BASE PORT ADDRESS
CALL LPT_DETECT2 ; CHECK IT
JR Z,LPT_DETECT1 ; FOUND IT, RECORD IT
LD A,LPTMODE_NONE ; NOTHING FOUND
RET ; DONE
;
LPT_DETECT1:
; LPT FOUND, RECORD IT
LD A,LPTMODE_SPP ; RETURN CHIP TYPE
RET ; DONE
JR LPT_DETECT2 ; CHECK IT
; ;
LPT_DETECT2: LPT_DETECT2:
; LOOK FOR LPT AT BASE PORT ADDRESS IN C ; LOOK FOR LPT AT BASE PORT ADDRESS IN C
@ -394,20 +391,13 @@ LPT_DETECT:
CALL PRTHEXBYTE CALL PRTHEXBYTE
#ENDIF #ENDIF
CP $A5 ; CHECK FOR TEST VALUE CP $A5 ; CHECK FOR TEST VALUE
JR Z,LPT_DETECT1 ; FOUND IT
LD A,LPTMODE_NONE ; NOT FOUND
RET
;
LPT_DETECT1:
; LPT FOUND, RECORD IT
LD A,LPTMODE_MG014 ; RETURN CHIP TYPE
RET ; DONE
RET ; ZF SET IF DETECTED
#ENDIF #ENDIF
; ;
#IF (LPTMODE == LPTMODE_S100) #IF (LPTMODE == LPTMODE_S100)
LPT_DETECT: LPT_DETECT:
; PORT ALWAYS EXISTS ON FPGA ; PORT ALWAYS EXISTS ON FPGA
LD A,LPTMODE_S100 ; RETURN CHIP TYPE
XOR A ; SIGNAL SUCCESS
RET ; DONE RET ; DONE
#ENDIF #ENDIF
; ;
@ -417,7 +407,7 @@ LPT_PRTCFG:
; ANNOUNCE PORT ; ANNOUNCE PORT
CALL NEWLINE ; FORMATTING CALL NEWLINE ; FORMATTING
PRTS("LPT$") ; FORMATTING PRTS("LPT$") ; FORMATTING
LD A,(IY) ; DEVICE NUM
LD A,(IY+2) ; DEVICE NUM
CALL PRTDECB ; PRINT DEVICE NUM CALL PRTDECB ; PRINT DEVICE NUM
PRTS(": IO=0x$") ; FORMATTING PRTS(": IO=0x$") ; FORMATTING
LD A,(IY+3) ; GET BASE PORT LD A,(IY+3) ; GET BASE PORT
@ -452,11 +442,13 @@ LPT_TYPE_MAP:
.DW LPT_STR_MG014 .DW LPT_STR_MG014
.DW LPT_STR_S100 .DW LPT_STR_S100
; ;
LPT_STR_NONE .DB "<NOT PRESENT>$"
LPT_STR_NONE .DB "???$"
LPT_STR_SPP .DB "SPP$" LPT_STR_SPP .DB "SPP$"
LPT_STR_MG014 .DB "MG014$" LPT_STR_MG014 .DB "MG014$"
LPT_STR_S100 .DB "S100$" LPT_STR_S100 .DB "S100$"
; ;
LPT_STR_NOLPT .DB "NOT PRESENT$"
;
; WORKING VARIABLES ; WORKING VARIABLES
; ;
LPT_DEV .DB 0 ; DEVICE NUM USED DURING INIT LPT_DEV .DB 0 ; DEVICE NUM USED DURING INIT
@ -468,7 +460,7 @@ LPT_CFG:
LPT0_CFG: LPT0_CFG:
; LPT MODULE A CONFIG ; LPT MODULE A CONFIG
.DB 0 ; DEVICE NUMBER (SET DURING INIT) .DB 0 ; DEVICE NUMBER (SET DURING INIT)
.DB 0 ; LPT TYPE (SET DURING INIT)
.DB LPTMODE ; LPT MODE
.DB 0 ; MODULE ID .DB 0 ; MODULE ID
.DB LPT0BASE ; BASE PORT .DB LPT0BASE ; BASE PORT
.DW 0 ; LINE CONFIGURATION .DW 0 ; LINE CONFIGURATION
@ -494,7 +486,7 @@ LPT_CFGSIZ .EQU $ - LPT_CFG ; SIZE OF ONE CFG TABLE ENTRY
LPT1_CFG: LPT1_CFG:
; LPT MODULE B CONFIG ; LPT MODULE B CONFIG
.DB 0 ; DEVICE NUMBER (SET DURING INIT) .DB 0 ; DEVICE NUMBER (SET DURING INIT)
.DB 0 ; LPT TYPE (SET DURING INIT)
.DB LPTMODE ; LPT MODE
.DB 1 ; MODULE ID .DB 1 ; MODULE ID
.DB LPT1BASE ; BASE PORT .DB LPT1BASE ; BASE PORT
.DW 0 ; LINE CONFIGURATION .DW 0 ; LINE CONFIGURATION

Loading…
Cancel
Save