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(); }
/// <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")); } }
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(); }