Direktmodus
Im Direktmodus oder Eingabemodus des BASIC des C64 können entweder verschiedene BASIC V2-Befehle direkt eingegeben und ausgeführt werden oder Programme unter Verwendung von Zeilennummern eingegeben und gespeichert werden. Mit Hilfe der Bildschirmeditor-Funktion in diesem Modus lassen sich die Eingaben auch einfach verändern.
Anstatt Befehle einzugeben, kann man den Bildschirm auch einfach mit ASCII-Zeichen füllen, z.B. um eine Blockgrafik zu erstellen. Besser ist dies allerdings mit Hilfe eines Anwendungsprogramms in einem Bildschirmmaskengenerator zu bewerkstelligen, vor allem, wenn ein bleibendes Ergebnis angestrebt wird.
Typische im Direktmodus ausgeführte Arbeiten sind das Laden und Starten bzw. Speichern von Programmen von der Datasette oder dem Diskettenlaufwerk (näheres ist im Einsteigerkurs sowie unter den C64-Befehlen LOAD, SAVE, RUN und SYS zu finden) sowie der weitere Umgang mit den Peripheriegeräten und das Programmieren, also die Eingabe von Programmen.
Befehlsverarbeitung[Bearbeiten | Quelltext bearbeiten]
Einige BASIC-Befehle können nicht im Direktmodus, sondern nur in Programmen genutzt werden. Bei der Nutzung dieser Befehle im Direktmodus erscheint dann die BASIC-Fehlermeldung ?ILLEGAL DIRECT ERROR. Folgende BASIC-Befehle weisen diese Eigenschaft auf: DEF, INPUT, INPUT#, GET, GET#.
Andere BASIC-Befehle werden zwar im Direktmodus ausgeführt, sind aber wirkungslos oder nicht sinnvoll verwendbar bzw. enden in einer Fehlermeldung.
- STOP unterbricht, aber ein zugehöriges CONT kann nicht mehr fortsetzen und die Fehlermeldung ?CAN'T CONTINUE ERROR erscheint.
- DATA hat keine Wirkung, wird ignoriert.
- READ bzw. RESTORE wirken immer auf (etwaige vorhandene) DATA-Kommandos des gerade im Speicher befindlichen Programms.
Die Speicherverwaltung von Zeichenketten-Konstanten unterscheidet sich im Direktmodus: Während in Programmen die Zeichenketten direkt (im Programm eingebettet) verwenden werden können, ist es im interaktiven Fall so, dass diese auf den String-Heap angelegt bzw. kopiert werden müssen (da ja die eingegebene Zeile nicht fest im Speicher verankert ist).
Während die Ausführung von A$="BIN AM STRING-HEAP"
die Zeichenkette als Kopie am String-Heap landet, wird bei der Programmzeile 100 A$="BIN IM PROGRAMM"
die Zeichenkette während des Programmlaufs unmittelbar im BASIC-Programm liegend verwendet.
BASIC-Routinen erkennen den Direktmodus daran, dass die Zeropage-Speicherstelle $3A (das höherwertige Byte der aktuellen Zeilennummer des Programms) den Wert 255 ($FF) enthält, der beim Start von $A483 ff. gesetzt wird.
Bildschirmeditor[Bearbeiten | Quelltext bearbeiten]
Der Direktmodus beinhaltet einen einfachen Bildschirmeditor. Das heißt, dass frühere Eingaben bzw. Befehle durch Zurückbewegen des Cursors wieder editiert und mittels RETURN in der editierten Variante erneut ausgeführt werden können. Dabei überschreiben neue Bildschirmausgaben ältere Ausgaben, was unter Umständen verwirrend aussehen kann.
Eingaben, die mit einer Zeilennummer beginnen, werden als Teil eines Programms aufgefasst und ergänzen bzw. überschreiben bei Bestätigung per RETURN die jeweilige Zeile bzw. löschen sie (falls nur die Zeilennummer ohne folgenden Befehl eingegeben wurde).
Der Bildschirmeditor unterstützt Zeilen bis 80 Zeichen Länge. Bei (logischen) Zeilen, bei denen über das 40ste Zeichen hinaus geschrieben wird, wird eine (physische) folgende Leerzeile eingefügt, sodass ungestört weitergeschrieben werden kann. Der Editor merkt sich (in der Zeropage $D9-$F2) die jeweiligen Längen der Zeilen.
Entsprechend ist der C64-Bildschirmeditor mit modernen Texteditoren mit einer maximalen Zeilenlänge von 80 Zeichen sowie aktiviertem "Zeilenumbruch"-Modus vergleichbar. Wird allerdings nach 80 Zeichen weitergeschrieben, wechselt der Cursor ohne Warnung in die nächste (logische) Zeile, was für Verwirrung sorgen kann.
Der Editor kann sich in unterschiedlichen Modi befinden, bei denen insbesondere Steuerzeichen (u. a. Cursor-Tasten) unterschiedlich behandelt werden. Die Umschaltung der Modi erfolgt durch " bzw. SHIFT +INST/DEL .
Der normale Bildschirmeditor unterstützt Scrolling nur eingeschränkt: Wird der Cursor per CRSR ⇓ über das Ende des Bildschirms hinaus bewegt, wird der Inhalt nach oben gescrollt; von unten scrollen Leerzeilen hinein. Über das obere Ende des Bildschirms kann nicht gescrollt werden.
Einige Erweiterungen wie z. B. das Final Cartridge 3 erlauben, z. B. innerhalb von Programmlistings sowohl nach oben als auch nach unten zu scrollen.
Intern greift der Editor zum Auslesen der Eingaben direkt auf den Bildschirmspeicher zu und hat keinen eigenen Textspeicher.