HST (DS) Setup Notes - John Souvestre + Jim King July 6, 1991 These notes describe how to

---
Master Index Current Directory Index Go to SkepticTank Go to Human Rights activist Keith Henson Go to Scientology cult

Skeptic Tank!

HST (DS) Setup Notes ---------------------- John Souvestre & Jim King July 6, 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 Maximus Opus RBBS 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 of it. 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 necessary? 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 data. 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 an HST. 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% improvement. 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 compression. 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 marginal cases. 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" characters transferred). 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 play detective. 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 OS/2. 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! However, some 2400 bps modems simply don't meet specifications. In some cases it helps if the caller sets his S9 register to about 30 to 50 when calling you. Also, in some cases if the caller adds 5 to 10 commas to the end of the dialing string (after the phone number), it helps. 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 - Up Necessary - Data Terminal Ready follows pin 20 2 - Up Probably - Most programs use the verbal codes 3 - Down Probably - Enables result codes 4 - Up Probably - Local Echo, confuses some programs 5 - Down Probably - Auto Answer disabled 6 - Up Necessary - Carrier Detect follows signal 7 - Up Probably - Both originate and answer results 8 - Down Necessary - Enables command mode 9 - Down Probably - Escape code maintains connection 10 - Up Necessary - Power up to NVRAM settings Quad - Up Probably - 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: S10=15 [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 Z command. 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=060 S08=002 S09=006 S10=015 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=006 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 or 2. 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 setting. 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: |ATZ||~~ATB0E0H0M0Q0V1X7S2=255&K1&M4&N0&Y0|| 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: |ATH1M0X1||~v 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: |ATA|| If you BBS is the type that also makes outgoing phone calls, then it will need a Dialing Prefix. That string looks like: |ATB1&K0&M4&N0DT 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 modem. ================================================================ Setup for Terminal Programs --------------------------- Use the following for the general modem setup: Default speed 19200 Initialization AT Z^M^M~~AT E1 M3 Q0 V1 X7^M^M Dialing prefix AT B1 &M4 &N0 DT Dialing suffix ^M^M Hangup ~~+++~~AT H0 X1^M Auto answer AT B0 &K1 &M4 &N0 S0=1 S2=255^M Auto speed detect Off Hardware flow control On or RTS/CTS Software flow control Off or XON/XOFF Drop DTR to hangup Yes 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 line up. 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. ================================================================ 16550A Distributors --------------------- APT Technology, Inc. 5539 Prospect Road, Suite 119 San Jose, CA 95129 408-370-9077 Arrow Electronics 800-932-7769 and 516-467-1000 Fry's Electronics Sunnyvale, CA 408-733-1770 Jameco Electronics 1355 Shoreway Road Belmont, CA 94002 415-592-8097 JDR Microdevices 2233 Branham Lane San Jose, CA 95124 800-538-5000 and 408-995-5430 MicroProcessors Unlimited Inc. 24000 South Peoria Ave. Beggs, OK 74421 918-267-4961 Modular Semiconductor Inc. 138 Kifer Court Sunnyvale, CA 94086 408-733-5000 ================================================================ (end)

---

E-Mail Fredric L. Rice / The Skeptic Tank