Das neue Betriebssystem für den KC85 (4)

von Mario Leubner

Auch im neuen Jahr will ich die neuesten Änderungen am System in gewohnter Form weitergeben. Mittlerweile sind nur noch mehr oder weniger unwesentliche Teile ersetzt worden, sodaß auch nicht unbedingt mit den neuen Dateien gearbeitet werden muß. In den folgenden Hinweisen ist ersichtlich für welche Anwendungsfälle die Änderungen vorgenommen wurden.

Erstellung des eigenen ZBIOS
(ZBIOS.MAC, OPTION.INC, CALDPB.INC)

Es gab zwei Änderungen: Die erste betrifft die Definition der Diskettenlaufwerke. Es ist jetzt möglich, eine noch größere Vielfalt bei den Diskettenformaten zu definieren. Die meisten Anwender werden zwar mit dem KC-Format von 780K auskommen, aber es gab schon Anfragen nach Formaten, die bisher nicht installiert werden konnten. Wichtig ist jedoch die genaue Kenntnis der zu definierenden Formate.

Die Datei DEFDPB.INC wird ersetzt durch CALDPB.INC, die DPB's werden dabei vom Assembler berechnet. Angegeben werden müssen für jedes Laufwerk 5 Parameter in einer einzigen Zeile. OPTION.INC enthält dafür ein paar Beispiele erprobter Werte. Für das 780K-Format könnte eine Definition jetzt z. B. so aussehen:

LAUFW   F,9,2,128,2,1   ; F: 780k, Lw 1 (KC-Standard)

Die Parameter bedeuten dabei im einzelnen:

F Name des Laufwerkes. Für jedes gültige Laufwerk muß eine Definition existieren (entsprechend der Parameter NDRIVES und HARD)
9 definiert das physische Format wie folgt:
  1 16* 256*40*1 => 160k
  2 5*1024*40*1 => 200k
  3 8* 512*40*2 => 320k
  4 9* 512*40*2 => 360k
  5 16* 256*80*1 => 320k
  6 5*1024*80*1 => 400k
  7 16* 256*80*2 => 640k
  8 9* 512*80*2 => 720k
  9 5*1024*80*2 => 800k
2 die Blockgröße in kByte
128 die Anzahl der Verzeichniseinträge
2 die Anzahl der Systemspuren
1 die verwendete physische Einheit (0-3)

Die zweite Änderung in ZBIOS.MAC betrifft das I/O-Byte, welches bei CP/M (und MicroDOS) auf der Speicherzelle 0003H steht. Wer sich damit noch nicht näher befaßt hat, kann diesen Abschnitt übergehen. Das I/O-Byte dient der Aufspaltung der logischen Kanäle auf verschiedene physische Geräte und wird beim KC-System im Grundgerät, also von der ZAS-Steuerschleife realisiert. Das geschieht über eine Kopie des I/O-Byte im Koppel-RAM.

Bisher wurde diese Kopie bei jedem Warmstart (^C) aktualisiert. Es stellte sich heraus, daß dies unter CP/M 2.2 nicht ausreicht. Meine Änderung sorgt dafür, daß vor jeder Ausgabeoperation die I/O-Byte-Kopie aktualisiert wird. Dadurch wird die Anwendung der BDOS-Funktionen 7 (I/O-Byte lesen) und 8 (I/O-Byte stellen) in CP/M-Programmen erst sinnvoll.

Es gibt nur wenige bekannte Anwendungen für das I/O-Byte, da auf unterschiedlichen Rechnern unterschiedliche Reaktionen erfolgen. Im D004-Handbuch für den Programmierer kann nachgelesen werden, wie die logischen Kanäle im KC-System belegt sind. Ein Beispiel wäre das Programm STAT.COM von der MicroDOS-Diskette, das auch im neuen System funktioniert (Für das Z-System gibt es einen Patch).

Eine denkbare Anwendung wäre das Ausdrucken des Verzeichnisses einer Diskette indem die Bildschirmausgabe CON: zum Drucker umgeleitet wird. Dazu müßten die folgenden drei Kommandos eingegeben werden:

STAT CON:=BAT:
DIR
STAT CON:=TTY:

Ungünstig ist dabei, daß auch die Kommandozeile nicht mehr auf dem Bildschirm sichtbar ist solange die Ausgabe auf den Drucker umgeleitet ist. Das heißt, man muß die letzten beiden Kommandos "blind" eingeben und nach Return erscheinen sie auf dem Ausdruck. Besser geht es im Z-System, denn dort gibt es sogenannte Mehrfachkommandozeilen. Man kann also alle drei Kommandos auf einmal eingeben, sieht alles auf dem Bildschirm und erhält auf dem Ausdruck nur das gewünschte Verzeichnis. Die Kommandozeile sieht dann so aus:

STAT CON:=BAT:;DIR;STAT CON:=TTY:

Nun mag das Beispiel vielleicht nicht das beste sein, denn zum Ausdrucken von Verzeichnissen gibt es viele Programme, die dies ohnehin direkt unterstützen. Ich denke aber, daß sich dies noch am besten nachvollziehen läßt. Da gibt es ja auch noch die Protokollfunktion (^P) des BDOS, die fast den selben Effekt bringt. Doch es erscheint die eingegebene Kommandozeile oder zumindest der nächste Prompt auf dem Ausdruck und der Bildschirm läuft ständig mit.

Eine weitere Anwendung ist die Analyse unbekannter Programme in Bezug auf die Bildschirmsteuerzeichen. Dazu lasse ich den Drucker im Hex-Dump mitschreiben, was für den Bildschirm gedacht ist.

HDPARK
(HDPARK13.MAC, HDPARK13.COM)

Bei Festplatten mit Motorsteuerung erfolgt die Abschaltung des Motors, nachdem die Köpfe in der letzten erreichbaren Spur stehen. ZAS und die Treiber der PC-Betriebsart werden gelöscht.

DEP3.COM
(DEP3.COM)

Die Version 3.02 enthält eine kleine Änderung in Bezug auf die Uminitialisierung des KC-Systems. Funktionell ist alles gleich geblieben, deshalb auch keine neue Versionsnummer. Neu ist nur das Löschen der von ZAS, LST und KOP belegten Speicherbereiche im Grundgerät. Damit verschwinden automatisch Menüworte wie %QUIT in diesem Bereich.

Systemgenerierung
(SYSGEN06.COM)

An SYSGEN.COM wurden ein paar kleine Änderungen vorgenommen. Die Version 0.6 unterstützt erstmalig neuere Festplatten mit POWER- Management: Beim Systemstart wird jetzt das Kommando zum Starten des Motors ausgegeben. Für ältere Festplatten ergeben sich daraus keine Nachteile, die unbekannten Kommandos werden ignoriert.

Eine weitere Änderung betrifft die Organisation des RAM-Floppys. Für Ausstattungen bis 64K ist die Blockgröße jetzt auf 1 KByte reduziert worden. Damit erreicht man bereits mit einem KC85/4 ohne RAM-Erweiterung ein lauffähiges System mit 32K RAM-Floppy insgesamt. Davon werden 16K (eine Spur) für das System benötigt, die anderen 16K stehen Daten zur Verfügung und bilden 16 Blöcke zu je 1 KByte.

Systemuhr unter CAOS
(UHR3.ASM)

DEP bietet ab der Version 3.0 als neue Leistung die aktuelle Uhrzeit der auf dem GIDE-Interface befindlichen Echtzeituhr an. Der kleine EDAS-Quelltext demonstriert die Auswertung dieser Informationen. Ein Stellen der Uhr ist über die DEP-Schnittstelle nicht vorgesehen, dies kann nur in der PC-Betriebsart (ZSDOS) erfolgen.