# Locomotive BASIC

Locomotive BASIC ist ein BASIC-Dialekt der Schneider/Amstrad CPC-8bit-Heimcomputerbaureihe, im ROM enthalten und zugleich als Betriebssystem gedacht, in Entwicklung, Befehlsumfang und durch den Hersteller, Locomotive, eng verwandt mit dem ebenfalls bekannten Mallard BASIC. Entwickelt wurde diese Sprache durch die kleine britische Firma Locomotive Software.
Programmiert wurde im Dialog auf der Kommandozeile, die notwendige Zeilennummerierung bzw. deren Änderungen erfolgte automatisiert. Wie die meisten BASICs als Interpreter betrieben, war zusätzlich ein optionaler Compiler erhältlich.
Der umfangreiche und gut zu handhabende Sprachumfang machte die Programmierung der meisten Anwendungen im BASIC selbst möglich. Zusätzliche Funktionen konnten mit Assembler-Speicheraufrufen (Z80A) im Programm selbst integriert werden. Die Sprites eines C64 fehlen, dafür können etwa Oberflächen mit bis zu acht Dialogfenstern recht schnell und flüssig programmiert werden. Insgesamt ist es eine weitgehend ausgewogene, abgerundete Programmiersprache mit guter Syntax.
Als Speichermedium dienten Kassetten- bzw. Diskettenlaufwerke, zur Ausgabe schwerpunktartig Monitor bzw. Drucker, als Eingabe Tastatur bzw. Joystick. So wie der eingebaute Lautsprecher, konnten sie direkt angesprochen werden. Optionale, weitergehende externe Hardware bedarf Schnittstellen seitens der Hersteller bzw. eigener Programmierarbeit.
Entsprechend der Entwicklungszeit fehlen allerdings die großen Ansätze des strukturierten Programmierens weitgehend, werden aufgrund des häufig überschaubaren Programmierumfanges aber auch noch nicht wesentlich vermisst bzw. mit anderen Methoden wie den berüchtigten GOTOs dann doch gekonnt umgesetzt. Die Programmierung erfolgte problem- bzw. maschinenorientiert, parallele Verarbeitung, Vernetzung oder Objektorientierung stecken noch in den Kinderschuhen oder waren noch nicht geboren.

## Beispiele

Etwas einfaches anstelle von „Hallo Welt“:
Das Ganze kann natürlich auch vereinfacht, hier von der Kommandozeile aus umgesetzt werden:
Jede Befehlszeile ist auf ca. 255 Zeichen begrenzt, die deutschen Sonderzeichen stehen im BASIC selbst, außer als ASCII-Aufrufe, nicht zur Verfügung.

## Versionen

Während beim Schneider/Amstrad CPC die Version 1.0 bzw. 1.1 verwendet wurde und beim PCW/Joyce bzw. NC100 das Mallard BASIC derselben Firma bzw. das in England bekannte BBC BASIC verwendet wurden, wurde für die DOS/GEM-Umgebung des PC-kompatiblen Amstrad PC1512 die Version Locomotive BASIC2 geschaffen. Die genaue Angabe der Version lautet:
Locomotive Basic2 war eine graphische integrierte Entwicklungsumgebung in der graphischen Oberfläche GEM. Die Programme konnten mit Fenstern umgehen, die Maus mitverwenden und farbige Grafik erzeugen.
Beim KC compact meldet sich das Basic mit BASIC 1.1.

## Funktionsweise

Beim Locomotive Basic des CPC handelt es sich um keinen reinen Interpreter, vielmehr wurde eine Untermenge der beim Kompilieren durchzuführenden Arbeiten bereits beim Eingeben des Programms ausgeführt. So wurden beispielsweise die BASIC-Befehle wie etwa PRINT, IF, FOR usw. nicht Buchstabe für Buchstabe im Hauptspeicher abgelegt, sondern es erfolgte die Vorübersetzung in ein sogenanntes Token (ein Byte als Zahlencode für den entsprechenden Befehl). Dadurch wurde die Ausführung des Programms beschleunigt, weil nun nicht mehr zur Laufzeit anhand mehrerer Zeichen der auszuführende BASIC-Befehl ermittelt werden musste, stattdessen konnte direkt über den Tokenwert anhand einer Tabelle im Hauptspeicher direkt zur entsprechenden Routine gesprungen werden. Für Testläufe und Fehlersuche standen auf der Kommandozeile spezielle Befehle zur Verfügung. Die kompakte Lexik der Sprache unterstützte die Vermeidung von Tippfehlern, die Fehlermeldungen waren prägnant. Die möglichen Variablentypen beschränken sich auf das wesentlichste, deren Deklaration ist oft nicht zwingend notwendig.