# MOS 6522

Il MOS 6522 Versatile Interface Adapter (VIA) è un circuito integrato prodotto da MOS Technology come controller input/output per la famiglia di microprocessori MOS 65xx che abbina al controllo parallelo offerto dal MOS 6520 PIA un timer e un registro a scorrimento per le comunicazioni seriali. Prodotto inizialmente solo da MOS Technology, fu in seguito concesso in licenza anche ad altri produttori, tra cui Rockwell e Synertek.
Il 6522 fu molto popolare negli home computer degli anni ottanta, soprattutto in quelli prodotti da Commodore, che lo usò anche in alcune periferiche quali l'unità dischi C1541, e nell'Apple III e nel Macintosh 128/512K prodotti da Apple e nel BBC Micro e fu praticamente ubiquitario nelle unità di controllo, persino industriale (quelle basate sul 6502 erano particolarmente diffuse tra il 1976 e i tardi anni '80).

## Porte di I/O

Il VIA contiene 20 linee di I/O organizzate in 2 porte bidirezionali (PA e PB) a 8 bit (usabili anche come 16 linee di I/O di uso generico) e 4 linee di controllo (per la generazione dei segnali di handshake e di interrupt). La direzione di tutte le 16 linee di uso generale (PA0-7 e PB0-7) può essere programmata in modo indipendente; le linee di controllo possono essere programmate per generare un interrupt quando attivate (tutte e 4), si può bloccare lo stato della corrispondente porta di I/O (solo le porte CA1 e CB1), si possono generare automaticamente segnali di handshake per i dispositivi, o inviare in output un livello di segnale alto ("HIGH") o basso ("LOW").

## Timer

Il VIA fornisce 2 timer/contatori a 16 bit che possono essere utilizzati in modalità monostabile, libera (divisore) o come contatore di impulsi: in questa modalità il contatore controlla il 7° bit della rispettiva porta di I/O (PA6 o PB6) e conta quanti cambiamenti di stato sono effettuati. Ogni contatore può generare un interrupt quando raggiunge il valore zero e generare un'onda quadra sull'8° bit della rispettiva porta di I/O (PA7 o PB7).

## Registro a scorrimento

Il registro a scorrimento del VIA è bidirezionale e largo 8 bit. Può scorrere sia con un segnale di clock generato dal 2° timer, sia con il clock della CPU oppure con un segnale esterno letto sulla linea CB1. L'input/output seriale è sulla linea CB2 e la CB1 può essere programmata anche per inviare un clock a dispositivi esterni.

## Difetti del chip

Il MOS 6522 VIA è affetto da alcuni bug sul registro a scorrimento.
Il primo colpiva i chip usati con CPU che non usavano un bus di sistema compatibile con quello della famiglia 65xx, come il Motorola 68000. Se le linee di indirizzo cambiavano mentre il pin di selezione del chip era inattivo ma il pin di input del clock di Φ2 (Phase 2) era attivo, il contenuto del registro poteva essere cambiato nonostante il chip non fosse selezionato.
Un bug più noto riguardava il salto di lettura dei dati su CB1. Se il segnale su CB1 calava nel giro di pochi nanosecondi dalla caduta del segnale di Φ2 (Phase 2) della CPU, lo stato di CB1 veniva ignorato perdendo il bit. Ciò causava la corruzione dei successivi dati.
Questi problemi furono risolti da alcuni produttori nelle proprie versioni CMOS del chip, come California Micro Devices con il suo G65SC22.