[ Zu J1013 ]


J1013 Entwicklungsgeschichte

Was mich zu diesem Z1013-Emulator getrieben hat, wird nicht jeder verstehen. Um ganz ehrlich zu sein, man muss es auch nicht verstehen. Und für Leute, die es dennoch verstehen möchten, habe ich die folgenden Zeilen aufgeschrieben. Versuchen Sie aber bitte nicht, daraus ernsthafte Schlüsse zu ziehen, schmunzeln Sie lieber einmal öfters!

Der Zufall

Also die Geschichte des Emulators J1013 beginnt im August 2001. Die Zeiten, in denen ein Z1013 mein bester Freund war, sind schon lange in Vergessenheit geraten. Ich saß in meinem Büro und recherchierte im Internet. Der Abruf einer Seite dauerte etwas lange, und ich öffnete zum Zeitvertreib ein zweites Browser-Fenster und tippte dort, ich weiß wirklich nicht warum, einfach so "www.z1013.de" ein.

Völlig überrascht erkannte ich die Umrisse einer Z1013-Platine. Ich war fasziniert, dass es eine Homepage über diesen Mikrorechnerbausatz gab. Ich klickte mich durch jeden Winkel der liebevoll gestalteten Web-Site und der weiterführenden Links. Es gibt also tatsächlich noch Leute, die dieses Urgestein der Rechentechnik würdevoll am Leben halten.

Die Erinnerung

Bei mir kamen sie wieder hoch, all die Erinnerungen an den guten alten Z1013, dem ich so viel zu verdanken habe. Er hat mich in den erlauchten Kreis der Menschen gehoben, die in der DDR einen Heimcomputer (na gut, Mikrorechnerbausatz) ihr eigen nennen durften. Aber noch viel mehr: Mit ihm habe ich so viele Nächte verbracht (Immer wenn meine Eltern ins Bett gingen, konnte ich an den Fernseher heran, der als Monitor diente.), habe so viel über die Grundprinzipien der Mikrorechentechnik und vor allem die Programmierung gelernt, zuerst BASIC, dann Assembler. Auch die Hausaufgaben des Pascal-Praktikums am Anfang meines Informatik-Studiums habe ich mit dem Z1013 erledigt, während meine Kommilitonen sich für Zugangszeiten im Rechenkabinett anstellten.

Und mir wurde an diesem Augusttag noch etwas anderes bewusst: Ich habe meinen Z1013 vor Jahren einfach so in die Ecke abgeschoben und vergessen, ohne Dank und Würdigung. Nach dem Einzug der D-Mark in die DDR war er nicht mehr zeitgemäß und musste der 16-Bit-Rechentechnik weichen. Am Silvestertag 1990 traf ein im Versandhandel bestellter Atari 1040 STE ein, das Ende meiner 8-Bit-Ära war abzusehen. Ich schuf noch eine Möglichkeit, Programme und Daten vom Z1013 über eine selbst gebaute senderseitige MIDI-Schnittstelle auf den Atari ST zu übertragen (veröffentlicht in der Zeitschrift "Funkamateur", Heft 1/1992). Doch Mitte der neunziger Jahre hatte dann mein erster eigener Computer endgültig ausgedient und verschwand in irgendeinem Karton in irgendeiner Ecke auf dem Grundstück meines Elternhauses...

Irgendwie tat mir mein Z1013 leid. Ich wollte noch etwas für ihn tun. Ja, ich wollte noch vor seiner endgültigen Ruhe zeigen, dass ich durch ihn so viel gelernt hatte, dass ich diesen Computer tatsächlich in- und auswändig kannte. (Das wird bei heutigen Computern wohl niemand mehr behaupten können.) Ich musste meinen Beitrag zum Erhalt des Z1013 an die Nachwelt leisten. Es war ja immerhin der erste Computer, den auch ein Normalbürger in der DDR erwerben konnte.

Die Idee

Im August 2001 leitete ich bereits seit fast einem Jahr Software-Projekte, die mit Java programmiert wurden. Ich habe deshalb auch selbst diese Programmiersprache gelernt und war dabei, die Möglichkeiten von Java und den dazugehörenden APIs tiefer zu erkunden. Meine Würdigung des Z1013 sollte deshalb etwas mit Java zu tun haben. Die logische Konsequenz ist somit ein in Java geschriebener Z1013-Emulator. Ich weiß, niemand auf der Welt benötigt einen weiteren solchen Emulator, aber darum geht es ja auch gar nicht. Um meinen Emulator dennoch von den bereits existierenden abzuheben und somit interessant zu machen, soll er besonders komfortabel und plattformübergreifend sein. Ob ich das erreicht habe, können jedoch nur die leidgeprüften Anwender beurteilen.

Das Thema Z1013-Emulator ist für mich nicht ganz neu. Bereits 1993 habe ich angefangen, auf dem Atari ST einen solchen Emulator in Assembler zu schreiben. Nachdem das Programm immer größer und unübersichtlicher wurde, habe ich das ganze mit der Programmiersprache C noch einmal getan. Mit der Zeit verlor ich jedoch die Motivation, sodass der Emulator nie vollendet wurde, obwohl er schon einige Programme anstandslos ausführen konnte. Außerdem hat sich auch gezeigt, dass die mit 8 MHz getaktete Motorola 68000 CPU des Atari-Computers den Z1013 mit nur etwa 300 kHz emulieren wollte. Um so mehr war es für mich eine Herausforderung, mit Java auf den heute üblichen PCs die Originalgeschwindigkeit eines Z1013 (i.d.R. 2 MHz Taktfrequenz) zu erreichen. Z1013-Emulator auf dem Atari ST
Nie vollendeter Z1013-Emulator auf dem Atari ST,
Aus einem unerklärlichen Grund fand ich es damals schöner, wenn der Emulator den Zeichensatz invertiert.


Das Ergebnis

Vier Wochen nach dem besagten Augusttag stand das Grundgerüst des inzwischen auf J1013 getauften Emulators. Einige Nächte hatte ich geopfert, aber dafür konnten schon die ersten Z1013-Programme getestet werden. Ich war echt happy, dass meine Erwartungen an die Performance der CPU-Emulation weit übertroffen wurden. Der Pferdefuß des in Java geschriebenen Emulators zeigte sich jedoch auch bald: Die Geschwindigkeit der Grafikausgabe ist problematisch. Ich habe verschiedene Implementierungen ausprobiert, doch erst nach zweieinhalb Jahren fand ich eine akzeptable Lösung.

Das größte Problem stellte jedoch das Finden der Bugs in der CPU-Emulation dar. Ich spendierte dem J1013 deshalb einen Debugger. Doch der Durchbruch gelang erst, als ich die Funktionalität des Aufzeichnens der Befehlsausführung implementierte. So konnte ich die CPU-Emulation mit dem Emulator "Z1013EMU" von Andreas Ziermann vergleichen und so viele Fehler finden und beheben. An den Weihnachtsfeiertagen 2001 hatte ich den Emulator soweit rund gemacht, dass die Version 0.1 am 14.01.2002 veröffentlicht werden konnte. Knapp drei Jahre später, am 30.12.2004, gab ich die (für fünf Jahre finale) Version 1.0 frei.

Die Weiterentwicklung

Mit J1013 Version 1.0 war das Emulator-Thema für mich erstmal erledigt. Als jedoch Java 5 erschien, holte mich der Emulator wieder ein. Das Compilieren von J1013 unter der neuen Java-Version erzeugt Warnungen, die ihre Ursache in der mit Java 5 eingeführten Generics haben. Nun gut, irgendwann habe ich dann doch den ganzen Quelltext auf die Generics umgestellt und somit die Warnungen beseitigt.

Dann gab es einige Dinge im Datei-Handling, die ich vorallem bei einem Windows-Betriebssystem vermisse (z.B. Änderungszeitpunkt setzen, TAR-Archive packen/entpacken). Da habe ich den Datei-Browser erweitert, um für mich selbst die fehlenden Funktionalitäten bereitzustellen.

In der Zwischenzeit sind mir auch einige kleinere Fehler in der CPU-Emulation aufgefallen. Um die entsprechenden Bugfixes besser testen zu können, habe ich einen im Emulator integrierten Assembler entwickelt.

Dann wollte ich aus eigenem Interesse heraus einen kleinen Compiler entwickeln, um mich auch mal an dem Thema der Code-Optimierung zu versuchen. Dafür habe ich mir das Z1013-Tiny-BASIC ausgesucht, da hier der Sprachumfang überschaubar ist und somit der Compiler nicht gleich zu einem Lebenswerk wird.

Es kam noch das, dies und jenes hinzu, und irgendwann im Jahr 2008 fiel der Entschluss, alle diese Erweiterungen in einer Version 2 von J1013 zu veröffentlichen. Nachdem dann noch einige Ecken und Kanten abgeschliffen waren, erschien am 27. August 2008 die erste Beta-Version.

Da nun das Emulator-Thema bei mir wieder aktuell war, ging mir die Entwicklung eines AC1-Emulators durch den Kopft, denn der AC1 war der erste Computer, an dem ich selbst in meinen Leben programmieren durfte. Und dann wurde ich gefragt, ob ich Lust hätte, meinen Z1013-Emulator zu einem Z9001-Emulator zu erweitern, da bei J1013 das Kassetteninterface so gut funktionieren würde. Das war dann der Startschuss für mein neues Projekt JKCEMU. Doch zwei Projekte wollte ich nicht parallel bearbeiten, zumal sich diese beiden Emulatoren auch noch inhaltlich überschneiden. Folglich wurde die Entwicklung von J1013 eingestellt. Der geplante Funktionsumfang war ja bereits implementiert. Allerdings sollte J1013 nicht als unaufgeräumte Baustelle enden. Deshalb waren noch zwei weitere Beta-Versionen nötig, bis das Z1013-Emulatorprojekt mit Erscheinen von J1013 Version 2.0 am 24.08.2009 ohne Baustellencharakter (vorläufig) abgeschlossen werden konnte.

Einige Monate später stellte sich heraus, dass in der CPU-Emulation, im Assembler und im BASIC-Compiler immer noch einige wenige, jedoch mitunter schwerwiegende Fehler drin sind. Aus diesem Grund habe ich am 10.08.2010 die Version 2.1 veröffentlicht, in der neben diesen Fehlern auch noch einige Unschönheiten beseitigt wurden. Letzte Fehlerbehebungen gab es im Februar 2013 mit J1013 Version 2.2.

© 2004-2013 Jens Müller