Direktmodus

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Im Direktmodus oder Eingabemodus (nicht zu Verwechseln mit der Eingabe von Tasten oder Zeichen bei der Eingabeaufforderung) des C64 können entweder verschiedene C64-Befehle direkt eingegeben und ausgeführt werden oder Programme unter Verwendung von Zeilennummern eingegeben und gespeichert werden. Mit Hilfe der recht komfortablen 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.

Eine der wichtigsten Aufgaben des Direktmodus ist das Laden und Starten bzw. Speichern von Programmen von der Datasette oder dem Diskettenlaufwerk (näheres finden Sie unter dem Einsteigerkurs, sowie unter den C64-Befehlen LOAD, SAVE, RUN und SYS), sowie der weitere Umgang mit den Peripheriegeräten.

Danach folgt sofort das Programmieren, also die Eingabe von Programmen.

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 folgenden 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.