***
***      PORTS Documentation
***
***      Version 2.0
***      January 18, 1999
***
***  MarshallSoft Computing, Inc.
***  POB 4543 Huntsville AL 35815
***
***  Phone: 256-881-4630
***  email: ports@marshallsoft.com
***    web: http://www.marshallsoft.com
***    ftp: ftp://ftp.marshallsoft.com/marshallsoft

The latest version of PORTS can always be found on our FTP site at

     ftp://ftp.marshallsoft.com/marshallsoft/other

Look for PORTSxx.ZIP where "xx" is the version number.

*** Introduction

PORTS is a freeware DOS utility which reports all serial port UART addresses
and UART types for the 8250, 16450, 16550, 16650, & 16750. Be sure to boot to
DOS before running PORTS in order to get the most accurate results.

Refer to TEST.TXT for details on the use of the TEST program.

*** Windows Users

Although you may run only Windows, you must boot to DOS in order to test your
serial ports. This is because the Windows operating system interferes with
direct access to the serial port hardware, which is necessary in order to
properly test the UART. If your serial port cannot be controlled by DOS, then
it also cannot be controlled by Windows.

The CONSOLE program is a WIN32 console mode program similar to TEST used for
testing the serial ports from Windows. CONSOLE should be used after running
PORTS and TEST. See CONSOLE.TXT for details.

*** UART Address

Each UART can be characterized by its address, its type, and its IRQ
assignment.

Each UART uses 8 consecutive port addresses, beginning on a 8-byte boundary.
The "UART address" is the base address of your UART. Standard addresses have
been defined for COM1 through COM4, as follows:

   COM1 0x3f8
   COM2 0x2f8
   COM3 0x3e8
   COM4 0x2e8

If you have a multiport board installed, it is very common to select 0x100,
0x108, 0x110, 0x118, etc. for UART (base) addresses.

*** UART Type

The five generic types of UARTs detected are the 8250, the 16450, the 16550,
the 16650,and the 16750. The 8250 is the oldest, and is only suitable when
running DOS applications (not in a Windows DOS box) up to about 19200 baud.

The 16450 is a 16-bit part (unlike the 8250 which is a 8-bit part), and
performs well in DOS applications at 19200 baud and above, and in some Windows
applications.

The 16550 is a 16-bit part which contains 16-byte FIFO buffers. It is the UART
of choice for any demanding DOS serial port application, and for all Windows
serial port applications.

The (Startech) 16650A has 32-byte FIFOs and the ability to do on-chip flow
control. It is pin for pin compatible with the 16550 and can support up to
460,800 baud.

The (Texas Instruments) 16750 has 64-byte FIFOs and the ability to do on-chip
flow control. It can support up to 921,600 baud.

*** UART IRQ Assignment

The IRQ is assigned to a particular UART so that the Interrupt Service Routine
(ISR) can be executed whenever a serial port event occurs for the assigned
UART.

DOS does not provide interrupt driven serial port services, and hence there is
no "Assigned IRQ" table. Serial port libraries designed to run under DOS
either use the standard assigned IRQs

   COM1 IRQ4
   COM2 IRQ3
   COM3 IRQ4
   COM4 IRQ3

or they are capable of assigning UART addresses and IRQs when the application
program runs, restoring the IRQ values before exiting. For this reason, it
really makes no sense to ask for the IRQ assignment under DOS, since either
the standard IRQs are assigned (IRQ4 for COM1 & COM3, IRQ3 for COM2 and COM4),
or the IRQ is changed at runtime.

Under Windows 3.1/95/98/NT, unlike DOS, the operating system maintains an IRQ
assignment for each port. This is most easily determined by looking at the
Control Panel.

Under Windows 3.1, select the Control Panel icon, then choose "Ports",
"Settings", and then "Advanced" to see the UART port addresses and IRQ
assignments. The MSD executable shipped with Windows 3.1 can also be run to
get serial port information.

Under Windows 95/98, double click the System icon in the Control Panel (in My
Computer), then choose the "Device Manager", then the port of interest, and
then choose "Resources".

*** Come Visit Us

If you are in the market for a DOS or Windows (3.1/95/98/NT) serial port
library, then come take a look at us at http://www.marshallsoft.com. We have
developed libraries for C/C++, Pascal, Visual Basic, PowerBASIC, Delphi,
Fortran, COBOL, and MATLAB.


