Atari Assembler Editor (a veces escrito como Atari Assembler/Editor ) es un sistema de desarrollo basado en cartuchos ROM lanzado por Atari, Inc. en 1981. Se utiliza para editar, ensamblar y depurar programas 6502 para computadoras Atari de 8 bits sin necesidad de herramientas adicionales e incluso funciona sin unidad de disco o unidad de casete (excepto la capacidad de guardar programas).
El editor de ensamblador fue programado por Kathleen O'Brien de Shepardson Microsystems , la compañía que desarrolló Atari BASIC . El editor de ensamblador ofrece un entorno de programación similar a BASIC, con comandos basados en texto y código fuente numerado por líneas. A diferencia de Atari BASIC, los programas no se analizan en tokens a medida que se introduce cada línea.
Los tiempos de ensamblaje son lentos, lo que dificulta el uso del cartucho para programas grandes. En el manual, Atari recomienda el Editor de Ensamblador como herramienta para escribir subrutinas que aceleren Atari BASIC, [ 1 ] que serían mucho más pequeñas que las aplicaciones completas. El Ensamblador de Macros de Atari se ofreció como alternativa con mejor rendimiento y más funciones, como macros, pero está basado en disco, protegido contra copia y no incluye editor ni depurador. A pesar de la sugerencia, se escribió software comercial utilizando el Editor de Ensamblador, como los juegos Eastern Front (1941) , [ 2 ] Caverns of Mars , [ 3 ] Galahad and the Holy Grail , [ 4 ] y Kid Grid . [ 5 ]
El código fuente del editor de ensamblador original fue licenciado a Optimized Systems Software, que distribuyó EASMD basándose en él.
Entorno de desarrollo
El editor de ensamblador es un ensamblador 6502 de dos pasadas en un cartucho de 8 KB . Tanto el código fuente como el código objeto pueden estar en memoria simultáneamente, lo que permite editar, ensamblar y ejecutar repetidamente el código resultante sin acceder a una unidad de disco o cinta. [ 6 ]
Editar
El cartucho se inicia en modo EDICIÓN. El programador introduce líneas de código ensamblador en el editor tipo Atari BASIC . El texto fuente debe ir precedido de un número de línea; de lo contrario, se interpreta como un comando. Al igual que Atari BASIC, el Editor de Ensamblador incluye un comando que permite combinar archivos en un único listado de programa más extenso. A diferencia de Atari BASIC, el Editor de Ensamblador incluye comandos para crear automáticamente números de línea espaciados, así como para renumerar líneas y eliminarlas en masa . Un comando resulta útil al trabajar con etiquetas. [ 7 ]ENTERFIND
Las instrucciones se enumeran en el orden en que se colocarán en la memoria. El punto de inicio de las instrucciones se especifica con la *=directiva, por lo que, por ejemplo, el código destinado a colocarse en la página seis especial se antepondría a la línea *= $0600. [ 8 ] Se pueden asignar nombres de variables a direcciones específicas, y esto a menudo se combinaba con un incremento *= *+1para codificar directamente los desplazamientos en tablas. [ 9 ]
Los valores que siguen a las instrucciones normalmente se interpretan como "el valor en esta dirección de memoria", pero se puede proporcionar un valor numérico real como un "operando inmediato" añadiéndole un hash, como LDA #12, que carga el acumulador con el valor decimal 12. El hexadecimal se indica con un signo de dólar, LDA #$12carga el acumulador con 12 hexadecimal o 18 decimal. Se admite el direccionamiento indirecto mediante paréntesis; LDA ($600)utiliza los valores en las ubicaciones $600,$601 para producir una dirección de 16 bits y luego carga el acumulador con el valor encontrado en esa ubicación. [ 10 ]
Los errores se notifican mediante códigos numéricos que se pueden consultar en el manual. Hay 19 códigos específicos del ensamblador y 16 códigos adicionales para errores de entrada/salida del sistema operativo . [ 11 ]
Armar
El código se ensambla escribiendo el ASMcomando en el editor. [ 12 ]
El editor de ensamblador fue ampliamente criticado por ser el ensamblador más lento de la plataforma. Esto se debe en gran parte a que compartía código con Atari BASIC, también escrito por Shepardson Microsystems. Atari BASIC utiliza rutinas lentas para convertir constantes numéricas del código a una representación decimal codificada en binario interna mediante rutinas del sistema operativo . Todos los números, incluso los números de línea, deben convertirse a decimal codificado en binario. Esto también significa que 1E2es un número de línea válido. [ 13 ]
Depurar
El depurador , que en realidad es un monitor de código máquina , se activa con el BUGcomando. [ 14 ] El Xcomando regresa al modo EDICIÓN. [ 15 ] El depurador permite visualizar y modificar registros y ubicaciones de memoria, rastrear el código, ejecutar paso a paso y desensamblar . [ 16 ]
Historia
El editor de ensamblador fue escrito por Kathleen O'Brien de Shepardson Microsystems . La empresa había sido contratada por Atari para ayudar a adaptar el BASIC de Microsoft 6502 a una ROM de 8 KB , algo con lo que los programadores de Atari estaban teniendo dificultades. En cambio, Bill Wilkinson sugirió diseñar una versión completamente nueva de BASIC, que se convirtió en Atari BASIC . [ 17 ]
Mientras se escribía Atari BASIC, principalmente por Paul Laughton, esposo de O'Brien, esta trabajaba en el Editor de Ensamblador. [ 17 ] Este se escribía introduciendo códigos en una perforadora de cinta , pasando la cinta por una grabadora de EPROM y probando la ROM resultante en un Atari 800. El cartucho se completó antes que Atari BASIC, y O'Brien también dedicó tiempo a trabajar en algunas partes de ese proyecto. [ 17 ]
Como parte del trabajo de Shepardson, se incorporaron varias rutinas comunes al sistema operativo de la computadora Atari , incluidas las funciones matemáticas de punto flotante . Estas fueron escritas por O'Brien, siendo este el primer código matemático de punto flotante en el que trabajó. [ 17 ] El bajo rendimiento de las funciones clave afectó tanto a Atari BASIC como al Editor de Ensamblador y fue un tema sobre el que Wilkinson escribió con frecuencia. [ 18 ]
Código de ejemplo
El siguiente es el código 6502 para ¡Hola Mundo! escrito para el Editor de Ensamblador:
10 ; HELLO.ASM 20 ; --------- 30 ; 40 ; ESTE PROGRAMA DE ENSAMBLADOR ATARI 50 ; IMPRIMIRÁ EL MENSAJE "HELLO WORLD" 60 ; EN LA PANTALLA 70 ; 0100 ; CIO EQUATES 0110 ; =========== 0120 *= $0340 ;INICIO DE IOCB 0130 IOCB 0140 ; 0150 ICHID *= *+ 1 ;MANEJADOR DEL DISPOSITIVO 0160 ICDNO *= *+ 1 ;NÚMERO DE DISPOSITIVO 0170 ICCOM *= *+ 1 ;COMANDO DE E/S 0180 ICSTA *= *+ 1 ;ESTADO DE E/S 0190 ICBAL *= *+ 1 ;DIRECCIÓN DEL BÚFER LSB 0200 ICBAH *= *+ 1 ;DIRECCIÓN DEL BÚFER MSB 0210 ICPTL *= *+ 1 ;RUTINA DE PUT DE LSB 0220 ICPTH *= *+ 1 ;RUTINA DE PUT DE MSB 0230 ICBLL *= *+ 1 ;LONGITUD DEL BÚFER LSB 0240 ICBLH *= *+ 1 ;LONGITUD DEL BÚFER MSB 0250 ICAX1 *= *+ 1 ;BYTE AUXILIAR 1 0260 ICAX2 *= *+ 1 ;BYTE AUXILIAR 1 0270 ; 0280 GETREC = 5 ;OBTENER REGISTRO DE TEXTO 0290 PUTREC = 9 ;CORREAR REGISTRO DE TEXTO 0300 ; 0310 CIOV = $E456 ;VECTOR DE ENTRADA DE CIO 0320 RUNAD = $02E0 ;DIRECCIÓN DE EJECUCIÓN 0330 EOL = $9B ;FIN DE LÍNEA 0340 ; 0350 ; CONFIGURACIÓN PARA CIO 0360 ; ------------- 0370 *= $0600 0380 INICIO LDX # 0 ;IOCB 0 0390 LDA # PUTREC ;DESEO SALIDA 0400 STA ICCOM , X ;EMITIR COMANDO 0410 LDA # MSG & 255 ;BYTE BAJO DE MSG 0420 STA ICBAL , X; EN ICBAL 0430 LDA # MSG / 256 ;BYTE ALTO 0440 STA ICBAH , X ; EN ICBAH 0450 LDA # 0 ;LONGITUD DE MSG 0460 STA ICBLH , X ; BYTE ALTO 0470 LDA # $FF ;LONGITUD DE CARACTERES 255 0480 STA ICBLL , X ; BYTE BAJO 0490 ; 0500 ; LLAMAR A CIO PARA IMPRIMIR 0510 ; ----------------- 0520 JSR CIOV ; LLAMAR A CIO 0530 RTS ; SALIR A DOS 0540 ; 0550 ; NUESTRO MENSAJE 0560 ; ----------- 0570 MSG .BYTE "¡HOLA MUNDO!" , EOL 0580 ; 0590 ; INICIALIZAR DIRECCIÓN DE EJECUCIÓN 0600 ; ---------------- 0610 *= RUNAD 0620 .WORD START 0630 .ENDEstos comandos se pueden introducir de forma interactiva para ensamblar el código, entrar en el depurador, ejecutar el programa y, a continuación, salir del depurador cuando haya terminado:
ASM BICHO G600 incógnita
Legado
Poco después de que Shepardson entregara Assembler Editor y Atari BASIC a Atari, Bob Shepardson, el propietario, decidió volver a ser una empresa unipersonal. [ 19 ] O'Brien, Laughton y Wilkinson formaron su propia empresa, Optimized Systems Software (OSS), para continuar el desarrollo de los productos de Atari. Licenciaron el código fuente original de BASIC, Assembler Editor y Atari DOS , que habían escrito en conjunto. [ 20 ]
En 1981, OSS lanzó una versión mejorada del editor de ensamblador, EASMD , en disquete . EASMD fue reemplazado por MAC/65 en 1982. MAC/65 fue uno de los ensambladores más rápidos de la plataforma. [ 13 ] Gran parte del mejor rendimiento de MAC/65 se debe a la tokenización de las líneas de código a medida que se ingresan —como en el caso de Atari BASIC— para reducir la cantidad de trabajo necesario durante el ensamblaje. [ 6 ]
El editor de ensambladores siguió estando disponible a través de Atari y aumentó su popularidad a medida que el precio bajó a 10 o 5 dólares estadounidenses en la segunda mitad de la década de 1980. [ 21 ]
Referencias
Citas
- ↑ Manual 1981 , pág. 63.
- ↑ Crawford, Chris (1982). Código fuente para Eastern Front (1941) . The ATARI Program Exchange.
- ↑ The Creative Atari: Dog Daze y Caverns of Mars . 1983.
- ↑ Crockford, Douglas (1982). Galahad y el manual del Santo Grial (PDF) . El Intercambio de Programas ATARI.
- ↑ Ellison, Peter (abril de 1984). "Entrevista: Arti Haroutunian" . ROM (5): 8.
- 1 2 La Haya 2009 .
- ↑ Manual 1981 , pág. 15.
- ↑ Manual 1981 , pág. 7,31.
- ↑ Manual 1981 , pág. 31.
- ↑ Manual 1981 , págs. 10–12.
- ↑ Manual 1981 , págs. 43–44.
- ↑ Manual 1981 , pág. 25.
- 1 2 Wetmore 1983 , pág. 29.
- ↑ Manual 1981 , pág. 35.
- ↑ Manual 1981 , pág. 41.
- ↑ Manual 1981 , págs. 35–41.
- 1 2 3 4 Entrevista 2015 .
- ↑ Wilkinson, Bill (febrero de 1985). "INSIGHT: Atari". Compute! . pág. 139.
- ↑ Wilkinson 1982 , pág. vi.
- ↑ Wilkinson 1982 , págs. vi–vii.
- ↑ Ratcliff, Matthew (20 de noviembre de 1989). "Referencia del editor de ensambladores de Atari" .
Bibliografía
- Manual de usuario del editor de ensambladores de Atari (PDF) . Atari. 1981.
- Hague, James (2 de agosto de 2009). "Una historia personal de la velocidad de compilación, parte 1" . Programación en el siglo XXI .
- Kathleen O'Brien, Kevin Savetz (13 de marzo de 2015). Kathleen O'Brien, OSS (Pódcast).
- Wetmore, Russ (noviembre de 1983). "Análisis de ensambladores de 8 bits de Atari" . Hi-Res . Vol. 1, n.º 1.
- Wilkinson, Bill (1982). Inside Atari DOS . Optimized Systems Software, Inc. ISBN 0-942386-02-7. Consultado el 4 de abril de 2009 .
Enlaces externos
- Editor de ensamblador en Atari Mania, incluyendo manual
- Información sobre el ensamblador de macros de Atari
- Software de 1981
- Ensambladores
- Software para ordenadores Atari de 8 bits