Obsah

Časovač (timer)

Časovač má frekvenci 1193181,666 Hz.
Nastavuje se přes porty 0x43 a 0x40, viz dál.
Když vyprší, vyvolá se IRQ 0.

; Set Timer
; IN: dx = number of ticks
h_timer_set:
pushfd
 cli
 mov al, 30h
 out 43h, al
 mov al, dl
 out 40h, al
 mov al, dh
 out 40h, al
popfd
ret

; Read Timer
; OUT: ax = number of ticks
h_timer_read:
pushfd
 cli
 mov al, 0
 out 43h, al
 in al, 40h
 xchg al, ah
 in al, 40h
 xchg al, ah
popfd
ret

IRQ0:
pushad
 ; ...
 mov al, 20h
 out 20h, al
popad
iret