Contents of the HST_SET.TXT file
HST (DS) Setup Notes
John Souvestre & Jim King
February 15, 1991
These notes describe how to set up the U. S. Robotics Courier
HST (14.4K bps), or HST Dual Standard, modem and typical,
IBM-type, PC communications software, such as:
FOSSIL BBS Driver Terminal
-------- ----------- ------ ------------
BNU BinkleyTerm DSZ ProComm Plus
OpusComm D'Bridge QModem
X00 FrontDoor Telix
The first section has some miscellaneous information about
running a high speed modem. The next section covers the setup
for the HST itself. The remaining four sections cover typical
FOSSIL, BBS, Driver, and Terminal program setups.
This note is not a tutorial on modems in general, or on the HST.
It is a "setup philosophy" for the HST. We highly recommend
that you read the HST manual, even if you don't understand all
If you have any questions, suggestions, or setup information for
other programs, please contact us via The Southern Star BBS,
FidoNet 1:396/1, 504-885-5928. On this BBS you will also find
a current version of this file under the name HST_SET.ZIP.
General Notes on High Speed Modems
The RS-232C cable connecting the modem to the computer's serial
port should have at least the following pins connected: 1, 2,
3, 4, 5, 6, 7, 8, and 20. Get an Ohm Meter, Multimeter, or
other form of continuity tester, and check your cable. Some
connectors have pins which are looped back, and which are not
connected to the connector at the other end of the cable.
To get the "most" out of your HST you will have to set the
computer-to-modem speed higher than the modem-to-modem speed.
This is called "locking" the serial port, since it won't be
operating at the same speed as the modem itself is. Why is this
For a few reasons: Most computer serial ports don't operate at
14400 bps, the basic speed of the HST. Thus the computer has to
operate at a higher speed. Because of this, however, the
computer and the modem have to be able to "handshake" to prevent
overrun, and loss of data. This is called "flow control".
Hardware handshaking, using the RTS and CTS lines (in the cable
mentioned above) does the job. Avoid software handshaking, as
it is protocol sensitive.
Another reason is that the HST does not need to send the start
and stops bit which make up part of the the asynchronous data
from/to the computer. This means that for every 10 bits of
computer-to-modem data, there is only 8 bits of modem-to-modem
Given that each of these represents one character, the cps
(characters per second) rating of both links is the same. When
talking about bps (bits per second) however, this means that the
computer-to-modem link needs to be 25% faster to keep up with
the modem-to-modem link, even though both are at the same cps
rate! Thus it is possible to get more than 100% throughput with
Now let's talk about data compression. MNP compression adds
about 5% overhead to the data you are sending. So, if the data
is already compressed, with PKZip for example, then you will
probably just end up losing the 5%. If you are sending ASCII
text however, the HST's compression will buy you about 50-100%
The HST allows you to set up compression in one of 3 ways:
Always on, always off, and do what the other end wants. In
general, the calling modem should be set to optimize the type of
transfers it expects to be doing. The answering modem should
allow the caller to choose whether he wants compression or not.
If you have a V.42 model, then you have an additional mode. It
allows you to use V.42 compression (which will not add any
overhead for an already compressed file), but not MNP
Transfers using compression, at 14400 bps, should generally lock
the serial port at 38400 bps. 19200 bps probably won't be fast
enough to allow the modem to run at full speed, depending on the
type of file being compressed.
In general, unless you expect to be doing lots of transfers
using compression, it is our opinion that locking the serial
port at 19200 bps is the better way to go. It is less demanding
of the computer, thus reducing the chances of losing data in
When transferring previously compressed data, where the modem is
not doing the compression, the maximum rate you will be able to
achieve is approximately 1710 cps (178% of 9600 bps) on the
computer-to-modem link. [Note: 1710 cps is 14400 bps, plus 25%
due to start/stop bit stripping, minus 5% for modem-to-modem
overhead.] If you are running an older 9600 bps HST, the
maximum rate is about 1140 cps (119% of 9600 bps).
When testing to determine your transfer rate, test with a known
good system! If the other system isn't working properly, then
you are just wasting your time. Be sure to use a previously
compressed file which takes at least a few minutes to transfer.
Test both transmitting and receiving. Don't trust your
communications program's timer - some have been know to be off
by as much as 20%. An efficient protocol will have an overhead
of 2 - 3%. Some programs count this overhead in the total
(total characters transferred), while others don't ("useful"
For the rest of this note we will assume that you want to lock
the serial port at 19200 bps. If you want to lock at 38400 bps
instead, just change the "19200"s to "38400"s.
Some communications programs and most FOSSILs allow you to
specify the size of the receive and/or transmit buffers. The
best size will depend on many factors, and may require a bit of
testing on your part. For starters however, we recommend that
you make the both the transmit buffer and the receive buffer
1K. If you are running under a multi-tasking operating system
then you might want to start with both, or just the receive
buffer, set to 2K, instead.
One thing that you will notice when running a high speed modem
is that all file protocols are not created equal! Protocols
which require an "Ack" for every block sent do not perform well.
Thus you will want to avoid XModem, for example. YModem does
better because it uses a larger block size.
Streaming protocols, such as ZModem, work fine. However, avoid
protocols like YModem-G, which use error detection, but no error
recovery, simply aborting the transfer upon an error. Although
the modem-to-modem transfer is guaranteed by a 16 bit CRC used
by the modems themselves, errors can still occur between the
computer and the modem at either end. In some situations it is
not uncommon to lose an occasional character (see below). It is
not worth this chance for a speed advantage of less than 1%.
We highly recommend replacing the serial interface chip (UART),
a 8250 or 16450, with a 16550A. This chip contains a 16
character FIFO, as opposed to a double buffer. If your
communications program makes use of the FIFO, it will allow you
longer interrupt latency and/or less interrupt overhead.
Various manufacturers make versions of the 16550A. National
Semiconductor was the first. Their full part number for the
40-pin DIP is NS16550AN or NS16550AFN. Make sure that the part
you get is a 16550A, and not the older 16550. Avoid the Western
Digital version (WD16550...).
In all the cases that follow we recommend installing a 16550A.
In some of the cases alternatives are also presented.
Some computers (particularly 4.77 MHz, 8088 machines) are not
fast enough to support 19200 or 38400 bps. If you have this
type of computer, you can use 9600 bps instead, but this will
not give you the HST's full speed.
Certain disk controllers, with 1:1 track buffers, can cause
problems. Perstor disk controllers can also cause problems. We
understand that Perstor has a BIOS upgrade which helps.
If you are running a program that makes heavy use of extended
memory, like a RAM Disk or a Cache, you may lose characters.
This is mainly a problem on 286 machines. With some programs,
like VDisk, reducing the sector size and/or the number of
sectors transferred at a time (transfer block size) will help.
Certain TSRs interfere with communications programs. If you
find that you are having trouble, one thing that you should try
is to reboot with only the bare essentials in your Config.Sys
and AutoExec.Bat. If this makes a difference, then you get to
With some multitasking operating systems, or add-ons, locking
the serial port at 19200 might not give you maximum performance.
Do some testing and see what works best for you. If you can,
set the priority of the communications task fairly high. This
helps guarantee the required CPU time and reduces latency.
If you are running DesqView, keep the number of foreground and
background ticks fairly low. We suggest anything from 1:1 (on a
fast machine) to 2:2 (on a slow machine, where task switching
overhead is significant).
If you are running DesqView with EEMS or EMS 4.0 memory which
only has only 1 (or no) alternate map register then you should
run the communications program in the first window. Newer AST
memory boards have multiple registers. On 386s, using QEMM, you
can specify how many registers to provide (default is 8).
Under OS/2, running a communications program in the DOS
compatibility box at 9600 bps or above, you will probably lose
characters, unless you have a 16550A and a program that makes
use of it. All of the communications programs and FOSSILs
described in this note will work fine except for ProComm Plus.
Or, you could always get a communications program written for
At the end of this note there is a list of some distributors who
sell the 16550A.
Setup for U. S. Robotics Courier HST (DS)
First, check to make sure that you have current ROMs. Use the
I7 command. Make a note of the following:
Supervisor date IOP date DSP date
Supervisor rev IOP rev DSP rev
Now, call USR's tech support at 1-800-982-5151 and see if you
have current versions. If not, ask for an upgrade.
If you find that you are having problems connecting with "low
cost" 2400 bps modems, make sure that you have the current ROMs,
especially the DSP! As a last resort, recommend to the 2400 bps
caller that he set his S9 register to about 30 to 50 when
calling you. This helps in some cases.
Also, be sure to get Additions and Corrections, 1.015.403 Rev.
A, or later. However, ignore the Settings Supplement, as it is
not very accurate.
Check the DIP Switches at the rear of the HST. Please note that
USR has changed the factory default settings, so check them all:
1 - UpNecessary - Data Terminal Ready follows pin 20
2 - UpProbably - Most programs use the verbal codes
3 - DownProbably - Enables result codes
4 - UpProbably - Local Echo, confuses some programs
5 - DownProbably - Auto Answer disabled
6 - UpNecessary - Carrier Detect follows signal
7 - UpProbably - Both originate and answer results
8 - DownNecessary - Enables command mode
9 - DownProbably - Escape code maintains connection
10 - UpNecessary - Power up to NVRAM settings
Quad - UpProbably - Normal, see manual, depends on model
Note: We consider it bad form for a communications program to
expect the modem to auto-answer the phone. This allows a modem
to continue answering the phone after the program has crashed.
Certainly, any program which demands this anyway should make it
part of its modem init string, and not expect the modem to
power-up in that mode.
The following assumes a locked line rate between the computer
and the modem. Also, the settings favor dialing out and
transferring previously compressed data, because this is the
most common case and because a BBS can take care of any
differences in its modem init string.
Start by setting your communications program to 19200 bps, N81
(no parity, 8 bits per character, 1 stop bit). Reset the HST to
factory defaults (&F command), then change the following:
S7=50[Optional - Longer for international calls]
S10=10[Recommended - Helps reduce line dropouts]
S11=50[Optional - Increase dialing speed, test how
fast your exchange will allow it to be set]
S15=8[Optional - Reduce Tx buffer for non-ARQ connects]
S19=5[Optional - Set inactivity timer]
S28=4[Recommended - Improves some 2400 bps connects]
B1[Recommended - DS only - Try for HST connect
1st, if fails will try for V.32 connect]
T[Optional - Touch-tone dialing]
X7[Necessary - X6 gives false "voice" sometimes]
&A2[Recommended - Unless it confuses your software]
&B1[Necessary - Locked computer-to-modem line rate]
&H1[Necessary - Hardware flow control for transmit]
&K0[Optional - No compression, or use &K1 for auto]
&R2[Necessary - Hardware flow control for receive]
&S1[Necessary - Modem controls DSR]
If you have a V.42 model, in place of the &A and &K above, use:
&A3[Recommended - Unless it confuses your software]
&K3[Optional - V.42 compression, or as above]
If you have a V.32bis model, in addition to the above, use:
S27=128[Only if needed to avoid "Connect 14400"]
S32=6[Optional - Whatever you like]
Finally, save the new settings (&W command). Note: When making
changes, be sure to use the &F command immediately before
entering the changes and saving them, otherwise you will be
changing the "current" setup - which might not match the
"factory" setup. If changing an existing setup, start with the
Now, with the I5 command you should see (for a HST DS with
V.32bis and V.42bis) something like:
USRobotics Courier 14400 HST Dual Standard NRAM Settings...
DIAL=TONE B1 F1 M1 X7
BAUD=19200 PARITY=N WORDLEN=8
&A3 &B1 &G0 &H1 &I0 &K3 &L0 &M4 &N0
&P0 &R2 &S1 &T5 &X0 &Y1 %R0
S02=043 S03=013 S04=010 S05=008 S06=002
S07=050 S08=002 S09=006 S10=010 S11=050
S12=050 S13=000 S15=008 S19=005 S21=010
S22=017 S23=019 S24=150 S26=001 S27=000
S28=004 S29=020 S32=001 S33=000 S34=000
S35=000 S36=000 S37=000 S38=000
In the modem strings which follow, drop the B0/B1 if you are not
using a DS.
If you have one of the internal HST models, it includes the
16550A UART as it's serial interface.
We understand that for use with an Amiga, it is necessary to
leave &S set to 0.
While the default setting for &G of 0 works fine for U.S.
operations, in other countries you might need to change it to 1
In the newer models, with the "voice/data" switch on the front
panel, be sure to plug the phone line into the correct (wall
jack) socket on the rear of the modem.
It is possible to program the HST with what shows up in the
following Modem Init strings, too. If you use the HST with only
one program, then this is a good idea. The Modem Init string
can then be shortened to just ATZ. We prefer to set up the HST
with the "common" commands listed above, and let the Modem Init
strings do the rest.
Setup for FOSSIL Programs
The most important thing to do when setting up a FOSSIL is to
lock the baud rate of the comm port. Be sure to lock the
correct port number. Some FOSSILs refer to com1 as "port 0"
while others use "port 1".
When running locked, most FOSSILs default to hardware
handshaking. Check to be sure that yours does, and if it does
not, then turn on hardware handshaking.
Most FOSSILs default the size of the receive and transmit
buffers to 1K each. This is fine for most systems. If you are
multi-tasking you might need to increase this to 2K or 4K. Try
1K first, and increase it till you get full performance. If
increasing it makes no difference, return it to the previous
The BNU FOSSIL offers a switch (Z) which lets you optimize the
way that the 16550A receive FIFO is set to interrupt. The
default (0) is to not interrupt till the receive FIFO is nearly
full. This minimizes CPU overhead but allows for the least
amount of interrupt latency.
If you find that you are losing characters, then your system's
interrupt response isn't fast enough. Increase the value (up to
5) of the Z switch till it works OK. This procedure will keep
your interrupt overhead as low as possible, within the bounds of
the interrupt latency that your system can handle.
The X00 FOSSIL offers a FIFO switch. However, this switch only
serves to reduce the size of the transmit FIFO, leaving the
receiver FIFO set to full. We do not recommend using this
switch, as all that we can see it doing is increasing overhead.
Setup for BBS Programs
If you are using a FOSSIL, then do not lock the BBS program's
speed. The FOSSIL will take care of that for you. On the other
hand, if the BBS program is directly driving the serial ports,
then you will need to tell it to lock the speed. Most BBS
programs now support 19200 bps, but not all support 38400 bps.
The Init string should look something like:
The Init string starts off by resetting the modem - a good
practice, in general. There is a 1 second delay (~~) after this
to allow the modem time to initialize itself. Note: Opus does
not delay a fixed amount of time per ~. Hence, the faster the
machine you run it on, the more ~'s you will need.
The modem will not auto-answer, rather the BBS will tell it when
to answer. If your BBS program requires that the modem
auto-answer, then add S0=1 to the Init string. Most BBSs use
the verbal result codes. If yours requires the numeric result
codes, use V0 instead.
The modem is set to answer either HST or V.32 calls (B0),
whichever the caller chooses. It also follows the compression
wishes of the caller (&K1). These allow the BBS to suit the
needs of the caller.
The double returns (||) are used to avoid an HST bug. If the
line rings while it is being sent command strings, sometimes the
HST gets very confused, and refuses to do anything from that
point on. For some reason, the double return seems to help.
The Busy string should look like:
This will tell the modem to go on-hook and turn the speaker off.
Then DTR is dropped, to be sure that the modem ignores any
"junk" on the serial line, till DTR is raised again.
The Answer string is simply:
If you BBS is the type that also makes outgoing phone calls,
then it will need a Dialing Prefix. That string looks like:
The B1 causes the modem to attempt a HST connection first, then
V.32. If you have a V.32bis model, and you are calling another
V.32bis modem, then you should use B0 instead.
The &K0 disables compression, under the assumption that whatever
you are about to transfer is already compressed. If you have
a V.42 model, you should use &K3, instead.
Both the Init and Dialing Prefix strings reset the modem to ARQ
(&M4), variable link (&N0) in case a specific phone number
contains other instructions, embedded in it.
If the BBS offers handshaking options, choose hardware, not
software. Hardware is also know as CTS and RTS, while software
is known as XON and XOFF.
Door programs, which run "under" the BBS program, are another
whole story. Some will use a FOSSIL, if present, some won't.
You will probably have to call them with the locked speed of the
serial port, but be careful to check that they will run at the
speed which you are locked at.
Setup for Driver Programs
ZModem works great with the HST! Here are typical DSZ command
lines for ZModem receive:
DSZ port 1 handshake on rz -m -rr
and ZModem send:
DSZ port 1 handshake on sz -m -Z -rr filename.ext
The "handshake on" command enables hardware handshaking. The
rest are just standard DSZ commands which you would use with any
Setup for Terminal Programs
Use the following for the general modem setup:
InitializationAT Z^M^M~~AT E1 M3 Q0 V1 X7^M^M
Dialing prefixAT B1 &M4 &N0 DT
Hangup~~+++~~AT H0 X1^M
Auto answerAT B0 &K1 &M4 &N0 S0=1 S2=255^M
Auto speed detectOff
Hardware flow controlOn
Software flow controlOff
Drop DTR to hangupYes
Where ^M means Carriage Return, and ~ means a 1/2 second delay.
In the dialing directory set all entries to 19200. If you can
set up dialing codes, then set:
A = &M4[Enables ARQ - default]
B = &M0[Disables ARQ]
C = &N1[Force 300 bps]
D = &N2[Force 1200 bps]
E = &N3[Force 2400 bps]
F = &K1[Enables data compression]
G = &K0[Disables data compression]
H = &K3[Disables only MNP data compression]
The default is to call at 14400 bps with ARQ enabled. The first
time you call a new number (ex: 555-1212) wait till you see the
CONNECT message then look at the ARQ light on the modem. If the
light is on then suffix the phone number with "-A" (ex:
555-1212-A). If the light is out then suffix the phone number
with "-B" (ex: 555-1212-B). Disabling ARQ will speed up the
connection by about 5 seconds. The "-A" suffix does nothing,
functionally, but lets you know that you have determined that
this phone number does have ARQ and makes your directory entries
The "-C", "-D", and "-E" suffixes (use only 1 at a time) will
limit the modem to 300, 1200, or 2400 bps, respectively. This
is handy for testing and diagnosing problems. Ex: 555-1212-BE
would force a connection at 2400 bps, with a troublesome 2400
bps modem, by not attempting high speed and ARQ connects first.
If your program does not support dialing codes, then to force a
connection at a lower speed, set the speed in the dialing
directory accordingly. You can also add suffixes to the phone
numbers to set the ARQ mode and data compression mode, as needed.
ProComm Plus does not support the 16550A very well. It sets the
interrupt threshold to interrupt after each character rather
than making use of the 16550A'a FIFO buffer.
APT Technology, Inc.
5539 Prospect Road, Suite 119
San Jose, CA 95129
800-932-7769 and 516-467-1000
1355 Shoreway Road
Belmont, CA 94002
2233 Branham Lane
San Jose, CA 95124
800-538-5000 and 408-995-5430
MicroProcessors Unlimited Inc.
24000 South Peoria Ave.
Beggs, OK 74421
Modular Semiconductor Inc.
138 Kifer Court
Sunnyvale, CA 94086