###   Projekte und Informationen rund um den KC85   ### 

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.