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; } }
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; } } } }
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(); } } }
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(); } } }
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(); } } }
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(); } } }