1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#[derive(Debug, Clone, Copy)]
pub enum Instruction {
AddWithCarry, //AND add with carry
AndWithAccumulator, //AND and (with accumulator)
ArithmeticShiftLeft, //ASL arithmetic shift left
BranchIfCarryClear, //BCC branch on carry clear
BranchIfCarrySet, //BCS branch on carry set
BranchIfEqual, //BEQ branch on equal (zero set)
BitSet, //BIT bit test
BranchIfMinus, // BMI branch on minus (negative set)
BranchIfNotEqual, //BNE branch on not equal (zero clear)
BranchIfPlus, // BPL branch on plus (negative clear)
Break, //BRK break / interrupt
BranchIfOverflowClear, //BVC branch on overflow clear
BranchIfOverflowSet, //BVS branch on overflow set
ClearCarry, //CLC clear carry
ClearDecimal, //CLD clear decimal
ClearInterrupt, //CLI clear interrupt disable
ClearOverflow, //CLV clear overflow
CompareWithAccumulator, //CMP compare (with accumulator)
CompareWithX, //CPX compare with X
CompareWithY, //CPY compare with Y
Decrement, //DEC decrement
DecrementX, //DEX decrement X
DecrementY, //DEY decrement Y
ExclusiveOrWithAccumulator, //EOR exclusive or (with accumulator)
Increment, //INC increment
IncrementX, //INX increment X
IncrementY, //INY increment Y
Jump, //JMP jump
JumpSubroutine, //JSR jump subroutine
LoadAccumulator, //LDA load accumulator
LoadX, //LDX load X
LoadY, //LDY load Y
LogicalShiftRight, //LSR logical shift right
NoOperation, //NOP no operation
OrWithAccumulator, //ORA or with accumulator
PushAccumulator, //PHA push accumulator
PushProcessorStatus, //PHP push processor status (SR)
PullAccumulator, //PLA pull accumulator
PullProcessorStatus, //PLP pull processor status (SR)
RotateLeft, //ROL rotate left
RotateRight, //ROR rotate right
ReturnFromInterrupt, //RTI return from interrupt
ReturnFromSubroutine, //RTS return from subroutine
SubtractWithCarry, //SBC subtract with carry
SetCarry, //SEC set carry
SetDecimal, //SED set decimal
SetInterruptDisable, //SEI set interrupt disable
StoreAccumulator, //STA store accumulator
StoreX, //STX store X
StoreY, //STY store Y
TransferAccumulatorToX, //TAX transfer accumulator to X
TransferAccumulatorToY, //TAY transfer accumulator to Y
TransferStackPointerToX, //TSX transfer stack pointer to X
TransferXToAccumulator, //TXA transfer X to accumulator
TransferXToStackPointer, //TXS transfer X to stack pointer
TransferYToAccumulator, //TYA transfer Y to accumulator
}