2 ; ca65 6502 - opcode definitions, mainly for self modifying code
4 ; Christian Krüger, latest change: 18-Sep-2010
6 ; This software is provided 'as-is', without any expressed or implied
7 ; warranty. In no event will the authors be held liable for any damages
8 ; arising from the use of this software.
10 ; Permission is granted to anyone to use this software for any purpose,
11 ; including commercial applications, and to alter it and redistribute it
12 ; freely, subject to the following restrictions:
14 ; 1. The origin of this software must not be misrepresented; you must not
15 ; claim that you wrote the original software. If you use this software
16 ; in a product, an acknowledgment in the product documentation would be
17 ; appreciated but is not required.
18 ; 2. Altered source versions must be plainly marked as such, and must not
19 ; be misrepresented as being the original software.
20 ; 3. This notice may not be removed or altered from any source
26 ; Post fix explanation:
39 ; rel = $0000 (PC-relative) (supressed here)
213 .if (.cpu .bitand ::CPU_ISET_65SC02)
215 ; OPC_NOP = $02 ; doublet
216 ; OPC_NOP = $03 ; doublet
218 ; OPC_NOP = $0B ; doublet
222 ; OPC_NOP = $13 ; doublet
225 ; OPC_NOP = $1B ; doublet
228 ; OPC_NOP = $22 ; doublet
229 ; OPC_NOP = $23 ; doublet
230 ; OPC_NOP = $2B ; doublet
233 ; OPC_NOP = $33 ; doublet
236 ; OPC_NOP = $3B ; doublet
239 ; OPC_NOP = $42 ; doublet
240 ; OPC_NOP = $43 ; doublet
241 ; OPC_NOP = $44 ; doublet
242 ; OPC_NOP = $4B ; doublet
245 ; OPC_NOP = $53 ; doublet
246 ; OPC_NOP = $54 ; doublet
247 ; OPC_NOP = $5A ; doublet
248 ; OPC_NOP = $5B ; doublet
250 ; OPC_NOP = $62 ; doublet
251 ; OPC_NOP = $63 ; doublet
253 ; OPC_NOP = $6B ; doublet
256 ; OPC_NOP = $73 ; doublet
259 ; OPC_NOP = $7B ; doublet
263 ; OPC_NOP = $82 ; doublet
264 ; OPC_NOP = $83 ; doublet
266 ; OPC_NOP = $8B ; doublet
269 ; OPC_NOP = $93 ; doublet
270 ; OPC_NOP = $9B ; doublet
274 ; OPC_NOP = $A3 ; doublet
275 ; OPC_NOP = $AB ; doublet
278 ; OPC_NOP = $B3 ; doublet
279 ; OPC_NOP = $BB ; doublet
281 ; OPC_NOP = $C2 ; doublet
282 ; OPC_NOP = $C3 ; doublet
283 ; OPC_NOP = $CB ; doublet
286 ; OPC_NOP = $D3 ; doublet
287 ; OPC_NOP = $D4 ; doublet
289 ; OPC_NOP = $DB ; doublet
290 ; OPC_NOP = $DC ; doublet
292 ; OPC_NOP = $E2 ; doublet
293 ; OPC_NOP = $E3 ; doublet
294 ; OPC_NOP = $EB ; doublet
297 ; OPC_NOP = $F3 ; doublet
298 ; OPC_NOP = $F4 ; doublet
300 ; OPC_NOP = $FB ; doublet
301 ; OPC_NOP = $FC ; doublet
304 .if (.cpu .bitand ::CPU_ISET_65C02)
306 ; bit instructions for 65C02
346 ; no bit instructions for 65SC02
348 ; OPC_NOP = $07 ; doublet
349 ; OPC_NOP = $17 ; doublet
350 ; OPC_NOP = $27 ; doublet
351 ; OPC_NOP = $37 ; doublet
352 ; OPC_NOP = $47 ; doublet
353 ; OPC_NOP = $57 ; doublet
354 ; OPC_NOP = $67 ; doublet
355 ; OPC_NOP = $77 ; doublet
356 ; OPC_NOP = $87 ; doublet
357 ; OPC_NOP = $97 ; doublet
358 ; OPC_NOP = $A7 ; doublet
359 ; OPC_NOP = $B7 ; doublet
360 ; OPC_NOP = $C7 ; doublet
361 ; OPC_NOP = $D7 ; doublet
362 ; OPC_NOP = $E7 ; doublet
363 ; OPC_NOP = $F7 ; doublet
364 ; OPC_NOP = $0F ; doublet
365 ; OPC_NOP = $1F ; doublet
366 ; OPC_NOP = $2F ; doublet
367 ; OPC_NOP = $3F ; doublet
368 ; OPC_NOP = $4F ; doublet
369 ; OPC_NOP = $5F ; doublet
370 ; OPC_NOP = $6F ; doublet
371 ; OPC_NOP = $7F ; doublet
372 ; OPC_NOP = $8F ; doublet
373 ; OPC_NOP = $9F ; doublet
374 ; OPC_NOP = $AF ; doublet
375 ; OPC_NOP = $BF ; doublet
376 ; OPC_NOP = $CF ; doublet
377 ; OPC_NOP = $DF ; doublet
378 ; OPC_NOP = $EF ; doublet
379 ; OPC_NOP = $FF ; doublet
383 .elseif (.cpu .bitand ::CPU_ISET_6502X)
385 ; stable, undocumented opcodes
387 ; OPC_KIL = $02 ; unstable
395 ; OPC_KIL = $12 ; unstable
404 ; OPC_KIL = $22 ; unstable
410 ; OPC_KIL = $32 ; unstable
414 ; OPC_NOP = $3A ; doublet
419 ; OPC_KIL = $42 ; unstable
426 ; OPC_KIL = $52 ; unstable
430 ; OPC_NOP = $5A ; doublet
446 ; OPC_NOP = $7A ; doublet
452 ; OPC_NOP_imm = $82 ; doublet
455 ; OPC_NOP_imm = $89 ; doublet
456 ; OPC_XAA = $8B ; unstable
459 ; OPC_KIL = $92 ; unstable
460 ; OPC_AHX_izy = $93 ; unstable
462 ; OPC_TAS_aby = $9B ; unstable
463 ; OPC_SHY_abx = $9C ; unstable
464 ; OPC_SHX_aby = $9E ; unstable
465 ; OPC_AHX_aby = $9F ; unstable
469 ; OPC_LAX_imm = $AB ; unstable
472 ; OPC_KIL = $B2 ; unstable
478 ; OPC_NOP_imm = $C2 ; doublet
484 ; OPC_KIL = $D2 ; unstable
493 ; OPC_NOP_imm = $E2 ; doublet
496 ; OPC_SBC_imm = $EB ; doublet
499 ; OPC_KIL = $F2 ; unstable