Browse Source

Merge pull request #392 from b1ackmai1er/master

Recovery button support for Duo
work
Wayne Warthen 2 years ago
committed by GitHub
parent
commit
918ed66967
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 17
      Source/HBIOS/hbios.asm
  2. 4
      Source/HBIOS/std.asm
  3. 25
      Source/HBIOS/uart.asm

17
Source/HBIOS/hbios.asm

@ -1877,6 +1877,17 @@ SAVE_REC_M:
LD A,0 ; BIT 6 LD A,0 ; BIT 6
JR Z,SAVE_REC_M ; IS RECOVERY MODE JR Z,SAVE_REC_M ; IS RECOVERY MODE
LD A,1 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: SAVE_REC_M:
LD (HB_BOOT_REC),A ; SAVE FOR LATER LD (HB_BOOT_REC),A ; SAVE FOR LATER
#ENDIF #ENDIF
@ -3225,7 +3236,7 @@ CALLDUMMY:
#IF (BT_REC_TYPE != BT_REC_NONE) #IF (BT_REC_TYPE != BT_REC_NONE)
; ;
HB_PCINIT_REC: HB_PCINIT_REC:
#IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC))
#IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC) | (PLATFORM == PLT_DUO))
.DW UART_PREINIT .DW UART_PREINIT
; .DW CALLDUMMY ; .DW CALLDUMMY
#ENDIF #ENDIF
@ -3237,6 +3248,10 @@ HB_INIT_REC:
.DW MD_INIT .DW MD_INIT
.DW PPIDE_INIT .DW PPIDE_INIT
#ENDIF #ENDIF
#IF ((PLATFORM == PLT_DUO)
.DW UART_INIT
.DW MD_INIT
#ENDIF
HB_INITRLEN .EQU (($ - HB_INIT_REC) / 2) HB_INITRLEN .EQU (($ - HB_INIT_REC) / 2)
; ;
#ENDIF #ENDIF

4
Source/HBIOS/std.asm

@ -21,7 +21,7 @@
; 17. DUO Andrew Lynch's Duodyne Computer ; 17. DUO Andrew Lynch's Duodyne Computer
; 18. HEATH Les Bird's Heath Z80 Board ; 18. HEATH Les Bird's Heath Z80 Board
; 19. EPITX Alan Cox' Mini-ITX System ; 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_SBC01 .EQU 2 ; ECB-SBCV2 - BIT 1 RTC HIGH
BT_REC_SBC1B .EQU 3 ; ECB-SBCV2 - 1-BIT IO PORT 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_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 BT_REC_TYPE .EQU BT_REC_NONE ; BOOT RECOVERY METHOD TO USE
; ;

25
Source/HBIOS/uart.asm

@ -56,19 +56,17 @@ UART_CTSBAD .EQU 4 ; CTS STALL DETECTED
; ;
#IF (PLATFORM == PLT_DUO) #IF (PLATFORM == PLT_DUO)
UARTSBASE .EQU $58 UARTSBASE .EQU $58
UARTDBASE .EQU $70
#ELSE #ELSE
UARTSBASE .EQU $68 UARTSBASE .EQU $68
UARTDBASE .EQU $80
#ENDIF #ENDIF
;
UARTABASE .EQU $A8 UARTABASE .EQU $A8
UARTCBASE .EQU $80 UARTCBASE .EQU $80
UARTMBASE .EQU $18 UARTMBASE .EQU $18
UART4BASE .EQU $C0 UART4BASE .EQU $C0
UARTRBASE .EQU $A0 UARTRBASE .EQU $A0
#IF (PLATFORM == PLT_DUO)
UARTDBASE .EQU $70
#ELSE
UARTDBASE .EQU $80
#ENDIF
; ;
#IF (UARTINTS) #IF (UARTINTS)
; ;
@ -1165,26 +1163,25 @@ UART_CFG_MFP:
; DUAL UART CHANNEL A ; DUAL UART CHANNEL A
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) .DB 0 ; DEVICE NUMBER (UPDATED DURING INIT)
.DB 0 ; UART TYPE .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 UARTCFG ; LINE CONFIGURATION
.DW 0 ; SHOULD NEVER NEED INT HANDLER .DW 0 ; SHOULD NEVER NEED INT HANDLER
;
.ECHO "UART: MODE=DUAL, IO="
.ECHO UARTDBASE+0
.ECHO "\n"
;
; DUAL UART CHANNEL B ; DUAL UART CHANNEL B
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) .DB 0 ; DEVICE NUMBER (UPDATED DURING INIT)
.DB 0 ; UART TYPE .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 UARTCFG ; LINE CONFIGURATION
.DW 0 ; SHOULD NEVER NEED INT HANDLER .DW 0 ; SHOULD NEVER NEED INT HANDLER
; ;
.ECHO "UART: MODE=DUAL, IO=" .ECHO "UART: MODE=DUAL, IO="
.ECHO UARTDBASE+8 .ECHO UARTDBASE+8
.ECHO "\n" .ECHO "\n"
;
.ECHO "UART: MODE=DUAL, IO="
.ECHO UARTDBASE+0
.ECHO "\n"
; ;
#ENDIF #ENDIF
; ;

Loading…
Cancel
Save