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
★ LANGUAGE:
★ AUTHOR: Martin Kotulla

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
  » Jumpref    (Schneider  Aktiv)    GERMANDATE: 2021-06-08
DL: 3 fois
TYPE: ZIP
SIZE: 4Ko
NOTE: 40 Cyls
.HFE: NON

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

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.
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RSX Cross-Reference (Happy Computer)
» Applications » Crossreferenz (Schneider Aktiv)
» Applications » Refusnik (Amstrad Magazine)
» Applications » Refont (CPC Revue)
» Applications » SoftwareFreezer (CPC Amstrad International)
» Applications » Reformat

CPCrulez[Content Management System] v8.7-desktop
Page créée en 789 millisecondes et consultée 25 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.