libsidplayfp  1.8.3
opcodes.h
1 /*
2  * This file is part of libsidplayfp, a SID player engine.
3  *
4  * Copyright 2011-2013 Leandro Nini <drfiemost@users.sourceforge.net>
5  * Copyright 2007-2010 Antti Lankila
6  * Copyright 2000 Simon White
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  */
22 
23 #ifndef OPCODES_H
24 #define OPCODES_H
25 
26 #define OPCODE_MAX 0x100
27 
28 /* HLT
29  case 0x02: case 0x12: case 0x22: case 0x32: case 0x42: case 0x52:
30  case 0x62: case 0x72: case 0x92: case 0xb2: case 0xd2: case 0xf2:
31  case 0x02: case 0x12: case 0x22: case 0x32: case 0x42: case 0x52:
32  case 0x62: case 0x72: case 0x92: case 0xb2: case 0xd2: case 0xf2:
33 */
34 
35 #define BRKn 0x00
36 #define JSRw 0x20
37 #define RTIn 0x40
38 #define RTSn 0x60
39 #define NOPb 0x80
40 #define NOPb_ NOPb: case 0x82: case 0xC2: case 0xE2: case 0x89
41 #define LDYb 0xA0
42 #define CPYb 0xC0
43 #define CPXb 0xE0
44 
45 #define ORAix 0x01
46 #define ANDix 0x21
47 #define EORix 0x41
48 #define ADCix 0x61
49 #define STAix 0x81
50 #define LDAix 0xA1
51 #define CMPix 0xC1
52 #define SBCix 0xE1
53 
54 #define LDXb 0xA2
55 
56 #define SLOix 0x03
57 #define RLAix 0x23
58 #define SREix 0x43
59 #define RRAix 0x63
60 #define SAXix 0x83
61 #define LAXix 0xA3
62 #define DCPix 0xC3
63 #define ISBix 0xE3
64 
65 #define NOPz 0x04
66 #define NOPz_ NOPz: case 0x44: case 0x64
67 #define BITz 0x24
68 #define STYz 0x84
69 #define LDYz 0xA4
70 #define CPYz 0xC4
71 #define CPXz 0xE4
72 
73 #define ORAz 0x05
74 #define ANDz 0x25
75 #define EORz 0x45
76 #define ADCz 0x65
77 #define STAz 0x85
78 #define LDAz 0xA5
79 #define CMPz 0xC5
80 #define SBCz 0xE5
81 
82 #define ASLz 0x06
83 #define ROLz 0x26
84 #define LSRz 0x46
85 #define RORz 0x66
86 #define STXz 0x86
87 #define LDXz 0xA6
88 #define DECz 0xC6
89 #define INCz 0xE6
90 
91 #define SLOz 0x07
92 #define RLAz 0x27
93 #define SREz 0x47
94 #define RRAz 0x67
95 #define SAXz 0x87
96 #define LAXz 0xA7
97 #define DCPz 0xC7
98 #define ISBz 0xE7
99 
100 #define PHPn 0x08
101 #define PLPn 0x28
102 #define PHAn 0x48
103 #define PLAn 0x68
104 #define DEYn 0x88
105 #define TAYn 0xA8
106 #define INYn 0xC8
107 #define INXn 0xE8
108 
109 #define ORAb 0x09
110 #define ANDb 0x29
111 #define EORb 0x49
112 #define ADCb 0x69
113 #define LDAb 0xA9
114 #define CMPb 0xC9
115 #define SBCb 0xE9
116 #define SBCb_ SBCb: case 0XEB
117 
118 #define ASLn 0x0A
119 #define ROLn 0x2A
120 #define LSRn 0x4A
121 #define RORn 0x6A
122 #define TXAn 0x8A
123 #define TAXn 0xAA
124 #define DEXn 0xCA
125 #define NOPn 0xEA
126 #define NOPn_ NOPn: case 0x1A: case 0x3A: case 0x5A: case 0x7A: case 0xDA: case 0xFA
127 
128 #define ANCb 0x0B
129 #define ANCb_ ANCb: case 0x2B
130 #define ASRb 0x4B
131 #define ARRb 0x6B
132 #define ANEb 0x8B
133 #define XAAb 0x8B
134 #define LXAb 0xAB
135 #define SBXb 0xCB
136 
137 #define NOPa 0x0C
138 #define BITa 0x2C
139 #define JMPw 0x4C
140 #define JMPi 0x6C
141 #define STYa 0x8C
142 #define LDYa 0xAC
143 #define CPYa 0xCC
144 #define CPXa 0xEC
145 
146 #define ORAa 0x0D
147 #define ANDa 0x2D
148 #define EORa 0x4D
149 #define ADCa 0x6D
150 #define STAa 0x8D
151 #define LDAa 0xAD
152 #define CMPa 0xCD
153 #define SBCa 0xED
154 
155 #define ASLa 0x0E
156 #define ROLa 0x2E
157 #define LSRa 0x4E
158 #define RORa 0x6E
159 #define STXa 0x8E
160 #define LDXa 0xAE
161 #define DECa 0xCE
162 #define INCa 0xEE
163 
164 #define SLOa 0x0F
165 #define RLAa 0x2F
166 #define SREa 0x4F
167 #define RRAa 0x6F
168 #define SAXa 0x8F
169 #define LAXa 0xAF
170 #define DCPa 0xCF
171 #define ISBa 0xEF
172 
173 #define BPLr 0x10
174 #define BMIr 0x30
175 #define BVCr 0x50
176 #define BVSr 0x70
177 #define BCCr 0x90
178 #define BCSr 0xB0
179 #define BNEr 0xD0
180 #define BEQr 0xF0
181 
182 #define ORAiy 0x11
183 #define ANDiy 0x31
184 #define EORiy 0x51
185 #define ADCiy 0x71
186 #define STAiy 0x91
187 #define LDAiy 0xB1
188 #define CMPiy 0xD1
189 #define SBCiy 0xF1
190 
191 #define SLOiy 0x13
192 #define RLAiy 0x33
193 #define SREiy 0x53
194 #define RRAiy 0x73
195 #define SHAiy 0x93
196 #define LAXiy 0xB3
197 #define DCPiy 0xD3
198 #define ISBiy 0xF3
199 
200 #define NOPzx 0x14
201 #define NOPzx_ NOPzx: case 0x34: case 0x54: case 0x74: case 0xD4: case 0xF4
202 #define STYzx 0x94
203 #define LDYzx 0xB4
204 
205 #define ORAzx 0x15
206 #define ANDzx 0x35
207 #define EORzx 0x55
208 #define ADCzx 0x75
209 #define STAzx 0x95
210 #define LDAzx 0xB5
211 #define CMPzx 0xD5
212 #define SBCzx 0xF5
213 
214 #define ASLzx 0x16
215 #define ROLzx 0x36
216 #define LSRzx 0x56
217 #define RORzx 0x76
218 #define STXzy 0x96
219 #define LDXzy 0xB6
220 #define DECzx 0xD6
221 #define INCzx 0xF6
222 
223 #define SLOzx 0x17
224 #define RLAzx 0x37
225 #define SREzx 0x57
226 #define RRAzx 0x77
227 #define SAXzy 0x97
228 #define LAXzy 0xB7
229 #define DCPzx 0xD7
230 #define ISBzx 0xF7
231 
232 #define CLCn 0x18
233 #define SECn 0x38
234 #define CLIn 0x58
235 #define SEIn 0x78
236 #define TYAn 0x98
237 #define CLVn 0xB8
238 #define CLDn 0xD8
239 #define SEDn 0xF8
240 
241 #define ORAay 0x19
242 #define ANDay 0x39
243 #define EORay 0x59
244 #define ADCay 0x79
245 #define STAay 0x99
246 #define LDAay 0xB9
247 #define CMPay 0xD9
248 #define SBCay 0xF9
249 
250 #define TXSn 0x9A
251 #define TSXn 0xBA
252 
253 #define SLOay 0x1B
254 #define RLAay 0x3B
255 #define SREay 0x5B
256 #define RRAay 0x7B
257 #define SHSay 0x9B
258 #define TASay 0x9B
259 #define LASay 0xBB
260 #define DCPay 0xDB
261 #define ISBay 0xFB
262 
263 #define NOPax 0x1C
264 #define NOPax_ NOPax: case 0x3C: case 0x5C: case 0x7C: case 0xDC: case 0xFC
265 #define SHYax 0x9C
266 #define LDYax 0xBC
267 
268 #define ORAax 0x1D
269 #define ANDax 0x3D
270 #define EORax 0x5D
271 #define ADCax 0x7D
272 #define STAax 0x9D
273 #define LDAax 0xBD
274 #define CMPax 0xDD
275 #define SBCax 0xFD
276 
277 #define ASLax 0x1E
278 #define ROLax 0x3E
279 #define LSRax 0x5E
280 #define RORax 0x7E
281 #define SHXay 0x9E
282 #define LDXay 0xBE
283 #define DECax 0xDE
284 #define INCax 0xFE
285 
286 #define SLOax 0x1F
287 #define RLAax 0x3F
288 #define SREax 0x5F
289 #define RRAax 0x7F
290 #define SHAay 0x9F
291 #define LAXay 0xBF
292 #define DCPax 0xDF
293 #define ISBax 0xFF
294 
295 // Instruction Aliases
296 #define ASOix SLOix
297 #define LSEix SREix
298 #define AXSix SAXix
299 #define DCMix DCPix
300 #define INSix ISBix
301 #define ASOz SLOz
302 #define LSEz SREz
303 #define AXSz SAXz
304 #define DCMz DCPz
305 #define INSz ISBz
306 #define ALRb ASRb
307 #define OALb LXAb
308 #define ASOa SLOa
309 #define LSEa SREa
310 #define AXSa SAXa
311 #define DCMa DCPa
312 #define INSa ISBa
313 #define ASOiy SLOiy
314 #define LSEiy SREiy
315 #define AXAiy SHAiy
316 #define DCMiy DCPiy
317 #define INSiy ISBiy
318 #define ASOzx SLOzx
319 #define LSEzx SREzx
320 #define AXSzy SAXzy
321 #define DCMzx DCPzx
322 #define INSzx ISBzx
323 #define ASOay SLOay
324 #define LSEay SREay
325 #define DCMay DCPay
326 #define INSay ISBay
327 #define SAYax SHYax
328 #define XASay SHXay
329 #define ASOax SLOax
330 #define LSEax SREax
331 #define AXAay SHAay
332 #define DCMax DCPax
333 #define INSax ISBax
334 #define SKBn NOPb
335 #define SKWn NOPa
336 
337 #endif // OPCODES_H