Disketten-Erweiterungs-Programm DEP V3.04

von Mario Leubner

» Grundlagen
» Erstellen einer CAOS-Startdiskette
» Starten von DEP 3.0
» Entstehung
» Fehlererkennung
» Belegung des Koppel-RAM
» Steuerbyte 1
» Steuerbyte 2
» RAM-Floppy im TPA
» Schnittstelle in SERVICE, DIENST und CAOS 4.3
» Konfiguration von DEP3.COM

Grundlagen

DEP ist das Programm, welches in der CAOS-Betriebsart des KC-Floppy-Systems den Zugriff auf das Speichermedium Diskette organisiert. DEP arbeitet dabei im Hintergrund im D004 unter einem modifizierten CP/M-Betriebssystem. Der Datenaustausch erfolgt über eine definierte Schnittstelle im Koppel-RAM.

Für die DEP-Versionen 2.x ist ein modifiziertes MicroDOS erforderlich, damit die Laufwerkwechsel korrekt durchgeführt werden können.

Ab Version 3.0 ist ZSDOS bzw. ZDDOS erforderlich. DEP 3.0 ist speziell für die Anforderungen bei der Nutzung einer Festplatte weiterentwickelt worden, kann aber auch für reine Diskettensysteme verwendet werden.

Alle entstandenen Programme und Quelltexte sind zur Nachnutzung frei. Es darf jedoch kein privater Vorteil von Nachnutzern daraus gezogen werden. Für eventuell auftretende Fehler wird keine Haftung übernommen. Die Weitergabe (unter Wahrung der Urheberrechte) ist erwünscht.

Zum Lieferumfang gehören die Dateien DEP3.COM, DEP3.HLP und DEP3.CFG.

Erstellen einer CAOS-Startdiskette

Die Arbeitsschritte zur Erstellung einer CAOS-Startdiskette sind die gleichen wie für das CP/M-System. Benutzt wird das Programm SYSGEN.COM.

Es sollte die gleiche Systemdatei *.SYS oder zumindest das gleiche BIOS verwendet werden, dann sind die installierten Laufwerke in beiden Betriebsarten identisch. Als DOS-Version empfehle ich ZDDOS, da dieses ohne zusätzlichen Treiber automatisch die Datumseinträge verwaltet.

Das Einbinden der Treiber LST, KOP und ZAS kann entfallen, da diese in der CAOS-Betriebsart nicht benötigt werden. Um nach dem Bootvorgang sofort automatisch zur CAOS-Betriebsart zu wechseln ist der Start-SUBMIT so zu wählen, daß DEP 3.0 und eventuell eine CAOS-Stapeldatei abgearbeitet wird.

Das so erzeugte System kann nun in die Systemspuren einer mit 780 KByte formatierten Diskette geschrieben werden. Wenn diese Diskette mit JUMP FC gestartet wird, läuft zunächst der normale Bootvorgang von CP/M ab, DEP 3.0 wird gestartet und wechselt zur CAOS-Betriebsart. Eine Rückkehr zu CP/M ist nur mit JUMP FC möglich, indem wieder eine CP/M-Startdiskette eingelegt wird.

Starten von DEP 3.0

Der Aufruf von DEP 3.0 ist nur unter ZSDOS/ZDDOS möglich. DEP modifiziert dann die BIOS-Funktionen, organisiert das RAM-Floppy neu zur Verwendung des freien TPA-Speichers und übergibt die Steuerung zurück an CAOS. Als Parameter kann noch eine CAOS-Datei angegeben werden, die automatisch ausgeführt wird. Im Gegensatz zu den bisherigen DEP-Versionen sucht die Version 3.0 nicht automatisch nach der CAOS-Kommandodatei B:INITIAL.UUU.

Soll eine derartige Datei abgearbeitet werden, ist dies als Parameter in der Kommandozeile beim Aufruf von DEP 3.0 anzugeben. Dadurch kann jede beliebige Kommandodatei und jedes beliebige Laufwerk verwendet werden. Wird in der Kommandodatei der Dateityp .KC? oder .SSS angegeben, dann erzeugt DEP daraus CAOS-Kommandos zum Laden der MC- bzw. BASIC-Programme.

  • Ohne Angabe eines Dateityps wird .UUU ergänzt.
  • Ohne Angabe eines Dateinamen wird nur der Laufwerkwechsel ausgeführt.
  • Ohne Angabe des Laufwerkes wird das aktuelle Laufwerk benutzt.

Beispiele:

  1. A0>B:DEP3 B:INITIAL.UUU
    lädt DEP3.COM und INITIAL.UUU von der Diskette in Laufwerk B:

  2. A0>C0:DEP3 D7:START
    lädt DEP3.COM von Laufwerk C0:, wechselt dann zu D7: und übergibt den Inhalt der dort befindlichen Datei START.UUU zur Abarbeitung an CAOS weiter.

  3. A0>E0:DEP3 E14:UNIPIC.KCC
    lädt DEP3 von E0: und startet E14:UNIPIC.KCC mit dem FLOAD-Kommando des CAOS.

  4. A0>E0:DEP3 E15:BAC854.SSS
    lädt DEP3 von E0: und stellt das Laufwerk E15: ein. Im CAOS wird der BASIC-Interpreter gestartet das BASIC-Kommando CLOAD"BAC854" ausgeführt. Das funktioniert jedoch nur ab CAOS4.3, da hier BASEX nicht erforderlich ist und sofort auf die D004-Schnittstelle zugegriffen werden kann.

Entstehung

Die Originalversion von DEP kannte nur das 780K-Bootlaufwerk B: und wurde deshalb in wesentlichen Punkten überarbeitet:

V1.0
  • Originalversion von der Systemdiskette (CAOSDISK.COM)
V2.0
  • Laufwerkwechsel möglich, das Laufwerk wird vor jeder Funktion neu angewählt, um eventuellen Diskettenwechsel zu erkennen
  • USER-Bereich kann gewechselt werden
  • Übergabe der DEP-Versionsnummer im Koppel-RAM
  • Übergabe von Fehlertexten (mit Dateiname)
V2.1
  • Anzeige "Keine Datei.", wenn Diskette leer ist
  • RAM-Laufwerk A: im TPA, selbstkonfigurierend (nach Uwe Felgentreu), Blockgröße = 1 KByte, Kapazität = 46 KByte
V2.2
  • Laufwerkwechsel über Dateiname möglich
  • bei undefinierten Fehlern erscheint HEX-Zahl im Fehlertext
  • Bit 7 wird bei Dateinamen im Fehlertext rückgesetzt
V3.0
  • Systemtest auf ZSDOS oder ZDDOS
  • RAM-Floppy paßt sich automatisch der TPA-Größe an
  • Start mit frei wählbaren Laufwerk/Userbereich
  • Abarbeitung einer frei wählbaren CAOS-Stapeldatei *.UUU
  • USER-Bereich ist im Dateinamen dezimal anzugeben
  • Überprüfung der CP/M-Konventionen für Dateinamen
  • Konvertierung des Zeichens '*' als Jokerzeichen
  • Jokerzeichen im 2. Dateiname bei REN zulässig
  • Laufwerk + User + Dateiname erscheinen im Fehlertext
  • Sortierung von bis zu 255 DIR-Einträgen
  • Create-Datum wird erhalten, wenn Datei überschrieben wird
V3.01
  • ZAS + Treiber (0200..1FFFH) wird gelöscht
  • Fenster wird neu initialisiert
V3.02
  • ZAS + Treiber + Tabellen (0200H..3FFFH) werden gelöscht
V3.03
  • erweiterte Aufrufmöglichkeiten mit Dateien *.KC? und *.SSS
V3.04
  • schnellere Sortierung durch Shell-Sort statt Bubble-Sort
  • vereinfachter LW-Wechsel ohne RESET der Diskette
  • reservierten CAOS-Bereich 100H..200H nicht mehr benutzt
  • Installation über CFG-Datei oder Patch-Bereich

Uwe Felgentreu, © 20.09.1992
Mario Leubner, © 30.12.1993 - 18.05.1997

Fehlererkennung

DEP 3.0 übergibt neben der Fehlernummer auch einen Fehlertext im Koppel-RAM. Folgende Fehlermeldungen können auftreten:

Code Fehlertext Hinweis

00 Datei DIR:FILENAME.TYP nicht vorhanden
01 Diskettenfehler physischer Lesefehler
02 Diskette voll
03 Datei DIR:FILENAME.TYP geschützt
04 falsches Diskettenformat bei Laufwerksauswahl
08 Datei DIR:FILENAME.TYP schon vorhanden beim Umbenennen
09 Dateibezeichnung nicht eindeutig Joker ? oder * enthalten
77 unzulässige Dateibezeichnung CP/M-Konvention verletzt
81 Dateiende überschritten beim Lesen einer Datei
82 Diskette voll
83 Directory voll
84 Falsches Laufwerk nur installierte Laufwerke
85 Falscher USER-Bereich USER 0-15 möglich
?? ??: Systemfehler ?? ist dabei Fehlernummer

Belegung des Koppel-RAM

Der Koppel-RAM, also der 1K-Speicherbereich im D004, der vom KC über I/O-Adressen erreicht wird, dient zum Datenaustausch der beiden Prozessoren im KC-Floppy-System. Dieser Speicherbereich ist in 4 Seiten aufgeteilt, allgemein gilt die folgende Belegung:

Seite  D004-Adresse  I/O-Adresse KC  Verwendung

0 FC00H..FCFFH 00F0H..FFF0H Belegungsvektor RAM-Floppy
1 FD00H..FDFFH 00F1H..FFF1H DEP-Erweiterungen
2 FE00H..FEFFH 00F2H..FFF2H Bytekoppelpuffer
3 FF00H..FFFFH 00F3H..FFF3H von CP/M verwendet

Übersicht der kompletten Koppelsteuerung
(DEP-Schnittstelle)

Name

D004 KC Länge

Bedeutung


ERRTX FD00H 00F1H 42 Fehlertext (max. 38 Textzeichen und die Steuerzeichen BEEP, CR, LF, Ende-0)
STBYT2 FD80H 80F1H 1 2. Steuerbyte (Erweiterungen)
LWANF FD81H 81F1H 1 Laufwerksbuchstabe ('A'...'H')
UANF FD82H 82F1H 1 aktuelle User-Nummer (00H ... 0FH)
VERSION FD83H 83F1H 1 DEP-Versionsnummer BCD (21H = V2.1 usw.)
TIME FD84H 84F1H 6 Datum/Uhrzeit BCD (Jahr, Monat, Tag, Stunde, Minute, Sekunde)
DATEN FE80H 80F2H 128 Datenpuffer (CP/M-Sektor bzw. CAOS-Block)
STBYTE FF80H 80F3H 1 1. Steuerbyte (Mühlhausen)
FCODE FF81H 81F3H 1 Fehlercode
DIRBUF FF82H 82F3H 12/39 Puffer für Dateiname bzw. Directory
BASBYT FF8EH 8EF3H 1 Daten für BASIC-Byte-Schnittstelle
UROK FFB3H B3F3H 1 D004-Zustand (5 = CAOS-Betriebsart)

Steuerbyte 1

   7   6   5   4   3   2   1   0        1. Steuerbyte
^ ^ ^ ^ ^ ^ ^ ^ (Mühlhausen)
| | | | | | | |
| | | | | | | 1 = Anforderung, 0 = ausgeführt
| | | | | | 1 = schreiben, 0 = lesen
| close | | open |
| | | |
Fehlerflag | | |
+---+-------+-- 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

Aus Steuerbyte 1 ergeben sich folgende Kommandos:

Sektor schreiben open: 0BH normal: 03H close: 43H
Sektor lesen open: 09H normal: 01H close: 41H
BASIC Byte lesen open: 3BH normal: 35H close: 75H
BASIC Byte schreiben open: 3FH normal: 37H close: 77H
Directory-Anforderung
open mit Sortierung: 0DH ---> 39 Zeichen ab DIRBUF
open ohne Sortierung: 4DH ---> 39 Zeichen ab DIRBUF
nächste Einträge: 05H ---> 39 Zeichen ab DIRBUF
Rückmeldung 04H im Steuerbyte = Ende
Laufwerkstatusanzeige
Steuerbyte: 15H ---> 20 Zeichen ab DIRBUF
Datei löschen
Steuerbyte: 11H ---> Name im Puffer
Datei umbenennen
Steuerbyte (open): 29H ---> Alter Name im Puffer
Steuerbyte: 21H ---> Neuer Name im Puffer
Schreibschutz setzen
Steuerbyte: 25H ---> Name im Puffer
Schreibschutz aufheben
Steuerbyte: 31H ---> Name im Puffer

Steuerbyte 2

   7   6   5   4   3   2   1   0        2. Steuerbyte
^ ^ ^ ^ ^ ^ ^ ^ (Erweiterungen)
| | | | | | | |
| | | | | | | Anforderung
| | | | | | Laufwerkwechsel
| | | | | Userwechsel
| +---+---+---+
| reserviert
|
Fehlerflag

Aus Steuerbyte 2 ergeben sich folgende Kommandos:

aktuelles Laufwerk abfragen
Steuerbyte: 01H ---> aktuelles Laufwerk in LWANF
---> aktueller USER-Bereich in UANF
Laufwerkwechsel
Steuerbyte: 03H ---> gefordertes Laufwerk in LWANF
Wechsel des USER-Bereiches
Steuerbyte: 05H ---> geforderter USER-Bereich in UANF
Wechsel von Laufwerk und USER-Bereich
Steuerbyte: 07H ---> gefordertes Laufwerk in LWANF
---> geforderter USER-Bereich in UANF

RAM-Floppy im TPA

Da im Original-DEP der TPA (Speicher im D004) fast ungenutzt war, wurde über eine Lösung nachgedacht, diesen Speicher sinnvoll zu nutzen. Bei der Erarbeitung der Funktionen für den Laufwerkwechsel wurde davon ausgegangen, daß dieselbe Laufwerkskonfiguration wie unter CP/M benutzt wird. Was liegt also näher, als den freien Speicherplatz des TPA als RAM-Floppy zu organisieren.

Da mit dem neuen System keine feste Adreßzuordnung mehr vorliegt, muß DEP 3.0 das RAM-Floppy beim Start nach dem zur Verfügung stehenden TPA konfigurieren. Die Blockgröße beträgt 1 KByte, maximal 32 Einträge (1 Block) sind im Directory reserviert. Die Größe des RAM-Floppy ist abhängig von der Systemkonfiguration (BIOS-Größe, Z-System) und der Anzahl der zu sortierenden Dateinamen (siehe Installation).

Das RAM-Laufwerk A: wird wie jedes andere Laufwerk verwendet, ein RESET am Grundgerät oder ein Sprung zur Adresse F000H verändert den Inhalt des RAM-Floppy nicht. Mit JUMP FC wird jedoch im D004 ein RESET ausgelöst und der Inhalt des RAM-Floppy im TPA ist unwiderruflich verloren.

Schnittstellenbeschreibung SERVICE.KCC, DIENST.KCC, CAOS4.3

Name:  BASIC-Aufruf  UP-Nr.  Bemerkungen      SERVICE  DIENST  CAOS

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

Die Einsprungadresse für MC-Programme ist BE00H für die Dienstprogramme SERVICE und DIENST und F021H in CAOS 4.3. Die UP-Nummer ist stets im Register A zu übergeben.

Konfiguration von DEP3.COM

Ab Version 3.04 ist eine Anpassung möglich. Eingestellt werden kann die Anzahl der maximal sortierten Dateinamen und die Nutzung des ZSDOS-Pfades. Original ist DEP3 zur Sortierung von 256 Dateinamen eingestellt, der ZSDOS-Suchpfad ist deaktiviert.

Für die Sortierung des Directories benötigt DEP je Dateiname 13 Byte TPA-Speicher. Der restliche freie TPA wird als RAM-Floppy zusammengefaßt. DEP kann zwischen 128 und 1024 Namen sortieren, entsprechend wird das RAM-Floppy unterschiedlich groß ausfallen. Es sollte ein Wert benutzt werden, der groß genug ist um das Verzeichnis mit den meisten Dateien zu sortieren.

Zur Installation kann das zu NZCOM gehörende Programm ZCNFG.COM benutzt werden. Die Eingaben erfolgen dabei im Menü und es kann nur zwischen gültigen Werten gewählt werden. Die Installation ist auch ohne ZCNFG möglich, indem die folgenden Adressen verändert werden:

0115H Anzahl zu sortierender Dateien (16-Bit Zahl)
0117H ZSDOS-Konfigurationsbyte, siehe ZSDOS-Handbuch.