2 Skelton for retropc emulator
5 Author : Takeda.Toshiya
17 #include "../fileio.h"
19 class MC6809 : public DEVICE
26 pair pc; /* Program counter */
27 pair ppc; /* Previous program counter */
28 pair acc; /* Accumulator a and b */
29 pair dp; /* Direct Page register (page in MSB) */
30 pair u, s; /* Stack pointers */
31 pair x, y; /* Index registers */
33 pair ea; /* effective address */
39 inline uint32 RM16(uint32 Addr);
40 inline void WM16(uint32 Addr, pair *p);
43 void run_one_opecode();
45 inline void fetch_effective_address();
47 inline void adca_di();
48 inline void adca_ex();
49 inline void adca_im();
50 inline void adca_ix();
51 inline void adcb_di();
52 inline void adcb_ex();
53 inline void adcb_im();
54 inline void adcb_ix();
55 inline void adda_di();
56 inline void adda_ex();
57 inline void adda_im();
58 inline void adda_ix();
59 inline void addb_di();
60 inline void addb_ex();
61 inline void addb_im();
62 inline void addb_ix();
63 inline void addd_di();
64 inline void addd_ex();
65 inline void addd_im();
66 inline void addd_ix();
67 inline void anda_di();
68 inline void anda_ex();
69 inline void anda_im();
70 inline void anda_ix();
71 inline void andb_di();
72 inline void andb_ex();
73 inline void andb_im();
74 inline void andb_ix();
78 inline void aslcc_in();
93 inline void bita_di();
94 inline void bita_ex();
95 inline void bita_im();
96 inline void bita_ix();
97 inline void bitb_di();
98 inline void bitb_ex();
99 inline void bitb_im();
100 inline void bitb_ix();
116 inline void clr_di();
117 inline void clr_ex();
118 inline void clr_ix();
119 inline void cmpa_di();
120 inline void cmpa_ex();
121 inline void cmpa_im();
122 inline void cmpa_ix();
123 inline void cmpb_di();
124 inline void cmpb_ex();
125 inline void cmpb_im();
126 inline void cmpb_ix();
127 inline void cmpd_di();
128 inline void cmpd_ex();
129 inline void cmpd_im();
130 inline void cmpd_ix();
131 inline void cmps_di();
132 inline void cmps_ex();
133 inline void cmps_im();
134 inline void cmps_ix();
135 inline void cmpu_di();
136 inline void cmpu_ex();
137 inline void cmpu_im();
138 inline void cmpu_ix();
139 inline void cmpx_di();
140 inline void cmpx_ex();
141 inline void cmpx_im();
142 inline void cmpx_ix();
143 inline void cmpy_di();
144 inline void cmpy_ex();
145 inline void cmpy_im();
146 inline void cmpy_ix();
149 inline void com_di();
150 inline void com_ex();
151 inline void com_ix();
156 inline void dcc_di();
157 inline void dcc_ex();
158 inline void dcc_ix();
161 inline void dec_di();
162 inline void dec_ex();
163 inline void dec_ix();
164 inline void eora_di();
165 inline void eora_ex();
166 inline void eora_im();
167 inline void eora_ix();
168 inline void eorb_di();
169 inline void eorb_ex();
170 inline void eorb_im();
171 inline void eorb_ix();
173 inline void flag8_im();
174 inline void flag16_im();
175 inline void illegal();
178 inline void inc_di();
179 inline void inc_ex();
180 inline void inc_ix();
181 inline void jmp_di();
182 inline void jmp_ex();
183 inline void jmp_ix();
184 inline void jsr_di();
185 inline void jsr_ex();
186 inline void jsr_ix();
204 inline void lda_di();
205 inline void lda_ex();
206 inline void lda_im();
207 inline void lda_ix();
208 inline void ldb_di();
209 inline void ldb_ex();
210 inline void ldb_im();
211 inline void ldb_ix();
212 inline void ldd_di();
213 inline void ldd_ex();
214 inline void ldd_im();
215 inline void ldd_ix();
216 inline void lds_di();
217 inline void lds_ex();
218 inline void lds_im();
219 inline void lds_ix();
220 inline void ldu_di();
221 inline void ldu_ex();
222 inline void ldu_im();
223 inline void ldu_ix();
224 inline void ldx_di();
225 inline void ldx_ex();
226 inline void ldx_im();
227 inline void ldx_ix();
228 inline void ldy_di();
229 inline void ldy_ex();
230 inline void ldy_im();
231 inline void ldy_ix();
238 inline void lsr_di();
239 inline void lsr_ex();
240 inline void lsr_ix();
244 inline void neg_di();
245 inline void neg_ex();
246 inline void neg_ix();
249 inline void ngc_di();
250 inline void ngc_ex();
251 inline void ngc_ix();
253 inline void ora_di();
254 inline void ora_ex();
255 inline void ora_im();
256 inline void ora_ix();
257 inline void orb_di();
258 inline void orb_ex();
259 inline void orb_im();
260 inline void orb_ix();
262 inline void pref10();
263 inline void pref11();
270 inline void rol_di();
271 inline void rol_ex();
272 inline void rol_ix();
275 inline void ror_di();
276 inline void ror_ex();
277 inline void ror_ix();
281 inline void sbca_di();
282 inline void sbca_ex();
283 inline void sbca_im();
284 inline void sbca_ix();
285 inline void sbcb_di();
286 inline void sbcb_ex();
287 inline void sbcb_im();
288 inline void sbcb_ix();
290 inline void sta_di();
291 inline void sta_ex();
292 inline void sta_im();
293 inline void sta_ix();
294 inline void stb_di();
295 inline void stb_ex();
296 inline void stb_im();
297 inline void stb_ix();
298 inline void std_di();
299 inline void std_ex();
300 inline void std_im();
301 inline void std_ix();
302 inline void sts_di();
303 inline void sts_ex();
304 inline void sts_im();
305 inline void sts_ix();
306 inline void stu_di();
307 inline void stu_ex();
308 inline void stu_im();
309 inline void stu_ix();
310 inline void stx_di();
311 inline void stx_ex();
312 inline void stx_im();
313 inline void stx_ix();
314 inline void sty_di();
315 inline void sty_ex();
316 inline void sty_im();
317 inline void sty_ix();
318 inline void suba_di();
319 inline void suba_ex();
320 inline void suba_im();
321 inline void suba_ix();
322 inline void subb_di();
323 inline void subb_ex();
324 inline void subb_im();
325 inline void subb_ix();
326 inline void subd_di();
327 inline void subd_ex();
328 inline void subd_im();
329 inline void subd_ix();
338 inline void tst_di();
339 inline void tst_ex();
340 inline void tst_ix();
343 MC6809(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}
349 void write_signal(int id, uint32 data, uint32 mask);
350 void save_state(FILEIO* state_fio);
351 bool load_state(FILEIO* state_fio);
352 void set_extra_clock(int clock)
354 extra_icount += clock;
356 int get_extra_clock()
366 void set_context_mem(DEVICE* device)