public void StartExecution() { var addrMode = new RegIndirectWide(_cpu, WideRegister.SP, false); _read = addrMode.Reader; _write = addrMode.Writer; }
public void Clock() { if (!_addressMode.IsComplete) { _addressMode.Clock(); if (_addressMode.IsComplete) { _reader = _addressMode.Reader; _writer = _addressMode.Writer; } return; } if (!_reader.IsComplete) { _reader.Clock(); if (_reader.IsComplete) { DoRotate(); } return; } if (!_writer.IsComplete) { _writer.Clock(); } }
public void Clock() { if (!_addressMode.IsComplete) { _addressMode.Clock(); if (_addressMode.IsComplete) { _valueReader = _addressMode.Reader; _valueWriter = _addressMode.Writer; if (_valueReader.IsComplete) { PerformDecrement(); } } return; } if (!_valueReader.IsComplete) { _valueReader.Clock(); if (_valueReader.IsComplete) { PerformDecrement(); } return; } if (!_valueWriter.IsComplete) { _valueWriter.Clock(); } }
public void Clock() { if (!_addressMode.IsComplete) { _addressMode.Clock(); if (_addressMode.IsComplete) { _reader = _addressMode.Reader; if (_reader.IsComplete) { ManipulateBit(); } } return; } if (!_reader.IsComplete) { _reader.Clock(); if (_reader.IsComplete) { ManipulateBit(); } return; } if (!_writer.IsComplete) { _writer.Clock(); } }
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 Reset() { IsComplete = false; _addressMode.Reset(); _reader = null; _pushInstruction = null; }
public void Reset() { _sourceReader = new RegIndirect(_cpu, WideRegister.HL).Reader; _outputCycle.Reset(); _repeatCycles.Reset(); _remainingM1Cycles = 1; }
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 void Reset() { _additionalReadCycles = 1; _additionalWriteCycles = 2; _read = null; _write = null; }
public void Reset() { _readCycle = null; _additionalCycles = 5; _additionalRepeatCycles = 5; IsComplete = false; }
public virtual void Reset() { _sourceAddressMode.Reset(); _destinationAddressMode.Reset(); _sourceReader = null; _destinationWriter = null; _remainingM1Cycles = _additionalM1TCycles; }
public void StartExecution() { if (_addressMode.IsComplete) { _reader = _addressMode.Reader; SetupPushOrComplete(); } }
public void StartExecution() { if (_addressMode.IsComplete) { _reader = _addressMode.Reader; JumpIfRequired(); } }
public void Reset() { _addressMode.Reset(); _reader = null; _internalCycle.Reset(); IsComplete = false; _remainingM1Cycles = _additionalM1TCycles; }
public OUT(Z80Cpu cpu, IReadAddressedOperand <byte> destination, Register source, Register topHalfOfAddressSource) { _cpu = cpu; _destination = destination; _source = source; _outputCycle = new OutputCycle(cpu); _topHalfOfAddressSource = topHalfOfAddressSource; }
public IN(Z80Cpu cpu, Register destination, IReadAddressedOperand <byte> source, Register topHalfOfAddressSource) { _cpu = cpu; _destination = destination; _source = source; _inputCycle = new InputCycle(cpu); _topHalfOfAddressSource = topHalfOfAddressSource; }
public OUTxx(Z80Cpu cpu, bool increment, bool repeats) { _cpu = cpu; _outputCycle = new OutputCycle(cpu); _sourceReader = new RegIndirect(cpu, WideRegister.HL).Reader; _repeatCycles = new InternalCycle(5); _remainingM1Cycles = 1; _increment = increment; _repeats = repeats; }
public void StartExecution() { if (_addressMode.IsComplete) { _readOperand = _addressMode.Reader; if (_readOperand.IsComplete) { PerformAND(); } } }
public void StartExecution() { if (_addressMode.IsComplete) { _reader = _addressMode.Reader; if (_reader.IsComplete) { PerformBitTest(); } } }
public void StartExecution() { if (_addressMode.IsComplete) { _valueReader = _addressMode.Reader; _valueWriter = _addressMode.Writer; if (_valueReader.IsComplete) { PerformDecrement(); } } }
public void StartExecution() { if (_addressMode.IsComplete) { _valueReader = _addressMode.Reader; if (_valueReader.IsComplete) { PerformAdd(); } } }
public void StartExecution() { if (_addressMode.IsComplete) { _reader = _addressMode.Reader; _writer = _addressMode.Writer; if (_reader.IsComplete) { DoRotate(); } } }
public void StartExecution() { if (_addressMode.IsComplete) { _reader = _addressMode.Reader; _writer = _addressMode.Writer; if (_reader.IsComplete) { ManipulateBit(); } } }
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) { _reader = _addressMode.Reader; if (_reader.IsComplete) { PerformBitTest(); } } return; } if (!_reader.IsComplete) { _reader.Clock(); if (_reader.IsComplete) { PerformBitTest(); } } }
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) { _readOperand = _addressMode.Reader; if (_readOperand.IsComplete) { PerformSubtraction(); } } return; } if (!_readOperand.IsComplete) { _readOperand.Clock(); if (_readOperand.IsComplete) { PerformSubtraction(); } } }
public virtual void StartExecution() { if (_sourceAddressMode.IsComplete) { _sourceReader = _sourceAddressMode.Reader; } if (_destinationAddressMode.IsComplete) { _destinationWriter = _destinationAddressMode.Writer; } if ((_sourceReader?.IsComplete ?? false) && (_destinationAddressMode?.IsComplete ?? false)) { _destinationWriter.AddressedValue = _sourceAddressMode.Reader.AddressedValue; if (_setsFlags) { Z80Flags.Zero_Z.SetOrReset(_cpu, _cpu.A == 0); Z80Flags.Sign_S.SetOrReset(_cpu, (_cpu.A & 0x8000) == 0x8000); Z80Flags.ParityOverflow_PV.SetOrReset(_cpu, _cpu.IFF2); Z80Flags.HalfCarry_H.SetOrReset(_cpu, false); Z80Flags.AddSubtract_N.SetOrReset(_cpu, false); } } }
public void StartExecution() { _readCycle = new RegIndirect(_cpu, WideRegister.HL).Reader; _writeCycle = new RegIndirect(_cpu, WideRegister.DE).Writer; }
public void Reset() { _addressMode.Reset(); _reader = null; _writer = null; }