mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Implement BOOTCON
Added BOOTCON config variable to allow setting the boot console device. This replaces FORCECON and removes the code that used to rearrange the PCINITTBL.
This commit is contained in:
@@ -65,6 +65,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -67,6 +67,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -92,6 +92,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -68,6 +68,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -71,6 +71,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -68,6 +68,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -73,6 +73,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -68,6 +68,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -64,6 +64,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -63,6 +63,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -56,6 +56,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -67,6 +67,7 @@ LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -756,6 +756,12 @@ INT_IM1:
|
||||
HBX_INT: ; COMMON INTERRUPT ROUTING CODE
|
||||
;
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
;
|
||||
; THIS CODE ASSUMES Z280 IM 3. IM 1 AND IM 2 ON Z280
|
||||
; DO NOT SAVE MSR AT INTERRUPT MAKING IT VIRTUALLY IMPOSSIBLE
|
||||
; TO RETURN FROM THE INTERRUPT TO THE CORRECT MODE (SYSTEM
|
||||
; OR USER). THIS IS BECAUSE THERE IS NO WAY TO KNOW WHETHER
|
||||
; SYSTEM OR USER MODE WAS ACTIVE AT THE TIME OF THE INTERRUPT.
|
||||
;
|
||||
EX (SP),HL ; SAVE HL AND GET INT JP TABLE OFFSET
|
||||
|
||||
@@ -1097,9 +1103,9 @@ Z280_INITZ:
|
||||
; SET DEFAULT CPU CLOCK MULTIPLIERS (XTAL / 2)
|
||||
;
|
||||
; IT HAS BEEN REPORTED THAT CMR NEEDS TO BE SET PRIOR TO CCR
|
||||
; SEEMS COUNTER-INTUITIVE AND I NEVER EXPERIENCED A PROBLEM
|
||||
; RELATED TO ORDER, BUT JUST FOR GOOD MEASURE, CMR
|
||||
; IS SET PRIOR TO CCR BELOW.
|
||||
; WHEN USING AN INPUT FREQUENCY THAT IS XTAL / 2.
|
||||
; I NEVER EXPERIENCED A PROBLEM RELATED TO ORDER, BUT JUST
|
||||
; FOR GOOD MEASURE, CMR IS SET PRIOR TO CCR BELOW.
|
||||
; https://www.retrobrewcomputers.org/forum/index.php?t=msg&th=316&#msg_5045
|
||||
XOR A
|
||||
OUT0 (Z180_CMR),A
|
||||
@@ -1610,7 +1616,7 @@ HB_CPU2:
|
||||
;
|
||||
#IF (CPUFAM == CPU_Z280)
|
||||
;
|
||||
#IF (INTMODE == 3)
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
;
|
||||
Z280_TC .EQU CPUOSC / 4 / 50 / 2 ; TIME CONSTANT
|
||||
;
|
||||
@@ -1668,26 +1674,9 @@ Z280_TC .EQU CPUOSC / 4 / 50 / 2 ; TIME CONSTANT
|
||||
;
|
||||
; PRE-CONSOLE INITIALIZATION
|
||||
;
|
||||
LD A,FORCECON ; CALCULATE PRE-INIT TABLE ; A IS INDEX OF CONSOLE DEVICE ENTRY
|
||||
RLCA ; ENTRY THAT WE WANT TO ; A IS OFFSET OF CONSOLE DEVICE ENTRY
|
||||
LD DE,(HB_PCINITTBL) ; EXECUTE FIRST ; DE IS VALUE OF TOP ENTRY
|
||||
LD HL,HB_PCINITTBL ; HL IS ADDRESS OF TOP OF TABLE
|
||||
PUSH HL ; PUSH (1) TOP OF TABLE
|
||||
PUSH DE ; PUSH (2) VALUE OF TOP ENTRY
|
||||
PUSH HL ; PUSH (3) TOP OF TABLE
|
||||
CALL ADDHLA ; HL IS ADDRESS OF DESIRED CONSOLE ENTRY
|
||||
POP DE ; PLACE IT AT THE TOP OF THE ; POP (3) DE IS TOP OF TABLE
|
||||
PUSH HL ; TABLE BY SWAPPING IT ; PUSH (3) ADDRESS OF DESIRED CONSOLE ENTRY
|
||||
LDI ; WITH THE FIRST (DUMMY) ; COPY DESIRED ENTRY
|
||||
LDI ; ENTRY ; ... TO TOP OF TABLE
|
||||
POP HL ; POP (3) HL IS ADDRESS OF DESIRED CONSOLE ENTRY
|
||||
POP DE ; POP (2) DE IS VALUE OF ORIGINAL TOP ENTRY
|
||||
LD (HL),E ; SAVE DE OVER ORIGINAL ENTRY
|
||||
INC HL
|
||||
LD (HL),D
|
||||
LD B,HB_PCINITTBLLEN
|
||||
POP DE ; POP (1) DE IS ADDRESS OF TOP OF TABLE
|
||||
|
||||
LD DE,HB_PCINITTBL ; POINT TO PRECONSOLE INIT TABLE
|
||||
LD B,HB_PCINITTBLLEN ; NUMBER OF ENTRIES
|
||||
;
|
||||
#IF (BT_REC_TYPE != BT_REC_NONE)
|
||||
LD A,(HB_BOOT_REC) ; IF WE ARE IN RECOVERY MODE
|
||||
OR A ; POINT TO THE RECOVER MODE
|
||||
@@ -1695,7 +1684,7 @@ Z280_TC .EQU CPUOSC / 4 / 50 / 2 ; TIME CONSTANT
|
||||
LD B,HB_PCINITRLEN
|
||||
LD DE,HB_PCINIT_REC
|
||||
NOT_REC_M0:
|
||||
|
||||
;
|
||||
#ENDIF
|
||||
CALL CALLLIST ; PROCESS THE PRE-INIT CALL TABLE
|
||||
;
|
||||
@@ -1717,8 +1706,15 @@ NOT_REC_M0:
|
||||
; NOW THAT HBIOS IS READY, SET THE CONSOLE UNIT TO ACTIVATE CONSOLE I/O
|
||||
; VIA HBIOS.
|
||||
;
|
||||
XOR A ; INITIALLY, FIRST SERIAL UNIT IS CONSOLE
|
||||
LD (CB_CONDEV),A ; SAVE IT, ACTIVATES CONSOLE ON HBIOS
|
||||
XOR A ; FAILSAFE VALUE FOR BOOT CONSOLE DEVICE
|
||||
LD (CB_CONDEV),A ; SAVE IT
|
||||
;
|
||||
LD A,(CIO_CNT) ; GET COUNT OF CHAR DEVICES
|
||||
CP BOOTCON + 1 ; COUNT - (DEVICE + 1)
|
||||
JR C,HB_CONRDY ; IF TOO HIGH, JUST USE FAILSAFE
|
||||
LD A,BOOTCON ; GET REQUESTED CONSOLE DEV
|
||||
LD (CB_CONDEV),A ; SAVE IT
|
||||
HB_CONRDY:
|
||||
|
||||
#IF (WBWDEBUG == USEMIO) ; OUTPUT ANY CACHED DEBUG TEXT
|
||||
LD HL,MIOOUTPTR
|
||||
@@ -2179,7 +2175,6 @@ HB_INITRLEN .EQU (($ - HB_INIT_REC) / 2)
|
||||
;==================================================================================================
|
||||
;
|
||||
HB_PCINITTBL:
|
||||
.DW CALLDUMMY ; RESERVED FOR FORCING PRIMARY CONSOLE
|
||||
#IF (ASCIENABLE)
|
||||
.DW ASCI_PREINIT
|
||||
#ENDIF
|
||||
@@ -4199,6 +4194,11 @@ Z280_IVT:
|
||||
; REGISTERS AF, BC, HL DESTROYED
|
||||
;
|
||||
Z280_BNKSEL:
|
||||
; *DEBUG*
|
||||
;CALL PC_LBKT
|
||||
;CALL PRTHEXBYTE
|
||||
;CALL PC_RBKT
|
||||
|
||||
; SELECT I/O PAGE $FE (SAVING PREVIOUS VALUE)
|
||||
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER
|
||||
LDCTL HL,(C) ; GET CURRENT I/O PAGE
|
||||
|
||||
@@ -353,13 +353,6 @@ WDOG_NONE .EQU 0 ; NONE
|
||||
WDOG_EZZ80 .EQU 1 ; EASY Z80 WATCHDOG
|
||||
WDOG_SKZ .EQU 2 ; SK Z80 CPU W/ 512K
|
||||
;
|
||||
; DEVICE DRIVER TO BE INITIALIZED FIRST. FIRST CIO DRIVER, UNIT 0 INITIALIZED BECOMES PRIMARY CONSOLE.
|
||||
; IS AN INDEX INTO THE ENABLED INITIALIZATION DRIVER LIST i.e. ASCI, UART, SIO, ACIA, PIO, UF ETC.
|
||||
; EXAMPLE: IF ONLY UART, SIO AND PIO ARE ENABLE AND THE SIO IS DESIRED AS THE PRIMARY CONSOLE,
|
||||
; SET FORCECON TO 2 IN YOUR CUSTOM CONFIGURATION FILE i.e. "FORCECON: .SET 2"
|
||||
;
|
||||
FORCECON .EQU 0 ; DEFAULT IS TO FOLLOW NORMAL SEQUENCE
|
||||
;
|
||||
#INCLUDE "build.inc" ; INCLUDE USER CONFIG, ADD VARIANT, TIMESTAMP, & ROMSIZE
|
||||
;
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
@@ -414,6 +407,7 @@ TM_CTC .EQU 1
|
||||
TM_TMS .EQU 2
|
||||
TM_SIMH .EQU 3
|
||||
TM_Z180 .EQU 4
|
||||
TM_Z280 .EQU 5
|
||||
;
|
||||
.ECHO "SYSTEM TIMER:"
|
||||
SYSTIM .EQU TM_NONE
|
||||
@@ -443,6 +437,11 @@ SYSTIM .SET TM_SIMH
|
||||
SYSTIM .SET TM_Z180
|
||||
.ECHO " Z180"
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((CPUFAM == CPU_Z280) & (MEMMGR == MM_Z280))
|
||||
SYSTIM .SET TM_Z280
|
||||
.ECHO " Z280"
|
||||
#ENDIF
|
||||
;
|
||||
#IF SYSTIM == TM_NONE
|
||||
.ECHO " NONE"
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1.1-pre.54"
|
||||
#DEFINE BIOSVER "3.1.1-pre.55"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 1
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1.1-pre.54"
|
||||
db "3.1.1-pre.55"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user