Registros del CIA2

El CIA2 es un chip idéntico al CIA1. Por tanto, tiene los mismos registros que el CIA1, pero ubicados en una zona de memoria más alta ($dd00 – $dd0f):

REGISTRO DIRECCIÓN FUNCIÓN
CI2PRA $dd00 Puerto de datos A.
CI2PRB $dd01 Puerto de datos B.
C2DDRA $dd02 Registro de dirección de datos A:

Bit 0…7 = 0: entrada.

Bit 0…7 = 1: salida.

C2DDRB $dd03 Registro de dirección de datos B:

Bit 0…7 = 0: entrada.

Bit 0…7 = 1: salida.

TI2ALO $dd04 Contador A. Parte menos significativa (low).
TI2AHI $dd05 Contador A. Parte más significativa (high).
TI2BLO $dd06 Contador B. Parte menos significativa (low).
TI2BHI $dd07 Contador B. Parte más significativa (high).
TO2TEN $dd08 Time of day. Décimas de segundo.
TO2SEC $dd09 Time of day. Segundos.
TO2MIN $dd0a Time of day. Minutos.
TO2HRS $dd0b Time of day. Horas.
CI2SDR $dd0c Envío y recepción de datos en modo serie por el puerto de usuario.
CI2ICR $dd0d Registro de control de interrupciones.
CI2CRA $dd0e Registro de control del contador A.
CI2CRB $dd0f Registro de control del contador B.

Las principales diferencias entre el CIA2 y el CIA1 son los dispositivos a los que da acceso y las interrupciones.

Respecto a los dispositivos, el CIA2 da acceso al puerto serie y al puerto de usuario. El puerto serie es un puerto que funciona bit a bit (en serie) y al que típicamente se conecta la unidad de disco 1541. El puerto de usuario, por el contrario, es un puerto que funciona en paralelo, es decir, permite intercambiar bits de ocho en ocho.

CIA2

Respecto a las interrupciones, el pin de interrupciones del CIA1 está conectado al pin IRQ del 6510, lo que significa que sus interrupciones son enmascarables con la instrucción “sei”. Sin embargo, el pin de interrupciones del CIA2 está conectado al pin NMI del 6510, lo que significa que sus interrupciones son no enmascarables (non-maskable interrupts).

Los detalles sobre cómo utilizar los registros CI2PRA y CI2PRB y resto de registros asociados para realizar E/S por el puerto serie y al puerto de usuario quedan fuera del alcance de este blog, al menos de momento. Pero pueden consultarse estos detalles en el libro “Mapping the Commodore 64”, en sus páginas 186 y siguientes.

Un comentario en “Registros del CIA2”

  1. Hola.

    Un uso muy importante del CIA2, concretamente de su registro CI2PRA = $dd00, es elegir el banco de 16K direccionado por el VIC.

    En función de los valores de los bits 0 y 1 de este registro, el banco direccionado es:

    %00 => $c000 – $ffff
    %01 => $8000 – $bfff
    %10 => $4000 – $7fff
    %11 => $0000 – $3fff (valor por defecto)

    Esto puede verse en la página 189 del libro “Mapping the Commodore 64”.

    Un saludo, HVSW.

    Me gusta

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