Author: aandrejevic
Date: Tue May 5 17:56:37 2015
New Revision: 67561
URL: http://svn.reactos.org/svn/reactos?rev=67561&view=rev
Log:
[NTVDM]
The DOS CON driver should support extended keystrokes.
Modified:
trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/condrv.c
Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/condrv.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/…
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/condrv.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/condrv.c [iso-8859-1] Tue May 5 17:56:37 2015
@@ -42,8 +42,8 @@
{
if (!ExtendedCode)
{
- /* Call the BIOS INT 16h, AH=00h "Get Keystroke" */
- setAH(0x00);
+ /* Call the BIOS INT 16h, AH=10h "Get Extended Keystroke" */
+ setAH(0x10);
Int32Call(&DosContext, BIOS_KBD_INTERRUPT);
/* Retrieve the character in AL (scan code is in AH) */
@@ -59,7 +59,7 @@
}
/* Check if this is a special character */
- if (Character == 0) ExtendedCode = getAH();
+ if (Character == 0 || Character == 0xE0) ExtendedCode = getAH();
if (DoEcho) DosPrintCharacter(DOS_OUTPUT_HANDLE, Character);
Pointer[BytesRead++] = Character;
Author: aandrejevic
Date: Tue May 5 03:52:25 2015
New Revision: 67556
URL: http://svn.reactos.org/svn/reactos?rev=67556&view=rev
Log:
[NTVDM]
In DosTerminateProcess, McbSegment is the segment of the MCB itself, not the data
it contains.
Modified:
trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c
Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/…
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c [iso-8859-1] Tue May 5 03:52:25 2015
@@ -839,7 +839,7 @@
if (KeepResident)
{
/* Check if this is the PSP block and we should reduce its size */
- if (McbSegment == Psp && KeepResident < CurrentMcb->Size)
+ if ((McbSegment + 1) == Psp && KeepResident < CurrentMcb->Size)
{
/* Reduce the size of the block */
DosResizeMemory(McbSegment + 1, KeepResident, NULL);