Version 2.2 von DEP.COM

von Mario Leubner

Die vorliegende Beschreibung der neuen DEP-Version soll als Ergänzung der Schnittstellenbeschreibung von DEP im "Handbuch für den Programmierer" dienen. Die Version 2.2 von DEP.COM entstand durch Weiterentwicklung einer Idee von Uwe Felgentreu. Ihm danke ich auch für die Übersendung des Quelltextes DEP.MAC und der Ausführungen zu MicroDOS. Die nachfolgende Dokumentation habe ich ebenfalls von ihm übernommen und entsprechend bearbeitet und erweitert.

Mehrere Diskettenlaufwerke unter CAOS

Wer hat sich das noch nicht gewünscht: Ein zweites Laufwerk ist inzwischen problemlos zu beschaffen. MicroDOS läßt die Installation einfach und schnell mit MSYSG.COM zu. Aber beim Programm CAOSDISK zeigten sich die Mühlhäuser Entwickler etwas einfallslos. Im Ergebnis unserer Arbeit entstanden eine Reihe von Dateien, die zum Lieferumfang des neuen CAOS-Systems gehören.

Hervorzuheben ist das Programm SYSCOPY.COM. Dieses Programm macht MSYSG.COM fast überflüssig. Das Installieren ist nur noch einmal nötig. Das Kopieren der Systemspuren ist dann unter MicroDOS problemlos möglich (siehe unten). SYSCOPY ist in 'C' geschrieben und als Quelltext aufAnfrage von Uwe Felgentreu erhältlich. 'C' ist unter MicroDOS auf dem KC85 lauffähig!

Zum besseren Verständnis der Veränderungen am CAOS-MicroDOS folgen einige allgemeine Erläuterungen:
Beim PC-Start wird aus den Spuren 0 und 1 der 780k-Systemdiskette MicroDOS geladen und Adresse 9000Him TPA des D004-Aufsatzes angesprungen. Dort steht flüchtig eine Initroutine, die den 80-Zeichen-Mode des Bildschirms und eine ganze Reihe von Treibern in das Grundgerät überträgt. Dann folgt ein Warmstart und CP/M (MicroDOS) ist betriebsbereit.

Bei CAOS-Disketten liegt in den Spuren 0 und 1 ein modifiziertes CP/M-Betriebssystem vor. Der Ladevorgang ist der gleiche wie in der PC-Betriebsart. Nur steht nun in der INITIAL.SUB-Datei der Befehl zum Laden/Starten von DEP.COM. Die Treiber der PC-Betriebsart werden nicht ins Grundgerät übertragen, da dort schon CAOS-Treiber vorliegen können. DEP.COM führt über ESCAPE "EXIT" einen Rücksprung zum CAOS aus. Nun sind wir wieder in der CAOS-Menüschleife, während im Hintergrund im D004 das Programm DEP.COM unter MicroDOS läuft. Über den Koppel-RAM findet nun der Datenaustausch von und nach MicroDOS statt.

Veränderungen an DEP.COM

DEP.COM wurde reassembliert und so erweitert, daß nun über ein zweites Steuerbyte im Koppel-RAM die Laufwerk- und USER-Steuerung läuft. Der D004-RAM, der nach DEP.COM bis zum TPA-Ende bisher ungenutzt war, wird jetzt als RAM-Floppy verwaltet. Das mit 'A' aufzurufende Laufwerk umfaßt eine Kapazität von 46 KByte bei einer Organisation von 47 Blöcken zu je 1 KByte. Der erste Block ist vom Directory belegt, das 32 Einträge zuläßt.

Außerdem wird mit dem neuen DEP eine Fehleranzeige im Klartext möglich. Bei auftretenden Fehlern wird neben der Fehlernummer auch ein kurzer Fehlertext im Koppel-RAM bereitgestellt. Für Programme, die die neuen Leistungen nutzen wollen, ist es weiterhin möglich, die Versionsnummer des DEP im Koppel-RAM abzufragen.

Wenn bei einer Directory-Anforderung keine Datei gefunden wird, so gibt das neue DEP "keine Datei" zurück. Dies ist jetzt besonders wichtig, da im RAM-Laufwerk oder auf anderen User-Bereichen oft keine Dateien vorhanden sind.

In der STAT-Meldung wird als erstes das Laufwerk und der User-Bereich ausgegeben. Bei jeder neuen Operation wird zuerst das Diskettensystem zurückgesetzt, um einen eventuellen Diskettenwechsel zu erfassen. DEP in der Version 2.2 ist aufwärtskompatibel zur Originalversion von Mühlhausen, sowie zu den Vorgängerversionen 2.0 und 2.1, die sich eventuell vereinzelt noch im Umlauf befinden. Das heißt: Programme, die die alte DEP-Schnittstelle nutzen, laufen ohne Änderung auch mit dem neuen DEP.

Erstellen einer neuen CAOS-Diskette

Vor Nutzung der Laufwerkfunktionen des neuen DEP, muß eine CAOS-Diskette mit der gewünschten Laufwerkinstallation erstellt werden. Das MicroDOS der PC-Betriebsart und das der CAOS-Betriebsart sind fast identisch. Es liegt zwar ein Speicherversatz um 100H gegenüber der PC-Version vor, aber die BDOS- und BIOS-Rufe sind voll funktionsfähig! Also auch der Laufwerkwechsel, soweit mehrere Laufwerke installiert sind.

Wie erstelle ich mir eine neue CAOS-Diskette, wo ja nun CAOSDISK nicht mehr dazu geht? (An ein neues CAOSDISK.COM mit Laufwerkinstallation und weiteren Leistungen ist zwar schon gedacht, aber vorerst hinter anderen Projekten etwas zurückgestellt.)

  1. PC-Betriebsart starten
  2. Formatieren einer 780k-Diskette mit FORMAT.COM
  3. Überspielen folgender Programme auf die neue Diskette:
    DEP22.COM, INITIAL.SUB (neue Version, in der DEP22 aufgerufen wird!), Treiber BASEX, DEVEX, TEXOREX, FORTHEX ... (je nach Bedarf), INITIAL.UUU mit CAOS-Startkommandos
  4. Die Datei INITIAL.UUU kann entfallen oder auch neu erstellt werden. Die beiliegende Datei INITIAL.UUU ist nur ein Beispiel für die KC-User, die die Möglichkeit der CAOS-Kommandodatei bisher noch nicht kannten.
  5. Nun muß das neue System überspielt werden, dazu gibt es zwei Möglichkeiten:
    • Hat man 2 Laufwerke zur Verfügung, kann man mit SYSCOPY.COM sehr komfortabel überspielen. Beispiel: Quell-Laufwerk ist B:, Ziel-Laufwerk ist E:. SYSCOPY.COM kann z.B. auf der RAM-Floppy A: liegen. Der Aufruf erfolgt mit SYSCOPY B E. Es sind also nur die Buchstaben ohne den üblichen Doppelpunkt nötig.
    • Hat man nun nur 1 Laufwerk, so kann man sich mit POWER auch helfen. POWER.COM laden und dann Diskette mit dem neuen CAOS einlegen. Mit READ 0 1 4000 160 die Systemspuren einlesen oder das File CAOS21.DOS mit LOAD CAOS21.DOS 4000 einlesen. Dann die zu bespielende neue CAOS-Diskette einlegen und mit dem Befehl WRITE 0 1 4000 160 das neue System in die Systemspuren schreiben.

Laufwerkinstallation

Wird eine andere als die vorgegebene Laufwerkinstallation gewünscht, dann kann diese ebenfalls mit POWER geändert werden. Dazu die Systemspuren wie oben unter 5.2 in den TPA laden und mit dem Kommando DS die Diskettenparameterblöcke so ändern, daß sie mit denen der PC-Systemdiskette übereinstimmen. Speicherversatz beachten!

Nachfolgende Tabellen können dabei zur Hilfe genommen werden. Dann wird das modifizierte System mit WRITE 0 1 4000 160 wieder in die Systemspuren geschrieben. Auf keinen Fall darf der DPB des RAM-Laufwerkes A: verändert werden, da das System dann nicht mehr richtig arbeiten kann!

Lage der Diskettenparameterblöcke (DPB) unter ...

LW   PC-MicroDOS   CAOS-MicroDOS   POWER (ab 4000H geladen)
A: EDD1H EED1H 6BD1H
B: EDE2H EEE2H 6BE2H
C: EDFEH EEFEH 6BFEH
D: EE1AH EF1AH 6C1AH
E: EE36H EF36H 6C36H
F: EE52H EF52H 6C52H
G: EE6EH EF6EH 6C6EH
H: EE8AH EF8AH 6C8AH

installierte Laufwerke in CAOS21.DOS (DEP ab V 2.1)

LW   Kapazität   physisches Laufwerk       Organisation   Offset
A: 46K RAM-Floppy im TPA (D004) 1024*47 0
B: 780K phys. Laufwerk 0 5*1024*80*2 2
C: 624K phys. Laufwerk 0 16* 256*80*2 2
D: 800K phys. Laufwerk 0 5*1024*80*2 0
E: 780K phys. Laufwerk 1 5*1024*80*2 2
F: 185K phys. Laufwerk 1 5*1024*40*1 3
G: 720K phys. Laufwerk 1 9* 512*80*2 0
H: 780K phys. Laufwerk 2 5*1024*80*2 2

Laufwerkwechsel

Laufwerk- und Userwechsel erfolgen ähnlich den bekannten Steuerbefehlen mit Anforderung, Quittung und Fehlermeldung. Es ist das 2. Steuerbyte zu benutzen. Da für jede Funktion ein Bit reserviert wurde, ist es auch möglich, Laufwerk und Userbereich mit einer Anforderung zu steuern. Bei einem Fehler in der Laufwerksforderung wird allerdings der Userbereich nicht mehr berücksichtigt.

Folgende Kombinationen für das zweite Steuerbyte sind zu verwenden:

01H Abfrage aktuelles Laufwerk/Userbereich
03H Wechsel des Laufwerks
05H Wechsel des User-Bereiches
07H Wechsel Laufwerk und User-Bereich

Nach jeder dieser Funktionen kann das aktuelle Laufwerk/Userbereich in den Arbeitszellen LWANF/UANF abgefragt werden. Die weiteren möglichen Kombinationen sind noch frei und sollten nicht benutzt werden, da sie eventuell für spätere Erweiterungen noch vorgesehen sind.

Fehlererkennung

Das neue DEP.COM ist auch hinsichtlich der Fehlererkennung und -rückmeldung leistungsfähiger geworden. Die Liste der möglichen Fehlermeldungen wurde erweitert. Der Fehler wird als Nummer (wie bisher) und gleichzeitig als Zeichenkette mit maximal 40 Zeichen (eine Bildschirmzeile im CAOS-Format) im Koppel-RAM bereitgestellt.

Anstelle von *.* wird der aktuelle Dateiname zurückgegeben. Die letzte Fehlermeldung der Tabelle wird bei jedem anderen Fehlercode erzeugt.

Code   Fehlertext
00 Datei *.* nicht vorhanden
01 Diskettenfehler allgemein
02 Diskette voll
03 Datei *.* schreibgeschützt
04 falsches Diskettenformat
08 Dateibezeichnung bereits vorhanden
09 Dateibezeichnung nicht eindeutig
43 Prüfsummenfehler (CRC)
49 Indexfehler
52 Laufwerk nicht bereit
53 Diskette schreibgeschützt
56 ID-Feld-Fehler (falsches Format?)
77 unzulässige Dateibezeichnung
81 Dateiende überschritten
82 Diskette voll
83 Directory voll
84 Falsches Laufwerk
85 Falscher USER-Bereich
?? ??: undefinierbarer Systemfehler

SERVICE-Programme für die CAOS-Betriebsart

Die bekannten Programme FLOAD.KCC, FSAVE.KCC, SERVICE.KCC usw. können selbstverständlich weiterbenutzt werden. Wer jedoch die neuen Leistungen der Fehlerausgabe im Klartext nutzen möchte, der sollte auf FLOAD2.KCC, FSAVE2.KCC, BASEX2.KCC und DIENST.KCC umsteigen. Die Programme sind funktionskompatibel zu den Vorgängern.

FLOAD2 wurde effektiver programmiert und konnte dadurch ohne ein zusätzliches Byte Programmspeicher die neuen Leistungen anbieten. Es kann aber nicht einfach mit dem FLOAD, das beim Systemstart auf der Adresse 0 steht auf Adresse 0 geladen (überschrieben) werden, da es dann zum Systemabsturz kommt. FLOAD2 sollte deshalb mit dem Kommando FLOAD im DIENST-Menü geladen werden.

FSAVE2 ist voll kompatibel zu FSAVE, durch die Ausgaberoutine der Fehlertexte aber ein paar Bytes länger.

BASEX2 ist voll kompatibel mit BASEX. Es ist ebenfalls wie FLOAD2 durch effektivere Programmierung möglich geworden, alle Funktionen im selben Speicherbereich unterzubringen. Die Umschaltadresse (CALL*150) bleibt unverändert erhalten.

Ein neues universelles SERVICE-Programm mit den Namen DIENST.KCC kann die Laufwerk-Steuerung nun bedienen und dient gleichzeitig zur Demonstration aller neuen Funktionen.

Der Quelltext liegt als DIENST.ASM im Edas-Format vor. ACHTUNG! DIENST.KCC benötigt im KC den gesamten Speicherbereich von BA00H bis BFFFH. Wer von BASIC oder anderen MC-Programmen aus die neuen Leistungen von DIENST nutzen will, kann die Sprungverteiler aus SERVICE.KCC unverändert weiterbenutzen. Die Ansprungadresse BE00H für die Nutzung der Routinen in Anwenderprogrammen gilt weiter, die neuen Funktionen wurden entsprechend erweitert.

DIENST.KCC hat ein eigenes Menü. Es wird mit "DIENST" vom CAOS-Menü aufgerufen und gibt als Prompt das Laufwerk und den User-Bereich aus (also z.B.: B0>_). Es kann auch mit dem Original DEP.COM gearbeitet werden, dann wird bei Aufruf der neuen Funktionen eine Fehlermeldung ausgegeben und als Prompt erscheint **>.

Wird nur schnell eine Funktion von DIENST aus dem CAOS-Menü benötigt, so kann DIENST mit Argument aufgerufen werden. Als Argument ist die Nummer der Funktion (siehe Tabelle!) als Hexzahl einzugeben. Der Aufruf "%DIENST 2" gibt also das Directory aus, "%DIENST C" ruft die DUMP-Funktion auf.

Für FLOAD und FSAVE ist zu beachten, daß hier der Dateiname ab Adresse 0 stehen muß!

In DIENST sind neben DRIVE und USER auch noch DUMP, TYPTP und TYPKC als neue Leistungen enthalten. Alle Fehler werden in Klartext ausgegeben, wenn im D004 das neue DEP läuft. Zur Verwendung der Fehlertexte kann DIENST.ASM als Beispiel dienen. Beschreibung der neuen Befehle:

FLOAD
Bei selbststartenden Programmen wird gefragt, ob gestartet werden soll.
MENU
DIENST-Menü ausschreiben
QUIT
zurück zum CAOS
USER
USER-Bereich wählen
DRIVE
Laufwerk wählen
DUMP
Anzeige einer Datei im DISPLAY-Format. Die Adresse wird entweder dem CAOS-Vorblock entnommen, bei einer Datei in anderem Format wird 100H (Ladeadresse im CP/M) angenommen. Abbruch erfolgt mit Dateiende, dabei wird der Fehler 81 (Dateiende überschritten) ausgegeben.
TYPTP
Texte ohne Vorblock anzeigen (z.B. von TPKC), Steuerzeichen werden als Control-Codes (z.B. ^C für 03H) ausgegeben.
TYPTX
Texte mit CAOS-Vorblock anzeigen (z.B. von Edas, TEXOR), Steuerzeichen werden als Punkt ausgegeben.

Laufwerkwechsel durch vorhandene Programme

Jetzt wird jeder sagen, der die vielen interessanten Eigenschaften des neuen DEP kennengelernt hat: Ich habe aber keine Programme, die diese neue Schnittstelle benutzen! Um dieser Tatsache zumindest in der Übergangsphase entgegenzuwirken und auch bestehende Programme nicht ganz in Vergessenheit gelangen zu lassen, gibt es eine Kompromißlösung:

Wie in der PC-Betriebsart können Sie vor dem Dateinamen das Laufwerk in der ersten Stelle des Dateinamens mit angeben. Es wird dazu durch einen Doppelpunkt vom eigentlichen Dateinamen getrennt.

Nach dem Laufwerksbuchstaben kann außerdem noch eine einstellige Hexzahl für den Userbereich geschrieben werden. Als Kompromißlösung muß diese Vorgehensweise deshalb angesehen werden, da der Dateinamenpuffer im Koppel-RAM nur mit 12 Byte definiert ist. Das reicht gerade für 8 Zeichen des Dateinamens, einen Punkt als Trennzeichen und 3 Zeichen für den Dateityp.

Wird jetzt Laufwerk und Userbereich im Dateinamen mit angegeben, gehen 3 Zeichen (einschließlich Doppelpunkt) verloren. Besteht der Dateiname also nur aus maximal 5 gültigen Zeichen, kann alles komplett angegeben werden.

Möglich ist auch die vollständige LW-Angabe bei FLOAD und FSAVE, wenn der Dateityp .KCC ist. Dieser muß ja nicht mit angegeben werden. Eine weitere Möglichkeit besteht darin, mit einem Aufruf von FLOAD nur das Laufwerk einzustellen und mit einem zweiten Aufruf, der jetzt den vollständigen Dateinamen enthalten kann, die Datei zu laden.

Beispiele:

%FLOAD
NAME:B0:SERVICE

SERVICE.KCC von Laufwerk B:, User 0 laden, unabhängig welches Laufwerk vorher eingestellt war.

%FSAVE 200 800
NAME:A0:RAM.DMP

Speicherabzug von 200H bis 800H als Datei RAM.DMP auf Laufwerk A0: abspeichern.

%FLOAD
NAME:A1:
00ERROR

%DIR
Keine Datei

Anzeige des Directory von Laufwerk A:, User 1, Doppelpunkt nicht vergessen! Die Fehlermeldung 00ERROR muß ignoriert werden. Es sind keine Eintragungen vorhanden.

%FLOAD
NAME:E0:
00ERROR

%FLOAD
NAME:Boulder.EXE

Nachdem mit dem ersten Aufruf von FLOAD das Laufwerk und der Userbereich eingestellt wurden, erfolgt beim 2. Aufruf das Laden.

Schnittstellenbeschreibung DIENST.KCC

Name:   BASIC-Aufruf   UP-Nr.(MC)   Bemerkungen
FLOAD CALL*D8 0 Name ab Adr. 0
FSAVE CALL*DB 1 Name ab Adr. 0
DIR CALL*DE 2 DIR & STAT
STAT CALL*E1 3 LW & STAT
REN CALL*E4 4 Namen eingeben
SETRO CALL*E7 5 Name eingeben
SETWR CALL*EA 6 Name eingeben
ERA CALL*ED 7 Name eingeben
DRIVE CALL*F0 8 LW eingeben
USER CALL*F3 9 User eingeben
TYPTX CALL*F6 10 Name eingeben
TYPTP CALL*F9 11 Name eingeben
DUMP CALL*FC 12 Name eingeben

Belegung des Koppel-RAM

Der Koppel-RAM, das heißt der 1K-Speicherbereich im D004, der vom KC über IO-Adressen erreicht wird, dient zum Datenaustausch der beiden Prozessoren im KC-Floppy-System. In den nachfolgenden Tabellen ist die Belegung mit Stand von DEP V 2.2 angegeben:

Seite:   D004-Adresse:   IO-Adresse KC:   Verwendung:
0 FC00H..FCFFH 00F0H..FFF0H von MicroDOS verwendet
1 FD00H..FDFFH 00F1H..FFF1H Erweiterungen (bisher frei)
2 FE00H..FEFFH 00F2H..FFF2H Bytekoppelpuffer
3 FF00H..FFFFH 00F3H..FFF3H von MicroDOS verwendet

Übersicht der kompletten Koppelsteuerung

Im oberen Teil ist die Erweiterung und im unteren Teil die vom Original-DEP vorgegebene Schnittstelle beschrieben. Siehe dazu auch "Handbuch für den Programmierer" Teil B, Kapitel 2.1 und 2.2!

Name:    D004:   KC:     Bedeutung:
ERRTX FD00H 00F1H Fehlertext (max. 40 Zeichen, Ende.)
STBYT2 FD80H 80F1H 2. Steuerbyte:
Bit 0 - Anforderung
Bit 1 - Laufwerkwechsel
Bit 2 - Userwechsel
Bit 3-6 reserviert
Bit 7 - Fehlerrückmeldung
LWANF FD81H 81F1H gefordertes Laufwerk ('A'...'H')
UANF FD82H 82F1H aktuelle User-Nummer (00H ... 0FH)
VERSION FD83H 83F1H Versionsnr. von DEP.COM (21H = V2.1)
DATEN FE80H 80F2H Datenpuffer 128 Byte lang (1 Sektor)
STBYTE FF80H 80F3H 1. Steuerbyte:
Bit 0 - Anforderung
Bit 1 - 1 = schreiben / 0 = lesen
Bit 3 - open
Bit 6 - close
Bit 7 - Fehlerrückmeldung
Bit 5 4 2 Funktionsauswahl:
0 0 0 Sektor lesen/schreiben
0 0 1 DIR-Anforderung
0 1 0 ERA
0 1 1 STAT
1 0 0 REN
1 0 1 SETRO
1 1 0 SETWR
1 1 1 BASIC-Byte lesen/schreiben
FCODE FF81H 81F3H Fehlercode
DIRBUF FF82H 82F3H Puffer für Dateiname oder Directory
BASBYT FF8EH 8EF3H Daten für BASIC-Byte-Schnittstelle

Lieferumfang von DEP V2.2

SYSCOPY .COM
Systemspuren von 780K-Disketten kopieren
CAOS21.DOS
Systemabzug CAOS-MicroDOS mit RAM-Floppy-Treiber
DEP22.COM
Neues Disketten-Erweiterungs-Programm Version 2.2
DEP22.DOC
diese Beschreibung (im WordPro6-Format)
DIENST.KCC
[BA00 C000 BA00]
Erweitertes Service-Programm
DIENST.ASM
Edas-Quelltext dazu
FLOAD2.KCC
[0000 00D7]
neues FLOAD mit Fehlertexten
FLOAD2.ASM
Edas-Quelltext dazu
FSAVE2.KCC
[0000 00B3]
neues FSAVE mit Fehlertexten
FSAVE2.ASM
Edas-Quelltext dazu
BASEX2.KCC
[0200 0300 026A]
neue Diskettenroutinen für BASIC
BASEX2.ASM
Edas-Quelltext dazu
EDAS.TXW
Beschreibung von EDAS V1.5/V1.6 (im WordPro5-Format)
EDAS161 .KCC
[C000 E000]
EDAS V1.6 für CAOS 3.1
EDAS164 .KCC
[C000 E000]
EDAS V1.6 ab CAOS 3.4
BEFEHLE .ASM
Befehlsübersicht für Edas V1.6

Alle entstandenen Programme und Quelltexte sind zur Nachnutzung frei. Es darf jedoch kein privater Vorteil von Nachnutzern daraus gezogen werden. Die Weitergabe (unter Wahrung der Urheberrechte) ist erwünscht.

Entstehungsgeschichte

DEP V1.0
ist die Originalversion von Mühlhausen aus CAOSDISK.COM.
DEP V2.0
wurde um die Laufwerk- und USER-Steuerung sowie Fehlertexte erweitert. Die Versionsnummer wird übergeben.
DEP V2.1
enthält erstmals ein RAM-Floppy im TPA des D004-Basis.
DEP V2.2
kann nun auch mit bestehenden Programmen über den eingegebenen Dateinamen das Laufwerk wechseln.
Fehlerbeseitigung (24.03.94): - Bei Übergabe des Dateinamens im Fehlertext ist jetzt das Bit 7 (z.B. das Schreibschutz-Bit) stets zurückgesetzt.