Example #1
0
        /// <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;
        }
Example #2
0
        /// <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();
        }