diff --git a/src/instruction.rs b/src/instruction.rs index 9f25291..86217b5 100644 --- a/src/instruction.rs +++ b/src/instruction.rs @@ -44,42 +44,42 @@ #[derive(Copy, Clone, Debug, PartialEq, Eq)] pub enum Instruction { - ADC, // ADd with Carry................ | NV ...ZC A = A + M + C - ADCnd, // ADd with Carry................ | NV ...ZC A = A + M + C - AND, // logical AND (bitwise)......... | N. ...Z. A = A && M - ASL, // Arithmetic Shift Left......... | N. ...ZC A = M << 1 - BCC, // Branch if Carry Clear......... | .. ..... PC = !C - BCS, // Branch if Carry Set........... | .. ..... PC = C - BEQ, // Branch if Equal (to zero?).... | .. ..... PC = Z - BIT, // BIT test...................... | NV ...Z. = A & M - BMI, // Branch if Minus............... | .. ..... PC = N - BNE, // Branch if Not Equal........... | .. ..... PC = !Z - BPL, // Branch if Positive............ | .. ..... PC = Z - BRA, // Unconditional BRAnch.......... | .. B.... S PC = - BRK, // BReaK......................... | .. B.... S PC = - BRKcld,// BReaK, clearing decimal flag.. | .. BD... S PC = - BVC, // Branch if oVerflow Clear...... | .. ..... PC = !V - BVS, // Branch if oVerflow Set........ | .. ..... PC = V - CLC, // CLear Carry flag.............. | .. ....C = 0 - CLD, // Clear Decimal Mode............ | .. .D... = 0 - CLI, // Clear Interrupt Disable....... | .. ..I.. = 0 - CLV, // Clear oVerflow flag........... | .V ..... = 0 - CMP, // Compare....................... | N. ...ZC = A - M - CPX, // Compare X register............ | N. ...ZC = X - M - CPY, // Compare Y register............ | N. ...ZC = Y - M - DEC, // DECrement memory.............. | N. ...Z. M = M - 1 - DEX, // DEcrement X register.......... | N. ...Z. X = X - 1 - DEY, // DEcrement Y register.......... | N. ...Z. Y = Y - 1 - EOR, // Exclusive OR (bitwise)........ | N. ...Z. A = A ^ M - INC, // INCrement memory.............. | N. ...Z. M = M + 1 - INX, // INcrement X register.......... | N. ...Z. X = X + 1 - INY, // INcrement Y register.......... | N. ...Z. Y = Y + 1 - JMP, // JuMP.......................... | .. ..... S PC = - JSR, // Jump to SubRoutine............ | .. ..... S PC = - LDA, // LoaD Accumulator.............. | N. ...Z. A = M - LDX, // LoaD X register............... | N. ...Z. X = M - LDY, // LoaD Y register............... | N. ...Z. Y = M - LSR, // Logical Shift Right........... | N. ...ZC A = A/2 + ADC, // ADd with Carry................ | NV ...ZC A = A + M + C + ADCnd, // ADd with Carry................ | NV ...ZC A = A + M + C + AND, // logical AND (bitwise)......... | N. ...Z. A = A && M + ASL, // Arithmetic Shift Left......... | N. ...ZC A = M << 1 + BCC, // Branch if Carry Clear......... | .. ..... PC = !C + BCS, // Branch if Carry Set........... | .. ..... PC = C + BEQ, // Branch if Equal (to zero?).... | .. ..... PC = Z + BIT, // BIT test...................... | NV ...Z. = A & M + BMI, // Branch if Minus............... | .. ..... PC = N + BNE, // Branch if Not Equal........... | .. ..... PC = !Z + BPL, // Branch if Positive............ | .. ..... PC = Z + BRA, // Unconditional BRAnch.......... | .. B.... S PC = + BRK, // BReaK......................... | .. B.... S PC = + BRKcld, // BReaK, clearing decimal flag.. | .. BD... S PC = + BVC, // Branch if oVerflow Clear...... | .. ..... PC = !V + BVS, // Branch if oVerflow Set........ | .. ..... PC = V + CLC, // CLear Carry flag.............. | .. ....C = 0 + CLD, // Clear Decimal Mode............ | .. .D... = 0 + CLI, // Clear Interrupt Disable....... | .. ..I.. = 0 + CLV, // Clear oVerflow flag........... | .V ..... = 0 + CMP, // Compare....................... | N. ...ZC = A - M + CPX, // Compare X register............ | N. ...ZC = X - M + CPY, // Compare Y register............ | N. ...ZC = Y - M + DEC, // DECrement memory.............. | N. ...Z. M = M - 1 + DEX, // DEcrement X register.......... | N. ...Z. X = X - 1 + DEY, // DEcrement Y register.......... | N. ...Z. Y = Y - 1 + EOR, // Exclusive OR (bitwise)........ | N. ...Z. A = A ^ M + INC, // INCrement memory.............. | N. ...Z. M = M + 1 + INX, // INcrement X register.......... | N. ...Z. X = X + 1 + INY, // INcrement Y register.......... | N. ...Z. Y = Y + 1 + JMP, // JuMP.......................... | .. ..... S PC = + JSR, // Jump to SubRoutine............ | .. ..... S PC = + LDA, // LoaD Accumulator.............. | N. ...Z. A = M + LDX, // LoaD X register............... | N. ...Z. X = M + LDY, // LoaD Y register............... | N. ...Z. Y = M + LSR, // Logical Shift Right........... | N. ...ZC A = A/2 // or N. ...ZC M = M/2 NOP, // No OPeration.................. | .. ..... = ORA, // inclusive OR (bitwise)........ | N. ...Z. A = A | M