diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index f9de87ae..6c513e3e 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -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) diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 77bf5c87..e4559c0d 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -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) diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 370a70ba..b202f09c 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -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) diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 4427c1db..32f611b3 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -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) diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 0401c625..0e2e49b8 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -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) diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 2904ee88..4e182511 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -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) diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 97b04ec7..b2bbbe68 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -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) diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 138ca616..88eb0531 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -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) diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 0ccbbd77..fbdc125b 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -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) diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 31d19c69..96c87a87 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -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) diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 86c283a9..1eda52df 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -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) diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index 0e5f226c..44783270 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -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) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index ebe0a658..5430fdc5 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -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 diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index ded5a73b..b4f0fe6b 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -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" diff --git a/Source/ver.inc b/Source/ver.inc index 461938fc..0e2b5687 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -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" diff --git a/Source/ver.lib b/Source/ver.lib index 5d2784e1..8e71dfa2 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -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