Example #1
0
        public RexBoardForm(string[] args)
        {
            InitializeComponent();

            //setup arguments
            mArgs = args;

            //Set up form contents
            ResetToolStripStatusLabel();

            //Set up all REX and WRAMP hardware
            mRexBoard = rexWidget1.mBoard;

            //Load WRAMPmon into ROM
            Stream wmon = new MemoryStream(ASCIIEncoding.ASCII.GetBytes(Resources.monitor_srec));

            rexWidget1.LoadSrec(wmon);
            wmon.Close();

            //Set up the worker thread
            mWorkerEnabler = new ManualResetEvent(true); // CPU begins in a running state, since the reset is finished
            mWorker        = new Thread(new ThreadStart(Worker));
            mRexBoard.SetTickEnabler(mWorkerEnabler);

            //Set up all forms
            mSubforms       = new List <Form>();
            mSerialForm1    = new BasicSerialPortForm(mRexBoard.Serial1, this);
            mSerialForm2    = new BasicSerialPortForm(mRexBoard.Serial2, this);
            mGpRegisterForm = new RegisterForm(mRexBoard.CPU.mGpRegisters, false);
            mSpRegisterForm = new RegisterForm(mRexBoard.CPU.mSpRegisters, true);
            mRamForm        = new MemoryForm(mRexBoard.RAM);
            mRamForm.SetCpu(mRexBoard.CPU);
            mInterruptButtonForm = new PeripheralMemoryForm(mRexBoard.InterruptButton);
            mSerialConfigForm1   = new PeripheralMemoryForm(mRexBoard.Serial1);
            mSerialConfigForm2   = new PeripheralMemoryForm(mRexBoard.Serial2);
            mParallelConfigForm  = new PeripheralMemoryForm(mRexBoard.Parallel);
            mTimerConfigForm     = new PeripheralMemoryForm(mRexBoard.Timer);


            //Add all forms to the list of subforms
            mSubforms.Add(mSerialForm1);
            mSubforms.Add(mSerialForm2);
            mSubforms.Add(mGpRegisterForm);
            mSubforms.Add(mSpRegisterForm);
            mSubforms.Add(mRamForm);
            mSubforms.Add(mInterruptButtonForm);
            mSubforms.Add(mSerialConfigForm1);
            mSubforms.Add(mSerialConfigForm2);
            mSubforms.Add(mParallelConfigForm);
            mSubforms.Add(mTimerConfigForm);

            //Wire up event handlers
            foreach (Form f in mSubforms)
            {
                f.VisibleChanged += new EventHandler(SubForm_VisibleChanged);
            }

            //Set the GUI update timer going!
            updateTimer.Start();
        }
Example #2
0
        /// <summary>
        /// Sends a file through the serial port.
        /// </summary>
        private void UploadFileWorker(object parameter)
        {
            if (mQuickLoadEnabled)
            {
                mRexBoardForm.QuickUploadSrec((string)parameter);
                foreach (char c in "load\n")
                {
                    mSerialPort.Send(c);
                    Thread.Sleep(10);
                }

                StreamReader r = new StreamReader((string)parameter);
                while (!r.EndOfStream)
                {
                    string line = r.ReadLine();
                    // Just send the start address record the slow way.
                    if (line.StartsWith("S7"))
                    {
                        foreach (char c in line)
                        {
                            mSerialPort.Send(c);
                            Thread.Sleep(10);
                        }
                        mSerialPort.Send('\n');
                    }
                }
                r.Close();
            }
            else
            {
                StreamReader r = new StreamReader((string)parameter);

                if (mTypeLoadAuto)
                {
                    foreach (char c in "load\n")
                    {
                        mSerialPort.Send(c);
                        Thread.Sleep(10); // give time for BASYS board to be ready to recieve
                    }
                }

                while (!r.EndOfStream)
                {
                    string line = r.ReadLine();
                    for (int i = 0; i < line.Length; i++)
                    {
                        mSerialPort.Send(line[i]);
                    }
                    mSerialPort.Send('\n');
                }
                r.Close();
            }

            if (File.Exists((parameter as string).Replace(".srec", ".map")))
            {
                MemoryForm memoryForm = (MemoryForm)mRexBoardForm.mSubforms.Find(f => f.GetType() == typeof(MemoryForm));
                memoryForm.ParseDebugMap((parameter as string).Replace(".srec", ".map"));
            }
        }
Example #3
0
        public RexBoardForm()
        {
            InitializeComponent();

            //allow drop event
            this.AllowDrop = true;

            //Set up all REX and WRAMP hardware
            mRexBoard = rexWidget1.mBoard;

            //Load WRAMPmon into ROM
            Stream wmon = new MemoryStream(ASCIIEncoding.ASCII.GetBytes(Resources.monitor_srec));

            rexWidget1.LoadSrec(wmon);
            wmon.Close();

            //Set up the worker thread
            mWorker = new Thread(new ThreadStart(Worker));

            //Set up all forms
            mSubforms       = new List <Form>();
            mSerialForm1    = new BasicSerialPortForm(mRexBoard.Serial1);
            mSerialForm2    = new BasicSerialPortForm(mRexBoard.Serial2);
            mGpRegisterForm = new RegisterForm(mRexBoard.CPU.mGpRegisters, false);
            mSpRegisterForm = new RegisterForm(mRexBoard.CPU.mSpRegisters, true);
            mRamForm        = new MemoryForm(mRexBoard.RAM);
            mRamForm.SetCpu(mRexBoard.CPU);
            mInterruptButtonForm = new PeripheralMemoryForm(mRexBoard.InterruptButton);
            mSerialConfigForm1   = new PeripheralMemoryForm(mRexBoard.Serial1);
            mSerialConfigForm2   = new PeripheralMemoryForm(mRexBoard.Serial2);
            mParallelConfigForm  = new PeripheralMemoryForm(mRexBoard.Parallel);
            mTimerConfigForm     = new PeripheralMemoryForm(mRexBoard.Timer);


            //Add all forms to the list of subforms
            mSubforms.Add(mSerialForm1);
            mSubforms.Add(mSerialForm2);
            mSubforms.Add(mGpRegisterForm);
            mSubforms.Add(mSpRegisterForm);
            mSubforms.Add(mRamForm);
            mSubforms.Add(mInterruptButtonForm);
            mSubforms.Add(mSerialConfigForm1);
            mSubforms.Add(mSerialConfigForm2);
            mSubforms.Add(mParallelConfigForm);
            mSubforms.Add(mTimerConfigForm);

            //Wire up event handlers
            foreach (Form f in mSubforms)
            {
                f.VisibleChanged += new EventHandler(SubForm_VisibleChanged);
            }

            //Set the GUI update timer going!
            updateTimer.Start();
        }