public ControlForm(PIC.PIC _pic)
        {
            InitializeComponent();
            this.pic = _pic;
            pic.registerExecutionStateListener(onPicExecutionChange);
            Disposed += delegate { pic.unregisterExecutionStateListener(onPicExecutionChange); };

            frequencyTextBox.Text = "4";
            frequencyUnitBox.SelectedIndex = 2;
        }
        public SpecialValueForm(PIC.PIC _pic)
        {
            InitializeComponent();

            pic = _pic;
            stackBoxes = new TextBox[PIC.Data.OperationStack.STACK_SIZE];
            pic.getOperationStack().registerStackUpdateListener(onStackUpdate);
            pic.registerExecutedCyclesListener(onExecutedCyclesUpdate);

            Disposed += delegate {
                pic.getOperationStack().unregisterStackUpdateListener(onStackUpdate);
                pic.unregisterExecutedCyclesListener(onExecutedCyclesUpdate);
            };

            createValueDisplays();
            Paint += drawVerticalLine;
        }
 /// <summary>
 /// Instances a new PIC
 /// </summary>
 /// <param name="file"></param>
 private void initNewPIC(string file)
 {
     // Initialize PIC
     this.pic = new PIC.PIC();
     pic.initProgramMemory(file);
 }