Sicherlich könnte man viele Elemente des Z-Systems als "Grundbaustein" bezeichnen, doch nichts ist so wichtig wie der Environment Descriptor. Auf die in diesem Datenbereich gespeicherten Informationen greifen zahlreiche Routinen und Systembestandteile zu. Daher soll er näher betrachtet werden.
Zunächst einmal bedeutet Environment Descriptor nichts anderes als "Beschreibung der Umgebung". Hier sind also Informationen über die Systemumgebung in einer genau definierten Reihenfolge gespeichert. Der Environment Descriptor ist exakt 128 Bytes (= 1 Record) groß und beinhaltet neben den Angaben zu den Systemelementen (Adresse und Größe von RCP, FCP, IOP usw.) z. B. auch die Taktfrequenz der CPU und die Anzahl der Bildschirmzeilen bzw. -spalten.
Weil die Angaben von NZ-COM zum Aufbau eines Systems benötigt werden, muß zuvor ein gültiger Descriptor erstellt werden. Dies erledigt man mittels MKZCM. Für den Einsteiger bedeutet es jedoch, daß die Eigenschaften des Systems bereits festgelegt werden müssen, wenn keine oder nur geringe Vorkenntnisse über die Funktionsweise der Systemelemente vorhanden sind. Glücklicherweise kann aber jederzeit ein neuer Descriptor (für ein System mit anderen Elementen) erstellt werden, auf dessen Grundlage NZ-COM ein neues/anderes System lädt.
Der Environment Descriptor wird aber nicht nur während des Ladevorgangs benötigt, sondern auch für die Z-System-Programme und die Systemelemente selbst. Deshalb ist er selbst Bestandteil der Betriebssystemumgebung und steht permanent zur Verfügung. Programme können unter Zuhilfenahme von Routinen aus der Z3LIB den Descriptor ausfindig machen und anschließend auf die enthaltenen Informationen zugreifen.
Eine Z-System-Umgebung ist zwar kompatibel zum originalen CP/M, jedoch sollten Programme im Bedarfsfall die Adressen von BIOS, BDOS und CCP dem Environment Descriptor entnehmen und nicht auf berechnete Werte zurückgreifen.
Von MKZCM werden zwei Descriptor-Dateien erstellt, die denselben Inhalt jedoch in unterschiedlichen Formaten haben. Die ENV-Datei entspricht exakt dem Descriptor, wie er später resident im Speicher steht. Leichter editierbar ist die ZCM-Datei. sie enthält die Marken mit den dazugehörigen Werten im Klartext. Mit Hilfe einer Textverarbeitung oder eines einfachen Editors können Änderungen schnell vorgenommen werden.
So empfiehlt es sich z. B. den Laufwerksvektor nachträglich anzupassen. Grundsätzlich wird nämlich von einem voll ausgebauten CP/M System mit 16 Laufwerken (A bis P) ausgegangen. Der Laufwerksvektor ist ein 16-Bit-Wort, in dem jedes Bit stellvertretend für ein Laufwerk steht (siehe NZ-COM Handbuch). Es ist also auch möglich, "Lücken zwischen den Laufwerken" zu berücksichtigen. Gute Z-System-Programme verwenden den Laufwerksvektor bei Diskettenzugriffen. Dadurch kann so manches Problem beim versuchten Zugriff auf ein nicht vorhandenes Laufwerk erspart bleiben.
Selbstverständlich können auch die anderen Werte in der ZCM-Datei den eigenen Wünschen angepaßt werden (z. B. Anzahl der Bildschirmzeilen). Grundsätzlich lädt NZ-COM (entsprechend der im Handbuch beschriebenen Hierarchie) die ZCM-Datei zuerst, doch um Verwirrung (seitens des Anwenders!) zu vermeiden, sollte eine gleichnamige ENV-Datei gelöscht werden.