                                         






                               --------------------
                               Public Domain Zmodem
                               --------------------
                                         
                                         
                                         
                                   Version 1.26
                                         
                                         
                                         
                           von Peter Mandrella, 1994-98
                                         
                                         
                                         
                                         


        HINWEIS: Ich habe mir grte Mhe gegeben, Fehler in PD-Zmodem zu
        beseitigen, und werde dies auch weiterhin tun. Trotzdem garantiere
        ich in keiner Weise fr die Funktionstchtigkeit dieses Programms.
        PD-Zmodem ist Public Domain und wird ohne jede Garantie und ohne
        Anspruch auf Support freigegeben, mit einer Ausnahme: Falls Sie
        registrierter Anwender der Pointsoftware "CrossPoint" sind, erhal-
        ten Sie fr PD-Zmodem den gleichen Support wie fr CrossPoint.




        Was ist Zmodem?
        ---------------

        Zmodem ist ein schnelles, zuverlssiges und sehr beliebtes "Datei-
        bertragungsprotokoll" - ein Verfahren, um Dateien von einem Rech-
        ner ber eine serielle Schnittstelle auf einen anderen zu bertra-
        gen. Wegen seiner hohen Geschwindigkeit und Robustheit und der
        relativ komfortablen Anwendung hat es die frher blichen Proto-
        kolle "Xmodem" und "Kermit" weitgehend verdrngt.

        Neben dem Original-Zmodem fr Unix und dessen DOS-Portierungen DSZ
        und GSZ existieren inzwischen Implementationen fr fast jeden
        Rechnertyp und jedes Betriebssystem. Fr DOS gibt es ungefhr ein
        halbes Dutzend weitverbreiteter Zmodems - DSZ, GSZ, Texas Zmodem,
        CE-XYZ u.a. Der Grund, das Rad trotzdem noch einmal neu zu erfin-
        den und PD-Zmodem zu schreiben, war, da keines dieser Programme
        ALLE der unten aufgefhrten Features in sich vereinigt.



        Was ist PD-Zmodem?
        ------------------

        PD-Zmodem ist ein neues Zmodem-Programm fr DOS mit den folgenden
        Eigenschaften und Funktionen:

        +  100% Public Domain, auch fr kommerziellen Einsatz
        +  serielle Schnittstellenuntersttzung fr beliebige Adressen und
           IRQ 1-15
        +  FOSSIL-Untersttzung
        +  optimiert fr hohen Datendurchsatz, auch unter ISDN; optimaler
           Durchsatz auf schlechten Leitungen durch Berechnung der
           gnstigsten Blockgre
        +  alle blichen Zmodem-Funktionen
        +  ZedZap-Untersttzung (8k-Blcke)
        +  wahlweises bertragen ganzer Verzeichnisbume
        +  Chat-Funktion
        +  automatische berwachung von cps-Rate und bertragungsdauer
        +  Uhrzeit-Synchronisation
        +  minimale Systembelastung unter OS/2 oder DesqView
        +  wahlweise deutsche oder englische Oberflche

        Es gibt zwei oder drei Dinge (je nachdem, wie man zhlt), die PD-
        Zmodem nicht kann, und deren Einbau auch nicht geplant ist:

        -  X- und Ymodem
        -  XON/XOFF-Handshake


        PD-Zmodem bentigt folgende Hard- und Softwareumgebung:

        o  beliebiger DOS-kompatibler Rechner oder DOS-Emulator
        o  DOS Version 3.0 oder hher
        o  ca. 130 KB freier DOS-Hauptspeicher
        o  IBM-kompatible serielle Schnittstelle oder FOSSIL-Treiber



        Syntax
        ------

        Empfangen von Dateien:

              ZM [Optionen] rz [Verzeichnis][Dateiname]

        Wenn Sie ein Verzeichnis angeben, werden alle empfangenen Dateien
        dort abgelegt. Wenn Sie einen Dateinamen mit oder ohne Verzeichnis
        angeben, werden empfangene Dateien unter genau diesem Dateinamen
        abgelegt. Dies ist natrlich nur sinnvoll, wenn nur eine Datei
        bertragen wird. Wenn Sie weder Verzeichnis noch Dateiname ange-
        ben, landen alle Dateien im aktuellen Verzeichnis.


        Senden von Dateien:

              ZM [Optionen] sz <Dateien>

        <Dateien> kann ein einzelner Dateiname, eine "Wildcard" (z.B.
        "*.*") oder eine mit Leerzeichen getrennte Liste von mehreren
        Dateinamen und/oder Wildcards sein. Alle Dateiangaben knnen eine
        Verzeichnisangabe enthalten.


        Statt Parameter direkt in die Kommandozeile zu schreiben, knnen
        Sie sie auch in einer Datei ablegen - je ein Parameter pro Zeile -
        und den Namen dieser Datei mit vorangestellten "@" angeben, z.B.

        ZM sz @FILELIST

        ZM liest dann die einzelnen Zeilen aus der Datei FILELIST und
        interpretiert sie so, als wren sie direkt angegeben worden.
        Dieses Feature ist vor allem dazu gedacht, um beim Senden eine
        lange Liste von Dateinamen zu ermglichen - die Lnge der DOS-
        Befehlszeile ist bekanntlich beschrnkt.

        Die Parameter "rz" und "sz" knnen auch als "r" und "s" abgekrzt
        werden.



        Optionen
        --------

        Alle Optionen beginnen mit einem "-" oder einem "/" und sind von
        weiteren Optionen oder Parametern durch mindestens ein Leerzeichen
        zu trennen. Optionen knnen an jeder beliebigen Stelle und in
        beliebiger Reihenfolge eingefgt werden -

            ZM -c1 -b19200 -d sz FILE1.ZIP FILE2.ZIP

        ist also identisch mit

            ZM -d sz FILE.ZIP /b19200 -c1 FILE2.ZIP

        *Alle* Optionen sind, wie schon der Name sagt, optional, knnen
        also weggelassen werden; fr jede Option gibt es eine Standard-
        Einstellung.


        Serielle Schnittstellen-Einstellungen:

        -cN            Legt die serielle Schnittstelle fest. Es kann
        -cXXX,YY       entweder die COM-Nummer (N) - z.B. "-c1" fr COM1 -
                       oder eine Kombination aus Adresse und IRQ (XXX,YY)
                       - z.B. "-c2e8,5" - angegeben werden. Wenn Sie eine
                       COM-Nummer angeben, verwendet ZM die folgenden
                       Adressen und IRQs:
                       
                          -c1 = -c3f8,4       -c3 = -c3e8,4
                          -c2 = -c2f8,3       -c4 = -c2e8,3

                       Voreinstellung ist "-c2". Bei Verwendung eines
                       FOSSIL-Treibers sind COM-Nummern von 1 bis 50
                       mglich, sonst Nummern von 1 bis 4.

        -f             FOSSIL-Treiber verwenden. Wenn Sie diesen Schalter
                       angeben, mu die Schnittstelle - falls angegeben -
                       das Format "-cN" haben.

        -bN            Legt die DTE-Rate, d.h. die Geschwindigkeit (bps-
                       Rate, "Baudrate") zwischen Modem und Rechner fest,
                       z.B. "-b38400" fr 38400 bps. Wenn Sie -bN weglas-
                       sen, verwendet ZM die aktuell eingestellte
                       Geschwindigkeit.

        -d             Carrier Detect (CD) ignorieren. Normalerweise
                       sollte Ihr Modem ein CD-Signal liefern, wenn eine
                       Verbindung besteht. Ist Ihr Modem falsch
                       eingestellt, oder verwenden Sie ein Nullmodem
                       (Kabel zwischen zwei Rechnern) ohne CD-Leitung,
                       dann knnen Sie mit "-d" die CD-berprfung von ZM
                       abschalten. Achtung! Bei Verwendung von "-d"
                       erkennt ZM nicht mehr, wenn eine Modemverbindung
                       abbricht!

        -h             CTS ignorieren. Normalerweise meldet das Modem mit
                       dem CTS-Signal, da es empfangsbereit ist. Bei
                       falsch konfiguriertem Modem oder bei Nullmodem-
                       Kabel ohne CTS-Leitung kann dieses Signal fehlen.
                       Achtung! Verwenden Sie "-h" nicht beim Senden von
                       Dateien ber Modemverbindungen mit Datenkompres-
                       sion! Dies fhrt unweigerlich zu bertragungsfeh-
                       lern.

                       Tip: Falls Sie mit PD-Zmodem Dateien von einem sehr
                       langsamen Rechner per Nullmodem-Kabel auf einen
                       anderen Rechner bertragen, so kann der Schalter -h
                       die Geschwindigkeit um bis zu 10% erhhen.

        -rts           (1) PD-Zmodem verwendet RTS-Handshake und verhin-
                       dert dadurch bei hoher bertragungsgeschwindigkeit
                       auf einem langsamen Rechner regelmiges berlaufen
                       des Empfangspuffers (was zu regelmigen bertra-
                       gungsfehlern fhren wrde).

                       (2) Falls beim Empfangen von Daten whrend der
                       Festplattenzugriffe bertragungsfehler auftreten,
                       sollten Sie "-rts" verwenden. Dadurch wird die
                       bertragung whrend des Plattenzugriffs durch
                       Abschalten des RTS-Signals angehalten. Bei ZyXEL-
                       Modems mit sehr alten ROM-Versionen (4.X) kann die
                       Verwendung von RTS zum Absturz des Modems fhren.

        -n             schaltet den FIFO-Speicher einer seriellen Schnitt-
                       stelle mit 16550A-Chip ab. Dieser Schalter ist zu
                       Testzwecken gedacht. Der FIFO-Speicher wird ben-
                       tigt, um bei hohen Geschwindigkeiten (ab ca. 38.400
                       bps) eine sichere bertragung zu ermglichen.

        -tlX           setzt den FIFO-Triggerlevel auf 2, 4, 8 (Vorein-
                       stellung) oder 14. Diese Einstellung ist nur von
                       Bedeutung, wenn ein 16550A-Chip vorhanden ist und
                       kein FOSSIL-Treiber verwendet wird. Unter DOS lt
                       sich durch nderung des Triggerlevels die bertra-
                       gungsstabilitt beeinflussen. Welcher Triggerlevel
                       optimal ist, hngt von der verwendeten Hardware ab
                       und lt sich nur durch Ausprobieren herausfinden.
                       Auf relativ schnellen Rechnern (386DX oder hher)
                       erhht ein geringerer Triggerlevel normalerweise
                       die bertragungsstabilitt.

                       PD-Zmodem bis Version 1.1 beta arbeitete mit einem
                       Triggerlevel von 14.

        -dtr           lscht bei Beenden von PD-Zmodem das DTR-Signal.
                       Falls Ihr Modem entsprechend eingestellt ist, wird
                       dadurch die Verbindung beendet. Auf diese Weise
                       knnen Sie nach einer unbeaufsichtigten Zmodem-
                       bertragung die Verbindung automatisch beenden
                       lassen.
                       
                       Der -dtr-Schalter funktioniert u.U. nicht unter
                       OS/2.


        Zmodem-Einstellungen:

        (rz)  =  Einstellung gilt fr das Empfangen von Dateien
        (sz)  =  Einstellung gilt fr das Senden von Dateien

        -r  (rz/sz)    "Crash recovery" abschalten. Crash Recovery bedeu-
                       tet, da eine abgebrochene bertragung an der
                       Stelle fortgesetzt werden kann, wo sie unterbrochen
                       wurde. Dadurch mu nach einem Verbindungsabbruch
                       nicht die gesamte Datei neu bertragen werden. Wenn
                       eine Datei schon vollstndig vorhanden ist, wird
                       sie bersprungen.
                       
                       Beim Empfangen funktioniert "-r" immer. Ob es auch
                       beim Senden funktioniert, hngt von der Gegenseite
                       ab. Wenn Sie "-r" angeben und die bertragung
                       unterbrochen wird, wird die unvollstndige Datei
                       gelscht.

        -oX (rz)       legt fest, was geschehen soll, wenn beim Empfangen
                       bereits eine Datei mit gleichem Name vorhanden ist
                       und keine Crash Recovery angewandt wird:
                       
                          -o0 = neue Datei abweisen
                          -o1 = alte Datei durch neue berschreiben
                          -o2 = neue Datei umbenennen (Voreinstellung)
                          -o3 = alte Datei umbenennen
                       
                       Der Schalter -o von lteren PD-Zmodem-Versionen
                       wird weiterhin untersttzt und entspricht der
                       Einstellung -o1.

        -16  (rz/sz)   16-Bit- statt 32-Bit-Prfsumme verwenden. Dieser
                       Schalter ist nur aus Kompatibilittsgrnden zum
                       Zmodem-Standard vorhanden. In der Praxis arbeitet
                       jedes Zmodem-Programm mit den wesentlich sichereren
                       32-Bit-Prfsummen.

        -8  (sz)       maximale Blockgre auf 8k = 8192 Bytes vergrern
                       ("ZedZap"). Erhht den Datendurchsatz um 0.5% und
                       macht nur dann Sinn, wenn die Verbindung fehler-
                       sicher ist. Wenn Sie "-8" angeben, beginnt ZM mit
                       normalen 1k-Blcken und erhht die Blockgre dann
                       allmhlich bis auf 8k, falls die bertragung feh-
                       lerfrei bleibt. Beim Empfangen erkennt ZM auto-
                       matisch alle Blockgren, ohne da "-8" angegeben
                       werden mu.
                       
                       Achtung! "ZedZap" ist kein Zmodem-, sondern ein
                       FidoNet-Standard. Es funktioniert nur, wenn das
                       Zmodem auf der Gegenseite dieses spezielle Fido-
                       Feature untersttzt.

        -8N  (sz)      Wie "-8", nur da die bertragung mit einer Block-
                       gre von N KB beginnt. Mgliche Werte fr N sind
                       1, 2, 4 und 8. Die Verwendung einer Start-Block-
                       gre von 4k oder 8k macht nur Sinn, wenn die
                       Verbindung sehr stabil ist und im Durchschnitt
                       hchstens ein bis zwei Fehler - dazu zhlen auch
                       Verbindungsabbrche - pro MB bertragener Daten
                       auftreten.

        -p  (sz)       Volle Verzeichnisnamen bertragen. Normalerweise
                       bertrgt ZM nur die Dateinamen. Wenn Sie "-p"
                       angeben, und die Gegenseite entsprechend konfigu-
                       riert ist, knnen Sie damit Dateien in beliebigen
                       Verzeichnissen ablegen. Der bertragene Name stimmt
                       mit dem berein, den Sie als Parameter angegeben
                       haben. Wenn Sie nur Dateinamen ohne Verzeichnis
                       angeben, ist "-p" ohne Wirkung, es sei denn, es
                       werden mit "-s" weitere Unterverzeichnisse bertra-
                       gen.
                       
        -s  (sz)       Sendet auch alle passenden Dateien in Unterver-
                       zeichnissen. Zusammen mit "-p" und "*.*" als
                       Dateiname knnen Sie damit einen kompletten
                       Verzeichnisbaum bertragen lassen.

        -s  (rz)       Lt das Schreiben in beliebige Verzeichnisse zu
                       und legt diese ggf. neu an. Wenn "-s" nicht angege-
                       ben ist, landen alle eingehenden Dateien im aktuel-
                       len oder im als Parameter angegebenen Verzeichnis.
                       Nheres dazu: siehe unten.

                       Achtung! Bei Angabe von "-s" ohne einen zustzli-
                       chen Empfangs-Verzeichnisnamen kann der Sender
                       Dateien in beliebigen Verzeichnisse auf Ihrer Fest-
                       platte ablegen! Wenn zustzlich "-o1" angegeben
                       ist, kann er auerdem beliebige Dateien berschrei-
                       ben, sofern sie nicht mit "Read Only" schreibge-
                       schtzt sind. VERWENDEN SIE DEN SCHALTER "-s" AUF
                       GAR KEINEN FALL BEIM EMPFANGEN INNERHALB EINER
                       MAILBOX!

        -e  (sz)       Alle Steuerzeichen codieren. Dieser Schalter wird
                       bentigt, wenn die Verbindung zur Gegenstelle nicht
                       "8-Bit-clean" ist, d.h. wenn bestimmte Steuerzei-
                       chen nicht bertragen werden knnen. Das ist insbe-
                       sondere dann der Fall, wenn es sich um eine Unix-
                       Terminalanbindung handelt. "-e" verringert den
                       Datendurchsatz um rund 22%.

        -ts (sz/rz)    Synchronisiert die Systemuhr des empfangenden
                       Rechners mit der Systemuhr des Senders. Dies
                       funktioniert nur, wenn auf beiden Seiten PD-Zmodem
                       oder ein Zmodem-Protokoll mit dazu kompatibler
                       Uhrzeit-Synchronisationsfunktion eingesetzt wird
                       (siehe auch TIMESYNC.DOC), und wenn auf BEIDEN
                       Seiten der Schalter -ts angegeben wurde. Wenn Sie
                       ein PD-Zmodem-Logfile (s. Schalter -lz) erzeugen
                       lassen, knnen Sie anhand des letzten Logfile-
                       Eintrages erkennen, um wieviele Sekunden und auf
                       welche Zeit die Systemuhr verstellt wurde. Die
                       Genauigkeit liegt bei +/- 4 Sekunden.
                       
                       Achtung: Falls Sie PD-Zmodem als externes Protokoll
                       in ein Programm eingebunden haben, das das PD-
                       Zmodem-Logfile nicht auswertet, kann die Uhrzeit-
                       Synchronisation zur Berechnung einer falschen
                       bertragungsdauer fhren.

|       -iKB (rz)      Beschrnkt die Gre von empfangenen Dateien auf
|                      die angegebene Zahl von KBytes. Grere Dateien
|                      werden abgewiesen.


        Einstellungen zur Begrenzung der bertragungsdauer:

        -zN            legt eine minimale bertragungsgeschwindigkeit von
                       N cps fest. Falls die cps-Rate fr lnger als zwei
                       Minuten kleiner als N ist, wird die bertragung
                       abgebrochen; ZM liefert dabei den Errorlevel 4.

        -tN            legt eine maximale bertragungsdauer von N Minuten
        -thh:mm        oder einen Endzeitpunkt (z.B. -t20:15 fr 20 Uhr
                       15) fest. Wenn die angegebene Zeitspanne ber-
                       schritten wurde oder der Endzeitpunkt erreicht ist,
                       frhestens jedoch nach zwei Minuten, bricht ZM die
                       bertragung mit Errorlevel 5 ab.

        -xtN           Wie -t, allerdings wird hier nicht die tatschliche
        -xthh:mm       Uhrzeit, sondern der berechnete, voraussichtliche
                       Endzeitpunkt der bertragung zugrunde gelegt. Die
                       bertragung wird also prventiv abgebrochen, wenn
                       PD-Zmodem erkannt hat, da sie nicht innerhalb der
                       angegebenen Zeitspanne beendet werden kann.

                       -t und -xt knnen nicht gleichzeitig verwendet
                       werden.

        -tiN           legt die Timeout-Dauer in Sekunden fest. Wenn die
                       Gegenseite fr lnger als ungefhr N Sekunden nicht
                       reagiert, wird die bertragung abgebrochen. N wird
                       auf volle 10 Sekunden aufgerundet und kann im
                       Bereich von 30 bis 600 liegen. Voreinstellung sind
                       80 Sekunden.


        Sonstige Einstellungen:

        -ld<Datei>     erzeugt ein Logfile im DSZ-Format (s.u.). Fr
                       <Datei> ist der Dateiname, ggf. incl. Pfad, einzu-
                       setzen. Dieser Schalter hat Vorrang vor dem Envi-
                       ronment-Eintrag DSZLOG= oder ZMLOG=.

        -\             bewirkt, da bei Pfadnamen im Logfile zur Trennung
                       DOS-bliche "\"-Zeichen statt der Zmodem-blichen
                       "/"-Zeichen verwendet werden.

        -lz<Datei>     erzeugt ein Logfile im PD-Zmodem-eigenen Format
                       (s.u.). Dieser Schalter hat Vorrang vor dem Envi-
                       ronment-Eintrag DSZLOG= oder ZMLOG= und vor dem
                       Schalter -ld.

        -m             monochrome Bildschirmanzeige, z.B. fr VGA-Mono-
                       Monitore oder fr Laptop-LCD-Bildschirme.

        -nochat        schaltet die Chat-Funktion von ZM ab. Nheres dazu:
                       siehe unten.

        -nologo        deaktiviert alle Bildschirmausgaben vor und nach
                       der Anzeige des Zmodem-Fensters.

        -nowin         deaktiviert die Anzeige des Zmodem-Fensters.

        -beep          erzeugt ein Tonsignal bei Programmende.

        -q             deaktiviert die Pause von 1-2 Sekunden bei Program-
                       mende. Die Pause ist dazu gedacht, um die letzte
                       Zmodem-Meldung vor dem Schlieen des Fensters noch
                       lesen zu knnen. Wenn Sie ohne FOSSIL-Treiber
                       arbeiten, gehen allerdings whrend der Pause emp-
                       fangene Zeichen verloren, was z.B. bei Benutzung
                       von ZM als externem Protokoll in einem Terminalpro-
                       gramm strend sein kann.

        -os2x          reduziert die Systembelastung unter OS/2. Fr "x"
                       ist ein Buchstabe von a bis d einzusetzen, wobei
                       jeweils unterschiedliche Methoden zur Freigabe von
                       nicht bentigter Rechenzeit verwendet werden:
                       
                       -os2a   Freigabe ber Int 15h/86h (BIOS)
                       -os2b   Freigabe ber Int 28h (DOS)
                       -os2c   Freigabe ber sti-hlt-35h/CAh (OS/2)
                       -os2d   Freigabe ber Int 2fh/1680h (DPMI)
                       
                       Welche der Methoden bei Ihnen ab besten funktio-
                       niert, mssen Sie ausprobieren. Alle vier Methoden
                       basieren auf undokumentierten OS/2-Funktionen, und
                       zumindest -os2a und -os2d werden nicht in jeder
                       OS/2-Version untersttzt. Die Verwendung nicht
                       untersttzter Funktionen kann zu Fehlfunktionen des
                       Betriebssystems bis hin zu einem Totalabsturz
                       (Trap) fhren.
                       
                       Ob und wie die -os2-Schalter funktionieren, hngt
                       auch von den OS/2-Eistellungen IDLE_SECONDS und
                       IDLE_SENSITIVITY ab.

        -dv            reduziert die Systembelastung beim Empfangen von
                       Daten unter DesqView.

        -w             unterdrckt Warnungen bei Programmstart, z.B. bei
                       einem Sendevorgang ohne Dateien.



        bertragen von Unterverzeichnissen
        ----------------------------------

        Wenn Sie auf beiden Seiten einer Verbindung PD-Zmodem einsetzen,
        knnen Sie damit bequem vollstndige Verzeichnisbume bertragen.
        Ein Beispiel:

        Sender:     ZM -b38400 -s -p sz C:\TEXT\*.*
        Empfnger:  ZM -b38400 -s rz

        Hier wird der komplette Verzeichnisbaum C:\TEXT\... mit 38.400 bps
        auf COM2 zum zweiten Rechner bertragen. Beachten Sie, da die
        Laufwerksbezeichnung NICHT mitgesendet wird. Wenn das aktuelle
        Laufwerk auf dem Zielrechner z.B. D: ist, werden die Dateien in
        D:\TEXT\... abgelegt.

        Wenn der Empfnger zustzlich einen Verzeichnisnamen angibt, z.B.

                    ZM -b38400 -s rz C:\COPY

        dann wird dieser dem bertragenen Namen vorangestellt; die Dateien
        landen also in C:\COPY\TEXT\... Hat der Sender nur einen relativen
        Pfadnamen, also ohne fhrenden "\", und der Empfnger kein Ziel-
        verzeichnis angegeben, dann werden die Dateien beim Empfnger
        unterhalb des aktuellen Verzeichnisses abgelegt. Beispiel:

        Sender:    C:\>          ZM -b38400 -s -p sz TEXT\*.*
        Empfnger  D:\DOWNLOAD>  ZM -b38400 -s rz

        Hier landen die Dateien also in D:\DOWNLOAD\TEXT\...



        Dateien berspringen
        --------------------

        Mit der Ctrl-S (Strg+S) kann beim Empfangen der Rest der laufenden
        Datei bersprungen werden. Diese Funktion gehrt nicht zum Zmodem-
        Standard. Je nachdem, welches Zmodem auf der anderen Seite verwen-
        det wird, ist das Ergebnis unterschiedlich:

        PD-Zmodem, CeXYZ, Terminate, diverse Fido-Mailer:

           Die Rest der laufenden Datei wird bersprungen. Der Sender
           betrachtet die Datei als "korrekt bertragen", aber sie ist
           natrlich unvollstndig.

        Telemate:

           Die Rest der laufenden Datei wird bersprungen. Die Datei ist
           unvollstndig, und der Sender betrachtet sie als fehlerhaft.

        GSZ:

           Der Befehl zum berspringen wird nicht akzeptiert, aber der
           Sender reagiert korrekt. PD-Zmodem zeigt "berspringen nicht
           mglich" an und fhrt mit dem Empfang fort. Die Datei wird
           vollstndig und korrekt bertragen.

        Bisher nicht aufgetreten, aber denkbar:
           
           Der Befehl zum berspringen fhrt nicht zum Erfolg, und der
           Sender reagiert nicht korrekt. Die bertragung wird entweder
           bis zum Dateiende fortgesetzt, wird automatisch abgebrochen
           oder mu manuell abgebrochen werden. Die empfangene Datei ist
           unbrauchbar.



        Chat
        ----

        PD-Zmodem verfgt ber eine eingebaute Chat-Funktion. Wenn auf
        beiden Seiten der Verbindung ZM verwendet wird, erscheint automa-
        tisch ein zustzliches Fenster, in dem Sie sich whrend der Datei-
        bertragung mit der GegenberIn "unterhalten" knnen.

        Beachten Sie, da das Drcken von Tasten whren der bertragung
        zum Verlust einzelner Zeichen an der seriellen Schnittstelle und
        damit zu bertragungsstrungen fhren kann, falls Sie ohne 16550A-
        FIFO-Chip bei hohen Geschwindigkeiten (ab 38.400 bps) arbeiten.
        Die entstehenden Fehler werden zwar von Zmodem korrigiert, aber
        dies geht zu Lasten der bertragungsgeschwindigkeit.

        Wenn innerhalb der letzten 10 Sekunden der bertragung Chat-
        Zeichen bermittelt wurden, verlngert ZM die Chat-Zeit automa-
        tisch solange, bis fr mindestens 15 Sekunden kein Zeichen ber-
        mittelt oder bis <Esc> gedrckt wurde.

        Mit Ctrl-L knnen Sie jederzeit den Inhalt des Chat-Fensters
        lschen.

        Die Chat-Funktion von ZM ist NICHT kompatibel zu Chat-Funktionen
        anderer Zmodem-Varianten wie z.B. Super-Zmodem. Sie ist nicht
        Bestandteil des Zmodem-Standards, sondern eine proprietre Erwei-
        terung. In dem uerst unwahrscheinlichen Fall, da die Chat-
        Erweiterung von ZM bei Verbindungen zu einem anderen Programm
        Probleme verursachen sollte, knnen Sie sie mit "-nochat" abschal-
        ten.

        Bei eingeschaltetem Chat aktiviert ZM gleichzeitig einen Turbo-
        Modus, der die bertragungsrate um ca. 1% erhht. Der Turbo-Mode
        ist ebenfalls kein Bestandteil des Zmodem-Standards und ist in
        verschiedenen Programmen (GSZ, Super-Zmodem) unterschiedlich
        implementiert. Er funktioniert nur, wenn auf beiden Seiten das
        gleiche Programm arbeitet.



        Beispiele
        ---------

        ZM sz FILE.ZIP               sendet die Datei FILE.ZIP ber COM2
                                     mit der aktuellen Baudrate.

        ZM -c3e8,5 -d sz @FILELIST   sendet alle Dateien, die in der Datei
                                     FILELIST aufgelistet sind (ein Datei-
                                     name pro Zeile) ber COM3 (Adresse
                                     3e8) / IRQ5, wobei das CD-Signal
                                     ignoriert wird.

        ZM -c1 -b38400 -f rz         empfngt Dateien auf COM1 bei 38.400
                                     bps ber einen FOSSIL-Treiber.

        ZM -o rz D:\DOWN\FILE.ZIP    empfngt Dateien auf COM2 und legt
                                     sie im Verzeichnis D:\DOWN ab, wobei
                                     bereits vorhandene Dateien ber-
                                     schrieben werden.

        ZM -c1 -b9600 -e sz *.*      sendet alle Dateien aus dem aktuellen
                                     Verzeichnis ber COM1 mit 9600 bps
                                     ber eine Terminalanbindung zu einer
                                     Unix-Gurke

        ZM -c3 -z1400 rz D:          empfngt Dateien mit der aktuellen
                                     Baudrate ber COM3 (IRQ 4), legt sie
                                     im aktuellen Verzeichnis auf Laufwerk
                                     D: ab und bricht die bertragung ab,
                                     falls die cps-Rate unter 1400 fllt.



        ZCONFIG
        -------

        Mit dem Programm ZCONFIG knnen die Farbeinstellungen von ZM gen-
        dert werden. Auerdem lt sich die Sprache fr alle Bildschir-
        mausgaben zwischen Deutsch und Englisch umschalten. nderungen in
        ZCONFIG werden nur wirksam, wenn Sie sie mit dem Menpunkt
        "Sichern" abspeichern.

        Falls Ihnen das Programm ZCONFIG fehlt, ist Ihr PD-ZM-Paket
        unvollstndig.



        Umbenennen von ZM
        -----------------

        Sie knnen ZM.EXE in RZ.EXE und SZ.EXE umbenennen bzw. umkopieren.
        Wenn Sie RZ oder SZ starten, erspart Ihnen dies die Angabe des
        Parameters "rz" bzw. "sz". So knnen Sie z.B. durch einfaches Ein-
        geben von "RZ" Dateien auf COM2 mit aktueller Baudrate empfangen.



        PD-Zmodem und CrossPoint
        ------------------------

        PD-Zmodem kann mit CrossPoint fr alle Netztypen auer UUCP
        verwendet werden. Bei Verwendung fr Fido gengt es, den Fido-
        Mailer ab Version 3.07 zu verwenden und PD-Zmodem ins CrossPoint-
        Verzeichnis zu kopieren. Fr die brigen Netztypen mssen Sie bei
        Edit/Boxen/Edit/Point Folgendes eintragen:

        Uploader:    ZM.EXE -c$ADDRESS,$IRQ sz $UPFILE
        Downloader:  ZM.EXE -c$ADDRESS,$IRQ rz $DOWNFILE

        Falls Sie bei /Config/Modem "CD ignorieren" oder "CTS ignorieren"
        eingeschaltet haben, mssen Sie zustzlich den Schalter -d bzw. -h
        angeben. Auerdem knnten die folgenden zustzlichen Schalter beim
        Download ntzlich sein:

        -rts    falls whrend des Downloads regelmig bertragungsfehler
                auftreten. Unter Umstnden hilft auch der Schalter -tl4
                oder -tl2.

        -beep   falls Sie ein Tonsignal nach beendeter bertragung
                wnschen.


        Bei Verwendung mit FOSSIL-Treiber, z.B. dem ISDN-Treiber cFos,
        sieht die Einstellung so aus:

        Uploader:    ZM.EXE -c$PORT -f sz $UPFILE
        Downloader:  ZM.EXE -c$PORT -f rz $DOWNFILE



        Logfiles
        --------

        Wenn die Environment-Variable DSZLOG= einen gltigen Dateinamen
        enthlt, oder wenn mit dem Schalter -ld ein Dateiname angegeben
        wurde, hngt ZM an diese Datei ein Logfile aller bertragenen
        Dateien an bzw. erzeugt eine neue Logfile-Datei. Der Schalter -ld
        hat Vorrang vor DSZLOG=. Die Eintrge haben das bliche DSZLOG-
        Format. Die von DSZ/GSZ gelegentlich erzeugten fehlerhaften Log-
        Eintrge wurden dabei allerdings nicht nachgebildet.

        Beispiel:

        Z   1201 19200 bps 1286 cps   0 errors     0 1024 turbo.pck -1
        z   1226 19200 bps 1313 cps   0 errors     0 1024 turbo.tp -1
        z  25811 19200 bps 1753 cps   0 errors     0 1024 zm-recv.inc -1
        e  17408 19200 bps 1864 cps   1 errors     0 1024 test.bak -1

        Die Kennung in der ersten Spalte bedeutet:

           Z = Datei erfolgreich empfangen
           z = Datei erfolgreich gesendet
           E = Empfangsvorgang wurde abgebrochen
           e = Sendevorgang wurde abgebrochen
           L = Carrierverlust whrend Empfangsvorgang
           l = Carrierverlust whrend Sendevorgang

        Achtung: GSZ ignoriert an dieser Stelle den Schalter zum Ignorie-
        ren des Carrier-Signals und erzeugt bei fehlendem Carrier ein "L"
        oder "l" statt "E" bzw. "e". ZM erzeugt dagegen niemals ein "L"
        oder "l", wenn der Schalter "-d" angegeben ist.

        Die brigen Spalten bedeuten (von links nach rechts):

        - Anzahl der bertragenen Bytes, incl. durch Crash Recovery
          bersprungener Bytes

        - DTE-Baudrate

        - cps-Rate (Zeichen pro Sekunde). ZM gibt hier nach Mglichkeit
          die korrekte Geschwindigkeit an, whrend das GSZ bei Crash
          Recovery eine falsche Geschwindigkeit errechnet.

        - Anzahl der aufgetretenen Fehler. ZM gibt hier immer die tatsch-
          liche Anzahl von Fehlern an, whrend GSZ bei manuellem Abbruch
          99 Fehler angibt.

        - Die Anzahl der "CTS-lows", d.h. eine Angabe, wie oft das CTS-
          Handshake zugeschlagen hat (so oft ist die CTS-LED an Ihrem
          Modem aus- und wieder angegangen).

        - Die Gre des vorletzten Datenblocks oder ein Phantasiewert,
          falls die Datei aus nur einem Block besteht (entgegen den Anga-
          ben in der GSZ-Doku handelt es sich *nicht* um die Gre des
          letzten Datenblocks).

        - Der Dateiname, ggf. incl. Pfad. Statt des unter DOS blichen "\"
          wird dabei gem Zmodem-Standard ein "/" verwendet - es sei
          denn, Sie verwenden den Schalter "-\".

        - Die Seriennummer des anderen Programms. ZM zeigt hier immer die
          tatschlich bei jeder Datei mitgeschickte Seriennummer an,
          whrend GSZ bei jeder Datei die Seriennummer angibt, die mit der
          ersten Datei des laufenden Batches bermittelt wurde.

        Beachten Sie, da die einzelnen Spalten keine feste Breite haben.
        Wenn die Dateigre, die Anzahl der Fehler etc. die Breite der
        betreffenden Spalte bersteigt, verschiebt sich der Rest der Zeile
        nach rechts. Beim automatischen Auswerten eines DSZLOG-Files
        mssen Sie die Zeilen also als eine Liste von durch beliebig viele
        Leerzeichen getrennten Feldern interpretieren.


        Wenn die Environment-Variable ZMLOG= einen gltigen Dateinamen
        enthlt, oder wenn mit dem Schalter -lz ein Dateiname angegeben
        wurde, hngt ZM an diese Datei ein Logfile aller bertragenen
        Dateien an bzw. erzeugt eine neue Logfile-Datei. Der Schalter -lz
        hat Vorrang vor ZMLOG=. Das PD-Zmodem-eigene Logfile hat Vorrang
        vor einem DSZ-Logfile; es wird immer nur ein Logfile erzeugt.

        Beispiel:

        Z 03-05-95 21:28:05  c:\test\turbo.pck, 1201 bytes, 1 s, 1286 cps
        z 03-05-95 21:28:06  e:\turbo.tp, 1226 bytes, 0 s, 1313 cps
        z 03-05-95 21:28:06  e:\zm-recv.inc, 25811 bytes,16 s, 1753 cps
        e 03-05-95 21:28:32  e:\test.bak, 17408 bytes, 9 s, 1864 cps, 1 errors
        T 03-05-95 21:28:52  +10s

        Die Position der einzelnen Spalten mit Ausnahme der ersten ist
        nicht festgelegt. Die erste vier Spalten sind durch ein oder
        mehrere Leerzeichen getrennt. Die Bedeutung dieser Spalten ist
        (von links nach rechts):

        - Kennung wie beim DSZ-Logfile, oder

             T    fr Zeit-Synchronisation
             S    wenn eine empfangene Datei mit Ctrl-S bersprungen wurde

        - Startdatum der bertragung (mm-tt-jj)
        - Startuhrzeit der bertragung (hh:mm:ss)
        - bei T-Zeilen: die Zeitdifferenz in Sekunden; sonst:
          Name der bertragenen Datei ohne Pfadangabe

        Nach der vierten Spalte knnen beliebig viele weitere, durch ","
        getrennt Spalten folgen. Jede dieser Spalte besteht aus einem
        Wert, einem oder mehreren Leerzeichen und einer Bezeichnung. Die
        Reihenfolge dieser Spalten ist nicht festgelegt. Vor und nach
        jedem Komma knnen Leerzeichen stehen. Die Bedeutung der einzelnen
        Spalten ist:

        - bytes: Anzahl der bertragenen Bytes. Bei Crash Recovery werden
          zwei durch "/" getrennte Zahlen angegeben. "1024/10000" bedeutet
          z.B., das 1024 Bytes bertragen wurden, da die Datei aber
          insgesamt 10000 Bytes gro ist.

        - s: bertragungsdauer, mathematisch auf volle Sekunden gerundet,
          incl. Wartezeiten vor oder nach der eigentlichen Dateibertra-
          gung.

        - cps: cps-Rate (Zeichen pro Sekunde), berechnet mit einer Genau-
          igkeit von 1/18 Sekunde, *ohne* Bercksichtigung von Wartezeiten
          vor oder nach der eigentlichen Dateibertragung.

        - errors: Anzahl der bertragungsfehler. Kann entfallen, falls
          keine Fehler aufgetreten sind.

        In zuknftigen Versionen knnen weitere Spalten und neue Kennungen
        in der ersten Spalte dazukommen.



        Abbruch
        -------

        ZM bricht die bertragung ab, wenn eine der folgenden Bedingungen
        erfllt ist:

        -  Sie haben <Esc> gedrckt.  (*)
        -  Das Zmodem der Gegenseite verlangt einen Verbindungsabbruch.
        -  Auf der anderen Seite hat jemand mehrmals Ctrl-X gedrckt.
        -  Es sind mehr als 25 unmittelbar aufeinanderfolgende bertra-
           gungsfehler aufgetreten.
        -  Es ist seit ber 80 Sekunden bzw. seit der mit Schalter -ti
           eingestellten Zeitdauer nichts mehr passiert (Timeout).
        -  Ihre Festplatte ist voll (nur beim Empfangen).
        -  Sie haben den Schalter -o0 angegeben, und eine Datei wurde
           abgewiesen.
        -  Die mit -z eingestellte cps-Rate wurde mindestens zwei Minuten
           lang unterschritten.
        -  Die mit -t oder -xt eingestellte bertragungsdauer wurde
           berschritten.
        -  Durch Drcken von Ctrl-S (Strg+S) wird die bertragung der lau-
           fenden Datei beendet und bei der nchsten Datei fortgefahren.

        (*) Falls die Gegenstelle nicht reagiert, kann der Abbruch bis zu
            10 Sekunden dauern. Mit nochmaligem <Esc> erzwingen Sie einen
            sofortigen Abbruch.



        Errorlevel
        ----------

        ZM liefert folgende Errorlevel zurck:

        0  =  bertragung war erfolgreich
        1  =  bertragung wurde abgebrochen
        4  =  minimale cps-Rate (Option -z) wurde unterschritten
        5  =  max. bertragungszeit (Option -t/-xt) wurde berschritten
        9  =  fehlerhafte(r) oder fehlende(r) Parameter

        Beachten Sie, da die Errorlevel 4 und 5 normalerweise nur auf der
        Seite erzeugt werden, die den Abbruch verursacht hat - auch dann,
        wenn auf beiden Seiten PD-ZM luft und die gleichen Abbruchbedin-
        gungen angegeben wurden. Die beiden Zmodem-Programme arbeiten nie
        vollstndig synchron. Auf der anderen Seite liefert PD-ZM den
        Errorlevel 1.



        Bekannte Probleme
        -----------------

        -  Die Konfiguration wird in ZM.EXE gespeichert; dadurch mssen
           nach jedem Update die Farben neu eingestellt werden.

        -  PD-Zmodem untersttzt nicht den Zmodem-"Windowing Mode". Dies
           kann zu schlechteren bertragungen auf paketvermittelten
           Verbindungen fhren (z.B. Datex-P). Fr normale Punkt-zu-Punkt-
           Verbindungen ist diese Einschrnkung dagegen ohne Bedeutung.



        Glossar
        -------

        16550A          Serieller Schnittstellen-Chip, der mittels eines
                        Zwischenspeichers (FIFO) die Belastung der CPU
                        senkt und dadurch die Stabilitt bei hheren
                        bertragungsgeschwindigkeiten erhht. Ein Mu bei
                        ber 38.400 bps, bei langsamen Rechnern oder bei
                        Verwendung von Windows oder OS/2. Leider sind die
                        meisten Schnittstellen werksmig nur mit dem
                        einfachen 16450 ausgestattet.

        Batch           wrtlich: "Stapel". Bei Zmodem die bertragung
                        mehrerer Dateien in einem Durchgang.

        baud            Schritte pro Sekunde; nicht zu verwechseln mit
                        bps. Ein 14400-bps-Modem arbeitet mit 2400 baud
                        und bertrgt bei jedem Schritt 6 bit. Ausnahme:
                        Bei seriellen Schnittstellen ist 1 baud = 1 bps,
                        weil mit jedem Schritt nur ein Bit bertragen
                        wird.

        Baudrate        bertragungsgeschwindigkeit, gemessen in baud

        bps             Bits (Informationseinheiten) pro Sekunde

        bps-Rate        bertragungsgeschwindigkeit, gemessen in bps

        Carrier         Trgersignal. Wenn ein Carrier vorhanden ist,
                        besteht eine Verbindung zwischen zwei Modems.

        Carrier Detect  Signal, mit dem das Modem dem Rechner mitteilt,
                        da eine Verbindung besteht

        cps             Characters per Second - Zeichen pro Sekunde

        cps-Rate        bertragungsgeschwindigkeit, gemessen in cps

        Crash Recovery  Zmodem-Verfahren zum Fortsetzen einer unterbro-
                        chenen bertragung

        CRC             Cyclic Redundancy Check - Prfsummenverfahren zur
                        Integrittssicherung von Daten. Wird von Zmodem
                        und von Modems verwendet, um zu erkennen, ob ber-
                        tragene Datenblcke fehlerhaft sind und wiederholt
                        werden mssen.

        CTS             Clear to Send - Steuersignal, mit dem das Modem
                        dem Rechner mitteilt, da es empfangsbereit ist

        DSZ / GSZ       Weit verbreitete Zmodem-Implementationen von Omen
                        Technologies. DSZ und GSZ haben zwar einige kleine
                        Bugs, arbeiten aber trotzdem sehr zuverlssig.

        FidoNet         grtes privat betriebenes Mailbox-Netz

        FIFO            siehe 16550A

        Flukontrolle   (flow control) - Verfahren zur Steuerung des
                        Datenflusses, z.B. auf einer seriellen Schnitt-
                        stelle. Man unterscheidet zwischen Hardware-
                        (RTS/CTS)- und Software-(XON/XOFF)-Flukontrolle.
                        PD-ZM untersttzt nur die Hardware-Variante.

        Handshake       siehe Flukontrolle

        Interrupt       Unterbrechnung - hier: eine Mitteilung der seriel-
                        len Schnittstelle an das Programm, da Daten ange-
                        kommen sind.

        IRQ             Interrupt Request (Unterbrechungsanforderung) -
                        damit teilt u.a. die serielle Schnittstelle dem
                        Programm mit, da Daten empfangen oder gesendet
                        wurden. Jede Schnittstelle bentigt einen eigenen
                        IRQ. XTs haben IRQs von 0 bis 7, ATs zustzlich
                        von 8 bis 15.

        Kermit          relativ sicheres, extrem langsames und unprakti-
                        sches Datei-bertragungsverfahren

        Logfile         Protokolldatei

        Overhead        die Menge der bei der bertragung oder Speicherung
                        von Daten hinzugefgten "Steuerinformationen".
                        Wenn z.B. zur bertragung von 1000 Datenbytes
                        zustzlich 20 Steuerbytes bentigt werden, betrgt
                        der Overhead 2%.

        RTS             Ready to Send - Steuersignal, mit dem der Rechner
                        dem Modem anzeigt, da er empfangsbereit ist.

        Timeout         Ein Timeout whrend einer Datenbertragung liegt
                        dann vor, wenn die Verbindung fr eine bestimmte
                        Zeit lang "festhngt", d.h. wenn die Gegenstelle
                        nicht mehr reagiert.

        Triggerlevel    beim 16550A-Chip die Anzahl von Bytes, die im
                        FIFO-Puffer vorhanden sein mssen, um einen
                        sofortigen Interrupt auszulsen.

        Windows         graphische Betriebssystemerweiterung, die DF
                        wieder zu einem Abenteuer macht

        Xmodem          unsicheres, langsames und unflexibles Datei-
                        bertragungsverfahren, erfunden 1974 von Ward
                        Christiansen

        Ymodem          einigermaen sicheres, einigermaen schnelles,
                        aber relativ unflexibles Datei-bertragungsver-
                        fahren.

        ZedZap          im FidoNet bliche Zmodem-Variante mit 8k-Blcken.
                        Einziger Vorteil gegenber Standard-Zmodem: Der
                        Datendurchsatz ist auf fehlerfreien Verbindungen
                        um 0,5% hher.

        Zmodem          sicheres, schnelles und flexibles Datei-bertra-
                        gungsverfahren, erfunden 1986 von Chuck Forsberg.



        Copyrights, Danksagungen etc.
        -----------------------------

        Die in ZM verwendeten CRC-Routinen stammen - mit freundlicher
        allgemeiner Genehmigung - von Stephen Satchell. Die Zmodem-
        Implementation beruht auf einer Portierung des Public-Domain-
        Quelltextes "rz/sz" von Chuck Forsberg alias Omen Technology von
        Anfang 1988 (sptere Versionen dieses C-Quelltextes sind nicht
        mehr Public Domain, sondern Shareware).

        Mein ganz besonderer Dank geht an Anders Hejlsberg fr den besten
        Pascal-Compiler der Welt.

        Bei allen in diesem Text erwhnten Produktbezeichnungen knnte es
        sich vorbehaltlich anhngiger Rechtsstreitigkeiten um eingetragene
        Warenzeichen handeln.

        PD-Zmodem selbst unterliegt keinem Copyright oder -left, ist
        nirgendwo eingetragen und darf fr alles verwendet werden, was
        Ihnen Spa macht (sofern es sinnvoll ist, dabei ein Zmodem zu
        verwenden). Sie drfen auch darin herumdebuggen und reverse-
        engineeren, bis Ihnen schlecht wird.


        Bugreports und sonstige Hinweise zu PD-Zmodem sind jederzeit
        willkommen. Schreiben Sie an

        Internet:  pm@daisy.de
        Fidonet:   Peter Mandrella @ 2:2454/97.80

        Fragen zu Zmodem oder zur Anwendung von PD-ZM stellen Sie bitte,
        sofern sie sich nicht durch Lesen dieses Textes beantworten
        lassen, in einem/einer passenden Netzbrett/-gruppe.


        Die jeweils aktuelle Version von PD-Zmodem finden Sie im Dateibe-
        reich "DF-Tools" der CrossPoint-Supportbox (02672-910152, ISDN:
        02672-910156) oder in der Klystron BBS (Fido 2:2454/97, Magic Name
        PDZM).



        In eigener Sache
        ----------------

        Bevor ich dieses Programm geschrieben habe, dachte ich, es gbe so
        etwas wie einen Zmodem-Standard. Heute wundere ich mich ber meine
        Naivitt. Mit Zmodem ist es wie mit vielen anderen DF-Proto-
        kollen: Es gibt eine knappe Beschreibung, einen Ur-Quelltext in C
        und viele Implementationen, die versuchen, aus diesen beiden
        Dingen das Beste zu machen.

        Die Zmodem-Dokumentation hat die gleiche Krankheit wie viele
        andere DF-Dokumentationen: Sie beinhaltet nur wenig Informationen
        zu einer sinnvollen Fehlerbehandlung. Man mu sich die Daten also
        aus dem Quelltext zusammensuchen und trifft dabei auf einige
        Inkonsistenzen. So meint die Doku zum Beispiel, da eine Batch-
        bertragung abzubrechen ist, wenn die Gegenseite einen Datei-
        Schreibfehler meldet; die Implementation dagegen erwartet in
        diesem Fall, da der Sender mit der nchsten Datei fortfhrt.

        Auch dem "Originalprogramm" DSZ/GSZ merkt man an, da die Fehler-
        behandlung teilweise auf Experimenten statt auf klaren Grundlagen
        beruht. Ein Beispiel ist die "Echoerkennung": Wenn ein Zmodem mit
        dem Echo seiner eigenen Ausgaben konfrontiert wird, sollte es die
        bertragung beenden, weil auf der anderen Seite entweder kein
        Zmodem luft, oder weil z.B. auf beiden Seiten ein Zmodem-Empfang
        gestartet wurde. Beim Empfangen erkennt GSZ dieses Echo auch und
        bricht die bertragung sauber ab. Beim Senden unterhlt sich GSZ
        dagegen einfach nur mit sich selbst. Beispiel:

        Angenommen, Ihr Modem-Port ist COM2, dann starten Sie einmal "GSZ
        port 2 d sz *.*" und drcken Sie Ctrl-Break. GSZ ist dann so sehr
        mit seinem eigenen Echo beschftigt, da es gar nicht mehr damit
        aufhren will (Not-Abbruch-Taste: Alt-N).

        Ein anderer Schwachpunkt vieler Zmodem-Implementationen ist ihr
        Umgang mit der Blockgre. Zmodem erlaubt das Verwenden beliebiger
        Datenblcke zwischen 0 und 1024 Bytes Lnge. Je hher die Hufig-
        keit der bertragungsfehler, desto kleiner sollten die Blcke
        sein, um den Performance-Verlust durch das Neubertragen von
        Blcken zu begrenzen. Schaut man aber einmal nach, wie gngige
        Zmodems ihre Blockgre berechnen, dann stt man auf haarstru-
        bende "Pi-mal-Daumen"-Formeln. Wer auch schon vor V.42 und MNP mit
        Zmodem gearbeitet hat, wird sich noch daran erinnern, wie manchmal
        bei wenigen bertragungsfehlern die Blockgre pltzlich auf 32
        Bytes abstrzte und dort blieb, oder wie die Blockgre sich immer
        wieder schnell nach oben arbeitete, nur um beim nchsten Fehler
        wieder bei 128 Bytes zu landen.

        PD-Zmodem geht hier einen anderen Weg. Anhand der Fehlerhufigkeit
        und des Zmodem-Overheads (also des zustzlichen "Verwaltungsauf-
        wandes" pro Block) wird die jeweils optimale Blockgre berechnet.

        Apropos Overhead: Was mich ein wenig berrascht hat, ist, da der
        Mindestoverhead von Zmodem bei knapp 4% liegt. Anders ausgedrckt:
        Wenn Zmodem 1700 cps Datendurchsatz anzeigt, arbeitet Ihr Modem in
        Wirklichkeit mit ca. 1760 cps; die fehlenden 60 frit Zmodem.
        Dieser Verlust ist ein Tribut an die Universalitt von Zmodem - es
        nutzt die volle bertragungskapazitt von 8-Bit-Datenleitungen
        nicht aus, weil es einzelne Systemumgebungen gibt, in denen
        bestimmte Zeichen nicht bertragen werden knnen. Daher bieten
        viele Zmodem-Implementation einen "Turbo-Mode", der die Bandbreite
        einer sauberen 8-Bit-Verbindung besser ausnutzt und zumindest 1-2%
        des Verlustes kompensiert.


        Nun, was will ich mit diesem Kapitel sagen? Da Zmodem schlecht
        ist? Auf keinen Fall. Zmodem ist nach wie vor eines der schnell-
        sten, stabilsten und weitverbreitetsten bertragungsprotokolle.
        Man sollte nur nicht glauben, da alles Gold ist, was glnzt oder
        ein (TM) hinter dem Namen hat. Der Unterschied zwischen Zmodem und
        Zmodem liegt darin, wieviel Gehirnschmalz der Programmierer in die
        Fehlerbehandlung investiert hat. Und wenn ein Zmodem sich hier
        oder da ein wenig merkwrdig verhlt, liegt das daran, da es mit
        einer Situation konfrontiert wurde, die im Zmodem-"Standard" nicht
        vorgesehen war. Dies gilt ganz besonders fr Zmodem-Implementatio-
        nen in Fido-Mailern.



        Literatur fr Programmierer
        ---------------------------

        Chuck Forsberg, 1986-88: "The ZMODEM Inter Application File
               Transfer Protocol". Als Datei (ZMODEM.DOC) in den Netzen
               verfgbar. (*)

        Chuck Forsberg, 1986-88: C-Quelltext "RZ/SZ" (Public Domain). In
               den Netzen (insbes. Internet) verfgbar.

        J.R.Louvau, Philip R. Burn, Stefan Graf: TPZ 2.22 beta - Pascal-
               Quelltext fr Zmodem. Extrem buggy; nur zu Demonstrations-
               zwecken geeignet. Als TPZ222.* in den Netzen verfgbar.

        Rick Moore, 1988: "Fundamentals of FOSSIL implementation and use".
               Als Datei (FSC-0015.*) in den Netzen verfgbar. (*)

        Arne Schpers: "Turbo Pascal 4.0/5.0, Band 2", Addison Wesley,
               ISBN 3-89319-191-7. In diesem Buch finden Sie u.a. eine
               sehr gute Grundlagenbetrachtung zur Programmierung der
               seriellen Schnittstelle in Turbo Pascal.

        Wolfgang Hartung, Michael Felsmann, Andreas Stiller:
               Programmierung des UART 8250. c't 5/88, S. 204ff

        Martin Ernst, Andreas Stiller: PC-Interrupt-Programmierung
               (Interrupt-Controller). c't 8/88, S. 174ff

        Markus Maeder: Programmierung des 16550-FIFO. c't 2/92, S. 170f

        (*) Diese Dateien finden Sie u.a. in der CrossPoint-Supportbox;
        Telefonnummern: siehe oben.



        Versionsgeschichte
        ------------------

        + = neu      * = gendert     ! = korrigiert      - = entfernt

        0.95  21.09.94
              erste freigegebene Betaversion

        0.96  28.09.94
        +     Konfigurationsprogramm ZCONFIG
        +     Sprache umschaltbar zwischen Deutsch und Englisch
        !     Abbruchverhalten wesentlich verbessert
        +     DSZLOG
        +     Schalter -q deaktiviert Pause bei Programmende
        *     Schalter -r funktioniert jetzt umgekehrt
        +     automatische Chatzeit-Verlngerung
        !     sz: es wird jetzt die korrekte CRC verwendet
        !     diverse kleinere Bugfixes

        0.97  10.10.94
        *     sz: genauere cps-Berechnung
        !     rz -s: Fehler beim Anlegen von Unterverzeichnissen behoben

        1.0   05.11.94
        *     DSZ-Logfile wird nur bei Bedarf geffnet, um Netzwerk-
              Zugriffe anderer Programme zu ermglichen
        +     sz: Schalter -88
        +     Schalter -beep
        *     Online-Zeit-Anzeige bis zum Ende des Chats

        1.1  12.12.94
        !     sz: interne Timeouts korrigiert
        !     Restzeitberechnung bei bersprungenen Dateien korrigiert
        +     Schalter -z, -t und -xt zur Beschrnkung der bertragungs-
              dauer
        +     Schalter -os2 verringert OS/2-Systemauslastung

        1.1   10.03.95
        +     Schalter -nologo und -nowin deaktivieren Bildschirmausgaben
        +     COM-Schnittstellennummern bis 255 bei Verwendung von FOSSIL
        !     Schalter -os2 funktioniert jetzt auch unter OS/2 2.x
        +     Schalter -tl setzt FIFO-Triggerlevel
        +     Schalter -dv minimiert DesqView-Systemauslastung
        !     CTS-Timeout korrigiert

        1.15 18.03.95
        +     Schalter -ld fr DSZ-Logfile
        +     ZMLOG= und Schalter -lz fr PD-Zmodem-Logfile
        +     Schalter -w unterdrckt Warnungen
        +     zustzliche Optionen bei Schalter -o
        !     Fehler bei Chat-Zeilenumbruch behoben
        *     Fehlertoleranz bei der Dateinamenauswertung erhht
        !     korrekte "L"-Kennzeichnung im Logfile bei Carrierverlust
        *     Sendegeschwindigkeit optimiert
        *     hchste Schnittstellennummer von 255 auf 50 verringert
        *     FOSSIL von Byte- auf Blocktransfer umgestellt
        !     Timeout-Fehler beim Datumswechsel (23:59->00:00) korrigiert
        +     Schalter -ti fr Timeout-Dauer
        +     Schalter -82 und -84 fr Startblockgre 2k bzw. 4k
        +     Schalter -ts fr Uhrzeit-Synchronisation

        1.2   02.06.95
        +     Schalter -os2a bis -os2d
        *     OS/2-Schalter werden ignoriert, falls kein OS/2 vorhanden
        +     Schalter -\ fr Backslashes im DSZ-Logfile

        1.21  07.08.95
        !     Fehler bei -os2a korrigiert
        !     Zeitsynchronisation funktioniert jetzt auch ohne Logfile
        +     Ctrl-S berspringt den Rest der laufenden, empfangenen Datei
        +     Schalter -dtr
        *     RTS-Handshake verbessert

        1.22  19.09.95
        !     sz: seltenes Problem beim berspringen vorhandener Dateien
              behoben

        1.23  03.11.95
        *     Schnittstellenbug von SMC-Chipsatz wird abgefangen

        1.24  06.04.96
        !     Fehler in Chatzeitverlngerung behoben
        *     FOSSIL-Sendepuffer vergrert

|       1.26  08.01.98
|       !     Programm luft jetzt auch auf schnellen Pentiums
|       +     Schalter -i zur Begrenzung der Empfangsdateigre
