- If we determine that the keyboard buffer is full, only call INT 16h,0 once without...
authorColin Finck <colin@reactos.org>
Sun, 22 Mar 2009 23:36:48 +0000 (23:36 +0000)
committerColin Finck <colin@reactos.org>
Sun, 22 Mar 2009 23:36:48 +0000 (23:36 +0000)
  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.

svn path=/trunk/; revision=40176

reactos/boot/freeldr/bootsect/isoboot.asm

index 0c97f42..054fc5b 100644 (file)
@@ -898,41 +898,23 @@ kaboom:
        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
-       int 16h
-       jz      .end
-.empty_buffer:
-       mov ah, 0               ; Read from keyboard
+       mov ah, 1               ; Did the user press a key?
        int 16h
-       
-       mov ah, 1               ; Poll keyboard again
+       jz      .end            ; No, then we're done
+       mov ah, 0               ; Otherwise empty the buffer by reading it
        int 16h
-       jz      .buffer_emptied
-       jmp .empty_buffer
-.buffer_emptied:
-       and ax, ax      ; ZF = 0
 .end:
        popad
        ret