ACME ...the ACME Crossassembler for Multiple Environments --- Undocumented ("illegal") opcodes --- Since release 0.87, ACME contains support for some of the undocumented opcodes of the 6502 processor. Here they are: | addressing mode | Mnemo | 8 8,x 8,y 16 16,x 16,y (8,x) (8),y | performs: ------+--------------------------------------------------+----------- slo | 07 17 -- 0f 1f 1b 03 13 | asl + ora rla | 27 37 -- 2f 3f 3b 23 33 | rol + and sre | 47 57 -- 4f 5f 5b 43 53 | lsr + eor rra | 67 77 -- 6f 7f 7b 63 73 | ror + adc sax | 87 -- 97 8f -- -- 83 -- | stx + sta lax | a7 -- b7 af -- bf a3 b3 | ldx + lda dcp | c7 d7 -- cf df db c3 d3 | dec + cmp isc | e7 f7 -- ef ff fb e3 f3 | inc + sbc In release 0.89, further ones were added: | addressing mode | Mnemo | implied #8 8 8,x 16 16,x | performs: ------+-------------------------------------+------------------------ anc | -- 2b -- -- -- -- | A = A & arg, then C=N asr | -- 4b -- -- -- -- | A = A & arg, then lsr arr | -- 6b -- -- -- -- | A = A & arg, then ror sbx | -- cb -- -- -- -- | X = (A & X) - arg dop | 80* 80 04 14 -- -- | skips next byte top | 0c* -- -- -- 0c 1c | skips next two bytes jam | 02 -- -- -- -- -- | crash (wait for reset) Example: !cpu 6510 ; activate additional mnemonics... lax (some_zp_label,x) ; ...and use them. No, this dcp (other_zp_label),y ; example does not make sense. *) Note that "dop" and "top" can be used with implied addressing, but the generated opcodes are those for immediate and 16-bit absolute addressing, respectively. Using dop/top with x-indexed addressing might have its uses when timing is critical (crossing a page border adds a penalty cycle). There is no guarantee that these opcodes actually work on a given 6502 (or 6510, or 8500, or 8502) CPU. But as far as I know, nobody ever found an unmodified C64/C128 where these illegals didn't work. That's why I used "6510" as the CPU keyword instead of "6502illegal" or something like that. These illegals will definitely *not* work on 65c02 and 65816 CPUs. But I really should not have to tell you that ;) Because there are no official mnemonics for these opcodes, different people use different names for them. I hope my choices are not too exotic for your taste. Just for the sake of completeness: Here are all the remaining opcodes (the ones ACME won't generate): Opcode| Description ------+-------------------------------------------------------------- 0b | same as 2b anc #8 12 | same as 02 and others jam CRASH 1a | same as (*legal*) ea nop 22 | same as 02 and others jam CRASH 32 | same as 02 and others jam CRASH 34 | same as 14 and others dop 8,x 3a | same as (*legal*) ea nop 3c | same as 1c and others top 16,x 42 | same as 02 and others jam CRASH 44 | same as 04 dop 8 52 | same as 02 and others jam CRASH 54 | same as 14 and others dop 8,x 5a | same as (*legal*) ea nop 5c | same as 1c and others top 16,x 62 | same as 02 and others jam CRASH 64 | same as 04 dop 8 72 | same as 02 and others jam CRASH 74 | same as 14 and others dop 8,x 7a | same as (*legal*) ea nop 7c | same as 1c and others top 16,x 82 | same as c2/e2 dop #8, but said to CRASH sometimes 89 | same as 80 dop #8 8b | see notes below 92 | same as 02 and others jam CRASH 93 | see notes below 9b | see notes below 9c | see notes below 9e | see notes below 9f | see notes below ab | see notes below b2 | same as 02 and others jam CRASH bb | see notes below c2 | same as 82/e2 dop #8, but said to CRASH sometimes d2 | same as 02 and others jam CRASH d4 | same as 14 and others dop 8,x da | same as (*legal*) ea nop dc | same as 1c and others top 16,x e2 | same as 82/c2 dop #8, but said to CRASH sometimes eb | same as (*legal*) e9 sbc #8 f2 | same as 02 and others jam CRASH f4 | same as 14 and others dop 8,x fa | same as (*legal*) ea nop fc | same as 1c and others top 16,x Concerning opcodes 8b, 93, 9b, 9c, 9e, 9f, ab, bb: These opcodes are said to be unstable. For more information about what they do, see these documents: John West, Marko Mäkelä. '64doc' file, 1994/06/03. Extra Instructions Of The 65XX Series CPU, Adam Vardy, 27 Sept. 1996 6502 Undocumented Opcodes, by Freddy Offenga, 5/17/1997 AAY64 (All About Your 64) I did not see much point in assigning mnemonics for these opcodes. The reference documents above call them: 8b: ane, xaa 93: sha, axa, ahx 9b: shs, tas, xas 9c: shy, say, sya 9e: shx, xas, sxa 9f: sha, axa, ahx ab: lxa, oal, atx bb: las, lar, lae