APPLICATIONSPROGRAMMATION ★ Sprungtabellen für Basic-Programme ★

Jumpref (Schneider Aktiv)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 ★ 

Bei der Analyse von Basic-Programmen ist es oft sehr nützlich zu wissen, in welchen Programmteilen Referenzen auf andere Zeilen auftauchen. Das Programm JUMPREF für den Schneider CPC 464 und CPC 664 erstellt vollautomatisch eine solche Referenz-Liste -wahlweise auf dem Bildschirm oder auf einem Drucker.

Programmbedienung: Normalerweise werden Programme, die von anderen Programmen untersucht werden sollen, mit SAVE "Datei",A als ASCII-Textdateien abgespeichert und dann von dort aus als Stringdatenfeld eingelesen. JUMPREF geht einen anderen Weg: es. wird zu dem zu analysierenden Programm hinzugeMERGEt, so daß beide Programme gleichzeitig im Speicher stehen. Dann wird das Programm mit einer PEEK-Schleife ausgelesen.

Nach dem Abtippen von JUMPREF sollten Sie es am besten gleich speichern. Falls Sie Besitzer einer Diskettenstation sind, müssen Sie dabei aber aufpassen: Die Probleme bei der Verwendung von MERGE und CHAIN MERGE dürften inzwischen hinreichend bekannt sein; speichern Sie das Programm deshalb als ASCII-File ab, also SAVE "JUMPREF.BAS",A.

Wollen Sie ein Programm untersuchen, so muß zuerst sichergestellt sein, daß es keine Zeilennummern größer als 60000 enthält. Sie können es notfalls mit RENUM in einen anderen Zeilenbereich legen. Geben Sie dann MERGE "JUMPREF.BAS" ein. Sobald der Computer mit dem Laden fertig ist, sollte ein RUN 60000 folgen. Es erscheint das Titelbild von JUMPREF und eine kurze Anleitung. Hier können Sie auch wählen, ob die Zeilenliste auf dem Bildschirm oder dem Drucker ausgegeben werden soll. Danach läuft alles automatisch; nach einer gewissen -natürlich von der Programmlänge abhängigen

— Wartezeit halten Sie die fertige Zeilenliste in den Händen oder haben diese vor Augen auf dem Monitor.

Funktionsweise von JUMPREF: Das Programm JUMPREF macht sich den Aufbau der Basic-Programme im Speicher zunutze. Alle Programmzeilen sind als verkettete Listen gespeichert; JUMPREF kann sich also von Zeile zu Zeile "durchhangeln". Grundsätzlich sind die Zeilen eines Basic-Programms folgendermaßen aufgebaut:

  1. Byte Zeilenlänge - LSByte (Lowbyte)
  2. Byte Zeilenlänge - MSByte (Highbyte)
  3. Byte Zeilennummer - LSByte
  4. Byte Zeilennummer - MSByte
  5. -n.Byte Programmzeile in Token-Form n+1.Byte &00 als Zeilenende-Kennung Basic-Programme werden bei den Schneider-Computern ab der Adresse 368 im RAM abgelegt. Folglich liegt in den Adressen 368 und 369 die Zeilenlänge verborgen, in 370 und 371 die Zeilennummer: PRINT PEEK(370) + PEEK(371) ergibt die Zeilennummer der ersten Zeile eines Basic-Programms.

Durch Addition der Zeilenlänge und der aktuellen Adresse erhält man einen Zeiger auf den Beginn der nächsten Zeile. Dies wird so lange gemacht, bis die Zeile 60000 erreicht ist - dort ist ja JUMPREF abgelegt.

Kurz für alle, die die Serie über den CPC 464 in der ComputerSchau nicht gelesen haben, zu den Basic-Tokens: Programmzeilen werden

wie bei den meisten Computern auch im Schneider nicht buchstabenweise abgelegt -das wäre eine Speicherplatzverschwendung und würde die Ausführungszeit der Programme erheblich drücken. Stattdessen sind die ASCII-Codes von 128 bis 255 für sog. "Tokens" reserviert. So wird aus den sieben Buchstaben von "DEFREAL" der Ein-Byte-Wert &8F - eine Speicherplatzeinsparung von sechs Bytes! Es gibt aber auch noch "Spezial-Tokens": Variablenkennungen, Fließkomma-

und Integerzahlen, und eben für Zeilennummern. Für letztere sind die Codes &1D und &1E vorgesehen.

Natürlich kommen diese beiden Werte auch in anderen Befehlskombinationen vor, z.B. als folgende Programmzeilen:

10 a%=&1E:b$=STRING$(&1D,34)

Diese Sonderfälle werden in den Zeilen 60430 bis 60480 ausgeklammert. Eine Eigenschaft hat der Basic-Interpreter aber allen anderen Computern voraus, nämlich die Behandlung der Sprungadressen. "Normale" Interpreten suchen dazu ein Programm von Anfang bis Ende nach der Zieladresse beispielsweise eines GOTOs ab. Das muß auch der CPC machen, aber nur einmal: Sobald die Adresse gefunden ist, wird die Zeilennummer durch die absolute Adresse der Zielzeile ersetzt. Alle zukünftigen Sprünge können somit mit Höchstgeschwindigkeit durchgeführt werden. Dies bedeutet aber natürlich zusätzliche Programmierarbeit, die Zeilen 60520 bis 60540 zeugen davon.

(Kl), SA

★ PUBLISHER: Schneider Aktiv
★ YEAR: 1985
★ CONFIG: AMSDOS + 64K
★ LiCENCE: LISTING
★ COLLECTION: SCHNEIDER AKTIV 1985
★ LANGUAGE:
★ AUTHOR: Martin Kotulla
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Jumpref    (Schneider  Aktiv)    GERMANDATE: 2021-06-08
DL: 140
TYPE: ZIP
SiZE: 4Ko
NOTE: Dumped by Johnny Farragut ; 40 Cyls
.HFE: Χ

» Jumpref    (Schneider  Aktiv)    LISTING    GERMANDATE: 2021-06-08
DL: 133
TYPE: PDF
SiZE: 228Ko
NOTE: 1 page/PDFlib v1.6

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

Lien(s):
» Applications » Refont (CPC Revue)
» Applications » SoftwareFreezer (CPC Amstrad International)
» Applications » Contest Ref
» Applications » Crossreferenz (Schneider Aktiv)
» Applications » Reformat
» Applications » XRef (CPC Magazin)
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 317 millisecondes et consultée 606 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.