[NTVDM]
[reactos.git] / subsystems / ntvdm / emulator.h
index 62895c4..877f01e 100644 (file)
 /* INCLUDES *******************************************************************/
 
 #include "ntvdm.h"
-
-#ifndef NEW_EMULATOR
-#include <softx86.h>
-#include <softx87.h>
-#else
 #include <fast486.h>
-#endif
 
 /* DEFINES ********************************************************************/
 
 #define EMULATOR_FLAG_ID (1 << 21)
 
 /* Common definitions */
-#define EMULATOR_BOP 0xC4C4
-#define EMULATOR_INT_BOP 0xBEEF
-#define STACK_COUNTER 0
-#define STACK_INT_NUM 1
-#define STACK_IP 2
-#define STACK_CS 3
-#define STACK_FLAGS 4
+#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
 {
@@ -86,34 +82,68 @@ enum
     EMULATOR_REG_GS
 };
 
-#ifndef NEW_EMULATOR
-
-#define NTVDMCALL __cdecl
-extern softx86_ctx EmulatorContext;
-extern softx87_ctx FpuEmulatorContext;
-
-#else
-
-#define NTVDMCALL __stdcall
 extern FAST486_STATE EmulatorContext;
 
-#endif
-
 /* 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_