★ APPLICATIONS ★ DIVERS ★ Dieses Programm ist auf dem CPC-464 und CPC-664 lauffähig ★![]() |
| RSX Druckerausgabe des Diskettenkatalogs (Computing Programming Using) | Applications Divers |
Directory-Ausgabe auf dem Drucker Beim Schneider CPC-464 und CPC-664 stehen zwei Befehle zur Ausgabe des Disketten-Directory zur Verfügung: |DIR und CAT. Doch beide funktionieren nur mit Bildschirmausgabe, nicht jedoch auf dem Drucker. Dieses Maschinenprogramm für beide Schneider-Computer erweitert das Locomotive-Basic um zwei neue RSX-Befehle, mit denen das Disketten-Inhaltsverzeichnis auf dem Drucker ausgegeben werden kann. Bei der Programmeingabe gibt es zwei Wege: Sie können entweder den Quellcode des Maschinenprogramms abtippen und assemblieren lassen oder den Basic-Loader eingeben. Falls Sie einen CPC-664 besitzen und den Quellcode eingeben wollen, beachten Sie bitte die Zeilen 280 bis 300: Dort müssen, die im Kommentarfeld angegebenen Konstanten-Referenzen für DSKOFF, GETMEM und RELMEM statt der Der Maschinencode ist zwar nicht frei relokatierbar, das Loader-Programm paßt aber alle internen absoluten Adressen an. Somit wird das Maschinenprogramm immer direkt unter HIMEM gelegt und nimmt den geringstmöglichen Speicherplatz weg. Sobald die RSX-Erweiterung geladen ist, verfügen Sie über zwei neue Befehle: |PDIR - entspricht dem normalen |DIR-Befehl |PCAT - entspricht dem normalen Disketten-CAT Achten Sie aber darauf, daß der Drucker empfangsbereit ist, denn der Computer wartet auf jeden Fall, bis der Katalog ausgegeben werden kann. Für Programmierer soll hier noch kurz die Funktionsweise des Programms erläutert werden: Wie inzwischen allgemein bekannt ist, werden die Hauptfunktionen des Betriebssystems in den CPCs über Vektoren gesteuert, die im RAM stehen. Dadurch können diese Sprungvektoren verändert werden. Beide Katalogbefehle, als |DIR und CAT verwenden, sobald eine Diskettenstation angeschlossen ist, zur Ausgabe des Disketteninhalts die Betriebssystem-Routine TXT OUTPUT, mit der jeweils ein Buchstabe auf den Bildschirm gebracht werden kann. Das Programm verändert nun diesen Zeiger auf ein eigenes Unterprogramm hin, das statt des Bildschirms den Drucker ansteuert. Nach der vollständigen Ausgabe des Katalogs werden die Vektoren wieder auf die ursprünglichen Werte zurückgesetzt. Bleibt nur noch das Problem, die Befehle CAT und !DIR im Floppy-ROM aufzurufen: Bei CAT ist dies relativ einfach, da hier wie bei TXT OUTPUT ein Sprungvektor im Hauptspeicher verwendet wird. Somit kann das Unterprogramm mit dem Z80-Befehl CALL aufgerufen werden. CAT hat aber die „unangenehme“ Eigenschaft, den Katalog nicht nur auf den Bildschirm zu schreiben, sondern auch eine Kopie davon in den Speicher. Dazu muß der Routine ein Zeiger auf einen 2K-Buffer übergeben werden. Diesen zu suchen, vor Basic zu schützen und nachher wieder freizugeben, würde eine Menge Programmieraufwand verursachen; darum verwendet das Programm Hilfsroutinen im Basic-ROM, was aber zu neuen Problemen führt: Da das Programm auch mit dem CPC-664 funktionieren soll, dort aber das komplette Basic-ROM überarbeitet wurde, müssen alle drei Einsprünge in den Basic-Interpreter in der 664-Version umgeändert werden -der Basic-Loader macht dies automatisch. Als Ergebnis dieser Suche befindet sich die RSX-Routinen-adresse im HL-Register, der ROM-Status im C-Register. Diese Registerwahl ist recht geschickt gemacht, denn genau diese Register werden auch von KLFARPCHL benötigt, das jeden beliebigen Sprung in den RAM oder eines der 252 Erweiterungs-ROMs durchfuhren kann. Auch hier wird nach erfolgter Druckerausgabe der OUTPUT-Vektor wiederhergestellt, und das Programm kehn zum Basic zurück.
|