★ APPLICATIONS ★ UTILITAIRES PROGRAMMATION EN LIGNE DE COMMANDE (RSX) ★ VARPUT ★ |
Varput | Applications Utilitaires Programmation En Ligne De Commande (rsx) |
Zweite Speicherbank genutzt Zwei Speicherbänke besitzt Ihr CPC 6128, doch leider nutzt er nur eine. »Varput« stellt Dinen die zweite zur Verfügung. Jeder Basic-Programmierer kennt das Problem: Plötzlich wird der Speicherplatz knapp, obwohl der Programmtext doch erst eine Länge von 25 KByte erreicht hat. Den Rest belegen Variablen, Arrays und selbstdefinierte Zeichen. Der Besitzer eines CPC 6128 erinnert sich dann freudig daran, daß sein Computer mit 128 KByte Arbeitsspeicher ausgerüstet ist. Will man in seiner zweiten RAM-Bank Strings speichern, geht das mit der Basic-Erweiterung »Bankmanager« mehr oder weniger komfortabel. Nach einem einfachen Verfahren, dort Variablen abzulegen oder auch nur einen einfachen PEEK- oder POKE-Befehl auszuführen, sucht man jedoch vergeblich. Hier schafft »Varput« Abhilfe: Die Befehle zur Variablenablage in der zweiten Bank heißen POKE, INT und REAL und sind als RSX-Befehle in das Betriebssystem eingebunden. Dabei gelten folgende Syntaxregeln: POKE ,adresse,wert Funktioniert wie ein normaler POKE, spricht jedoch die zweite RAM-Bank an. INT,adresse,wert Schreibt einen Integer-Wert an die Adresse. REAL ,adresse, @a Legt an der Adresse fünf Byte ab. »@a« bezeichnet die Adresse einer Real variablen, die den Wert enthält. An dieser Stelle sei nochmals darauf hingewiesen, daß sich alle Adressen auf die zweite RAM-Bank beziehen. Sie dürfen im Bereich 1 bis 66535 liegen (die Null ist aus später beschriebenen Gründen ausgeschlossen). Sie müssen beim Speichern beachten, daß sich die Adressen für POKEs mindestens um den Wert 1, fiirlnte-aerzahlen um 2 und für Reals um 5 unterscheiden. Das Auslesen der gespeicherten Zahlen ist mit RSX-Befehlen unkomfortabel. Aus diesem Grunde kommt das folgende Verfahren zur Anwendung: Im Basic des CPC gibt es drei Funktionen, die nur positive Argumente zulassen: Es handelt sich um SQR, LOG und LOGIO. Varput »verbiegt« die Vektoren dieser Funktionen und ändert die Fehlerbehandlungsroutinen, daß bei Angabe eines negativen Arguments die Zahl als Adresse interpretiert wird. SQR ist dem RSX-Befehl POKE, LOG der RSX INT und LOGIO der RSX REAL zugeordnet. Bei positiven Argumenten arbeiten die Funktionen in der gewohnten Weise (da SQR (0) mathematisch definiert ist, sind keine Lesebefehle an Adresse 0 auszuführen). Macht man sich nun zunutze, mittels DEF FN Benutzerfunktionen auch mit mehreren Argumenten zu definieren, lassen sich mit den neuen Befehlen ganze Variablenfelder in der zweiten Bank verwalten. Leider beansprucht aber das Lesen einer Variablen aus der zweiten Bank etwa die doppelte Zeit wie das Lesen einer »normalen« Variablen. Varput arbeitet mit jedem Basic-Programm zusammen, da es vollkommen relokatibel ist. Auch der Bankmanager läßt sich natürlich weiterverwenden. Wollen Sie Varput nur aus dem Basic heraus nutzen, tippen Sie zunächst den Basic-Lader (Listing 1; Listing 2 ist das Demoprogramm) ein und starten ihn. Vergessen Sie dabei nicht, das Programm vor dem Starten sicherheitshalber zu speichern. Er erzeugt eine Binärdatei mit dem Namen »VARPUT. BIN«. Damit ist die Arbeit des Basic-Laders beendet. Wollen Sie Varput in eigene Programme integrieren, benötigen Sie oberhalb von HIMEN 400 Byte Platz. Angenommen, die Anfangsadresse liegt bei A000 hex, dann laden Sie Varput mit LOAD "VARPUT. BIN ", &A000Um das Programm zu relokalisieren, geben Sie nun »CALL &A000+40« ein und binden es schließlich mit »CALL &A000+103« ein. Schließlich können Sie den durch die Relokalisie-rungstabelle und die Einbindungsroutine belegten Platz noch durch »MEMORY &A000 +150-1« wieder freigeben. Natürlich läßt sich A000hex durch jede andere Adresse ersetzen, die jedoch oberhalb 8000hex liegen muß. Eine Einbindung in Abhängigkeit von HIMEM sehen Sie im Beispielprogramm. Wenn Sie lieber in Maschinensprache programmieren, steht Ihnen mit Listing 3 der Assembler-Quellcode zur Verfügung. Dort können Sie auch sehen, wie sich die zweite Speicherbank in eigenen Programmen nutzen läßt. Dafür ist nämlich nur die Routine ab dem Label »Switch« nötig, da sie die Umschaltung der Bänke übernimmt. Andreas Bard/ja , HappyComputer
|