diff --git a/kernel/dev/at/cd.inc b/kernel/dev/at/cd.inc new file mode 100644 index 0000000..e69de29 diff --git a/kernel/dev/at/pit.inc b/kernel/dev/at/pit.inc index f41d2af..4dc4b0d 100644 --- a/kernel/dev/at/pit.inc +++ b/kernel/dev/at/pit.inc @@ -8,8 +8,30 @@ PIT_CHANNEL1 = 0x40 PIT_CHANNEL2 = 0x42 PIT_COMMAND = 0x43 + +PIT_MAX_FREQ = 1193180 + ;; Function: pit_init + ;; + ;; In: + ;; AX - freq pit_init: + movzx eax, ax + xor edx, edx + mov ecx, PIT_MAX_FREQ + div ecx + + push eax + mov dx, PIT_COMMAND + mov al, 0x34 ;channel 0, lobyte/hibyte, rate generator + pop eax + + mov dx, PIT_CHANNEL0 + out dx, al + + xchg al, ah + out dx, al + ret ;; Function: pit_irq diff --git a/kernel/kernel.asm b/kernel/kernel.asm index 562d74d..1ed6276 100644 --- a/kernel/kernel.asm +++ b/kernel/kernel.asm @@ -77,6 +77,7 @@ kmain: call idt_setup + mov ax, 100 ; 100Hz call pit_init call bio_init