diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index e8677023..7f7851bc 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -20,6 +20,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 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 f43b6745..478bc971 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2396,12 +2396,25 @@ SYS_GETTIMER: ; GET SECONDS ; RETURNS: ; DE:HL: SECONDS VALUE (32 BIT) +; C TICKS OF TICKSPERSEC (8 BIT) ; SYS_GETSECS: - LD HL,HB_SECS + LD HL,HB_SECTCK + LD A,TICKSPERSEC-1 HB_DI - CALL LD32 + SUB (HL) + INC HL ; NOW POINTING TO HB_SECS + LD C,(HL) + INC HL + LD B,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) HB_EI + LD L,C + LD H,B + LD C,A XOR A RET ; @@ -2739,7 +2752,7 @@ HB_TIMINT2: DEC (HL) ; COUNTDOWN 50 TICKS JR NZ,HB_TIMINT3 ; NOT ZERO YET, DONE FOR THIS CYCLE ; 50 TICKS HAVE ELAPSED - LD A,50 ; 50 TICKS PER SECOND + LD A,TICKSPERSEC-1 ; 50 TICKS PER SECOND LD (HL),A ; RESET COUNTDOWN REGISTER ; INCREMENT SECONDS COUNTER LD HL,HB_SECS ; POINT TO SECONDS COUNTER @@ -4049,7 +4062,7 @@ IDLECOUNT .DB 0 HEAPCURB .DW 0 ; MARK HEAP ADDRESS AFTER INITIALIZATION ; HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER -HB_SECTCK .DB 50 ; TICK COUNTER FOR SECONDS +HB_SECTCK .DB TICKSPERSEC-1 ; TICK COUNTER FOR FRACTIONAL SECONDS HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER ; HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG