Das LCD-Projekt
von Kai Fischer
Für den ZX81 existiert seit längerer Zeit ein LCD-Interface, das der eine oder andere auch schon auf dem Treffen in Aktion gesehen hat. Passende Displays gibt es relativ billig als komplette Laptop-Deckel mit Hintergrundbeleuchtung und Transverter für 39,- DM (Pollin-Elektronik, ohne Gewähr!). Diese Displays sind in rauhen Mengen für Versicherungsvertreter-Laptops produziert worden und gehen uns daher auch nicht gleich aus. Intern sind es einfache VGA-Displays mit einer Auflösung von 640x480 Pixeln und einer Bilddiagonale von immerhin 9,5 Zoll (oder 19x14 cm). Unterlagen habe ich für einige Typen (Sharp, Epson, Sanyo) hier, die Displays sind alle sehr ähnlich in der Ansteuerung.
Angesteuert wird so ein Display durch einen 8 Bit breiten Datenbus sowie durch drei Steuersignale, die man als Pixeltakt, Zeilentakt und Bildtakt definieren kann. Die 8 Bit Daten teilen sich in je 4 Bit für die untere und obere (je 640x240-) Bildhälfte, was die Ansteuerung nicht gerade vereinfacht. Die Displays benötigen - im Gegensatz zu den kleinen alphanumerischen - eine ständigen Refresh, d.h. die Daten müssen zyklisch geschrieben werden. Kurz gerechnet: Für eine Bildfrequenz von 50 Hz bedeutet dies 50 Hz x 240 Zeilen x (640/4) = 1,92 MHz Pixeltakt. In diesem Takt müssen die 8 Bit am Displayeingang wechseln! Die Sache entschärft sich etwas, da ein LCD aufgrund der Trägheit bereits bei 40 Hz ,,flimmerfrei`` wird, 35 Hz können als noch erträglich gelten. Unterhalb dieser Frequenz nimmt nicht nur das Flimmern stark zu, sondern auch der Kontrast extrem ab (der Mathematiker schreibt: Flimmern = 1/Kontrast).
Die wichtigste Funktion eines Interfaces ist es nun, das im Rechner (=Host? gelernte Informatiker, helft mir...) vorhandene Bildspeicherformat auf das ,,LCD-Format`` (4 Bit oben, 4 Bit unten) zu transformieren und dann mit 2 MHz am Ausgang auszuspucken.
Mit ein paar Tricks habe ich mir die Sache für den ZX81 vereinfacht. Zum einen reichte die halbe Auflösung, also 320 x 240, mehr als aus. Schaltet man einfach je zwei Datenbits parallel, dann fährt damit das LCD in einem 4-Bit-Modus, wobei immer 2 benachbarte Pixel gekoppelt sind. Die Halbierung der Zeilenauflösung macht die Software. Dann besitzt der ZX81 keinen Pixel- sondern nur einen Zeichenspeicher von 768 Bytes, die Zeichen werden erst im Interface selbst in Pixel umgewandelt (megarechenintensiv...). Damit spielt die Sache relativ flott. Das Interface selbst ist ein Z80-Kartenrechner mit 8 MHz Takt, reicht gerade so aus, 12 MHz oder mehr wären mir lieber gewesen...
Das Konzept entstand aus der Not heraus, da ich mir mit der Ansteuersache nicht sicher war, TTL recht komplex geworden wäre, ich etwas programmierbares brauchte, um verschiedene Steuertakte und -sequenzen zu testen und ich halt auch nur Z80 kann...
Drei Nachteile haften dem Interface an: Erstens ist es relativ aufwendig und damit teuer (jenseits der 100 DM), zweitens für Auswertung reinen Pixelspeichers etwa um Faktor 5 (!!) zu langsam und letztlich kann es keine Graustufen darstellen.
Das leidige Thema Graustufen: Die Displays werden als ,,Graustufendisplays`` verscherbelt und tun dies mit einem speziellen Ansteuerchip wohl auch. Nur ist der 8-Bit-Eingang eben digital (0 = Pixel aus, 1 = Pixel an) und Graustufen liesen sich daher wohl nur über einige Umwege, sprich Interlacing realisieren. Sinn der langen Vorrede: Ich habe einige Anfragen auf die Vorstellung des LCD-Interfaces im WWW hin, die aber betreffs ZX81 kaum der Nennung wert sind. Viele suchen sowas für den Spectrum, und wie auf dem KC-Treffen zu erfahren war, dort wäre man auch nicht abgeneigt. Für beide Rechner treffen einen aber die o.g. drei Nachteile besonders hart, da man einen Pixelspeicher und Farbattribute auswerten und darstellen muß. Dafür ist das Interface eben nie gedacht gewesen.
Da aber bis heute noch niemand so richtig in die Gänge gekommen ist und mich die Sache persönlich reizt, würde ich einige hundert Stunden Freizeit in die Entwicklung eines LCD-Interfaces für BEIDE Rechner stecken. Letzten Endes wäre ein Universalinterface denkbar, das auch an einige andere Rechner passen würde. Im Konzept denke ich an ein Spezialchip namens FPGA (für Nichtkenner: sowas wie ein sehr großes und komplexes GAL), vorne den Rechnerbus rein, hinten das Display dran. Solche Tausendfüßler kosten um die 50 DM (Flohmarktpreise unter 10 DM) oder weniger und sind mit normalem Handwerkszeug gerade noch beherrschbar. Ausweichend wäre auch eine reine Logik-Lösung, eventuell mit ein paar GALs denkbar.
Das gesamte Interface könnte damit ohne Display für weniger als 100 DM angeboten werden!
Abschließend nun der Aufruf an alle: Finden sich definitiv mehr als 25 Leute, die sowas haben wollen, dann setze ich mich dran. Weniger lohnt wirklich nicht. Bitte nehmt auch zur Kenntnis: Ich habe mein LCD für den ZX81 und brauche selbst keines für Spectrum oder KC. Finden sich nur 20 Leute, dann ist die Sache begraben. Apropos ,,lohnen``: Ich mache das ohnehin umsonst und will da nicht auch noch zulegen müssen! Je nach Umfang müßten wir auch ein paar Displays mehr finanzieren, als Ersatzteilreserve. Und letztlich wird Pollin 50 Stück zusammen sicher auch preiswerter verkaufen wollen.
Bitte trommelt alles zusammen, was Ihr dafür begeistern könnt! Auch in anderen Clubs: Atari, Commodore, Oric,... das System ist mir egal! Nur kommt mir nicht mit DOS-PC...
Wünschenswert wäre mir ein Mitstreiter aus dem Raum Sachsen-Erzgebirge-Vogtland, der sich mit FPGAs auskennt und eventuell ein Entwicklungssystem mitbrächte. EPROMs kann ich brennen, zweiseitige Platinen bis Schwierigkeitsstufe 9 sind ebenfalls machbar. Die Platine ist ohnehin das kleinste Übel, das Interface könnte etwa Zigarettenschachtelformat haben! Zeit spielt keine Rolle, davon habe ich sowieso viel zu wenig.
Eines noch hinterher. Falls jemand eine Bezugsquelle für FARB-LCDs kennt oder Unterlagen dazu beschaffen könnte, immer her damit. Ein Farbinterface wäre ja wirklich der Hit. Da sage ich mal: das mach' ich auch für 10 Leute und weniger...