mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
[NTVDM]
INT 21h, AH = OAh - Special characters should be echoed onto the screen (like ^A, etc...) and appended to the buffer. svn path=/trunk/; revision=67003
This commit is contained in:
parent
d5976d2739
commit
2cef04bd30
1 changed files with 14 additions and 7 deletions
|
@ -1539,6 +1539,9 @@ VOID WINAPI DosInt21h(LPWORD Stack)
|
|||
/* Ctrl-C */
|
||||
case 0x03:
|
||||
{
|
||||
DosPrintCharacter(DOS_OUTPUT_HANDLE, '^');
|
||||
DosPrintCharacter(DOS_OUTPUT_HANDLE, 'C');
|
||||
|
||||
if (DosControlBreak()) return;
|
||||
break;
|
||||
}
|
||||
|
@ -1561,15 +1564,19 @@ VOID WINAPI DosInt21h(LPWORD Stack)
|
|||
|
||||
default:
|
||||
{
|
||||
if (Character == 0x0A || Character == 0x0D
|
||||
|| (Character >= 0x20 && Character <= 0x7F))
|
||||
{
|
||||
/* Echo the character and append it to the buffer */
|
||||
DosPrintCharacter(DOS_OUTPUT_HANDLE, Character);
|
||||
InputBuffer->Buffer[Count] = Character;
|
||||
/* Append it to the buffer */
|
||||
InputBuffer->Buffer[Count] = Character;
|
||||
Count++; /* Carriage returns are also counted */
|
||||
|
||||
Count++; /* Carriage returns are also counted */
|
||||
/* Check if this is a special character */
|
||||
if (Character < 0x20 && Character != 0x0A && Character != 0x0D)
|
||||
{
|
||||
DosPrintCharacter(DOS_OUTPUT_HANDLE, '^');
|
||||
Character += 'A' - 1;
|
||||
}
|
||||
|
||||
/* Echo the character */
|
||||
DosPrintCharacter(DOS_OUTPUT_HANDLE, Character);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue