1pub fn instruction_str(opcode: u8) -> &'static str {
2    match opcode {
3        0x00 => "NOP",
4        0x01 => "TCALL 0",
5        0x02 => "SET1 d.0",
6        0x03 => "BBS d.0, r",
7        0x04 => "OR A, d",
8        0x05 => "OR A, !a",
9        0x06 => "OR A, (X)",
10        0x07 => "OR A, [d+X]",
11        0x08 => "OR A, #i",
12        0x09 => "OR dd, ds",
13        0x0A => "OR1 C, m.b",
14        0x0B => "ASL d",
15        0x0C => "ASL !a",
16        0x0D => "PUSH PSW",
17        0x0E => "TSET1 !a",
18        0x0F => "BRK",
19        0x10 => "BPL r",
20        0x11 => "TCALL 1",
21        0x12 => "CLR1 d.0",
22        0x13 => "BBC d.0, r",
23        0x14 => "OR A, d+X",
24        0x15 => "OR A, !a+X",
25        0x16 => "OR A, !a+Y",
26        0x17 => "OR A, [d]+Y",
27        0x18 => "OR d, #i",
28        0x19 => "OR (X), (Y)",
29        0x1A => "DECW d",
30        0x1B => "ASL d+X",
31        0x1C => "ASL A",
32        0x1D => "DEC X",
33        0x1E => "CMP X, !a",
34        0x1F => "JMP [!a+X]",
35        0x20 => "CLRP",
36        0x21 => "TCALL 2",
37        0x22 => "SET1 d.1",
38        0x23 => "BBS d.1, r",
39        0x24 => "AND A, d",
40        0x25 => "AND A, !a",
41        0x26 => "AND A, (X)",
42        0x27 => "AND A, [d+X]",
43        0x28 => "AND A, #i",
44        0x29 => "AND dd, ds",
45        0x2A => "OR1 C, /m.b",
46        0x2B => "ROL d",
47        0x2C => "ROL !a",
48        0x2D => "PUSH A",
49        0x2E => "CBNE d, r",
50        0x2F => "BRA r",
51        0x30 => "BMI r",
52        0x31 => "TCALL 3",
53        0x32 => "CLR1 d.1",
54        0x33 => "BBC d.1, r",
55        0x34 => "AND A, d+X",
56        0x35 => "AND A, !a+X",
57        0x36 => "AND A, !a+Y",
58        0x37 => "AND A, [d]+Y",
59        0x38 => "AND d, #i",
60        0x39 => "AND (X), (Y)",
61        0x3A => "INCW d",
62        0x3B => "ROL d+X",
63        0x3C => "ROL A",
64        0x3D => "INC X",
65        0x3E => "CMP X, d",
66        0x3F => "CALL !a",
67        0x40 => "SETP",
68        0x41 => "TCALL 4",
69        0x42 => "SET1 d.2",
70        0x43 => "BBS d.2, r",
71        0x44 => "EOR A, d",
72        0x45 => "EOR A, !a",
73        0x46 => "EOR A, (X)",
74        0x47 => "EOR A, [d+X]",
75        0x48 => "EOR A, #i",
76        0x49 => "EOR dd, ds",
77        0x4A => "AND1 C, m.b",
78        0x4B => "LSR d",
79        0x4C => "LSR !a",
80        0x4D => "PUSH X",
81        0x4E => "TCLR !a",
82        0x4F => "PCALL u",
83        0x50 => "BVC r",
84        0x51 => "TCALL 5",
85        0x52 => "CLR1 d.2",
86        0x53 => "BBC d.2, r",
87        0x54 => "EOR A, d+X",
88        0x55 => "EOR A, !a+X",
89        0x56 => "EOR A, !a+Y",
90        0x57 => "EOR A, [d]+Y",
91        0x58 => "EOR d, #i",
92        0x59 => "EOR (X), (Y)",
93        0x5A => "CMPW YA, d",
94        0x5B => "LSR d+X",
95        0x5C => "LSR A",
96        0x5D => "MOV X, A",
97        0x5E => "CMP Y, !a",
98        0x5F => "JMP !a",
99        0x60 => "CLRC",
100        0x61 => "TCALL 6",
101        0x62 => "SET1 d.3",
102        0x63 => "BBS d.3, r",
103        0x64 => "CMP A, d",
104        0x65 => "CMP A, !a",
105        0x66 => "CMP A, (X)",
106        0x67 => "CMP A, [d+X]",
107        0x68 => "CMP A, #i",
108        0x69 => "CMP dd, ds",
109        0x6A => "AND1 C, /m.b",
110        0x6B => "ROR d",
111        0x6C => "ROR !a",
112        0x6D => "PUSH Y",
113        0x6E => "DBNZ d, r",
114        0x6F => "RET",
115        0x70 => "BVS r",
116        0x71 => "TCALL 7",
117        0x72 => "CLR1 d.3",
118        0x73 => "BBC d.3, r",
119        0x74 => "CMP A, d+X",
120        0x75 => "CMP A, !a+X",
121        0x76 => "CMP A, !a+Y",
122        0x77 => "CMP A, [d]+Y",
123        0x78 => "CMP d, #i",
124        0x79 => "CMP (X), (Y)",
125        0x7A => "ADDW YA, d",
126        0x7B => "ROR d+x",
127        0x7C => "ROR A",
128        0x7D => "MOV A, X",
129        0x7E => "CMP Y, d",
130        0x7F => "RETI",
131        0x80 => "SETC",
132        0x81 => "TCALL 8",
133        0x82 => "SET1 d.4",
134        0x83 => "BBS d.4, r",
135        0x84 => "ADC A, d",
136        0x85 => "ADC A, !a",
137        0x86 => "ADC A, (X)",
138        0x87 => "ADC A, [d+X]",
139        0x88 => "ADC A, #i",
140        0x89 => "ADC dd, ds",
141        0x8A => "EOR1 C, m.b",
142        0x8B => "DEC d",
143        0x8C => "DEC !a",
144        0x8D => "MOV Y, #i",
145        0x8E => "POP PSW",
146        0x8F => "MOV d, #i",
147        0x90 => "BCC r",
148        0x91 => "TCALL 9",
149        0x92 => "CLR1 d.4",
150        0x93 => "BBC d.4, r",
151        0x94 => "ADC A, d+X",
152        0x95 => "ADC A, !a+X",
153        0x96 => "ADC A, !a+Y",
154        0x97 => "ADC A, [d]+Y",
155        0x98 => "ADC d, #i",
156        0x99 => "ADC (X), (Y)",
157        0x9A => "SUBW YA, d",
158        0x9B => "DEC d+X",
159        0x9C => "DEC A",
160        0x9D => "MOV X, SP",
161        0x9E => "DIV YA, X",
162        0x9F => "XCN A",
163        0xA0 => "EI",
164        0xA1 => "TCALL 10",
165        0xA2 => "SET1 d.5",
166        0xA3 => "BBS d.5, r",
167        0xA4 => "SBC A, d",
168        0xA5 => "SBC A, !a",
169        0xA6 => "SBC A, (X)",
170        0xA7 => "SBC A, [d+X]",
171        0xA8 => "SBC A, #i",
172        0xA9 => "SBC dd, ds",
173        0xAA => "MOV1 C, m.b",
174        0xAB => "INC d",
175        0xAC => "INC !a",
176        0xAD => "CMP Y, #i",
177        0xAE => "POP A",
178        0xAF => "MOV (X)+, A",
179        0xB0 => "BCS r",
180        0xB1 => "TCALL 11",
181        0xB2 => "CLR1 d.5",
182        0xB3 => "BBC d.5, r",
183        0xB4 => "SBC a, d+X",
184        0xB5 => "SBC A, !a+X",
185        0xB6 => "SBC A, !a+Y",
186        0xB7 => "SBC A, [d]+Y",
187        0xB8 => "SBC d, #i",
188        0xB9 => "SBC (X), (Y)",
189        0xBA => "MOVW YA, d",
190        0xBB => "INC d+X",
191        0xBC => "INC A",
192        0xBD => "MOV SP, X",
193        0xBE => "DAS A",
194        0xBF => "MOV A, (X)+",
195        0xC0 => "DI",
196        0xC1 => "TCALL 12",
197        0xC2 => "SET1 d.6",
198        0xC3 => "BBS d.6, r",
199        0xC4 => "MOV d, A",
200        0xC5 => "MOV !a, A",
201        0xC6 => "MOV (X), A",
202        0xC7 => "MOV [d+X], A",
203        0xC8 => "CMP X, #i",
204        0xC9 => "MOV !a, X",
205        0xCA => "MOV1 m.b, C",
206        0xCB => "MOV d, Y",
207        0xCC => "MOV !a, Y",
208        0xCD => "MOV X, #i",
209        0xCE => "POP X",
210        0xCF => "MUL YA",
211        0xD0 => "BNE r",
212        0xD1 => "TCALL 13",
213        0xD2 => "CLR1 d.6",
214        0xD3 => "BBC d.6, r",
215        0xD4 => "MOV d+X, A",
216        0xD5 => "MOV !a+X, A",
217        0xD6 => "MOV !a+Y, A",
218        0xD7 => "MOV [d]+Y, A",
219        0xD8 => "MOV d, X",
220        0xD9 => "MOV d+Y, X",
221        0xDA => "MOVW d, YA",
222        0xDB => "MOV d+X, Y",
223        0xDC => "DEC Y",
224        0xDD => "MOV A, Y",
225        0xDE => "CBNE d+X, r",
226        0xDF => "DAA A",
227        0xE0 => "CLRV",
228        0xE1 => "TCALL 14",
229        0xE2 => "SET1 d.7",
230        0xE3 => "BBS d.7, r",
231        0xE4 => "MOV A, d",
232        0xE5 => "MOV A, !a",
233        0xE6 => "MOV A, (X)",
234        0xE7 => "MOV A, [d+X]",
235        0xE8 => "MOV A, #i",
236        0xE9 => "MOV X, !a",
237        0xEA => "NOT1 m.b",
238        0xEB => "MOV Y, d",
239        0xEC => "MOV Y, !a",
240        0xED => "NOTC",
241        0xEE => "POP Y",
242        0xEF => "SLEEP",
243        0xF0 => "BEQ r",
244        0xF1 => "TCALL 15",
245        0xF2 => "CLR1 d.7",
246        0xF3 => "BBC d.7, r",
247        0xF4 => "MOV A, d+X",
248        0xF5 => "MOV A, !a+X",
249        0xF6 => "MOV A, !a+Y",
250        0xF7 => "MOV A, [d]+Y",
251        0xF8 => "MOV X, d",
252        0xF9 => "MOV X, d+Y",
253        0xFA => "MOV dd, ds",
254        0xFB => "MOV Y, d+X",
255        0xFC => "INC Y",
256        0xFD => "MOV Y, A",
257        0xFE => "DBNZ Y, r",
258        0xFF => "STOP",
259    }
260}