Files
WolfensteinVB/libs/libgccvb/timer.c
2026-02-19 23:28:57 +01:00

48 lines
721 B
C

#include "types.h"
#include "hw.h"
#include "timer.h"
u8 tcr_val = 0;
void timer_enable(int enb)
{
if (enb) tcr_val |= TIMER_ENB;
else tcr_val &= ~TIMER_ENB;
HW_REGS[TCR] = tcr_val;
}
u16 timer_get()
{
return (HW_REGS[TLR] | (HW_REGS[THR] << 8));
}
void timer_set(u16 time)
{
HW_REGS[TLR] = (time & 0xFF);
HW_REGS[THR] = (time >> 8);
}
void timer_freq(int freq)
{
if (freq) tcr_val |= TIMER_20US;
else tcr_val &= ~TIMER_20US;
HW_REGS[TCR] = tcr_val;
}
void timer_int(int enb)
{
if (enb) tcr_val |= TIMER_INT;
else tcr_val &= ~TIMER_INT;
HW_REGS[TCR] = tcr_val;
}
int timer_getstat()
{
return (!!(HW_REGS[TCR] & TIMER_ZSTAT));
}
void timer_clearstat()
{
HW_REGS[TCR] = (tcr_val|TIMER_ZCLR);
}