|4100 Moorpark Ave. #104|
|San Jose, CA 95117 USA|
PORTTEST will test I/O ports installed in IBM PC and AT compatible computers running MS-DOS. It is useful to identify ports, manipulate system tables, test the ports, and to identify and correct problems.
Eight bits of data are transferred at a time over PC parallel ports. Data is sent using +5 volts and 0 volts to represent a 1 or a 0 data bit. As you might expect, data can be transferred relatively fast in this manner. The disadvantages of this method is that more wires are needed and that most common parallel ports can only work reliably at distances of under 20 feet.
There are three different types of parallel ports found in PCs.
The bidirectional port offers data transfer in both directions on the same lines, and both the fast parallel and the bidirectional port can run in any of the three data transfer rates. Your software should attempt to run in the most advantageous mode, depending on the port type it is connected to. If errors are encountered in data transfers you may need to change the port usage to a different setting. You will generally need to select a lower speed if errors occur during data transfers. Speed variations are: 250Kb, 500Kb, and 1Mb.
The three types of parallel ports in decreasing order of data throughput are:
There can be a maximum of three of any type parallel port in your PC, LPT1, LPT2, and LPT3.
Unlike serial ports which rely on a chip to do the data transmission, parallel data is handled entirely with software. Parallel ports have three registers:
The way in which data is transmitted over parallel ports varies, but a general description follows. To send a byte of data, the software outputs the byte to the data lines, then pulses the STROBE output. The device on the other end (normally a printer) then asserts its BUSY line. The PC waits for BUSY to go away before sending the next byte. In other implementations, the ACKNOWLEDGE line is used for the printer to signal to the PC that it has received the data.
The other control lines are used for various purposes. On the printer side, PAPER-END is a signal to the PC that the printer is out of paper. The printer also sends a SELECTED signal to the PC indicating that it is "on line" and ready to receive data. The ERROR signal from the printer can be used for any type of error that would cause the printer to be unable to receive data. In general, if any of these signals are asserted, BUSY is also asserted.
The PC has three additional output control lines. Usage of these lines varies with the particular software and printer in use. In the original PC implementation, they are used as follows:
SELECT was most often used as a method to signal the operator that some attention was required. For example, when the software needed to change to a different font, it would deselect the printer. This would cause the printer to turn off its SELECTED line and its front panel light. The user would then change the print wheel in the printer and press the SELECT button on the printer. The printer would then turn on its SELECTED line signalling the software to proceed. Many printers will stay in the "off line" condition for as long as SELECT or INIT are asserted even if the SELECT button is pressed.
As stated earlier, not all of these controls lines are used in the same manner. Some of the latest laser printers on the market ignore all the control lines to it except for the STROBE line.
The PC serial port uses voltages and connectors established by the Electronic Industries Association (EIA) standard specification known as RS-232C. In addition to one bit of data, other control signals are also sent and received. Sending data one bit at a time is relatively slow, but serial ports have the advantage of using fewer wires to connect two devices and being able to communicate over relatively long cable distances. Most serial ports can easily communicate over 100 ft. of cable. Data is sent using +12 volts and -12 volts to represent a 0 or a 1 data bit. In addition, there are a wide variety of serial peripherals available which make use of the standard RS-232C specification. Furthermore, recent advances have made serial data transmission reliable at higher data rates. These data rates are referred to as "bps" (bits per second) or "baud" rates.
The heart of all serial ports is an Universal Asynchronous Receiver Transmitter, referred to as a UART. The CPU reads and writes a byte (8 bits) of data to this chip, and the UART handles the serial transmissions and other functions related to the RS-232C specification. The UART used in most PC & XT type (8088 and 8086) systems is the INS8250B or equivalent. Most AT class machines (80286 & above) use the NS16450 device. The 16450 chip is designed to handle the higher data bus rates of the faster computers. The serial data communications however is identical to the 8250. A newer 16550 UART is now available that is 16450 compatible but with two 8-bit output buffers so data transfers can occur at higher transfer rates especially suitable for CCITT V.32bis. It is beyond the scope of this lesson to describe the detailed workings of these chips.
Any I/O device in a PC must be located at a particular address. Actually, a serial port consists of eight addresses and a parallel port has three. The address used to refer to a particular port is the first or BASE address. For both serial and parallel ports, this first address is where the data to be transferred is read and written.
These addresses are the PHYSICAL addresses of the ports. It is where the Central Processing Unit (CPU) of the PC must read or write data to send or receive data over a port. There are no set rules for what addresses must be used for ports except for copying what IBM did with the PC in 1981, but some commonly used addresses are supported by most manufacturers. Generally, the first two serial ports are at physical addresses 3F8 and 2F8. These are referred to as COM1 and COM2, the logical names. Generally, parallel ports are located at addresses 3BC, 378 and 278, which are named LPT1, LPT2, and LPT3. Many older monitor cards have a parallel port built in. In these cases, the port is usually at 3BC.
Most PC POST/BIOS routines do a quick check upon power up to determine how many serial and parallel ports are installed. They examine specific addresses by writing to them, then reading them back to determine if a device is present at that address. The POST/BIOS then places the address of each responding device in a table in RAM located at 40:0 for serial ports and at 40:8 for parallel ports.
After a PC has booted and the POST/BIOS is no longer in control, DOS uses the addresses in these tables as COM1, COM2, etc. for serial ports, and LPT1, LPT2, etc. for parallel ports. For example, DOS includes a program called MODE to set various parameters such as the baud rate, of a port. In order to use the MODE command, the user must refer to the desired port by its COM or LPT assignment. The address used is the one stored in the table. It is very possible that COM1 in one system is not at the same physical address as COM1 in another system.
A PC's POST/BIOS normally detects installed serial ports and stores the address of the transmit/receive register in its tables. This is called the "base" address and it is this address that appears on PORTTEST's main menu. The IRQ (Interrupt Request) numbers are not stored. PORTTEST assumes IRQ4 for the port at 03F8 hex and IRQ3 for the port at 02F8 hex because they are the most commonly used.
Base addresses are as follows:
|LPT1||03BC hex||LPT2||0378 hex||LPT3||0278 hex|
|COM1||03F8 hex||COM3||03E8 hex|
|COM2||02F8 hex||COM4||02E8 hex|
Note: Only DOS 3.3 and greater supports COM3 & COM4. Often however, the BIOS does not detect more than 2 ports. In this case, use PORTTEST to install these ports in the system tables so that DOS will recognize them.
In order for DOS to recognize a COM or LPT number, there must be a valid address listed in the table, and there can be no gaps. If there is a zero entry in the table, DOS considers that the end of the list. Therefore, as far as DOS is concerned, it is impossible to have a COM1 & a COM4 without having a COM2 & COM3 also! Other software may report differently as explained below.
Many BIOS routines only check for two serial ports and three parallel ports. As PCs became more popular, the need for more ports grew. This problem was "fixed" by DOS 3.3 and higher, which will recognize up to four COM and three LPT ports. However, DOS will only recognize a logical port whose physical address has been placed in the RAM table. If the BIOS doesn't put the physical address there upon power up, DOS won't recognize a logical port even when the hardware is properly configured and installed!
If you need to use DOS to support more ports than your BIOS will detect and install, PORTTEST can be used to place the correct address in the system tables.
NOTE: Many application programs do not use DOS to interface to ports, so that it may not be necessary to include a port's address in the system tables. However, you must place the address in the table in order to test a port with PORTTEST.
Considerable confusion exists regarding proper logical and physical port address. Strictly speaking, there is no proper physical address for any of the logical ports. The logical port structure permits any physical address to be placed into its tables.
Many application programs access ports directly, and do not use the built in routines in the hardware's BIOS. This is usually done because the application needs a more sophisticated device driver than is provided by the BIOS. When this is the case, the logical port addresses are not always used properly. Some applications access ports directly, but properly determine the physical address from the logical address by using the table at 40:0. Other programs do not use logical addresses at all, and just refer to physical addresses. Still others convert logical to physical addresses using their own table. In this case, the program could report that there is a COM1 and a COM4 installed with no COM2 or COM3!
In addition to a serial port's registers, the UART also has the ability to interrupt the processor, either after it has transmitted a byte of data, or after it has received one. Ideally, the interrupt request line that each port uses should be unique, but there are not always enough interrupts to go around. Therefore, interrupts are sometimes used by more than one device. This is ok, but risky, as long as only one of the devices is active at a time.
A standard AT has sixteen hardware interrupt request lines. Most often, IRQ4 is used for serial ports COM1 and COM3 and IRQ3 is used for serial ports COM2 and COM4. Parallel port LPT1 can use IRQ7 and LPT2 can use IRQ5 although no interrupt is required for most printer port operations. Most I/O cards have jumpers to select which interrupt and I/O addresses will be used. If there are conflicts, the user should examine these jumpers to determine the cause of conflict.
Standard Centronics Parallel Cable - to connect parallel port to a standard printer
Parallel-to-Parallel Data Transfer Cable - this cable can be used to create a client /server LAN using INTERSVR and INTERLNK described later in this lesson which comes with MS-DOS version 6.0 or greater. This same cable is also used for LapLink and LANtastic-Z.
To test your cables use Interlnk & Intersvr, the client/server software that comes included with MS-DOS 6.0 and above. This software will allow you to create a two node LAN and works with both the Parallel transfer cable (Application #1) or the Serial null-modem cable (Application #2). Try both and determine for yourself the speed differences.
INTERSVR.EXE Starts the Interlnk server. All the parameters are optional. Once started the INTERSVR sets up a dedicated server on the machine it is running. All access will be through the client machine connected using the complement INTERLNK software. INTERSVR will automatically search for a connection (parallel or serial) and automatically connect and remap all available drives. The INTERSVR / INTERLNK software combination recognizes either a parallel transfer cable or serial null modem cable.Syntax:
To copy Interlnk files from one computer to another, use the following syntax:
INTERLNK.EXE Connects two computers via parallel or serial ports and enables the computers to share disks and printer ports. For example, you could connect a laptop computer to a desktop computer and share files. You must install the INTERLNK.EXE device driver in your CONFIG.SYS file. Connection to the client machine running INTERSVR will be automatic when you reboot your computer. You can also use INTERLNK as a command from the DOS prompt once installed.Syntax (from CONFIG.SYS)
To control INTERLNK connections from the DOS prompt use this command.
Last modified Aug 15
Copyright © 1998