Beispiel #1
0
 protected override void ExecuteInstruction(IbmSeries1Processor processor)
 {
     if (Conditions.TryGetValue(Condition, out Test test) && test(processor.Level))
     {
         processor.Level.NextInstruction = Jump;
     }
     else
     {
         processor.Move(Size);
     }
 }
Beispiel #2
0
        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);