public void StartLogging(ULAStateElements stateElements, ULA.LifecycleEventType[] eventTypes) { stateElementsToLog = stateElements; // Write header line : title for each column log.Append("event type"); log.Append(';'); // Pixel clock and master counters if (stateElementsToLog.HasFlag(ULAStateElements.MasterCounters)) { log.Append("pixel clock"); log.Append(';'); log.Append("line"); log.Append(';'); log.Append("column"); log.Append(';'); } // CPU clock and interrupt if (stateElementsToLog.HasFlag(ULAStateElements.CPUClock)) { log.Append("CPU clock"); log.Append(';'); log.Append("HaltCpuClock"); log.Append(';'); log.Append("CPU interrupt"); log.Append(';'); } // ULA data input / output if (stateElementsToLog.HasFlag(ULAStateElements.DataIO)) { log.Append("Address bus"); log.Append(';'); log.Append("Data bus"); log.Append(';'); log.Append("VideoMemAccessTimeFrame"); log.Append(';'); log.Append("CpuIORQ"); log.Append(';'); log.Append("CpuWR"); log.Append(';'); log.Append("CpuRD"); log.Append(';'); log.Append("VidMemREQ"); log.Append(';'); log.Append("VidMemRD"); log.Append(';'); } // Video output if (stateElementsToLog.HasFlag(ULAStateElements.VideoOutput)) { log.Append("ColorSignal"); log.Append(';'); log.Append("HSync"); log.Append(';'); log.Append("VSync"); log.Append(';'); } // Internal video generator if (stateElementsToLog.HasFlag(ULAStateElements.VideoRegisters)) { log.Append("GenerateBorder"); log.Append(';'); log.Append("BorderColorRegister"); log.Append(';'); log.Append("DisplayAddress"); log.Append(';'); log.Append("DisplayLatch"); log.Append(';'); log.Append("DisplayRegister"); log.Append(';'); log.Append("DisplayPixels"); log.Append(';'); log.Append("AttributeAddress"); log.Append(';'); log.Append("AttributeLatch"); log.Append(';'); log.Append("AttributeRegister"); log.Append(';'); log.Append("Frame"); log.Append(';'); log.Append("FlashClock"); log.Append(';'); } log.AppendLine(); eventTypesToLog = eventTypes; foreach (ULA.LifecycleEventType eventType in eventTypesToLog) { switch (eventType) { case ULA.LifecycleEventType.ClockCycle: ula.ClockCycle += LogULAState; break; } } }
public void StartLogging(ULAStateElements stateElements, ULA.LifecycleEventType[] eventTypes) { stateElementsToLog = stateElements; // Write header line : title for each column log.Append("event type"); log.Append(';'); // Pixel clock and master counters if(stateElementsToLog.HasFlag(ULAStateElements.MasterCounters)) { log.Append("pixel clock"); log.Append(';'); log.Append("line"); log.Append(';'); log.Append("column"); log.Append(';'); } // CPU clock and interrupt if (stateElementsToLog.HasFlag(ULAStateElements.CPUClock)) { log.Append("CPU clock"); log.Append(';'); log.Append("HaltCpuClock"); log.Append(';'); log.Append("CPU interrupt"); log.Append(';'); } // ULA data input / output if (stateElementsToLog.HasFlag(ULAStateElements.DataIO)) { log.Append("Address bus"); log.Append(';'); log.Append("Data bus"); log.Append(';'); log.Append("VideoMemAccessTimeFrame"); log.Append(';'); log.Append("CpuIORQ"); log.Append(';'); log.Append("CpuWR"); log.Append(';'); log.Append("CpuRD"); log.Append(';'); log.Append("VidMemREQ"); log.Append(';'); log.Append("VidMemRD"); log.Append(';'); } // Video output if (stateElementsToLog.HasFlag(ULAStateElements.VideoOutput)) { log.Append("ColorSignal"); log.Append(';'); log.Append("HSync"); log.Append(';'); log.Append("VSync"); log.Append(';'); } // Internal video generator if (stateElementsToLog.HasFlag(ULAStateElements.VideoRegisters)) { log.Append("GenerateBorder"); log.Append(';'); log.Append("BorderColorRegister"); log.Append(';'); log.Append("DisplayAddress"); log.Append(';'); log.Append("DisplayLatch"); log.Append(';'); log.Append("DisplayRegister"); log.Append(';'); log.Append("DisplayPixels"); log.Append(';'); log.Append("AttributeAddress"); log.Append(';'); log.Append("AttributeLatch"); log.Append(';'); log.Append("AttributeRegister"); log.Append(';'); log.Append("Frame"); log.Append(';'); log.Append("FlashClock"); log.Append(';'); } log.AppendLine(); eventTypesToLog = eventTypes; foreach (ULA.LifecycleEventType eventType in eventTypesToLog) { switch (eventType) { case ULA.LifecycleEventType.ClockCycle: ula.ClockCycle += LogULAState; break; } } }