protected override void ExecuteInstruction(IbmSeries1Processor processor) { if (Conditions.TryGetValue(Condition, out Test test) && test(processor.Level)) { processor.Level.NextInstruction = Jump; } else { processor.Move(Size); } }
protected override void ExecuteInstruction(IbmSeries1Processor processor) { Word original = processor.Level[ResultRegister]; int fullResult = original.Signed + Immediate.Unsigned; Word result = (short)fullResult; processor.Level.SetStatusFlag(LevelFlag.Zero, result.Unsigned == 0); processor.Level.SetStatusFlag(LevelFlag.Negative, result.Signed < 0); processor.Level.SetStatusFlag(LevelFlag.Even, result.Unsigned % 2 == 0); processor.Level.SetStatusFlag(LevelFlag.Overflow, fullResult > Word.SignedMax); processor.Level.SetStatusFlag(LevelFlag.Carry, result.Unsigned < original.Unsigned); processor.Level[ResultRegister] = result; processor.Move(Size); }
protected override void ExecuteInstruction(IbmSeries1Processor processor) { processor.Level[ResultRegister] = Immediate; processor.Move(Size); }
protected override void ExecuteInstruction(IbmSeries1Processor processor) => processor.State = ProcessorState.Stop;
protected abstract void ExecuteInstruction(IbmSeries1Processor processor);