From f640630a0676072a74d118a3a4bf27fdb988b979 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Mon, 10 Apr 2023 16:20:12 -0700 Subject: [PATCH] CPU Speed Calc Tweek - Exit CPU speed detection routine earlier if the clock is not ticking. - Fix minor regression in the SBC_simh.asm config file. --- Source/HBIOS/Config/SBC_simh.asm | 3 +++ Source/HBIOS/hbios.asm | 10 ++++++++-- Source/ver.inc | 2 +- Source/ver.lib | 2 +- Tools/simh/Sim.cmd | 5 +++-- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Source/HBIOS/Config/SBC_simh.asm b/Source/HBIOS/Config/SBC_simh.asm index 2ee17a8b..328d6eed 100644 --- a/Source/HBIOS/Config/SBC_simh.asm +++ b/Source/HBIOS/Config/SBC_simh.asm @@ -30,6 +30,9 @@ INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 ; HTIMENABLE .SET TRUE ; ENABLE SIMH TIMER SUPPORT ; +SIMRTCENABLE .SET TRUE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) +DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM) +; UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) UARTSBCFORCE .SET TRUE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) ; diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 1a221d76..e40a1533 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -6286,13 +6286,18 @@ HB_CPUSPD1: #ENDIF ; WAIT FOR AN INITIAL TICK TO ALIGN, THEN WAIT - ; FOR SECOND TICK AND TO GET A FULL ONE SECOND LOOP COUNT + ; FOR A SECOND TICK TO GET A FULL ONE SECOND LOOP COUNT. + ; WAITSEC WILL SET ZF IF AN OVERFLOW OCCURS (MEANING THAT THE + ; CLOCK IS NOT TICKING). THERE IS NO + ; POINT IN CALLING HB_WAITSEC AGAIN IN THAT CASE, SO WE ONLY + ; CALL HB_WAITSEC AGAIN IF ZF IS NOT SET. CALL DSRTC_START CALL HB_RDSEC ; GET SECONDS LD (HB_CURSEC),A ; AND INIT CURSEC CALL HB_WAITSEC ; WAIT FOR SECONDS TICK LD (HB_CURSEC),A ; SAVE NEW VALUE - CALL HB_WAITSEC ; WAIT FOR SECONDS TICK + ; CALL HB_WAITSEC AGAIN, BUT ONLY IF ZF IS NOT SET + CALL NZ,HB_WAITSEC ; WAIT FOR SECONDS TICK ; #IF (CPUFAM == CPU_Z180) ; RESTORE W/S SETTINGS FROM BEFORE TEST @@ -6323,6 +6328,7 @@ HB_CPUSPD1: HB_WAITSEC: ; WAIT FOR SECONDS TICK ; RETURN SECS VALUE IN A, LOOP COUNT IN DE + ; ZF IS SET ON OVERFLOW (CLOCK NOT TICKING) LD DE,0 ; INIT LOOP COUNTER HB_WAITSEC1: ; diff --git a/Source/ver.inc b/Source/ver.inc index 703a4e69..9116b4a7 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 2 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.2.1-rc.1" +#DEFINE BIOSVER "3.2.1-rc.2" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index def1da94..394a574e 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 2 rup equ 1 rtp equ 0 biosver macro - db "3.2.1-rc.1" + db "3.2.1-rc.2" endm diff --git a/Tools/simh/Sim.cmd b/Tools/simh/Sim.cmd index ba1c2f70..3e501ab8 100644 --- a/Tools/simh/Sim.cmd +++ b/Tools/simh/Sim.cmd @@ -2,8 +2,9 @@ set ROM=..\..\Binary\SBC_simh.rom if not "%1"=="" set ROM=..\..\Binary\%1.rom if not exist %ROM% goto romerr -rem start C:\Users\WWarthen\Bin\putty.exe -load "SIMH Telnet" -start /w altairz80.exe sim.cfg %ROM% +:: start C:\Users\WWarthen\Bin\putty.exe -load "SIMH Telnet" +:: start /w altairz80.exe sim.cfg %ROM% +altairz80.exe sim.cfg %ROM% goto :eof :romerr