stringtranslate.com

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

¡Acción! es un lenguaje de programación procedimental y entorno de desarrollo integrado escrito por Clinton Parker para las computadoras Atari de 8 bits . El lenguaje, que es similar a ALGOL , compila código de alto rendimiento para la tecnología MOS 6502 de las computadoras Atari. ¡Acción! fue distribuido en cartucho ROM por Optimized Systems Software a partir de 1983. Fue uno de los primeros "Supercartuchos" de 16 kB conmutados por banco de la empresa. La biblioteca en tiempo de ejecución se almacena en el cartucho; Para crear una aplicación independiente se requiere Action! Kit de herramientas que OSS vendió por separado.

Parker, en colaboración con Henry Baker , había desarrollado previamente Micro-SPL, un lenguaje de programación de sistemas para Xerox Alto . ¡Acción! es en gran medida una adaptación de conceptos Micro-SPL al Atari con cambios para soportar el procesador 6502 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 . El editor inspiró el procesador de textos PaperClip . El idioma no fue portado a otras plataformas.

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

Entorno de desarrollo

¡Acción! es uno de los ejemplos anteriores del formato OSS SuperCartridge. Aunque los cartuchos ROM para Atari podían soportar 16 kB, [2] OSS optó por la conmutación de banco de 16 kB, organizados como cuatro bloques de 4 kB, asignados a 8 kB de espacio de direcciones . Los 4 kB inferiores no cambiaron y el sistema pudo cambiar de banco entre los otros tres bloques cambiando el valor en la dirección $AFFF. [3] [4] Esto permitió más RAM disponible para los programas de usuario. [5]

¡Acción! utilizó 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 de tiempo de ejecución. [4] 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 OSS vendió como Action! Kit de herramientas. [6]

¡Acción! Las construcciones se diseñaron para asignarse limpiamente a 6502 códigos de operación , para proporcionar un alto rendimiento sin necesidad de optimizaciones complejas en el compilador de un solo paso . [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 importante sobrecarga 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 recursividad . [6]

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

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

Idioma

Tipos de datos

¡Acción! Tiene tres tipos de datos fundamentales , todos los cuales son numéricos.

BYTE se representa internamente como un entero de 8 bits sin signo . Los valores varían de 0 a 255. La palabra clave CHAR también se puede utilizar para declarar variables BYTE.

BYTE edad=[21] ; declarar edad e inicializarla al valor 21 BYTE margen izquierdo = 82; declarar leftMargin en la dirección 82

CARD inal se representa internamente como un entero de 16 bits sin signo . Los valores oscilan entre 0 y 65.535.

Población de TARJETA=$600; declarar población y almacenarla en las direcciones 1536 y 1537 CARD año anterior, año actual, año siguiente; use comas para declarar múltiples variables

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

INT muy frío = [-10] INT beneficiosQ1, beneficiosQ2, ; declarar múltiples variables puede beneficiosQ3, beneficiosQ4; abarcar varias líneas

¡Acción! también tiene ARRAYs, POINTERs y TYPEs definidos por el usuario. No se proporciona soporte de punto flotante .

Un ejemplo de un TIPO definido por el usuario:

TIPO CABLE=[TARJETA x,y] Punto de CORDÓN punto.x=42 punto.y=23

Palabras reservadas

Una palabra reservada es cualquier identificador o símbolo que la acción! El compilador lo reconoce como algo especial. Puede ser un operador, un nombre de tipo de datos, una declaración o una directiva del compilador.

Y FI O HASTA = ( ARRAY PARA EL PUNTERO MIENTRAS <> ) BYTE FUNC PROC XOR # . TARJETA SI DEVUELVE + > [ CHAR INCLUYE RSH - >= ] DEFINIR CONJUNTO INT * < " HACER PASO LSH / <= ' ELSE MOD ENTONCES & $ ; MÓDULO ELSEIF A % ^ SALIR TIPO OD ! @

Código de ejemplo

El siguiente es un código de ejemplo para Sieve of Eratóstenes 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, ; dirección del temporizador del sistema SDMCTL=559; control DMABANDERAS DE ARRAY DE BYTES(8190)RECUENTO DE TARJETAS,I,K,PRIME,TIEMPOPROC TAMIZ() SDMCTL=0; apagar Antic RTCLOK=0; poner el reloj a cero CUENTA=0; recuento 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 pasa el tamiz HACER SI BANDERAS (I) = 'NO ENTONCES PRIMO=I+I+3 K=I+CEBADO MIENTRAS K<=8190 HACER BANDERAS(K)='F ; "'F" es una constante proporcionada por el compilador para False K==+PRIMERO sobredosis CONTAR==+1 FI sobredosis TIEMPO=RTCLOK; obtener lectura del temporizador SDMCTL=34 ; restaurar pantalla PRINTF("%E %U PRIMOS EN",CONTAR) PRINTF("%E %U JIFFIES",TIEMPO)DEVOLVER

Historia

Micro-SPL

Mientras realizaba sus estudios de posgrado, Parker comenzó a trabajar a tiempo parcial en Xerox PARC trabajando en controladores de impresoras . Más tarde pasó al proyecto Xerox Alto , donde escribió varios juegos para el sistema. [8] Su doctorado fue en análisis de lenguaje natural y había trabajado en la teoría del compilador durante su trabajo de posgrado. [9]

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 estación de trabajo Xerox Alto , que normalmente se programaba en BCPL . El Alto utilizó un sistema de microcódigo generado por el compilador BCPL. Micro-SPL genera el mismo formato, lo que permite que los programas BCPL llamen a programas Micro-SPL. [10]

Aparte de las diferencias en la sintaxis, la principal diferencia entre Micro-SPL y BCPL, y la razón de su existencia, fue que Micro-SPL producía 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 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 tomaría la mitad de tiempo escribirlo y un 10% de tiempo depurarlo. [10]

¡Acción!

Fue durante este período que Parker compró una computadora Atari para usar en casa. Estaba decepcionado por la falta de sistemas de desarrollo para ello, lo que fue el impulso para crear Action! [11] Parker consideró lanzar el sistema él mismo, pero 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 , por lo que era una opción natural para Action. [12] Las ventas fueron lo suficientemente fuertes como para que Parker pudiera ganarse la vida con las regalías durante varios años. [13]

La PC de IBM tenía compiladores de C disponibles y Parker decidió que no tenía sentido trasladar Action! a esa plataforma. [14] A medida que las ventas de las computadoras Atari de 8 bits disminuyeron en América del Norte, el OSS también disminuyó. Al final de su historia ¡Acción! La distribución pasó del 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 idioma, sugiriendo que era mayor que a finales de la década de 1980. [dieciséis]

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 "padece de falta de confianza, organización incierta y escasez de datos técnicos buenos y concretos". [17]

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 descubrió que la gente podía jugar al ping-pong en una pantalla de televisión ". Laporte elogió al editor, destacó sus capacidades de pantalla dividida y de cortar y pegar, y lo describió como un "sistema completo de procesamiento de textos que responde muy bien". Dijo que ¡Acción! corría unas 200 veces más rápido que Atari BASIC , y concluyó que "este lenguaje es como un coche de carreras finamente afinado". [18]

BYTE en 1985 elogió la velocidad de compilación y ejecución del software escrito en Action! Utilizando su punto 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 lo suficiente a C como para "convertir rutinariamente programas entre los dos" y aprobó su compatibilidad con punteros. La revista concluyó que "Action! es fácil de usar, rápido y eficiente. Puede explotar todo el poder de Atari. Action! lleva la programación para Atari en una dimensión completamente nueva". [19]

Ian Chadwick escribió en Mapping the Atari que "Action! es probablemente el mejor lenguaje hasta ahora para Atari; es un poco como C y Pascal, con una pizca 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 las 13:38, 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 el zip. Se puede convertir fácilmente a otros formatos.
  2. ^ Chadwick, Ian (1983). Mapeando el Atari. ¡Calcular! . pag. 103.ISBN​ 9780874550047.
  3. ^ "Control de RAM/ROM en una computadora XL/XE". AtariWiki .
  4. ^ ab Moriarty 1984, pág. 55.
  5. ^ "Boletín OSS" (PDF) . atariwiki.org . 1983 . Consultado el 24 de mayo de 2024 .
  6. ^ abc Moriarty 1984.
  7. ^ ¡ ACCIÓN! en Atariki (PL)
  8. ^ Parker 2015, 6:00.
  9. ^ Parker 2015, 6:30.
  10. ^ ab 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, pag. 60.
  18. ^ Laport, Leo (mayo-junio de 1984). "¡Luces, CAMARA, ACCION!". Alta resolución . pag. 72.
  19. ^ Schneeflock, Ed (marzo de 1985). "¡Acción! ¿La C de un pobre?". BYTE . pag. 273 . Consultado el 19 de marzo de 2016 .
  20. ^ Chadwick, Ian (1985). "Prefacio del autor a la edición revisada". Mapeando el Atari . Greensboro, Carolina del Norte: ¡Calcular! Publicaciones, Inc. págs. v-vi. ISBN 0-87455-004-1.

Bibliografía

enlaces externos