Das neue Betriebssystem für den KC85 (3)
von Mario Leubner
Wie bereits gewohnt an dieser Stelle wieder die aktuellen Neuerungen vom KC-Betriebssystem mit ZSDOS / ZDDOS. Es gibt schon wieder Updates einiger Programme und Quelltexte. So langsam bin ich an dem Stand angekommen, wie ich mir das System immer vorgestellt habe. Das soll jedoch nicht heißen, daß es keine Änderungen mehr geben wird.
Hinweise, deren Realisierung möglich sind, nehme ich weiterhin dankend entgegen. Doch nun erst mal zu den "News" von heute:
Erstellung des eigenen ZBIOS
(ZBIOS.MAC, OPTION.INC, DEFDPB.INC)
Durch Weiterentwicklung der Quelltexte ist es jetzt möglich, die Anzahl der verwendenden logischen Laufwerke im Bereich von 5 bis 16 zu wählen. Dazu muß nur in der Datei OPTION.INC der Wert von NDRIVES entsprechend geändert werden. Eingestellt habe ich standardmäßig 8 Laufwerke.
Wer viel TPA wünscht und auf 3 Laufwerke verzichten will, kann dort eine 5 eintragen und hat demnach nur noch die Laufwerke A: bis E: zur Verfügung. Will jemand viele unterschiedliche Laufwerke installieren und benötigt mehr als die üblichen 8 Laufwerke, dann kann die Anzahl in NDRIVES auf bis zu 16 erhöht werden. Es stehen dann die Laufwerke A: bis P: zur Verfügung.
Jedes logische Diskettenlaufwerk benötigt 128 Byte Speicher im BIOS. Damit kann man sich ausrechnen, welche Veränderungen es im Adreßbereich gibt. Die Anfangsadresse des BIOS kann sich nur in Schritten von 100H ändern. Wird beim Assemblieren des BIOS ein freier Speicher von 128 Byte oder mehr angezeigt, kann man ein weiteres Diskettenlaufwerk definieren, ohne daß sich der TPA verkleinert.
Für jedes Laufwerk muß festgelegt werden, welches Diskettenformat erzeugt werden soll, Werte für nicht benutzte Laufwerke können beliebig sein. Und noch ein Hinweis: Nur die installierten Laufwerke können mit MODF.COM verändert werden. Eine nachträgliche Erweiterung ist damit nicht möglich!
Bei der Partitionierung der Festplatte lassen sich jetzt bis zu 3 Partitionen angeben. Dies erfolgt in der Variable HARD. Wird eine 0 eingetragen, erzeugt man wie bisher ein reines Diskettensystem. Werte im Bereich von 1 bis 3 geben an, wieviele Partitionen zu erzeugen sind, wobei die erste Partition immer C:, die zweite D: und die dritte E: ist. Die restlichen Laufwerke bis NDRIVES werden als Diskettenlaufwerke erzeugt.
Zur Partitionierung wird von den Gesamtzylindern der Platte jedem Laufwerk ein Teil zugeordnet. Laufwerk C: ist mit 1024, die anderen beiden mit 2048 Verzeichniseinträgen vorbereitet. Die Blockgröße ist stets 4 KByte. Das sollte man wissen, um die Gesamtkapazität der Platte sinnvoll aufteilen zu können.
Wird nur eine Partition benutzt, erhält diese die gesamten Zylinder. Dies ist jedoch nur bei sehr kleinen Festplatten sinnvoll, da dann für die gesamte Kapazität nur 1024 Einträge zur Verfügung stehen. Bei zwei Partitionen sind es 1024+2048 und die Gesamtkapazität der Platte sollte in drei Teile geteilt werden, wobei C: einen und D: zwei Teile zugeteilt bekommt. Das könnte bei 560 Zylindern z.B. so aussehen:
560 / 3 = 186 Rest 2 => C: erhält 188 Zylinder => D: erhält 372 Zylinder
Soll mit 3 Partitionen gearbeitet werden, ist die Gesamtkapazität entsprechend in 5 Teile zu teilen, dabei ergibt sich:
560 / 5 = 112 => C: erhält 112 Zylinder => D: erhält 224 Zylinder => E: erhält 224 Zylinder
Dies soll nur ein Anhaltspunkt für eine optimale Partitionierung sein, eingeben kann man alle denkbaren Werte. Als weiterer Richtwert kann auch meine Erfahrung genutzt werden, daß mit 1024 Verzeichniseinträgen ca. 10 MByte Daten auf der Festplatte verwaltet werden können, das entspricht einer durchschnittlichen Dateigröße von etwa 10 KByte.
Es besteht auch die Möglichkeit bei großen Festplatten nur einen Teil der Gesamtkapazität zu verwenden: Ist die Summe der benutzten Spuren kleiner als die physisch vorhandenen, dann bleibt der Rest ungenutzt.
FORMAT.COM, Version 3.2
(FORMAT32.COM)
Es gibt zwei Neuerungen gegenüber der Version 3.1. Zum einen ist es die Option /Q: damit kann eine "Schnellformatierung" durchgeführt werden. Dies ist eine Alternative zum Befehl ERA *.* und geht wesentlich schneller als das einzelne Löschen aller Dateien. Die Schnellformatierung formatiert dabei von Spur 0 bis zum Ende des Verzeichnisses, bei 780K-Disketten also 3 Spuren.
Man sollte aber beachten, daß man eine arbeitsfähige Diskette nur erhält, wenn diese bereits einmal komplett im selben Format formatiert wurde. FORMAT.COM überprüft dies nicht!
Die zweite Neuheit ist das physische Löschen von "Nicht-Diskettenlaufwerken". Ein echtes Formatieren der Festplatte ist zur Zeit auf dem KC noch nicht möglich. Wird FORMAT V3.2 ohne zusätzliche Parameter von Diskette gestartet, dann erscheint das übliche Menü. Jetzt gibt man das gewünschte Laufwerk an. Erkennt FORMAT daß es kein Diskettenlaufwerk ist, dann erscheint eine Warnung die 2mal mit 'J' zu bestätigen ist um den Löschvorgang einzuleiten.
Gelöscht wird dabei das gesamte Laufwerk Sektor für Sektor durch Schreiben von E5H in jedes Byte. Eventuell vorhandene Systemspuren bleiben erhalten. Damit kann auch das RAM-Floppy physisch gelöscht werden. Sind jedoch EPROM-Modul(e) eingebunden, gehen beim Löschen deren Directory-Einträge mit verloren! Spätestens beim Beschreiben der Spuren des EPROM-Moduls treten dann natürlich Probleme auf.
HDPARK
(HDPARK11.MAC, HDPARK11.COM)
Das Parken der Festplatte erfolgt in der letzten Spur durch Lesen aller Sektoren dieser Spur. Version 1.1 wurde angepaßt um eine unterschiedliche Anzahl an Partitionen zu unterstützen.
Systemgenerierung
(SYSGEN.COM)
Wie bereits angekündigt, wurde SYSGEN wesentlich verbessert und mit einem Menü ähnlich MSYSG.COM versehen, jedoch stark erweitert. Es ist damit wieder möglich, das System in die Systemspuren einer 780K-Diskette zu schreiben. So entfällt der Umweg über MicroDOS und der Bootvorgang muß nur noch einmal erfolgen. Der Aufruf
SYSGEN //
bringt weiterhin eine Hilfeseite zur Erstellung des Systems. Zunächst ist die SPR-Datei mit dem System (CCP, BDOS, BIOS) zu erzeugen. Dazu sind zwei Kommandozeilen nötig:
A>ASM ZBIOS=ZBIOS A>LINK131 SYSTEM.SYS=CCP,ZSDOS.ZRL,ZBIOS [D1600,OS,NR]
Beim Linken werden die drei Systembestandteile zu einer SPR-Datei zusammengefügt, für das richtige Format sorgt die Option OS. Als Dateityp habe ich *.SYS gewählt, da *.SPR eine allgemeingültige Bezeichnung ist und nicht unbedingt eine SPR-Datei mit dem Systemabzug darstellt. Der Name der SYS-Datei kann frei gewählt werden, alle Dateien *.SYS werden später im SYSGEN-Menü zur Auswahl angeboten.
Sind alle erforderlichen Dateien, also SYSGEN.COM, die SYS-Datei(en) und die zu installierenden Treiber auf dem aktuellen Laufwerk vorhanden, dann kann SYSGEN ohne Parameter aufgerufen werden und es erscheint das Menü:
Systemgenerierung für CP/M 2.2 auf dem KC85 - V 0.4 Copyright by ML-Soft 21.10.96 ----------------------------------------------------- Adresse CCP: LST: Adresse BDOS: KOP: Adresse BIOS: ZAS: ----------------------------------------------------- Funktionsauswahl: 1 - Betriebssystem *.SYS 2 - Druckertreiber *.LST 3 - Koppeltreiber *.KOP 4 - Terminaltreiber *.ZAS 5 - RAM-Floppy konfigurieren 6 - Start-SUBMIT 7 - Beschreiben der Systemdiskette 8 - Erzeugen einer COM-Datei 9 - Aktivieren neues System im RAM 10 - installiertes SYSGEN.COM abspeichern 0 - SYSGEN beenden Zur Auswahl Ziffer eingeben:_
Jetzt muß nur noch die gewünschte Konfiguration zusammengestellt werden. Mit Menüpunkt 1 wird zunächst die erzeugte SYS-Datei eingelesen, danach sind die Systemadressen im Menü zu sehen und die Menüpunkte 6 bis 10 können aufgerufen werden. Es können mehrere SYS-Dateien auf dem aktuellen Laufwerk vorhanden sein, wobei dann die gewünschte ausgewählt werden kann.
Die Punkte 2 und 3 sind für die bekannten Treiber vorgesehen, analog dazu der Punkt 4 für den Terminaltreiber im ZAS-Dateiformat. Die Einbindung der Treiber ist nicht erforderlich wenn mit den Treibern des D004-EPROM gearbeitet werden soll. Dann geht der Ladevorgang etwas schneller.
Der ZAS-Treiber wird beim Booten als letztes übertragen, damit ist es möglich auch ZAS-Treiber einzubinden die keine KC-spezifischen Funktionen mehr enthalten (wie z.B. der Televideo-Treiber).
Unter Menüpunkt 5 kann die Konfiguration des RAM-Floppys verändert werden. Dabei erscheint eine Liste aller verwendeten RAM/EPROM-Module. Außer dem RAM8 werden die folgenden Module im RAM-Floppy verwendet:
Strukturbyte | Blockanzahl | Steuerbyte | Offset | |
---|---|---|---|---|
1. Modul: | F4 = M022 | 1 | 83H | 00H |
2. Modul: | F5 = M024 | 2 | 43H | 40H |
3. Modul: | F6 = M011 | 4 | 03H | 40H |
4. Modul: | 78 = M036 | 8 | 83H | 04H |
5. Modul: | 79 = M032 | 16 | 83H | 04H |
6. Modul: | 7A = M034 | 32 | 83H | 04H |
7. Modul: | 7B = M035 | 64 | 83H | 04H |
8. Modul: | 73 = M048 | 16 | 83H | 04H |
9. Modul: | 00 = M??? | 0 | 00H | 00H |
10. Modul: | 00 = M??? | 0 | 00H | 00H |
11. reserviertes Modul: | 00 = M??? |
Alle gängigen RAM-Module von 16K bis 1M und das 256K-EPROM-Modul sind bereits definiert. Für Standardanwendungen ist keine Veränderung erforderlich und alle RAM-Module werden zum RAM-Floppy zusammengefaßt. Zehn Module enthält die Tabelle, zwei davon sind noch frei und können durch Eigenbau-RAM-Module ergänzt werden.
Einzugeben ist für jedes Modul das Strukturbyte an dem es erkannt wird. Zur Verwaltung ist die Anzahl der 16K-Blöcke dezimal einzugeben. Das erste Steuerbyte mit dem das Modul auf Adresse 8000H online geschaltet wird und der Offset (Abstand zum nächsten Steuerbyte) sind schließlich für den Aufbau der Modulsteuertabelle im Grundgerät erforderlich und hexadezimal einzugeben.
Es können alle 10 Moduleinträge verändert werden. Um z.B. 16K-RAM-Module aus dem RAM-Floppy auszuschließen, ist einfach in Zeile 1 die Moduldefinition zu löschen indem für das Strukturbyte 0 eingegeben wird. Am Ende der Tabelle ist noch die Eingabe eines reservierten Moduls möglich. Damit kann bei einer Bestückung mit mehreren Modulen vom gleichen Modultyp nur eines ausgeschlossen werden.
Wenn also z.B. 4 Stück M011 vorhanden sind und ein M011 für spezielle Aufgaben aus dem RAM-Floppy ausgeschlossen werden soll, ist in Zeile 11 das Strukturbyte F6 einzugeben während die Definition des M011 in Zeile 3 unverändert bleibt.
Neu ist auch der Menüpunkt 6, mit dem ein Startkommando definiert werden kann. Zur Erklärung: CP/M 2.2 kann nicht wie von MicroDOS gewohnt mit einer INITIAL.SUB gestartet werden, da es keine interne SUBMIT-Unterstützung besitzt. Hier kann jedoch ein Mehrfachkommando definiert werden, welches einmalig nach dem Bootvorgang abgearbeitet wird.
Bei der Erstinstallation sollte jedoch noch nichts eingegeben werden, damit erst einmal die korrekte Funktion des Bootvorgangs getestet werden kann. Später kann dieses Startkommando dann z.B. ein SUBMIT-Programm starten, welches weitere Kommandos automatisch ausführt oder das komplette Z-System lädt. Um z.B. eine Datei INITIAL.SUB abzuarbeiten könnte eingegeben werden:
B:SUBMIT B:INITIAL.SUB
Die Dateien SUBMIT.COM und INITIAL.SUB müssen sich dabei auf der Startdiskette im Laufwerk B: befinden. Sollen mehrere Kommandos im Start-SUBMIT abgearbeitet werden, dann sind diese jeweils durch ein Semikolon voneinander zu trennen. Beim Bootvorgang wird diese Mehrfachkommandozeile in die entsprechenden Einzelkommandos zerlegt und als A0:$$$.SUB abgespeichert.
Der CCP arbeitet zunächst diese Kommandodatei ab, bevor er zur Tastatureingabe übergeht. Die maximale Länge der Mehrfachkommandozeile beträgt 127 Zeichen. Als Beispiel ein Start-SUBMIT für eine CAOS-Diskette mit ZDDOS und ein System ohne Festplatte:
T S;B:;DEP3 INITIAL.UUU
Diese Mehrfachkommandozeile wird in die drei Einzelkommandos
A0>T S A0>B: B0>DEP3 INITIAL.UUU
zerlegt. T S wartet auf Tastatureingaben und gestattet das Stellen der Uhr, bevor automatisch zu Laufwerk B: gewechselt und DEP3.COM mit der Stapeldatei INITIAL.UUU gestartet wird. Als Ergebnis dieses Bootvorgangs befindet man sich wieder im CAOS und im D004 läuft ZDDOS.
Da keine batteriegestützte Echtzeituhr vorhanden ist, kann bei jedem Bootvorgang Datum und Uhrzeit eingegeben werden und die Datumseinträge werden auf der CAOS-Diskette ordnungsgemäß protokolliert.
Die Menüpunkte 7 bis 9 dienen zur Erzeugung des Systems, wobei mit Punkt 7 in die Systemspuren einer 780K-Diskette geschrieben, mit Punkt 8 eine COM-Datei erzeugt und mit Punkt 9 das System zum Test im RAM aktiviert wird. Die COM-Datei wird dabei auf das aktuelle Laufwerk geschrieben, die Angabe von Laufwerk und Dateityp ist hier nicht vorgesehen.
Unter Menüpunkt 10 ist es schließlich möglich, SYSGEN.COM einschließlich des mühsam installierten Systems, also komplett mit allen Treibern, der Konfiguration des RAM-Floppy und des eingegebenen Start-SUBMIT abzuspeichern. Es wird der Name der zu erzeugenden COM-Datei angefordert, dabei sollte nicht SYSGEN angegeben werden um ein Überschreiben der uninstallierten Version zu vermeiden!
Beim Start der installierten Version von SYSGEN.COM sind sofort alle alten Einstellungen wieder verfügbar und es kann sofort erneut in die Systemspuren geschrieben werden.
HINWEIS:
Disketten mit ZSDOS / ZDDOS in den Systemspuren sowie COM-Dateien mit einem Systemabzug und das installierte SYSGEN.COM unterliegen dem Urheberrecht von ZSDOS und dürfen nicht weitergegeben werden. Zum Datenaustausch also nur Disketten verwenden, die neu formatiert wurden bzw. das System MicroDOS enthalten!
Kommandoprozessor CCP V1.4
(CCP.MAC, CCP.REL)
Am CCP wurden noch zwei kleinere Änderungen vorgenommen. Damit ist es jetzt möglich, den Uhrentreiber für ZSDOS als RSX (residente Systemerweiterung) zu installieren. Der RSX-Treiber wird unmittelbar unterhalb des CCP geladen und verlegt den BDOS-Einsprung nach vorn, so daß auch der CCP nicht mehr überschrieben werden kann.
Damit verringert sich der zur Verfügung stehende TPA um 2655 Byte. Der Uhrentreiber belegt davon zwar nur 607 Byte, aber die 2048 Byte vom CCP gehen dem TPA ebenfalls mit verloren.
Die zweite Änderung betrifft den ZSDOS-Fehlermodus. Der CCP stellt beim Start jedes Programmes jetzt den Modus 0 (CP/M-Modus) ein. Unter diesem Modus arbeitet auch PUTDS.COM korrekt und kann seine Zwischendatei !!!TIME&.TMP ordnungsgemäß in !!!TIME&.DAT umbenennen. Verlangen Programme einen anderen Fehlermodus, dann müssen sie diesen mit der BDOS-Funktion 45 selbst einstellen und am Programmende auf 0 zurücksetzen.
DEP3.COM
(DEP3.COM, DEP3.HLP)
Bisher war es noch nicht möglich, unter CAOS auf die Festplatte zuzugreifen. In den KC-News 2/96 hatte ich DEP 3.0 ja bereits angekündigt, es hat sich in der Realisierung jedoch etwas am geplanten Konzept geändert. DEP 3.0 ist ein "normales" CP/M-Programm geworden und benötigt zur Arbeit auch ein "normales" CP/M-System. Damit gibt es für die CAOS-Betriebsart kein modifiziertes System mehr.
Das hat den Vorteil, daß nur ein Betriebssystem für beide Betriebsarten erforderlich ist und problemlos von CP/M zu CAOS gewechselt werden kann. Soll eine CAOS-Startdiskette erzeugt werden, ist SYSGEN.COM zu verwenden. Zum Einstellen der Parameter ein paar Hinweise:
- Als BDOS empfehle ich ZDDOS, da dieses automatisch Datumseinträge erzeugt.
- Treiber brauchen nicht installiert werden, da diese nur für die CP/M-Betriebsart erforderlich sind.
- Die RAM-Floppy-Konfiguration ist eigentlich uninteressant, da DEP das RAM-Floppy ohnehin uminstalliert. Es müssen aber dennoch mindestens 2 Spuren im RAM-Floppy erzeugt werden, damit der Start-SUBMIT ordnungsgemäß abgearbeitet werden kann.
- Die Definition des EPROM-Floppymoduls (Strukturbyte 73H) kann gelöscht werden, dann entfällt das Erzeugen des dazugehörigen Verzeichnisses.
- Der Start-SUBMIT sollte DEP 3.0 starten, damit wird der automatische Wechsel zur CAOS-Betriebsart eingeleitet. DEP 3.0 kann als Parameter ein Laufwerk und der Name einer Stapeldatei übergeben werden. Ist der Start-SUBMIT ein Mehrfachkommando, dann muß der Aufruf von DEP am Ende stehen, da DEP nicht wieder zum CCP zurückkehrt.
Die Kommandozeile von DEP 3.0 sieht folgendermaßen aus:
A0>B:DEP3 du:dateiname.typ
Nachdem DEP3.COM geladen wurde, wechselt es zum angegebenen Laufwerk und USER-Bereich (du:) und übergibt die CAOS-Stapeldatei (dateiname.typ) in gewohnter Weise zur Abarbeitung an das Grundgerät. Da ein beliebiger Dateiname und ein beliebiges Laufwerk angegeben werden kann, gibt es praktisch keine Einschränkungen mehr zum Start einer CAOS-Anwendung von jeder beliebigen CP/M-Kommandozeile aus.
DEP 3.0 installiert das RAM-Floppy für TPA um und wechselt zur CAOS-Betriebsart. Dort kann man dann wie gewohnt weiterarbeiten. DEP 3.0 paßt sich beim Start automatisch dem laufenden System an. Je nachdem, wieviel freier TPA gefunden wird, ist die Kapazität des RAM-Laufwerkes A: auch unterschiedlich groß.
Die Funktionen von DEP 3.0 sind abwärtskompatibel zu allen früheren Versionen, so daß sich für den Anwender und Programmierer unter CAOS (fast) nichts ändert. Neu ist die Sortierung des Inhaltsverzeichnisses vor der Ausgabe und die Übergabe von Datum und Uhrzeit der Echtzeituhr. Die Beschreibung der kompletten Schnittstellen von DEP 3.0 ist der HELP-Datei DEP3.HLP zu entnehmen.
Ergänzend noch eine Bemerkung von Ralf Kästner zum neuen System:
Zusammenfassend festgestellt - nun sollte auch der unbedarfteste User sein System herstellen können, einer Nachnutzung des HDD-Anschlusses sollte wohl softwareseitig nichts mehr im Wege stehen - darauf kann in der nächsten Ausgabe der News auch mal mit aller Deutlichkeit und dem nötigen Nachdruck für die Unentschlossenen aufmerksam gemacht werden, Ausreden gibt es nun nicht mehr, außer 2 linke Hände, notorische Faulheit oder -2000,00 DM "Guthaben" auf dem Girokonto!