Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
            }
        }