* COPYRIGHT: GPL - See COPYING in the top level directory
* PROJECT: ReactOS Virtual DOS Machine
* FILE: emulator.h
- * PURPOSE: Minimal x86 machine emulator for the VDM (header file)
+ * PURPOSE: Minimal x86 machine emulator for the VDM
* PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
*/
#define EMULATOR_FLAG_VIP (1 << 20)
#define EMULATOR_FLAG_ID (1 << 21)
-/* Common definitions */
-#define EMULATOR_BOP 0xC4C4
-#define EMULATOR_INT_BOP 0xFF
-
#define STACK_COUNTER 0
#define STACK_INT_NUM 1
#define STACK_IP 2
EMULATOR_EXCEPTION_PAGE_FAULT
};
-enum
-{
- EMULATOR_REG_AX,
- EMULATOR_REG_CX,
- EMULATOR_REG_DX,
- EMULATOR_REG_BX,
- EMULATOR_REG_SP,
- EMULATOR_REG_BP,
- EMULATOR_REG_SI,
- EMULATOR_REG_DI,
- EMULATOR_REG_ES,
- EMULATOR_REG_CS,
- EMULATOR_REG_SS,
- EMULATOR_REG_DS,
- EMULATOR_REG_FS,
- EMULATOR_REG_GS
-};
-
extern FAST486_STATE EmulatorContext;
/* FUNCTIONS ******************************************************************/
+VOID WINAPI EmulatorReadMemory
+(
+ PFAST486_STATE State,
+ ULONG Address,
+ PVOID Buffer,
+ ULONG Size
+);
+
+VOID WINAPI EmulatorWriteMemory
+(
+ PFAST486_STATE State,
+ ULONG Address,
+ PVOID Buffer,
+ ULONG Size
+);
+
+UCHAR WINAPI EmulatorIntAcknowledge
+(
+ PFAST486_STATE State
+);
+
BOOLEAN EmulatorInitialize(VOID);
-VOID EmulatorSetStack(WORD Segment, DWORD Offset);
VOID EmulatorExecute(WORD Segment, WORD Offset);
VOID EmulatorInterrupt(BYTE Number);
VOID EmulatorInterruptSignal(VOID);
-ULONG EmulatorGetRegister(ULONG Register);
-ULONG EmulatorGetProgramCounter(VOID);
-VOID EmulatorSetRegister(ULONG Register, ULONG Value);
-BOOLEAN EmulatorGetFlag(ULONG Flag);
-VOID EmulatorSetFlag(ULONG Flag);
-VOID EmulatorClearFlag(ULONG Flag);
VOID EmulatorStep(VOID);
VOID EmulatorCleanup(VOID);
VOID EmulatorSetA20(BOOLEAN Enabled);