Articulo de referencia

¡Acción! (lenguaje de programación)

Action! es un lenguaje de programación procedimental y un entorno de desarrollo integrado creado por Clinton Parker para las computadoras Atari de 8 bits . El lenguaje, similar ...

Action! es un lenguaje de programación procedimental y un entorno de desarrollo integrado creado por Clinton Parker para las computadoras Atari de 8 bits . El lenguaje, similar a ALGOL , se adapta perfectamente al microcontrolador MOS Technology 6502 de la Atari sin optimizaciones complejas del compilador. La rápida ejecución de los programas resultantes fue una de sus principales ventajas.

Parker, en colaboración con Henry Baker , había desarrollado previamente Micro-SPL, un lenguaje de programación de sistemas para el Xerox Alto . Action! es, en gran medida, una adaptación de los conceptos de Micro-SPL al Atari, con modificaciones para dar soporte al procesador 6502 y la adición de un editor y depurador integrados a pantalla completa.

Action! se distribuyó en cartuchos ROM por Optimized Systems Software a partir de 1983. Fue uno de los primeros "supercartuchos" de 16 kB con conmutación de bancos  de la compañía . La biblioteca de tiempo de ejecución se almacena en el cartucho; para crear una aplicación independiente se requiere el Action! Toolkit , que OSS vendía por separado.

Action! se utilizó para desarrollar al menos dos productos comerciales: el paquete de productividad HomePak y el programa cliente Games Computers Play , además de numerosos programas en las revistas ANALOG Computing y Antic . El editor inspiró el procesador de textos PaperClip . El lenguaje no se adaptó a otras plataformas.

El código fuente en lenguaje ensamblador de Action! fue puesto a disposición bajo la Licencia Pública General GNU por el autor en 2015. [ 1 ]

Entorno de desarrollo

Action! es uno de los primeros ejemplos del formato OSS SuperCartridge. Aunque los cartuchos ROM para Atari podían admitir 16  kB, [ 2 ] OSS optó por la conmutación de bancos de 16  kB, organizados en cuatro  bloques de 4 kB, mapeados en 8 kB de espacio de direcciones . Los 4  kB inferiores no cambiaban, y el sistema podía conmutar entre los otros tres bloques cambiando el valor en la dirección $AFFF. [ 3 ] [ 4 ] Esto permitía disponer de más RAM para los programas de usuario. [ 5 ]

Action! utilizó este diseño dividiendo el sistema en cuatro secciones: el editor, el compilador, un monitor para probar el código y alternar entre el editor y el compilador, y la biblioteca de tiempo de ejecución. [ 4 ] La biblioteca de tiempo de ejecución se almacena en el propio cartucho. Para distribuir aplicaciones independientes se requiere un paquete de tiempo de ejecución aparte, que OSS vendió como Action! Toolkit. [ 6 ]

Las construcciones de Action! se diseñaron para mapearse limpiamente a los códigos de operación del 6502 , para proporcionar un alto rendimiento sin necesidad de optimizaciones complejas en el compilador de una sola pasada . [ 7 ] Por ejemplo, a las variables locales se les asignan direcciones fijas en la memoria, en lugar de asignarse en una pila de registros de activación . Esto elimina la sobrecarga significativa asociada con la gestión de la pila, que es especialmente difícil en el caso de la pila de 256 bytes del 6502. Sin embargo, esto impide el uso de la recursión . [ 6 ]

A diferencia de los entornos integrados Atari BASIC y Atari Assembler Editor , el editor Action! no utiliza números de línea. Tiene una pantalla completa con desplazamiento, capaz de mostrar dos ventanas, e incluye operaciones de bloques y búsqueda y reemplazo global. [ 6 ]

El monitor funciona como depurador, permitiendo ejecutar un programa completo o funciones individuales, visualizar y modificar la memoria, y rastrear la ejecución del programa. [ 6 ]

Idioma

Tipos de datos

Action! tiene tres tipos de datos fundamentales , todos ellos numéricos.

Internamente, BYTE se representa como un entero sin signo de 8 bits . Sus valores van de 0 a 255. La palabra clave CHAR también se puede usar para declarar variables de tipo BYTE.

BYTE edad=[21] ; declara la edad y la inicializa con el valor 21 BYTE leftMargin=82 ; declara leftMargin en la dirección 82

La variable CARD final se representa internamente como un entero sin signo de 16 bits . Los valores van de 0 a 65.535.

CARD population=$600; declare population y almacénelo en las direcciones 1536 y 1537. TARJETA añoanterior, añoactual, añosiguiente; utilice comas para declarar varias variables.

INT eger se representa internamente como un entero con signo de 16 bits . Los valores oscilan entre -32.768 y 32.767.

INT muyFrío = [-10] INT profitsQ1, profitsQ2, ; declarar múltiples variables puede beneficiosT3, beneficiosT4; abarcan varias líneas

Action! también admite ARRAYS, POINTERS y TIPOS definidos por el usuario. No se ofrece soporte para coma flotante .

Un ejemplo de un TIPO definido por el usuario:

TIPO CORD=[TARJETA x,y] Punto CORD punto.x=42 punto.y=23

Palabras reservadas

Una palabra reservada es cualquier identificador o símbolo que el compilador de Action! reconoce como algo especial. Puede ser un operador, el nombre de un tipo de dato, una instrucción o una directiva del compilador.

Y FI O HASTA = ( ARRAY PARA PUNTERO MIENTRAS <> ) BYTE FUNC PROC XOR # . CARD SI RETORNA + > [ CHAR INCLUDE RSH - >= ] DEFINIR INT SET * < " HACER LSH PASO / <= ' SINO MOD ENTONCES & $ ; SINO SI MODULE A % ^ SALIR OD TIPO ! @

Código de ejemplo

A continuación se muestra un ejemplo de código para la criba de Eratóstenes escrito en Action!. Para mejorar el rendimiento, desactiva el coprocesador gráfico ANTIC , impidiendo que su motor DMA "robe" ciclos de CPU durante el cálculo.

BYTE RTCLOK=20, ; dirección del temporizador del sistema SDMCTL=559; control DMA INDICADORES DE MATRIZ DE BYTES (8190) RECUENTO DE TARJETAS,I,K,PRIME,TIEMPO PROC TAMIZADO() SDMCTL=0 ; apagar Antic RTCLOK=0 ; Reiniciar el reloj a cero CONTEO=0 ; contador inicial PARA I=0 A 8190 ; y banderas HACER FLAGS(I)='T ; "'T" es una constante proporcionada por el compilador para True sobredosis PARA I=0 HASTA 8190; ahora pasamos el tamiz HACER SI FLAGS(I)='T ENTONCES PRIMO = I + I + 3 K=I+PRIMA MIENTRAS K<=8190 HACER FLAGS(K)='F ; "'F" es una constante proporcionada por el compilador para False K==+PRIMA sobredosis CONTEO==+1 FI sobredosis TIEMPO=RTCLOK; obtener la lectura del temporizador SDMCTL=34 ; restaurar pantalla PRINTF("%E %U PRIMOS EN",COUNT) PRINTF("%E %U JIFFIES",TIEMPO) DEVOLVER

Historia

Micro-SPL

Mientras cursaba sus estudios de posgrado, Parker comenzó a trabajar a tiempo parcial en Xerox PARC desarrollando controladores de impresora . Posteriormente, se unió al proyecto Xerox Alto , donde escribió varios juegos para el sistema. [ 8 ] Su doctorado versó sobre el análisis del lenguaje natural y, durante sus estudios de posgrado, trabajó en la teoría de compiladores. [ 9 ]

Henry Baker y Parker lanzaron Micro-SPL en septiembre de 1979. Micro-SPL fue diseñado para usarse como lenguaje de programación de sistemas en la estación de trabajo Xerox Alto , que normalmente se programaba en BCPL . El Alto utilizaba un sistema de microcódigo que generaba el compilador de BCPL. Micro-SPL generaba el mismo formato, lo que permitía que los programas BCPL llamaran a programas Micro-SPL. [ 10 ]

Aparte de las diferencias de sintaxis, la principal diferencia entre Micro-SPL y BCPL, y la razón de su existencia, era que Micro-SPL producía código mucho más rápido que el compilador nativo de BCPL. En general, se esperaba que los programas Micro-SPL se ejecutaran unas diez veces más rápido que BCPL y aproximadamente la mitad de rápido que un buen microcódigo escrito a mano. En comparación con el microcódigo, afirmaban que tardaría la mitad de tiempo en escribirse y el 10 % del tiempo en depurarse. [ 10 ]

¡Acción!

Fue durante este período que Parker compró una computadora Atari para usarla en casa. Le decepcionó la falta de sistemas de desarrollo para ella, lo que impulsó la creación de Action! [ 11 ] Parker consideró lanzar el sistema por su cuenta, pero decidió asociarse con Optimized Systems Software (OSS) para las ventas y la distribución. OSS se centraba en utilidades y lenguajes de programación como BASIC XL , por lo que esto encajaba perfectamente con Action! [ 12 ] Las ventas fueron lo suficientemente buenas como para que Parker pudiera vivir de las regalías durante varios años. [ 13 ]

El IBM PC tenía compiladores de C disponibles, y Parker decidió que no tenía sentido portar Action! a esa plataforma. [ 14 ] A medida que las ventas de las computadoras Atari de 8 bits disminuían en Norteamérica, OSS también disminuía. Hacia el final de su historia, la distribución de Action! pasó de OSS a Electronic Arts , pero hicieron poco con el lenguaje y las ventas terminaron poco después. [ 15 ] En una entrevista de 2015, Parker expresó su sorpresa por el nivel de interés que seguía recibiendo el lenguaje, sugiriendo que era mayor que el que había sido a finales de la década de 1980. [ 16 ]

Recepción

Brian Moriarty , en una reseña de febrero de 1984 para ANALOG Computing , concluyó que Action! era "una de las herramientas de desarrollo más valiosas jamás publicadas para Atari". Citó el manual como el único punto débil del paquete, afirmando que "adolece de falta de confianza, organización incierta y escasez de datos técnicos sólidos y fiables". [ 17 ]

Leo Laporte reseñó Action! en la edición de mayo/junio de 1984 de Hi-Res . Comenzó la reseña diciendo: «Esto es lo mejor que le ha pasado a Atari desde que Nolan Bushnell descubrió que la gente jugaría al ping-pong en una pantalla de televisión ». Laporte elogió el editor, destacando sus capacidades de pantalla dividida y copiar y pegar, y lo describió como un «sistema de procesamiento de texto completo y muy sensible». Afirmó que Action! funcionaba unas 200 veces más rápido que Atari BASIC , concluyendo que «Este lenguaje es como un coche de carreras perfectamente ajustado». [ 18 ]

En 1985, la revista BYTE elogió la velocidad de compilación y ejecución del software escrito en Action!. Utilizando la prueba Byte Sieve como referencia, diez iteraciones de la criba se completaron en 18 segundos en Action!, en comparación con los 10 segundos que tardó el lenguaje ensamblador y los 38 minutos que tardó BASIC. La revista también alabó el editor del lenguaje. BYTE informó que el lenguaje se parecía lo suficiente a C como para "convertir programas entre ambos de forma rutinaria" y aprobó su compatibilidad con punteros. La revista concluyó que "Action! es fácil de usar, rápido y eficiente. Puede aprovechar todo el potencial del Atari. Action! lleva la programación para el Atari a una dimensión completamente nueva". [ 19 ]

Ian Chadwick escribió en Mapping the Atari que "Action! es probablemente el mejor lenguaje hasta la fecha para Atari; es un poco como C y Pascal, con un toque de Forth. Lo recomiendo." [ 20 ]

Referencias

Citas

  1. ↑ ¡ Acción! Código fuente - Página 2 , Alfred (Chopper Commander) Publicado el lunes 2 de febrero de 2015 a la 1:38 p. m., Foros de AtariAge, Este es el código fuente original de ¡Acción! tal como lo recibí de ICD. Utiliza el ensamblador cruzado de ICD, que no está incluido en el archivo zip. Se puede convertir fácilmente a otros formatos.
  2. Chadwick, Ian (1983). Mapping the Atari . Compute! . p.  103. ISBN 9780874550047.
  3. ^ "Control de RAM/ROM en una computadora XL/XE" . AtariWiki .
  4. 1 2 Moriarty 1984 , pág. 55.
  5. "Boletín de OSS" (PDF) . atariwiki.org . 1983. Consultado el 24 de mayo de 2024 .
  6. 1 2 3 4 Moriarty 1984 .
  7. ↑ ¡ ACCIÓN! en Atariki (PL)
  8. Parker 2015 , 6:00.
  9. Parker 2015 , 6:30.
  10. 1 2 Baker y Parker 1979 , pág. 1.
  11. Parker 2015 , 7:00.
  12. Parker 2015 , 28:00.
  13. Parker 2015 , 20:00.
  14. Parker 2015 , 21:30.
  15. Parker 2015 , 2:45.
  16. Parker 2015 , 1:00.
  17. Moriarty 1984 , pág. 60.
  18. Laport, Leo (mayo-junio de 1984). "¡Luces, cámara, acción!" . Alta resolución . pág. 72. 
  19. Schneeflock, Ed (marzo de 1985). "¿Acción! ¿Una C para pobres?" . BYTE . pág. 273. Consultado el 19 de marzo de 2016 . 
  20. Chadwick, Ian (1985). «Prefacio del autor a la edición revisada» . Mapping the Atari . Greensboro, Carolina del Norte: Compute! Publications, Inc. pp. v– vi. ISBN  0-87455-004-1.

Bibliografía

  • Baker, Henry; Parker, Clinton (septiembre de 1979). Micro-SPL (PDF) (Informe técnico). Synapse Computer Services. CiteSeerX 10.1.1.126.6877 . 
  • Parker, Clinton (31 de diciembre de 2015). "Entrevista ANTIC 111, Clinton Parker, ¡Acción!" (podcast). Entrevistado por Randy Kindig.
  • Moriarty, Brian (febrero de 1984). "¡Acción! - ¡Un nuevo lenguaje para Atari!" . ANALOG Computing . N.°  16. págs. 54– 61. 
  • ¡Acción! (lenguaje de programación) en SourceForge
  • ¡Acción! Lenguaje de programación versión 3.6 - Código fuente , por Optimized Systems Software en archive.org
  • ¡Acción! Más información en Retrobits.com
  • ¡Acción! Archivo
  • ¡Acción! Manual de referencia
  • Compilador cruzado Effectus
  • Compilador de Atari Action! (compilador cruzado)