Der Commodore 64 enthält zwei 6526 "Complex Interface Adaptor" (CIA) Chips, die große Ähnlichkeit zu den 6522 VIAs aufweisen. Eingabegeräte (Knöpfe und ähnliches) oder Ausgabegeräte (wie Lichter) können über einen Puffer direkt mit dem Chip verbunden werden, und können direkt über eine Speicherstelle angesprochen werden. Diese Chips haben auch andere interessante Fähigkeiten wie die zwei eingebauten 16-Bit Timer und eine Echtzeituhr mit Alarm.
Die Parallelports
Die Register 0 und 1 des Chips sind acht Bit breite parallele Datenanschlüsse. Mittels der Datenrichtungsregister (Register 2 und 3 des CIA-Chips) kann jedes der Bits individuell auf Eingabe oder Ausgabe programmiert werden. Wenn ein Bit im Datenrichtungsregister 2 gesetzt ist, ist das entsprechende Bit in Register 0 auf Ausgabe programmiert. Wenn ein Bit im Datenrichtungsregister 2 gelöscht ist, ist das entsprechende Bit in Register 0 auf Eingabe programmiert. Dasselbe gilt für die Register 1 und 3.
Die Echtzeituhren
Die Echtzeituhr ist eine auf eine Zehntelsekunde genaue 24 Stunden Uhr. Jede Uhr ist in vier Register aufgeteilt: Zehntel, Sekunden, Minuten, Stunden. Ein AM/PM flag befindet sich beim MSP des Stundenregisters. Jedes Register ist im BCD-Format. Zusätzlich zur Zeitanzeige kann auch eine Alarmfunktion eingestellt werden. Diese erzeugt zu einer gegebenen Zeit einen Interrupt. Da die Uhren ihren Referenztakt von der Netzfrequenz beziehen, sind sie recht genau.
Die Timer
Jede 6526 CIA enthält zwei 16-Bit Intervalltimer: Timer A und Timer B. Diese Timer können unabhängig voneinander verwendet oder gekoppelt werden, um einen 32-Bit Timer zu erhalten. Diese TImer können auf eine Vielzahl von Timingmodi eingestellt werden, um Zeitverzögerungen, Wellelformen mit variabler Frequenz und ähnliches zu erzeugen. Sie können auch verwendet werden um externe Eingaben zu zählen, Pulsbreiten oder Verzögerungszeiten von externen Quellen zu messen. All diese Funktionen werden völlig unabhängig von der CPU abgearbeitet. Diese Zähler können auch dafür verwendet werden die internen Taktzyklen des Rechners zu zählen. Mittels des eingebauten 1 Mhz Taktgenerators können Ereignisse bei einer auflösung von bis zu einer Mikrosekunde (.000001 second) getimed werden.













