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