2 ; ca65 6502 - opcode definitions, mainly for self modifying code
\r
4 ; Christian Krüger, latest change: 18-Sep-2010
\r
6 ; This software is provided 'as-is', without any expressed or implied
\r
7 ; warranty. In no event will the authors be held liable for any damages
\r
8 ; arising from the use of this software.
\r
10 ; Permission is granted to anyone to use this software for any purpose,
\r
11 ; including commercial applications, and to alter it and redistribute it
\r
12 ; freely, subject to the following restrictions:
\r
14 ; 1. The origin of this software must not be misrepresented; you must not
\r
15 ; claim that you wrote the original software. If you use this software
\r
16 ; in a product, an acknowledgment in the product documentation would be
\r
17 ; appreciated but is not required.
\r
18 ; 2. Altered source versions must be plainly marked as such, and must not
\r
19 ; be misrepresented as being the original software.
\r
20 ; 3. This notice may not be removed or altered from any source
\r
26 ; Post fix explanation:
\r
39 ; rel = $0000 (PC-relative) (supressed here)
\r
213 .if (.cpu .bitand ::CPU_ISET_65SC02)
\r
215 ; OPC_NOP = $02 ; doublet
\r
216 ; OPC_NOP = $03 ; doublet
\r
218 ; OPC_NOP = $0B ; doublet
\r
222 ; OPC_NOP = $13 ; doublet
\r
225 ; OPC_NOP = $1B ; doublet
\r
228 ; OPC_NOP = $22 ; doublet
\r
229 ; OPC_NOP = $23 ; doublet
\r
230 ; OPC_NOP = $2B ; doublet
\r
233 ; OPC_NOP = $33 ; doublet
\r
236 ; OPC_NOP = $3B ; doublet
\r
239 ; OPC_NOP = $42 ; doublet
\r
240 ; OPC_NOP = $43 ; doublet
\r
241 ; OPC_NOP = $44 ; doublet
\r
242 ; OPC_NOP = $4B ; doublet
\r
245 ; OPC_NOP = $53 ; doublet
\r
246 ; OPC_NOP = $54 ; doublet
\r
247 ; OPC_NOP = $5A ; doublet
\r
248 ; OPC_NOP = $5B ; doublet
\r
251 ; OPC_NOP = $62 ; doublet
\r
252 ; OPC_NOP = $63 ; doublet
\r
254 ; OPC_NOP = $6B ; doublet
\r
257 ; OPC_NOP = $73 ; doublet
\r
260 ; OPC_NOP = $7B ; doublet
\r
264 ; OPC_NOP = $82 ; doublet
\r
265 ; OPC_NOP = $83 ; doublet
\r
267 ; OPC_NOP = $8B ; doublet
\r
270 ; OPC_NOP = $93 ; doublet
\r
271 ; OPC_NOP = $9B ; doublet
\r
275 ; OPC_NOP = $A3 ; doublet
\r
276 ; OPC_NOP = $AB ; doublet
\r
279 ; OPC_NOP = $B3 ; doublet
\r
280 ; OPC_NOP = $BB ; doublet
\r
282 ; OPC_NOP = $C2 ; doublet
\r
283 ; OPC_NOP = $C3 ; doublet
\r
284 ; OPC_NOP = $CB ; doublet
\r
287 ; OPC_NOP = $D3 ; doublet
\r
288 ; OPC_NOP = $D4 ; doublet
\r
290 ; OPC_NOP = $DB ; doublet
\r
291 ; OPC_NOP = $DC ; doublet
\r
293 ; OPC_NOP = $E2 ; doublet
\r
294 ; OPC_NOP = $E3 ; doublet
\r
295 ; OPC_NOP = $EB ; doublet
\r
298 ; OPC_NOP = $F3 ; doublet
\r
299 ; OPC_NOP = $F4 ; doublet
\r
301 ; OPC_NOP = $FB ; doublet
\r
302 ; OPC_NOP = $FC ; doublet
\r
305 .if (.cpu .bitand ::CPU_ISET_65C02)
\r
307 ; bit instructions for 65C02
\r
347 ; no bit instructions for 65SC02
\r
349 ; OPC_NOP = $07 ; doublet
\r
350 ; OPC_NOP = $17 ; doublet
\r
351 ; OPC_NOP = $27 ; doublet
\r
352 ; OPC_NOP = $37 ; doublet
\r
353 ; OPC_NOP = $47 ; doublet
\r
354 ; OPC_NOP = $57 ; doublet
\r
355 ; OPC_NOP = $67 ; doublet
\r
356 ; OPC_NOP = $77 ; doublet
\r
357 ; OPC_NOP = $87 ; doublet
\r
358 ; OPC_NOP = $97 ; doublet
\r
359 ; OPC_NOP = $A7 ; doublet
\r
360 ; OPC_NOP = $B7 ; doublet
\r
361 ; OPC_NOP = $C7 ; doublet
\r
362 ; OPC_NOP = $D7 ; doublet
\r
363 ; OPC_NOP = $E7 ; doublet
\r
364 ; OPC_NOP = $F7 ; doublet
\r
365 ; OPC_NOP = $0F ; doublet
\r
366 ; OPC_NOP = $1F ; doublet
\r
367 ; OPC_NOP = $2F ; doublet
\r
368 ; OPC_NOP = $3F ; doublet
\r
369 ; OPC_NOP = $4F ; doublet
\r
370 ; OPC_NOP = $5F ; doublet
\r
371 ; OPC_NOP = $6F ; doublet
\r
372 ; OPC_NOP = $7F ; doublet
\r
373 ; OPC_NOP = $8F ; doublet
\r
374 ; OPC_NOP = $9F ; doublet
\r
375 ; OPC_NOP = $AF ; doublet
\r
376 ; OPC_NOP = $BF ; doublet
\r
377 ; OPC_NOP = $CF ; doublet
\r
378 ; OPC_NOP = $DF ; doublet
\r
379 ; OPC_NOP = $EF ; doublet
\r
380 ; OPC_NOP = $FF ; doublet
\r
384 .elseif (.cpu .bitand ::CPU_ISET_6502X)
\r
386 ; stable, undocumented opcodes
\r
388 ; OPC_KIL = $02 ; unstable
\r
396 ; OPC_KIL = $12 ; unstable
\r
405 ; OPC_KIL = $22 ; unstable
\r
411 ; OPC_KIL = $32 ; unstable
\r
415 ; OPC_NOP = $3A ; doublet
\r
420 ; OPC_KIL = $42 ; unstable
\r
427 ; OPC_KIL = $52 ; unstable
\r
431 ; OPC_NOP = $5A ; doublet
\r
447 ; OPC_NOP = $7A ; doublet
\r
453 ; OPC_NOP_imm = $82 ; doublet
\r
456 ; OPC_NOP_imm = $89 ; doublet
\r
457 ; OPC_XAA = $8B ; unstable
\r
460 ; OPC_KIL = $92 ; unstable
\r
461 ; OPC_AHX_izy = $93 ; unstable
\r
463 ; OPC_TAS_aby = $9B ; unstable
\r
464 ; OPC_SHY_abx = $9C ; unstable
\r
465 ; OPC_SHX_aby = $9E ; unstable
\r
466 ; OPC_AHX_aby = $9F ; unstable
\r
470 ; OPC_LAX_imm = $AB ; unstable
\r
473 ; OPC_KIL = $B2 ; unstable
\r
479 ; OPC_NOP_imm = $C2 ; doublet
\r
485 ; OPC_KIL = $D2 ; unstable
\r
494 ; OPC_NOP_imm = $E2 ; doublet
\r
497 ; OPC_SBC_imm = $EB ; doublet
\r
500 ; OPC_KIL = $F2 ; unstable
\r