INF: How ungetch() Works with getch() and getche()

ID Number: Q41198

5.00 5.10 6.00 6.00a 6.00ax 7.00 | 5.10 6.00 6.00a

MS-DOS | OS/2

Summary:

In Microsoft C versions 5.0, 5.1, 6.0, 6.0a, 6.0ax, and C/C++ version

7.0, the Microsoft C run-time function ungetch() pushes back a

character to be read in by the next call to getch() or getche().

The character is pushed back to a internal buffer, not the keyboard

buffer. The function getch() or getche() checks the internal buffer

before it calls the DOS interrupt function to read input from the

keyboard buffer. If the internal buffer is not empty, it returns the

value in the buffer without calling the Interrupt 21H function.

More Information:

Pushing a character back to the keyboard buffer can be done on some

machines by calling BIOS keyboard service, Interrupt 16H function 05H

with scan code in the register CH and the character's ASCII code in

the register CL. Note that this BIOS function may not be supported on

all machines. Be sure to check the BIOS documentation for your machine

before you try to use this function.

Additional reference words: 5.00 5.10 6.00 6.00a 6.00ax 7.00