示例#1
0
        public MainForm()
        {
            InitializeComponent();

            // Current command
            textLabels_ = new Label[] {
                cc0TextLabel,
                cc1TextLabel,
                cc2TextLabel,
                cc3TextLabel,
                cc4TextLabel,
                cc5TextLabel,
                cc6TextLabel,
                cc7TextLabel,
            };
            textBoxes_ = new TextBox[] {
                cc0Text,
                cc1Text,
                cc2Text,
                cc3Text,
                cc4Text,
                cc5Text,
                cc6Text,
                cc7Text,
                cc8Text,
                cc9Text,
            };

            // Common register
            regLabels_ = new Label[] {
                r0Label,
                r1Label,
                r2Label,
                r3Label,
                r4Label,
                r5Label,
                r6Label,
                r7Label,
                r8Label,
                r9Label,
                r10Label,
                r11Label,
                r12Label,
                r13Label,
                r14Label,
                r15Label,
            };
            regTexts_ = new TextBox[] {
                r0Text,
                r1Text,
                r2Text,
                r3Text,
                r4Text,
                r5Text,
                r6Text,
                r7Text,
                r8Text,
                r9Text,
                r10Text,
                r11Text,
                r12Text,
                r13Text,
                r14Text,
                r15Text,
            };
            for (int i = 0; i < Emulator.GetRegSize(); ++i)
            {
                regLabels_[i].Text = $"R{i:d}";
            }

            // Command list
            Helpers.DoubleBuffered(commandList, true);
            commandsListWidths_ = new int[] { 0, 47, 0, 0, 525 };

            // Info lists
            listViewes_ = new Dictionary <WordType, ListView> {
                { WordType.CA, caListView },
                { WordType.I68, i68ListView },
                { WordType.I02, i02ListView },
                { WordType.I35, i35ListView },
                { WordType.PT, ptListView },
                { WordType.PS, psListView },
                { WordType.DEVICE, deviceListView },
            };
            foreach (KeyValuePair <WordType, ListView> listView in listViewes_)
            {
                Helpers.DoubleBuffered(listView.Value, true);
                listView.Value.Items.Clear();
                string[][] lists = Command.GetItems(listView.Key);
                foreach (string[] list in lists)
                {
                    listView.Value.Items.Add(new ListViewItem(list));
                }
            }

            // Leds for fun
            easterEggMask_ = 0;
            leds_          = new PictureBox[] {
                led0,
                led1,
                led2,
                led3,
            };
            ledClicked_ = new bool[] { false, false, false, false };

            // Memory debug form
            stickMemoryForm_ = true;
            memoryForm_      = new MemoryForm(this);
            Helpers.DoubleBuffered(memoryForm_.memoryListView, true);
            for (int i = 0; i < Emulator.GetMemorySize(); ++i)
            {
                memoryForm_.memoryListView.Items.Add(new ListViewItem(new string[] { "", $"0x{i:X2}", "0000 0000", "0x00" }));
            }

            // Stack debug form
            stickStackForm_ = true;
            stackForm_      = new StackForm(this);
            Helpers.DoubleBuffered(stackForm_.stackListView, true);
            for (int i = 0; i < Emulator.GetStackSize(); ++i)
            {
                stackForm_.stackListView.Items.Add(new ListViewItem(new string[] { "", $"0x{i:X}", "0x000" }));
            }

            // Form with program editing
            stickCallsForm_ = false;
            callsForm_      = new CallsForm(this);
            Helpers.DoubleBuffered(callsForm_.callList, true);

            // Form with scheme of ALU
            schemeForm_ = new SchemeForm();

            // Form with extenser device settings
            extenderSettingsForm_ = new ExtenderSettingsForm();

            portExtender_ = new PortExtender(DeviceRemovedHandler);

            // Form with help
            helpForm_ = new HelpForm();
            UpdateEggsCounter_();

            // Reset to initial values
            Reset_();
        }