Changes

MOS 6502

203 bytes added, 11 May
/* Oddities */
! ''No arg'' !! A !! #$nn !! $nnnn !! $nnnn,X !! $nnnn,Y !! ($nnnn) !! $nn !! $nn,X !! $nn,Y !! ($nn,X) !! ($nn),Y !! rel !! N !! V !! D !! I !! Z !! C
|-
| ADC BIT || || || 69 (2) || 6D 2C (4) || 7D (4+p) || 79 (4+p) || || 65 24 (3) || 75 (4) || || 61 (6) || 71 (5+p) || || N || V || - || - || Z || C - || A + M + CF , M<sub>7</sub> ANF, CF || ADd with Carry|-| SBC || || || E9 (2) || ED (4) || FD (4+p) || F9 (4+p) || || E5 (3) || F5 (4) || || E1 (M<sub>6) || F1 (5+p) || || N || V || - || - || Z || C || A - M - (1 - CF) </sub> A || SuBtract with Carry|-| CMP || || || C9 (2) || CD (4) || DD (4+p) || D9 (4+p) || || C5 (3) || D5 (4) || || C1 (6) || D1 (5+p) || || N || - || - || - || Z || C || A - M VF || CoMPare accumulatortest BITs
|-
| AND || || || 29 (2) || 2D (4) || 3D (4+p) || 39 (4+p) || || 25 (3) || 35 (4) || || 21 (6) || 31 (5+p) || || N || - || - || - || Z || - || A ∧ M → A || bitwise AND with accumulator
| ORA || || || 09 (2) || 0D (4) || 1D (4+p) || 19 (4+p) || || 05 (3) || 15 (4) || || 01 (6) || 11 (5+p) || || N || - || - || - || Z || - || A ∨ M → A || bitwise OR with Accumulator
|-
| BIT ADC || || || 69 (2) || 2C 6D (4) || 7D (4+p) || 79 (4+p) || || 24 65 (3) || 75 (4) || || 61 (6) || 71 (5+p) || || N || V || - || - || Z || - C || A + M, M<sub>7</sub> + CF NFA, M<sub>CF || ADd with Carry|-| SBC || || || E9 (2) || ED (4) || FD (4+p) || F9 (4+p) || || E5 (3) || F5 (4) || || E1 (6</sub> ) || F1 (5+p) || || N || V || - || - || Z || C || A - M - (1 - CF) VF A || SuBtract with Carry|-| CMP || || || C9 (2) || CD (4) || DD (4+p) || D9 (4+p) || || C5 (3) || D5 (4) || || C1 (6) || D1 (5+p) || || N || - || - || - || Z || C || A - M || test BITsCoMPare accumulator
|-
| CPX || || || E0 (2) || EC (4) || || || || E4 (3) || || || || || || N || - || - || - || Z || C || X - M || ComPare X register
|-
| STY || || || 8C (4) || || || || 84 (3) || 94 (4) || || || || || - || - || - || - || - || - || Y → M || STore Y register
|-
| PHP || 08 (3) || || || || || || || || || || || || - || - || - || - || - || - || P↓ || PusH Processor status
|-
| PHA || 48 (3) || || || || || || || || || || || || - || - || - || - || - || - || A↓ || PusH Accumulator
|-
| PLP || 28 (4) || || || || || || || || || || || || N || V || D || I || Z || C || (S)↑ → P || PuLl Processor status
|-
| PLA || 68 (4) || || || || || || || || || || || || N || - || - || - || Z || - || (S)↑ → A || PuLl Accumulator
|-
| TAX || AA (2) || || || || || || || || || || || || N || - || - || - || Z || - || A → X || Transfer A to X
|-
| TAY || A8 (2) || || || || || || || || || || || || N || - || - || - || Z || - || A → Y || Transfer A to Y
|-
| TXA || 8A (2) || || || || || || || || || || || || N || - || - || - || Z || - || X → A || Transfer X to A
|-
| TAY || A8 (2) || || || || || || || || || || || || N || - || - || - || Z || - || A → Y || Transfer A to Y
|-
| TYA || 98 (2) || || || || || || || || || || || || N || - || - || - || Z || - || Y → A || Transfer Y to A
|-
| TXS || 9A (2) || || || || || || || || || || || || - || - || - || - || - || - || X → S || Transfer X to Stack pointer
|-
| PLP || 28 (4) || || || || || || || || || || || || N || V || D || I || Z || C || (S)↑ → P || PuLl Processor status
|-
| PLA || 68 (4) || || || || || || || || || || || || N || - || - || - || Z || - || (S)↑ → A || PuLl Accumulator
|-
| PHP || 08 (3) || || || || || || || || || || || || - || - || - || - || - || - || P↓ || PusH Processor status
|-
| PHA || 48 (3) || || || || || || || || || || || || - || - || - || - || - || - || A↓ || PusH Accumulator
|}
|-
| BRK || 00 (7) || || || || || || || || || || || || - || - || - || 1 || - || - || PC + 2↓, [FFFE] → PCL, [FFFF] → PCH || BReaK
|-
| SED || F8 (2) || || || || || || || || || || || || - || - || 1 || - || - || - || 1 → DF || SEt Decimal flag
|-
| SEI || 78 (2) || || || || || || || || || || || || - || - || - || 1 || - || - || 1 → IF || SEt Interrupt flag
|-
| CLI || 58 (2) || || || || || || || || || || || || - || - || - || 0 || - || - || 0 → IF || CLear Interrupt flag
|-
| SEC || 38 (2) || || || || || || || || || || || || - || - || - || - || - || 1 || 1 → CF || SEt Carry flag
|-
| CLV CLC || B8 18 (2) || || || || || || || || || || || || - || 0 - || - || - || - || - 0 || 0 → VF CF || CLear oVerflow Carry flag|-| SED || F8 (2) || || || || || || || || || || || || - || - || 1 || - || - || - || 1 → DF || SEt Decimal flag
|-
| CLD || D8 (2) || || || || || || || || || || || || - || - || 0 || - || - || - || 0 → DF || CLear Decimal flag
|-
| CLI CLV || 58 B8 (2) || || || || || || || || || || || || - || - || - || 0 || - || - || 0 → IF || CLear Interrupt flag|-| CLC || 18 (2) || || || || || || || || || || || || - || - || - || - || - || 0 || 0 → CF VF || CLear Carry oVerflow flag
|-
| NOP || EA (2) || || || || || || || || || || || || - || - || - || - || - || - || No operation || No OPeration
|-
| BCC || || || || || || || || || || || || 90 (2+t+p) || - || - || - || - || - || - || Branch on CF = 0 || Branch on Carry Clear
|-
| BCS || || || || || || || || || || || || B0 (2+t+p) || - || - || - || - || - || - || Branch on CF = 1 || Branch on Carry Set
|-
| BNE || || || || || || || || || || || || D0 (2+t+p) || - || - || - || - || - || - || Branch on ZF = 0 || Branch on Not Equal
|-
| BEQ || || || || || || || || || || || || F0 (2+t+p) || - || - || - || - || - || - || Branch on ZF = 1 || Branch on EQual
|-
| BPL || || || || || || || || || || || || 10 (2+t+p) || - || - || - || - || - || - || Branch on NF = 0 || Branch on PLus
|-
| BVS || || || || || || || || || || || || 70 (2+t+p) || - || - || - || - || - || - || Branch on VF = 1 || Branch on oVerflow Set
|-
| BCC || || || || || || || || || || || || 90 (2+t+p) || - || - || - || - || - || - || Branch on CF = 0 || Branch on Carry Clear
|-
| BCS || || || || || || || || || || || || B0 (2+t+p) || - || - || - || - || - || - || Branch on CF = 1 || Branch on Carry Set
|-
| BNE || || || || || || || || || || || || D0 (2+t+p) || - || - || - || - || - || - || Branch on ZF = 0 || Branch on Not Equal
|-
| BEQ || || || || || || || || || || || || F0 (2+t+p) || - || - || - || - || - || - || Branch on ZF = 1 || Branch on EQual
|}
|-
| ARR || || 6B (2) || || || || || || || || || N || V || - || - || Z || C || A AND oper, CF -> [76543210] -> CF || AND oper + ROR
|-
| SBX (AXS, SAX) || || CB (2) || || || || || || || || || N || - || - || - || Z || C || (A AND X) - oper -> X || CMP and DEX at once, sets flags like CMP
|-
| ANC || || 0B (2) || || || || || || || || || N || - || - || - || Z || C || A AND oper, bit(7) -> CF || AND oper + set CF as ASL
|-
| ANC2 || || 2B (2) || || || || || || || || || N || - || - || - || Z || C || A AND oper, bit(7) -> CF || AND oper + set CF as ROL
|-
| SBX (AXS, SAX) || || CB (2) || || || || || || || || || N || - || - || - || Z || C || (A AND X) - oper -> X || CMP and DEX at once, sets flags like CMP
|-
| USBC (SBC) || || EB (2) || || || || || || || || || N || V || - || - || Z || C || A - M - ~CF -> A || SBC oper + NOP
* Conditional jumps are only 8-bit relative. And unconditional jumps are only 16-bit absolute.
* ADC is the only command for addition. To perform an addition without carry, the carry flag must be cleared manually first. Same with SBC for subtract.
* The TXS instruction does not affect any flag, while all other transfer instructions do.* The BIT instruction copies bit 6 of the memory location to VF, regardless of any arithmetic overflow concept.* The CLV (Clear Overflow Flag) instruction exist , but not the SEV (Set Overflow Flag) instruction.
* On NMOS, INC A and DEC A instructions do not exist. They do exist on CMOS.
* The NOP instruction takes 2 full-cycles. This is the minimum amount of cycles an instruction can take. It is necessary because, while the instruction itself does nothing, it still has to increment the 16-bit PC register.
13,173
edits