private void IncrementClock(int clocks = 1) { for (var i = 0; i < clocks; i++) { _totalClocks += InstructionSchema.FOUR_CYCLES; OnClockTick?.Invoke(InstructionSchema.FOUR_CYCLES); } }
private void WaitForNextClockTick() { if (_running) { if (_realTime) { long currentTicks = _clock.ElapsedTicks; long targetTicks = currentTicks + _windowsTicksPerZ80Tick; while (_clock.ElapsedTicks < targetTicks) { ; } } OnClockTick?.Invoke(this, _executingInstructionPackage); _emulatedTStates++; } }
private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { timer.Elapsed -= Timer_Elapsed; timer.Stop(); timer.Dispose(); foreach (var handler in OnClockTick.GetInvocationList()) { OnClockTick -= (ClockTickHandler)handler; } } disposedValue = true; } }
private void Timer_Elapsed(object sender, ElapsedEventArgs e) { _systemClockCounter++; OnClockTick?.Invoke(this, e); }
private async void OnTick(object sender, ElapsedEventArgs e) { await OnClockTick?.Invoke(e.SignalTime); }