1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-07-17 11:28:55 +00:00
millfork/doc/abi/undocumented.md
2018-01-04 01:15:04 +01:00

1.0 KiB

Undocumented opcodes

Original 6502 processors accidentally supported a bunch of extra undocumented instructions. Millfork can emit them if so desired.

Mnemonics

Since various assemblers use different mnemonics for undocumented opcodes, Millfork supports multiple mnemonics per opcode. The default one is given first:

  • AHX, AXA, SHA

  • ALR

  • ANC

  • ARR

  • DCP, DCM

  • ISC, INS

  • LAS

  • LAX

  • LXA, OAL

  • RLA

  • RRA

  • SAX

  • SHX, XAS

  • SHY, SAY

  • SBX, AXS*

  • SRE, LSE

  • SLO, ASO

  • TAS

  • XAA, ANE

* AXS is also used for SAX in some assemblers, but Millfork always interprets AXS as a synonym for SBX

Generation

In order for the compiler to emit one of those opcodes, an appropriate CPU architecture must be chosen (nmos or ricoh) and either it must appear in an assembly block or it may be a result of optimization.

Optimization will never emit any of the following opcodes due to their instability and/or uselessness: AHX, LAS, LXA, SHX, SHY, TAS, XAA.