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
251 ; OPC_NOP = $62 ; doublet
252 ; OPC_NOP = $63 ; doublet
254 ; OPC_NOP = $6B ; doublet
257 ; OPC_NOP = $73 ; doublet
260 ; OPC_NOP = $7B ; doublet
264 ; OPC_NOP = $82 ; doublet
265 ; OPC_NOP = $83 ; doublet
267 ; OPC_NOP = $8B ; doublet
270 ; OPC_NOP = $93 ; doublet
271 ; OPC_NOP = $9B ; doublet
275 ; OPC_NOP = $A3 ; doublet
276 ; OPC_NOP = $AB ; doublet
279 ; OPC_NOP = $B3 ; doublet
280 ; OPC_NOP = $BB ; doublet
282 ; OPC_NOP = $C2 ; doublet
283 ; OPC_NOP = $C3 ; doublet
284 ; OPC_NOP = $CB ; doublet
287 ; OPC_NOP = $D3 ; doublet
288 ; OPC_NOP = $D4 ; doublet
290 ; OPC_NOP = $DB ; doublet
291 ; OPC_NOP = $DC ; doublet
293 ; OPC_NOP = $E2 ; doublet
294 ; OPC_NOP = $E3 ; doublet
295 ; OPC_NOP = $EB ; doublet
298 ; OPC_NOP = $F3 ; doublet
299 ; OPC_NOP = $F4 ; doublet
301 ; OPC_NOP = $FB ; doublet
302 ; OPC_NOP = $FC ; doublet
305 .if (.cpu .bitand ::CPU_ISET_65C02)
307 ; bit instructions for 65C02
347 ; no bit instructions for 65SC02
349 ; OPC_NOP = $07 ; doublet
350 ; OPC_NOP = $17 ; doublet
351 ; OPC_NOP = $27 ; doublet
352 ; OPC_NOP = $37 ; doublet
353 ; OPC_NOP = $47 ; doublet
354 ; OPC_NOP = $57 ; doublet
355 ; OPC_NOP = $67 ; doublet
356 ; OPC_NOP = $77 ; doublet
357 ; OPC_NOP = $87 ; doublet
358 ; OPC_NOP = $97 ; doublet
359 ; OPC_NOP = $A7 ; doublet
360 ; OPC_NOP = $B7 ; doublet
361 ; OPC_NOP = $C7 ; doublet
362 ; OPC_NOP = $D7 ; doublet
363 ; OPC_NOP = $E7 ; doublet
364 ; OPC_NOP = $F7 ; doublet
365 ; OPC_NOP = $0F ; doublet
366 ; OPC_NOP = $1F ; doublet
367 ; OPC_NOP = $2F ; doublet
368 ; OPC_NOP = $3F ; doublet
369 ; OPC_NOP = $4F ; doublet
370 ; OPC_NOP = $5F ; doublet
371 ; OPC_NOP = $6F ; doublet
372 ; OPC_NOP = $7F ; doublet
373 ; OPC_NOP = $8F ; doublet
374 ; OPC_NOP = $9F ; doublet
375 ; OPC_NOP = $AF ; doublet
376 ; OPC_NOP = $BF ; doublet
377 ; OPC_NOP = $CF ; doublet
378 ; OPC_NOP = $DF ; doublet
379 ; OPC_NOP = $EF ; doublet
380 ; OPC_NOP = $FF ; doublet
384 .elseif (.cpu .bitand ::CPU_ISET_6502X)
386 ; stable, undocumented opcodes
388 ; OPC_KIL = $02 ; unstable
396 ; OPC_KIL = $12 ; unstable
405 ; OPC_KIL = $22 ; unstable
411 ; OPC_KIL = $32 ; unstable
415 ; OPC_NOP = $3A ; doublet
420 ; OPC_KIL = $42 ; unstable
427 ; OPC_KIL = $52 ; unstable
431 ; OPC_NOP = $5A ; doublet
447 ; OPC_NOP = $7A ; doublet
453 ; OPC_NOP_imm = $82 ; doublet
456 ; OPC_NOP_imm = $89 ; doublet
457 ; OPC_XAA = $8B ; unstable
460 ; OPC_KIL = $92 ; unstable
461 ; OPC_AHX_izy = $93 ; unstable
463 ; OPC_TAS_aby = $9B ; unstable
464 ; OPC_SHY_abx = $9C ; unstable
465 ; OPC_SHX_aby = $9E ; unstable
466 ; OPC_AHX_aby = $9F ; unstable
470 ; OPC_LAX_imm = $AB ; unstable
473 ; OPC_KIL = $B2 ; unstable
479 ; OPC_NOP_imm = $C2 ; doublet
485 ; OPC_KIL = $D2 ; unstable
494 ; OPC_NOP_imm = $E2 ; doublet
497 ; OPC_SBC_imm = $EB ; doublet
500 ; OPC_KIL = $F2 ; unstable