Los gráficos de Apple II se componían de modos y configuraciones idiosincrásicos que podían explotarse. Este sistema de gráficos debutó en el Apple II original , continuó con el Apple II Plus y fue llevado adelante y ampliado con el Apple IIe , Enhanced IIe, IIc , IIc Plus y II GS .
Peculiaridad de los modos gráficos
Los modos gráficos de la serie Apple II eran peculiares incluso para los estándares de finales de la década de 1970 y principios de la de 1980. Una particularidad notable de estos modos es un resultado directo del fundador de Apple, Steve Wozniak 's de chip -ahorro de diseño. Muchos sistemas informáticos domésticos de la época (así como las máquinas actuales compatibles con PC ) tenían una arquitectura que asignaba bloques consecutivos de memoria a filas no consecutivas en la pantalla en modos gráficos, es decir, entrelazado. [ cita requerida ] Los modos de texto y gráficos de Apple se basan en dos factores de intercalación diferentes de 8: 1 y 64: 1.
Una segunda peculiaridad de los gráficos de Apple II, las llamadas "franjas de color", es otro subproducto del diseño de Wozniak . Si bien estos ocurren en todos los modos gráficos, juegan un papel crucial en el modo de alta resolución o alta resolución (ver más abajo).
Salida de video en las máquinas
La lectura de un valor o la escritura de cualquier valor en determinadas direcciones de memoria controlan los denominados " conmutadores suaves ". No importa el valor leído o escrito, lo que cuenta es el acceso en sí. Esto permitió al usuario hacer muchas cosas diferentes, como mostrar la pantalla gráfica (de cualquier tipo) sin borrarla, mostrar la pantalla de texto, borrar la última tecla presionada o acceder a diferentes bancos de memoria. Por ejemplo, se puede cambiar de gráficos y texto mixtos a una pantalla de todos los gráficos accediendo a la ubicación 0xC052 (49234). Luego, para volver a la mezcla de gráficos y texto, se accedería a 0xC053 (49235).
Hardware de salida de video incorporado
Todas las máquinas Apple II presentaban un conector RCA que proporcionaba una salida de video compuesto NTSC , PAL o SECAM aproximada (en máquinas que no eran NTSC antes de Apple IIe, esta salida es solo en blanco y negro). Esto permitió que la computadora se conectara a cualquier monitor de video compuesto que cumpliera con el mismo estándar para el que se configuró la máquina. Sin embargo, la calidad de este resultado no fue confiable; la señal de sincronización era lo suficientemente cercana para los monitores, que son bastante tolerantes, pero no se ajustaba lo suficiente a los estándares para ser adecuada para aplicaciones de transmisión, o incluso para la entrada a una grabadora de video, sin intervenir en el procesamiento. (La excepción fue la versión Extended Back del Black II Plus de la marca Bell & Howell, que proporcionó una sincronización de video adecuada, así como otras funciones orientadas a los medios).
Además del conector de salida de video compuesto, el IIc, IIc Plus y el II GS presentaban una salida de dos filas y 15 pines . En el IIc y IIc Plus, este conector era un conector de video de propósito especial para adaptadores a monitores RGB digitales y moduladores de RF . En el II GS era una salida para un monitor RGB analógico especialmente diseñado para el II GS .
Tarjetas de salida de video complementarias
Numerosas tarjetas de visualización de video complementarias estaban disponibles para la serie Apple II, como la tarjeta de texto de 80 columnas de Apple . Había tarjetas de color PAL que permitían la salida de color en las primeras máquinas PAL. Algunas otras tarjetas simplemente agregaron capacidades de visualización de 80 columnas y minúsculas , mientras que otras permitían la salida a un monitor IBM CGA a través de un conector de salida DE9 .
Detalles del modo de gráficos
Color en la Apple II
La salida de video de Apple II es realmente una pantalla monocromática basada en los patrones de bits en la memoria de video (o píxeles). Estos píxeles se combinan en cuadratura con la señal de explosión de color para ser interpretada como color por una pantalla de video compuesto.
La alta resolución proporciona dos píxeles por ciclo de explosión de color , lo que permite dos colores posibles si un píxel está encendido, negro si no hay píxeles o blanco si ambos píxeles están encendidos. Al cambiar la alineación de los píxeles a la señal de explosión de color en 90 °, se pueden mostrar dos colores más para un total de cuatro colores posibles. La baja resolución permite cuatro bits por ciclo, pero repite el patrón de bits varias veces por píxel de baja resolución. La doble alta resolución también muestra cuatro píxeles por ciclo. Consulte las secciones siguientes para obtener más detalles.
Gráficos de baja resolución (Lo-Res)
El modo de gráficos Lo-Res en bloques, pero rápido y colorido (a menudo conocido como GR después del comando BASIC) tenía 40 píxeles de ancho, correspondientes a las 40 columnas en la pantalla de texto normal de Apple II. Este modo puede mostrar 40 filas de píxeles con cuatro líneas de texto en la parte inferior de la pantalla o 48 filas de píxeles sin texto. Por lo tanto, dos píxeles, apilados verticalmente, llenarían el espacio de la pantalla correspondiente a un carácter en el modo de texto. El valor predeterminado para esto era gráficos de 40 × 40 con texto.
Hay 16 colores disponibles para usar en este modo (en realidad, 15 en la mayoría de los casos, ya que los dos tonos de gris son idénticos en brillo en el hardware original de Apple, excepto en el Apple II GS ). Tenga en cuenta que seis de los colores son idénticos a los colores disponibles en el modo de alta resolución (Hi-Res).
Los colores se crearon llenando el píxel con un patrón binario repetido de 4 bits de tal manera que cada grupo de bits encaja dentro de un ciclo de la señal de referencia de explosión de color . Las pantallas de color interpretarían este patrón como una señal de color. En monitores monocromáticos , o si la señal de explosión de color estuviera apagada, la pantalla revelaría estos patrones de bits. Hay dos tonos de gris equivalentes, ya que 5 (0101) es equivalente a 10 (1010) en función de cómo se mezclan los colores; los bits "on" son polos opuestos entre sí en la señal de color en cuadratura , por lo que se cancelan entre sí y se muestran en gris.
Este modo se asigna a la misma área de memoria que la pantalla de texto principal de 40 columnas (0x400 a 0x7FF), con cada byte almacenando dos píxeles uno encima del otro.
El modo de gráficos Lo-Res ofrece comandos integrados para limpiar la pantalla, cambiar el color del dibujo, trazar píxeles individuales, trazar líneas horizontales y trazar líneas verticales. También hubo una "SCRN" función para extraer el color almacenada en cualquier píxel, una falta en los otros modos.
Número - nombre | Y | Pb (rel.) | Pr (rel.) |
---|---|---|---|
0 - negro | 0 | 0 | 0 |
1 - magenta | 0,25 | 0 | 0,5 |
2 - azul oscuro | 0,25 | 0,5 | 0 |
3 - morado | 0,5 | 1 | 1 |
4 - verde oscuro | 0,25 | 0 | −0,5 |
5 - gris # 1 | 0,5 | 0 | 0 |
6 - azul medio | 0,5 | 1 | −1 |
7 - azul claro | 0,75 | 0,5 | 0 |
8 - marrón | 0,25 | −0,5 | 0 |
9 - naranja | 0,5 | −1 | 1 |
10 - gris # 2 | 0,5 | 0 | 0 |
11 - rosa | 0,75 | 0 | 0,5 |
12 - verde | 0,5 | −1 | −1 |
13 - amarillo | 0,75 | −0,5 | 0 |
14 - agua | 0,75 | 0 | −0,5 |
15 - blanco | 1 | 0 | 0 |
Diseño de memoria de baja resolución
Un bloque de 128 bytes almacena tres filas de 40 caracteres cada una, con un resto de ocho bytes que quedan después de que se almacena la tercera fila. Pero estos bytes no se dejan vacíos. En cambio, el firmware de la placa base y el firmware de la tarjeta de expansión los utilizan de diversas formas para almacenar información importante, principalmente sobre dispositivos externos conectados a la computadora. Esto creaba problemas cuando el usuario cargaba un texto o una pantalla de gráficos de baja resolución directamente en la memoria de video, reemplazando la información actual en los huecos con lo que había en el momento de guardar. (La recalibración del cabezal del disco era un efecto secundario común, cuando el controlador del disco encontraba su memoria, en un agujero de la pantalla, donde estaba el cabezal, de repente no coincidía con los datos del encabezado de la pista que estaba leyendo). Los programadores de Apple respondieron programando ProDOS para que el usuario no pudiera cargar directamente un archivo (datos de pantalla u otros) en 0x400-0x7FF. Pronto surgieron programas ProDOS para cargar datos correctamente en esta parte de la memoria; varios aparecieron en la revista Nibble .
Pantalla 2 Gráficos y texto de baja resolución
Tener dos pantallas para mostrar imágenes de video fue una parte integral del diseño de la familia Apple II. Al acceder a la ubicación de memoria 0xC055 (49237) se muestra la "Pantalla 2" independientemente de cómo se hayan configurado los otros "interruptores suaves". El texto y el espacio de la pantalla 2 de baja resolución oscilaron entre 0x800 (2048) y 0xBFF (3071). El entrelazado es exactamente el mismo que para la pantalla principal ("Pantalla 1"). Los programas de Applesoft BASIC se cargan a las 801 h (2049) de forma predeterminada; por lo tanto, ocuparán el espacio de la pantalla de texto 2 a menos que se le indique a la computadora que cargue un programa en otro lugar de la memoria. Por el contrario, algunos programas de software comerciales para Apple II usaban este espacio de memoria para varios propósitos, generalmente para mostrar una pantalla de ayuda.
"Modo de visualización alternativo" en el Apple II GS
A diferencia de los otros tipos de máquinas Apple II, la Apple II GS presentaba un procesador (el 65816 ) que podía manejar más de 64K de RAM sin trucos especiales. En las IIgs, la RAM se demarcó en bancos de 64K. Por ejemplo, el banco 0xE0 constaba del rango 0xE00000 a 0xE0FFFF. El Apple IIgs tenía un chip llamado "Mega II" que le permitía ejecutar la mayoría de los programas escritos para otras computadoras Apple II. La arquitectura IIgs asignó los datos de la pantalla al banco de memoria 0xE0. Sin embargo, en el modo de emulación IIe , los datos de la pantalla se almacenaron en el banco 0x00. Esto presentó un problema. Los diseñadores del Mega II incluyeron rutinas para copiar la mayoría de los datos de la pantalla al banco 0xE0 para garantizar que los programas específicos de Apple IIe funcionaran correctamente. Pero se olvidaron de la pantalla de texto 2, que rara vez se usaba. Esto no se descubrió hasta que los chips Mega II llegaron a las máquinas IIgs. Entonces, los diseñadores de firmware agregaron un CDA (accesorio de escritorio clásico, accesible desde el menú Accesorios de escritorio de IIgs, invocado con Apple+ Control+ Escape) llamado "Modo de visualización alternativo", [1] que, a expensas de un poco de tiempo de CPU, realizó el tarea para los pocos programas que la necesitaban. Se puede encender y apagar a su antojo, pero se vuelve a apagar al reiniciar la computadora.
La compatibilidad mejorada con Text Screen 2 se abordó con la introducción de Apple IIGS con 1 megabyte de RAM (más conocida como ROM 3) en 1989. La nueva placa base proporcionó sombreado de hardware de Text Screen 2, sin costo para el tiempo de CPU, por lo tanto no afecta la velocidad de ejecución del software. Aunque el modo de visualización alternativo seguía siendo una opción en el menú CDA, la máquina detectaría automáticamente la presencia de la pantalla de texto 2 y habilitaría el sombreado de hardware de la pantalla de texto 2 en el banco 0xE0 en las máquinas ROM 3.
Gráficos de alta resolución (Hi-Res)
Cuando salió el Apple II, se agregó un nuevo modo para gráficos de alta resolución de 280 × 192. Al igual que el modo Lo-Res, el modo de alta resolución tenía dos pantallas; en Applesoft BASIC , se puede inicializar uno, usando los comandos HGR para la primera pantalla o HGR2 para la segunda.
La ROM BÁSICA de Applesoft contenía rutinas para borrar cualquiera de las dos pantallas de alta resolución, dibujar líneas y puntos y establecer el color del dibujo. La ROM también contenía rutinas para dibujar, borrar, escalar y rotar formas basadas en vectores . No había rutinas para trazar formas en mapas de bits , dibujar círculos y arcos o rellenar un área dibujada, pero se escribieron muchos programas; muchos aparecieron en Nibble y otras revistas de Apple II.
El usuario puede "cambiar" cuatro líneas de texto en el modo de alta resolución, al igual que en el modo de baja resolución; sin embargo, esto ocultó las 32 líneas inferiores, lo que resultó en una imagen de 280x160. (Las rutinas de la ROM aún pueden modificar la parte inferior, aunque esté oculta).
El modo de alta resolución del Apple II era peculiar incluso para los estándares del día. Si bien la tarjeta CGA lanzada cuatro años después de la Apple II en la PC IBM permitió al usuario seleccionar uno de los dos conjuntos de colores para crear gráficos de 320 × 200, solo cuatro colores (el color de fondo y tres colores de dibujo) estaban disponibles a la vez. Por el contrario, Apple ofrecía ocho colores para gráficos de alta resolución (en realidad seis, ya que el blanco y el negro se repetían en el esquema). Cada fila de 280 píxeles se dividió en 40 bloques de siete píxeles cada uno, representados en un solo byte. Cada par de píxeles adyacentes generó un píxel de un solo color a través del color del artefacto , lo que resultó en una resolución efectiva de 140 × 192. Los siete bits inferiores de cada byte representaban los píxeles, mientras que el bit más significativo controlaba el desplazamiento de fase para ese bloque de píxeles, alterando el color que se mostraba.
Bit alto Par de píxeles Número de color Nombre del color Y Pb (rel.) Pr (rel.) 0 00 0 Negro 1 0 0 0 0 01 1 Verde 0,5 −1 −1 0 10 2 Púrpura 0,5 1 1 0 11 3 Blanco 1 1 0 0 1 00 4 Negro 2 0 0 0 1 01 5 naranja 0,5 −1 1 1 10 6 Azul 0,5 1 −1 1 11 7 Blanco 2 1 0 0
Si bien esta función permite seis colores en pantalla simultáneamente, tiene un efecto secundario desagradable. Por ejemplo, si un programador intenta dibujar una línea azul sobre una verde, partes de la línea verde cambiarían a naranja. Esto se debe a que dibujar la línea azul establece el MSB para cada bloque de siete píxeles en este caso. Los píxeles "verdes" y "naranjas" se representan de la misma forma en la memoria; la diferencia está en la configuración (o eliminación) del MSB. Otro efecto secundario es que dibujar un píxel requería dividirlo por siete. (Para el procesador 6502 de Apple, que no tenía hardware de división, dividir por siete era relativamente lento. Si dibujar un píxel solo hubiera requerido dividir por una simple potencia de dos, como ocho, esto solo habría necesitado una secuencia de cambios de bits, que habría sido mucho más rápido.)
El modo de alta resolución en el Apple II también fue peculiar por su factor de intercalación de 64: 1. Este fue un resultado directo del diseño de ahorro de chips de Steve Wozniak. [2] El factor 64: 1 resultó en un efecto de "persiana veneciana" cuando se cargaba una pantalla de alta resolución en la memoria desde un disquete (o algunas veces un disco RAM ) con los interruptores suaves ya configurados. Los "agujeros de pantalla" se producen en el modo de alta resolución al igual que en los modos de baja resolución y texto. Por lo general, no se almacenaba nada allí, aunque ocasionalmente se usaban para almacenar código en imágenes ejecutables de visualización automática. Otra excepción notable es el formato Fotofile (FOT) [3] heredado por ProDOS de Apple SOS , que incluía metadatos en el byte 121 (el primer byte del primer agujero) que indica cómo debería mostrarse (modo de color, resolución), o convertido a otros formatos gráficos.
Finalmente, otra peculiaridad del diseño de Wozniak es que, si bien cualquier píxel puede ser blanco o negro, solo los píxeles con coordenadas X impares pueden ser verdes o naranjas. Del mismo modo, solo los píxeles pares pueden ser de color púrpura o azul. [4] Aquí es donde entra en juego el llamado "beneficio adicional". El hardware de video de Apple interpreta una secuencia de dos o más píxeles horizontales encendidos como blanco sólido, mientras que una secuencia de píxeles alternos se mostraría como color. De manera similar, una secuencia de dos o más píxeles horizontales apagados se mostraría en negro.
No había un comando incorporado para extraer el color de un píxel en la pantalla de alta resolución, o incluso para determinar si estaba encendido. Se escribieron varios programas para determinar si un píxel estaba encendido, y en la edición de abril de 1990 de Nibble se publicó un programa para extraer el color verdadero del píxel .
Así como hay dos páginas de pantalla de texto (y dos páginas de gráficos de baja resolución), también hay dos páginas de alta resolución, asignadas una tras otra en la memoria. (La segunda pantalla de alta resolución se asignó a 0x4000-0x5FFF, o 16384-24575 en decimal). El CGA de IBM solo admitía una página de gráficos a la vez. Esta animación simplificada en Apple II, porque un programador podría mostrar una página mientras modifica la otra página (oculta).
Siempre que el vector de reinicio no haya sido ocluido por un programa en ejecución activa, la invocación de Control+ Resetinterrumpiría un programa y escaparía al monitor o al símbolo del sistema de Applesoft. El uso de Control+ Open-Apple+ Resetforzaría un reinicio a expensas de una pequeña cantidad de corrupción de memoria. La configuración creativa de algunos interruptores suaves en el monitor o en el indicador permitió la visualización inmediata de imágenes de programas interrumpidos. A continuación, se pueden grabar las escenas favoritas de los juegos. En Apple // e y // c, el uso de Control+ Open-Apple+ Resetdaría como resultado que el patrón 0xA0A0 se escribiera escasamente en toda la memoria, incluidas las páginas de alta resolución 1 y 2 a $ 2000 - $ 5FFF. La corrupción de estos artefactos podría eliminarse con un paquete de pintura. En el Apple // e mejorado, la memoria de video de alta resolución se podía conservar sin artefactos mediante la siguiente secuencia: presionando Control+ Closed-Apple+ Resety moviendo la Resettecla hacia arriba y luego hacia abajo durante una fracción de segundo, repitiendo hasta que comenzara el patrón de color de autodiagnóstico para llenar la primera línea de texto en la esquina superior izquierda. Dado que el autodiagnóstico progresó desde $ 0000 hacia arriba, una vez que se golpeó la dirección inicial de la página de texto 1 ($ 400), también lo fue la suma de verificación del vector de reinicio ($ 3F4), lo que significaba que una presión rápida posterior de Control+ Resetforzaría la firmware para reiniciar sin golpear la memoria por encima de $ 0800 en los bancos principal o auxiliar. Era posible GUARDAR estas imágenes en un disquete y crear una presentación de diapositivas o una imagen estática, porque un restablecimiento parcial no borraba la memoria de video en las imágenes de alta resolución.
Modos gráficos en modelos posteriores (IIe, IIc, IIc Plus, II GS )
Poco después de la introducción del Apple IIe, los ingenieros de Apple se dieron cuenta de que el circuito de duplicación del ancho de banda de video utilizado para implementar el modo de texto de 80 columnas podría extenderse fácilmente para incluir los modos gráficos de la máquina. Dado que la señal estaba presente en el conector de la ranura auxiliar que albergaba la tarjeta extendida de 80 columnas, el Annunciator 3 en el puerto del juego se sobrecargó para activar gráficos de doble resolución cuando se seleccionaron los modos de video de 80 columnas y gráficos. Se ofrecieron gratuitamente placas base de repuesto (llamadas placa base Revisión B) a los propietarios de Apple IIe para actualizar sus máquinas con capacidades gráficas de doble resolución. Por esta razón, las máquinas con la placa base Revisión A original son extremadamente raras. Los modelos posteriores de Apple II también implementan los modos de gráficos de doble resolución.
Doble baja resolución
Este era un modo gráfico de 80 × 40 (o 80 × 48) disponible solo en máquinas de 80 columnas. En Applesoft BASIC, habilitar este modo requirió tres pasos. Primero, habilitando el modo de 80 columnas con , Luego habilitando gráficos de doble densidad con , seguido de .PR#3
POKE 49246,0
GR
10 IMPRIMIR CHR $ ( 4 ) "PR # 3" : IMPRIMIR CHR $ ( 0 ); : POKE 49246 , 0 : GR
(Tenga en cuenta que PR # 3 se difiere para el sistema operativo, con el fin de evitar desconectarlo de BASIC, por razones complicadas. Esto es seguido por un comando PRINT para enviar un carácter nulo, porque el dispositivo de salida recién asignado no se inicializa hasta se le envía el primer carácter, una fuente común de confusión).PRINT CHR$(4)
Una vez hecho esto, se mostró y borró la pantalla Double Lo-Res, y los comandos PLOT, HLIN y VLIN funcionaron normalmente con el rango de coordenadas x extendido a 0 a 79. (Solo Apple IIc e IIgs admitían esto en el firmware. Usar el modo de doble resolución baja de BASIC en un IIe fue mucho más complicado sin agregar una extensión & command a BASIC).
Hubo dos problemas importantes al usar este modo en Applesoft. Primero, una vez que se activó el modo, el acceso a la impresora se volvió complicado, debido a que el firmware de la pantalla de 80 columnas se manejaba como una impresora. En segundo lugar, la función SCRN (lectura de píxeles) no funcionó correctamente. Afortunadamente, había un programa en la edición de marzo de 1990 de Nibble que se ocupó de este problema.
Se sabía que al menos un compilador BASIC disponible comercialmente , ZBASIC de Zedcor Systems, era compatible con gráficos Double Lo-Res.
Doble alta resolución
La composición de la pantalla Double Hi-Res es muy complicada. Además del entrelazado de 64: 1, los píxeles en las filas individuales se almacenan de una manera inusual: cada píxel tenía la mitad de su ancho habitual y cada byte de píxeles alternaba entre el primer y segundo banco de memoria de 64 KB. Donde tres píxeles consecutivos eran blancos, ahora se requerían seis en doble alta resolución. Efectivamente, todos los patrones de píxeles utilizados para crear color en bloques de gráficos de baja resolución podrían reproducirse en gráficos de doble alta resolución.
La implementación de ProDOS de su disco RAM facilitó el acceso a la pantalla de doble alta resolución al hacer que el primer archivo de 8 KB guardado en / RAM almacene sus datos en 0x012000 a 0x013fff por diseño. Además, era posible una segunda página y un segundo archivo (o un primer archivo más grande) almacenaría sus datos en 0x014000 a 0x015fff. Sin embargo, el acceso a través del sistema de archivos ProDOS era lento y no se adaptaba bien a la animación de cambio de página en Double Hi-Res, más allá de los requisitos de memoria.
Aplicaciones que utilizan doble alta resolución
A pesar de las complejidades involucradas en la programación y el uso de este modo, hubo numerosas aplicaciones que lo utilizaron. Los gráficos de doble alta resolución se incluyeron en aplicaciones comerciales, software educativo y juegos por igual. La versión de Apple de GEOS utilizó Double Hi-Res, al igual que el programa de pintura de Brøderbund , Dazzle Draw . Beagle Bros proporcionó un juego de herramientas, Beagle Graphics, con rutinas para desarrollar gráficos de doble alta resolución en AppleSoft BASIC. Numerosos juegos de arcade y juegos escritos para otras computadoras fueron portados a la plataforma Apple II, y muchos aprovecharon este modo gráfico. También había numerosos programas de utilidad y tarjetas de impresora enchufables que permitían al usuario imprimir gráficos de doble alta resolución en una impresora de matriz de puntos o incluso en LaserWriter .
Modos gráficos Apple II GS
El Apple II GS presenta no solo los modos gráficos de sus precursores, sino varios modos nuevos similares a los que se encuentran en el Atari ST y el Commodore Amiga .
Ver también
- Tabla de formas
Referencias
- ^ Nibble , febrero de 1992
- ^ Nibble , julio de 1990
- ^ Notas del tipo de archivo Apple II : FTN.08.0000
- ^ Nibble , diciembre de 1988, p. 66