Solemos asociar a Apple con el iPhone y a veces incluso con su marca de ordenadores Macintosh, sin embargo, mucho antes de eso, incluso antes del IBM PC, en 1977 lanzaron el que fue su primer ordenador doméstico, el Apple II. Un sistema que formo parte de la primera tríada de ordenadores personales junto al Commodore PET y al Tandy TRS-80. ¿Su mayor particularidad? Un sistema de vídeo avanzado para la época que permitió una primera generación de videojuegos para ordenador.
La arquitectura del Apple II
El Apple II se basa en una CPU MOS 6502 a 1 MHz, lo que le permite direccionar hasta 64 KB de memoria RAM. No obstante, por el coste de la RAM en la época, los primeros modelos tenían solo 4 KB de memoria. La cual era utilizada tanto por la CPU como por el subsistema de vídeo de forma intercalada. Es decir, la memoria del sistema iba el doble de rápida que ambos subsistemas en lo que a velocidad de reloj se refiere.
Esto se debe a que el 6502, al contrario que otras CPU de la época, pueden acceder a la memoria a su misma velocidad de reloj, al contrario que el Intel 8080, que pese a poder funcionar a 2 MHz, tardaba 4 ciclos de reloj en acceder a la RAM. El chip de MOS utilizado en el Apple II, en cambio, accedía en el mismo ciclo si se trataba de la página cero (primeros 256 bytes) o dos de ellos si accedía al resto de la RAM. Sin embargo, dicha característica ya venía implícita en el MOS 6502.
Sin embargo, Wozniac no se limitó a juntar una serie de piezas para crear el Apple II, sino que fue más allá e implemento una serie de mejoras que lo hicieron más avanzado que sus otros dos rivales, especialmente en memoria RAM y hardware de vídeo y en la creación de la unidad de disquetes.
Memoria RAM en el Apple II
El primer modelo del Apple II vino con 4 KB de memoria, y con el paso del tiempo y con la llegada de modelos más avanzados dicha capacidad fue aumentando, pero nunca supero el límite de 64 KB de direccionamiento que permite el MOS 6502. Sea cual fuera la cantidad de memoria, todos los sistemas tenían un elemento en común que los diferenciaba del resto. La CPU podía acceder cuando quisiera a la RAM, incluyendo los periodos de dibujado en pantalla, lo mismo que el subsistema de vídeo.
Todo ello gracias a una característica del MOS 6502 combinado con una RAM del sistema que iba al doble de velocidad de reloj, y un subsistema de vídeo funcionando a la misma velocidad que la CPU. El truco era sencillo, de manera intermitente, ambos iban accediendo a la memoria del sistema. No obstante, esta no fue la única mejora en la memoria del sistema que realizo Woz en su ordenador.
La otra mejora tenía que ver con la inclusión de un mecanismo de refresco de la memoria DRAM. La mayoría de ordenadores domésticos de finales de los 70, utilizaban memoria SRAM, la cual no requería dicho hardware adicional, pero permitía menos almacenamiento por espacio. A medida que las necesidades de memoria crecieron, muchos sistemas tuvieron que crear modelos renovados o incluso nuevas máquinas para otorgarles esa capacidad.
Mapa de memoria
El Apple II, al igual que otros sistemas, tiene una serie de direcciones de memoria reservadas para funciones clave del sistema. Ya sea para la CPU, para la comunicación con los periféricos o para la generación de la señal de vídeo, por lo que no se utilizan para almacenar datos ni programas.
Para empezar, pese a que el direccionamiento que permite la CPU, el MOS 6502, es de 64 KB, en el mapa de memoria existen 48 KB para la RAM y 16 KB para la ROM del sistema. Los cuales se organizan de la siguiente manera:
Rango de direcciones | Tamaño | Funcionalidad |
---|---|---|
0x0000 – 0x00FF | 256 bytes | Página Cero para el MOS 6502 |
0x0100 – 0x01FF | 256 bytes | Localización de la pila para el MOS 6502 |
0x0200 – 0x02FF | 256 bytes | Búfer del teclado |
0x0300 – 0x03FF | 256 bytes | Reservado al sistema operativo |
0x0400 – 0x07FF | 1 KB | 1ª página del búfer de caracteres para modo Lo-Res y Texto |
0x0800 – 0x0BFF | 1 KB | 2ª página del búfer caracteres para modo Lo-Res y Texto |
0x0C00 – 0x1FFF | 6 KB | Reservado para almacenar mapas de bits o patrones de los caracteres. |
0x2000 – 0x3FFF | 8 KB | 1ª página del búfer de caracteres para modo Hi-Res |
0x4000 – 0x5FFF | 8 KB | 2ª página del búfer de caracteres para modo Hi-Res |
0x6000 – 0xBFFF | 24 KB | Memoria que pueden usar los programas |
0xC000 – 0xC0FF | 256 bytes | E/S del sistema (perifericos) |
0xC100 – 0xC7FF | 1.5 KB | Ranuras de expansión (256 bytes por ranura) |
0xD000 – 0xDFFF | 4 KB | ROM del interprete BASIC |
0xE000 – 0xF7FF | 2 KB | Vectores de interrupción y arranque |
Hay que aclarar que, por ejemplo, si un programa no usaba el modo Hi-Res para gráficos, entonces disponía de esos 16 KB como memoria para el programa.
Al mismo tiempo, pese a que el direccionamiento era solo de 64 KB, a partir del Apple IIe a estos ordenadores se les aplicó un sistema multibanco que permitía ir más allá de dicho límite. Esto se hizo especialmente para competir contra el IBM PC, cuya CPU, el 8088/8086 de Intel, podía direccionar hasta 1 MB de memoria. Al activar cierta dirección de memoria, el sistema accedía a otro o varios bloques de 64 KB de memoria cada uno. A eso se le llama conmutación multibanco y era común en sistemas de 8 bits avanzados, pero no se encontró en los primeros modelos del Apple II.
Una vez ya conocemos los entresijos del procesador y la RAM toca hablar del subsistema de vídeo.
Vídeo en el Apple II
El Apple II no tiene un chip gráfico, sino una serie de chips TTL de la serie 7400 que de forma combinada forman lo que Woz bautizo como el Video Scanner. La cual podéis ver en su totalidad en la imagen de abajo. A su vez, dicha circuitería también incluye el mecanismo de refresco de la memoria DRAM. Todo ello en la misma placa que el resto del sistema.
El reloj maestro que utiliza el Apple II utiliza un oscilador a 14,318 MHz de velocidad de reloj, la cual se divide en dos (7,15909 MHz) para luego volver a dividirse otra vez y llegar a los 3.58 MHz, el cual es la velocidad de la «salva de color» del estándar NTSC. Pues bien, el Pixel Clock, del Apple II, el cual es la velocidad en la se dibuja un pixel en pantalla, es de (1 / 7,15909 MHz). Esto son 1,0227 MHz, que no es otra cosa que la misma velocidad de la CPU y el sistema de video y la mitad de la RAM.
Por lo que el Apple II genera una fila de píxeles de un carácter cada 7 ciclos de reloj o, dicho de otra manera, 1 pixel en pantalla por Hz.
Modo texto o terminal
El Apple II, al igual que otros sistemas de su época, contaba con un modo texto influenciado por el TVT. Aunque esta sección se enfoca en el Apple II, los conceptos son aplicables a otros sistemas contemporáneos.
- La velocidad de reloj del Video Scanner del Apple II era de 1 MHz, lo que le permitía generar hasta 64 columnas de caracteres en NTSC.
- Sin embargo, solo 40 columnas eran visibles, ya que 24 se presentaban en los periodos HBlank.
- Cada columna representaba un carácter de 7 píxeles de ancho, dando como resultado una resolución horizontal de 280 píxeles y una vertical de 192 píxeles, con un total de 24 filas.
- El mapa de caracteres era de 40 x 24, utilizando 960 bytes de los 2 KB reservados para el modo texto.
- Para el modo texto, el Apple II utiliza un mapa de caracteres almacenado en una ROM, Signetics 2513, que contenía los mapas de bits para 64 caracteres.
- Cada carácter tenía un ancho de 5 píxeles y una altura de 7 píxeles, con un pixel adicional a la izquierda y derecha, y otro en vertical.
- La ROM transmitía la línea actual del carácter a través de un contador de líneas controlado por el Video Scanner. Este contador, de 3 bits, reiniciaba su rutina al alcanzar la posición 000, permitiendo obtener nuevas líneas de caracteres.
Más allá de los aburridos caracteres de texto
A día de hoy, hablar de un ordenador de Apple para jugar, aunque las cosas ya no son tan como hace unos años, genera escepticismo, pero el Apple II estaba pensado sobre todo para videojuegos. Al fin y al cabo Jobs y Wozniac venían de Atari y ya habían tenido experiencia con Breakout.
Habréis observado que para acceder a la ROM de Signetics solo son necesarios 6 bits, desde el momento en que esta almacena 64 o 26 caracteres. Pues bien, los otros 2 bits no se desperdician. Y es que dependiendo del valor del séptimo bit (bit 6) el subsistema gráfico sacaba los patrones de bits de la ROM de Signetics o de los hasta 6 KB de RAM asignados para patrones. Por lo que, al contrario de lo que ocurría con el Commodore PET y el Tandy TRS-80, el Apple II daba la posibilidad de usar caracteres de texto a medida, lo que permitía en cierta manera tener la libertad gráfica, dentro de las limitaciones de la época, para construir videojuegos.
No en vano, muchos de los títulos clásicos de la época se programaron en el Apple II y fue esta función lo que les llevo a tener un éxito masivo y a que en 1979 Atari entrase en el mundo de los ordenadores.
Modo Lo-Res y color en el Apple II
En el modo Lo-Res cada carácter es de 4×4 píxeles y tiene un solo color de una paleta de 16 colores. Por lo que en total en una pantalla hay unos 70×48 caracteres, aunque no hay más de 64 distintos en total. Lo cual a su vez es una limitación, pero no impidió el desarrollo de muchos videojuegos.
Sin embargo, la mayor novedad del Apple II respecto a la competencia era el poder mostrar gráficos con hasta 16 colores en pantalla. Sin embargo, el modo Lo-Res desde que derivaba del modo texto tenía una serie de particularidades. Lo cual se conseguía asignando un byte adicional a cada patrón, el cual le daba un color único a cada bloque de 4×4 píxeles.
Cómo podéis ver, esto se ve perfectamente en Lode Runner, un juego pensado para funcionar en el modo Lo-Res del Apple II.
Modo Hi-Res
El Modo Hi-Res no funciona por patrones, pero no llega al nivel de mostrar un búfer de imagen completo, dado que en dicho modo cada línea de 7 píxeles dispone de su propio color, de una paleta más limitada de 6 colores. Dicho modo gráfico era utilizado en especial en las aventuras conversacionales, pero requería el uso de hasta 16 KB de RAM disponibles en el sistema.
La forma de manejar ambos modos gráficos es totalmente dispar y usaban espacios de memoria distintos. Es más, para acceder al modo Hi-Res los programas tenían que invocar la dirección de memoria $C000
, si se volvía a invocar de nuevo volvía al modo Lo-Res/Texto.
Gráficos más allá del Apple II
Una de las características del Apple II es que no se veía limitado únicamente al uso de su sistema de vídeo, sino que era posible colocar tarjetas gráficas en sus slots de expansión, lo cual se hizo necesario cuando los programas de productividad necesitaron el uso de un modo de 80 columnas, algo que era imposible con el sistema de vídeo que venía de serie en el ordenador.
El uso de tarjetas gráficas en el Apple II hace que su arquitectura se asemeje más a la de un IBM PC. Es más, la popularidad de aplicaciones como Visicalc en su modo de 80 columnas y la amenaza que era el sistema de IBM hizo que Apple lanzase para el modelo Apple IIe, una tarjeta de expansión que no solo permitía un modo gráfico de este tipo, sino que añadía 64 KB de RAM adicionales al sistema.
La disquetera (El Apple II Disk)
El formato de almacenamiento de los programas en el Apple II era la unidad de cinta, lo que no permitía el acceso aleatorio a su contenido y forzaba a tener que volcar toda la información en la RAM del sistema. Algo que podía llevar a fallos y que, obviamente, no era del agrado del mundo empresarial que no podían permitirse horas muertas en las que sus usuarios no podían usar sus ordenadores. Es por ello que los de Cupertino terminaron por lanzar una unidad de discos flexibles o disquetera de 51/4 allá por 1997.
Así pues, esta trajo dos ventajas importantes al hardware del Apple II:
- Velocidad de acceso: Los disquetes permitían un acceso mucho más rápido a los datos, ya que podían leer y escribir información casi instantáneamente, mientras que las cintas necesitaban tiempo para avanzar hasta la posición deseada.
- Acceso aleatorio a la información: Los disquetes permitían acceder a cualquier parte del archivo directamente, mientras que en las cintas se debía avanzar secuencialmente, lo que hacía que la búsqueda de información fuera más lenta.
Las ventajas del formato fueron tales, que el software para el Apple II rápidamente abandono el formato de cinta para distribuirse exclusivamente en disquete. Pero no fue hasta 1983 con el Apple IIe que empezó a vender la disquetera de serie. En todo caso, no fue el último modelo, ya que con motivo del Apple IIGS, decidieron adoptar la clásica disquetera de 3.5 pulgadas de Sony, ya común en todos los ordenadores de la época.
El Apple IIGS
En 1985, en medio del fiasco comercial del Macintosh y con el lanzamiento reciente del IBM PC AT, el Commodore Amiga y el Atari ST, el departamento del Apple II decidió lanzar un salto generacional que se basó también en una interfaz gráfica, estamos hablando del Apple IIGS.
Para mantener la compatibilidad con la serie Apple II y su software, en concreto con el modelo IIe, los ingenieros optaron por el 65C816, que no deja de ser la versión de 16 bits del 6502 (que Nintendo también utilizaría en SFC/SNES) esta vez a la velocidad de 2.5 MHz.
- El cambio de CPU le permite al sistema direccionar una mayor cantidad de memoria, ya que el 65C816 tiene un direccionamiento de 24 bits (16 MB).
- El sistema apareció en el mercado con unos 256 KB de RAM divididos en 128 KB de RAM lenta y 128 KB de RAM rápida.
- La RAM rápida funcionaba a una velocidad de 2.5 MHz y era utilizada para las aplicaciones propias del Apple IIGS.
- 64 KB se reservaba para los gráficos en modo Apple IIGS.
- Mientras que la RAM lenta era utilizada para aplicaciones que no necesitaban tanta potencia y para la compatibilidad hacia atrás con el Apple IIe y esta funcionaba a 2 MHz.
Como curiosidad, Apple termino por comprimir en un solo chip la mayor parte de la circuitería del Apple IIe, excepto la RAM y la CPU en un solo chip. Con tal de asegurarse la compatibilidad total con los programas.
Gráficos en el Apple IIGS
Los ingenieros decidieron colocar un nuevo chip gráfico en el Apple IIGS al que llamaron VGC, que añadía dos modos gráficos adicionales a los que ya tenían los modelos anteriores del Apple II.
- El primero de 320 x 200 píxeles, capaz de mostrar 256 colores en pantalla, pero limitado a 16 colores distintos por línea.
- El segundo, en cambio, de 640 x 200 píxeles, capaz también de mostrar 256 colores en pantalla, pero 16 colores distintos por línea. Aunque para conseguirlo se tenía que hacer algo de trampa.
Al contrario que el modo Hi-Res donde cada 7 píxeles compartían el mismo color, en el Apple IIGS en el modo de 320 píxeles cada 4 bits marcaban el color de un pixel, mientras que en el modo de 640 píxeles si se usaba una sola página de la memoria de vídeo, cada 2 píxeles marcaban el color de un pixel, limitando en ese caso a 4 colores por pixel. Dicho de otra forma, el VGC del Apple IIGS usaba un búfer de línea de 1280 bits.
En lo que se diferenciaban ambos modos gráficos era en la forma de gestionar la paleta. Mientras que el modo 320 tenía una paleta fija de 16 colores, el modo 640 iba intercalando entre 4 paletas disponibles, de tal manera que: el primer pixel tenía acceso a la primera paleta, el segundo pixel a la segunda paleta, el tercer pixel a la tercera paleta y el cuarto pixel a la cuarta paleta Obviamente, cada una de estas paletas era solo de 4 colores.
Con esto terminamos nuestro viaje por la serie Apple II y la evolución de su hardware, esperamos que haya sido de vuestro agrado y haya resultado amena la lectura.