sortof bounds-check while moving
[ld45_start_nothing] / src / keyb.asm
index d9fdd4e..b953474 100644 (file)
@@ -41,15 +41,11 @@ kbintr:
        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