/* INCLUDES *******************************************************************/
#include "ntvdm.h"
-#include <softx86/softx86.h>
-#include <softx86/softx87.h>
+#include <fast486.h>
/* DEFINES ********************************************************************/
+/* FLAGS */
#define EMULATOR_FLAG_CF (1 << 0)
#define EMULATOR_FLAG_PF (1 << 2)
#define EMULATOR_FLAG_AF (1 << 4)
#define EMULATOR_FLAG_VIF (1 << 19)
#define EMULATOR_FLAG_VIP (1 << 20)
#define EMULATOR_FLAG_ID (1 << 21)
-#define SPECIAL_INT_NUM 0xFF
+
+/* Common definitions */
+#define EMULATOR_BOP 0xC4C4
+#define EMULATOR_INT_BOP 0xFF
+
+#define STACK_COUNTER 0
+#define STACK_INT_NUM 1
+#define STACK_IP 2
+#define STACK_CS 3
+#define STACK_FLAGS 4
enum
{
EMULATOR_EXCEPTION_OVERFLOW,
EMULATOR_EXCEPTION_BOUND,
EMULATOR_EXCEPTION_INVALID_OPCODE,
- EMULATOR_EXCEPTION_NO_FPU
+ EMULATOR_EXCEPTION_NO_FPU,
+ EMULATOR_EXCEPTION_DOUBLE_FAULT,
+ EMULATOR_EXCEPTION_FPU_SEGMENT,
+ EMULATOR_EXCEPTION_INVALID_TSS,
+ EMULATOR_EXCEPTION_NO_SEGMENT,
+ EMULATOR_EXCEPTION_STACK_SEGMENT,
+ EMULATOR_EXCEPTION_GPF,
+ EMULATOR_EXCEPTION_PAGE_FAULT
};
enum
EMULATOR_REG_CS,
EMULATOR_REG_SS,
EMULATOR_REG_DS,
+ EMULATOR_REG_FS,
+ EMULATOR_REG_GS
};
+extern FAST486_STATE EmulatorContext;
+
/* FUNCTIONS ******************************************************************/
BOOLEAN EmulatorInitialize();
-VOID EmulatorSetStack(WORD Segment, WORD Offset);
+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 EmulatorCleanup();
VOID EmulatorSetA20(BOOLEAN Enabled);
-#endif
+#endif // _EMULATOR_H_
/* EOF */
-