libsidplayfp 1.8.8
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