|
|
|
@ -1245,13 +1245,15 @@ HB_CPU1: |
|
|
|
LD (IVT(INT_TIM0)),HL ; Z180 TIMER 0 |
|
|
|
|
|
|
|
; SETUP PERIODIC TIMER INTERRUPT ON TIMER 0 |
|
|
|
LD HL,(CB_CPUKHZ) ; 50HZ = 18432000 / 20 / 50 / X, SO X = CPU KHZ |
|
|
|
LD B,0 |
|
|
|
LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER |
|
|
|
; LD HL,CPUOSC/TICKSPERSEC/20-1 ; 50HZ = 18432000 / 50 / 20 |
|
|
|
LD HL,(CPUKHZ) ; 50HZ = 18432000 / 20 / 50 / X, SO X = CPU KHZ |
|
|
|
LD B,0 ; 16-BIT I/O ADDRESS |
|
|
|
LD C,Z180_TMDR0L ; INITIALIZE TIMER 0 DATA REGISTER |
|
|
|
OUT (C),L |
|
|
|
INC C |
|
|
|
OUT (C),H |
|
|
|
LD C,Z180_TMDR0L ; INITIALIZE TIMER 0 DATA REGISTER |
|
|
|
DEC HL ; RELOAD OCCURS *AFTER* ZERO |
|
|
|
LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER |
|
|
|
OUT (C),L |
|
|
|
INC C |
|
|
|
OUT (C),H |
|
|
|
@ -2396,12 +2398,17 @@ SYS_GETTIMER: |
|
|
|
; GET SECONDS |
|
|
|
; RETURNS: |
|
|
|
; DE:HL: SECONDS VALUE (32 BIT) |
|
|
|
; C: NUM TICKS WITHIN CURRENT SECOND |
|
|
|
; |
|
|
|
SYS_GETSECS: |
|
|
|
LD HL,HB_SECS |
|
|
|
HB_DI |
|
|
|
CALL LD32 |
|
|
|
LD A,(HB_SECTCK) |
|
|
|
HB_EI |
|
|
|
NEG ; CONVERT DOWNCOUNTER TO UPCOUNTER |
|
|
|
ADD A,TICKSPERSEC |
|
|
|
LD C,A |
|
|
|
XOR A |
|
|
|
RET |
|
|
|
; |
|
|
|
@ -2520,7 +2527,7 @@ SYS_SETTIMER: |
|
|
|
; |
|
|
|
; SET SECS |
|
|
|
; ON ENTRY: |
|
|
|
; DE:HL: TIMER VALUE (32 BIT) |
|
|
|
; DE:HL: SECONDS VALUE (32 BIT) |
|
|
|
; |
|
|
|
SYS_SETSECS: |
|
|
|
LD BC,HB_SECS |
|
|
|
@ -2739,7 +2746,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 ; 50 TICKS PER SECOND |
|
|
|
LD (HL),A ; RESET COUNTDOWN REGISTER |
|
|
|
; INCREMENT SECONDS COUNTER |
|
|
|
LD HL,HB_SECS ; POINT TO SECONDS COUNTER |
|
|
|
@ -4049,7 +4056,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 ; 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 |
|
|
|
|