;
            Disketten-Erweiterungs-Programm DEP V3.0    

	A - Grundlagen			E - Entstehung

	C - Erstellen einer CAOS-Startdiskette

	S - Start von DEP, Stapelverarbeitung

	R - RAM-Floppy im TPA


	K - Koppel-RAM			1 - Steuerbyte 1

	F - Fehlercodes			2 - Steuerbyte 2


	D - Schnittstelle in SERVICE.KCC und DIENST.KCC
:A
  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 ueber eine definierte Schnittstelle im Koppel-RAM.

Fuer die DEP-Versionen 2.x ist ein modifiziertes MicroDOS erforderlich,
damit die Laufwerkwechsel korrekt durchgefuehrt werden koennen.

Ab Version 3.0 muss im D004 das neue Betriebssystem mit ZDDOS/ZSDOS laufen.
DEP 3.0 ist speziell fuer die Anforderungen bei der Nutzung einer Fest-
platte weiterentwickelt worden, kann aber mit dem neuen System auch fuer
reine Diskettensysteme verwendet werden.

Alle entstandenen Programme und Quelltexte sind zur Nachnutzung frei. Es
darf jedoch kein privater Vorteil von Nachnutzern daraus gezogen werden.
Fuer eventuell auftretende Fehler wird keine Haftung uebernommen. Die
Weitergabe (unter Wahrung der Urheberrechte) ist erwuenscht.
:C
  Erstellen einer CAOS-Startdiskette 

Die Arbeitsschritte zur Erstellung einer CAOS-Startdiskette sind die
gleichen wie fuer 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 
zusaetzlichen Treiber automatisch die Datumseintraege verwaltet.
Das Einbinden der Treiber LST, KOP und ZAS kann entfallen, da diese in der 
CAOS-Betriebsart nicht benoetigt werden. Um nach dem Bootvorgang sofort 
automatisch zur CAOS-Betriebsart zu wechseln ist der Start-SUBMIT so zu 
waehlen, dass 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, laeuft zunaechst der normale Bootvorgang von CP/M ab, 
DEP 3.0 wird gestartet und wechselt zur CAOS-Betriebsart. Eine Rueckkehr
zu CP/M ist nur mit JUMP FC moeglich indem wieder eine CP/M-Startdiskette
eingelegt wird.
:S
  Starten von DEP 3.0 

Der Aufruf von DEP 3.0 ist nur unter ZSDOS/ZDDOS moeglich.  DEP modifiziert 
dann die BIOS-Funktionen, organisiert das RAM-Floppy neu zur Verwendung des 
freien TPA-Speichers und uebergibt die Steuerung zurueck an CAOS. Als 
Parameter kann noch eine CAOS-Datei angegeben werden, die automatisch 
ausgefuehrt 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 ergaenzt.
- Ohne Angabe eines Dateinamen wird nur der Laufwerkwechsel ausgefuehrt.
- Ohne Angabe des Laufwerkes wird das aktuelle Laufwerk benutzt.


  Beispiele:    (1)  A0>B:DEP3 B:INITIAL.UUU
                (2)  A0>C0:DEP3 D7:START
                (3)  A0>E0:DEP3 E14:UNIPIC.KCC
                (4)  A0>E0:DEP3 E15:BAC854.SSS

(1) laedt DEP3.COM und INITIAL.UUU von der Diskette in Laufwerk B:

(2) laedt DEP3.COM von Laufwerk C0:, wechselt dann zu D7: und uebergibt den 
    Inhalt der dort befindlichen Datei START.UUU zur Abarbeitung an CAOS 
    weiter.

(3) laedt DEP3 von E0: und startet E14:UNIPIC.KCC mit dem FLOAD-Kommando 
    des CAOS.

(4) laedt DEP3 von E0: und stellt das Laufwerk E15: ein. Im CAOS wird der 
    BASIC-Interpreter gestartet das BASIC-Kommando CLOAD"BAC854" 
    ausgefuehrt. Das funktioniert jedoch nur ab CAOS4.3, da hier BASEX 
    nicht erforderlich ist und sofort auf die D004-Schnittstelle 
    zugegriffen werden kann.
:E
  Entstehung 

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

  V1.0  - Originalversion von der Systemdiskette (CAOSDISK.COM)

  V2.0  - Laufwerkwechsel moeglich, das Laufwerk wird vor jeder Funktion
          neu angewaehlt, um eventuellen Diskettenwechsel zu erkennen
        - USER-Bereich kann gewechselt werden
        - Uebergabe der DEP-Versionsnummer im Koppel-RAM
        - Uebergabe von Fehlertexten (mit Dateiname)

  V2.1  - Anzeige "Keine Datei.", wenn Diskette leer ist
        - RAM-Laufwerk A: im TPA, selbstkonfigurierend (nach Uwe Felgentreu),
          Blockgroesse = 1 KByte, Kapazitaet = 46 KByte

  V2.2  - Laufwerkwechsel ueber Dateiname moeglich
        - bei undefinierten Fehlern erscheint HEX-Zahl im Fehlertext
        - Bit 7 wird bei Dateinamen im Fehlertext rueckgesetzt

  V3.0  - Systemtest auf ZSDOS oder ZDDOS
        - RAM-Floppy passt sich automatisch der TPA-Groesse an
        - Start mit frei waehlbaren Laufwerk
        - Abarbeitung einer frei waehlbaren CAOS-Stapeldatei
        - USER-Bereich ist im Dateinamen dezimal anzugeben
        - Ueberpruefung auf gueltige Zeichen im Dateiname, dabei werden
          Nullen und Leerzeichen entfernt und Kleinbuchstaben in Gross-
          buchstaben umgewandelt
        - Konvertierung des Zeichens '*' als Jokerzeichen
        - Jokerzeichen im 2. Dateiname bei REN zulaessig
        - Laufwerk+User+Dateiname im Fehlertext
        - Sortierung von bis zu 255 DIR-Eintraegen
        - Create-Datum wird erhalten, wenn Datei ueberschrieben wird



	 Kontaktadressen 


	Uwe Felgentreu		Mario Leubner
	Am Fuerstenberg 46	Chemnitztalstrasse 25
	99310 Arnstadt		09236 Markersdorf


	(c) 20.09.1992		(c) 30.12.1993 - 03.05.1997
:F
  Fehlererkennung 

DEP 3.0 uebergibt neben der Fehlernummer auch einen Fehlertext im Koppel-
RAM. Folgende Fehlermeldungen koennen auftreten:

 Code | Fehlertext                             | Hinweis
 -----+----------------------------------------+-----------------------------
  00  | Datei DIR:FILENAME.TYP nicht vorhanden |
  01  | Diskettenfehler                        | physischer Lesefehler
  02  | Diskette voll                          |
  03  | Datei DIR:FILENAME.TYP geschuetzt      |
  04  | falsches Diskettenformat               | bei Laufwerksauswahl
  08  | Datei DIR:FILENAME.TYP schon vorhanden | beim Umbenennen
  09  | Dateibezeichnung nicht eindeutig       | Joker ? oder * enthalten
  77  | unzulaessige Dateibezeichnung          | CP/M-Konvention verletzt
  81  | Dateiende ueberschritten               | beim Lesen einer Datei
  82  | Diskette voll                          |
  83  | Directory voll                         |
  84  | Falsches Laufwerk                      | nur installierte Laufwerke
  85  | Falscher USER-Bereich                  | USER 0-15 moeglich
  ??  | ??: Systemfehler                       | ?? ist dabei Fehlernummer
:K
  Belegung des Koppel-RAM 

Der Koppel-RAM, also der 1K-Speicherbereich im D004, der vom KC ueber 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

  Uebersicht der kompletten Koppelsteuerung         (DEP-Schnittstelle)

 Name    | D004  | KC    | Laenge | 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 (Muehlhausen)
 FCODE   | FF81H | 81F3H |    1   | Fehlercode
 DIRBUF  | FF82H | 82F3H | 12/39  | Puffer fuer Dateiname bzw. Directory
 BASBYT  | FF8EH | 8EF3H |    1   | Daten fuer BASIC-Byte-Schnittstelle
 UROK    | FFB3H | B3F3H |    1   | D004-Zustand (5 = CAOS-Betriebsart)
:1

    7 | 6 | 5 | 4 | 3 | 2 | 1 | 0        1. Steuerbyte (Muehlhausen)
    ^   ^   ^   ^   ^   ^   ^   ^
    |   |   |   |   |   |   |   |
    |   |   |   |   |   |   |   1 = Anforderung, 0 = ausgefuehrt 
    |   |   |   |   |   |   1 = schreiben, 0 = lesen
    |   |   |   |  open |
    | close |   |       |
 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
 naechste Eintraege:    05H    -> 39 Zeichen ab DIRBUF
 Rueckmeldung 04H im Steuerbyte = Ende

 Datei loeschen 
 Name im Puffer
 Steuerbyte: 11H

 Laufwerkstatusanzeige 
 Steuerbyte: 15H    -> 20 Zeichen ab DIRBUF

 Datei umbenennen 
 Alter Name im Puffer
 Steuerbyte: 29H (open)
 Neuer Name im Puffer
 Steuerbyte: 21H

 Schreibschutz setzen 
 Name im Puffer
 Steuerbyte: 25H

 Schreibschutz aufheben 
 Name im Puffer
 Steuerbyte: 31H
: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 
 gefordertes Laufwerk in LWANF
 Steuerbyte: 03H

 Wechsel des USER-Bereiches 
 geforderten USER-Bereich in UANF
 Steuerbyte: 05H

 Wechsel von Laufwerk und USER-Bereich 
 gefordertes Laufwerk in LWANF
 geforderten USER-Bereich in UANF
 Steuerbyte: 07H
:R
 RAM-Floppy im TPA 

Da im Original-DEP der TPA (Speicher im D004) fast ungenutzt war, wurde
ueber eine Loesung nachgedacht, diesen Speicher sinnvoll zu nutzen. Bei
der Erarbeitung der Funktionen fuer den Laufwerkwechsel wurde davon
ausgegangen, dass die selbe Laufwerkskonfiguration wie unter CP/M benutzt
wird. Was liegt also naeher, als den freien Speicherplatz des TPA als
RAM-Floppy zu organisieren.

Da mit dem neuen System keine feste Adresszuordnung mehr vorliegt, muss
DEP 3.0 das RAM-Floppy beim Start nach dem zur Verfuegung stehenden TPA
konfigurieren. Die Blockgroesse betraegt 1 KByte und maximal 32 Eintraege
(1 Block) sind im Directory reserviert.

Das RAM-Laufwerk A: wird wie jedes andere Laufwerk verwendet, ein RESET
am Grundgeraet oder ein Sprung zur Adresse F000H veraendert den Inhalt
des RAM-Floppy nicht. Mit JUMP FC wird jedoch im D004 ein RESET ausgeloest
und der Inhalt des RAM-Floppy im TPA ist unwiderruflich verloren.
:D
 Schnittstellenbeschreibung SERVICE.KCC und 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    | nur bei
 TYPTX     CALL*F6         10         Name eingeben    | DIENST.KCC
 TYPTP     CALL*F9         11         Name eingeben    | vorhanden
 DUMP      CALL*FC         12         Name eingeben    /

Diese Schnittstelle ist bis UP-Nr. 8 auch in CAOS 4.3 enthalten. 
Einsprungadresse fuer MC-Programme ist dann F021H statt BE00H,
die UP-Nummer ist in Register A zu uebergeben.