mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:13:13 -06:00
Make tick frequency configurable
This commit is contained in:
@@ -19,6 +19,7 @@ BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -19,6 +19,7 @@ BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -16,6 +16,7 @@ BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -19,6 +19,7 @@ BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -19,6 +19,7 @@ BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -19,6 +19,7 @@ BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -19,6 +19,7 @@ BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -19,6 +19,7 @@ BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -19,6 +19,7 @@ BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -19,6 +19,7 @@ BIOS .EQU BIOS_WBW ; BIOS_[WBW|UNA]: HARDWARE BIOS
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
|
||||
@@ -21,19 +21,24 @@ CTC_PREIO .EQU CTCBASE + CTCPRECH
|
||||
CTC_SCLIO .EQU CTCBASE + CTCTIMCH
|
||||
;
|
||||
#IF (CTCMODE == CTCMODE_CTR)
|
||||
CTC_DIV .EQU CTCOSC / 50
|
||||
CTC_DIV .EQU CTCOSC / TICKFREQ
|
||||
#ENDIF
|
||||
#IF (CTCMODE == CTCMODE_TIM16)
|
||||
CTC_DIV .EQU CTCOSC / 16 / 50
|
||||
CTC_DIV .EQU CTCOSC / 16 / TICKFREQ
|
||||
#ENDIF
|
||||
#IF (CTCMODE == CTCMODE_TIM256)
|
||||
CTC_DIV .EQU CTCOSC / 256 / 50
|
||||
CTC_DIV .EQU CTCOSC / 256 / TICKFREQ
|
||||
#ENDIF
|
||||
;
|
||||
.ECHO "CTC DIVISOR: "
|
||||
.ECHO CTC_DIV
|
||||
.ECHO "\n"
|
||||
;
|
||||
#IF ((CTC_DIV == 0) | (CTC_DIV > $FFFF))
|
||||
.ECHO "COMPUTED CTC DIVISOR IS UNUSABLE!\n"
|
||||
!!!
|
||||
#ENDIF
|
||||
;
|
||||
CTC_DIVHI .EQU ((CTC_DIV >> 8) & $FF)
|
||||
CTC_DIVLO .EQU (CTC_DIV & $FF)
|
||||
;
|
||||
@@ -91,7 +96,7 @@ CTC_PREINIT1:
|
||||
OUT (CTCBASE),A ; SETUP CTC BASE INT VECTOR
|
||||
;
|
||||
; IN ORDER TO DIVIDE THE CTC INPUT CLOCK DOWN TO THE
|
||||
; DESIRED 50 HZ PERIODIC INTERRUPT, WE NEED TO CONFIGURE ONE
|
||||
; DESIRED PERIODIC INTERRUPT, WE NEED TO CONFIGURE ONE
|
||||
; CTC CHANNEL AS A PRESCALER AND ANOTHER AS THE ACTUAL
|
||||
; TIMER INTERRUPT. THE PRESCALE CHANNEL OUTPUT MUST BE WIRED
|
||||
; TO THE TIMER CHANNEL TRIGGER INPUT VIA HARDWARE.
|
||||
|
||||
@@ -1228,6 +1228,20 @@ HB_CPU2:
|
||||
LD (IVT(INT_TIM0)),HL ; Z180 TIMER 0
|
||||
|
||||
; SETUP PERIODIC TIMER INTERRUPT ON TIMER 0
|
||||
; *** THIS ASSUMES A TICKFREQ OF 50HZ!!! ***
|
||||
;
|
||||
#IF (TICKFREQ != 50)
|
||||
.ECHO "TICKFREQ *MUST* BE 50 FOR Z180 TIMER\n"
|
||||
!!!
|
||||
#ENDIF
|
||||
;
|
||||
; Z180 PRESCALES THE COUNTER BY 20 SO,
|
||||
; RLDR = CPU CLK / 20 / TICKFREQ
|
||||
; IF WE ASSUME TICKFREQ = 50, WE CAN SIMPIFY TO
|
||||
; RLDR = CPU CLK / 1000
|
||||
; NOW IF DIVIDE BOTH SIDES BY 1000, WE CAN USE
|
||||
; CPUKHZ VALUE AND SIMPLIFY TO
|
||||
; RLDR = CPUKHZ
|
||||
LD HL,(CB_CPUKHZ) ; 50HZ = 18432000 / 20 / 50 / X, SO X = CPU KHZ
|
||||
OUT0 (Z180_TMDR0L),L ; INITIALIZE TIMER 0 DATA REGISTER
|
||||
OUT0 (Z180_TMDR0H),H
|
||||
@@ -2453,7 +2467,7 @@ SYS_GETSECS:
|
||||
LD A,(HB_SECTCK)
|
||||
HB_EI
|
||||
NEG ; CONVERT DOWNCOUNTER TO UPCOUNTER
|
||||
ADD A,TICKSPERSEC
|
||||
ADD A,TICKFREQ
|
||||
LD C,A
|
||||
XOR A
|
||||
RET
|
||||
@@ -2799,9 +2813,9 @@ HB_TICK:
|
||||
LD HL,HB_TICKS ; POINT TO TICK COUNTER
|
||||
CALL INC32HL
|
||||
LD HL,HB_SECTCK ; POINT TO SECONDS TICK COUNTER
|
||||
DEC (HL) ; COUNTDOWN 50 TICKS
|
||||
DEC (HL) ; COUNTDOWN ONE SECOND OF TICKS
|
||||
JR NZ,HB_TICK1 ; NOT DONE, SKIP AHEAD
|
||||
LD A,TICKSPERSEC ; 50 TICKS PER SECOND
|
||||
LD A,TICKFREQ ; TICKS PER SECOND
|
||||
LD (HL),A ; RESET COUNTDOWN REGISTER
|
||||
CALL VEC_SECOND ; DO SECONDS PROCESSING VIA VECTOR
|
||||
;
|
||||
@@ -4179,7 +4193,7 @@ IDLECOUNT .DB 0
|
||||
HEAPCURB .DW 0 ; MARK HEAP ADDRESS AFTER INITIALIZATION
|
||||
;
|
||||
HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER
|
||||
HB_SECTCK .DB TICKSPERSEC ; TICK COUNTER FOR FRACTIONAL SECONDS
|
||||
HB_SECTCK .DB TICKFREQ ; 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
|
||||
|
||||
@@ -345,8 +345,6 @@ CPUKHZ .SET CPUKHZ * 2 ; ADJUST FOR DOUBLE SPEED OPERATION
|
||||
;
|
||||
CPUMHZ .EQU CPUKHZ / 1000 ; CPU FREQ IN MHZ
|
||||
;
|
||||
TICKSPERSEC .EQU 50
|
||||
;
|
||||
; MEMORY BANK CONFIGURATION
|
||||
;
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1-pre.10"
|
||||
#DEFINE BIOSVER "3.1-pre.11"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 0
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1-pre.10"
|
||||
db "3.1-pre.11"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user