Author: cfinck Date: Mon Mar 23 02:36:48 2009 New Revision: 40176
URL: http://svn.reactos.org/svn/reactos?rev=40176&view=rev Log: - If we determine that the keyboard buffer is full, only call INT 16h,0 once without checking again whether the buffer is free afterwards Fixes bug #4264 - Get rid of another procedure for getting a character, can be replaced with two instructions in the only place where this procedure was called See issue #4264 for more details.
Modified: trunk/reactos/boot/freeldr/bootsect/isoboot.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] Mon Mar 23 02:36:48 2009 @@ -898,41 +898,23 @@ sti mov si, err_bootfailed call writestr - call getchar + xor ax, ax ; Wait for keypress + int 16h cli mov word [BIOS_magic], 0 ; Cold reboot jmp 0F000h:0FFF0h ; Reset vector address
-getchar: -.again: - mov ah, 1 ; Poll keyboard - int 16h - jz .again -.kbd: - xor ax, ax ; Get keyboard input - int 16h -.func_key: - ret -
; ; 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 ; Did the user press a key? int 16h - jz .end -.empty_buffer: - mov ah, 0 ; Read from keyboard + jz .end ; No, then we're done + mov ah, 0 ; Otherwise empty the buffer by reading it 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