diff --git a/Source/HBIOS/Config/RCZ80_skz.asm b/Source/HBIOS/Config/RCZ80_skz.asm index 6b9685c1..df31fe70 100644 --- a/Source/HBIOS/Config/RCZ80_skz.asm +++ b/Source/HBIOS/Config/RCZ80_skz.asm @@ -31,4 +31,10 @@ LEDENABLE .SET TRUE ; ENABLES STATUS LED (SINGLE LED) LEDPORT .SET $6E ; STATUS LED PORT ADDRESS ; +SKZENABLE .SET TRUE ; ENABLE SERGEY'S Z80-512K FEATURES +SKZDIV .SET DIV_12 ; UART CLK (CLK2) DIVIDER FOR Z80-512K +; WDOGMODE .SET WDOG_SKZ ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] +; +SIO0BCLK .SET CPUOSC / 12 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 +SIO0BCFG .SET SER_38400_8N1 ; SIO 0B: SERIAL LINE CONFIG diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index 3a2bdbb3..165735cd 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -50,6 +50,8 @@ CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 7ed162c4..59fcc3d9 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -52,6 +52,8 @@ CTCOSC .EQU 921600 ; CTC CLOCK FREQUENCY ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_EZZ80 ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] WDOGIO .EQU $6F ; WATCHDOG REGISTER ADR ; diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 1c35d567..000aae57 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -74,6 +74,9 @@ CTCOSC .EQU 614400 ; CTC CLOCK FREQUENCY ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +SKZDIV .EQU DIV_1 ; UART CLK (CLK2) DIVIDER FOR Z80-512K +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] WDOGIO .EQU $6F ; WATCHDOG REGISTER ADR ; diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 7f696d2d..98e8f43b 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -53,6 +53,8 @@ CTCTIMER .EQU FALSE ; ENABLE CTC PERIODIC TIMER ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 7a019536..cf4df4cb 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -56,6 +56,8 @@ CTCTIMER .EQU FALSE ; ENABLE CTC PERIODIC TIMER ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 5715bf98..71eb061f 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -53,6 +53,8 @@ CTCTIMER .EQU FALSE ; ENABLE CTC PERIODIC TIMER ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index b751119b..6e37b3e4 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -56,6 +56,8 @@ CTCOSC .EQU 7372800 ; CTC CLOCK FREQUENCY ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 73c2c0fa..5a7418d3 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -52,6 +52,9 @@ CTCOSC .EQU CPUOSC ; CTC CLOCK FREQUENCY ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +SKZDIV .EQU DIV_1 ; UART CLK (CLK2) DIVIDER FOR Z80-512K +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR ; diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 28112b4c..f521de2b 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -50,6 +50,8 @@ CTCOSC .EQU 614400 ; CTC CLOCK FREQUENCY ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index d28e02f3..c61505cb 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -48,6 +48,8 @@ CTCTIMER .EQU FALSE ; ENABLE CTC PERIODIC TIMER ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 89fd4521..3157c38c 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -42,6 +42,8 @@ CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index e2281788..62363c33 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -53,6 +53,8 @@ CTCOSC .EQU 921600 ; CTC CLOCK FREQUENCY ; EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION ; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +; WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 7e83c516..458973df 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1424,6 +1424,17 @@ HB_CPU1: CALL DSRTC_PREINIT #ENDIF ; +#IF (SKZENABLE) +; + ; SET THE SK Z80-512K UART CLK2 DIVIDER AS + ; CONFIGURED. NOTE THAT THIS IMPLICITLY + ; CLEARS THE WATCHDOG BIT. THE WATCHDOG + ; WILL BE ENABLED LATER IF CONFIGURED. + LD A,SKZDIV ; GET DIVIDER CODE + OUT ($6D),A ; IMPLEMENT IT +; +#ENDIF +; #IF (CPUFAM == CPU_Z180) ; ; AT BOOT, Z180 PHI IS OSC / 2 @@ -1971,21 +1982,26 @@ IS_REC_M1: #IF (WDOGMODE == WDOG_EZZ80) PRTS("EZZ80$") #ENDIF -; #IF (WDOGMODE == WDOG_SKZ) PRTS("SKZ$") + #ENDIF +; + PRTS(" IO=0x$") + LD A,WDOGIO + CALL PRTHEXBYTE +; + #IF (WDOGMODE == WDOG_SKZ) + ; SKZ WATCHDOG IS DISABLED EARLY IN BOOT PROCESS + ; HERE, WE ONLY NEED TO ENABLE IT, IF APPROPRIATE LD HL,(HB_TICKS) ; GET LOW WORD LD A,H ; CHECK FOR OR L ; ... ZERO JR Z,HB_WDOFF ; SKIP IF NOT TICKING IN A,($6D) ; GET PORT VALUE - SET 5,A ; SET WDOG ENABLE BIT - OUT ($6D),A ; DO IT + SET 5,A ; SET THE WATCHDOG ENABLE BIT + OUT ($6D),A ; ACTIVATE WATCHDOG #ENDIF ; - PRTS(" IO=0x$") - LD A,WDOGIO - CALL PRTHEXBYTE PRTS(" ENABLED$") JR HB_WDZ ; diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 3146c287..9c625aad 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -246,6 +246,42 @@ SER_BAUD1843200 .EQU $1D << 8 SER_BAUD3686400 .EQU $1E << 8 SER_BAUD7372800 .EQU $1F << 8 ; +; UART DIVIDER VALUES +; STORED AS 5 BITS: YXXXX +; +DIV_1 .EQU $00 +DIV_2 .EQU $01 +DIV_4 .EQU $02 +DIV_8 .EQU $03 +DIV_16 .EQU $04 +DIV_32 .EQU $05 +DIV_64 .EQU $06 +DIV_128 .EQU $07 +DIV_256 .EQU $08 +DIV_512 .EQU $09 +DIV_1024 .EQU $0A +DIV_2048 .EQU $0B +DIV_4096 .EQU $0C +DIV_8192 .EQU $0D +DIV_16384 .EQU $0E +DIV_32768 .EQU $0F +DIV_3 .EQU $10 +DIV_6 .EQU $11 +DIV_12 .EQU $12 +DIV_24 .EQU $13 +DIV_48 .EQU $14 +DIV_96 .EQU $15 +DIV_192 .EQU $16 +DIV_384 .EQU $17 +DIV_768 .EQU $18 +DIV_1536 .EQU $19 +DIV_3072 .EQU $1A +DIV_6144 .EQU $1B +DIV_12288 .EQU $1C +DIV_24576 .EQU $1D +DIV_49152 .EQU $1E +DIV_98304 .EQU $1F +; SER_XON .EQU 1 << 6 SER_DTR .EQU 1 << 7 SER_RTS .EQU 1 << 13 diff --git a/Source/ver.inc b/Source/ver.inc index 43d00b14..a06edde1 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.44" +#DEFINE BIOSVER "3.1.1-pre.45" diff --git a/Source/ver.lib b/Source/ver.lib index e8f1e73e..d9f12158 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.44" + db "3.1.1-pre.45" endm