#define M68K_FETCHBANK1 (1 << FAMEC_FETCHBITS)\r
\r
//#define M68K_RUNNING 0x01\r
-#define M68K_HALTED 0x80\r
-#define M68K_WAITING 0x04\r
-#define M68K_DISABLE 0x20\r
-#define M68K_FAULTED 0x40\r
-#define M68K_EMULATE_GROUP_0 0x02\r
-#define M68K_EMULATE_TRACE 0x08\r
-#define M68K_DO_TRACE 0x10\r
+#define FM68K_HALTED 0x80\r
+//#define M68K_WAITING 0x04\r
+//#define M68K_DISABLE 0x20\r
+//#define M68K_FAULTED 0x40\r
+#define FM68K_EMULATE_GROUP_0 0x02\r
+#define FM68K_EMULATE_TRACE 0x08\r
+#define FM68K_DO_TRACE 0x10\r
\r
\r
/************************************/\r
/* Data definition */\r
/*******************/\r
\r
-/* M68K registers */\r
-typedef enum {\r
- M68K_REG_D0=0,\r
- M68K_REG_D1,\r
- M68K_REG_D2,\r
- M68K_REG_D3,\r
- M68K_REG_D4,\r
- M68K_REG_D5,\r
- M68K_REG_D6,\r
- M68K_REG_D7,\r
- M68K_REG_A0,\r
- M68K_REG_A1,\r
- M68K_REG_A2,\r
- M68K_REG_A3,\r
- M68K_REG_A4,\r
- M68K_REG_A5,\r
- M68K_REG_A6,\r
- M68K_REG_A7,\r
- M68K_REG_ASP,\r
- M68K_REG_PC,\r
- M68K_REG_SR\r
-} m68k_register;\r
-\r
typedef union\r
{\r
unsigned char B;\r
unsigned short execinfo;\r
// PD extension\r
int io_cycle_counter; // cycles left\r
- unsigned int Fetch[M68K_FETCHBANK1];\r
+\r
+ unsigned int Opcode;\r
+ signed int cycles_needed;\r
+\r
+ unsigned short *PC;\r
+ unsigned long BasePC;\r
+ unsigned int flag_C;\r
+ unsigned int flag_V;\r
+ unsigned int flag_NotZ;\r
+ unsigned int flag_N;\r
+ unsigned int flag_X;\r
+ unsigned int flag_T;\r
+ unsigned int flag_S;\r
+ unsigned int flag_I;\r
+\r
+ unsigned char not_polling;\r
+ unsigned char pad[3];\r
+\r
+ unsigned long Fetch[M68K_FETCHBANK1];\r
} M68K_CONTEXT;\r
\r
extern M68K_CONTEXT *g_m68kcontext;\r
/************************/\r
\r
/* General purpose functions */\r
-void m68k_init(void);\r
-int m68k_reset(void);\r
-int m68k_emulate(int n);\r
+void fm68k_init(void);\r
+int fm68k_reset(void);\r
+int fm68k_emulate(int n, int idle_mode);\r
+int fm68k_would_interrupt(void); // to be called from fm68k_emulate()\r
\r
-unsigned m68k_get_pc(M68K_CONTEXT *context);\r
-unsigned m68k_get_register(M68K_CONTEXT *context, m68k_register reg);\r
-unsigned m68k_set_register(M68K_CONTEXT *context, m68k_register reg, unsigned value);\r
+unsigned fm68k_get_pc(M68K_CONTEXT *context);\r
\r
\r
#ifdef __cplusplus\r