2 * A MC68000/MC68010 disassembler
4 * Note: this is probably not the most efficient disassembler in the world :-)
6 * This code written by Aaron Giles (agiles@sirius.com) for the MAME project
13 static char *ccodes[16] = { "T ", "F ", "HI", "LS", "CC", "CS", "NE", "EQ", "VC", "VS", "PL", "MI", "GE", "LT", "GT", "LE" };
15 #define PARAM_WORD(v) ((v) = *(unsigned short *)&p[0], p += 2)
16 #define PARAM_LONG(v) ((v) = (*(unsigned short *)&p[0] << 16) + *(unsigned short *)&p[2], p += 4)
20 static char *MakeEA (int lo, char *pBase, int size, int *count)
22 static char buffer[2][80];
25 unsigned char *p = (unsigned char *)pBase;
26 char *buf = buffer[which];
32 switch ((lo >> 3) & 7)
35 sprintf (buf, "D%d", reg);
38 sprintf (buf, "A%d", reg);
41 sprintf (buf, "(A%d)", reg);
44 sprintf (buf, "(A%d)+", reg);
47 sprintf (buf, "-(A%d)", reg);
52 sprintf (buf, "(-$%X,A%d)", -(signed short)pm & 0xffff, reg);
54 sprintf (buf, "($%lX,A%d)", pm, reg);
60 sprintf (buf, "(-$%X,A%d,D%ld.%c)", -(signed char)temp & 0xff, reg, (pm >> 12) & 7, (pm & 800) ? 'L' : 'W');
62 sprintf (buf, "($%X,A%d,D%ld.%c)", temp, reg, (pm >> 12) & 7, (pm & 800) ? 'L' : 'W');
69 sprintf (buf, "$%lX", pm);
73 sprintf (buf, "$%lX", pm);
78 sprintf (buf, "(-$%X,PC)", -(signed short)pm & 0xffff);
80 sprintf (buf, "($%lX,PC)", pm);
86 sprintf (buf, "(-$%X,PC,D%ld.%c)", -(signed char)temp & 0xff, (pm >> 12) & 7, (pm & 800) ? 'L' : 'W');
88 sprintf (buf, "($%X,PC,D%ld.%c)", temp, (pm >> 12) & 7, (pm & 800) ? 'L' : 'W');
95 sprintf (buf, "#$%X", temp);
100 sprintf (buf, "#$%lX", pm);
105 sprintf (buf, "#$%lX", pm);
112 *count = p - ((unsigned char*)pBase);
116 static char *MakeRegList (char *p, unsigned short pm)
118 int start = -1, sep = 0;
121 for (i = 0; i < 8; i++, pm >>= 1)
123 if ((pm & 1) && start == -1)
125 else if (!(pm & 1) && start != -1)
127 if (sep++) p += sprintf (p, "/");
128 if (start == i - 1) p += sprintf (p, "D%d", start);
129 else p += sprintf (p, "D%d-D%d", start, i - 1);
135 if (sep++) p += sprintf (p, "/");
136 if (start == 7) p += sprintf (p, "D7");
137 else p += sprintf (p, "D%d-D7", start);
141 for (i = 0; i < 8; i++, pm >>= 1)
143 if ((pm & 1) && start == -1)
145 else if (!(pm & 1) && start != -1)
147 if (sep++) p += sprintf (p, "/");
148 if (start == i - 1) p += sprintf (p, "A%d", start);
149 else p += sprintf (p, "A%d-A%d", start, i - 1);
155 if (sep++) p += sprintf (p, "/");
156 if (start == 7) p += sprintf (p, "A7");
157 else p += sprintf (p, "A%d-A7", start);
163 static char *MakeRevRegList (char *p, unsigned short pm)
165 int start = -1, sep = 0;
168 for (i = 0; i < 8; i++, pm <<= 1)
170 if ((pm & 0x8000) && start == -1)
172 else if (!(pm & 0x8000) && start != -1)
174 if (sep++) p += sprintf (p, "/");
175 if (start == i - 1) p += sprintf (p, "D%d", start);
176 else p += sprintf (p, "D%d-D%d", start, i - 1);
182 if (sep++) p += sprintf (p, "/");
183 if (start == 7) p += sprintf (p, "D7");
184 else p += sprintf (p, "D%d-D7", start);
188 for (i = 0; i < 8; i++, pm <<= 1)
190 if ((pm & 0x8000) && start == -1)
192 else if (!(pm & 0x8000) && start != -1)
194 if (sep++) p += sprintf (p, "/");
195 if (start == i - 1) p += sprintf (p, "A%d", start);
196 else p += sprintf (p, "A%d-A%d", start, i - 1);
202 if (sep++) p += sprintf (p, "/");
203 if (start == 7) p += sprintf (p, "A7");
204 else p += sprintf (p, "A%d-A7", start);
211 int Dasm68000 (char *pBase, char *buffer, int pc)
213 char *ea, *ea2, *p = pBase;
214 unsigned short op, lo, rhi, rlo;
228 sprintf (buffer, "ORI #$%lX,CCR", pm & 0xff);
231 ea = MakeEA (lo, p, 1, &count); p += count;
232 sprintf (buffer, "ORI.B #$%lX,%s", pm & 0xff, ea);
238 sprintf (buffer, "ORI #$%lX,SR", pm & 0xffff);
241 ea = MakeEA (lo, p, 2, &count); p += count;
242 sprintf (buffer, "ORI.W #$%lX,%s", pm & 0xffff, ea);
246 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
247 sprintf (buffer, "ORI.L #$%lX,%s", pm, ea);
249 case 0x0100: case 0x0300: case 0x0500: case 0x0700: case 0x0900: case 0x0b00: case 0x0d00: case 0x0f00:
250 if ((lo & 0x38) == 0x08)
253 sprintf (buffer, "MOVEP.W ($%lX,A%d),D%d", pm, rlo, rhi);
257 ea = MakeEA (lo, p, 2, &count); p += count;
258 sprintf (buffer, "BTST D%d,%s", rhi, ea);
261 case 0x0140: case 0x0340: case 0x0540: case 0x0740: case 0x0940: case 0x0b40: case 0x0d40: case 0x0f40:
262 if ((lo & 0x38) == 0x08)
265 sprintf (buffer, "MOVEP.L ($%lX,A%d),D%d", pm, rlo, rhi);
269 ea = MakeEA (lo, p, 2, &count); p += count;
270 sprintf (buffer, "BCHG D%d,%s", rhi, ea);
273 case 0x0180: case 0x0380: case 0x0580: case 0x0780: case 0x0980: case 0x0b80: case 0x0d80: case 0x0f80:
274 if ((lo & 0x38) == 0x08)
277 sprintf (buffer, "MOVEP.W D%d,($%lX,A%d)", rhi, pm, rlo);
281 ea = MakeEA (lo, p, 2, &count); p += count;
282 sprintf (buffer, "BCLR D%d,%s", rhi, ea);
285 case 0x01c0: case 0x03c0: case 0x05c0: case 0x07c0: case 0x09c0: case 0x0bc0: case 0x0dc0: case 0x0fc0:
286 if ((lo & 0x38) == 0x08)
289 sprintf (buffer, "MOVEP.L D%d,($%lX,A%d)", rhi, pm, rlo);
293 ea = MakeEA (lo, p, 2, &count); p += count;
294 sprintf (buffer, "BSET D%d,%s", rhi, ea);
300 sprintf (buffer, "ANDI #$%lX,CCR", pm & 0xff);
303 ea = MakeEA (lo, p, 1, &count); p += count;
304 sprintf (buffer, "ANDI.B #$%lX,%s", pm & 0xff, ea);
310 sprintf (buffer, "ANDI #$%lX,SR", pm & 0xffff);
313 ea = MakeEA (lo, p, 2, &count); p += count;
314 sprintf (buffer, "ANDI.W #$%lX,%s", pm & 0xffff, ea);
318 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
319 sprintf (buffer, "ANDI.L #$%lX,%s", pm, ea);
322 PARAM_WORD(pm); ea = MakeEA (lo, p, 1, &count); p += count;
323 sprintf (buffer, "SUBI.B #$%lX,%s", pm & 0xff, ea);
326 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
327 sprintf (buffer, "SUBI.W #$%lX,%s", pm & 0xffff, ea);
330 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
331 sprintf (buffer, "SUBI.L #$%lX,%s", pm, ea);
334 PARAM_WORD(pm); ea = MakeEA (lo, p, 1, &count); p += count;
335 sprintf (buffer, "ADDI.B #$%lX,%s", pm & 0xff, ea);
338 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
339 sprintf (buffer, "ADDI.W #$%lX,%s", pm & 0xffff, ea);
342 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
343 sprintf (buffer, "ADDI.L #$%lX,%s", pm, ea);
346 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
347 sprintf (buffer, "BTST #$%lX,%s", pm & 0xff, ea);
350 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
351 sprintf (buffer, "BCHG #$%lX,%s", pm & 0xff, ea);
354 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
355 sprintf (buffer, "BCLR #$%lX,%s", pm & 0xff, ea);
358 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
359 sprintf (buffer, "BSET #$%lX,%s", pm & 0xff, ea);
364 sprintf (buffer, "EORI #$%lX,CCR", pm & 0xff);
367 ea = MakeEA (lo, p, 1, &count); p += count;
368 sprintf (buffer, "EORI.B #$%lX,%s", pm & 0xff, ea);
374 sprintf (buffer, "EORI #$%lX,SR", pm & 0xffff);
377 ea = MakeEA (lo, p, 2, &count); p += count;
378 sprintf (buffer, "EORI.W #$%lX,%s", pm & 0xffff, ea);
382 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
383 sprintf (buffer, "EORI.L #$%lX,%s", pm, ea);
386 PARAM_WORD(pm); ea = MakeEA (lo, p, 1, &count); p += count;
387 sprintf (buffer, "CMPI.B #$%lX,%s", pm & 0xff, ea);
390 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
391 sprintf (buffer, "CMPI.W #$%lX,%s", pm & 0xffff, ea);
394 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
395 sprintf (buffer, "CMPI.L #$%lX,%s", pm, ea);
398 PARAM_WORD(pm); ea = MakeEA (lo, p, 1, &count); p += count;
402 sprintf (buffer, "MOVES.B A%ld,%s", (pm >> 12) & 7, ea);
404 sprintf (buffer, "MOVES.B D%ld,%s", (pm >> 12) & 7, ea);
409 sprintf (buffer, "MOVES.B %s,A%ld", ea, (pm >> 12) & 7);
411 sprintf (buffer, "MOVES.B %s,D%ld", ea, (pm >> 12) & 7);
415 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
419 sprintf (buffer, "MOVES.W A%ld,%s", (pm >> 12) & 7, ea);
421 sprintf (buffer, "MOVES.W D%ld,%s", (pm >> 12) & 7, ea);
426 sprintf (buffer, "MOVES.W %s,A%ld", ea, (pm >> 12) & 7);
428 sprintf (buffer, "MOVES.W %s,D%ld", ea, (pm >> 12) & 7);
432 PARAM_WORD(pm); ea = MakeEA (lo, p, 4, &count); p += count;
436 sprintf (buffer, "MOVES.L A%ld,%s", (pm >> 12) & 7, ea);
438 sprintf (buffer, "MOVES.L D%ld,%s", (pm >> 12) & 7, ea);
443 sprintf (buffer, "MOVES.L %s,A%ld", ea, (pm >> 12) & 7);
445 sprintf (buffer, "MOVES.L %s,D%ld", ea, (pm >> 12) & 7);
448 case 0x1000: case 0x1080: case 0x10c0: case 0x1100: case 0x1140: case 0x1180: case 0x11c0:
449 case 0x1200: case 0x1280: case 0x12c0: case 0x1300: case 0x1340: case 0x1380: case 0x13c0:
450 case 0x1400: case 0x1480: case 0x14c0: case 0x1500: case 0x1540: case 0x1580:
451 case 0x1600: case 0x1680: case 0x16c0: case 0x1700: case 0x1740: case 0x1780:
452 case 0x1800: case 0x1880: case 0x18c0: case 0x1900: case 0x1940: case 0x1980:
453 case 0x1a00: case 0x1a80: case 0x1ac0: case 0x1b00: case 0x1b40: case 0x1b80:
454 case 0x1c00: case 0x1c80: case 0x1cc0: case 0x1d00: case 0x1d40: case 0x1d80:
455 case 0x1e00: case 0x1e80: case 0x1ec0: case 0x1f00: case 0x1f40: case 0x1f80:
456 ea = MakeEA (lo, p, 1, &count); p += count; ea2 = MakeEA (((op >> 9) & 0x07) + ((op >> 3) & 0x38), p, 1, &count); p += count;
457 sprintf (buffer, "MOVE.B %s,%s", ea, ea2);
459 case 0x2000: case 0x2080: case 0x20c0: case 0x2100: case 0x2140: case 0x2180: case 0x21c0:
460 case 0x2200: case 0x2280: case 0x22c0: case 0x2300: case 0x2340: case 0x2380: case 0x23c0:
461 case 0x2400: case 0x2480: case 0x24c0: case 0x2500: case 0x2540: case 0x2580:
462 case 0x2600: case 0x2680: case 0x26c0: case 0x2700: case 0x2740: case 0x2780:
463 case 0x2800: case 0x2880: case 0x28c0: case 0x2900: case 0x2940: case 0x2980:
464 case 0x2a00: case 0x2a80: case 0x2ac0: case 0x2b00: case 0x2b40: case 0x2b80:
465 case 0x2c00: case 0x2c80: case 0x2cc0: case 0x2d00: case 0x2d40: case 0x2d80:
466 case 0x2e00: case 0x2e80: case 0x2ec0: case 0x2f00: case 0x2f40: case 0x2f80:
467 ea = MakeEA (lo, p, 4, &count); p += count; ea2 = MakeEA (((op >> 9) & 0x07) + ((op >> 3) & 0x38), p, 4, &count); p += count;
468 sprintf (buffer, "MOVE.L %s,%s", ea, ea2);
470 case 0x2040: case 0x2240: case 0x2440: case 0x2640: case 0x2840: case 0x2a40: case 0x2c40: case 0x2e40:
471 ea = MakeEA (lo, p, 4, &count); p += count;
472 sprintf (buffer, "MOVEA.L %s,A%d", ea, rhi);
474 case 0x3000: case 0x3080: case 0x30c0: case 0x3100: case 0x3140: case 0x3180: case 0x31c0:
475 case 0x3200: case 0x3280: case 0x32c0: case 0x3300: case 0x3340: case 0x3380: case 0x33c0:
476 case 0x3400: case 0x3480: case 0x34c0: case 0x3500: case 0x3540: case 0x3580:
477 case 0x3600: case 0x3680: case 0x36c0: case 0x3700: case 0x3740: case 0x3780:
478 case 0x3800: case 0x3880: case 0x38c0: case 0x3900: case 0x3940: case 0x3980:
479 case 0x3a00: case 0x3a80: case 0x3ac0: case 0x3b00: case 0x3b40: case 0x3b80:
480 case 0x3c00: case 0x3c80: case 0x3cc0: case 0x3d00: case 0x3d40: case 0x3d80:
481 case 0x3e00: case 0x3e80: case 0x3ec0: case 0x3f00: case 0x3f40: case 0x3f80:
482 ea = MakeEA (lo, p, 2, &count); p += count; ea2 = MakeEA (((op >> 9) & 0x07) + ((op >> 3) & 0x38), p, 2, &count); p += count;
483 sprintf (buffer, "MOVE.W %s,%s", ea, ea2);
485 case 0x3040: case 0x3240: case 0x3440: case 0x3640: case 0x3840: case 0x3a40: case 0x3c40: case 0x3e40:
486 ea = MakeEA (lo, p, 2, &count); p += count;
487 sprintf (buffer, "MOVEA.W %s,A%d", ea, rhi);
490 ea = MakeEA (lo, p, 1, &count); p += count;
491 sprintf (buffer, "NEGX.B %s", ea);
494 ea = MakeEA (lo, p, 2, &count); p += count;
495 sprintf (buffer, "NEGX.W %s", ea);
498 ea = MakeEA (lo, p, 4, &count); p += count;
499 sprintf (buffer, "NEGX.L %s", ea);
502 ea = MakeEA (lo, p, 2, &count); p += count;
503 sprintf (buffer, "MOVE SR,%s", ea);
505 case 0x4180: case 0x4380: case 0x4580: case 0x4780: case 0x4980: case 0x4b80: case 0x4d80: case 0x4f80:
506 ea = MakeEA (lo, p, 2, &count); p += count;
507 sprintf (buffer, "CHK.W %s,D%d", ea, rhi);
509 case 0x41c0: case 0x43c0: case 0x45c0: case 0x47c0: case 0x49c0: case 0x4bc0: case 0x4dc0: case 0x4fc0:
510 ea = MakeEA (lo, p, 4, &count); p += count;
511 sprintf (buffer, "LEA %s,A%d", ea, rhi);
514 ea = MakeEA (lo, p, 1, &count); p += count;
515 sprintf (buffer, "CLR.B %s", ea);
518 ea = MakeEA (lo, p, 2, &count); p += count;
519 sprintf (buffer, "CLR.W %s", ea);
522 ea = MakeEA (lo, p, 4, &count); p += count;
523 sprintf (buffer, "CLR.L %s", ea);
526 ea = MakeEA (lo, p, 2, &count); p += count;
527 sprintf (buffer, "MOVE CCR,%s", ea);
530 ea = MakeEA (lo, p, 1, &count); p += count;
531 sprintf (buffer, "NEG.B %s", ea);
534 ea = MakeEA (lo, p, 2, &count); p += count;
535 sprintf (buffer, "NEG.W %s", ea);
538 ea = MakeEA (lo, p, 4, &count); p += count;
539 sprintf (buffer, "NEG.L %s", ea);
542 ea = MakeEA (lo, p, 2, &count); p += count;
543 sprintf (buffer, "MOVE %s,CCR", ea);
546 ea = MakeEA (lo, p, 1, &count); p += count;
547 sprintf (buffer, "NOT.B %s", ea);
550 ea = MakeEA (lo, p, 2, &count); p += count;
551 sprintf (buffer, "NOT.W %s", ea);
554 ea = MakeEA (lo, p, 4, &count); p += count;
555 sprintf (buffer, "NOT.L %s", ea);
558 ea = MakeEA (lo, p, 2, &count); p += count;
559 sprintf (buffer, "MOVE %s,SR", ea);
562 ea = MakeEA (lo, p, 1, &count); p += count;
563 sprintf (buffer, "NBCD.B %s", ea);
566 if ((lo & 0x38) == 0x00)
567 sprintf (buffer, "SWAP D%d", rlo);
570 ea = MakeEA (lo, p, 4, &count); p += count;
571 sprintf (buffer, "PEA %s", ea);
575 if ((lo & 0x38) == 0x00)
576 sprintf (buffer, "EXT.W D%d", rlo);
580 PARAM_WORD (pm); ea = MakeEA (lo, p, 2, &count); p += count;
581 b += sprintf (b, "MOVEM.W ");
582 if ((lo & 0x38) != 0x20) b = MakeRegList (b, pm);
583 else b = MakeRevRegList (b, pm);
584 sprintf (b, ",%s", ea);
588 if ((lo & 0x38) == 0x00)
589 sprintf (buffer, "EXT.L D%d", rlo);
593 PARAM_WORD (pm); ea = MakeEA (lo, p, 4, &count); p += count;
594 b += sprintf (b, "MOVEM.L ");
595 if ((lo & 0x38) != 0x20) b = MakeRegList (b, pm);
596 else b = MakeRevRegList (b, pm);
597 sprintf (b, ",%s", ea);
601 ea = MakeEA (lo, p, 1, &count); p += count;
602 sprintf (buffer, "TST.B %s", ea);
605 ea = MakeEA (lo, p, 2, &count); p += count;
606 sprintf (buffer, "TST.W %s", ea);
609 ea = MakeEA (lo, p, 4, &count); p += count;
610 sprintf (buffer, "TST.L %s", ea);
613 ea = MakeEA (lo, p, 1, &count); p += count;
614 sprintf (buffer, "TAS.B %s", ea);
619 PARAM_WORD (pm); ea = MakeEA (lo, p, 2, &count); p += count;
620 b += sprintf (b, "MOVEM.W %s,", ea);
621 b = MakeRegList (b, pm);
627 PARAM_WORD (pm); ea = MakeEA (lo, p, 4, &count); p += count;
628 b += sprintf (b, "MOVEM.L %s,", ea);
629 b = MakeRegList (b, pm);
633 if ((lo & 30) == 0x00)
634 sprintf (buffer, "TRAP #$%X", lo & 15);
635 else if ((lo & 0x38) == 0x10)
638 sprintf (buffer, "LINK A%d,#$%lX", rlo, pm);
640 else if ((lo & 0x38) == 0x18)
642 sprintf (buffer, "UNLK A%d", rlo);
644 else if ((lo & 0x38) == 0x20)
645 sprintf (buffer, "MOVE A%d,USP", rlo);
646 else if ((lo & 0x38) == 0x28)
647 sprintf (buffer, "MOVE USP,A%d", rlo);
649 sprintf (buffer, "RESET");
651 sprintf (buffer, "NOP");
653 sprintf (buffer, "STOP");
655 sprintf (buffer, "RTE");
657 sprintf (buffer, "RTS");
659 sprintf (buffer, "TRAPV");
661 sprintf (buffer, "RTR");
667 case 0x000: ea = "SFC"; break;
668 case 0x001: ea = "DFC"; break;
669 case 0x800: ea = "USP"; break;
670 case 0x801: ea = "VBR"; break;
671 default: ea = "???"; break;
674 sprintf (buffer, "MOVEC %s,A%ld", ea, (pm >> 12) & 7);
676 sprintf (buffer, "MOVEC %s,D%ld", ea, (pm >> 12) & 7);
683 case 0x000: ea = "SFC"; break;
684 case 0x001: ea = "DFC"; break;
685 case 0x800: ea = "USP"; break;
686 case 0x801: ea = "VBR"; break;
687 default: ea = "???"; break;
690 sprintf (buffer, "MOVEC A%ld,%s", (pm >> 12) & 7, ea);
692 sprintf (buffer, "MOVEC D%ld,%s", (pm >> 12) & 7, ea);
695 sprintf (buffer, "DC.W $%X", op);
698 ea = MakeEA (lo, p, 4, &count); p += count;
699 sprintf (buffer, "JSR %s", ea);
702 ea = MakeEA (lo, p, 4, &count); p += count;
703 sprintf (buffer, "JMP %s", ea);
705 case 0x5000: case 0x5200: case 0x5400: case 0x5600: case 0x5800: case 0x5a00: case 0x5c00: case 0x5e00:
706 ea = MakeEA (lo, p, 1, &count); p += count;
707 sprintf (buffer, "ADDQ.B #%d,%s", (rhi == 0) ? 8 : rhi, ea);
709 case 0x5040: case 0x5240: case 0x5440: case 0x5640: case 0x5840: case 0x5a40: case 0x5c40: case 0x5e40:
710 ea = MakeEA (lo, p, 2, &count); p += count;
711 sprintf (buffer, "ADDQ.W #%d,%s", (rhi == 0) ? 8 : rhi, ea);
713 case 0x5080: case 0x5280: case 0x5480: case 0x5680: case 0x5880: case 0x5a80: case 0x5c80: case 0x5e80:
714 ea = MakeEA (lo, p, 4, &count); p += count;
715 sprintf (buffer, "ADDQ.L #%d,%s", (rhi == 0) ? 8 : rhi, ea);
717 case 0x50c0: case 0x52c0: case 0x54c0: case 0x56c0: case 0x58c0: case 0x5ac0: case 0x5cc0: case 0x5ec0:
718 case 0x51c0: case 0x53c0: case 0x55c0: case 0x57c0: case 0x59c0: case 0x5bc0: case 0x5dc0: case 0x5fc0:
719 if ((lo & 0x38) == 0x08)
723 sprintf (buffer, "DB%s D%d,*-$%X [%X]", ccodes[(op >> 8) & 15], rlo, (int)(-(signed short)pm) - 2, pc + (signed short)pm + 2);
725 sprintf (buffer, "DB%s D%d,*+$%lX [%lX]", ccodes[(op >> 8) & 15], rlo, pm - 2, pc + pm + 2);
729 ea = MakeEA (lo, p, 1, &count); p += count;
730 sprintf (buffer, "S%s.B %s", ccodes[(op >> 8) & 15], ea);
733 case 0x5100: case 0x5300: case 0x5500: case 0x5700: case 0x5900: case 0x5b00: case 0x5d00: case 0x5f00:
734 ea = MakeEA (lo, p, 1, &count); p += count;
735 sprintf (buffer, "SUBQ.B #%d,%s", (rhi == 0) ? 8 : rhi, ea);
737 case 0x5140: case 0x5340: case 0x5540: case 0x5740: case 0x5940: case 0x5b40: case 0x5d40: case 0x5f40:
738 ea = MakeEA (lo, p, 2, &count); p += count;
739 sprintf (buffer, "SUBQ.W #%d,%s", (rhi == 0) ? 8 : rhi, ea);
741 case 0x5180: case 0x5380: case 0x5580: case 0x5780: case 0x5980: case 0x5b80: case 0x5d80: case 0x5f80:
742 ea = MakeEA (lo, p, 4, &count); p += count;
743 sprintf (buffer, "SUBQ.L #%d,%s", (rhi == 0) ? 8 : rhi, ea);
745 case 0x6000: case 0x6040: case 0x6080: case 0x60c0:
751 sprintf (buffer, "BRA *-$%X [%X]", (int)(-(signed short)pm) - 2, pc + (signed short)pm + 2);
753 sprintf (buffer, "BRA *+$%lX [%lX]", pm + 2, pc + pm + 2);
758 sprintf (buffer, "BRA.S *-$%X [%X]", (int)(-(signed char)pm) - 2, pc + (signed char)pm + 2);
760 sprintf (buffer, "BRA.S *+$%lX [%lX]", pm + 2, pc + pm + 2);
763 case 0x6100: case 0x6140: case 0x6180: case 0x61c0:
769 sprintf (buffer, "BSR *-$%X [%X]", (int)(-(signed short)pm) - 2, pc + (signed short)pm + 2);
771 sprintf (buffer, "BSR *+$%lX [%lX]", pm + 2, pc + pm + 2);
776 sprintf (buffer, "BSR.S *-$%X [%X]", (int)(-(signed char)pm) - 2, pc + (signed char)pm + 2);
778 sprintf (buffer, "BSR.S *+$%lX [%lX]", pm + 2, pc + pm + 2);
781 case 0x6200: case 0x6240: case 0x6280: case 0x62c0: case 0x6300: case 0x6340: case 0x6380: case 0x63c0:
782 case 0x6400: case 0x6440: case 0x6480: case 0x64c0: case 0x6500: case 0x6540: case 0x6580: case 0x65c0:
783 case 0x6600: case 0x6640: case 0x6680: case 0x66c0: case 0x6700: case 0x6740: case 0x6780: case 0x67c0:
784 case 0x6800: case 0x6840: case 0x6880: case 0x68c0: case 0x6900: case 0x6940: case 0x6980: case 0x69c0:
785 case 0x6a00: case 0x6a40: case 0x6a80: case 0x6ac0: case 0x6b00: case 0x6b40: case 0x6b80: case 0x6bc0:
786 case 0x6c00: case 0x6c40: case 0x6c80: case 0x6cc0: case 0x6d00: case 0x6d40: case 0x6d80: case 0x6dc0:
787 case 0x6e00: case 0x6e40: case 0x6e80: case 0x6ec0: case 0x6f00: case 0x6f40: case 0x6f80: case 0x6fc0:
793 sprintf (buffer, "B%s *-$%X [%X]", ccodes[(op >> 8) & 15], (int)(-(signed short)pm) - 2, pc + (signed short)pm + 2);
795 sprintf (buffer, "B%s *+$%lX [%lX]", ccodes[(op >> 8) & 15], pm + 2, pc + pm + 2);
800 sprintf (buffer, "B%s.S *-$%X [%X]", ccodes[(op >> 8) & 15], (int)(-(signed char)pm) - 2, pc + (signed char)pm + 2);
802 sprintf (buffer, "B%s.S *+$%lX [%lX]", ccodes[(op >> 8) & 15], pm + 2, pc + pm + 2);
805 case 0x7000: case 0x7040: case 0x7080: case 0x70c0:
806 case 0x7200: case 0x7240: case 0x7280: case 0x72c0:
807 case 0x7400: case 0x7440: case 0x7480: case 0x74c0:
808 case 0x7600: case 0x7640: case 0x7680: case 0x76c0:
809 case 0x7800: case 0x7840: case 0x7880: case 0x78c0:
810 case 0x7a00: case 0x7a40: case 0x7a80: case 0x7ac0:
811 case 0x7c00: case 0x7c40: case 0x7c80: case 0x7cc0:
812 case 0x7e00: case 0x7e40: case 0x7e80: case 0x7ec0:
815 sprintf (buffer, "MOVEQ #$-%X,D%d", -(signed char)pm, rhi);
817 sprintf (buffer, "MOVEQ #$%lX,D%d", pm, rhi);
819 case 0x8000: case 0x8200: case 0x8400: case 0x8600: case 0x8800: case 0x8a00: case 0x8c00: case 0x8e00:
820 ea = MakeEA (lo, p, 1, &count); p += count;
821 sprintf (buffer, "OR.B %s,D%d", ea, rhi);
823 case 0x8040: case 0x8240: case 0x8440: case 0x8640: case 0x8840: case 0x8a40: case 0x8c40: case 0x8e40:
824 ea = MakeEA (lo, p, 2, &count); p += count;
825 sprintf (buffer, "OR.W %s,D%d", ea, rhi);
827 case 0x8080: case 0x8280: case 0x8480: case 0x8680: case 0x8880: case 0x8a80: case 0x8c80: case 0x8e80:
828 ea = MakeEA (lo, p, 4, &count); p += count;
829 sprintf (buffer, "OR.L %s,D%d", ea, rhi);
831 case 0x80c0: case 0x82c0: case 0x84c0: case 0x86c0: case 0x88c0: case 0x8ac0: case 0x8cc0: case 0x8ec0:
832 ea = MakeEA (lo, p, 2, &count); p += count;
833 sprintf (buffer, "DIVU.W %s,D%d", ea, rhi);
835 case 0x8100: case 0x8300: case 0x8500: case 0x8700: case 0x8900: case 0x8b00: case 0x8d00: case 0x8f00:
836 ea = MakeEA (lo, p, 1, &count); p += count;
837 sprintf (buffer, "OR.B D%d,%s", rhi, ea);
839 case 0x8140: case 0x8340: case 0x8540: case 0x8740: case 0x8940: case 0x8b40: case 0x8d40: case 0x8f40:
840 ea = MakeEA (lo, p, 2, &count); p += count;
841 sprintf (buffer, "OR.W D%d,%s", rhi, ea);
843 case 0x8180: case 0x8380: case 0x8580: case 0x8780: case 0x8980: case 0x8b80: case 0x8d80: case 0x8f80:
844 ea = MakeEA (lo, p, 4, &count); p += count;
845 sprintf (buffer, "OR.L D%d,%s", rhi, ea);
847 case 0x81c0: case 0x83c0: case 0x85c0: case 0x87c0: case 0x89c0: case 0x8bc0: case 0x8dc0: case 0x8fc0:
848 ea = MakeEA (lo, p, 2, &count); p += count;
849 sprintf (buffer, "DIVS.W %s,D%d", ea, rhi);
851 case 0x9000: case 0x9200: case 0x9400: case 0x9600: case 0x9800: case 0x9a00: case 0x9c00: case 0x9e00:
852 ea = MakeEA (lo, p, 1, &count); p += count;
853 sprintf (buffer, "SUB.B %s,D%d", ea, rhi);
855 case 0x9040: case 0x9240: case 0x9440: case 0x9640: case 0x9840: case 0x9a40: case 0x9c40: case 0x9e40:
856 ea = MakeEA (lo, p, 2, &count); p += count;
857 sprintf (buffer, "SUB.W %s,D%d", ea, rhi);
859 case 0x9080: case 0x9280: case 0x9480: case 0x9680: case 0x9880: case 0x9a80: case 0x9c80: case 0x9e80:
860 ea = MakeEA (lo, p, 4, &count); p += count;
861 sprintf (buffer, "SUB.L %s,D%d", ea, rhi);
863 case 0x90c0: case 0x92c0: case 0x94c0: case 0x96c0: case 0x98c0: case 0x9ac0: case 0x9cc0: case 0x9ec0:
864 ea = MakeEA (lo, p, 2, &count); p += count;
865 sprintf (buffer, "SUBA.W %s,A%d", ea, rhi);
867 case 0x9100: case 0x9300: case 0x9500: case 0x9700: case 0x9900: case 0x9b00: case 0x9d00: case 0x9f00:
868 if ((lo & 0x30) == 0)
871 sprintf (buffer, "SUBX.B -(A%d),-(A%d)", rlo, rhi);
873 sprintf (buffer, "SUBX.B D%d,D%d", rlo, rhi);
877 ea = MakeEA (lo, p, 1,&count); p += count;
878 sprintf (buffer, "SUB.B D%d,%s", rhi, ea);
881 case 0x9140: case 0x9340: case 0x9540: case 0x9740: case 0x9940: case 0x9b40: case 0x9d40: case 0x9f40:
882 if ((lo & 0x30) == 0)
885 sprintf (buffer, "SUBX.W -(A%d),-(A%d)", rlo, rhi);
887 sprintf (buffer, "SUBX.W D%d,D%d", rlo, rhi);
891 ea = MakeEA (lo, p, 2, &count); p += count;
892 sprintf (buffer, "SUB.W D%d,%s", rhi, ea);
895 case 0x9180: case 0x9380: case 0x9580: case 0x9780: case 0x9980: case 0x9b80: case 0x9d80: case 0x9f80:
896 if ((lo & 0x30) == 0)
899 sprintf (buffer, "SUBX.L -(A%d),-(A%d)", rlo, rhi);
901 sprintf (buffer, "SUBX.L D%d,D%d", rlo, rhi);
905 ea = MakeEA (lo, p, 4, &count); p += count;
906 sprintf (buffer, "SUB.L D%d,%s", rhi, ea);
909 case 0x91c0: case 0x93c0: case 0x95c0: case 0x97c0: case 0x99c0: case 0x9bc0: case 0x9dc0: case 0x9fc0:
910 ea = MakeEA (lo, p, 4, &count); p += count;
911 sprintf (buffer, "SUBA.L %s,A%d", ea, rhi);
913 case 0xb000: case 0xb200: case 0xb400: case 0xb600: case 0xb800: case 0xba00: case 0xbc00: case 0xbe00:
914 ea = MakeEA (lo, p, 1, &count); p += count;
915 sprintf (buffer, "CMP.B %s,D%d", ea, rhi);
917 case 0xb040: case 0xb240: case 0xb440: case 0xb640: case 0xb840: case 0xba40: case 0xbc40: case 0xbe40:
918 ea = MakeEA (lo, p, 2, &count); p += count;
919 sprintf (buffer, "CMP.W %s,D%d", ea, rhi);
921 case 0xb080: case 0xb280: case 0xb480: case 0xb680: case 0xb880: case 0xba80: case 0xbc80: case 0xbe80:
922 ea = MakeEA (lo, p, 4, &count); p += count;
923 sprintf (buffer, "CMP.L %s,D%d", ea, rhi);
925 case 0xb0c0: case 0xb2c0: case 0xb4c0: case 0xb6c0: case 0xb8c0: case 0xbac0: case 0xbcc0: case 0xbec0:
926 ea = MakeEA (lo, p, 2, &count); p += count;
927 sprintf (buffer, "CMPA.W %s,A%d", ea, rhi);
929 case 0xb100: case 0xb300: case 0xb500: case 0xb700: case 0xb900: case 0xbb00: case 0xbd00: case 0xbf00:
930 if ((lo & 0x38) == 0x08)
931 sprintf (buffer, "CMPM.B (A%d)+,(A%d)+", rlo, rhi);
934 ea = MakeEA (lo, p, 1, &count); p += count;
935 sprintf (buffer, "EOR.B D%d,%s", rhi, ea);
938 case 0xb140: case 0xb340: case 0xb540: case 0xb740: case 0xb940: case 0xbb40: case 0xbd40: case 0xbf40:
939 if ((lo & 0x38) == 0x08)
940 sprintf (buffer, "CMPM.W (A%d)+,(A%d)+", rlo, rhi);
943 ea = MakeEA (lo, p, 2, &count); p += count;
944 sprintf (buffer, "EOR.W D%d,%s", rhi, ea);
947 case 0xb180: case 0xb380: case 0xb580: case 0xb780: case 0xb980: case 0xbb80: case 0xbd80: case 0xbf80:
948 if ((lo & 0x38) == 0x08)
949 sprintf (buffer, "CMPM.L (A%d)+,(A%d)+", rlo, rhi);
952 ea = MakeEA (lo, p, 4, &count); p += count;
953 sprintf (buffer, "EOR.L D%d,%s", rhi, ea);
956 case 0xb1c0: case 0xb3c0: case 0xb5c0: case 0xb7c0: case 0xb9c0: case 0xbbc0: case 0xbdc0: case 0xbfc0:
957 ea = MakeEA (lo, p, 4, &count); p += count;
958 sprintf (buffer, "CMPA.L %s,A%d", ea, rhi);
960 case 0xc000: case 0xc200: case 0xc400: case 0xc600: case 0xc800: case 0xca00: case 0xcc00: case 0xce00:
961 ea = MakeEA (lo, p, 1, &count); p += count;
962 sprintf (buffer, "AND.B %s,D%d", ea, rhi);
964 case 0xc040: case 0xc240: case 0xc440: case 0xc640: case 0xc840: case 0xca40: case 0xcc40: case 0xce40:
965 ea = MakeEA (lo, p, 2, &count); p += count;
966 sprintf (buffer, "AND.W %s,D%d", ea, rhi);
968 case 0xc080: case 0xc280: case 0xc480: case 0xc680: case 0xc880: case 0xca80: case 0xcc80: case 0xce80:
969 ea = MakeEA (lo, p, 4, &count); p += count;
970 sprintf (buffer, "AND.L %s,D%d", ea, rhi);
972 case 0xc0c0: case 0xc2c0: case 0xc4c0: case 0xc6c0: case 0xc8c0: case 0xcac0: case 0xccc0: case 0xcec0:
973 ea = MakeEA (lo, p, 2, &count); p += count;
974 sprintf (buffer, "MULU.W %s,D%d", ea, rhi);
976 case 0xc100: case 0xc300: case 0xc500: case 0xc700: case 0xc900: case 0xcb00: case 0xcd00: case 0xcf00:
977 if ((lo & 0x30) == 0)
980 sprintf (buffer, "ABCD.B -(A%d),-(A%d)", rlo, rhi);
982 sprintf (buffer, "ABCD.B D%d,D%d", rlo, rhi);
986 ea = MakeEA (lo, p, 1, &count); p += count;
987 sprintf (buffer, "AND.B D%d,%s", rhi, ea);
990 case 0xc140: case 0xc340: case 0xc540: case 0xc740: case 0xc940: case 0xcb40: case 0xcd40: case 0xcf40:
991 if ((lo & 0x30) == 0)
994 sprintf (buffer, "EXG A%d,A%d", rhi, rlo);
996 sprintf (buffer, "EXG D%d,D%d", rhi, rlo);
1000 ea = MakeEA (lo, p, 2,&count); p += count;
1001 sprintf (buffer, "AND.W D%d,%s", rhi, ea);
1004 case 0xc180: case 0xc380: case 0xc580: case 0xc780: case 0xc980: case 0xcb80: case 0xcd80: case 0xcf80:
1005 if ((lo & 0x38) == 0x08)
1006 sprintf (buffer, "EXG D%d,A%d", rhi, rlo);
1009 ea = MakeEA (lo, p, 4, &count); p += count;
1010 sprintf (buffer, "AND.L D%d,%s", rhi, ea);
1013 case 0xc1c0: case 0xc3c0: case 0xc5c0: case 0xc7c0: case 0xc9c0: case 0xcbc0: case 0xcdc0: case 0xcfc0:
1014 ea = MakeEA (lo, p, 2, &count); p += count;
1015 sprintf (buffer, "MULS.W %s,D%d", ea, rhi);
1017 case 0xd000: case 0xd200: case 0xd400: case 0xd600: case 0xd800: case 0xda00: case 0xdc00: case 0xde00:
1018 ea = MakeEA (lo, p, 1, &count); p += count;
1019 sprintf (buffer, "ADD.B %s,D%d", ea, rhi);
1021 case 0xd040: case 0xd240: case 0xd440: case 0xd640: case 0xd840: case 0xda40: case 0xdc40: case 0xde40:
1022 ea = MakeEA (lo, p, 2, &count); p += count;
1023 sprintf (buffer, "ADD.W %s,D%d", ea, rhi);
1025 case 0xd080: case 0xd280: case 0xd480: case 0xd680: case 0xd880: case 0xda80: case 0xdc80: case 0xde80:
1026 ea = MakeEA (lo, p, 4, &count); p += count;
1027 sprintf (buffer, "ADD.L %s,D%d", ea, rhi);
1029 case 0xd0c0: case 0xd2c0: case 0xd4c0: case 0xd6c0: case 0xd8c0: case 0xdac0: case 0xdcc0: case 0xdec0:
1030 ea = MakeEA (lo, p, 2, &count); p += count;
1031 sprintf (buffer, "ADDA.W %s,A%d", ea, rhi);
1033 case 0xd100: case 0xd300: case 0xd500: case 0xd700: case 0xd900: case 0xdb00: case 0xdd00: case 0xdf00:
1034 if ((lo & 0x30) == 0)
1037 sprintf (buffer, "ADDX.B -(A%d),-(A%d)", rlo, rhi);
1039 sprintf (buffer, "ADDX.B D%d,D%d", rlo, rhi);
1043 ea = MakeEA (lo, p, 1, &count); p += count;
1044 sprintf (buffer, "ADD.B D%d,%s", rhi, ea);
1047 case 0xd140: case 0xd340: case 0xd540: case 0xd740: case 0xd940: case 0xdb40: case 0xdd40: case 0xdf40:
1048 if ((lo & 0x30) == 0)
1051 sprintf (buffer, "ADDX.W -(A%d),-(A%d)", rlo, rhi);
1053 sprintf (buffer, "ADDX.W D%d,D%d", rlo, rhi);
1057 ea = MakeEA (lo, p, 2, &count); p += count;
1058 sprintf (buffer, "ADD.W D%d,%s", rhi, ea);
1061 case 0xd180: case 0xd380: case 0xd580: case 0xd780: case 0xd980: case 0xdb80: case 0xdd80: case 0xdf80:
1062 if ((lo & 0x30) == 0)
1065 sprintf (buffer, "ADDX.L -(A%d),-(A%d)", rlo, rhi);
1067 sprintf (buffer, "ADDX.L D%d,D%d", rlo, rhi);
1071 ea = MakeEA (lo, p, 4,&count); p += count;
1072 sprintf (buffer, "ADD.L D%d,%s", rhi, ea);
1075 case 0xd1c0: case 0xd3c0: case 0xd5c0: case 0xd7c0: case 0xd9c0: case 0xdbc0: case 0xddc0: case 0xdfc0:
1076 ea = MakeEA (lo, p, 4, &count); p += count;
1077 sprintf (buffer, "ADDA.L %s,A%d", ea, rhi);
1079 case 0xe000: case 0xe200: case 0xe400: case 0xe600: case 0xe800: case 0xea00: case 0xec00: case 0xee00:
1080 switch ((lo >> 3) & 7)
1082 case 0: sprintf (buffer, "ASR.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1083 case 1: sprintf (buffer, "LSR.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1084 case 2: sprintf (buffer, "ROXR.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1085 case 3: sprintf (buffer, "ROR.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1086 case 4: sprintf (buffer, "ASR.B D%d,D%d", rhi, rlo); break;
1087 case 5: sprintf (buffer, "LSR.B D%d,D%d", rhi, rlo); break;
1088 case 6: sprintf (buffer, "ROXR.B D%d,D%d", rhi, rlo); break;
1089 case 7: sprintf (buffer, "ROR.B D%d,D%d", rhi, rlo); break;
1092 case 0xe040: case 0xe240: case 0xe440: case 0xe640: case 0xe840: case 0xea40: case 0xec40: case 0xee40:
1093 switch ((lo >> 3) & 7)
1095 case 0: sprintf (buffer, "ASR.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1096 case 1: sprintf (buffer, "LSR.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1097 case 2: sprintf (buffer, "ROXR.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1098 case 3: sprintf (buffer, "ROR.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1099 case 4: sprintf (buffer, "ASR.W D%d,D%d", rhi, rlo); break;
1100 case 5: sprintf (buffer, "LSR.W D%d,D%d", rhi, rlo); break;
1101 case 6: sprintf (buffer, "ROXR.W D%d,D%d", rhi, rlo); break;
1102 case 7: sprintf (buffer, "ROR.W D%d,D%d", rhi, rlo); break;
1105 case 0xe080: case 0xe280: case 0xe480: case 0xe680: case 0xe880: case 0xea80: case 0xec80: case 0xee80:
1106 switch ((lo >> 3) & 7)
1108 case 0: sprintf (buffer, "ASR.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1109 case 1: sprintf (buffer, "LSR.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1110 case 2: sprintf (buffer, "ROXR.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1111 case 3: sprintf (buffer, "ROR.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1112 case 4: sprintf (buffer, "ASR.L D%d,D%d", rhi, rlo); break;
1113 case 5: sprintf (buffer, "LSR.L D%d,D%d", rhi, rlo); break;
1114 case 6: sprintf (buffer, "ROXR.L D%d,D%d", rhi, rlo); break;
1115 case 7: sprintf (buffer, "ROR.L D%d,D%d", rhi, rlo); break;
1118 case 0xe0c0: case 0xe2c0: case 0xe4c0: case 0xe6c0:
1119 case 0xe1c0: case 0xe3c0: case 0xe5c0: case 0xe7c0:
1120 ea = MakeEA (lo, p, 4, &count); p += count;
1121 switch ((op >> 8) & 7)
1123 case 0: sprintf (buffer, "ASR.L #1,%s", ea); break;
1124 case 1: sprintf (buffer, "ASL.L #1,%s", ea); break;
1125 case 2: sprintf (buffer, "LSR.L #1,%s", ea); break;
1126 case 3: sprintf (buffer, "LSL.L #1,%s", ea); break;
1127 case 4: sprintf (buffer, "ROXR.L #1,%s", ea); break;
1128 case 5: sprintf (buffer, "ROXL.L #1,%s", ea); break;
1129 case 6: sprintf (buffer, "ROR.L #1,%s", ea); break;
1130 case 7: sprintf (buffer, "ROL.L #1,%s", ea); break;
1133 case 0xe100: case 0xe300: case 0xe500: case 0xe700: case 0xe900: case 0xeb00: case 0xed00: case 0xef00:
1134 switch ((lo >> 3) & 7)
1136 case 0: sprintf (buffer, "ASL.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1137 case 1: sprintf (buffer, "LSL.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1138 case 2: sprintf (buffer, "ROXL.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1139 case 3: sprintf (buffer, "ROL.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1140 case 4: sprintf (buffer, "ASL.B D%d,D%d", rhi, rlo); break;
1141 case 5: sprintf (buffer, "LSL.B D%d,D%d", rhi, rlo); break;
1142 case 6: sprintf (buffer, "ROXL.B D%d,D%d", rhi, rlo); break;
1143 case 7: sprintf (buffer, "ROL.B D%d,D%d", rhi, rlo); break;
1146 case 0xe140: case 0xe340: case 0xe540: case 0xe740: case 0xe940: case 0xeb40: case 0xed40: case 0xef40:
1147 switch ((lo >> 3) & 7)
1149 case 0: sprintf (buffer, "ASL.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1150 case 1: sprintf (buffer, "LSL.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1151 case 2: sprintf (buffer, "ROXL.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1152 case 3: sprintf (buffer, "ROL.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1153 case 4: sprintf (buffer, "ASL.W D%d,D%d", rhi, rlo); break;
1154 case 5: sprintf (buffer, "LSL.W D%d,D%d", rhi, rlo); break;
1155 case 6: sprintf (buffer, "ROXL.W D%d,D%d", rhi, rlo); break;
1156 case 7: sprintf (buffer, "ROL.W D%d,D%d", rhi, rlo); break;
1159 case 0xe180: case 0xe380: case 0xe580: case 0xe780: case 0xe980: case 0xeb80: case 0xed80: case 0xef80:
1160 switch ((lo >> 3) & 7)
1162 case 0: sprintf (buffer, "ASL.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1163 case 1: sprintf (buffer, "LSL.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1164 case 2: sprintf (buffer, "ROXL.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1165 case 3: sprintf (buffer, "ROL.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
1166 case 4: sprintf (buffer, "ASL.L D%d,D%d", rhi, rlo); break;
1167 case 5: sprintf (buffer, "LSL.L D%d,D%d", rhi, rlo); break;
1168 case 6: sprintf (buffer, "ROXL.L D%d,D%d", rhi, rlo); break;
1169 case 7: sprintf (buffer, "ROL.L D%d,D%d", rhi, rlo); break;
1173 sprintf (buffer, "DC.W $%X", op);
1182 static char *MakeEA (int lo, char *pBase, int size, int *count)
1184 static char buffer[2][80];
1187 unsigned char *p = (unsigned char *)pBase;
1188 char *buf = buffer[which];
1194 switch ((lo >> 3) & 7)
1197 sprintf (buf, "D%d", reg);
1200 sprintf (buf, "A%d", reg);
1203 sprintf (buf, "(A%d)", reg);
1206 sprintf (buf, "(A%d)+", reg);
1209 sprintf (buf, "-(A%d)", reg);
1214 sprintf (buf, "(-$%X,A%d)", -(signed short)pm & 0xffff, reg);
1216 sprintf (buf, "($%lX,A%d)", pm, reg);
1222 sprintf (buf, "(-$%X,A%d,D%ld.%c)", -(signed char)temp & 0xff, reg, (pm >> 12) & 7, (pm & 800) ? 'L' : 'W');
1224 sprintf (buf, "($%X,A%d,D%ld.%c)", temp, reg, (pm >> 12) & 7, (pm & 800) ? 'L' : 'W');
1231 sprintf (buf, "$%lX", pm);
1235 sprintf (buf, "$%lX", pm);
1240 sprintf (buf, "(-$%X,PC)", -(signed short)pm & 0xffff);
1242 sprintf (buf, "($%lX,PC)", pm);
1248 sprintf (buf, "(-$%X,PC,D%ld.%c)", -(signed char)temp & 0xff, (pm >> 12) & 7, (pm & 800) ? 'L' : 'W');
1250 sprintf (buf, "($%X,PC,D%ld.%c)", temp, (pm >> 12) & 7, (pm & 800) ? 'L' : 'W');
1257 sprintf (buf, "#$%X", temp);
1262 sprintf (buf, "#$%lX", pm);
1267 sprintf (buf, "#$%lX", pm);
1274 *count = p - ((unsigned char*)pBase);
1278 static char *MakeRegList (char *p, unsigned short pm)
1280 int start = -1, sep = 0;
1283 for (i = 0; i < 8; i++, pm >>= 1)
1285 if ((pm & 1) && start == -1)
1287 else if (!(pm & 1) && start != -1)
1289 if (sep++) p += sprintf (p, "/");
1290 if (start == i - 1) p += sprintf (p, "D%d", start);
1291 else p += sprintf (p, "D%d-D%d", start, i - 1);
1297 if (sep++) p += sprintf (p, "/");
1298 if (start == 7) p += sprintf (p, "D7");
1299 else p += sprintf (p, "D%d-D7", start);
1303 for (i = 0; i < 8; i++, pm >>= 1)
1305 if ((pm & 1) && start == -1)
1307 else if (!(pm & 1) && start != -1)
1309 if (sep++) p += sprintf (p, "/");
1310 if (start == i - 1) p += sprintf (p, "A%d", start);
1311 else p += sprintf (p, "A%d-A%d", start, i - 1);
1317 if (sep++) p += sprintf (p, "/");
1318 if (start == 7) p += sprintf (p, "A7");
1319 else p += sprintf (p, "A%d-A7", start);
1325 static char *MakeRevRegList (char *p, unsigned short pm)
1327 int start = -1, sep = 0;
1330 for (i = 0; i < 8; i++, pm <<= 1)
1332 if ((pm & 0x8000) && start == -1)
1334 else if (!(pm & 0x8000) && start != -1)
1336 if (sep++) p += sprintf (p, "/");
1337 if (start == i - 1) p += sprintf (p, "D%d", start);
1338 else p += sprintf (p, "D%d-D%d", start, i - 1);
1344 if (sep++) p += sprintf (p, "/");
1345 if (start == 7) p += sprintf (p, "D7");
1346 else p += sprintf (p, "D%d-D7", start);
1350 for (i = 0; i < 8; i++, pm <<= 1)
1352 if ((pm & 0x8000) && start == -1)
1354 else if (!(pm & 0x8000) && start != -1)
1356 if (sep++) p += sprintf (p, "/");
1357 if (start == i - 1) p += sprintf (p, "A%d", start);
1358 else p += sprintf (p, "A%d-A%d", start, i - 1);
1364 if (sep++) p += sprintf (p, "/");
1365 if (start == 7) p += sprintf (p, "A7");
1366 else p += sprintf (p, "A%d-A7", start);
1373 int Dasm68000 (char *pBase, char *buffer, int pc)
1375 char *ea, *ea2, *p = pBase;
1376 unsigned short op, lo, rhi, rlo;
1383 rhi = (op >> 9) & 7;
1385 switch (op & 0xffc0)
1390 sprintf (buffer, "ORI #$%lX,CCR", pm & 0xff);
1393 ea = MakeEA (lo, p, 1, &count); p += count;
1394 sprintf (buffer, "ORI.B #$%lX,%s", pm & 0xff, ea);
1400 sprintf (buffer, "ORI #$%lX,SR", pm & 0xffff);
1403 ea = MakeEA (lo, p, 2, &count); p += count;
1404 sprintf (buffer, "ORI.W #$%lX,%s", pm & 0xffff, ea);
1408 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
1409 sprintf (buffer, "ORI.L #$%lX,%s", pm, ea);
1411 case 0x0100: case 0x0300: case 0x0500: case 0x0700: case 0x0900: case 0x0b00: case 0x0d00: case 0x0f00:
1412 if ((lo & 0x38) == 0x08)
1415 sprintf (buffer, "MOVEP.W ($%lX,A%d),D%d", pm, rlo, rhi);
1419 ea = MakeEA (lo, p, 2, &count); p += count;
1420 sprintf (buffer, "BTST D%d,%s", rhi, ea);
1423 case 0x0140: case 0x0340: case 0x0540: case 0x0740: case 0x0940: case 0x0b40: case 0x0d40: case 0x0f40:
1424 if ((lo & 0x38) == 0x08)
1427 sprintf (buffer, "MOVEP.L ($%lX,A%d),D%d", pm, rlo, rhi);
1431 ea = MakeEA (lo, p, 2, &count); p += count;
1432 sprintf (buffer, "BCHG D%d,%s", rhi, ea);
1435 case 0x0180: case 0x0380: case 0x0580: case 0x0780: case 0x0980: case 0x0b80: case 0x0d80: case 0x0f80:
1436 if ((lo & 0x38) == 0x08)
1439 sprintf (buffer, "MOVEP.W D%d,($%lX,A%d)", rhi, pm, rlo);
1443 ea = MakeEA (lo, p, 2, &count); p += count;
1444 sprintf (buffer, "BCLR D%d,%s", rhi, ea);
1447 case 0x01c0: case 0x03c0: case 0x05c0: case 0x07c0: case 0x09c0: case 0x0bc0: case 0x0dc0: case 0x0fc0:
1448 if ((lo & 0x38) == 0x08)
1451 sprintf (buffer, "MOVEP.L D%d,($%lX,A%d)", rhi, pm, rlo);
1455 ea = MakeEA (lo, p, 2, &count); p += count;
1456 sprintf (buffer, "BSET D%d,%s", rhi, ea);
1462 sprintf (buffer, "ANDI #$%lX,CCR", pm & 0xff);
1465 ea = MakeEA (lo, p, 1, &count); p += count;
1466 sprintf (buffer, "ANDI.B #$%lX,%s", pm & 0xff, ea);
1472 sprintf (buffer, "ANDI #$%lX,SR", pm & 0xffff);
1475 ea = MakeEA (lo, p, 2, &count); p += count;
1476 sprintf (buffer, "ANDI.W #$%lX,%s", pm & 0xffff, ea);
1480 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
1481 sprintf (buffer, "ANDI.L #$%lX,%s", pm, ea);
1484 PARAM_WORD(pm); ea = MakeEA (lo, p, 1, &count); p += count;
1485 sprintf (buffer, "SUBI.B #$%lX,%s", pm & 0xff, ea);
1488 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
1489 sprintf (buffer, "SUBI.W #$%lX,%s", pm & 0xffff, ea);
1492 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
1493 sprintf (buffer, "SUBI.L #$%lX,%s", pm, ea);
1496 PARAM_WORD(pm); ea = MakeEA (lo, p, 1, &count); p += count;
1497 sprintf (buffer, "ADDI.B #$%lX,%s", pm & 0xff, ea);
1500 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
1501 sprintf (buffer, "ADDI.W #$%lX,%s", pm & 0xffff, ea);
1504 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
1505 sprintf (buffer, "ADDI.L #$%lX,%s", pm, ea);
1508 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
1509 sprintf (buffer, "BTST #$%lX,%s", pm & 0xff, ea);
1512 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
1513 sprintf (buffer, "BCHG #$%lX,%s", pm & 0xff, ea);
1516 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
1517 sprintf (buffer, "BCLR #$%lX,%s", pm & 0xff, ea);
1520 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
1521 sprintf (buffer, "BSET #$%lX,%s", pm & 0xff, ea);
1526 sprintf (buffer, "EORI #$%lX,CCR", pm & 0xff);
1529 ea = MakeEA (lo, p, 1, &count); p += count;
1530 sprintf (buffer, "EORI.B #$%lX,%s", pm & 0xff, ea);
1536 sprintf (buffer, "EORI #$%lX,SR", pm & 0xffff);
1539 ea = MakeEA (lo, p, 2, &count); p += count;
1540 sprintf (buffer, "EORI.W #$%lX,%s", pm & 0xffff, ea);
1544 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
1545 sprintf (buffer, "EORI.L #$%lX,%s", pm, ea);
1548 PARAM_WORD(pm); ea = MakeEA (lo, p, 1, &count); p += count;
1549 sprintf (buffer, "CMPI.B #$%lX,%s", pm & 0xff, ea);
1552 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
1553 sprintf (buffer, "CMPI.W #$%lX,%s", pm & 0xffff, ea);
1556 PARAM_LONG(pm); ea = MakeEA (lo, p, 4, &count); p += count;
1557 sprintf (buffer, "CMPI.L #$%lX,%s", pm, ea);
1560 PARAM_WORD(pm); ea = MakeEA (lo, p, 1, &count); p += count;
1564 sprintf (buffer, "MOVES.B A%ld,%s", (pm >> 12) & 7, ea);
1566 sprintf (buffer, "MOVES.B D%ld,%s", (pm >> 12) & 7, ea);
1571 sprintf (buffer, "MOVES.B %s,A%ld", ea, (pm >> 12) & 7);
1573 sprintf (buffer, "MOVES.B %s,D%ld", ea, (pm >> 12) & 7);
1577 PARAM_WORD(pm); ea = MakeEA (lo, p, 2, &count); p += count;
1581 sprintf (buffer, "MOVES.W A%ld,%s", (pm >> 12) & 7, ea);
1583 sprintf (buffer, "MOVES.W D%ld,%s", (pm >> 12) & 7, ea);
1588 sprintf (buffer, "MOVES.W %s,A%ld", ea, (pm >> 12) & 7);
1590 sprintf (buffer, "MOVES.W %s,D%ld", ea, (pm >> 12) & 7);
1594 PARAM_WORD(pm); ea = MakeEA (lo, p, 4, &count); p += count;
1598 sprintf (buffer, "MOVES.L A%ld,%s", (pm >> 12) & 7, ea);
1600 sprintf (buffer, "MOVES.L D%ld,%s", (pm >> 12) & 7, ea);
1605 sprintf (buffer, "MOVES.L %s,A%ld", ea, (pm >> 12) & 7);
1607 sprintf (buffer, "MOVES.L %s,D%ld", ea, (pm >> 12) & 7);
1610 case 0x1000: case 0x1080: case 0x10c0: case 0x1100: case 0x1140: case 0x1180: case 0x11c0:
1611 case 0x1200: case 0x1280: case 0x12c0: case 0x1300: case 0x1340: case 0x1380: case 0x13c0:
1612 case 0x1400: case 0x1480: case 0x14c0: case 0x1500: case 0x1540: case 0x1580:
1613 case 0x1600: case 0x1680: case 0x16c0: case 0x1700: case 0x1740: case 0x1780:
1614 case 0x1800: case 0x1880: case 0x18c0: case 0x1900: case 0x1940: case 0x1980:
1615 case 0x1a00: case 0x1a80: case 0x1ac0: case 0x1b00: case 0x1b40: case 0x1b80:
1616 case 0x1c00: case 0x1c80: case 0x1cc0: case 0x1d00: case 0x1d40: case 0x1d80:
1617 case 0x1e00: case 0x1e80: case 0x1ec0: case 0x1f00: case 0x1f40: case 0x1f80:
1618 ea = MakeEA (lo, p, 1, &count); p += count; ea2 = MakeEA (((op >> 9) & 0x07) + ((op >> 3) & 0x38), p, 1, &count); p += count;
1619 sprintf (buffer, "MOVE.B %s,%s", ea, ea2);
1621 case 0x2000: case 0x2080: case 0x20c0: case 0x2100: case 0x2140: case 0x2180: case 0x21c0:
1622 case 0x2200: case 0x2280: case 0x22c0: case 0x2300: case 0x2340: case 0x2380: case 0x23c0:
1623 case 0x2400: case 0x2480: case 0x24c0: case 0x2500: case 0x2540: case 0x2580:
1624 case 0x2600: case 0x2680: case 0x26c0: case 0x2700: case 0x2740: case 0x2780:
1625 case 0x2800: case 0x2880: case 0x28c0: case 0x2900: case 0x2940: case 0x2980:
1626 case 0x2a00: case 0x2a80: case 0x2ac0: case 0x2b00: case 0x2b40: case 0x2b80:
1627 case 0x2c00: case 0x2c80: case 0x2cc0: case 0x2d00: case 0x2d40: case 0x2d80:
1628 case 0x2e00: case 0x2e80: case 0x2ec0: case 0x2f00: case 0x2f40: case 0x2f80:
1629 ea = MakeEA (lo, p, 4, &count); p += count; ea2 = MakeEA (((op >> 9) & 0x07) + ((op >> 3) & 0x38), p, 4, &count); p += count;
1630 sprintf (buffer, "MOVE.L %s,%s", ea, ea2);
1632 case 0x2040: case 0x2240: case 0x2440: case 0x2640: case 0x2840: case 0x2a40: case 0x2c40: case 0x2e40:
1633 ea = MakeEA (lo, p, 4, &count); p += count;
1634 sprintf (buffer, "MOVEA.L %s,A%d", ea, rhi);
1636 case 0x3000: case 0x3080: case 0x30c0: case 0x3100: case 0x3140: case 0x3180: case 0x31c0:
1637 case 0x3200: case 0x3280: case 0x32c0: case 0x3300: case 0x3340: case 0x3380: case 0x33c0:
1638 case 0x3400: case 0x3480: case 0x34c0: case 0x3500: case 0x3540: case 0x3580:
1639 case 0x3600: case 0x3680: case 0x36c0: case 0x3700: case 0x3740: case 0x3780:
1640 case 0x3800: case 0x3880: case 0x38c0: case 0x3900: case 0x3940: case 0x3980:
1641 case 0x3a00: case 0x3a80: case 0x3ac0: case 0x3b00: case 0x3b40: case 0x3b80:
1642 case 0x3c00: case 0x3c80: case 0x3cc0: case 0x3d00: case 0x3d40: case 0x3d80:
1643 case 0x3e00: case 0x3e80: case 0x3ec0: case 0x3f00: case 0x3f40: case 0x3f80:
1644 ea = MakeEA (lo, p, 2, &count); p += count; ea2 = MakeEA (((op >> 9) & 0x07) + ((op >> 3) & 0x38), p, 2, &count); p += count;
1645 sprintf (buffer, "MOVE.W %s,%s", ea, ea2);
1647 case 0x3040: case 0x3240: case 0x3440: case 0x3640: case 0x3840: case 0x3a40: case 0x3c40: case 0x3e40:
1648 ea = MakeEA (lo, p, 2, &count); p += count;
1649 sprintf (buffer, "MOVEA.W %s,A%d", ea, rhi);
1652 ea = MakeEA (lo, p, 1, &count); p += count;
1653 sprintf (buffer, "NEGX.B %s", ea);
1656 ea = MakeEA (lo, p, 2, &count); p += count;
1657 sprintf (buffer, "NEGX.W %s", ea);
1660 ea = MakeEA (lo, p, 4, &count); p += count;
1661 sprintf (buffer, "NEGX.L %s", ea);
1664 ea = MakeEA (lo, p, 2, &count); p += count;
1665 sprintf (buffer, "MOVE SR,%s", ea);
1667 case 0x4180: case 0x4380: case 0x4580: case 0x4780: case 0x4980: case 0x4b80: case 0x4d80: case 0x4f80:
1668 ea = MakeEA (lo, p, 2, &count); p += count;
1669 sprintf (buffer, "CHK.W %s,D%d", ea, rhi);
1671 case 0x41c0: case 0x43c0: case 0x45c0: case 0x47c0: case 0x49c0: case 0x4bc0: case 0x4dc0: case 0x4fc0:
1672 ea = MakeEA (lo, p, 4, &count); p += count;
1673 sprintf (buffer, "LEA %s,A%d", ea, rhi);
1676 ea = MakeEA (lo, p, 1, &count); p += count;
1677 sprintf (buffer, "CLR.B %s", ea);
1680 ea = MakeEA (lo, p, 2, &count); p += count;
1681 sprintf (buffer, "CLR.W %s", ea);
1684 ea = MakeEA (lo, p, 4, &count); p += count;
1685 sprintf (buffer, "CLR.L %s", ea);
1688 ea = MakeEA (lo, p, 2, &count); p += count;
1689 sprintf (buffer, "MOVE CCR,%s", ea);
1692 ea = MakeEA (lo, p, 1, &count); p += count;
1693 sprintf (buffer, "NEG.B %s", ea);
1696 ea = MakeEA (lo, p, 2, &count); p += count;
1697 sprintf (buffer, "NEG.W %s", ea);
1700 ea = MakeEA (lo, p, 4, &count); p += count;
1701 sprintf (buffer, "NEG.L %s", ea);
1704 ea = MakeEA (lo, p, 2, &count); p += count;
1705 sprintf (buffer, "MOVE %s,CCR", ea);
1708 ea = MakeEA (lo, p, 1, &count); p += count;
1709 sprintf (buffer, "NOT.B %s", ea);
1712 ea = MakeEA (lo, p, 2, &count); p += count;
1713 sprintf (buffer, "NOT.W %s", ea);
1716 ea = MakeEA (lo, p, 4, &count); p += count;
1717 sprintf (buffer, "NOT.L %s", ea);
1720 ea = MakeEA (lo, p, 2, &count); p += count;
1721 sprintf (buffer, "MOVE %s,SR", ea);
1724 ea = MakeEA (lo, p, 1, &count); p += count;
1725 sprintf (buffer, "NBCD.B %s", ea);
1728 if ((lo & 0x38) == 0x00)
1729 sprintf (buffer, "SWAP D%d", rlo);
1732 ea = MakeEA (lo, p, 4, &count); p += count;
1733 sprintf (buffer, "PEA %s", ea);
1737 if ((lo & 0x38) == 0x00)
1738 sprintf (buffer, "EXT.W D%d", rlo);
1742 PARAM_WORD (pm); ea = MakeEA (lo, p, 2, &count); p += count;
1743 b += sprintf (b, "MOVEM.W ");
1744 if ((lo & 0x38) != 0x20) b = MakeRegList (b, pm);
1745 else b = MakeRevRegList (b, pm);
1746 sprintf (b, ",%s", ea);
1750 if ((lo & 0x38) == 0x00)
1751 sprintf (buffer, "EXT.L D%d", rlo);
1755 PARAM_WORD (pm); ea = MakeEA (lo, p, 4, &count); p += count;
1756 b += sprintf (b, "MOVEM.L ");
1757 if ((lo & 0x38) != 0x20) b = MakeRegList (b, pm);
1758 else b = MakeRevRegList (b, pm);
1759 sprintf (b, ",%s", ea);
1763 ea = MakeEA (lo, p, 1, &count); p += count;
1764 sprintf (buffer, "TST.B %s", ea);
1767 ea = MakeEA (lo, p, 2, &count); p += count;
1768 sprintf (buffer, "TST.W %s", ea);
1771 ea = MakeEA (lo, p, 4, &count); p += count;
1772 sprintf (buffer, "TST.L %s", ea);
1775 ea = MakeEA (lo, p, 1, &count); p += count;
1776 sprintf (buffer, "TAS.B %s", ea);
1781 PARAM_WORD (pm); ea = MakeEA (lo, p, 2, &count); p += count;
1782 b += sprintf (b, "MOVEM.W %s,", ea);
1783 b = MakeRegList (b, pm);
1789 PARAM_WORD (pm); ea = MakeEA (lo, p, 4, &count); p += count;
1790 b += sprintf (b, "MOVEM.L %s,", ea);
1791 b = MakeRegList (b, pm);
1795 if ((lo & 30) == 0x00)
1796 sprintf (buffer, "TRAP #$%X", lo & 15);
1797 else if ((lo & 0x38) == 0x10)
1800 sprintf (buffer, "LINK A%d,#$%lX", rlo, pm);
1802 else if ((lo & 0x38) == 0x18)
1804 sprintf (buffer, "UNLK A%d", rlo);
1806 else if ((lo & 0x38) == 0x20)
1807 sprintf (buffer, "MOVE A%d,USP", rlo);
1808 else if ((lo & 0x38) == 0x28)
1809 sprintf (buffer, "MOVE USP,A%d", rlo);
1810 else if (lo == 0x30)
1811 sprintf (buffer, "RESET");
1812 else if (lo == 0x31)
1813 sprintf (buffer, "NOP");
1814 else if (lo == 0x32)
1815 sprintf (buffer, "STOP");
1816 else if (lo == 0x33)
1817 sprintf (buffer, "RTE");
1818 else if (lo == 0x35)
1819 sprintf (buffer, "RTS");
1820 else if (lo == 0x36)
1821 sprintf (buffer, "TRAPV");
1822 else if (lo == 0x37)
1823 sprintf (buffer, "RTR");
1824 else if (lo == 0x3a)
1829 case 0x000: ea = "SFC"; break;
1830 case 0x001: ea = "DFC"; break;
1831 case 0x800: ea = "USP"; break;
1832 case 0x801: ea = "VBR"; break;
1833 default: ea = "???"; break;
1836 sprintf (buffer, "MOVEC %s,A%ld", ea, (pm >> 12) & 7);
1838 sprintf (buffer, "MOVEC %s,D%ld", ea, (pm >> 12) & 7);
1840 else if (lo == 0x3b)
1845 case 0x000: ea = "SFC"; break;
1846 case 0x001: ea = "DFC"; break;
1847 case 0x800: ea = "USP"; break;
1848 case 0x801: ea = "VBR"; break;
1849 default: ea = "???"; break;
1852 sprintf (buffer, "MOVEC A%ld,%s", (pm >> 12) & 7, ea);
1854 sprintf (buffer, "MOVEC D%ld,%s", (pm >> 12) & 7, ea);
1857 sprintf (buffer, "DC.W $%X", op);
1860 ea = MakeEA (lo, p, 4, &count); p += count;
1861 sprintf (buffer, "JSR %s", ea);
1864 ea = MakeEA (lo, p, 4, &count); p += count;
1865 sprintf (buffer, "JMP %s", ea);
1867 case 0x5000: case 0x5200: case 0x5400: case 0x5600: case 0x5800: case 0x5a00: case 0x5c00: case 0x5e00:
1868 ea = MakeEA (lo, p, 1, &count); p += count;
1869 sprintf (buffer, "ADDQ.B #%d,%s", (rhi == 0) ? 8 : rhi, ea);
1871 case 0x5040: case 0x5240: case 0x5440: case 0x5640: case 0x5840: case 0x5a40: case 0x5c40: case 0x5e40:
1872 ea = MakeEA (lo, p, 2, &count); p += count;
1873 sprintf (buffer, "ADDQ.W #%d,%s", (rhi == 0) ? 8 : rhi, ea);
1875 case 0x5080: case 0x5280: case 0x5480: case 0x5680: case 0x5880: case 0x5a80: case 0x5c80: case 0x5e80:
1876 ea = MakeEA (lo, p, 4, &count); p += count;
1877 sprintf (buffer, "ADDQ.L #%d,%s", (rhi == 0) ? 8 : rhi, ea);
1879 case 0x50c0: case 0x52c0: case 0x54c0: case 0x56c0: case 0x58c0: case 0x5ac0: case 0x5cc0: case 0x5ec0:
1880 case 0x51c0: case 0x53c0: case 0x55c0: case 0x57c0: case 0x59c0: case 0x5bc0: case 0x5dc0: case 0x5fc0:
1881 if ((lo & 0x38) == 0x08)
1885 sprintf (buffer, "DB%s D%d,*-$%X [%X]", ccodes[(op >> 8) & 15], rlo, (int)(-(signed short)pm) - 2, pc + (signed short)pm + 2);
1887 sprintf (buffer, "DB%s D%d,*+$%lX [%lX]", ccodes[(op >> 8) & 15], rlo, pm - 2, pc + pm + 2);
1891 ea = MakeEA (lo, p, 1, &count); p += count;
1892 sprintf (buffer, "S%s.B %s", ccodes[(op >> 8) & 15], ea);
1895 case 0x5100: case 0x5300: case 0x5500: case 0x5700: case 0x5900: case 0x5b00: case 0x5d00: case 0x5f00:
1896 ea = MakeEA (lo, p, 1, &count); p += count;
1897 sprintf (buffer, "SUBQ.B #%d,%s", (rhi == 0) ? 8 : rhi, ea);
1899 case 0x5140: case 0x5340: case 0x5540: case 0x5740: case 0x5940: case 0x5b40: case 0x5d40: case 0x5f40:
1900 ea = MakeEA (lo, p, 2, &count); p += count;
1901 sprintf (buffer, "SUBQ.W #%d,%s", (rhi == 0) ? 8 : rhi, ea);
1903 case 0x5180: case 0x5380: case 0x5580: case 0x5780: case 0x5980: case 0x5b80: case 0x5d80: case 0x5f80:
1904 ea = MakeEA (lo, p, 4, &count); p += count;
1905 sprintf (buffer, "SUBQ.L #%d,%s", (rhi == 0) ? 8 : rhi, ea);
1907 case 0x6000: case 0x6040: case 0x6080: case 0x60c0:
1913 sprintf (buffer, "BRA *-$%X [%X]", (int)(-(signed short)pm) - 2, pc + (signed short)pm + 2);
1915 sprintf (buffer, "BRA *+$%lX [%lX]", pm + 2, pc + pm + 2);
1920 sprintf (buffer, "BRA.S *-$%X [%X]", (int)(-(signed char)pm) - 2, pc + (signed char)pm + 2);
1922 sprintf (buffer, "BRA.S *+$%lX [%lX]", pm + 2, pc + pm + 2);
1925 case 0x6100: case 0x6140: case 0x6180: case 0x61c0:
1931 sprintf (buffer, "BSR *-$%X [%X]", (int)(-(signed short)pm) - 2, pc + (signed short)pm + 2);
1933 sprintf (buffer, "BSR *+$%lX [%lX]", pm + 2, pc + pm + 2);
1938 sprintf (buffer, "BSR.S *-$%X [%X]", (int)(-(signed char)pm) - 2, pc + (signed char)pm + 2);
1940 sprintf (buffer, "BSR.S *+$%lX [%lX]", pm + 2, pc + pm + 2);
1943 case 0x6200: case 0x6240: case 0x6280: case 0x62c0: case 0x6300: case 0x6340: case 0x6380: case 0x63c0:
1944 case 0x6400: case 0x6440: case 0x6480: case 0x64c0: case 0x6500: case 0x6540: case 0x6580: case 0x65c0:
1945 case 0x6600: case 0x6640: case 0x6680: case 0x66c0: case 0x6700: case 0x6740: case 0x6780: case 0x67c0:
1946 case 0x6800: case 0x6840: case 0x6880: case 0x68c0: case 0x6900: case 0x6940: case 0x6980: case 0x69c0:
1947 case 0x6a00: case 0x6a40: case 0x6a80: case 0x6ac0: case 0x6b00: case 0x6b40: case 0x6b80: case 0x6bc0:
1948 case 0x6c00: case 0x6c40: case 0x6c80: case 0x6cc0: case 0x6d00: case 0x6d40: case 0x6d80: case 0x6dc0:
1949 case 0x6e00: case 0x6e40: case 0x6e80: case 0x6ec0: case 0x6f00: case 0x6f40: case 0x6f80: case 0x6fc0:
1955 sprintf (buffer, "B%s *-$%X [%X]", ccodes[(op >> 8) & 15], (int)(-(signed short)pm) - 2, pc + (signed short)pm + 2);
1957 sprintf (buffer, "B%s *+$%lX [%lX]", ccodes[(op >> 8) & 15], pm + 2, pc + pm + 2);
1962 sprintf (buffer, "B%s.S *-$%X [%X]", ccodes[(op >> 8) & 15], (int)(-(signed char)pm) - 2, pc + (signed char)pm + 2);
1964 sprintf (buffer, "B%s.S *+$%lX [%lX]", ccodes[(op >> 8) & 15], pm + 2, pc + pm + 2);
1967 case 0x7000: case 0x7040: case 0x7080: case 0x70c0:
1968 case 0x7200: case 0x7240: case 0x7280: case 0x72c0:
1969 case 0x7400: case 0x7440: case 0x7480: case 0x74c0:
1970 case 0x7600: case 0x7640: case 0x7680: case 0x76c0:
1971 case 0x7800: case 0x7840: case 0x7880: case 0x78c0:
1972 case 0x7a00: case 0x7a40: case 0x7a80: case 0x7ac0:
1973 case 0x7c00: case 0x7c40: case 0x7c80: case 0x7cc0:
1974 case 0x7e00: case 0x7e40: case 0x7e80: case 0x7ec0:
1977 sprintf (buffer, "MOVEQ #$-%X,D%d", -(signed char)pm, rhi);
1979 sprintf (buffer, "MOVEQ #$%lX,D%d", pm, rhi);
1981 case 0x8000: case 0x8200: case 0x8400: case 0x8600: case 0x8800: case 0x8a00: case 0x8c00: case 0x8e00:
1982 ea = MakeEA (lo, p, 1, &count); p += count;
1983 sprintf (buffer, "OR.B %s,D%d", ea, rhi);
1985 case 0x8040: case 0x8240: case 0x8440: case 0x8640: case 0x8840: case 0x8a40: case 0x8c40: case 0x8e40:
1986 ea = MakeEA (lo, p, 2, &count); p += count;
1987 sprintf (buffer, "OR.W %s,D%d", ea, rhi);
1989 case 0x8080: case 0x8280: case 0x8480: case 0x8680: case 0x8880: case 0x8a80: case 0x8c80: case 0x8e80:
1990 ea = MakeEA (lo, p, 4, &count); p += count;
1991 sprintf (buffer, "OR.L %s,D%d", ea, rhi);
1993 case 0x80c0: case 0x82c0: case 0x84c0: case 0x86c0: case 0x88c0: case 0x8ac0: case 0x8cc0: case 0x8ec0:
1994 ea = MakeEA (lo, p, 2, &count); p += count;
1995 sprintf (buffer, "DIVU.W %s,D%d", ea, rhi);
1997 case 0x8100: case 0x8300: case 0x8500: case 0x8700: case 0x8900: case 0x8b00: case 0x8d00: case 0x8f00:
1998 ea = MakeEA (lo, p, 1, &count); p += count;
1999 sprintf (buffer, "OR.B D%d,%s", rhi, ea);
2001 case 0x8140: case 0x8340: case 0x8540: case 0x8740: case 0x8940: case 0x8b40: case 0x8d40: case 0x8f40:
2002 ea = MakeEA (lo, p, 2, &count); p += count;
2003 sprintf (buffer, "OR.W D%d,%s", rhi, ea);
2005 case 0x8180: case 0x8380: case 0x8580: case 0x8780: case 0x8980: case 0x8b80: case 0x8d80: case 0x8f80:
2006 ea = MakeEA (lo, p, 4, &count); p += count;
2007 sprintf (buffer, "OR.L D%d,%s", rhi, ea);
2009 case 0x81c0: case 0x83c0: case 0x85c0: case 0x87c0: case 0x89c0: case 0x8bc0: case 0x8dc0: case 0x8fc0:
2010 ea = MakeEA (lo, p, 2, &count); p += count;
2011 sprintf (buffer, "DIVS.W %s,D%d", ea, rhi);
2013 case 0x9000: case 0x9200: case 0x9400: case 0x9600: case 0x9800: case 0x9a00: case 0x9c00: case 0x9e00:
2014 ea = MakeEA (lo, p, 1, &count); p += count;
2015 sprintf (buffer, "SUB.B %s,D%d", ea, rhi);
2017 case 0x9040: case 0x9240: case 0x9440: case 0x9640: case 0x9840: case 0x9a40: case 0x9c40: case 0x9e40:
2018 ea = MakeEA (lo, p, 2, &count); p += count;
2019 sprintf (buffer, "SUB.W %s,D%d", ea, rhi);
2021 case 0x9080: case 0x9280: case 0x9480: case 0x9680: case 0x9880: case 0x9a80: case 0x9c80: case 0x9e80:
2022 ea = MakeEA (lo, p, 4, &count); p += count;
2023 sprintf (buffer, "SUB.L %s,D%d", ea, rhi);
2025 case 0x90c0: case 0x92c0: case 0x94c0: case 0x96c0: case 0x98c0: case 0x9ac0: case 0x9cc0: case 0x9ec0:
2026 ea = MakeEA (lo, p, 2, &count); p += count;
2027 sprintf (buffer, "SUBA.W %s,A%d", ea, rhi);
2029 case 0x9100: case 0x9300: case 0x9500: case 0x9700: case 0x9900: case 0x9b00: case 0x9d00: case 0x9f00:
2030 if ((lo & 0x30) == 0)
2033 sprintf (buffer, "SUBX.B -(A%d),-(A%d)", rlo, rhi);
2035 sprintf (buffer, "SUBX.B D%d,D%d", rlo, rhi);
2039 ea = MakeEA (lo, p, 1,&count); p += count;
2040 sprintf (buffer, "SUB.B D%d,%s", rhi, ea);
2043 case 0x9140: case 0x9340: case 0x9540: case 0x9740: case 0x9940: case 0x9b40: case 0x9d40: case 0x9f40:
2044 if ((lo & 0x30) == 0)
2047 sprintf (buffer, "SUBX.W -(A%d),-(A%d)", rlo, rhi);
2049 sprintf (buffer, "SUBX.W D%d,D%d", rlo, rhi);
2053 ea = MakeEA (lo, p, 2, &count); p += count;
2054 sprintf (buffer, "SUB.W D%d,%s", rhi, ea);
2057 case 0x9180: case 0x9380: case 0x9580: case 0x9780: case 0x9980: case 0x9b80: case 0x9d80: case 0x9f80:
2058 if ((lo & 0x30) == 0)
2061 sprintf (buffer, "SUBX.L -(A%d),-(A%d)", rlo, rhi);
2063 sprintf (buffer, "SUBX.L D%d,D%d", rlo, rhi);
2067 ea = MakeEA (lo, p, 4, &count); p += count;
2068 sprintf (buffer, "SUB.L D%d,%s", rhi, ea);
2071 case 0x91c0: case 0x93c0: case 0x95c0: case 0x97c0: case 0x99c0: case 0x9bc0: case 0x9dc0: case 0x9fc0:
2072 ea = MakeEA (lo, p, 4, &count); p += count;
2073 sprintf (buffer, "SUBA.L %s,A%d", ea, rhi);
2075 case 0xb000: case 0xb200: case 0xb400: case 0xb600: case 0xb800: case 0xba00: case 0xbc00: case 0xbe00:
2076 ea = MakeEA (lo, p, 1, &count); p += count;
2077 sprintf (buffer, "CMP.B %s,D%d", ea, rhi);
2079 case 0xb040: case 0xb240: case 0xb440: case 0xb640: case 0xb840: case 0xba40: case 0xbc40: case 0xbe40:
2080 ea = MakeEA (lo, p, 2, &count); p += count;
2081 sprintf (buffer, "CMP.W %s,D%d", ea, rhi);
2083 case 0xb080: case 0xb280: case 0xb480: case 0xb680: case 0xb880: case 0xba80: case 0xbc80: case 0xbe80:
2084 ea = MakeEA (lo, p, 4, &count); p += count;
2085 sprintf (buffer, "CMP.L %s,D%d", ea, rhi);
2087 case 0xb0c0: case 0xb2c0: case 0xb4c0: case 0xb6c0: case 0xb8c0: case 0xbac0: case 0xbcc0: case 0xbec0:
2088 ea = MakeEA (lo, p, 2, &count); p += count;
2089 sprintf (buffer, "CMPA.W %s,A%d", ea, rhi);
2091 case 0xb100: case 0xb300: case 0xb500: case 0xb700: case 0xb900: case 0xbb00: case 0xbd00: case 0xbf00:
2092 if ((lo & 0x38) == 0x08)
2093 sprintf (buffer, "CMPM.B (A%d)+,(A%d)+", rlo, rhi);
2096 ea = MakeEA (lo, p, 1, &count); p += count;
2097 sprintf (buffer, "EOR.B D%d,%s", rhi, ea);
2100 case 0xb140: case 0xb340: case 0xb540: case 0xb740: case 0xb940: case 0xbb40: case 0xbd40: case 0xbf40:
2101 if ((lo & 0x38) == 0x08)
2102 sprintf (buffer, "CMPM.W (A%d)+,(A%d)+", rlo, rhi);
2105 ea = MakeEA (lo, p, 2, &count); p += count;
2106 sprintf (buffer, "EOR.W D%d,%s", rhi, ea);
2109 case 0xb180: case 0xb380: case 0xb580: case 0xb780: case 0xb980: case 0xbb80: case 0xbd80: case 0xbf80:
2110 if ((lo & 0x38) == 0x08)
2111 sprintf (buffer, "CMPM.L (A%d)+,(A%d)+", rlo, rhi);
2114 ea = MakeEA (lo, p, 4, &count); p += count;
2115 sprintf (buffer, "EOR.L D%d,%s", rhi, ea);
2118 case 0xb1c0: case 0xb3c0: case 0xb5c0: case 0xb7c0: case 0xb9c0: case 0xbbc0: case 0xbdc0: case 0xbfc0:
2119 ea = MakeEA (lo, p, 4, &count); p += count;
2120 sprintf (buffer, "CMPA.L %s,A%d", ea, rhi);
2122 case 0xc000: case 0xc200: case 0xc400: case 0xc600: case 0xc800: case 0xca00: case 0xcc00: case 0xce00:
2123 ea = MakeEA (lo, p, 1, &count); p += count;
2124 sprintf (buffer, "AND.B %s,D%d", ea, rhi);
2126 case 0xc040: case 0xc240: case 0xc440: case 0xc640: case 0xc840: case 0xca40: case 0xcc40: case 0xce40:
2127 ea = MakeEA (lo, p, 2, &count); p += count;
2128 sprintf (buffer, "AND.W %s,D%d", ea, rhi);
2130 case 0xc080: case 0xc280: case 0xc480: case 0xc680: case 0xc880: case 0xca80: case 0xcc80: case 0xce80:
2131 ea = MakeEA (lo, p, 4, &count); p += count;
2132 sprintf (buffer, "AND.L %s,D%d", ea, rhi);
2134 case 0xc0c0: case 0xc2c0: case 0xc4c0: case 0xc6c0: case 0xc8c0: case 0xcac0: case 0xccc0: case 0xcec0:
2135 ea = MakeEA (lo, p, 2, &count); p += count;
2136 sprintf (buffer, "MULU.W %s,D%d", ea, rhi);
2138 case 0xc100: case 0xc300: case 0xc500: case 0xc700: case 0xc900: case 0xcb00: case 0xcd00: case 0xcf00:
2139 if ((lo & 0x30) == 0)
2142 sprintf (buffer, "ABCD.B -(A%d),-(A%d)", rlo, rhi);
2144 sprintf (buffer, "ABCD.B D%d,D%d", rlo, rhi);
2148 ea = MakeEA (lo, p, 1, &count); p += count;
2149 sprintf (buffer, "AND.B D%d,%s", rhi, ea);
2152 case 0xc140: case 0xc340: case 0xc540: case 0xc740: case 0xc940: case 0xcb40: case 0xcd40: case 0xcf40:
2153 if ((lo & 0x30) == 0)
2156 sprintf (buffer, "EXG A%d,A%d", rhi, rlo);
2158 sprintf (buffer, "EXG D%d,D%d", rhi, rlo);
2162 ea = MakeEA (lo, p, 2,&count); p += count;
2163 sprintf (buffer, "AND.W D%d,%s", rhi, ea);
2166 case 0xc180: case 0xc380: case 0xc580: case 0xc780: case 0xc980: case 0xcb80: case 0xcd80: case 0xcf80:
2167 if ((lo & 0x38) == 0x08)
2168 sprintf (buffer, "EXG D%d,A%d", rhi, rlo);
2171 ea = MakeEA (lo, p, 4, &count); p += count;
2172 sprintf (buffer, "AND.L D%d,%s", rhi, ea);
2175 case 0xc1c0: case 0xc3c0: case 0xc5c0: case 0xc7c0: case 0xc9c0: case 0xcbc0: case 0xcdc0: case 0xcfc0:
2176 ea = MakeEA (lo, p, 2, &count); p += count;
2177 sprintf (buffer, "MULS.W %s,D%d", ea, rhi);
2179 case 0xd000: case 0xd200: case 0xd400: case 0xd600: case 0xd800: case 0xda00: case 0xdc00: case 0xde00:
2180 ea = MakeEA (lo, p, 1, &count); p += count;
2181 sprintf (buffer, "ADD.B %s,D%d", ea, rhi);
2183 case 0xd040: case 0xd240: case 0xd440: case 0xd640: case 0xd840: case 0xda40: case 0xdc40: case 0xde40:
2184 ea = MakeEA (lo, p, 2, &count); p += count;
2185 sprintf (buffer, "ADD.W %s,D%d", ea, rhi);
2187 case 0xd080: case 0xd280: case 0xd480: case 0xd680: case 0xd880: case 0xda80: case 0xdc80: case 0xde80:
2188 ea = MakeEA (lo, p, 4, &count); p += count;
2189 sprintf (buffer, "ADD.L %s,D%d", ea, rhi);
2191 case 0xd0c0: case 0xd2c0: case 0xd4c0: case 0xd6c0: case 0xd8c0: case 0xdac0: case 0xdcc0: case 0xdec0:
2192 ea = MakeEA (lo, p, 2, &count); p += count;
2193 sprintf (buffer, "ADDA.W %s,A%d", ea, rhi);
2195 case 0xd100: case 0xd300: case 0xd500: case 0xd700: case 0xd900: case 0xdb00: case 0xdd00: case 0xdf00:
2196 if ((lo & 0x30) == 0)
2199 sprintf (buffer, "ADDX.B -(A%d),-(A%d)", rlo, rhi);
2201 sprintf (buffer, "ADDX.B D%d,D%d", rlo, rhi);
2205 ea = MakeEA (lo, p, 1, &count); p += count;
2206 sprintf (buffer, "ADD.B D%d,%s", rhi, ea);
2209 case 0xd140: case 0xd340: case 0xd540: case 0xd740: case 0xd940: case 0xdb40: case 0xdd40: case 0xdf40:
2210 if ((lo & 0x30) == 0)
2213 sprintf (buffer, "ADDX.W -(A%d),-(A%d)", rlo, rhi);
2215 sprintf (buffer, "ADDX.W D%d,D%d", rlo, rhi);
2219 ea = MakeEA (lo, p, 2, &count); p += count;
2220 sprintf (buffer, "ADD.W D%d,%s", rhi, ea);
2223 case 0xd180: case 0xd380: case 0xd580: case 0xd780: case 0xd980: case 0xdb80: case 0xdd80: case 0xdf80:
2224 if ((lo & 0x30) == 0)
2227 sprintf (buffer, "ADDX.L -(A%d),-(A%d)", rlo, rhi);
2229 sprintf (buffer, "ADDX.L D%d,D%d", rlo, rhi);
2233 ea = MakeEA (lo, p, 4,&count); p += count;
2234 sprintf (buffer, "ADD.L D%d,%s", rhi, ea);
2237 case 0xd1c0: case 0xd3c0: case 0xd5c0: case 0xd7c0: case 0xd9c0: case 0xdbc0: case 0xddc0: case 0xdfc0:
2238 ea = MakeEA (lo, p, 4, &count); p += count;
2239 sprintf (buffer, "ADDA.L %s,A%d", ea, rhi);
2241 case 0xe000: case 0xe200: case 0xe400: case 0xe600: case 0xe800: case 0xea00: case 0xec00: case 0xee00:
2242 switch ((lo >> 3) & 7)
2244 case 0: sprintf (buffer, "ASR.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2245 case 1: sprintf (buffer, "LSR.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2246 case 2: sprintf (buffer, "ROXR.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2247 case 3: sprintf (buffer, "ROR.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2248 case 4: sprintf (buffer, "ASR.B D%d,D%d", rhi, rlo); break;
2249 case 5: sprintf (buffer, "LSR.B D%d,D%d", rhi, rlo); break;
2250 case 6: sprintf (buffer, "ROXR.B D%d,D%d", rhi, rlo); break;
2251 case 7: sprintf (buffer, "ROR.B D%d,D%d", rhi, rlo); break;
2254 case 0xe040: case 0xe240: case 0xe440: case 0xe640: case 0xe840: case 0xea40: case 0xec40: case 0xee40:
2255 switch ((lo >> 3) & 7)
2257 case 0: sprintf (buffer, "ASR.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2258 case 1: sprintf (buffer, "LSR.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2259 case 2: sprintf (buffer, "ROXR.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2260 case 3: sprintf (buffer, "ROR.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2261 case 4: sprintf (buffer, "ASR.W D%d,D%d", rhi, rlo); break;
2262 case 5: sprintf (buffer, "LSR.W D%d,D%d", rhi, rlo); break;
2263 case 6: sprintf (buffer, "ROXR.W D%d,D%d", rhi, rlo); break;
2264 case 7: sprintf (buffer, "ROR.W D%d,D%d", rhi, rlo); break;
2267 case 0xe080: case 0xe280: case 0xe480: case 0xe680: case 0xe880: case 0xea80: case 0xec80: case 0xee80:
2268 switch ((lo >> 3) & 7)
2270 case 0: sprintf (buffer, "ASR.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2271 case 1: sprintf (buffer, "LSR.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2272 case 2: sprintf (buffer, "ROXR.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2273 case 3: sprintf (buffer, "ROR.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2274 case 4: sprintf (buffer, "ASR.L D%d,D%d", rhi, rlo); break;
2275 case 5: sprintf (buffer, "LSR.L D%d,D%d", rhi, rlo); break;
2276 case 6: sprintf (buffer, "ROXR.L D%d,D%d", rhi, rlo); break;
2277 case 7: sprintf (buffer, "ROR.L D%d,D%d", rhi, rlo); break;
2280 case 0xe0c0: case 0xe2c0: case 0xe4c0: case 0xe6c0:
2281 case 0xe1c0: case 0xe3c0: case 0xe5c0: case 0xe7c0:
2282 ea = MakeEA (lo, p, 4, &count); p += count;
2283 switch ((op >> 8) & 7)
2285 case 0: sprintf (buffer, "ASR.L #1,%s", ea); break;
2286 case 1: sprintf (buffer, "ASL.L #1,%s", ea); break;
2287 case 2: sprintf (buffer, "LSR.L #1,%s", ea); break;
2288 case 3: sprintf (buffer, "LSL.L #1,%s", ea); break;
2289 case 4: sprintf (buffer, "ROXR.L #1,%s", ea); break;
2290 case 5: sprintf (buffer, "ROXL.L #1,%s", ea); break;
2291 case 6: sprintf (buffer, "ROR.L #1,%s", ea); break;
2292 case 7: sprintf (buffer, "ROL.L #1,%s", ea); break;
2295 case 0xe100: case 0xe300: case 0xe500: case 0xe700: case 0xe900: case 0xeb00: case 0xed00: case 0xef00:
2296 switch ((lo >> 3) & 7)
2298 case 0: sprintf (buffer, "ASL.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2299 case 1: sprintf (buffer, "LSL.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2300 case 2: sprintf (buffer, "ROXL.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2301 case 3: sprintf (buffer, "ROL.B #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2302 case 4: sprintf (buffer, "ASL.B D%d,D%d", rhi, rlo); break;
2303 case 5: sprintf (buffer, "LSL.B D%d,D%d", rhi, rlo); break;
2304 case 6: sprintf (buffer, "ROXL.B D%d,D%d", rhi, rlo); break;
2305 case 7: sprintf (buffer, "ROL.B D%d,D%d", rhi, rlo); break;
2308 case 0xe140: case 0xe340: case 0xe540: case 0xe740: case 0xe940: case 0xeb40: case 0xed40: case 0xef40:
2309 switch ((lo >> 3) & 7)
2311 case 0: sprintf (buffer, "ASL.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2312 case 1: sprintf (buffer, "LSL.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2313 case 2: sprintf (buffer, "ROXL.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2314 case 3: sprintf (buffer, "ROL.W #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2315 case 4: sprintf (buffer, "ASL.W D%d,D%d", rhi, rlo); break;
2316 case 5: sprintf (buffer, "LSL.W D%d,D%d", rhi, rlo); break;
2317 case 6: sprintf (buffer, "ROXL.W D%d,D%d", rhi, rlo); break;
2318 case 7: sprintf (buffer, "ROL.W D%d,D%d", rhi, rlo); break;
2321 case 0xe180: case 0xe380: case 0xe580: case 0xe780: case 0xe980: case 0xeb80: case 0xed80: case 0xef80:
2322 switch ((lo >> 3) & 7)
2324 case 0: sprintf (buffer, "ASL.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2325 case 1: sprintf (buffer, "LSL.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2326 case 2: sprintf (buffer, "ROXL.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2327 case 3: sprintf (buffer, "ROL.L #%d,D%d", (rhi == 0) ? 8 : rhi, rlo); break;
2328 case 4: sprintf (buffer, "ASL.L D%d,D%d", rhi, rlo); break;
2329 case 5: sprintf (buffer, "LSL.L D%d,D%d", rhi, rlo); break;
2330 case 6: sprintf (buffer, "ROXL.L D%d,D%d", rhi, rlo); break;
2331 case 7: sprintf (buffer, "ROL.L D%d,D%d", rhi, rlo); break;
2335 sprintf (buffer, "DC.W $%X", op);