[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
COMMAND LINE OPTIONS
Following is a list of command line options available in
either or both BNU.COM and BNU.SYS. These allow "fine
tuning", setup and utility functions.
Command line switches can be given with a preceding dash (-)
or forward slash (/). Some parameters show a colon
separating the switch itself and a numeric parameter: this is
optional, and is included only for readability. An equals
(=) or comma (,) are NOT optional and must be included since
these separate different parts of a command line switch.
There are basically two "groups" of command line switches.
The first are configuration switches, which affect the
tuning, performance and behaviour of the communications
driver. These can generally be combined on the same command
line (and invocation) without problems. Exceptions (if any)
are noted where relevant.
The second group are "utility" functions. These switches are
normally used EXCLUSIVELY of all other switches. That is, if
you use them, they must appear SEPARATELY on a command line.
The switches in this group are:
/C Recapture INT 14H vector
/B Reboot system unconditionally
/S Display driver status
/H Display help for command line switches
/U Unload driver from memory
/W Enable/disable carrier watch
Remember that you can invoke BNU.COM multiple times with no
risk in loading the communications driver portion more than
once in any logical "task". All utilities relating to
BNU.COM are contained within the same .COM file.
The device driver version works a little differently. Its
command line (specified in CONFIG.SYS) must contain only
configuration items, since the utilities are not supported.
These are contained within a separate executable called
BNUHELP.COM, and have a similar - if not identical - syntax
to the utility functions in the .COM version. Any
differences are noted below.
/T Set Transmit buffer size
Available in .SYS and .COM versions
eg. /T:512
Sets 512 byte transmit buffers
The default transmit buffer size is 1024 bytes. Since
file transfers are "transmitter driven" so far as speed
is concerned, this should be large enough to service the
interrupt driven transmitter without it "waiting" to be
filled by the application. These should be increased in
size where multitaskers, networks or faster baud rates
are being used.
/R Set Receive buffer size
Available in .SYS and .COM versions
eg. /R:2048
Sets RX buffer size of 2048 (2K) bytes
The default RX (receive) buffer size is 1K, or 1024
bytes. In practice, only a portion of this is actually
used on a constant basis, but this will be dependant on
how fast an application can service the buffer (and keep
it empty).
Buffer sizes CAN be changed "on-the-fly". But at no
time can both the receive and transmit buffers be
increased in size beyond the combined amount when first
installed. For example, if BNU was installed with 2K
transmit and 4K receive buffers, only 6K is available to
each port in total. Combined buffer size cannot exceed
that 6K. An attempt to exceed this amount will result
in an error.
Changing buffer sizes whilst communications tasks are
active will be disallowed.
When modifying the buffer sizes, it is advisable to
first specify the one which is to "shrink" in size,
before the one which will "grow". For example, if 1K
buffers were active (with a total of 2K available), and
you wished to change these to .5K receive and 1.5K
transmit:
BNU /T1536 /R512
would result in an error (Maximum buffer size exceeded).
The result could be achieved by changing the order of
the command line arguments to:
BNU /R512 /T1536
/P Enable concurrent ports
Available in .SYS and .COM versions
eg. /P:2
Enables two ports for use concurrently
This sets the number of ports which can be active at the
same time. Up to 4 ports can be used (in this current
release), in up to 16 different configurations.
By default, BNU enables one port for 'interrupt driven'
use. This is the most memory conservative approach and
fits the requirements of the majority of installations.
The current version does not support shared port
arrangements or multi-port 'intelligent' serial IO
controllers.
This switch does not determine WHICH ports will be
valid, only HOW MANY can run FOSSIL driven at one time.
The driver will support whichever port (0-15) the
application selects.
/L Lock ports baud rate and/or settings
Available in .SYS and .COM versions
eg. /L:0=19200
Locks baud rate on port 0 (COM1) to 19200
/L:1=38400,8N1
Locks port 1 (COM2) to 38400, and forces 8
data bits, no parity and 1 stop bit.
/L:0=0,7E1
Unlocks port 0 (COM1) if previously locked,
or leaves it 'floating' if not, then forces
7 data bits, even parity and 1 stop bit.
The baud rate given must be valid for a standard FOSSIL
driver, and can be one of 0 (unlock) 300, 600, 1200,
2400, 4800, 9600, 19200 or 38400. High speed modems
locked at a baud rate of 9600 or above also have CTS/RTS
hand-shaking forced since these use the modem's internal
buffering which make use of CTS/RTS flow control.
A baud rate specification of zero "unlocks" the baud
rate and resets handshaking to default (whatever the
application sets).
When using this switch, your modem MUST support a
constant modem to computer speed, otherwise any baud
rate change requested by an application will be ignored,
resulting in an incorrect setting between your system
and remote. The result will normally be garbled input
and output.
When the baud rate is locked, the port's baud rate is
set IMMEDIATELY. The baud rate is maintained at the
locked rate even though FOSSIL is not active -
applications making use of BIOS calls to change baud
rate will not succeed. This allows non-FOSSIL aware
applications to be run without fear of the baud rate
being changed even though these do not explicitly
support higher baud rates.
/F Enables/disable 'fast' screen writes
Available in .SYS and .COM versions
eg. /F+ Enables 'fast' screen writes
/F- Disables 'fast' screen writes
This switch is used for versions of DOS which support
faster character output via the undocumented INT 29H
method (used to call the ANSI driver directly). To my
knowledge, this will work on all DOS versions 2.00
through 4.01, but since it is "undocumented", there is
no guarantee that it will work.
This should NOT be enabled under PC-MOS/386 version 4.0
or below.
/O Enable function 0x1c compatibility
Available in .SYS and .COM versions
eg. /O
This switch is used to enable "compatible" operation of
BNU in situations where either X00 or Opus!Com worked,
but BNU doesn't. Due to a misunderstanding of the
FOSSIL specification, X00 and Opus!Com return 0x1c (28)
whenever the highest function number is requested by an
application instead of 0x1b (27) as required the
Revision 5 specification (FSC-0015).
Several applications rely on the 'feature' of these
drivers and require a 0x1c return to verify that the
functions used by the application are present. At this
time, a function 0x1c is not actually implemented by
X00.SYS, Opus!Com or BNU.
When given, this switch tells BNU to return 0x1c, and so
allows applications relying on 0x1c to work with it.
Typically, such programs will return with "FOSSIL not
present" or "FOSSIL version too old" (or words to that
effect) when BNU is loaded without using '/O'.
/Z Sets 16550 FIFO size/trigger levels
Available in .SYS and .COM versions
eg. BNU /Z0
Enables full 16550 FIFO buffering (16/14)
BNU /Z5
Disables 16550 FIFO buffers
This switch provides the ability to 'fine tune' a system
equipped with a National Semiconductor 16550AN UART.
The UART is the device used in PC's for asynchronous
communications handling, and the 16550AN is a superior
form of these (as compared to an 8250 or 16450 with
which it is pin-compatible), since it provides on-board
FIFO (first-in first-out) buffers or queues for
receiving and transmitting.
Software must be built to specifically take advantage of
this UART's features in order to gain any real benefit.
Normally, the 16550's FIFO buffers are disabled on
power-up, and remain that way unless specifically
enabled. The software itself must service interrupts by
emptying and filling "queues" rather than the normal
single character receive and transmit holding registers.
Having this ability to service multiple character
requests in one hardware interrupt call makes it
possible to SIGNIFICANTLY reduce interrupt service
overhead and thus CPU usage on any machine. This has
very obvious advantages when operating under a
multitasker, on a network, concurrently with other
heavily interrupt-driven devices or with modems or other
communications devices running at high baud rates.
The /Z switch takes a single digit parameter - a number
between 0 and 5. This number affects the internal
settings of both the UART itself (its internal 'trigger'
levels, which define how "full" the FIFO's will be
allowed to get before triggering an interrupt to the CPU
for service) and how full BNU will let the transmit FIFO
be queue on each transmit 'request'.
Valid numeric parameters to the /Z switch are:
/Z0 16 bytes 14 bytes (max)
/Z1 14 bytes 14 bytes (max)
/Z2 08 bytes 08 bytes
/Z3 04 bytes 04 bytes
/Z4 01 byte 01 byte
/Z5 - FIFOs disabled -
Where 16550AN's are not present, BNU automatically
ignores this switch completely. The default value is
'/Z0', which activates the full 16550AN capability.
/M Enable/disable initialisation message
Available in .SYS and .COM versions
eg. /M+ Enable init message
/M- Disables init message
Normally the driver outputs a message when an
applications initialises the driver for its use. This
may be suppressed or reenabled by using this switch.
/U Unload driver from memory
Available in .COM version only
eg. BNU /U
Attempts unloading resident driver from memory
This switch tells BNU.COM to unload itself from memory.
This forces all ports to be deactivated (if any are
active). This will fail if programs loaded after BNU
have "captured" interrupt vectors which are used by BNU
(and which BNU cannot restore as a result). In this
case, BNU will not load, but will indicate this in an
error message. You will have to either unload these
later programs (such as FOSSIL appendages), or reboot
your system.
Since BNU.SYS is a device driver, it cannot be disabled
or unloaded from memory.
/Q Disable communications driver interface
Available in .SYS and .COM versions
eg. BNU /Q
Disables resident driver
This switch is normally given when BNU installs itself,
and the effect is to "delay" capturing of the INT 14H
vector until a '/C' command is issued. This may be
useful if loading with a multitasker and using other
incompatible communications drivers in other tasks.
If issued while BNU is already loaded, the previously
active INT 14H communications services vector is
restored. BNU's extended FOSSIL services are
effectively "dropped" out of the chain.
/B System reboot
eg. BNU /B0
Select default reboot method
BNU /B
Reboot (warm)
This switch has two uses. When a digit is given after
the 'B', the reboot method is selected. Only two values
are valid 0 or 1.
Method 0 selects a standard BIOS method of jumping to
the system's reset vector. This should work with most
DOS environments on a wide range of hardware, including
PC/XT/AT and 386 compatibles.
Method 1 makes use of the AT's keyboard reset line to
cause a system reboot. It will work only on AT and
386AT systems. However, this method will work under
some 386 specific software where the first method does
not. (for example, PC-MOS/386). In short, it "plays
rough". Some 386 machines and almost all PC/XT systems
cannot and should not use this method.
If no digit is given after the 'B', BNU proceeds to
reboot the machine - unconditionally.
/H or /? Display help information
Available in .COM version only
This switch displays information about command line
switches and usage for those who don't believe that
reading manuals is a very useful exercise. Pity they'll
probably never discover or know about this switch unless
told....
This switch much be used alone, and will not load
BNU.COM into memory. The help screen displayed will
look like:
BNU Revision 5 FOSSIL Compatible Asynchronous Communications Driver vX.XX
Copyright (C)1989, David Nugent & Unique Computing Pty Ltd FidoNet 3:632/348
. Usage: BNU [options] . accepts / or - as switch character
/U . Uninstall (if already resident)
/T=nnnn . Set TX buffer size to <nnnn> (decimal)
/R=nnnn . Set RX buffer size to <nnnn> (decimal)
/P=nn . Enable nn concurrent ports (1-16 decimal)
/D[=n+|-] . Enable or install diagnostics panel
/N . Disable diagnostics panel (may be reenabled)
/A=nn . Set screen attribute for diagnostics window
/Lp=n[,lps] . Lock port <p> (0=COM1) baud rate to <n> (0=Unlock)
Optional: l=Character length, p=Parity, s=Stop Bits
/W=n+|- . Enable(+)/disable(-) carrier watch on port <n> (0=COM1)
/Q . Prevent INT 14H capture (install) or release INT 14H
/M+|- . Enable(+)/disable(-) FOSSIL "init" message
/I=n+|- . Initialise(+)/deinitialise(-) FOSSIL on port <n>
/F+|- . Enable/dssable faster screen writes via ANSI driver
/B[0|1] . Select reboot method, or perform system reboot
/Z[0-5] . Sets 16550 FIFOs [0=Max(16) 4=Min(1) 5=Disabled]
/O . Enable function 0x1c "compatibility"
/C . Recapture INT 14H vector
/S . Display driver status
/H or /? . Display this help screen
/C Recapture INT 14H vector
Available in .COM version only
eg. BNU /C
Recapture INT 14H
(must not be used with any other switches!)
This forces BNU to takes a look at the current location
of INT 14H and makes sure that it points into the
resident portion of BNU. If not, it resets the INT 14H
address to the correct location.
This is most often necessary when using a multitasker -
such as DESQview(tm) - which revectors the interrupt on
loading. Since one standard method of detecting the
presence of a FOSSIL driver is to examine memory shortly
after the location pointed to by the INT 14H interrupt
vector, the 'stealing' of the interrupt in this way
causes many applications to fail to locate the FOSSIL
driver. Applications which use the 'init signature'
method of detecting a FOSSIL driver will not normally be
affected by this behaviour, but there is a risk that
whatever 'stole' the vector will unintentionally change
CPU registers used by the application for the FOSSIL
call, causing any number of complications (and probably
a system crash!).
Another use of this switch might be to enable toggling
between two or more communications drivers which make
use of INT 14H (such as packet radio communications
drivers). '/Q' can be used to switch BNU "off" and
restore a previous vector, and '/C' used to recapture it
again for FOSSIL use. The following sequence is the
suggested method of doing this:
BNU /Q [other switches]
(Install but don't vector INT 14H)
<install other communications driver>
BNU /C
(Capture INT 14H saving previous vector)
To use the secondary driver (which could even be another
FOSSIL driver, but cannot be BNU), use "BNU /Q", and
"BNU /C" to use BNU again.
NOTE: This switch MUST NOT be combined with any others
(since they will be ignored)!
/W Enable/disable carrier watchdog
eg. BNU /W0+
Enables carrier watchdog on port 0 (COM1)
BNU /W1-
Disables carrier watch on port 1 (COM2)
This switch enables or disables carrier watch for a
particular communications port. If carrier detect drops
(the caller hangs up) while the watchdog function is
active, the system will be rebooted.
This feature is most often used with programs which are
not "carrier smart" and do not monitor carrier detect -
some of these were probably never intended to run with
output directed to a communications port. If a caller
hangs up while such a program requests input, it may be
effectively "stuck", unable to continue until its input
is satisfied. It is possible that this situation also
presents a security risk.
The carrier detect watchdog is not an elegant nor ideal
solution to this problem, and especially not useful in
multitasking or networked computing environments, where
rebooting of a whole machine could upset other
concurrently running tasks and workstations. There are
some very clever "watchdog" programs which are much more
suitable to do this, such as Angelo Besani's(++) WABIRD,
which gracefully terminates the program and restores the
system to the state it was in when originally invoked.
Ommission of the '+' or '-' is considered an error.
This switch MUST be used exclusive of all others.
(++) Angelo Basani is contactable at:
Amnesia CBCS, Varese - Italy
Fidonet 2:331/101.0, +39-331-263425
/S Display BNU status
Available in .COM version only
eg. BNU /S
Displays BNU's current status
The resulting display will depend on the current state
of the resident version of the driver in memory, but if
loaded will normally look similar to:
Driver Version: 1.70 Installed
Ports Available: 1
Ports Active: 0
FOSSIL Revision: 5
TX Buffer Size: 2048
RX Buffer Size: 2048
Max Buffer Size: 4096
Diags Module: Inactive
Init Message: Enabled
ANSI Output: Fast
Port Locked: 1 @ 19200
If the driver is not yet installed, only the first line
will be shown, with the text "Not Installed". The
diagnostics module (explained below) is one of "Active",
"Inactive" (present but disabled) or "Not loaded". Any
ports whose baud rate has been "locked" are listed
sequentially.
Note that port numbers are ZERO-BASED. Port 0 is what
DOS refers to COM port 1 (ie. the device COM1), port 1
is COM2 etc. DOS does not define devices for ports
above port 3, though BNU can utilise them.
/D Enable/disable or install diagnostics module
eg. BNU /D2+
On BNU install: Installs the diagnostics panel with
a default 'refresh' rate of 2, and
enabled (the '+' here is optional)
Otherwise: Provided the diagnostics module has
been installed, enables it and sets
the 'refresh' rate to 2
BNU /D-
Disables diagnostics screen updating (but does not
deactivate them)
This is an advanced option, useful for software
development using FOSSIL calls as a means of viewing
what the current state of the FOSSIL driver is in 'real
time'. When enabled and a port is active for FOSSIL
extended calls, a panel is continually refreshed on the
screen during each timer tick which displays a summary
of various FOSSIL driver states.
Information for up to 4 ports can be displayed
concurrently on the screen (thought this might get a bit
messy!), overlaying anything currently displayed.
By default, the "refresh rate" of the panel(s) is set to
0, which means it is refreshed EVERY timer tick, or at a
rate of about 18.2 times per second. Refresh rates of 1
means every second tick, 2 every third, 3 every fourth,
and so on. Since video memory is slower than normal
RAM, slowing down the refresh rate will decrease the
overall detrimental effect that diagnostics has on
system performance.
It should be noted that running diagnostics quite
significantly impedes system performance and adds a
great deal of CPU overhead in servicing what is
effectively a "background" task. You can therefore only
run diagnostics on a system equipped with a fast CPU
(286 or above), running at lower baud rates and/or with
a 16550AN UART. Some general 'minimal' guide-lines are:
. 2400 baud or below
. 6-8MHZ 286 class
. 16450 UART or better
. 9600 baud
. 10-16MHZ 286 class -or- . 20MHZ 386 class
. 16550 UART . 16450 UART
. 19200 baud
. 16-20MHZ 286/386 class
. 16550AN UART
It takes quite a bit of processing power to drive a
'background' routine to refresh video RAM (which is
relatively slow) without impacting on system
performance.
If you are having any difficulties at all using the
driver and have enabled the diagnostics panel, disable
them immediately and try again. I have found this to be
a major cause of problems in the past. This feature is
officially 'not supported' under any conditions, and I
certainly don't need to hear that it "does" or "doesn't"
work on your system. Before ANY problem report is made
for any reason whatsoever, please try whatever you are
trying to achieve WITHOUT DIAGNOSTICS LOADED!
Usual symptoms of the diagnostics panel impacting in a
detrimental way on a system's ability to communicate are
failed handshaking between Fidonet mailers, poor
resilience in file transfers when "task" switching under
multitasking software, some spurious character loss from
remote during terminal sessions, failure to initialise a
modem and inability to detect incoming calls from a
modem returning verbose response codes (amongst
others...).
When loaded (which must be done via the /D switch when
BNU is initially installed), you can selectively enable
or disable the diagnostics display from a keyboard "hot
key". The window is in an initial "on" state, but can
be toggled on or off by pressing LeftShift-Ctrl-5 (the
'5' located on the numeric keypad). The 'refresh rate'
can also be adjusted on-the-fly using LeftShift-Ctrl-
Grey+ and LeftShift-Ctrl-Grey-. The panel itself can be
shifted on the screen by holding down the LeftShift-Ctrl
combination and pressing Up, Down, Left and Right arrow
keys. Note that the background screen is NOT restored
(since it is never saved).
In summary:
Left-Shift Action
Numeric 5 Toggle panel "off" and "on"
Grey+/Grey- Speed up/slow down panel refresh rate
Arrow keys Move diagnostics panel on screen
Note that these 'hot-keys' work, no matter if the panel
is visible or not, but not if disabled using the /N
switch.
Toggling the panel "off" using LS-5 does not entirely
defeat the CPU overhead required to service the panel.
In that case, the background task is still active, and
only the panel is not displayed. To entirely disable
the diagnostics panel, either unload and reload BNU
without the /D switch, or use "BNU /N" to effectively
turn it off.
The following diagram shows a typical diagnostics panel
display, and explains the fields shown. All numeric
values are hexadecimal (base 16).
+-- Port 0001 + ------- Port number, zero based (0=COM1)
| TX Cnt 0001 | ------- Chrs currently in transmit buffer
| TX Max 003F | ------- Maximum chrs found in transmit
| TX Bse 141E | ] buffer (this is cleared whenever
| TX Top 241D | ] --+ the port is initialised)
| TX Nxt 144A | ] +-- Transmit buffer pointers/limits
| TX End 1449 | ]
| RX Cnt 0002 | ------- Chrs currently in receive buffer
| RX Max 0019 | ------- Maximum chrs found in receive
| RX Bse 241E | ] buffered (cleared on init)
| RX Top 341D | ] ----- Receive buffer pointers/limits
| RX Nxt 249A | ] +--- Current flow control state
| RX End 249A | ] | highbyte=remote, lowbyte=local
| FlwFlg 0080 | ---++-- Active flow control settings
| FlwCtl 0002 | ----+ highbyte=remote, lowbyte=local
| Status 6238 | ------- Current line/modem status
| FifoSz 0010 | ------- 16550AN FIFO buffer (TX) size
| Errors 0000 | ------- Number of FOSSIL errors registered
| ErrFun 0000 | ------- Function (AX value) of error call
| LastAX 0300 | ------- Last Int 14H function call (AX)
| Int14H 5F73 | ------- Accumulated Int 14H calls
| ISRInt 0D4F | ------- Accumulated hardware interrupts
+--BNU-vX.XX--+
If you want to load diagnostics but have them completely
inactive by default, use the following batch file
sequence:
REM Load diagnostics module when installing BNU
BNU -D <other switches ...>
REM Immediately disable them
BNU -N
The option to load without screen refresh "/Dn-" still
uses clock cycles: only the screen update is inhibited.
The "/N" switch actually disables the background
processing and will not cause any degradation in
performance. "/D" can be used to reenable the module
again.
/N Disable diagnostics panel
eg. BNU /N
This switch disables output of diagnostic information to
the screen, and also the background processing required
to update it.
/A Set diagnostics panel attribute
eg. BNU /A=79
Causes the diagnostics panel to become intense
white on red
This allows the physical screen attribute to be set. By
default, a colour screen uses dark blue on white, and a
monochrome screen reverse video.
/I Init/deinit FOSSIL enhanced functions
eg. BNU /I0+
Initialise port 0 (COM1) for FOSSIL processing
BNU /I1-
Deinitialise port 1 (COM2)
This provides the facility to force normally non-FOSSIL
aware BIOS compatible programs to use the basic FOSSIL
character input/output functions.
This has specific advantages when running under a
multitasker, since all input/output is from interrupt
serviced buffers, and not directly polling the
communications port for activity.
Not all non-FOSSIL aware programs will be compatible
with use of this option. Only strictly BIOS-compliant
programs will benefit. Some program will have their own
interrupt driven communications functions, and others
will poll the port directly. Initialising the FOSSIL in
this way MAY interfere with correct operation of these
programs.
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson