Start to implement EmulatorSimulate / EmulatorUnsimulate (used by VDDSimulate16 and VDDUnsimualte16). This piece of code can be better written, but it works for what I'm going to commit next.

svn path=/branches/ntvdm/; revision=62282
This commit is contained in:
Hermès Bélusca-Maïto 2014-02-21 19:27:27 +00:00
parent 0b434e7c6c
commit 5a3cc5df3c
4 changed files with 12 additions and 5 deletions

View file

@ -127,7 +127,6 @@ VOID ClockUpdate(VOID)
VgaHorizontalRetrace(); VgaHorizontalRetrace();
/* Continue CPU emulation */ /* Continue CPU emulation */
// EmulatorSimulate();
for (i = 0; (i < STEPS_PER_CYCLE) && VdmRunning; i++) for (i = 0; (i < STEPS_PER_CYCLE) && VdmRunning; i++)
{ {
EmulatorStep(); EmulatorStep();

View file

@ -177,12 +177,18 @@ VOID EmulatorStep(VOID)
VOID EmulatorSimulate(VOID) VOID EmulatorSimulate(VOID)
{ {
UNIMPLEMENTED; // FIXME: Do not mix VdmRunning (i.e. ntvdm running) and CpuSimulate!!
while (VdmRunning) ClockUpdate();
/* This takes into account for reentrance */
VdmRunning = TRUE;
} }
VOID EmulatorUnsimulate(VOID) VOID EmulatorUnsimulate(VOID)
{ {
UNIMPLEMENTED; /* Stop simulation */
// FIXME: Do not mix VdmRunning (i.e. ntvdm running) and CpuSimulate!!
VdmRunning = FALSE;
} }
VOID EmulatorInterrupt(BYTE Number) VOID EmulatorInterrupt(BYTE Number)

View file

@ -118,6 +118,8 @@ VOID EmulatorExecute(WORD Segment, WORD Offset);
VOID EmulatorInterrupt(BYTE Number); VOID EmulatorInterrupt(BYTE Number);
VOID EmulatorInterruptSignal(VOID); VOID EmulatorInterruptSignal(VOID);
VOID EmulatorStep(VOID); VOID EmulatorStep(VOID);
VOID EmulatorSimulate(VOID);
VOID EmulatorUnsimulate(VOID);
VOID EmulatorCleanup(VOID); VOID EmulatorCleanup(VOID);
VOID EmulatorSetA20(BOOLEAN Enabled); VOID EmulatorSetA20(BOOLEAN Enabled);

View file

@ -420,8 +420,8 @@ INT wmain(INT argc, WCHAR *argv[])
goto Cleanup; goto Cleanup;
} }
/* Main loop */ /* Start simulation */
while (VdmRunning) ClockUpdate(); EmulatorSimulate();
/* Perform another screen refresh */ /* Perform another screen refresh */
VgaRefreshDisplay(); VgaRefreshDisplay();