C 64
Tips und Tricks

INPUT mit Pfiff

Einen INPUT-Befehl, der keine Wünsche mehr offenläßt, stellen wir Ihnen mit diesem Programm vor. Anhand des ausführlich dokumentierten Assembler-Listings können Sie zum Beispiel lernen, wie man eigene Befehle in den Interpreter einbaut.

Exinput 64« löst all Ihre Probleme, die Sie jemals mit dem INPUT-Befehl des Basic V2 gehabt haben. Mit dieser kleinen Erweiterung haben Sie ein Werkzeug in der Hand, das alle seitenlangen GET-Eingabeschleifen vergessen läßt. »Exinput 64« beschränkt sich nicht auf 80 Zeichen; Sie haben, wenn Sie wollen, die volle Länge eines Strings (255 Zeichen) zur Verfügung. Das Eingabefeld wird dabei durch eine Linie sichtbar gemacht. Sämtliche Zeichen können übernommen werden - auch Kommata und Doppelpunkte. Natürlich kann man die Eingabe auch auf bestimmte Tasten beschränken.

Eingabehinweis: Bitte geben Sie Listing 1 mit dem MSE ein, und speichern Sie es mit einem beliebigen Namen.

Programmbeschreibung

Die Erweiterung steht im Speicher von $C000 bis $C51D, wird mit »LOAD "Name",8,1« geladen, mit »SYS 49152« gestartet und muß nur nach einem Reset wieder neu initialisiert werden. Die Routine wurde über einen Zeiger aus der Zero-Page des C 64 in das normale Basic eingebunden.

Dies ist der Zeiger für »Basic-Befehlsadresse holen« in den Adressen $308/$309 (dezimal 776/777). Der Zeiger in diesen beiden Speicherstellen wird von $A7E4 auf den Anfang der Befehlserweiterung, in diesem Fall auf $C00B geändert. Dies wird beim Start des Programms durch die vier ersten Assemblerbefehle gemacht. Danach springt das Programm wieder ins Basic zurück und die beiden zusätzlichen »Basic-Befehle« stehen zum sofortigen Gebrauch im Basic-Programm zur Verfügung (siehe auch Kasten).

Die Routine übernimmt das selektieren der neuen Befehlsworte. Wird ein INPUT- oder PRINT-Befehl gefunden, wird auf das Erkennungszeichen der neuen Befehle (>) geprüft. Ist dieses Zeichen vorhanden, so wird in die eigene Routine verzweigt, ansonsten wird die Routine des Basic-Interpreters aufgerufen.

Der INPUT-Befehl sieht auf den ersten Blick vielleicht etwas kompliziert aus, ist es aber nach ein wenig Ausprobieren nicht mehr.

INPUT> Zeile, Spalte, Länge, Farbe, Text, Code, Zeichen, Variable

Erklärung der Parameter

Zeile: 1 bis 25 (oder Variable)
Spalte: 1 bis 40 (oder Variable)
Länge: 1 bis 255 (oder Variable)
Farbe: 0-15 (Farbe des Textes und des Eingabefeldes)
Text: Beliebiger Text zwischen "", erscheint vor dem Eingabefeld
Code:
  • 'A' = Alle Zeichen bei der Eingabe erlaubt
  • ’B’ = Nur Buchstaben, Leerzeichen, ’.’ und ’-’ für Abkürzung und Trennung
  • ’Z’ = Nur Ziffern, Minuszeichen und Dezimalpunkt
Zeichen: Einzelne Ziffern, Buchstaben oder jedes andere Zeichen zwischen " ", das bei der Eingabe erlaubt ist. (< 30 Zeichen) zum Beispiel Menüpunktabfrage zwischen 1 und 4: INPUT >20,5,1,1,"Bitte wählen: ",Z,"1234", X$
Variable: Muß eine String-Variable sein.
Einziger Nachteil: Ziffern müssen zum Rechnen mit VAL umgewandelt werden.

Ganz einfach ist der Befehl, weil man verschiedene Parameter einzeln oder zusammen weglassen kann, und zwar »Farbe«, »Text« und »Zeichen«. Dann bleibt zum Beispiel noch übrig:

INPUT>10,3,15,B,A$

Die Länge des Eingabefeldes wird durch eine Linie markiert, dessen einzelnes Zeichen (CHR$(100)) an der Adresse 49244 steht und durch »POKE 49244, CHR$-Code« beliebig geändert werden kann, zum Beispiel 32 (Leerzeichen), 46 (Punkt) etc.

Wird eine unerlaubte Taste gedrückt, oder soll der Cursor die Feldgrenze überschreiten, ertönt zur Warnung ein Piepston. Dieser kann mit »POKE 50340,0« ausgeschaltet und mit »POKE 50340,65« wieder eingeschaltet werden.

Am Ende des Eingabefeldes wird das letzte Zeichen bei weiteren Eingaben überschrieben.

Editier-Tasten

CRSR Left
CRSR Right
CRSR Up (Nur bei mehreren Zeilen)
CRSR Down (Nur bei mehreren Zeilen)
INST
DEL
HOME
CLR/HOME
RETURN übernimmt den Feldinhalt ohne Leerstellen am Ende
SHIFT/RETURN übernimmt auch die Leerstellen, also das ganze Feld
Ob mit oder ohne Leerstellen kann bei den beiden Tasten auch selbst bestimmt werden.
Für RETURN: »POKE 49595, 182(ohne)/208(mit)«
Für SHIFT/RETURN: »POKE 49602, 208(mit)/182(ohne)«
F8 läßt einen eventuellen Inhalt der Variablen im Eingabefeld erscheinen, jedoch nur bis zur Länge des Feldes selbst

Der zweite Befehl der Erweiterung betrifft den PRINT-Befehl.

Die Syntax des PRINT-Befehls

PRINT > Zeile, Spalte, Farbe, String
Hier kann die Farbe weggelassen werden, der zu druckende String muß zwischen " " stehen wie beim normalen PRINT-Befehl und jeder Parameter kann durch eine Variable ersetzt werden.

Mit den Angaben der im Kasten genannten Routinen kann man leicht eine Variable erstellen. Man kopiert nur die Adresse des reservierten Bereichs und die Länge in den Stringdescriptor und den Text der Variablen schreibt man in den reservierten Bereich. Alles andere erfahren Sie, wenn Sie das Programm selbst durchlesen (Listing 2).

(Guy Mootz/og)
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →