diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 46d315a7..51eeec24 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1877,6 +1877,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 @@ -3225,7 +3236,7 @@ CALLDUMMY: #IF (BT_REC_TYPE != BT_REC_NONE) ; 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 @@ -3237,6 +3248,10 @@ HB_INIT_REC: .DW MD_INIT .DW PPIDE_INIT #ENDIF + #IF ((PLATFORM == PLT_DUO) + .DW UART_INIT + .DW MD_INIT + #ENDIF HB_INITRLEN .EQU (($ - HB_INIT_REC) / 2) ; #ENDIF diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index de3ac009..6a53acbb 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -21,7 +21,7 @@ ; 17. DUO Andrew Lynch's Duodyne Computer ; 18. HEATH Les Bird's Heath Z80 Board ; 19. EPITX Alan Cox' Mini-ITX System -; 20. MON Jacques Pelletier's Monsputer +; 20. MON Jacques Pelletier's Monsputer ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; @@ -87,6 +87,8 @@ 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_SBCRI .EQU 4 ; ECB-SBCV2 - 16550 UART RING INDICATOR LINE +BT_REC_DUORI .EQU 5 ; DUO MULTI I/O - TL16C2552FN UART RING INDICATOR LINE + ; BT_REC_TYPE .EQU BT_REC_NONE ; BOOT RECOVERY METHOD TO USE ; diff --git a/Source/HBIOS/uart.asm b/Source/HBIOS/uart.asm index eef0d133..cd8fe8fb 100644 --- a/Source/HBIOS/uart.asm +++ b/Source/HBIOS/uart.asm @@ -56,19 +56,17 @@ UART_CTSBAD .EQU 4 ; CTS STALL DETECTED ; #IF (PLATFORM == PLT_DUO) UARTSBASE .EQU $58 +UARTDBASE .EQU $70 #ELSE UARTSBASE .EQU $68 +UARTDBASE .EQU $80 #ENDIF +; UARTABASE .EQU $A8 UARTCBASE .EQU $80 UARTMBASE .EQU $18 UART4BASE .EQU $C0 UARTRBASE .EQU $A0 -#IF (PLATFORM == PLT_DUO) -UARTDBASE .EQU $70 -#ELSE -UARTDBASE .EQU $80 -#ENDIF ; #IF (UARTINTS) ; @@ -1165,26 +1163,25 @@ UART_CFG_MFP: ; DUAL UART CHANNEL A .DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) .DB 0 ; UART TYPE - .DB UARTDBASE ; IO PORT BASE (RBR, THR) - .DB UARTDBASE + UART_LSR ; LINE STATUS PORT (LSR) + .DB UARTDBASE+8 ; IO PORT BASE (RBR, THR) + .DB UARTDBASE+8 + UART_LSR ; LINE STATUS PORT (LSR) .DW UARTCFG ; LINE CONFIGURATION .DW 0 ; SHOULD NEVER NEED INT HANDLER -; - .ECHO "UART: MODE=DUAL, IO=" - .ECHO UARTDBASE+0 - .ECHO "\n" -; ; DUAL UART CHANNEL B .DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) .DB 0 ; UART TYPE - .DB UARTDBASE+8 ; IO PORT BASE (RBR, THR) - .DB UARTDBASE+8 + UART_LSR ; LINE STATUS PORT (LSR) + .DB UARTDBASE ; IO PORT BASE (RBR, THR) + .DB UARTDBASE + UART_LSR ; LINE STATUS PORT (LSR) .DW UARTCFG ; LINE CONFIGURATION .DW 0 ; SHOULD NEVER NEED INT HANDLER ; .ECHO "UART: MODE=DUAL, IO=" .ECHO UARTDBASE+8 .ECHO "\n" +; + .ECHO "UART: MODE=DUAL, IO=" + .ECHO UARTDBASE+0 + .ECHO "\n" ; #ENDIF ;