stringtranslate.com

Editor ensamblador de Atari

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 para herramientas adicionales. Fue programado por Kathleen O'Brien de Shepardson Microsystems , la compañía que escribió Atari BASIC , y Assembler Editor comparte muchos conceptos de diseño con la implementación de ese lenguaje.

Los tiempos de montaje son lentos, lo que dificulta el uso del cartucho en programas más grandes. En el manual, Atari recomendaba el Editor Assembler como herramienta para escribir subrutinas para acelerar Atari BASIC , [1] que sería mucho más pequeño que las aplicaciones completas. El Atari Macro Assembler se ofreció como una alternativa con mejor rendimiento y más funciones, como macros, pero está basado en disco, está protegido contra copia y no incluye editor ni depurador. A pesar de la recomendación, se escribió software comercial utilizando el editor Assembler, 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 Assembler original fue otorgado bajo licencia a Optimized Systems Software , quien envió EASMD basado en él.

Entorno de desarrollo

El editor 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 la memoria simultáneamente, lo que permite editar, ensamblar y ejecutar repetidamente el código resultante sin acceder a un disco o unidad de cinta. [6]

Editar

El cartucho se inicia en modo EDITAR. El programador ingresa líneas de código fuente en el editor tipo Atari BASIC . El texto fuente debe tener como prefijo un número de línea o se interpretará como un comando. Al igual que Atari BASIC, Assembler Editor incluye un comando que se puede utilizar para combinar archivos en una única lista de programas más grande. A diferencia de Atari BASIC, Assembler Editor incluye comandos para crear automáticamente números de línea espaciados, así como para renumerar líneas y eliminarlas en masa . Un comando es útil cuando se trabaja con etiquetas. [7]ENTERFIND

Las instrucciones se enumeran en el orden en que se guardarán en la memoria. El punto de partida 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 tendría el prefijo de la línea *= $0600. [8] Los nombres de las variables se pueden asignar a direcciones específicas, y esto a menudo se combinaba con un incremento *= *+1para codificar directamente las compensaciones 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" agregándole un hash, como LDA #12, que carga el acumulador con el valor decimal 12. Hexadecimal se indica con un signo de dólar, LDA #$12carga el acumulador con 12 hexadecimales o 18 decimales. Se admite el direccionamiento indirecto mediante paréntesis; LDA ($600)utiliza los valores en la ubicación $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 informan con códigos numéricos que se pueden buscar 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]

Assembler Editor fue ampliamente ridiculizado como el ensamblador más lento de la plataforma. Gran parte de esto se debe a que se comparte código con Atari BASIC, también escrito por Shepardson Microsystems. Atari BASIC utiliza rutinas lentas que se utilizan para convertir constantes numéricas en el código a una representación decimal interna codificada en binario a través de rutinas del sistema operativo . Todos los números, incluso los de línea, deben convertirse a decimal codificado en binario. También significa que 1E2es un número de línea legal. [13]

Depurar

Al depurador , en realidad un monitor , se ingresa con el BUGcomando. [14] El Xcomando regresa al modo EDITAR. [15] El depurador permite la visualización y cambio de registros y ubicaciones de memoria, rastreo de código, paso único y desmontaje . [dieciséis]

Historia

Assembler Editor fue escrito por Kathleen O'Brien de Shepardson Microsystems . Atari había contratado a la empresa para ayudar a instalar Microsoft 6502 BASIC en una ROM de 8 KB , algo con lo que los programadores de Atari estaban luchando. En cambio, Bill Wilkinson sugirió diseñar una versión completamente nueva de BASIC, que se convirtió en Atari BASIC . [17]

Mientras Paul Laughton, el marido de O'Brien, escribía Atari BASIC, principalmente, O'Brien trabajó en el editor ensamblador. [17] Fue escrito introduciendo códigos en una máquina de cinta perforada , pasando la cinta a través de una grabadora EPROM y luego probando la ROM resultante en un Atari 800. El cartucho se completó antes de Atari BASIC, y O'Brien pasó algún tiempo trabajando también en partes de ese proyecto. [17]

Como parte del trabajo de Shepardson, se incorporaron una serie de rutinas comunes al sistema operativo de la computadora Atari , incluidas las funciones matemáticas de punto flotante . Estos fueron escritos por O'Brien, 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 Ensamblador y era un tema sobre el que Wilkinson escribía a menudo. [18]

Código de ejemplo

El siguiente es el código 6502 para ¡Hola mundo! escrito para el editor ensamblador:

10 ; HOLA.ASM 20 ; --------- 30 ; 40 ; ESTE PROGRAMA DE ASAMBLEA ATARI 50 ; IMPRIMIRÁ EL "HOLA MUNDO" 60 ; MENSAJE A LA PANTALLA 70 ; 0100 ; CIO EQUIPARA 0110 ; =========== 0120 *= $0340 ;INICIO DE IOCB 0130 IOCB 0140 ; 0150 ICHID *= *+ 1 ;MANEJADOR DE DISPOSITIVO 0160 ICDNO *= *+ 1 ;NÚMERO DE DISPOSITIVO 0170 ICCOM *= *+ 1 ;COMANDO E/S 0180 ICSTA *= *+ 1 ;ESTADO E/S 0190 ICBAL *= *+ 1 ;DIRECCIÓN BUFFER LSB 0200 ICBAH *= *+ 1 ;DIRECCIÓN BUFFER MSB 0210 ICPTL *= *+ 1 ;RUTINA PUT LSB 0220 ICPTH *= *+ 1 ;RUTINA PUT MSB 0230 ICBLL *= *+ 1 ;LENGUA BUFFER LSB 0240 ICBLH *= *+ 1 ;MSB BUFFER LEN 0250 ICAX1 *= *+ 1 ;BYTE AUX 1 0260 ICAX2 *= *+ 1 ;BYTE AUX 1 0270 ; 0280 GETREC = 5 ;OBTENER REGISTRO DE TEXTO 0290 PUTREC = 9 ;PONER REGISTRO DE TEXTO 0300 ; 0310 CIOV = $E456 ;VECTOR DE ENTRADA 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 ;QUIERE SALIDA 0400 STA ICCOM , X ;PROBLEMA CMD 0410 LDA # MSG & 255 ;BYTE BAJO DE MSG 0420 STA ICBAL , X                                                                                                         ; EN ICBAL 0430 LDA # MSG / 256 ; HIGH BYTE 0440 STA ICBAH , X ; EN ICBAH 0450 LDA # 0 ; LONGITUD DE MSG 0460 STA ICBLH , X ; BYTE ALTO 0470 LDA # $FF ; 255 LONGITUD DE CARACTERÍSTICOS 0480 STA ICBLL , X ; BYTE BAJO 0490 ; 0500 ; LLAME AL CIO PARA IMPRIMIR 0510 ; ----------------- 0520 JSR CIOV ;LLAMAR CIO 0530 RTS ;SALIR A DOS 0540 ; 0550 ; NUESTRO MENSAJE 0560 ; ----------- 0570 MSG .BYTE "¡HOLA MUNDO!" , EOL 0580 ; 0590 ; DIRECCIÓN DE EJECUCIÓN INICIAL 0600 ; ---------------- 0610 *= RUNAD 0620 .WORD INICIO 0630 .END                                        

Estos comandos se pueden ingresar de forma interactiva para ensamblar el código, ingresar al depurador, ejecutar el programa y luego salir del depurador cuando finalice:

MAPEBICHOG600X

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 Atari. Obtuvieron la licencia del código fuente original para BASIC, Assembler Editor y Atari DOS , que habían escrito colectivamente. [20]

En 1981, OSS lanzó una versión mejorada de Assembler Editor, EASMD en disquete . EASMD fue reemplazado por MAC/65 en 1982. MAC/65 era uno de los ensambladores más rápidos de la plataforma. [13] Gran parte del rendimiento mejorado de MAC/65 es el resultado de tokenizar líneas de código a medida que se ingresan (como es el caso de Atari BASIC) para reducir la cantidad de trabajo necesario en el momento del ensamblaje. [6]

Assembler Editor siguió estando disponible en Atari y su popularidad aumentó 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

  1. ^ Manual de 1981, pag. 63.
  2. ^ Crawford, Chris (1982). Código fuente del Frente Oriental (1941). El intercambio del programa ATARI.
  3. ^ The Creative Atari: Dog Daze y Cavernas de Marte. 1983.
  4. ^ Crockford, Douglas (1982). Manual de Galahad y el Santo Grial (PDF) . El intercambio del programa ATARI.
  5. ^ Ellison, Peter (abril de 1984). "Entrevista: Arti Haroutunian". ROM (5): 8.
  6. ^ ab La Haya 2009.
  7. ^ Manual de 1981, pag. 15.
  8. ^ Manual de 1981, pag. 7,31.
  9. ^ Manual de 1981, pag. 31.
  10. ^ Manual de 1981, págs. 10-12.
  11. ^ Manual de 1981, págs. 43–44.
  12. ^ Manual de 1981, pag. 25.
  13. ^ ab Wetmore 1983, pág. 29.
  14. ^ Manual de 1981, pag. 35.
  15. ^ Manual de 1981, pag. 41.
  16. ^ Manual de 1981, págs. 35–41.
  17. ^ Entrevista abcd 2015.
  18. ^ Wilkinson, Bill (febrero de 1985). "PERSPECTIVA: Atari". ¡Calcular! . pag. 139.
  19. ^ Wilkinson 1982, pág. vi.
  20. ^ Wilkinson 1982, págs. vi-vii.
  21. ^ Ratcliff, Matthew (20 de noviembre de 1989). "Referencia del editor Atari Assembler".

Bibliografía

enlaces externos