Dieser Grafikchip war ein Überbleibsel aus dem CBM900-Projekt. Er wurde modifiziert im C128 eingesetzt, um den 80-Zeichen-Schirm realisieren zu können.
Die Entwicklungsgeschichte des Chips ist recht abenteuerlich. Frühe Modelle hatten eine Fehlerrate von drei Fehlern pro Sekunde statt alle drei Jahre. Das Blockverschiebefeature konnte nur maximal 256 Bytes verschieben (3,5 Bildschirmzeilen...) und selbst dann vergaß es gelegentlich ein paar Zeichen. Um das zu umgehen, musste man den Verschiebebefehl ZWEIMAL geben. Dummerweise vergaß man, dies dem armen Kerl zu sagen, der CP/M für den C128 entwickelt hatte. In der Nacht vor der Präsentation auf der CES bekam er es dann mit und setzte sich hin, um alle Schreibzugriffe auf die entsprechenden Register anzupassen. Da er die zum neuassemblieren benötigten Gerätschaften nicht dabei hatte, musste dies direkt mit einem Diskettenmonitor geschehen. Ach ja, bei CP/M sind die Bytes auf den Disketten rückwärts in ebenfalls rückwärts orientierten Sektoren abgespeichert. Außerdem konnte er die Zahl der Instruktionen weder erhöhen noch verringern, sondern bloß vorhandene Instruktionen auswechseln. Dazu kam das Sektorprüfsummenberechnen von Hand. All das mit einem Diskettenmonitor...
Da der Chip keinerlei Interrupts abgibt, wenn er mit einer Aufgabe fertig ist, musste er permanent abgefragt werden (der Running Gag bei Commodore wurde daraufhin, man braucht ja keine Klingel im Telefon, man kann ja jederzeit abheben um zu schauen ob einer dran ist). Dazu kamen noch Synchronisationsprobleme, da der Chip mit 16 MHz getaktet wurde, der Rest des Systems aber mit 14,31818 MHz, dadurch wurden Speicherzugriffe ein reines Glücksspiel. Die Fertigungsausbeute des Chips lag etwa bei 0.001 % (kein Witz!!!), für jeden Chip musste das Netzteil anders eingestellt werden und das laden der Fonts dauerte bei jedem Einschalten etwa 10 Sekunden, vorausgesetzt, es funktionierte überhaupt. Die meisten dieser Probleme wurden erst kurz vor der Präsentation des C128 "behoben", das meiste waren "dirty hacks", um überhaupt etwas zeigen zu können.
Eigenschaften des VDC
Im Gegensatz zu beispielsweise dem VIC hatte der VDC seinen eigenen Grafikspeicher, der beim alten C128 16 KByte, beim neueren C128 DCR 64 KByte groß war. Dieser Speicher war nicht direkt für die CPU des Rechners ansprechbar, und die Register des Chips waren auch nicht wie die der anderen im I/O-Bereich des Rechners zu finden. Um den VDC zu steuern, wurde auf eine etwas seltsame Methode zurückgegriffen. Der Chip war nur mit zwei Speicherstellen im Adressbereich der CPU vertreten, eine davon repräsentierte die Registernummer, die andere den Registerwert. Wenn man nun etwas in ein Register schreiben wollte, dann schrieb man zuerst die Registernummer in die eine Speicherzelle, und dann den gewünschten Wert in die andere. Das lesen funktionierte analog, indem man erst die Registernummer angab, und den Wert dann aus dem zweiten Speicherbereich las. Dies machte direkte Zugriffe auf den Bildschirmspeicher zwar nicht unmöglich (es gab spezielle VDC-Register zum Ansprechen des Speichers) aber äußerst umständlich.
Dafür bekam man einen CGA-ähnlichen Grafikchip, der Texte in 16 Farben in einer 80x25 Matrix anzeigen konnte (mittels eines Interlace-Tricks waren 80x50 Zeichen möglich, aber leider nur mit dem typischen geflimmere) und Grafik in 640 x 200 Bildpunkten und mit Programmiertricks sogar noch viel höherer Auflösung auf den Schirm brachte.
Darstellungsmodi
| Art | Auflösung | Farben | |
|---|---|---|---|
| Text | 80 x 25 | 1 aus 16 | |
| Grafik | 640 x 200 | 1 aus 16 |













