public InstructionLogicResult Execute(CPU cpu, AddrModeCalcResult addrModeCalcResult) { cpu.A = cpu.Y; BinaryArithmeticHelpers.SetFlagsAfterRegisterLoadIncDec(cpu.A, cpu.ProcessorStatus); return(InstructionLogicResult.WithNoExtraCycles()); }
public InstructionLogicResult Execute(CPU cpu, AddrModeCalcResult addrModeCalcResult) { // Assume Accumulator mode cpu.A = BinaryArithmeticHelpers.PerformRORAndSetStatusRegisters(cpu.A, cpu.ProcessorStatus); return(InstructionLogicResult.WithNoExtraCycles()); }
public InstructionLogicResult ExecuteWithStack(CPU cpu, Memory mem, AddrModeCalcResult addrModeCalcResult) { cpu.A = cpu.PopByteFromStack(mem); BinaryArithmeticHelpers.SetFlagsAfterRegisterLoadIncDec(cpu.A, cpu.ProcessorStatus); return InstructionLogicResult.WithNoExtraCycles(); }
public InstructionLogicResult Execute(CPU cpu, AddrModeCalcResult addrModeCalcResult) { // Assume implied mode cpu.X++; BinaryArithmeticHelpers.SetFlagsAfterRegisterLoadIncDec(cpu.X, cpu.ProcessorStatus); return InstructionLogicResult.WithNoExtraCycles(); }
public InstructionLogicResult ExecuteWithByte(CPU cpu, Memory mem, byte value, AddrModeCalcResult addrModeCalcResult) { value--; cpu.StoreByte(value, mem, addrModeCalcResult.InsAddress.Value); BinaryArithmeticHelpers.SetFlagsAfterRegisterLoadIncDec(value, cpu.ProcessorStatus); return(InstructionLogicResult.WithNoExtraCycles()); }
public InstructionLogicResult ExecuteWithWord(CPU cpu, Memory mem, ushort address, AddrModeCalcResult addrModeCalcResult) { var tempValue = cpu.FetchByte(mem, address); tempValue = BinaryArithmeticHelpers.PerformRORAndSetStatusRegisters(tempValue, cpu.ProcessorStatus); cpu.StoreByte(tempValue, mem, address); return(InstructionLogicResult.WithNoExtraCycles()); }
public InstructionLogicResult ExecuteWithByte(CPU cpu, Memory mem, byte value, AddrModeCalcResult addrModeCalcResult) { BinaryArithmeticHelpers.SetFlagsAfterCompare(cpu.A, value, cpu.ProcessorStatus); return(InstructionLogicResult.WithExtraCycles( InstructionExtraCyclesCalculator.CalculateExtraCycles( addrModeCalcResult.OpCode.AddressingMode, addrModeCalcResult.AddressCalculationCrossedPageBoundary) )); }
public InstructionLogicResult ExecuteWithByte(CPU cpu, Memory mem, byte value, AddrModeCalcResult addrModeCalcResult) { BinaryArithmeticHelpers.SetFlagsAfterCompare(cpu.X, value, cpu.ProcessorStatus); return(InstructionLogicResult.WithNoExtraCycles()); }
public InstructionLogicResult ExecuteWithByte(CPU cpu, Memory mem, byte value, AddrModeCalcResult addrModeCalcResult) { BinaryArithmeticHelpers.PerformBITAndSetStatusRegisters(cpu.A, value, cpu.ProcessorStatus); return(InstructionLogicResult.WithNoExtraCycles()); }