Ataquarium: GFA auf der FireBee

Dank einer Leihgabe hält beginnend mit dieser Ausgabe die Firebee Einzug in die st-computer. Den Anfang macht das Thema GFA-Basic und die Firebee – oder: Wie portiere ich meine GFA-Programme auf die Biene.

Es ist eine Nachricht, die sich kein Programmierer wünscht: Alle Programme stürzen beim Start ab. Sehr unschön, denn welcher Firebee-Besitzer vermisst nicht Programme wie den Caveman Translator oder den Enhanced Character Interpreter? Andererseits ist bekannt, dass GFA-Basic und dessen Kompilate bei jeder neuen Hardware Probleme bereiten, so auch auf der Firebee. Seit dem Falcon wird schließlich am Basic herumgepatcht und der Autor hat schon mehrere Libraries mitgemacht, jede angeblich sauberer, schneller und besser als die vorherigen.

Ursachenforschung

Auf der echten Hardware zu testen, ist durch nichts zu ersetzen und es gibt ohnehin keinen Firebee-Emulator. Johannes „atari-home.de“ Hädrich stellte schließlich eine Firebee leihweise zur Verfügung – die Ursachenforschung kann beginnen!
Die ersten Tests bestätigten: Alle Programme, ganz gleich ob kleine Spaß-Programme wie der E.C.I. oder größere Anwendungen wie der CSS-Editor En Vogue, stürzen beim Start ab. Trifft das also generell auf alle GFA-Programme zu? Erstaunlicherweise nein: So konnte auf der Firebee beispielsweise das Spiel Swap97 gestartet und gespielt werden, lediglich beim Beenden hing das Spiel in einer Endlosschleife aus Alert-Boxen fest und musste über den Taskmanager von XaAES beendet werden. Ein weiterer Test mit älteren Programmversionen zeigte, dass die Firebee diese ebenfalls problemlos ausführte.
Die Annahme GFA=Absturz ist also widerlegt. Zwar dürfte ein Großteil der GFA-Programme tatsächlich abstürzen, aber einige Programme tun dies nicht, obwohl sie lange vor der Veröffentlichung von Lonny Pursells GFA-Editor und der dazugehörigen Firebee-kompatiblen Compiler-Bibliothek entstanden.
Eine mögliche Ursache für den Absturz „moderner“ Programme wie Elly, Vorlex und HomePage Penguin könnte in der Wahl der Patches und der Bibliothek liegen. Dies würde erklären, weshalb der HomePage Penguin 1.65 und 2.0 auf der Firebee läuft, die Version 3.0 hingegen beim Start einfriert. FaceValue scheidet als Fehlerquelle aus, denn Swap97 von Christian Ratsch ist wie der HPP3.0 ein faceValue-Programm.
Gemeinsam ist den neueren Programmen die Verwendung der LicomLib von Richard-Gordon Faika. LicomLib räumt mit vielen unsauber implementierten Befehlen in GFA auf, enthält aber auch Optimierungen, mit denen kompilierte GFA-Programme schneller laufen.

Einige ältere GFA-Programme laufen auch ohne Modifikationen auf der Firebee: Hier ist der HomePage Penguin 1.65 und HTML-Help 0.9 zu sehen.

Sei’s drum

Die LicomLib war damals die modernste GFA-Patch/Library-Kombination, daher war ihr Einsatz durchaus sinnvoll – und die Firebee erschien schließlich erst zehn Jahre später. Seit einiger Zeit ist aber Lonny Pursells GFA-Basic-Editor (GBE) die modernste Lösung und die wohl vollständigste seit der Veröffentlichung des GFA-Entwicklungspakets 3.6. Sein Paket besteht neben dem Editor auf GEM-Basis aus gepatchten Versionen des Linkers und Compilers, einer neuen GFA-Bibliothek und einem Run-Only-Interpreter. Compiler und Linker können mit der neuen Bibliothek Coldfire-kompatible Programme erzeugen. Diese laufen dann unter FireTOS und freeMiNT auf der Firebee, nicht jedoch unter EmuTOS, welches nur mit nativen Coldfire-Anwendungen kompatibel ist – und diese werden derzeit nur von den C-Compilern AHCC und gcc erzeugt.

GBE

Der GBE-Editor ist dem Original-Editor von GFA nachempfunden, fast könnte man meinen, der Interpreter sei tatsächlich in ein GEM-Fenster verfrachtet worden. Die Menüleiste ist als Ergänzung zu sehen, Programme werden wie im Original über die Schaltflächen im Fenster geladen und gesichert. Der Editor bietet die bekannten Komfortfunktionen wie das Falten von Funktionen und Prozeduren, sowie die automatische Einrückung von Befehlen. Ergo!pro als Shell zum Starten des Compilers ist mit dem GBE überflüssig. In den Einstellungen lassen sich verschiedene Sets aus Compiler, Linker und Bibliothek definieren. Hier bietet sich natürlich ein 68k- und Firebee-Set an, aber Vorsicht: Auf der Firebee lassen sich nur Firebee-Programme erzeugen. Die Wahl des Sets hat keine Auswirkungen auf den MAKE-Befehl, stattdessen erfolgt über eine neue Compiler-Direktive die Wahl des Sets:

REM #MAK <Name des Sets>

Es lassen sich auch mehrere durch Komma getrennte Sets angeben, dann fragt GBE nach, welches verwendet werden soll.

Probelauf

Für einen ersten Test wurden mehrere Programme fit für die Firebee gemacht: Das Spaßprogramm Coffee und das Point-and-Click-Textadventure House Quest I. Coffee ist ein denkbar einfaches GEM-Programm: Es zeigt lediglich eine Reihe von Dialogboxen, stürzte aber wie die größeren GFA-Programme beim Start ab. Neu kompiliert gab es hingegen keine Probleme: Die Firebee-Version mit der neuen Library von Pursell läuft problemlos unter FreeMiNT/FireTOS.
House Quest von Christian Becker stürzte zwar beim Start nicht ab, hatte aber andere Probleme: Es fand seine Resource-Datei nicht. Auch hier war die Anpassung eine Sache weniger Minuten. Zwar hat das Spiel unter hohen Farbtiefen immer noch leichte Redraw-Probleme, aber es ist spielbar. Eine App mehr für die Firebee!
Auch drei Spiele von Karsten Knorr (ZDoko, ZSudoku, ZDrachen) lassen sich nun auf der Firebee ausführen.

Vorläufiges Fazit

Für die ersten Versuche wurden bewusst Programme gewählt, bei denen keine größeren Schwierigkeiten zu erwarten waren. Andere GFA-Programme, insbesondere die, die nicht auf GEM setzen, dürften aufwändigere Anpassungen erfordern. Lonny Pursell selbst hat dies für eine alte Monopoly-Umsetzung gemacht.
Natürlich können auch nur Programme neu kompiliert werden, deren Quelltext verfügbar ist. Das ist insbesondere bei den Programmen auf faceVALUE-Basis nicht der Fall, da faceVALUE nach wie vor kommerziell ist. Zwar könnte der Programmteil ohne die Library veröffentlicht werden, wie ich das bei einigen meiner Programme gemacht habe, aber der HomePage Penguin nutzt zum Beispiel eine modifizierte, unveröffentlichte Beta-Version der faceVALUE-Library.
Fortschritte bei den Firebee-Anpassungen können Sie in der UpToDate-Liste (atariuptodate.de) und auf der Facebook-Seite der st-computer verfolgen. GFA-Entwickler sollten außerdem die GFA-Basic-Gruppe auf Facebook verfolgen (facebook.com/groups/gfabasic/), dort gibt es viele Tipps zum GBE und der Optimierung und Anpassung von BASIC-Programmen. (mj)


Mia Jaap
Links

Copyright-Bestimmungen: siehe Über diese Seite