home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / TXZM241.ZIP / TXZM.DOC < prev    next >
Text File  |  1994-10-03  |  28KB  |  516 lines

  1.  
  2.                             TXZM -- ZMODEM PROTOCOL DRIVER
  3.  
  4.                (c) 1991-94 Mike Dumdei, 6 Holly Lane, Texarkana Texas
  5.                         North East Texas DataLink  1:3819/128
  6.                         BBS (903)838-6713, Voice (903)838-8307
  7.  
  8.               TXZM (Texas Zmodem :) is a zmodem protocol that was
  9.           developed to demonstrate the speed and capabilities of the
  10.           MCOMM C serial communications library.  The latest version of
  11.           TXZM or MCOMM may be obtained from N.E.T. DataLink by either
  12.           logging in and downloading or by file request of "MCOMM" or
  13.           "TXZM".  The shareware version of MCOMM contains the TXZM
  14.           shell in source form and the low level Zmodem driver in
  15.           library form.  The complete source code comes with the "Libs &
  16.           Source" registered version of MCOMM.  Libraries for all memory
  17.           models except for the BCC/TC huge model come with the "Libs
  18.           Only" registered version of MCOMM. See the MCOMM order form
  19.           for specifics on various options.
  20.  
  21.                                   TXZM RESTRICTIONS
  22.  
  23.               TXZM IS NOT PUBLIC DOMAIN however the executable version
  24.           may be distributed and used free of charge for non-commercial
  25.           purposes.  If you intend to use TXZM commercially or in a com-
  26.           mercial environment and the program will be loaded or operated
  27.           on more than 3 systems ANYWHERE within the organization, you
  28.           must obtain a license.
  29.  
  30.               The complete TXZM source code is provided as part of the
  31.           "Libs & Source" registered version of the MCOMM software
  32.           package. Linkable libraries are provided with the "Libs Only"
  33.           registered version of MCOMM.  None of the source code or
  34.           libraries that are part of the registered version of MCOMM may
  35.           be distributed, neither may they be incorporated in whole or
  36.           in part into a competing software product without a written
  37.           license agreement. Competing software products are products
  38.           that are not end user programs themselves, such as "Your
  39.           Serial Library", and products that directly compete with TXZM
  40.           (fully developed terminal programs, BBS systems, and similar
  41.           products are FUNCTIONALLY DIFFERENT than TXZM and NOT
  42.           considered competing products).
  43.  
  44.               The license agreement requirement for commercial use of
  45.           the EXECUTABLE VERSION ONLY (TXZM.EXE) does not apply to
  46.           governmental, educational, church, civic, or non-profit
  47.           organizations.  This does not waive restrictions that apply to
  48.           the source code for those organizations.
  49.  
  50.  
  51.                          MCOMM ASYNC LIBRARY (Advertisement)
  52.  
  53.               MCOMM is a serial communications library for Microsoft C,
  54.           Turbo C/C++, Borland C/C++, and Zortech C/C++.  It also will
  55.           work with any other C compiler or language that supports
  56.           Microsoft C calling conventions.  Some of the features of
  57.           MCOMM are:
  58.  
  59.                -  Fully interrupt driven
  60.                -  16550 FIFO mode support
  61.                -  Baud rates up to 115200 baud
  62.                -  Supports definitions for any comm port that operates on
  63.                   IRQs 2 through 15 at any address
  64.                -  Supports simultaneous operation of 4 ports
  65.                -  Written in assembler for maximum speed and minimum code
  66.                   size
  67.                -  Advanced features such as block transmit and receive,
  68.                   XON/XOFF and hardware flow control, receive buffer look
  69.                   ahead, definable ring buffer sizes and location, ...
  70.  
  71.                 Also included with MCOMM is a set of ANSI capable video
  72.           functions that support windowed output, save/restore screen
  73.           functions, timer functions, and miscellaneous other code.  The
  74.           current shareware version of MCOMM is MCOMM600.ZIP.  It
  75.           includes a complete small model LIB, TXZM (partial source,
  76.           rest as libs), and both a C and C++ demo terminal program.
  77.           The registered version is available as either "Libs only" or
  78.           "Libs & Source". The "Libs Only" version is $25 and includes
  79.           libraries for all memory models. The "Libs & Source" version
  80.           is $45 and comes with both libraries and all source code.  See
  81.           the MCOMM order form.
  82.  
  83.                                     TXZM OPERATION
  84.  
  85.               TXZM has 3 modes of operation.  These are command line
  86.           send, command line receive, and terminal mode.  Running TXZM
  87.           with no command line parameters will list available TXZM
  88.           options.
  89.  
  90.           Specifying the serial port:
  91.  
  92.               TXZM directly supports COM1 through COM4, however COM3 and
  93.           COM4 on older hardware may not match what is considered
  94.           standard.  The -c switch (described below) may be used for
  95.           non-standard configurations of COM3 and COM4 or to force TXZM
  96.           to recognize a custom port.  For standard versions of COM1-4,
  97.           use "txzm com#" where '#' is 1-4.
  98.  
  99.           TXZM switches:
  100.  
  101.               -u  Start in terminal mode.  Terminal mode may be started
  102.                   either before or after a CONNECT is made.  It has a
  103.                   limited set of functions (dial, upload, download).
  104.  
  105.               -r  Start in receive mode.  This switch must come last on
  106.                   the command line if it is used.  It may be followed by
  107.                   an optional subdirectory if the files are to down-
  108.                   loaded to a specific location.  The -r switch may be
  109.                   used in conjunction with the -u switch to specify a
  110.                   download directory.  When used with the -u switch,
  111.                   TXZM starts in mini-terminal mode.
  112.  
  113.               -s  Start up in send mode.  This must be the last switch
  114.                   on the command line and be followed by the filename(s)
  115.                   to be sent. The filename list may contain wild cards.
  116.                   The send function will recurs subdirectories if the
  117.                   filename specifications are placed in parenthesis.
  118.                   Placing filenames in parenthesis to recurs
  119.                   subdirectories also works in mini-terminal mode.
  120.  
  121.               -p  Send or accept complete pathnames.  This option, used
  122.                   in conjunction with the -r option, will cause TXZM to
  123.                   accept complete pathname information in the received
  124.                   filename. Without it, only the root name and extension
  125.                   of the filename are used.  If the received filename
  126.                   specifies a directory that does not exist, it will be
  127.                   created.  If a download directory was specified (-r
  128.                   dlpath), the subdirectories will be created under
  129.                   "dlpath".
  130.  
  131.                   When used with the -s switch, the -p switch will cause
  132.                   filenames to be sent with complete path information.
  133.                   Per zmodem specifications, only the path is sent (no
  134.                   drive identifiers).  Without the -p switch only the
  135.                   file's root name and extension are sent.  This applies
  136.                   even if recursing subdirectories.
  137.  
  138.               -b####   Specify the CONNECT baud rate.  The CONNECT baud
  139.                   rate is used to determine estimated file transfer
  140.                   times. TXZM currently will not adjust to a CONNECT
  141.                   rate when initially making the connection.  Unless a
  142.                   locked baud rate is used (-l), you must dial using the
  143.                   baud rate you will CONNECT at.  If the connection is
  144.                   already established, and neither -l or -b is given,
  145.                   TXZM will open the port using the baud rate it is
  146.                   currently operating at.
  147.  
  148.               -l####   Set a locked baud rate.  Use this option to set a
  149.                   fixed computer to modem baud rate. The -b option may
  150.                   be used with the -l option to specify both the
  151.                   computer to modem rate and the modem to line rate.
  152.  
  153.               -chhh,#  Specify a non-standard port configuration.  TXZM
  154.                   will work with any port addresfrom 000h to 3f8h and
  155.                   IRQs 2-15.  Replace 'hhh' with the port address in hex
  156.                   and '#'ith the IRQ to be used.  For example, to use a
  157.                   port at I/O address 2E8h that uses IRQ 5, use "txzm
  158.                   -c2E8,5".
  159.  
  160.               -h  Use hardware flow control (RTS/CTS).  This is required
  161.                   for modems that use a locked baud rate.
  162.  
  163.               -i  Ignore absence of carrier detect signal.  Use this
  164.                   switch when using TXZM to transfer  files between
  165.                   systems connected with a null modem cable. (TXZM only
  166.                   requires the Rx, Tx, and Gnd wires to be connected).
  167.  
  168.               -v  Disable serial I/O  during disk writes.  Use this
  169.                   option if errors occur when the received data is
  170.                   written to disk.  This should only be necessary when
  171.                   operating at high baud rates with no 16550 UART or the
  172.                   file is being downloaded to a floppy.  The -v option
  173.                   also expands the disk buffer to 20K bytes to maintain
  174.                   a higher level of efficiency.
  175.  
  176.               -e# Set duplicate file handling option.  This option
  177.                   determines what happens if an attempt is made to
  178.                   download a file that already exists.  The following
  179.                   choices are available:
  180.                     -e0  Skip the file -- do not download.
  181.                     -e1  Resume the transfer at the end of current file.
  182.                          This is the default.
  183.                     -e2  Create a duplicate file name and download the
  184.                          file as a separate file.
  185.                     -e3  Overwrite the existing file.
  186.  
  187.               -w####  Sets the maximum bytes that may be in transit at
  188.                   any one time (transmit window size).  This must be a
  189.                   multiple of 128.
  190.  
  191.               -x  Escape all control characters.  This option causes the
  192.                   characters between 00h and 20h, 80h and A0h, 7Fh, &
  193.                   FFh to be ZDLE escaped. Zmodem automatically escapes
  194.                   XON, XOFF, ZDLE (CAN), DLE, and "<CR>@<CR>" sequences.
  195.                   The -x option is for networks that do not pass other
  196.                   control characters.
  197.  
  198.               -x# As an option, a specific list of control characters to
  199.                   escape may be given.  For example to only ZDLE escape
  200.                   the ESC character (27 decimal or 1B hex) and
  201.                   ESC+parity (145 decimal or 9B hex) and let all other
  202.                   control characters pass unaltered, use:  -x27,145.
  203.  
  204.               -6  Force use of 16 bit CRC.  The default is 32 bit CRC.
  205.                   This option does not show up on the help screen (ran
  206.                   out of room).
  207.  
  208.               -7  Strip high bit from received characters in terminal
  209.                   mode.
  210.  
  211.               -0  Use BIOS screen writes.  This only works in command
  212.                   line mode.  Mini-terminal still does direct writes.
  213.  
  214.               -q  Run in DesqView mode.  This option makes TXZM DesqView
  215.                   aware meaning it writes to DesqView's video buffer
  216.                   rather straight into video memory.  It also causes
  217.                   TXZM to release its time slice when it is idle.
  218.  
  219.               -y  Added in version 2.25.  Allows overriding the received
  220.                   filename on Zmodem receives.  Ex:
  221.                     txzm -y THISNAME.ZIP -r
  222.                   The above line would cause the received file to be
  223.                   called "THISNAME.ZIP"  rather than  the name sent by
  224.                   the sender. This option does not show  on the help
  225.                   screen.
  226.  
  227.               -$  Added in version 2.30.  Sets "quiet mode" when doing
  228.                   file transfers.  With this option set, the display of
  229.                   the zmodem transfer screen and transfer stats are
  230.                   disabled. This option does not show  on the help
  231.                   screen.
  232.  
  233.           16550 related switches:
  234.  
  235.               -d  Do not enable 16550 FIFO mode. Normally TXZM
  236.                   automatically enables FIFO mode.  If you are using a
  237.                   Western Digital 16550 UART at lower baud rates you may
  238.                   need to use this option. The WDC16550 UART doesn't
  239.                   work in FIFO mode at low baud rates.  If you have a
  240.                   16550 and don't know if it is a Western Digital but
  241.                   get Garbled Packet errors when attempting to start a
  242.                   transfer, try this option.  The National Semiconductor
  243.                   16550 (NS16550A) works at all baud rates in FIFO mode.
  244.  
  245.               -t# Maximum characters to send to 16550 FIFOs per
  246.                   interrupt. This may be between 1 and 16.  The default
  247.                   is 8.  A lower value may be required for modems that
  248.                   used a locked baud rate, hardware flow control, and
  249.                   have a small internal buffer.  8 works fine with USRs.
  250.  
  251.               -m  Disable modem status register interrupts.  This option
  252.                   is another patch to accommodate Western Digital's
  253.                   version of the 16550.  Some WDC16550s lock up if the
  254.                   modem status lines (CTS, CD, etc.) are not connected
  255.                   to a driving signal.  This could happen if the serial
  256.                   or null modem cable being used does not have all
  257.  
  258.                   signal lines connected (very possible with a null
  259.                   modem cable).  Using -m prevents this problem.  It
  260.                   also disables hardware flow control and carrier
  261.                   detect, however, so if you require either of these and
  262.                   have a WDC16550 you must use a cable with all
  263.                   appropriate lines connected.
  264.  
  265.         Examples:
  266.  
  267.             txzm -p -s (c:\)   // send all files on drive C -- include
  268.                                // complete path information
  269.  
  270.             txzm -p -r         // accept complete pathnames -- if path
  271.                                // does not exist, create it
  272.  
  273.             txzm -p -r d:\temp // accept complete pathnames but put files
  274.                                // and created directories under D:\TEMP
  275.  
  276.             txzm -r            // receive to current directory, if path
  277.                                // information is received it is ignored
  278.  
  279.             txzm -s (\project\*.c) (\project\*.h)  // Sends all .c and .h
  280.                                // files in the subdir PROJECT and all subs
  281.                                // under project.  Does not send pathnames.
  282.  
  283.             txzm -u -r \dnlds  // start in mini-terminal mode, received
  284.                                // files are placed in "\dnlds" directory
  285.  
  286.             txzm com2 -u       // mini-terminal mode, use COM2
  287.  
  288.             txzm -l38400 -b9600 -h -s file1.zip file2.zip
  289.                                // 38400 baud locked rate, 9600 CONNECT,
  290.                                // hardware handshake, send file list
  291.  
  292.             txzm -b2400 -u     // 2400 baud, mini-terminal mode
  293.  
  294.             txzm -c2e0,15 -r   // custom serial port at 2E0h on IRQ15,
  295.                                // use current baud rate, receive
  296.  
  297.             txzm com2 -b115200 i u  // 115200 baud, ignore carrier detect,
  298.                                // mini-terminal mode
  299.  
  300.             txzm -e2 -r        // COM1, current baud rate, receive, create
  301.                                // duplicate name if file exists
  302.  
  303.             txzm -s @filelist  // send all files listed in "filelist"
  304.                                // the name "filelist" is an example only
  305.  
  306.  
  307.             Other than the -r and -s switches that must appear last on
  308.         the command line if used, neither case nor switch order are
  309.         significant. Also you may use a '/' instead of a '-' or no
  310.         switch identifier at all.  Ex: "txzm i E2 -u /b2400 r" is legal
  311.         syntax.
  312.  
  313.  
  314.                                     GENERAL NOTES
  315.  
  316.             TXZM is faster than any other zmodem protocol driver I am
  317.         aware of.  It will run at 95% efficiency in both send and
  318.         receive modes at 115200 baud on an 8 MHz 286 with a 16550 UART.
  319.         This translates to an effective throughput of 110 Kbps.  In a PC
  320.         Magazine (Apr 91) article reviewing various communications
  321.         software packages, the BEST zmodem operated at less than 50 Kbps
  322.         when tested at 115200 baud on the same type of equipment (8 Mhz
  323.         286's with 16550 UARTs).  TXZM is over twice as fast.  The
  324.         review covered several well known shareware and commercial
  325.         packages.
  326.  
  327.             TXZM was also tested on a 4.77 MHz 8088 laptop that
  328.         contained the functional equivalent of a 16450 UART (no FIFOs)
  329.         and a 4.77 MHz IBM XT (true blue IBM) that had 16550 UARTs
  330.         installed.  On the laptop system TXZM could send most
  331.         efficiently at 23040 baud and receive most efficiently at 28800
  332.         baud.  The XT, with 16550 UARTs, could receive at a full 38400
  333.         baud but with the baud rate set to 38400 could only achieve an
  334.         effective throughput rate of around 35000 baud. The tests were
  335.         performed using the systems' hard drives (original slow hard
  336.         drives), not a RAM disk, which also had some impact on speed.
  337.         With 16550 UART's, TXZM could very effectively work a high speed
  338.         modem (HST, V.32, or V.32bis) even on a slow 4.77 MHz computer.
  339.  
  340.             If you compare the CPS rating stated by TXZM and other
  341.         programs, you may find TXZM reporting slightly lower rates.
  342.         This is due to a difference in the calculation method TXZM uses
  343.         only.  Many other progams appear to fudge a little bit on their
  344.         statistics. At lower speeds or on fast CPUs all Zmodem drivers
  345.         will run about the same. The speed difference shows up when the
  346.         system is under a load such as with extremely high baud rates or
  347.         moderately high baud rates on slow CPUs.
  348.  
  349.  
  350.                                      BBS SUPPORT
  351.  
  352.             TXZM now recognizes the TXZMLOG environment variable and
  353.         will create a log file with the same format as the one created
  354.         by DSZ if DSZLOG is set.  This was added primarily to support
  355.         BBS software that uses DSZLOG format log files to track
  356.         downloads, efficiency, etc.  If all you want is a log file you
  357.         can set TXZMLOG only.  If you are using BBS software that looks
  358.         for a DSZLOG variable, you will have to also set DSZLOG to the
  359.         same value as TXZMLOG.  Ex:
  360.  
  361.               set TXZMLOG=C:\BBS\ZMODEM.LOG
  362.               set DSZLOG=C:\BBS\ZMODEM.LOG
  363.  
  364.             I did not use DSZLOG to avoid infringing on any non-public
  365.         domain features of DSZ.  If you want to patch your personal copy
  366.         of TXZM to use DSZLOG directly rather than TXZMLOG, you can use
  367.         a utility such as Norton Utilities or PC Tools to scan TXZM.EXE
  368.         for the string "TXZMLOG" and change it to "DSZLOG".  This is
  369.         only patch you are authorized to make. DO NOT under ANY
  370.         circumstances distribute ANY modified version.
  371.  
  372.             It is also now possible to specify a file that contains a
  373.         list of the files to be sent.  This is also primarily for BBS
  374.         support.  To use this option precede the file containing the
  375.         list of files with an '@' sign.  The files may be separated by
  376.         any valid whitespace characters including spaces, tabs, carriage
  377.         returns, line feeds, etc.
  378.  
  379.             The -q option has been added as of version 2.10 for BBS
  380.         operators who run under DesqView.  It causes TXZM to not mess up
  381.         the video and also to release CPU time when it is waiting for
  382.         characters or for the transmit buffer to empty.
  383.  
  384.             The -0 option will disable direct screen writes if you are
  385.         using command line send or command line receive options.  All
  386.         screen writes will be done through BIOS calls.  Mini-terminal
  387.         mode does direct writes even with the -0 option specified.  -0
  388.         does not appear on the help screen.
  389.  
  390.             BBS sysops may also use TXZM free (even if you charge for
  391.         access to your system).
  392.  
  393.                                    REVISION HISTORY
  394.  
  395.           2.41  Working version of 2.40b below.  IRQs 8-15 now work.  So
  396.                 do the fixes for Delphi.
  397.  
  398.           2.40b Released only as a limited beta version and can cause
  399.                 problems.  Added support for IRQs 8-15 (but it didn't
  400.                 work).  Some of these are used by the system software so
  401.                 make sure to pick a free one. Made two changes to the
  402.                 core functions to enable zmodem uploads to the Delphi
  403.                 information service to work properly.
  404.  
  405.           2.31  Some early PCI motherboards (mine, for instance) use a
  406.                 chip set that causes the serial port to lock up when
  407.                 FIFO mode is enabled.  2.31 detects this problem and
  408.                 unlocks the port (transparent to the user).  Also
  409.                 changed dial function so it will recognize "CARRIER" as
  410.                 a valid connect string.
  411.  
  412.           2.30  Finalized version of the 2.26b.  Also 1) modified the
  413.                 routine that captures the CONNECT rate so that it works
  414.                 with the higher speed modems (V.FAST), 2) added a "quiet
  415.                 mode" of operation (see -$ flag) that disables the
  416.                 zmodem transfer display screen, and 3) added the ability
  417.                 to specify a modem init string and the dial prefix
  418.                 string via the TXZMDIAL.DIR. See TXZMDIAL.DIR for more
  419.                 information.
  420.  
  421.           2.26b Added an optional dialing directory for miniterm mode.
  422.                 The dialing directory is an ASCII text file (you create)
  423.                 that TXZM looks for when the program first loads (see
  424.                 TXZMDIAL.DIR for an example of how to set up the
  425.                 directory).  Also changed the CPS calculation routine to
  426.                 make it display correctly when running under DesqView.
  427.                 (THIS IS A BETA VERSION).
  428.  
  429.           2.25  Fixed the "-c" (custom comport switch).  Added -y
  430.                 (override received filename) switch.
  431.  
  432.           2.24  Fixed a problem with the "recurse subdirectories" option
  433.                 and also corrected a problem that caused TXZM to not
  434.                 work right when running it in a DOS box under OS/2.
  435.  
  436.           2.22  Recompiled using a different version of the MCOMM
  437.                 communications driver.
  438.  
  439.           2.21  Fixed a divide by zero error that occasionally occurred on
  440.                 restarted file transfers.
  441.  
  442.           2.20  Added support for Doorway mode (ALT = toggles it on and
  443.                 off).  Added support for BBSs that autodetect ANSI
  444.                 capable programs.  Added -7 switch to enable stripping
  445.                 high bit when in terminal mode.
  446.  
  447.           2.14  Minor changes so code will compile without warnings
  448.                 using BC++ 3.0 and so that TXZM would automatically
  449.                 trigger a Qmodem download (Qmodem requires an "rz\r" as
  450.                 well as the INIT packet -- most programs trip on the
  451.                 INIT packet alone). Also modified the -n (BBS support
  452.                 option) so that it took the name of a Maximus or Opus
  453.                 style LASTUSER.BBS filename rather than a node number.
  454.                 Modified FIFO usage so that TXZM set FIFO buffers to 1
  455.                 in terminal mode and 8 when sending files (corrects
  456.                 jerky display at low baud rates).
  457.  
  458.           2.10  Changed name to TXZM from ZMP.  The ZMPLOG environment
  459.                 variable is now  TXZMLOG.  Found out somebody else
  460.                 already had a ZMP in CP/M days.  Added DesqView aware
  461.                 option.  Fixed Dial Command so that it looked at the
  462.                 connect baud rate and adjusted accordingly. Fixed Redial
  463.                 Command to continually dial until a connect was made or
  464.                 ESC pressed.  Added F1 for help key.  Added ALT-P so the
  465.                 modem parameters could be changed manually, ALT-C so the
  466.                 screen could be cleared, and ALT-= for Doorway mode
  467.                 operation.
  468.  
  469.           2.00  First non-beta version.  Added a capture file.  Fixed a
  470.                 minor problem with the -0 option.
  471.  
  472.           1.21  Added support for specifying files to send in a file
  473.                 that contains a list of the filenames.  Added -0
  474.                 option (disable direct screen writes in command mode).
  475.  
  476.           1.20  Fixed bug introduced in version 1.19 that caused a
  477.                 divide by zero error if the total bytes to be sent was
  478.                 between 1 and 18.  Added ZMPLOG environment variable.
  479.  
  480.           1.19  Corrected bugs in the -w and -x options.  Fixed problem
  481.                 with negative CPS rates showing up when more than 11
  482.                 megabytes were sent.  Added the -6 switch.
  483.  
  484.           1.17  Fixed double backslash in pathnames when downloading
  485.                 while in the root directory (couldn't DL to root).
  486.  
  487.           1.16  Added support for send and receive of complete pathnames
  488.                 and creation of subdirectories.  This allows duplication
  489.                 of entire drives or subdirectories through the serial
  490.                 port.
  491.  
  492.           1.10  16 bit CRC mode now really does work.  TXZM102 was
  493.                 supposed to have fixed it but didn't.
  494.  
  495.           1.02  Fixed bug in 16 bit CRC mode (I thought).  Fixed minor error
  496.                 in ZRPOS handler.  The sender now sends a ZCRCW packet when an
  497.                 error occurs rather than a ZCRCG. This conforms with Chuck
  498.                 Forsberg's Zmodem specification.
  499.  
  500.           1.01  Fixed bug in ZRPOS handler.  This bug occasionally
  501.                 caused TXZM to trash the screen and lock up when a ZRPOS
  502.                 was received.
  503.                   Optimized the code. TXZM will now operate at 115200
  504.                 baud at 95% efficiency on an 8MHz 286 (approx 11100 cps
  505.                 -- 2 meg in 3 mins).  A 16550 UART is required to obtain
  506.                 high speed operation.
  507.                   In mini-term mode, PGDN puts TXZM in receive mode in
  508.                 case the sender's ZRQINIT was missed.  Previously it
  509.                 relied on the incoming ZRQINIT to trigger receive mode.
  510.                 It now works either way.
  511.                   Added a '-v' switch.  This switch disables overlaying
  512.                 disk and serial I/O.  It also expands the receive file
  513.                 buffer to 20K bytes.  The result is 20K of data is
  514.                 received, serial I/O pauses, the 20K is written to disk,
  515.                 a ZACK is sent, and the sender resumes sending.
  516.