Commodore 64: historia y hardware del ordenador más vendido

Lanzando en 1982 tras el éxito comercial de VIC-20, el Commodore 64 es considerado el modelo de ordenador más vendido de la historia, alcanzando la cifra de 17 millones de unidades vendidas en todo el mundo. Mucho más incluso que cualquier consola de SEGA sin tener en cuenta la Mega Drive/Genesis. En este artículo desgranaremos todo acerca de su hardware.

El VIC-20, el antecesor al Commodore 64

El precursor del C64 fue el VIC-20, un ordenador de muy bajo coste que lanzó Commodore en 1980 y que debe su nombre a su chip gráfico, el VIC, cuyas siglas significan (Video Interface Chip). ¿El objetivo? Ofrecer una solución asequible al usuario de a pie, una filosofía muy parecida a la del ZX Spectrum de Sinclair. Sin embargo, con componentes diferenciados desde el momento en que Commodore era propietaria de MOS. Esto les permitía una integración vertical completa, es como si a día de hoy Intel o AMD fueran propiedad de Dell, Hewlett Packard, ASUS, GIGABYTE, MSI o cualquier otro fabricante y ensamblador de ordenadores. No solo podían diseñar sus propios chips, también los fabricaban y eso era una enorme ventaja.

Anuncio Commodore VIC-20

En cuanto a sus especificaciones técnicas, estás eran muy modestas:

  • Una CPU MOS 6502 a 1 MHz.
  • 5 KB de memoria SRAM, para ahorrar en costes, no usaba DRAM para ahorrarse el mecanismo de refresco de la DRAM.
  • El VIC se encargaba de los gráficos y del sonido:
    • En modo gráfico funcionaba como un generador de caracteres o terminal de texto rudimentario con solo 22 columnas de resolución horizontal (176 píxeles) y 184 líneas de resolución vertical con una paleta de 8 colores.
    • Tenía tres canales de sonido que generaban ondas cuadradas simples y sin soporte para ruido blanco o envolventes de sonido complejas. Por lo que no podía generar un audio de tanta calidad como el del AY-3-8910 o el POKEY de Atari.

Pese a sus limitadas especificaciones técnicas, el VIC-20 fue el primer ordenador personal en llegar al millón de unidades. Todo ello gracias a su bajo precio y la capacidad de expandir sus capacidades mediante cartuchos y la capacidad de expansión a partir de un puerto que le permitía añadir más RAM. Además, su popularidad la granjeo un buen catálogo de software disponible y aseguro la creación de un sucesor, el Commodore 64.

En un principio iba a haber una consola

El objetivo inicial de Commodore no era desarrollar el Commodore 64, sino vender los chips que habían estado desarrollando en MOS a un tercero. En concreto, a los fabricantes de consolas de videojuegos que quisiesen hacer una máquina con mejores capacidades que las que había en ese momento. Recordemos que la Colecovision no vio la luz hasta 1982 y, por lo tanto, cuando los chips VIC-II y SID empezaron su desarrollo, lo que había en el mercado era la Intellivision y la Atari VCS.

Sin embargo, el enorme éxito del VIC-20 les llevo a lanzar lo que termino siendo el C64. Tanto el nuevo chip gráfico como el de audio se terminaron en agosto de 1981 de la mano de Robert Yanes, para luego terminar formando parte del sucesor del VIC-20 que se presentó al cabo de pocos meses. La idea inicial era convencer a terceros sobre las capacidades de la máquina, pero terminaron teniendo, y especialmente en 1983, el segundo año de su lanzamiento, unas ventas muy por encima de lo esperado, lo que llevo a que CBM se quedase la tecnología para ellos mismos.

El hardware del Commodore 64

La gente de CBM planeo tan rápidamente el lanzamiento del Commodore 64 que llegaron a usar incluso la misma carcasa y teclado del VIC-20, ya que su lanzamiento se hizo a toda prisa. Sin embargo, era común en aquella época por la poca complejidad de los chips que los sistemas se lanzarán en poco más de un año desde la concepción inicial.

Placa y circuitería del Commodore 64

Lo que llama poderosamente la atención, es que al igual que Atari en 1978 con el Atari 800, la gente de Commodore creo 3 chips a medida para el C64, los ya mencionados VIC-II y SID y una variante del MOS 6502 a la que llamaron 6510 y que funciono a 1 MHz. ¿El motivo detrás de esta velocidad de reloj tan baja? El hecho que decidieron adoptar la capacidad que también tenía el Apple II de usar una memoria RAM a 2 MHz, para ir intercalando los accesos con el subsistema gráfico.

Es decir, al contrario de lo que ocurría con el Atari 800 y los sistemas basados en el TMS9918A, la CPU del Commodore 64 puede acceder al espacio de memoria del VIC-II, ya que no tiene memoria local, sino que el chip gráfico utiliza la misma RAM del sistema, permitiendo realizar trucos gráficos modificando los valores de memoria al vuelo durante el periodo HBlank, pero, sobre todo, permite compensar la menor velocidad de reloj de la CPU del Commodore 64.

La CPU: el MOS 6510

Pinout dekl MOS 6510

La CPU del Commodore 64 es una versión modificada del 6502 que no cambia nada en su funcionamiento interno, pero que añade una serie de pines de E/S (P0 a P5) cuyas funciones son las siguientes

  • P0 (LORAM): Si este puerto recibe un 1 entonces la ROM del BASIC en el sistema queda mapeada entre las direcciones a000-bfff, si recibe un 0 entonces dicha área de la memoria es tratada como si fuese RAM normal. Al arrancar el ordenador el P0 recibe un 1.
  • P1 (HIRAM): Si este puerto recibe un 1 entonces la ROM del KERNAL (El SO del C64) es mapeada entre las direcciones e000-ffff, si recibe un 0 entonces funciona como RAM normal.
  • P2: Mapea los registros de E/S en los registros d000-dfff si se le envia un 1, si se le envía un 0 entonces la ROM de caracteres (letras) es cargada.
  • P3: Se activa cuando se envían y reciben datos desde y hacia el Datasette.
  • P4: Se activa si damos Play al Datasette.
  • P5: Se activa junto al P3 y al P4, le marca al 6510 si el Datasette está en marcha.

Por lo demás, su rendimiento es exactamente idéntico al de un MOS 6502 a 1 MHz, dado que fuera de estos 5 pines extras con funciones específicas en el C64 no tiene ningún cambio interno respecto al diseño original.

El mapa de memoria del Commodore 64

Dejemos de lado los pines relacionados con el control de la unidad de cinta, lo que nos interesa aquí son los pines P0 y P1 y para ello hemos de partir del hecho que en muchos sistemas de la época la RAM eran 48 KB como mucho, porque dejaban unos 16 KB del direccionamiento a la ROM del sistema. La utilidad de estos dos pines es que cuando se cargaba un juego a la memoria RAM, este podía ocupar buena parte de los 64 KB de memoria sin problemas simplemente liberando las direcciones de memoria que correspondían a la ROM.

La idea es simple, cuando introducimos un cartucho o iniciamos un juego en cinta, las direcciones de memoria que apuntan a la ROM del sistema pasan a apuntar al cartucho o quedan libres para el juego que se está cargando desde la cinta del Datasette.

Expansión de memoria Commodore 64
I

Por desgracia, al C64 no soporta el uso de bancos de memoria para ampliar la cantidad de RAM que puede manejar más allá de los 64 KB, aunque hay una forma de hacerlo que es usando el cartucho de expansión de RAM que sí que incluye un mecanismo de este tipo, aunque ningún título comercial lo hizo, pese a que hay una conversión no oficial del Sonic de Master System que sí lo utiliza. El motivo de ello es que se lanzó varios años después del lanzamiento del sistema.

Gráficos en el Commodore 64: el VIC-II

El VIC-II cumple con dos funciones en el sistema, la primera es integrar el mecanismo de refresco de la DRAM, el segundo es generar los gráficos del sistema. Su acceso a la RAM del Commodore 64 no se realiza a través de un mecanismo DMA como en el ANTIC del Atari 800 y tampoco tiene una memoria local como el TMS9918A. La velocidad a la que escribe y lee desde memoria es a 1 MHz, la misma que la CPU. Ambos y como hemos comentado antes, acceden a una RAM que funciona a 2 MHz de forma intercalada.

Pese a que el direccionamiento del VIC-II es de 16 bits, realmente solo usa 16 KB de memoria, ya que los otros 2 bits son para escoger el banco desde el que va a operar. Recordad que hay una parte del direccionamiento que es ocupada por la ROM y registros del sistema. En realidad, esto se hace para facilitar el refresco de la DRAM. No obstante, lo que nos interesa aquí son sus capacidades gráficas y se puede decir, que al igual que el TMS9918A dispone de un generador de sprites por hardware, pero con un funcionamiento un poco distinto al del chip de Texas Instruments por la capacidad que tiene la CPU de poder variar sus registros al vuelo.

Resolución y Tile Map

El Tilemap es el mapa de caracteres de posición fija y que no se desplazan por la pantalla ni cambian de un fotograma a otro. Si bien el tamaño de un tilemap puede ser de varias pantalla, el hardware del Commodore 64 dispone de dos modos gráficos, los cuales condición la forma de mostrar los gráficos en pantalla.

Lord of Chaos Commodore 64

El primero de ellos era el modo de alta resolución, con una definición de 1 bit por píxel y una resolución de 320 x 200 píxeles (40 x 25 caracteres de 8 x 8 píxeles). Ambos colores pueden ser cambiados durante el periodo HBlank al inicio de cada línea de escaneo.

Rainbow Islands Commodore 64

En cuanto al segundo, llamado modo multicolor, reduce la resolución horizontal a la mitad, por lo que se queda en 160 x 200 píxeles. Esto se debe a que el color de cada píxel queda definido por 2 bits, lo que permite 4 colores por cada uno de ellos. Esto significa además que los caracteres que forman el Tilemap o fondo pasan de ocupar 8 bytes a 16 bytes cada uno.

El motivo por el cual no se pueden cambiar los colores al vuelo, sino solo en la fase HBlank, es por el hecho que se copian en unos registros internos del VIC-II que será a los que accederá mientras dibuja la línea de escaneo.

Sprites

El sistema de sprites del Commodore 64 le permitía tener hasta 8 activos por línea de escaneo, sin embargo, estos no se cargaban en una lista en el periodo VBlank como el TMS9918A, sino que tenían que irse reemplazando al vuelo escribiendo en los registros correspondientes. En todo caso, no es diferente a la forma en la que la Intellivision o el Atari 800 manejan los sprites.

Cuando los sprites eran de 1 bit por píxel, estos eran de 24 x 21 píxeles de tamaño. En cambio, cuando eran de 2 bits por píxel, eran de 12 x 21 píxeles. Era posible combinar ambos tipos de sprites con los dos modos gráficos. El motivo de no usar sprites de 8 x 8 píxeles, era que la cantidad de registros para sprites se encontraba limitado a 8. Por lo que con ello se permitía que un solo objeto tuviera suficiente detalle sin la necesidad de tener que combinar varios sprites.

El SID: el mejor audio de 8 bits

Pese a que las capacidades gráficas del Commodore 64 estaban por encima de sus rivales, el chip que se llevó toda la ovación fue el SID, una pieza única que se encuentra muy por encima de sus rivales, por una característica muy concreta. Pese a tener solo 3 canales de audio, puede generar cualquier tipo de onda al vuelo en cualquiera de los canales, no solo ondas cuadradas y de ruido. Esto se puede ver a través de un osciloscopio.

Comparado con el mismo tema programado para un AY-3-8910:

No obstante, el SID del Commodore 64 es único en su especie, dado que utiliza sintetización analógica. Por lo que funciona combinando sintetización analógica y control digital, lo que lo diferencia de la mayoría de los chips de sonido de la época, que eran más limitados. Por lo que este chip de audio utiliza una serie de osciladores que le permiten producir las siguientes formas de onda básicas: cuadrada, triangular, sierra y ruido.

Además, se puede manipular la frecuencia, la amplitud y las características del filtro para crear una amplia variedad de sonidos. El SID permite modulación y control de parámetros en tiempo real, como el ajuste del filtro y la mezcla de diferentes formas de onda en un mismo canal de sonido. Todo ello lo convierten en el mejor chip de sonido de los 8 bits si no contamos los de síntesis FM.

Y con esto terminamos nuestro viaje por el Commodore 64, esperamos que lo hayáis disfrutado.

1 comentario en “Commodore 64: historia y hardware del ordenador más vendido”

  1. Pingback: NES: así fue la consola que vio nacer a Zelda y Super Mario

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio