MANUAL DE USUARIO DEL SIMULADOR DE SIMPLEZ
Notas:
1. PRESENTACIÓN
La ventana principal del simulador y desde la cual se puede acceder a toda su funcionalidad se muestra en la imagen.

De arriba a abajo se pueden ver los siguientes campos:
Barra de Menús
Contiene tres menús desplegables:
Barras de Control
Hay dos barras desde las que podemos controlar la simulación y seleccionar otros módulos (ruta de datos, cronogramas y pantalla y teclado). Estas barras de control se pueden desglosar del resto
de la ventana pinchando en la zona punteada de las mismas y
arrastrándolas fuera. Para devolverlas a su
sitio basta con arrastrarlas de nuevo a donde estaban o cerrar
las ventanas que las contienen. Esta posibilidad de desglose resulta especialmente útil cuando se trabaja con las ventanas de la Ruta de Datos o la de Cronogramas, porque permite gestionar la ejecución del programa sin necesidad de tener la ventana principal abierta.
Área de Información de la simulación
Contiene información sobre el estado de ejecución de la máquina, y da la posibilidad de modificarlo. Se compone de los siguientes campos:
Como se puede observar, estos dos últimos campos muestran el contenido de la memoria, pero desde puntos de vista diferentes. La tabla de Programa (es decir, asociada a la ejecución del programa) muestra en todo momento la zona de la memoria que contiene la instrucción en curso, interpretándola como una serie de instrucciones. La Tabla de Memoria está pensada para que el usuario visualice la zona de datos sobre la que opera el programa, de ahí que su información se muestre en decimal y su posición pueda ser seleccionada por el usuario.
Área de Monitorización
Tiene dos solapas. La correspondiente a Mensajes de Simplez mostrará mensajes relacionados con la ejecución, que sobre todo tendrá sentido para la Ruta de Datos. En la solapa de mensajes de error se mostrarán los motivos de operaciones fallidas de edición, carga de ficheros, etc., como parte complementaria a los diálogos modales.
2. INTRODUCCIÓN DE UN PROGRAMA
Tenemos varias formas de introducir un programa en memoria. La más potente es la utilización del Editor de Programas (desarrollado porFrancisco Javier Rodríguez) accesible a través del menú Herramientas, en la Barra de Menús. Este editor genera un fichero de extensión .lns, el cual se puede cargar en memoria con la opción "Abrir fichero de código" del menú Archivo.
Otra posibilidad es cargar un volcado de memoria de un fichero con extensión .vms utilizando la entrada "Cargar Memoria desde Fichero" del menú de Archivo, o pulsar la secuencia CONTROL M. Esta opción como las restantes de este menu se explican más adelante en un apartado dedicado al menú de Archivo.
Una tercera forma de introducir un programa es a través de las tablas de Memoria. El inconveniente de este método es que necesitamos conocer desde el principio la disposición que tendrá la memoria. La ventaja es que se trata de una manera muy sencilla e intuitiva de introducir los datos. Supongamos que queremos introducir el ejemplo de la página 59 del libro del curso que suma el contenido de las posiciones de memoria 10 y 11 y lo almacena en la posición 12:
|
Dirección MP |
Contenido |
Contenido |
Comentarios |
|---|---|---|---|
(decimal) |
(octal) |
(nemónico) |
|
----------- |
--------- |
---------- |
------------------- |
[0] |
1012 |
LD /10 |
; carga el primer número |
[1] |
2013 |
ADD /11 |
; le suma el segundo |
[2] |
0014 |
ST /12 |
; almacena el resultado |
[3] |
7000 |
HALT |
Como muestra la figura pinchando con el ratón una determinada posición de memoria podemos editar su contenido.
Únicamente hay que tener en cuenta el formato de la
columna en cuestión.

Supongamos que para introducir la primera instrucción utilizamos el formato octal. Entonces pincharíamos en la primera celda de la columna "Contenido" de la tabla de Programa. Una vez introducido el valor 1012 podemos pinchar con el ratón fuera para desactivar la edición, o pulsar Enter con lo que pasaríamos a editar la siguiente posición de memoria. Si el formato del número introducido es incorrecto, aparecerá un diálogo modal avisando de este hecho y se recuperará el valor que originariamente contenía dicha posición.
Para introdudir la siguiente instrucción utilizaremos el código nemónico. Para lo que pinchamos con el ratón en la celda correspondiente de la columna "Instrucción" de la tabla de Programa e introducimos la cadena "add /11" y pulsamos Enter. Las instrucciones se pueden introducir tanto en mayúscula como en minúsculas, pero el formato debe ser el explicado en el libro del curso.
Para las dos siguientes instrucciones podemos seguir cualquiera de los dos métodos anteriores.
Por último para introducir los datos a sumar en las posiciones [10] y [11] podemos hacerlo a través de la tabla de Memoria utilizando el formato decimal. Supongamos que los valores a sumar son el 3 y el 8, así que pulsaríamos respectivamente en las posiciones de memoria [10] y [11] de la columna "Contenido" de la Tabla de Memoria.
Como se habrá podido observar al introducir valores en una celda determinada. las celdas homólogas de las
columnas de ambas tablas cambian también su contenido
adecuándolo al nuevo valor introducido. El contenido final
de la memoria sería el siguiente:

Vemos que las posiciones [10] y [11] de la columna "Instrucción" de la tabla de Programa contienen los valores "ST /3" y "ST/8", que son los códigos nemónicos que se corresponderían con los valores que contienen dichas posiciones. Esto es debido a que esta columna siempre interpreta el contenido de la memoria como instrucciones de Simplez. Por tanto hay que tener claro qué zonas de memoria contienen datos y cuáles código. De hecho una posición de memoria puede ser tanto uno como otro según se acceda a ella. Si el sistema accede a ella buscando la siguiente instrucción a ejecutar no hay duda que se trata de código, y si en cambio lo hace porque su contenido se va a sumar con otro operando estamos hablando de datos.
La edición sólo es posible si no estamos en ejecución.
3. EJECUCIÓN DE UN PROGRAMA
Una vez cargado un programa en memoria podemos comenzar con su simulación. Lo primero de todo es seleccionar un modo de ejecución. Pinchando en el desplegable de la barra de herramientas podemos ver que los tres modos de ejecución disponibles son:
Paso a Paso. Se ejecuta una instrucción y se detiene la simulación.
Continuo. Se ejecuta instrucción a instrucción hasta encontrar un halt.
Continuo hasta. Se ejecutan seguidas el número de instrucciones indicadas en el cuadro adyacente, siempre y cuando no haya un halt entre ellas.
En el último modo si detenemos la ejecución y luego la reanudamos, volverán a contarse de cero las instrucciones ejecutadas hasta ese momento.
Los botones que controlan la ejecución del programa muestran los símbolos utilizados en los aparatos de audio: el rectangular detiene la ejecución, la flecha a la derecha la inicia, y la doble flecha a la izquierda deshace la ejecución de la última instrucción.
El resultado final de ejecutar el programa de ejemplo expuesto en el punto anterior sería el indicado en la figura:

Lo único a resaltar es que el área que muestra el número de instrucciones ejecutadas hasta el momento contiene un cero ya que la última instrucción ha sido HALT.
4. ENSAMBLADOR DE SÍMPLEZ
Los programas para Símplez se escriben normalmente en lenguaje ensamblador. Pero para que Símplez pueda ejecutarlos, tienen que ser traducidos a binario (cfr. tema 3 del libro). Esto se hace con el ensamblador de Símplez:

El ensamblador incluye un área de edición donde se escriben los programas y otra donde aparecerán mensajes o resultados de las acciones que se soliciten. El tamaño de estas dos zonas se puede cambiar en cualquier momento.
Las acciones en el ensamblador se hacen a través de los botones de la barra de herramientas:
Los ficheros de texto que se escriben con el editor tienen que llevar la extensión ".sim".
Lo primero que hay que hacer una vez que se ha escrito el programa es ensamblarlo. Al hacer esto se generan dos ficheros con el mismo nombre que el fichero que se ha escrito con el editor pero con distinta extensión. Uno es un fichero de texto donde se añade a lo escrito la traducción a octal del programa y las posiciones de memoria que va a ocupar cada instrucción o seudoinstrucción; con extensión "ens". El otro es el fichero objeto, con una estructura muy parecida a la descrita en el tema 7 del libro para Algorítmez; es binario y tiene extensión ".obs". Si el programa tiene algún error, el ensamblador lo indicará en la zona de mensajes y no se generarán los ficheros.
Una vez ensamblado el programa hay que montarlo, generando un fichero ".lns" que es lo que se puede cargar en la memoria de Símplez con el simulador.
APÉNDICES
A1. REQUISITOS PREVIOS
Como requisito previo a la instalación y utilización del simulador es necesario tener el JDK 1.3, que se puede descargar de http://java.sun.com/j2se/1.3/ (esto puede llevar bastante tiempo: ocupa más de 40 MB la versión para Windows y más de 20 MB la versión para Linux) y se instala muy fácilmente siguiendo las instrucciones de esas páginas (Windows o Linux).
Una vez instalado el JDK tendremos un directorio:
c:\jdk1.3.1_02\bin\
en el caso de Windows, o:
/usr/local/jdk1.3.1_02/bin/
en el caso de Unix/Linux (suponiendo que el binario descargado se ha ejecutado desde /usr/local/).
Las órdenes que necesitamos (jar y java) deberán ir precedidas de esos nombres de directorios, o bien los nombres pueden añadirse a la variable de entorno PATH
(Nota: La versión 1.4 está ya disponible).
A2. INSTALACIÓN
Todos los ficheros que forman el simulador, incluidas las imágenes, están empaquetados en un solo archivo, simulador.jar. Lo primero que hay que hacer es desempaquetar las imágenes con:
jar xvf simulador.jar Imagenes
Tras esto tendremos el fichero simulador.jar y el directorio Imagenes, ambos necesarios.
Para arrancar el simulador ejecutaremos:
java -jar simulador.jar