private void siguientePasoToolStripMenuItem_Click(object sender, EventArgs e) { if (statusCPU == CPU.EjecucionStatus.HALT) { MessageBox.Show("La ejecución del programa ha finalizado, debe reiniciarlo para continuar"); } else { //TODO: hay que hacer un try catch try { tipoEjecucion = TipoEjecucion.PasoPaso; machine.EjecutarInstruccion(); //Desmarcar la línea anterior y marcar la actual; DesmarcarLineaAnterior(); if (statusCPU == CPU.EjecucionStatus.OK && machine.IMem.Instrucciones.ContainsKey(machine.Cpu.Registros[CPU.PC_REG])) { lineaOperacionAterior = machine.IMem.Instrucciones[machine.Cpu.Registros[CPU.PC_REG]].Opcode.left - 1; ResaltarFondoActivarLinea(lineaOperacionAterior, Color.CadetBlue); } } catch (Exception ex) { statusCPU = CPU.EjecucionStatus.HALT; DesmarcarLineaAnterior(); toggleMenu(); MessageBox.Show(ex.Message, "El programa ha generado una excepción y debe detenerse", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public void ActivarDepuracion(int linea) { tipoEjecucion = TipoEjecucion.PasoPaso; ActualizarRegistros(); ActualizarMemoriaDatos(MaquinaTiny.RAM_SIZE); lineaOperacionAterior = linea - 1; ResaltarFondoActivarLinea(lineaOperacionAterior, Color.CadetBlue); toggleMenu(); }
private void iniciarToolStripMenuItem_Click(object sender, EventArgs e) { try { statusCPU = CPU.EjecucionStatus.HALT; consola.Text = ""; if (archivoActual.Equals(machine.ProgramaActual)) { machine.ResetSoftware(); } else { machine.cargarPrograma(archivoActual); } LlenarMemoriaDatos(); ActualizarRegistros(); statusCPU = CPU.EjecucionStatus.OK; tipoEjecucion = TipoEjecucion.Continua; } catch (Exception ex) { StringBuilder memoryText = new StringBuilder(); foreach (string error in util.Utilidades.errorList) { memoryText.AppendLine(error); } memoryText.AppendLine(); memoryText.AppendLine("Se encontraron errores en el código"); consola.Text = memoryText.ToString(); } try { if (statusCPU == CPU.EjecucionStatus.OK) { machine.EjecutarHastaFin(puntosInterrupcion); } }catch (Exception ex) { statusCPU = CPU.EjecucionStatus.HALT; toggleMenu(); MessageBox.Show(ex.Message, "El programa ha generado una excepción y debe detenerse", MessageBoxButtons.OK, MessageBoxIcon.Error); } }