APPLICATIONSPROGRAMMATION ★ Variablen-Kompaß ★

RSX Varlist (Computer Technik)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 ★ 

Variablen listen, suchen und verändern beim CPC

Welchem BASIC-Programmierer ist es noch nicht so ergangen: Beim Umgang mit längeren Programmen verliert man den Überblick über die verwendeten Variablennamen. Oder man möchte gar nachträglich eine Variable umbenennen, was manchmal beim MERGE von Unterprogrammen zwingend notwendig wird. Eine mühevolle Arbeit, die eh besser dem Computer überlassen werden sollte.

Die hier vorgestellten drei RSX-Befehle bieten dem Programmierer hierfür ihre Dienste an. Man kann sich eine alphabetisch sortierte Tabelle aller Variablen anzeigen oder aus-drucken lassen, dazu die Zeilen, in denen eine Variable verwendet wurde, und schließlich hat man auch die Möglichkeit, einen Variablennamen zu ändern.

Um die Funktionsweise dieser RSX-Befehle zu verstehen, muß man zunächst wissen, wie Variablen im CPC-BASIC dargestellt und behandelt werden.

Jede eingegebene BASIC-Zeile wird tokenisiert. das heißt, daß den Befehlen und Funktionen (den Schlüsselwörtern) platzsparend ein einziges Byte zugeordnet wird, so daß der Interpreter dann nicht mehr mit langen Wörtern arbeiten muß. Variablennamen dürfen maximal 40 Zeichen lang sein, sie erkennt der Interpreter aus dem Zusammenhang (Syntax). Beim letzten Buchstaben des Namens wird das höchste Bit gesetzt, um das Ende des Namens zu signa-
lisieren. Weiterhin erhält der Name drei vorangestellte Bytes. Davon kennzeichnet das erste Byte den Variablentyp.

Erkannt

Die CPCs unterscheiden drei Grundtypen von Variablen: REAL (Gleitkommazahl), INTEGER (ganze Zahl) und STRING (Zeichenkette). Der Standardtyp ist REAL mit dem Kenn-Byte 0Dh. den normalerweise jede nicht weiter spezifizierte Variable erhält. Man kann diesen Typ auch mit einem angehängten T am Namen erzwingen. Bei einem angehängten "%' (für INTEGER) ist das Kenn-Byte 0Bh und OCh bei 'S" (STRING). Falls der Interpreter auf den Befehl DEF. . . trifft, so wird das Kenn-Byte einer Variablen ohne speziellen Typ bei DEFREAL auf 04h. bei DEFINT auf 02h und bei DEFSTR auf 03h geändert.

Wie schon in c't 7/85 (Wie schnell ist der CPC?) ausgeführt, besitzt das CPC-BASIC eine compiler-ähnliche Eigenschaft. Es vermerkt nämlich bei Sprüngen die Adresse des Sprungzieles in der BASIC-Zeile. Genauso verhält es sich mit den Variablenadressen. Das BASIC reserviert für die jeweilige Variable hinter dem Programm einen Tabellenplatz und trägt die Adresse dieses Platzes in die beiden erwähnten Bytes vor dem Variablennamen ein. Dann muß es nicht jedesmal, wie es etwa beim Sinclair Spectrum oder C64 der Fall ist. die Variablentabelle nach einem Eintrag durchsuchen.

Strukturiert

Die drei RSX-Befehle VARLIST , VARSEARCH und VARCHANGE benutzen diverse Unterprogramme des BASIC-Interpreters, die entweder im ROM ablaufen oder ins RAM kopiert werden, um das Programm möglichst schnell zu machen. Der Ablauf der drei Programme ist aus den zugehörigen Struktogrammen ersichtlich.

Wie man der Länge des BASIC-Laders entnehmen kann, würde das vollständige Assembler-Listing mit über 1200 Zeilen doch den Rahmen dieses Heftes sprengen. Interessierte Leser können es aber vom Verlag anfordern (DIN-A4-Freiumschlag nicht vergessen).

Computertyp464  6646128

Ausgabekanalnummer

AC21HAC06H AC06H
Letzte Fehlerzeile (LERRLINO)ADA6H  AD8CHAD8CH
Letzte BASIC Fehlernummer ADAAH  AD90HAD90H

Aktuelle Zeilennummer (BASPOINT)

AE36H  AE1DHAE1DH
Himem AE7BH  AE5EHAE5EH
Start BASIC Programm (STARTBAS)AE81H AE64HAE64H
Ende BASIC Programm (ENDBAS)AE83H  AE66HAE66H
Print ZeilennummerEE79H EF49H EF44H
Sende A über StreamC356H  C3A3HC3A0H
BASIC Zeile in Edit Buffer listenE163H  E259HE254H
BASIC Befehl : CLEARC132H  C12FHC12FH
Integer MultiplikationBDB5H  DD60HDD5BH
Für die drei CPC-Versionen sind die Einsprünge ins BASIC-ROM unterschiedlich.

Wenn man den BASIC-Lader eintippt, kann man sich die längere Tipporgie mit einem kleinen Hilfsprogramm etwas vereinfachen, das die Zehnertastatur auf der Shift-Ebene zweckmäßig für Hex-Daten belegt: Shift 0 erhält 'A\ Shift 1 demnach B' und so weiter. Der Punkt wird als Komma umdefiniert, so daß die DATA-Zeilen wesentlich einfacher mit einer Hand einzugeben sind. Nach RUN steht das Programm anschließend ab 9D00h im Speicher. Man kann es dann mit CALL &9D00 initialisieren oder aber binär abspeichern.

Sortiert

Der Befehl |VARLIST erstellt die komplette Variablenliste eines BASIC-Programms im Speicher. Die Variablen werden im Mode 2 angezeigt, damit ein schneller Überblick über möglichst viele Variablen möglich ist. Um den Speicherplatz der Tabelle zu begrenzen und andererseits das Programm möglichst schnell zu machen, wird mit der festen Variablenlänge von maximal 15 Zeichen gearbeitet. Falls doch einmal ein Variablenname länger ist, bricht das Programm mit der Meldung ‘Name too long in* und der Zeilennummer ab.

Eine Statuszeile am unteren Bildrand gibt Aufschluß über die möglichen Bedienfunktionen:

  • (R)eady: Abbruch und zurück ins BASIC
  • (N)ext: nächste Seite mit Variablennamen anzeigen
  • (B)ack: vorangegangene Seite anzeigen
  • (P)rint: Variablenliste, spaltenweise sortiert in vier Spalten ausdrucken
  • (S)ave: die Liste wird auf das Speichermedium geschrieben und kann mit einem kleinen BASIC-Programm wieder eingelesen und weiterbearbeitet werden.

Gesucht

Der RSX-Befehl |VARSEARCH. Stream-Nummer listet auf dem angegebenen Ausgabekanal alle Zeilennummem in runden Klammern auf, in denen die gesuchte Variable verwendet wird. Die Stream-Nummer darf zwischen 0 und 8 liegen oder ganz weggelassen werden. Eine Ausgabe auf Kassette/Disc ist also nicht möglich.

Um den Ärger mit dem Klammeraffen und den String-Variablen beim Übergeben des Variablennamens zu vermeiden, wird der Name im Dialog abgefragt. Wie im BASIC sind maximal 40 Buchstaben zugelassen, wobei nicht zwischen Groß-und Kleinschreibung unterschieden wird. Zusätzlich kann man auch den Variablentyp angeben, zum Beispiel a%.

Geändert

Mit |VARCHANGE kann man den Namen und. falls gewünscht, auch den Typ einer Variablen ändern. Nach Aufruf des RSX-Befehls fragt das Programm wiederum im Dialog nach dem alten und dem neuen Namen. Für die Variablennamen sind ebenfalls maximal 40 Zeichen zulässig. Falls der neue Name schon im Programm verwendet wird, erscheint die Meldung ‘New Name found', woraufhin man die Befehlsausführung fortsetzen oder abbrechen kann. Falls eine BASIC-Zeile durch den neuen Namen zu lang würde, bricht das Programm mit der Angabe der ersten zu langen Zeile ab. Falls gar der Platz für das gesamte BASIC-Programm zu knapp wird, erscheit die Meldung ‘Memory füll'. Mit ESC läßt sich der Befehl bei der Eingabe der Namen jederzeit abbrechen.

Angepaßt

Bekanntlich haben die Entwickler des CPC-BASIC bei den beiden 464-Nachfolgemodellen einige wichtige Systemadressen verschoben. Damit nun 664-und 6128-Besitzer nicht die Haare raufen müssen (schon wieder ein Programm nur für den 464. . .), wurden die nötigen Systemadressen für jeden Rechner aufgelistet und die betroffenen DATA-Zeilen sowohl für den 664 als auch für den 6128 am Ende des Programms mit-aufgeführt.

Literatur

  • Huslik: CPC 464 Inside out. Huslik Verlag, 1985.
  • Janneck, Mossa kowski: R.O.M - Listing CPC 464/664 6128, Verlag Markt & Technik. 1985.

c't

★ PUBLISHER: Computer Technik (c't)
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHOR: Jens Uwe Timm
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-Varlist    (Computer  Technik)    GERMAN    LISTINGDATE: 2024-03-08
DL: 21
TYPE: PDF
SiZE: 796Ko
NOTE: Supplied by archive.org ; 5 pages/PDFlib v1.6

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

Lien(s):
» Applications » RSX Variablendump (CPC Magazin)
» Applications » Variable Height
» Applications » Cambio de Variables (Amstrad User)
» Applications » Variablen King (CPC Amstrad International)
» Applications » Variablenliste
» Applications » Varilist (CPC Amstrad International)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» 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/c
Page créée en 666 millisecondes et consultée 80 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.