El hardware del Commodore 64

Para programar en lenguajes de alto nivel apenas es necesario conocer nada sobre la arquitectura del ordenador que se utiliza. Para programar en ensamblador, en cambio, sí es muy conveniente, o incluso necesario, conocer el microprocesador y la arquitectura del ordenador, en este caso el C64. Por eso empezamos revisando el hardware del C64.

Placa base

De una manera muy esquemática, el C64 consta de:

  • Un microprocesador, concretamente el 6510.
  • Una o varias zonas de memoria ROM, es decir de sólo lectura, para almacenar datos y programas que no cambian, como el intérprete de BASIC, el mapa de caracteres estándar, o las rutinas del Kernal. La memoria ROM es no volátil, es decir, no se pierde con el apagado/encendido.
  • Una o varias zonas de memoria RAM, es decir de lectura/escritura, para almacenar datos y programas de usuario. La memoria RAM es volátil.
  • Dispositivos de entrada/salida que se encuentran accesibles como posiciones de memoria.

Todos estos componentes se interconectan entre sí mediante un bus de direcciones, un bus de datos, y un bus de control. El bus de direcciones marca qué dirección de memoria va a leer o escribir el microprocesador. El bus de datos mueve los datos. Si los mueve en el sentido memoria – microprocesador hablamos de “lectura”; si los mueve en el sentido microprocesador – memoria hablamos de “escritura”. Y el bus de control marca si la operación es de lectura o escritura, y cuándo debe realizarse (señal de reloj).

En definitiva, el microprocesador tiene acceso a un “mapa de memoria” donde están accesibles zonas de memoria ROM (datos y programas del sistema), zonas de memoria RAM (datos y programas de usuario), y dispositivos de entrada/salida. El microprocesador básicamente lo que hace es leer y ejecutar esos programas que están en memoria, leer datos de memoria, y generar y escribir otros datos.

En el caso del C64 el bus de direcciones es de 16 bits, lo que significa que se puede señalizar desde la dirección %0000000000000000 hasta la dirección %1111111111111111, es decir, desde la dirección $0000 hasta la $ffff en hexadecimal, o desde la 0 hasta la 65.535 en decimal. De ahí el nombre de Commodore 64, por las 64K posiciones de memoria direccionables.

Por otro lado, el bus de datos es de 8 bits, lo que significa que en cada una de esas 64K posiciones de memoria se almacena un byte. Como ya se ha comentado, los bits de un byte se numeran desde el 0 (menos significativo) hasta el 7 (más significativo): B7-B6-B5-B4-B3-B2-B1-B0.

A efectos de la memoria, los datos y las instrucciones o programas son indistinguibles. En ambos casos se trata de bytes almacenados. Es el microprocesador el que interpretará cada byte como instrucción o como dato, según corresponda.

Los dispositivos de entrada/salida (ej. teclado, unidad de cassete, unidad de disco, etc.) no se conectan directamente al microprocesador mediante los buses de datos y direcciones. Lo hacen a través de circuitos integrados (6526 CIA – Complex Interface Adapter) que hacen de interfaz entre los dispositivos y el microprocesador, adaptando las especificaciones eléctricas de unos y otro, y haciendo que el microprocesador “vea” los dispositivos como posiciones de memoria en las que puede leer y escribir.

El dispositivo de salida por excelencia es la TV (o el monitor). En este caso, la conexión del microprocesador con la TV es a través de otro chip, el 6567 VIC – Video Interface Chip. Para dispositivos de sonido y música se utiliza el chip 6581 SID – Sound Interface Device. Estos chips, el VIC y el SID, son casi tan famosos o más que el propio 6510.

En realidad, el microprocesador 6510 no sólo maneja un mapa de memoria. Es capaz de manejar varios mapas de memoria distintos en función de cómo se configure. En otro blog posterior se hablará de los mapas de memoria.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s