¡Acción! es un lenguaje de programación procedimental similar a ALGOL que está destinado a producir programas de alto rendimiento para la familia Atari de 8 bits . El lenguaje fue escrito por Clinton Parker y distribuido en cartuchos ROM por Optimized Systems Software a partir de 1983. Fue uno de los primeros "Super Cartuchos" conmutados por banco de la compañía , con un total de 16 kB de código.
Autor (es) original (es) | Clinton Parker |
---|---|
Desarrollador (es) | Software de sistemas optimizados |
Versión inicial | Agosto de 1983 |
Lanzamiento final | v3.6 / 4 de noviembre de 1983 |
Plataforma | Familia Atari de 8 bits |
Tamaño | Cartucho de cambio de banco de 16K |
En colaboración con Henry Baker , Parker había desarrollado anteriormente Micro-SPL, un lenguaje de programación de sistemas para Xerox Alto . ¡Acción! fue en gran parte un puerto de conceptos Micro-SPL para Atari con los cambios necesarios para manejar más directamente el procesador MOS Technology 6502 subyacente y la adición de un editor y depurador de pantalla completa integrado.
¡Acción! se utilizó para desarrollar al menos dos productos comerciales: la suite de productividad HomePak y el programa cliente Games Computers Play , y numerosos programas en las revistas ANALOG Computing y Antic . La parte del editor se utilizó como base para el procesador de texto PaperClip . El idioma no fue portado a otras plataformas.
El código fuente en lenguaje ensamblador 6502 para Action! fue puesto a disposición bajo la Licencia Pública General GNU por el autor en 2015. [1]
Historia
Micro-SPL
Mientras realizaba sus estudios de posgrado, Parker comenzó a trabajar a tiempo parcial en Xerox PARC en controladores de impresora . Más tarde se trasladó al proyecto Xerox Alto , donde escribió varios juegos para el sistema. [2] Su doctorado fue en análisis sintáctico de lenguaje natural y había trabajado en la teoría de compiladores durante su trabajo de posgrado. [3]
Henry Baker y Parker lanzaron Micro-SPL en septiembre de 1979. Micro-SPL estaba destinado a ser utilizado como lenguaje de programación de sistemas en la computadora de la estación de trabajo Xerox Alto , que normalmente se programaba en BCPL . Alto usó un sistema de microcódigo que el compilador BCPL produjo. Micro-SPL genera el mismo formato, lo que permite a los programas BCPL llamar a programas Micro-SPL. [4]
Aparte de las diferencias en la sintaxis, la principal diferencia entre Micro-SPL y BCPL, y la razón de su existencia, era que Micro-SPL producía un código que era muchas veces más rápido que el compilador BCPL nativo. 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, afirmaron que llevaría la mitad de tiempo escribirlo y el 10% del tiempo depurarlo. [4]
¡Acción!
Fue durante este período que Parker compró un Atari para usar en casa y se sintió decepcionado por la falta de sistemas de desarrollo para esta plataforma. ¡Este fue el impulso para el desarrollo de Action! [5]
Parker inicialmente consideró lanzar el sistema él mismo, pero luego decidió asociarse con Optimized Systems Software (OSS) para ventas y distribución. OSS se centró en utilidades y lenguajes de programación como BASIC XL , ¡así que esto fue un ajuste natural para Action! [6] Las ventas fueron lo suficientemente fuertes como para que Parker se ganara la vida con las regalías durante varios años. [7]
El PC de IBM tenía C compiladores disponibles, y Parker decidió que no tenía sentido en portar Acción! a esa plataforma. [8] A medida que las ventas de las plataformas Atari de 8 bits disminuyeron, al menos en América del Norte, OSS también disminuyó. Al final de su historia Action! la distribución pasó de OSS a Electronic Arts , pero hicieron poco con el idioma y las ventas terminaron poco después. [9]
En una entrevista de 2015, Parker expresó su sorpresa por el nivel de apoyo que seguía recibiendo el lenguaje, sugiriendo que parecía haber más interés en él que a finales de la década de 1980. [10]
Entorno de desarrollo
¡Acción! fue uno de los primeros ejemplos del formato OSS SuperCartridge. Los cartuchos de ROM en el Atari normalmente se limitaban a 8 kB, lo que limitaba su capacidad para admitir programas más grandes. El SuperCartridge tenía 16 kB organizados como cuatro bloques de 4 kB, dos de los cuales eran visibles en cualquier momento. Los 4 kB inferiores no cambiaron y el sistema podría cambiar de banco entre los otros tres bloques cambiando el valor en la dirección $ AFFF. [11] [12]
¡Acción! usó este diseño dividiendo el sistema en cuatro secciones, el editor, el compilador, un monitor para probar el código y cambiar entre el editor y el compilador, y la biblioteca en tiempo de ejecución. [12] La biblioteca en tiempo de ejecución se almacena en el propio cartucho. Para distribuir aplicaciones independientes se requiere un paquete de tiempo de ejecución separado que fue vendido por OSS como Action! Kit de herramientas . [13]
¡Acción! Las construcciones se diseñaron para mapear limpiamente los códigos de operación 6502 , para proporcionar un alto rendimiento sin necesidad de complejas optimizaciones en el compilador de una pasada . [14] Por ejemplo, a las variables locales se les asignan direcciones fijas en la memoria, en lugar de ubicarse en la 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 excluye el uso de la recursividad . [13]
A diferencia de los entornos integrados Atari BASIC y Atari Assembler Editor , Action! El editor no usa números de línea. Cuenta con una pantalla de desplazamiento de pantalla completa capaz de mostrar dos ventanas, así como operaciones de bloqueo y búsqueda y reemplazo global. [13]
El monitor sirve como depurador, lo que permite ejecutar un programa completo o funciones individuales, mostrar y modificar la memoria y rastrear la ejecución del programa. [13]
Tipos de datos
¡Acción! tiene tres tipos de datos fundamentales , todos ellos numéricos.
BYTE
Representado internamente como un entero de 8 bits sin signo. Los valores van de 0 a 255.
La palabra clave CHAR también se puede utilizar para declarar variables BYTE.
BYTE de edad = [21]; declare la edad e inicialícela con el valor 21 BYTE leftMargin = 82; declare leftMargin en la dirección 82
Cardenal
Representado internamente como un entero de 16 bits sin signo. Los valores oscilan entre 0 y 65.535.
Población CARD = $ 600; declarar población y almacenarla en la dirección 1536 y 1537 CARD prevYear, curYear, nextYear; use comas para declarar múltiples variables
Entero
Internamente representado como una firma de 16 bits entero. Los valores oscilan entre -32.768 y 32.767.
INT veryCold = [-10] INT ganancias Q1, ganancias Q2; declarar múltiples variables puede ganancias Q3, ganancias Q4; abarcar varias líneas
¡Acción! también tiene ARRAYs, POINTERs y TYPE definidos por el usuario. No se proporciona soporte de punto flotante .
Un ejemplo de un TIPO definido por el usuario:
TIPO CORDÓN = [TARJETA x, y] Punto CORD punto.x = 42 punto.y = 23
Palabras reservadas
Una palabra reservada es cualquier identificador o símbolo que Action! El compilador reconoce como algo especial. Puede ser un operador, un nombre de tipo de datos, una declaración o una directiva de compilador.
Y FI O HASTA = ( ARRAY FOR POINTER MIENTRAS <>) BYTE FUNC PROC XOR #. TARJETA SI REGRESA +> [ CHAR INCLUYE RSH -> =] DEFINIR INT SET * <" HACER PASO LSH / <= ' ELSE MOD THEN & $; MÓDULO ELSEIF A% ^ SALIR DEL TIPO OD! @
Código de ejemplo
El siguiente es un código de ejemplo para Sieve of Eratosthenes escrito en Action !. Para aumentar el rendimiento, desactiva el coprocesador de gráficos ANTIC , evitando que su motor DMA "robe" ciclos de CPU durante el cálculo.
BYTE RTCLOK = 20,; addr del temporizador del sistema SDMCTL = 559; Control DMABANDERAS BYTE ARRAY (8190)RECUENTO DE TARJETAS, I, K, PRIME, HORAPROC SIEVE () SDMCTL = 0; apaga Antic RTCLOK = 0; poner el reloj a cero CUENTA = 0; cuenta inicial PARA I = 0 A 8190; y banderas HACER BANDERAS (I) = 'T; "'T" es una constante proporcionada por el compilador para True sobredosis PARA I = 0 A 8190; ahora ejecuta el tamiz HACER SI BANDERAS (I) = 'T ENTONCES PRIME = I + I + 3 K = I + PRIME MIENTRAS K <= 8190 HACER BANDERAS (K) = 'F; "'F" es una constante proporcionada por el compilador para False K == + PRIME sobredosis CONTAR == + 1 FI sobredosis TIEMPO = RTCLOK; obtener la lectura del temporizador SDMCTL = 34; restaurar pantalla PRINTF ("% E% U PRIMES IN", COUNT) PRINTF ("% E% U JIFFIES", TIME)REGRESO
Recepción
Brian Moriarty , en una revisión de febrero de 1984 para Analog Computing , concluyó que Action! fue "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 buenos y sólidos". [15]
Leo Laporte revisó Action en la edición de mayo / junio de 1984 de Hi-Res . Comenzó la reseña: "Esto es lo mejor que le ha pasado a Atari desde que Nolan Bushnell se dio cuenta de que la gente jugaría ping-pong en una pantalla de televisión ". Laporte elogió al editor, destacando sus capacidades de pantalla dividida y cortar y pegar y describiéndolo como un "sistema completo de procesamiento de texto que responde muy bien". Dijo que ¡Acción! corrió unas 200 veces más rápido que Atari BASIC , concluyendo que "este lenguaje es como un coche de carreras finamente ajustado". [dieciséis]
BYTE en 1985 elogió la velocidad de compilación y ejecución del software escrito en Action! Usando supunto de referencia Byte Sieve como prueba, diez iteraciones del tamiz se completaron en 18 segundos en Action !, en comparación con 10 segundos para el ensamblaje y 38 minutos en BASIC. La revista también elogió al editor del idioma. BYTE informó que el lenguaje se parecía a C lo suficiente como para "convertir rutinariamente programas entre los dos", y aprobó su soporte de puntero. La revista concluyó que "Action! Es fácil de usar, rápido y eficiente. Puede explotar todo el poder del Atari. Action! Pone la programación del Atari en una dimensión completamente nueva". [17]
Ian Chadwick escribió en Mapping the Atari que "¡Acción! Es probablemente el mejor lenguaje hasta ahora para Atari; es un poco como C y Pascal, con una pizca de Forth. Lo recomiendo". [18]
Ver también
- PaperClip , procesador de texto Atari de 8 bits de un autor y una empresa diferentes, basado en Action! editor
Referencias
Citas
- ^ ¡Acción! Código fuente - Página 2 , Alfred (Chopper Commander) Publicado el lunes 2 de febrero de 2015 1:38 PM, Foros de AtariAge, ¡ Esta es la acción original! fuente tal como la recibí de ICD. Utiliza el ensamblador cruzado ICD que no está incluido en la cremallera. Se puede convertir fácilmente a otros formatos.
- ↑ Parker , 2015 , 6:00.
- ↑ Parker , 2015 , 6:30.
- ↑ a b Baker y Parker , 1979 , p. 1.
- ↑ Parker , 2015 , 7:00.
- ↑ Parker , 2015 , 28:00.
- ↑ Parker , 2015 , 20:00.
- ↑ Parker , 2015 , 21:30.
- ↑ Parker , 2015 , 2:45.
- ↑ Parker , 2015 , 1:00.
- ^ "Control de RAM / ROM en una computadora XL / XE" . AtariWiki .
- ↑ a b Moriarty 1984 , p. 55.
- ↑ a b c d Moriarty, 1984 .
- ^ ¡ACCIÓN! en Atariki (PL)
- ^ Moriarty 1984 , p. 60.
- ^ Laport, Leo (mayo-junio de 1984). "¡Luces, CAMARA, ACCION!" . Hi-Res . pag. 72.
- ^ Schneeflock, Ed (marzo de 1985). "¡Acción! ¿La C de un pobre?" . BYTE . pag. 273 . Consultado el 19 de marzo de 2016 .
- ^ Chadwick, Ian (1985). "Prefacio del autor a la edición revisada" . Mapeo del Atari . Greensboro, Carolina del Norte: Compute! Publications, Inc. págs. V – vi. ISBN 0-87455-004-1.
Bibliografía
- Baker, Henry; Parker, Clinton (septiembre de 1979). Micro-SPL (PDF) (Informe técnico). Servicios informáticos de Synapse. CiteSeerX 10.1.1.126.6877 .
- Parker, Clinton (31 de diciembre de 2015). "Entrevista ANTIC 111, Clinton Parker, ¡Acción!" (pódcast). Entrevistado por Randy Kindig.
- Moriarty, Brian (febrero de 1984). "¡Acción! ¡Un nuevo idioma para los Atari!" . Computación ANALÓGICA . No. 16. págs. 54-61.
enlaces externos
- ¡Acción! (lenguaje de programación) en SourceForge.net
- ¡Acción! Lenguaje de programación Versión 3.6 - Código fuente , por Optimized Systems Software en archive.org
- ¡Acción! información en Retrobits.com
- ¡La acción! Archivo
- ¡Acción! referencia idiomática
- Compilador cruzado de Effectus