static void Main(string[] args) { if (args.Length == 0) { PrintUsage(); Environment.Exit(1); } var keyboardState = new KeyboardState(); var displayState = new DisplayState(); IState state = ImmutableState.ReadFromFile(args[0]); state = state.Map((ushort)KeyboardState.BufferAddress, (ushort)(KeyboardState.BufferAddress + KeyboardState.BufferLength + 1), keyboardState); state = state.Map((ushort)DisplayState.DisplayAddress, (ushort)(DisplayState.DisplayAddress + DisplayState.Width * DisplayState.Height), displayState); _cpu = new Dcpu(state); var mainForm = new MainForm(_cpu, displayState); mainForm.FormClosed += new FormClosedEventHandler( (obj, arg) => _cpu.Stop()); Application.EnableVisualStyles(); Application.Run(mainForm); }
public MainForm(Dcpu dcpu, DisplayState initialDisplayState) { InitializeComponent(); _dcpu = dcpu; _savedDcpuStates = new List<IState>(NumSavedDcpuStates); _dcpuStateTimer = new Timer(); _dcpuStateTimer.Tick += HandleDcpuStateTimerTick; _dcpuStateTimer.Interval = DcpuSavedStateInterval; _stopStartBtn.Text = "Start"; _terminalPanel.Dcpu = dcpu; _terminalPanel.BindTo(initialDisplayState); _timeTrackBar.Maximum = NumSavedDcpuStates - 1; _timeTrackBar.Value = NumSavedDcpuStates - 1; }