/* INCLUDES *******************************************************************/
#include "ntvdm.h"
-
-#ifndef NEW_EMULATOR
-#include <softx86.h>
-#include <softx87.h>
-#else
-#include <soft386.h>
-#endif
+#include <fast486.h>
/* DEFINES ********************************************************************/
#define EMULATOR_FLAG_ID (1 << 21)
/* Common definitions */
-#define EMULATOR_BOP 0xC4C4
-#define EMULATOR_INT_BOP 0xBEEF
-#define STACK_INT_NUM 0
-#define STACK_IP 1
-#define STACK_CS 2
-#define STACK_FLAGS 3
+#define EMULATOR_BOP 0xC4C4
+#define EMULATOR_INT_BOP 0xFF
+#define EMULATOR_MAX_BOP_NUM 0xFF + 1
+
+#define STACK_COUNTER 0
+#define STACK_INT_NUM 1
+#define STACK_IP 2
+#define STACK_CS 3
+#define STACK_FLAGS 4
enum
{
EMULATOR_REG_GS
};
-#ifndef NEW_EMULATOR
-extern softx86_ctx EmulatorContext;
-extern softx87_ctx FpuEmulatorContext;
-#else
-extern SOFT386_STATE EmulatorContext;
-#endif
+extern FAST486_STATE EmulatorContext;
/* FUNCTIONS ******************************************************************/
-BOOLEAN EmulatorInitialize();
+VOID WINAPI EmulatorReadMemory
+(
+ PFAST486_STATE State,
+ ULONG Address,
+ PVOID Buffer,
+ ULONG Size
+);
+
+VOID WINAPI EmulatorWriteMemory
+(
+ PFAST486_STATE State,
+ ULONG Address,
+ PVOID Buffer,
+ ULONG Size
+);
+
+VOID WINAPI EmulatorReadIo
+(
+ PFAST486_STATE State,
+ ULONG Port,
+ PVOID Buffer,
+ ULONG DataCount,
+ UCHAR DataSize
+);
+
+VOID WINAPI EmulatorWriteIo
+(
+ PFAST486_STATE State,
+ ULONG Port,
+ PVOID Buffer,
+ ULONG DataCount,
+ UCHAR DataSize
+);
+
+VOID WINAPI EmulatorBiosOperation
+(
+ PFAST486_STATE State,
+ UCHAR BopCode
+);
+
+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 EmulatorExternalInterrupt(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 EmulatorCleanup();
+VOID EmulatorStep(VOID);
+VOID EmulatorCleanup(VOID);
VOID EmulatorSetA20(BOOLEAN Enabled);
#endif // _EMULATOR_H_