コード例 #1
0
 private void JumpIfRequired()
 {
     if (_reader.IsComplete && !_requiresConditionalInternalCycle && _condition.ShouldJump(_cpu))
     {
         _cpu.PC    = _reader.AddressedValue;
         IsComplete = true;
     }
     else if (_reader.IsComplete && _requiresConditionalInternalCycle && !_condition.ShouldJump(_cpu))
     {
         IsComplete = true;
     }
     else if (_reader.IsComplete && !_requiresConditionalInternalCycle)
     {
         IsComplete = true;
     }
 }
コード例 #2
0
ファイル: CALL.cs プロジェクト: dolbz/Z80Sharp
 private void SetupPushOrComplete()
 {
     if (_reader.IsComplete)
     {
         if (_jumpCondition.ShouldJump(_cpu))
         {
             _pushInstruction = new PUSH(_cpu, WideRegister.PC, additionalM1TCycles: 0);
             _pushInstruction.StartExecution();
         }
         else
         {
             IsComplete = true;
         }
     }
 }
コード例 #3
0
ファイル: RET.cs プロジェクト: dolbz/Z80Sharp
 public override void Clock()
 {
     if (_condition.ShouldJump(_cpu))
     {
         if (_remainingM1Cycles-- <= 0)
         {
             base.Clock();
             if (base.IsComplete)
             {
                 _isComplete = true;
             }
         }
     }
     else
     {
         _isComplete = true;
     }
 }