and bl, 07fh
add ebx, keystate
- ; determine if it's a press or release
- test al, 80h
- jz .press
- ; key release
- mov byte [ebx], 0
- jmp .eoi
-.press: ; key press
- mov byte [ebx], 1
-
+ ; determine if it's a press or release (high bit set on release)
+ rol al, 1
+ and al, 1
+ xor al, 1
+ mov byte [ebx], al
.eoi:
cli
end_of_irq KB_IRQ