Exemplo n.º 1
0
        /// <summary>Función que se ejecuta al pulsar sobre el botón
        /// aceptar del diálogo. Comprueba que los datos introducidos
        /// son correctos y los aplica.</summary>
        /// <param name="o">El objeto que llama a la función.</param>
        /// <param name="args">Los argumentos que se le pasan a la
        /// función.</param>

        private void AceptarClick(object o, System.EventArgs args)
        {
            if (!rbMemoriaDef.Active)
            {
                if (!File.Exists(lblMemoriaAlt.Text))
                {
                    MessageDialog m =
                        new MessageDialog(this,
                                          Gtk.DialogFlags.Modal,
                                          Gtk.MessageType.Error,
                                          Gtk.ButtonsType.Close,
                                          Ventana.GetText("D_Conf_ErrorMemNoExiste"));
                    m.Run();
                    m.Hide();
                    return;
                }
                // comprobar que el fichero contiene texto correcto...
                try
                { MemoriaControl.CreateFromString(
                      Fichero.CargarTexto(lblMemoriaAlt.Text)); }
                catch (Exception)
                {
                    Hilo.Sleep(250);
                    MessageDialog m2 =
                        new MessageDialog(this,
                                          Gtk.DialogFlags.Modal,
                                          Gtk.MessageType.Error,
                                          Gtk.ButtonsType.Close,
                                          Ventana.GetText("D_Conf_ErrorMem"));
                    m2.Run();
                    m2.Hide();
                    return;
                }
            }

            Opciones opc = Opciones.GetInstance();

            opc.SetMostrarAdvertencias(cbAdvertencias.Active);
            opc.SetTSubciclo(sbTiempo.ValueAsInt);
            opc.SetUsarMemoriaDefecto(rbMemoriaDef.Active);
            opc.SetMemoriaAlternativa(lblMemoriaAlt.Text);
            opc.Guardar();

            this.HideAll();
        }
Exemplo n.º 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();
        }