From 47d9c4008d26b1b938d9ce073323abeeb68e1e8f Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sat, 16 Oct 2021 01:59:46 +0800 Subject: [PATCH] Prelim speed management framework --- Source/HBIOS/Config/MBC_std.asm | 2 +- Source/HBIOS/cfg_master.asm | 2 ++ Source/HBIOS/cfg_mbc.asm | 2 ++ Source/HBIOS/cfg_sbc.asm | 2 ++ Source/HBIOS/hbios.asm | 29 +++++++++++++++++++++-------- Source/HBIOS/std.asm | 11 +++++++++++ 6 files changed, 39 insertions(+), 9 deletions(-) diff --git a/Source/HBIOS/Config/MBC_std.asm b/Source/HBIOS/Config/MBC_std.asm index ef9ca19a..adadab65 100644 --- a/Source/HBIOS/Config/MBC_std.asm +++ b/Source/HBIOS/Config/MBC_std.asm @@ -34,4 +34,4 @@ FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) ; DSKYENABLE .SET FALSE ; ENABLES DSKY -DSKYMODE .SET DSKYMODE_NG ; DSKY VERTSION: DSKYMODE_[V1|NG] +DSKYMODE .SET DSKYMODE_NG ; DSKY VERSION: DSKYMODE_[V1|NG] diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 0694402e..da5f828b 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -20,6 +20,8 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE ; +CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO +CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index 4cf7d9a1..4e502fc2 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -23,6 +23,8 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE ; +CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO +CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index a4b11a76..aaa252f4 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -23,6 +23,8 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE ; +CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO +CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 22847126..6e73abc6 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -187,6 +187,22 @@ RTCDEF .EQU 0 ; ALLOWS DRIVERS TO SET BITS RTCDEF .SET RTCDEF | %00000001 ; SC128 I2C SCL BIT #ENDIF ; +#IF (!(CPUSPDCAP==SPD_FIXED) & (PLATFORM==PLT_MBC)) +#IF (CPUSPDDEF==SPD_HIGH) +RTCDEF .SET RTCDEF | %00001000 ; DEFAULT SPEED HIGH +#ELSE +RTCDEF .SET RTCDEF | %00000000 ; DEFAULT SPEED LOW +#ENDIF +#ENDIF +; +#IF (!(CPUSPDCAP==SPD_FIXED) & (PLATFORM==PLT_SBC)) +#IF (CPUSPDDEF==SPD_HIGH) +RTCDEF .SET RTCDEF | %00000000 ; DEFAULT SPEED HIGH +#ELSE +RTCDEF .SET RTCDEF | %00001000 ; DEFAULT SPEED LOW +#ENDIF +#ENDIF +; ; ; #IFNDEF APPBOOT @@ -1068,6 +1084,11 @@ Z280_BOOTERR .TEXT "\r\n\r\n*** Application mode boot not supported under Z280 n ; DI ; NO INTERRUPTS IM 1 ; INTERRUPT MODE 1 + +#IF ((PLATFORM=PLT_MBC) | (PLATFORM=PLT_SBC)) + LD A,(HB_RTCVAL) ; SET DEFAULT + OUT (RTCIO),A ; SPEED +#ENDIF ; #IF (DIAGENABLE) LD A,%00000001 @@ -2327,14 +2348,6 @@ HB_WDZ: PRTX(STR_BANNER) #ENDIF ; -; EXPERIMENTAL!!! -; ENGAGE TURBO... -; -; LD A,(HB_RTCVAL) -; SET 3,A -; OUT (RTCIO),A -; LD (HB_RTCVAL),A -; INITSYS3: CALL PRTSUM ; PRINT UNIT/DEVICE SUMMARY TABLE ; diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 2828a57f..73ac08c7 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -384,6 +384,17 @@ WDOG_NONE .EQU 0 ; NONE WDOG_EZZ80 .EQU 1 ; EASY Z80 WATCHDOG WDOG_SKZ .EQU 2 ; SK Z80 CPU W/ 512K ; +; SYSTEM SPEED CAPABILITIES +; +SPD_FIXED .EQU 0 ; PLATFORM SPEED FIXED AND CANNOT CHANGE SPEEDS +SPD_HILO .EQU 1 ; PLATFORM CAN CHANGE BETWEEN TWO SPEEDS +; +; SYSTEM SPEED CHARACTERISTICS +; +SPD_UNSUP .EQU 0 ; PLATFORM CAN CHANGE SPEEDS BUT IS UNSUPPORTED +SPD_HIGH .EQU 1 ; PLATFORM CAN CHANGE SPEED, STARTS HIGH +SPD_LOW .EQU 2 ; PLATFORM CAN CHANGE SPEED, STARTS LOW +; #INCLUDE "build.inc" ; INCLUDE USER CONFIG, ADD VARIANT, TIMESTAMP, & ROMSIZE ; #IF (BIOS == BIOS_WBW)