#include #include #include "dis.h" struct info optbl[256] = { /* 00 */ { { 'B', 'R', 'K', 0, }, 1, IMP|STOP, }, /* 01 */ { { 'O', 'R', 'A', 0, }, 2, INX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 05 */ { { 'O', 'R', 'A', 0, }, 2, ZPG|NORM, }, /* 06 */ { { 'A', 'S', 'L', 0, }, 2, ZPG|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 08 */ { { 'P', 'H', 'P', 0, }, 1, IMP|NORM, }, /* 09 */ { { 'O', 'R', 'A', 0, }, 2, IMM|NORM, }, /* 0a */ { { 'A', 'S', 'L', 0, }, 1, ACC|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 0d */ { { 'O', 'R', 'A', 0, }, 3, ABS|NORM, }, /* 0e */ { { 'A', 'S', 'L', 0, }, 3, ABS|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 10 */ { { 'B', 'P', 'L', 0, }, 2, REL|FORK, }, /* 11 */ { { 'O', 'R', 'A', 0, }, 2, INY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 15 */ { { 'O', 'R', 'A', 0, }, 2, ZPX|NORM, }, /* 16 */ { { 'A', 'S', 'L', 0, }, 2, ZPX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 18 */ { { 'C', 'L', 'C', 0, }, 1, IMP|NORM, }, /* 19 */ { { 'O', 'R', 'A', 0, }, 3, ABY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 1d */ { { 'O', 'R', 'A', 0, }, 3, ABX|NORM, }, /* 1e */ { { 'A', 'S', 'L', 0, }, 3, ABX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 20 */ { { 'J', 'S', 'R', 0, }, 3, ABS|FORK, }, /* 21 */ { { 'A', 'N', 'D', 0, }, 2, INX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 24 */ { { 'B', 'I', 'T', 0, }, 2, ZPG|NORM, }, /* 25 */ { { 'A', 'N', 'D', 0, }, 2, ZPG|NORM, }, /* 26 */ { { 'R', 'O', 'L', 0, }, 2, ZPG|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 28 */ { { 'P', 'L', 'P', 0, }, 1, IMP|NORM, }, /* 29 */ { { 'A', 'N', 'D', 0, }, 2, IMM|NORM, }, /* 2a */ { { 'R', 'O', 'L', 0, }, 1, ACC|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 2c */ { { 'B', 'I', 'T', 0, }, 3, ABS|NORM, }, /* 2d */ { { 'A', 'N', 'D', 0, }, 3, ABS|NORM, }, /* 2e */ { { 'R', 'O', 'L', 0, }, 3, ABS|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 30 */ { { 'B', 'M', 'I', 0, }, 2, REL|FORK, }, /* 31 */ { { 'A', 'N', 'D', 0, }, 2, INY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 35 */ { { 'A', 'N', 'D', 0, }, 2, ZPX|NORM, }, /* 36 */ { { 'R', 'O', 'L', 0, }, 2, ZPX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 38 */ { { 'S', 'E', 'C', 0, }, 1, IMP|NORM, }, /* 39 */ { { 'A', 'N', 'D', 0, }, 3, ABY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 3d */ { { 'A', 'N', 'D', 0, }, 3, ABX|NORM, }, /* 3e */ { { 'R', 'O', 'L', 0, }, 3, ABX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 40 */ { { 'R', 'T', 'I', 0, }, 1, IMP|STOP, }, /* 41 */ { { 'E', 'O', 'R', 0, }, 2, INX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 45 */ { { 'E', 'O', 'R', 0, }, 2, ZPG|NORM, }, /* 46 */ { { 'L', 'S', 'R', 0, }, 2, ZPG|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 48 */ { { 'P', 'H', 'A', 0, }, 1, IMP|NORM, }, /* 49 */ { { 'E', 'O', 'R', 0, }, 2, IMM|NORM, }, /* 4a */ { { 'L', 'S', 'R', 0, }, 1, ACC|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 4c */ { { 'J', 'M', 'P', 0, }, 3, ABS|JUMP, }, /* 4d */ { { 'E', 'O', 'R', 0, }, 3, ABS|NORM, }, /* 4e */ { { 'L', 'S', 'R', 0, }, 3, ABS|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 50 */ { { 'B', 'V', 'C', 0, }, 2, REL|FORK, }, /* 51 */ { { 'E', 'O', 'R', 0, }, 2, INY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 55 */ { { 'E', 'O', 'R', 0, }, 2, ZPX|NORM, }, /* 56 */ { { 'L', 'S', 'R', 0, }, 2, ZPX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 58 */ { { 'C', 'L', 'I', 0, }, 1, IMP|NORM, }, /* 59 */ { { 'E', 'O', 'R', 0, }, 3, ABY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 5d */ { { 'E', 'O', 'R', 0, }, 3, ABX|NORM, }, /* 5e */ { { 'L', 'S', 'R', 0, }, 3, ABX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 60 */ { { 'R', 'T', 'S', 0, }, 1, IMP|STOP, }, /* 61 */ { { 'A', 'D', 'C', 0, }, 2, INX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 65 */ { { 'A', 'D', 'C', 0, }, 2, ZPG|NORM, }, /* 66 */ { { 'R', 'O', 'R', 0, }, 2, ZPG|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 68 */ { { 'P', 'L', 'A', 0, }, 1, IMP|NORM, }, /* 69 */ { { 'A', 'D', 'C', 0, }, 2, IMM|NORM, }, /* 6a */ { { 'R', 'O', 'R', 0, }, 1, ACC|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 6c */ { { 'J', 'M', 'P', 0, }, 3, IND|STOP, }, /* 6d */ { { 'A', 'D', 'C', 0, }, 3, ABS|NORM, }, /* 6e */ { { 'R', 'O', 'R', 0, }, 3, ABS|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 70 */ { { 'B', 'V', 'S', 0, }, 2, REL|FORK, }, /* 71 */ { { 'A', 'D', 'C', 0, }, 2, INY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 75 */ { { 'A', 'D', 'C', 0, }, 2, ZPX|NORM, }, /* 76 */ { { 'R', 'O', 'R', 0, }, 2, ZPX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 78 */ { { 'S', 'E', 'I', 0, }, 1, IMP|NORM, }, /* 79 */ { { 'A', 'D', 'C', 0, }, 3, ABY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 7d */ { { 'A', 'D', 'C', 0, }, 3, ABX|NORM, }, /* 7e */ { { 'R', 'O', 'R', 0, }, 3, ABX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 81 */ { { 'S', 'T', 'A', 0, }, 2, INX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 84 */ { { 'S', 'T', 'Y', 0, }, 2, ZPG|NORM, }, /* 85 */ { { 'S', 'T', 'A', 0, }, 2, ZPG|NORM, }, /* 86 */ { { 'S', 'T', 'X', 0, }, 2, ZPG|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 88 */ { { 'D', 'E', 'Y', 0, }, 1, IMP|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 8a */ { { 'T', 'X', 'A', 0, }, 1, IMP|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 8c */ { { 'S', 'T', 'Y', 0, }, 3, ABS|NORM, }, /* 8d */ { { 'S', 'T', 'A', 0, }, 3, ABS|NORM, }, /* 8e */ { { 'S', 'T', 'X', 0, }, 3, ABS|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 90 */ { { 'B', 'C', 'C', 0, }, 2, REL|FORK, }, /* 91 */ { { 'S', 'T', 'A', 0, }, 2, INY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 94 */ { { 'S', 'T', 'Y', 0, }, 2, ZPX|NORM, }, /* 95 */ { { 'S', 'T', 'A', 0, }, 2, ZPX|NORM, }, /* 96 */ { { 'S', 'T', 'X', 0, }, 2, ZPY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 98 */ { { 'T', 'Y', 'A', 0, }, 1, IMP|NORM, }, /* 99 */ { { 'S', 'T', 'A', 0, }, 3, ABY|NORM, }, /* 9a */ { { 'T', 'X', 'S', 0, }, 1, IMP|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 9d */ { { 'S', 'T', 'A', 0, }, 3, ABX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* a0 */ { { 'L', 'D', 'Y', 0, }, 2, IMM|NORM, }, /* a1 */ { { 'L', 'D', 'A', 0, }, 2, INX|NORM, }, /* a2 */ { { 'L', 'D', 'X', 0, }, 2, IMM|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* a4 */ { { 'L', 'D', 'Y', 0, }, 2, ZPG|NORM, }, /* a5 */ { { 'L', 'D', 'A', 0, }, 2, ZPG|NORM, }, /* a6 */ { { 'L', 'D', 'X', 0, }, 2, ZPG|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* a8 */ { { 'T', 'A', 'Y', 0, }, 1, IMP|NORM, }, /* a9 */ { { 'L', 'D', 'A', 0, }, 2, IMM|NORM, }, /* aa */ { { 'T', 'A', 'X', 0, }, 1, IMP|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* ac */ { { 'L', 'D', 'Y', 0, }, 3, ABS|NORM, }, /* ad */ { { 'L', 'D', 'A', 0, }, 3, ABS|NORM, }, /* ae */ { { 'L', 'D', 'X', 0, }, 3, ABS|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* b0 */ { { 'B', 'C', 'S', 0, }, 2, REL|FORK, }, /* b1 */ { { 'L', 'D', 'A', 0, }, 2, INY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* b4 */ { { 'L', 'D', 'Y', 0, }, 2, ZPX|NORM, }, /* b5 */ { { 'L', 'D', 'A', 0, }, 2, ZPX|NORM, }, /* b6 */ { { 'L', 'D', 'X', 0, }, 2, ZPY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* b8 */ { { 'C', 'L', 'V', 0, }, 1, IMP|NORM, }, /* b9 */ { { 'L', 'D', 'A', 0, }, 3, ABY|NORM, }, /* ba */ { { 'T', 'S', 'X', 0, }, 1, IMP|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* bc */ { { 'L', 'D', 'Y', 0, }, 3, ABX|NORM, }, /* bd */ { { 'L', 'D', 'A', 0, }, 3, ABX|NORM, }, /* be */ { { 'L', 'D', 'X', 0, }, 3, ABY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* c0 */ { { 'C', 'P', 'Y', 0, }, 2, IMM|NORM, }, /* c1 */ { { 'C', 'M', 'P', 0, }, 2, INX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* c4 */ { { 'C', 'P', 'Y', 0, }, 2, ZPG|NORM, }, /* c5 */ { { 'C', 'M', 'P', 0, }, 2, ZPG|NORM, }, /* c6 */ { { 'D', 'E', 'C', 0, }, 2, ZPG|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* c8 */ { { 'I', 'N', 'Y', 0, }, 1, IMP|NORM, }, /* c9 */ { { 'C', 'M', 'P', 0, }, 2, IMM|NORM, }, /* ca */ { { 'D', 'E', 'X', 0, }, 1, IMP|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* cc */ { { 'C', 'P', 'Y', 0, }, 3, ABS|NORM, }, /* cd */ { { 'C', 'M', 'P', 0, }, 3, ABS|NORM, }, /* ce */ { { 'D', 'E', 'C', 0, }, 3, ABS|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* d0 */ { { 'B', 'N', 'E', 0, }, 2, REL|FORK, }, /* d1 */ { { 'C', 'M', 'P', 0, }, 2, INY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* d5 */ { { 'C', 'M', 'P', 0, }, 2, ZPX|NORM, }, /* d6 */ { { 'D', 'E', 'C', 0, }, 2, ZPX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* d8 */ { { 'C', 'L', 'D', 0, }, 1, IMP|NORM, }, /* d9 */ { { 'C', 'M', 'P', 0, }, 3, ABY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* dd */ { { 'C', 'M', 'P', 0, }, 3, ABX|NORM, }, /* de */ { { 'D', 'E', 'C', 0, }, 3, ABX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* e0 */ { { 'C', 'P', 'X', 0, }, 2, IMM|NORM, }, /* e1 */ { { 'S', 'B', 'C', 0, }, 2, INX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* e4 */ { { 'C', 'P', 'X', 0, }, 2, ZPG|NORM, }, /* e5 */ { { 'S', 'B', 'C', 0, }, 2, ZPG|NORM, }, /* e6 */ { { 'I', 'N', 'C', 0, }, 2, ZPG|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* e8 */ { { 'I', 'N', 'X', 0, }, 1, IMP|NORM, }, /* e9 */ { { 'S', 'B', 'C', 0, }, 2, IMM|NORM, }, /* ea */ { { 'N', 'O', 'P', 0, }, 1, IMP|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* ec */ { { 'C', 'P', 'X', 0, }, 3, ABS|NORM, }, /* ed */ { { 'S', 'B', 'C', 0, }, 3, ABS|NORM, }, /* ee */ { { 'I', 'N', 'C', 0, }, 3, ABS|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* f0 */ { { 'B', 'E', 'Q', 0, }, 2, REL|FORK, }, /* f1 */ { { 'S', 'B', 'C', 0, }, 2, INY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* f5 */ { { 'S', 'B', 'C', 0, }, 2, ZPX|NORM, }, /* f6 */ { { 'I', 'N', 'C', 0, }, 2, ZPX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* f8 */ { { 'S', 'E', 'D', 0, }, 1, IMP|NORM, }, /* f9 */ { { 'S', 'B', 'C', 0, }, 3, ABY|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, /* fd */ { { 'S', 'B', 'C', 0, }, 3, ABX|NORM, }, /* fe */ { { 'I', 'N', 'C', 0, }, 3, ABX|NORM, }, /* 00 */ { { '?', '?', '?', 0, }, 1, ILL|NORM, }, };