public override string ShouldBreak(IDebuggerEngine engine) { for (int address = AddressStart; address <= AddressEnd; address++) { if (address > engine.CoreSize) { address = 0; } CoreEventRecord record = engine.CoreEvents[address]; InstructionEvent instructionEvent = record.Event & Event; if (record.Cycle == engine.Cycle - 1 && instructionEvent != InstructionEvent.None) { return("Core event " + instructionEvent + " on address " + address); } } return(null); }
public void InvalidateEvents() { long lmax = maxVersion; CoreEventRecord[] records = Engine.CoreEvents; for (int index = 0; index < Count; index++) { int address = view[index]; CoreEventRecord evn = records[address]; long ver = evn.Version; if (ver > maxVersion) { if (ver > lmax) { lmax = ver; } if (change != null) { change.Invoke(this, new ListChangedEventArgs(ListChangedType.ItemChanged, index)); } } } maxVersion = lmax; }
protected override void InitializeRound() { base.InitializeRound(); coreEvents = new CoreEventRecord[coreSize]; for (int a = 0; a < coreSize; a++) { coreEvents[a] = new CoreEventRecord(); } }
private static void PaintFlash(IMemoryPainter painter, CoreEventRecord evt) { Color evnt; Color touched; ColorManager.GetFlash(evt, out evnt, out touched); painter.DrawSmall(evnt); painter.DrawBig(touched); painter.DrawData(evnt); }
private static void PaintFade(IMemoryPainter painter, IRunningInstruction ri, CoreEventRecord evt) { Color evnt; Color owner; ColorManager.GetFade(ri, evt, out evnt, out owner); painter.DrawSmall(evnt); painter.DrawBig(owner); painter.DrawData(evnt); }
public static void PaintCell(IMemoryPainter painter, CoreEventRecord evnt, IRunningInstruction ri, bool paintAll) { switch (evnt.Level) { case CoreEventsLevel.Flash: PaintFlash(painter,evnt); break; case CoreEventsLevel.Fade: PaintFade(painter, ri, evnt); break; case CoreEventsLevel.Clean: PaintNormal(painter, ri); break; case CoreEventsLevel.None: if (paintAll) { PaintNormal(painter, ri); } break; } }
public static void GetFlash(CoreEventRecord evt, out Color evnt, out Color touched) { evnt = GetEventColor(evt.Event); touched = GetWarriorColor(evt.Touched); }
public static void GetFade(IRunningInstruction ri, CoreEventRecord evt, out Color evnt, out Color owner) { evnt = GetEventColor(evt.Event); owner = GetWarriorColor(ri.OriginalOwner); }