2 Feb 1995
The original PC used a National Semiconductor 8250 UART chip. Later 286 and 386 machines typically upgraded to a National Semiconductor 16450 chip, which is a slightly faster version of the 8250 chip. Both of these UARTs can store two characters that have been received from the modem but have not yet been read by the PC. If a third character is received before one of the previous two characters is read, then an overrun occurs and it is lost.
Modems are typically used to connect to a bulletin board, to CompuServe, or to the Internet. When a file is to be transferred, some error correcting protocol such as XMODEM or TCP/IP SLIP will be used. If data is lost on the phone line, the modems provide error recovery automatically. However, if data is lost on the interface between the modem and the UART, the higher level protocols take over and the block will have to be retransmitted. Some users with a 8250 or 16450 have converted to a higher speed modem and find that their file transfers run slower. The advantage of the faster modem speed is more than canceled by the data lost at the UART.
A faster CPU will solve some of the problem. A faster PC is more likely to get around to reading from the chip before data is lost. However, more complicated operating systems such as Windows or OS/2 add some delay between the time that the UART signals that it needs service (by generating an interrupt) and the time that the data can be read. A combination of higher speed modems and more sophisticated systems will put a strain on the old chips.
There is a better UART chip called the 16550A (sometimes the suffix is "AFN"). It can internally hold 16 bytes of unread data before anything is lost. This protects against errors and reduces the burden on the operating system, which no longer has to jump every time the UART asks for service. IBM (with its Valuepoints, Thinkpads, and PS/2 machines) puts a good 16550A UART on all its current machines. Most vendors save a few dollars with their built-in COM ports by using an older 16450 chip.
The 16450 chip is adequate for DOS programs running on 9600 baud modems. It can also be used to drive printers, where the PC is only sending data and never receiving it. At higher speeds, under Windows, and in order to download files, it is important to upgrade to a COM port to a 16550A.
It is fairly simple to determine what type of chip is in your current machine. At the DOS command prompt (for real DOS/Windows) type "MSD" to run the Microsoft Diagnostics program. A menu screen will appear. Select "C" for COM ports. The screen will display information:
COM Ports
COM1: COM2:
----- -----
Port Address 03F8H 02F8H
Baud Rate 1200 1200
Parity Even Even
Data Bits 7 7
Stop Bits 1 1
Carrier Detect (CD) No No
Ring Indicator (RI) No No
Data Set Ready (DSR) No Yes
Clear To Send (CTS) No Yes
UART Chip Used 8250 8250
The last line (UART Chip Used) indicates if the chip is good. Any value other than 16550 is bad (as in this example).
OS/2 always simulates a 16550 to DOS programs, so the output of the "MSD" command in OS/2 is unreliable. Instead, type the command "MODE COM1" (and/or "COM2") and look at the reply.
[D:\]mode com1 BAUD = 1200 PARITY = EVEN DATABITS = 7 STOPBITS = 1 TO = OFF XON = OFF IDSR = OFF ODSR = OFF OCTS = OFF DTR = ON RTS = ON BUFFER = AUTO
If the last item reads "BUFFER=AUTO" then this is a good chip. If it reads "BUFFER=N/A" then it is a bad chip (in this example, it is good).
If the built-in UART is no good, there are three solutions. The "do it yourself" group may buy a 16550A chip from the electronics store, get a soldering iron, and replace the old chip. Ordinary people will go to CompUSA and buy a high speed serial port card with a 16550A chip for around $35. A modern internal modem (that comes on a card to plug inside the machine) will usually contain its own good UART.
If a 16-byte buffer is better than a 2-byte buffer, why stop there? There are a few super-smart COM port cards available at prices closer to $100. They contain a 16550A and additional logic and memory. They may buffer thousands of bytes of data, run at speeds up to 115000 bits per second, and never lose data. There is no clear evidence that a $100 COM card will deliver more function than the $35 version.
A well-designed internal modem (on a card that plugs into the PC) can also prevent data loss. In order to provide data compression and error correction, the modem must buffer fairly large amounts of data. When the UART and modem are different devices, then overruns can arise. However, if they are combined on the same card, the buffering and control functions of the modem can be used to control the flow of data.
Return to the Table of Contents
Copyright 1995 PCLT -- The Storm Before the COM -- H. Gilbert