DEV-TRONIC.de

Z80Ardu – Displayadapter

Parallel zum eigentlichen Z80Ardu-Rechner wollte ich so etwas wie eine Grafikkarte bauen. Basis für den Displayadapter sollte der MC6847 sein. Dieser Chip wurde in den 80ern häufig in Heimcomputern verwendet. Der Chip hat folgende Eckdaten:

  • Textmodus mit 16 Zeilen á 32 Zeichen
  • Blockgrafik im Textmodus in 8 Farben
  • Diverse Grafikmodi, max. 4 Farben, maximale Auflösung 256 x 192 Pixel

Sicher handelt es sich um kein Grafikwunder. Aber dafür ist dieser Chip recht einfach zu handhaben. Einzig das Timing für den Zugriff auf den Videospeicher durch den Prozessor kann eine Herausforderung werden, wenn man keine Bildstörungen verursachen möchte.

Zunächst habe ich meine Idee mal auf ein Breadboard gesteckt. Auf der kleinen Zusatzplatine befindet sich der Signalverstärker für die Composite-Signale:

Die Breadboard-Grafikkarte
Das Ergebnis

Nachdem die Breadboard-Version ja gut funktioniert hat, habe ich das Ganze als PCB bestellt und mir eine „Grafikkarte“ zusammengebaut. Die Version, die auf dem nachfolgenden Bild zu sehen ist, ist nicht die aktuellste Version. Ich habe noch ein wenig am Platinenlayout gearbeitet und auch auf zwei Potis verzichtet.

Aktuell verfügt die Karte über 32 KB Videoram. Der MC6847 benötigt für die Darstellung der vollen Auflösung allerdings nur 6144 Bytes. Es würde also ein 8 KB Baustein vollkommen ausreichen. Die 32 KB werden auf der Karte jedoch in 4 Bänke aufgeteilt. Es können also 4 unabhängige Bildschirme aufgerufen werden. Die Umschaltung erfolgt über ein Latch. Der Bildschirminhalt bleibt beim Umschalten natürlich erhalten.

Übrigens: Der MC6847 kann auch mit einem externen Character ROM (oder RAM) ausgestattet werden. Man kann dann zwischen dem eingebauten Zeichensatz und einem selbst definierten Zeichensatz umschalten. Die Beschaltung des Chips sieht dann allerdings um einiges anders aus, sodass ich dafür vielleicht mal einen eigenen Artikel schreibe.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.