Erste Hilfe für Basic

Das Leben eines Programmierers ist eines der schwersten... Zum Glück ist diese Aussage leicht übertrieben, aber oft wünscht man sich schon eine Arbeitserleichterung. Wir haben uns für Sie die Basic-Programmierhilfe »Toolkit« zur CPC-Serie angesehen.

Wozu braucht man eigentlich eine Programmierhilfe unter Basic, wenn sich das Locomotive-Basic der CPCs doch schon recht bedienerfreundlich gibt? Nun, da sind einige Gründe zu nennen. Zunächst einmal ist auch eine so ausgereifte Software wie der Basic-Interpreter nicht perfekt. So kommt es, daß ihm einige Leistungsmerkmale abgehen, die sich im praktischen Einsatz als äußerst hilfreich erweisen. Andere Fähigkeiten sind nur ansatzweise vorhanden und keineswegs zur Vollkommenheit ausgereift. Natürlich kann man auch mit den gegebenen Voraussetzungen arbeiten. Nur läßt sich mit entsprechendem Werkzeug viel Zeit sparen und nicht zuletzt die streßgeplagten Nerven schonen. So vermißt der eifrige Hobby-Programmierer beispielsweise bessere Routinen zur Fehlersuche. Als Beispiel mag uns die Trace-Funktion dienen (Befehle TRON und TROFF). Ist sie aktiv, zeigt der Computer die Nummer der jeweils abgearbeiteten Zeile an, wodurch sich der Lauf des Programms rein theoretisch exakt verfolgen ließe. Die Sache hat jedoch einen groben Haken: Die Ausgabe der Zeilennummern erfolgt über den gesamten Bildschirm, so daß Grafikdarstellungen und Bildschirm-Masken durcheinander geraten. Außerdem ist der Ablauf durch die hohe Geschwindigkeit kaum mit bloßem Auge zu verfolgen. Und so wird aus einer eigentlich gut gemeinten Hilfe ein überflüssiges Anhängsel.

Ein weiteres Beispiel ist die schlicht fehlende Fähigkeit, Zeilenblöcke (also einzelne Routinen) innerhalb des Listings zu verschieben. Einen Block als Unterprogramm beispielsweise ans Ende des Programms zu transferieren wird zur regelrechten »Copy-Cursor-Tasten-Orgie«. Solche Aufgaben und vieles darüber hinaus erledigen Hilfsmittel wie das »Toolkit«.

Toolkit ist die Werkzeug-Sammlung für Basic-Programmierer. Es enthält zwei verschiedene Sätze von RSX-Befehlen, die sowohl einzeln als auch im Duett einzusetzen sind. Die Teilung ist in vielen Anwendungsfällen notwendig, weil das Gesamtpaket immerhin 14718 Byte belegt und somit für Basic-Programme nur noch ganze 27310 Byte übrigläßt. Block 1 der Utility umfaßt immer noch 9118 Byte (33131 Byte frei) und enthält vorwiegend Routinen zur Komprimierung und Analyse fertiger Programme.

Der zweite Teil dient der komfortablen Entwicklung, Änderung und Anpassung von Programmen. Er belegt 10118 Byte (32131 Byte frei). Beiden gemeinsam ist ein Satz Befehle, der beispielsweise der Fehlersuche dient. Diesen Teil wollen wir zunächst betrachten.

Befehle für alle Fälle

FREE gibt detailliert Auskunft über die Speichernutzung:

Alle Angaben erfolgen dezimal und hexadezimal, wodurch lästige Umrechnungen entfallen.

KON erlaubt, häufig benutzte Basic-Befehle abzukürzen. Also entspricht zum Beispiel »b.« dem Befehl BORDER, »g.« GOTO, »w.« WINDOW und »r.« steht für RETURN.

KOFF schaltet wieder in den normalen Eingabe-Modus zurück. PRON leitet Bildschirmausgaben auch auf den Drucker. Damit läßt sich nicht nur die Arbeit dokumentieren; vielmehr ist so auch beispielsweise das Directory auf Papier auszugeben.

PROFF läßt den Drucker dann wieder ruhen.

RESET bedeutet keinerlei Gefahr für den gespeicherten Datenbestand. Der Befehl setzt lediglich den Bildschirm auf seine Standardeinstellung zurück, was Ihnen aus der Patsche hilft, wenn Sie beispielsweise aufgrund gleicher Vorder- und Hintergrundfarben auf dem Monitor nichts mehr erkennen.

TOOLS erlaubt den fingerschonenden Aufruf der meisten neuen Befehle aus einem Menü per einfachem Tastendruck. Nach einmaligem Aufruf dieses Befehls sind die Funktionstasten im Zehnerblock für die Arbeit mit Toolkit sinnvoll belegt.

TOOLSOFF läßt nicht etwa das Menü wieder verschwinden, sondern löscht das gesamte »Toolkit« aus dem Arbeitsspeicher. Das wird spätestens dann nötig, wenn Sie Programme laden wollen, deren Länge die oben genannten Grenzen überschreiten.

TRON bietet gegenüber dem gleichnamigen normalen Basic-Be-fehl erheblich höhere Leistungen. Beim Aufruf läßt sich eine Bildschirmposition bestimmen, auf der die Ausgabe der aktuellen Zeilennummer erfolgt, so daß der restliche Bildinhalt unberührt bleibt. Da an dieser Stelle die Anzeige mit hohem Tempo »durchrast«, ist der Programmlauf mit der Leertaste anzuhalten und mit <SHIFT> erheblich zu verlangsamen (Slow-Motion). Als sehr praktisch erweist sich die mögliche Beschränkung des Tracings auf bestimmte Zeilenbereiche, da man fehlerfreie Programmteile ausklammern kann.

TROFF läßt wieder normale Abarbeitung zu.

HELP ruft Ihnen die Syntax und Parameter-Übergaben der neuen Befehle ins Gedächtnis.

Wie bereits erwähnt, sind diese Befehle in allen drei Betriebsarten vorhanden. Kommen wir nun also zu den spezifischen Kommandos der ersten Konfiguration.

Basic-Programmierung leichtgemacht

BMOVE verschiebt die Basisadresse eines Basic-Programms (und damit das gesamte Listing) im Speicher. Dadurch sind beispielsweise mehrere voneinander unabhängige Programme gleichzeitig im Speicher zu halten und zu bearbeiten. START legt die Startadresse auf mit BMOVE verschobene Programme. EMEM ist ein kleines Monitor-Programm zur Untersuchung und Byteweisen Änderung des RAMs. Dabei ist zwischen Hex- und ASCII-Eingaben zu wählen. So lassen sich nicht nur Basic-, sondern auch Maschinencode-Programme bearbeiten. Anpassungen fertiger Software an eigene Vorstellungen sind damit kein Problem mehr. Ruck, zuck wird auf diesem Wege beispielsweise aus fremdsprachigen Bedienerführungen perfektes Deutsch.

PMEM arbeitet wie EMEM, gibt jedoch die Hexdumps über den Drucker aus und sorgt damit für Übersicht.

FORMAT formatiert Disketten im 3-Zoll-Diskettenlaufwerk. Durch diesen Befehl müssen Sie zur Formatierung nicht auf die entsprechende CP/M-Routine zurückgreifen.

LIST listet ein Basic-Programm von Diskette oder Kassette, ohne das Programm im Arbeitsspeicher zu zerstören. So lassen sich beispielsweise einzelne Zeilen eines fertigen Programms in das bearbeitete übernehmen, ohne die MERGE-Funktion mit ihren Nachteilen.

LCOPY kopiert beliebige Zeilenbereiche an andere Stellen des Programms. Das ist dann sinnvoll, wenn Sie wiederholt ähnliche Routinen verwenden, Unterprogramme aber zum Beispiel aus Geschwindigkeitsgründen nicht sinnvoll sind. LMOVE ist mit LCOPY eng verwandt, löscht aber die Quellzeilen. PÄRTSÄVE speichert einzelne Bereiche eines Programms, um diese später beispielsweise als Unterprogramm-Bibliothek zu nutzen. RENUM arbeitet ähnlich dem bekannten Renumber-Befehl, erlaubt aber die Angabe einer End-Zeilen-nummer und somit die Umnumerierung einzelner Programmteile.

REPLACE ersetzt gewählte Zeichenfolgen (beispielsweise Variablennamen, Texte und so weiter) durch neue. Bei Angabe des Suchbegriffs sind die »Wildcards«»?«und »*« erlaubt (ähnlich wie beim DOS und CP/M), wodurch sich gleichzeitig ganze Gruppen erfassen lassen. Wahlweise erfolgt die Suche nur innerhalb eines bestimmten Zeilenbereichs.

SEARCH arbeitet was die Stringsuche betrifft ähnlich, zeigt aber die Zeilen mit den gesuchten Zeichenketten nur an.

DUMPA und DUMPE erzeugen eine Hardcopy mit 16 Graustufen auf Schneider- (DUMPA) oder Epson-(DUMPE) kompatiblen Druckern.

Doch nicht genug mit diesem Sammelsurium leistungsfähiger Befehle. Schließlich wartet noch der zweite Teil mit seinen sechs weiteren Befehlen auf uns.

Sechs tolle Befehle zum Schluß

KEY listet sämtliche Tastendefinitionen in editierbarer Form. Er ist sozusagen die Notbremse, wenn Sie im Eifer des Gefechts nicht mehr wissen, welche Tasten wie belegt sind.

KEYDEF erledigt das gleiche für Funktionstasten, die mit Erweiterungsstrings belegt sind.

PACK komprimiert Programme, indem er

— REMarks entfernt

Diese »Sparmaßnahmen« sind wahlweise beim Aufruf kombinierbar. Während der Komprimierung informiert der Computer seinen Benutzer durch Ausgabe der gesparten Zahl von Bytes laufend über den Fortschritt der Straffung. Neben der Speicherplatz-Ersparnis bringen diese Maßnahmen auch einen Geschwindigkeitsvorteil mit sich.

ROM listet alle aktiven ROMs. Erfolgt der Aufruf mit einer ROM-Nummer als Parameter, erhalten Sie obendrein Auskunft über die RSX-Befehle des jeweiligen ROMs.

RSX listet aktive RSX-Einbindungen. XREF ist einer der wichtigsten Bestandteile des Toolkit, denn er listet folgende Referenzen einzeln oder gemeinsam auf dem Bildschirm oder Drucker:

Dabei zeigt der Monitor jeweils die Nummern der Zeilen, in denen die gesuchten Elemente Vorkommen. Bei den GOSUBs kommt selbstverständlich noch die Zielzeile dazu. Diese »Cross-Reference«-Funktion ist wertvoll, wie kaum ein anderes Ausstattungsmerkmal. Sie macht die Analyse fremder Programme zum »Kinderspiel«. Wer zum Beispiel jemals ein gedrucktes Listing abgetippt hat und versuchte, es seinen persönlichen Bedürfnissen anzupassen, weiß diesen Vorzug zu schätzen. Aber auch eigene Programme sind — trotz reichlicher Bemerkungen (REMarks) — nach einiger Zeit nicht mehr auf Anhieb durchschaubar, wenn man sich mit ihnen schon länger nicht mehr beschäftigt hat.

Die dritte Konfiguration ist wie bereits gesagt eine Zusammenfassung sämtlicher genannter Befehle. Wegen des hohen Speicherbedarfs ist jedoch zu empfehlen, je nach Anwendungsfall mit einer der beiden Teilmengen zu arbeiten.

Mit Toolkit gestaltet sich nicht nur die Programmierung einfacher und schneller; auch Fehlersuche und Optimierung im fertigen Programm sind fortan ein leichtes. Für 70 Mark bekommt man also einen wirklich hohen Gegenwert auf Diskette, (ja)

IBMOVE.adresse
IDUMPA
IDUMPE
IEMEM,adxesse,[romnummer]
IFORMAT
IFREE
IHELP
IKON
IKOFF
IKEY,[erste_taste],[letzte_taste]
IKEYDEF,[erste_taste],[letzte_taste]
ILCOPY,startzeile,endzeile,neue_startzeile
ILMOVE,startzeile,endzeile,neue„startzeile ILIST, 'dateiname",[startzeile],[endzeile]
IPACK
IPARTSAVE, 'dateiname ".[startzeile],[endzeile] IPMEM,startadresse,[endadresse], [romnummer]
IPRON
IPROFF
IRENUM,[neue_startzeile],[alte_startzeile],[inkrement],[alte_endzeile]
IRESET
IROM,[romnummer]
IRSX
ISEARCH,suchstring,[startzeile],[endzeile]
ISTART,adresse
ITOOLS
ITOOLSOFF
ITRON, [startzeile], [endzeile], [x_Ordinate],[y_Ordinate)
ITROFF
IXREF

Alle Toolkit-Befehle auf einen Blick. Die Parameter in eckigen Klammem »[ ]« sind bei Aufruf wahlweise anzugeben.



Aus: Happy Computer 01 / 1987, Seite 30

Links

Copyright-Bestimmungen: siehe Über diese Seite