Author: cfinck Date: Wed Feb 4 07:13:21 2009 New Revision: 39387
URL: http://svn.reactos.org/svn/reactos?rev=39387&view=rev Log: - 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.
Modified: trunk/reactos/boot/freeldr/bootsect/isoboot.asm trunk/reactos/boot/freeldr/bootsect/isobtrt.asm
Modified: trunk/reactos/boot/freeldr/bootsect/isoboot.asm URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/bootsect/isobo... ============================================================================== --- trunk/reactos/boot/freeldr/bootsect/isoboot.asm [iso-8859-1] (original) +++ trunk/reactos/boot/freeldr/bootsect/isoboot.asm [iso-8859-1] Wed Feb 4 07:13:21 2009 @@ -132,12 +132,7 @@
; Make sure the keyboard buffer is empty %ifdef WAIT_FOR_KEY -.kbd_buffer_test: - call pollchar - jz .kbd_buffer_empty - call getchar - jmp .kbd_buffer_test -.kbd_buffer_empty: + call pollchar_and_empty
; Check for MBR on harddisk pusha @@ -166,7 +161,7 @@ add eax, 19 ;
.poll_again: - call pollchar + call pollchar_and_empty jnz .boot_cdrom
mov ebx, [BIOS_timer] @@ -921,12 +916,24 @@
; -; pollchar: check if we have an input character pending (ZF = 0) -; -pollchar: +; pollchar_and_empty: check if we have an input character pending (ZF = 0) and empty the input buffer afterwards +; +pollchar_and_empty: pushad - mov ah,1 ; Poll keyboard + mov ah, 1 ; Poll keyboard 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 ret
Modified: trunk/reactos/boot/freeldr/bootsect/isobtrt.asm URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/bootsect/isobt... ============================================================================== --- trunk/reactos/boot/freeldr/bootsect/isobtrt.asm [iso-8859-1] (original) +++ trunk/reactos/boot/freeldr/bootsect/isobtrt.asm [iso-8859-1] Wed Feb 4 07:13:21 2009 @@ -887,18 +887,6 @@ 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 copyright_str db ' Copyright (C) 1994-2002 H. Peter Anvin', CR, LF, 0 presskey_msg db 'Press any key to boot from CD', 0