★ APPLICATIONS ★ PROGRAMMATION ★ Je kürzer, desto besser ★![]() |
| BPC (BASIC Program-Code-Compressor) | Applications Programmation |
BPC komprimiert Ihre Programme BASIC-Programme können mehrere Pluspunkte für sich einnehmen: Sie sind leicht zu verstehen, kennen viele Möglichkeiten der Programmierung und lassen sich leicht auf andere Rechner anpassen. Leider gibt es hier auch ein Problem. Je übersichtlicher sie sind, desto länger werden sie. Und dann ist plötzlich kein Platz mehr da für diese oder jene Funktion, die das Programm noch verbessern soll. Dagegen gibt es aber ein Hilfsmittel, unseren BPC. BPC bedeutet “BASIC Program-Code-Compressor“. Es handelt sich um ein Maschinenprogramm, das BASIC-Programme im Speicher des CPC auf ein Minimum an Speicherplatzbedarf komprimiert (verkürzt), was gleichzeitig zur Beschleunigung des Programmablaufs beiträgt. Die Komprimierung hängt sehr stark von der Beschaffenheit des jeweiligen Programmes ab: Kommentarloser “Spaghetti-Code“ und sogar Data-Lader werden meist noch um 10%, sparsam mit Kommentarzeilen versehene, geringfügig gegliederte Programme um 15-25%, weitergehend optisch und logisch gegliederter und kommentierter Programmtext um 30-40% verkürzt, und wer beim Programmieren gleich an BPC denkt und seinem Programm mit Leerzeichen, Kommentarzeilen und selbsterklärenden Variablennamen die Lesbarkeit von Klartext verleiht, darf mit 50% Verkürzung und mehr rechnen. Eine nach der letztgenannten Methode in 39K programmierte Adreßverwaltung läßt nach der Kompression also auch noch genug Platz frei für gut und gerne 150 Datensätze plus Diskettenpuffer. Der Zeitbedarf der Kompression selbst fallt übrigens in keinem Fall nennenswert ins Gewicht, er bleibt bei kurzen Programmen unter 10K im Bereich weniger Sekunden und wird auch bei vollem Speicher 30 Sekunden nicht übersteigen. So arbeitet das Programm Zunächst tippen Sie den BASIC-Lader ab, der auf Ihrem CPC lauffahig ist, und zwar Listing 2 für CPC 664/6128 (im Programm ist nur der 6128 genannt) oder Listing 1 für den CPC 464. Das Ladeprogramm sollten Sie in jedem Fall nach dem Abtippen vor dem ersten Start speichern, weü es sich nach dem Durchlauf selbst löscht. Nun können Sie den Lader mit RUN starten, worauf ein Maschinenprogramm von knapp 1,5K direkt unterhalb des aktuellen HIMEM angelegt wird und der Lader sich mit NEW löscht. Jetzt laden Sie das zu verkürzende BASIC-Programm in den Speicher und starten die Kompression mit dem RSX-Befehl '|BPC'. Die Kompression erfolgt in drei Abschnitten: In Pass 1 werden sämtliche Sprungziele in Zeilennummem gewandelt und die angesprungenen Zeilen im Programmtext markiert. In Pass 2 findet nun die eigentliche Verkürzung statt. Kommentare, überflüssige Semikolons und Leerzeichen werden entfernt, Variablennamen auf ein bis drei Zeichen verkürzt (es werden natürlich alle bis zu 40 Zeichen des Namens berücksichtigt), Variablenlisten hinter NEXT durch eine entsprechende Anzahl einzelner NEXT-Befehle ersetzt und Zeilen, wo immer das geht, aneinandergefügt. Weil dabei der Bildschirmspeicher als Variablentabelle verwendet wird, wird der Bildschirm zuvor gelöscht und zeigt während der Kompression einzelne Querstreifen. Keine Angst, das ist normal, Ihr CPC ist nicht abgestürzt! Alles in allem nutzt BPC die Tatsache aus, daß Einschränkungen wie z. B. das Leerzeichen nach Befehlsworten, maximal 255 Zeichen in einer Zeile und Semikolons innerhalb von PRINT-Befehlen nur vom BASIC-Editor herrühren, der Interpreter diese platz- und zeitverschwendenden Zutaten bei der Programmausführung jedoch keineswegs benötigt. In Pass 3 schließlich werden Sprünge in nicht mehr vorhandene Kommentarzeilen auf die jeweils folgende Zeile mit “echten“ Befehlen korrigiert. Abschließend wird der Bildschirm nochmals gelöscht und der BASIC-Befehl CLEAR zur Anpassung der Programmzeiger durchgeführt. Wenn alles in Ordnung war, gibt BPC die Länge des Ausgangsprogramms (Source-Code), die des komprimierten Programms (Object-Code) sowie die Anzahl der eingesparten Bytes an. Das neue, verkürzte Programm kann jetzt ganz normal gestartet oder (sinnvoller) abgespeichert werden (nicht als ASCII-Datei!), es ist aber nur eingeschränkt listbar und läßt sich per Editor nicht mehr bearbeiten. Daher muß das Ausgangsprogramm unbedingt, für den Fall einer späteren Programmänderung, aufbewahrt werden! Wenn hingegen ein Fehler aufgetreten ist, erfolgt die Anzeige der Zeilennummer der fehlerhaften Zeile und einer Fehlermeldung; jeder Fehler muß im Ausgangsprogramm korrigiert werden und erfordert damit eine erneute Kompression. Folgende Fehler sind möglich:
Und nun viel Spaß bei der fleißigen “Programmverkleinerung! “
|