Kapitel 3
Wir empfehlen Ihnen, die folgenden Schritte wirklich auszuführen, um mit ein paar der normalerweise benutzten Features des Z3PLUS Z-Systems vertraut zu werden.
3.1 Wie man einen Alias erzeugt
Ein Alias ist ein einzelnes Wort (ein Befehl), stellvertretend für einen längeren oder zusammengesetzten Befehl. Um einen Alias zu erzeugen, rufen Sie das Programm SALIAS (Screen ALIAS) auf. Wir werden jetzt einen Startup-Alias namens STARTZ3P erzeugen, der automatisch Ihre Terminal-Datei in das Z3PLUS System einbindet, wenn Sie das nächste Mal Z3PLUS eintippen. (Sie haben diesen Namen STARTZ3P schon einmal gelesen. Als Sie das erste Mal Z3PLUS starteten, war er auf dem Bildschirm zu sehen, gefolgt von einem Fragezeichen.)
Geben Sie ein
SALIAS STARTZ3P<cr>
um das SALIAS-Programm zu starten und den STARTZ3P-Alias vorzubereiten. Sie werden sofort bemerken, daß dieses Utility, wie viele Z-System-Tools, sehr effektiven Gebrauch macht von den Darstellungsmöglichkeiten Ihres Terminals (und deshalb war es wichtig, am Anfang eine Terminal-Capabilities-Datei auszuwählen).
Das SALIAS-Programm ist ein Alias-Editor, eine Art Textverarbeitung für Alias-Scripts. Man gibt den Text des Alias-Scripts ein und benutzt Funktionstasten, um Ihre Eingaben zu editieren. Die meisten Tasten, einschließlich der für die Cursorbewegung, entsprechen denen von WordStar. Gibt man Control-J ein, erhält man eine Liste der zur Verfügung stehenden Befehle.
Für diesen Alias ist die einzige einzugebende Befehlszeile
Z3PLUS myterm.Z3T /Q<cr>
Wir haben hier die "/Q" Quiet Option benutzt, um die extensive Information zu unterdrücken, die Z3PLUS ausgeben kann, wenn es etwas lädt. Jetzt tippen Sie Control-K und danach Control-X zum Verlassen und Speichern der neuen Datei.
Versuchen Sie jetzt, diesen Alias auszuführen durch Eingabe von
STARTZ3P<cr>
Auf dem Bildschirm sieht man, daß er tatsächlich das Z3PLUS Programm ausführt und (wiederum) die Z3T-Datei lädt. Bis hierher erspart uns das lediglich etwas Tipparbeit. Wir haben jedoch genau diesen Namen gewählt für den Alias, weil Z3PLUS diesen Alias automatisch ausführt, wenn es das nächste Mal gestartet wird.
Probieren wir es soweit aus. Geben Sie ein
Z3PLUS OFF<cr>
Jawohl, das Z3PLUS-System ist weg und der Standard-CP/M Plus Kommando-Prozessor ist wieder aktiv. Geben Sie jetzt ein
Z3PLUS<cr>
um das Z3PLUS-System zu starten. Dieses Mal wird es automatisch Ihre Z3T-Terminal-Datei laden, indem es den neuen STARTZ3P-Alias verwendet.
Der Startup-Alias, den Sie eben erzeugt haben, ist ganz simpel, aber nichtsdestoweniger nützlich. Ein Alias kann jedoch viel mehr. Er kann eine ganze Sequenz von Befehlen sein, mit symbolischen Parametern für Dateinamen, Directories, und Befehlszeilen-Parameter. Eines der Dinge, die der Startup-Alias beispielsweise tun kann, ist, sofort einen Befehls-Suchpfad einzurichten, der sich vom Standard-Suchpfad unterscheidet, für den Z3PLUS.COM konfiguriert ist.
Im Abschnitt 3.2.2 finden Sie ein etwas ausgearbeiteteres Beispiel. Für mehr Information schlagen Sie in den Referenz-Werken der Bibliographie nach. Und vergessen Sie nicht SALIAS. Es wird Ihnen viele Aufgaben Ihrer Computerarbeit abnehmen können.
3.2 Welche Befehle gibt es?
Geben Sie jetzt ein
H<cr>
Das wird Ihnen alle eingebauten Befehle des aktiven Z-Systems anzeigen. Der Bildschirm zeigt eine Ausgabe ähnlich der in Tafel~\ref{Listen der residenten Kommandos.
Residente Befehle, die durch den H-Befehl angezeigt werden.
FCP IF AND OR ELSE FI IFQ XIF ZIF CPR GET GO JUMP RCP CLS ECHO ERA H NOTE P POKE PORT R REG SP TYPE WHL WHLQ
Die angezeigten Befehle sind die, die zu dem Zeitpunkt im Speicher waren, als der H-Befehl gegeben wurde. Sie werden variieren, je nachdem welcher FCP (Flow Command Package), RCP (Resident Command Package), und CPR (Command Processor) geladen sind. Wie man sieht, ist der H-Befehl (Abkürzung für "HELP") Bestandteil des RCP Pakets.
Später werden Sie sehen, daß Sie Versionen von Z3PLUS erzeugen können, die weniger Speicher brauchen, indem Sie das RCP weglassen. Auch gibt es einige RCP-Pakete, die den H-Befehl nicht unterstützen. In diesen Fällen kann SHOW, beschrieben im Abschnitt 3.3, benutzt werden, um diese Information (und noch viel mehr) auszugeben.
3.2.1 RCP Kommandos
Sehen wir uns zuerst einmal die Befehle des RCP (Resident Command Package) an. Eben haben wir schon den H-Befehl benutzt. Versuchen Sie einen anderen, indem Sie eingeben
ECHO Das ist ein Test.<cr>
Bevor wir weitermachen, sollten wir speziell darauf hinweisen, daß ein Strichpunkt (";") zum Trennen der Befehle benutzt wird, um mehrere Befehle in einer Zeile zu trennen. Versuchen Sie
ECHO Test 1;ECHO Test 2;ECHO Test 3<cr>
ECHO ist ein einfacher, aber wichtiger Befehl, der oft verwendet wird, um dem Anwender mitzuteilen, was gerade passiert, wenn eine Sequenz von einem Script ausgeführt wird. Wir werden davon ein Beispiel sehen im Abschnitt 3.2.2. Weil Befehls-Zeilen immer in Großbuchstaben umgewandelt werden, ist Ihre Nachricht so erschienen.
Der ECHO Befehl wird die Buchstabenfolge "%>" als "in Kleinbuchstaben umwandeln" interpretieren und die Sequenz "%<" als "in Großbuchstaben wandeln".
Versuchen Sie jetzt das SP Kommando, das Ihnen Auskunft über den freien Speicherplatz auf einer Diskette erteilt:
SP<cr> SP B:<cr>
Der P-Befehl "peekt" in den Speicher, der Inhalt wird gelesen. Beispiel
P 100<cr>
Wenn Sie von Maschinensprache keine Ahnung haben, ist das nicht sehr aufschlußreich, aber wenn es der Fall sein sollte, ist das ein nützlicher Befehl. Versuchen Sie jetzt den POKE-Befehl:
POKE 100 "Das ist ein Poke-Test<cr>
Vergewissern Sie sich, daß Sie die Anführungszeichen am Anfang eingegeben haben; damit weiß POKE, daß Sie Text eingeben und nicht etwa Hex-Code. Sehen wir uns das Ergebnis an:
P 100<cr>
Es ist klar, daß man POKEs für spezielle Zwecke reserviert, wenn man weiß, daß man nichts anderes zerstört (siehe Abschnitt 3.2.3). Peeken kann man jedoch nach Belieben.
ERA sollte Ihnen vertraut sein; damit löscht man Dateien. TYPE zeigt den Inhalt einer Text-Datei auf dem Bildschirm an. CLS löscht den Bildschirm (praktisch in Scripts). NOTE, ein Tue-nichts-Befehl, wird in Scripts für Kommentare verwendet. PORT ist eine Kombination von Peek/Poke für die Input/Output Ports eines Computers; es liest die ankommenden Datenbytes oder gibt Sie an eine bezeichnete I/O-Schnittstelle aus. Wie beim Poke Befehl für den Speicher, sollten Sie auch hier größte Vorsicht walten lassen.
Der R-Befehl führt einen Reset des Disk-Systems durch; er wirkt wie Control-C, kann aber in eine Befehlssequenz eingebettet werden. REG zeigt oder modifiziert Software-Register des Z-Systems, die untereinander Werte austauschen. Der WHL Befehl findet beim Sicherheits-Byte des Z-Systems, dem sogenannten "Wheel Byte" Verwendung. Sie werden feststellen, daß viele Befehle, besonders riskante, wie zum Beispiel ERA, nicht funktionieren, wenn das Wheel Byte "off" ist. WHLQ (WHeeL Query) (nicht mehr in Verwendung, siehe RELEASE.NOT). WHL, wenn danach das korrekte Paßwort angegeben wird, schaltet das Wheel Byte ein; andernfalls wird es abgeschaltet. Das vorgegebene (Default-) Paßwort ist SYSTEM. 3
3Wenn Sie es ändern wollen, kann die Datei DEFRCP.ZRL in Z3PLUS.LBR gepatcht werden. Suchen Sie mit Ihrem Lieblings-Patchutility (zum Beispiel ZPATCH) nach dem String "SYSTEM" und ändern Sie Ihn nach Belieben. Wenn Sie Hilfe benötigen, wenden Sie sich an Ihren Händler oder einen Z-Helper.
3.2.2 FCP Kommandos
Das Z-System kann durch den Gebrauch der Befehle im Flow Command Package (FCP) ganze Sets von Kommandos auf intelligente, automatisierte Weise ausführen. Flow Control benötigt etwas Zeit zum Verständnis, ist aber so mächtig und nützlich, daß wir glauben, daß es den Aufwand zu Lernen wert ist. In einer Nutshell ist es der Zweck der Fluß Steuerung, Ihren Kommandos verschiedene Ebenen der IF-ELSE-ENDIF-Abprüfung (wie in Hochsprachen) zu ermöglichen, um zu kontrollieren, welcher von einer Reihe von alternativen Befehlen ausgeführt wird.
Das Hauptkonzept, das Sie begreifen müssen, ist das von "Flow States". Wenn das Z-System erstmals läuft, ist kein Ablauf-Status aktiv (wir nennen ihn den "Null" Status). Unter der Kontrolle der Befehle im FCP-Modul können bis zu 8 Ebenen von Flußzuständen aktiv werden. Jede Ebene kann entweder den Wert TRUE oder FALSE annehmen (der Null-Status wirkt wie ein "TRUE" Status). Ist der gegenwärtige Ablaufstatus TRUE, laufen die Befehle normal ab; ist er FALSE, ignoriert der Kommando-Prozessor alle Befehle, außer denen im FCP. Wie das funktioniert, werden Sie gleich anhand von praktischen Beispielen sehen.
Der IF-Befehl wird mit einer Art Prüfausdruck verwendet, der entweder "TRUE" oder "FALSE" bewertet wird. Für jeden Wert wird eine neue Ebene im Ablauf aktiviert. War der vorangegangene Status FALSE, wird der neue Status immer FALSE, unbeschadet des Ergebnisses der durchlaufenen Bedingung. Auf der anderen Seite, wenn der vorangegangene Status TRUE war, nimmt der neue Status den Wert des letzten Ergebnisses an.
Hier sind einige Beispiele von Bedingungs-Prüfungen, die vom IF-Befehl ausgeführt werden können:
IF ERRORprüft, ob ein vorangegangenes Programm das Programm-Errorflag gesetzt hat IF REG 3 > 1prüft den Wert von Anwender-Registern IF INPUT RUN WS?gibt den Prompt aus "RUN WS?" und wartet auf die Reaktion des Anwenders IF ~EXIST DIR:FN.FTprüft auf (Nicht-)Existenz einer Datei
Geben Sie die Befehlszeile
IF //<cr>
ein, um eine geraffte Übersicht der benutzbaren Prüfbedingungen zu erhalten. Wie Sie sehen können, gibt es ganz schön viele davon. Später können Sie noch damit experimentieren. Nur die ersten zwei Buchstaben werden wirklich benutzt, um die Prüfbedingung zu untersuchen (daher ist EX dasselbe wie EXIST), und eine vorangestellte Tilde ("~") kehrt die Wirkung um. Die meisten Prüfungen werden durch das Programm IF.COM vorgenommen, das vom FCP automatisch geladen und ausgeführt wird.
Der IFQ (IF Query)-Befehl ist im FCP enthalten, um Ihnen den Ablauf zu verdeutlichen und Ihnen beim Erlernen des Gebrauchs der Ablaufsteuerung zu helfen. Wir werden es jetzt bei einigen Beispielen anwenden.
Probieren Sie erst den IFQ-Befehl aus. Vorausgesetzt, Sie haben nicht schon auf eigene Faust experimentiert (in diesem Fall geben Sie bitte ein: "ZIF<cr>", um zum Null-Status zurückzukehren, sollten Sie die Meldung "IF None" sehen, die Ihnen mitteilt, daß kein aktiver Ablaufstatus vorliegt (d.h., "Null"-Status). Geben Sie jetzt ein :
IF T<cr>
Diese Prüfung ist, wie der IFQ-Befehl, hauptsächlich als Lernhilfe gedacht. Wie Sie vermutlich erraten haben, gibt das einen Wert TRUE zurück. Rufen Sie jetzt noch einmal IFQ auf. Die Anzeige lautet "IF T", damit wird angezeigt, daß ein Ablauf-Status aktiv ist und den Wert TRUE besitzt. Versuchen Sie einen Befehl wie "ECHO TESTING<cr>" und sehen Sie, daß er normal abläuft.
Geben Sie jetzt die Befehlszeile ein:
IF F;IFQ<cr>
Die Anzeige lautet jetzt "IF FT". Das zeigt uns, daß zwei Ebenen von
Ablauf-Zuständen aktiv sind, wobei der gegenwärtige FALSE und der darunterliegende
TRUE ist. Versuchen Sie jetzt den Befehl "ECHO TESTING
Der FI-Befehl, der ein rückwärts gelesenes IF darstellt, beendet den augenblicklichen Ablauf-Status und versetzt das System in den früheren Zustand (oder in den Null-Status). Geben Sie die Befehlszeile
FI;IFQ<cr>
mehrmals hintereinander ein und achten Sie darauf, wie sich die Meldungen ändern. Zurück im Null-Status, geben Sie den Befehl ein
IF T;IF F;IFQ<cr>
um uns auf den alten Stand zu bringen (mit dem gegenwärtigen Status FALSE und einem darunterliegeneden Ablaufstatus, der TRUE ist).
Jetzt werden wir etwas über den ELSE Befehl erfahren, der den gegenwärtigen Status umkehrt, vorausgesetzt, der darunterliegende Status ist TRUE. Geben Sie ein
ELSE;IFQ<cr>
und beachten Sie, daß die Anzeige sich von "IF FT" auf "IF TT" ändert. Jetzt funktionieren die Befehle wieder. Geben Sie es ein paar Mal mehr ein, und sehen Sie, wie es den Ablauf-Status "toggelt", d.h. umschaltet.
Ab hier wissen Sie genug über Flußkontrolle (Flow Control) und die FCP Befehle, um selbst zu experimentieren. Wenn Sie fertig sind, geben Sie "ZIF<cr>" ein, um den Ablauf-Status zurückzusetzen.
Bevor wir das Thema verlassen, möchten wir Ihnen ein letztes Beispiel vorstellen, das Ihnen eine Idee geben soll, wie die Ablaufkontrolle in Verbindung mit Aliases sehr mächtige Befehle ergeben kann.
Verwenden Sie SALIAS, um einen Alias namens TEST zu erzeugen, indem Sie den Befehl eingeben
SALIAS TEST<cr>
Wenn der Eingabe-Bildschirm verschwindet, geben Sie die folgende Befehls-Sequenz ein:
IF EX $1 ECHO FILE $1 EXISTS IF EQ $1 *.COM ECHO COM %>FILE: %<YES ELSE ECHO COM %>FILE: %<NO FI ELSE ECHO FILE $1 NOT FOUND FI
Beachten Sie, daß wir die spezielle Buchstabenreihenfolge benutzen, die ECHO als Signale zum Umschalten zwischen Groß- und Kleinschreibung erkannt werden. (siehe Abschnitt 3.2.1)
Wenn Sie fertig sind, drücken Sie Control-K Control-I. Beachten Sie, wie SALIAS komfortabel die Befehle einrückt, um die Verschachtelung der Ablaufsteuerung zu zeigen. Sichern Sie jetzt den Alias durch Eingabe von Control-K Control-X.
Der Ausdruck "$1" im Alias steht für den ersten Parameter, der dem Befehl TEST folgt, wenn der Alias angewendet wird. Versuchen Sie die folgenden Befehle und beachten Sie, was in jedem Fall passiert:
TEST Z3PLUS.COM<cr> TEST Z3PLUS.LBR<cr> TEST NOFILE.JNK<cr>
3.2.3 CPR Commands
Die Standard-Version des Kommando-Prozessors hat nur drei Befehle. Der Großteil des Codes im CPR wird eher benötigt, um raffinierte Operationen mit Ihren Befehlen auszuführen, als um eigene Befehle auszuführen. Die meisten der (im Speicher) residenten Befehle werden vom RCP zur Verfügung gestellt, der Ihnen den Vorteil bietet, daß Sie den Befehlsvorrat zu ändern, indem Sie unterschiedliche RCP-Module laden, abhängig von Ihren augenblicklichen Bedürfnissen.
Die Befehle im CPR machen Gebrauch von Code, der schon für andere Zwecke existiert. GET und GO/JUMP sind die zwei grundlegenden Hälften des normalen Laden und Ausführen Prozesses, der immer dann abläuft, wenn Sie einen Befehl auswählen, der sich auf eine COM-Datei bezieht. Alle drei Befehle können gefährlich sein; bei inkorrekter Anwendung kann ein System-Absturz erfolgen, der Neubooten erfordert. Bei richtiger Verwendung können sie sehr mächtig und nützlich sein.
Der GET-Befehl führt nur den Ladevorgang aus. Er bietet mehr Flexibilität als der normale Befehlslader. Erstens geben Sie die Speicher-Adresse an, an die die Datei geladen werden soll, zweitens kann jede Art von Datei (nicht nur COM-Dateien) geladen werden. Nichts kann verhindern, daß Sie ein Programm an eine falsche Adresse laden (sogar an eine für das Betriebssystem reservierte Adresse!) oder daß Sie eine Datei laden, die gar kein Programm ist.
Versuchen Sie die Befehlszeile
GET 200 Z3PLUS.LBR;P 200<cr>
Die Library wird in den Speicher geladen an die ADRESSE 200H, und der PEEK Befehl wird Ihnen den Anfang der Datei zeigen. Wenn Sie sich je gefragt haben sollten, wie eine Library-Datei in Wirklichkeit aussieht, können Sie das jetzt sehen. GET und P können als Partner ein nützliches Lernwerkzeug sein.
So, wie GET nur das Laden einer Datei übernimmt, führen GO und JUMP lediglich aus, was schon im Speicher ist. GO führt automatisch aus, was immer sich an der Adresse 100H befindet. JUMP ist ähnlich, aber läßt es zu, daß man die Ausführungsadresse angibt. (GO entspricht JUMP 100). Für normale COM-Programme, erfolgt durch die Kombination von GET und GO eine normale Ausführung. Daher bewirkt die Befehls-Sequenz
GET 100 SDZ.COM;GO *.LBR<cr>
das Gleiche -- naja, fast das Gleiche -- wie
SDZ *.LBR<cr>
Warum also, würde dann jemand diese separaten Befehle benutzen? Wir wollen dazu zwei Beispiele betrachten. Zuerst, kann der GO-Befehl benutzt werden, um ein Programm wiederholt auszuführen, ohne Zeit mit dem Laden der Datei von Diskette verschwenden zu müssen. Versuchen Sie
SDZ *.COM<cr>
und dann
GO *.LBR<cr>
Vorsicht: einige Programme sind nicht zur Wieder-Ausführung gedacht und könnten Ärger machen bei dieser Anwendungsart. Die meisten Z-System-Tools können wiederholt ausgeführt werden, und falls nicht, brechen diese of wenigstens gnädig ab. Andere Programme könnten weniger nachsichtig sein, daher sollten Sie sehr vorsichtig experimentieren.
Ein zweites Beispiel des Gebrauchs von GET und GO ist die Technik, die man "GET, POKE und GO" nennt, oder einfach POKE & GO. Der Grundgedanke hierbei ist, die Datei zu laden, indem man den GET-Befehl verwendet, sie durch den POKE-Befehl zu modifizieren und dann mit GO (oder JUMP) aufzurufen. Zum Beispiel, wenn Ihre Textverarbeitung (nennen wir sie mal WP.COM) die Werte für den rechten Rand an der Addresse 83BH hat und normalerweise den Wert 76 benutzt, könnten Sie einen Alias-Befehl namens WP60 erzeugen, wobei der folgende Alias-Script einen Wert von 60 einstellt:
GET 100 WP.COM;POKE 83B 3C;GO $*<cr>
Beachten Sie, daß der gepokte Wert Wert ist in hexadezimaler Form (3CH=60) angegeben wird und daß der Ausdruck "$*" in einem Alias-Script durch die Benutzereingabe (Parameter) in der Befehlszeile hinter dem Namen des Befehls ersetzt wird. Dadurch wird der Befehl
WP60 NEWFILE.DOC<cr>
WP mit der Datei NEWFILE.DOC ausführen, aber mit einem rechten Rand von 60. Wenn man das außerhalb des Z-Systems machen möchte, bräuchte man dafür eine Zweitversion des ganzen Textverabeitungs-Programms. Ein SALIAS-Alias ist nur 1K lang; ein ARUNZ-Alias für diese Funktion nimmt nur etwa 40 Bytes des Diskettenplatzes ein.
3.2.4 Transiente Kommandos
"Transientes Kommando" ist der Name, den Digital Research (Herausgeber des CP/M), solchen Befehlen gegeben hat, die nicht im Speicher verbleiben, sondern von Diskette geladen werden. Unter CP/M Plus gehören dazu Dateien des Typs COM wie unter CP/M 2.2 und des Typs SUB oder PRL, (je nach Ausführung des CP/M Plus). SUB und PRL Dateien laufen unter Z3PLUS so ziemlich wie unter CP/M Plus ab.
Zusätzlich zu den normalen COM-Dateien, die CP/M unterstützt, gibt es einige spezielle Typen von COM-Dateien, die das Z-System unterstützt. Diese Dateien sind als type-1, type-3 4 und type-4 angelegt.
4Ja, es gibt auch Type-2 Dateien, aber die sind heutzutage selten in Gebrauch.
Type-1 Dateien ähneln den Standard CP/M COM-Dateien, außer, daß diese einen speziellen Header an ihrem Anfang besitzen, in den der Kommando-Prozessor die Addresse dessen einträgt, das man Z-System Environment Descriptor nennt. Das ist ein Speicherbereich, das eine vollständige Beschreibung der Z-System-Konfiguration enthält. Mit dieser Information kann ein Programm von den speziellen Z-System-Gegebenheiten Gebrauch machen.
Type-3 Programme sind ähnlich wie type-1 Programme, außer, daß sie, im Gegensatz zu Standard CP/M-Programmen, nicht zwingend an die Standard-Addresse 100H geladen werden. Ihre Ausführungsadresse ist in dem speziellen Header enthalten, und der Kommando-Prozessor lädt sie automatisch an die dort angegebene Addresse. Zum Beispiel das Programm ARUNZ.COM, das im Z3PLUS Paket enthalten ist, ist ein type-3 Programm, das bei 8000H abläuft..
Type-4 Programme sind spezielle Z-System-Programme, die von PRL-(sogenannten Page ReLocatable)-Dateien. Sie enthalten Informationen die es ihnen gestatten, an jeder Adresse zu laufen. Der Prozessor berechnet automatisch die höchste Addresse im Speicher, an der ein solches Programm mit der bestehenden Konfiguration laufen kann, lädt es und ruft es an dieser Adresse auf.
Die type-3 und type-4 Programme wurden erfunden für transiente Programme, die als residente Teile des Systems fungieren sollen (z. B. als Erweiterter Kommando-Prozessor, als Shell, oder Fehlerbehandlung (Error Handler)), oder als transiente Versionen gemeinsamer residenter Befehle (z.B. ERA.COM oder REN.COM). Da das Z-System selbst sehr oft automatisch diese Befehle aufruft, können Sie nicht immer voraussehen, wann einer davon aktiv sein wird und es ist nützlich, wenn Sie nicht die unteren Speicherbereiche stören, wo die Programme laufen.
Spezielle Z-System-Programme laufen gewöhnlich nicht korrekt unter CP/M. Da sie entstanden sind, um auf Computern mit dauerhaft installiertem Z-System zu laufen, enthalten die meisten keinen Code, um den Versuch zu vereiteln, sie unter gewöhnlichem CP/M zu starten. Die meisten mit Z3PLUS gelieferten, werden jedoch bei einem solchen Versuch gnädig aussteigen. Einige werden eine Meldung ausgeben, andere werden nur einen Warmstart erzwingen.
3.3 Mehr über die System-Konfiguration
Wir erwähnten oben, daß Sie unter bestimmten Umständen den H Befehl benutzen, um zu sehen, welche residenten Befehle zur Verfügung stehen. Das Z-System-Utility SHOW kann immer benutzt werden, um dies anzuzeigen und noch reichlich mehr Information über Ihr System. Die beste Art und Weise, etwas über die Konfiguration Ihres Z3PLUS-Systems zu erfahren, ist, SHOW aufzurufen und mit seinem Menü zu experimentieren. Einige der Dinge, die man mit SHOW tun kann sind:
3.4 Inkompatible Programme
Die meisten Programme, die für das Z-System geschrieben wurden, werden unter Z3PLUS perfekt laufen. Es gibt jedoch ein paar, die inkompatibel zu Z3PLUS sind und nicht aufgerufen werden sollten. Die bekannten sind:
CLEANDIR Directory Saubermann Utility DU3 ZCPR Disk Utility MOVE Datei anderem Userbereich zuordnen MAKE oder MAKEUSER Datei anderem Userbereich zuordnen ZEX vor V 5.0 Residenter Submit Prozessor, ältere Versionen laufen nicht
Jedes dieser Programme, außer ZEX, greifen direkt auf CP/M-2.2 BIOS Routinen zu, wenn es um Datei- oder Disketten-Operationen geht, etwas, das unter CP/M-Plus abweichende Routinen verlangt. Solche Programme werden ziemlich wahrscheinlich einen "Absturz" herbeiführen und ein Neubooten erfordern. Daher sollten Sie diese vermeiden. ZEX versucht in den älteren Versionen vor Version 5.0 I/O Umleitungen auf eine Art zu machen, die nicht zu CP/M-Plus kompatibel war.
Gelegentlich treffen Sie auf ein Programm, das bizarre Disk-Kapazitäten meldet. Das ist wenig informativ, aber harmlos und wird durch einen weiteren Unterschied zwischen CP/M-2.2 und CP/M-Plus bedingt. Nach und nach sollten die meisten Z-System Tools verbessert werden, so daß der freie Speicherplatz unter beiden Betriebssystemen korrekt angezeigt wird.