Dungeons game: fix keyboard input handling

git-svn-id: svn://kolibrios.org@5492 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Anton_K 2015-03-01 18:25:37 +00:00
parent b55ad6401a
commit 8c98d2a737

View File

@ -734,6 +734,21 @@ proc main_loop
endp endp
; ============================================================================ ; ; ============================================================================ ;
; ============================================================================ ;
; < eax = key scancode (1 byte) ;
; ============================================================================ ;
macro wait_for_scancode
{
local .wait
.wait:
mcall 2
test al, al
jnz .wait
shr eax, 8
}
; ============================================================================ ; ; ============================================================================ ;
; < eax = key scancode / 0 - no keys ; ; < eax = key scancode / 0 - no keys ;
; ============================================================================ ; ; ============================================================================ ;
@ -750,8 +765,10 @@ proc get_key
cmp eax, 0E1h cmp eax, 0E1h
jne @f jne @f
mcall 2
mcall 2 wait_for_scancode
wait_for_scancode
xor eax, eax xor eax, eax
jmp .exit jmp .exit
@ -761,8 +778,9 @@ proc get_key
cmp eax, 0E0h cmp eax, 0E0h
jne @f jne @f
mcall 2
shr eax, 8 wait_for_scancode
mov ecx, eax mov ecx, eax
or eax, 0E000h or eax, 0E000h
mov ebx, 128 mov ebx, 128
@ -794,6 +812,7 @@ proc get_key
mov [PressedKeys + ebx * 4], edx mov [PressedKeys + ebx * 4], edx
.exit: .exit:
;DEBUGF DEBUG_FINE, 'get_key: %x\n', eax:4
ret ret
endp endp
; ============================================================================ ; ; ============================================================================ ;