MOS Technology CIA
# MOS Technology CIA

Der MOS Technology CIA (Complex Interface Adapter) ist ein vielseitig einsetzbarer I/O-Chip für 8-Bit-Mikroprozessorsysteme der 6500-Familie, der in vielen Commodore-Computern und -Peripheriegeräten zum Einsatz kam (u. a. C64 und Amiga). Er wurde von MOS Technology hergestellt und ist der Nachfolger des MOS Technology VIA.

Es existieren vier Typen des CIA: 6526, 8521 sowie 8520, wobei letzterer in den Amigas und in den Floppylaufwerken VC1571 und VC1581 eingesetzt wurde. Eine integrierte Version 5710 mit nur drei Registern wurde für den C128DCR entwickelt.

## Technische Eigenschaften

Die CIAs 6526 und 8521 verfügen über zwei bidirektionale 8-Bit-TTL-Ein-/Ausgabe-Ports (alle acht Datenleitungen eines Ports können unabhängig voneinander auf Ein- oder Ausgabe programmiert werden), ein serielles Schieberegister, zwei kaskadierbare 16-Bit-Timer und eine auf Zehntelsekunden genaue Echtzeituhr mit Alarmfunktion. Der 8520 gleicht dem 6526, besitzt aber anstatt der Echtzeituhr einen 24-Bit-Timer. Bei Timerunterlauf, gefülltem bzw. geleertem Schieberegister, Erreichen der Alarmzeit oder Empfang eines externen Signals kann der Chip auf Wunsch einen Interrupt auslösen.

Die Echtzeituhr benutzt die 50- bzw. 60-Hz-Netzfrequenz als Referenz, die Zeit kann beim 6526 und 8521 über vier Register (Zehntelsekunden, Sekunden, Minuten, Stunden) im BCD-Format ausgelesen werden. Beim 8520 kann der Timerwert über drei Register ausgelesen werden. Zusätzlich kann eine Alarmzeit gesetzt werden, bei deren Erreichen ein Interrupt ausgelöst wird.

Die Timer können über den Systemtakt wie auch externe Impulse heruntergezählt werden. Ein Timerunterlauf kann einen Interrupt auslösen und/oder einen Impuls an einen Ein-/Ausgabe-Pin senden.

## Fehlverhalten

* Der in den Amigas verbaute 8520 weist hinsichtlich seines 24-Bit-Timers einen Fehler auf, der zur Folge hat, dass, wenn das mittlere Timer-Byte den Wert $nF_{16}$ aufweist und dann um eins erhöht wird, zunächst dieses Byte kurzzeitig den Wert $n0_{16}$ annimmt, bevor es den korrekten Wert $(n+1)0_{16}$ besitzt. Dieses Verhalten bewirkt nicht, dass der Timer anfängt nachzugehen; eine aktivierte Alarmzeit der Form $n_1n_2n_3000_{16}$ kann allerdings dadurch einen Alarm zum falschen Zeitpunkt auslösen. Wird der 24-Bit-Timer gemäß der im Datenblatt angegebenen Reihenfolge beginnend mit dem höchstwertigsten bis zum niederwertigsten Byte ausgelesen und ist seine Alarmfunktion deaktiviert, ist der Fehler nicht sichtbar.
* Ist das Bit 7 im CRB-Register des 8520 gesetzt und damit die Alarmfunktion aktiviert, wird im 8520 keine Kopie des Momentanwerts des 24-Bit-Timers generiert, die dann unabhängig vom weiterhin hochzählenden 24-Bit-Timer von der CPU ausgelesen werden kann.
