[ros-diffs] [cfinck] 40176: - 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.

cfinck at svn.reactos.org cfinck at svn.reactos.org
Mon Mar 23 00:36:49 CET 2009


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/isoboot.asm?rev=40176&r1=40175&r2=40176&view=diff
==============================================================================
--- 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



More information about the Ros-diffs mailing list