- Change "pollchar" to also empty the keyboard buffer after polling the character and rename it to "pollchar_and_empty" accordingly.

This fixes a bug revealed by silverblade's FOSDEM CD: If you boot FreeLoader with a boot menu from CD and press a key after that "Press any key to boot from CD" message, that keypress was forwarded to FreeLoader as well.
- Remove the already unused and now unsynchronized "pollchar" from the regression testing boot sector.

svn path=/trunk/; revision=39387
This commit is contained in:
Colin Finck 2009-02-04 13:13:21 +00:00
parent 0a8a745e77
commit b419715eb2
2 changed files with 17 additions and 22 deletions

View file

@ -132,12 +132,7 @@ relocate:
; Make sure the keyboard buffer is empty ; Make sure the keyboard buffer is empty
%ifdef WAIT_FOR_KEY %ifdef WAIT_FOR_KEY
.kbd_buffer_test: call pollchar_and_empty
call pollchar
jz .kbd_buffer_empty
call getchar
jmp .kbd_buffer_test
.kbd_buffer_empty:
; Check for MBR on harddisk ; Check for MBR on harddisk
pusha pusha
@ -166,7 +161,7 @@ relocate:
add eax, 19 ; add eax, 19 ;
.poll_again: .poll_again:
call pollchar call pollchar_and_empty
jnz .boot_cdrom jnz .boot_cdrom
mov ebx, [BIOS_timer] mov ebx, [BIOS_timer]
@ -921,12 +916,24 @@ getchar:
; ;
; pollchar: check if we have an input character pending (ZF = 0) ; pollchar_and_empty: check if we have an input character pending (ZF = 0) and empty the input buffer afterwards
; ;
pollchar: pollchar_and_empty:
pushad pushad
mov ah,1 ; Poll keyboard mov ah, 1 ; Poll keyboard
int 16h int 16h
jz .end
.empty_buffer:
mov ah, 0 ; Read from keyboard
int 16h
mov ah, 1 ; Poll keyboard again
int 16h
jz .buffer_emptied
jmp .empty_buffer
.buffer_emptied:
and ax, ax ; ZF = 0
.end:
popad popad
ret ret

View file

@ -887,18 +887,6 @@ getchar:
ret ret
;
; pollchar: check if we have an input character pending (ZF = 0)
;
pollchar:
pushad
mov ah,1 ; Poll keyboard
int 16h
popad
ret
isolinux_banner db CR, LF, 'Loading IsoBoot...', CR, LF, 0 isolinux_banner db CR, LF, 'Loading IsoBoot...', CR, LF, 0
copyright_str db ' Copyright (C) 1994-2002 H. Peter Anvin', CR, LF, 0 copyright_str db ' Copyright (C) 1994-2002 H. Peter Anvin', CR, LF, 0
presskey_msg db 'Press any key to boot from CD', 0 presskey_msg db 'Press any key to boot from CD', 0