Пример #1
0
 public void Clock()
 {
     if (!_addressMode.IsComplete)
     {
         _addressMode.Clock();
         if (_addressMode.IsComplete)
         {
             _reader = _addressMode.Reader;
         }
         return;
     }
     if (!_reader.IsComplete)
     {
         _reader.Clock();
         SetupPushOrComplete();
         return;
     }
     if (!_internalCycle.IsComplete)
     {
         _internalCycle.Clock();
         return;
     }
     if (!_pushInstruction.IsComplete)
     {
         _pushInstruction.Clock();
         if (_pushInstruction.IsComplete)
         {
             _cpu.PC    = _reader.AddressedValue;
             IsComplete = true;
         }
         return;
     }
 }
Пример #2
0
        public void Clock()
        {
            if (_remainingM1Cycles-- <= 0)
            {
                if (!_addressMode.IsComplete)
                {
                    _addressMode.Clock();
                    if (_addressMode.IsComplete)
                    {
                        _reader = _addressMode.Reader;
                        JumpIfRequired();
                    }
                    return;
                }
                if (!_reader.IsComplete)
                {
                    _reader.Clock();
                    JumpIfRequired();
                    return;
                }

                if (!_internalCycle.IsComplete)
                {
                    _internalCycle.Clock();
                    if (_internalCycle.IsComplete)
                    {
                        _cpu.PC    = _reader.AddressedValue;
                        IsComplete = true;
                    }
                }
            }
        }
Пример #3
0
        public virtual void Clock()
        {
            if (_remainingM1Cycles-- <= 0)
            {
                // Destination is checked first as its operand comes first if there are
                // additional bytes to the instruction.
                if (!_destinationAddressMode.IsComplete)
                {
                    _destinationAddressMode.Clock();
                    if (_destinationAddressMode.IsComplete)
                    {
                        _destinationWriter = _destinationAddressMode.Writer;
                        if (_sourceReader?.IsComplete ?? false)
                        {
                            _destinationWriter.AddressedValue = _sourceReader.AddressedValue;
                        }
                    }
                    return;
                }
                if (!_sourceAddressMode.IsComplete)
                {
                    _sourceAddressMode.Clock();

                    if (_sourceAddressMode.IsComplete)
                    {
                        _sourceReader = _sourceAddressMode.Reader;
                        if (_sourceReader.IsComplete)
                        {
                            _destinationWriter.AddressedValue = _sourceReader.AddressedValue;
                        }
                    }
                    return;
                }
                if (!_sourceReader.IsComplete)
                {
                    _sourceReader.Clock();
                    if (_sourceReader.IsComplete)
                    {
                        _destinationWriter.AddressedValue = _sourceReader.AddressedValue;
                    }
                    return;
                }
                if (!_destinationWriter.IsComplete)
                {
                    _destinationWriter.Clock();
                }
            }
        }
Пример #4
0
 public void Clock()
 {
     if (!_addressMode.IsComplete)
     {
         _addressMode.Clock();
         if (_addressMode.IsComplete)
         {
             _readOperand = _addressMode.Reader;
             if (_readOperand.IsComplete)
             {
                 PerformSubtraction();
             }
         }
         return;
     }
     if (!_readOperand.IsComplete)
     {
         _readOperand.Clock();
         if (_readOperand.IsComplete)
         {
             PerformSubtraction();
         }
     }
 }
Пример #5
0
 public void Clock()
 {
     if (!_addressMode.IsComplete)
     {
         _addressMode.Clock();
         if (_addressMode.IsComplete)
         {
             _valueReader = _addressMode.Reader;
             if (_valueReader.IsComplete)
             {
                 PerformAdd();
             }
         }
         return;
     }
     if (!_valueReader.IsComplete)
     {
         _valueReader.Clock();
         if (_valueReader.IsComplete)
         {
             PerformAdd();
         }
     }
 }
Пример #6
0
 public void Clock()
 {
     if (!_addressMode.IsComplete)
     {
         _addressMode.Clock();
         if (_addressMode.IsComplete)
         {
             _reader = _addressMode.Reader;
             if (_reader.IsComplete)
             {
                 PerformBitTest();
             }
         }
         return;
     }
     if (!_reader.IsComplete)
     {
         _reader.Clock();
         if (_reader.IsComplete)
         {
             PerformBitTest();
         }
     }
 }