Schlagwort-Archive: ZX81

Eine E-Mail von meinem Blogger-Kollegen Oli – ein gleichgesinnter Atari-ST-Fan und ebenfalls Programmierer – nehme ich heute zum Anlass, einen kleinen Softwarearchäologie-Report zu verfassen. Er sprach mich auf einen alten ZX81-Emulator an; ein Emulator für den Atari ST, den ich seit bestimmt 20 Jahren nicht mehr gesehen habe, und mit dem ich einige der interessantesten Erinnerungen aus meiner Kindheit verbinde. Den Artikel schreibe ich freilich aus der Sicht von jemandem, der das Programm als Kind verwendet hat, und nicht etwa von jemandem, der professionell damit umgehen kann.

ZX81 Emulator: Ein sehr kreatives Tastaturlayout

ZX81 Emulator: Ein sehr kreatives Tastaturlayout

Ich erinnere mich noch sehr gut an dieses kleine aber großartige PD-Programm von Christoph Zwerschke, das zum ersten Mal im Oktober 1990 auf der Beilagediskette des TOS-Magazins veröffentlicht wurde. Ich war kaum sieben Jahre alt und hatte schon ganz grob begriffen, was ein Emulator ist. Dieser hier emulierte einen Sinclair ZX81 – ein kleiner Homecomputer aus England (von dem namensgebenden Erfinder Sir Clive Sinclair), der zum Zeitpunkt meiner Geburt bereits veraltet und Anfang der 90er praktisch museumsreif war. Wenn man den Emulator startet, bekommt man einen Begrüßungsbildschirm zu sehen, und dann nur noch ein Eingabefenster. Das war schon damals nicht unbedingt besonders einladend, wenn man grafische Benutzeroberflächen (wie TOS) gewohnt war, aber ich kannte zum Glück den GFA-BASIC-Interpreter, und der sah ähnlich spartanisch aus. Keine Ahnung, wie ich darauf gekommen bin (vielleicht habe ich ja wirklich die README-Datei gelesen), aber mit der Eingabe von LOAD „“ offenbarte sich mir eine fantastische Welt primitiver BASIC-Spiele, und das war für mich in dem Alter das Beste an dem Emulator.

Mein Vater schüttelte den Kopf als er diese äußerst altbackene Klötzchengrafik sah, und er wunderte sich, wie ich damit soviel Spaß haben konnte, wo der ST doch so tolle hochauflösende Monochromspiele und knallbunte Farbspiele hatte. Möglicherweise war das der Moment, in dem ich endgültig erkannte, dass Spielspaß praktisch nichts mit Grafik zu tun hatte, und mit Sound schon gar nicht, denn den gab es sowieso nicht: Der ZX81-Emulator blieb immer stumm. Keine Frage, ich liebte mein Highway Patrol 2, mein Cadaver, und mein Double Dragon, und all die anderen tollen Spiele, die ich in meiner Diskettenbox hatte, aber der ZX81-Emulator löste mit seiner merkwürdigen Schwarz-Weiß-Zeichensatz-Grafik eine wirklich kaum zu beschreibende Faszination bei mir aus.

3D-Monster-Labyrinth: Vor dieser Kreatur habe ich mich gefürchtet

3D-Monster-Labyrinth: Vor dieser Kreatur habe ich mich gefürchtet

Eine ganze Menge Spiele lagen dem Emulator bei, alle in Form von (kaum lesbaren) BASIC-Quellcodes. Mit dem Befehl RUN wurde das geladene Programm gestartet. Das waren ganz unterschiedliche Spiele: Night Driver, eine schwierige Rennsimulation, oder Varianten von Hangman und Centipede gab es, außerdem mit Hamurabi ein zahlenlastiges Resourcen-Management-Spiel, das ich kaum verstand. In Olympiade musste man abwechselnd die Tasten 5 und 8 drücken, damit der eigene Läufer immer schneller wurde, und mit der Taste 0 konnte man dann abspringen (beim Weitsprung). Viele Stunden Spaß hatte ich mit Mazogs, dessen Omikron-Äquivalent Maziacs ich schon kannte – ein Labyrinth voller Riesenspinnen, in dem man eine Schatztruhe finden musste. Daneben gab es mit Star Trek ein aufwändiges Weltraumspiel mit Handlung, an dem ich mich immer wieder versucht habe, obwohl ich noch etwas zu jung war, um die Rätsel zu verstehen.

Es gab noch diverse Programme, die etwa Schaltpläne generierten, oder einen Biorhythmus berechneten. Das hat mich damals aber alles nicht so interessiert. Spannend war noch das Spiel Animals, eine Umsetzung von „20 Questions“. Ohne die Theorie hinter Binärbäumen zu kennen, hatte ich natürlich Schwierigkeiten mir vorzustellen, wie der Computer am Ende praktisch jedes Tier erraten kann. Das mit Abstand gruseligste Spiel war das 3D-Monster-Labyrinth. Der Spieler musste ein zufällig generiertes Labyrinth in der Ich-Perspektive durchlaufen, während am anderen Ende des Labyrinths ein Monster umherirrt, das seinerseits den Spieler sucht. Ich kann bis heute nicht sagen ob das Monster sich in Echtzeit bewegt, oder doch nur rundenbasiert, aber ihm versehentlich zu begegnen, hat mich immer wieder erschreckt. Es war auf jeden Fall ein tolles Beispiel für ein sehr simples Spiel mit Suchtfaktor, das im besten Fall zweckmäßige Grafik und absolut keinen Ton hatte. Also entweder war ich schon damals wirklich verloren, oder diese Spiele hatten einfach einen gewissen Reiz.

Star Trek: Klötzchenwelten mussten mit Hilfe des Ziffernblock erforscht werden

Star Trek: Klötzchenwelten mussten mit Hilfe des Ziffernblock erforscht werden

Kaum zu glauben, aber wahr: Christoph Zwerschke, der Entwickler des ZX81 Emulator, ist sogar noch mit einer eigenen Webseite im Internet vertreten (letzte Änderung allerdings im März 2001!), und er bietet dort die letzten Versionen seiner alten ST-Programme an, darunter natürlich auch dieser wunderbare Emulator. Extra für ein paar Screenshots habe ich daher den ST-Emulator angeworfen, um nach über 20 Jahren den ZX81-Emulator anzuwerfen, um dessen grobpixelige Spiele mal wieder anzuwerfen und digital abzulichten. Quasi eine kleine Emulatorception. Oder Retro im Quadrat. Und tatsächlich, ich konnte mich noch an so manches Bedienungsdetail erinnern. Und mit der HELP-Taste kann man sich ja im Notfall noch das Tastaturlayout einblenden lassen. Vielleicht spiele ich nochmal kurz eine Runde 3D-Monster-Labyrinth. Retroflash in 3 … 2 … 1 …

Im Jahre 1982 entwickelte Don Priestley ein kleines witziges Labyrinthspiel für den Sinclair ZX81: Mazogs. Als wackerer Held musste man sich durch einen Irrgarten voller Riesenspinnen (den Mazogs) kämpfen um eine Schatztruhe zu finden. Das Spiel ist gewonnen, sobald man mit der Truhe das Labyrinth verlässt. Hilfreich sind dabei Schwerter, Nahrung und Gefangene im Labyrinth, die einem den Weg weisen können, wenn man sie befreit. Wird der Spieler von den zahlreichen Mazogs getötet, ist das Spiel selbstredend verloren.

Bereits ein Jahr später entwickelte Don Priestley das Remake Maziacs für den ZX Spectrum, das die besseren technischen Möglichkeiten des Homecomputers ausnutzte und eine bessere (höher aufgelöste) farbige Grafik bot. 1987 hat der (höchstwahrscheinlich deutsche) Programmierer Dietrich Raisin eine eigene Version von Maziacs in der Programmiersprache Omikron-BASIC geschrieben, dem damals schnellsten BASIC-Interpreter für den Atari ST. Seine Version hatte eine schöne comicähnliche Grafik, die das Spiel sogar noch witziger machte, allerdings immer noch keinen Ton. Außerdem hat er seine Version als Public Domain freigegeben.

Maziacs war eines der Spiele, mit denen ich als Kind unzählige Stunden verbrachte. Da das Spiel in Form des Quellcodes vorlag, erzeugte ich sogar zahlreiche eigene Maziacs-Modifikationen, die das Spiel schwerer machten oder die Sprites austauschten, damit der Spieler als Spinne spielen konnte. Kürzlich habe ich diesen Schatz auf einem Backup meiner alten 20 MB Atari ST-Festplatte wiederentdeckt. Ein Glück, dass ich wirklich alles aufhebe. So kann ich nun in einem Youtube-Video das Gameplay dieses echt tollen Spiels präsentieren.

Nebenbei kam mir die Idee, den Quellcode vielleicht einfach mal für eine moderne Programmiersprache zu portieren, wobei das Spiel selbst eine 1:1-Umsetzung sein sollte. Nach kurzer Überlegung dachte ich mir, dass das doch eine wunderbare Gelegenheit wäre, mich in HTML5/Javascript-Programmierung zu üben. Während ich dies hier schreibe, habe ich bereits damit begonnen, wichtige Teil des Quellcodes zu analysieren, so z.B. den Algorithmus zur Erstellung eines Labyrinths oder den Pathfinding-Algorithmus.

Fremden Quellcode zu lesen ist oft eine schwierige Sache, noch dazu wenn er in einem BASIC-Dialekt geschrieben ist, den man selbst nie verwendet hat und dessen Spezifikationen man auch nicht mehr nachlesen kann, aber ich habe erstaunlich schnell Fortschritte gemacht. Sobald ich die Algorithmen verstanden und das Grundgerüst in Javascript geschrieben habe, geht der Rest fast von alleine. Mal schauen ob was daraus wird.