public JsrInfo NotifyJsrInfoRetired(long cycles) { Debug.Assert(IsPartOfReturnAddr); JsrInfo jsrInfoToRetire = JsrInfo; _retiredJsrInfos.Push(jsrInfoToRetire); LastRetiredCycles = cycles; ClearJsrPartInfo(); TraceLine("retired", StackPtr.ToHex(), _retiredJsrInfos.Count); return(jsrInfoToRetire); }
public void cpu_OnPL(Cpu cpu) { OnPL?.Invoke(null); if (CurrentStackByte.IsPartOfReturnAddr) { JsrInfo info = CurrentStackByte.JsrInfo; TraceLine($"PL, retire{info.JsrOpcodeAddr.ToHex()}, {StackPtr.ToHex()}"); info.JsrReturnAddrL.NotifyJsrInfoRetired(cpu.Cycles); info.JsrReturnAddrH.NotifyJsrInfoRetired(cpu.Cycles); info.CyclesAtRetire = cpu.Cycles; info.Retired = true; } else { // ignore PL from stack which doesn't affect any return address on the stack } }