APPLICATIONSDIVERS ★ INPUT - I need more Input ★

RSX Input (CPC Amstrad International)Applications Divers
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Fehler abgefangen

Erst vor kurzem wurde Ihnen eine vom BASIC aus erzeugte ERWEITERTE-INPUT-Routine vorgestellt. Allerdings war die Routine nicht so leicht zu bedienen und hatte aus Speicherplatzgründen keine Fehlerabfangroutine. Insbesondere beim Löschen von Zeichen innerhalb eines Strings waren längere Ausführungszeiten nicht zu vermeiden. Hier nun die schnellere Alternative in Maschinencode mit einigen weiteren Features.

Die Vorteile der MC-Routine liegen auf der Hand:

  1. Weniger Speicherplatzbedarf
  2. Aufruf durch einen komfortablen RSX-Befehl
  3. Schnellere Abarbeitung
  4. Eine Fehlerabfangroutine, welche in BASIC per ON ERROR GOTO problemlos weiterverarbeitet werden kann und zwar bei allen drei CPCs. Somit kann diese Erweiterung schon fast als echter BASIC-Befehl bezeichnet werden.

Syntax

Für den Aufruf der Routine — nach der Initialisierung mit CALL &A000 - gibt es zwei Möglichkeiten:

  1. |INPUT,@names$ : name$ repräsentiert hierbei irgendeine Stringvariable. An der aktuellen Cursorposition des WINDOW#0 wird die Eingabe erwartet.
  2. |INPUT,status,stream,@name$ : status — Der Wert ist bitsignifikant. Durch verschiedene Konstellationen der ersten vier Bytes werden verschiedene Eingaben möglich. Folgende Werte sind zugelassen:

    0 = Standard für normale Eingabe
    1 = Invertierte Eingabe
    2 = Geheime Eingabe, ohne das irgend etwas akustisch mitgeteilt wird oder eine Bildschirmausgabe erfolgt.
    3 = Ebenfalls geheime Eingabe. Allerdings ist die maximale Stringlänge invertiert zu erkennen.
    4 = Geheime Eingabe mit Cursordarstellung.
    5 = wie 4, jedoch invertiert.

stream - Mögliche Werte von 0 bis 7. Alle Bildschirmfenster sind daher ansprechbar. Eine Aufnahme von Strings von der Diskette ist hier allerdings nicht möglich.

Besonderheiten

In dem MC wurde der Teil des BASIC-Interpreters, welcher für die Fehlermeldungen zuständig ist, mit berücksichtigt. Das bedeutet, daß bei falschen Eingaben ganz normale Fehlermeldungen über #0 ausgegeben werden und mit einer normalen ON ERROR GOTO Anweisung weiterverarbeitet werden können. Mögliche Fehlermeldungen:

  • TYPE MISMATCH. Als Stringvariablenadresse wurde statt eines Zwei-Byte-Wertes nur ein Ein-Byte-Wert (0-255) übergeben. Eine weitere Berücksichtigung war aufgrund der Übergabeform eines Strings nicht möglich.
  • OPERAND MISSING. Es wurde eine falsche Parameteranzahl übergeben. Entweder Sie übergeben nur die String-adresse oder alle drei Parameter. Alles andere führt zu einer Fehlermeldung.
  • IMPROPER ARGUMENT. Es wurden mehr als drei Parameter übergeben, oder einer der übergebenen Parameter ist zu groß beziehungsweise zu klein. Oder der übergebene String wurde vor Aufruf nicht eingerichtet beziehungsweise hat die Länge 0 oder >250. Aus internen Verarbeitungsgründen war es nicht mehr möglich, längere Strings zuzulassen. Allerdings reicht eine maximale Länge von 250 Zeichen wohl vollkommen aus. Übrigens: Nach Fehlermeldungen ist mit den übergebenen Daten noch nichts passiert.

Übergabe der Stringvariablen

Ein wesentlicher Punkt dieses Input ist es, die Anzahl der einzugebenden Zeichen zu beschränken. Beim normalen Input oder Line Input ist es ja bekanntlich möglich, immer 255 Zeichen zu übergeben. Nehmen wir einmal an, Sie möchten eine Namenstabelle einrichten, und jeder einzugebende Name sollte nicht mehr als zehn Zeichen beeinhalten, so richten Sie den Übergabestring mit SPACE$(10) ein. Hierdurch wird der Routine bei Übergabe mitgeteilt, daß die Eingabe nicht länger als zehn Zeichen sein darf. Weniger Zeichen können Sie natürlich eingeben. Der String wird am Ende dann auch auf diese Länge reduziert. Alle Steuerzeichen durch CTRL+TASTE werden nicht nur in den String übernommen, sondern auch dargestellt. Dadurch hat die Routine große Ähnlichkeit mit dem LINE INPUT des BASIC. Nach Beendigung der Eingabe wird kein Carriage-Return durchgeführt. Hierfür müssen Sie schon selbst Sorge tragen. (Man braucht ja nicht immer ein CR - oder?) Die Tastaturbelegung

ist ähnlich wie beim normalen Input oder Line Input. CTRL+TASTE übernehmen Steuerzeichen in den String. Cursortasten bewegen den Cursor auf den String, allerdings nur rechts und links. CTRL+TAB schaltet zwischen Einfüge- und Überschreibemodus hin und her. Standard ist der Einfügemodus. DEL löscht das Zeichen unter dem Cursor. Reststring rückt auf. CLR löscht den ganzen String. Eingabe von vorn, RET/ENTER beendet die Eingabe. CTRL+Cursortasten bewegen den Cursor an den Anfang beziehungsweise an das Ende des Strings. Ist die maximale Länge einer Eingabe erreicht, kann kein Zeichen mehr übernommen beziehungsweise überschrieben werden. Sie müssen erst ein Zeichen mit DEL löschen. Übrigens wird die Länge eines Strings nach Eingabeabschluß aktualisiert. Bei Nichterreichen der maximalen Länge wird entsprechend gekürzt. Folglich ist es möglich, auch Leerstrings einzugeben.
Abtipphinweise

Nach Abtippen des BASIC-Laders speichern Sie diesen sicherheitshalber erst ab und starten dann. Es wird selbsttätig das Binärfile "EINGABE.BIN" abgespeichert. Sie können den neuen Befehl dann folgendermaßen benutzen: 10 IF PEEK(8cA000)=0 THEN MEMORY &9FFF: LOAD"eingabe.bin":CALL &A000

Danach steht Ihnen der Befehl |INPUT zur Verfügung. Als letztes finden Sie ein Demo-Programm, das Ihnen Beispiele einer Anwendung vorführt.
cd, CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1989
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1989
★ AUTHOR: Holger Schäkel
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-input    (CPC  Amstrad  International)DATE: 2013-01-02
DL: 302
TYPE: ZIP
SiZE: 12Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RH-Dat v2
» Applications » Edi-Pir #2
» Applications » Desktop Publishing Extra's
» Applications » Systeme Emulateur Disk - Amstrad To Ims 5000
» Applications » Reset (Amstrad Action)
» Applications » DLIST : Disketten-Katalog (Schneider Magazin)
Je participe au site:
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop
Page créée en 052 millisecondes et consultée 1640 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.