MOS Technology 6522
El 6522 Versatile Interface Adapter (VIA) es un circuito integrado fabricado por MOS Technology, y también por otras compañías (second source) como Rockwell y Synertek. Funciona como controlador de puerto de entrada/salida para la familia de microprocesadores 6502, proporcionado las capacidades de entrada/salida paralela del PIA además de temporizadores y un Registro de desplazamiento para comunicaciones seriales. El 6522 fue muy popular en los ordenadores de los Años 1980, particularmente en los fabricados por Commodore International, y es también una parte central del diseño del BBC Micro, Apple III y Apple Macintosh.
Puertos de entrada/salida
El VIA contiene 20 líneas de entrada/salida, que se organizan en 2 puertos bidireccionales de 8 bits (o 16 líneas de entrada/salida de propósito general) y 4 líneas de control (para handshaking y generación de interrupciones). Las direcciones para las 16 líneas generales (PA0-7, PB0-7) pueden programarse independientemente. Las líneas de control deben programarse para generar una interrupción cuando se activan (las 4 a la vez), bloqueando puerto correspondiente de entrada/salida (CA1 y CB1), y automáticamente generando señales de handshaking para los dispositivo en los puertos I/O, o enviando una señal plana High o Low.
Temporizadores
El VIA proporciona 2 Temporizadores de 16 bits, que pueden ser usados en un disparo (Monoestable), ejecución libre (divisor) o pulso continuo, en el que el temporizador monitoriza constantemente el séptimo bit (PA6 o PB6) en su puerto de entrada/salida respectivo, y cuenta cuantas transiciones de estado pasan por él. Cada temporizador puede generar una interrupción cuando llega a cero, y puede también dar salida a ondas cuadradas en el octavo bit de su respectivo puerto de entrada/salida (pin PA7 o PB7).
Registro de desplazamiento
El Registro de desplazamiento del VIA es bidireccional, de 8 bits de ancho, y puede ejecutarse desde un temporizador ya sea generados por el reloj (del temporizador 2), el reloj de la CPU o una fuente externa en la línea CB1. El puerto serie de entrada/salida está situado en la línea CB2, y la CB1 puede también programarse para dar salida a un reloj de un bit para dispositivos externos. El infame bug del registro de desplazamiento serial será fijado por el CMD G65SC22.
Errores
Aparte del mencionado error del registro de desplazamiento, hay también un problema potencial de corrupción de registros que usualmente sólo ocurre en sistemas que utilizan el 6522 con un procesador que no tiene un bus tipo 6502, como el Motorola 68000. Si las líneas de direccionamiento cambian mientras que el chip select está inactivo pero la entrada de fase 2 del reloj está Alta (activa), los contenidos de los registros pueden cambiar, aunque chip select esté inactivo. Este bug se fija en algunas, pero no en todas, de las versiones CMOS.