code 'key',key

	extern SDL_WaitEvent

section .bss
	event 		resd 	200 	; must be big enough to hold all 
					; kinds of SDL events. Could probably
					; be smaller
	pressed_key 	resd 	1
	KEY_DOWN 	equ 	2
	KEY_OFS 	equ 	16

section .data
	keyerror db "SDL: error while waiting for event"
	keyerrorlen: 

section .text
	dup
	pusha

sdl_test_event:
	push event
	call SDL_WaitEvent
	pop ebx
	mov ecx,keyerror
	mov edx,keyerrorlen - keyerror
	call error_if_zero
	mov eax,[event]
	and eax,0ffh		; remove cruft...
	cmp eax,KEY_DOWN
	jne sdl_test_event;

	mov eax,[event+KEY_OFS]	; get the key
	cmp eax,0		; funny char 
	jz sdl_test_event	; ignore it
	cmp eax,100h		; multibyte char
	jae sdl_test_event	; ignore it
	cmp al,0dh		; cr pressed
	jne .skip_translate_cr
	mov al,0ah		; lf expected by editor
.skip_translate_cr:

	mov [pressed_key],eax
	popa
	mov eax,[pressed_key]
	ret
