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