mirror of
https://github.com/reactos/reactos.git
synced 2025-05-10 12:23:25 +00:00
[NTVDM]
- Fix ZF and CF flags setting in function INT 2Fh, AX=1214h. - Use CreateEventW explicitely. - Set the VdmTaskEvent event at startup. This allows user input by default (even if we don't run our own DOS) in NTVDM. Fixes keyboard input not working when testing boot&usage of MSDOS 6. svn path=/trunk/; revision=69339
This commit is contained in:
parent
5c49e6b52e
commit
d65c53b046
3 changed files with 13 additions and 4 deletions
|
@ -1015,7 +1015,7 @@ DWORD DosStartProcess32(IN LPCSTR ExecutablePath,
|
||||||
sizeof(*DosStartProc32.ComSpecInfo));
|
sizeof(*DosStartProc32.ComSpecInfo));
|
||||||
ASSERT(DosStartProc32.ComSpecInfo);
|
ASSERT(DosStartProc32.ComSpecInfo);
|
||||||
|
|
||||||
DosStartProc32.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
|
DosStartProc32.hEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
|
||||||
ASSERT(DosStartProc32.hEvent);
|
ASSERT(DosStartProc32.hEvent);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -2184,8 +2184,16 @@ VOID WINAPI DosInt2Fh(LPWORD Stack)
|
||||||
PVOID PointerFromFarPointer2 = SEG_OFF_TO_PTR(getES(), getDI());
|
PVOID PointerFromFarPointer2 = SEG_OFF_TO_PTR(getES(), getDI());
|
||||||
BOOLEAN AreEqual = (PointerFromFarPointer1 == PointerFromFarPointer2);
|
BOOLEAN AreEqual = (PointerFromFarPointer1 == PointerFromFarPointer2);
|
||||||
|
|
||||||
setZF(AreEqual);
|
if (AreEqual)
|
||||||
setCF(!AreEqual);
|
{
|
||||||
|
Stack[STACK_FLAGS] |= EMULATOR_FLAG_ZF;
|
||||||
|
Stack[STACK_FLAGS] &= ~EMULATOR_FLAG_CF;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Stack[STACK_FLAGS] &= ~EMULATOR_FLAG_ZF;
|
||||||
|
Stack[STACK_FLAGS] |= EMULATOR_FLAG_CF;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -475,7 +475,7 @@ BOOLEAN EmulatorInitialize(HANDLE ConsoleInput, HANDLE ConsoleOutput)
|
||||||
|
|
||||||
/**************** ATTACH INPUT WITH CONSOLE *****************/
|
/**************** ATTACH INPUT WITH CONSOLE *****************/
|
||||||
/* Create the task event */
|
/* Create the task event */
|
||||||
VdmTaskEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
|
VdmTaskEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
|
||||||
ASSERT(VdmTaskEvent != NULL);
|
ASSERT(VdmTaskEvent != NULL);
|
||||||
|
|
||||||
/* Start the input thread */
|
/* Start the input thread */
|
||||||
|
@ -486,6 +486,7 @@ BOOLEAN EmulatorInitialize(HANDLE ConsoleInput, HANDLE ConsoleOutput)
|
||||||
EmulatorCleanup();
|
EmulatorCleanup();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
ResumeEventThread();
|
||||||
/************************************************************/
|
/************************************************************/
|
||||||
|
|
||||||
/* Initialize the VGA */
|
/* Initialize the VGA */
|
||||||
|
|
Loading…
Reference in a new issue