                                   SER4.EXE
                           DOOM SERIAL DEVICE DRIVER


FEATURES:

   - Baud rates: 9600, 14400, 19200, 38400, 57600, 115200.
   - Uses 'extratics=1' (whatever it is) which removes delays on some machines.
   - All 'mod' operations removed which fixes slowdowns after 2 minutes.
   - Many functions optimized to speed up communication.
   - Compiled with several speed optimizations plus 80386 instructions instead
     of 8088/8086.
   - 'Talk' feature -- type msgs to your partner to debug com port setup, or
     to decide on game features.
   - 'Configure' option allows game settings to be modified after connecting.
   - Port stays connected after game ends, allowing settings to be
     re-configured and a new game started.
   - Extensive statistics available at end of each game.
   - Episode AND map settings to allow warping to another level.
   - Lots of msgs printed during startup to help with debugging.
   - 'Phonebook' list of names and numbers in modem.cfg, allowing dial-by-name.
   - Two modem init strings in modem.cfg.
   - Modem init strings sent slower - some modems had problems if sent too fast.
   - All command-line arguments moved to modem.cfg file.

INSTALLATION:

   - Make a backup copy of your modem.cfg file.
   - Copy ser4.exe and modem.cfg to your doom directory.
   - Edit the modem.cfg file to change computer/port settings (see help at
     bottom of file).
   - Run "ser4.exe" WITHOUT arguments.

NOTES:

   - Yes, this means setup.exe won't work with ser4.  But that's ok, because
     ser4 has far surpassed setup, so you don't need it anyway.  I tried
     making it use the modem.cfg file, plus command-line args, plus being able
     to re-confure at run-time, and the amount of code was becoming enormous.
     I decided that a 63K executable was pushing it already, and the extra
     prompting in ser4 probably removes the need for setup anyway.  Settings
     for the computer/port should only need to be done occasionally, so they're
     in the modem.cfg file.  Game settings are configurable on the fly.
   - I removed the code that reset the port back to 9600 at shutdown, in
     case you want to check it with a 'portinfo' type of program afterwards.
   - A couple of people suggested a way of having one side send the game
     settings to the other computer.  Because of code space, I decided to leave
     that complicated feature out.  The 'Talk' and 'Configure' features should
     take care of it.

CREDITS:

   - This program uses a lot of ideas from the following sources:
     - My head.
     - Several people on the net.
     - Other sersetup-hack programs.
     - And a little bit from Id software :-) :-)

     I am in no-way claiming this to be an original work.  Many people
     contributed to ser4.  (and my mailbox, which has been over a hundred
     messages lately :-)

     If you'd like to modify/fix/add something, have at it!  The source has
     been uploaded to:
      - wuarchive.wustl.edu  in /pub/MSDOS_UPLOADS/games/doomstuff/ser4_src.zip
      - ocf.unt.edu  in  /pub/incoming/ser4_src.zip

     Many thanks to the following people for their help, suggestions, and
     contributions:  (In no particular order)
      - Dave Thomson <David.Thomson@newcastle.ac.uk>
      - Michael Corrigan <corrigan@vnet.ibm.com>
      - Steve Simpson <ssimpson@world.std.com>
      - Brian "Paco" Hope <paco@cs.wm.edu>
      - Z_VANDERBIJC@CCSVAX.SFASU.EDU
      - Ron Zika <Ron_Zika.MMI@notes.worldcom.com>
      - William Lewis <lewisw@oasys.dt.navy.mil>
      - Steve Snyder <76447.3264@CompuServe.COM>
      - DucK Whitney <quack@lobby.ti.com>
      - Srinivas Thakkilapati <dz836@cleveland.Freenet.Edu>
      - Vesselin Bontchev <bontchev@informatik.uni-hamburg.de>
      - John Van Essen <vanes002@maroon.tc.umn.edu>
      - BRYENTON  T <M0T3@UNB.CA>
      And tons of others that I probably left out...

TROUBLESHOOTING:

   - For modem connections:
     - Use the correct init strings!  Turn off compression, error correction,
       and flow control.  Also fix the baud rate at the desired speed.  There
       have been several cases of modems working at 9600, but not at 14400. 
       If this happens to you, check the init string again.
     - Be aware that some modems won't process anything after ATZ -- use the
       second init string for other commands, or better yet, use AT&F instead.
     - 8250 UARTs do not support 115200 baud.
     - I tried 4800 baud with two 66's, and it was unplayable, so I left it out.
     - The only two init strings I know for sure are:
       - Gateway Telepath I (8250 UART):
         AT &F S37=9 &K0 &Q0 %C0 N0 \G0 &D2 S46=0  (S37=11 for 14400 baud)
       - Gateway Telepath II (16550 UART):
         AT &F &K0 &M0 &N6   (&N8 for 14400 baud)
   
   - For null modem connections:
     - Use a null modem (well, I had to say that).
     - Select "Connected already", and then use the "Talk" feature to send
       characters back and forth to check the line.  If they're not coming
       across clearly, something's wrong -- check IRQs and base addresses for
       conflicts with other ports or devices.
      
   - On 8250 UARTs, expect overrun errors, especially with higher baud rates.
     The 8250 (=16450) UARTs only have a one byte send/receive buffer, so it
     will occasionally overwrite a byte if Doom doesn't read it fast enough.
     If this happens, you'll probably notice it as a slight delay while
     playing, and it'll be reported as a UART Overrun Error in the stats.

   - With a 66 Mhz machine using a 16550 UART, I've seen "Read Bytes Per
     Interrupt" around 3 to 3.5, and "Write Bytes Per Interrupt" around 7 to 8.
     With a 66 Mhz machine using an 8250 UART, both numbers are usually 0.9.

   - Still won't work???  Well, I've run out of suggestions.  If you *do* get
     it working, post your success story to the net to help someone else.

Good luck, I hope it works for you...

Russell Gilbert    (gilbert@esd.dl.nec.com)
