TIMER
System timer
Intel 8254 system timer is a counter of 1193182 Hz clock signal (ports 40h to 43h). Counter 0 (port 40h) is used as system timer (counter of 55 ms impulses, timer period 65536). Counter 1 (port 41h) is reserved for DRAM memory refresh. Counter 2 (port 42h) is used to generate the tone for the built-in speaker.
TimerSetMode - initialize timer counter
INPUT:
AL = timer mode (TIMER_MODE_CNT, ...)
CX = counter initial value (1 to 65535, 0 stands for 65536)
DL = counter index (0 to 2)
NOTES: On mode TIMER_MODE_GEN value of 1 is illegal. It temporaly disables interrupts. It takes aprox. 7 us.
TimerSetVal - set counter new initial value
INPUT:
CX = counter new init. value (1 to 65535, 0 stands for 65536)
DL = counter index (0 to 2)
NOTES: On mode TIMER_MODE_GEN value of 1 is illegal. It temporaly disables interrupts. It takes aprox. 4 us.
TimerGetVal - get counter current value
INPUT:
DL = counter index (0 to 2)
OUTPUT:
AX = counter current value
NOTES: It temporaly disables interrupts. It takes aprox. 7 us.
TimerGetOut - get counter ouput
INPUT:
DL = counter index (0 to 2)
OUTPUT:
AL = counter current output state (0 or 1)
NOTES: It temporaly disables interrupts. It takes aprox. 4 us.
TIMER_FREQ: (=1193182) TIMER frequency
1193181.667 Hz, = 1/3 of the NTSC color subcarrier
TIMER_IRQ: (=0) TIMER IRQ number
TIMER_BASE: (=40h) TIMER base register
TIMER_CTRL: (=TIMER_BASE+3) TIMER control register
counter mode:
TIMER_MODE_CNT: (=0) mode 0: countdown and
interrupt
TIMER_MODE_SHT: (=1) mode 1: hw retriggerable one-shot
TIMER_MODE_GEN: (=2) mode 2(6): rate generator
TIMER_MODE_SQR: (=3) mode 3(7): square wave
TIMER_MODE_SWS: (=4) mode 4: sw triggered strobe
TIMER_MODE_HWS: (=5) mode 5: hw triggered strobe
TIMER_MODE_MAX: (=7) maximal mode number