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}