summaryrefslogtreecommitdiff
path: root/libsidplay2/sidplay-libs-2.1.0/libsidplay/src/mos6510/opcodes.h
blob: e4d44acdf837ef88da5d47ff2c2e5f343bb2be79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
/***************************************************************************
                          opcodes.h  -  description
                             -------------------
    begin                : Thu May 11 2000
    copyright            : (C) 2000 by Simon White
    email                : s_a_white@email.com
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/
#ifndef _opcodes_h_
#define _opcodes_h_

#define OPCODE_MAX 0x100

/* HLT
    case 0x02: case 0x12: case 0x22: case 0x32: case 0x42: case 0x52:
    case 0x62: case 0x72: case 0x92: case 0xb2: case 0xd2: case 0xf2:
    case 0x02: case 0x12: case 0x22: case 0x32: case 0x42: case 0x52:
    case 0x62: case 0x72: case 0x92: case 0xb2: case 0xd2: case 0xf2:
*/

#define BRKn  0x00
#define JSRw  0x20
#define RTIn  0x40
#define RTSn  0x60
#define NOPb  0x80
#define NOPb_ NOPb: case 0x82: case 0xC2: case 0xE2: case 0x89
#define LDYb  0xA0
#define CPYb  0xC0
#define CPXb  0xE0

#define ORAix 0x01
#define ANDix 0x21
#define EORix 0x41
#define ADCix 0x61
#define STAix 0x81
#define LDAix 0xA1
#define CMPix 0xC1
#define SBCix 0xE1

#define LDXb 0xA2

#define SLOix 0x03
#define RLAix 0x23
#define SREix 0x43
#define RRAix 0x63
#define SAXix 0x83
#define LAXix 0xA3
#define DCPix 0xC3
#define ISBix 0xE3

#define NOPz  0x04
#define NOPz_ NOPz: case 0x44: case 0x64
#define BITz  0x24
#define STYz  0x84
#define LDYz  0xA4
#define CPYz  0xC4
#define CPXz  0xE4

#define ORAz 0x05
#define ANDz 0x25
#define EORz 0x45
#define ADCz 0x65
#define STAz 0x85
#define LDAz 0xA5
#define CMPz 0xC5
#define SBCz 0xE5

#define ASLz 0x06
#define ROLz 0x26
#define LSRz 0x46
#define RORz 0x66
#define STXz 0x86
#define LDXz 0xA6
#define DECz 0xC6
#define INCz 0xE6

#define SLOz 0x07
#define RLAz 0x27
#define SREz 0x47
#define RRAz 0x67
#define SAXz 0x87
#define LAXz 0xA7
#define DCPz 0xC7
#define ISBz 0xE7

#define PHPn 0x08
#define PLPn 0x28
#define PHAn 0x48
#define PLAn 0x68
#define DEYn 0x88
#define TAYn 0xA8
#define INYn 0xC8
#define INXn 0xE8

#define ORAb  0x09
#define ANDb  0x29
#define EORb  0x49
#define ADCb  0x69
#define LDAb  0xA9
#define CMPb  0xC9
#define SBCb  0xE9
#define SBCb_ SBCb: case 0XEB

#define ASLn  0x0A
#define ROLn  0x2A
#define LSRn  0x4A
#define RORn  0x6A
#define TXAn  0x8A
#define TAXn  0xAA
#define DEXn  0xCA
#define NOPn  0xEA
#define NOPn_ NOPn: case 0x1A: case 0x3A: case 0x5A: case 0x7A: case 0xDA: case 0xFA

#define ANCb  0x0B
#define ANCb_ ANCb: case 0x2B
#define ASRb  0x4B
#define ARRb  0x6B
#define ANEb  0x8B
#define XAAb  0x8B
#define LXAb  0xAB
#define SBXb  0xCB

#define NOPa 0x0C
#define BITa 0x2C
#define JMPw 0x4C
#define JMPi 0x6C
#define STYa 0x8C
#define LDYa 0xAC
#define CPYa 0xCC
#define CPXa 0xEC

#define ORAa 0x0D
#define ANDa 0x2D
#define EORa 0x4D
#define ADCa 0x6D
#define STAa 0x8D
#define LDAa 0xAD
#define CMPa 0xCD
#define SBCa 0xED

#define ASLa 0x0E
#define ROLa 0x2E
#define LSRa 0x4E
#define RORa 0x6E
#define STXa 0x8E
#define LDXa 0xAE
#define DECa 0xCE
#define INCa 0xEE

#define SLOa 0x0F
#define RLAa 0x2F
#define SREa 0x4F
#define RRAa 0x6F
#define SAXa 0x8F
#define LAXa 0xAF
#define DCPa 0xCF
#define ISBa 0xEF

#define BPLr 0x10
#define BMIr 0x30
#define BVCr 0x50
#define BVSr 0x70
#define BCCr 0x90
#define BCSr 0xB0
#define BNEr 0xD0
#define BEQr 0xF0

#define ORAiy 0x11
#define ANDiy 0x31
#define EORiy 0x51
#define ADCiy 0x71
#define STAiy 0x91
#define LDAiy 0xB1
#define CMPiy 0xD1
#define SBCiy 0xF1

#define SLOiy 0x13
#define RLAiy 0x33
#define SREiy 0x53
#define RRAiy 0x73
#define SHAiy 0x93
#define LAXiy 0xB3
#define DCPiy 0xD3
#define ISBiy 0xF3

#define NOPzx  0x14
#define NOPzx_ NOPzx: case 0x34: case 0x54: case 0x74: case 0xD4: case 0xF4
#define STYzx  0x94
#define LDYzx  0xB4

#define ORAzx 0x15
#define ANDzx 0x35
#define EORzx 0x55
#define ADCzx 0x75
#define STAzx 0x95
#define LDAzx 0xB5
#define CMPzx 0xD5
#define SBCzx 0xF5

#define ASLzx 0x16
#define ROLzx 0x36
#define LSRzx 0x56
#define RORzx 0x76
#define STXzy 0x96
#define LDXzy 0xB6
#define DECzx 0xD6
#define INCzx 0xF6

#define SLOzx 0x17
#define RLAzx 0x37
#define SREzx 0x57
#define RRAzx 0x77
#define SAXzy 0x97
#define LAXzy 0xB7
#define DCPzx 0xD7
#define ISBzx 0xF7

#define CLCn 0x18
#define SECn 0x38
#define CLIn 0x58
#define SEIn 0x78
#define TYAn 0x98
#define CLVn 0xB8
#define CLDn 0xD8
#define SEDn 0xF8

#define ORAay 0x19
#define ANDay 0x39
#define EORay 0x59
#define ADCay 0x79
#define STAay 0x99
#define LDAay 0xB9
#define CMPay 0xD9
#define SBCay 0xF9

#define TXSn 0x9A
#define TSXn 0xBA

#define SLOay 0x1B
#define RLAay 0x3B
#define SREay 0x5B
#define RRAay 0x7B
#define SHSay 0x9B
#define TASay 0x9B
#define LASay 0xBB
#define DCPay 0xDB
#define ISBay 0xFB

#define NOPax  0x1C
#define NOPax_ NOPax: case 0x3C: case 0x5C: case 0x7C: case 0xDC: case 0xFC
#define SHYax  0x9C
#define LDYax  0xBC

#define ORAax 0x1D
#define ANDax 0x3D
#define EORax 0x5D
#define ADCax 0x7D
#define STAax 0x9D
#define LDAax 0xBD
#define CMPax 0xDD
#define SBCax 0xFD

#define ASLax 0x1E
#define ROLax 0x3E
#define LSRax 0x5E
#define RORax 0x7E
#define SHXay 0x9E
#define LDXay 0xBE
#define DECax 0xDE
#define INCax 0xFE

#define SLOax 0x1F
#define RLAax 0x3F
#define SREax 0x5F
#define RRAax 0x7F
#define SHAay 0x9F
#define LAXay 0xBF
#define DCPax 0xDF
#define ISBax 0xFF

// Instruction Aliases
#define ASOix SLOix
#define LSEix SREix
#define AXSix SAXix
#define DCMix DCPix
#define INSix ISBix
#define ASOz  SLOz
#define LSEz  SREz
#define AXSz  SAXz
#define DCMz  DCPz
#define INSz  ISBz
#define ALRb  ASRb
#define OALb  LXAb
#define ASOa  SLOa
#define LSEa  SREa
#define AXSa  SAXa
#define DCMa  DCPa
#define INSa  ISBa
#define ASOiy SLOiy
#define LSEiy SREiy
#define AXAiy SHAiy
#define DCMiy DCPiy
#define INSiy ISBiy
#define ASOzx SLOzx
#define LSEzx SREzx
#define AXSzy SAXzy
#define DCMzx DCPzx
#define INSzx ISBzx
#define ASOay SLOay
#define LSEay SREay
#define DCMay DCPay
#define INSay ISBay
#define SAYax SHYax
#define XASay SHXay
#define ASOax SLOax
#define LSEax SREax
#define AXAay SHAay
#define DCMax DCPax
#define INSax ISBax
#define SKBn  NOPb
#define SKWn  NOPa

#endif // _opcodes_h_