summaryrefslogtreecommitdiff
path: root/asm/asm_pit.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/asm_pit.s')
-rw-r--r--asm/asm_pit.s22
1 files changed, 12 insertions, 10 deletions
diff --git a/asm/asm_pit.s b/asm/asm_pit.s
index 8be29cb..28fd784 100644
--- a/asm/asm_pit.s
+++ b/asm/asm_pit.s
@@ -49,7 +49,7 @@ asm_pit_tick:
.macro asm_pit_sleep val
- mov $0x00110000, %al // chan 0 / mode 0
+ mov $0b00110000, %al // chan 0 / mode 0
outb %al,$0x43
// LSB first
@@ -57,18 +57,20 @@ asm_pit_tick:
out %al, $0x40
xchg %ah,%al
out %al, $0x40
-
- // check if finished
- mov $0xE2, %al
- outb %al,$0x43
//sleep until finished
- //7th bit determines if finished
+ //7th bit (0-7) determines if finished
sleep\val:
- inb $0x40, %al
- or $0b1000000, %al
- cmp $0b1000000, %al
- jne sleep\val
+
+ // read back command
+ mov $0b11100010, %al
+ outb %al,$0x43
+
+ inb $0x40, %al
+ and $0b10000000, %al
+
+ cmp $0b10000000, %al
+ jne sleep\val
ret