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/isob…
==============================================================================
--- 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/isob…
==============================================================================
--- 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