APPLICATIONSDIVERS ★ RSX-COMPILER (CPC AMSTRAD INTERNATIONAL) ★

RSX-Compiler (CPC Amstrad International)Applications Divers
★ 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 ★ 

Es gibt heute für viele Programmiersprachen Interpreter und CompUer. Ein Interpreter übersetzt während eines Programmablaufes Zeile für Zeile, während ein Compiler dieses nur ein einziges Mal vor der Programmausführung durchführt.

Da dieses bei letzterem nur einmal und nicht ständig geschieht, wird Arbeit eingespart und somit der Programmablauf (meistens) schneller wird und/oder der benötigte Speicherplatz verringert sich. Hier soll es jedoch nicht um einen kompletten BASIC-Compiler gehen, dies würde den Umfang des Heftes sprengen, sondern nur um einen RSX-Compiler.

Was bewirkt nun ein RSX-Compiler und wozu ist er überhaupt zu gebrauchen? Aus dem Namen geht schon zweierlei hervor: Erstens: er hat etwas mit den ziemlich einmaligen RSX-Befeh-len der Schneider CPC's zu tun und läuft folglich nur auf diesen!

Zweitens: er übersetzt etwas - worauf mit dem Wort »Compiler« hingewiesen wird.

Punkt 1 war sicherlich für Sie von Anfang an klar. Bei dem zweiten Namensteil stellt sich jedoch die Frage »Was wird denn hier eigentlich übersetzt?«

Um diese Frage zu beantworten, müssen wir erst einen kurzen Abstecher zum Programmablauf bei den RSX-Befehlen machen, damit Ihnen auch der Sinn deutlich wird.

Normale BASIC-Befehle und Sprungadressen werden bereits durch eine compilemde Eigenschaft des Locomotive Interpreters in sogenannte Token (Befehls-Kennzeichen) oder (RAM-) Adressen übersetzt. RSX-Kommandos werden allerdings nicht verändert und bleiben in ihrer ASCII-Darstellung im Speicher erhalten. Trifft der Interpreter während der Abarbeitung eines Programmes auf einen RSX-Befehl, so werden die (eventuellen) Parameter gelesen und dann an die RSX-Routine (in M-Code) übergeben. Um letzteres zu können, muß vor der Übergabe jedoch die Adresse des Befehles (im RAM oder ROM) bestimmt werden. Je nach der Länge der Befehls-Namen und der Anzahl der vorhandenen RSX-Namen kann dies jedoch eine nicht unbeträchtliche Zeit in Anspruch nehmen. Wenn z.B. 100 oder mehr Befehle verwaltet werden, wie dies bei einigen Erweiterungen (z.B. Profi RSX) der Fall ist, und der Befehl einer der ersten Eintragungen ist, müssen vor diesem ca. 100 Befehle Buchstabe für Buchstabe verglichen werden.

Anm.: Die Befehle, die zuerst initialisiert werden, werden als “letzte“ gefunden, da die Firmware des CPC die Tabelle der Eintragungen »von hinten« an vergleicht! Zeitkritische Anwendungen, wie Sprites oder Ein-/Ausgaben, können dadurch beschränkt oder gar unmöglich werden. Diesen Nachteil der RSX-Befehle hat z.B. der BASIC-Befehl »CALLadresse« nicht. Zudem ist er auch kürzer (Speicherplatz!). Wenn wir noch berücksichtigen, daß

a) RSX-Befehle (in der Regel) ihre Adresse nicht verändern und

b) eine völlige Parameter-Kompatibilität zwischen RSX- und CALL-Befehlen besteht, dann steht fest, was zu tun ist: RSX-Befehle (nachdem das Programm fertig ist) durch CALL-Befehle ersetzen.

Doch voher erfahren Sie die Adresse eines Befehles. BASIC scheidet hier aus. Die Programm-Dokumentationen in 99 % der Fälle auch. Einen Disassembler einsetzen? — Viel zu aufwendig. Und Sie möchten die Arbeit doch wohl auch nicht »von Hand« erledigen? Bleibt nur noch eines: überlassen Sie die Arbeit Ihrem CPC (wozu haben Sie auch sonst einen Computer?!)! Der nachfolgend abgedruckte RSX-Compiler ersetzt alle (oder nur einzelne Befehle) durch CALL-Befehle. Das Programm an
sich ist recht kurz und erfordert nur noch ein Diskettenlaufwerk mit dem zu bearbeitenden Programm auf Diskette. Der Nachteil eines compilerten Programmes liegt ebenso wie die Vorteile auf der Hand: ziemlich unübersichtlich. Aber da ein Programm erst nach seiner Fertigstellung compilert werden sollte und jeder vernünftige Programmierer natürlich die Ur-Version zur Vorsicht behält, kann dieses ignoriert werden. Außerdem schützen Sie es so vor dritten, die mit den CALL-Befehlen nicht viel anfangen können.

Noch kurz zum Programm

Dieses übersetzt alle RSX-Befehle, jedoch keine im ROM enthaltene Kommandos (wie die Disk-RSX-Befehle). Letztere sind laut Schneider auch keine RSX-Befehle im eigentlichen Sinne (vergl. Schneider Firmware-Handbuch (Soft 258)). Im Gegensatz zum Basic ist der Compiler jedoch in der Lage, alle RSX-Befehle zu verarbeiten, sofern diese keine Leerzeichen , Doppelpunkte, REM-Kennzeichen oder ein chr$(13) enthalten. Ansonsten können alle Zeichen enthalten sein. Die Übersetzung an sich kann entweder komplett oder »Befehl für Befehl« erfolgen. Mit letzterem können Sie zwischen den Befehlen selektieren und nur die von Ihnen gewünschten übersetzen lassen. Damit Sie nachher noch einen Überblick haben, welcher CALL-Befehl ursprünglich welchem RSX-Kommando entspochen hat, läßt sich auf Ihrem Drucker (sofern vorhanden) ein Protokoll anfertigen, auf dem diese einander gegenübergestellt werden.

Programme werden grundsätzlich von der Diskette aus übersetzt, eine RAM-Compilerung ist nicht möglich. Dadurch ergibt sich der Vorteil, daß die Länge der Programme praktisch unbegrenzt ist und nur von der Disketten-Kapazität abhängt.

Die Programme müssen allerdings als ASCII-Files vorliegen (erreichbar durch »SAVE“NAME“,A«). Nach Abschluß liegt das neue Programm ebenfalls als ASCII-File vor, es läßt sich jedoch problemlos laden. Allerdings kann es in sehr seltenen Fällen Vorkommen, daß hierbei die Fehlermeldung »Line too long« auftaucht. Dies ist immer dann der Fall, wenn die ursprüngliche Zeile eine Länge von fast 255 Zeichen hatte. Da jedoch CALL-Befehle zusammen mit der Adresse im ASCII-Format etwas länger als die meisten RSX-Kommandos sind, kann die neue Zeile länger als eben die »magischen« 255 Zeichen werden. Dieses gilt jedoch nur für das ASCII-Format. Im BASIC- Format sind alle CALL-Befehle kürzer als die RSX-Befehle. Ein übersetztes Programm benötigt also immer weniger Speicherplatz als die erste Version. Falls obiger Fehler auftauchen sollte, so teilen Sie die Zeile einfach in 2 Zeilen auf. Welche Zeile betroffen ist, können Sie mit »LIST« ermitteln. Im übrigen lassen sich keine Initalisierungs-Namen von ROM's (z.B. IBASIC) bearbeiten. Trifft der Compiler auf ein solches Kommando, so springt er sofort ohne Vorwarnung in das ROM — und kehrt nie mehr zurück. Dies ist durch das Betriebssystem vorgegeben und läßt sich nicht ändern. Ansonsten dürften jedoch keine Fehler auftreten.

Erweiterungen müssen natürlich vor dem Übersetzen in den Speicher geladen werden — eigenlich klar, oder? Und nach dem Übersetzen ebenfalls immer an die gleiche Stelle, sonst stürzt der CPC mit nahezu 100% Sicherheit irgendwann ab.

Und was jetzt? Natürlich RSX-Erweiterung laden (falls nicht vorhanden, sofort zu Profi RSX weiterblättern), Programm schreiben oder laden und Compilern. Viel Spaß und Erfolg!

K. Kremer, CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1987
★ AUTHOR: Klaus Kremer
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-Compiler    (CPC  Amstrad  International)    GERMAN    LISTINGDATE: 2022-08-02
DL: 138
TYPE: PDF
SiZE: 1273Ko
NOTE: 4 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Rsx - Background Printing (Popular Computing Weekly)
» Applications » Rsx - Programme zum Erstellen von Befehlen für Den CPC 464 (CPC Amstrad International)
» Applications » Digital Background Clock / RSX Clock (Computer Team)
» Applications » RsxSort
» Applications » Rsx - Reflection (Amstrad Computer User)
» Applications » RSX Check / Checksummer (CPC Amstrad International)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» 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.7-desktop/c
Page créée en 361 millisecondes et consultée 499 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.