★ APPLICATIONS ★ PROGRAMMATION ★ Sprungtabellen für Basic-Programme ★![]() |
| Jumpref (Schneider Aktiv) | Applications Programmation |
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:
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.
|