summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/m68000/m68000.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/cpu/m68000/m68000.h')
-rw-r--r--src/emu/cpu/m68000/m68000.h162
1 files changed, 162 insertions, 0 deletions
diff --git a/src/emu/cpu/m68000/m68000.h b/src/emu/cpu/m68000/m68000.h
new file mode 100644
index 00000000000..f90ac95da26
--- /dev/null
+++ b/src/emu/cpu/m68000/m68000.h
@@ -0,0 +1,162 @@
+#ifndef M68000__HEADER
+#define M68000__HEADER
+
+#include "cpuintrf.h"
+
+enum
+{
+ /* NOTE: M68K_SP fetches the current SP, be it USP, ISP, or MSP */
+ M68K_PC=1, M68K_SP, M68K_ISP, M68K_USP, M68K_MSP, M68K_SR, M68K_VBR,
+ M68K_SFC, M68K_DFC, M68K_CACR, M68K_CAAR, M68K_PREF_ADDR, M68K_PREF_DATA,
+ M68K_D0, M68K_D1, M68K_D2, M68K_D3, M68K_D4, M68K_D5, M68K_D6, M68K_D7,
+ M68K_A0, M68K_A1, M68K_A2, M68K_A3, M68K_A4, M68K_A5, M68K_A6, M68K_A7
+};
+
+enum
+{
+ CPUINFO_PTR_M68K_RESET_CALLBACK = CPUINFO_PTR_CPU_SPECIFIC,
+ CPUINFO_PTR_M68K_CMPILD_CALLBACK,
+ CPUINFO_PTR_M68K_RTE_CALLBACK,
+ CPUINFO_PTR_M68K_TAS_CALLBACK
+};
+
+extern int m68k_ICount;
+
+/* Redirect memory calls */
+
+struct m68k_memory_interface
+{
+ offs_t opcode_xor; // Address Calculation
+ UINT8 (*read8)(offs_t); // Normal read 8 bit
+ UINT16 (*read16)(offs_t); // Normal read 16 bit
+ UINT32 (*read32)(offs_t); // Normal read 32 bit
+ void (*write8)(offs_t, UINT8); // Write 8 bit
+ void (*write16)(offs_t, UINT16); // Write 16 bit
+ void (*write32)(offs_t, UINT32); // Write 32 bit
+ void (*changepc)(offs_t); // Change PC
+
+ // For Encrypted Stuff
+
+ UINT8 (*read8pc)(offs_t); // PC Relative read 8 bit
+ UINT16 (*read16pc)(offs_t); // PC Relative read 16 bit
+ UINT32 (*read32pc)(offs_t); // PC Relative read 32 bit
+
+ UINT16 (*read16d)(offs_t); // Direct read 16 bit
+ UINT32 (*read32d)(offs_t); // Direct read 32 bit
+};
+
+struct m68k_encryption_interface
+{
+ UINT8 (*read8pc)(offs_t); // PC Relative read 8 bit
+ UINT16 (*read16pc)(offs_t); // PC Relative read 16 bit
+ UINT32 (*read32pc)(offs_t); // PC Relative read 32 bit
+
+ UINT16 (*read16d)(offs_t); // Direct read 16 bit
+ UINT32 (*read32d)(offs_t); // Direct read 32 bit
+};
+
+/* The MAME API for MC68000 */
+
+#define MC68000_IRQ_1 1
+#define MC68000_IRQ_2 2
+#define MC68000_IRQ_3 3
+#define MC68000_IRQ_4 4
+#define MC68000_IRQ_5 5
+#define MC68000_IRQ_6 6
+#define MC68000_IRQ_7 7
+
+#define MC68000_INT_ACK_AUTOVECTOR -1
+#define MC68000_INT_ACK_SPURIOUS -2
+
+void m68000_get_info(UINT32 state, cpuinfo *info);
+extern void m68000_memory_interface_set(int Entry,void * memory_routine);
+
+/****************************************************************************
+ * M68008 section
+ ****************************************************************************/
+#if HAS_M68008
+#define MC68008_IRQ_1 MC68000_IRQ_1
+#define MC68008_IRQ_2 MC68000_IRQ_2
+#define MC68008_IRQ_3 MC68000_IRQ_3
+#define MC68008_IRQ_4 MC68000_IRQ_4
+#define MC68008_IRQ_5 MC68000_IRQ_5
+#define MC68008_IRQ_6 MC68000_IRQ_6
+#define MC68008_IRQ_7 MC68000_IRQ_7
+#define MC68008_INT_ACK_AUTOVECTOR MC68000_INT_ACK_AUTOVECTOR
+#define MC68008_INT_ACK_SPURIOUS MC68000_INT_ACK_SPURIOUS
+
+void m68008_get_info(UINT32 state, cpuinfo *info);
+#endif
+
+/****************************************************************************
+ * M68010 section
+ ****************************************************************************/
+#if HAS_M68010
+#define MC68010_IRQ_1 MC68000_IRQ_1
+#define MC68010_IRQ_2 MC68000_IRQ_2
+#define MC68010_IRQ_3 MC68000_IRQ_3
+#define MC68010_IRQ_4 MC68000_IRQ_4
+#define MC68010_IRQ_5 MC68000_IRQ_5
+#define MC68010_IRQ_6 MC68000_IRQ_6
+#define MC68010_IRQ_7 MC68000_IRQ_7
+#define MC68010_INT_ACK_AUTOVECTOR MC68000_INT_ACK_AUTOVECTOR
+#define MC68010_INT_ACK_SPURIOUS MC68000_INT_ACK_SPURIOUS
+
+void m68010_get_info(UINT32 state, cpuinfo *info);
+#endif
+
+/****************************************************************************
+ * M68EC020 section
+ ****************************************************************************/
+#if HAS_M68EC020
+#define MC68EC020_IRQ_1 MC68000_IRQ_1
+#define MC68EC020_IRQ_2 MC68000_IRQ_2
+#define MC68EC020_IRQ_3 MC68000_IRQ_3
+#define MC68EC020_IRQ_4 MC68000_IRQ_4
+#define MC68EC020_IRQ_5 MC68000_IRQ_5
+#define MC68EC020_IRQ_6 MC68000_IRQ_6
+#define MC68EC020_IRQ_7 MC68000_IRQ_7
+#define MC68EC020_INT_ACK_AUTOVECTOR MC68000_INT_ACK_AUTOVECTOR
+#define MC68EC020_INT_ACK_SPURIOUS MC68000_INT_ACK_SPURIOUS
+
+void m68ec020_get_info(UINT32 state, cpuinfo *info);
+#endif
+
+/****************************************************************************
+ * M68020 section
+ ****************************************************************************/
+#if HAS_M68020
+#define MC68020_IRQ_1 MC68000_IRQ_1
+#define MC68020_IRQ_2 MC68000_IRQ_2
+#define MC68020_IRQ_3 MC68000_IRQ_3
+#define MC68020_IRQ_4 MC68000_IRQ_4
+#define MC68020_IRQ_5 MC68000_IRQ_5
+#define MC68020_IRQ_6 MC68000_IRQ_6
+#define MC68020_IRQ_7 MC68000_IRQ_7
+#define MC68020_INT_ACK_AUTOVECTOR MC68000_INT_ACK_AUTOVECTOR
+#define MC68020_INT_ACK_SPURIOUS MC68000_INT_ACK_SPURIOUS
+
+void m68020_get_info(UINT32 state, cpuinfo *info);
+#endif
+
+/****************************************************************************
+ * M68040 section
+ ****************************************************************************/
+#if HAS_M68040
+#define MC68040_IRQ_1 MC68000_IRQ_1
+#define MC68040_IRQ_2 MC68000_IRQ_2
+#define MC68040_IRQ_3 MC68000_IRQ_3
+#define MC68040_IRQ_4 MC68000_IRQ_4
+#define MC68040_IRQ_5 MC68000_IRQ_5
+#define MC68040_IRQ_6 MC68000_IRQ_6
+#define MC68040_IRQ_7 MC68000_IRQ_7
+#define MC68040_INT_ACK_AUTOVECTOR MC68000_INT_ACK_AUTOVECTOR
+#define MC68040_INT_ACK_SPURIOUS MC68000_INT_ACK_SPURIOUS
+
+void m68040_get_info(UINT32 state, cpuinfo *info);
+#endif
+
+// C Core header
+#include "m68kmame.h"
+
+#endif /* M68000__HEADER */