diff --git a/Source/Apps/Test/DMAmon/dmamon.asm b/Source/Apps/Test/DMAmon/dmamon.asm index 2842663d..98d7d173 100644 --- a/Source/Apps/Test/DMAmon/dmamon.asm +++ b/Source/Apps/Test/DMAmon/dmamon.asm @@ -362,7 +362,7 @@ SPDDISP:LD DE,DMA_SPD_STR CALL PRTIDXDEA ; call PRTSTRD - .db "\n\rTransfer Mode: $" ; DIPLAY TRANSFER + .db "\n\rTransfer Mode: $" ; DISPLAY TRANSFER LD a,(dmaxfer) ; MODE LD DE,DMA_XFRMODE CALL PRTIDXDEA diff --git a/Source/Doc/SystemGuide.md b/Source/Doc/SystemGuide.md index 8bed1ebb..4acf46ab 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 capability. This is +achieved 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 SBC. + # Configuration ## RomWBW NVRAM Configuration 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..61ac19ae 100644 --- a/Source/HBIOS/cfg_MASTER.asm +++ b/Source/HBIOS/cfg_MASTER.asm @@ -54,8 +54,10 @@ 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 +BOOT_PRETTY .EQU FALSE ; BOOT WITH PRETTY PLATFORM NAME AUTOCON .EQU FALSE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO diff --git a/Source/HBIOS/cfg_MBC.asm b/Source/HBIOS/cfg_MBC.asm index b523be30..9d1ff851 100644 --- a/Source/HBIOS/cfg_MBC.asm +++ b/Source/HBIOS/cfg_MBC.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_SBC1B ; ENABLE RECOVERY MODE BUTTON 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 TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 7495e01d..d2f8c154 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -319,7 +319,7 @@ SUPCTS .EQU FALSE ; SUPPRESS CTS DURING HBIOS BOOT ; RTCDEF .EQU 0 ; INIT DEF RTC LATCH VALUE ; -; THE SC126 HAS AN I2C CIRCUIT AND THERE IS NO ASSOCAITED +; THE SC126 HAS AN I2C CIRCUIT AND THERE IS NO ASSOCIATED ; DRIVER, SO WE SET THAT BIT HERE. IT IS SET FOR ALL OF THE SCXXX ; SYSTEMS, BUT IS UNUSED ON ALL BUT THE SC126. IT DOES NO HARM. ; @@ -2348,7 +2348,7 @@ HB_CPU1: ; EARLY DRIVER INITIALIZATION ;-------------------------------------------------------------------------------------------------- ; -; SOME DRIVERS NEED TO BE CALLED AS EARLY AS WE CAN ONE AN OPERATING +; SOME DRIVERS NEED TO BE CALLED AS EARLY AS WE CAN ONCE AN OPERATING ; ENVIRONMENT IS ESTABLISHED. ; #IF (CPUFAM == CPU_EZ80) @@ -2753,7 +2753,7 @@ Z280_TC .EQU CPUOSC / 4 / 50 / 2 ; TIME CONSTANT LD (HB_BOOT_REC),A ; SAVE FOR LATER #ENDIF #IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC)) - #IF (BT_REC_TYPE == BT_REC_SBC01) + #IF (BT_REC_TYPE == BT_REC_SBCB0) LD A,%00100000 ; DISABLE RTC AND OUT (RTCIO),A ; DRQ DRIVER READ IN A,(RTCIO) ; BIT 0 (DRQ). @@ -2776,6 +2776,17 @@ SAVE_REC_M: LD A,0 ; BIT 6 JR Z,SAVE_REC_M ; IS RECOVERY MODE LD A,1 +SAVE_REC_M: + LD (HB_BOOT_REC),A ; SAVE FOR LATER + #ENDIF + #ENDIF + #IF ((PLATFORM == PLT_DUO) + #IF (BT_REC_TYPE == BT_REC_DUORI) + IN A,($78 + 6) ; UART_MSR MODEM + BIT 6,A ; STATUS REGISTER + LD A,0 ; BIT 6 + JR Z,SAVE_REC_M ; IS RECOVERY MODE + LD A,1 SAVE_REC_M: LD (HB_BOOT_REC),A ; SAVE FOR LATER #ENDIF @@ -2923,6 +2934,9 @@ NXTMIO: LD A,(HL) ; DISPLAYED BEFORE INTRODUCING INTERRUPTS. IF THE SYSTEM CRASHES ; AFTER DISPLAYING THE BANNER, INTERRUPT INTEGRITY SHOULD BE SUSPECTED. ; +#IF (BOOT_PRETTY) + PRTX(STR_PLT_PRETTY) +#ENDIF PRTX(STR_BANNER) ; ; DISPLAY HBIOS MUTEX ENABLED MESSAGE @@ -3378,7 +3392,7 @@ IS_REC_M1: CALL CALLLIST ; ;-------------------------------------------------------------------------------------------------- -; NV-SWITCH INITITIALISATION +; NV-SWITCH INITIALISATION ; Requires functional RTC NVR ;-------------------------------------------------------------------------------------------------- ; @@ -3804,7 +3818,7 @@ INITSYS4: ; HB_PCINIT_REC: ; - #IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC)) + #IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC) | (PLATFORM == PLT_DUO)) .DW UART_PREINIT ; .DW CALLDUMMY #ENDIF @@ -3813,7 +3827,7 @@ HB_PCINITRLEN .EQU (($ - HB_PCINIT_REC) / 2) ; HB_INIT_REC: ; - #IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC)) + #IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC) | (PLATFORM == PLT_DUO)) .DW UART_INIT .DW MD_INIT .DW PPIDE_INIT @@ -9455,6 +9469,10 @@ STR_PANIC .TEXT "\r\n>>> PANIC: $" STR_SYSCHK .TEXT "\r\n>>> SYSCHK: $" STR_CONTINUE .TEXT "\r\nContinue (Y/N)? $" ; +#IF (BOOT_PRETTY) +#INCLUDE "plt_pretty.inc" +#ENDIF +; HB_CURSEC .DB 0 ; CURRENT SECOND (TEMP) ; HB_BCDTMP .FILL 5,0 ; BCD NUMBER STORAGE (TEMP) diff --git a/Source/HBIOS/plt_pretty.inc b/Source/HBIOS/plt_pretty.inc new file mode 100644 index 00000000..350e8d2b --- /dev/null +++ b/Source/HBIOS/plt_pretty.inc @@ -0,0 +1,192 @@ +; Pretty platform boot banner. +; +; Defaults to off due to HBIOS space considerations. +; Add BOOT_PRETTY .SET TRUE to your custom configuration to enable. +; +; Inspired by Dan Gardeners boot messages +; +; From the website: +; http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20 +; Font is "Small", width and height full. +; +; Manual adjustments made to cater for assembler text escape directives, +; 80 column line length and kerning. +; E.g. +; \ becomes \\ +; ' becomes * +; lines ending with \ need a trailing space. +; +; ECB SBC Z80 +; ZETA Z80 +; ZETA2 Z80 +; N8 ZS180 +; ECB MK4 Z180 +; UNABIOS +; RCBUS Z80 +; RCBUS Z180 +; RCBUS EASY Z80 +; RCBUS SC Z180 +; DYNO uATX +; RCBUS Z280 +; MBC Z80 +; RHYOPHYRE +; Z80RETRO +; S100 Z180 +; DUODYNE +; HEATH Z80 +; mITX +; MONSPUTER +; GENESIS Z180 +; NABU +; S100 FPGA Z80 +; RCBUS eZ80 +; +STR_PLT_PRETTY: +; + .DB 10,13 +; +#IF (PLATFORM == PLT_SBC) + .DB " ___ ___ ___ ___ ___ ___ ____ ___ __",10,13 + .DB "| __| / __| | _ ) / __| | _ ) / __| |_ / ( _ ) / \\ ",10,13 + .DB "| _| | (__ | _ \\ \\__ \\ | _ \\ | (__ / / / _ \\ | () |",10,13 + .DB "|___| \\___| |___/ |___/ |___/ \\___| /___| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_ZETA) + .DB " ____ ___ _____ _ ____ ___ __",10,13 + .DB "|_ / | __| |_ _| /_\\ |_ / ( _ ) / \\ ",10,13 + .DB " / / | _| | | / _ \\ / / / _ \\ | () |",10,13 + .DB "/___| |___| |_| /_/ \\_\\ /___| \\___\/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_ZETA2) + .DB " ____ ___ _____ _ ___ ____ ___ __",10,13 + .DB "|_ / | __| |_ _| /_\\ |_ ) |_ / ( _ ) / \\ ",10,13 + .DB " / / | _| | | / _ \\ / / / / / _ \\ | () |\\ ",10,13 + .DB "/___| |___| |_| /_/ \\_\\ /___| /___| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_N8) + .DB " _ _ ___ ____ ___ _ ___ __",10,13 + .DB "| \\| | ( _ ) |_ / / __| / | ( _ ) / \\ ",10,13 + .DB "| .` | / _ \\ / / \\__ \\ | | / _ \\ | () |",10,13 + .DB "|_|\\_| \\___/ /___| |___/ |_| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_MK4) + .DB " ___ ___ ___ __ __ _ __ _ _ ____ _ ___ __",10,13 + .DB "| __| / __| | _ ) | \\/ | | |/ / | | | |_ / / | ( _ ) / \\ ",10,13 + .DB "| _| | (__ | _ \\ | |\\/| | | * < |_ _| / / | | / _ \\ | () |",10,13 + .DB "|___| \\___| |___/ |_| |_| |_|\\_\\ |_| /___| |_| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_UNA) + .DB " _ _ _ _ _ ___ ___ ___ ___",10,13 + .DB "| | | | | \\| | /_\\ | _ ) |_ _| / _ \\ / __|",10,13 + .DB "| |_| | | .` | / _ \\ | _ \\ | | | (_) | \\__ \\ ",10,13 + .DB " \\___/ |_|\\_| /_/ \\_\\ |___/ |___| \\___/ |___/",10,13 +#ENDIF +#IF (PLATFORM == PLT_RCZ80) + .DB " ___ ___ ___ _ _ ___ ____ ___ __",10,13 + .DB "| _ \\ / __| | _ ) | | | | / __| |_ / ( _ ) / \\ ",10,13 + .DB "| / | (__ | _ \\ | |_| | \\__ \\ / / / _ \\ | () |",10,13 + .DB "|_|_\\ \\___| |___/ \\___/ |___/ /___| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_RCZ180) + .DB " ___ ___ ___ _ _ ___ ____ _ ___ __",10,13 + .DB "| _ \\ / __| | _ ) | | | | / __| |_ / / | ( _ ) / \\ ",10,13 + .DB "| / | (__ | _ \\ | |_| | \\__ \\ / / | | / _ \\ | () |",10,13 + .DB "|_|_\\ \\___| |___/ \\___/ |___/ /___| |_| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_EZZ80) + .DB " ___ ___ ___ _ _ ___ ___ _ ___ __ __ ____ ___ __",10,13 + .DB "| _ \\ / __| | _ ) | | | | / __| | __| /_\\ / __| \\\\ / / |_ / ( _ ) / \\ ",10,13 + .DB "| / | (__ | _ \\ | |_| | \\__ \\ | _| / _ \\ \\__ \\ \\ V / / / / _ \\ | () |",10,13 + .DB "|_|_\\ \\___| |___/ \\___/ |___/ |___|/_/ \\_\\|___/ |_| /___| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_SCZ180) + .DB " ___ ___ ___ _ _ ___ ___ ___ ____ _ ___ __",10,13 + .DB "| _ \\ / __| | _ ) | | | | / __| / __| / __| |_ / / | ( _ ) / \\ ",10,13 + .DB "| / | (__ | _ \\ | |_| | \\__ \\ \\__ \\ | (__ / / | | / _ \\ | () |",10,13 + .DB "|_|_\\ \\___| |___/ \\___/ |___/ |___/ \\___| /___| |_| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_DYNO) + .DB " ___ __ __ _ _ ___ _ _____ __ __",10,13 + .DB "| \\ \\ \\ / / | \\| | / _ \\ _ _ /_\\ |_ _| \\ \\/ /",10,13 + .DB "| |) | \\ V / | .* | | (_) | | || | / _ \\ | | > <",10,13 + .DB "|___/ |_| |_|\\_| \\___/ \\_,_| /_/ \\_\\ |_| /_/\\_\\ ",10,13 +#ENDIF +#IF (PLATFORM == PLT_RCZ280) + .DB " ___ ___ ___ _ _ ___ ____ ___ ___ __",10,13 + .DB "| _ \\ / __| | _ ) | | | | / __| |_ / |_ ) ( _ ) / \\ ",10,13 + .DB "| / | (__ | _ \\ | |_| | \\__ \\ / / / / / _ \\ | () |",10,13 + .DB "|_|_\\ \\___| |___/ \\___/ |___/ /___| /___| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_MBC) + .DB " __ __ ___ ___ ____ ___ __",10,13 + .DB "| \\/ | | _ ) / __| |_ / ( _ ) / \\ ",10,13 + .DB "| |\\/| | | _ \\ | (__ / / / _ \\ | () |",10,13 + .DB "|_| |_| |___/ \\___| /___| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_RPH) + .DB " ___ _ _ __ __ ___ ___ _ _ __ __ ___ ___",10,13 + .DB "| _ \\ | || | \\ \\ / / / _ \\ | _ \\ | || | \\ \\ / / | _ \\ | __|",10,13 + .DB "| / | __ | \\ V / | (_) | | _/ | __ | \\ V / | / | _|",10,13 + .DB "|_|_\\ |_||_| |_| \\___/ |_| |_||_| |_| |_|_\\ |___|",10,13 +#ENDIF +#IF (PLATFORM == PLT_Z80RETRO) + .DB " ____ ___ __ ___ ___ _____ ___ ___",10,13 + .DB "|_ / ( _ ) / \\ | _ \\ | __| |_ _| | _ \\ / _ \\ ",10,13 + .DB " / / / _ \\ | () | | / | _| | | | / | (_) |",10,13 + .DB "/___| \\___/ \\__/ |_|_\\ |___| |_| |_|_\\ \\___/",10,13 +#ENDIF +#IF (PLATFORM == PLT_S100) + .DB " ___ _ __ __ ____ _ ___ __",10,13 + .DB "/ __| / | / \\ / \\ |_ / / | ( _ ) / \\ ",10,13 + .DB "\\__ \\ | | | () | | () | / / | | / _ \\ | () |",10,13 + .DB "|___/ |_| \\__/ \\__/ /___| |_| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_DUO) + .DB " ___ _ _ ___ ___ __ __ _ _ ___",10,13 + .DB "| \\ | | | | / _ \\ | \\ \\ \\ / / | \\| | | __|",10,13 + .DB "| |) | | |_| | | (_) | | |) | \\ V / | .` | | _|",10,13 + .DB "|___/ \\___/ \\___/ |___/ |_| |_|\\_| |___|",10,13 +#ENDIF +#IF (PLATFORM == PLT_HEATH) + .DB " _ _ ___ _ _____ _ _ ____ ___ __",10,13 + .DB "| || | | __| /_\\ |_ _| | || | |_ / ( _ ) / \\ ",10,13 + .DB "| __ | | _| / _ \\ | | | __ | / / / _ \\ | () |",10,13 + .DB "|_||_| |___| /_/ \\_\\ |_| |_||_| /___| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_EPITX) + .DB " ___ _____ __ __",10,13 + .DB " _ __ |_ _| |_ _| \\ \\/ /",10,13 + .DB "| ' \\ | | | | > <\n\r" + .DB "|_|_|_| |___| |_| /_/\\_\\ ",10,13 +#ENDIF +#IF (PLATFORM == PLT_MON) + .DB " __ __ ___ _ _ ___ ___ _ _ _____ ___ ___",10,13 + .DB "| \\/ | / _ \\ | \\| | / __| | _ \\ | | | | |_ _| | __| | _ \\ ",10,13 + .DB "| |\\/| | | (_) | | .` | \\__ \\ | _/ | |_| | | | | _| | /",10,13 + .DB "|_| |_| \\___/ |_|\\_| |___/ |_| \\___/ |_| |___| |_|_\\ ",10,13 +#ENDIF +#IF (PLATFORM == PLT_GMZ180) + .DB " ___ ___ _ _ ___ ___ ___ ___ ____ _ ___ __",10,13 + .DB " / __| | __| | \\| | | __| / __| |_ _| / __| |_ / / | ( _ ) / \\ ",10,13 + .DB "| (_ | | _| | .` | | _| \\__ \\ | | \\__ \\ / / | | / _ \\ | () |",10,13 + .DB " \\___| |___| |_|\\_| |___| |___/ |___| |___/ /___| |_| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_NABU) + .DB " _ _ _ ___ _ _",10,13 + .DB "| \\| | /_\\ | _ ) | | | |",10,13 + .DB "| .` | / _ \\ | _ \\ | |_| |",10,13 + .DB "|_|\\_| /_/ \\_\\ |___/ \\___/",10,13 +#ENDIF +#IF (PLATFORM == PLT_FZ80) + .DB " ___ _ __ __ ___ ___ ___ _ ____ ___ __",10,13 + .DB "/ __| / | / \\ / \\ | __| | _ \\ / __| /_\\ |_ / ( _ ) / \\ ",10,13 + .DB "\\__ \\ | | | () | | () | | _| | _/ | (_ | / _ \\ / / / _ \\ | () |",10,13 + .DB "|___/ |_| \\__/ \\__/ |_| |_| \\___|/_/ \\_\\ /___| \\___/ \\__/",10,13 +#ENDIF +#IF (PLATFORM == PLT_RCEZ80) + .DB " ___ ___ ___ _ _ ___ ____ ___ __",10,13 + .DB "| _ \\ / __| | _ ) | | | | / __| ___ |_ / ( _ ) / \\ ",10,13 + .DB "| / | (__ | _ \\ | |_| | \\__ \\ / -_) / / / _ \\ | () |",10,13 + .DB "|_|_\\ \\___| |___/ \\___/ |___/ \\___| /___| \\___/ \\__/",10,13 +#ENDIF + .DB "$" diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index a582f19c..0e5903c7 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -25,7 +25,7 @@ ; 21. GMZ180 Doug Jacksons' Genesis Z180 System ; 22. NABU NABU w/ Les Bird's RomWBW Option Board ; 23. FZ80 S100 Computers FPGA Z80 -; 24. RCZ80 RCBus eZ80 +; 24. RCEZ80 RCBus eZ80 ; ; ; INCLUDE BUILD VERSION @@ -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_SBC1B .EQU 3 ; ECB-SBCV2 - 1-BIT IO PORT +BT_REC_SBCB0 .EQU 2 ; ECB-SBCV2 - BIT 0 RTC HIGH +BT_REC_SBC1B .EQU 3 ; ECB-SBCV2/MBC - 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) ;