private void StartFetch() { _state = new CpuFetch(_cpu); _currentState = CpuStates.Fetch; _opcodeBuilder.Clear(); _cycles.Reset(); }
private bool AcceptInterrupt() { var interrupt = _interruptManager.PopInterrupt(); if (interrupt != null) { _state = interrupt; _currentState = CpuStates.Interrupt; // prep engine state _opcodeBuilder.Clear(); _cycles.Reset(); _cycles.OpcodeDefinition = interrupt.Definition; return(true); } return(false); }
private bool ContinueFetch() { if (_cycles.IsLastCycle && _cycles.OpcodeDefinition == null) { if (_opcodeBuilder.HasReversedOffsetParameterOrder) { _state = new CpuReadParameterThenExecute(_cpu); _currentState = CpuStates.Execute; _cycles.Continue(3); } else { _state = new CpuFetch(_cpu); _cycles.Continue(); } return(true); } return(false); }
private void StartExecute() { _state = new CpuExecute(_cpu); _currentState = CpuStates.Execute; }