From 7f07af1b6254c3831920b69f8a2c7035c327d89e Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sat, 30 Nov 2024 23:27:02 +0800 Subject: [PATCH] Reimplement Duodyne boot recovery Add feature description in documentation. --- Source/Doc/SystemGuide.md | 19 +++++++++++++++++++ Source/HBIOS/cfg_DUO.asm | 1 + Source/HBIOS/cfg_MASTER.asm | 1 + Source/HBIOS/std.asm | 5 ++--- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Source/Doc/SystemGuide.md b/Source/Doc/SystemGuide.md index 4f995772..f74d6e04 100644 --- a/Source/Doc/SystemGuide.md +++ b/Source/Doc/SystemGuide.md @@ -499,6 +499,25 @@ The startup then proceeds very much like the Application Boot process described above. HBIOS is installed in its operating bank and control is passed to the Boot Loader. +## Boot Recovery + +To assist users when driver faults or misconfiguration causes a boot +failure, RomWBW supports a limited recovery cabability. This is +acheived by allowing the user to reboot their machine, loading +a minimal driver set. Implementation of this feature requires a +hardware input "BOOT RECOVERY" button to be available and +appropriate software configuration to be completed in the HBIOS. + +When implemented, holding the "BOOT RECOVERY" button in after a +reset or power cycle will cause the normal driver load process to +be skipped in preference to a minimal set of drivers being loaded. + +Typically this would be: Serial communication, RAM disk and parallel +port IDE interface drivers. + +Platforms supporting this option currently are the MBC, Duodyne and +latter version of the ECB-SBC-V3. + # Driver Model The framework code for bank switching also allows hardware drivers to be diff --git a/Source/HBIOS/cfg_DUO.asm b/Source/HBIOS/cfg_DUO.asm index 0e85f07a..80258306 100644 --- a/Source/HBIOS/cfg_DUO.asm +++ b/Source/HBIOS/cfg_DUO.asm @@ -54,6 +54,7 @@ HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD) USELZSA2 .SET TRUE ; ENABLE FONT COMPRESSION TICKFREQ .SET 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; +BT_REC_TYPE .SET BT_REC_DUORI ; BOOT RECOVERY METHOD TO USE BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .SET 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT AUTOCON .SET FALSE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT diff --git a/Source/HBIOS/cfg_MASTER.asm b/Source/HBIOS/cfg_MASTER.asm index a4986b94..77146810 100644 --- a/Source/HBIOS/cfg_MASTER.asm +++ b/Source/HBIOS/cfg_MASTER.asm @@ -54,6 +54,7 @@ HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD) USELZSA2 .EQU FALSE ; ENABLE FONT COMPRESSION TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; +BT_REC_TYPE .EQU BT_REC_NONE ; BOOT RECOVERY METHOD TO USE BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT AUTOCON .EQU FALSE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index a582f19c..e152b397 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -102,11 +102,10 @@ BT_AUTO .EQU 2 ; AUTO SELECT BOOT_DEFAULT AFTER BOOT_TIMEOUT ; BT_REC_NONE .EQU 0 ; NO RECOVERY MODE BT_REC_FORCE .EQU 1 ; FORCE BOOT RECOVERY MODE -BT_REC_SBC01 .EQU 2 ; ECB-SBCV2 - BIT 1 RTC HIGH +BT_REC_SBCB0 .EQU 2 ; ECB-SBCV2 - BIT 0 RTC HIGH BT_REC_SBC1B .EQU 3 ; ECB-SBCV2 - 1-BIT IO PORT BT_REC_SBCRI .EQU 4 ; ECB-SBCV2 - 16550 UART RING INDICATOR LINE -; -BT_REC_TYPE .EQU BT_REC_NONE ; BOOT RECOVERY METHOD TO USE +BT_REC_DUORI .EQU 5 ; DUO MULTI I/O - TL16C2552FN UART RING INDICATOR LINE ; ; FLOPPY DISK MEDIA SELECTIONS (ID'S MUST BE INDEX OF ENTRY IN FCD_TBL) ;