public frmMemoryView(ICpu cpu) { InitializeComponent(); pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel); var graphicsPainter = new GraphicsPainter(pictureBox1, Memory, null, 0, 25) { UseFixedScale = true, }; this.cpu = cpu; ReadAddrFromTextBox(); RefreshTimer = new Timer(); RefreshTimer.Interval = 10; //ms RefreshTimer.Tick += (v, a) => RefreshScreen(); RefreshTimer.Start(); CursorTimer = new Timer(); CursorTimer.Interval = 500; //ms CursorTimer.Tick += (v, a) => cursorBlink = !cursorBlink; CursorTimer.Start(); ClearScreen(); }
internal void Start() { string fileName; if (File.Exists(romFilename)) { fileName = romFilename; } else { fileName = PlaceHolderRomFilename; } _graphicsPainter = new GraphicsPainter(_view.RenderControl, _machine.VideoMemory.Content, _machine.OutputLatch, 0, 33); var program = fileIo.ReadFile(fileName); _machine.Setup(program); if (interruptTimer == null) { var timer = new Timer { Interval = 10 }; timer.Tick += (v, a) => _machine.IntSource.IsEnabled = true; timer.Start(); interruptTimer = timer; } if (watchTimer == null) { watchTimer = new Timer { Interval = 500 }; watchTimer.Tick += (s, a) => { var stats = new MachineStats() { InstructionsPerSecond = (int)(_machine.InstructionCount / (watchTimer.Interval / 1000.0)), FramesPerSecond = _graphicsPainter.CurrentFps }; _machine.InstructionCount = 0; _view.UpdateStats(stats); }; watchTimer.Start(); } if (debugTimer == null) { debugTimer = new Timer { Interval = 500 }; debugTimer.Tick += (s, a) => { _view.UpdateMCStart(StartMcProgram); _view.UpdateMcEnd(EndMCProgram); }; debugTimer.Start(); } }