# Turbo-BASIC XL

Turbo-BASIC XL ist ein für Atari XL/XE entwickelter BASIC-Dialekt, der abwärtskompatibel zu Atari-BASIC ist und sich vor allem durch eine deutlich schnellere Verarbeitungsgeschwindigkeit und Befehle zur strukturierten Programmierung auszeichnet. Entwickelt wurde die Sprache von Frank Ostrowski, der später für die Firma GfA-Systemtechnik den Interpreter GFA-BASIC entwickelte. Veröffentlicht wurde Turbo-BASIC XL erstmals 1985 als Listing des Monats in der Zeitschrift Happy Computer (Markt & Technik Verlag), später wurde auch ein Compiler veröffentlicht.

## Vergleich zu Atari-BASIC
### Abwärtskompatibilität zu Atari-BASIC

Turbo-BASIC XL implementiert sämtliche Befehle des Atari-BASIC und verwendet das gleiche Dateiformat. Deshalb können Atari-BASIC-Programme meist ohne Anpassung direkt unter Turbo-BASIC XL ausgeführt werden, laufen jedoch ca. viermal schneller. Das kann zur Folge haben, dass etwa ein in Atari-BASIC geschriebenes Spiel unter Turbo-BASIC XL nicht mehr spielbar ist.
Eine weitere Ursache für Inkompatibilitäten ist die unterschiedliche Speicherbelegung. Turbo-Basic XL ist mit fast 16 KB etwa doppelt so groß wie Atari-BASIC. Trotzdem stehen unter Turbo-Basic XL ca. 34 KB Programmspeicher zur Verfügung. Das sind ca. 2 KB mehr als unter Atari-BASIC mit DOS, da Turbo-BASIC z. T. in Speicherbereichen abgelegt ist, die von Atari-BASIC nicht verwendet werden. Gleichwohl nutzen Programmierer diese Speicherbereiche oft für Unterprogramme in Maschinensprache. Solche Programme sind nur begrenzt unter Turbo-BASIC XL zum Laufen zu bekommen.

### Strukturierte Programmierung

Eine wesentliche Verbesserung gegenüber Atari-BASIC ist die Einführung von Befehlen zur Strukturierten Programmierung. So wurden REPEAT ... UNTIL, WHILE ... WEND, DO ... LOOP und IF ... ELSE ... ENDIF eingeführt. Mit PROC name ... ENDPROC kann man Unterprogramme definieren, die mit EXEC name aufgerufen werden.
In Turbo-BASIC XL kann ein Programm vollständig ohne GOTO-Anweisungen geschrieben werden. Die wenigen Ausnahmefälle, in denen dennoch ein direkter Sprung im Programm benötigt wird, kann man mit GO #label abfangen.
Man kann deutlich in Turbo-BASIC XL den Vorläufer zu GFA-BASIC erkennen.

### Grafik-Befehle

Schon Atari-BASIC verfügte über Befehle, um den Grafik-Modus zu setzen und Punkte und Linien zu zeichnen. Mit Turbo-BASIC XL kann man darüber hinaus auch Kreise und Ellipsen zeichnen, geschlossene Flächen füllen und Texte auf dem Grafikbildschirm ausgeben. Mit BPUT und BGET können Speicherblöcke, beispielsweise Bilder, auf ein externes Speichermedium abgespeichert bzw. von dort geladen werden.
Auch Turbo-BASIC XL verfügt nicht über Befehle zur Programmierung von Player Missiles (Sprites), so dass man wie unter Atari-BASIC auf PEEK- und POKE-Anweisungen angewiesen ist. Immerhin gibt es mit MOVE einen Befehl, um komplette Speicherblöcke zu verschieben, der zumindest die Programmierung von Player Missiles etwas vereinfacht.

### DOS-Befehle

Mit Befehlen wie DIR, DELETE, RENAME, LOCK oder UNLOCK kann man unter Turbo-BASIC XL direkt auf das Diskettenlaufwerk zugreifen, ohne wie unter Atari-BASIC kryptische XIO-Aufrufe (extended input/output, ein Spezialbefehl unter Atari-BASIC) verwenden zu müssen. Insbesondere dass man sich das Inhaltsverzeichnis der Diskette direkt ansehen kann, erleichtert die Arbeit bei der Programmentwicklung deutlich.

### Allgemeine Befehle und Funktionen

Unter Turbo-BASIC XL kann man direkt mit Hexadezimal-Zahlen arbeiten und es stehen mächtige Befehle zum Durchsuchen von Strings zur Verfügung. Es gibt zudem eine Reihe von Befehlen und Funktionen, die unter Atari-BASIC nur über Umwegen zu programmieren sind wie DIV, MOD, CLS (Clear Screen) oder PAUSE.

### Erweiterter Editor

Turbo-BASIC XL verwendet den von Atari-BASIC bekannten Editor, dieser wurde jedoch stark erweitert. Standardmäßig werden Schleifen und IF-THEN-ELSE-Blöcke optisch durch das Einrücken um zwei Leerzeichen hervorgehoben. Programme werden so leichter lesbar. Für die Ausgabe von Listings auf dem Drucker oder anderen externen Geräten ist diese Funktion jedoch abstellbar. Durch das Drücken einer der Konsolentasten (Option, Select, Start) kann die Bildschirmausgabe von Programmcode verlangsamt werden.
Hinzugekommen sind auch Befehle, mit denen ganze Programmblöcke gelöscht oder neu nummeriert werden können, mit DUMP kann die Variablen-Tabelle ausgegeben werden. Mit TRACE werden bei der Programmausführung die Zeilennummern ausgegeben, Programme lassen sich so leichter debuggen.

## AUTORUN.BAS

Ein BASIC-Programm, das unter dem Namen „AUTORUN.BAS“ auf der Diskette abgespeichert ist, wird von Turbo-BASIC XL beim Booten automatisch geladen und gestartet. Unter Atari Basic waren dafür Hilfsprogramme in Maschinensprache notwendig. Für den Compiler (s. u.) mussten die Kompilate zu diesem Zweck unter dem Namen „AUTORUN.CTB“ abgespeichert werden.

## Compiler

1986 wurde im ersten Atari-XL/XE Sonderheft der Zeitschrift Happy Computer der Turbo-BASIC-XL-Compiler veröffentlicht. Damit kompilierte Programme laufen nochmal im Schnitt dreimal schneller als unter Turbo-BASIC XL. Gegenüber Atari-BASIC ergibt sich somit ein Geschwindigkeitsgewinn vom Faktor 10 bis 12. In Benchmarks war der Turbo-BASIC-XL-Compiler schneller als alle 1986 erhältlichen kommerziellen BASIC-Compiler für Atari-Heimcomputer.

## Verbreitung

Turbo-BASIC XL ist eine der erfolgreichsten Programmiersprachen und nach Atari-BASIC der wohl meistverbreitete BASIC-Dialekt für die Atari-Heimcomputer. Die kommerziellen Nachfolger von Atari-BASIC (BASIC A+, BASIC XL und BASIC XE) von Optimized Software Systems (OSS) waren zwar zum Teil vom Befehlsumfang deutlich leistungsfähiger und vergleichsweise schnell, wie Turbo-BASIC XL, doch ließen sich diese Programmiersprachen nur begrenzt zur kommerziellen Anwendungsentwicklung einsetzen, da es für diese keine Compiler und für BASIC A+ nicht einmal eine Runtime Library gab. Zudem kosteten diese Programmiersprachen zwischen 80 und 100 US-Dollar, während es Turbo-BASIC XL und Compiler praktisch umsonst gab.

## Trivia

Mit einer Länge von 18108 Byte ist Turbo-BASIC XL eines der längsten Programme, das jemals von der Zeitschrift Happy Computer zum Abtippen veröffentlicht wurde, normalerweise gab es eine Größenbeschränkung auf ca. 10 KB. Da die Programme Hexadezimal abgedruckt waren, musste man einschließlich Prüfsummen mehr als 40.000 Zeichen für den Interpreter eingeben. Compiler und Runtime waren zusammen fast ebenso umfangreich.
Das Listing des Interpreters wurde insgesamt dreimal von Happy Computer veröffentlicht. Zum ersten Mal in der Ausgabe 12/1985, dann im 1. Atari-Sonderheft (1986) und schließlich noch einmal im 2. Atari-Sonderheft (1988).
Durch die Veröffentlichung als Abtipplisting galt Turbo-BASIC XL in der Atari-Szene fälschlicherweise als gemeinfrei. Eine offizielle Freigabe durch Markt & Technik gab es jedoch nie. Da jedoch Ende der 1980er so ziemlich jeder Atari-User eine Kopie von Turbo-BASIC XL hatte – von denen die wenigsten das Programm abgetippt oder über eine Leserservice-Diskette erworben hatten – dürfte Turbo-BASIC XL das am häufigsten raubkopierte Programm für den Atari XL/XE sein.
Frank Ostrowski entwickelte seinen BASIC-Interpreter ursprünglich auf einem Atari 800. Diese Version wurde jedoch erst 1986 unter dem Namen Turbo-BASIC v1.4 (ohne Zusatz XL) veröffentlicht. Diese ist jedoch nur von historischer Bedeutung, da zu dem Zeitpunkt die Atari 800-Rechner nur noch spärlich im Einsatz waren, zudem hat man nur ca. 23 KB Speicher für eigene Programme frei.