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:
Aleksandar Andrejevic 2015-03-31 21:45:12 +00:00
parent d5976d2739
commit 2cef04bd30

View file

@ -1539,6 +1539,9 @@ VOID WINAPI DosInt21h(LPWORD Stack)
/* Ctrl-C */ /* Ctrl-C */
case 0x03: case 0x03:
{ {
DosPrintCharacter(DOS_OUTPUT_HANDLE, '^');
DosPrintCharacter(DOS_OUTPUT_HANDLE, 'C');
if (DosControlBreak()) return; if (DosControlBreak()) return;
break; break;
} }
@ -1561,15 +1564,19 @@ VOID WINAPI DosInt21h(LPWORD Stack)
default: default:
{ {
if (Character == 0x0A || Character == 0x0D /* Append it to the buffer */
|| (Character >= 0x20 && Character <= 0x7F))
{
/* Echo the character and append it to the buffer */
DosPrintCharacter(DOS_OUTPUT_HANDLE, Character);
InputBuffer->Buffer[Count] = Character; 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);
} }
} }