libsidplayfp 1.0.3
opcodes.h
00001 /*
00002  * This file is part of libsidplayfp, a SID player engine.
00003  *
00004  * Copyright 2011-2013 Leandro Nini <drfiemost@users.sourceforge.net>
00005  * Copyright 2007-2010 Antti Lankila
00006  * Copyright 2000 Simon White
00007  *
00008  * This program is free software; you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation; either version 2 of the License, or
00011  * (at your option) any later version.
00012  *
00013  * This program is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  * along with this program; if not, write to the Free Software
00020  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00021  */
00022 
00023 #ifndef OPCODES_H
00024 #define OPCODES_H
00025 
00026 #define OPCODE_MAX 0x100
00027 
00028 /* HLT
00029     case 0x02: case 0x12: case 0x22: case 0x32: case 0x42: case 0x52:
00030     case 0x62: case 0x72: case 0x92: case 0xb2: case 0xd2: case 0xf2:
00031     case 0x02: case 0x12: case 0x22: case 0x32: case 0x42: case 0x52:
00032     case 0x62: case 0x72: case 0x92: case 0xb2: case 0xd2: case 0xf2:
00033 */
00034 
00035 #define BRKn  0x00
00036 #define JSRw  0x20
00037 #define RTIn  0x40
00038 #define RTSn  0x60
00039 #define NOPb  0x80
00040 #define NOPb_ NOPb: case 0x82: case 0xC2: case 0xE2: case 0x89
00041 #define LDYb  0xA0
00042 #define CPYb  0xC0
00043 #define CPXb  0xE0
00044 
00045 #define ORAix 0x01
00046 #define ANDix 0x21
00047 #define EORix 0x41
00048 #define ADCix 0x61
00049 #define STAix 0x81
00050 #define LDAix 0xA1
00051 #define CMPix 0xC1
00052 #define SBCix 0xE1
00053 
00054 #define LDXb 0xA2
00055 
00056 #define SLOix 0x03
00057 #define RLAix 0x23
00058 #define SREix 0x43
00059 #define RRAix 0x63
00060 #define SAXix 0x83
00061 #define LAXix 0xA3
00062 #define DCPix 0xC3
00063 #define ISBix 0xE3
00064 
00065 #define NOPz  0x04
00066 #define NOPz_ NOPz: case 0x44: case 0x64
00067 #define BITz  0x24
00068 #define STYz  0x84
00069 #define LDYz  0xA4
00070 #define CPYz  0xC4
00071 #define CPXz  0xE4
00072 
00073 #define ORAz 0x05
00074 #define ANDz 0x25
00075 #define EORz 0x45
00076 #define ADCz 0x65
00077 #define STAz 0x85
00078 #define LDAz 0xA5
00079 #define CMPz 0xC5
00080 #define SBCz 0xE5
00081 
00082 #define ASLz 0x06
00083 #define ROLz 0x26
00084 #define LSRz 0x46
00085 #define RORz 0x66
00086 #define STXz 0x86
00087 #define LDXz 0xA6
00088 #define DECz 0xC6
00089 #define INCz 0xE6
00090 
00091 #define SLOz 0x07
00092 #define RLAz 0x27
00093 #define SREz 0x47
00094 #define RRAz 0x67
00095 #define SAXz 0x87
00096 #define LAXz 0xA7
00097 #define DCPz 0xC7
00098 #define ISBz 0xE7
00099 
00100 #define PHPn 0x08
00101 #define PLPn 0x28
00102 #define PHAn 0x48
00103 #define PLAn 0x68
00104 #define DEYn 0x88
00105 #define TAYn 0xA8
00106 #define INYn 0xC8
00107 #define INXn 0xE8
00108 
00109 #define ORAb  0x09
00110 #define ANDb  0x29
00111 #define EORb  0x49
00112 #define ADCb  0x69
00113 #define LDAb  0xA9
00114 #define CMPb  0xC9
00115 #define SBCb  0xE9
00116 #define SBCb_ SBCb: case 0XEB
00117 
00118 #define ASLn  0x0A
00119 #define ROLn  0x2A
00120 #define LSRn  0x4A
00121 #define RORn  0x6A
00122 #define TXAn  0x8A
00123 #define TAXn  0xAA
00124 #define DEXn  0xCA
00125 #define NOPn  0xEA
00126 #define NOPn_ NOPn: case 0x1A: case 0x3A: case 0x5A: case 0x7A: case 0xDA: case 0xFA
00127 
00128 #define ANCb  0x0B
00129 #define ANCb_ ANCb: case 0x2B
00130 #define ASRb  0x4B
00131 #define ARRb  0x6B
00132 #define ANEb  0x8B
00133 #define XAAb  0x8B
00134 #define LXAb  0xAB
00135 #define SBXb  0xCB
00136 
00137 #define NOPa 0x0C
00138 #define BITa 0x2C
00139 #define JMPw 0x4C
00140 #define JMPi 0x6C
00141 #define STYa 0x8C
00142 #define LDYa 0xAC
00143 #define CPYa 0xCC
00144 #define CPXa 0xEC
00145 
00146 #define ORAa 0x0D
00147 #define ANDa 0x2D
00148 #define EORa 0x4D
00149 #define ADCa 0x6D
00150 #define STAa 0x8D
00151 #define LDAa 0xAD
00152 #define CMPa 0xCD
00153 #define SBCa 0xED
00154 
00155 #define ASLa 0x0E
00156 #define ROLa 0x2E
00157 #define LSRa 0x4E
00158 #define RORa 0x6E
00159 #define STXa 0x8E
00160 #define LDXa 0xAE
00161 #define DECa 0xCE
00162 #define INCa 0xEE
00163 
00164 #define SLOa 0x0F
00165 #define RLAa 0x2F
00166 #define SREa 0x4F
00167 #define RRAa 0x6F
00168 #define SAXa 0x8F
00169 #define LAXa 0xAF
00170 #define DCPa 0xCF
00171 #define ISBa 0xEF
00172 
00173 #define BPLr 0x10
00174 #define BMIr 0x30
00175 #define BVCr 0x50
00176 #define BVSr 0x70
00177 #define BCCr 0x90
00178 #define BCSr 0xB0
00179 #define BNEr 0xD0
00180 #define BEQr 0xF0
00181 
00182 #define ORAiy 0x11
00183 #define ANDiy 0x31
00184 #define EORiy 0x51
00185 #define ADCiy 0x71
00186 #define STAiy 0x91
00187 #define LDAiy 0xB1
00188 #define CMPiy 0xD1
00189 #define SBCiy 0xF1
00190 
00191 #define SLOiy 0x13
00192 #define RLAiy 0x33
00193 #define SREiy 0x53
00194 #define RRAiy 0x73
00195 #define SHAiy 0x93
00196 #define LAXiy 0xB3
00197 #define DCPiy 0xD3
00198 #define ISBiy 0xF3
00199 
00200 #define NOPzx  0x14
00201 #define NOPzx_ NOPzx: case 0x34: case 0x54: case 0x74: case 0xD4: case 0xF4
00202 #define STYzx  0x94
00203 #define LDYzx  0xB4
00204 
00205 #define ORAzx 0x15
00206 #define ANDzx 0x35
00207 #define EORzx 0x55
00208 #define ADCzx 0x75
00209 #define STAzx 0x95
00210 #define LDAzx 0xB5
00211 #define CMPzx 0xD5
00212 #define SBCzx 0xF5
00213 
00214 #define ASLzx 0x16
00215 #define ROLzx 0x36
00216 #define LSRzx 0x56
00217 #define RORzx 0x76
00218 #define STXzy 0x96
00219 #define LDXzy 0xB6
00220 #define DECzx 0xD6
00221 #define INCzx 0xF6
00222 
00223 #define SLOzx 0x17
00224 #define RLAzx 0x37
00225 #define SREzx 0x57
00226 #define RRAzx 0x77
00227 #define SAXzy 0x97
00228 #define LAXzy 0xB7
00229 #define DCPzx 0xD7
00230 #define ISBzx 0xF7
00231 
00232 #define CLCn 0x18
00233 #define SECn 0x38
00234 #define CLIn 0x58
00235 #define SEIn 0x78
00236 #define TYAn 0x98
00237 #define CLVn 0xB8
00238 #define CLDn 0xD8
00239 #define SEDn 0xF8
00240 
00241 #define ORAay 0x19
00242 #define ANDay 0x39
00243 #define EORay 0x59
00244 #define ADCay 0x79
00245 #define STAay 0x99
00246 #define LDAay 0xB9
00247 #define CMPay 0xD9
00248 #define SBCay 0xF9
00249 
00250 #define TXSn 0x9A
00251 #define TSXn 0xBA
00252 
00253 #define SLOay 0x1B
00254 #define RLAay 0x3B
00255 #define SREay 0x5B
00256 #define RRAay 0x7B
00257 #define SHSay 0x9B
00258 #define TASay 0x9B
00259 #define LASay 0xBB
00260 #define DCPay 0xDB
00261 #define ISBay 0xFB
00262 
00263 #define NOPax  0x1C
00264 #define NOPax_ NOPax: case 0x3C: case 0x5C: case 0x7C: case 0xDC: case 0xFC
00265 #define SHYax  0x9C
00266 #define LDYax  0xBC
00267 
00268 #define ORAax 0x1D
00269 #define ANDax 0x3D
00270 #define EORax 0x5D
00271 #define ADCax 0x7D
00272 #define STAax 0x9D
00273 #define LDAax 0xBD
00274 #define CMPax 0xDD
00275 #define SBCax 0xFD
00276 
00277 #define ASLax 0x1E
00278 #define ROLax 0x3E
00279 #define LSRax 0x5E
00280 #define RORax 0x7E
00281 #define SHXay 0x9E
00282 #define LDXay 0xBE
00283 #define DECax 0xDE
00284 #define INCax 0xFE
00285 
00286 #define SLOax 0x1F
00287 #define RLAax 0x3F
00288 #define SREax 0x5F
00289 #define RRAax 0x7F
00290 #define SHAay 0x9F
00291 #define LAXay 0xBF
00292 #define DCPax 0xDF
00293 #define ISBax 0xFF
00294 
00295 // Instruction Aliases
00296 #define ASOix SLOix
00297 #define LSEix SREix
00298 #define AXSix SAXix
00299 #define DCMix DCPix
00300 #define INSix ISBix
00301 #define ASOz  SLOz
00302 #define LSEz  SREz
00303 #define AXSz  SAXz
00304 #define DCMz  DCPz
00305 #define INSz  ISBz
00306 #define ALRb  ASRb
00307 #define OALb  LXAb
00308 #define ASOa  SLOa
00309 #define LSEa  SREa
00310 #define AXSa  SAXa
00311 #define DCMa  DCPa
00312 #define INSa  ISBa
00313 #define ASOiy SLOiy
00314 #define LSEiy SREiy
00315 #define AXAiy SHAiy
00316 #define DCMiy DCPiy
00317 #define INSiy ISBiy
00318 #define ASOzx SLOzx
00319 #define LSEzx SREzx
00320 #define AXSzy SAXzy
00321 #define DCMzx DCPzx
00322 #define INSzx ISBzx
00323 #define ASOay SLOay
00324 #define LSEay SREay
00325 #define DCMay DCPay
00326 #define INSay ISBay
00327 #define SAYax SHYax
00328 #define XASay SHXay
00329 #define ASOax SLOax
00330 #define LSEax SREax
00331 #define AXAay SHAay
00332 #define DCMax DCPax
00333 #define INSax ISBax
00334 #define SKBn  NOPb
00335 #define SKWn  NOPa
00336 
00337 #endif // OPCODES_H