Eine deutschsprachige Anleitung finden Sie in ZM-GER.DOC. (For a German documentation see ZM-GER.DOC.) -------------------- Public Domain Zmodem -------------------- Release 1.24 by Peter Mandrella, 1994-96 NOTE: I did everything I could to avoid and remove bugs and errors in this program. Though, I do not guarantee that this program will work in the way you expect. I will take no responsibility for anything it does or does not. It is released without any warranty or support. What is Zmodem? --------------- Zmodem is a fast, reliable and popular "file transfer protocol" - a program for transfering files from one computer to another over a serial connection. Because of its speed, robustness and easy of use, Zmodem has replaced the formerly common protocols "Xmodem" and "Kermit" in most applications. Besides the original Unix Zmodem and the DOS implementations DSZ and GSZ, there are many other implementations for nearly any type of hardware and operating system. There are many wide-spread Zmodems for DOS - e.g. DSZ, GSZ, Texas Zmodem, CE-XYZ and others. So why had just another Zmodem clone to be invented? Because none of the existing implementations offers all of the below mentioned features. What is PD Zmodem? ------------------ PD Zmodem is a new Zmodem program for DOS, featuring ... + full Public Domain status, including commercial use + support of any IBM compatible serial interface, using any IRQ up to #15 + FOSSIL support + high throughput, especially with ISDN; optimum throughput on bad lines due to calculation of the best data block size + all standard Zmodem functions + ZedZap support (8k data blocks) + optional transfer of whole directory trees + chat function + automatic cps rate and transfer time control + time synchronization + minimum system load under OS/2 or DesqView + choice of English or German user interface There are three or four things (depending on how you count) which are not supported and currently not being considered for future versions of PD Zmodem: - built-in Xmodem and Ymodem - XON/XOFF (software) handshake The latter one may be accomplished, though, by using a FOSSIL driver. PD Zmodem assumes the following hardware and software environment: o any DOS compatible or emulating system o DOS version 3.0 or higher o about 130 KB of free DOS main memory o IBM compatible serial interface, or FOSSIL driver Syntax ------ Receive files: ZM [options] rz [path][file name] If a path name is issued, all received files will be stored there. If a file name is issued with or without path, the files are stored under this file name; of course, this only makes sense if only one file is transmitted. If "rz" is used without a path or file name, all files are received into the current directory. Send files: ZM [options] sz may be a single file name, a wild card (like "*.*") or a space-separated list of several file names and/or wild cards. All file names may include a path name. Instead of including the paramaters in the command line, you may put them into a seperate file - one parameter in each line - and issue the name of this file with a preceeding "@", e.g. ZM sz @FILELIST ZM will read the parameters line by line from FILELIST and handle them exactly like parameters typed in a DOS command line. The main purpose of this feature is to enable a large list of files to be send - as you know, the length of the DOS command line is limited. The parameters "rz" and "sz" may be abbreviated as "r" and "s". Options ------- All Options start with "-" or "/" and are separated from other options or parameters by at least one space. Options may be inser- ted at any place and in any order. So, ZM -c1 -b19200 -d sz FILE1.ZIP FILE2.ZIP is the same as ZM -d sz FILE.ZIP /b19200 -c1 FILE2.ZIP *All* options are, as their name says, optional and may be omitted. ZM assumes a default setting for any option. Serial interface settings: -cN Selects the serial interface. You may either use a -cXXX,YY COM number (N), e.g. "-c1" for COM1, or a combina- tion of address and IRQ (XXX,YY), like "-c2e8,5". If you issue a COM number, ZM uses the following addresses and IRQs: -c1 = -c3f8,4 -c3 = -c3e8,4 -c2 = -c2f8,3 -c4 = -c2e8,3 Default is "-c2". When using FOSSIL, possible COM numbers range from 1 to 50, otherwise from 1 to 4. -f Use FOSSIL driver. If you use this switch, you have to use the "-cN" form for the serial interface number. -bN Selects the DTE speed, i.e. the speed (bps rate, "baud rate") between modem and CPU, e.g. "-b38400" for 38400 bps. If -bN is omitted, ZM uses the currently selected speed. -d Ignore Carrier Detect (CD). Normally, your modem should indicate a connection by the CD signal. If your modem is not properly configured or if you are using a null modem (direct connection between two computers) without a CD line, then you may consider disabling the CD detection by "-d". Warning! If "-d" is used, ZM will not be able to detect a "NO CARRIER" connection breakdown! Instead, it will time out after at least 70 seconds. -h Ignore CTS. Normally, the modem uses CTS to signal when it is ready to receive. If the modem is not properly configured or if your null modem connec- tion lacks a CTS line, there might be no CTS signal. Warning! Do not use "-h" when sending files over modem connections with data compression! It will inevitably cause transmission errors. Hint: When transfering files from a very slow com- puter via null modem, the -h switch may increase speed by up to 10 per cent. -rts (1) PD-Zmodem uses RTS handshake and thus prevents receive buffer overruns at high transfer speeds on slow machines. If periodic transmission errors occur, try -rts. (2) If transmission errors occur while writing data to disk, you should issue "-rts". This will suspend the transmission during disk access. Warning: When being used with old ZyXEL ROM releases (4.x), the use of RTS handshake will cause the modem to crash. -n Disable the serial interface's 16550A FIFO buffer. This switch is intended for test purpose only. The FIFO buffer is necessary for stable data transmis- sion at high speeds (38.400 bps or more). -tlX selects a FIFO trigger level of 2, 4, 8 (default) or 14. This setting applies only to 16550A chips and not to FOSSIL drivers. Under DOS changing the trigger level may change the transfer stability. The effect of a lower or higher trigger level depends on the hardware. A level of 8 will work fine in most circumstances. Note: PD Zmodem 1.0 used a trigger level of 14. -dtr drops the DTR signal when PD Zmodem is finished. If you use the right modem settings, this causes your modem to drop the carrier. This feature is useful to end a connection after an unsupervised Zmodem transfer. -dtr may not work under OS/2. Zmodem settings: (rz) = setting is valid for receiving files (sz) = setting is valid for sending files -r (rz/sz) Disable Crash Recovery. If crash recovery is enabled, an aborted file transfer may be resumed at the position where the connection was lost. If the file is already complete, it will be skipped. When receiving, "-r" will work under any condition. If it works when sending, too, depends on the receiver's Zmodem implementation. If "-r" has been issued and the transfer is aborted, the incomplete file will be deleted. -oX (rz) Determines what will happen if the received file already exists and crash recovery is not appli- cable: -o0 = refuse new file -o1 = replace old by new file -o2 = rename new file (default) -o3 = rename old file The old -o switch does still exist and is the same as -o1. -16 (rz/sz) Use 16 bit instead of 32 bit checksums. This feature has been implemented for Zmodem standard conformance only. Actually, all Zmodem implemen- tations use the more secure 32 bit checksums. -8 (sz) Increase the maximum block size from 1024 to 8192 bytes ("ZedZap"). This will increase the throughput by about 0.5 per cent if the connection is error free. When "-8" is issued, ZM starts with normal 1k blocks and increases the block size slowly up to 8k if the transmission stays error free. When recei- ving, ZM automatically adapts to any block size up to 8k, independend of the "-8" switch. Warning! "ZedZap" is not a Zmodem but a FidoNet standard. It will work only if the receiver supports this special Fido feature, too. -8N (sz) Like "-8", with the exception that file transfers start immediately with N KB sized blocks. Possible values of N are 1, 2, 4 and 8. This switch only makes sense if the connection is stable and a maxi- mum of one error - including connection breakdowns - occurs per MB of transferred data. -p (sz) Transfer path names. Normally, ZM strips path names when transferring file names. If "-p" is issued and the receiver is configured properly, you may use this feature to send files into any directory path. The transferred path name is the same as the one given as paramater. If you specify only file names without paths, "-p" has no effect, except for the case that you used "-s" to transfer subdirectories. -s (sz) Sends files from subdirectories, too. If combined with "-p" and "*.*" as file name, you may use this feature for transmitting a whole directory tree. -s (rz) Allows receiving into any directory and creates directories, if necessary. If "-s" is omitted, all incoming files are stored in the current directory or the one which is given as command line parame- ter. More details are given in a section below. Warning! If "-s" is issued without an additional receive path name, the sending program will be able to write files into any directories on your hard disk! When combined with "-o", it may even over- write any existing files that are not protected by a "read only" attribute. DO NOT USE THE "-s" RECEIVER SWITCH WITHIN A BBS! IT WILL CAUSE A GIANT SECURITY HOLE! -e (sz) Encode all control characters. This switch is useful if the line is not "8 bit clean", i.e. if certain control characters cannot be transmitted. This applies especially to Unix-like terminal connections. "-e" reduces the data transfer rate by about 22 per cent. -ts (sz/rz) Synchonizes the receiver's system clock to the sender's clock. This works only if PD Zmodem is used and -ts is issued on both sides. If a PD Zmodem style log file (switch -lz) is created, the last log file entry shows the time difference. The accuracy is +/- 4 seconds. Warning: If PD Zmodem is used as external protocol within a program that does not recognize the PD Zmodem log file, time synchronization may result in calculating a wrong transfer time. Settings for transfer time restrictions: -zN sets a minimum transfer speed of N cps. If the cps rate drops for at least two minutes below N, the transfer will be aborted. ZM then returns errorle- vel 4. -tN sets a maximum transfer time of N minutes or an end -thh:mm time (e.g. -t20:15 fr 8:15pm). If the given time limit was exceeded, but at least after two minutes, ZM aborts the transfer with errorlevel 5. -xtN Like -t, but instead of the real time, the -xthh:mm currently calculated transfer time is used. The transfer will be aborted "preventive" if PD Zmodem has recognized that it probably cannot be finished within the given time limit. Note: -t and -xt cannot be combined. -tiN sets timeout in seconds. If the Zmodem on the other end does not react for more than N seconds, the transfer is aborted. N is rounded up to a multiple of 10 seconds and may range between 30 and 600. The default is 80 seconds. Other settings: -ld creates a DSZ style log file (see below). Replace by the desired file name, optionally inclu- ding a full path specifier. This switch supersedes the environment settings DSZLOG= and ZMLOG=. -\ uses "\" as separator in DSZ style log files instead of the Zmodem standard separator "/". -lz creates a PD Zmodem style log file (see below). This switch supersedes the environment settings DSZLOG= and ZMLOG= and the switch -ld. -m Monochrome Display, e.g. for VGA mono screens or for laptop LC displays. -nochat Disables ZM's chat feature. More details are described below. -nologo Disables any screen output before and after displaying the Zmodem transfer window. -nowin Disables the Zmodem transfer window display. -beep Enables an acoustic signal before program termi- nation. -q Disables the 1 to 2 seconds pause before program termination. The pause shall make readable the last displayed message before closing the Zmodem window. If you do not use a FOSSIL driver, characters received during this pause may be lost, which might be annoying if ZM is used as external protocol within a terminal program. -os2x reduces the system load under OS/2. "x" may be any character from a to d and selects different methods for releasing time slices: -os2a uses int 15h/86h (BIOS) -os2b uses int 28h (DOS) -os2c uses sti/hlt/35h/cah (OS/2) -os2d uses int 2fh/1680h (DPMI) You will have to try which method works best. All four methods use undocumented OS/2 functions and at least -os2a and -os2d are not supported by all OS/2 versions. Using unsupported functions may result in OS malfuncions, including a total system stop (Trap). -dv reduces the system load when receiving data under DesqView. -w suppress startup warnings, e.g. if no files to send are specified. Transmission of subdirectories ------------------------------ If PD Zmodem is running on both sides of the connection, you may use it to transfer whole directory trees. Example: Sender: ZM -b38400 -s -p sz C:\TEXT\*.* Receiver: ZM -b38400 -s rz Here, the whole directory tree contents of C:\TEXT\... are trans- ferred at 38.400 bps via COM2 to the receiving system. Note that the disk letter "C:" is stripped. If the current directory of the receiver is D:, the files will be stored into D:\TEXT\... If the receiver specifies a directory path, too, e.g. ZM -b38400 -s rz C:\COPY then the receiver's path will be inserted before the sender's path. So our example files will end up in C:\COPY\TEXT\... If the sender used only a relative path name without the leading "\" and if the receiver did not specify a receive path, then the files will be stored within and/or below the receiver's current direc- tory. Example: Sender: C:\> ZM -b38400 -s -p sz TEXT\*.* Receiver: D:\DOWNLOAD> ZM -b38400 -s rz Here, the files will be stored in D:\DOWNLOAD\TEXT\... Skipping files -------------- You may use Ctrl-S to skip the rest of the currently received file. This is not a Zmodem standard function. The result depends on the sending Zmodem: PD-Zmodem, CeXYZ, Terminate, miscellaneous Fido Mailers: The rest of the current file is skipped. The sender handles the file as "correctly transmitted", but of course it is incom- plete. Telemate: The rest of the current file is skipped. The file is incomplete and the sender considered it to be bad. GSZ: The skip command is not accepted, but the senders reacts in the right way. PD Zmodem says "file skip failed" and proceeds with receiving. The file will be received complete and correctly. Not seen yet, but ... The skip command doesn't work, and the sender is dumb. The transfer is either continued, or it will be or must be aborted. The received file is bad. Chat ---- PD Zmodem features a built in chat function. When ZM is used on both sides of the connection, it will display an additional window within which you may "talk" to the person at the other side. Note that pressing a key during the transmission may cause a loss of characters by the serial interface and thus transmission errors, if no 16550A FIFO chip is present and the speed is 38400 bps or above. The errors will be corrected by Zmodem, but this will slow down the transfer. If chat characters were transmitted during the last 10 seconds of file transmission, ZM will stay in chat mode until no character was transmitted for at least 15 seconds or until the Escape key is pressed. You may clear the chat window at any time using Ctrl-L. ZM's chat function is NOT compatible to chat functions of other Zmodem implementations, e.g. Super Zmodem. It is not part of the Zmodem standard, but a special PD Zmodem extension. In the very unlikely case that the chat extension may cause problems when starting transmissions to other Zmodem programs, you may disable it by the command line switch "-nochat". When chat mode is active, ZM uses a turbo mode to increase the data transfer rate by about 1 per cent. This turbo mode is not part of the Zmodem standard, too, and is implemented in different ways in different programs (GSZ, Super Zmodem). It works only if the same program is used at both ends of the line. Examples -------- ZM sz FILE.ZIP sends the file FILE.ZIP on COM2 at the current baud rate. ZM -c3e8,5 -d sz @FILELIST sends all files that are listed in the file FILELIST (one file name each line) on COM3 (address 3e8) / IRQ 5, ignoring the Carrier signal. ZM -c1 -b38400 -f rz receives files on COM1 at 38.400 bps using a FOSSIL driver. ZM -o rz D:\DOWN\FILE.ZIP receives files on COM2 and stores them in the directory D:\DOWN, over- writing any existing files. ZM -c1 -b9600 -e sz *.* sends all files from the current directory on COM1 at 9600 bps over a terminal connection to something like a unix host. ZCONFIG ------- You may use the program ZCONFIG to customize ZM's colors. Besides that, ZCONFIG allows changing the language for all screen outputs of ZM between English and German. Changes within ZCONFIG must be saved explicitely using the menu choice "Save changes". If you do not have the file ZCONFIG.EXE, your PD Zmodem package is incomplete. Renaming of ZM -------------- You may rename or copy ZM.EXE into RZ.EXE and SZ.EXE. When star- ting RZ or SZ, you don't have to issue the parameter "rz" resp. "sz". Thus, you may e.g. receive files on COM2 at the current baud rate by only typing the two letters "RZ". PD Zmodem and CrossPoint ------------------------ When using PD Zmodem as external Protocol for the point and offline software CrossPoint, you should use the following settings: Uploader: ZM.EXE -c$ADDRESS,$IRQ sz $UPFILE Downloader: ZM.EXE -c$ADDRESS,$IRQ rz $DOWNFILE If you enabled "ignore CD" and "ignore CTS" at /Config/Modem, you must add the switch -d resp. -h. It might be useful to add the following switches for download: -rts if periodic transmission errors occur during download -beep if you wish an acoustic signal at the end of netcall When using a FOSSIL driver, the settings are: Uploader: ZM.EXE -c$PORT -f sz $UPFILE Downloader: ZM.EXE -c$PORT -f rz $DOWNFILE Log file -------- [All properties of GSZ mentioned below refer to the Nov-29-93 release.] ZM scans the DOS environment for the entry "DSZLOG=" and creates or appends to a DSZ compatible log file if "DSZLOG=" contains a valid file name. The same is done if the switch -ld is issued. -ld supersedes DSZLOG=. Example: 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 zm-recv.bak -1 The first character means: Z = file was received successfully z = file was sent successfully E = file reception was aborted e = file sending was aborted L = carrier lost while receiving l = carrier lost while sending Note: GSZ ignores at this point the "d" switch (ignore carrier signal) and creates a "L" or "l" instead of "E" or "e" if no carrier is present. ZM never creates a "L" or "l" entry if the "- d" switch is issued. The other columns contain (from left to right): - Number of transferred Bytes, including bytes skipped by crash recovery - DTE bps rate - average cps rate (characters per second) - Number of transmission errors - Number of "CTS lows", i.e. a count how often the CTS handshake was used (the number the CTS LED of your modem went off and on during the transmission). - The size of the last but one data block, or some useless number if the file consists of only one block (it is *not* the size of the last data block, as stated in the GSZ documentation). - The file name, including a path name if present. Instead of the DOS "\" separators, Unix-like "/" separators are used - except if you specify the "-\" switch. - The other program's serial number, or -1 if not present. GSZ puts its registration number here. Note that the columns have no fixed width. If the file size, the number of errors or another field exceeds the width of the corres- ponding column, the other fields will be moved to the right. GSZ may give any number up to the file's size as cps rate when crash recovery is used, which may significantly disturb the logfile's format. Thus, DSZLOG processing programs should interpret any line as a space-separated list of fields and should be aware of false entries created by buggy programs. If the environment variable "ZMLOG=" is present and contains a valid file name, or if the switch -lz is issued, ZM appends to or creates a log file with this file name. -lz supersedes ZMLOG=. The PD Zmodem log file is preferred to a DSZ log file, if both are issued. Example: 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, 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 The coloumns except for the first one are not fixed. The first four entries on each line are separated by one ore more spaces. The meaning of these entries is (from left to right): - tag like in DSZ log file, or one of the following: T time synchronization entry S received file was skipped by Ctrl-S - transfer start date (mm-tt-jj) - transfer start time (hh:mm:ss) - within "T" lines: the time difference in seconds; otherwise: full path and name of the transferred file After this, there may be any additional entries in any order, separated by ",". Each entry consists of a value, one or more spaces and a label. There may be spaces before and after the ",". The following additional entries are defined at the moment: - bytes: number of transferred bytes. If crash recovery was used, two numbers are given, separated by "/". The first one is the number of bytes transmitted and the second one the total file size. - s: transfer time, rounded to full seconds, including wai- ting time before and after the file transmission itself. - cps: characters per second, calculated using a 1/18 seconds clock, *without* waiting time before and after the file transmission. - errors: number of transfer errors. Future PD Zmodem releases may add more entries and more tags in the first coloumn. Transfer abortion ----------------- ZM will abort the transfer if one of the following conditions is true: - You have pressed the Escape key. (*) - The other side's Zmodem wants to stop the transfer. - Someone at the other end has pressed Ctrl-X several times - ZM made 25 subsequent unsuccessful tries to transmit a single data block - Nothing has happened for more than 70 seconds resp. the time issued by the -ti switch (timeout). - Your hard disk is full. - You have issued -o0 and a file was refused. - The cps rated dropped for at least two minutes below the minimum given by the -z switch - The maximum transfer time given by -t or -xt was exceeded. - When Ctrl-S is pressed, the rest of current file is aborted and the transfer continues with the next file. (*) If the other side does not react, it may take up to 10 seconds until the transfer is aborted. You may force an instant transfer shutdown by pressing Escape twice. Errorlevel ---------- ZM returns the following errorlevels: 0 = transfer was completed successfully 1 = transfer was aborted 4 = cps rate too low (see -z switch) 5 = the maximum transfer time (-t/-xt switch) was exceeded 9 = wrong or missing parameter(s) Please note that errorlevel 4 and and 5 normally occur only on the one connection side that stopped the transfer - even if PD-ZM is used on both sides and the same time limits are given. The two Zmodem programs never work totally synchrone. On the other side, PD-ZM returns errorlevel 1. Drawbacks --------- PD Zmodem does not support the Zmodem windowing mode. This may result in a lower throughput if errors occur on a buffered conenc- tion, e.g. over packet-switching networks. With normal point-to- point operation this restriction doesn't matter. Glossary -------- 16550A Serial interface chip which reduces the CPU load by an I/O buffer (FIFO) and thus increases the transfer stability at high speeds. It is absolute- ly necessary when transfering at more than 38400 bps oder when using a multitasking environment. Unfortunately, most manufacturers still equip their serial intefaces with a cheap 16450 chip. Batch Concerning Zmodem: Transmission of multiple files within one transfer. baud Steps per seconds. That's NOT the same as bps! A 14400 bps modem works at 2400 baud and transmits 6 bits with each step. One exception from the rule are serial interfaces, where 1 baud is equal to 1 cps because only one bit is transmitted per step. bps Bits (information units) per second Carrier If a modem carrier is present, a connection between two modems has been established. Carrier Detect Serial interface line which is used by the modem to signal a connection to the CPU cps Characters per second Crash Recovery Zmodem feature for resuming an interrupted file transfer CRC Cyclic Redundancy Check - checksum method for securing data integrity. It is used by Zmodem, by Modems, by Archivers and by other data equipment and software to detect damaged data blocks. CTS Clear to Send - Control signal which means that the modem is ready to receive data DSZ / GSZ Wide-spread Zmodem implementation from Omen Tech- nologies. DSZ and GSZ have some minor bugs but are very stable and reliable, though. FidoNet largest non-commercial BBS net FIFO see 16550A Flow Control Method for controlling the data flow, e.g. over a serial interface. Common forms of flow control are hardware (RTS/CTS) and software (XON/XOFF) flow control. PD-ZM supports only the hardware version. Handshake see "Flow Control" IRQ Interrupt Request. It is used e.g. by the serial interface to signal reception or transmission of data to the CPU. Each interface needs an own IRQ. XTs have IRQs from 0 to 7; ATs add IRQ 8 to 15. Kermit relatively secure, very slow and pretty complicated file transfer protocol Overhead The amount of control data added to transferred or stored data. If 20 additional bytes are needed for transferring 1000 data bytes, the overhead is 2 per cent. Zmodem's minimum overhead is about 3.5 per cent. RTS Ready to Send - control line used by the CPU to signal to the modem that it is ready to receive data Windows Graphical operating system extension which makes an adventure of data communications once more Xmodem unsecure, slow and primitive file transfer protocol, invented in 1974 by Ward Christiansen Ymodem fairly secure, medium fast, but rather primitive file transfer protocol ZedZap Zmodem extension with 8k data blocks, originating in FidoNet. The only advantage compared to stan- dard Zmodem is a neglectable 0.5 per cent increase of throughput over error free lines. Zmodem secure, fast and powerful file transfer protocol, created in 1986 by Chuck Forsberg. Copyrights, Credits, Trademarks ... ----------------------------------- The CRC routines within PD Zmodem are used courtesy of Stephen Satchell. The Zmodem implementation is based on a port of Chuck Forsberg's public domain source "rz/sz", released in the beginnig of 1988 (later releases os this C source are not public domain, but shareware with certain restrictions). My very special thanks to Anders Hejlsberg for the world's finest (Pascal) compiler. Thanks to Tom Taussig for proof reading this text. Any product names mentioned in this text may be (and in most cases are) trademarks or registered trademarks. PD Zmodem is not copyrighted, -lefted, -upped, -downed or registered in any way and may be used for anyting that is fun for you (as long as you consider using a Zmodem for it). You may debug and reverse engineer it until you become mad. Bug reports and other hints concerning PD Zmodem are welcome. Please write to Internet: pm@daisy.de Fidonet: Peter Mandrella @ 2:2454/97.80 Please do not ask me any questions about Zmodem or the use of PD Zmodem! If you don't find answers within this text, please ask your hardware manufacturer, your software dealer, your mom, your dad, your wife, your psychiatrist, or even post your questions into an appropriate net newsgroup. Please don't send me any fido crash mails with RREQ flag, because my bossnode's software doesn't like them. Programmer's literature ----------------------- Chuck Forsberg, 1986-88: "The ZMODEM Inter Application File Transfer Protocol". Available as file (ZMODEM.DOC) on the net. Chuck Forsberg, 1986-88: C source of "rz" and "sz" (Public Domain). Available on the net (especially Internet). J.R.Louvau, Philip R. Burn: TPZ - Pascal Zmodem source. The public available TPZ release(s?), or at least one of them, is/are extremely buggy. Anyway, they are useful for demonstration purpose and for understanding Chuck's C source. Rick Moore, 1988: "Fundamentals of FOSSIL implementation and use". Avaliable as file (FSC-0015.*) on the net (especially FidoNet). Arne Schaepers: "Turbo Pascal 4.0/5.0", Volume 2, Addison Wesley. A German book that contains a very useful discussion of serial interface programming with Turbo Pascal. Wolfgang Hartung, Michael Felsmann, Andreas Stiller: Programming of UART 8250. c't 5/88, page 204 (German) Martin Ernst, Andreas Stiller: PC interrupt programming. c't 8/88, page 174 (German) Markus Maeder: 16550 FIFO programming. c't 2/92, page 170 (German) If you know any good English sources of information about UART and interrupt programming, e.g. from Byte or Dr. Dobb's journal, please let me know, so that I may mention them in future versions of this text. The Inevitable Version History (TM) ----------------------------------- + = new * = changed ! = fixed - = removed 0.97 10-10-94 first release including English documentation 1.0 11-05-94 * DSZ logfile is kept open only when needed + sz: new switch -88 + new switch -beep * online time display until end of chat 1.1b 12-12-94 ! sz: corrected internal timeouts ! corrected remaining transfer time after files were skipped + Switches -z, -t and -xt limit connection time + Switch -os2 reduces OS/2 system load 1.1 03-10-95 + Switches -nologo and -nowin deactivate screen output + COM port numbers up to 255 when using FOSSIL + Switch -tl selects FIFO trigger level + Switch -dv reduces DesqView system load ! corrected CTS timeout 1.15b 03-18-95 + switch -ld for DSZ log file + ZMLOG= and switch -lz for PD Zmodem log file + switch -w suppresses warnings + additional options for switch -o ! minor chat display error fixed ! correct "L" tag in log file on carrier loss * send speed optimized * changed FOSSIL support from byte to block transfers ! fixed timeout bug on date change (23:59 -> 00:00) + switch -ti for timeout + switches -82 and -84 for starting block sizes 2k resp. 4k + switch -ts for time synchronization 1.2 06-02-95 + switches -os2a to -os2d + switch -\ for backslashes in DSZ log files 1.21 08-07-95 ! fixed -os2a bug ! -ts works now without PD-ZM log file, too + Ctrl-S skips rest of the file being received + -dtr switch * improved RTS handshake 1.22 09-18-95 ! sz: fixed problem when skipping existing files 1.23 11-03-95 * fixed SMC chipset problem | 1.24 04-06-96 | ! fixed chat time extension bug | * increased FOSSIL send buffer size