
                      TXZMR -- ZMODEM PROTOCOL DRIVER

TXZM (Texas Zmodem) is a Zmodem protocol driver that was developed to
demonstrate the speed and capabilities of the MCOMM C serial communications
library. (c) 1991-94 Mike Dumdei.

TXZMR is an enhanced version of the program, developed by David Rife. TXZMR
is free for personal use.

TXZMR includes the following changes from TXZM:

1.  Added Alt-8 and Alt-0 functions, to toggle RTS and DTR, respectively
    (for modem testing).

2.  Changed "change baud" to "set port parameters".

3.  Changed dial timeout to 60 sec. and removed CARRIER as a connect result
    code.

4.  Changed redial wait time to 8 seconds.

5.  Changed initial string sent on Zmodem sending from ^MRZ^M to RZ^M.  The
    leading ^M (Ctrl-M) is not consistent with DSZ and confuses some host
    programs.

6.  Made initial screen color white on black.  TXZM gives that color after
    the Alt-C key is pressed.

7.  Added YourName to dialing directory and F2 to send your name.

8.  Added password to dialing directory and F3 to send the password.

9.  Made send and receive keys F5 and F6, respectively.

10. Added ANSI codes to home, up_arrow, PgUp, left_arrow, right_arrow, end,
    down_arrow, PgDn, Ins, and Del keys.


                CHARACTERS SENT BY KEYBOARD IN TERMINAL MODE

                            Key            Sent
                          ------------   ---------
                           Left arrow     ESC [ D
                           Right arrow    ESC [ C
                           Up arrow       ESC [ A
                           Down arrow     ESC [ B
                           Home           ESC [ H
                           End            ESC [ K
                           Page Up        NULL  73
                           Page Down      NULL  81
                           Insert         NULL  82


                              TXZMR OPERATION

TXZMR has 3 modes of operation.  These are command line send, command line
receive, and terminal mode.  Running TXZMR with no command line parameters
will list available TXZMR options.

Specifying the serial port:

TXZMR directly supports COM1 through COM4, however COM3 and COM4 on older
hardware may not match what is considered standard. The -c switch
(described below) may be used for non-standard configurations of COM3 and
COM4 or to force TXZMR to recognize a custom port.  For standard versions
of COM1-4, use "txzmr com#" where '#' is 1-4.

TXZMR switches:

    -u  Start in terminal mode.  Terminal mode may be started either before
        or after a CONNECT is made.  It has a limited set of functions
        (dial, upload, download).

    -r  Start in receive mode.  This switch must come last on the command
        line if it is used.  It may be followed by an optional subdirectory
        if the files are to down- loaded to a specific location.  The -r
        switch may be used in conjunction with the -u switch to specify a
        download directory.  When used with the -u switch, TXZMR starts in
        mini-terminal mode.

    -s  Start up in send mode.  This must be the last switch on the command
        line and be followed by the filename(s) to be sent. The filename
        list may contain wild cards. The send function will recurs
        subdirectories if the filename specifications are placed in
        parenthesis. Placing filenames in parenthesis to recurs
        subdirectories also works in mini-terminal mode.

    -p  Send or accept complete pathnames.  This option, used in
        conjunction with the -r option, will cause TXZMR to accept complete
        pathname information in the received filename. Without it, only the
        root name and extension of the filename are used.  If the received
        filename specifies a directory that does not exist, it will be
        created.  If a download directory was specified (-r dlpath), the
        subdirectories will be created under "dlpath".

        When used with the -s switch, the -p switch will cause filenames to
        be sent with complete path information. Per Zmodem specifications,
        only the path is sent (no drive identifiers).  Without the -p
        switch only the file's root name and extension are sent.  This
        applies even if recursing subdirectories.

    -b####   Specify the CONNECT speed.  The CONNECT speed is used to
        determine estimated file transfer times. TXZMR will not adjust to a
        CONNECT rate when initially making the connection.  Unless a locked
        DTE speed (computer-to-modem speed) is used (-l), you must dial
        using the DTE speed at which you will CONNECT. If the connection is
        already established, and neither -l or -b is given, TXZMR will open
        the port using the DTE speed at which the port was last used.

    -l####   Set a locked DTE sped.  Use this option to set a fixed
        computer-to-modem speed. The -b option may be used with the -l
        option to specify both the computer-to-modem rate and the
        modem-to-line rate.

    -chhh,#  Specify a non-standard port configuration.  TXZMR will work
        with any port addresfrom 000h to 3f8h and IRQs 2-15.  Replace 'hhh'
        with the port address in hex and '#'ith the IRQ to be used.  For
        example, to use a port at I/O address 2E8h that uses IRQ 5, use
        "txzmr -c2E8,5".

    -h  Use hardware flow control (RTS/CTS).  This is required for modems
        that use a locked DTE speed.

    -i  Ignore absence of carrier detect signal.  Use this switch when
        using TXZMR to transfer  files between systems connected with a
        null modem cable. (TXZMR only requires the Rx, Tx, and Gnd wires to
        be connected).

    -v  Disable serial I/O  during disk writes.  Use this option if errors
        occur when the received data is written to disk.  This should only
        be necessary when operating at high DTE speeds with no 16550 UART
        or the file is being downloaded to a floppy.  The -v option also
        expands the disk buffer to 20K bytes to maintain a higher level of
        efficiency.

    -e# Set duplicate file handling option.  This option determines what
        happens if an attempt is made to download a file that already
        exists.  The following choices are available:

          -e0  Skip the file -- do not download.

          -e1  Resume the transfer at the end of current file. This is the
               default.

          -e2  Create a duplicate file name and download the file as a
               separate file.

          -e3  Overwrite the existing file.

    -w####  Sets the maximum bytes that may be in transit at any one time
        (transmit window size).  This must be a multiple of 128.

    -x  Escape all control characters.  This option causes the characters
        between 00h and 20h, 80h and A0h, 7Fh, & FFh to be ZDLE escaped.
        Zmodem automatically escapes XON, XOFF, ZDLE (CAN), DLE, and
        "<CR>@<CR>" sequences. The -x option is for networks that do not
        pass other control characters.

    -x# As an option, a specific list of control characters to escape may
        be given.  For example to only ZDLE escape the ESC character (27
        decimal or 1B hex) and ESC+parity (145 decimal or 9B hex) and let
        all other control characters pass unaltered, use:  -x27,145.

    -6  Force use of 16 bit CRC.  The default is 32 bit CRC. This option
        does not show up on the help screen (ran out of room).

    -7  Strip high bit from received characters in terminal mode.

    -0  Use BIOS screen writes.  This only works in command line mode.
        Mini-terminal still does direct writes.

    -q  Run in DesqView mode.  This option makes TXZMR DesqView aware
        meaning it writes to DesqView's video buffer rather straight into
        video memory.  It also causes TXZMR to release its time slice when
        it is idle.

    -y  Added in version 2.25.  Allows overriding the received filename on
        Zmodem receives.  Ex: txzmr -y THISNAME.ZIP -r The above line would
        cause the received file to be called "THISNAME.ZIP"  rather than
        the name sent by the sender. This option does not show  on the help
        screen.

    -$  Added in version 2.30.  Sets "quiet mode" when doing file
        transfers.  With this option set, the display of the Zmodem
        transfer screen and transfer stats are disabled. This option does
        not show  on the help screen.

16550 related switches:

    -d  Do not enable 16550 FIFO mode. Normally TXZMR automatically enables
        FIFO mode.  If you are using a Western Digital 16550 UART at lower
        DTE speeds you may need to use this option. The WDC16550 UART
        doesn't work in FIFO mode at low DTE speeds.  If you have a 16550
        and don't know if it is a Western Digital but get Garbled Packet
        errors when attempting to start a transfer, try this option.  The
        National Semiconductor 16550 (NS16550A) works at all DTE speeds in
        FIFO mode.

    -t# Maximum characters to send to 16550 FIFOs per interrupt. This may
        be between 1 and 16.  The default is 8.  A lower value may be
        required for modems that used a locked DTE speed, hardware flow
        control, and have a small internal buffer.  8 works fine with USRs.

    -m  Disable modem status register interrupts.  This option is another
        patch to accommodate Western Digital's version of the 16550.  Some
        WDC16550s lock up if the modem status lines (CTS, CD, etc.) are not
        connected to a driving signal.  This could happen if the serial or
        null modem cable being used does not have all signal lines
        connected (very possible with a null modem cable).  Using -m
        prevents this problem.  It also disables hardware flow control and
        carrier detect, however, so if you require either of these and have
        a WDC16550 you must use a cable with all appropriate lines
        connected.

Examples:

  txzmr -p -s (c:\)   // send all files on drive C -- include
                      // complete path information

  txzmr -p -r         // accept complete pathnames -- if path
                      // does not exist, create it

  txzmr -p -r d:\temp // accept complete pathnames but put files
                      // and created directories under D:\TEMP

  txzmr -r            // receive to current directory, if path
                      // information is received it is ignored

  txzmr -s (\project\*.c) (\project\*.h)  // Sends all .c and .h
                     // files in the subdir PROJECT and all subs
                     // under project.  Does not send pathnames.

  txzmr -u -r \dnlds  // start in mini-terminal mode, received
                      // files are placed in "\dnlds" directory

  txzmr com2 -u       // mini-terminal mode, use COM2

  txzmr -l38400 -b9600 -h -s file1.zip file2.zip
                     // 38400 bps locked rate, 9600 CONNECT,
                     // hardware handshake, send file list

  txzmr -b2400 -u     // 2400 bps, mini-terminal mode

  txzmr -c2e0,15 -r   // custom serial port at 2E0h on IRQ15,
                      // use current DTE speed, receive

  txzmr com2 -b115200 i u  // 115200 bps, ignore carrier detect,
                           // mini-terminal mode

  txzmr -e2 -r        // COM1, current DTE speed, receive, create
                      // duplicate name if file exists

  txzmr -s @filelist  // send all files listed in "filelist"
                      // the name "filelist" is an example only


Other than the -r and -s switches that must appear last on the command line
if used, neither case nor switch order are significant. Also you may use a
'/' instead of a '-' or no switch identifier at all.  Ex: "txzmr i E2 -u
/b2400 r" is legal syntax.

                               BBS SUPPORT

TXZMR recognizes the TXZMLOG environment variable and will create a log
file with the same format as the one created by DSZ if DSZLOG is set.
Example:  set TXZMLOG=C:\BBS\ZMODEM.LOG

Mike Dumdei did not use DSZLOG to avoid infringing on any non-public domain
features of DSZ.



