1 #ifndef M68000__HEADER
2 #define M68000__HEADER
3 
4 #include "osd_cpu.h"
5 
6 enum
7 {
8 	/* NOTE: M68K_SP fetches the current SP, be it USP, ISP, or MSP */
9 	M68K_PC=1, M68K_SP, M68K_ISP, M68K_USP, M68K_MSP, M68K_SR, M68K_VBR,
10 	M68K_SFC, M68K_DFC, M68K_CACR, M68K_CAAR, M68K_PREF_ADDR, M68K_PREF_DATA,
11 	M68K_D0, M68K_D1, M68K_D2, M68K_D3, M68K_D4, M68K_D5, M68K_D6, M68K_D7,
12 	M68K_A0, M68K_A1, M68K_A2, M68K_A3, M68K_A4, M68K_A5, M68K_A6, M68K_A7
13 };
14 
15 /* The MAME API for MC68000 */
16 
17 #define MC68000_INT_NONE 0
18 #define MC68000_IRQ_1    1
19 #define MC68000_IRQ_2    2
20 #define MC68000_IRQ_3    3
21 #define MC68000_IRQ_4    4
22 #define MC68000_IRQ_5    5
23 #define MC68000_IRQ_6    6
24 #define MC68000_IRQ_7    7
25 
26 #define MC68000_INT_ACK_AUTOVECTOR    -1
27 #define MC68000_INT_ACK_SPURIOUS      -2
28 
29 extern void m68000_reset(void *param);
30 extern void m68000_exit(void);
31 extern int	m68000_execute(int cycles);
32 extern unsigned m68000_get_context(void *dst);
33 extern void m68000_set_context(void *src);
34 extern unsigned m68000_get_pc(void);
35 extern void m68000_set_pc(unsigned val);
36 extern unsigned m68000_get_sp(void);
37 extern void m68000_set_sp(unsigned val);
38 extern unsigned m68000_get_reg(int regnum);
39 extern void m68000_set_reg(int regnum, unsigned val);
40 extern void m68000_set_nmi_line(int state);
41 extern void m68000_set_irq_line(int irqline, int state);
42 extern void m68000_set_irq_callback(int (*callback)(int irqline));
43 extern const char *m68000_info(void *context, int regnum);
44 extern unsigned m68000_dasm(char *buffer, unsigned pc);
45 
46 /****************************************************************************
47  * M68010 section
48  ****************************************************************************/
49 #if HAS_M68010
50 #define MC68010_INT_NONE                MC68000_INT_NONE
51 #define MC68010_IRQ_1					MC68000_IRQ_1
52 #define MC68010_IRQ_2					MC68000_IRQ_2
53 #define MC68010_IRQ_3					MC68000_IRQ_3
54 #define MC68010_IRQ_4					MC68000_IRQ_4
55 #define MC68010_IRQ_5					MC68000_IRQ_5
56 #define MC68010_IRQ_6					MC68000_IRQ_6
57 #define MC68010_IRQ_7					MC68000_IRQ_7
58 #define MC68010_INT_ACK_AUTOVECTOR		MC68000_INT_ACK_AUTOVECTOR
59 #define MC68010_INT_ACK_SPURIOUS		MC68000_INT_ACK_SPURIOUS
60 
61 #define m68010_ICount                   m68000_ICount
62 extern void m68010_reset(void *param);
63 extern void m68010_exit(void);
64 extern int	m68010_execute(int cycles);
65 extern unsigned m68010_get_context(void *dst);
66 extern void m68010_set_context(void *src);
67 extern unsigned m68010_get_pc(void);
68 extern void m68010_set_pc(unsigned val);
69 extern unsigned m68010_get_sp(void);
70 extern void m68010_set_sp(unsigned val);
71 extern unsigned m68010_get_reg(int regnum);
72 extern void m68010_set_reg(int regnum, unsigned val);
73 extern void m68010_set_nmi_line(int state);
74 extern void m68010_set_irq_line(int irqline, int state);
75 extern void m68010_set_irq_callback(int (*callback)(int irqline));
76 const char *m68010_info(void *context, int regnum);
77 extern unsigned m68010_dasm(char *buffer, unsigned pc);
78 #endif
79 
80 /****************************************************************************
81  * M68EC020 section
82  ****************************************************************************/
83 #if HAS_M68EC020
84 #define MC68EC020_INT_NONE				MC68000_INT_NONE
85 #define MC68EC020_IRQ_1					MC68000_IRQ_1
86 #define MC68EC020_IRQ_2					MC68000_IRQ_2
87 #define MC68EC020_IRQ_3					MC68000_IRQ_3
88 #define MC68EC020_IRQ_4					MC68000_IRQ_4
89 #define MC68EC020_IRQ_5					MC68000_IRQ_5
90 #define MC68EC020_IRQ_6					MC68000_IRQ_6
91 #define MC68EC020_IRQ_7					MC68000_IRQ_7
92 #define MC68EC020_INT_ACK_AUTOVECTOR	MC68000_INT_ACK_AUTOVECTOR
93 #define MC68EC020_INT_ACK_SPURIOUS		MC68000_INT_ACK_SPURIOUS
94 
95 #define m68ec020_ICount                   m68000_ICount
96 extern void m68ec020_reset(void *param);
97 extern void m68ec020_exit(void);
98 extern int	m68ec020_execute(int cycles);
99 extern unsigned m68ec020_get_context(void *dst);
100 extern void m68ec020_set_context(void *src);
101 extern unsigned m68ec020_get_pc(void);
102 extern void m68ec020_set_pc(unsigned val);
103 extern unsigned m68ec020_get_sp(void);
104 extern void m68ec020_set_sp(unsigned val);
105 extern unsigned m68ec020_get_reg(int regnum);
106 extern void m68ec020_set_reg(int regnum, unsigned val);
107 extern void m68ec020_set_nmi_line(int state);
108 extern void m68ec020_set_irq_line(int irqline, int state);
109 extern void m68ec020_set_irq_callback(int (*callback)(int irqline));
110 const char *m68ec020_info(void *context, int regnum);
111 extern unsigned m68ec020_dasm(char *buffer, unsigned pc);
112 #endif
113 
114 /****************************************************************************
115  * M68020 section
116  ****************************************************************************/
117 #if HAS_M68020
118 #define MC68020_INT_NONE				MC68000_INT_NONE
119 #define MC68020_IRQ_1					MC68000_IRQ_1
120 #define MC68020_IRQ_2					MC68000_IRQ_2
121 #define MC68020_IRQ_3					MC68000_IRQ_3
122 #define MC68020_IRQ_4					MC68000_IRQ_4
123 #define MC68020_IRQ_5					MC68000_IRQ_5
124 #define MC68020_IRQ_6					MC68000_IRQ_6
125 #define MC68020_IRQ_7					MC68000_IRQ_7
126 #define MC68020_INT_ACK_AUTOVECTOR		MC68000_INT_ACK_AUTOVECTOR
127 #define MC68020_INT_ACK_SPURIOUS		MC68000_INT_ACK_SPURIOUS
128 
129 #define m68020_ICount                   m68000_ICount
130 extern void m68020_reset(void *param);
131 extern void m68020_exit(void);
132 extern int	m68020_execute(int cycles);
133 extern unsigned m68020_get_context(void *dst);
134 extern void m68020_set_context(void *src);
135 extern unsigned m68020_get_pc(void);
136 extern void m68020_set_pc(unsigned val);
137 extern unsigned m68020_get_sp(void);
138 extern void m68020_set_sp(unsigned val);
139 extern unsigned m68020_get_reg(int regnum);
140 extern void m68020_set_reg(int regnum, unsigned val);
141 extern void m68020_set_nmi_line(int state);
142 extern void m68020_set_irq_line(int irqline, int state);
143 extern void m68020_set_irq_callback(int (*callback)(int irqline));
144 const char *m68020_info(void *context, int regnum);
145 extern unsigned m68020_dasm(char *buffer, unsigned pc);
146 #endif
147 
148 
149 #ifndef A68KEM
150 
151 /* Handling for C core */
152 #include "m68kmame.h"
153 
154 #endif /* A68KEM */
155 
156 extern int m68000_ICount;
157 
158 
159 #endif /* M68000__HEADER */
160