Atari-Basic mit Siebenmeilenstiefeln

Wenn es auf kurze Laufzeiten von Programmteilen ankommt, stößt das eingebaute Basic der Atari-Computer schnell an seine Grenzen. Der A Basic-Compiler beseitigt dieses Dilemma.

Das serienmäßig in Atari-Computer eingebaute Standard-Basic gehört zu den langsamen auf dem Markt.
Um etwas gegen dieses Dilemma unternehmen zu können, muß man zuerst einmal verstehen, warum die Sprache Basic so langsam ist.

Auch Sie werden sicherlich schon gehört haben, daß Basic zu den sogenannten Interpretersprachen gehört. Ein Interpreter übersetzt jede Programmzeile einzeln während der Programmausführung in für den Computer verständliche Befehle. Das hat den Nachteil, daß oft immer wieder die gleiche Zeile übersetzt und damit wertvolle Zeit verschwendet wird.

Ein anderer Grund für die geringe Geschwindigkeit von Basic ist die Verwendung von Fließkommaarithmetik, die in den meisten Fällen überhaupt nicht benötigt wird. Ein weiterer Nachteil von Basic ist, daß während der Programmausführung ungefähr 4 KByte RAM vom Betriebssystem belegt werden.

Hier schafft der ABC-Compiler (A Basic Compiler) Abhilfe. Der erste Schritt zur Beschleunigung der Abarbeitung des Basic-Programms ist die Umwandlung aller Zahlen in ein 3-Byte-Integer-Format. Dadurch können Zahlen nur noch im Bereich zwischen -8 und + 8 Millionen liegen, was in den meisten Fällen aber keine Probleme bereiten sollte. Eine direkte Folge des Wegfalls der Fließkommaarithmetik ist aber, daß die Funktionen »ATN«, »CLOG«, »COS«, »EXP«, »LOG«, »RND«, »SIN« und »SQR« nicht mehr funktionieren können (RND (1) würde im Integerformat immer Null sein). Auch die Befehle »DEG« und »RAD« werden deshalb vom Compiler nicht verstanden.

Außerdem wird das Basisprogramm in einen Zwischencode, den sogenannten RCode, übersetzt, der dann vom Runtime-Interpreter, der in jedem compilierten Programm enthalten ist, wesentlich schneller abgearbeitet werden kann. Dadurch kann auf das Basis-Modul verzichtet werden, und es steht mehr Speicherplatz für Daten und Programme zur Verfügung. Da nun die normale Basis-Umgebung wegfällt, werden noch einige andere Befehle überflüssig. So kann der ABCCompiler »NEW«, »CLOAD«, »ENTER«, »CONT«, »LIST«, »RUN«, »CSAVE«, »LOAD« und »SAVE« nicht compilieren (wozu auch?). Weiterer Nebeneffekt: da das Programm nicht mehr im Standardformat vorliegt, ist es vollkommen sicher vor Leuten, die sich einen Spaß daraus machen, anderer Leute Programme zu verändern oder gar den Copyright-Vermerk zu löschen.

Unverständlich ist allerdings, warum die Befehle »BYE«, »DOS« und »LPRINT« nicht kompiliert werden, wo doch gerade DOS der einzige Weg ist, aus dem kompilierten Programm in das Diskettenbetriebssystem zurückzukehren. (Hier kann man sich allerdings mit USR(PEEK (10) + 256*PEEK(11)) behelfen, doch welcher Anfänger weiß das schon?)

Die Bedienung des Compilers ist denkbar einfach: Die Masterdiskette wird ins Laufwerk eingelegt und durch Einschalten des Computers geladen. Anschließend wird der Benutzer nach den Namen des zu kompilierenden Basic-Programms und des kompilierten Programms gefragt. Dann wird das Basic-Programm geladen, die Anzahl der Variablen und der Programmzeilen ausgegeben, woraufhin der Kompiliervorgang beginnt. Sollten dabei Fehler auftreten, dann wird eine Fehlermeldung ausgegeben, aus der die Zeilennummer, in der der Fehler aufgetreten ist, und die Nummer des Fehlers hervorgeht.

Da die Dauer des Kompiliervorgangs bei langen Programmen ohne weiteres 5 Minuten überschreiten kann, sollte man nur fertige, fehlerfreie Programme kompilieren. Das kompilierte Programm kann nun, wie ein gewöhnliches Maschinenprogramm, ohne eingelegtes Basis-Modul vom DOS aus geladen werden. Hat man keine anderweitigen Kommandos gegeben, dann beginnt der Maschinencode bei $2600. Wünscht man eine andere Anfangsadresse, so kann man den Compiler durch Drücken der »OPTION«Taste während des Ladevorgangs auch dazu auffordern, die Anfangsadresse nach $1F00 oder $3000 zu legen. Mit Hilfe eines Zusatzprogrammes ist es sogar möglich, frei verschiebbare Programme zu erzeugen.

Die Beschränkungen des ABCCompilers sind nicht besonders schwerwiegend, wenn man schon bei der Programmerstellung daran denkt, Befehle zu vermeiden, die nicht kompilierbar sind und auch von vornherein auf Fließkomma-Arithmetik verzichtet. Da in der Bedienungsanleitung an Beispielen gezeigt wird, wie man fehlende Funktionen (zum Beispiel RND) simulieren kann, ist es wirklich nicht schwer, kompilierbare Programme zu schreiben. Ein Programm zur Verwaltung einer Programmbibliothek wurde beispielsweise ohne weiteres voll funktionstüchtig kompiliert.

Doch auch der Compiler hat seine Grenzen: Selbst die Geschwindigkeit von kompiliertem Basic reicht nicht aus, um wirklich gute Action-Spiele zu schreiben. Da müßte man schon auf reine Maschinensprache wie Forth oder Action! zurückgreifen!

Zusammenfassend kann man sagen, daß der ABC-Compiler seinen Preis (etwa 285 Mark) nur dann wert ist, wenn man oft Programme schreibt, die sich im Rahmen des vom ABC-Compiler »Erlaubten« bewegen und bei denen je nach Programm bis zu zehnfache Ausführungsgeschwindigkeit unbedingt notwendig ist.


Julian F. Reschke
Aus: Happy Computer 09 / 1984, Seite

Links

Copyright-Bestimmungen: siehe Über diese Seite