diff options
Diffstat (limited to 'asm/asm_pit.s')
| -rw-r--r-- | asm/asm_pit.s | 22 |
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 |
