Compiler-Optionen
Beim erstmaligen Compilieren eines Quelltextes oder
wenn Sie den Menüpunkt BASIC-Programm compilieren mit...
aufrufen, erscheint ein Fenster,
in dem Sie Optionen einstellen können.
Diese Optionen beeinflussen die Arbeitsweise des Compilers.
Haben Sie mehrere BASIC-Quelltexte im
Texteditor geöffnet,
werden die Compiler-Optionen für jeden Quelltext separat verwaltet.
Die BASIC-Compiler-Optionen unterteilen sich in mehrere Gruppen,
die nachfolgend beschrieben werden.
1. Optionen in der Gruppe Allgemein
-
Zielsystem
Diese Einstellung gibt an, für welches
Zielsystem der Programmcode erzeugt werden soll.
Standardmäßig ist ein Zielsystem voreingestellt,
dass dem gerade emulierten System entspricht, vorausgesetzt,
dieses wird vom Compiler auch unterstützt.
-
Name des Programms
Diese Einstellung gibt es nur bei bestimmten Zielsystemen.
Damit wird der Name angegeben, mit dem das Programm gestartet wird.
-
Anfangsadresse
Mit der Anfangsadresse legen Sie den Programmstandort im Adressbereich
des Arbeitsspeichers fest.
Ein für das Zielsystem passenden Wert ist voreingestellt.
Der Wert kann beliebig geändert werden.
Allerdings müssen Sie selbst darauf achten,
dass das compilierte Programm vollständig in einem geeigneten
Adressbereich liegt bzw. dort hineinpasst.
-
Variablen/Speicherzellen
Hiermit legen Sie fest, wo die Variablen, die Speicherzellen und,
sofern gewünscht, der eigene Stack-Bereich im Adressbereich
des Arbeitsspeichers liegen sollen.
Dieser Bereich muss RAM sein.
Wenn Sie für die Variablen und Speicherzellen keine Adresse angeben,
liegen sie direkt hinter dem Programmcode.
Das bedeutet aber auch, dass das compilierte Programm
nur im RAM lauffähig ist.
Möchten Sie ROM-fähigen Programmcode erzeugen,
müssen Sie eine im RAM liegende Adresse für
die Variablen und Speicherzellen angeben.
-
Größe Zeichenkettenspeicher
Im Zeichenkettenspeicher werden die Zeichenketten abgelegt,
die in String-Variablen gespeichert sind.
Die benötigte Größe des Speichers hängt
wesentlich von der Anzahl der String-Variablen und
der Länge der darin gespeicherten Zeichenketten ab,
aber auch von der Anzahl der getätigten Wertzuweisungen.
-
Stack
Hier wird die Größe des Stack-Bereichs festgelegt.
Dieser muss um so größer sein,
je mehr Unterprogramme geschachtelt aufgerufen werden.
Insbesondere bei
benutzerdefinierten Funktionen und Prozeduren
ist ein großer Stack-Bereich erforderlich,
da die Argumente und lokalen Variablen auf dem Stack abgelegt werden.
Die Verwendung des System-Stacks ist auch möglich,
aber nur dann zu empfehlen, wenn das BASIC-Programm kaum Unterprogramme
aufruft und man sich auch sonst sicher ist,
dass der System-Stack ausreichend groß ist.
-
Sprache der Laufzeitausschriften
Hier geben Sie an, in welcher Sprache Fehlermeldungen und sonstige
Ausschriften im compilierten Programms erscheinen sollen.
2. Optionen in der Gruppe Laufzeiteigenschaften
-
Compilieren für Test und Debugging
Diese Option sollte aktiviert sein,
wenn sich das BASIC-Programm noch in der Entwicklung befindet.
Dabei werden in das Programm diverse Laufzeitprüfungen
hineincompiliert, die bei Programmfehlern dafür sorgen,
dass das Programmm nicht unkontrolliert abstürzt,
sondern mit einer Fehlerausschrift kontrolliert beendet wird.
Durch diese zusätzlichen Laufzeitprüfungen
wird das compilierte Programm entsprechend größer
und auch etwas langsamer.
-
Compilieren für Produktiveinsatz
Bei dieser Option werden keine zusätzlichen Laufzeitprüfungen
hineincompiliert.
Programmfehler können zu einem unkontrollierten Absturz führen.
Die Option sollte dann eingeschaltet werden,
wenn das BASIC-Programm fertig entwickelt und ausreichend
getestet ist und man den kürzesten und schnellsten Programmcode
erzeugen möchte.
-
Benutzerdefiniert
Bei dieser Option legen Sie selbst fest,
welche einzelnen Laufzeitprüfungen in das Programm
hineincompiliert werden.
3. Optionen in der Gruppe Treiber
-
Bei Verwendung der OPEN-Anweisung folgende Treiber einbinden: ...
Mit der OPEN-Anweisung werden
Ein-/Ausgabekanäle geöffnet.
Dazu müssen bestimmte Treiber im kompilierten Programm
enthalten sein.
Der Compiler bindet standardmäßig alle Treiber ein,
die er entsprechend des BASIC-Programms und des Zielsystems
als nötig erachtet.
Es kann jedoch sein,
dass ein bestimmter Treiber gar nicht benötigt wird,
weil z.B. das Programm so geschrieben ist,
dass es niemals einen Ein-/Ausgabekanal zu dem betreffenden Gerät
öffnen wird.
Wenn Sie das wissen, können Sie die nicht benötigten Treiber
ausschalten und so die Größe des kompilierten Programms
verringern.
4. Optionen in der Gruppe Erzeugter Programmcode
-
Programmcode in Emulator laden
Ist die Option eingeschaltet, wird nach jedem erfolgreichen
Compiler-Lauf der erzeugte Programmcode in den Arbeitsspeicher
des Emulators geladen.
Das Programm kann dann im Emulator gestartet werden.
-
Programmcode in Datei speichern
Bei dieser Option wird der erzeugte Programmcode in eine Datei
geschrieben, deren Namen Sie angeben müssen.
Das Format der Datei hängt von der angegebenen Dateiendung ab.
Achtung! Bei KCC-, KCM- und TAP-Dateien gibt es abhängig
vom Zielsystem Unterschiede im Dateiformat .
Wenn ein Zielsystem für KC85/1, KC87 oder Z9001 ausgewählt
ist, wird im Dateikopf der Dateityp COM eingetragen
sowie bei TAP-Dateien mit der Blocknummer 0 begonnen.
Bei allen anderen Zielsystemen wird kein Dateityp eingetragen.
Außerdem beginnen dann TAP-Dateien entsprechend den HC900-
und KC85/2..5-Konventionen mit der Blocknummer 1.
5. Optionen in der Gruppe Sonstiges
-
Bei Nicht-ASCII-Zeichen warnen
Der Zeichensatz des Texteditor kann sich
(und wird es in den meisten Fällen wohl auch)
vom Zeichensatz des Zielsystems unterscheiden.
Wenn Sie im BASIC-Programm in einer Zeichenkette ein Nicht-ASCII-Zeichen
schreiben (z.B. einen deutschen Umlaut),
wird dieses Zeichen auf dem Zielsystem wahrscheinlich anders aussehen.
Ist die Option eingeschaltet, werden Sie auf solche Zeichen
aufmerksam gemacht.
-
Bei nicht verwendeten Funktionen, Prozeduren und Variablen warnen
Haben Sie Funktionen, Prozeduren oder Variablen deklariert oder
implementiert, die nirgends aufgerufen oder verwendet werden,
meldet der Compiler ein Warnung.
Häufig ist das ein Indiz für einen Schreibfehler
im Namen der betreffenden Funktion, Prozedur oder Variable.
-
Relative Sprünge bevorzugen
Sprünge zu bestimmten Anweisungen werden als absolute Sprünge
mit drei Bytes übersetzt,
da beim Compilieren die Sprungdistanz nicht bekannt ist.
Wird die Option eingeschaltet,
übersetzt der Compiler die Sprünge,
die wahrscheinlich nur eine kurze Sprungweite haben,
mit relativen Sprungbefehlen, die nur zwei Bytes lang sind
und auch schneller ausgeführt werden als absolute Sprünge.
Sprünge mit einer wahrscheinlich kurzen Sprungweite
sind z.B. Sprünge zum ELSE-Zweig innerhalb einer
einzeiligen IF-Anweisung.
In seltenen Fällen kann es vorkommen,
dass die Sprungdistanz für einen relativen Sprung zu groß ist,
z.B. wenn sehr viele Anweisungen in einer Programmzeile
mit einer IF-Anweisung stehen.
In dem Fall meldet dann der Assembler,
der automatisch nach dem eigentlichen Compiler gestartet wird,
"Relative Sprungdistanz zu groß".
Für Sie bedeutet das nur,
dass Sie die Option ausschalten müssen,
wenn die besagte Fehlermeldung erscheint.
-
Erzeugten Assembler-Code anzeigen
Schalten Sie die Option ein, wenn Sie sich für den
vom BASIC-Compiler erzeugten Programmcode interessieren.
Dieser wird dann in einem neuen Unterfenster
im Texteditor angezeigt.