RESET_IDLE
.again:
DO_IDLE
- mov ah,1 ; Poll keyboard
+ mov ah,11h ; Poll keyboard
int 16h
jnz .kbd ; Keyboard input?
mov bx,[SerialPort]
xchg dx,bx ; Data port
in al,dx
ret
-.kbd: xor ax,ax ; Get keyboard input
+.kbd: mov ah,10h ; Get keyboard input
int 16h
+ cmp al,0E0h
+ jz .not_ext
+ xor al,al
+.not_ext:
and al,al
jz .func_key
mov bx,KbdMap ; Convert character sets
; out, or receive a character press at this time. Some dorky BIOSes stuff
; a return in the buffer on bootup, so wipe the keyboard buffer first.
;
-clear_buffer: mov ah,1 ; Check for pending char
+clear_buffer: mov ah,11h ; Check for pending char
int 16h
jz get_char_time
- xor ax,ax ; Get char
+ mov ah,10h ; Get char
int 16h
jmp short clear_buffer
get_char_time: