Previous 199869 Revisions Next

r35282 Thursday 26th February, 2015 at 15:11:28 UTC by Olivier Galibert
m68000: New experimental M68000 core [O. Galibert]
[src/emu/cpu]cpu.mak
[src/emu/cpu/m68000x]m68000.c* m68000.h* m68000.lst* m68kmake.py*
[src/mess/drivers]atarist.c
[src/mess/includes]atarist.h
[src/mess/video]atarist.c

trunk/src/emu/cpu/cpu.mak
r243793r243794
16371637$(CPUSRC)/m68000/m68kcpu.h: $(CPUOBJ)/m68000/m68kops.c
16381638
16391639
1640$(CPUOBJ)/m68000x/deco16.inc: $(CPUSRC)/m6502/m6502make.py $(CPUSRC)/m6502/odeco16.lst $(CPUSRC)/m6502/ddeco16.lst
1641   @echo Generating DECO16 source file...
1642   $(PYTHON) $(CPUSRC)/m6502/m6502make.py deco16_device $(CPUSRC)/m6502/odeco16.lst $(CPUSRC)/m6502/ddeco16.lst $@
16401643
1644
16411645#-------------------------------------------------
1646# Motorola 68000, alternative implementation
1647#-------------------------------------------------
1648ifneq ($(filter M680X0,$(CPUS)),)
1649OBJDIRS += $(CPUOBJ)/m68000x
1650CPUOBJS += $(CPUOBJ)/m68000x/m68000.o
1651DASMOBJS +=
1652endif
1653
1654$(CPUOBJ)/m68000x/m68000.o:   $(CPUSRC)/m68000x/m68000.c \
1655                     $(CPUOBJ)/m68000x/m68000.inc \
1656                     $(CPUSRC)/m68000x/m68000.h
1657
1658$(CPUOBJ)/m68000x/m68000.inc: $(CPUSRC)/m68000x/m68kmake.py $(CPUSRC)/m68000x/m68000.lst
1659   @echo Generating M68000 source file...
1660   $(PYTHON) $(CPUSRC)/m68000x/m68kmake.py m68000x_device $(CPUSRC)/m68000x/m68000.lst $@
1661
1662#-------------------------------------------------
16421663# Motorola/Freescale dsp56k
16431664#@src/emu/cpu/dsp56k/dsp56k.h,CPUS += DSP56156
16441665#-------------------------------------------------
trunk/src/emu/cpu/m68000x/m68000.c
r0r243794
1/***************************************************************************
2
3    m68000.c
4
5    Motorola 68000
6
7****************************************************************************
8
9    Copyright Olivier Galibert
10    All rights reserved.
11
12    Redistribution and use in source and binary forms, with or without
13    modification, are permitted provided that the following conditions are
14    met:
15
16        * Redistributions of source code must retain the above copyright
17          notice, this list of conditions and the following disclaimer.
18        * Redistributions in binary form must reproduce the above copyright
19          notice, this list of conditions and the following disclaimer in
20          the documentation and/or other materials provided with the
21          distribution.
22        * Neither the name 'MAME' nor the names of its contributors may be
23          used to endorse or promote products derived from this software
24          without specific prior written permission.
25
26    THIS SOFTWARE IS PROVIDED BY OLIVIER GALIBERT ''AS IS'' AND ANY EXPRESS OR
27    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29    DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
30    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36    POSSIBILITY OF SUCH DAMAGE.
37
38***************************************************************************/
39
40#include "emu.h"
41#include "debugger.h"
42#include "m68000.h"
43
44const device_type M68000x = &device_creator<m68000x_device>;
45
46m68000x_device::m68000x_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
47   cpu_device(mconfig, M68000x, "Motorola 68000", tag, owner, clock, "m68000", __FILE__),
48   program_config("program", ENDIANNESS_BIG, 16, 24)
49{
50}
51
52void m68000x_device::device_start()
53{
54   init();
55}
56
57void m68000x_device::init()
58{
59   program = &space(AS_PROGRAM);
60   direct = &program->direct();
61
62   state_add(STATE_GENPC,     "GENPC",     PPC).noshow();
63   state_add(STATE_GENPCBASE, "GENPCBASE", PPC).noshow();
64   state_add(STATE_GENSP,     "GENSP",     A[7]).noshow();
65   state_add(STATE_GENFLAGS,  "GENFLAGS",  SR).callimport().formatstr("%6s").noshow();
66
67   save_item(NAME(PPC));
68   save_item(NAME(PC));
69   save_item(NAME(D));
70   save_item(NAME(A));
71   save_item(NAME(SR));
72   save_item(NAME(cur_SR));
73   save_item(NAME(USP));
74   save_item(NAME(SSP));
75
76   m_icountptr = &icount;
77
78   inst_state = STATE_RESET;
79   inst_substate = 0;
80   end_cycles = 0;
81
82   memset(D, 0, sizeof(D));
83   memset(A, 0, sizeof(A));
84   SR = 0x2700;
85   cur_SR = 0x2700;
86   PPC = PC = 0;
87   USP = SSP = 0;
88}
89
90void m68000x_device::device_reset()
91{
92   inst_state = STATE_RESET;
93   inst_substate = 0;
94}
95
96
97UINT32 m68000x_device::execute_min_cycles() const
98{
99   return 4;
100}
101
102UINT32 m68000x_device::execute_max_cycles() const
103{
104   return 500;
105}
106
107UINT32 m68000x_device::execute_input_lines() const
108{
109   return 8;
110}
111
112UINT64 m68000x_device::get_cycle()
113{
114   return end_cycles == 0 || icount <= 0 ? machine().time().as_ticks(clock()) : end_cycles - icount;
115}
116
117void m68000x_device::execute_run()
118{
119   end_cycles = machine().time().as_ticks(clock()) + icount;
120   if(inst_substate)
121      do_exec_partial();
122
123   while(icount > 0) {
124      if(inst_state < 0x10000) {
125         PPC = PC;
126         IRD = IR;
127         inst_state = IRD;
128         if(machine().debug_flags & DEBUG_FLAG_ENABLED)
129            debugger_instruction_hook(this, NPC);
130      }
131      int picount = icount;
132      do_exec_full();
133      if(picount == icount) {
134         logerror("Unhandled %04x (%06x)\n", IRD, NPC);
135         debugger_break(machine());
136      }
137   }
138   end_cycles = 0;
139}
140
141void m68000x_device::execute_set_input(int inputnum, int state)
142{
143}
144
145
146const address_space_config *m68000x_device::memory_space_config(address_spacenum spacenum) const
147{
148   return (spacenum == AS_PROGRAM) ? &program_config : NULL;
149}
150
151
152void m68000x_device::state_import(const device_state_entry &entry)
153{
154}
155
156void m68000x_device::state_export(const device_state_entry &entry)
157{
158}
159
160void m68000x_device::state_string_export(const device_state_entry &entry, astring &string)
161{
162}
163
164
165UINT32 m68000x_device::disasm_min_opcode_bytes() const
166{
167   return 2;
168}
169
170UINT32 m68000x_device::disasm_max_opcode_bytes() const
171{
172   return 40;
173}
174
175inline astring m68000x_device::signed_to_str(INT32 v)
176{
177   char buf[32];
178   if(v < -9)
179      sprintf(buf, "-$%x", -v);
180   else if(v < 0)
181      sprintf(buf, "-%x", -v);
182   else if(v < 10)
183      sprintf(buf, "%x", v);
184   else
185      sprintf(buf, "$%x", v);
186   return buf;
187}
188
189inline astring m68000x_device::unsigned_to_str(UINT32 v)
190{
191   char buf[32];
192   if(v < 10)
193      sprintf(buf, "%x", v);
194   else
195      sprintf(buf, "$%x", v);
196   return buf;
197}
198
199astring m68000x_device::dasm_list(UINT16 val, int x)
200{
201   astring res;
202   static const char *regs[16] = {
203      "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7",
204      "a0", "a1", "a2", "a3", "a4", "a5", "a6", "sp"
205   };
206
207   for(int i=0; i<16; i++) {
208      int mode = (val >> (((i-1) & 0x1f) ^ x)) & 1;
209      mode |= ((val >> (i ^ x)) & 1) << 1;
210      mode |= ((val >> ((i+1) ^ x)) & 1) << 2;
211      if(i != 15 && regs[i][0] != regs[i+1][0])
212         mode &= 3;
213      if(i != 0 && regs[i][0] != regs[i-1][0])
214         mode &= 6;
215
216      switch(mode) {
217      case 0: case 1: case 4: case 5: case 7:
218         break;
219      case 2: case 6:
220         if(res != "")
221            res += "/";
222         res += regs[i];
223         break;
224      case 3:
225         res += astring("-") + regs[i];
226         break;
227      }
228   }
229   return res;
230}
231
232astring m68000x_device::dasm_amode(int amode, UINT16 opc, const UINT8 *oprom, int &pos, offs_t pc)
233{
234   char buf[32];
235   switch(amode) {
236   case DASM_ds:
237      sprintf(buf, "d%d", opc & 7);
238      break;
239
240   case DASM_dd:
241      sprintf(buf, "d%d", (opc >> 9) & 7);
242      break;
243
244   case DASM_as:
245      sprintf(buf, "a%d", opc & 7);
246      break;
247
248   case DASM_ad:
249      sprintf(buf, "a%d", (opc >> 9) & 7);
250      break;
251
252   case DASM_ccr:
253      sprintf(buf, "ccr");
254      break;
255
256   case DASM_sr:
257      sprintf(buf, "sr");
258      break;
259
260   case DASM_usp:
261      sprintf(buf, "usp");
262      break;
263
264   case DASM_ais:
265      sprintf(buf, "(a%d)", opc & 7);
266      break;
267
268   case DASM_aid:
269      sprintf(buf, "(a%d)", (opc >> 9) & 7);
270      break;
271
272   case DASM_aips:
273      sprintf(buf, "(a%d)+", opc & 7);
274      break;
275
276   case DASM_aipd:
277      sprintf(buf, "(a%d)+", (opc >> 9) & 7);
278      break;
279
280   case DASM_pais:
281      sprintf(buf, "-(a%d)", opc & 7);
282      break;
283
284   case DASM_paid:
285      sprintf(buf, "-(a%d)", (opc >> 9) & 7);
286      break;
287
288   case DASM_das:
289      sprintf(buf, "%s(a%d)", signed_to_str(INT16((oprom[pos] << 8) | oprom[pos+1])).cstr(), opc & 7);
290      pos += 2;
291      break;
292
293   case DASM_dad:
294      sprintf(buf, "%s(a%d)", signed_to_str(INT16((oprom[pos] << 8) | oprom[pos+1])).cstr(), (opc >> 9) & 7);
295      pos += 2;
296      break;
297
298   case DASM_dais:
299      if(oprom[pos+1])
300         sprintf(buf, "%s(a%d, %c%d.%c)", signed_to_str(INT8(oprom[pos+1])).cstr(), opc & 7, oprom[pos] & 0x80 ? 'a' : 'd', (oprom[pos] >> 4) & 7, oprom[pos] & 8 ? 'l' : 'w');
301      else
302         sprintf(buf, "(a%d, %c%d.%c)", opc & 7, oprom[pos] & 0x80 ? 'a' : 'd', (oprom[pos] >> 4) & 7, oprom[pos] & 8 ? 'l' : 'w');
303      pos += 2;
304      break;
305
306   case DASM_daid:
307      if(oprom[pos+1])
308         sprintf(buf, "%s(a%d, %c%d.%c)", signed_to_str(INT8(oprom[pos+1])).cstr(), (opc >> 9) & 7, oprom[pos] & 0x80 ? 'a' : 'd', (oprom[pos] >> 4) & 7, oprom[pos] & 8 ? 'l' : 'w');
309      else
310         sprintf(buf, "(a%d, %c%d.%c)", (opc >> 9) & 7, oprom[pos] & 0x80 ? 'a' : 'd', (oprom[pos] >> 4) & 7, oprom[pos] & 8 ? 'l' : 'w');
311      pos += 2;
312      break;
313
314   case DASM_adr16:
315      sprintf(buf, "$%x", INT16((oprom[pos] << 8) | oprom[pos+1]));
316      pos += 2;
317      break;
318
319   case DASM_adr32:
320      sprintf(buf, "$%x", (oprom[pos] << 24) | (oprom[pos+1] << 16) | (oprom[pos+2] << 8) | oprom[pos+3]);
321      pos += 4;
322      break;
323
324   case DASM_imm3:
325      sprintf(buf, "#%x", (opc >> 9) & 7 ? (opc >> 9) & 7 : 8);
326      break;
327
328   case DASM_imm4:
329      sprintf(buf, "#%s", unsigned_to_str(opc & 0xf).cstr());
330      break;
331
332   case DASM_imm8:
333      sprintf(buf, "#%s", unsigned_to_str(oprom[pos+1]).cstr());
334      pos += 2;
335      break;
336
337   case DASM_imm8o:
338      sprintf(buf, "#%s", signed_to_str(INT8(opc)).cstr());
339      break;
340
341   case DASM_imm12:
342      sprintf(buf, "#$%03x", opc & 0xfff);
343      break;
344
345   case DASM_imm16:
346      sprintf(buf, "#%s", signed_to_str(INT16((oprom[pos] << 8) | oprom[pos+1])).cstr());
347      pos += 2;
348      break;
349
350   case DASM_i16u:
351      sprintf(buf, "#$%04x", (oprom[pos] << 8) | oprom[pos+1]);
352      pos += 2;
353      break;
354
355   case DASM_imm32:
356      sprintf(buf, "#%s", unsigned_to_str((oprom[pos] << 24) | (oprom[pos+1] << 16) | (oprom[pos+2] << 8) | oprom[pos+3]).cstr());
357      pos += 4;
358      break;
359
360   case DASM_rel8:
361      if(opc & 0xff)
362         sprintf(buf, "$%x", pc + pos + INT8(opc));
363      else {
364         sprintf(buf, "$%x", pc + pos + INT16((oprom[pos] << 8) | oprom[pos+1]));
365         pos += 2;
366      }
367      break;
368
369   case DASM_rel16:
370      sprintf(buf, "$%x", pc + pos + INT16((oprom[pos] << 8) | oprom[pos+1]));
371      pos += 2;
372      break;
373
374   case DASM_dpc:
375      sprintf(buf, "$%x(pc)", pc + pos + INT16((oprom[pos] << 8) | oprom[pos+1]));
376      pos += 2;
377      break;
378
379   case DASM_dpci:
380      sprintf(buf, "$%x(pc, %c%d.%c)", pc + pos + INT8(oprom[pos+1]), oprom[pos] & 0x80 ? 'a' : 'd', (oprom[pos] >> 4) & 7, oprom[pos] & 8 ? 'l' : 'w');
381      pos += 2;
382      break;
383
384   case DASM_list:
385      sprintf(buf, "%s", dasm_list((oprom[2] << 8) | oprom[3], 0x0).cstr());
386      break;
387
388   case DASM_listp:
389      sprintf(buf, "%s", dasm_list((oprom[2] << 8) | oprom[3], 0xf).cstr());
390      break;
391
392   default:
393      sprintf(buf, "?");
394   }
395   return buf;
396}
397
398offs_t m68000x_device::disassemble_generic(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options, const disasm_entry *table)
399{
400   UINT16 opc = (oprom[0] << 8) | oprom[1];
401   int slot;
402   for(slot=0; table[slot].opcode && ((opc & table[slot].mask) != table[slot].compare); slot++);
403   if(!table[slot].opcode) {
404      sprintf(buffer, "dc.w %04x", opc);
405      return DASMFLAG_SUPPORTED|2;
406   }
407
408   int pos = 2;
409   buffer += sprintf(buffer, "%s", table[slot].opcode);
410
411   if(table[slot].amode1 == DASM_list || table[slot].amode1 == DASM_listp ||
412      table[slot].amode2 == DASM_list)
413      pos += 2;
414
415   if(table[slot].amode1 != DASM_none)
416      buffer += sprintf(buffer, " %s", dasm_amode(table[slot].amode1, opc, oprom, pos, pc).cstr());
417
418   if(table[slot].amode2 != DASM_none)
419      buffer += sprintf(buffer, ", %s", dasm_amode(table[slot].amode2, opc, oprom, pos, pc).cstr());
420
421   return DASMFLAG_SUPPORTED | table[slot].flags | pos;
422}
423
424offs_t m68000x_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
425{
426   return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries);
427}
428
429void m68000x_device::check_stack()
430{
431   if((SR ^ cur_SR) & F_S) {
432      cur_SR = SR;
433      if(SR & F_S) {
434         USP = A[7];
435         A[7] = SSP;
436      } else {
437         SSP = A[7];
438         A[7] = USP;
439      }
440   }
441}
442
443void m68000x_device::do_cmp32(UINT32 a, UINT32 b)
444{
445   logerror("Compare %08x %08x\n", a, b);
446}
447
448UINT16 m68000x_device::read16p(UINT32 adr)
449{
450   UINT16 res = direct->read_decrypted_word(adr);
451   logerror("%s: read16p %08x, %04x\n", tag(), adr, res);
452   icount -= 4;
453   return res;
454}
455
456UINT16 m68000x_device::read16d(UINT32 adr)
457{
458   UINT16 res = program->read_word(adr);
459   logerror("%s: read16d %08x, %04x\n", tag(), adr, res);
460   icount -= 4;
461   return res;
462}
463
464void m68000x_device::do_exec_partial()
465{
466}
467
468#include "cpu/m68000x/m68000.inc"
trunk/src/emu/cpu/m68000x/m68000.h
r0r243794
1/***************************************************************************
2
3    m68000.h
4
5    Motorola 68000
6
7****************************************************************************
8
9    Copyright Olivier Galibert
10    All rights reserved.
11
12    Redistribution and use in source and binary forms, with or without
13    modification, are permitted provided that the following conditions are
14    met:
15
16        * Redistributions of source code must retain the above copyright
17          notice, this list of conditions and the following disclaimer.
18        * Redistributions in binary form must reproduce the above copyright
19          notice, this list of conditions and the following disclaimer in
20          the documentation and/or other materials provided with the
21          distribution.
22        * Neither the name 'MAME' nor the names of its contributors may be
23          used to endorse or promote products derived from this software
24          without specific prior written permission.
25
26    THIS SOFTWARE IS PROVIDED BY OLIVIER GALIBERT ''AS IS'' AND ANY EXPRESS OR
27    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29    DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
30    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36    POSSIBILITY OF SUCH DAMAGE.
37
38***************************************************************************/
39
40#ifndef __M68000x_H__
41#define __M68000x_H__
42
43class m68000x_device : public cpu_device {
44public:
45   m68000x_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
46
47   UINT64 get_cycle();
48
49protected:
50   struct disasm_entry {
51      const char *opcode;
52      UINT16 mask, compare;
53      int amode1, amode2;
54      offs_t flags;
55   };
56
57   enum {
58      DASM_none,
59
60      DASM_ds,   // data register in source pos
61      DASM_dd,   // data register in destination pos
62
63      DASM_as,   // address register in source pos
64      DASM_ad,   // address register in destination pos
65
66      DASM_ccr,   // control register (low 8 bits of sr)
67      DASM_sr,   // status register
68      DASM_usp,   // user stack pointer
69
70      DASM_ais,   // address register indirect in source pos
71      DASM_aid,   // address register indirect in destination pos
72
73      DASM_aips,   // address register indirect post increment in source pos
74      DASM_aipd,   // address register indirect post increment in destination pos
75
76      DASM_pais,   // address register indirect pre decrement in source pos
77      DASM_paid,   // address register indirect pre decrement in destination pos
78
79      DASM_das,   // address register indirect 16 bits displacement in source pos
80      DASM_dad,   // address register indirect 16 bits displacement in destination pos
81
82      DASM_dais,   // address register indirect indexed in source pos
83      DASM_daid,   // address register indirect indexed in destination pos
84
85      DASM_adr16,   // 16 bits absolute address
86      DASM_adr32,   // 32 bits absolute address
87
88      DASM_imm3,   // immediate 3 bits (in-opcode, shifts, addq, subq)
89      DASM_imm4,   // immediate 4 bits (in-opcode, trap)
90      DASM_imm8,   // immediate 8 bits
91      DASM_imm8o,   // immediate 8 bits in-opcode (moveq)
92      DASM_imm12,   // immediate 12 bits (in-opcode, linea/f)
93      DASM_imm16,   // immediate 16 bits
94      DASM_i16u,   // immediate 16 bits unsigned (sr, stop)
95      DASM_imm32,   // immediate 32 bits
96
97      DASM_rel8,   // pc relative with 8/16 bits displacement (branches)
98      DASM_rel16,   // pc relative with 16 bits displacement (branches)
99      DASM_dpc,   // pc + 16 bits displacement
100      DASM_dpci,   // pc indexed
101
102      DASM_list,  // list of registers
103      DASM_listp, // inverted list of registers for predecrementation
104   };
105
106   enum {
107      STATE_RESET = 0x10000,
108   };
109
110   enum {
111      F_C = 0x0001,
112      F_V = 0x0002,
113      F_Z = 0x0004,
114      F_N = 0x0008,
115      F_X = 0x0010,
116      F_I = 0x0700,
117      F_S = 0x2000,
118      F_T = 0x8000,
119   };
120
121   virtual void init();
122
123   // device-level overrides
124   virtual void device_start();
125   virtual void device_reset();
126
127   // device_execute_interface overrides
128   virtual UINT32 execute_min_cycles() const;
129   virtual UINT32 execute_max_cycles() const;
130   virtual UINT32 execute_input_lines() const;
131   virtual void execute_run();
132   virtual void execute_set_input(int inputnum, int state);
133
134   // device_memory_interface overrides
135   virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
136
137   // device_state_interface overrides
138   virtual void state_import(const device_state_entry &entry);
139   virtual void state_export(const device_state_entry &entry);
140   virtual void state_string_export(const device_state_entry &entry, astring &string);
141
142   // device_disasm_interface overrides
143   virtual UINT32 disasm_min_opcode_bytes() const;
144   virtual UINT32 disasm_max_opcode_bytes() const;
145   virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
146
147   address_space_config program_config;
148   address_space *program;
149   direct_read_data *direct;
150
151   UINT32 PPC;                    /* previous program counter */
152   UINT32 NPC;                    /* next start-of-instruction program counter */
153   UINT32 PC;                     /* program counter */
154   UINT16 SR;
155   UINT16 IR, IRC, IRD;
156   UINT32 D[8], A[8];
157   UINT32 USP, SSP;
158
159   UINT32 OP1, OP2, TMP1;
160
161   int inst_state, inst_substate;
162   int icount;
163   UINT64 end_cycles;
164   UINT16 cur_SR;
165
166   static const disasm_entry disasm_entries[];
167
168   offs_t disassemble_generic(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options, const disasm_entry *entries);
169
170   static inline astring unsigned_to_str(UINT32 v);
171   static inline astring signed_to_str(INT32 v);
172   static astring dasm_list(UINT16 val, int x);
173   static astring dasm_amode(int amode, UINT16 opc, const UINT8 *oprom, int &pos, offs_t pc);
174
175   virtual void do_exec_full();
176   virtual void do_exec_partial();
177
178   void check_stack();
179   UINT16 read16d(UINT32 adr);
180   UINT16 read16p(UINT32 adr);
181
182   void do_cmp32(UINT32 a, UINT32 b);
183
184#define O(o) void o ## _full(); void o ## _partial()
185
186   O(abcd_ds_dd); O(abcd_pais_paid);
187   O(add_b_adr16_dd); O(add_b_adr32_dd); O(add_b_aips_dd); O(add_b_ais_dd); O(add_b_dais_dd); O(add_b_das_dd); O(add_b_dd_adr16); O(add_b_dd_adr32); O(add_b_dd_aips); O(add_b_dd_ais); O(add_b_dd_dais); O(add_b_dd_das); O(add_b_dd_pais); O(add_b_dpc_dd); O(add_b_dpci_dd); O(add_b_ds_dd); O(add_b_imm8_dd); O(add_b_pais_dd);
188   O(add_l_adr16_dd); O(add_l_adr32_dd); O(add_l_aips_dd); O(add_l_ais_dd); O(add_l_as_dd); O(add_l_dais_dd); O(add_l_das_dd); O(add_l_dd_adr16); O(add_l_dd_adr32); O(add_l_dd_aips); O(add_l_dd_ais); O(add_l_dd_dais); O(add_l_dd_das); O(add_l_dd_pais); O(add_l_dpc_dd); O(add_l_dpci_dd); O(add_l_ds_dd); O(add_l_imm32_dd); O(add_l_pais_dd);
189   O(add_w_adr16_dd); O(add_w_adr32_dd); O(add_w_aips_dd); O(add_w_ais_dd); O(add_w_as_dd); O(add_w_dais_dd); O(add_w_das_dd); O(add_w_dd_adr16); O(add_w_dd_adr32); O(add_w_dd_aips); O(add_w_dd_ais); O(add_w_dd_dais); O(add_w_dd_das); O(add_w_dd_pais); O(add_w_dpc_dd); O(add_w_dpci_dd); O(add_w_ds_dd); O(add_w_imm16_dd); O(add_w_pais_dd);
190   O(adda_l_adr16_ad); O(adda_l_adr32_ad); O(adda_l_aips_ad); O(adda_l_ais_ad); O(adda_l_as_ad); O(adda_l_dais_ad); O(adda_l_das_ad); O(adda_l_dpc_ad); O(adda_l_dpci_ad); O(adda_l_ds_ad); O(adda_l_imm32_ad); O(adda_l_pais_ad);
191   O(adda_w_adr16_ad); O(adda_w_adr32_ad); O(adda_w_aips_ad); O(adda_w_ais_ad); O(adda_w_as_ad); O(adda_w_dais_ad); O(adda_w_das_ad); O(adda_w_dpc_ad); O(adda_w_dpci_ad); O(adda_w_ds_ad); O(adda_w_imm16_ad); O(adda_w_pais_ad);
192   O(addi_b_imm8_adr16); O(addi_b_imm8_adr32); O(addi_b_imm8_aips); O(addi_b_imm8_ais); O(addi_b_imm8_dais); O(addi_b_imm8_das); O(addi_b_imm8_ds); O(addi_b_imm8_pais);
193   O(addi_l_imm32_adr16); O(addi_l_imm32_adr32); O(addi_l_imm32_aips); O(addi_l_imm32_ais); O(addi_l_imm32_dais); O(addi_l_imm32_das); O(addi_l_imm32_ds); O(addi_l_imm32_pais);
194   O(addi_w_imm16_adr16); O(addi_w_imm16_adr32); O(addi_w_imm16_aips); O(addi_w_imm16_ais); O(addi_w_imm16_dais); O(addi_w_imm16_das); O(addi_w_imm16_ds); O(addi_w_imm16_pais);
195   O(addq_b_imm3_adr16); O(addq_b_imm3_adr32); O(addq_b_imm3_aips); O(addq_b_imm3_ais); O(addq_b_imm3_as); O(addq_b_imm3_dais); O(addq_b_imm3_das); O(addq_b_imm3_ds); O(addq_b_imm3_pais);
196   O(addq_l_imm3_adr16); O(addq_l_imm3_adr32); O(addq_l_imm3_aips); O(addq_l_imm3_ais); O(addq_l_imm3_as); O(addq_l_imm3_dais); O(addq_l_imm3_das); O(addq_l_imm3_ds); O(addq_l_imm3_pais);
197   O(addq_w_imm3_adr16); O(addq_w_imm3_adr32); O(addq_w_imm3_aips); O(addq_w_imm3_ais); O(addq_w_imm3_as); O(addq_w_imm3_dais); O(addq_w_imm3_das); O(addq_w_imm3_ds); O(addq_w_imm3_pais);
198   O(addx_b_ds_dd); O(addx_b_pais_paid); O(addx_l_ds_dd); O(addx_l_pais_paid); O(addx_w_ds_dd); O(addx_w_pais_paid);
199   O(and_b_adr16_dd); O(and_b_adr32_dd); O(and_b_aips_dd); O(and_b_ais_dd); O(and_b_dais_dd); O(and_b_das_dd); O(and_b_dd_adr16); O(and_b_dd_adr32); O(and_b_dd_aips); O(and_b_dd_ais); O(and_b_dd_dais); O(and_b_dd_das); O(and_b_dd_pais); O(and_b_dpc_dd); O(and_b_dpci_dd); O(and_b_ds_dd); O(and_b_imm8_dd); O(and_b_pais_dd);
200   O(and_l_adr16_dd); O(and_l_adr32_dd); O(and_l_aips_dd); O(and_l_ais_dd); O(and_l_dais_dd); O(and_l_das_dd); O(and_l_dd_adr16); O(and_l_dd_adr32); O(and_l_dd_aips); O(and_l_dd_ais); O(and_l_dd_dais); O(and_l_dd_das); O(and_l_dd_pais); O(and_l_dpc_dd); O(and_l_dpci_dd); O(and_l_ds_dd); O(and_l_imm32_dd); O(and_l_pais_dd);
201   O(and_w_adr16_dd); O(and_w_adr32_dd); O(and_w_aips_dd); O(and_w_ais_dd); O(and_w_dais_dd); O(and_w_das_dd); O(and_w_dd_adr16); O(and_w_dd_adr32); O(and_w_dd_aips); O(and_w_dd_ais); O(and_w_dd_dais); O(and_w_dd_das); O(and_w_dd_pais); O(and_w_dpc_dd); O(and_w_dpci_dd); O(and_w_ds_dd); O(and_w_imm16_dd); O(and_w_pais_dd);
202   O(andi_b_imm8_adr16); O(andi_b_imm8_adr32); O(andi_b_imm8_aips); O(andi_b_imm8_ais); O(andi_b_imm8_dais); O(andi_b_imm8_das); O(andi_b_imm8_ds); O(andi_b_imm8_pais); O(andi_i16u_sr);
203   O(andi_imm8_ccr);
204   O(andi_l_imm32_adr16); O(andi_l_imm32_adr32); O(andi_l_imm32_aips); O(andi_l_imm32_ais); O(andi_l_imm32_dais); O(andi_l_imm32_das); O(andi_l_imm32_ds); O(andi_l_imm32_pais);
205   O(andi_w_imm16_adr16); O(andi_w_imm16_adr32); O(andi_w_imm16_aips); O(andi_w_imm16_ais); O(andi_w_imm16_dais); O(andi_w_imm16_das); O(andi_w_imm16_ds); O(andi_w_imm16_pais);
206   O(asl_adr16); O(asl_adr32); O(asl_aips); O(asl_ais); O(asl_b_dd_ds); O(asl_b_imm3_ds); O(asl_dais); O(asl_das); O(asl_l_dd_ds); O(asl_l_imm3_ds); O(asl_pais); O(asl_w_dd_ds); O(asl_w_imm3_ds);
207   O(asr_adr16); O(asr_adr32); O(asr_aips); O(asr_ais); O(asr_b_dd_ds); O(asr_b_imm3_ds); O(asr_dais); O(asr_das); O(asr_l_dd_ds); O(asr_l_imm3_ds); O(asr_pais); O(asr_w_dd_ds); O(asr_w_imm3_ds);
208   O(bcc_rel8);
209   O(bchg_dd_adr16); O(bchg_dd_adr32); O(bchg_dd_aips); O(bchg_dd_ais); O(bchg_dd_dais); O(bchg_dd_das); O(bchg_dd_ds); O(bchg_dd_pais); O(bchg_imm8_adr16); O(bchg_imm8_adr32); O(bchg_imm8_aips); O(bchg_imm8_ais); O(bchg_imm8_dais); O(bchg_imm8_das); O(bchg_imm8_ds); O(bchg_imm8_pais);
210   O(bclr_dd_adr16); O(bclr_dd_adr32); O(bclr_dd_aips); O(bclr_dd_ais); O(bclr_dd_dais); O(bclr_dd_das); O(bclr_dd_ds); O(bclr_dd_pais); O(bclr_imm8_adr16); O(bclr_imm8_adr32); O(bclr_imm8_aips); O(bclr_imm8_ais); O(bclr_imm8_dais); O(bclr_imm8_das); O(bclr_imm8_ds); O(bclr_imm8_pais);
211   O(bcs_rel8); O(beq_rel8); O(bge_rel8); O(bgt_rel8); O(bhi_rel8); O(ble_rel8); O(bls_rel8); O(blt_rel8); O(bmi_rel8); O(bne_rel8); O(bpl_rel8); O(bra_rel8);
212   O(bset_dd_adr16); O(bset_dd_adr32); O(bset_dd_aips); O(bset_dd_ais); O(bset_dd_dais); O(bset_dd_das); O(bset_dd_ds); O(bset_dd_pais); O(bset_imm8_adr16); O(bset_imm8_adr32); O(bset_imm8_aips); O(bset_imm8_ais); O(bset_imm8_dais); O(bset_imm8_das); O(bset_imm8_ds); O(bset_imm8_pais);
213   O(bsr_rel8);
214   O(btst_dd_adr16); O(btst_dd_adr32); O(btst_dd_aips); O(btst_dd_ais); O(btst_dd_dais); O(btst_dd_das); O(btst_dd_dpc); O(btst_dd_dpci); O(btst_dd_ds); O(btst_dd_pais); O(btst_imm8_adr16); O(btst_imm8_adr32); O(btst_imm8_aips); O(btst_imm8_ais); O(btst_imm8_dais); O(btst_imm8_das); O(btst_imm8_dpc); O(btst_imm8_dpci); O(btst_imm8_ds); O(btst_imm8_pais);
215   O(bvc_rel8); O(bvs_rel8);
216   O(clr_b_adr16); O(clr_b_adr32); O(clr_b_aips); O(clr_b_ais); O(clr_b_dais); O(clr_b_das); O(clr_b_ds); O(clr_b_pais);
217   O(clr_l_adr16); O(clr_l_adr32); O(clr_l_aips); O(clr_l_ais); O(clr_l_dais); O(clr_l_das); O(clr_l_ds); O(clr_l_pais);
218   O(clr_w_adr16); O(clr_w_adr32); O(clr_w_aips); O(clr_w_ais); O(clr_w_dais); O(clr_w_das); O(clr_w_ds); O(clr_w_pais);
219   O(cmp_b_adr16_dd); O(cmp_b_adr32_dd); O(cmp_b_aips_dd); O(cmp_b_ais_dd); O(cmp_b_dais_dd); O(cmp_b_das_dd); O(cmp_b_dpc_dd); O(cmp_b_dpci_dd); O(cmp_b_ds_dd); O(cmp_b_imm8_dd); O(cmp_b_pais_dd);
220   O(cmp_l_adr16_dd); O(cmp_l_adr32_dd); O(cmp_l_aips_dd); O(cmp_l_ais_dd); O(cmp_l_as_dd); O(cmp_l_dais_dd); O(cmp_l_das_dd); O(cmp_l_dpc_dd); O(cmp_l_dpci_dd); O(cmp_l_ds_dd); O(cmp_l_imm32_dd); O(cmp_l_pais_dd);
221   O(cmp_w_adr16_dd); O(cmp_w_adr32_dd); O(cmp_w_aips_dd); O(cmp_w_ais_dd); O(cmp_w_as_dd); O(cmp_w_dais_dd); O(cmp_w_das_dd); O(cmp_w_dpc_dd); O(cmp_w_dpci_dd); O(cmp_w_ds_dd); O(cmp_w_imm16_dd); O(cmp_w_pais_dd);
222   O(cmpa_l_adr16_ad); O(cmpa_l_adr32_ad); O(cmpa_l_aips_ad); O(cmpa_l_ais_ad); O(cmpa_l_as_ad); O(cmpa_l_dais_ad); O(cmpa_l_das_ad); O(cmpa_l_dpc_ad); O(cmpa_l_dpci_ad); O(cmpa_l_ds_ad); O(cmpa_l_imm32_ad); O(cmpa_l_pais_ad);
223   O(cmpa_w_adr16_ad); O(cmpa_w_adr32_ad); O(cmpa_w_aips_ad); O(cmpa_w_ais_ad); O(cmpa_w_as_ad); O(cmpa_w_dais_ad); O(cmpa_w_das_ad); O(cmpa_w_dpc_ad); O(cmpa_w_dpci_ad); O(cmpa_w_ds_ad); O(cmpa_w_imm16_ad); O(cmpa_w_pais_ad);
224   O(cmpi_b_imm8_adr16); O(cmpi_b_imm8_adr32); O(cmpi_b_imm8_aips); O(cmpi_b_imm8_ais); O(cmpi_b_imm8_dais); O(cmpi_b_imm8_das); O(cmpi_b_imm8_ds); O(cmpi_b_imm8_pais);
225   O(cmpi_l_imm32_adr16); O(cmpi_l_imm32_adr32); O(cmpi_l_imm32_aips); O(cmpi_l_imm32_ais); O(cmpi_l_imm32_dais); O(cmpi_l_imm32_das); O(cmpi_l_imm32_ds); O(cmpi_l_imm32_pais);
226   O(cmpi_w_imm16_adr16); O(cmpi_w_imm16_adr32); O(cmpi_w_imm16_aips); O(cmpi_w_imm16_ais); O(cmpi_w_imm16_dais); O(cmpi_w_imm16_das); O(cmpi_w_imm16_ds); O(cmpi_w_imm16_pais);
227   O(cmpm_b_aips_aipd); O(cmpm_l_aips_aipd); O(cmpm_w_aips_aipd);
228   O(dbcc_ds_rel16); O(dbcs_ds_rel16); O(dbeq_ds_rel16); O(dbge_ds_rel16); O(dbgt_ds_rel16); O(dbhi_ds_rel16); O(dble_ds_rel16); O(dbls_ds_rel16); O(dblt_ds_rel16); O(dbmi_ds_rel16); O(dbne_ds_rel16); O(dbpl_ds_rel16); O(dbra_ds_rel16); O(dbt_ds_rel16); O(dbvc_ds_rel16); O(dbvs_ds_rel16);
229   O(divs_w_adr16_dd); O(divs_w_adr32_dd); O(divs_w_aips_dd); O(divs_w_ais_dd); O(divs_w_dais_dd); O(divs_w_das_dd); O(divs_w_dpc_dd); O(divs_w_dpci_dd); O(divs_w_ds_dd); O(divs_w_imm16_dd); O(divs_w_pais_dd);
230   O(divu_w_adr16_dd); O(divu_w_adr32_dd); O(divu_w_aips_dd); O(divu_w_ais_dd); O(divu_w_dais_dd); O(divu_w_das_dd); O(divu_w_dpc_dd); O(divu_w_dpci_dd); O(divu_w_ds_dd); O(divu_w_imm16_dd); O(divu_w_pais_dd);
231   O(eor_b_dd_adr16); O(eor_b_dd_adr32); O(eor_b_dd_aips); O(eor_b_dd_ais); O(eor_b_dd_dais); O(eor_b_dd_das); O(eor_b_dd_ds); O(eor_b_dd_pais);
232   O(eor_l_dd_adr16); O(eor_l_dd_adr32); O(eor_l_dd_aips); O(eor_l_dd_ais); O(eor_l_dd_dais); O(eor_l_dd_das); O(eor_l_dd_ds); O(eor_l_dd_pais);
233   O(eor_w_dd_adr16); O(eor_w_dd_adr32); O(eor_w_dd_aips); O(eor_w_dd_ais); O(eor_w_dd_dais); O(eor_w_dd_das); O(eor_w_dd_ds); O(eor_w_dd_pais);
234   O(eori_b_imm8_adr16); O(eori_b_imm8_adr32); O(eori_b_imm8_aips); O(eori_b_imm8_ais); O(eori_b_imm8_dais); O(eori_b_imm8_das); O(eori_b_imm8_ds); O(eori_b_imm8_pais);
235   O(eori_i16u_sr); O(eori_imm8_ccr);
236   O(eori_l_imm32_adr16); O(eori_l_imm32_adr32); O(eori_l_imm32_aips); O(eori_l_imm32_ais); O(eori_l_imm32_dais); O(eori_l_imm32_das); O(eori_l_imm32_ds); O(eori_l_imm32_pais);
237   O(eori_w_imm16_adr16); O(eori_w_imm16_adr32); O(eori_w_imm16_aips); O(eori_w_imm16_ais); O(eori_w_imm16_dais); O(eori_w_imm16_das); O(eori_w_imm16_ds); O(eori_w_imm16_pais);
238   O(exg_ad_as); O(exg_dd_as); O(exg_dd_ds);
239   O(ext_l_ds); O(ext_w_ds);
240   O(illegal);
241   O(jmp_adr16); O(jmp_adr32); O(jmp_ais); O(jmp_dais); O(jmp_das); O(jmp_dpc); O(jmp_dpci);
242   O(jsr_adr16); O(jsr_adr32); O(jsr_ais); O(jsr_dais); O(jsr_das); O(jsr_dpc); O(jsr_dpci);
243   O(lea_adr16_ad); O(lea_adr32_ad); O(lea_ais_ad); O(lea_dais_ad); O(lea_das_ad); O(lea_dpc_ad); O(lea_dpci_ad);
244   O(linea_imm12); O(linef_imm12);
245   O(link_as_imm16);
246   O(lsl_adr16); O(lsl_adr32); O(lsl_aips); O(lsl_ais); O(lsl_b_dd_ds); O(lsl_b_imm3_ds); O(lsl_dais); O(lsl_das); O(lsl_l_dd_ds); O(lsl_l_imm3_ds); O(lsl_pais); O(lsl_w_dd_ds); O(lsl_w_imm3_ds);
247   O(lsr_adr16); O(lsr_adr32); O(lsr_aips); O(lsr_ais); O(lsr_b_dd_ds); O(lsr_b_imm3_ds); O(lsr_dais); O(lsr_das); O(lsr_l_dd_ds); O(lsr_l_imm3_ds); O(lsr_pais); O(lsr_w_dd_ds); O(lsr_w_imm3_ds);
248   O(move_adr16_ccr); O(move_adr16_sr); O(move_adr32_ccr); O(move_adr32_sr); O(move_aips_ccr); O(move_aips_sr); O(move_ais_ccr); O(move_ais_sr); O(move_as_usp);
249   O(move_b_adr16_adr16); O(move_b_adr16_adr32); O(move_b_adr16_aid); O(move_b_adr16_aipd); O(move_b_adr16_dad); O(move_b_adr16_daid); O(move_b_adr16_dd); O(move_b_adr16_paid);
250   O(move_b_adr32_adr16); O(move_b_adr32_adr32); O(move_b_adr32_aid); O(move_b_adr32_aipd); O(move_b_adr32_dad); O(move_b_adr32_daid); O(move_b_adr32_dd); O(move_b_adr32_paid);
251   O(move_b_aips_adr16); O(move_b_aips_adr32); O(move_b_aips_aid); O(move_b_aips_aipd); O(move_b_aips_dad); O(move_b_aips_daid); O(move_b_aips_dd); O(move_b_aips_paid);
252   O(move_b_ais_adr16); O(move_b_ais_adr32); O(move_b_ais_aid); O(move_b_ais_aipd); O(move_b_ais_dad); O(move_b_ais_daid); O(move_b_ais_dd); O(move_b_ais_paid);
253   O(move_b_dais_adr16); O(move_b_dais_adr32); O(move_b_dais_aid); O(move_b_dais_aipd); O(move_b_dais_dad); O(move_b_dais_daid); O(move_b_dais_dd); O(move_b_dais_paid);
254   O(move_b_das_adr16); O(move_b_das_adr32); O(move_b_das_aid); O(move_b_das_aipd); O(move_b_das_dad); O(move_b_das_daid); O(move_b_das_dd); O(move_b_das_paid);
255   O(move_b_dpc_adr16); O(move_b_dpc_adr32); O(move_b_dpc_aid); O(move_b_dpc_aipd); O(move_b_dpc_dad); O(move_b_dpc_daid); O(move_b_dpc_dd); O(move_b_dpc_paid);
256   O(move_b_dpci_adr16); O(move_b_dpci_adr32); O(move_b_dpci_aid); O(move_b_dpci_aipd); O(move_b_dpci_dad); O(move_b_dpci_daid); O(move_b_dpci_dd); O(move_b_dpci_paid);
257   O(move_b_ds_adr16); O(move_b_ds_adr32); O(move_b_ds_aid); O(move_b_ds_aipd); O(move_b_ds_dad); O(move_b_ds_daid); O(move_b_ds_dd); O(move_b_ds_paid);
258   O(move_b_imm8_adr16); O(move_b_imm8_adr32); O(move_b_imm8_aid); O(move_b_imm8_aipd); O(move_b_imm8_dad); O(move_b_imm8_daid); O(move_b_imm8_dd); O(move_b_imm8_paid);
259   O(move_b_pais_adr16); O(move_b_pais_adr32); O(move_b_pais_aid); O(move_b_pais_aipd); O(move_b_pais_dad); O(move_b_pais_daid); O(move_b_pais_dd); O(move_b_pais_paid);
260   O(move_dais_ccr); O(move_dais_sr); O(move_das_ccr); O(move_das_sr); O(move_dpc_ccr); O(move_dpc_sr); O(move_dpci_ccr); O(move_dpci_sr); O(move_ds_ccr); O(move_ds_sr); O(move_i16u_sr); O(move_imm8_ccr);
261   O(move_l_adr16_adr16); O(move_l_adr16_adr32); O(move_l_adr16_aid); O(move_l_adr16_aipd); O(move_l_adr16_dad); O(move_l_adr16_daid); O(move_l_adr16_dd); O(move_l_adr16_paid);
262   O(move_l_adr32_adr16); O(move_l_adr32_adr32); O(move_l_adr32_aid); O(move_l_adr32_aipd); O(move_l_adr32_dad); O(move_l_adr32_daid); O(move_l_adr32_dd); O(move_l_adr32_paid);
263   O(move_l_aips_adr16); O(move_l_aips_adr32); O(move_l_aips_aid); O(move_l_aips_aipd); O(move_l_aips_dad); O(move_l_aips_daid); O(move_l_aips_dd); O(move_l_aips_paid);
264   O(move_l_ais_adr16); O(move_l_ais_adr32); O(move_l_ais_aid); O(move_l_ais_aipd); O(move_l_ais_dad); O(move_l_ais_daid); O(move_l_ais_dd); O(move_l_ais_paid);
265   O(move_l_as_adr16); O(move_l_as_adr32); O(move_l_as_aid); O(move_l_as_aipd); O(move_l_as_dad); O(move_l_as_daid); O(move_l_as_dd); O(move_l_as_paid);
266   O(move_l_dais_adr16); O(move_l_dais_adr32); O(move_l_dais_aid); O(move_l_dais_aipd); O(move_l_dais_dad); O(move_l_dais_daid); O(move_l_dais_dd); O(move_l_dais_paid);
267   O(move_l_das_adr16); O(move_l_das_adr32); O(move_l_das_aid); O(move_l_das_aipd); O(move_l_das_dad); O(move_l_das_daid); O(move_l_das_dd); O(move_l_das_paid);
268   O(move_l_dpc_adr16); O(move_l_dpc_adr32); O(move_l_dpc_aid); O(move_l_dpc_aipd); O(move_l_dpc_dad); O(move_l_dpc_daid); O(move_l_dpc_dd); O(move_l_dpc_paid);
269   O(move_l_dpci_adr16); O(move_l_dpci_adr32); O(move_l_dpci_aid); O(move_l_dpci_aipd); O(move_l_dpci_dad); O(move_l_dpci_daid); O(move_l_dpci_dd); O(move_l_dpci_paid);
270   O(move_l_ds_adr16); O(move_l_ds_adr32); O(move_l_ds_aid); O(move_l_ds_aipd); O(move_l_ds_dad); O(move_l_ds_daid); O(move_l_ds_dd); O(move_l_ds_paid);
271   O(move_l_imm32_adr16); O(move_l_imm32_adr32); O(move_l_imm32_aid); O(move_l_imm32_aipd); O(move_l_imm32_dad); O(move_l_imm32_daid); O(move_l_imm32_dd); O(move_l_imm32_paid);
272   O(move_l_pais_adr16); O(move_l_pais_adr32); O(move_l_pais_aid); O(move_l_pais_aipd); O(move_l_pais_dad); O(move_l_pais_daid); O(move_l_pais_dd); O(move_l_pais_paid);
273   O(move_pais_ccr); O(move_pais_sr); O(move_sr_adr16); O(move_sr_adr32); O(move_sr_aips); O(move_sr_ais); O(move_sr_dais); O(move_sr_das); O(move_sr_ds); O(move_sr_pais); O(move_usp_as);
274   O(move_w_adr16_adr16); O(move_w_adr16_adr32); O(move_w_adr16_aid); O(move_w_adr16_aipd); O(move_w_adr16_dad); O(move_w_adr16_daid); O(move_w_adr16_dd); O(move_w_adr16_paid);
275   O(move_w_adr32_adr16); O(move_w_adr32_adr32); O(move_w_adr32_aid); O(move_w_adr32_aipd); O(move_w_adr32_dad); O(move_w_adr32_daid); O(move_w_adr32_dd); O(move_w_adr32_paid);
276   O(move_w_aips_adr16); O(move_w_aips_adr32); O(move_w_aips_aid); O(move_w_aips_aipd); O(move_w_aips_dad); O(move_w_aips_daid); O(move_w_aips_dd); O(move_w_aips_paid);
277   O(move_w_ais_adr16); O(move_w_ais_adr32); O(move_w_ais_aid); O(move_w_ais_aipd); O(move_w_ais_dad); O(move_w_ais_daid); O(move_w_ais_dd); O(move_w_ais_paid);
278   O(move_w_as_adr16); O(move_w_as_adr32); O(move_w_as_aid); O(move_w_as_aipd); O(move_w_as_dad); O(move_w_as_daid); O(move_w_as_dd); O(move_w_as_paid);
279   O(move_w_dais_adr16); O(move_w_dais_adr32); O(move_w_dais_aid); O(move_w_dais_aipd); O(move_w_dais_dad); O(move_w_dais_daid); O(move_w_dais_dd); O(move_w_dais_paid);
280   O(move_w_das_adr16); O(move_w_das_adr32); O(move_w_das_aid); O(move_w_das_aipd); O(move_w_das_dad); O(move_w_das_daid); O(move_w_das_dd); O(move_w_das_paid);
281   O(move_w_dpc_adr16); O(move_w_dpc_adr32); O(move_w_dpc_aid); O(move_w_dpc_aipd); O(move_w_dpc_dad); O(move_w_dpc_daid); O(move_w_dpc_dd); O(move_w_dpc_paid);
282   O(move_w_dpci_adr16); O(move_w_dpci_adr32); O(move_w_dpci_aid); O(move_w_dpci_aipd); O(move_w_dpci_dad); O(move_w_dpci_daid); O(move_w_dpci_dd); O(move_w_dpci_paid);
283   O(move_w_ds_adr16); O(move_w_ds_adr32); O(move_w_ds_aid); O(move_w_ds_aipd); O(move_w_ds_dad); O(move_w_ds_daid); O(move_w_ds_dd); O(move_w_ds_paid);
284   O(move_w_imm16_adr16); O(move_w_imm16_adr32); O(move_w_imm16_aid); O(move_w_imm16_aipd); O(move_w_imm16_dad); O(move_w_imm16_daid); O(move_w_imm16_dd); O(move_w_imm16_paid);
285   O(move_w_pais_adr16); O(move_w_pais_adr32); O(move_w_pais_aid); O(move_w_pais_aipd); O(move_w_pais_dad); O(move_w_pais_daid); O(move_w_pais_dd); O(move_w_pais_paid);
286   O(movea_l_adr16_ad); O(movea_l_adr32_ad); O(movea_l_aips_ad); O(movea_l_ais_ad); O(movea_l_as_ad); O(movea_l_dais_ad); O(movea_l_das_ad); O(movea_l_dpc_ad); O(movea_l_dpci_ad); O(movea_l_ds_ad); O(movea_l_imm32_ad); O(movea_l_pais_ad);
287   O(movea_w_adr16_ad); O(movea_w_adr32_ad); O(movea_w_aips_ad); O(movea_w_ais_ad); O(movea_w_as_ad); O(movea_w_dais_ad); O(movea_w_das_ad); O(movea_w_dpc_ad); O(movea_w_dpci_ad); O(movea_w_ds_ad); O(movea_w_imm16_ad); O(movea_w_pais_ad);
288   O(movem_l_adr16_list); O(movem_l_adr32_list); O(movem_l_aips_list); O(movem_l_ais_list); O(movem_l_dais_list); O(movem_l_das_list); O(movem_l_dpc_list); O(movem_l_dpci_list); O(movem_l_list_adr16); O(movem_l_list_adr32); O(movem_l_list_ais); O(movem_l_list_dais); O(movem_l_list_das); O(movem_l_listp_pais);
289   O(movem_w_adr16_list); O(movem_w_adr32_list); O(movem_w_aips_list); O(movem_w_ais_list); O(movem_w_dais_list); O(movem_w_das_list); O(movem_w_dpc_list); O(movem_w_dpci_list); O(movem_w_list_adr16); O(movem_w_list_adr32); O(movem_w_list_ais); O(movem_w_list_dais); O(movem_w_list_das); O(movem_w_listp_pais);
290   O(movep_l_das_dd); O(movep_l_dd_das); O(movep_w_das_dd); O(movep_w_dd_das);
291   O(moveq_imm8o_dd);
292   O(muls_w_adr16_dd); O(muls_w_adr32_dd); O(muls_w_aips_dd); O(muls_w_ais_dd); O(muls_w_dais_dd); O(muls_w_das_dd); O(muls_w_dpc_dd); O(muls_w_dpci_dd); O(muls_w_ds_dd); O(muls_w_imm16_dd); O(muls_w_pais_dd);
293   O(mulu_w_adr16_dd); O(mulu_w_adr32_dd); O(mulu_w_aips_dd); O(mulu_w_ais_dd); O(mulu_w_dais_dd); O(mulu_w_das_dd); O(mulu_w_dpc_dd); O(mulu_w_dpci_dd); O(mulu_w_ds_dd); O(mulu_w_imm16_dd); O(mulu_w_pais_dd);
294   O(nbcd_b_adr16); O(nbcd_b_adr32); O(nbcd_b_aips); O(nbcd_b_ais); O(nbcd_b_dais); O(nbcd_b_das); O(nbcd_b_ds); O(nbcd_b_pais);
295   O(neg_b_adr16); O(neg_b_adr32); O(neg_b_aips); O(neg_b_ais); O(neg_b_dais); O(neg_b_das); O(neg_b_ds); O(neg_b_pais);
296   O(neg_l_adr16); O(neg_l_adr32); O(neg_l_aips); O(neg_l_ais); O(neg_l_dais); O(neg_l_das); O(neg_l_ds); O(neg_l_pais);
297   O(neg_w_adr16); O(neg_w_adr32); O(neg_w_aips); O(neg_w_ais); O(neg_w_dais); O(neg_w_das); O(neg_w_ds); O(neg_w_pais);
298   O(negx_b_adr16); O(negx_b_adr32); O(negx_b_aips); O(negx_b_ais); O(negx_b_dais); O(negx_b_das); O(negx_b_ds); O(negx_b_pais);
299   O(negx_l_adr16); O(negx_l_adr32); O(negx_l_aips); O(negx_l_ais); O(negx_l_dais); O(negx_l_das); O(negx_l_ds); O(negx_l_pais);
300   O(negx_w_adr16); O(negx_w_adr32); O(negx_w_aips); O(negx_w_ais); O(negx_w_dais); O(negx_w_das); O(negx_w_ds); O(negx_w_pais);
301   O(nop);
302   O(not_b_adr16); O(not_b_adr32); O(not_b_aips); O(not_b_ais); O(not_b_dais); O(not_b_das); O(not_b_ds); O(not_b_pais);
303   O(not_l_adr16); O(not_l_adr32); O(not_l_aips); O(not_l_ais); O(not_l_dais); O(not_l_das); O(not_l_ds); O(not_l_pais);
304   O(not_w_adr16); O(not_w_adr32); O(not_w_aips); O(not_w_ais); O(not_w_dais); O(not_w_das); O(not_w_ds); O(not_w_pais);
305   O(or_b_adr16_dd); O(or_b_adr32_dd); O(or_b_aips_dd); O(or_b_ais_dd); O(or_b_dais_dd); O(or_b_das_dd); O(or_b_dd_adr16); O(or_b_dd_adr32); O(or_b_dd_aips); O(or_b_dd_ais); O(or_b_dd_dais); O(or_b_dd_das); O(or_b_dd_pais); O(or_b_dpc_dd); O(or_b_dpci_dd); O(or_b_ds_dd); O(or_b_imm8_dd); O(or_b_pais_dd);
306   O(or_l_adr16_dd); O(or_l_adr32_dd); O(or_l_aips_dd); O(or_l_ais_dd); O(or_l_dais_dd); O(or_l_das_dd); O(or_l_dd_adr16); O(or_l_dd_adr32); O(or_l_dd_aips); O(or_l_dd_ais); O(or_l_dd_dais); O(or_l_dd_das); O(or_l_dd_pais); O(or_l_dpc_dd); O(or_l_dpci_dd); O(or_l_ds_dd); O(or_l_imm32_dd); O(or_l_pais_dd);
307   O(or_w_adr16_dd); O(or_w_adr32_dd); O(or_w_aips_dd); O(or_w_ais_dd); O(or_w_dais_dd); O(or_w_das_dd); O(or_w_dd_adr16); O(or_w_dd_adr32); O(or_w_dd_aips); O(or_w_dd_ais); O(or_w_dd_dais); O(or_w_dd_das); O(or_w_dd_pais); O(or_w_dpc_dd); O(or_w_dpci_dd); O(or_w_ds_dd); O(or_w_imm16_dd); O(or_w_pais_dd);
308   O(ori_b_imm8_adr16); O(ori_b_imm8_adr32); O(ori_b_imm8_aips); O(ori_b_imm8_ais); O(ori_b_imm8_dais); O(ori_b_imm8_das); O(ori_b_imm8_ds); O(ori_b_imm8_pais);
309   O(ori_i16u_sr); O(ori_imm8_ccr);
310   O(ori_l_imm32_adr16); O(ori_l_imm32_adr32); O(ori_l_imm32_aips); O(ori_l_imm32_ais); O(ori_l_imm32_dais); O(ori_l_imm32_das); O(ori_l_imm32_ds); O(ori_l_imm32_pais);
311   O(ori_w_imm16_adr16); O(ori_w_imm16_adr32); O(ori_w_imm16_aips); O(ori_w_imm16_ais); O(ori_w_imm16_dais); O(ori_w_imm16_das); O(ori_w_imm16_ds); O(ori_w_imm16_pais);
312   O(pea_adr16); O(pea_adr32); O(pea_ais); O(pea_dais); O(pea_das); O(pea_dpc); O(pea_dpci);
313   O(reset);
314   O(rol_adr16); O(rol_adr32); O(rol_aips); O(rol_ais); O(rol_b_dd_ds); O(rol_b_imm3_ds); O(rol_dais); O(rol_das); O(rol_l_dd_ds); O(rol_l_imm3_ds); O(rol_pais); O(rol_w_dd_ds); O(rol_w_imm3_ds);
315   O(ror_adr16); O(ror_adr32); O(ror_aips); O(ror_ais); O(ror_b_dd_ds); O(ror_b_imm3_ds); O(ror_dais); O(ror_das); O(ror_l_dd_ds); O(ror_l_imm3_ds); O(ror_pais); O(ror_w_dd_ds); O(ror_w_imm3_ds);
316   O(roxl_adr16); O(roxl_adr32); O(roxl_aips); O(roxl_ais); O(roxl_b_dd_ds); O(roxl_b_imm3_ds); O(roxl_dais); O(roxl_das); O(roxl_l_dd_ds); O(roxl_l_imm3_ds); O(roxl_pais); O(roxl_w_dd_ds); O(roxl_w_imm3_ds);
317   O(roxr_adr16); O(roxr_adr32); O(roxr_aips); O(roxr_ais); O(roxr_b_dd_ds); O(roxr_b_imm3_ds); O(roxr_dais); O(roxr_das); O(roxr_l_dd_ds); O(roxr_l_imm3_ds); O(roxr_pais); O(roxr_w_dd_ds); O(roxr_w_imm3_ds);
318   O(rte); O(rtr); O(rts);
319   O(sbcd_ds_dd); O(sbcd_pais_paid);
320   O(scc_adr16); O(scc_adr32); O(scc_aips); O(scc_ais); O(scc_dais); O(scc_das); O(scc_ds); O(scc_pais);
321   O(scs_adr16); O(scs_adr32); O(scs_aips); O(scs_ais); O(scs_dais); O(scs_das); O(scs_ds); O(scs_pais);
322   O(seq_adr16); O(seq_adr32); O(seq_aips); O(seq_ais); O(seq_dais); O(seq_das); O(seq_ds); O(seq_pais);
323   O(sf_adr16); O(sf_adr32); O(sf_aips); O(sf_ais); O(sf_dais); O(sf_das); O(sf_ds); O(sf_pais);
324   O(sge_adr16); O(sge_adr32); O(sge_aips); O(sge_ais); O(sge_dais); O(sge_das); O(sge_ds); O(sge_pais);
325   O(sgt_adr16); O(sgt_adr32); O(sgt_aips); O(sgt_ais); O(sgt_dais); O(sgt_das); O(sgt_ds); O(sgt_pais);
326   O(shi_adr16); O(shi_adr32); O(shi_aips); O(shi_ais); O(shi_dais); O(shi_das); O(shi_ds); O(shi_pais);
327   O(sle_adr16); O(sle_adr32); O(sle_aips); O(sle_ais); O(sle_dais); O(sle_das); O(sle_ds); O(sle_pais);
328   O(sls_adr16); O(sls_adr32); O(sls_aips); O(sls_ais); O(sls_dais); O(sls_das); O(sls_ds); O(sls_pais);
329   O(slt_adr16); O(slt_adr32); O(slt_aips); O(slt_ais); O(slt_dais); O(slt_das); O(slt_ds); O(slt_pais);
330   O(smi_adr16); O(smi_adr32); O(smi_aips); O(smi_ais); O(smi_dais); O(smi_das); O(smi_ds); O(smi_pais);
331   O(sne_adr16); O(sne_adr32); O(sne_aips); O(sne_ais); O(sne_dais); O(sne_das); O(sne_ds); O(sne_pais);
332   O(spl_adr16); O(spl_adr32); O(spl_aips); O(spl_ais); O(spl_dais); O(spl_das); O(spl_ds); O(spl_pais);
333   O(st_adr16); O(st_adr32); O(st_aips); O(st_ais); O(st_dais); O(st_das); O(st_ds); O(st_pais);
334   O(stop_i16u);
335   O(sub_b_adr16_dd); O(sub_b_adr32_dd); O(sub_b_aips_dd); O(sub_b_ais_dd); O(sub_b_dais_dd); O(sub_b_das_dd); O(sub_b_dd_adr16); O(sub_b_dd_adr32); O(sub_b_dd_aips); O(sub_b_dd_ais); O(sub_b_dd_dais); O(sub_b_dd_das); O(sub_b_dd_pais); O(sub_b_dpc_dd); O(sub_b_dpci_dd); O(sub_b_ds_dd); O(sub_b_imm8_dd); O(sub_b_pais_dd);
336   O(sub_l_adr16_dd); O(sub_l_adr32_dd); O(sub_l_aips_dd); O(sub_l_ais_dd); O(sub_l_as_dd); O(sub_l_dais_dd); O(sub_l_das_dd); O(sub_l_dd_adr16); O(sub_l_dd_adr32); O(sub_l_dd_aips); O(sub_l_dd_ais); O(sub_l_dd_dais); O(sub_l_dd_das); O(sub_l_dd_pais); O(sub_l_dpc_dd); O(sub_l_dpci_dd); O(sub_l_ds_dd); O(sub_l_imm32_dd); O(sub_l_pais_dd);
337   O(sub_w_adr16_dd); O(sub_w_adr32_dd); O(sub_w_aips_dd); O(sub_w_ais_dd); O(sub_w_as_dd); O(sub_w_dais_dd); O(sub_w_das_dd); O(sub_w_dd_adr16); O(sub_w_dd_adr32); O(sub_w_dd_aips); O(sub_w_dd_ais); O(sub_w_dd_dais); O(sub_w_dd_das); O(sub_w_dd_pais); O(sub_w_dpc_dd); O(sub_w_dpci_dd); O(sub_w_ds_dd); O(sub_w_imm16_dd); O(sub_w_pais_dd);
338   O(suba_l_adr16_ad); O(suba_l_adr32_ad); O(suba_l_aips_ad); O(suba_l_ais_ad); O(suba_l_as_ad); O(suba_l_dais_ad); O(suba_l_das_ad); O(suba_l_dpc_ad); O(suba_l_dpci_ad); O(suba_l_ds_ad); O(suba_l_imm32_ad); O(suba_l_pais_ad);
339   O(suba_w_adr16_ad); O(suba_w_adr32_ad); O(suba_w_aips_ad); O(suba_w_ais_ad); O(suba_w_as_ad); O(suba_w_dais_ad); O(suba_w_das_ad); O(suba_w_dpc_ad); O(suba_w_dpci_ad); O(suba_w_ds_ad); O(suba_w_imm16_ad); O(suba_w_pais_ad);
340   O(subi_b_imm8_adr16); O(subi_b_imm8_adr32); O(subi_b_imm8_aips); O(subi_b_imm8_ais); O(subi_b_imm8_dais); O(subi_b_imm8_das); O(subi_b_imm8_ds); O(subi_b_imm8_pais);
341   O(subi_l_imm32_adr16); O(subi_l_imm32_adr32); O(subi_l_imm32_aips); O(subi_l_imm32_ais); O(subi_l_imm32_dais); O(subi_l_imm32_das); O(subi_l_imm32_ds); O(subi_l_imm32_pais);
342   O(subi_w_imm16_adr16); O(subi_w_imm16_adr32); O(subi_w_imm16_aips); O(subi_w_imm16_ais); O(subi_w_imm16_dais); O(subi_w_imm16_das); O(subi_w_imm16_ds); O(subi_w_imm16_pais);
343   O(subq_b_imm3_adr16); O(subq_b_imm3_adr32); O(subq_b_imm3_aips); O(subq_b_imm3_ais); O(subq_b_imm3_as); O(subq_b_imm3_dais); O(subq_b_imm3_das); O(subq_b_imm3_ds); O(subq_b_imm3_pais);
344   O(subq_l_imm3_adr16); O(subq_l_imm3_adr32); O(subq_l_imm3_aips); O(subq_l_imm3_ais); O(subq_l_imm3_as); O(subq_l_imm3_dais); O(subq_l_imm3_das); O(subq_l_imm3_ds); O(subq_l_imm3_pais);
345   O(subq_w_imm3_adr16); O(subq_w_imm3_adr32); O(subq_w_imm3_aips); O(subq_w_imm3_ais); O(subq_w_imm3_as); O(subq_w_imm3_dais); O(subq_w_imm3_das); O(subq_w_imm3_ds); O(subq_w_imm3_pais);
346   O(subx_b_ds_dd); O(subx_b_pais_paid); O(subx_l_ds_dd); O(subx_l_pais_paid); O(subx_w_ds_dd); O(subx_w_pais_paid);
347   O(svc_adr16); O(svc_adr32); O(svc_aips); O(svc_ais); O(svc_dais); O(svc_das); O(svc_ds); O(svc_pais);
348   O(svs_adr16); O(svs_adr32); O(svs_aips); O(svs_ais); O(svs_dais); O(svs_das); O(svs_ds); O(svs_pais);
349   O(swap_ds);
350   O(tas_adr16); O(tas_adr32); O(tas_aips); O(tas_ais); O(tas_dais); O(tas_das); O(tas_ds); O(tas_pais);
351   O(trap_imm4);
352   O(trapv);
353   O(tst_b_adr16); O(tst_b_adr32); O(tst_b_aips); O(tst_b_ais); O(tst_b_dais); O(tst_b_das); O(tst_b_dpc); O(tst_b_dpci); O(tst_b_ds); O(tst_b_pais);
354   O(tst_l_adr16); O(tst_l_adr32); O(tst_l_aips); O(tst_l_ais); O(tst_l_as); O(tst_l_dais); O(tst_l_das); O(tst_l_dpc); O(tst_l_dpci); O(tst_l_ds); O(tst_l_pais);
355   O(tst_w_adr16); O(tst_w_adr32); O(tst_w_aips); O(tst_w_ais); O(tst_w_as); O(tst_w_dais); O(tst_w_das); O(tst_w_dpc); O(tst_w_dpci); O(tst_w_ds); O(tst_w_pais);
356   O(unlk_as);
357
358   O(state_reset);
359
360#undef O
361};
362
363enum {
364   /* NOTE: M68K_SP fetches the current SP, be it USP, ISP, or MSP */
365   M68K_PC, M68K_SP, M68K_ISP, M68K_USP, M68K_MSP, M68K_SR, M68K_VBR,
366   M68K_SFC, M68K_DFC, M68K_CACR, M68K_CAAR, M68K_PREF_ADDR, M68K_PREF_DATA,
367   M68K_D0, M68K_D1, M68K_D2, M68K_D3, M68K_D4, M68K_D5, M68K_D6, M68K_D7,
368   M68K_A0, M68K_A1, M68K_A2, M68K_A3, M68K_A4, M68K_A5, M68K_A6, M68K_A7,
369   M68K_FP0, M68K_FP1, M68K_FP2, M68K_FP3, M68K_FP4, M68K_FP5, M68K_FP6, M68K_FP7,
370   M68K_FPSR, M68K_FPCR
371};
372
373enum {
374   M68K_IRQ_NONE = 0,
375   M68K_IRQ_1    = 1,
376   M68K_IRQ_2    = 2,
377   M68K_IRQ_3    = 3,
378   M68K_IRQ_4    = 4,
379   M68K_IRQ_5    = 5,
380   M68K_IRQ_6    = 6,
381   M68K_IRQ_7    = 7,
382};
383
384extern const device_type M68000x;
385
386#endif
trunk/src/emu/cpu/m68000x/m68000.lst
r0r243794
1macro prefetch %deltapc %addpc
2   IRC = read16p(PC+%deltapc);
3   PC += %addpc;
4
5macro prefetch_last %deltapc %addpc
6   IR = IRC;
7   IRC = read16p(PC+%deltapc);
8   PC += %addpc;
9
10macro read32d %dest %adr
11   %dest = read16d(%adr) << 16;
12   %dest |= read16d(%adr+2);
13
14macro read32p %dest %adr
15   %dest = read16p(%adr) << 16;
16   %dest |= read16p(%adr+2);
17
18macro op1_imm32
19   OP1 = IRC << 16;
20   prefetch 4 6
21   OP1 |= IRC;
22   prefetch 0 0
23
24macro op2_adr16
25   OP2 = INT16(IRC);
26   prefetch 2 2
27
28macro op2_adr32
29   OP2 = IRC << 16;
30   prefetch 2 0
31   OP2 |= IRC;
32   prefetch 4 4
33
34state reset
35   SR = 0x2700;
36   check_stack();
37   read32p A[7] 0
38   read32p PC 4
39   prefetch 0 0
40   prefetch_last 2 0
41   inst_state = -1;
42
430000 fff8 ori.b   imm8  ds
440010 fff8 ori.b   imm8  ais
450018 fff8 ori.b   imm8  aips
460020 fff8 ori.b   imm8  pais
470028 fff8 ori.b   imm8  das
480030 fff8 ori.b   imm8  dais
490038 ffff ori.b   imm8  adr16
500039 ffff ori.b   imm8  adr32
51003c ffff ori     imm8  ccr
520040 fff8 ori.w   imm16 ds
530050 fff8 ori.w   imm16 ais
540058 fff8 ori.w   imm16 aips
550060 fff8 ori.w   imm16 pais
560068 fff8 ori.w   imm16 das
570070 fff8 ori.w   imm16 dais
580078 ffff ori.w   imm16 adr16
590079 ffff ori.w   imm16 adr32
60007c ffff ori     i16u  sr
610080 fff8 ori.l   imm32 ds
620090 fff8 ori.l   imm32 ais
630098 fff8 ori.l   imm32 aips
6400a0 fff8 ori.l   imm32 pais
6500a8 fff8 ori.l   imm32 das
6600b0 fff8 ori.l   imm32 dais
6700b8 ffff ori.l   imm32 adr16
6800b9 ffff ori.l   imm32 adr32
690100 f1f8 btst    dd    ds
700108 f1f8 movep.w das   dd
710110 f1f8 btst    dd    ais
720118 f1f8 btst    dd    aips
730120 f1f8 btst    dd    pais
740128 f1f8 btst    dd    das
750130 f1f8 btst    dd    dais
760138 f1ff btst    dd    adr16
770139 f1ff btst    dd    adr32
78013a f1ff btst    dd    dpc
79013b f1ff btst    dd    dpci
800140 f1f8 bchg    dd    ds
810148 f1f8 movep.l das   dd
820150 f1f8 bchg    dd    ais
830158 f1f8 bchg    dd    aips
840160 f1f8 bchg    dd    pais
850168 f1f8 bchg    dd    das
860170 f1f8 bchg    dd    dais
870178 f1ff bchg    dd    adr16
880179 f1ff bchg    dd    adr32
890180 f1f8 bclr    dd    ds
900188 f1f8 movep.w dd    das
910190 f1f8 bclr    dd    ais
920198 f1f8 bclr    dd    aips
9301a0 f1f8 bclr    dd    pais
9401a8 f1f8 bclr    dd    das
9501b0 f1f8 bclr    dd    dais
9601b8 f1ff bclr    dd    adr16
9701b9 f1ff bclr    dd    adr32
9801c0 f1f8 bset    dd    ds
9901c8 f1f8 movep.l dd    das 
10001d0 f1f8 bset    dd    ais
10101d8 f1f8 bset    dd    aips
10201e0 f1f8 bset    dd    pais
10301e8 f1f8 bset    dd    das
10401f0 f1f8 bset    dd    dais
10501f8 f1ff bset    dd    adr16
10601f9 f1ff bset    dd    adr32
1070200 fff8 andi.b  imm8  ds
1080210 fff8 andi.b  imm8  ais
1090218 fff8 andi.b  imm8  aips
1100220 fff8 andi.b  imm8  pais
1110228 fff8 andi.b  imm8  das
1120230 fff8 andi.b  imm8  dais
1130238 ffff andi.b  imm8  adr16
1140239 ffff andi.b  imm8  adr32
115023c ffff andi    imm8  ccr
1160240 fff8 andi.w  imm16 ds
1170250 fff8 andi.w  imm16 ais
1180258 fff8 andi.w  imm16 aips
1190260 fff8 andi.w  imm16 pais
1200268 fff8 andi.w  imm16 das
1210270 fff8 andi.w  imm16 dais
1220278 ffff andi.w  imm16 adr16
1230279 ffff andi.w  imm16 adr32
124027c ffff andi    i16u  sr
1250280 fff8 andi.l  imm32 ds
1260290 fff8 andi.l  imm32 ais
1270298 fff8 andi.l  imm32 aips
12802a0 fff8 andi.l  imm32 pais
12902a8 fff8 andi.l  imm32 das
13002b0 fff8 andi.l  imm32 dais
13102b8 ffff andi.l  imm32 adr16
13202b9 ffff andi.l  imm32 adr32
1330400 fff8 subi.b  imm8  ds
1340410 fff8 subi.b  imm8  ais
1350418 fff8 subi.b  imm8  aips
1360420 fff8 subi.b  imm8  pais
1370428 fff8 subi.b  imm8  das
1380430 fff8 subi.b  imm8  dais
1390438 ffff subi.b  imm8  adr16
1400439 ffff subi.b  imm8  adr32
1410440 fff8 subi.w  imm16 ds
1420450 fff8 subi.w  imm16 ais
1430458 fff8 subi.w  imm16 aips
1440460 fff8 subi.w  imm16 pais
1450468 fff8 subi.w  imm16 das
1460470 fff8 subi.w  imm16 dais
1470478 ffff subi.w  imm16 adr16
1480479 ffff subi.w  imm16 adr32
1490480 fff8 subi.l  imm32 ds
1500490 fff8 subi.l  imm32 ais
1510498 fff8 subi.l  imm32 aips
15204a0 fff8 subi.l  imm32 pais
15304a8 fff8 subi.l  imm32 das
15404b0 fff8 subi.l  imm32 dais
15504b8 ffff subi.l  imm32 adr16
15604b9 ffff subi.l  imm32 adr32
1570600 fff8 addi.b  imm8  ds
1580610 fff8 addi.b  imm8  ais
1590618 fff8 addi.b  imm8  aips
1600620 fff8 addi.b  imm8  pais
1610628 fff8 addi.b  imm8  das
1620630 fff8 addi.b  imm8  dais
1630638 ffff addi.b  imm8  adr16
1640639 ffff addi.b  imm8  adr32
1650640 fff8 addi.w  imm16 ds
1660650 fff8 addi.w  imm16 ais
1670658 fff8 addi.w  imm16 aips
1680660 fff8 addi.w  imm16 pais
1690668 fff8 addi.w  imm16 das
1700670 fff8 addi.w  imm16 dais
1710678 ffff addi.w  imm16 adr16
1720679 ffff addi.w  imm16 adr32
1730680 fff8 addi.l  imm32 ds
1740690 fff8 addi.l  imm32 ais
1750698 fff8 addi.l  imm32 aips
17606a0 fff8 addi.l  imm32 pais
17706a8 fff8 addi.l  imm32 das
17806b0 fff8 addi.l  imm32 dais
17906b8 ffff addi.l  imm32 adr16
18006b9 ffff addi.l  imm32 adr32
1810800 fff8 btst    imm8  ds
1820810 fff8 btst    imm8  ais
1830818 fff8 btst    imm8  aips
1840820 fff8 btst    imm8  pais
1850828 fff8 btst    imm8  das
1860830 fff8 btst    imm8  dais
1870838 ffff btst    imm8  adr16
1880839 ffff btst    imm8  adr32
189083a ffff btst    imm8  dpc
190083b ffff btst    imm8  dpci
1910840 fff8 bchg    imm8  ds
1920850 fff8 bchg    imm8  ais
1930858 fff8 bchg    imm8  aips
1940860 fff8 bchg    imm8  pais
1950868 fff8 bchg    imm8  das
1960870 fff8 bchg    imm8  dais
1970878 ffff bchg    imm8  adr16
1980879 ffff bchg    imm8  adr32
1990880 fff8 bclr    imm8  ds
2000890 fff8 bclr    imm8  ais
2010898 fff8 bclr    imm8  aips
20208a0 fff8 bclr    imm8  pais
20308a8 fff8 bclr    imm8  das
20408b0 fff8 bclr    imm8  dais
20508b8 ffff bclr    imm8  adr16
20608b9 ffff bclr    imm8  adr32
20708c0 fff8 bset    imm8  ds
20808d0 fff8 bset    imm8  ais
20908d8 fff8 bset    imm8  aips
21008e0 fff8 bset    imm8  pais
21108e8 fff8 bset    imm8  das
21208f0 fff8 bset    imm8  dais
21308f8 ffff bset    imm8  adr16
21408f9 ffff bset    imm8  adr32
2150a00 fff8 eori.b  imm8  ds
2160a10 fff8 eori.b  imm8  ais
2170a18 fff8 eori.b  imm8  aips
2180a20 fff8 eori.b  imm8  pais
2190a28 fff8 eori.b  imm8  das
2200a30 fff8 eori.b  imm8  dais
2210a38 ffff eori.b  imm8  adr16
2220a39 ffff eori.b  imm8  adr32
2230a3c ffff eori    imm8  ccr
2240a40 fff8 eori.w  imm16 ds
2250a50 fff8 eori.w  imm16 ais
2260a58 fff8 eori.w  imm16 aips
2270a60 fff8 eori.w  imm16 pais
2280a68 fff8 eori.w  imm16 das
2290a70 fff8 eori.w  imm16 dais
2300a78 ffff eori.w  imm16 adr16
2310a79 ffff eori.w  imm16 adr32
2320a7c ffff eori    i16u  sr
2330a80 fff8 eori.l  imm32 ds
2340a90 fff8 eori.l  imm32 ais
2350a98 fff8 eori.l  imm32 aips
2360aa0 fff8 eori.l  imm32 pais
2370aa8 fff8 eori.l  imm32 das
2380ab0 fff8 eori.l  imm32 dais
2390ab8 ffff eori.l  imm32 adr16
2400ab9 ffff eori.l  imm32 adr32
2410c00 fff8 cmpi.b  imm8  ds
2420c10 fff8 cmpi.b  imm8  ais
2430c18 fff8 cmpi.b  imm8  aips
2440c20 fff8 cmpi.b  imm8  pais
2450c28 fff8 cmpi.b  imm8  das
2460c30 fff8 cmpi.b  imm8  dais
2470c38 ffff cmpi.b  imm8  adr16
2480c39 ffff cmpi.b  imm8  adr32
2490c40 fff8 cmpi.w  imm16 ds
2500c50 fff8 cmpi.w  imm16 ais
2510c58 fff8 cmpi.w  imm16 aips
2520c60 fff8 cmpi.w  imm16 pais
2530c68 fff8 cmpi.w  imm16 das
2540c70 fff8 cmpi.w  imm16 dais
2550c78 ffff cmpi.w  imm16 adr16
2560c79 ffff cmpi.w  imm16 adr32
2570c80 fff8 cmpi.l  imm32 ds
2580c90 fff8 cmpi.l  imm32 ais
2590c98 fff8 cmpi.l  imm32 aips
2600ca0 fff8 cmpi.l  imm32 pais
2610ca8 fff8 cmpi.l  imm32 das
2620cb0 fff8 cmpi.l  imm32 dais
263
2640cb8 ffff cmpi.l  imm32 adr16
265   op1_imm32
266   op2_adr16
267   read32d TMP1 OP2
268   do_cmp32(TMP1, OP1);
269   prefetch_last 2 0
270
2710cb9 ffff cmpi.l  imm32 adr32
272   op1_imm32
273   op2_adr32
274   read32d TMP1 OP2
275   do_cmp32(TMP1, OP1);
276   prefetch_last 2 0
277
2781000 f1f8 move.b  ds    dd
2791010 f1f8 move.b  ais   dd
2801018 f1f8 move.b  aips  dd
2811020 f1f8 move.b  pais  dd
2821028 f1f8 move.b  das   dd
2831030 f1f8 move.b  dais  dd
2841038 f1ff move.b  adr16 dd
2851039 f1ff move.b  adr32 dd
286103a f1ff move.b  dpc   dd
287103b f1ff move.b  dpci  dd
288103c f1ff move.b  imm8  dd
2891080 f1f8 move.b  ds    aid
2901090 f1f8 move.b  ais   aid
2911098 f1f8 move.b  aips  aid
29210a0 f1f8 move.b  pais  aid
29310a8 f1f8 move.b  das   aid
29410b0 f1f8 move.b  dais  aid
29510b8 f1ff move.b  adr16 aid
29610b9 f1ff move.b  adr32 aid
29710ba f1ff move.b  dpc   aid
29810bb f1ff move.b  dpci  aid
29910bc f1ff move.b  imm8  aid
30010c0 f1f8 move.b  ds    aipd
30110d0 f1f8 move.b  ais   aipd
30210d8 f1f8 move.b  aips  aipd
30310e0 f1f8 move.b  pais  aipd
30410e8 f1f8 move.b  das   aipd
30510f0 f1f8 move.b  dais  aipd
30610f8 f1ff move.b  adr16 aipd
30710f9 f1ff move.b  adr32 aipd
30810fa f1ff move.b  dpc   aipd
30910fb f1ff move.b  dpci  aipd
31010fc f1ff move.b  imm8  aipd
3111100 f1f8 move.b  ds    paid
3121110 f1f8 move.b  ais   paid
3131118 f1f8 move.b  aips  paid
3141120 f1f8 move.b  pais  paid
3151128 f1f8 move.b  das   paid
3161130 f1f8 move.b  dais  paid
3171138 f1ff move.b  adr16 paid
3181139 f1ff move.b  adr32 paid
319113a f1ff move.b  dpc   paid
320113b f1ff move.b  dpci  paid
321113c f1ff move.b  imm8  paid
3221140 f1f8 move.b  ds    dad
3231150 f1f8 move.b  ais   dad
3241158 f1f8 move.b  aips  dad
3251160 f1f8 move.b  pais  dad
3261168 f1f8 move.b  das   dad
3271170 f1f8 move.b  dais  dad
3281178 f1ff move.b  adr16 dad
3291179 f1ff move.b  adr32 dad
330117a f1ff move.b  dpc   dad
331117b f1ff move.b  dpci  dad
332117c f1ff move.b  imm8  dad
3331180 f1f8 move.b  ds    daid
3341190 f1f8 move.b  ais   daid
3351198 f1f8 move.b  aips  daid
33611a0 f1f8 move.b  pais  daid
33711a8 f1f8 move.b  das   daid
33811b0 f1f8 move.b  dais  daid
33911b8 f1ff move.b  adr16 daid
34011b9 f1ff move.b  adr32 daid
34111ba f1ff move.b  dpc   daid
34211bb f1ff move.b  dpci  daid
34311bc f1ff move.b  imm8  daid
34411c0 fff8 move.b  ds    adr16
34511d0 fff8 move.b  ais   adr16
34611d8 fff8 move.b  aips  adr16
34711e0 fff8 move.b  pais  adr16
34811e8 fff8 move.b  das   adr16
34911f0 fff8 move.b  dais  adr16
35011f8 ffff move.b  adr16 adr16
35111f9 ffff move.b  adr32 adr16
35211fa ffff move.b  dpc   adr16
35311fb ffff move.b  dpci  adr16
35411fc ffff move.b  imm8  adr16
35513c0 fff8 move.b  ds    adr32
35613d0 fff8 move.b  ais   adr32
35713d8 fff8 move.b  aips  adr32
35813e0 fff8 move.b  pais  adr32
35913e8 fff8 move.b  das   adr32
36013f0 fff8 move.b  dais  adr32
36113f8 ffff move.b  adr16 adr32
36213f9 ffff move.b  adr32 adr32
36313fa ffff move.b  dpc   adr32
36413fb ffff move.b  dpci  adr32
36513fc ffff move.b  imm8  adr32
3662000 f1f8 move.l  ds    dd
3672008 f1f8 move.l  as    dd
3682010 f1f8 move.l  ais   dd
3692018 f1f8 move.l  aips  dd
3702020 f1f8 move.l  pais  dd
3712028 f1f8 move.l  das   dd
3722030 f1f8 move.l  dais  dd
3732038 f1ff move.l  adr16 dd
3742039 f1ff move.l  adr32 dd
375203a f1ff move.l  dpc   dd
376203b f1ff move.l  dpci  dd
377203c f1ff move.l  imm32 dd
3782040 f1f8 movea.l ds    ad
3792048 f1f8 movea.l as    ad
3802050 f1f8 movea.l ais   ad
3812058 f1f8 movea.l aips  ad
3822060 f1f8 movea.l pais  ad
3832068 f1f8 movea.l das   ad
3842070 f1f8 movea.l dais  ad
3852078 f1ff movea.l adr16 ad
3862079 f1ff movea.l adr32 ad
387207a f1ff movea.l dpc   ad
388207b f1ff movea.l dpci  ad
389207c f1ff movea.l imm32 ad
3902080 f1f8 move.l  ds    aid
3912088 f1f8 move.l  as    aid
3922090 f1f8 move.l  ais   aid
3932098 f1f8 move.l  aips  aid
39420a0 f1f8 move.l  pais  aid
39520a8 f1f8 move.l  das   aid
39620b0 f1f8 move.l  dais  aid
39720b8 f1ff move.l  adr16 aid
39820b9 f1ff move.l  adr32 aid
39920ba f1ff move.l  dpc   aid
40020bb f1ff move.l  dpci  aid
40120bc f1ff move.l  imm32 aid
40220c0 f1f8 move.l  ds    aipd
40320c8 f1f8 move.l  as    aipd
40420d0 f1f8 move.l  ais   aipd
40520d8 f1f8 move.l  aips  aipd
40620e0 f1f8 move.l  pais  aipd
40720e8 f1f8 move.l  das   aipd
40820f0 f1f8 move.l  dais  aipd
40920f8 f1ff move.l  adr16 aipd
41020f9 f1ff move.l  adr32 aipd
41120fa f1ff move.l  dpc   aipd
41220fb f1ff move.l  dpci  aipd
41320fc f1ff move.l  imm32 aipd
4142100 f1f8 move.l  ds    paid
4152108 f1f8 move.l  as    paid
4162110 f1f8 move.l  ais   paid
4172118 f1f8 move.l  aips  paid
4182120 f1f8 move.l  pais  paid
4192128 f1f8 move.l  das   paid
4202130 f1f8 move.l  dais  paid
4212138 f1ff move.l  adr16 paid
4222139 f1ff move.l  adr32 paid
423213a f1ff move.l  dpc   paid
424213b f1ff move.l  dpci  paid
425213c f1ff move.l  imm32 paid
4262140 f1f8 move.l  ds    dad
4272148 f1f8 move.l  as    dad
4282150 f1f8 move.l  ais   dad
4292158 f1f8 move.l  aips  dad
4302160 f1f8 move.l  pais  dad
4312168 f1f8 move.l  das   dad
4322170 f1f8 move.l  dais  dad
4332178 f1ff move.l  adr16 dad
4342179 f1ff move.l  adr32 dad
435217a f1ff move.l  dpc   dad
436217b f1ff move.l  dpci  dad
437217c f1ff move.l  imm32 dad
4382180 f1f8 move.l  ds    daid
4392188 f1f8 move.l  as    daid
4402190 f1f8 move.l  ais   daid
4412198 f1f8 move.l  aips  daid
44221a0 f1f8 move.l  pais  daid
44321a8 f1f8 move.l  das   daid
44421b0 f1f8 move.l  dais  daid
44521b8 f1ff move.l  adr16 daid
44621b9 f1ff move.l  adr32 daid
44721ba f1ff move.l  dpc   daid
44821bb f1ff move.l  dpci  daid
44921bc f1ff move.l  imm32 daid
45021c0 fff8 move.l  ds    adr16
45121c8 fff8 move.l  as    adr16
45221d0 fff8 move.l  ais   adr16
45321d8 fff8 move.l  aips  adr16
45421e0 fff8 move.l  pais  adr16
45521e8 fff8 move.l  das   adr16
45621f0 fff8 move.l  dais  adr16
45721f8 ffff move.l  adr16 adr16
45821f9 ffff move.l  adr32 adr16
45921fa ffff move.l  dpc   adr16
46021fb ffff move.l  dpci  adr16
46121fc ffff move.l  imm32 adr16
46223c0 fff8 move.l  ds    adr32
46323c8 fff8 move.l  as    adr32
46423d0 fff8 move.l  ais   adr32
46523d8 fff8 move.l  aips  adr32
46623e0 fff8 move.l  pais  adr32
46723e8 fff8 move.l  das   adr32
46823f0 fff8 move.l  dais  adr32
46923f8 ffff move.l  adr16 adr32
47023f9 ffff move.l  adr32 adr32
47123fa ffff move.l  dpc   adr32
47223fb ffff move.l  dpci  adr32
47323fc ffff move.l  imm32 adr32
4743000 f1f8 move.w  ds    dd
4753008 f1f8 move.w  as    dd
4763010 f1f8 move.w  ais   dd
4773018 f1f8 move.w  aips  dd
4783020 f1f8 move.w  pais  dd
4793028 f1f8 move.w  das   dd
4803030 f1f8 move.w  dais  dd
4813038 f1ff move.w  adr16 dd
4823039 f1ff move.w  adr32 dd
483303a f1ff move.w  dpc   dd
484303b f1ff move.w  dpci  dd
485303c f1ff move.w  imm16 dd
4863040 f1f8 movea.w ds    ad
4873048 f1f8 movea.w as    ad
4883050 f1f8 movea.w ais   ad
4893058 f1f8 movea.w aips  ad
4903060 f1f8 movea.w pais  ad
4913068 f1f8 movea.w das   ad
4923070 f1f8 movea.w dais  ad
4933078 f1ff movea.w adr16 ad
4943079 f1ff movea.w adr32 ad
495307a f1ff movea.w dpc   ad
496307b f1ff movea.w dpci  ad
497307c f1ff movea.w imm16 ad
4983080 f1f8 move.w  ds    aid
4993088 f1f8 move.w  as    aid
5003090 f1f8 move.w  ais   aid
5013098 f1f8 move.w  aips  aid
50230a0 f1f8 move.w  pais  aid
50330a8 f1f8 move.w  das   aid
50430b0 f1f8 move.w  dais  aid
50530b8 f1ff move.w  adr16 aid
50630b9 f1ff move.w  adr32 aid
50730ba f1ff move.w  dpc   aid
50830bb f1ff move.w  dpci  aid
50930bc f1ff move.w  imm16 aid
51030c0 f1f8 move.w  ds    aipd
51130c8 f1f8 move.w  as    aipd
51230d0 f1f8 move.w  ais   aipd
51330d8 f1f8 move.w  aips  aipd
51430e0 f1f8 move.w  pais  aipd
51530e8 f1f8 move.w  das   aipd
51630f0 f1f8 move.w  dais  aipd
51730f8 f1ff move.w  adr16 aipd
51830f9 f1ff move.w  adr32 aipd
51930fa f1ff move.w  dpc   aipd
52030fb f1ff move.w  dpci  aipd
52130fc f1ff move.w  imm16 aipd
5223100 f1f8 move.w  ds    paid
5233108 f1f8 move.w  as    paid
5243110 f1f8 move.w  ais   paid
5253118 f1f8 move.w  aips  paid
5263120 f1f8 move.w  pais  paid
5273128 f1f8 move.w  das   paid
5283130 f1f8 move.w  dais  paid
5293138 f1ff move.w  adr16 paid
5303139 f1ff move.w  adr32 paid
531313a f1ff move.w  dpc   paid
532313b f1ff move.w  dpci  paid
533313c f1ff move.w  imm16 paid
5343140 f1f8 move.w  ds    dad
5353148 f1f8 move.w  as    dad
5363150 f1f8 move.w  ais   dad
5373158 f1f8 move.w  aips  dad
5383160 f1f8 move.w  pais  dad
5393168 f1f8 move.w  das   dad
5403170 f1f8 move.w  dais  dad
5413178 f1ff move.w  adr16 dad
5423179 f1ff move.w  adr32 dad
543317a f1ff move.w  dpc   dad
544317b f1ff move.w  dpci  dad
545317c f1ff move.w  imm16 dad
5463180 f1f8 move.w  ds    daid
5473188 f1f8 move.w  as    daid
5483190 f1f8 move.w  ais   daid
5493198 f1f8 move.w  aips  daid
55031a0 f1f8 move.w  pais  daid
55131a8 f1f8 move.w  das   daid
55231b0 f1f8 move.w  dais  daid
55331b8 f1ff move.w  adr16 daid
55431b9 f1ff move.w  adr32 daid
55531ba f1ff move.w  dpc   daid
55631bb f1ff move.w  dpci  daid
55731bc f1ff move.w  imm16 daid
55831c0 fff8 move.w  ds    adr16
55931c8 fff8 move.w  as    adr16
56031d0 fff8 move.w  ais   adr16
56131d8 fff8 move.w  aips  adr16
56231e0 fff8 move.w  pais  adr16
56331e8 fff8 move.w  das   adr16
56431f0 fff8 move.w  dais  adr16
56531f8 ffff move.w  adr16 adr16
56631f9 ffff move.w  adr32 adr16
56731fa ffff move.w  dpc   adr16
56831fb ffff move.w  dpci  adr16
56931fc ffff move.w  imm16 adr16
57033c0 fff8 move.w  ds    adr32
57133c8 fff8 move.w  as    adr32
57233d0 fff8 move.w  ais   adr32
57333d8 fff8 move.w  aips  adr32
57433e0 fff8 move.w  pais  adr32
57533e8 fff8 move.w  das   adr32
57633f0 fff8 move.w  dais  adr32
57733f8 ffff move.w  adr16 adr32
57833f9 ffff move.w  adr32 adr32
57933fa ffff move.w  dpc   adr32
58033fb ffff move.w  dpci  adr32
58133fc ffff move.w  imm16 adr32
5824000 fff8 negx.b  ds    -
5834010 fff8 negx.b  ais   -
5844018 fff8 negx.b  aips  -
5854020 fff8 negx.b  pais  -
5864028 fff8 negx.b  das   -
5874030 fff8 negx.b  dais  -
5884038 ffff negx.b  adr16 -
5894039 ffff negx.b  adr32 -
5904040 fff8 negx.w  ds    -
5914050 fff8 negx.w  ais   -
5924058 fff8 negx.w  aips  -
5934060 fff8 negx.w  pais  -
5944068 fff8 negx.w  das   -
5954070 fff8 negx.w  dais  -
5964078 ffff negx.w  adr16 -
5974079 ffff negx.w  adr32 -
5984080 fff8 negx.l  ds    -
5994090 fff8 negx.l  ais   -
6004098 fff8 negx.l  aips  -
60140a0 fff8 negx.l  pais  -
60240a8 fff8 negx.l  das   -
60340b0 fff8 negx.l  dais  -
60440b8 ffff negx.l  adr16 -
60540b9 ffff negx.l  adr32 -
60640c0 fff8 move    sr    ds
60740d0 fff8 move    sr    ais
60840d8 fff8 move    sr    aips
60940e0 fff8 move    sr    pais
61040e8 fff8 move    sr    das
61140f0 fff8 move    sr    dais
61240f8 ffff move    sr    adr16
61340f9 ffff move    sr    adr32
61441d0 f1f8 lea     ais   ad
61541e8 f1f8 lea     das   ad
61641f0 f1f8 lea     dais  ad
61741f8 f1ff lea     adr16 ad
61841f9 f1ff lea     adr32 ad
61941fa f1ff lea     dpc   ad
62041fb f1ff lea     dpci  ad
6214200 fff8 clr.b   ds    -
6224210 fff8 clr.b   ais   -
6234218 fff8 clr.b   aips  -
6244220 fff8 clr.b   pais  -
6254228 fff8 clr.b   das   -
6264230 fff8 clr.b   dais  -
6274238 ffff clr.b   adr16 -
6284239 ffff clr.b   adr32 -
6294240 fff8 clr.w   ds    -
6304250 fff8 clr.w   ais   -
6314258 fff8 clr.w   aips  -
6324260 fff8 clr.w   pais  -
6334268 fff8 clr.w   das   -
6344270 fff8 clr.w   dais  -
6354278 ffff clr.w   adr16 -
6364279 ffff clr.w   adr32 -
6374280 fff8 clr.l   ds    -
6384290 fff8 clr.l   ais   -
6394298 fff8 clr.l   aips  -
64042a0 fff8 clr.l   pais  -
64142a8 fff8 clr.l   das   -
64242b0 fff8 clr.l   dais  -
64342b8 ffff clr.l   adr16 -
64442b9 ffff clr.l   adr32 -
6454400 fff8 neg.b   ds    -
6464410 fff8 neg.b   ais   -
6474418 fff8 neg.b   aips  -
6484420 fff8 neg.b   pais  -
6494428 fff8 neg.b   das   -
6504430 fff8 neg.b   dais  -
6514438 ffff neg.b   adr16 -
6524439 ffff neg.b   adr32 -
6534440 fff8 neg.w   ds    -
6544450 fff8 neg.w   ais   -
6554458 fff8 neg.w   aips  -
6564460 fff8 neg.w   pais  -
6574468 fff8 neg.w   das   -
6584470 fff8 neg.w   dais  -
6594478 ffff neg.w   adr16 -
6604479 ffff neg.w   adr32 -
6614480 fff8 neg.l   ds    -
6624490 fff8 neg.l   ais   -
6634498 fff8 neg.l   aips  -
66444a0 fff8 neg.l   pais  -
66544a8 fff8 neg.l   das   -
66644b0 fff8 neg.l   dais  -
66744b8 ffff neg.l   adr16 -
66844b9 ffff neg.l   adr32 -
66944c0 fff8 move    ds    ccr
67044d0 fff8 move    ais   ccr
67144d8 fff8 move    aips  ccr
67244e0 fff8 move    pais  ccr
67344e8 fff8 move    das   ccr
67444f0 fff8 move    dais  ccr
67544f8 ffff move    adr16 ccr
67644f9 ffff move    adr32 ccr
67744fa ffff move    dpc   ccr
67844fb ffff move    dpci  ccr
67944fc ffff move    imm8  ccr
6804600 fff8 not.b   ds    -
6814610 fff8 not.b   ais   -
6824618 fff8 not.b   aips  -
6834620 fff8 not.b   pais  -
6844628 fff8 not.b   das   -
6854630 fff8 not.b   dais  -
6864638 ffff not.b   adr16 -
6874639 ffff not.b   adr32 -
6884640 fff8 not.w   ds    -
6894650 fff8 not.w   ais   -
6904658 fff8 not.w   aips  -
6914660 fff8 not.w   pais  -
6924668 fff8 not.w   das   -
6934670 fff8 not.w   dais  -
6944678 ffff not.w   adr16 -
6954679 ffff not.w   adr32 -
6964680 fff8 not.l   ds    -
6974690 fff8 not.l   ais   -
6984698 fff8 not.l   aips  -
69946a0 fff8 not.l   pais  -
70046a8 fff8 not.l   das   -
70146b0 fff8 not.l   dais  -
70246b8 ffff not.l   adr16 -
70346b9 ffff not.l   adr32 -
70446c0 fff8 move    ds    sr
70546d0 fff8 move    ais   sr
70646d8 fff8 move    aips  sr
70746e0 fff8 move    pais  sr
70846e8 fff8 move    das   sr
70946f0 fff8 move    dais  sr
71046f8 ffff move    adr16 sr
71146f9 ffff move    adr32 sr
71246fa ffff move    dpc   sr
71346fb ffff move    dpci  sr
714
715# 4 cycles lost somewhere, check SR update vs. prefetch, check PC vs. berr
71646fc ffff move    i16u  sr
717   SR = IRD;
718   icount -= 4;
719   prefetch 4 4
720   prefetch_last 2 0
721
7224800 fff8 nbcd.b  ds    -
7234810 fff8 nbcd.b  ais   -
7244818 fff8 nbcd.b  aips  -
7254820 fff8 nbcd.b  pais  -
7264828 fff8 nbcd.b  das   -
7274830 fff8 nbcd.b  dais  -
7284838 ffff nbcd.b  adr16 -
7294839 ffff nbcd.b  adr32 -
7304840 fff8 swap    ds    -
7314850 fff8 pea     ais   -
7324868 fff8 pea     das   -
7334870 fff8 pea     dais  -
7344878 ffff pea     adr16 -
7354879 ffff pea     adr32 -
736487a ffff pea     dpc   -
737487b ffff pea     dpci  -
7384880 fff8 ext.w   ds    -
7394890 fff8 movem.w list  ais
74048a0 fff8 movem.w listp pais
74148a8 fff8 movem.w list  das
74248b0 fff8 movem.w list  dais
74348b8 ffff movem.w list  adr16
74448b9 ffff movem.w list  adr32
74548c0 fff8 ext.l   ds    -
74648d0 fff8 movem.l list  ais
74748e0 fff8 movem.l listp pais
74848e8 fff8 movem.l list  das
74948f0 fff8 movem.l list  dais
75048f8 ffff movem.l list  adr16
75148f9 ffff movem.l list  adr32
7524a00 fff8 tst.b   ds    -
7534a10 fff8 tst.b   ais   -
7544a18 fff8 tst.b   aips  -
7554a20 fff8 tst.b   pais  -
7564a28 fff8 tst.b   das   -
7574a30 fff8 tst.b   dais  -
7584a38 ffff tst.b   adr16 -
7594a39 ffff tst.b   adr32 -
7604a3a ffff tst.b   dpc   -
7614a3b ffff tst.b   dpci  -
7624a40 fff8 tst.w   ds    -
7634a48 fff8 tst.w   as    -
7644a50 fff8 tst.w   ais   -
7654a58 fff8 tst.w   aips  -
7664a60 fff8 tst.w   pais  -
7674a68 fff8 tst.w   das   -
7684a70 fff8 tst.w   dais  -
7694a78 ffff tst.w   adr16 -
7704a79 ffff tst.w   adr32 -
7714a7a ffff tst.w   dpc   -
7724a7b ffff tst.w   dpci  -
7734a80 fff8 tst.l   ds    -
7744a88 fff8 tst.l   as    -
7754a90 fff8 tst.l   ais   -
7764a98 fff8 tst.l   aips  -
7774aa0 fff8 tst.l   pais  -
7784aa8 fff8 tst.l   das   -
7794ab0 fff8 tst.l   dais  -
7804ab8 ffff tst.l   adr16 -
7814ab9 ffff tst.l   adr32 -
7824aba ffff tst.l   dpc   -
7834abb ffff tst.l   dpci  -
7844ac0 fff8 tas     ds    -
7854ad0 fff8 tas     ais   -
7864ad8 fff8 tas     aips  -
7874ae0 fff8 tas     pais  -
7884ae8 fff8 tas     das   -
7894af0 fff8 tas     dais  -
7904af8 ffff tas     adr16 -
7914af9 ffff tas     adr32 -
7924afc ffff illegal -     -
7934c90 fff8 movem.w ais   list
7944c98 fff8 movem.w aips  list
7954ca8 fff8 movem.w das   list
7964cb0 fff8 movem.w dais  list
7974cb8 ffff movem.w adr16 list
7984cb9 ffff movem.w adr32 list
7994cba ffff movem.w dpc   list
8004cbb ffff movem.w dpci  list
8014cd0 fff8 movem.l ais   list
8024cd8 fff8 movem.l aips  list
8034ce8 fff8 movem.l das   list
8044cf0 fff8 movem.l dais  list
8054cf8 ffff movem.l adr16 list
8064cf9 ffff movem.l adr32 list
8074cfa ffff movem.l dpc   list
8084cfb ffff movem.l dpci  list
8094e40 fff0 trap    imm4  -
8104e50 fff8 link    as    imm16
8114e58 fff8 unlk    as    -
8124e60 fff8 move    as    usp
8134e68 fff8 move    usp   as
814
815# Add callback
8164e70 ffff reset   -     -
817   icount -= 128;
818   // Prefetch is known to be redone by reset
819   prefetch 2 2
820   prefetch_last 2 0
821
8224e71 ffff nop     -     -
823   prefetch_last 2 2
824
8254e72 ffff stop    i16u  -
8264e73 ffff rte     -     -
8274e75 ffff rts     -     -
8284e76 ffff trapv   -     -
8294e77 ffff rtr     -     -
8304e90 fff8 jsr     ais   -
8314ea8 fff8 jsr     das   -
8324eb0 fff8 jsr     dais  -
8334eb8 ffff jsr     adr16 -
8344eb9 ffff jsr     adr32 -
8354eba ffff jsr     dpc   -
8364ebb ffff jsr     dpci  -
8374ed0 fff8 jmp     ais   -
8384ee8 fff8 jmp     das   -
8394ef0 fff8 jmp     dais  -
8404ef8 ffff jmp     adr16 -
8414ef9 ffff jmp     adr32 -
8424efa ffff jmp     dpc   -
8434efb ffff jmp     dpci  -
8445000 f1f8 addq.b  imm3  ds
8455008 f1f8 addq.b  imm3  as
8465010 f1f8 addq.b  imm3  ais
8475018 f1f8 addq.b  imm3  aips
8485020 f1f8 addq.b  imm3  pais
8495028 f1f8 addq.b  imm3  das
8505030 f1f8 addq.b  imm3  dais
8515038 f1ff addq.b  imm3  adr16
8525039 f1ff addq.b  imm3  adr32
8535040 f1f8 addq.w  imm3  ds
8545048 f1f8 addq.w  imm3  as
8555050 f1f8 addq.w  imm3  ais
8565058 f1f8 addq.w  imm3  aips
8575060 f1f8 addq.w  imm3  pais
8585068 f1f8 addq.w  imm3  das
8595070 f1f8 addq.w  imm3  dais
8605078 f1ff addq.w  imm3  adr16
8615079 f1ff addq.w  imm3  adr32
8625080 f1f8 addq.l  imm3  ds
8635088 f1f8 addq.l  imm3  as
8645090 f1f8 addq.l  imm3  ais
8655098 f1f8 addq.l  imm3  aips
86650a0 f1f8 addq.l  imm3  pais
86750a8 f1f8 addq.l  imm3  das
86850b0 f1f8 addq.l  imm3  dais
86950b8 f1ff addq.l  imm3  adr16
87050b9 f1ff addq.l  imm3  adr32
87150c0 fff8 st      ds    -
87250c8 fff8 dbt     ds    rel16
87350d0 fff8 st      ais   -
87450d8 fff8 st      aips  -
87550e0 fff8 st      pais  -
87650e8 fff8 st      das   -
87750f0 fff8 st      dais  -
87850f8 ffff st      adr16 -
87950f9 ffff st      adr32 -
8805100 f1f8 subq.b  imm3  ds
8815108 f1f8 subq.b  imm3  as
8825110 f1f8 subq.b  imm3  ais
8835118 f1f8 subq.b  imm3  aips
8845120 f1f8 subq.b  imm3  pais
8855128 f1f8 subq.b  imm3  das
8865130 f1f8 subq.b  imm3  dais
8875138 f1ff subq.b  imm3  adr16
8885139 f1ff subq.b  imm3  adr32
8895140 f1f8 subq.w  imm3  ds
8905148 f1f8 subq.w  imm3  as
8915150 f1f8 subq.w  imm3  ais
8925158 f1f8 subq.w  imm3  aips
8935160 f1f8 subq.w  imm3  pais
8945168 f1f8 subq.w  imm3  das
8955170 f1f8 subq.w  imm3  dais
8965178 f1ff subq.w  imm3  adr16
8975179 f1ff subq.w  imm3  adr32
8985180 f1f8 subq.l  imm3  ds
8995188 f1f8 subq.l  imm3  as
9005190 f1f8 subq.l  imm3  ais
9015198 f1f8 subq.l  imm3  aips
90251a0 f1f8 subq.l  imm3  pais
90351a8 f1f8 subq.l  imm3  das
90451b0 f1f8 subq.l  imm3  dais
90551b8 f1ff subq.l  imm3  adr16
90651b9 f1ff subq.l  imm3  adr32
90751c0 fff8 sf      ds    -
90851c8 fff8 dbra    ds    rel16
90951d0 fff8 sf      ais   -
91051d8 fff8 sf      aips  -
91151e0 fff8 sf      pais  -
91251e8 fff8 sf      das   -
91351f0 fff8 sf      dais  -
91451f8 ffff sf      adr16 -
91551f9 ffff sf      adr32 -
91652c0 fff8 shi     ds    -
91752c8 fff8 dbhi    ds    rel16
91852d0 fff8 shi     ais   -
91952d8 fff8 shi     aips  -
92052e0 fff8 shi     pais  -
92152e8 fff8 shi     das   -
92252f0 fff8 shi     dais  -
92352f8 ffff shi     adr16 -
92452f9 ffff shi     adr32 -
92553c0 fff8 sls     ds    -
92653c8 fff8 dbls    ds    rel16
92753d0 fff8 sls     ais   -
92853d8 fff8 sls     aips  -
92953e0 fff8 sls     pais  -
93053e8 fff8 sls     das   -
93153f0 fff8 sls     dais  -
93253f8 ffff sls     adr16 -
93353f9 ffff sls     adr32 -
93454c0 fff8 scc     ds    -
93554c8 fff8 dbcc    ds    rel16
93654d0 fff8 scc     ais   -
93754d8 fff8 scc     aips  -
93854e0 fff8 scc     pais  -
93954e8 fff8 scc     das   -
94054f0 fff8 scc     dais  -
94154f8 ffff scc     adr16 -
94254f9 ffff scc     adr32 -
94355c0 fff8 scs     ds    -
94455c8 fff8 dbcs    ds    rel16
94555d0 fff8 scs     ais   -
94655d8 fff8 scs     aips  -
94755e0 fff8 scs     pais  -
94855e8 fff8 scs     das   -
94955f0 fff8 scs     dais  -
95055f8 ffff scs     adr16 -
95155f9 ffff scs     adr32 -
95256c0 fff8 sne     ds    -
95356c8 fff8 dbne    ds    rel16
95456d0 fff8 sne     ais   -
95556d8 fff8 sne     aips  -
95656e0 fff8 sne     pais  -
95756e8 fff8 sne     das   -
95856f0 fff8 sne     dais  -
95956f8 ffff sne     adr16 -
96056f9 ffff sne     adr32 -
96157c0 fff8 seq     ds    -
96257c8 fff8 dbeq    ds    rel16
96357d0 fff8 seq     ais   -
96457d8 fff8 seq     aips  -
96557e0 fff8 seq     pais  -
96657e8 fff8 seq     das   -
96757f0 fff8 seq     dais  -
96857f8 ffff seq     adr16 -
96957f9 ffff seq     adr32 -
97058c0 fff8 svc     ds    -
97158c8 fff8 dbvc    ds    rel16
97258d0 fff8 svc     ais   -
97358d8 fff8 svc     aips  -
97458e0 fff8 svc     pais  -
97558e8 fff8 svc     das   -
97658f0 fff8 svc     dais  -
97758f8 ffff svc     adr16 -
97858f9 ffff svc     adr32 -
97959c0 fff8 svs     ds    -
98059c8 fff8 dbvs    ds    rel16
98159d0 fff8 svs     ais   -
98259d8 fff8 svs     aips  -
98359e0 fff8 svs     pais  -
98459e8 fff8 svs     das   -
98559f0 fff8 svs     dais  -
98659f8 ffff svs     adr16 -
98759f9 ffff svs     adr32 -
9885ac0 fff8 spl     ds    -
9895ac8 fff8 dbpl    ds    rel16
9905ad0 fff8 spl     ais   -
9915ad8 fff8 spl     aips  -
9925ae0 fff8 spl     pais  -
9935ae8 fff8 spl     das   -
9945af0 fff8 spl     dais  -
9955af8 ffff spl     adr16 -
9965af9 ffff spl     adr32 -
9975bc0 fff8 smi     ds    -
9985bc8 fff8 dbmi    ds    rel16
9995bd0 fff8 smi     ais   -
10005bd8 fff8 smi     aips  -
10015be0 fff8 smi     pais  -
10025be8 fff8 smi     das   -
10035bf0 fff8 smi     dais  -
10045bf8 ffff smi     adr16 -
10055bf9 ffff smi     adr32 -
10065cc0 fff8 sge     ds    -
10075cc8 fff8 dbge    ds    rel16
10085cd0 fff8 sge     ais   -
10095cd8 fff8 sge     aips  -
10105ce0 fff8 sge     pais  -
10115ce8 fff8 sge     das   -
10125cf0 fff8 sge     dais  -
10135cf8 ffff sge     adr16 -
10145cf9 ffff sge     adr32 -
10155dc0 fff8 slt     ds    -
10165dc8 fff8 dblt    ds    rel16
10175dd0 fff8 slt     ais   -
10185dd8 fff8 slt     aips  -
10195de0 fff8 slt     pais  -
10205de8 fff8 slt     das   -
10215df0 fff8 slt     dais  -
10225df8 ffff slt     adr16 -
10235df9 ffff slt     adr32 -
10245ec0 fff8 sgt     ds    -
10255ec8 fff8 dbgt    ds    rel16
10265ed0 fff8 sgt     ais   -
10275ed8 fff8 sgt     aips  -
10285ee0 fff8 sgt     pais  -
10295ee8 fff8 sgt     das   -
10305ef0 fff8 sgt     dais  -
10315ef8 ffff sgt     adr16 -
10325ef9 ffff sgt     adr32 -
10335fc0 fff8 sle     ds    -
10345fc8 fff8 dble    ds    rel16
10355fd0 fff8 sle     ais   -
10365fd8 fff8 sle     aips  -
10375fe0 fff8 sle     pais  -
10385fe8 fff8 sle     das   -
10395ff0 fff8 sle     dais  -
10405ff8 ffff sle     adr16 -
10415ff9 ffff sle     adr32 -
10426000 ff00 bra     rel8  -
10436100 ff00 bsr     rel8  -
10446200 ff00 bhi     rel8  -
10456300 ff00 bls     rel8  -
10466400 ff00 bcc     rel8  -
10476500 ff00 bcs     rel8  -
10486600 ff00 bne     rel8  -
10496700 ff00 beq     rel8  -
10506800 ff00 bvc     rel8  -
10516900 ff00 bvs     rel8  -
10526a00 ff00 bpl     rel8  -
10536b00 ff00 bmi     rel8  -
10546c00 ff00 bge     rel8  -
10556d00 ff00 blt     rel8  -
10566e00 ff00 bgt     rel8  -
10576f00 ff00 ble     rel8  -
10587000 f100 moveq   imm8o dd
10598000 f1f8 or.b    ds    dd
10608010 f1f8 or.b    ais   dd
10618018 f1f8 or.b    aips  dd
10628020 f1f8 or.b    pais  dd
10638028 f1f8 or.b    das   dd
10648030 f1f8 or.b    dais  dd
10658038 f1ff or.b    adr16 dd
10668039 f1ff or.b    adr32 dd
1067803a f1ff or.b    dpc   dd
1068803b f1ff or.b    dpci  dd
1069803c f1ff or.b    imm8  dd
10708040 f1f8 or.w    ds    dd
10718050 f1f8 or.w    ais   dd
10728058 f1f8 or.w    aips  dd
10738060 f1f8 or.w    pais  dd
10748068 f1f8 or.w    das   dd
10758070 f1f8 or.w    dais  dd
10768078 f1ff or.w    adr16 dd
10778079 f1ff or.w    adr32 dd
1078807a f1ff or.w    dpc   dd
1079807b f1ff or.w    dpci  dd
1080807c f1ff or.w    imm16 dd
10818080 f1f8 or.l    ds    dd
10828090 f1f8 or.l    ais   dd
10838098 f1f8 or.l    aips  dd
108480a0 f1f8 or.l    pais  dd
108580a8 f1f8 or.l    das   dd
108680b0 f1f8 or.l    dais  dd
108780b8 f1ff or.l    adr16 dd
108880b9 f1ff or.l    adr32 dd
108980ba f1ff or.l    dpc   dd
109080bb f1ff or.l    dpci  dd
109180bc f1ff or.l    imm32 dd
109280c0 f1f8 divu.w  ds    dd
109380d0 f1f8 divu.w  ais   dd
109480d8 f1f8 divu.w  aips  dd
109580e0 f1f8 divu.w  pais  dd
109680e8 f1f8 divu.w  das   dd
109780f0 f1f8 divu.w  dais  dd
109880f8 f1ff divu.w  adr16 dd
109980f9 f1ff divu.w  adr32 dd
110080fa f1ff divu.w  dpc   dd
110180fb f1ff divu.w  dpci  dd
110280fc f1ff divu.w  imm16 dd
11038100 f1f8 sbcd    ds    dd
11048108 f1f8 sbcd    pais  paid
11058110 f1f8 or.b    dd    ais
11068118 f1f8 or.b    dd    aips
11078120 f1f8 or.b    dd    pais
11088128 f1f8 or.b    dd    das
11098130 f1f8 or.b    dd    dais
11108138 f1ff or.b    dd    adr16
11118139 f1ff or.b    dd    adr32
11128150 f1f8 or.w    dd    ais
11138158 f1f8 or.w    dd    aips
11148160 f1f8 or.w    dd    pais
11158168 f1f8 or.w    dd    das
11168170 f1f8 or.w    dd    dais
11178178 f1ff or.w    dd    adr16
11188179 f1ff or.w    dd    adr32
11198190 f1f8 or.l    dd    ais
11208198 f1f8 or.l    dd    aips
112181a0 f1f8 or.l    dd    pais
112281a8 f1f8 or.l    dd    das
112381b0 f1f8 or.l    dd    dais
112481b8 f1ff or.l    dd    adr16
112581b9 f1ff or.l    dd    adr32
112681c0 f1f8 divs.w  ds    dd
112781d0 f1f8 divs.w  ais   dd
112881d8 f1f8 divs.w  aips  dd
112981e0 f1f8 divs.w  pais  dd
113081e8 f1f8 divs.w  das   dd
113181f0 f1f8 divs.w  dais  dd
113281f8 f1ff divs.w  adr16 dd
113381f9 f1ff divs.w  adr32 dd
113481fa f1ff divs.w  dpc   dd
113581fb f1ff divs.w  dpci  dd
113681fc f1ff divs.w  imm16 dd
1137
11389000 f1f8 sub.b   ds    dd
11399010 f1f8 sub.b   ais   dd
11409018 f1f8 sub.b   aips  dd
11419020 f1f8 sub.b   pais  dd
11429028 f1f8 sub.b   das   dd
11439030 f1f8 sub.b   dais  dd
11449038 f1ff sub.b   adr16 dd
11459039 f1ff sub.b   adr32 dd
1146903a f1ff sub.b   dpc   dd
1147903b f1ff sub.b   dpci  dd
1148903c f1ff sub.b   imm8  dd
11499040 f1f8 sub.w   ds    dd
11509048 f1f8 sub.w   as    dd
11519050 f1f8 sub.w   ais   dd
11529058 f1f8 sub.w   aips  dd
11539060 f1f8 sub.w   pais  dd
11549068 f1f8 sub.w   das   dd
11559070 f1f8 sub.w   dais  dd
11569078 f1ff sub.w   adr16 dd
11579079 f1ff sub.w   adr32 dd
1158907a f1ff sub.w   dpc   dd
1159907b f1ff sub.w   dpci  dd
1160907c f1ff sub.w   imm16 dd
11619080 f1f8 sub.l   ds    dd
11629088 f1f8 sub.l   as    dd
11639090 f1f8 sub.l   ais   dd
11649098 f1f8 sub.l   aips  dd
116590a0 f1f8 sub.l   pais  dd
116690a8 f1f8 sub.l   das   dd
116790b0 f1f8 sub.l   dais  dd
116890b8 f1ff sub.l   adr16 dd
116990b9 f1ff sub.l   adr32 dd
117090ba f1ff sub.l   dpc   dd
117190bb f1ff sub.l   dpci  dd
117290bc f1ff sub.l   imm32 dd
117390c0 f1f8 suba.w  ds    ad
117490c8 f1f8 suba.w  as    ad
117590d0 f1f8 suba.w  ais   ad
117690d8 f1f8 suba.w  aips  ad
117790e0 f1f8 suba.w  pais  ad
117890e8 f1f8 suba.w  das   ad
117990f0 f1f8 suba.w  dais  ad
118090f8 f1ff suba.w  adr16 ad
118190f9 f1ff suba.w  adr32 ad
118290fa f1ff suba.w  dpc   ad
118390fb f1ff suba.w  dpci  ad
118490fc f1ff suba.w  imm16 ad
11859100 f1f8 subx.b  ds    dd
11869108 f1f8 subx.b  pais  paid
11879110 f1f8 sub.b   dd    ais
11889118 f1f8 sub.b   dd    aips
11899120 f1f8 sub.b   dd    pais
11909128 f1f8 sub.b   dd    das
11919130 f1f8 sub.b   dd    dais
11929138 f1ff sub.b   dd    adr16
11939139 f1ff sub.b   dd    adr32
11949140 f1f8 subx.w  ds    dd
11959148 f1f8 subx.w  pais  paid
11969150 f1f8 sub.w   dd    ais
11979158 f1f8 sub.w   dd    aips
11989160 f1f8 sub.w   dd    pais
11999168 f1f8 sub.w   dd    das
12009170 f1f8 sub.w   dd    dais
12019178 f1ff sub.w   dd    adr16
12029179 f1ff sub.w   dd    adr32
12039180 f1f8 subx.l  ds    dd
12049188 f1f8 subx.l  pais  paid
12059190 f1f8 sub.l   dd    ais
12069198 f1f8 sub.l   dd    aips
120791a0 f1f8 sub.l   dd    pais
120891a8 f1f8 sub.l   dd    das
120991b0 f1f8 sub.l   dd    dais
121091b8 f1ff sub.l   dd    adr16
121191b9 f1ff sub.l   dd    adr32
121291c0 f1f8 suba.l  ds    ad
121391c8 f1f8 suba.l  as    ad
121491d0 f1f8 suba.l  ais   ad
121591d8 f1f8 suba.l  aips  ad
121691e0 f1f8 suba.l  pais  ad
121791e8 f1f8 suba.l  das   ad
121891f0 f1f8 suba.l  dais  ad
121991f8 f1ff suba.l  adr16 ad
122091f9 f1ff suba.l  adr32 ad
122191fa f1ff suba.l  dpc   ad
122291fb f1ff suba.l  dpci  ad
122391fc f1ff suba.l  imm32 ad
1224a000 f000 linea   imm12 -
1225b000 f1f8 cmp.b   ds    dd
1226b010 f1f8 cmp.b   ais   dd
1227b018 f1f8 cmp.b   aips  dd
1228b020 f1f8 cmp.b   pais  dd
1229b028 f1f8 cmp.b   das   dd
1230b030 f1f8 cmp.b   dais  dd
1231b038 f1ff cmp.b   adr16 dd
1232b039 f1ff cmp.b   adr32 dd
1233b03a f1ff cmp.b   dpc   dd
1234b03b f1ff cmp.b   dpci  dd
1235b03c f1ff cmp.b   imm8  dd
1236b040 f1f8 cmp.w   ds    dd
1237b048 f1f8 cmp.w   as    dd
1238b050 f1f8 cmp.w   ais   dd
1239b058 f1f8 cmp.w   aips  dd
1240b060 f1f8 cmp.w   pais  dd
1241b068 f1f8 cmp.w   das   dd
1242b070 f1f8 cmp.w   dais  dd
1243b078 f1ff cmp.w   adr16 dd
1244b079 f1ff cmp.w   adr32 dd
1245b07a f1ff cmp.w   dpc   dd
1246b07b f1ff cmp.w   dpci  dd
1247b07c f1ff cmp.w   imm16 dd
1248b080 f1f8 cmp.l   ds    dd
1249b088 f1f8 cmp.l   as    dd
1250b090 f1f8 cmp.l   ais   dd
1251b098 f1f8 cmp.l   aips  dd
1252b0a0 f1f8 cmp.l   pais  dd
1253b0a8 f1f8 cmp.l   das   dd
1254b0b0 f1f8 cmp.l   dais  dd
1255b0b8 f1ff cmp.l   adr16 dd
1256b0b9 f1ff cmp.l   adr32 dd
1257b0ba f1ff cmp.l   dpc   dd
1258b0bb f1ff cmp.l   dpci  dd
1259b0bc f1ff cmp.l   imm32 dd
1260b0c0 f1f8 cmpa.w  ds    ad
1261b0c8 f1f8 cmpa.w  as    ad
1262b0d0 f1f8 cmpa.w  ais   ad
1263b0d8 f1f8 cmpa.w  aips  ad
1264b0e0 f1f8 cmpa.w  pais  ad
1265b0e8 f1f8 cmpa.w  das   ad
1266b0f0 f1f8 cmpa.w  dais  ad
1267b0f8 f1ff cmpa.w  adr16 ad
1268b0f9 f1ff cmpa.w  adr32 ad
1269b0fa f1ff cmpa.w  dpc   ad
1270b0fb f1ff cmpa.w  dpci  ad
1271b0fc f1ff cmpa.w  imm16 ad
1272b100 f1f8 eor.b   dd    ds
1273b108 f1f8 cmpm.b  aips  aipd
1274b110 f1f8 eor.b   dd    ais
1275b118 f1f8 eor.b   dd    aips
1276b120 f1f8 eor.b   dd    pais
1277b128 f1f8 eor.b   dd    das
1278b130 f1f8 eor.b   dd    dais
1279b138 f1ff eor.b   dd    adr16
1280b139 f1ff eor.b   dd    adr32
1281b140 f1f8 eor.w   dd    ds
1282b148 f1f8 cmpm.w  aips  aipd
1283b150 f1f8 eor.w   dd    ais
1284b158 f1f8 eor.w   dd    aips
1285b160 f1f8 eor.w   dd    pais
1286b168 f1f8 eor.w   dd    das
1287b170 f1f8 eor.w   dd    dais
1288b178 f1ff eor.w   dd    adr16
1289b179 f1ff eor.w   dd    adr32
1290b180 f1f8 eor.l   dd    ds
1291b188 f1f8 cmpm.l  aips  aipd
1292b190 f1f8 eor.l   dd    ais
1293b198 f1f8 eor.l   dd    aips
1294b1a0 f1f8 eor.l   dd    pais
1295b1a8 f1f8 eor.l   dd    das
1296b1b0 f1f8 eor.l   dd    dais
1297b1b8 f1ff eor.l   dd    adr16
1298b1b9 f1ff eor.l   dd    adr32
1299b1c0 f1f8 cmpa.l  ds    ad
1300b1c8 f1f8 cmpa.l  as    ad
1301b1d0 f1f8 cmpa.l  ais   ad
1302b1d8 f1f8 cmpa.l  aips  ad
1303b1e0 f1f8 cmpa.l  pais  ad
1304b1e8 f1f8 cmpa.l  das   ad
1305b1f0 f1f8 cmpa.l  dais  ad
1306b1f8 f1ff cmpa.l  adr16 ad
1307b1f9 f1ff cmpa.l  adr32 ad
1308b1fa f1ff cmpa.l  dpc   ad
1309b1fb f1ff cmpa.l  dpci  ad
1310b1fc f1ff cmpa.l  imm32 ad
1311c000 f1f8 and.b   ds    dd
1312c010 f1f8 and.b   ais   dd
1313c018 f1f8 and.b   aips  dd
1314c020 f1f8 and.b   pais  dd
1315c028 f1f8 and.b   das   dd
1316c030 f1f8 and.b   dais  dd
1317c038 f1ff and.b   adr16 dd
1318c039 f1ff and.b   adr32 dd
1319c03a f1ff and.b   dpc   dd
1320c03b f1ff and.b   dpci  dd
1321c03c f1ff and.b   imm8  dd
1322c040 f1f8 and.w   ds    dd
1323c050 f1f8 and.w   ais   dd
1324c058 f1f8 and.w   aips  dd
1325c060 f1f8 and.w   pais  dd
1326c068 f1f8 and.w   das   dd
1327c070 f1f8 and.w   dais  dd
1328c078 f1ff and.w   adr16 dd
1329c079 f1ff and.w   adr32 dd
1330c07a f1ff and.w   dpc   dd
1331c07b f1ff and.w   dpci  dd
1332c07c f1ff and.w   imm16 dd
1333c080 f1f8 and.l   ds    dd
1334c090 f1f8 and.l   ais   dd
1335c098 f1f8 and.l   aips  dd
1336c0a0 f1f8 and.l   pais  dd
1337c0a8 f1f8 and.l   das   dd
1338c0b0 f1f8 and.l   dais  dd
1339c0b8 f1ff and.l   adr16 dd
1340c0b9 f1ff and.l   adr32 dd
1341c0ba f1ff and.l   dpc   dd
1342c0bb f1ff and.l   dpci  dd
1343c0bc f1ff and.l   imm32 dd
1344c0c0 f1f8 mulu.w  ds    dd
1345c0d0 f1f8 mulu.w  ais   dd
1346c0d8 f1f8 mulu.w  aips  dd
1347c0e0 f1f8 mulu.w  pais  dd
1348c0e8 f1f8 mulu.w  das   dd
1349c0f0 f1f8 mulu.w  dais  dd
1350c0f8 f1ff mulu.w  adr16 dd
1351c0f9 f1ff mulu.w  adr32 dd
1352c0fa f1ff mulu.w  dpc   dd
1353c0fb f1ff mulu.w  dpci  dd
1354c0fc f1ff mulu.w  imm16 dd
1355c100 f1f8 abcd    ds    dd
1356c108 f1f8 abcd    pais  paid
1357c110 f1f8 and.b   dd    ais
1358c118 f1f8 and.b   dd    aips
1359c120 f1f8 and.b   dd    pais
1360c128 f1f8 and.b   dd    das
1361c130 f1f8 and.b   dd    dais
1362c138 f1ff and.b   dd    adr16
1363c139 f1ff and.b   dd    adr32
1364c140 f1ff exg     dd    ds
1365c148 f1ff exg     ad    as
1366c150 f1f8 and.w   dd    ais
1367c158 f1f8 and.w   dd    aips
1368c160 f1f8 and.w   dd    pais
1369c168 f1f8 and.w   dd    das
1370c170 f1f8 and.w   dd    dais
1371c178 f1ff and.w   dd    adr16
1372c179 f1ff and.w   dd    adr32
1373c188 f1ff exg     dd    as
1374c190 f1f8 and.l   dd    ais
1375c198 f1f8 and.l   dd    aips
1376c1a0 f1f8 and.l   dd    pais
1377c1a8 f1f8 and.l   dd    das
1378c1b0 f1f8 and.l   dd    dais
1379c1b8 f1ff and.l   dd    adr16
1380c1b9 f1ff and.l   dd    adr32
1381c1c0 f1f8 muls.w  ds    dd
1382c1d0 f1f8 muls.w  ais   dd
1383c1d8 f1f8 muls.w  aips  dd
1384c1e0 f1f8 muls.w  pais  dd
1385c1e8 f1f8 muls.w  das   dd
1386c1f0 f1f8 muls.w  dais  dd
1387c1f8 f1ff muls.w  adr16 dd
1388c1f9 f1ff muls.w  adr32 dd
1389c1fa f1ff muls.w  dpc   dd
1390c1fb f1ff muls.w  dpci  dd
1391c1fc f1ff muls.w  imm16 dd
1392d000 f1f8 add.b   ds    dd
1393d010 f1f8 add.b   ais   dd
1394d018 f1f8 add.b   aips  dd
1395d020 f1f8 add.b   pais  dd
1396d028 f1f8 add.b   das   dd
1397d030 f1f8 add.b   dais  dd
1398d038 f1ff add.b   adr16 dd
1399d039 f1ff add.b   adr32 dd
1400d03a f1ff add.b   dpc   dd
1401d03b f1ff add.b   dpci  dd
1402d03c f1ff add.b   imm8  dd
1403d040 f1f8 add.w   ds    dd
1404d048 f1f8 add.w   as    dd
1405d050 f1f8 add.w   ais   dd
1406d058 f1f8 add.w   aips  dd
1407d060 f1f8 add.w   pais  dd
1408d068 f1f8 add.w   das   dd
1409d070 f1f8 add.w   dais  dd
1410d078 f1ff add.w   adr16 dd
1411d079 f1ff add.w   adr32 dd
1412d07a f1ff add.w   dpc   dd
1413d07b f1ff add.w   dpci  dd
1414d07c f1ff add.w   imm16 dd
1415d080 f1f8 add.l   ds    dd
1416d088 f1f8 add.l   as    dd
1417d090 f1f8 add.l   ais   dd
1418d098 f1f8 add.l   aips  dd
1419d0a0 f1f8 add.l   pais  dd
1420d0a8 f1f8 add.l   das   dd
1421d0b0 f1f8 add.l   dais  dd
1422d0b8 f1ff add.l   adr16 dd
1423d0b9 f1ff add.l   adr32 dd
1424d0ba f1ff add.l   dpc   dd
1425d0bb f1ff add.l   dpci  dd
1426d0bc f1ff add.l   imm32 dd
1427d0c0 f1f8 adda.w  ds    ad
1428d0c8 f1f8 adda.w  as    ad
1429d0d0 f1f8 adda.w  ais   ad
1430d0d8 f1f8 adda.w  aips  ad
1431d0e0 f1f8 adda.w  pais  ad
1432d0e8 f1f8 adda.w  das   ad
1433d0f0 f1f8 adda.w  dais  ad
1434d0f8 f1ff adda.w  adr16 ad
1435d0f9 f1ff adda.w  adr32 ad
1436d0fa f1ff adda.w  dpc   ad
1437d0fb f1ff adda.w  dpci  ad
1438d0fc f1ff adda.w  imm16 ad
1439d100 f1f8 addx.b  ds    dd
1440d108 f1f8 addx.b  pais  paid
1441d110 f1f8 add.b   dd    ais
1442d118 f1f8 add.b   dd    aips
1443d120 f1f8 add.b   dd    pais
1444d128 f1f8 add.b   dd    das
1445d130 f1f8 add.b   dd    dais
1446d138 f1ff add.b   dd    adr16
1447d139 f1ff add.b   dd    adr32
1448d140 f1f8 addx.w  ds    dd
1449d148 f1f8 addx.w  pais  paid
1450d150 f1f8 add.w   dd    ais
1451d158 f1f8 add.w   dd    aips
1452d160 f1f8 add.w   dd    pais
1453d168 f1f8 add.w   dd    das
1454d170 f1f8 add.w   dd    dais
1455d178 f1ff add.w   dd    adr16
1456d179 f1ff add.w   dd    adr32
1457d180 f1f8 addx.l  ds    dd
1458d188 f1f8 addx.l  pais  paid
1459d190 f1f8 add.l   dd    ais
1460d198 f1f8 add.l   dd    aips
1461d1a0 f1f8 add.l   dd    pais
1462d1a8 f1f8 add.l   dd    das
1463d1b0 f1f8 add.l   dd    dais
1464d1b8 f1ff add.l   dd    adr16
1465d1b9 f1ff add.l   dd    adr32
1466d1c0 f1f8 adda.l  ds    ad
1467d1c8 f1f8 adda.l  as    ad
1468d1d0 f1f8 adda.l  ais   ad
1469d1d8 f1f8 adda.l  aips  ad
1470d1e0 f1f8 adda.l  pais  ad
1471d1e8 f1f8 adda.l  das   ad
1472d1f0 f1f8 adda.l  dais  ad
1473d1f8 f1ff adda.l  adr16 ad
1474d1f9 f1ff adda.l  adr32 ad
1475d1fa f1ff adda.l  dpc   ad
1476d1fb f1ff adda.l  dpci  ad
1477d1fc f1ff adda.l  imm32 ad
1478e000 f1f8 asr.b   imm3  ds
1479e008 f1f8 lsr.b   imm3  ds
1480e010 f1f8 roxr.b  imm3  ds
1481e018 f1f8 ror.b   imm3  ds
1482e020 f1f8 asr.b   dd    ds
1483e028 f1f8 lsr.b   dd    ds
1484e030 f1f8 roxr.b  dd    ds
1485e038 f1f8 ror.b   dd    ds
1486e040 f1f8 asr.w   imm3  ds
1487e048 f1f8 lsr.w   imm3  ds
1488e050 f1f8 roxr.w  imm3  ds
1489e058 f1f8 ror.w   imm3  ds
1490e060 f1f8 asr.w   dd    ds
1491e068 f1f8 lsr.w   dd    ds
1492e070 f1f8 roxr.w  dd    ds
1493e078 f1f8 ror.w   dd    ds
1494e080 f1f8 asr.l   imm3  ds
1495e088 f1f8 lsr.l   imm3  ds
1496e090 f1f8 roxr.l  imm3  ds
1497e098 f1f8 ror.l   imm3  ds
1498e0a0 f1f8 asr.l   dd    ds
1499e0a8 f1f8 lsr.l   dd    ds
1500e0b0 f1f8 roxr.l  dd    ds
1501e0b8 f1f8 ror.l   dd    ds
1502e0d0 fff8 asr     ais   -
1503e0d8 fff8 asr     aips  -
1504e0e0 fff8 asr     pais  -
1505e0e8 fff8 asr     das   -
1506e0f0 fff8 asr     dais  -
1507e0f8 ffff asr     adr16 -
1508e0f9 ffff asr     adr32 -
1509e100 f1f8 asl.b   imm3  ds
1510e108 f1f8 lsl.b   imm3  ds
1511e110 f1f8 roxl.b  imm3  ds
1512e118 f1f8 rol.b   imm3  ds
1513e120 f1f8 asl.b   dd    ds
1514e128 f1f8 lsl.b   dd    ds
1515e130 f1f8 roxl.b  dd    ds
1516e138 f1f8 rol.b   dd    ds
1517e140 f1f8 asl.w   imm3  ds
1518e148 f1f8 lsl.w   imm3  ds
1519e150 f1f8 roxl.w  imm3  ds
1520e158 f1f8 rol.w   imm3  ds
1521e160 f1f8 asl.w   dd    ds
1522e168 f1f8 lsl.w   dd    ds
1523e170 f1f8 roxl.w  dd    ds
1524e178 f1f8 rol.w   dd    ds
1525e180 f1f8 asl.l   imm3  ds
1526e188 f1f8 lsl.l   imm3  ds
1527e190 f1f8 roxl.l  imm3  ds
1528e198 f1f8 rol.l   imm3  ds
1529e1a0 f1f8 asl.l   dd    ds
1530e1a8 f1f8 lsl.l   dd    ds
1531e1b0 f1f8 roxl.l  dd    ds
1532e1b8 f1f8 rol.l   dd    ds
1533e1d0 fff8 asl     ais   -
1534e1d8 fff8 asl     aips  -
1535e1e0 fff8 asl     pais  -
1536e1e8 fff8 asl     das   -
1537e1f0 fff8 asl     dais  -
1538e1f8 ffff asl     adr16 -
1539e1f9 ffff asl     adr32 -
1540e2d0 fff8 lsr     ais   -
1541e2d8 fff8 lsr     aips  -
1542e2e0 fff8 lsr     pais  -
1543e2e8 fff8 lsr     das   -
1544e2f0 fff8 lsr     dais  -
1545e2f8 ffff lsr     adr16 -
1546e2f9 ffff lsr     adr32 -
1547e3d0 fff8 lsl     ais   -
1548e3d8 fff8 lsl     aips  -
1549e3e0 fff8 lsl     pais  -
1550e3e8 fff8 lsl     das   -
1551e3f0 fff8 lsl     dais  -
1552e3f8 ffff lsl     adr16 -
1553e3f9 ffff lsl     adr32 -
1554e4d0 fff8 roxr    ais   -
1555e4d8 fff8 roxr    aips  -
1556e4e0 fff8 roxr    pais  -
1557e4e8 fff8 roxr    das   -
1558e4f0 fff8 roxr    dais  -
1559e4f8 ffff roxr    adr16 -
1560e4f9 ffff roxr    adr32 -
1561e5d0 fff8 roxl    ais   -
1562e5d8 fff8 roxl    aips  -
1563e5e0 fff8 roxl    pais  -
1564e5e8 fff8 roxl    das   -
1565e5f0 fff8 roxl    dais  -
1566e5f8 ffff roxl    adr16 -
1567e5f9 ffff roxl    adr32 -
1568e6d0 fff8 ror     ais   -
1569e6d8 fff8 ror     aips  -
1570e6e0 fff8 ror     pais  -
1571e6e8 fff8 ror     das   -
1572e6f0 fff8 ror     dais  -
1573e6f8 ffff ror     adr16 -
1574e6f9 ffff ror     adr32 -
1575e7d0 fff8 rol     ais   -
1576e7d8 fff8 rol     aips  -
1577e7e0 fff8 rol     pais  -
1578e7e8 fff8 rol     das   -
1579e7f0 fff8 rol     dais  -
1580e7f8 ffff rol     adr16 -
1581e7f9 ffff rol     adr32 -
1582f000 f000 linef   imm12 -
trunk/src/emu/cpu/m68000x/m68kmake.py
r0r243794
1#!/usr/bin/python
2
3USAGE = """
4Usage:
5%s m68000_device m68000.lst m68000.inc
6"""
7import sys
8
9def save_full_one(f, t, name, source):
10    print >>f, "void %s::%s_full()" % (t, name)
11    print >>f, "{"
12    for line in source:
13        print >>f, line
14    print >>f, "}"
15    print >>f
16
17def dasm_get_mode(amode):
18    if(amode == "-"):
19        return "DASM_none"
20    return "DASM_" + amode
21
22class Opcode:
23    def __init__(self, check, mask, name, amode1, amode2):
24        self.check = int(check, 16)
25        self.mask = int(mask, 16)
26        self.name = name
27        self.amode1 = amode1
28        self.amode2 = amode2
29        self.source = []
30
31    def add_source_line(self, line):
32        self.source.append(line)
33
34    def func_name(self):
35        name = self.name.replace(".", "_")
36        if self.amode1 != "-":
37            name = name + "_" + self.amode1
38        if self.amode2 != "-":
39            name = name + "_" + self.amode2
40        return name
41
42class Special:
43    def __init__(self, name):
44        self.name = name
45        self.source = []
46
47    def add_source_line(self, line):
48        self.source.append(line)
49
50class Macro:
51    def __init__(self, tokens):
52        self.name = tokens[1]
53        self.params = []
54        for i in range(2, len(tokens)):
55            self.params.append(tokens[i])
56        self.source = []
57
58    def add_source_line(self, line):
59        self.source.append(line)
60
61    def apply(self, target, tokens):
62        values = []
63        for i in range(1, len(tokens)):
64            values.append(tokens[i])
65        for i in range(0, len(self.source)):
66            line = self.source[i]
67            for i in range(0, len(self.params)):
68                line = line.replace(self.params[i], values[i])
69            target.add_source_line(line)
70
71class OpcodeList:
72    def __init__(self, fname):
73        self.opcode_info = []
74        self.opcode_by_id = {}
75        self.macros = {}
76        self.states = {}
77        try:
78            f = open(fname, "r")
79        except Exception, err:
80            print "Cannot read opcodes file %s [%s]" % (fname, err)
81            sys.exit(1)
82
83        opc = None
84        for line in f:
85            if line.startswith("#"):
86                continue
87            line = line.rstrip()
88            if not line:
89                continue
90            if line.startswith(" ") or line.startswith("\t"):
91                # append instruction to last opcode, maybe expand a macro
92                tokens = line.split()
93                if tokens[0] in self.macros:
94                    self.macros[tokens[0]].apply(inf, tokens)
95                else:
96                    inf.add_source_line(line)
97            else:
98                # New something
99                tokens = line.split()
100                #   Addressing mode header
101                if tokens[0] == "state":
102                    inf = Special(tokens[1])
103                    self.states[inf.name] = inf
104                elif tokens[0] == "macro":
105                    inf = Macro(tokens)
106                    self.macros[inf.name] = inf
107                else:
108                    inf = Opcode(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4])
109                    self.opcode_info.append(inf)
110                    i = 0
111                    m = inf.mask
112                    c = inf.check
113                    while(i < 0x10000):
114                        v = i | c
115                        if v in self.opcode_by_id:
116                            op1 = self.opcode_by_id[v]
117                            print "Collision at %04x %s %s %s vs. %s %s %s" % (v, op1.name, op1.amode1, op1.amode2, inf.name, inf.amode1, inf.amode2)
118                            sys.exit(1)
119                        self.opcode_by_id[v] = inf
120                        i = i + 1
121                        while(i & m):
122                            i = i + (i & m)                   
123   
124    def save_dasm(self, f, t):
125        print >>f, "const %s::disasm_entry %s::disasm_entries[] = {" % (t, t)
126        for i in range(0, len(self.opcode_info)):
127            opc = self.opcode_info[i]
128            flags = "0"
129            amode1 = dasm_get_mode(opc.amode1)
130            amode2 = dasm_get_mode(opc.amode2)
131            print >>f, "\t{ \"%s\", 0x%04x, 0x%04x, %s, %s, %s }," % (opc.name, opc.mask, opc.check, amode1, amode2, flags)
132        print >>f, "\t{ NULL, 0, 0, 0, 0, 0 }"
133        print >>f, "};"
134        print >>f
135   
136    def save_opcodes(self, f, t):
137        pf = ""
138        for opc in self.opcode_info:
139            save_full_one(f, t, opc.func_name(), opc.source)
140        save_full_one(f, t, "state_reset", self.states["reset"].source)
141   
142    def save_exec(self, f, t):
143        print >>f, "void %s::do_exec_full()" % t
144        print >>f, "{"
145        print >>f, "\tswitch(inst_state) {"
146        for i in range(0x00000, 0x10000):
147            if i in self.opcode_by_id:
148                print >>f, "\tcase 0x%04x: %s_full(); break;" % (i, self.opcode_by_id[i].func_name())
149            else:
150                print >>f, "\tcase 0x%04x: illegal_full(); break;" % i
151        print >>f, "\tcase STATE_RESET: state_reset_full(); break;"
152        print >>f, "\t}"
153        print >>f, "}"
154
155def main(argv):
156    if len(argv) != 4:
157        print USAGE % argv[0]
158        return 1
159   
160    t = argv[1]
161    opcodes = OpcodeList(argv[2])
162
163    try:
164        f = open(argv[3], "w")
165    except Exception, err:
166        logging.error("cannot write file %s [%s]", fname, err)
167        sys.exit(1)
168   
169    opcodes.save_dasm(f, t)
170    print >>f
171    opcodes.save_opcodes(f, t)
172    print >>f
173    opcodes.save_exec(f, t)
174    f.close()
175
176# ======================================================================
177if __name__ == "__main__":
178    sys.exit(main(sys.argv))
179
trunk/src/mess/drivers/atarist.c
r243793r243794
423423
424424WRITE16_MEMBER( st_state::berr_w )
425425{
426   m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
427   m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
426   abort();
427   //   m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
428   //   m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
428429}
429430
430431READ16_MEMBER( st_state::berr_r )
431432{
432433   if(!space.debugger_access()) {
433      m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
434      m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
434      //      m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
435      //      m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
436      abort();
435437   }
436438   return 0xffff;
437439}
r243793r243794
18671869      return m_mfp->get_vector();
18681870   }
18691871
1870   return M68K_INT_ACK_AUTOVECTOR;
1872   return 0;//M68K_INT_ACK_AUTOVECTOR;
18711873}
18721874
18731875
r243793r243794
20742076
20752077static MACHINE_CONFIG_START( st, st_state )
20762078   // basic machine hardware
2077   MCFG_CPU_ADD(M68000_TAG, M68000, Y2/4)
2079   MCFG_CPU_ADD(M68000_TAG, M68000x, Y2/4)
20782080   MCFG_CPU_PROGRAM_MAP(st_map)
20792081   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack)
20802082
2081   MCFG_CPU_ADD(HD6301V1_TAG, HD6301, Y2/8)
2082   MCFG_CPU_PROGRAM_MAP(ikbd_map)
2083   MCFG_CPU_IO_MAP(ikbd_io_map)
2083//   MCFG_CPU_ADD(HD6301V1_TAG, HD6301, Y2/8)
2084//   MCFG_CPU_PROGRAM_MAP(ikbd_map)
2085//   MCFG_CPU_IO_MAP(ikbd_io_map)
20842086
20852087   // video hardware
20862088   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
r243793r243794
21642166
21652167static MACHINE_CONFIG_START( megast, megast_state )
21662168   // basic machine hardware
2167   MCFG_CPU_ADD(M68000_TAG, M68000, Y2/4)
2169   MCFG_CPU_ADD(M68000_TAG, M68000x, Y2/4)
21682170   MCFG_CPU_PROGRAM_MAP(megast_map)
21692171   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack)
21702172
r243793r243794
22552257
22562258static MACHINE_CONFIG_START( ste, ste_state )
22572259   // basic machine hardware
2258   MCFG_CPU_ADD(M68000_TAG, M68000, Y2/4)
2260   MCFG_CPU_ADD(M68000_TAG, M68000x, Y2/4)
22592261   MCFG_CPU_PROGRAM_MAP(ste_map)
22602262   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack)
22612263
r243793r243794
23702372#if 0
23712373static MACHINE_CONFIG_START( stbook, stbook_state )
23722374   // basic machine hardware
2373   MCFG_CPU_ADD(M68000_TAG, M68000, U517/2)
2375   MCFG_CPU_ADD(M68000_TAG, M68000x, U517/2)
23742376   MCFG_CPU_PROGRAM_MAP(stbook_map)
23752377   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack)
23762378
trunk/src/mess/includes/atarist.h
r243793r243794
123123         m_palette(*this, "palette")
124124   { }
125125
126   required_device<cpu_device> m_maincpu;
126   required_device<m68000x_device> m_maincpu;
127127   required_device<wd1772_t> m_fdc;
128128   required_device<mc68901_device> m_mfp;
129129   required_device<acia6850_device> m_acia0;
trunk/src/mess/video/atarist.c
r243793r243794
1212*/
1313
1414#include "emu.h"
15#include "cpu/m68000/m68000.h"
15#include "machine/mc68901.h"
1616#include "machine/ram.h"
1717#include "video/atarist.h"
1818#include "includes/atarist.h"


Previous 199869 Revisions Next


© 1997-2024 The MAME Team