Registros del CIA1

Como ya hemos comentado anteriormente, el C64 tiene dos CIAs, el CIA1 y el CIA2. Ambos sirven para que el microprocesador 6510 se comunique con dispositivos periféricos conectados al C64. Además, también tienen funciones de temporización.

En particular, el CIA1 conecta al microprocesador 6510 con el teclado y joysticks o paddles conectados a los puertos de control. Todos ellos son periféricos de entrada.

CIA1

Para conseguir esto el CIA1 dispone de los siguientes registros:

REGISTRO DIRECCIÓN FUNCIÓN
CIAPRA $dc00 Puerto de datos A.
CIAPRB $dc01 Puerto de datos B.
CIDDRA $dc02 Registro de dirección de datos A:

 

Bit 0…7 = 0: entrada.

Bit 0…7 = 1: salida.

CIDDRB $dc03 Registro de dirección de datos B:

 

Bit 0…7 = 0: entrada.

Bit 0…7 = 1: salida.

TIMALO $dc04 Contador A. Parte menos significativa (low).
TIMAHI $dc05 Contador A. Parte más significativa (high).
TIMBLO $dc06 Contador B. Parte menos significativa (low).
TIMBHI $dc07 Contador B. Parte más significativa (high).
TODTEN $dc08 Time of day. Décimas de segundo.
TODSEC $dc09 Time of day. Segundos.
TODMIN $dc0a Time of day. Minutos.
TODHRS $dc0b Time of day. Horas.
CIASDR $dc0c Envío y recepción de datos en modo serie por el puerto de usuario.
CIAICR $dc0d Registro de control de interrupciones.
CIACRA $dc0e Registro de control del contador A.
CIACRB $dc0f Registro de control del contador B.

Los “puertos de datos” (CIAPRA y CIAPRB) son los registros o posiciones de memoria a través de los que el microprocesador recibe o envía los datos. No se debe confundir este significado de la palabra puerto (como posición de memoria) con el significado de puerto como conexión o interfaz física.

Los “registros de dirección de datos” (CIDDRA y CIDDRB) sirven para indicar si los puertos correspondientes van a funcionar como puerto de entrada o puerto de salida. Además, esta configuración funciona bit a bit, es decir:

  • Si el bit X de CIDDRA vale 0, entonces el bit X de CIAPRA funcionará de entrada.
  • Si el bit X de CIDDRA vale 1, entonces el bit X de CIAPRA funcionará de salida.
  • Si el bit Y de CIDDRB vale 0, entonces el bit Y de CIAPRB funcionará de entrada.
  • Si el bit Y de CIDDRB vale 1, entonces el bit Y de CIAPRB funcionará de salida.

Los registros dedicados a la temporización se verán en detalle más adelante. De momento, baste decir que básicamente son contadores que permiten medir intervalos de tiempo. Como hay dos contadores (A y B), se puede usar uno, el otro, o ambos concatenados. Además, el CIA1 puede generar interrupciones IRQ cuando los contadores llegan a un determinado valor, o de forma periódica, como las interrupciones que se generan 60 veces por segundo para leer el teclado.

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