/// <summary>Crea una instancia de la clase.</summary> /// <param name="mic">El simulador de la ruta de datos a /// utilizar.</param> public HiloEjecucion(SecuenciadorMicroprograma mic) : base() { this.mic = mic; }
/// <summary>Ensambla el código y, si no hay errores, comienza /// la simulación.</summary> private void VentanaEjecutar() { //Compilamos btnEjecutar.Sensitive = false; itemEjecutar.Sensitive = false; EnsambladorSimple2 e = new EnsambladorSimple2(); short[] ens = null; try { ArrayList codigoLimpio = e.PrimeraPasada(textoCodigo.Text); ens = e.Ensamblar(codigoLimpio); String res = ""; for (int i = 0; i < ens.Length; i++) { res += Conversiones. ToHexString(ens[i]) + "(" + (String)codigoLimpio[i] + ")\n"; } textoResultado.Text = res; textoErrores.Text = ""; String advert = e.GetAdvertencias(); if ((advert != "") && (Opciones.GetInstance().GetMostrarAdvertencias())) { textoErrores.Text += "\n" + GetText("Ens_Advertencias") + "\n\n" + e.GetAdvertencias(); } } catch (ErrorCodigoException ex) { textoErrores.Text = GetText("Ens_Errores") + "\n" + ex.Message; textoResultado.Text = ""; String advert = e.GetAdvertencias(); if ((advert != "") && (Opciones.GetInstance().GetMostrarAdvertencias())) { textoErrores.Text += " \n" + GetText("Ens_Advertencias") + "\n\n" + advert; } btnEjecutar.Sensitive = true; itemEjecutar.Sensitive = true; PonerMensajeStatusbar(GetText("Ventana_Error_Ensamblar")); notebook.Page = 0; return; } //Si la compilación ha salido bien, entondes ejecutamos. MemoriaControl mc = new MemoriaControl(); if (!Opciones.GetInstance().GetUsarMemoriaDefecto()) { try { mc = MemoriaControl.CreateFromString( Fichero.CargarTexto( Opciones.GetInstance().GetMemoriaAlternativa() ) ); } catch (Exception) { //Hilo.Sleep(50); } } SecuenciadorMicroprograma mic = new SecuenciadorMicroprograma(ens, mc); mic.AddMemoryChangeListener(panelMemoria); mic.AddRegisterChangeListener(panelRegistros); RepresentacionRDD repRDD = new RepresentacionRDD(dArea); mic.SetRepresentacionRDD(repRDD); mic.AddRegisterChangeListener(repRDD); notebook.Page = 2; //Hilo.Sleep (100); PonerMensajeStatusbar(GetText("Ventana_Simulacion_Curso")); hiloEjecucion = new HiloEjecucion(mic); hiloEjecucion.SetTSubciclo(Opciones.GetInstance().GetTSubciclo()); hiloEjecucion.Start(); Hilo hiloespera = new HiloEspera(); hiloespera.Start(); }