blob: 3723782ae7d5d93385d89ce638da4c1677bbbd57 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
global ticks
global timer_init
extern register_isr
ticks: dd 0
tick_handler:
push ax
inc dword [ticks]
mov al, 0x20
out 0x20, al
pop ax
iret
timer_init:
push ebp
mov ebp, esp
; register the tick_handler
push tick_handler
push dword 0
push dword 0x20
call register_isr
add esp, 12
; initialize the pit
mov ax, 0x36
out 0x43, al
mov ax, 0x2E9C ; 10ms tick interval
out 0x40, al
mov al, ah
out 0x40, al
in al, 0x21
and al, 0xFE
out 0x21, al
pop ebp
ret
|