From ce9778e189cf48989b925a461f773bbaec9d7403 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Mon, 8 Jul 2024 16:35:38 +1000 Subject: [PATCH] ez80: implemented timer get/set function - delegates to firmware --- Source/HBIOS/cfg_rcez80.asm | 2 +- Source/HBIOS/hbios.asm | 31 ++++++++++++++++++++++++++++++ Source/RomDsk/Makefile | 4 ++-- Source/RomDsk/ROM_384KB/timer.com | Bin 0 -> 900 bytes 4 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 Source/RomDsk/ROM_384KB/timer.com diff --git a/Source/HBIOS/cfg_rcez80.asm b/Source/HBIOS/cfg_rcez80.asm index a04ac19f..3cd7910b 100644 --- a/Source/HBIOS/cfg_rcez80.asm +++ b/Source/HBIOS/cfg_rcez80.asm @@ -31,7 +31,7 @@ AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT 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 18432000 ; CPU OSC FREQ IN MHZ -INTMODE .EQU 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) +INTMODE .EQU 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (EZ80 operates with IM 2 - simulating IM 1) DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 6d476148..9d22a730 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -5058,6 +5058,13 @@ SYS_GETFN: ; DE:HL: TIMER VALUE (32 BIT) ; SYS_GETTIMER: +#IF (CPUFAM == CPU_EZ80) + LD A, 2 + LD B, 0 ; GET TIMER TICK + EZ80_FN + RET + +#ELSE LD HL,HB_TICKS HB_DI CALL LD32 @@ -5065,6 +5072,8 @@ SYS_GETTIMER: LD C, TICKFREQ XOR A RET +#ENDIF + ; ; GET SECONDS ; RETURNS: @@ -5072,6 +5081,13 @@ SYS_GETTIMER: ; C: NUM TICKS WITHIN CURRENT SECOND ; SYS_GETSECS: +#IF (CPUFAM == CPU_EZ80) + LD A, 2 + LD B, 1 ; GET SECOND TICK + EZ80_FN + RET + +#ELSE LD HL,HB_SECS HB_DI CALL LD32 @@ -5082,6 +5098,7 @@ SYS_GETSECS: LD C,A XOR A RET +#ENDIF ; ; GET BOOT INFORMATION ; RETURNS: @@ -5289,24 +5306,38 @@ SYS_SETBOOTINFO: ; DE:HL: TIMER VALUE (32 BIT) ; SYS_SETTIMER: +#IF (CPUFAM == CPU_EZ80) + LD A, 2 + LD B, 2 ; SET TICKS + EZ80_FN + RET +#ELSE LD BC,HB_TICKS HB_DI CALL ST32 HB_EI XOR A RET +#ENDIF ; ; SET SECS ; ON ENTRY: ; DE:HL: SECONDS VALUE (32 BIT) ; SYS_SETSECS: +#IF (CPUFAM == CPU_EZ80) + LD A, 2 + LD B, 3 ; SET SECS + EZ80_FN + RET +#ELSE LD BC,HB_SECS HB_DI CALL ST32 HB_EI XOR A RET +#ENDIF ; ; SET SYSTEM CPU SPEED ATTRIBUTES ; ON ENTRY: diff --git a/Source/RomDsk/Makefile b/Source/RomDsk/Makefile index c4ab2ec3..57e5ff7c 100644 --- a/Source/RomDsk/Makefile +++ b/Source/RomDsk/Makefile @@ -6,8 +6,8 @@ include $(TOOLS)/Makefile.inc .SHELLFLAGS = -ce -ROMAPPS1 := assign mode rtc syscopy xm ../../Source/Images/Common/All/WDATE -ROMAPPS2 := fdu format survey sysgen talk timer cpuspd +ROMAPPS1 := assign mode rtc syscopy xm +ROMAPPS2 := fdu format survey sysgen talk cpuspd rom128_%.dat: DISKDEF=wbw_rom128 rom256_%.dat: DISKDEF=wbw_rom256 diff --git a/Source/RomDsk/ROM_384KB/timer.com b/Source/RomDsk/ROM_384KB/timer.com new file mode 100644 index 0000000000000000000000000000000000000000..be41c75462b188160ebcd9eb823ca398e549e809 GIT binary patch literal 900 zcmbtRUr19?96t9rXAQO(72FcWFD5x-Zf+vfkgGV#q%uim4`9DTwq^55uV zZ2oCmD+Ee7Cm??bgE_E)-@2Ob`8P1tIqJoB)x^Zutzv<7f`@+P()1LzXAC;9iE}QC z&Fs)=J<7RWW{Gnyx1zy{*0nm%X~ESjm(Sz;0VGTdgceg{+^=xy)>L zlCKuY?mF$nv#iUougEUVu%JfR3KLnPO}K2p5(&|3cx<+T72AZ!=M(QAHGk}GCgt-; zp`&=4>@rU(V`f+(jyCRli9W;}zh~exouRGDz=3SK;O#tqac`&R&58ptPvh}x$pi~) zE9BrY7M=VLO)P1dwGUbHKv`=dU+m*`yv5#V;_L0*CLXchz#g-z6NGg1-!;^C}Sqe-d77&5A+ z_wB(=BK~RK+PN!Q3TPRa9^t z+1_SdO&;~d!phXNn2^V#67=-l90YcD7{d)$513TDrvp^!Zc