SZMODEM ver 2.00
-----------------
By Scott M. Baker


What is SZModem?

         SZModem is a zmodem-compatible protocol with a few added features. It
   is fully compatible with normal zmodem, but adds special capabilities both
   when talking to normal zmodems and while talking to other copies of
   SZModem.
         The main idea behind SZModem is that you should be able to do other
   things while the transfer is taking place. Rather than have your computer
   tied up for an hour downloading a file, you can move around in the SDOS
   window and do directory maintenance, etc...

   NOTE: SZModem is now distributed only as the 286/386/486-specific version.
         this program will no longer run on an 8088/8086 machine.

What will it do?

      While SZModem is transferring a file, you may do the following:

      Connected to a "normal" zmodem such as DSZ.

          - List files marked for upload
          - List files received as they are received
          - Uses SDOS (simulated dos) to view directories, copy files,
            etc while the transfer is taking place.
          - View file contents as the file is being received (good for
            text files)
          - Play single-player games such as SZTETRIS while transferring.
          - Built in mail reader allows sysops who are using a BBS program
            that uses FIDO message formats to read mail while transferring.

      Connected to another copy of SZModem.

          - All of the above capabilities
          - A "chat" mode allows the two sides to talk to each other.
          - Play multiplayer games such as Four-In-A-Row
          - The sender will automatically send a "advance transfer list"
            listing the files to be sent. This way, the receiver knows
            what he is receiving.
          - SZTurbo option allows SZModem to pass flow control characters
            unaltered across the modem. This allows for up to a four percent
            effeciency gain over normal Zmodem.
          - Ability to use large zmodem packet lengths - up to 2048 bytes
            at 2400 baud and 4096 bytes for higher speeds.

Command specifics
-----------------

   F1 - Transfer (send) list

         This command will produce a windowed list of the files that have
     been sent, aborted, marked for sending, etc. Included is the file
     name, size, and all other pertinant information. You may use the up
     and down arrows if necessary to scroll the list.
         Pressing F1 again (i.e. while you are already in TLIST) will toggle
     between the file-information list and the file-description list.

   F2 - Received file list

         This command will produce a listing of the files are have been
     received. Similar to the "F1" list above, you may use the up/down
     arrows to scroll the list. THe list is updated as files are received.
         If you are connected to another copy of SZModem, the sender
     will transmit a special "advance transfer list" containing a listing
     of the files that will be sent. This list will be displayed with the
     F2 command.
         As with F1 above, pressing F2 again will toggle betweem the file
     information display and the file description display.

   F3 - SDOS (simulated dos)

         SDOS is a special dos emulator that lets you perform a variety of
     operations while the transfer is taking place. You can copy/move files,
     list directories, change attributes, etc - most of the common things you
     do with normal dos.
         You may get a listing of supported SDOS commands by typing "HELP"
     at the dos prompt. Typing help with a command name (i.e. HELP DIR) will
     display help for that specific command.
         Most SDOS commands are pseudo-multitasked as to not interfere with
     the transfer, although with high speed modems (i.e. 14,400 baud and
     up) the transfer may slow down during disk-intensive operations.

   F4 - COMM PARAMS

         This command will pop up a display of the current communications
     parameters - baud rate, parity, buffer status, etc. It can be useful in
     debugging difficulties.

   F5 - VIEW

         Pressing F5 will allow you to "view" the transfer as it is taking
     place. You will actually see the characters of the file, zmodem
     handshaking, and line noise as it takes place.
         If you press F5 while you are already in the view window, you will
     toggle the view mode. There are 6 different modes. Here is a listing:

           1 - Direct ascii printing of characters as they are sent or recvd
           2 - Ascii print only RECEIVED characters
           3 - Ascii print only TRANSMITTED characters
           4 - HEX printing of transmitted and received characters
           5 - HEX printing of only received characters
           6 - HEX printing of only transmitted characters

         The modes will cycle one at a time each time you press F5. Initially,
     this whole idea of the view mode was simply a debugging option for me,
     but I figure some users might like to watch the transfer taking place.

   F6 - MESSAGES

         The message display shows a log of the various messages that SZModem
     displays on the screen - CRC Error, Waiting for ZRINIT, stuff like that.

   F7 - CHAT

         This command can only be used when two SZModems are connected to
     each other - it won't work with a normal Zmodem. The chat mode allows
     you to talk to the user at the other end of the transfer. The screen
     will be split into two windows - one for what you type, one for what
     the other guy types.
         Pressing CTRL-G will page the other user if he isn't at his
     terminal. The page will beep for thirty seconds, one beep every
     three seconds.

   F8 - GAMES

         The games menu will be displayed and you can select a game to play
     while the transfer is taking place. There are two kinds of games -
     single player games which to play by yourself and multiplayer games
     in which you play against the guy on the other end.
         The single player games may be player no matter what you are
     connected to, but the multiplayer games require you to be connected to
     another copy of SZModem.

   F9 - MAIL READER

         This is a feature designed to be used by the sysops of Bulletin
     Boards which have a FIDO compatible message format. (See the below
     section on "The Mail Reader" for info on setting up this feature)
         By pressing F9, the sysop will be allowed to read messages in the
     chosen message base. There are several additional UNLISTED keys available
     in this window:

         "N"  Move forward one message
         "P"  Move backwards one message
      <Space> If the message is more than one screen, this will scroll the
              window.

   F10 - EXIT

         This brings you the exit option which aborts all files and returns
     you to the DOS prompt.

COMMAND LINE OPTIONS
--------------------
       SZModem was designed specially to have a command line similar to the
popular DSZ Zmodem protocol. This way users with an understanding of DSZ
can easily set up SZModem. The options area as follows:

"SZMODEM <options> <transfer type> <filenames>"

Options can be any one of the following:

   "PORT x"     specifies using comport x. (i.e. "PORT 2" would use com2)

   "SPEED x"    specifies the baud rate (i.e. "SPEED 2400 would use 2400 baud)

   "IRQ x"      specifies a nonstandard IRQ. (NOTE: please specify the
                address in DECIMAL, not HEX). You must supply BOTH an IRQ
                and an address to use nonstandard ports.

   "ADDR x"     specifies a nonstandard ADDRESS. (NOTE: please specify
                the address in decimal, not hex). You must supply BOTH an IRQ
                and and address to use nonstandard ports.

   "/NOLOG"     disables logging to the "SZMODEM.LOG" file.

   "/M"         monochrome mode.

   "/DORINFO x" Specifies the node number of a dorinfo.def file to grab the
                user's name from. If you specify this option, SZModem will
                load in the dorinfo, get the user name, and display it in
                the screen so you know who is downloading. (I.e. specifying
                "/DORINFO 1" would load in "DORINFO1.DEF")

   "/INSIZE x"  Specifies the size (in bytes) of the internal comm input
                buffer. (Note: not used if using fossil)

   "/OUTSIZE x" Specifies the size (in bytes) of the internal comm output
                buffer. (Note: Not used if using fossil)

   "/SZPATH x"  Specifies a path to which the SZXFER$$.LST and SZMODEM.LOG
                files will be written to. If not specified, the files will
                be created in the current directory.

 "/DELAYTIME x" SZModem by default will wait 5 seconds at the end of
                transfer for a keypress to before exiting. BBS sysops may
                wish to lower this time for faster operation. The "x"
                specifies the default time to delay, which may be
                from 0-30 seconds. (NOTE: /DELAYTIME can be abbreviated
                /DT)

   "/SZTURBO"   Causes SZModem to attempt to use the SZTurbo option if
                possible. If SZTurbo is to operate, both sides must have this
                option set. See "SZTURBO" below. (NOTE: /SZTURBO can be
                abbreviated /SZT)

   "/NBS"       This stands for "normal block size". By default, if two
                SZmodem's are connected, they will allow the Zmodem packet
                length to rise to 2048 bytes/packet at 2400 baud or 4096
                bytes/packet for higher speeds. Specifying "/NBS" will force
                SZModem to use block lengths of 1024 bytes or less.

   "/NORBL"     Will cause your copy of SZModem to refuse to accept LARGE
                format (i.e. embedded file description info) advance transfer
                lists.

   "/NOSBL"     Will cause your copy of SZModem to refuse to send LARGE
                format (i.e. embedded file description info) advance transfer
                lists.

   "/FL"        This will cause SZModem to create an additional log file
                called "FILELOG.TXT". This log is intended to allow users to
                keep a record of files they receive. It only logs RECEIVED
                files and it includes the name, size, and optional description
                of the file.

   "/NOPAGE"    This will prevent another copy of SZModem from paging your
                copy.

  "/FILEDESC x" This specifies an additional FILEDESC list of file
                descriptions. "x" is the path and filename of the file. See
                "Large Advance Transfer Lists" for more info.

   "/CHECKSNOW" If you are using a CGA card and it gets snow, try using this
                option.

   "/EGA"       If you have an EGA or VGA display, this switch will enable the
                43/50 line modes.

   "/DL"        This option will cause SZModem to create a DSZ.LOG file. This
                file will contain a DSZ-style log. This option may be used
                with BBS programs that require a DSZ.LOG file to operate their
                external protocols. SZMODEM also will enable the DSZ.LOG if
                the environment variable "DSZLOG=xxx" is used.

   "/CFGPATH x" Specifies a path to where the configuration file (SZMODEM.CFG)
                can be found. "x" is the path with or without a trailing
                backslash. It doesn't matter.

   "/HARD"      This turns on HARD flow control. This means that when your
                modem drops CTS, SZModem will stop transmitting until CTS
                is raised again. This option is frequently used with high
                speed modems and/or locked baud rates.

   "/SOFT"      This is similar to the above HARD flow control, but uses
                ascii characters to control the flow. Namely, the Xon and
                Xoff characters - when XOFF is received, SZModem will stop
                transmitting and when XON is received, SZModem will resume.
                (Note: SZTURBO mode is not available with this type of
                handshaking)

   "/LOCK x"    Specifies a locked baud rate. The com port will be set to
                the baud rate specified by this parameter, and the baud rate
                specified by "BAUD x" above will be used for estimation
                purposes.

   "/RR+"       Enable receive recovery option (DEFAULT). If receive recovery
                is enabled (and then if the sender permits) then szmodem will
                allow files to be recovered/resumed at the aborted position
                rather than having to resend the entire file.

   "/RR-"       Disables the above receive recovery option.

   "/SR+'       Enable send recovery option (DEFAULT). If send recovery is
                enabled, then szmodem will allow remote zmodem's to recover
                files.

   "/SR-"       Disables the above send recovery option.

   "/NO16550"   Disables automatic use of 16550 UART chip.

Transfer type may be any one of the following:

   "RZ"        receive zmodem file(s)
   "SZ"        send zmodem file(s)

Filenames are interpreted as follows:

   Send mode:  Multiple filespecs may be present. Wildcards are allowed.

   Recv mode:  A path to the receive directory is expected. No filenames
               are necessary. If you add a filename, SZModem will strip it
               from the string and ignore it.

EXAMPLES:
---------

"SZMODEM PORT 4 SPEED 9600 SZ \UPLOAD\*.ZIP /HARD"

       Send all the .ZIP files in your upload directory using COM4 at
  9600 baud. Hardware flow control (/HARD) will be used.


"SZMODEM SPEED 1200 RZ"

       Receive files at 1200 baud using COM1. Store them in the current
  directory.


"SZMODEM PORT 3 RZ \TEMP"

       Receive files at 2400 baud using COM2. Store them in the "\TEMP"
  directory.

Files
-----
       SZMODEM.EXE   -  The executable code for SZModem. This is what you
                        need to call to execute the protocol. Memory
                        requirements should be from 130-170k depending
                        on how you have szmodem set up.

       SZCONFIG.EXE  -  This program allows you to set a variety of
                        SZModem's default options. Now modifies SZMODEM.EXE
                        directly.

       SZMODEM.DOC   -  These docs that you are reading.

       SZMODEM.HLP   -  An ASCII help file which contains help on the SimDos
                        commands.

       REGISTER.FRM  -  Registration form for registering your copy of
                        SZModem.

      +SZMODEM.TRV   -  A "trivia" file which lets you play trivia during
                        SZModem.

      +ROCK&POP.TRV  -  An alternate trivia file written by Michael Crosson
                        of The Carrier Detect Journal.

      +APPLYCFG.EXE  -  Utility for applying SZCFG.DAT files to SZMODEM.EXE.

      +LOGANA.EXE    -  The SZModem log analizer.

      +SZSUP.DOC     -  Doc file for SZSUPxxx.ARJ.

      +SZTELIX.ZIP   -  Sample telix setup for szmodem.

      *SZMODEM.LOG   -  A log created which contains a listing of files
                        transferred, dates/times, etc. May be disabled
                        with the "/NOLOG" option. You may set the
                        path this file will be placed in with the "/SZPATH"
                        option.

      *DSZ.LOG       -  If the /DL parameter was specified, this file will
                        be created to allow for compatibility with the
                        popular DSZ protocol.

      *SZXFER$$.LST  -  This is the "advance transfer list" file. It is
                        created by the sender and if the receiver is also a
                        zmodem, is sent to so the receiver may have a list
                        of files to be received ahead of time.

      *FILELOG.TXT   -  If the "/FL" parameter is specified, this will will
                        contain a listing of all files received (downloaded)
                        by SZModem. Included is the file name, size, and
                        optional description.

      (* Denotes file is CREATED by SZModem, not distributed with the package)

      (+ Denotes files supplied in the suppliemental szmodem archive,
         SZSUPxxx.ARJ. They are described further within that archive)

Hardware Requirements
---------------------
     Processor: 10mhz 80286 or above. (Will not work on 8088)

     Display:   Anything should work

     Memory:    SZMODEM.EXE  130-200k

     UART:      NS16550A suggested for use with speeds 9600 baud or above,
                but old style UARTs may work.

A word about the 16550
----------------------

   A 16550 UART is recommended for use with SZMODEM at baud rates of 9600
   or above.

         You may be able to get szmodem to work with older UARTs at these
   speeds as well, but I do recommend going with the 16550 if possible. The
   reason is that the communications routines that we are using now are a
   bit slower than the previous routines. This means that at high speeds,
   szmodem may not be able to "keep up" when receiving files.

         If you would like more information about 16550 UART's, then you may
   wish to contact your favorite local bbs. There is usually someone
   knowledgable on hand.

Nonstandard port addresses:
---------------------------
         You must use the "IRQ x" and "ADDR x" parameters to specify a
   nonstandard com port. Numbers must be in DECIMAL, not HEX. DO NOT
   specify a "PORT" if you use nonstandards.

   For example:

   "SZMODEM IRQ 2 ADDR 1016" would cause szmodem to use whatever port is
                             at IRQ=2 and ADDRESS=1016 ($3F8 hex)

Flow Control, Handshaking, High-Speed Modems, Locked baud
---------------------------------------------------------
         SZModem includes two command line options for controlling computer-
   to-modem handshaking. This handshaking allows the modem to send some form
   of signal to SZModem to tell SZModem to stop sending data if the modem's
   buffer becomes overflowed.
         If you are using a 2400 baud modem or lower, and are sending data to
   this modem at 2400 baud, then no handshaking options should be necessary.
   But, if you are using a high speed modem at a locked baud rate, handshaking
   is VERY necessary.
         The are two type of handshaking: HARD and SOFT. Hard handshaking uses
   the CTS/RTS lines (i.e. wires) between your modem to control data flow and
   is considered the better of the two. SOFT handshaking uses two special
   ASCII characters, XON and XOFF, to control handshaking. Basically, you have
   to match SZModem to the type of handshaking your modem uses.
         To enable HARD handshaking, specify the "/HARD" option on the command
   line. To enable SOFT handshaking, specify "/SOFT". You should only specify
   one, not both.
         Consult your modem manual, bbs software docs, etc for more
   information on handshaking.

SZTetris!
---------
         New with version 1.50, a game called "SZTetris" has been included in
   the games (F8) menu. The game is your standard Tetris type game. You can
   use the arrow keys to move the falling blocks, the J,K,L keys, or the
   keypad w/numlock (4,5,6,2).
         The game is in its eary stages and may still have a couple of
   glitches in it.
         NOTE: SZTetris is a processor-speed hog. If your running szmodem
   at 19.2kbaud at a low cpu speed (8mhz or lower), you may get errors. On my
   25mhz 386, however, I have tested szmodem at 19.2kbaud while playing
   sztetris with no troubles whatsoever.


SZTurbo
-------
         SZTurbo is an option that will allow you to improve file transfer
   efficiency by as much as four percent. To explain how SZTurbo works,
   I must discuss a little about how Zmodem itself works.
         In the Zmodem specification, certain bytes cannot be transmitted
   freely across the modem connection. These bytes are XON, XOFF, ZDLE (a byte
   very important to Zmodem), and a few others. If for example, an XOFF
   was transmitted across the modem link, it could cause difficulties.
         Although these bytes may not be transmitted, they do occur in binary
   files so Zmodem must find someway to transmit them. What it does is send
   a ZDLE followed by byte (i.e. the XOFF) XOR 64. This translates the illegal
   character to a harmless ASCII letter that may be freely sent across the
   modem link.
         A few quick thoughts and you should be able to see that every time
   one of these "illegal" characters are encountered, two bytes (The ZDLE
   and the character XOR 64) must be sent. Sending two characters instead of one
   obviously adds overhead to the transfer, slowing it down.
         It turns out that most of these "illegal" characters are not illegal
   under most situations. Almost all current moedems are able to transfer
   XONs,XOFFs, etc just fine. So basically what SZTURBO does is send these
   illegal characters just like any other character. Here's a quick diagram
   to help explain this:

                                     Characters sent        Character(s) sent
       Character in File             without SZTurbo          with SZTurbo
       -----------------          ---------------------     ----------------
         ZCHAT (#14)                ZDLE (#24) "N"            ZDLE (#24) "N"
         DLE   (#16)                ZDLE (#24) "P"            DLE  (#16)
         XON   (#17)                ZDLE (#24) "Q"            XON  (#17)
         XOFF  (#19)                ZDLE (#24) "S"            XOFF (#19)
         ZDLE  (#24)                ZDLE (#24) "X"            ZDLE (#24) "X"

         As you can see, SZTurbo shortens the sequences for DLE, XON, and
   XOFF from 2 characters down to one character. While this does not seem like
   much, it can add up to a four percent efficiency gain. When you're paying
   the long distance bill, you'll appreciate this.
         Specifying "/SZTURBO" on the command line will cause your copy of
   SZModem to "attempt" to engage the SZTurbo option. SZTurbo is only
   available if both sides have the option specified.

Large Advance Transfer Lists
----------------------------
         Starting with this version, there is support for a "large" advance
   transfer list. The main difference between the normal list and the "large"
   list is that the large list contains optional file descriptions as well
   as the name, date, etc. The receiver or sender may browse through these
   descriptions while the transfer is taking place.
         The problem is, SZModem can't just make up these descriptions
   itself. The sender must somehow provide SZModem with the descriptions. If
   the sender is a bbs program, then the descriptions are available from
   the BBS's file catalog. The descriptions must, however, still be converted
   to a format that SZModem can understand.
         SZModem will look for file descriptions in the file "FILEDESC.TXT"
   (or "FILEDE1.TXT", "FILEDE2.TXT", etc if you are multinode) in the
   directory specified by the /SZPATH option. This file follows a simple
   format. It is plain ASCII with each line of the file corresponding to a
   file. The filename starts at column 1 and the descriptions starts at
   column 15. For example:


::-- Col. 1  ::--- col. 15
::           ::
\/           \/
SZMOD120.ZIP  Zmodem protocol with Chat, Simdos, etc
GALWAR75.ZIP  Galactic Warzone version 7.5
DOORDR30.ZIP  Doordriver door support routines
MACH10.ZIP    Mach-10 bbs


         When SZModem loads, providing the /NOSBL switch is not specified and
   providing this file exists, the descriptions will be searched, loaded, and
   sent to the receiver providing his /NORBL switch is not set.
         As you have probably noticed, this format is probably not what your
   bbs uses. Since I don't have information on the file formats of most BBS
   packages, I had to make do with this "generic" format. Hopefully, some
   bbs sysops who are programmers can write a utility to grab the necessary
   descriptions out of their file catalogs and throw them into the
   FILEDESC.TXT file.
         Note: The FILEDESC.TXT file may be named FILEDE1.TXT or FILEDE2.TXT
   depending on your configuration. The /DORINFO switch will determine which
   .TXT file SZModem will look for. If no /DORINFO is specified, FILEDESC.TXT
   will be used. If /DORINFO 1 was specified, FILEDE1.TXT will be loaded.
         Examples:

                                                        Filedesc file used
                                                        ------------------
         SZMODEM SZ FOO.BAR                             FILEDESC.TXT
         SZMODEM /DORINFO 1 SZ FOO.BAR                  FILEDE1.TXT
         SZMODEM /DORINFO 2 SZ FOO.BAR                  FILEDE2.TXT
         SZMODEM /SZPATH \protocol SZ FOO.BAR           \PROTOCOL\FILEDESC.TXT
         SZMODEM /SZPATH \protocol /DORINFO 1 .....     \PROTOCOL\FILEDE1.TXT

         Now, a quick word on the /NOSBL and /NORBL switches. If you specify
   /NOSBL, your copy of SZModem will not send the description info under any
   circumstances. If you specify /NORBL, your SZModem will not allow another
   SZModem to send the description info under any circumstances. Example:


         Sender               Receiver                  Desc info sent
         ------------------   -------------------       --------------
         SZMODEM SZ ...       SZMODEM RZ ...                *YES
         SZMODEM /NOSBL SZ    SZMODEM (anything)             NO
         SZMODEM (anything)   SZMODEM /NORBL                 NO

         (* only if FILEDESC.TXT, FILEDE1.TXT, etc exists on sender side)

         Additional FILEDESC files may be specified using the /FILEDESC
   option. Use the format "/FILEDESC x" where "x" is the path and filename
   of the additional list to search. You may add as many of these additional
   lists as you wish. (NOTE: Operation will occur faster if all of the
   descriptions are in one file rather than many file)

File Lists
----------
         If you specify @<filename> on then command line, <filename> will be
   opened and any file paths contained within will be sent. For example,
   suppose a textfile, "TOSEND.TXT" contained the following:


   \DOWNLOAD\SZMOD120.ZIP
   \MACH10\WELCOME.TXT
   \GALWAR\TWARS.EXE

         If you called up SZModem with the command line "SZMODEM SZ
   @TOSEND.TXT", SZModem would then send the three files listed above. This
   allows you to specify many different filenames in an ascii file rather
   than have to fit them all on the command line.
         You may also specify SZModem parameters in these "file lists". You
   could specify "/DORINFO 1 /SZTURBO /SZPATH \protocols", etc and then call
   it up with the "@" sign rather than having to put all of those options on
   the command line.

The Mail Reader
---------------
         SZModem is equipped with a mail reader capable which allows the
   sysop to read any messages in a fido-format message base. This feature is
   only useful for BBS systems or mail point systems, and has no particular
   interest to users.
         With version 1.60 and above, SZModem may handle up to three
   message areas.
         Message areas are configured within SZConfig.exe. The options are
   under the mAil selection of the Configuration menu. There will be a total
   of five options presented.
         "Front Door Path". If you are using the front-door mailer, then
   you may specify the path to your front door directory here. If you do,
   then szmodem will allow you to view your in/outbound history and your
   recent activity.
         "Message Area x". These configure the three message areas. There
   are three fields to each entry. The first is the "path". Which is used
   in fido format bases. If the base you are trying to add is fido, then
   put the path here.
         The second option is "name". This is the name/tag of the area.
   The third option is type. Zero (0) is for no message area configured,
   One (1) is for a HP format area, and two (2) is for a fido area.
         "HP Message Path". If you are using a HP format message base
   (currently only supported by Mach-10 and the upcoming Safari bbs), then
   put the path to your HP message directory here.
         Then, you may use the F9 key to enter the mail reader. The "N"
   and "P" keys will move you forward or reverse in the area and the SPACE
   bar will scroll a message.

Benchmarks
----------
         The following chart compares the CPS readings for some various
   protocols. SZMODEM ver 1.31 was used for the SZMODEM tests and DSZ1612
   was used for the DSZ Zmodem, Xmodem, and ymodem tests.
         The tests were performed between two AT-class machines running
   at 8mhz.

                          SZMODEM    SZMODEM  DSZ     DSZ     DSZ
Filename      File Size   w/SZTURBO           ZMODEM  XMODEM  YMODEM
------------  ---------   ---------  -------  ------  ------  ------
SYSOP.DOC       18357        399       390      235     200    200
MACHCTL.ZIP     20643        236       232      234     201    200
MOUSE.COM       14249        284       274      234     202    199
SIMCGA.ZIP       2406        233       233      235     200    200


SZCONFIG.EXE
------------
         Szconfig.exe is a configuration utility supplied to allow you to
   make changes to the default options within szmodem. Szconfig was written
   with Turbo Vision to allow for a nice, user friendly interface.
         It is important to note that the new version of szconfig.exe
   differs strongly from the older version supplied with Szmodem 1.50 and
   previous.

         1> Changes are now made to SZMODEM.EXE directly. This means there
            is no nasty szmodem.cfg file or anything else that you have
            to worry about.

         2> Many more options are available. In fact, SZCONFIG is the only
            way to set szmodem's sound options.

         3> You can use keyboard as well as mouse to get your way around
            in SZCONFIG.

         4> By using SZCONFIG, you may enter your registration code directly
            into szmodem.exe rather than having to bother with that
            szreg.dat file.

            NOTE: You should make a backup fo your registration code so the
                  data is not lost when/if you upgrade to a new szmodem.exe

         To move around in SZCONFIG, you'll need to either use a mouse or
   the TAB/shift-TAB keys. Use tab to move down an option, and shift-tab to
   move up an option.


Revison History
---------------
       Version 1.00  -  First public BETA release.

                        This software has not been tested very well at
                        this point. There may be trouble with high speed
                        modems, COM3/4 conflicts, etc. Please report any
                        bugs to my bbs listed below.

       Version 1.01  -  Fixed a problem that caused the DORINFO display
                        that caused the users last name and city to be
                        displayed. Now, the user's full name and city is
                        displayed.

       Version 1.02  -  Added the "/SZPATH" option to allow the user
                        to specify what directory the SZMODEM.LOG and
                        SZXFER$$.LST files will be placed in.

                        Fixed a bug which was causing runtime error
                        2 that had to do with the SZXFER$$ list.

                        Added "/DELAYTIME" option to specify time that
                        SZModem will delay after a transmission is completed,
                        waiting for a keypress.

                        The CHAT indicator will now blink when a remote user
                        is typing in chat and the local user is in another
                        window.

       Version 1.10  -  Added FREE and SIZE commands to simdos. See the
                        SZMODEM.HLP file for more information.

                        Various cosmetic improvements.

                        Made the SIMDOS parser a bit more intelligent. It can
                        now process commands without spaces between parameters
                        such as "DIR/W" or "CD..".

                        Added DELNUL command to delete zero-length files.

                        SZModem now displays a small message if the user does
                        not specify SZ or RZ. This helps new users to know
                        they do in fact need to specify SZ/RZ.

                        SZModem /HELP command now available. Displays a small
                        help screen of some of SZModem's command line
                        parameters.

                        Major revisions to the actual ZMODEM transfer code.

                        CRC32 now used rather than CRC16 and the block check
                        display now correctly reflects this. (Note: If the
                        sender requests CRC16, the receiver will be stuck with
                        CRC16 also)

                        Error correction will now function properly in both
                        CRC32 and CRC16 modes.

                        "Last frame" display on receiver now functions
                        properly.

                        Default delay time changed from 10 seconds to 5
                        seconds. (See /DELAYTIME above)

                        Added an overlay version of the program (SZMODOVR.EXE)
                        to allow for systems with less available memory.

       Version 1.20     Added SZTurbo option to increase transfer efficiency
                        by as much as 4%. See the SZTurbo section of this doc
                        for more info.

                        Added "/NBS" option to allow users to restrict
                        SZModem's block size down to the standard 1024 bytes/
                        block like normal zmodem.

                        The minor version identifier (i.e. .20) is now sent
                        along with the major version identified (i.e. 1)

                        Message screen (F6) code revised to reduce flickering
                        and add smoother scrolling.

                        Two ZChallenges are now sent between copies of SZModem
                        to allow for additional information to be passed -
                        version numbers, flags, etc.

                        Added provisions for LARGE Advance transfer lists.
                        (See Above). The new large list allows the sender to
                        send file descriptions along with the usual file info.

                        Fixed the TLIST and RLIST displays so they scroll the
                        corrent number of lines.

                        Added "/FL" switch for a received file log.

       Version 1.21     Added more information to the log display.

                        Fixed a bug which caused file descriptions to be
                        garbage when receiving file from a normal Zmodem.

                        Added ability to process file lists. (See above:
                        File lists)

                        Added /FILEDESC option to specify additional
                        filedesc files.

                        Added the /CHECKSNOW option to enable snow checking.

                        Fixed the DELNUL command in SDOS so that it does not
                        try to delete files as they are being received.

                        Control-Break is now trapped and no longer aborts the
                        program.

                        Added CTRL-G option to allow users to page in chat
                        mode.

       Version 1.30     Default internal output buffer size has been
                        changed from 256 bytes to 512 bytes.

                        Revised overlay code so hopefully SZMODOVR.EXE can
                        be used by multiple nodes on a network without
                        difficulty.

                        Added file compression capability. LZW compression
                        routines will speed up the transmission of most
                        non-compressed data.

                        Default internal input/output buffer sizes
                        re-adjusted to 1k and 6k respectively.

                        Added a simple sysop mail reader to allow the sysop
                        to read mail while transfer is in progress.

                        Fixed a bug with the ZChallenges that caused SZModem
                        to not abort if the Zchallenges were not responded
                        to.

                        Included a "Small" version which is even smaller than
                        the overlay version. Left out are the games module
                        and the mail reader module. The filename is
                        SZMODSML.EXE.

                        Added a zip viewer to SimDos. The command "ZIPVIEW
                        <filename>" will display the file directory of a
                        zip file.

       Version 1.31     Added DEBUG command to simdos to allow users to
                        browse through files in a hexadecimal mode.

                        EGA/VGA 43/50 line modes are available with the
                        /EGA command line switch.

                        If SZTURBO is enabled and soft (Xon/Xoff) flow
                        control is enabled, the SZTURBO will automatically
                        be disabled.

                        Added SZCONFIG.EXE configuration utility.

                        /DL command line will enable a DSZ.LOG file log
                        for compatibility with various bbs programs.

       Version 1.40     REMOVED FOSSIL SUPPORT
                        There was just too little demand for use of the fossil
                        interface routines and considering the overhead it was
                        adding (an additional jump and compare for every
                        async function can add up), the code was removed and
                        the INTERNAL routines are now accessed directly.

                        Major serial code revisions. On locked baud modems,
                        the keyboard I/O shouldn't slow down quite as bad
                        as before. Chat may still appear choppy though.

                        Added a DORINFOx.DEF path to SZCONFIG.EXE. You may
                        now set the path that SZModem will look for
                        DORINFOx.DEF with SZCONFIG.EXE.

                        Added CFGPATH parameter to specify path to
                        the SZMODEM.CFG file.

       Version 1.41     Added information on HandShaking to docs.

                        Added handshaking options to SZCONFIG.EXE.

                        Added locked baud capabilities with the "/LOCK"
                        parameter.

       Version 1.42     Fixed minor bug with command line options. Command
                        line options now override environment vars at all
                        times (i.e. SZMODEM port 2 would override SET DSZPORT=
                        1)

                        If transfer times out, szmodem will return errorlevel
                        of 1.

                        DSZLOG is now appended to rather than rewritten
                        by SZMODEM.

                        Fixed problem with /CFGPATH causing files to be
                        written to the root directory.

       Version 1.43     Added abbreviations "/SZT" for /SZTURBO and "/DT" for
                        delay time.

                        Added the "BROWSE" command to simdos. Browse will let
                        you scroll up and down within a file.

                        Fixed problem with received file path.

                        Altered some code in the Z_challenge routine to
                        compensate for a bug in QMODEM (Qmodem does not
                        understand Z_Challenge requests which caused
                        szmodem to abort the xfer)

                        Altered some code to hopefully fix a glitch or
                        two at high speeds. (14,400 and 19,200 baud may
                        have gotten some aborts due to "header is fubar"
                        messages. This should now be fixed)

       Version 1.44     Some cosmetic improvements and minor bug fixes.

                        Added registration request.

                        Added support for nonstandard IRQ/address

       Version 1.50     Added SZTETRIS! Available from the games menu!

                        default delay time lowered to 2 seconds.

                        Replaced the more-or-less meaningless ZFRAME
                        status item with a realtime-updated CPS display.

                        With the internal tetris, SZMODEM.EXE got too big
                        to be usable; with some efficiency fixes, SZMODOVR
                        and SZMODSML became about the same, so now we only
                        distribute one version.

                        The SZXFER$$.LST transfer list is now deleted after
                        szmodem is completed.

                        Shrunk the size of the control-key line at the
                        bottom of the screen a bit to provide for additional
                        screen space in sztetris, simdos, etc. Two extra
                        lines can really make a difference!

       Version 1.60     Fixed SZTetris so it will work correctly on
                        monochrome systems.

                        Totally re-wrote SZCONFIG.EXE using Turbo Vision. A
                        section is provided above describing the new
                        configuration utility.

                        Added sound effects!

                        A registration string is now sent across the
                        chat channel at the start of transfer.

                        word-wrapping now works in the chat section.

                        Added colored directories to SIMDOS so it looks a
                        bit better. (note: colored dirs can be turned
                        on and off from SZCONFIG.EXE)

                        Recover option can be turned on/off at the
                        command line and in SZCONFIG.EXE.

                        Might have fixed a glitch with the errorlevels
                        not working correctly.

                        Fixed the DSZLOG so that files received are
                        denoted by a "Z" and files sent are denoted as
                        a "z".

                        Added a display after szmodem exits to tell the
                        errorlevel returned.

                        Taking a bit of a risk, I turned off i/o checking
                        (turbo's {$I-}) throghout szmodem to gain a little
                        speed and reduce program size a bit. Overall EXE
                        size dropped by 6k.

                        Lowered the default ouptput buffer size to 512
                        bytes to see how it works out. Might provide for
                        better chat response and more reliable error
                        recovery.

                        Added a "CMD:" field to the szmodem.log file which
                        shows if szmodem was invoked with "SZ", "RZ" or
                        none.

                        Fixed up the four-in-a-row game a little. It should
                        now detect diagonals and ties.

                        A file "SZSUPxxx.ARJ" is now being produced which
                        includes some supplimental szmodem utilities and
                        files.

                        Switched to Turbo Pascal version 6.0. Don't know
                        if it'll make much of a difference, but it may make
                        some changes.

                        Turned off the hardware cursor and put our own
                        software driven cursor in its place. Chat and
                        simdos look a bit better now.

                        Reworked the MAIL system a bit. I've added a few
                        statistical functions for people using the Front-
                        Door mailer and I've changed it so you can have
                        up to three message areas.

                        Removed LZW compression.

                        Fixed a slight bug with the ZIP viewer.

       Version 1.61     Fixed bug with SZXFER.LST showing up with wrong
                        filename.

       Version 2.00     Replaced the communications routines with a newer
                        library.

                        Dropped the old 8088-compatible version (szmodem
                        is now 286/386/486-only)

                        Change of registration policy.

                        Added a warning message to inform users who are
                        transferring at high speeds without using flow
                        control.

                        Added 16550 UART support.

Credit to Other Authors
-----------------------

       1) Turbo Pascal Zmodem Source. This software was built up from a rather
          buggy source code of Zmodem in turbo pascal. The code did not list
          an author.

       2) Chuck Forsberg. Chuck originally developed the zmodem protocol
          specs which szmodem is based on.

Registration/donations
----------------------
       SZModem represents many hours of programming and debugging. If you find
this software useful, then please register your copy to support my efforts. I
can not continue to work on major projects like this without some form of
compensation.

     Due to the mass of number of registrations of SZMODEM and other
 programs of mine, I have had to change my registration/donation policy
 slightly. I simply don't have time to do all of the disk copying
 and mailing! Since every user who registers SZMODEM obvoisly has access
 to a modem, I have decided to simply put the registration codes up on my
 bbs for people to get online.

     Because I don't need to send out packages, I have lowered the price
 from the previous $25 to $20.

     Here is what you do to register:

     #1: Send me $20+ in the mail. (Smaller donations are always appreciated,
         but I usually don't issue reg codes)

     #2: Call up my bbs about a week later and use the "Reglook" command to
         look up your registration code online.

     #3: Create a file called SZREG.DAT and with an ASCII text editor or
         word processor, type in the data given to you by reglook. Then
         tell SZCONFIG to read in your registration data.

         - - - or - - -

         Run the program SZCONFIG.EXE and enter the registration data
         directly (remember to make a backup of your code in case you
         lose it)

     Please note, under this new policy I will not send you a package in
 the mail (unless you really, really need it!).

     Please send registrations to the following address:


                      Scott Baker
                      6431 Tierra Catalina #48
                      Tucson, AZ 85718

       I may also be reached through my online bulletin board:

                      The Not-Yet-Named BBS
                      (602) 577-3650 <Node 1> 1200/2400/9600 baud (v.32)
                      (602) 577-3419 <Node 2> 2400/9600/14400 baud (USR DUAL)
                      Tucson, AZ

       The BBS always has the latest copy of SZModem (and any of my other
projects) available for downloads. We are also part of FidoNet and RBBSNET
and offer several file and message areas.
