DEV-TRONIC.de

Z80Ardu – Displayadapter (mit MC6847)

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 (Schwarz-Weiß)

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.

Eine frühe Version der Grafikkarte. Inzwischen überholt.

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, und wird vermutlich als Erweiterung irgendwann hier augeführt.

Die aktuelle Version der Grafikkarte, wie ich sie zurzeit (Juni 2022) nutze, sieht wie folgt aus:

Noch die „kurze“ Version für die alte Basisplatine. Ohne externen Zeichensatz

Übrigens: Bei der Programmierung einiger Routinen zur Erzeugung von Grafik konnte ich feststellen, dass Daten nicht sauber übertragen werden. Bei 4 MHz des Z80Ardu und einer schnellen Plotroutine erscheinen auf dem Bildschirm Artefakte oder es fehlen Punkte. Der Austausch des Speicherbausteins (auf meiner aktuellen Version noch ein 32 KB SRAM Baustein von Alliance in 600 mil Breite und einer Zugriffszeit von 70 ns) gegen andere Hersteller, jeweils mit unterschiedlichen Zugriffszeiten, hat nichts gebracht. Auch der Austausch des MC6847 gegen einen anderen MC6847 bringt nichts. Diese Erkenntnis erlangte ich im Juni 2022.

Zugegeben, die Trennung des Adressbusses mit Widerständen ist eine günstige, aber nicht unbedingt eine gute Lösung. Eine neue Version ist schon in Arbeit (ebenfalls Juni 2022).

Download:

Die Datei enthält den Schaltplan in unterschiedlichen Formaten, die Gerberfiles für die PCB-Produktion und eine Bauteileliste. Die bereitgestellte Version ist die „kurze“ Version, allerdings mit einem schmalen Videoram-Chip (300 mil) und geändertem Layout. Das sollte funktionieren, da sich an der Schaltung an sich nichts geändert hat (Ich habe die Version allerdings noch NICHT getestet). Die Karte ist ansonsten kompatibel mit der neuen Basisplatine und kann dort uneingeschränkt genutzt werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.