2023
HOME

Retro Software in Z80-Asssembler und ZX81-BASIC
ZX81 - Das Original 1981
Ein Bausatz diente als Einstieg in die private Auseinandersetzung mit der digitalen Welt

Pro-Dos-Demo StartenVerstaubtes Original - einst als Bausatz erworben mit 1 kB RAM

Bein Schlendern im Netz fand sich eine bisher nicht bekannte Emulation eines ZX81 auf einem ESP8266 aus dem Jahr 2016. Im Regal schlummerte allerdings noch das Original mit Netzteil, Kabeln, Printer und Memopack 16K. Auch wegen der defekten Membran-Tastatur wurde die Hardware vor langer Zeit stillgelegt.

Die Software aus eigener Feder in Assembler, die auch in Zeitschriften erschienen ist, war ein kleines Musikprogramm für den 1K-ZX81, sowie der Anschluss eines damals alten Fernschreibers als Drucker für den kleinen Computer. Es folgen hier

Ein Raspberry Pi Pico mit RP2040 emuliert einen ZX-Spectrum in Hardware, aber bisher hier ohne Erfolg mit der vorhandenen Hardware. Der Link für Liebhaber. Darum wird der ZX81 vorgezogen, was ja chronologisch auch korrekt erscheint.


Original ZX81 Inbetriebnahme nach etwa 40 Jahren

Es gibt die berechtigte Frage, ob alte Hardware nach langer Zeit ohne wichtigen Grund wieder in Betrieb genommen werden sollte. Schließlich zerfallen Kunststoff-Zahnräder zu Staub und viele Kondensatoren sind nicht für die Ewigkeit gebaut. Ein erstes Wiedereinschalten ist auf jeden Fall spannend und die Folgen kaum vorhersagbar. Andererseits ist da die Neugier und ein funktionierendes Original fast eine Rarität - besonders dann, wenn viel, sehr viel gemeinsame Zeit mit der Maschine verbracht wurde. Dazu wurden folgende Punkte abgearbeitet:

  • Netzteil aufschrauben und optisch begutachten
  • Spannung nachmessen
  • TV-Antenneneingang suchen und mit ZX81 verbinden
  • TV-Kanal 36 als Frequenz für den Suchlauf ausfindig machen und grob voreinstellen
  • ZX81 über das Original-Netzteil mit Spannung versorgen

Das Netzteil war ziemlich einfach aufgebaut: Ein Trafo, ein Brückengleichrichter und ein Kondensator. Der Transformator war leicht am Gehäuse verklebt, die Dioden verdienten das Prädikat "baked", der Kondensator sah optisch gut erhalten aus.

Die angeschlossenen Netzspannung führte nicht zu unerwarteter Geruchsbildung und auch andere negative Entwicklungen blieben aus. Die Leerlaufspannung lag etwas über 14 Volt, was allerdings nicht beunruhigend erschien.

Nachdem das Netzteil den Erwartungen entsprach, wurde es wieder zusammengesetzt und verschraubt. Es hat keinerlei Luftschlitze.

Unsicherheit bestand darüber, ob der UHF-Kanal noch auf 36 stand, da irgendwann ein privater TV-Sender diese Frequenz mit Tutti-Frutti beschmutzte. Der spannende Moment war gekommen und alles war verbunden, nun nur noch den Netzstecker einstecken und...

Kein Resultat. Weder am Bildschirm ein schemenhaftes Raster im Rauschen, noch irgendeine Reaktion in Form von Wärme oder Geruch seitens der Hardware. Ob Netzteil oder nicht machte keinen Unterschied. Ein Nachmessen der Leerlaufspannung ergab 0,5 Volt. Da muss irgendetwas der Aufmerksamkeit entgangen sein. Eine andere Strategie:

  • ZX81 aufschrauben und optisch und geruchstechnisch untersuchen
  • Spannungsbuchsen-Kontakte durchmessen
  • Powerbank auf etwa 10 Volt stellen
  • Spannung zuführen und Alu-Blech temperaturmäßig überwachen
Die Powerbank schaltet bei zu hohen Strömen sofort ab, wodurch eine Stromüberwachung unnötig erschien. Nun zeigte der Fernsehapparat ein leichtes Zucken im Rauschen bei Inbetriebnahme. Eine Suche um 590,90 MHz zeigte dann bei 7,5 Volt Spannungszufuhr ein einigermaßen stabiles Raster auf diesem für solche Signale nicht ausgelegtem TV.

Mit diesen 7,5 V und geringer Wärmeentwicklung am Kühlblech konnte der Zustand der Folien-Tastatur verifiziert werden. Das "K" unten links konnte nur mit den Tasten ASDF und UIOP verändert werden: Rest keine Funktion.

Das Bild war allerdings nicht immer so stabil wie hier im Foto eingefangen.

Das durchaus unerwartet positive Ergebnis dieser wirklich stark benutzten Hardware nach so langer Zeit führte zu einem weiterem Spaziergang im Netz. So fanden sich in GB noch Nachbauten von Folientastaturen und kleine Platinen, um einen Video-Eingang am TV/Monitor zu verwenden. Allerdings fand sich auch in D-Land diese und andere Hardware zu sogar günstigerem Preis. Für 30 Euro, Versand inklusive, soll der gute ZX81 aus 81 nochmal alle Tasten verwenden und seine Ergebnisse in einem kristallklaren Bild zeigen. Vielleicht gibt es ja auf dem Dachboden doch noch lesbare Kassetten...

gelieferte Tastatur und Video-AdapterDie Ware ist unterwegs...

Die Ware kam an, sehr schnell und sehr gut verpackt. Alles klebte fixiert auf einem Karton und sogar die Einbaubeschreibung lag in Papierform bei. Das ist in einem Drucker freien Umfeld sehr wichtig hinsichtlich der Lagerung für die nächsten vierzig Jahre. Die alte Folie kann bleiben, die neue, etwas dickere Tastatur mit SMD-Schaltern soll mit doppelseitigem Klebeband fixierbar sein. Das war nicht dabei und muss noch gefunden werden. Der Einbau und Probelauf soll an einem sonnigen Frühlingstag erfolgen. Dann kann das folgende, kleine Musikprogramm nochmals eingetippt werden.


Musikprogramm 1983 elrad ZX-Bit # 18
Der Beitrag aus eigener Feder aus dem Jahr 1983. Dieser Ausschnitt stammt von einer Doppel-DVD mit allen Ausgaben dieser Zeitschrift. Alle Artikel sind durchsuchbar und in der Datei elrad.8301.pdf findet man dieses Fragment. Das kurze Listing könnte als Test für die neue ZX81-Tastatur aus obiger Bestellung dienen. Ein Maschinen-Programm landete meist in der ersten Programmzeile, da diese Speicheradresse immer gleich war und ist. Da ZX81-BASIC mit Tokens arbeitet belegt die Zeichenfolge REM nur ein Byte. Dahinter ist dann der Platz für Assembler-Programme, die so auch als Programm auf Kassette speicherbar sind. Der Begleittext deutet dies an.

Im Laufe der Archivsuche poppte sogar das Original-Manuskript dieses Programms auf. Eine magnetisch gespeicherte Kopie existiert hier wohl nicht mehr.

Damals war es üblich fossile Datenträger mit kariertem Muster zu verwenden und wie man sehen kann ist die Datensicherheit eher als hoch einzustufen, trotz nicht wasserfester Tinte aus der eigenen Feder.

ZX81-Software 1983 aus eigener Feder, nur für das Original.


ZX81 - Fernschreiber als Drucker Der Kleine mit dem Großen
Chip Nr. 12, Dezember 1985, S. 282/283

Fernschreiber-Routine für ZX 81

Alte Fernschreiber sind preiswert im Handel erhältlich. Dadurch ergibt sich eine besondere Anwendung für den ZX81.

(Originaltext des Artikels)

Der verwendete Fernschreiber ist ein Siemens T 37h. Der genormte Stecker dieses Fernschreibers hat vier Anschlußdrähte. Um den Empfangsmagneten zu steuern, müssen der braune und der gelbe Anschluß überbrückt werden. Der grüne Anschluß ist "Masse", und über den weißen Draht wird der .Linienstrom'' (40 mA) zugeführt. Das hier beschriebene Programm für einen 50-Baud-Fernschreiber setzt die entsprechende Hardware voraus. Diese sehr preiswerte Schaltung selektiert eine Adresse (hier ab 61440), deren 8 bit direkt vom BASIC aus gePOKEt werden können. Bit 2° steuert das Relais.

Das Programm ist etwa 1/4 k lang. Es "kopiert" den Bildschirminhalt des ZX 81, wie der Befehl COPY, jedoch mit dem Zeichensatz des Fernschreibers. Das Unterprogramm 32512-32526 zur Verzögerung um 20 ms benutzt die Systemvariable FRAMES. Vor Aufruf muß der Rechner im SLOW-Modus arbeiten, da sonst FRAMES nicht verändert wird. Die ersten drei Byte laden die Adresse 61440 mit dem Inhalt des Akkumulators. Beim Unterprogramm 32527-32559 zur seriellen Ausgabe des Fernschreibcodes enthält Adresse 32539 den Baudot-Code des Zeichens, das seriell ausgegeben werden soll. Dieses Programm kann im SLOW-Modus von einem BASIC-Programm aufgerufen werden. Dazu POKEtman in Adresse 32539 den Code (zum Beispiel: "Y" = 175D) und kann so - falls erforderlich, das Relais justieren, bis der Fernschreiber ein "Y" druckt. "- Das Unterprogramm 32561-32579 zum Umschalten auf BU (Buchstaben): Auch dieser Programmteil kann im SLOW-Modus aufgerufen werden. Beim Unterprogramm 32580- 32592 zum Umschalten auf ZI (Ziffern) gilt das gleiche wie oben. Auf 32593-32695 beginnt das Hauptprogramm. Zunächst wird die ROM-Routine SLOW gerufen. Danach auf BU geschaltet. Es folgt die Suche nach dem Bildschirminhalt. Ein großer Teil dieses Programmes entscheidet, ob Buchstaben oder Ziffern gedruckt werden sollen und ob zwischen BU und ZI umgeschaltet werden muß. Von 32696-32759 steht der "Zeichensatz" des Fernschreibers. Das Fernschreibzeichen zum ZX-Code steht auf Adresse 32696+1+CODE. Inverse Zeichen werden ignoriert. Diese Tabelle muß bei anderen Fernschreibern geändert werden. Es hat sich als praktisch erwiesen, das Maschinenprogramm zunächst in eine REM-Zeile zu schreiben und auf Band zu sichern. Anschließend kann es ab Adresse 32512 abgelegt werden. Der Aufruf des Maschinenprogramms erfolgt mit RAND USR 32593. Durch POKE 16389,72 und anschließendem CLS wird ein platzsparender Bildschirmspeicher erreicht, wodurch eine Leerzeile nur aus einem NEWLINE besteht. Die Leitungen zum Fernschreiber sollten abgeschirmt sein. Beim Lauf des Fernschreibers sollte möglichst die EAR-Buchse frei sein. Das Programm läßt sich mit SHIFT unterbrechen.

Hans-Joachim Berndt, 1985


Ergänzung 2023: Das untere IC war ein 74LS374 entsprechend der Schaltung von A. Burgwitz aus ZX-Bit # 14, elrad 1982, Heft 10. Dies bestätigen auch eigene fossile Manuskripte. Das Foto des im Artikel dargestellten Fernschreibers war weit entfernt von der Ästhetik des tatsächlich verwendeten Gerätes.


Verstaubt, wie das Original, ruht das Gerät schon seit dieser Zeit neben dem ZX81 und seinem Zubehör. Vielleicht ist die Platine auch noch erhalten. Aus Spaß erfolgt ein Blick auf die Plakette unten links im Bild:

Regelinstandsetzung Fw Mü-Aubing: 12.76

Wiedereinsenden bei Zählerstand: 7907

Spätestens (Mt. Jr): 12.80



(Fortsetzung Originaltext des Artikels)

1 REM .....(250 Punkte).....
10 LET X = 16514
20 LET A$ = ""
30 IF A$ = "" THEN INPUT A$
40 IF A$ = "S" THEN STOP
50 POKE X,16 * CODE A$(l) + CODE A$(2) - 476
60 PRINT AT 0,0;X;" ";A$(TO 2)
70 LET X = X + 1
80 LET A$ = A$(3 TO)
90 GOTO 30
Programm 1: Zur Eingabe des Maschinenprogramms

10 LET X = 32512
20 FOR N = 16514 TO 16514 + 250
30 POKE X,PEEK N
40 LET X = X + 1
50 NEXT N
Programm 2: Zum Verschieben des Maschinenprogramms nach dem Laden vom Band (vorher: POKE 16389.127 und NEW)

10 LET X = 32512
20 PRINT TAB 0,x
30 FOR N = 0 TO 7
40 PRINT " ";CHR$ INT (PEEK X / 16 + 28);
   CHR$(PEEK X - INT(PEEK X / 16) * 16 + 28);
50 LET X = X + 1
60 NEXT N
70 GOTO 20
Programm 3: Zur Kontrolle des eingeschriebenen Programms. Es sollte das gleiche Bild entstehen wie beim Fernschreib-Listing.

10 REM BASIC LIST
20 LET N = 16508
30 PRINT
40 IF N = PEEK 16396 + 256 * PEEK 
   16397 - 1 THEN STOP
50 LET N = N + l
60 LET A = PEEK (N+ 1) + 256 * PEEK N
70 PRINT " " AND A < lE3;" " AND A < lE2;" " 
   AND A < lEl;A;
80 LET N = N + 4
90 PRINT CHR$ PEEK N;
100 IF PEEK 16442 < 4 THEN RAND USR 32593
110 IF PEEK 16442 < 4 THEN CLS
120 IF PEEK N = 126 THEN LET N = N + 6
130 IF PEEK N = 118 THEN GOTO 30
140 GOTO 90
Programm 4: Hilfsprogramm, um das Fernschreibprogramm zum Programmlisten zu verwenden. Dieses Programm für den Fernschreiber am ZX81 kann an das Ende der zu listen den Programme geschrieben werden.


ZX81 - ESP8266 und TFT der Klassiker als Sketch mit ST7789-240x240
Pro-Dos-Demo Starten

Bereits seit 2016 existiert ein Sketch von Joaquim Pereira aka joaquimorg, der es erlaubt einem ESP8266 ein Z80-Prozessor, ein ZX81 nebst 8k-ROM und etwas GFX und TCP/IP einzuhauchen, um das ZX81-BASIC auf einem LCD-Display auszuführen. Die Software liegt auf github, aber die einstige Homepage existiert in der damaligen Form nur noch im Web-Archiv. Heute liegt der Schwerpunkt bei Licht und Uhren bzw. PineTime.

Es erscheint als eine reizvolle Aufgabe diesen Kode für eine ILI9163-Anzeige etwas anzupassen und auch zu verstehen, damit das vorhandene hier oben dargestellte TFT-Display mit 240x240 Pixeln und dessen Treiberbaustein ST7789 funktioniert. Vorhandene Hardware/Software:

Um das ganze, leider undokumentierte Gebilde zu verstehen, erfolgt zunächst eine Analyse der Quelltexte, das Testen der Anzeige am ESP8266 und schließlich die Anpassung und Vorbereitung der Gesamtstruktur. Das klingt kompliziert, aber der Geniestreich steckt m. E. in der Tastatur und deren Einsatz oder Ersatz.

Weiter zur Quelltextanalyse und der Anpassung


Pro-DOS-BASIC für den ZX-Spectrum
3D-ZX-Spectrum-Grafik auf Pi-Pico
Mehr ZX-Spectrum
Mehr Software

.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt