★ APPLICATIONS ★ PROGRAMMATION ★ FORTH COMPILER (ACE SOFTWARE)|Amstrad Semanal)) ★![]() |
| Forth Compiler (ACE Software) | Applications Programmation |
Nos encontramos ante el gran desconocido de los lenguajes de programación, ni más ni menos que el Forth, un lenguaje que se sitúa en una posición intermedia entre los lenguajes de alto nivel y el ingrato, pero superrápido, Código Máquina. De carácter indiscutiblemente matemático, el Forth fue creado en 1970 por Charles Moore, programador en un observatorio astronómico, en el cual fue utilizado para^el control del radiotelescopio del mismo, operación que ha de ser realizada exclusivamente en tiempo real. Su situación intermedia entre los lenguajes de alto y bajo nivel le hacen poseedor de unas prestaciones realmente brillantes, a la vez que su escasa ocupación de memoria le convierten en especialmente apropiado para el uso en microordenadores. El Forth estádefinido como un intérprete, pero con la característica de ser mucho más rápido que los demás lenguajes de este tipo. Esto se debe a su especial forma de tratar las sentencias, incluyendo un sistema de dos niveles distintos de interpretación: uno de palabras y otro de direcciones. El Compilador A pesar de ser el Forth un lenguaje intérprete por definición, el Forth Compiler de ACE, incluye en el mismo programa las posibilidades de trabajar en modo intérprete (directo) o compilador, con lo cual podemos beneficiarnos ampliamente de las características de cada uno de ellos, utilizando en cada momento el más apropiado. El modo directo es ideal para las primeras etapas de aprendizaje, en las que podemos presenciar instantáneamente el funcionamiento de nuestras líneas sm tener que esperar a que se realice la compilación de largos trozos de programa. La asombrosa sencillez de este lenguaje, hace Á que su extensión sea solamente de 13 K, con lo cual podemos tener un amplio margen de memoria disponible para el funcionamiento de nuestros programas. El editor Como todo programa realizado para microordenador, el editor y el compilador se encuentran tundidos en la misma pieza de software, con lo cual se evitan las repetidas cargas de disco para compilar y posterior corrección de errores, si los hay. Método éste, diametralmente opuesto al utilizado en ordenadores con mayor cantidad de memoria, en los cuales, debido a la gran extensión de los compiladores y los editores utilizados, éstos no pueden coexistir simultáneamente. Nuestro éditor funciona de una, forma similar al Basic, utilizando un métoda rápido y eficiente para efectuar las operaciones más comunes en la edición y escritura de programas. En la parte baja de la pantalla, se encuentra la línea de comandos, en la que podemos observar la tecla de función que está asignada a cada operación elemental del editor. El repertorio de comandos se compone de tres series, cada una de las cuales se ubica en las teclas de función de la F0 a la F6, cada pulsación de F0 nos hace pasar a la serie siguiente, quedando las teclas de función dormidas con los nuevos comandos. El método constituye un gran ahorro de tiempo, evitando la repetición del tecleo de molestas sentencias del tipo LIST, DELETE , RENUM , etc. Simplemente hemos de tocar la tecla ae función de la línea de comandos curso y la acción será ejecutada. Los comandos de tratamiento de texto son los siguientes:
Sintaxis y modo directo La ejecución de líneas en modo directo se realiza anteponiendo a la misma el símbolo #. Con esta sencilla operación podemos ejecutar cualquier línea por separado para realizar pruebas antes de la compilación, o bien, para comprobar el resultado de un determinado procedimiento después de la misma. De igual forma, podemos trabajar en modo intérprete con sólo añadir en la parte izquierda de cada línea el mencionado símbolo. Las definiciones de este lenguaje, obligatoriamente, han de comenzar por seguidas del nombre asignado al procedimiento. El Forth utiliza como delimitador el espacio, por lo que las distintas definiciones que integran una palabra han de encontrarse separadas por éstos. El compilador está dotado únicamente de aritmética entera, permitiendo el manejo de números de 16 bits en el rango de —32768 a 32767 para números con signo y de 0 a 65535 en números positivos. Las cadenas alfanuméricas se almacenan con el primer carácter igual a la longitud de la misma, y tras éste, los caracteres. El número máximo de variables y matrices admitidas es de 200. Del mismo modo, el espacio reservado para palabras compiladas no puede rebasar el número de 300. El editor permite el manejo de 200 líneas de programa para su posterior compilación con RUNCOM. En caso de qué se necesitara un número superior se puede borrar el texto del editor con FIX e introducir nuevas lillas que serán compiladas a continuación de las anteriores. Comandos del compilador RUNCOM compila el código fuente almacenado en el editor. Una vez terminado el proceso de compilación, las nuevas palabras definidas forman parte del sistema. WLIST hace un listado de las palabras disponibles, tanto residentes como compiladas. VLIST da una lista de todas las variables contenidas en el sistema, así como las definidas por el usuario. FIX posibilita la compilación de nuevas líneas una vez agotada la capacidad del editor, en posteriores compilaciones, las palabras definidas anteriormente siguen estando presentes en el sistema. OBJECT permite la grabación de un programa en código binario ejecutable, conteniendo todas las definiciones compiladas. Para hacerlo funcionar desde el Basic, basta con teclear RUN “Nombre del programa”. Este no necesita la presencia del compilador para ser ejecutado y, además, permite la mezcla de programas FOR TH dentro de un programa Basic. DIRECT proporciona las direcciones de compilación de todas las palabras y variables contenidas en el texto compilado del editor. Con esto podemos utilizar desde Basic ciertas palabras definidas desde el Forth. RESET reinicializa el sistema, totalmente eliminando toda la información que pudiera tener el editor, así como todas las palabras compiladas hasta ese momento. Operadores aritméticos y lógicos El Forth utiliza en todos sus cálculos la notación polaca, en la que para sumar dos números se utiliza ‘2 3+ en vez de 2 + 3, trabajando en la misma forma en que realiza los cálculos el acumulador del ordenador. Por eso la rapidez de este lenguaje es superior a la de otros. Las operaciones permitidas por este compilador incluyen las siguientes: + suma, —diferencia, x producto, / división, MOD calcula el resto de la división, /MOD devuelve el valor de la división y el resto de la misma, ABS obtiene el valor absoluto de un número entero con signo. Todas estas operaciones se refieren a los elementos superiores de la pila del calculador, en otras palabras, el PAP. El Forth tiene la peculiaridad de poder alterar los valores de esta pila, como si de lenguaje ensamblador se tratara. Para ello facilita los siguientes comandos: SWAP intercambia el valor de los dos elementos superiores del PAP. DUP duplica el valor del elemento situado en la cima de la pila. OVER duplica el valor del segundo elemento de la pila empezando por arriba. ROT intercambia las posiciones de los tres elementos superiores del PAP. DROP elimina el elemento superior de la pila. La pila de retornos también puede ser alteradc con los siguientes operadores: > R situando el elemento superior del PAP en la pila de retornos. R > efectúa la operacióiNmversa. I indica el valor del índice atj bucle en el que se halla. J para obtener el valor del bucle extenrior. En Las compilaciones de rereacción siempre se obtiene eb la cima del PAP un 1 ó 0, dependiendo de que la comparación sea cierta o falsa. Los operadores permitidos son: < mayor que , = igual a , > menor que, < > distinro a, U < que comprueba la reacción meno quc tomando los valores del PAP como enteros sin signo. Los operadores Booleanos dan el mismo resultado, 0 ó 1 en el de PAP: AND, OR , XOR NOT. Estructuras de control La estructura de selección está representada por el siguiente formato: condición IF verdadera THEN acción ELSE acción. # 4 5 < > IF . “distintos” ELSE . “iguales” THEN CR. “correcto”. Para la estructura de repetición, el compilador utiliza el formato DO código LOOP. #100 2 DO I .. “” 4 + LOOP. LEAVE sirve para realizar la salida de un bucle DO...LOOP BEGIN condición WHILE código REPEAT ejecuta lo contenido en el párrafo while repeat mientras se cumple la condición inicial. BEGIN código condición UNTIL hace que se ejecute el código hasta que la condición especificada sea falsa. Operaciones de salida . imprime el valor situado en el PAP como entero con signo. U. imprime el valor del PAP como entero sin singo. ." imprime una cadena alfanumérica situada entre comillas. CR posiciona el cursor en la siguiente línea. EMI T imprime el carácter correspondiente al código ASCII del valor del PAP. IYPE imprime una cadena alfanumérica cuya dirección de almacenamiento está en el PAP. HEX establece el formato hexadecimal para la salida de datos. DEC números en base decimal. Operadores de entrada GET espera la pulsación de una tecla cuyo código ASCII es colocado en el PAP. KEY comprueba la pulsación de una tecla. 'UMPUT espera la entrada de una cadena alfanumérica que almacenará en el PAP. CONVERT devuelve el valor de una cadena, cuyaadirección le facilitamos. Operanones con la memoria ! colocan dos posiciones dejnemoria consecutivas un entero de 16 bits. @a lee el entro de 16 bits contenido en dos posiciones de memoria consecutivas. C! pone en memoSaun eimero de 8 bits. Ca lee el entero de 8 bits alacenado en una posición de memoria. Gráficos A diferencia de otros compiladores, que no incluyen el tratamiento de gráficos, en sus posibilidades, esta versión de Fortth permite un control total sobre ellos, implementándo con una sintaxis similar a la del Basic, con lo. cual su utilización es sencilla e inmediata. Comandos de tratamiento de gráficos: Move, Mover. Plot, Plotr, Draw, Drawr, Test , Testr , Gcursor, Gpen, Gpaper.El tratamiento del texto incluye la siguiente serie de instrucciones:Mode, Cls, Border, Ink, Pen, Paper, Flash, Inverse, Frame, Window, Stream, Locate, Cursor, Copy, Tag, Tagoff, Device, Pron, Proff.Para acabar de completar el abanico de posibilidades de este compilador, tendmos los comandos de control del sonido, con ios que podemos conseguir el sonido deseado utilizando instrucciones de síntesis propios del Locomotive Basic: ENV, ENT, SOUND. Dimenensionainiento y varios La inicialización de las variables a utilizar requiere el uso de las siguientes funciones: Var inicializa una variable entera. Char dimensiona una cadena de caracteres de longitud determinada. ” ” coloca la cadena de caracteres entre comillas en la dirección especificada. Array dimensiona matrices unidireccionales. Put almacena el valor del PAP en el elemento de la matriz especificada. Ask lee el valor de un elemento de una matriz entera depositado en el Pap. Además de las instrucciones de dimensionamientos, tenemos las de carácter vario que realizan labores bien distintas a las especificadas en los anteriores apartados, pero que son de una importancia vital a la hora de trabajar con valores aleatorios y rutinas de Código Máquina. Random inicializa la serie aleatoria con un valoi determinado. Rnd obtiene un valor aleatorio. Usr efectúa una llamada a una rutina de Código Máquina tomando los valores de los registros del sistema para actualizarlos en el regreso. ! permite la inclusión de Código Máquina en el código compilado en forma de cadena hexadecimal. #: 11009FC59BBCC9 |
| ![]() |
|