APPLICATIONSPROGRAMMATION ★ FORTH COMPILER (ACE SOFTWARE)|Amstrad Semanal)) ★

Forth Compiler (ACE Software)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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.

Cliquez sur l'image pour l'agrandir

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:

  • CLS Borra la pantalla de trabajo.
  • LIST Lista el programa desde la primera línea.
  • LIST n Lista el programa desde la línea especificada.
  • EDIT n Edita la línea marcada.
  • AUTO Inserta las líneas automáticamente empezando por la numero 10 con incrementos de 10.
  • AUTO n m Inserta líneas comenzando en la numeró N con incrementos de M.
  • RENUM Renunera el conjunto delineas comenzando por la nùmero 10.
  • DELETE n Borra la línea especificada.
  • DELETE n m Borra el conjunto de líneas comprendido entre N y M.
  • SAVE Graba el fichero de texto.
  • LOAD Carga un fichero de texto.
  • PRON Activa la salida por impresora.
  • CONTROL + W Actualiza la última entrada en modo directo.
  • ESC Borra la línea actual.
  • WARM Restablece la ventana de trabajo.
  • MEMORY Indica la cantidad de memoria disponible.
Un completo conjunto de comandos que permiten realizar todos los trabajos necesarios con las líneas que estamos manejando y con la indiscutible ventaja de que no hemos de escribirlos, sólo pulsar la adecuada tecla de función.

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
LD DE, 9F00H
CALL 0BC9BH
RET

Clear inicializa el puntero de la pila en su posición de partida.

Abort suspende la ejecución del programa, realizando una salida al compilador o al programa que lo llamó.

Las variables AF, BC, DE, HL, IX, IY hacen referencia a los respectivos registros del Z80 que serán inicializados con los valores específicos antes de realizar una llamada al Código Máquina mediante la instrucción USR.

Sprites contiene la dirección donde se encuentra un archivo de sprites en memoria.

Pad contiene información temporal almacenada en la zona de trabajo antes de ser procesada.

Mensajes de error

El repertorio de indicaciones útiles para la detección de errores en la compilación de nuestros programas está compuesto por un total de 16 tipos de mensaje.

Bad line la cadena no es reconocible por el compilador.

Sintax error error de sintaxis.

Víctor Prieto, AS

★ PUBLISHER: ACE Software (C/ Tarragona, 110 08015 Barcelona)
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: COMMERCIALE
★ AUTHOR: Xavier GARCÍA
★ PRICES: CPC 464, 472 3.248 ptas. versión cinta , CPC 6128 3.920 ptas. versión disco



★ AMSTRAD CPC ★ DOWNLOAD ★

File:
» ACE  Software-Forth  Compiler    ENGLISHDATE: 2023-03-17
DL: 260
TYPE: ZIP
SiZE: 14Ko
NOTE: Supplied by Johnny Farragut ; Extended DSK/40 Cyls
.HFE: Χ

Dump cassette:
» ACE  Software-Forth  Compiler    ENGLISHDATE: 2023-03-17
DL: 249
TYPE: ZIP
SiZE: 16Ko
NOTE: Dumped by Johnny Farragut ; CSW2CDT-20191102;
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Fig Forth
» Applications » Forth-83
» Applications » CPC 464 Forth
» Applications » Forth Compiler (CPC Magazin)
» Applications » Hisoft Forth
» Applications » Ams-Forth/Amsforth
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 160 millisecondes et consultée 1916 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.