APPLICATIONSPROGRAMMATION ★ Je kürzer, desto besser ★

BPC (BASIC Program-Code-Compressor)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 ★ 

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:

  1. Table space full: Die Variablentabelle übersteigt 16K. Das ist theoretisch möglich, wird aber kaum jemals eintreten.
  2. Variable overflow: Es dürfen höchstens 4161 verschiedene Variablennamen denselben Anfangsbuchstaben haben. Auch dieser Fehler ist nur rein rechnerisch vorstellbar.
  3. Invalid Variable: Beim CPC dürfen Variablennamen nicht länger sein als 40 Zeichen.
  4. Invalid line number: Ein Sprung geht auf eine nicht vorhandene Zeile oder auf eine Kommentarzeile, die hinter der letzten Zeile mit “echten“ Befehlen liegt (der Sprung ist nach der Kompression also hinter das Programmende gerichtet).
  5. Object overflow: Der Object Code wird länger als der Source Code (am Programmbeginn fehlt ein schließendes Anführungszeichen, oder eine einstellige Variable, die am Programmbeginn häufig auftritt, kommt erst nach einer mehrstelligen Variable mit gleichem Anfangsbuchstaben erstmalig vor). Es ist außerdem zu beachten, daß ein Programm durch die Kompression auf dem CPC 664/6128 seine Lauffahigkeit auf dem CPC 464 einbüßen kann.

Und nun viel Spaß bei der fleißigen “Programmverkleinerung! “

(Marek Musial/jb) , CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1988
★ CONFIG: AMSDOS + 64K
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL-SONDERHEFT
★ AUTHOR: Marek MUSIAL
 



★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» BPC    (CPC  Amstrad  International-Sonderheft  7)    GERMANDATE: 2025-11-14
DL: 26
TYPE: ZIP
SiZE: 6Ko
NOTE: Supplied by hERMOL ; 40 tracks
.DSK: √

» BPC    (CPC  Amstrad  International-Sonderheft  7)    GERMAN    LISTINGDATE: 2025-11-14
DL: 24
TYPE: PDF
SiZE: 1662Ko
NOTE: Supplied by archive.org ; 2 pages/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.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 414 millisecondes et consultée 86 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.