80-Zeichen-Karte & Z80-CPU: Was zusammengehört, kommt zusammen

Einführung

Vor Kurzem habe ich die EX-80+ 80-Zeichen-Karte von MK Datentechnik Berlin aus dem Jahr 1984 nachgebaut, und das unter ziemlich schwierigen Bedingungen, wie bereits berichtet wurde. Ein Vorteil dieser Karte ist, dass sie auch CP/M 2.2 oder das Commodore CP/M-Modul unterstützt.

Ebenfalls habe ich vor einiger Zeit nicht nur das Commodore CP/M-Modul nachgebaut, sowie eine wesentlich kleinere Version, die in ein Cartridge Gehäuse passt, sondern auch eine verbesserte und wesentlich kleinere Version entwickelt, die zudem schneller getaktet ist.

Beide allein sind schon großartig, aber zusammen ergeben sie eine leistungsstarke Kombination.

Warum ist das möglich?

Das CP/M-Betriebssystem und seine Anwendungen sind fast alle so konzipiert, dass sie mit einer Darstellung von 80 Zeichen pro Zeile arbeiten. Der C64 hat jedoch nur 40 Zeichen pro Zeile. Mit dieser Einschränkung machen viele Anwendungen nicht wirklich Spaß.

Es gibt Softwarelösungen, die 80 Zeichen pro Zeile darstellen können, indem sie die einzelnen Zeichen halbieren, aber die Lesbarkeit leidet erheblich darunter.

Deshalb kamen damals recht schnell die ersten Hardware-Erweiterungen auf den Markt, die dieses Problem lösen sollten. Diese Karten waren jedoch zu jener Zeit ziemlich teuer und ein Monitor war immer erforderlich. Die damaligen Fernseher konnten das digitale Composite-Signal nicht verarbeiten.

Zusätzlich waren die Karten alle proprietäre Lösungen. Sie waren untereinander inkompatibel. Programme, die für Karte A geschrieben wurden, liefen nicht auf Karte B, und so weiter.

Und es gab selten mehr als die üblichen Textverarbeitungsprogramme. Einige hatten Adressverwaltungen, aber das war es auch schon.

Selbst die Programme, die für die 40-Zeichen-Darstellung entwickelt wurden, liefen fast nie auf den 80-Zeichen-Karten. Spätestens wenn direkt in den Bildschirmspeicher geschrieben wurde, was die meisten Programme taten, war es vorbei.

Diese Karten hatten also nur ein kurzes Dasein und verschwanden recht schnell wieder.

Heute gibt es viel mehr Möglichkeiten, die im Vergleich zu damals auch wesentlich kostengünstiger sind.

Vieles, was früher mit diskreter TTL-Technologie auf großen und teuren Platinen aufgebaut wurde, kann heute in entsprechender CPLD-Technologie umgesetzt werden, was viel Geld und Platz spart.

Das Ziel war daher, alles in ein Modulgehäuse für den C64 zu integrieren.

Der Plan

Ohne SMD-Technologie ist das bei dieser Größe natürlich nicht mehr möglich. Es sollten jedoch weitgehend Standardkomponenten verwendet und auf die kleinsten Designs verzichtet werden. Alles sollte für einen halbwegs ambitionierten Hobbybastler lötbar sein. Daher keine BGA oder QFN und auch nicht kleiner als 0603. Das CPLD könnte die größte Herausforderung für die meisten sein, aber mit einem halbwegs brauchbaren Lötkolben und einer guten Spitze (die übrigens nicht zu klein sein sollte, hier ist größer besser) und viel Flussmittel lässt sich eine solche Komponente recht einfach löten.

Eine beidseitige Bestückung sollte ebenfalls vermieden werden, da dies für einige Probleme darstellt und auch teurer ist, wenn dies von einem der bekannten Platinenhersteller durchgeführt werden soll.

Multilayer sollten ebenfalls möglichst vermieden werden, um die Kosten so niedrig wie möglich zu halten.

Deshalb wurde entschieden, zwei Platinen zu entwickeln, die übereinander gesteckt werden können: einmal die 80-Zeichen-Platine, die auch allein verwendet werden kann, und zusätzlich die Z80-Platine mit eigenem CPLD.

Es wurde ein recht brauchbarer Ansatz entwickelt, besonders da er komplett in ein Modulgehäuse passt. Auf der linken Seite muss nur ein kleines Loch für den zusätzlichen Videoausgang gebohrt werden.

Aus Platzgründen wurde hierfür eine 3,5-mm-Klinkenbuchse gewählt. Eine Cinch-Verbindung hätte von der Höhe her nicht gepasst.

Es gibt einige DIP-Schalter, mit denen die Karten ein- oder ausgeschaltet und die Speicherverwaltung für den Z80-Teil konfiguriert werden können. So können nur der CP/M-Teil oder nur die 80 Zeichen verwendet werden, ohne die Karte auseinanderzubauen. Allerdings müsste dann eine weitere Öffnung bei der Installation in ein Gehäuse vorgesehen werden.

Die Prototypen

Zunächst musste die gesamte TTL-Logik in ein CPLD überführt werden. Da die Platine und ihre Funktionsweise von den bisherigen Versuchen fast auswendig bekannt war, war die Umstellung auf VHDL recht schnell erledigt. Obwohl viele Komponenten auf der Platine sind, ist die dahinterstehende Logik recht einfach und benötigte nicht viel VHDL-Code.

Übrigens hat das Schreiben von HDL (Hardware Description Languages) nichts mit Programmieren zu tun. Ein CPLD oder FPGA ist kein Arduino, der mit einer Hochsprache programmiert wird. Es geht darum, logische Begriffe zu entwickeln.

Dies ist oft viel schwieriger und zeitaufwändiger, als einfach ein paar TTL-Komponenten zusammenzustecken. Denn man muss auch wissen, wie diese Komponenten funktionieren und ihre Funktion dann vereinfacht beschreiben.

Für Laien mag der Code auf den ersten Blick wie eine Programmiersprache aussehen. Bei genauerem Hinsehen sind es jedoch nur Konstrukte, die in einigen „Wörtern“ auch in Programmiersprachen vorkommen, aber eine völlig andere Bedeutung haben.

Die meiste Arbeit danach liegt in der Optimierung des Timings. Deshalb war der erste Prototyp ein Hybrid. Die Platine war fast komplett in TTL aufgebaut, aber zusätzlich mit einem CPLD ausgestattet, das die ersten rudimentären Aufgaben übernahm. So konnte die Platine die ganze Zeit im C64 bleiben und die logischen Funktionsblöcke konnten Stück für Stück in VHDL nachgebildet werden.

Erster Prototyp

Vorsorglich wurde ein möglicher zusätzlicher Oszillator eingeplant, der letztlich nicht benötigt wurde. Der vorhandene Quarz mit 14,318 MHz reichte als Taktquelle aus. Dieser dient als DOT-Takt und wird auch für den internen Takt des CPLD verwendet.

Die Frequenz von 14,318 MHz ergibt sich aus der Auflösung, der Bildrate und der Zeit, die der Elektronenstrahl benötigt, um zum Anfang der nächsten Zeile zurückzukehren. Obwohl heute moderne TFT-Bildschirme verwendet werden, stammt diese Technologie aus einer Zeit, als Kathodenstrahlröhren noch Stand der Technik waren.

Nachdem der Code und das Timing soweit angepasst waren, war es Zeit für den nächsten Prototyp. Alle TTL-Komponenten, bis auf eine, wurden nun in einem CPLD nachgebildet. Die einzige verbleibende Komponente ist der Inverter am Ausgang. Dieser dient auch als Schutz. Im Zweifel ist es einfacher und günstiger, diesen zu ersetzen als das CPLD.

Anstelle des ursprünglichen 74LS05 wurde ein 74LS06 gewählt. Dieser ist noch in großen Mengen leicht verfügbar, während der 74LS05 manchmal schwer zu finden ist.

Zweiter Prototyp

Dieser Prototyp war bereits viel kleiner und hätte zumindest in der Breite in ein Modulgehäuse gepasst.

Alle notwendigen Tests wurden damit durchgeführt. Auch wurde das Ganze auf dem beliebten 5,6″ TFT-Display getestet, das wunderbar als Ersatz für die Bildröhre in einem Commodore SX-64 verwendet werden kann.

Der Y/C (S-Video)-Eingang am Display wurde aktiviert und ein zusätzliches Kabel angeschlossen. Leider fehlt noch die notwendige Buchse, die derzeit nicht verfügbar war. Daher wurden zum Testen zwei Krokodilklemmen verlötet. Nicht optimal, aber für einen ersten Test ausreichend.

Test der 80-Zeichen-Karte auf einem kleinen 5,6″ TFT-Display

Wie zu sehen ist, ist die 80-Zeichen-Darstellung selbst auf diesem kleinen Display sehr scharf und klar und wunderbar lesbar.

Noch nicht klein genug

Der nächste Schritt war nun, die Karte so zu verkleinern, dass sie in ein Modulgehäuse passt. Dabei sollte auch die Z80-Karte integriert werden.

Zusätzlich musste in der Mitte eine Öffnung für die entsprechende Schraubverbindung des Gehäuses vorgesehen werden, die ebenfalls wieder Platz beansprucht.

Alles komplett in SMD zu realisieren wäre möglich gewesen. Aber das hätte einen erhöhten Aufwand beim Löten bedeutet. Daher wurde ein Kompromiss gewählt und EEPROMs im PLCC-Format genutzt. Um mehr Platz für die Leiterbahnen zu gewinnen, wurden SMD-Sockel gewählt.

Der MC6845P ist auch in einer CMOS-Version als PLCC-Version verfügbar. Doch es gab zwei Hürden. Einerseits wäre dies ein 44-Pin-PLCC, der kürzer, aber nicht wirklich schmaler ist. Die Anzahl der Leiterbahnen wäre gleich geblieben, ebenso der Platzbedarf für diese Bahnen.

Zudem ist dieser Chip schwieriger zu bekommen und teurer als der MC6845P, der jetzt sehr günstig verfügbar ist. Daher wurde entschieden, diesen Chip weiterhin zu verwenden.

Alle anderen Komponenten wurden in SMD ausgeführt, was weiteren Platz sparte. Diese Maßnahmen, sowie die Verwendung einer Klinkenbuchse anstelle einer RCA-Buchse, reichten aus, um alles auf einer Platine unterzubringen, die klein genug war, um in ein entsprechendes Gehäuse eingebaut zu werden.

Es fehlt noch etwas

Anstatt die Komponenten für den Z80-Teil irgendwie auf der Rückseite unterzubringen, wurde einfach eine zweite kleine Platine entworfen, die auf den Displayadapter gesteckt wird.

Durch geschickte Platzierung der Komponenten und die Verwendung sehr kleiner, aber leicht erhältlicher Stiftleisten konnte eine entsprechend niedrige Höhe erreicht werden.

Das Ganze besteht also aus zwei einzelnen Platinen. Eine ist die eigentliche 80-Zeichen-Platine, die auch einzeln betrieben werden kann. Die Z80-CPU-Platine ist eine Erweiterung, die aufgesteckt werden kann, aber nicht muss.

microEX-80+80-Zeichen-Display-Adapter

Zusätzlich gibt es die 8-MHz-Version meines CP/M-Cartridges, als kleines Aufsteckmodul, das einfach auf die 80-Zeichen-Karte gesteckt werden kann.

Z80-Erweiterungsplatine

Im zusammengebauten Zustand ist die Karte so kompakt, dass sie problemlos in ein Modulgehäuse passt. Nur auf der linken Seite muss ein kleines Loch für den Videoausgang gebohrt werden.

Dies wurde als 3,5-mm-Klinkenbuchse gestaltet. Der Vorteil ist zum einen die Größe, und zum anderen die Verfügbarkeit fertiger Adapter im Zubehörhandel.

Double-80s Cartridge

Zuvor wurde alles als 3D-Modell entwickelt und die PCBs entsprechend angepasst, sodass alles ohne Probleme passt.

3D-ModellDouble-80s

Perspektive

Das Projekt wird demnächst auf GitHub veröffentlicht, falls Interesse besteht. Es wird darauf gewartet, ob es Feedback im Kommentarbereich gibt.

Für Freunde steht alles zum Download im internen Bereich bereit.

Derzeit wird überlegt, ob eventuell eine Version für den Commodore SX-64 entwickelt werden sollte. Diese könnte als interne Version zur Installation ideal in Kombination mit dem 5,6″ TFT-Display sein.

Ob eine Aufstecklösung oder direkt eine Ersatzplatine, ähnlich wie der bekannte SX-64 Dual-Disk-Controller von mir, der die originale Commodore-Diskettencontroller-Platine ersetzt, entwickelt werden soll, ist noch nicht entschieden. Ich bin auch gerade dabei, dies alles auf meinen SX-64 Mainboard Nachbau zu integrieren.

Update 15.05.2022

Ich habe die Platine noch einmal optimiert. Nun ist alles auf einer einzigen Platine integriert, was nicht noch einen CPLD einspart, sondern das ganze noch kompakter und vor allem preiswerter macht. Die Platine passt problemlos in ein normales Cartridge Gehäuse. Auch bin ich beim CRT Controller weiterhin beim DIP Format geblieben. Zum einen , weil er wesentlich preisgünstiger als die PLCC version und zum anderen, weil es nicht wirklich Platz spart. Denn es werden dadurch nicht weniger Leiterbahnen. Im Gegenteil, der PLCC hätte zu einer längeren Platine geführt, welche nicht mehr in das Gehäuse gepasst hätte.

Ich denke mal, dass diese Platine ein wunderbarer Kompromiss ist, was Größe und Preis angeht.

Download

Die letzte aktuelle Version vom 15.05.2022 habe ich als Codeberg Projekt angelegt: https://codeberg.org/diwou/Double-The-Eighties

0 Comments
Älteste
Neueste
Inline-Feedbacks
Alle Kommentare anzeigen
Nach oben scrollen