diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index e40a1533..536eda5f 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2274,6 +2274,29 @@ HB_BOOTDLY: LD A,BOOTCON ; GET REQUESTED CONSOLE DEV LD (CB_CONDEV),A ; SAVE IT HB_CONRDY: +; +; MOST SERIAL PORTS ARE CONFIGURED WITH HARDWARE FLOW CONTROL ENABLED. +; IF THERE IS A PROBLEM WITH THE RTS SIGNAL, THEN OUTPUT TO THE CONSOLE +; WILL BE STALLED WHICH CAN LEAD A USER TO THINK THE SYSTEM IS TOTALLY +; DEAD WHEN, IN FACT, IT IS JUST WAITING FOR RTS TO BE ASSERTED. ALSO, +; IF THE USER IS BOOTING TO A CRT DEVICE AND DISCONNECTS THE CONSOLE +; SERIAL PORT, THE SYSTEM WILL WAIT FOR RTS AND NEVER BOOT. SO, HERE +; WE SAVE THE ACTIVE CONSOLE CONFIGURATION, THEN TURN OFF HARDWARE +; FLOW CONTROL. THE ORIGINAL CONFIGURATION WILL BE RESTORED BELOW +; PRIOR TO LAUNCING THE ROM LOADER. +; + ; RETRIEVE THE CONFIG FROM THE CONSOLE PORT + LD B,BF_CIOQUERY ; HBIOS QUERY CIO CONFIG + LD A,(CB_CONDEV) ; GET CONSOLE DEVICE + LD (HB_BOOTCONSAV),A ; SAVE IT FOR LATER + LD C,A ; BOOT CONSOLE TO C + CALL HB_DISPATCH ; INTERNAL HBIOS CALL + LD (HB_CONCFGSAV),DE ; SAVE CONFIG + RES 5,D ; CLEAR RTS BIT + LD B,BF_CIOINIT ; HBIOS CIO INIT + LD A,(CB_CONDEV) ; GET CONSOLE DEVICE + LD C,A ; BOOT CONSOLE TO C + CALL HB_DISPATCH ; INTERNAL HBIOS CALL #IF (WBWDEBUG == USEMIO) ; OUTPUT ANY CACHED DEBUG TEXT LD HL,MIOOUTPTR @@ -2749,11 +2772,30 @@ HB_WDZ: LD A,(CB_CRTDEV) ; GET CRT DISPLAY DEVICE LD (CB_CONDEV),A ; SAVE IT AS ACTIVE CONSOLE DEVICE ; - ; DISPLAY HBIOS BANNER ON NEW CONSOLE - PRTX(STR_BANNER) #ENDIF ; INITSYS3: +; +; RESTORE BOOT CONSOLE CONFIGURATION +; + CALL LDELAY ; ALLOW SERIAL PORT TO FLUSH + LD B,BF_CIOINIT ; HBIOS CIO INIT + LD A,(HB_BOOTCONSAV) ; ORIGINAL BOOT CONSOLE DEVICE + LD C,A ; BOOT CONSOLE TO C + LD DE,(HB_CONCFGSAV) ; SAVED ORIGINAL CONSOLE CFG + CALL HB_DISPATCH ; INTERNAL HBIOS CALL +; + LD A,(HB_BOOTCONSAV) ; GET ORIGINAL BOOT CONSOLE DEV + LD C,A ; PUT IN C + LD A,(CB_CONDEV) ; GET ACTIVE CONSOLE DEVICE + CP C ; COMPARE + JR Z,INITSYS3A ; SKIP AHEAD IF NO CHANGE +; + ; DISPLAY HBIOS BANNER ON NEW CONSOLE IF WE SWITCHED TO NEW + ; CONSOLE DEVICE + PRTX(STR_BANNER) ; DISPLAY HBIOS BANNER +; +INITSYS3A: CALL PRTSUM ; PRINT UNIT/DEVICE SUMMARY TABLE ; #IF 0 @@ -7269,6 +7311,9 @@ HB_CURSEC .DB 0 ; CURRENT SECOND (TEMP) ; HB_BCDTMP .FILL 5,0 ; BCD NUMBER STORAGE (TEMP) ; +HB_BOOTCONSAV .DB 0 ; INITIAL BOOT CONSOLE SAVE AREA +HB_CONCFGSAV .DW 0 ; CONSOLE CONFIG SAVE AREA +; HB_WRKBUF .FILL 512,0 ; INTERNAL DISK BUFFER ; HB_END .EQU $ diff --git a/Source/Images/d_zsdos/ReadMe.txt b/Source/Images/d_zsdos/ReadMe.txt index f14d7c3b..9d19b002 100644 --- a/Source/Images/d_zsdos/ReadMe.txt +++ b/Source/Images/d_zsdos/ReadMe.txt @@ -45,7 +45,7 @@ an equate. Version 1.2 was never distributed and contains only a few minor fixes. Unfortunately, the use of v1.2 would make it incompatible with many support modules and overlays due to their reliance on hard-coded address assumptions. This is probably why it was never -distributed. I encountered this myself with the date stamping code –- +distributed. I encountered this myself with the date stamping code -- it won't work with v1.2 because it does a version check. For now, I have chosen to use v1.1 to maximize compatibility (seems to be what everyone is doing). Ultimately, I may go back and try to rebuild everything in diff --git a/Source/ver.inc b/Source/ver.inc index 9116b4a7..2898a7f8 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 2 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.2.1-rc.2" +#DEFINE BIOSVER "3.2.1-rc.3" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 394a574e..3b1b8da8 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 2 rup equ 1 rtp equ 0 biosver macro - db "3.2.1-rc.2" + db "3.2.1-rc.3" endm