sortof bounds-check while moving
[ld45_start_nothing] / src / keyb.asm
index c41a2b6..b953474 100644 (file)
@@ -38,17 +38,14 @@ kbintr:
        ; keystate[keycode] address in ebx
        xor ebx, ebx
        mov bl, al
+       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