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 | |
Medien | , |
Sprache(n) | , Handbuch |
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 | Quelltext 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 | Quelltext 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 BASICI / F
: Integer-Arithmetik oder FließkommazahlenE / 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 | Quelltext 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 | Quelltext 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 | Quelltext 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 | Quelltext bearbeiten]
Den Laser Compiler von Oasis Software gibt es auch für andere Computer als den C64:
- für Amstrad CPC
- für ZX Spectrum.
Da sich der Einsatz dieser Versionen von der obigen Beschreibung unterscheidet, muss man die zugehörigen Anleitungen zu Rate ziehen.
Weblinks[Bearbeiten | Quelltext bearbeiten]
C64[Bearbeiten | Quelltext bearbeiten]
- Laser Basic Compiler bei commodore.software
- CSDb- Release Nr. 116500 Laser Basic Compiler V1.0
- Laser Compiler Manual in DLH's Commodore Archive
- 64'er 1994_09 auf archive.org mit Testbericht "Laser Basic Compiler" von Andree Herman auf S.46-47
- Compilertest Archiv mit D64: Programme für den Compilertest.
Amstrad CPC 464/664/6128[Bearbeiten | Quelltext bearbeiten]
- Laser BASIC Compiler im CPCWiki mit Link zum Handbuch (3-sprachig)
- Laser Basic Compiler UK 1986 bei CPC-Power
ZX Spectrum 48K[Bearbeiten | Quelltext bearbeiten]
- Laser Compiler Downloads bei Sinclair Infoseek
- Laser Basic/Laser Compiler Review (April 1986) von Chris Bourne bei Sinclair User