Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #cpudef "CPU_6502_CS"
- {
- #bits 8
- ;------------------------------------------------------------------------------
- ; Add with Carry
- ADC #{src} -> 0x69[7:0] @ src[7:0]
- ADC {src} -> {assert(src <= 0xFF), 0x65[7:0] @ src[7:0]}
- ADC {src},X -> {assert(src <= 0xFF), 0x75[7:0] @ src[7:0]}
- ADC {src} -> {assert(src > 0xFF), 0x6D[7:0] @ src[7:0] @ src[15:8]}
- ADC {src},X -> {assert(src > 0xFF), 0x7D[7:0] @ src[7:0] @ src[15:8]}
- ADC {src},Y -> {assert(src > 0xFF), 0x79[7:0] @ src[7:0] @ src[15:8]}
- ADC ({src},X) -> 0x61[7:0] @ src[7:0]
- ADC ({src}),Y -> 0x71[7:0] @ src[7:0]
- ;------------------------------------------------------------------------------
- ; Logic AND
- AND #{src} -> 0x29[7:0] @ src[7:0]
- AND {src} -> {assert(src <= 0xFF), 0x25[7:0] @ src[7:0]}
- AND {src},X -> {assert(src <= 0xFF), 0x35[7:0] @ src[7:0]}
- AND {src} -> {assert(src > 0xFF), 0x2D[7:0] @ src[7:0] @ src[15:8]}
- AND {src},X -> {assert(src > 0xFF), 0x3D[7:0] @ src[7:0] @ src[15:8]}
- AND {src},Y -> {assert(src > 0xFF), 0x39[7:0] @ src[7:0] @ src[15:8]}
- AND ({src},X) -> 0x21[7:0] @ src[7:0]
- AND ({src}),Y -> 0x31[7:0] @ src[7:0]
- ;------------------------------------------------------------------------------
- ; Arithmetic Shift Left
- ASL A -> 0x0A[7:0]
- ASL {src} -> {assert(src <= 0xFF), 0x07[7:0] @ src[7:0]}
- ASL {src},X -> {assert(src <= 0xFF), 0x16[7:0] @ src[7:0]}
- ASL {src} -> {assert(src > 0xFF), 0x0E[7:0] @ src[7:0] @ src[15:8]}
- ASL {src},X -> {assert(src > 0xFF), 0x1E[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Branch on Carry Clear
- BCC {src} -> 0x90[7:0] @ (src - (pc - 2))[7:0]
- ;------------------------------------------------------------------------------
- ; Branch on Carry Set
- BCS {src} -> 0xB0[7:0] @ (src - (pc - 2))[7:0]
- ;------------------------------------------------------------------------------
- ; Branch on Equal (Zero Set)
- BEQ {src} -> 0xF0[7:0] @ (src - (pc - 2))[7:0]
- ;------------------------------------------------------------------------------
- ; Bit Test
- BIT {src} -> {assert(src <= 0xFF), 0x24[7:0] @ src[7:0]}
- BIT {src} -> {assert(src > 0xFF), 0x2C[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Branch on Minus (Negative Set)
- BMI {src} -> 0x30[7:0] @ (src - (pc - 2))[7:0]
- ;------------------------------------------------------------------------------
- ; Branch on Not Equal (Zero Clear)
- BNE {src} -> 0xD0[7:0] @ (src - (pc - 2))[7:0]
- ;------------------------------------------------------------------------------
- ; Branch on Plus (Negative Clear)
- BPL {src} -> 0x10[7:0] @ (src - (pc - 2))[7:0]
- ;------------------------------------------------------------------------------
- ; Break (Interrupt)
- BRK -> 0x00[7:0]
- ;------------------------------------------------------------------------------
- ; Branch on Overflow Clear
- BVC {src} -> 0x50[7:0] @ (src - (pc - 2))[7:0]
- ;------------------------------------------------------------------------------
- ; Branch on Overflow Set
- BVS {src} -> 0x70[7:0] @ (src - (pc - 2))[7:0]
- ;------------------------------------------------------------------------------
- ; Clear Carry
- CLC -> 0x18[7:0]
- ;------------------------------------------------------------------------------
- ; Clear Decimal
- CLD -> 0xD8[7:0]
- ;------------------------------------------------------------------------------
- ; Clear Interrupt Disable
- CLI -> 0x58[7:0]
- ;------------------------------------------------------------------------------
- ; Clear Overflow
- CLV -> 0xB8[7:0]
- ;------------------------------------------------------------------------------
- ; Compare with Accumulator
- CMP #{src} -> 0xC9[7:0] @ src[7:0]
- CMP {src} -> {assert(src <= 0xFF), 0xC5[7:0] @ src[7:0]}
- CMP {src},X -> {assert(src <= 0xFF), 0xD5[7:0] @ src[7:0]}
- CMP {src} -> {assert(src > 0xFF), 0xCD[7:0] @ src[7:0] @ src[15:8]}
- CMP {src},X -> {assert(src > 0xFF), 0xDD[7:0] @ src[7:0] @ src[15:8]}
- CMP {src},Y -> {assert(src > 0xFF), 0xD9[7:0] @ src[7:0] @ src[15:8]}
- CMP ({src},X) -> 0xC1[7:0] @ src[7:0]
- CMP ({src}),Y -> 0xD1[7:0] @ src[7:0]
- ;------------------------------------------------------------------------------
- ; Compare with X
- CPX #{src} -> 0xE0[7:0] @ src[7:0]
- CPX {src} -> {assert(src <= 0xFF), 0xE4[7:0] @ src[7:0]}
- CPX {src} -> {assert(src > 0xFF), 0xEC[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Compare with Y
- CPY #{src} -> 0xC0[7:0] @ src[7:0]
- CPY {src} -> {assert(src <= 0xFF), 0xC4[7:0] @ src[7:0]}
- CPY {src} -> {assert(src > 0xFF), 0xCC[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Decrement
- DEC {src} -> {assert(src <= 0xFF), 0xC6[7:0] @ src[7:0]}
- DEC {src},X -> {assert(src <= 0xFF), 0xD6[7:0] @ src[7:0]}
- DEC {src} -> {assert(src > 0xFF), 0xCE[7:0] @ src[7:0] @ src[15:8]}
- DEC {src},X -> {assert(src > 0xFF), 0xDE[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Decrement X
- DEX -> 0xCA[7:0]
- ;------------------------------------------------------------------------------
- ; Decrement Y
- DEY -> 0x88[7:0]
- ;------------------------------------------------------------------------------
- ; Logic XOR
- EOR #{src} -> 0x49[7:0] @ src[7:0]
- EOR {src} -> {assert(src <= 0xFF), 0x45[7:0] @ src[7:0]}
- EOR {src},X -> {assert(src <= 0xFF), 0x55[7:0] @ src[7:0]}
- EOR {src} -> {assert(src > 0xFF), 0x4D[7:0] @ src[7:0] @ src[15:8]}
- EOR {src},X -> {assert(src > 0xFF), 0x5D[7:0] @ src[7:0] @ src[15:8]}
- EOR {src},Y -> {assert(src > 0xFF), 0x59[7:0] @ src[7:0] @ src[15:8]}
- EOR ({src},X) -> 0x41[7:0] @ src[7:0]
- EOR ({src}),Y -> 0x51[7:0] @ src[7:0]
- ;------------------------------------------------------------------------------
- ; Increment
- INC {src} -> {assert(src <= 0xFF), 0xE6[7:0] @ src[7:0]}
- INC {src},X -> {assert(src <= 0xFF), 0xF6[7:0] @ src[7:0]}
- INC {src} -> {assert(src > 0xFF), 0xEE[7:0] @ src[7:0] @ src[15:8]}
- INC {src},X -> {assert(src > 0xFF), 0xFE[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Increment X
- INX -> 0xE8[7:0]
- ;------------------------------------------------------------------------------
- ; Increment Y
- INY -> 0xC8[7:0]
- ;------------------------------------------------------------------------------
- ; Jump
- JMP {src} -> 0x4C[7:0] @ src[7:0] @ src[15:8]
- JMP ind -> 0x6C[7:0] @ src[7:0] @ src[15:8]
- ;------------------------------------------------------------------------------
- ; Jump Subroutine
- JSR {src} -> 0x20[7:0] @ src[7:0] @ src[15:8]
- ;------------------------------------------------------------------------------
- ; Load Accumulator
- LDA #{src} -> 0xA9[7:0] @ src[7:0]
- LDA {src} -> {assert(src <= 0xFF), 0xA5[7:0] @ src[7:0]}
- LDA {src},X -> {assert(src <= 0xFF), 0xB5[7:0] @ src[7:0]}
- LDA {src} -> {assert(src > 0xFF), 0xAD[7:0] @ src[7:0] @ src[15:8]}
- LDA {src},X -> {assert(src > 0xFF), 0xBD[7:0] @ src[7:0] @ src[15:8]}
- LDA {src},Y -> {assert(src > 0xFF), 0xB9[7:0] @ src[7:0] @ src[15:8]}
- LDA ({src},X) -> 0xA1[7:0] @ src[7:0]
- LDA ({src}),Y -> 0xB1[7:0] @ src[7:0]
- ;------------------------------------------------------------------------------
- ; Load X
- LDX #{src} -> 0xA2[7:0] @ src[7:0]
- LDX {src} -> {assert(src <= 0xFF), 0xA6[7:0] @ src[7:0]}
- LDX {src},Y -> {assert(src <= 0xFF), 0xB6[7:0] @ src[7:0]}
- LDX {src} -> {assert(src > 0xFF), 0xAE[7:0] @ src[7:0] @ src[15:8]}
- LDX {src},Y -> {assert(src > 0xFF), 0xBE[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Load Y
- LDY #{src} -> 0xA0[7:0] @ src[7:0]
- LDY {src} -> {assert(src <= 0xFF), 0xA4[7:0] @ src[7:0]}
- LDY {src},X -> {assert(src <= 0xFF), 0xB4[7:0] @ src[7:0]}
- LDY {src} -> {assert(src > 0xFF), 0xAC[7:0] @ src[7:0] @ src[15:8]}
- LDY {src},X -> {assert(src > 0xFF), 0xBE[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Logical Shift Right
- LSR A -> 0x4A[7:0]
- LSR {src} -> {assert(src <= 0xFF), 0x46[7:0] @ src[7:0]}
- LSR {src},X -> {assert(src <= 0xFF), 0x56[7:0] @ src[7:0]}
- LSR {src} -> {assert(src > 0xFF), 0x4E[7:0] @ src[7:0] @ src[15:8]}
- LSR {src},X -> {assert(src > 0xFF), 0x5E[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; No Operation
- NOP -> 0xEA[7:0]
- ;------------------------------------------------------------------------------
- ; Logic OR
- ORA #{src} -> 0x09[7:0] @ src[7:0]
- ORA {src} -> {assert(src <= 0xFF), 0x06[7:0] @ src[7:0]}
- ORA {src},X -> {assert(src <= 0xFF), 0x15[7:0] @ src[7:0]}
- ORA {src} -> {assert(src > 0xFF), 0x0D[7:0] @ src[7:0] @ src[15:8]}
- ORA {src},X -> {assert(src > 0xFF), 0x1D[7:0] @ src[7:0] @ src[15:8]}
- ORA {src},Y -> {assert(src > 0xFF), 0x19[7:0] @ src[7:0] @ src[15:8]}
- ORA ({src},X) -> 0x01[7:0] @ src[7:0]
- ORA ({src}),Y -> 0x11[7:0] @ src[7:0]
- ;------------------------------------------------------------------------------
- ; Push Accumulator
- PHA -> 0x48[7:0]
- ;------------------------------------------------------------------------------
- ; Push Processor Status
- PHP -> 0x08[7:0]
- ;------------------------------------------------------------------------------
- ; Pull Accumulator
- PLA -> 0x68[7:0]
- ;------------------------------------------------------------------------------
- ; Pull Processor Status
- PLP -> 0x28[7:0]
- ;------------------------------------------------------------------------------
- ; Rotate Left
- ROL A -> 0x2A[7:0]
- ROL {src} -> {assert(src <= 0xFF), 0x26[7:0] @ src[7:0]}
- ROL {src},X -> {assert(src <= 0xFF), 0x36[7:0] @ src[7:0]}
- ROL {src} -> {assert(src > 0xFF), 0x2E[7:0] @ src[7:0] @ src[15:8]}
- ROL {src},X -> {assert(src > 0xFF), 0x3E[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Rotate Right
- ROR A -> 0x6A[7:0]
- ROR {src} -> {assert(src <= 0xFF), 0x66[7:0] @ src[7:0]}
- ROR {src},X -> {assert(src <= 0xFF), 0x76[7:0] @ src[7:0]}
- ROR {src} -> {assert(src > 0xFF), 0x6E[7:0] @ src[7:0] @ src[15:8]}
- ROR {src},X -> {assert(src > 0xFF), 0x7E[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Return from Interrupt
- RTI -> 0x40[7:0]
- ;------------------------------------------------------------------------------
- ; Return from Subroutine
- RTS -> 0x60[7:0]
- ;------------------------------------------------------------------------------
- ; Subtract with Carry
- SBC #{src} -> 0xE9[7:0] @ src[7:0]
- SBC {src} -> {assert(src <= 0xFF), 0xE5[7:0] @ src[7:0]}
- SBC {src},X -> {assert(src <= 0xFF), 0xF5[7:0] @ src[7:0]}
- SBC {src} -> {assert(src > 0xFF), 0xED[7:0] @ src[7:0] @ src[15:8]}
- SBC {src},X -> {assert(src > 0xFF), 0xFD[7:0] @ src[7:0] @ src[15:8]}
- SBC {src},Y -> {assert(src > 0xFF), 0xF9[7:0] @ src[7:0] @ src[15:8]}
- SBC ({src},X) -> 0xE1[7:0] @ src[7:0]
- SBC ({src}),Y -> 0xF1[7:0] @ src[7:0]
- ;------------------------------------------------------------------------------
- ; Set Carry
- SEC -> 0x38[7:0]
- ;------------------------------------------------------------------------------
- ; Set Decimal
- SED -> 0xF8[7:0]
- ;------------------------------------------------------------------------------
- ; Set Interrupt Disable
- SEI -> 0x78[7:0]
- ;------------------------------------------------------------------------------
- ; Store Accumulator
- STA {src} -> {assert(src <= 0xFF), 0x85[7:0] @ src[7:0]}
- STA {src},X -> {assert(src <= 0xFF), 0x95[7:0] @ src[7:0]}
- STA {src} -> {assert(src > 0xFF), 0x8D[7:0] @ src[7:0] @ src[15:8]}
- STA {src},X -> {assert(src > 0xFF), 0x9D[7:0] @ src[7:0] @ src[15:8]}
- STA {src},Y -> {assert(src > 0xFF), 0x99[7:0] @ src[7:0] @ src[15:8]}
- STA ({src},X) -> 0x81[7:0] @ src[7:0]
- STA ({src}),Y -> 0x91[7:0] @ src[7:0]
- ;------------------------------------------------------------------------------
- ; Store X
- STX {src} -> {assert(src <= 0xFF), 0x86[7:0] @ src[7:0]}
- STX {src},Y -> {assert(src <= 0xFF), 0x96[7:0] @ src[7:0]}
- STX {src} -> {assert(src > 0xFF), 0x8E[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Store Y
- STY {src} -> {assert(src <= 0xFF), 0x84[7:0] @ src[7:0]}
- STY {src},X -> {assert(src <= 0xFF), 0x94[7:0] @ src[7:0]}
- STY {src} -> {assert(src > 0xFF), 0x8C[7:0] @ src[7:0] @ src[15:8]}
- ;------------------------------------------------------------------------------
- ; Transfer Accumulator to X
- TAX -> 0xAA[7:0]
- ;------------------------------------------------------------------------------
- ; Transfer Accumulator to Y
- TAY -> 0xA8[7:0]
- ;------------------------------------------------------------------------------
- ; Transfer Stack Pointer to X
- TSX -> 0xBA[7:0]
- ;------------------------------------------------------------------------------
- ; Transfer X to Accumulator
- TXA -> 0x8A[7:0]
- ;------------------------------------------------------------------------------
- ; Transfer X to Stack Pointer
- TXS -> 0x9A[7:0]
- ;------------------------------------------------------------------------------
- ; Transfer Y to Accumulator
- TYA -> 0x98[7:0]
- }
Add Comment
Please, Sign In to add comment