c64_assembler_6502/lib.rs
1//! Crate containing definitions of the 6502 instruction set.
2//!
3//! # Table
4//!
5//! Table with all the instructions and op-codes per addressing mode.
6//!
7//! | **Instruction** | **Implied** | **Immediate** | **Accumulator** | **Absolute** | **Absolute,X** | **Absolute,Y** | **Zero Page** | **Zero Page,X** | **Zero Page,Y** | **Relative** | **Indirect** | **Indirect,X** | **Indirect,Y** |
8//! | --------------- | ----------- | ------------- | --------------- | ------------ | -------------- | -------------- | ------------- | --------------- | --------------- | ------------ | ------------ | -------------- | -------------- |
9//! | ADC | | 0x69 | | 0x6D | 0x7D | 0x79 | 0x65 | 0x75 | | | | 0x61 | 0x71 |
10//! | AND | | 0x29 | | 0x2D | 0x3D | 0x39 | 0x25 | 0x35 | | | | 0x21 | 0x01 |
11//! | ASL | | | 0x0A | 0x0E | 0x1E | | 0x06 | 0x16 | | | | | |
12//! | BCC | | | | | | | | | | 0x90 | | | |
13//! | BCS | | | | | | | | | | 0xB0 | | | |
14//! | BEQ | | | | | | | | | | 0xF0 | | | |
15//! | BIT | | | | 0x2C | | | 0x24 | | | | | | |
16//! | BMI | | | | | | | | | | 0x30 | | | |
17//! | BNE | | | | | | | | | | 0xD0 | | | |
18//! | BPL | | | | | | | | | | 0x10 | | | |
19//! | BRK | 0x00 | | | | | | | | | | | | |
20//! | BVC | | | | | | | | | | 0x50 | | | |
21//! | BVS | | | | | | | | | | 0x70 | | | |
22//! | CLC | 0x18 | | | | | | | | | | | | |
23//! | CLD | 0xD8 | | | | | | | | | | | | |
24//! | CLI | 0x58 | | | | | | | | | | | | |
25//! | CLV | 0xB8 | | | | | | | | | | | | |
26//! | CMP | | 0xC9 | | 0xCD | 0xDD | 0xD9 | 0xC5 | 0xD5 | | | | 0xC1 | 0xD1 |
27//! | CPX | | 0xE0 | | 0xEC | | | 0xE4 | | | | | | |
28//! | CPY | | 0xC0 | | 0xCC | | | 0xC4 | | | | | | |
29//! | DEC | | | | 0xCE | 0xDE | | 0xC6 | 0xD6 | | | | | |
30//! | DEX | 0xCA | | | | | | | | | | | | |
31//! | DEY | 0x88 | | | | | | | | | | | | |
32//! | EOR | | 0x49 | | 0x4D | 0x5D | 0x59 | 0x45 | 0x55 | | | | 0x41 | 0x51 |
33//! | INC | | | | 0xEE | 0xFE | | 0xE6 | 0xF6 | | | | | |
34//! | INX | 0xE8 | | | | | | | | | | | | |
35//! | INY | 0xC8 | | | | | | | | | | | | |
36//! | JMP | | | | 0x4C | | | | | | | 0x6C | | |
37//! | JSR | | | | 0x20 | | | | | | | | | |
38//! | LDA | | 0xA9 | | 0xAD | 0xBD | 0xB9 | 0xA5 | 0xB5 | | | | 0xA1 | 0xB1 |
39//! | LDX | | 0xA2 | | 0xAE | | 0xBE | 0xA6 | | 0xB6 | | | | |
40//! | LDY | | 0xA0 | | 0xAC | 0xBC | | 0xA4 | 0xB4 | | | | | |
41//! | LSR | | | 0x4A | 0x4E | 0x5E | | 0x46 | 0x56 | | | | | |
42//! | NOP | 0xEA | | | | | | | | | | | | |
43//! | ORA | | 0x09 | | 0x0D | 0x1D | 0x19 | 0x05 | 0x15 | | | | 0x01 | 0x11 |
44//! | PHA | 0x48 | | | | | | | | | | | | |
45//! | PHP | 0x08 | | | | | | | | | | | | |
46//! | PLA | 0x68 | | | | | | | | | | | | |
47//! | PLP | 0x28 | | | | | | | | | | | | |
48//! | ROL | | | 0x2A | 0x2E | 0x3E | | 0x26 | 0x36 | | | | | |
49//! | ROR | | | 0x6A | 0x6E | 0x7E | | 0x66 | 0x76 | | | | | |
50//! | RTI | 0x40 | | | | | | | | | | | | |
51//! | RTS | 0x60 | | | | | | | | | | | | |
52//! | SBC | | 0xE9 | | 0xED | 0xFD | 0xF9 | 0xE5 | 0xF5 | | | | 0xE1 | 0xF1 |
53//! | SEC | 0x38 | | | | | | | | | | | | |
54//! | SED | 0xF8 | | | | | | | | | | | | |
55//! | SEI | 0x78 | | | | | | | | | | | | |
56//! | STA | | | | 0x8D | 0x9D | 0x99 | 0x85 | 0x95 | | | | 0x81 | 0x91 |
57//! | STX | | | | 0x8E | | | 0x86 | | 0x96 | | | | |
58//! | STY | | | | 0x8C | | | 0x84 | 0x94 | | | | | |
59//! | TAX | 0xAA | | | | | | | | | | | | |
60//! | TAY | 0xA8 | | | | | | | | | | | | |
61//! | TSX | 0xBA | | | | | | | | | | | | |
62//! | TXA | 0x8A | | | | | | | | | | | | |
63//! | TXS | 0x9A | | | | | | | | | | | | |
64//! | TYA | 0x98 | | | | | | | | | | | | |
65
66pub mod instruction;
67pub mod opcodes;
68
69use instruction::*;
70
71/// Return all instruction definitions inside the 6502 instruction set.
72pub fn isa_6502() -> Vec<InstructionDef> {
73 vec![
74 OPCODES_ADC,
75 OPCODES_AND,
76 OPCODES_ASL,
77 OPCODES_BCC,
78 OPCODES_BCS,
79 OPCODES_BEQ,
80 OPCODES_BIT,
81 OPCODES_BMI,
82 OPCODES_BNE,
83 OPCODES_BPL,
84 OPCODES_BRK,
85 OPCODES_BVC,
86 OPCODES_BVS,
87 OPCODES_CLC,
88 OPCODES_CLD,
89 OPCODES_CLI,
90 OPCODES_CLV,
91 OPCODES_CMP,
92 OPCODES_CPX,
93 OPCODES_CPY,
94 OPCODES_DEC,
95 OPCODES_DEX,
96 OPCODES_DEY,
97 OPCODES_EOR,
98 OPCODES_INC,
99 OPCODES_INX,
100 OPCODES_INY,
101 OPCODES_JMP,
102 OPCODES_JSR,
103 OPCODES_LDA,
104 OPCODES_LDX,
105 OPCODES_LDY,
106 OPCODES_LSR,
107 OPCODES_NOP,
108 OPCODES_ORA,
109 OPCODES_PHA,
110 OPCODES_PHP,
111 OPCODES_PLA,
112 OPCODES_PLP,
113 OPCODES_ROL,
114 OPCODES_ROR,
115 OPCODES_RTI,
116 OPCODES_RTS,
117 OPCODES_SBC,
118 OPCODES_SEC,
119 OPCODES_SED,
120 OPCODES_SEI,
121 OPCODES_STA,
122 OPCODES_STX,
123 OPCODES_STY,
124 OPCODES_TAX,
125 OPCODES_TAY,
126 OPCODES_TSX,
127 OPCODES_TXA,
128 OPCODES_TXS,
129 OPCODES_TYA,
130 ]
131}