» Seitenende

Kapitel 5

Wie man mehr aus Z3PLUS herausholt

In den vorangegangenen Kapiteln haben Sie die grundlegenden Funktionen des Z-Systems und der besonderen Implementation in Z3PLUS kennengelernt. Was Sie gesehen haben, ist jedoch nur die Spitze eines Eisbergs! Z3PLUS bietet eine Unzahl an Möglichkeiten und wir werden versuchen, sie Ihnen in diesem Kapitel vorzustellen. Tatsächlich gibt es sicher Anwendungen für Z3PLUS, die nicht einmal uns eingefallen wären, daher können wir hier nicht Anspruch auf erschöpfende Behandlung erheben.

 

5.1 Alternative Befehle zum Aufruf von Z3PLUS

Bisher haben Sie die einfachste Methode kennengelernt, Z3PLUS zu starten. In diesem Abschnitt werden wir einige andere Wege diskutieren, das Z-System zu laden und einige andere Versionen des Systems, die fast ebenso leicht geladen werden können, wie die bereits gesehene.

5.1.1 Alternative Lademethoden

Sie haben die Standardmethode, Z3PLUS zu starten, kennengelernt, die in der Eingabe des einfachen Befehls besteht

Z3PLUS<cr>

Z3PLUS kann auch auf folgende Weise geladen werden:

Eine Z3PLUS-Kommandozeile kann in einer SUBMIT-Datei enthalten sein, aber es muß die letzte Zeile der SUB-Datei sein. Andernfalls wird bei dem Versuch, Z3PLUS zu laden, die Fehlermeldung "First remove: GET" ausgegeben. 1 Das Kommando Z3PLUS in einer SUB-Datei kann nützlich sein für den automatischen Aufruf von Z3PLUS als Teil Ihrer CP/M-Plus Kaltstart-Prozedur.

1Das kommt von der CP/M-Plus Resident System Extension (RSX). GET bleibt geladen, bis der letzte Befehl einer SUBMIT-Abarbeitung gelesen wurde. Z3PLUS kann nicht geladen werden, während die RSXe GET, PUT, oder DosDisk aktiv sind. Andere RSXe werden automatisch entfernt.

Z3PLUS kann auch als Teil einer CP/M-Plus Mehrfach-Kommandozeile gestartet werden. Zum Beispiel:

Z3PLUS!MYSTART<cr>

startet Z3PLUS und dann das Kommando MYSTART. In diesem Fall wird das Default Start-Kommando (normalerweise STARTZ3P) nicht ausgeführt. Statt dessen werden die in der CP/M-Plus Mehrfach-Kommandozeile verbliebenen Befehle in das Z-System-Format konvertiert und in den Z-System Puffer für die Mehrfach-Kommandozeile kopiert, von wo aus sie ausgeführt werden. Diese Technik kann sehr nützlich sein, wenn Sie mit einer Sonderanpassung starten wollen. Beachten Sie, daß der Kommandozeilen-Separator von CP/M-Plus, das Ausrufezeichen ("!"), nur in diesem speziellen Fall verwendet werden sollte, das heißt, wenn die Kommandozeile vom CP/M-Plus Kommando-Prozessor bearbeitet wird, bevor Z3PLUS aktiv wird. Beachten Sie auch, daß diese Lade-Technik nicht mit der SUBMIT Lade-Technik kombinierbar ist.

5.1.2 Alternative Default Systeme

Alle Diskussionen in diesem Handbuch haben bisher das "Standard" Default System behandelt. Es gibt ja zwei andere Default Systeme, die fast genauso einfach geladen werden können. Eine dieser Versionen ist eine größere Version von Z3PLUS, die mit dem Befehl

Z3PLUS LARGE<cr>

geladen wird. Dieses System benutzt mehr Speicher des Betriebssystems und bietet entsprechend mehr Möglichkeiten. Es ist fast das gleiche, wie das Standard-System und unterscheidet sich nur durch einen 25\% größeren RCP-Puffer (vier zusätzliche Records oder 512 weitere Bytes), so daß mehr residente Kommandos unterstützt werden können. Anwender mit Disketten-Laufwerken geringer Kapazität oder langsamen Laufwerken werden dieses System vorziehen. Im Abschnitt 6.3.2 finden Sie detailliertere Information darüber, wie dieses Systems definiert ist und welche Moduln geladen werden.

Ein zweites alternatives Default-System ist eine kleinere Version von Z3PLUS, die mit dem Befehl

Z3PLUS SMALL<cr>

geladen wird. Dieses System verwendet weniger TPA und hat entsprechend weniger Features. In der Tat ist es so spartanisch, wie ein Z-System nur werden kann. Es besitzt keine Puffer für einen RCP, FCP, oder ein NDR. Es gibt dem Anwender fast 3K mehr TPA für Anwendungsprogramme und bietet immer noch viele wertvolle Z-System-Features: Shells, Error-Handler, Erweiterten Kommando-Prozessor, Aliase, einen dynamischen Suchpfad, TCAP-Unterstützung. Siehe auch Abschnitt 6.3.2 wegen detaillierterer Information darüber, wie dieses System definiert ist und welche Moduln geladen werden.

 

5.2 Fliegender Wechsel der Systeme

Wir haben die Möglichkeiten diskutiert zwischen verschiedenen Z3PLUS Konfigurations-Optionen, als ob man nur auswählen und für die Dauer der Sitzung verwenden könnte. Offensichtlich könnte man jederzeit ins CP/M gehen durch Eingabe von

Z3PLUS OFF<cr>

und dann wieder ganz von vorne anfangen mit einer neuen Version von Z3PLUS. Das ist jedoch nicht notwendig. Neue Z3PLUS-Konfigurationen können geladen werden, während Z3PLUS schon läuft.

Wenn Z3PLUS vom CP/M-Plus Eingabe-Prompt geladen wird (ein "Kalt-"start), nehmen alle diese Werte, die in der Z3P Deskriptordatei beschrieben sind, Gestalt an. 2 Auf der anderen Seite, wenn Z3PLUS aus einem bereits laufenden Z3PLUS-System ("Warm-"Start) gestartet wird, werden alle System-Informationen mit Ausnahme der Addressen und Größen der System-Moduln bewahrt. Shells und Error-Handler laufen im neuen System weiter; der Suchpfad, Werte in den User-Registern, System-Dateinamen, etc. ändern sich nicht. Die Inhalte eines Puffers der Mehrfach-Kommandozeile werden in das neue System übernommen. Das bedeutet, die neue Konfiguration kann als Teil einer komplexen Befehls-Sequenz geladen werden, sogar eine mit aktiven Fluß-Kontroll-Operationen. 3 Das System kommt dabei nicht aus dem Takt!

2Diese Dateien werden im nächsten Abschnitt beschrieben.
3Vorausgesetzt natürlich, daß keine Fluß-Kommandos bearbeitet werden müssen, während ein System ohne FCP aktiv ist.

Warum würden Sie Systeme so auf diese fliegende Art wechseln wollen? Der übliche Grund ist der Speicherbedarf. Gäbe es Speicher unbegrenzt, würden Sie die größte, leistungsfähigste Version von Z3PLUS, die Sie kriegen könnten, laden und dort für alle Zeiten lassen. Im wirklichen Leben, besonders auf einem CP/M-System mit seinem Address-Raum von nur 64K, müssen Zugeständnisse gemacht werden.

Die meisten Leute möchten wahrscheinlich die meiste Zeit eine relativ leistungsfähige Version des Z-Systems (so wie das Standard Default System) benützen. Es wird jedoch Gelegenheiten geben, wenn ein Anwendungs-Programm aufgerufen wird, das mehr Speicher benötigt, als diese Konfiguration erlaubt. Dann wird man ein kleineres System laden wollen.

Nehmen wir zum Beispiel an, wir hätten ein Anwendungsprogramm namens "BIGPROG", das viel mehr Speicher benötigt (vielleicht ist es eine Datenbank). Wir könnten dann den Befehl eingeben

Z3PLUS SMALL;BIGPROG;Z3PLUS<cr>

Diese Befehlszeile installiert erst das "Small" Z3PLUS-System mit seiner größeren TPA. Dann führt es BIGPROG aus. Schließlich, nachdem BIGPROG beendet wurde, wird das Standard Z3PLUS-System wieder geladen. Außer dem Zeitverlust beim Systemwechsel, gibt es eigentlich keinen Nachteil, wenn man vorübergehend Z-System Features aufgibt, die von dem zu startenden Anwendungsprogramm nicht benötigt werden. 4 Im obigen Beispiel ist die Vollversion des Z-Systems wieder zurück, bevor der Prompt den Anwender nach seiner nächsten Eingabe fragt. Für den Anwender war er jedenfalls immer da!

4Wenige Anwendungsprogramme machen von Z-System-Features Gebrauch. WordStar Release 4 ist die Ausnahme unter den Anwendungen aus Großen Software-Häusern; es kann benannte Verzeichnisse verwenden. In diesem Fall, möchten Sie vielleicht ein Z3PLUS System generieren, das nur einen NDR-Puffer besitzt.

Der Vorgang des Systemwechsels kann in verschiedenen Stufen automatisiert werden indem man den Vorteil der Z-System-Möglichkeiten nutzt. Nehmen wir zum Beispiel an, BIGPROG.COM sei im Directory BIGDIR: und wir würden es in BGPRG.COM umbenennen. Dann, wenn wir die folgenden Script-Definition in unser ALIAS.CMD eingeben

BIGPROG   z3plus small;bigdir:bgprg $*;z3plus

können wir unser Kommando wie gewohnt eingeben:

BIGPROG FILENAME ...<cr>

Der Erweiterte Kommando-Prozessor ARUNZ übernimmt die automatische System-Umschaltung für uns. Noch geschliffenere Scripts können sogar prüfen, ob die TPA schon groß genug für ein Programm ist und nur dann einen Systemwechsel einleiten, wenn es notwendig ist. Es gibt keine Grenze, was Genialität mit Hilfe der Flexibilität erreichen kann, die Z3PLUS bietet!

Es gibt zwei kleine Punkte, die wir hier erwähnen sollten. Der erste ist, sich zu merken, daß Z3PLUS bei dem Versuch, das System zu wechseln, nicht einfach aufgibt, wenn es auf einen Fehler trifft. Es gibt eine Fehlermeldung auf dem Bildschirm aus, der die Natur des Problems angibt und dann ruft es den Error-Handler auf. Auf diese Weise, können Sie alle Fehler korrigieren, bevor die Befehlssequenz weitermachen und möglicherweise eine Katastrophe (oder zumindest große Unannehmlichkeiten) verursachen kann.

Als zweiter Punkt ist zu bemerken, daß, wenn ein neues Z3PLUS-System geladen werden soll, der Puffer der neuen Mehrfach-Befehlszeile großgenug sein muß, die übriggebliebenen Kommandos aus dem Puffer der original Mehrfach-Befehlszeile zu übernehmen. Wenn die schwebenden Kommandos nicht reinpassen, wird das neue System nicht geladen; statt dessen wird der Error-Handler aufgerufen. Sie können sich dann entscheiden, wie Sie die Situation behandeln wollen (z. B. einige der schwebenden Kommandos oder die ganze Operation abzubrechen).

 

5.3 Anpassen Ihres Z3PLUS Systems

Es gibt viele Möglichkeiten, Ihr Z3PLUS-System anzupassen und es auf Ihre Bedürfnisse und Ihren Geschmack einzustellen. Wir wollen zwei Arten von Änderungen in Betracht ziehen, jene, welche Sie mehr oder weniger vorübergehend anlegen und jene, die Sie eher permanent machen, etwa durch Eingabe einer komplett neuen Konfiguration.

5.3.1 Vorübergehende Äderungen

Nachdem Sie sich mit den Grundlagen des Z3PLUS-Systems etwas vertrauter gemacht haben, möchten Sie zweifellos eine Reihe der System-Charakteristika ändern. Einige dieser Änderungen werden vorübergehender Natur sein. Sie möchten zum Beispiel den Command Search Path (Suchpfad) ändern, um ein Directory mit solchen Dateien zu erfassen, die Sie nicht ständig benützen -- und die daher normalerweise nicht im Suchpfad liegen -- aber die Sie für die momentane Aufgabe brauchen. Dazu benützen Sie das PATH-Utility. Haben Sie ihre Arbeit damit beendet, benützen Sie wiederum dieses Utility, um den Pfad auf seine ursprüngliche Einstellung zurückzusetzen.

Andere Parameter, die oft temporär geändert werden, sind die Charakteristika von Drucker und CRT (Cathode Ray Tube = Kathodenstrahlröhre = Bildschirm). Viele Z-System-Programme werden sich automatisch auf diese "Environment" Werte einstellen. Zum Beispiel, wenn Sie mit einem Zeilenabstand von 6 Zeilen pro Zoll drucken, könnten Sie die Printerdaten auf 66 Zeilen pro Seite und 58 Textzeilen einstellen. Wenn Sie mit 8 Zeilen pro Zoll drucken, benützen Sie statt dessen Werte von 88 und 78. Man verwendet dafür das CPSET-Utility.

Manchmal möchten Sie derartige Veränderungen über einen gewissen Zeitraum beibehalten, aber nicht fest einbinden. In diesem Fall, können Sie die benötigte Befehlszeile Ihrem Startup Alias beifügen. Die Veränderungen treten dann automatisch in Kraft, wenn Sie das Z3PLUS-System erstmals starten (und nach jedem Kaltstart).

5.3.2 Sonderanpassungen

Obwohl wir, wie wir eben beschrieben haben, leicht vorübergehende Veränderungen in einigen der System-Charakteristika durchführen können, wird wahrscheinlich der Wunsch nach einer dauerhaften Veränderung auftauchen. Es ist auch wahrscheinlich, daß Sie irgendwann System-Charakteristika verändern wollen, die nicht mit den Utility-Programmen verändert werden können, wie zum Beispiel die Größe der Systempuffer (RCP, FCP, und NDR). Für sehr viele Anwender werden die Default System-Konfigurationen nicht völlig Ihren Vorstellungen entsprechen. Zum Beispiel wenn Sie eine Harddisk besitzen, wird der Standard NDR Puffer mit seiner Kapazität von 21 Namen manchmal nicht reichen und Sie werden die Kapazität auf 28, 42 oder sogar mehr Namens-Einträge erhöhen wollen. Wir schätzen uns glücklich, Ihnen mitteilen zu können, daß alle diese Dinge machbar sind, und noch dazu ziemlich einfach.

Die Charakteristika des Z3PLUS-Systems sind definiert durch "Descriptor"-Files mit dem Dateityp Z3P. Diese Files sind gewöhnliche Textfiles, die mit jedem x-beliebigen Text-Editor bearbeitet werden können (im NON-DOKUMENT Modus = ASCII). Die Z3P-Files sind aufgebaut wie Assembler Quelldateien und enthalten Definitionen von Werten für die konfigurierbaren Z-System-Environment-Variablen, zusammen mit optionalen Kommentaren.

Eine Definitionszeile hat das Format:

VARIABLENNAME [ = | EQU ] WERT [;Kommentar]

Die eingeklammerten Angaben sind optional. Das Symbol kommt als erstes in der Zeile. Dann kann da entweder ein Gleichheitszeichen stehen (für die, die an Hochsprachen gewöhnt sind), oder ein EQU (für die, die Assembler gewohnt sind), oder weder noch (für die, die keine von beiden Kenntnissen besitzen). Als nächstes kommt der Wert, der dem Symbol zugewiesen werden soll. Schließlich kann dann ein Strichpunkt stehen, gefolgt von einem Kommentar. Leerzeilen und weitere Kommentarzeilen können ebenfalls nach Belieben beigefügt werden.

Sie sollten sich die Datei DEFAULT.Z3P in der Z3PLUS.LBR ansehen, um eine komplette Liste der reservierten Variablennamen zu sehen, die konfiguriert werden können. Durch Editieren einer Kopie(!) dieser Datei (oder einer der anderen Z3P-Files), können Sie das System anpassen, um andere Puffergrößen, andere Laufwerkstabellen, Bildschirm- und Druckergrößen etc. einzustellen. Die Variablennamen können in beliebiger Reihenfolge stehen und Kommentare im DEFAULT.Z3P-File können die Bedeutung dieser Variablen erläutern.

Numerische Werte können in dezimaler, hexadezimaler, oder binärer Form eingegeben werden. Dezimale Werte werden als Default angenommen. Für Hexadezimal hängen Sie "H" an oder ein "B" für Binär. Einige Variablen erlauben String-Werte; diese Werte müssen als zusammenhängender String eingegeben werden, also ohne Leerzeichen.

Es gibt ein paar Werte, die fast alle Anwender anpassen sollten. Zum Beispiel gibt es da eine Variable namens DRVEC, die dem System mitteilt, welche Laufwerke (A, B, etc.) auf Ihrem Computer existieren. Diese Variable hat ein Bit für jedes der möglichen 16 Laufwerke, die von CP/M unterstützt werden. Die Default-Konfigurationen haben alle 16 Laufwerke aktiv, aber nur sehr wenige Anwender werden tatsächlich so viele (an einem Rechner!) haben. Durch "Abschalten" der Bits für nicht-existente Laufwerke werden der Kommando-Prozessor und einige Z-System-Programme gnädigerweise Zugriffsversuche auf diese nicht-existenten Laufwerke unterbinden.

Der Z3PLUS Kommando-Suchpfad ist das Beispiel einer Stringvariablen. Sein Wert ist eine Sequenz von Buchstaben (wohlgemerkt, ohne Leerzeichen!), die ein bis fünf Drive/User-Angaben repräsentieren. Ein "$"-Zeichen anstelle der Laufwerksangabe steht für das momentan eingeloggte Laufwerk; in der Position der Usernummer repräsentiert den momentan eingeloggten Userbereich.

Zum Beispiel,

PATH = $$B0A15

kennzeichnet den Suchpfad:

Die letzte Drive/User-Angabe im Suchpfad (in diesem Beispiel A15:) wird Root Directory genannt. 5 Viele Z-System-Abläufe beziehen sich automatisch auf dieses Directory. Zum Beispiel sucht der Z3PLUS Kommando-Prozessor im Root Directory nach dem Erweiterten Kommando Prozessor. ARUNZ und ZFILER suchen dort ihre CMD-Files. 6

5Verwechseln Sie dieses Root Directory nicht mit einem Directory, das zufällig ROOT heißt. Das letztere ist nur ein Name und beinhaltet keinerlei Bedeutung für das Directory.
6Die bei Z3PLUS mitgelieferten Versionen von ARUNZ und ZFILER sind konfiguriert, ihre CMD-Files im Root Directory zu suchen. Diese Programme können auf Wunsch konfiguriert werden, ein anderes Directory zu durchsuchen.

Eine andere Stringvariable, die Sie wahrscheinlich verändern möchten, ist der Name des Startup Kommandos. Alle drei Default Systeme benutzen den Namen STARTZ3P. Sie möchten eventuell unterschiedliche Startup-Operationen für verschiedene Sonderanpassungen ausführen. Sollte das der Fall sein, geben Sie den Startup Kommandos unterschiedliche Namen und erzeugen Sie individuelle Aliase.

Es gibt zwei Arten, Sonderanpassungen durchzuführen. Die eine Art besteht darin, komplett neue Definitionen in Z3P-Files mit komplett neuen Namen zu erzeugen. Die andere besteht darin, die Default-Definitionen zu modifizieren.

Erzeugen neuer Definitionen

Vollständig neue Definitionen bieten die größte Flexibilität: alle Variablen-Definitionen können geändert werden und, welche System-Moduln Sie auch immer möchten, können in das Spezialsystem geladen werden. Die Default Systeme arbeiten mit vorbestimmten System-Moduln, wie wir in wenigen Augenblicken sehen werden.

Der Nachteil totaler Spezialanpassungen ist, daß der Befehl zu dessen Ladung jedes zu ladende Modul explizit angeben muß. Wurde ein Modul nicht angegeben, so wird dafür kein passendes Default-Modul substituiert. Vergessen Sie zum Beispiel den Namen eines CPR-Moduls, entsteht eine Fehlersituation, da das System ohne Kommando-Prozessor nicht laufen kann.

Das folgende Beispiel sollte helfen, klarzumachen, was benötigt wird. Nehmen wir an, Sie haben ein Spezialsystem durch SUPER.Z3P definiert, das den Default Kommando-Prozessor (DEFCP3.ZRL), aber zwei spezielle Moduln namens SUPERFCP.ZRL und SUPERRCP.ZRL als FCP- respektive RCP-Moduln benutzt. Von der Tatsache ausgehend, daß alle Files sich in der Z3PLUS.LBR befinden, lautet die Ladeanweisung wie folgt:

Z3PLUS Z3PLUS.LBR SUPER.Z3P DEFCP3.ZRL
SUPERFCP.ZRL SUPERRCP.ZRL DEFAULT.NDR DEFAULT.Z3T<cr>

Das ist eine Menge Holz zu tippen! Es geht viel einfacher, wenn man diese Befehlszeile als Script in das ALIAS.CMD-File einträgt, vielleicht unter dem Namen SUPER. Dann ist alles, was Sie tippen müssen, wenn ein Z3PLUS System aktiv ist, (vorausgesetzt ARUNZ ist der Erweiterte Kommando-Prozessor)

SUPER<cr>

und das System wird gewechselt.

Bei einem "Kalt"-Start aus CP/M können Sie folgenden Trick anwenden. Rufen Sie das System als zweiten Befehl auf durch eine Multiple Befehlszeile des CP/M-Plus wie folgt:

Z3PLUS!SUPER<cr>

Das wird das Standard Default Z3PLUS System laden, aber sofort das "SUPER"-System durch Chaining nachladen. Sie müssen dadurch zwar zwei Systeme laden, aber Z3PLUS ist so schnell, daß Sie es kaum bemerken werden. Es geht schneller, als die lange Befehlszeile zu tippen und ist vermutlich schneller als ein SUBMIT-Stapeljob (man könnte die lange Befehlszeile in eine Datei namens SUPER.SUB packen).

Modifikation der Default-Definitionen

Ein anderer Weg, Spezial-Konfigurationen durchzuführen, ist es, die existierenden Default Z3P-Files zu verändern. Dieser Weg hat den Vorteil, daß die Default Systeme durch Eingabe einer simplen Befehlszeile geladen werden können. Z3PLUS erkennt automatisch, welche Moduln für diese Konfigurationen geladen werden müssen, so daß wir uns darum nicht zu kümmern brauchen.

Das impliziert einige Notwendigkeiten zu Veränderungen der Default-Definitionen, die leicht durchgeführt werden können. Es spricht alles dafür, den Drive Vector (DRVEC), maximale Laufwerke und Userbereiche, den Ur-Pfad, den Namen des Startup-Kommandos und Bildschirm-/Drucker-Charakteristika an Ihr System anzupassen.

Die Größe der Moduln in der Default-Konfiguration kann geändert werden, aber nur mit Vorsicht und in bestimmten Grenzen. Das DEFAULT System lädt zum Beispiel immer ein RCP-Modul namens DEFRCP.ZRL. Wenn Sie DEFAULT.Z3P modifizieren, um einen kleineren RCP anzugeben, wird es ein Problem geben. Wenn Z3PLUS versucht, DEFRCP.ZRL zu laden, stellt es fest, daß das Modul nicht in den reservierten Puffer paßt. Es ist intelligent genug, die Operation an diesem Punkt mit einer Fehlermeldung abzubrechen.

Um dieses Problem zu umgehen, müßten Sie das Default RCP-Modul durch ein neues, kleineres ersetzen (aber immer noch mit dem Namen DEFRCP.ZRL). Bei entsprechendem Geschick können alle solchen Probleme auf diese Art beseitigt werden (wir haben es so gemacht), aber wir glauben nicht, daß es den Aufwand wert ist und empfehlen diese Methode daher nicht. Es gibt einfachere Lösungen.

» Seitenanfang