Laser BASIC Compiler

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Laser BASIC Compiler
Laser BASIC Compiler
Entwickler David Hunter
Firma Oasis Software
Verleger Ocean
Release 1985
Plattform(en) C64,
Amstrad CPC 464/664/6128,
ZX Spectrum
Genre BASIC-Compiler
Steuerung Icon tastatur.png
Medien Icon disk525.png, Icon kassette.png
Sprache(n) Sprache:englisch, Handbuch Sprache:englisch

Der Laser BASIC Compiler (oft auch kurz als Laser Compiler bezeichnet) für den Commodore 64 ist ein 3-Pass BASIC-Compiler von Oasis Software, der Programme kompilieren kann, die in BASIC V2 oder Laser BASIC geschrieben sind. Die Version 1.0 wurde 1985 von Ocean Software herausgegeben.

Beschreibung[Bearbeiten]

Der Compiler ergänzt die für Spieleprogrammierung entworfene BASIC-Erweiterung Laser BASIC. Deren Kompilate sind lauffähig, ohne dass die Erweiterung extra geladen werden muss. Obwohl bei jedem Kompilierungsvorgang eine Runtime-Bibliothek eingebunden wird, sind die erstellten Programme lizenzfrei.

Der Laser Compiler wurde auf Diskette oder zwei Kassetten ausgeliefert, zusammen mit einem 10-seitigen englischsprachigen Handbuch, das leider auf farbigem Papier gedruckt ist. Auf dem Datenträger befinden sich neben dem Compiler drei zusätzliche Programme:

  • DEMO: ein Demonstrationsprogramm
  • TURBO: das Turbo-Tape-Dienstprogramm als Ergänzung für Programme, die in BASIC V2 geschrieben sind (in Laser BASIC bereits enthalten).
  • LIB1, ..., LIB6: Runtime-Bibliotheken

Nur auf Diskette:

  • BOOTGEN: Erstellt ein Ladeprogramm, mit dem das vom Compiler generierte Programm geladen und durch LOAD "ladeprogramm",8,1 gestartet wird.

Bedienung[Bearbeiten]

Der Compiler wird geladen und gestartet von Diskette mit LOAD "LBC",8,1 bzw. von Seite A der Kassette mit SHIFT +RUN/STOP .

Die Bedienung ist sehr einfach, da es nur wenige Einstellungsmöglichkeiten gibt. Einige Input-Abfragen definieren Gerätenummern oder Dateinamen und auch drei Optionen:

  • C / L : Commodores BASIC oder Laser BASIC
  • I / F : Integer-Arithmetik oder Fließkommazahlen
  • E / N : Fehlerbehandlung ja (Error) oder nein (No error)
Diese Option steht nur nach Auswahl von Integer zur Verfügung.

Nach erfolgreicher Kompilierung wird eine der 6 Runtime-Bibliotheken hinzu geladen bevor die fertige Datei benannt und abgespeichert wird. Leider ist es vor dem Laden der LIB nicht möglich, die Nummer des Laufwerks einzugeben. Entweder lädt man die Bibliothek von der Compiler-Diskette, was einen zweifachen Diskettenwechsel nötig macht oder man kopiert die jeweils benötigten Bibliotheken vor dem Kompilieren auf die Arbeitsdiskette.

Die Auswahl der Runtime-Bibliothek richtet sich nach der Wahl der Optionen:

L / F     : LIB1
L / I / E : LIB2
L / I / N : LIB3
C / F     : LIB4
C / I / E : LIB5
C / I / N : LIB6

Der Laser Compiler kann in der Regel auch Programme, die mit BASIC Lightning, dem Vorgänger von Laser BASIC, geschrieben worden sind, kompilieren. Die wenigen Unterschiede sind im Handbuch erklärt.

Test[Bearbeiten]

Programme, die in BASIC V2 geschrieben sind, kompiliert der Laser Compiler in der Regel klaglos, ausgenommen solche, die BASIC-Erweiterungen enthalten, wie z.B. SYS-Befehle mit Parametern. Diese werden mit der Meldung "BAD PROGRAM" zurückgewiesen. Auch Programme, die mit dem LOAD-Befehl nachladen, werden nicht verarbeitet. Eine Zeile mit LOAD erzeugt den Fehler "UNIMPLEMENTED COMMAND".

Beim Test mit dem Programm "FEHLER-TEST" aus dem 64'er Sonderheft 12 erkannte der Laser Compiler genau so viele Fehler wie der BASIC 64 Compiler, aber einen weniger als Basic-Boss.

Geschwindigkeit[Bearbeiten]

Kompilierzeit für das Programm "EDDI":

  • 1:50 Min. (oder etwas weniger) inkl. Laden, Hinzuladen der LIB und Speichern des Kompilats mit Diskettenwechsel
  • 1:30 Min. mit Runtime-Bibliothek auf der Arbeitsdiskette und deshalb ohne Diskettenwechsel

Zum Vergleich:

  • BASIC 64 Compiler: 6:22 Min.
  • Basic-Boss: 1:33 Min.

Benchmarktest
Der Geschwindigkeitsgewinn durch Kompilieren wird mit Hilfe einer leicht modifizierten Version des Testprogramms "BENCHMARK" aus dem 64'er-Sonderheft 12 ermittelt.

Test BASIC V2.0 BASIC 64 Compiler Basic-Boss LASER Compiler
Interpreter M-Code Opt. 2 M-Code Commodore/Float
B1: 1,37 0,31 0,93 0,93
B2: 10,23 0,13 1,10 3,15
B3: 71,00 63,72 63,20 64,65
B4: 5,40 0,60 0,95 1.23
B5: 8,82 1,55 3,55 4,55
B6: 130,17 123,22 120,72 122,28
B7: 25,80 1,53 3,22 2,27
B8: 144,10 23,75 47,77 54,98

Platzbedarf auf Diskette[Bearbeiten]

Die folgende Tabelle zeigt an Beispielprogrammen von verschiedenem Umfang die Größe des Kompilats (Blöcke auf Diskette) im Vergleich zu BASIC V2, BASIC 64 Compiler und Basic-Boss.

BASIC V2 BASIC 64 Basic-Boss LASER BASIC Compiler
Programm M-Code 1 (nicht opt.) F + E I + E I + N
Benchmark 7 29 22 34
Eddi 14 41 34 41 34 32
Blockfolge 21 50 44 45 38 36
Diskass 27 46 41 47 40 38
Labyrinth 40 93 80 64
Diskverw 59 110 93 76 68 67
Ligatab b1 77 154 142 98 91 89

Beim Test mit den verschieden großen Programmen kam es zu einigen Problemen.
Benchmark und Labyrinth konnten nicht mit der Option "Integer" kompiliert werden.

  • "EDDI" (aus 64'er SH41):
GOTO auf nicht existierende Zeile 1090 → Fehlermeldung.
War erst kompilierbar nach Korrektur durch Einfügen der fehlenden Zeilennummer.
  • "SOUND-EDITOR +" (aus 64'er 02/86):
1060, 1080, 1082, 1084, 1130: UNIMPLEMENTED COMMAND;
LOAD"filename",8,1 wird nicht unterstützt.
1550, 2035, 2040, 2050, u.v.a. : SYNTAX ERROR
→ SYS-Befehl mit Parametern wird nicht unterstützt.
Dieses Programm konnte mit dem Laser Compiler nicht kompiliert werden.
Für den Test der Kompilatgröße ist daher das Programm "LIGATAB B1" aus der 64'er 03/1985 genommen worden.
  • "DBII" (aus 64'er 04/86):
129 Blöcke; eventuell zu groß; außerdem schwierig wegen selbstmodifizierendem BASIC-Code
FATAL ERROR. COMPILATION ABORTED.

Andere Computer[Bearbeiten]

Den Laser Compiler von Oasis Software gibt es auch für andere Computer als den C64:

Da sich der Einsatz dieser Versionen von der obigen Beschreibung unterscheidet, muss man die zugehörigen Anleitungen zu Rate ziehen.

Weblinks[Bearbeiten]

C64[Bearbeiten]

Amstrad CPC 464/664/6128[Bearbeiten]

ZX Spectrum 48K[Bearbeiten]