APPLICATIONSPROGRAMMATION ★ Sprünge ohne Umwege|CPC Amstrad International) ★

RSX Bexec (CPC Amstrad International)Applications Programmation
★ 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 ★ 

Ausführung von Programmteilen ohne Umstand

Wie Sie sicherlich wissen, ist ein Sprungbefehl wie GOTO nur in der Lage, Programmabschnitte anzuspringen, wenn Sie eine Zeilennummer mitangeben. Das es auch komfortabler und einfacher geht, können Sie hier erfahren.
BASIC-Programme haben den Nachteil, daß Sprünge innerhalb des Programms meist zur Unübersichtlichkeit führen. Anders wäre es, wenn diese Sprünge mit Labels gekennzeichnet wären. Auch die Übernahme von Zeilen in ein bestehendes Programm wäre eine nützliche Erweiterung. Unsere Hilfe? BEXEC!

Beschreibung zu BEXEC:

BEXEC steht für BASIC-EXEC. Gemeint ist damit in erster Linie ein RSX namens |EXEC. Es ermöglicht das Ausfuhren von BASIC-Befehlen aus Stringvariablen heraus, hier einige Anwendungsbeispiele:

— berechneter Sprung:

10 INPUT “Wohin soll ich springen“ ;sprungziel
20 befehl$=“GOTO“ + STR$(sprungziel)
30 |EXEC,@befehl$

— Auswertung von per INPUT eingegebenen Ausdrücken: 10 INPUT “Bitte arithmetischen Ausdruck eingeben: “a$ 20 |EXEC,“wert = “+a$

30 PRINT wert

— Eingabe von Funktionen für beispielsweise grafische Darstellung:

10 INPUT “Welche Funktion? f(x) = “,a$
20 |EXEC,"DEF FN f(x) = "+a$
30 GOSUB 1260:REM Funktionsdarstellung

Bei der Eingabe von z.B. “sin(x)*exp(x) "wird an |EXEC der String “DEF FN f(x) = sin(x)*exp(x)" übergeben. Dieser wird dann über BASIC-Routinen tokenisiert und in einen reservierten Speicherbereich geschrieben. Anschließend wird der BASIC-Programmzeiger auf diesen Bereich umgelenkt, so daß die Programmausführung nach Beendigung der RSX |EXEC hier fortsetzt. Für den Rücksprung ins laufende Programm sorgt dann die RSX IEXIX, die allerdings automatisch eingesetzt wird, so daß sich der Anwender hierum nicht zu kümmern braucht. Wird der EXEC-String vorzeitig verlassen, wie im ersten Beispiel durch GOTO, dann wird der angehängte |EXIX-Befehl natürlich nicht mehr ausgeführt.

Die weiteren RSXe bieten noch mehr Möglichkeiten, die mit |EXEC selbst nicht unbedingt in direktem Zusammenhang stehen müssen. Hier eine Erläuterung der einzelnen Befehle (allgemein gilt: Bei falscher Parameteranzahl wird SYNTAX ERROR ausgelöst):

|EXEC oder |EXEC,@a$

Führt den angegebenen String aus. Bei Angabe keiner Variablen wird der alte String ausgeführt, der durch ein vorhergehendes |EXEC,@a$ oder |PUTX,@a$ noch im Speicher steht. Bei TRON wird [EXEC] ausgegeben. Fehlermeldung: OPERAND MISSING wenn |EXEC ohne Variable aufgerufen wird und noch kein String initialisiert ist.

|EXIX

Dieser Befehl wird durch |EXEC und |PUTX standardmäßig an den Schluß des Strings gehängt, um den Rücksprung ins laufende Programm zu bewirken. Bei TRON wird ù nach einem [0], da das Kommando quasi in einer neuen Zeile mit der Nummer 0 steht - [EXIX] ausgegeben. Fehlermeldung: INVALID DIRECT COMMAND bei unberechtigter Anwendung.

|PUTX,@a$

Übernimmt einen String für |EXEC. ohne ihn auszuführen, damit bei wiederholter Anwendung (z.B. in Schleifen) der String nicht jedesmal neu tokenisiert werden muß.

|LSTX oder |LSTX,@a$

Dieser Befehl enttokenisiert die aktuell initialisierte EXEC-Befehlssequenz und schreibt sie auf den Bildschirm oder in eine Stringvariable. Fehlermeldung nur bei Angabe einer Variablen: TYPE MISMATCH falls die Variable nicht vom Typ String ist (kein Feldelement!). Achtung: Die Stringvariable kann verkürzt, aber nicht verlängert werden, sie muß daher vorher auf ausreichende Länge gebracht werden, z.B. durch a$=SPACE$(255).

|LSTERR oder |LSTERR,@a$

Schreibt den Teil einer Befehlszeile, in der ein Fehler aufgetreten ist, ab dem Fehlerstatement auf den Bildschirm oder in eine Stringvariable. Sonst wie |LSTX.

|GETLNR,@a oder |GETLNR.v,@a (a = INT- oder REAL-Variable)

Schreibt die Nummer der aktuell bearbeiteten Programmzeile bzw. die Nummer der v-ten Zeile nach der aktuellen in eine Variable. Dadurch bleiben berechnete Sprünge und ähnliches auch über RENUM-Befehle hinweg möglich. Fehlermeldungen: LINE DOES NOT EXIST, falls Zeile nicht gefunden; TYPE MISMATCH, falls Zielvariable nicht vom Typ Integer oder Real (kein Feldelement!); INVALID DIRECT COMMAND bei Aufruf außerhalb Programms.

Installation

Das BASIC-Programm "BEXEC.DAT“ erzeugt ein Maschinenprogramm als Binärdatei "BEXEC.RSX“. Zum Initialisieren der beschriebenen RSXe muß die Binärdatei mit LOAD“BEXEC.RSX“ geladen und mit CALL &C000 gestartet werden. Der Bildschirm dient hierbei als Zwischenspeicher, damit aufwendige MEMORY-Reservierungspro-zeduren entfallen. Der für die RSXe nötige Speicher wird direkt unter HIMEM vom Maschinenprogramm selbständig durch Benutzung der entsprechenden Routine im BASIC-ROM reserviert. Ebenso erfolgt automatisch eine Anpassung der Adressen an die Lage im Speicher und an die CPC-Version.

CPCAI 89/10

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1989
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1989
★ AUTHOR: Markus Betz
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-BEXEC    (CPC  Amstrad  International)    GERMANDATE: 2020-04-28
DL: 205
TYPE: ZIP
SiZE: 6Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Applications » RSX Help (CPC Amstrad International)
» Applications » Extension Rsx - Lire (Microstrad)
» Applications » String-Editor (CPC Amstrad International)
» Applications » RSX BankSwop (Amstrad Action)
» Applications » Pride Utilities - Rsx Printer Pac 2
» Applications » Andreas Stroiczek Rsx Disktool
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 423 millisecondes et consultée 1704 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.