home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ultimate DOOM Companion
/
PowersourceMultimedia-UltimateDOOMCompanion.iso
/
patches
/
bnudm01.zip
/
SERSETUP.TXT
< prev
Wrap
Text File
|
1994-03-03
|
14KB
|
334 lines
|
|| BNU DOOM Serial driver version 1.2.1
||| DOOM Network interface is copyright 1994 by Id Software Inc.
|| BNU SIO Driver is copyright 1994 by David L Nugent
| & Unique Computing P/L
BNU for DOOM is a drop-in replacement for Id Software's
SERSETUP.EXE provided with DOOM 1.2. This version, however,
provides a full and complete interrupt driven serial driver
implementation and therefore does not suffer many of the
shortcomings in Id's original driver which was much too
simplistic to provide the services necessary for running on
today's typical modem configurations or at faster speeds
then 9600 baud.
This work is a derivative and blending of Id's published
source for SERSETUP and my own BNU FOSSIL driver. This
driver provides full support for the 8250 family of UARTs,
including the 8250, 16450, 16550 (original, used in older
PS/2's), 16550A(FN), 16551-4 (CMOS and packaged versions of
the 16550) Intel 82510 and the TYPE3. It provides hardware
flow control, the ability to run at *any* baud rate
supported by the UART, configurable inbound/outbound buffer
sizes.
Before you ask, BNU is an acronym for Basic Networking
Utility, referring to its use in the FidoNet community as
the base level of communications. FOSSIL in this context
means "Fido Opus SEAdog Standard Interface Layer", which is
a phrase used to describe the set of common interrupt
functions developed as a common layer for many FidoNet
applications. SIO (which you'll see in SERSETUP's banner)
means "serial input/output".
This driver does not use FOSSIL services. However, I will
soon be publishing one for OS/2 users who can install Ray
Gwinn's SIO and VX00.SYS which, in theory, should provide
superior performance under OS/2 since they bypass UART
emulation/virtualisation used in OS/2 VDM sessions. I also
hope to be publishing a version of SERSETUP with a
communications interrupt handler that runs under DPMI which
should enhance performance significantly.
INSTALLATION
This driver is almost a drop-in replacement for Id's
original. First, rename Id's version to "SERSETUP.OLD" and
copy in SERSETUP.EXE from this archive into your DOOM
directory.
If you use your modem to call other DOOM players, then all
the rules have just changed - you will almost certainly have
to change your initialisation string from the one you used
with Id's SERSETUP.
Specifically, you'll need to:
- Enable V42bis (if available)
- Enable error correction
- ENABLE HARDWARE FLOW CONTROL (ALSO REFERRED TO AS CTS HANDLING)
The latter is the most important, the others optional. Error
correction and compression are transparent to the data
stream. BNU automatically provides CTS/RTS signal handling
to take care of the "spurts" of data it receives as a result
of the protocol used between the modems. If you only have
MNP5 compression, try it since it may work fine - disable it
if play becomes too jerky.
- You need 9600 baud or greater!
Don't consider attempting to run DOOM at any lesser speed -
it just doesn't work. You'll get a connect, but movement is
so slow that it is entirely unplayable. At 4800 baud it's
like molasses at 50 fathoms! At 2400, it's like attempting
to play DOOM inside a Jupiter Mining Corps' stasis booth -
i.e. pretty much a waste of time. Try it on a direct connect
if you like, it is amusing, but don't donate money to your
PTT provider trying it out if you only have 2400 baud modems
or less. At 7200 you might get a slow moving game going, but
9600 is really where it becomes playable.
- If you use error correction and/or compression, use a baud
rate greater than the actual connect speed.
For V32 modems, use 19200 (more probably won't be an
advantage and makes your system work harder - probably
causing jerky play). V32b modems should use 38400 or 19200.
This driver *may* work with the HST protocols (but probably
not brilliantly) and will certainly do just fine with ZYXEL
16.8K and 19.2K. VFC and V34 modems will probably need the
port set at 38400 or 57600.
If you are the "answering" system, you'll need to add ATS0=0
to your initialisation string in MODEM.CFG. This disables
auto-answer. SERSETUP answers the phone for you by issuing
ATA when it sees RING, and if the modem has been set to
answer automatically, this may confuse it and cause it to
hang up.
MODEM.CFG has some additional (optional) lines which you can use:
Line 1: Modem init string (+)
Line 2: Modem hang up string (+)
Line 3: Default baud rate (if not specified, 9600 is used)
Line 4: Receive buffer size (defaults to 2048 bytes)
Line 5: Transmit buffer size (defaults to receive buffer size)
+ Also present in Id's SERSETUP
Anything after the fifth line is ignored.
In addition, SERSETUP contains additional parameters you can
specify on its command line.
-com1, -com2, -com3, -com4:
Selects the communications port in a standard
configuration applicable to your machine. (+)
-port 0x????:
Overrides the port address. This must be in the
format "0x????" where ???? is the port address in
hexadecimal. For example, the standard COM1 and
COM2 port addresses are 0x3F8 and 0x2F8
respectively. (+, but had a bug)
-irq n:
Sets the IRQ number - this is the CPU interrupt
request line. Refer to your serial cards
documentation if you have an unusual port
configuration. Very often cards provide jumpers
which you can use to select the IRQ generated by
ports on the card. (+)
-answer:
Sets up SERSETUP in 'answer' mode. This
initialises the modem and waits for a call. (+)
-dial n:
Causes SETSETUP to init the connected modem and
dial out to the other player. 'n' is the phone
number to dial (+).
-baud n, -speed n:
These are both the same thing. Sets the DTE
communications rate (the baud rate used between
your computer and the modem or your computer and
another computer to which it is connected). This
is NOT NECESSARILY THE SAME SPEED AS THE
CONNECTION SPEED BETWEEN YOUR MODEM AND YOUR
FELLOW DOOMER's MODEM!
-rx n
Sets the receive buffer size.
-tx n
Sets the transmit buffer size. The default I/O
buffer size is around 2K (2048 bytes) in both
directions. This is adequate at 9600. You may need
to increase this at higher connection speeds and
allow for smoother play, particularly if error
correction or compression are in use.
-rt n:
Sets 16550/16550A/82510/TYPE3 receive trigger to
'n'. Valid values for the 16550x and TYPE3 are 1,
2, 4, 8 and 15. The 82510 supports 1 through 4. A
zero value sets the receive trigger to 1 unless
-rf 0 is used, in which case the FIFOs are
disabled (but why would anyone want to do that??!?
:-))
NOTE: the switch is RT (for Receive Trigger), not RF.
-tf n:
Sets the transmitter FIFO usage
16550/16550A/82510/TYPE3. This should almost
always be 15 or 16, irrespective of the -rt
setting. If you have a Western Digital or Silicon
Logic 16550A then use "-tf 15". Setting both this
parameter and -rt to 0 will disable the UART's
built-in FIFO. This value can be set to any value
from 0 through 16 on 16550A or TYPE 3, 0 to 8 on a
16550, 0 to 4 on an Intel 82510.
NOTE: the switch is TF (for Transmit FIFO).
-debug:
Trivia - makes the game unplayable, :-) but is
useful if you can't seem to raise a connection at
all between two systems. It echoes all outbound
transmissions and inbound packets received to the
screen to give an indication of what's going on.
Also useful to satisfy the curious.
All other parameters are passed on to DOOM unmodified.
RUNNING DOOM
The BNU version of SERSETUP is command line compatible with
the original SERSETUP command line, this one can also be run
from DOOM's setup program. This is probably both easiest and
best unless you need to fine tune things a little by
overriding FIFO settings. Since the default speed and buffer
sizes can be more permanently configured in MODEM.CFG, you
can simply insert these in there and use SETUP.
PLAYING SPEED
Baud rates used on remote (modem) connections is adequately
covered above. Game speed will be affected mostly by the
ability of the modems being used to transfer and pump data
sufficiently fast. Some of the following, however, may
apply to modem connections, but remember that on modem
connects, the limitation is the modem devices and the effective
transfer rate between them, not the 'baud rate' is a direct
machine-to-machine null modem connection.
WITH DIRECT CONNECTS - FASTER ISN'T NECESSSARILY BETTER.
19200 is fairly good, 38400 equally as good as DOOM across
IPX using 8-bit ethernet, but above that you may have to
contend with performance problems due to overhead in
servicing interrupts. Since DOOM runs under DPMI, it has
to context switch (switch into V86 mode from native 386
protected mode) every time the serial port triggers an
interrupt, and faster speeds usually means that
interruptions come more frequently and closer together (I
hope to address at least some of this with a DPMI mode
serial interrupt handler in a future release of SERSETUP).
If your baud rate is set to 38400 or greater and you are
using 16550AFN uarts (these speed would probably not be
useable without them!), the BNU SIO driver automatically
adjusts usage of the UART FIFO's to accomodate to 8x8
instead of the default at lower speeds of 16x14. If you know
what this means and you wish to try using more of the UART
FIFOs at the risk of some overhead which may slow play down,
use -tf 16 -rt 14 on the command line to override the FIFO
size. You'd probably have to be using a 486DX260 or
thereabouts to see an improvement though - more than likely
the effect will be the opposite.
The best results in the author's opinion for direct
connections are running at 57600 baud using the default 8x8
FIFO. This is very smooth, at least on a DOS 386DX40
connected to an OS/2 system with a 486DX33 and provides even
better playability than using the IPX driver (hmm.. maybe I
should look the IPX driver over.. :-)).
I/O buffer speeds also have an effect on playing smoothness
at high speeds (ie. above 9600). The size of the serial I/O
buffers will effect how often communicated data is "thrown
away" and replaced with fresh data either before being sent
or after being received (if the receiving system is getting
behind the data stream). Smaller buffers will cause data to
be thrown away more frequently - this may actually improve
play, whereas large buffers may slow things down a lot. In
general, the slower the machine, the smaller the receive
buffers you should use. Conversely, the slower the OTHER
machine is, the smaller transmit buffer you should use.
The actual size is relative to the baud rate (direct
connections) or modem speeds (remote connections) being used.
WARNING: DON'T MAKE BUFFER SIZES LESS THAN 512 bytes! The driver
will accept this and use them, but due to the 'throw away
packet' algorthm used by Id's networking code to improve
update speed, this will prevent all but the smallest packets
from being accepted (the buffer must be able to accept at
least 1 complete packet - the maximum packet size is 512
bytes). At some point, where buffers are large enough a
machine can cope with incoming packets and can send outgoing
packets with no data being discarded at all. This provides
the maximum detail to the remote system - and if both
systems can handle it all will be well.
PROBLEMS?
If you experience any problems whatsoever in using this
driver, feedback to the author is certainly appreciated!
While I can't hope to solve all your problems, provided that
it can be diagnosed (which depends on the information you
supply) many of them can be easily be fixed either by
changing setup or by using alternative configuration
parameters.
If you do have a problem report, please complete the form in
SERSETUP.FRM and send this back with your report. This
information contains the minimal set of data I usually need
to resolve problems without having to ask you lots more
questions about basics. Using the form will save us both
time.
If you have any comments or suggestions, words or praise or
feature requests, you can direct them to any of the Email
addresses below - we'll be appreciative of the feedback and
happy to look at anything which you may suggest.
DOES THIS COST ANYTHING?
That's entirely up to you. This is not shareware, but
DONATEware - if you find it useful then you are more than
welcome to send a nominal sum of US$10 or equivalent to the
address below. Furthermore, if you haven't already done so,
REGISTER DOOM WITH ID! They deserve it for this awesome
creation; registering will encourage the development of this
type of game in the future, both from Id and others.
We also welcome any commercial enquiries regarding use and
licensing of the BNU SIO driver.
Postal address (aka: where to send the moola :-)):
PO Box 352
Doveton,
Victoria, 3177
Australia
CONTACTING THE AUTHOR
InterNet: davidn@csource.pronet.com
davidn@csource.oz.au
nugentex@brt.deakin.edu.au
FidoNet: david nugent 3:632/348 (3:50/0, 3:3/20)
Data/BBS: +61-3-793-2728 (PEP)
+61-3-794-7949 (V32b)
Voice: +61-3-793-2728
BNU is proud to be an all-Australian product!