Articulo de referencia

GROTESCO

Chip ANTIC en una placa base Atari 130XE El controlador de interfaz de televisión alfanumérico [ 1 ] ( ANTIC ) es un ASIC LSI dedicado a generar gráficos de computadora 2D para ...

Chip ANTIC en una placa base Atari 130XE

El controlador de interfaz de televisión alfanumérico [ 1 ] ( ANTIC ) es un ASIC LSI dedicado a generar gráficos de computadora 2D para ser mostrados en una pantalla de televisión o pantalla de computadora .

Bajo la dirección de Jay Miner , el chip fue diseñado entre 1977 y 1978 por Joe Decuir , Francois Michel y Steve Smith [ 2 ] para las computadoras Atari de 8 bits lanzadas por primera vez en 1979. El chip fue patentado por Atari, Inc. en 1981. [ 3 ] ANTIC también se utiliza en la consola de videojuegos Atari 5200 de 1982 , que comparte la mayor parte del mismo hardware que las computadoras de 8 bits.

Para cada fotograma de vídeo, ANTIC lee las instrucciones para definir el área de juego o los gráficos de fondo, y luego envía un flujo de datos al chip CTIA o GTIA correspondiente , que añade color y superpone los sprites (denominados "gráficos de jugador/misil" por Atari). Cada instrucción de ANTIC corresponde a líneas de exploración en blanco o a uno de los 14 modos gráficos utilizados para una banda horizontal de la pantalla. La altura de cada banda depende del modo. Las instrucciones conforman una lista de visualización , en la jerga de Atari, que especifica cómo se construye toda la pantalla a partir de una pila de modos individuales.

La lista de visualización especifica el origen de los datos de cada fila. En los modos de caracteres, la dirección base de los mapas de bits de caracteres se almacena en un registro integrado y puede modificarse. Las instrucciones de la lista de visualización permiten el desplazamiento horizontal y vertical preciso, e indican que debe producirse una interrupción. Una interrupción permite la ejecución de código arbitrario del 6502, generalmente para modificar la configuración de visualización durante la transmisión de un fotograma.

La revista informática de Atari, Antic, recibió su nombre del chip. [ 4 ]

Características

La siguiente lista describe las capacidades inherentes del hardware de ANTIC, es decir, la funcionalidad prevista del hardware por sí mismo, sin incluir los resultados obtenidos mediante interrupciones gestionadas por la CPU o núcleos de visualización que frecuentemente provocan cambios en los registros.

ANTIC utiliza DMA para leer un programa llamado lista de visualización que especifica estas características del campo de juego:

  • 14 modos gráficos diferentes
    • 6 modos de personaje
      • 4 tipos de representación de fuentes/glifos
    • 8 modos de mapa de bits
  • Genera un número variable de líneas de escaneo en blanco.
  • Los modos de texto y mapa del tablero de juego se pueden combinar en pantalla.
  • Altura de pantalla variable hasta sobreexploración vertical
  • Desplazamiento grueso horizontal y vertical
  • Identifique las secciones de la pantalla sujetas a desplazamiento fino horizontal y/o vertical.
  • Activa una rutina de interrupción gestionada por la CPU, denominada "Interrupción de lista de visualización", en líneas de exploración específicas (también llamada " interrupción de trama " o " interrupción de borrado horizontal " en otros sistemas).
  • Al final del fotograma de visualización, se activa una rutina de interrupción gestionada por la CPU, denominada "Interrupción de borrado vertical".

Otras funciones basadas en registros:

Versiones

Listados por número de pieza.

  • C012296 NTSC: Se utiliza en los ordenadores Atari 400, 800 y 1200XL, y en el Atari 5200 [ 5 ] [ 6 ]
  • C014887 PAL/SECAM: Se utiliza en los ordenadores Atari 400 y 800.
  • C021697 NTSC: Se utiliza en los modelos Atari 600XL, 800XL y XE.
  • C021698 PAL/SECAM: Se utiliza en los modelos Atari XL y XE.

Atari, Inc. tenía la intención de combinar las funciones de los chips ANTIC y GTIA en un solo circuito integrado para reducir los costos de producción de las computadoras Atari y las consolas 5200. Se estaban desarrollando dos prototipos de estos circuitos, pero ninguno llegó a producirse en serie.

Diagrama de pines

Diagrama de pines del Atari ANTIC (C012296)

Registros

Los ordenadores Atari de 8 bits y la consola Atari 5200 asignan el chip ANTIC a la página hexadecimal $D4xx.

ANTIC proporciona 15 registros de lectura/escritura que controlan los parámetros de visualización del tablero, DMA para gráficos de jugador/misil, desplazamiento fino, entrada de lápiz óptico e interrupciones. Los registros de hardware no devuelven los valores escritos al leerse. Este problema se resuelve mediante registros de sombra del sistema operativo implementados en la RAM convencional, que almacenan el último valor escrito en los registros. Los registros de sombra del sistema operativo se copian de la RAM a los registros de hardware durante el borrado vertical. Por lo tanto, cualquier escritura en los registros de hardware que tengan registros de sombra correspondientes será sobrescrita por el valor de los registros de sombra durante el siguiente borrado vertical.

Algunos registros de hardware de escritura no tienen registros de sombra correspondientes. Una aplicación puede escribir en ellos de forma segura sin que su valor se sobrescriba durante el borrado vertical. Si la aplicación necesita conocer el último estado del registro, es su responsabilidad recordar qué información escribió.

También existen registros de sombra del sistema operativo para algunos registros de lectura, donde la lectura del valor directamente del hardware en una etapa desconocida del ciclo de visualización puede arrojar resultados inconsistentes.

En los listados de registros individuales que aparecen a continuación, se aplica la siguiente leyenda:

DMACTL $D400 Escribir

SOMBRA: SDMCTL $022F

Control de acceso directo a memoria (DMA)

DMACTL controla el comportamiento DMA de ANTIC para los gráficos del campo de juego y del misil del jugador ( sprite ).

Valores de bits de Ancho del campo de juego :

Consulte también la sección "Lista de visualización DMA" relativa a la visualización del tablero de juego.

Valores de los bits DMA del jugador/misil :

La función DMA de Jugador/Misil de ANTIC lee bytes de la memoria y envía datos para actualizar los registros de patrones gráficos GRAFP0, GRAFP1, GRAFP2, GRAFP3 y GRAFM de CTIA/GTIA , liberando así a la CPU de la creación de gráficos ( sprites ) de Jugador/Misil. Estos bits activan la transmisión de datos de Jugador y Misile a CTIA/GTIA. CTIA/GTIA también debe estar configurado para recibir los datos a través de su registro GRACTL para que la función DMA de Jugador/Misil funcione correctamente.

Cuando se habilita el DMA del reproductor, el DMA del misil se activa automáticamente para mantener la sincronización del DMA constante, pero los datos no se entregan al registro GRAFM del misil.

Cuando está habilitada, la transferencia de datos maestros (DMA) del jugador/misil se produce en cada línea de exploración de la pantalla visible, desde la línea de exploración 8 hasta la 247. Por lo tanto, los datos del jugador/misil en el mapa de memoria (consulte PMBASE de ANTIC ) que se encuentran por encima y por debajo de esos recuentos de líneas de exploración no se utilizan ni se muestran.

Valores de bits de resolución del jugador/misil :

  • $00 - Resolución de doble línea. ANTIC actualiza su dirección de búsqueda DMA cada dos líneas de exploración y actualiza los registros de patrones gráficos de jugadores/misiles CTIA/GTIA en cada línea de exploración, de modo que cada patrón de bytes de jugador/misil tiene dos líneas de exploración de altura. Cuando la resolución de doble línea está habilitada, el registro CTIA/GTIA VDELAY ($D01C hexadecimal /53276 dec ) funciona enmascarando las actualizaciones en las líneas de exploración pares, lo que resulta en un desplazamiento del patrón de bits de los jugadores y misiles individuales una línea de exploración hacia abajo.
  • $10 - Resolución de línea única. Se produce una búsqueda DMA y una actualización del registro del jugador/misil en cada línea de exploración. El VDELAY del registro CTIA/GTIA ($D01C hexadecimal /53276 dec ) que enmascara las actualizaciones en líneas de exploración pares reduce efectivamente la resolución de línea única a resolución de doble línea.

Las actualizaciones del registro de patrones ANTIC DMA y Player/Missile se producen en cada línea de exploración, independientemente de la resolución. Cuando la resolución de doble línea está activa, la memoria Player/Missile puede modificarse entre las lecturas DMA redundantes, cambiando así el patrón enviado a los registros GRAF* y generando Player/Missile con una resolución aparente de una sola línea.

Mostrar lista de valores de bits DMA:

  • $00 - Deshabilitar la lista de visualización.
  • $20 - Habilitar la lista de visualización.

La visualización del área de juego requiere que la función DMA de la lista de visualización esté habilitada y que se especifique un ancho de área de juego. Si alguno de estos valores es cero, no se generará ninguna visualización del área de juego.

CHACTL $D401 Escribir

SOMBRA: GRÁFICO $02F3

Control de personajes

CHACTL controla la visualización de caracteres.

Los valores de bits de control de caracteres realizan las siguientes acciones:

Los bits de vídeo inverso y vídeo en blanco de CHACTL afectan a la visualización de caracteres en los modos de texto ANTIC 2 y 3 que tienen el bit más significativo activado (caracteres $80 a $FF). Al alternar los valores de los bits de CHACTL, se puede hacer parpadear o apagar estos caracteres globalmente en toda la pantalla.

Las opciones "Video Inverse" y "Video Blank" activadas simultáneamente muestran los caracteres de vídeo invertidos como un espacio en blanco invertido. Estas opciones funcionan en los modos ANTIC 2 y 3, y no afectan a los demás modos de texto 4, 5, 6 y 7.

El bit Video Reflect afecta a todos los modos de texto. Video Reflect es útil para situaciones que requieren efectos de espejo sin definir un nuevo conjunto de caracteres. Un uso ideal es en juegos de cartas que muestran caras de cartas precisas con palos invertidos. Dado que esto refleja verticalmente los datos del glifo antes de su uso, el efecto parece inconsistente para los descendentes del modo ANTIC 3, donde los bytes de glifo 6 y 7 aparecen en la parte inferior del área del descendente.

DLISTL/DLISTH $D402/$D403 Escribir

SOMBRA: SDLSTL/SDLSTH $0230/$0231

Puntero de lista de visualización

ANTIC comienza a ejecutar la lista de visualización a la que apunta la dirección de 16 bits en los registros DLISTL/DLISTH (D402-D403 hexadecimal / 54274-54275 decimal ). Los registros de dirección se actualizan durante la ejecución de la lista de visualización mediante las instrucciones JMP (Salto) y JVB (Salto y espera de espacio en blanco vertical) de ANTIC. La dirección también se actualiza mediante la rutina de interrupción de espacio en blanco vertical (VBI) del sistema operativo utilizando los valores en los registros de sombra SDLSTL/SDLSTH (0230-0231 hexadecimal / 560-561 decimal ).

Cuando la interrupción de borrado vertical del sistema operativo está habilitada, las actualizaciones directas de los registros ANTIC DLIST por parte de la CPU o las instrucciones de salto ANTIC serán sobrescritas por el sistema operativo durante el siguiente borrado vertical con los valores de los registros de sombra. Por lo tanto, el cambio de página implementado mediante listas de visualización que apuntan a la siguiente lista de visualización en serie no funcionará como se espera a menos que se deshabilite la interrupción de borrado vertical.

HSCROL $D404 Escribir

Desplazamiento fino horizontal

Este registro especifica la distancia del desplazamiento horizontal fino en relojes de color. Solo los 4 bits menos significativos son relevantes. El rango de valores de 16 relojes de color permite que ANTIC desplace el texto del Modo 2 cuatro caracteres y el texto del Modo 6 dos caracteres antes de que sea necesario un desplazamiento grueso.

Cuando se habilita el desplazamiento horizontal para una línea de modo, ANTIC obtiene el siguiente incremento de tamaño mayor que el ancho de pantalla actual para proporcionar el búfer de datos sujeto al control de desplazamiento horizontal. Al mostrar un ancho estrecho, ANTIC obtiene la RAM de pantalla necesaria para el ancho normal. Del mismo modo, para el ancho normal, ANTIC obtiene la RAM de pantalla necesaria para el ancho ancho.

ANTIC almacena en búfer los primeros bytes leídos de la memoria de pantalla que son suficientes para cubrir el rango de movimiento del reloj de 16 colores. (De dos a cuatro bytes, según el modo de visualización). El valor HSCROL especifica cuántos relojes de color deben emitirse desde los datos almacenados en búfer, comenzando desde el último (el más a la derecha) del último byte almacenado y avanzando hacia la izquierda. Cuando HSCROL es 0, no se emiten relojes de color desde el búfer, por lo que el primer byte de pantalla que se muestra es el primero después de los datos almacenados. A medida que HSCROL aumenta, se agregan más relojes de color desde el extremo (lado derecho) de los datos almacenados al borde izquierdo de la pantalla, lo que provoca que el desplazamiento fino mueva el contenido de la pantalla hacia la derecha.

El modo ANTIC F (alta resolución, píxeles de reloj de color de 1/2) solo se puede desplazar de dos píxeles en dos píxeles, porque HSCROL especifica relojes de color.

Los modos ANTIC que utilizan las interpretaciones de color GTIA alternativas deben desplazarse un píxel GTIA completo (dos relojes de color). Solo deben usarse valores pares para garantizar un desplazamiento correcto. Los valores impares de HSCROL cambiarán el flujo de píxeles a un estado diferente que GTIA interpretará como colores distintos.

A diferencia de muchas plataformas, el desplazamiento horizontal de Atari es visualmente consistente y está libre de artefactos de "parpadeo" de color debido a que el tamaño de los píxeles de Atari coincide con la sincronización del reloj de color necesaria para obtener colores precisos.

VSCROL $D405 Escribir

Desplazamiento vertical fino

Este registro especifica la distancia del desplazamiento vertical fino en líneas de exploración. Los 4 bits menos significativos son importantes; sin embargo, el valor del desplazamiento vertical debe estar entre 0 y la altura de la línea de exploración del modo ANTIC  menos  1. Un desplazamiento mayor que el número de líneas de exploración del modo ANTIC provoca que se repitan líneas de datos, interrumpiendo la continuidad del desplazamiento fino (aunque esto también puede utilizarse como un comportamiento explotable).

La región de desplazamiento vertical se define activando el bit VS ($20) en una serie secuencial de líneas de modo ANTIC en la lista de visualización . La primera línea de modo sin el bit VS activado marca el final de la región de desplazamiento y se utiliza como línea de búfer para proporcionar la nueva información que se desplaza hacia arriba hasta la parte inferior de la región de desplazamiento.

El valor de desplazamiento vertical indica el número de línea de exploración para comenzar la visualización en la primera línea de modo y también se utiliza como el número de línea de exploración para finalizar la visualización en la última línea de modo (la línea sin el bit VS activado).

Ejemplo: Dado un modo ANTIC de ocho líneas de exploración (modos de texto 2, 4 o 6) con el bit VS activado en dos líneas de modo adyacentes, la región de desplazamiento consta de tres líneas de modo; la tercera línea en la región de desplazamiento es la primera línea de modo encontrada sin el bit VS activado. Cuando el desplazamiento vertical no está activado en la lista de visualización, las tres líneas de modo darían como resultado 24 líneas de exploración mostradas. Cuando los bits VS están activados en las instrucciones del modo de la lista de visualización como se describe y el valor VSCROL se establece en 2, la primera línea de modo en la región comienza a mostrarse en la línea de exploración 2 mostrando las líneas de exploración 2 a 7 (seis líneas de exploración u 8  -  VSCROL), la segunda línea de modo se muestra completamente (ocho líneas de exploración) y la última línea de modo termina en la línea de exploración 2 mostrando las líneas de exploración 0 a 2 (tres líneas de exploración o VSCROL  +  1). El total de líneas de exploración mostradas en la región de desplazamiento es entonces 6  +  8  +  3  =  17 líneas de exploración.

Dado que el desplazamiento fino se basa en líneas de escaneo y no en la altura de los píxeles, y el movimiento de la región de desplazamiento se realiza simplemente omitiendo líneas de escaneo de la primera línea de Modo y añadiendo líneas de escaneo a la última línea de Modo, es posible utilizar diferentes Modos gráficos dentro de la región de desplazamiento. Esto solo requiere mayor cuidado al determinar cuántas líneas de escaneo se pueden desplazar para la primera y la última línea de Modo actuales en la región de desplazamiento.

Las líneas en modo vacío no pueden estar contenidas dentro de una región de desplazamiento, ya que las instrucciones de línea en modo vacío carecen inherentemente de un bit de modificador de desplazamiento vertical. (Las instrucciones de línea en modo vacío especifican el número de líneas en blanco mediante los bits 7 a 5, que funcionan como modificadores LMS, HS y VS para las instrucciones de modo de juego "normales"). Sin embargo, una instrucción en modo vacío puede utilizarse para finalizar una región de desplazamiento y sigue estando sujeta a los cambios de altura de línea de exploración esperados según el valor de desplazamiento vertical.

PMBASE $D407 Escribir

Dirección de la base de misiles del jugador

Esto especifica la página de la dirección base para los gráficos del jugador/misil. Cuando se utilizan gráficos de resolución de doble línea para el jugador/misil, el valor PMBASE debe comenzar en un límite de 1K. Cuando se utilizan gráficos de resolución de línea simple para el jugador/misil, el valor PMBASE debe comenzar en un límite de 2K.

CHBASE $D409 Escribir

SOMBRA: CHBAS $02F4

Dirección base de caracteres

Esto especifica la página de la dirección base para el conjunto de caracteres. Los modos ANTIC 2, 3, 4 y 5 utilizan 128 caracteres en el conjunto de caracteres y requieren que el valor CHBASE comience en un límite de 1K. Los modos ANTIC 6 y 7 utilizan 64 caracteres, por lo que el valor CHBASE debe comenzar en un límite de 512 bytes.

El valor predeterminado habitual es $E0 hexadecimal /224 decimal para el conjunto de caracteres en la ROM en $E000 hexadecimal /57344 decimal .

WSYNC $D40A Escribir

Espere a que se complete la sincronización horizontal.

Este registro permite que los programas se sincronicen con la pantalla. Al escribir en este registro, el programa 6502 se detiene hasta el final de la línea de exploración actual. Este comportamiento se usa comúnmente durante las interrupciones de la lista de visualización para producir transiciones/cambios fluidos entre las líneas de exploración. El valor escrito no es importante.

VCOUNT $D40B Leer

Contador de línea vertical

Este registro monitoriza la línea de exploración que se está generando. El valor devuelto es la línea de exploración real dividida por 2. Se incluyen las líneas en blanco generadas al inicio de la visualización. El valor para NTSC oscilará entre 0 y 130, y para PAL, entre 0 y 155. Este valor resulta útil durante las interrupciones de la lista de visualización para identificar la posición vertical de la pantalla.

PENH $D40C Leer

SOMBRA: LPENH $0234

Lápiz óptico en posición horizontal

Esto contiene la posición horizontal del reloj de color cuando se presiona el gatillo del lápiz/pistola de luz. El registro de sombra es la fuente recomendada para leer esta información, ya que se actualizará durante el borrado vertical, lo que garantiza resultados consistentes y fiables. Los programas deben evitar leer el registro de hardware directamente a menos que el programa tenga la certeza de que el registro se lee en un momento que garantice la validez del valor. Las pistolas de luz para Atari funcionan de la misma manera que los lápices de luz, con la adición de una lupa óptica que permite leer la pantalla desde una mayor distancia. El dispositivo de entrada del lápiz/pistola de luz requiere un CRT convencional que utilice un haz de electrones de barrido. El lápiz/pistola de luz no es compatible con los televisores y monitores LCD modernos.

PENV $D40D Leer

SOMBRA: LPENV $0235

Lápiz óptico en posición vertical

Este registro contiene el valor VCOUNT capturado al presionar el gatillo del lápiz/pistola de luz. Se recomienda leer esta información en el registro de sombra, ya que se actualiza durante el borrado vertical, lo que garantiza resultados consistentes y fiables. Los programas deben evitar leer el registro de hardware directamente, a menos que estén seguros de que la lectura se realiza en un momento que garantice la validez del valor. Las pistolas de luz para Atari funcionan de la misma manera que los lápices de luz, con la adición de una lupa óptica que permite leer la pantalla desde una mayor distancia. El dispositivo de entrada del lápiz/pistola de luz requiere un CRT convencional con un haz de electrones de barrido. El lápiz/pistola de luz no es compatible con televisores y monitores LCD modernos.

NMIEN $D40E Escribir

Habilitación de interrupción no enmascarable (NMI)

NMIEN habilita las interrupciones no enmascarables. Los valores de los bits:

El sistema operativo establece NMIEN al valor predeterminado $40 hexadecimal /64 decimal durante las rutinas de encendido. Las rutinas de servicio NMI primero recorren $FFFA hexadecimal /65530 decimal , que determina la causa, y luego transfieren el control a la rutina de servicio de interrupción.

DLI:

Si el bit DLI de NMIEN está activado cuando ANTIC encuentra una instrucción de lista de visualización con el bit modificador DLI activado, entonces ANTIC activa el DLI en la última línea de exploración de esa línea de modo de instrucción de lista de visualización.

El sistema operativo no utiliza DLI, por lo que la dirección predeterminada del vector DLI (VDSLST, $0200 hexadecimal / 512 decimal ) apunta a una instrucción RTI en la ROM. La aplicación que utilice DLI debe modificar VDSLST para que apunte a la rutina DLI deseada antes de habilitar la DLI.

El acumulador 6502 y el contenido de los registros X e Y no se conservan antes de entrar en la rutina DLI. Es responsabilidad de la rutina DLI guardar el estado de los registros que se utilizarán durante su ejecución, y la última acción consiste en restaurar los valores originales de los registros antes de finalizar con una instrucción RTI. Las rutinas suelen almacenar los valores de los registros en la pila del 6502.

Si se utilizan varias DLI, la primera interrupción actualiza VDSLST para que apunte a la dirección de la siguiente interrupción, y así sucesivamente para las interrupciones subsiguientes. La última rutina de interrupción de lista de visualización en pantalla hace que VDSLST vuelva a apuntar a la dirección de la primera interrupción de lista de visualización. Como alternativa, se puede utilizar una rutina de interrupción de borrado vertical para restablecer la dirección de VDSLST y garantizar que las DLI permanezcan sincronizadas con la pantalla.

VBI:

Cuando el bit VBI de NMIEN está activado, ANTIC genera una interrupción de borrado vertical al finalizar el procesamiento del JVB (salto vertical) al final de la lista de visualización . El sistema operativo utiliza el borrado vertical para realizar diversas tareas de mantenimiento (entre otras cosas, actualizar temporizadores, copiar los valores de entrada del controlador a sus registros de sombra y copiar el contenido de los registros de sombra a los registros de hardware de los chips personalizados).

El sistema operativo salta a través de VVBLKI ($0222 hexadecimal /546 decimal ) para iniciar la rutina de servicio VBI del sistema operativo, y la rutina VBI del sistema operativo sale con un salto a través de VVBLKD ($0224 hexadecimal /548 decimal ). Por defecto, VVBLKI apunta al vector de salto del sistema operativo SYSVBV ($E45F hexadecimal /58463 decimal ) para iniciar la interrupción de borrado vertical, y VVBLKD apunta al vector de salto del sistema operativo XITVBV ($E462 hexadecimal /58466 decimal ).

Los programas de usuario pueden insertar la ejecución de código personalizado antes (inmediato) o después (diferido) de las rutinas de interrupción de borrado vertical del sistema operativo. Dado que la interrupción de borrado vertical del sistema operativo podría llamarse mientras un programa de usuario está actualizando los vectores, el sistema operativo proporciona una rutina, SETVBV ($E45C hex /58460 dec ), que actualizará de forma segura los vectores VVBLKI o VVBLKD para que apunten a una nueva rutina:

  • Para establecer un nuevo destino de salto para VVBLKI (Inmediato), establezca el registro Y en el byte bajo de la dirección de destino, el registro X en el byte alto de la dirección de destino y el acumulador en 6, luego JSR SETVBV. El código de usuario llamado a través de VVBLKI simplemente necesita salir saltando al espacio en blanco vertical del sistema operativo con JMP SYSVBV ($E45F hex /58463 dec ).
  • Para establecer un nuevo destino de salto para VVBLKD (diferido), establezca el registro Y en el byte bajo de la dirección de destino, el registro X en el byte alto de la dirección de destino y el acumulador en 7, luego JSR SETVBV.. El código de usuario llamado a través de VVBLKD debe salir saltando a la rutina de salida de vacío vertical del sistema operativo con un JMP XITVBV ($E462 hexadecimal /58466 decadecimal ).

Cuando el indicador CRITIC ($42 hexadecimal /66 decimal ) no es cero, se suprime la ejecución de la interrupción de borrado vertical diferido, independientemente de las direcciones en los vectores. El valor predeterminado de CRITIC, 0, permite la ejecución de las interrupciones de borrado vertical inmediato y diferido.

NMIRES $D40F Escribir

Reinicio de interrupción no enmascarable (NMI)

Cualquier valor escrito en NMIRES reinicia los bits de NMIST que indican el motivo de la interrupción no enmascarable más reciente. Esto lo utiliza el código de despacho de interrupciones del sistema operativo y, por lo general, un programa de usuario no tendría por qué escribir aquí.

NMIST $D40F Leer

Estado de interrupción no enmascarable (NMI)

La rutina de despacho de interrupciones no enmascarables del sistema operativo lee este registro para determinar el motivo de la interrupción y, por lo tanto, qué rutina de servicio debe ejecutar.

Los valores de los bits:

  • $20 - Reinicio de la interrupción de la tecla
  • $40 - Interrupción vertical en blanco
  • $80 - Interrupción de lista de visualización

Lista de visualización

La lista de visualización es la lista de instrucciones que le indican a ANTIC cómo generar la pantalla. Los datos procesados ​​por este programa constituyen la memoria de pantalla. La salida es la visualización gráfica. El tipo de gráficos en la salida (texto o píxeles direccionables) viene determinado por las instrucciones de la lista de visualización.

La CPU escribe la lista de visualización y los datos de visualización en la RAM . ANTIC lee las instrucciones de la lista de visualización, la memoria de pantalla y la información del conjunto de caracteres desde la RAM mediante una técnica conocida como acceso directo a memoria (DMA) . La función de un programa en lenguaje máquina BASIC o 6502 es inicializar la pantalla: configurar las instrucciones de la lista de visualización, organizar la memoria de pantalla (y el conjunto de caracteres, si corresponde) y, a continuación, indicar a ANTIC que inicie la visualización. Después de esto, ANTIC se encarga automáticamente de generar la visualización en pantalla. Esto permite a los ordenadores Atari de 8 bits producir visualizaciones complejas de modo mixto sin intervención directa de la CPU. Otras plataformas, incluso las diseñadas mucho más tarde, no pueden combinar modos gráficos en una misma pantalla, o hacerlo sin interrupciones complejas de la CPU.

ANTIC procesa las instrucciones en la lista de visualización, lee la memoria de pantalla (y los datos del conjunto de caracteres, si corresponde), traduce esta información en un flujo de datos gráficos en tiempo real y envía este flujo de datos al chip CTIA/GTIA, que aplica el color a los píxeles gráficos y genera el vídeo. Juntos, los dos chips proporcionan 6 modos de texto y 8 modos gráficos (14 en total). La versión más avanzada, GTIA , añade tres interpretaciones de color alternativas para cada modo gráfico de ANTIC, lo que proporciona un total de 56 (14 por cuatro) modos gráficos. Sin embargo, solo los modos gráficos de ANTIC basados ​​en píxeles de reloj de medio color son capaces de expresar la paleta de colores completa proporcionada por las nuevas interpretaciones de color, y de esos modos, los más convenientes para su uso son los modos ANTIC 2 (modo gráfico OS 0 texto) y ANTIC F (modo gráfico OS 8). Por lo tanto, el número razonable de modos gráficos únicos disponibles utilizando las capacidades de hardware inherentes de ANTIC + GTIA es de 20: 14 modos ANTIC + 3 interpretaciones de color adicionales para cada uno de los modos ANTIC 2 y F.

Descripción general de las instrucciones de la lista de visualización

La pantalla de Atari se basa en una serie de instrucciones ANTIC, cada una de las cuales describe una línea de texto o un modo gráfico que se ejecuta progresivamente desde la parte superior hasta la inferior de la pantalla, hasta que se completa el área de visualización deseada. En efecto, la pantalla es una pila vertical de instrucciones de modo ANTIC. Los diferentes modos ocupan un número distinto de líneas de exploración y utilizan diferentes cantidades de RAM. El diseño de una pantalla requiere contar las líneas de exploración de cada instrucción de modo y controlar la memoria asignada a cada línea para evitar exceder las limitaciones de ANTIC o del estándar de vídeo. (Véase la sección Limitaciones ).

La combinación de varios modos gráficos en una misma pantalla se realiza simplemente proporcionando diferentes instrucciones de modo de caracteres o mapas para la posición deseada en la pantalla. Por ejemplo, los modos gráficos del 1 al 8 del sistema operativo Atari ofrecen visualización a pantalla completa o una ventana de texto de cuatro líneas en la parte inferior. Esta función de pantalla dividida se logra utilizando las capacidades inherentes de ANTIC y su lista de visualización, sin interrupciones de la CPU ni manipulación personalizada del hardware de vídeo.

ANTIC tiene cuatro tipos de instrucciones:

  • Línea en blanco: 8 instrucciones para mostrar de 1 a 8 líneas horizontales en blanco.
  • Instrucciones de salto: 2 tipos de instrucciones de salto que recargan el contador de programa de ANTIC (instrucciones de 3 bytes).
  • Modo carácter: 6 instrucciones para mostrar datos de caracteres.
  • Modo mapa: 8 instrucciones para mostrar píxeles de colores.

Las instrucciones del modo Mapa y Personaje tienen modificadores adicionales que se pueden habilitar con la instrucción:

  • Desplazamiento horizontal: permite el desplazamiento horizontal fino.
  • Desplazamiento vertical: permite el desplazamiento vertical fino.
  • Exploración de memoria de carga (LMS): establece la dirección de inicio de los datos gráficos/de caracteres (instrucción de 3 bytes).
  • DLI - Interrupción de lista de visualización (denominada " interrupción de trama " o " interrupción de borrado horizontal " en otros sistemas)

Ejecución de instrucciones

ANTIC comienza a ejecutar la lista de visualización a la que apunta la dirección de 16 bits en los registros DLISTL/DLISTH ($D402-$D403 hexadecimal /54274-54275 decimal ). ANTIC incrementa automáticamente los registros de dirección con cada instrucción ejecutada. Durante el incremento automático, ANTIC solo puede actualizar los 10 bits menos significativos de la dirección, lo que limita el rango de direcciones de 1K a que la lista de visualización comience y termine dentro de él.

Los registros también se actualizan durante la ejecución de la lista de visualización mediante las instrucciones JMP (Salto) y JVB (Salto y espera de espacio en blanco vertical) de ANTIC. Estas instrucciones cargan los 16 bits completos de la dirección, por lo que pueden utilizarse para sortear la limitación de 1K de la lista de visualización.

La dirección también se actualiza mediante la rutina de interrupción de borrado vertical (VBI) del sistema operativo, utilizando los valores de los registros de sombra del sistema operativo SDLSTL/SDLSTH ($0230-$0231 hexadecimal /560-561 decimal ). Cuando la rutina VBI del sistema operativo está habilitada, las actualizaciones directas a los registros ANTIC DLIST por parte de la CPU o las instrucciones de salto ANTIC serán sobrescritas por el sistema operativo durante el siguiente borrado vertical. Dado que el procesamiento VBI es el estado habitual del sistema, la mayoría de los programas dependen de esto y solo actualizan los registros de sombra del sistema operativo (SDLSTL/SDLSTH $0230-$0231 hexadecimal /560-561 decimal ) para establecer la lista de visualización.

Bytes de instrucción

Esta leyenda se aplica a los diagramas de bits de instrucciones que aparecen a continuación:

Fragmentos de las instrucciones:

Los bits 7:4 son modificadores para las instrucciones del modo de juego en los bits 3:0. El valor 1 activa el modificador y el valor 0 lo desactiva.

  • Bit 3:Bit 0 - Instrucciones del modo de juego.
    • Los valores $00 y $01 son instrucciones especiales.
    • Los valores de modo $02 a $0F especifican los modos de personaje y mapa del campo de juego.
  • Bit 4 - $10 - Desplazamiento horizontal.
  • Bit 5 - $20 - Desplazamiento vertical.
  • Bit 6 - $40 - Cargar escaneo de memoria.
  • Bit 7 - $80 - Interrupción de la lista de visualización.

Instrucciones del Modo 0 - Líneas en blanco

Cuando todos los bits de modo son cero, ANTIC no realiza DMA del campo de juego y muestra una o más líneas de exploración en blanco del color de fondo. Para los modos de interpretación de color normales, el "fondo" es el registro de color COLBK (D01A hexadecimal /53274 decimal ) OS Shadow COLOR4 (02C8 hexadecimal /712 decimal ), aunque esto difiere para los modos de interpretación de color GTIA. Consulte la sección sobre COLBK en la página de GTIA para obtener más información.

El número de líneas de exploración en blanco se especifica mediante el valor de los bits 4 a 6, lo que permite un rango de 0 a 7. ANTIC suma uno a este valor y muestra el número resultante de líneas de exploración. Valores de instrucción:

Las líneas en blanco son útiles para retrasar el inicio de la visualización en pantalla hasta que el haz de electrones haya abandonado el área de sobreexploración vertical en la parte superior de la pantalla. El sistema operativo Atari crea todos sus modos gráficos a partir de tres instrucciones hexadecimales de 70 bits y decimales de 112 bits (o 24 líneas de exploración en blanco) para este propósito. Las líneas en blanco también son útiles para dividir partes de una pantalla personalizada con diferentes funciones (por ejemplo, un borde entre una pantalla de estado y los gráficos principales).

Las líneas en modo vacío no pueden estar contenidas dentro de una región de desplazamiento, ya que las instrucciones de línea en modo vacío carecen inherentemente de bits de modificador de desplazamiento fino. Sin embargo, una instrucción en modo vacío puede utilizarse para finalizar una región de desplazamiento vertical y sigue estando sujeta a los cambios de altura de línea de exploración esperados según el valor de desplazamiento vertical.

El bit modificador DLI está disponible para las instrucciones de línea en blanco. Cuando el bit DLI está habilitado, se activará una interrupción de la lista de visualización durante la última línea de exploración en blanco de la instrucción. Dado que el DMA del campo de juego no se produce durante las líneas en blanco (solo se produce el DMA de la lista de visualización y el DMA del jugador/misil (si está habilitado)), las líneas en blanco se pueden usar donde no se necesiten gráficos del campo de juego, lo que proporciona más tiempo para las rutinas de interrupción de la lista de visualización que modifican los registros de color o las posiciones del jugador/misil.

Instrucciones del Modo 1 - Salto

Cuando el valor del modo es 1, ANTIC ejecuta un salto en su programa (la lista de visualización). Los dos bytes siguientes de la lista de visualización se cargan en los registros DLISTL/DLISTH de ANTIC ($D402-$D403 hexadecimal /54274-54275 decimal ), cambiando el punto de ejecución de la siguiente instrucción.

Hay dos tipos de saltos:

  • 01 hexadecimal /1 decimal JMP - Saltar a una dirección. Esto se utiliza para cargar una nueva dirección de ejecución en medio de la ejecución de la Lista de visualización, normalmente cuando la Lista de visualización debe cruzar un límite de 1K.
  • 41 hexadecimal / 65 decimal JVB - Saltar a la dirección y esperar un espacio en blanco vertical. (JMP + bit LMS activado) Esto se utiliza para finalizar la lista de visualización. La dirección utilizada debe ser la dirección de inicio de la lista de visualización.

Los registros DLIST también se actualizan mediante la rutina de interrupción de borrado vertical (VBI) del sistema operativo, utilizando los valores de los registros de sombra SDLSTL/SDLSTH (0230-0231 hexadecimal / 560-561 decimal ). Cuando la rutina VBI del sistema operativo está habilitada, las actualizaciones directas a los registros ANTIC DLIST por parte de la CPU o las instrucciones ANTIC Jump serán sobrescritas por el sistema operativo durante el siguiente borrado vertical. Esto implica que una instrucción ANTIC JVB (Jump and wait for Vertical Blank) que especifique una dirección no válida (o una dirección válida que difiera del valor de sombra SDLST) no tiene ningún efecto real en la pantalla.

El argumento de JVB generalmente apunta al inicio de la misma Lista de Visualización, pero también puede apuntar a otra Lista de Visualización, de modo que se ejecuta una cadena de Listas de Visualización tras saltos verticales consecutivos. Por supuesto, para que ANTIC controle el inicio de la siguiente Lista de Visualización, la interrupción de Salto Vertical del Sistema Operativo debe estar deshabilitada para evitar que sobrescriba los registros de hardware de ANTIC con los valores de los registros de sombra.

Instrucciones para los modos 2 a F: Modos de personaje y mapa del tablero de juego

A continuación se muestra la lista de instrucciones para los modos gráficos de ANTIC. Para obtener descripciones más detalladas de cada modo, consulte la sección Modos gráficos del tablero de juego .

El requisito de memoria para una línea de modo está determinado por dos factores:

El modificador de desplazamiento fino horizontal cambiará el requisito de memoria para la línea de modo actual del ancho especificado por DMACTL al siguiente valor más grande.

Modificadores de instrucciones

Los bits 7:4 son modificadores para las instrucciones del modo de juego en los bits 3:0. Los valores de las instrucciones del modo de juego van desde $02 hasta $0F. El valor 1 del bit modificador lo habilita, y el valor 0 lo deshabilita.

  • Bit 4 - $10 hexadecimal /16 decimal Desplazamiento horizontal.
  • Bit 5 - $20 hexadecimal /32 decimal Desplazamiento vertical.
  • Bit 6 - $40 hexadecimal /64 decimal Cargar escaneo de memoria.
  • Bit 7 - $80 hexadecimal /128 decimal Mostrar lista de interrupciones.

Desplazamiento fino horizontal

Bit4: valor de posición $10, controla el desplazamiento horizontal del modo de juego.

Cuando se habilita el desplazamiento horizontal, ANTIC recupera más bytes de memoria de pantalla de los que se muestran para mostrar bytes parcialmente desplazados al principio y al final de la línea. Si la pantalla está en modo estrecho, ANTIC recupera la cantidad de bytes de pantalla necesarios para el modo normal. Si la pantalla está en modo normal, ANTIC recupera la cantidad de bytes necesarios para el modo panorámico. En el modo panorámico, ANTIC no recupera ningún byte de pantalla adicional. El desplazamiento en modo panorámico provoca que los datos en blanco se desplacen al área desplazada; esto ocurre en el área de sobreexploración, que no es visible en una pantalla NTSC/PAL normal.

Desplazamiento vertical fino

Bit5: valor de posición $20, controla el desplazamiento vertical del modo Playfield.

La región de desplazamiento vertical en una pantalla se define activando el bit VS ($20) en una serie secuencial de líneas de modo ANTIC en la lista de visualización. La primera línea de modo sin el bit VS activado marca el final de la región de desplazamiento y se utiliza como línea de búfer para proporcionar la nueva información que se desplaza hacia arriba hasta la parte inferior de dicha región.

Escaneo de memoria de carga

Bit6: valor de posición $40, carga una nueva dirección para el inicio de la memoria de pantalla para la línea del modo de campo de juego actual.

La opción LMS carga la dirección de escaneo de memoria de pantalla de ANTIC con el valor de 16 bits en los dos bytes que siguen a la instrucción. El modo Carácter o Mapa especificado comenzará a mostrar bytes desde esa dirección. La opción LMS debe aparecer en la primera línea de instrucción del modo de campo de juego (no en la línea en blanco) en la lista de visualización para inicializar ANTIC y que comience a leer desde el inicio de la memoria de pantalla. La mayoría de los modos de pantalla completa generados por el sistema operativo tendrán solo esa aparición del modificador LMS presente en la lista de visualización . ANTIC incrementará automáticamente su dirección LMS al final de cada línea de modo en preparación para la siguiente línea. Siempre que la memoria de pantalla no cruce un límite de 4K, el modificador LMS no es necesario en las instrucciones de modo de campo de juego subsiguientes.

Las pantallas completas que utilizan los modos de mapa de campo E o F mostrarán una segunda aparición del modificador LMS en una instrucción de mapa cerca del centro de la pantalla, ya que la pantalla completa requiere más de 4 KB de memoria de pantalla. (Las pantallas del modo F incluyen líneas de alta resolución de 320 píxeles y los modos de visualización GTIA).

La combinación de las instrucciones de Modo Mapa y Modo Caracteres con el bit LMS permite configurar libremente la dirección de memoria de pantalla dentro del espacio de direcciones de 64 KB de forma independiente para cada línea de visualización . En otras palabras, la memoria de pantalla no tiene que ser completamente contigua y escanearse secuencialmente hacia direcciones superiores; solo se requiere que una única línea de Modo disponga de suficientes bytes de memoria secuenciales para cumplir con los requisitos de dicho Modo, el ancho de la pantalla y la función de desplazamiento.

Mostrar interrupción de lista

Bit7: valor de posición $80 , indica a ANTIC que invoque una interrupción atendida por la CPU en la última línea de escaneo del modo de juego .

Si el registro ANTIC NMIEN ( D40E hexadecimal / 54286 decimal ) tiene el bit 7 ( $80 ) activado, entonces en la última línea de exploración de la línea de modo se activará una rutina de interrupción que se vectoriza a través de la dirección VDSLST (200 hexadecimal / 512 decimal ).

El acumulador 6502 y el contenido de los registros X e Y no se conservan antes de entrar en la rutina DLI. Esta rutina debe guardar el estado de los registros utilizados durante la operación DLI y, a continuación, restaurar sus valores originales antes de finalizar con una instrucción RTI.

Modos gráficos del campo de juego

El chip ANTIC permite una variedad de modos y anchos de campo de juego. Sin embargo, el sistema operativo original de Atari, incluido en los ordenadores Atari 800/400, proporciona acceso sencillo a un subconjunto limitado de estos modos gráficos. Los modos de campo de juego de ANTIC están disponibles para los usuarios a través de Atari BASIC mediante el comando "GRAPHICS", y para otros lenguajes, mediante llamadas al sistema similares. Curiosamente, los modos no compatibles directamente con el sistema operativo original y BASIC son los más útiles para los juegos. La versión posterior del sistema operativo utilizada en los ordenadores Atari XL/XE de 8 bits añadió compatibilidad con la mayoría de estos modos gráficos "faltantes".

El chip ANTIC utiliza una lista de visualización y otras configuraciones para crear estos modos. Cualquier modo gráfico en la interpretación de color GTIA predeterminada se puede combinar libremente sin intervención de la CPU cambiando las instrucciones en la lista de visualización .

La geometría de la pantalla ANTIC no es fija. Un registro de hardware puede indicarle a ANTIC que muestre un campo de juego estrecho (128 relojes de color/256 píxeles de alta resolución de ancho), un campo de juego de ancho normal (160 relojes de color/320 píxeles de alta resolución de ancho) y un campo de juego ancho con sobreexploración (192 relojes de color/384 píxeles de alta resolución de ancho). Si bien la altura predeterminada del sistema operativo para los modos gráficos es de 192 líneas de exploración, ANTIC puede mostrar sobreexploración vertical de hasta 240 líneas de exploración de TV de altura mediante la creación de una lista de visualización personalizada .

El Modo F produce colores mediante artefactos NTSC y funciona de manera similar a los modos gráficos del Apple II . La resolución de píxeles es de 320, pero la resolución de color es la mitad, por lo que cada grupo de dos píxeles se "mezcla" para formar un solo color, y de esta forma se pueden generar cuatro colores de artefacto. Estos se teñirán si el color de primer plano y el de fondo no son blanco, negro ni gris. Los colores exactos producidos varían según los diferentes modelos de Atari de 8 bits y también entre los chips CTIA y GTIA, por lo que pueden aparecer colores de artefacto indeseables al ejecutar software que utiliza el Modo F en una máquina distinta a aquella para la que fue desarrollado. No fue posible obtener colores de artefacto en máquinas PAL, y el Modo F será monocromo en ellas.

El modo F no fue ampliamente utilizado por el software debido a sus altos requisitos de memoria (8k) y a la inconsistencia en los colores de los artefactos, que no se veían igual en todos los modelos de ordenadores Atari de 8 bits. Entre los juegos que lo utilizan se incluyen aventuras gráficas de Sierra como Troll's Tale y Wizard and the Princess , Lode Runner y la serie Ultima .

El sistema de visualización de vídeo se diseñó teniendo en cuenta los métodos y limitaciones de visualización NTSC. El reloj de la CPU del sistema y el hardware de vídeo están sincronizados a la mitad de la frecuencia del reloj NTSC. Por consiguiente, la salida de píxeles de todos los modos de visualización se basa en el tamaño del reloj de color NTSC, que es el tiempo mínimo necesario para garantizar un color correcto y uniforme, independientemente de la posición horizontal del píxel en la pantalla. El resultado es un tamaño de píxel y una coloración precisos que no presentan defectos de parpadeo al desplazarse horizontalmente. (El parpadeo consiste en cambios de tono antiestéticos en los píxeles según su posición horizontal, causados ​​cuando los cambios de señal no se alinean con el reloj de color y, por lo tanto, no proporcionan al hardware del televisor/monitor el tiempo suficiente para alcanzar el color correcto).

Modos de personaje

Representación de glifos

Todos los conjuntos de caracteres utilizan 8 bytes secuenciales para representar el carácter. Hay cuatro tipos de representación de caracteres/glifos disponibles para esos bytes. Cada modo de carácter está asociado a un método de representación específico:

  • Estándar: Modo ANTIC 2. Basado en los modos gráficos de alta resolución, cada bit del glifo del carácter representa un píxel en pantalla con un ancho equivalente a la mitad del reloj de color. El color de fondo es COLPF2 en lugar de COLBK, utilizado en otros modos de carácter y mapa. COLBK aparece como un borde alrededor de los cuatro lados del área de juego. Los bits con valor 0 en el glifo del carácter muestran el color de fondo. Los bits con valor 1 muestran el valor de luminancia de COLPF1 , basado en el color de fondo (COLPF2). El conjunto de caracteres utiliza 128 caracteres y requiere 1024 bytes de RAM.
  • Descendentes: Modo ANTIC 3. Una modificación del método estándar. El método de visualización del color de los píxeles es el mismo. Cada línea de modo tiene 10 líneas de escaneo de altura, aunque el glifo del carácter sigue siendo de 8 bytes. Los caracteres 00 hexadecimal /0 decimal hasta 5F hexadecimal /95 decimal se muestran en las 8 líneas de escaneo superiores con dos líneas de escaneo en blanco añadidas en la parte inferior. Los caracteres 60 hexadecimal /96 decimal hasta 7F hexadecimal /127 decimal comienzan con dos líneas de escaneo en blanco en la parte superior y luego muestran los bytes del glifo en las 8 líneas de escaneo inferiores. Los dos primeros bytes del glifo se mueven a las dos líneas de escaneo inferiores. Esto permite que un conjunto de caracteres diseñado correctamente muestre descendentes reales. El conjunto de caracteres utiliza 128 caracteres y requiere 1024 bytes de RAM.
  • Color único: Modos ANTIC 6 y 7. En estos modos, cada bit del glifo del carácter representa un píxel de un ciclo de reloj de color. El color de fondo es COLBK. Los caracteres pueden mostrarse en uno de cuatro colores. Los seis bits bajos del valor del carácter identifican el glifo y los dos bits altos identifican un color. Dado que el valor del carácter se reduce a seis bits, el conjunto de caracteres utiliza 64 caracteres y requiere 512 bytes de RAM. Los bits con valor 0 en el glifo del carácter muestran el color de fondo. Los bits con valor 1 en los datos del glifo muestran una de las cuatro opciones de color posibles según los dos bits altos del valor del carácter. Bits 7 y 6 del valor del carácter:
  • Multicolor: Modos ANTIC 4 y 5. En estos modos de caracteres, cada par de bits del glifo del carácter representa un píxel de un ciclo de reloj de color, por lo que un solo byte de información del glifo representa 4 píxeles en lugar de los 8 píxeles de otros modos. El conjunto de caracteres utiliza 128 caracteres y requiere 1024 bytes de RAM. El color de fondo es COLBK . Este modo permite mostrar hasta cuatro colores (incluido el fondo) en una matriz de caracteres. Si se activa el bit más significativo del valor del carácter (es decir, vídeo inverso), se muestra un quinto color, COLPF3 , en lugar del patrón de bits de píxeles "11" que normalmente muestra COLPF2 . Las opciones de color se basan en los pares de bits del glifo del carácter:

Modos de mapa

Modos GTIA

Los modos GTIA son pantallas Antic Mode F con una opción de interpretación de color alternativa habilitada mediante el registro GTIA PRIOR ($D01B hexadecimal /53275 decimal ), oculta por GPRIOR ($026F hexadecimal /623 decimal ). La expresión de color completa de estos modos GTIA también se puede activar en los modos de texto Antic 2 y 3, aunque estos requerirán un conjunto de caracteres personalizado para un uso práctico de los colores. Consulte GTIA para obtener más información.

Véase también

Referencias

  1. Manual de servicio técnico para ordenadores domésticos Atari - 400/800 (PDF). Atari, Inc. págs. 1–8 . 
  2. Neubauer, Doug (2009-06-20). "Los años de Atari" . Doug Neubauer . Recuperado el 24 de julio de 2025 .
  3. ↑ Patente estadounidense 4296476 , Mayer, Steven T.; Miner, Jay G .; Neubauer, Douglas G.; Decuir, Joseph C., "Sistema de procesamiento de datos con generador de gráficos programable", emitida el 20 de octubre de 1981, asignada a Atari, Inc. 
  4. Bisson, Gigi (mayo de 1986). "Antic antes y ahora. Cómo la comunidad Atari y esta revista crecieron juntas" . Antic . 5 (1): 16–17 . ISSN 0745-2527 . Recuperado el 23 de febrero de 2023 . 
  5. Michael Current, "¿Qué son los chips SALLY, ANTIC, CTIA/GTIA, POKEY y FREDDIE?" , Computadoras Atari de 8 bits: Preguntas frecuentes
  6. "Atari 5200" , Wikipedia , 1 de diciembre de 2025 , consultado el 15 de enero de 2026.
  7. ^ Boris , Dan. "Fichas Atari" . Página de inicio de Dan B. Consultado el 1 de febrero de 2011 .
  8. Vendel, Curt. "Atari 800XLCR" . AtariMuseum.com . Archivado del original el 13 de septiembre de 2011. Consultado el 1 de febrero de 2011 .
  9. Vendel, Curt. "KERI Performance Tester" . AtariMuseum.com . Archivado del original el 13 de septiembre de 2011. Consultado el 1 de febrero de 2011 .
  • De Re Atari , publicado por Atari Program Exchange.
  • Mapeando el Atari, edición revisada por Ian Chadwick
  • Hoja de datos del chip ANTIC escaneada a PDF .