mirror of
https://github.com/mre/mos6502.git
synced 2024-06-04 03:29:27 +00:00
add a single variant: the NMOS one
This commit is contained in:
parent
4a2d15f8a7
commit
f4d88c7bf0
|
@ -154,519 +154,267 @@ impl AddressingMode {
|
|||
|
||||
pub type DecodedInstr = (Instruction, OpInput);
|
||||
|
||||
/*
|
||||
pub static OPCODES: [Option<(Instruction, AddressingMode)>; 256] = [
|
||||
//0x00
|
||||
Some((Instruction::BRK, AddressingMode::Implied)),
|
||||
//0x01
|
||||
Some((Instruction::ORA, AddressingMode::IndexedIndirectX)),
|
||||
//0x02
|
||||
None,
|
||||
//0x03
|
||||
None,
|
||||
//0x04
|
||||
None,
|
||||
//0x05
|
||||
Some((Instruction::ORA, AddressingMode::ZeroPage)),
|
||||
//0x06
|
||||
Some((Instruction::ASL, AddressingMode::ZeroPage)),
|
||||
//0x07
|
||||
None,
|
||||
//0x08
|
||||
Some((Instruction::PHP, AddressingMode::Implied)),
|
||||
//0x09
|
||||
Some((Instruction::ORA, AddressingMode::Immediate)),
|
||||
//0x0A
|
||||
Some((Instruction::ASL, AddressingMode::Accumulator)),
|
||||
//0x0B
|
||||
None,
|
||||
//0x0C
|
||||
None,
|
||||
//0x0D
|
||||
Some((Instruction::ORA, AddressingMode::Absolute)),
|
||||
//0x0E
|
||||
Some((Instruction::ASL, AddressingMode::Absolute)),
|
||||
//0x0F
|
||||
None,
|
||||
//0x10
|
||||
Some((Instruction::BPL, AddressingMode::Relative)),
|
||||
//0x11
|
||||
Some((Instruction::ORA, AddressingMode::IndirectIndexedY)),
|
||||
//0x12
|
||||
None,
|
||||
//0x13
|
||||
None,
|
||||
//0x14
|
||||
None,
|
||||
//0x15
|
||||
Some((Instruction::ORA, AddressingMode::ZeroPageX)),
|
||||
//0x16
|
||||
Some((Instruction::ASL, AddressingMode::ZeroPageX)),
|
||||
//0x17
|
||||
None,
|
||||
//0x18
|
||||
Some((Instruction::CLC, AddressingMode::Implied)),
|
||||
//0x19
|
||||
Some((Instruction::ORA, AddressingMode::AbsoluteY)),
|
||||
//0x1A
|
||||
None,
|
||||
//0x1B
|
||||
None,
|
||||
//0x1C
|
||||
None,
|
||||
//0x1D
|
||||
Some((Instruction::ORA, AddressingMode::AbsoluteX)),
|
||||
//0x1E
|
||||
Some((Instruction::ASL, AddressingMode::AbsoluteX)),
|
||||
//0x1F
|
||||
None,
|
||||
//0x20
|
||||
Some((Instruction::JSR, AddressingMode::Absolute)),
|
||||
//0x21
|
||||
Some((Instruction::AND, AddressingMode::IndexedIndirectX)),
|
||||
//0x22
|
||||
None,
|
||||
//0x23
|
||||
None,
|
||||
//0x24
|
||||
Some((Instruction::BIT, AddressingMode::ZeroPage)),
|
||||
//0x25
|
||||
Some((Instruction::AND, AddressingMode::ZeroPage)),
|
||||
//0x26
|
||||
Some((Instruction::ROL, AddressingMode::ZeroPage)),
|
||||
//0x27
|
||||
None,
|
||||
//0x28
|
||||
Some((Instruction::PLP, AddressingMode::Implied)),
|
||||
//0x29
|
||||
Some((Instruction::AND, AddressingMode::Immediate)),
|
||||
//0x2A
|
||||
Some((Instruction::ROL, AddressingMode::Accumulator)),
|
||||
//0x2B
|
||||
None,
|
||||
//0x2C
|
||||
Some((Instruction::BIT, AddressingMode::Absolute)),
|
||||
//0x2D
|
||||
Some((Instruction::AND, AddressingMode::Absolute)),
|
||||
//0x2E
|
||||
Some((Instruction::ROL, AddressingMode::Absolute)),
|
||||
//0x2F
|
||||
None,
|
||||
//0x30
|
||||
Some((Instruction::BMI, AddressingMode::Relative)),
|
||||
//0x31
|
||||
Some((Instruction::AND, AddressingMode::IndirectIndexedY)),
|
||||
//0x32
|
||||
None,
|
||||
//0x33
|
||||
None,
|
||||
//0x34
|
||||
None,
|
||||
//0x35
|
||||
Some((Instruction::AND, AddressingMode::ZeroPageX)),
|
||||
//0x36
|
||||
Some((Instruction::ROL, AddressingMode::ZeroPageX)),
|
||||
//0x37
|
||||
None,
|
||||
//0x38
|
||||
Some((Instruction::SEC, AddressingMode::Implied)),
|
||||
//0x39
|
||||
Some((Instruction::AND, AddressingMode::AbsoluteY)),
|
||||
//0x3A
|
||||
None,
|
||||
//0x3B
|
||||
None,
|
||||
//0x3C
|
||||
None,
|
||||
//0x3D
|
||||
Some((Instruction::AND, AddressingMode::AbsoluteX)),
|
||||
//0x3E
|
||||
Some((Instruction::ROL, AddressingMode::AbsoluteX)),
|
||||
//0x3F
|
||||
None,
|
||||
//0x40
|
||||
Some((Instruction::RTI, AddressingMode::Implied)),
|
||||
//0x41
|
||||
Some((Instruction::EOR, AddressingMode::IndexedIndirectX)),
|
||||
//0x42
|
||||
None,
|
||||
//0x43
|
||||
None,
|
||||
//0x44
|
||||
None,
|
||||
//0x45
|
||||
Some((Instruction::EOR, AddressingMode::ZeroPage)),
|
||||
//0x46
|
||||
Some((Instruction::LSR, AddressingMode::ZeroPage)),
|
||||
//0x47
|
||||
None,
|
||||
//0x48
|
||||
Some((Instruction::PHA, AddressingMode::Implied)),
|
||||
//0x49
|
||||
Some((Instruction::EOR, AddressingMode::Immediate)),
|
||||
//0x4A
|
||||
Some((Instruction::LSR, AddressingMode::Accumulator)),
|
||||
//0x4B
|
||||
None,
|
||||
//0x4C
|
||||
Some((Instruction::JMP, AddressingMode::Absolute)),
|
||||
//0x4D
|
||||
Some((Instruction::EOR, AddressingMode::Absolute)),
|
||||
//0x4E
|
||||
Some((Instruction::LSR, AddressingMode::Absolute)),
|
||||
//0x4F
|
||||
None,
|
||||
//0x50
|
||||
Some((Instruction::BVC, AddressingMode::Relative)),
|
||||
//0x51
|
||||
Some((Instruction::EOR, AddressingMode::IndirectIndexedY)),
|
||||
//0x52
|
||||
None,
|
||||
//0x53
|
||||
None,
|
||||
//0x54
|
||||
None,
|
||||
//0x55
|
||||
Some((Instruction::EOR, AddressingMode::ZeroPageX)),
|
||||
//0x56
|
||||
Some((Instruction::LSR, AddressingMode::ZeroPageX)),
|
||||
//0x57
|
||||
None,
|
||||
//0x58
|
||||
Some((Instruction::CLI, AddressingMode::Implied)),
|
||||
//0x59
|
||||
Some((Instruction::EOR, AddressingMode::AbsoluteY)),
|
||||
//0x5A
|
||||
None,
|
||||
//0x5B
|
||||
None,
|
||||
//0x5C
|
||||
None,
|
||||
//0x5D
|
||||
Some((Instruction::EOR, AddressingMode::AbsoluteX)),
|
||||
//0x5E
|
||||
Some((Instruction::LSR, AddressingMode::AbsoluteX)),
|
||||
//0x5F
|
||||
None,
|
||||
//0x60
|
||||
Some((Instruction::RTS, AddressingMode::Implied)),
|
||||
//0x61
|
||||
Some((Instruction::ADC, AddressingMode::IndexedIndirectX)),
|
||||
//0x62
|
||||
None,
|
||||
//0x63
|
||||
None,
|
||||
//0x64
|
||||
None,
|
||||
//0x65
|
||||
Some((Instruction::ADC, AddressingMode::ZeroPage)),
|
||||
//0x66
|
||||
Some((Instruction::ROR, AddressingMode::ZeroPage)),
|
||||
//0x67
|
||||
None,
|
||||
//0x68
|
||||
Some((Instruction::PLA, AddressingMode::Implied)),
|
||||
//0x69
|
||||
Some((Instruction::ADC, AddressingMode::Immediate)),
|
||||
//0x6A
|
||||
Some((Instruction::ROR, AddressingMode::Accumulator)),
|
||||
//0x6B
|
||||
None,
|
||||
//0x6C
|
||||
Some((Instruction::JMP, AddressingMode::Indirect)),
|
||||
//0x6D
|
||||
Some((Instruction::ADC, AddressingMode::Absolute)),
|
||||
//0x6E
|
||||
Some((Instruction::ROR, AddressingMode::Absolute)),
|
||||
//0x6F
|
||||
None,
|
||||
//0x70
|
||||
Some((Instruction::BVS, AddressingMode::Relative)),
|
||||
//0x71
|
||||
Some((Instruction::ADC, AddressingMode::IndirectIndexedY)),
|
||||
//0x72
|
||||
None,
|
||||
//0x73
|
||||
None,
|
||||
//0x74
|
||||
None,
|
||||
//0x75
|
||||
Some((Instruction::ADC, AddressingMode::ZeroPageX)),
|
||||
//0x76
|
||||
Some((Instruction::ROR, AddressingMode::ZeroPageX)),
|
||||
//0x77
|
||||
None,
|
||||
//0x78
|
||||
Some((Instruction::SEI, AddressingMode::Implied)),
|
||||
//0x79
|
||||
Some((Instruction::ADC, AddressingMode::AbsoluteY)),
|
||||
//0x7A
|
||||
None,
|
||||
//0x7B
|
||||
None,
|
||||
//0x7C
|
||||
None,
|
||||
//0x7D
|
||||
Some((Instruction::ADC, AddressingMode::AbsoluteX)),
|
||||
//0x7E
|
||||
Some((Instruction::ROR, AddressingMode::AbsoluteX)),
|
||||
//0x7F
|
||||
None,
|
||||
//0x80
|
||||
None,
|
||||
//0x81
|
||||
Some((Instruction::STA, AddressingMode::IndexedIndirectX)),
|
||||
//0x82
|
||||
None,
|
||||
//0x83
|
||||
None,
|
||||
//0x84
|
||||
Some((Instruction::STY, AddressingMode::ZeroPage)),
|
||||
//0x85
|
||||
Some((Instruction::STA, AddressingMode::ZeroPage)),
|
||||
//0x86
|
||||
Some((Instruction::STX, AddressingMode::ZeroPage)),
|
||||
//0x87
|
||||
None,
|
||||
//0x88
|
||||
Some((Instruction::DEY, AddressingMode::Implied)),
|
||||
//0x89
|
||||
None,
|
||||
//0x8A
|
||||
Some((Instruction::TXA, AddressingMode::Implied)),
|
||||
//0x8B
|
||||
None,
|
||||
//0x8C
|
||||
Some((Instruction::STY, AddressingMode::Absolute)),
|
||||
//0x8D
|
||||
Some((Instruction::STA, AddressingMode::Absolute)),
|
||||
//0x8E
|
||||
Some((Instruction::STX, AddressingMode::Absolute)),
|
||||
//0x8F
|
||||
None,
|
||||
//0x90
|
||||
Some((Instruction::BCC, AddressingMode::Relative)),
|
||||
//0x91
|
||||
Some((Instruction::STA, AddressingMode::IndirectIndexedY)),
|
||||
//0x92
|
||||
None,
|
||||
//0x93
|
||||
None,
|
||||
//0x94
|
||||
Some((Instruction::STY, AddressingMode::ZeroPageX)),
|
||||
//0x95
|
||||
Some((Instruction::STA, AddressingMode::ZeroPageX)),
|
||||
//0x96
|
||||
Some((Instruction::STX, AddressingMode::ZeroPageY)),
|
||||
//0x97
|
||||
None,
|
||||
//0x98
|
||||
Some((Instruction::TYA, AddressingMode::Implied)),
|
||||
//0x99
|
||||
Some((Instruction::STA, AddressingMode::AbsoluteY)),
|
||||
//0x9A
|
||||
Some((Instruction::TXS, AddressingMode::Implied)),
|
||||
//0x9B
|
||||
None,
|
||||
//0x9C
|
||||
None,
|
||||
//0x9D
|
||||
Some((Instruction::STA, AddressingMode::AbsoluteX)),
|
||||
//0x9E
|
||||
None,
|
||||
//0x9F
|
||||
None,
|
||||
//0xA0
|
||||
Some((Instruction::LDY, AddressingMode::Immediate)),
|
||||
//0xA1
|
||||
Some((Instruction::LDA, AddressingMode::IndexedIndirectX)),
|
||||
//0xA2
|
||||
Some((Instruction::LDX, AddressingMode::Immediate)),
|
||||
//0xA3
|
||||
None,
|
||||
//0xA4
|
||||
Some((Instruction::LDY, AddressingMode::ZeroPage)),
|
||||
//0xA5
|
||||
Some((Instruction::LDA, AddressingMode::ZeroPage)),
|
||||
//0xA6
|
||||
Some((Instruction::LDX, AddressingMode::ZeroPage)),
|
||||
//0xA7
|
||||
None,
|
||||
//0xA8
|
||||
Some((Instruction::TAY, AddressingMode::Implied)),
|
||||
//0xA9
|
||||
Some((Instruction::LDA, AddressingMode::Immediate)),
|
||||
//0xAA
|
||||
Some((Instruction::TAX, AddressingMode::Implied)),
|
||||
//0xAB
|
||||
None,
|
||||
//0xAC
|
||||
Some((Instruction::LDY, AddressingMode::Absolute)),
|
||||
//0xAD
|
||||
Some((Instruction::LDA, AddressingMode::Absolute)),
|
||||
//0xAE
|
||||
Some((Instruction::LDX, AddressingMode::Absolute)),
|
||||
//0xAF
|
||||
None,
|
||||
//0xB0
|
||||
Some((Instruction::BCS, AddressingMode::Relative)),
|
||||
//0xB1
|
||||
Some((Instruction::LDA, AddressingMode::IndirectIndexedY)),
|
||||
//0xB2
|
||||
None,
|
||||
//0xB3
|
||||
None,
|
||||
//0xB4
|
||||
Some((Instruction::LDY, AddressingMode::ZeroPageX)),
|
||||
//0xB5
|
||||
Some((Instruction::LDA, AddressingMode::ZeroPageX)),
|
||||
//0xB6
|
||||
Some((Instruction::LDX, AddressingMode::ZeroPageY)),
|
||||
//0xB7
|
||||
None,
|
||||
//0xB8
|
||||
Some((Instruction::CLV, AddressingMode::Implied)),
|
||||
//0xB9
|
||||
Some((Instruction::LDA, AddressingMode::AbsoluteY)),
|
||||
//0xBA
|
||||
Some((Instruction::TSX, AddressingMode::Implied)),
|
||||
//0xBB
|
||||
None,
|
||||
//0xBC
|
||||
Some((Instruction::LDY, AddressingMode::AbsoluteX)),
|
||||
//0xBD
|
||||
Some((Instruction::LDA, AddressingMode::AbsoluteX)),
|
||||
//0xBE
|
||||
Some((Instruction::LDX, AddressingMode::AbsoluteY)),
|
||||
//0xBF
|
||||
None,
|
||||
//0xC0
|
||||
Some((Instruction::CPY, AddressingMode::Immediate)),
|
||||
//0xC1
|
||||
Some((Instruction::CMP, AddressingMode::IndexedIndirectX)),
|
||||
//0xC2
|
||||
None,
|
||||
//0xC3
|
||||
None,
|
||||
//0xC4
|
||||
Some((Instruction::CPY, AddressingMode::ZeroPage)),
|
||||
//0xC5
|
||||
Some((Instruction::CMP, AddressingMode::ZeroPage)),
|
||||
//0xC6
|
||||
Some((Instruction::DEC, AddressingMode::ZeroPage)),
|
||||
//0xC7
|
||||
None,
|
||||
//0xC8
|
||||
Some((Instruction::INY, AddressingMode::Implied)),
|
||||
//0xC9
|
||||
Some((Instruction::CMP, AddressingMode::Immediate)),
|
||||
//0xCA
|
||||
Some((Instruction::DEX, AddressingMode::Implied)),
|
||||
//0xCB
|
||||
None,
|
||||
//0xCC
|
||||
Some((Instruction::CPY, AddressingMode::Absolute)),
|
||||
//0xCD
|
||||
Some((Instruction::CMP, AddressingMode::Absolute)),
|
||||
//0xCE
|
||||
Some((Instruction::DEC, AddressingMode::Absolute)),
|
||||
//0xCF
|
||||
None,
|
||||
//0xD0
|
||||
Some((Instruction::BNE, AddressingMode::Relative)),
|
||||
//0xD1
|
||||
Some((Instruction::CMP, AddressingMode::IndirectIndexedY)),
|
||||
//0xD2
|
||||
None,
|
||||
//0xD3
|
||||
None,
|
||||
//0xD4
|
||||
None,
|
||||
//0xD5
|
||||
Some((Instruction::CMP, AddressingMode::ZeroPageX)),
|
||||
//0xD6
|
||||
Some((Instruction::DEC, AddressingMode::ZeroPageX)),
|
||||
//0xD7
|
||||
None,
|
||||
//0xD8
|
||||
Some((Instruction::CLD, AddressingMode::Implied)),
|
||||
//0xD9
|
||||
Some((Instruction::CMP, AddressingMode::AbsoluteY)),
|
||||
//0xDA
|
||||
None,
|
||||
//0xDB
|
||||
None,
|
||||
//0xDC
|
||||
None,
|
||||
//0xDD
|
||||
Some((Instruction::CMP, AddressingMode::AbsoluteX)),
|
||||
//0xDE
|
||||
Some((Instruction::DEC, AddressingMode::AbsoluteX)),
|
||||
//0xDF
|
||||
None,
|
||||
//0xE0
|
||||
Some((Instruction::CPX, AddressingMode::Immediate)),
|
||||
//0xE1
|
||||
Some((Instruction::SBC, AddressingMode::IndexedIndirectX)),
|
||||
//0xE2
|
||||
None,
|
||||
//0xE3
|
||||
None,
|
||||
//0xE4
|
||||
Some((Instruction::CPX, AddressingMode::ZeroPage)),
|
||||
//0xE5
|
||||
Some((Instruction::SBC, AddressingMode::ZeroPage)),
|
||||
//0xE6
|
||||
Some((Instruction::INC, AddressingMode::ZeroPage)),
|
||||
//0xE7
|
||||
None,
|
||||
//0xE8
|
||||
Some((Instruction::INX, AddressingMode::Implied)),
|
||||
//0xE9
|
||||
Some((Instruction::SBC, AddressingMode::Immediate)),
|
||||
//0xEA
|
||||
Some((Instruction::NOP, AddressingMode::Implied)),
|
||||
//0xEB
|
||||
None,
|
||||
//0xEC
|
||||
Some((Instruction::CPX, AddressingMode::Absolute)),
|
||||
//0xED
|
||||
Some((Instruction::SBC, AddressingMode::Absolute)),
|
||||
//0xEE
|
||||
Some((Instruction::INC, AddressingMode::Absolute)),
|
||||
//0xEF
|
||||
None,
|
||||
//0xF0
|
||||
Some((Instruction::BEQ, AddressingMode::Relative)),
|
||||
//0xF1
|
||||
Some((Instruction::SBC, AddressingMode::IndirectIndexedY)),
|
||||
//0xF2
|
||||
None,
|
||||
//0xF3
|
||||
None,
|
||||
//0xF4
|
||||
None,
|
||||
//0xF5
|
||||
Some((Instruction::SBC, AddressingMode::ZeroPageX)),
|
||||
//0xF6
|
||||
Some((Instruction::INC, AddressingMode::ZeroPageX)),
|
||||
//0xF7
|
||||
None,
|
||||
//0xF8
|
||||
Some((Instruction::SED, AddressingMode::Implied)),
|
||||
//0xF9
|
||||
Some((Instruction::SBC, AddressingMode::AbsoluteY)),
|
||||
//0xFA
|
||||
None,
|
||||
//0xFB
|
||||
None,
|
||||
//0xFC
|
||||
None,
|
||||
//0xFD
|
||||
Some((Instruction::SBC, AddressingMode::AbsoluteX)),
|
||||
//0xFE
|
||||
Some((Instruction::INC, AddressingMode::AbsoluteX)),
|
||||
//0xFF
|
||||
None,
|
||||
];
|
||||
*/
|
||||
pub struct Nmos6502;
|
||||
|
||||
impl crate::Variant for Nmos6502 {
|
||||
fn decode(opcode: u8) -> Option<(Instruction, AddressingMode)> {
|
||||
match opcode {
|
||||
0x00 => Some((Instruction::BRK, AddressingMode::Implied)),
|
||||
0x01 => Some((Instruction::ORA, AddressingMode::IndexedIndirectX)),
|
||||
0x02 => None,
|
||||
0x03 => None,
|
||||
0x04 => None,
|
||||
0x05 => Some((Instruction::ORA, AddressingMode::ZeroPage)),
|
||||
0x06 => Some((Instruction::ASL, AddressingMode::ZeroPage)),
|
||||
0x07 => None,
|
||||
0x08 => Some((Instruction::PHP, AddressingMode::Implied)),
|
||||
0x09 => Some((Instruction::ORA, AddressingMode::Immediate)),
|
||||
0x0a => Some((Instruction::ASL, AddressingMode::Accumulator)),
|
||||
0x0b => None,
|
||||
0x0c => None,
|
||||
0x0d => Some((Instruction::ORA, AddressingMode::Absolute)),
|
||||
0x0e => Some((Instruction::ASL, AddressingMode::Absolute)),
|
||||
0x0f => None,
|
||||
0x10 => Some((Instruction::BPL, AddressingMode::Relative)),
|
||||
0x11 => Some((Instruction::ORA, AddressingMode::IndirectIndexedY)),
|
||||
0x12 => None,
|
||||
0x13 => None,
|
||||
0x14 => None,
|
||||
0x15 => Some((Instruction::ORA, AddressingMode::ZeroPageX)),
|
||||
0x16 => Some((Instruction::ASL, AddressingMode::ZeroPageX)),
|
||||
0x17 => None,
|
||||
0x18 => Some((Instruction::CLC, AddressingMode::Implied)),
|
||||
0x19 => Some((Instruction::ORA, AddressingMode::AbsoluteY)),
|
||||
0x1a => None,
|
||||
0x1b => None,
|
||||
0x1c => None,
|
||||
0x1d => Some((Instruction::ORA, AddressingMode::AbsoluteX)),
|
||||
0x1e => Some((Instruction::ASL, AddressingMode::AbsoluteX)),
|
||||
0x1f => None,
|
||||
0x20 => Some((Instruction::JSR, AddressingMode::Absolute)),
|
||||
0x21 => Some((Instruction::AND, AddressingMode::IndexedIndirectX)),
|
||||
0x22 => None,
|
||||
0x23 => None,
|
||||
0x24 => Some((Instruction::BIT, AddressingMode::ZeroPage)),
|
||||
0x25 => Some((Instruction::AND, AddressingMode::ZeroPage)),
|
||||
0x26 => Some((Instruction::ROL, AddressingMode::ZeroPage)),
|
||||
0x27 => None,
|
||||
0x28 => Some((Instruction::PLP, AddressingMode::Implied)),
|
||||
0x29 => Some((Instruction::AND, AddressingMode::Immediate)),
|
||||
0x2a => Some((Instruction::ROL, AddressingMode::Accumulator)),
|
||||
0x2b => None,
|
||||
0x2c => Some((Instruction::BIT, AddressingMode::Absolute)),
|
||||
0x2d => Some((Instruction::AND, AddressingMode::Absolute)),
|
||||
0x2e => Some((Instruction::ROL, AddressingMode::Absolute)),
|
||||
0x2f => None,
|
||||
0x30 => Some((Instruction::BMI, AddressingMode::Relative)),
|
||||
0x31 => Some((Instruction::AND, AddressingMode::IndirectIndexedY)),
|
||||
0x32 => None,
|
||||
0x33 => None,
|
||||
0x34 => None,
|
||||
0x35 => Some((Instruction::AND, AddressingMode::ZeroPageX)),
|
||||
0x36 => Some((Instruction::ROL, AddressingMode::ZeroPageX)),
|
||||
0x37 => None,
|
||||
0x38 => Some((Instruction::SEC, AddressingMode::Implied)),
|
||||
0x39 => Some((Instruction::AND, AddressingMode::AbsoluteY)),
|
||||
0x3a => None,
|
||||
0x3b => None,
|
||||
0x3c => None,
|
||||
0x3d => Some((Instruction::AND, AddressingMode::AbsoluteX)),
|
||||
0x3e => Some((Instruction::ROL, AddressingMode::AbsoluteX)),
|
||||
0x3f => None,
|
||||
0x40 => Some((Instruction::RTI, AddressingMode::Implied)),
|
||||
0x41 => Some((Instruction::EOR, AddressingMode::IndexedIndirectX)),
|
||||
0x42 => None,
|
||||
0x43 => None,
|
||||
0x44 => None,
|
||||
0x45 => Some((Instruction::EOR, AddressingMode::ZeroPage)),
|
||||
0x46 => Some((Instruction::LSR, AddressingMode::ZeroPage)),
|
||||
0x47 => None,
|
||||
0x48 => Some((Instruction::PHA, AddressingMode::Implied)),
|
||||
0x49 => Some((Instruction::EOR, AddressingMode::Immediate)),
|
||||
0x4a => Some((Instruction::LSR, AddressingMode::Accumulator)),
|
||||
0x4b => None,
|
||||
0x4c => Some((Instruction::JMP, AddressingMode::Absolute)),
|
||||
0x4d => Some((Instruction::EOR, AddressingMode::Absolute)),
|
||||
0x4e => Some((Instruction::LSR, AddressingMode::Absolute)),
|
||||
0x4f => None,
|
||||
0x50 => Some((Instruction::BVC, AddressingMode::Relative)),
|
||||
0x51 => Some((Instruction::EOR, AddressingMode::IndirectIndexedY)),
|
||||
0x52 => None,
|
||||
0x53 => None,
|
||||
0x54 => None,
|
||||
0x55 => Some((Instruction::EOR, AddressingMode::ZeroPageX)),
|
||||
0x56 => Some((Instruction::LSR, AddressingMode::ZeroPageX)),
|
||||
0x57 => None,
|
||||
0x58 => Some((Instruction::CLI, AddressingMode::Implied)),
|
||||
0x59 => Some((Instruction::EOR, AddressingMode::AbsoluteY)),
|
||||
0x5a => None,
|
||||
0x5b => None,
|
||||
0x5c => None,
|
||||
0x5d => Some((Instruction::EOR, AddressingMode::AbsoluteX)),
|
||||
0x5e => Some((Instruction::LSR, AddressingMode::AbsoluteX)),
|
||||
0x5f => None,
|
||||
0x60 => Some((Instruction::RTS, AddressingMode::Implied)),
|
||||
0x61 => Some((Instruction::ADC, AddressingMode::IndexedIndirectX)),
|
||||
0x62 => None,
|
||||
0x63 => None,
|
||||
0x64 => None,
|
||||
0x65 => Some((Instruction::ADC, AddressingMode::ZeroPage)),
|
||||
0x66 => Some((Instruction::ROR, AddressingMode::ZeroPage)),
|
||||
0x67 => None,
|
||||
0x68 => Some((Instruction::PLA, AddressingMode::Implied)),
|
||||
0x69 => Some((Instruction::ADC, AddressingMode::Immediate)),
|
||||
0x6a => Some((Instruction::ROR, AddressingMode::Accumulator)),
|
||||
0x6b => None,
|
||||
0x6c => Some((Instruction::JMP, AddressingMode::Indirect)),
|
||||
0x6d => Some((Instruction::ADC, AddressingMode::Absolute)),
|
||||
0x6e => Some((Instruction::ROR, AddressingMode::Absolute)),
|
||||
0x6f => None,
|
||||
0x70 => Some((Instruction::BVS, AddressingMode::Relative)),
|
||||
0x71 => Some((Instruction::ADC, AddressingMode::IndirectIndexedY)),
|
||||
0x72 => None,
|
||||
0x73 => None,
|
||||
0x74 => None,
|
||||
0x75 => Some((Instruction::ADC, AddressingMode::ZeroPageX)),
|
||||
0x76 => Some((Instruction::ROR, AddressingMode::ZeroPageX)),
|
||||
0x77 => None,
|
||||
0x78 => Some((Instruction::SEI, AddressingMode::Implied)),
|
||||
0x79 => Some((Instruction::ADC, AddressingMode::AbsoluteY)),
|
||||
0x7a => None,
|
||||
0x7b => None,
|
||||
0x7c => None,
|
||||
0x7d => Some((Instruction::ADC, AddressingMode::AbsoluteX)),
|
||||
0x7e => Some((Instruction::ROR, AddressingMode::AbsoluteX)),
|
||||
0x7f => None,
|
||||
0x80 => None,
|
||||
0x81 => Some((Instruction::STA, AddressingMode::IndexedIndirectX)),
|
||||
0x82 => None,
|
||||
0x83 => None,
|
||||
0x84 => Some((Instruction::STY, AddressingMode::ZeroPage)),
|
||||
0x85 => Some((Instruction::STA, AddressingMode::ZeroPage)),
|
||||
0x86 => Some((Instruction::STX, AddressingMode::ZeroPage)),
|
||||
0x87 => None,
|
||||
0x88 => Some((Instruction::DEY, AddressingMode::Implied)),
|
||||
0x89 => None,
|
||||
0x8a => Some((Instruction::TXA, AddressingMode::Implied)),
|
||||
0x8b => None,
|
||||
0x8c => Some((Instruction::STY, AddressingMode::Absolute)),
|
||||
0x8d => Some((Instruction::STA, AddressingMode::Absolute)),
|
||||
0x8e => Some((Instruction::STX, AddressingMode::Absolute)),
|
||||
0x8f => None,
|
||||
0x90 => Some((Instruction::BCC, AddressingMode::Relative)),
|
||||
0x91 => Some((Instruction::STA, AddressingMode::IndirectIndexedY)),
|
||||
0x92 => None,
|
||||
0x93 => None,
|
||||
0x94 => Some((Instruction::STY, AddressingMode::ZeroPageX)),
|
||||
0x95 => Some((Instruction::STA, AddressingMode::ZeroPageX)),
|
||||
0x96 => Some((Instruction::STX, AddressingMode::ZeroPageY)),
|
||||
0x97 => None,
|
||||
0x98 => Some((Instruction::TYA, AddressingMode::Implied)),
|
||||
0x99 => Some((Instruction::STA, AddressingMode::AbsoluteY)),
|
||||
0x9a => Some((Instruction::TXS, AddressingMode::Implied)),
|
||||
0x9b => None,
|
||||
0x9c => None,
|
||||
0x9d => Some((Instruction::STA, AddressingMode::AbsoluteX)),
|
||||
0x9e => None,
|
||||
0x9f => None,
|
||||
0xa0 => Some((Instruction::LDY, AddressingMode::Immediate)),
|
||||
0xa1 => Some((Instruction::LDA, AddressingMode::IndexedIndirectX)),
|
||||
0xa2 => Some((Instruction::LDX, AddressingMode::Immediate)),
|
||||
0xa3 => None,
|
||||
0xa4 => Some((Instruction::LDY, AddressingMode::ZeroPage)),
|
||||
0xa5 => Some((Instruction::LDA, AddressingMode::ZeroPage)),
|
||||
0xa6 => Some((Instruction::LDX, AddressingMode::ZeroPage)),
|
||||
0xa7 => None,
|
||||
0xa8 => Some((Instruction::TAY, AddressingMode::Implied)),
|
||||
0xa9 => Some((Instruction::LDA, AddressingMode::Immediate)),
|
||||
0xaa => Some((Instruction::TAX, AddressingMode::Implied)),
|
||||
0xab => None,
|
||||
0xac => Some((Instruction::LDY, AddressingMode::Absolute)),
|
||||
0xad => Some((Instruction::LDA, AddressingMode::Absolute)),
|
||||
0xae => Some((Instruction::LDX, AddressingMode::Absolute)),
|
||||
0xaf => None,
|
||||
0xb0 => Some((Instruction::BCS, AddressingMode::Relative)),
|
||||
0xb1 => Some((Instruction::LDA, AddressingMode::IndirectIndexedY)),
|
||||
0xb2 => None,
|
||||
0xb3 => None,
|
||||
0xb4 => Some((Instruction::LDY, AddressingMode::ZeroPageX)),
|
||||
0xb5 => Some((Instruction::LDA, AddressingMode::ZeroPageX)),
|
||||
0xb6 => Some((Instruction::LDX, AddressingMode::ZeroPageY)),
|
||||
0xb7 => None,
|
||||
0xb8 => Some((Instruction::CLV, AddressingMode::Implied)),
|
||||
0xb9 => Some((Instruction::LDA, AddressingMode::AbsoluteY)),
|
||||
0xba => Some((Instruction::TSX, AddressingMode::Implied)),
|
||||
0xbb => None,
|
||||
0xbc => Some((Instruction::LDY, AddressingMode::AbsoluteX)),
|
||||
0xbd => Some((Instruction::LDA, AddressingMode::AbsoluteX)),
|
||||
0xbe => Some((Instruction::LDX, AddressingMode::AbsoluteY)),
|
||||
0xbf => None,
|
||||
0xc0 => Some((Instruction::CPY, AddressingMode::Immediate)),
|
||||
0xc1 => Some((Instruction::CMP, AddressingMode::IndexedIndirectX)),
|
||||
0xc2 => None,
|
||||
0xc3 => None,
|
||||
0xc4 => Some((Instruction::CPY, AddressingMode::ZeroPage)),
|
||||
0xc5 => Some((Instruction::CMP, AddressingMode::ZeroPage)),
|
||||
0xc6 => Some((Instruction::DEC, AddressingMode::ZeroPage)),
|
||||
0xc7 => None,
|
||||
0xc8 => Some((Instruction::INY, AddressingMode::Implied)),
|
||||
0xc9 => Some((Instruction::CMP, AddressingMode::Immediate)),
|
||||
0xca => Some((Instruction::DEX, AddressingMode::Implied)),
|
||||
0xcb => None,
|
||||
0xcc => Some((Instruction::CPY, AddressingMode::Absolute)),
|
||||
0xcd => Some((Instruction::CMP, AddressingMode::Absolute)),
|
||||
0xce => Some((Instruction::DEC, AddressingMode::Absolute)),
|
||||
0xcf => None,
|
||||
0xd0 => Some((Instruction::BNE, AddressingMode::Relative)),
|
||||
0xd1 => Some((Instruction::CMP, AddressingMode::IndirectIndexedY)),
|
||||
0xd2 => None,
|
||||
0xd3 => None,
|
||||
0xd4 => None,
|
||||
0xd5 => Some((Instruction::CMP, AddressingMode::ZeroPageX)),
|
||||
0xd6 => Some((Instruction::DEC, AddressingMode::ZeroPageX)),
|
||||
0xd7 => None,
|
||||
0xd8 => Some((Instruction::CLD, AddressingMode::Implied)),
|
||||
0xd9 => Some((Instruction::CMP, AddressingMode::AbsoluteY)),
|
||||
0xda => None,
|
||||
0xdb => None,
|
||||
0xdc => None,
|
||||
0xdd => Some((Instruction::CMP, AddressingMode::AbsoluteX)),
|
||||
0xde => Some((Instruction::DEC, AddressingMode::AbsoluteX)),
|
||||
0xdf => None,
|
||||
0xe0 => Some((Instruction::CPX, AddressingMode::Immediate)),
|
||||
0xe1 => Some((Instruction::SBC, AddressingMode::IndexedIndirectX)),
|
||||
0xe2 => None,
|
||||
0xe3 => None,
|
||||
0xe4 => Some((Instruction::CPX, AddressingMode::ZeroPage)),
|
||||
0xe5 => Some((Instruction::SBC, AddressingMode::ZeroPage)),
|
||||
0xe6 => Some((Instruction::INC, AddressingMode::ZeroPage)),
|
||||
0xe7 => None,
|
||||
0xe8 => Some((Instruction::INX, AddressingMode::Implied)),
|
||||
0xe9 => Some((Instruction::SBC, AddressingMode::Immediate)),
|
||||
0xea => Some((Instruction::NOP, AddressingMode::Implied)),
|
||||
0xeb => None,
|
||||
0xec => Some((Instruction::CPX, AddressingMode::Absolute)),
|
||||
0xed => Some((Instruction::SBC, AddressingMode::Absolute)),
|
||||
0xee => Some((Instruction::INC, AddressingMode::Absolute)),
|
||||
0xef => None,
|
||||
0xf0 => Some((Instruction::BEQ, AddressingMode::Relative)),
|
||||
0xf1 => Some((Instruction::SBC, AddressingMode::IndirectIndexedY)),
|
||||
0xf2 => None,
|
||||
0xf3 => None,
|
||||
0xf4 => None,
|
||||
0xf5 => Some((Instruction::SBC, AddressingMode::ZeroPageX)),
|
||||
0xf6 => Some((Instruction::INC, AddressingMode::ZeroPageX)),
|
||||
0xf7 => None,
|
||||
0xf8 => Some((Instruction::SED, AddressingMode::Implied)),
|
||||
0xf9 => Some((Instruction::SBC, AddressingMode::AbsoluteY)),
|
||||
0xfa => None,
|
||||
0xfb => None,
|
||||
0xfc => None,
|
||||
0xfd => Some((Instruction::SBC, AddressingMode::AbsoluteX)),
|
||||
0xfe => Some((Instruction::INC, AddressingMode::AbsoluteX)),
|
||||
0xff => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user