Troubleshooting, Maintaining & Repairing PCs
Stephen Bigelow
 $54.95  0-07-913732-6
Backward Forward
Chapter: 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53

Reserve your copy at a
Beta Bookstore near you!
Contact Bet@books
© 1998 The McGraw-Hill Companies, Inc. All rights reserved.
Any use of this Beta Book is subject to the rules stated in the Terms of Use.

CHAPTER 37

Parallel (Centronics) port troubleshooting

Even after more than a decade of intense computer development, the parallel port (also called the LPT port or printer port) remains the fastest and most reliable printer connection technique in the computer industry. By sending an entire byte of data from computer to printer simultaneously, and managing the flow of data with discrete handshaking signals, the circuitry required to bundle and decode data and control signals (such as that needed by serial ports) is virtually eliminated. The longevity of parallel ports has been due largely to the their simplicity and good overall performance, but today’s parallel ports are not invulnerable to failure. Cable problems, static discharge damage, and spontaneous IC faults can easily disable printer communication. Additional parallel port problems can arise from the new generation of high-performance printers and other parallel port devices. This chapter explains the pinout and operation of conventional parallel ports, explains the advances that have taken place, and present a series of troubleshooting procedures intended to help you isolate and correct port problems.

Understanding the parallel port

The parallel port interface is one of the simplest and most straightforward circuits that you will encounter in a PC. Figure 37-1 illustrates a typical bi-directional port. A parallel port is composed of three separate registers; the data register, the status register, and the control register. Address bits A0 to A9 are decoded to determine which of the three registers are active. The use of -I/OR (-I/O Read) and -I/OW (-I/O Write) lines determine whether signals on the data bus (D0 to D7) are being read from or written to the respective register. When the port is ready to accept another character, handshaking line conditions will trigger an interrupt to request a new character.

The heart of a parallel port is the data register. In older PCs, the data register could only be written to (which renders the port unidirectional). But virtually all PCs since the release of i386 systems provide data registers that can be read and written (which makes the port bi-directional). To access a printer, the system CPU simply loads the port data register with the value to be passed. The bi-directional control register manages the behavior of the port, and effects the conditions under which new characters are requested from the CPU. For example, the control register is typically set up to generate an interrupt whenever the printer is ready to accept another character (i.e. IRQ7 for LPT1, and IRQ5 for LPT2). Finally, the status register is read to determine the printer's status (extracted from the logic conditions of several printer handshaking lines). All that remains is the port connector itself which is a female 25-pin sub-miniature D-type connector.

Addresses and interrupts

As you saw above, the conventional parallel port in a PC is implemented through a series of three registers - one register simply buffers the 8 data bits while the other two registers handle the port's handshaking lines. While older BIOS versions only supported two or three parallel ports, today's PCs use BIOS written to support up to four complete parallel ports designated LPT1, LPT2, LPT3, and LPT4. The base addresses allocated for each port are 0378h (LPT1), 0278h (LPT2), 03BCh (LPT3), and 02BCh (LPT4). The base address of each port corresponds to the data register. The status register of a respective port is accessed from the base address with an offset of 01h (i.e. 0379h, 0279h, 03BDh, and 02BDh), and the control register is accessed with an offset of 02h (i.e. 037Ah, 027Ah, 03BEh, and 02BEh).

NOTE: Although a typical PC can theoretically support four LPT ports, it is extremely rare for a PC to offer more than two ports. Even then, the IRQ for LPT2 (IRQ5) often conflicts with the IRQ assigned to Sound Blaster-type sound boards.

During initialization, ports are checked in the following order; 03BCh, 0378h, 0278h, and 02BCh, and LPT designations are assigned depending on what ports are found , so keep in mind that LPT addresses may be exchanged depending on your particular system. The specific I/O addresses for each port are kept in the BIOS data area of RAM starting at 0408h (see Table 29-8). As you might expect, only one LPT port can be assigned to a base address. If more than one parallel port is assigned to the same address, system problems will almost certainly occur.

The use of interrupts gets a bit complicated. There are basically two modes of requesting new characters for the printer; polling and interrupt-driven. Polling is the most popular method where BIOS "polls" (or checks) the respective port’s status register to see if it is ready to accept another character - no interrupts are generated. An interrupt-driven interface is much more efficient, but can bog down other important operations during printing.

For technicians who work on older machines, keep in mind that address 03BCh was originally reserved for a parallel port located on the IBM Monochrome Display Adapter (MDA). If you are servicing an older system with NO video support on the motherboard, the address 03BCh may be reserved in the event you (for some reason) want to install an IBM MDA card. For newer systems with video support located on the motherboard, address 03BCh may be the first parallel port address.

Always begin your service examination by checking the number of parallel ports in your system. Parallel ports are so simple and easy to add to various expansion cards, you can exceed the limit of four parallel ports without even knowing it. If more than four ports are active, a hardware conflict can result and crash the system - you will have to remove or disable the extra ports.

Parallel port signals

IBM and compatible PCs implement a parallel port as a 25 pin sub-miniature D-type female connector similar to the one shown in Fig. 37-2. The parallel connection at the printer uses a 36-pin "Centronics-type" connector (Amphenol type 57-30360). The exact reasoning for this rather specialized connector is not clear since 11 pins of the Centronics connector will remain unused. There are three types of signals to be concerned with in parallel connections; data lines, control (or handshaking) lines, and ground lines. Table 37-1 identifies the name and description of each pin. The following section describes each signal. The pin numbers at both the PC and printer ends are listed for your reference. Also remember that all signals on the parallel port are compatible with TTL signal levels.

Data lines - The data lines are the actual data-carrying conductors that carry information from the parallel port to (or from) the printer (or other peripheral). There are eight data lines (D0 to D7) located on pins 2 through 9. To reduce the effects of signal noise on parallel cables, each data line is given a corresponding data ground line (pins 18 to 25). Ground lines also provide a common electrical reference between the computer and peripheral. The remainder of a parallel port is devoted to handshaking.

Initialize and select - To ensure that the printer starts in a known initialized state, an -Initialize signal (-INI on pin 16) sent from the computer is used to reset a printer to the state it powered up in. Initializing the peripheral has the same effect as turning it off, then turning it on again. The -Initialize line is active-low, so the printer must apply a logic 0 to trigger an initialization.

The select line (SEL on pin 13) tells the waiting computer that the peripheral is "on-line" and ready to receive data. Select is an active-high logic signal, so a logic 1 indicates that a device is on-line and ready, while a logic 0 indicates that the printer is not ready to receive data. The computer will not send data when the select line is logic 0. You can usually determine the select line's general condition from the printer's front panel "on-line" light.

Strobe, busy, and acknowledge - Once a computer has placed eight valid bits on the parallel data lines, the peripheral must be told that the data is ready. A -Strobe signal (-STR on pin 1) is applied to the peripheral from the computer just after data is valid. The brief -Strobe signal causes the peripheral to accept the byte and store it in the printer's internal buffer for processing.

Under ideal circumstances, parallel printer ports can achieve data rates of up to 500,000 characters per second. With such a tremendous throughput, the printer needs some method of coordinating data transfer - the computer must wait between characters until the printer is ready to resume accepting new characters. Printers use the Busy signal (BSY on pin 11) to delay the computer until the printer is ready. Peripherals drive the Busy line to logic 1 anytime a -Strobe signal is received. The Busy signal remains logic 1 for as long as it takes the peripheral to prepare for the next byte. It is important to note that a Busy signal can delay the computer indefinitely if a serious peripheral error has occurred (i.e. paper exhausted or ribbon jammed).

When the peripheral has received a byte and dealt with it, the peripheral must then request another character from the waiting computer. The printer drops the Busy line and initiates a brief -Acknowledge pulse (-ACK on pin 10). -Acknowledge signals are always active-low logic signals, and a typical acknowledge pulse lasts about 8m S. It is this interaction of data, -Strobe, Busy, and -Acknowledge signals that handles the bulk of data transfer in a parallel port.

Auto feed - Some printers make the assumption that a carriage return signal (or <CR>) will automatically advance the paper to the next line, while other printers simply return the carriage to the beginning of the existing line without advancing the paper. Many printers make this feature selectable through the use of a DIP switch in the printer, but an -Auto Feed signal (-AF on pin 14) from the computer can control that feature. A TTL logic 0 from the computer causes the printer to feed one line of paper automatically when a carriage return command is detected. A TTL logic 1 from the computer allows only a carriage return (paper would have to be fed manually). Most computer parallel ports keep this line at logic 0.

Device select - The -Device Select line (-DSL on pin 17) allows the computer to bring the peripheral on and off-line remotely. Many parallel ports leave this signal as a logic 0 so that peripherals will automatically accept data. A logic 1 on this line would inhibit printer operation.

Error - The -Error signal (-ERROR on pin 15) generated by a printer (or other peripheral) tells the computer that trouble has occurred, but is not specific about the exact problem. A variety of problems can cause an error - it depends on your particular peripheral and what it is capable of detecting. The error line uses active-low logic, so it is normally logic 1 until an error has occurred. An -Error signal can typically indicate an "Out of Paper", "Printer Offline", or "General Printer Fault" error condition.

Port operation

This part of the chapter describes a standard sequence of events in a parallel port. The parallel data transfer begins by placing the printer on-line. -Strobe and -Acknowledge must be TTL logic 1, while Busy must be logic 0. In this state, the peripheral can now accept a byte of data. When printing is attempted, the CPU polls the desired LPT port and checks its status register. If the post is ready, a byte is written to the data register, and passed to the peripheral.

Data must be valid for at least 0.5m S before the computer initiates a logic 0 -Strobe. The printer responds by returning a logic 1 Busy signal which changes the port's status. Subsequent polling of the status register will indicate that the port is unavailable. The -Strobe pulse must last at least 1.0m S. Data must be held valid at least 0.5m S after the -Strobe pulse passes. This timing ensures that the peripheral has enough time to receive the data. Since Busy is now logic 1, communication stops until the data byte has been processed. Processing can take 1mS if the printer's buffer is not full. If the printer's buffer is full, communication may be halted for a second or more. After the data byte has been processed, Busy is dropped to logic 0 and the printer sends a 5.0m S logic 0 -Acknowledge pulse to request another data byte from the waiting computer. Once the -Acknowledge line returns to a TTL logic 1 condition, the interface is ready to begin a new transfer. The status register then indicates the port is ready, and when the port is next polled, a new byte can be written. Figure 37-3 illustrates this relationship - one complete cycle can take a bit over 1mS.

Advanced parallel ports

The appeal of a parallel port is easy to understand - it is simple. While serial devices struggle with baud rates, stop bits, and parity (problems that continue to this day), parallel devices just plug into the 25-pin D-type connector, and away you go. The parallel port offered "plug-and-play" capability before the term ever became vogue. Although the parallel port has been a staple of PC communication, it certainly has not gone unchanged over the last 15 years. If you’ve been shopping for new computers or I/O boards over the last year or two, you’ve probably noticed the terms "Enhanced Parallel Port" (EPP) or "Enhanced Capabilities Port" (ECP) associated with the parallel port. With a recent IEEE 1284 parallel port standard developed by the Institute of Electrical and Electronic Engineers (IEEE), the PC industry has finally moved past the "classical" parallel port architecture, and embraced a truly improved parallel port. This part of the chapter compares the various parallel port "modes".

Unidirectional ports - The original PC utilized a unidirectional parallel port. That is, the port sent data only one way (from the PC to the peripheral device which was almost always a printer). For the time, unidirectional communication was adequate for general-purpose PCs, and the parallel port became synonymous with "printer port". Unidirectional ports reigned in the PC market until 1987 (around the time of the i386).

"Type 1" bi-directional ports - By 1987, IBM had launched its PS/2 line. Among the other technological advances in the PS/2, IBM incorporated a bi-directional parallel port. Now, bi-directional ports were hardly a breakthrough (older hobby-type PCs had used similar ports), but IBM was really the first to use a bi-directional port in a commercial PC. The bi-directional port was really not any faster or better than a uni-directional port, but the ability to send data back to the PC opened up the parallel port to other devices besides printers. Clone PC manufacturers jumped on the improvement, and bi-directional ports became common in almost all subsequent clones.

"Type 3" bi-directional ports - One of the problems with bi-directional parallel ports is that they are CPU-intensive, requiring relatively large amounts of CPU attention in order to manage the transfer of data. Later models of the PS/2 (the 57, 90, and 95) made an attempt to increase the throughput of a parallel port by using direct memory access (DMA) techniques. The DMA approach allows the CPU to define a block of memory (i.e. printer ASCII characters) to be sent. A DMA controller takes over control from the CPU and transfers the data without CPU intervention - generally resulting in faster data transfer. This approach also worked when receiving data. In current practice, Type 3 bi-directional ports are rarely used because today’s high-performance CPUs can transfer data much faster than a DMA process.

IEEE 1284 modes

By the end of the 1980s, it was becoming clear that "conventional" bi-directional parallel ports were simply not adequate to handle the new generations of faster peripherals that were appearing for the parallel port (i.e. CD-ROMs, tape drives, and laser printers). The 150KB/s parallel transfer rates that were once considered speedy were now severely limiting the new peripherals. In 1991, a group of major PC manufacturers - including IBM, Lexmark, and Texas Instruments - formed the Network Printing Alliance (NPA) in an attempt to develop a new parallel port architecture. In 1994, the IEEE (in conjunction with the NPA) released the Standard Signaling Method for a Bi-Directional Parallel Peripheral Interface, also known as IEEE standard 1284.

The IEEE 1284 does not define a single parallel approach, but instead outlines five different operational modes for the parallel port; compatibility mode, nibble mode, byte mode, ECP mode, and EPP mode. All four modes offer some amount of bi-directional capability (known under IEEE 1284 as back channel communication). When the 1284-compliant parallel port is initialized, it checks to see which operating mode is most appropriate.

Compatibility mode - IEEE 1284 is fully backward-compatible with conventional parallel port technologies where data is sent along eight data lines, the status lines are checked for errors and to see that the device is not busy, then a Strobe signal is generated to "push" the data into the device. As with ordinary parallel ports, the output of a single byte requires at least four I/O instructions. Data bandwidth is limited to 150KB/s.

NOTE: Whenever problems are encountered operating parallel port devices, try setting the parallel port to "Compatibility Mode" in the CMOS Setup.

Nibble mode - The nibble mode (4 bits at a time) is a simple means of receiving data back from a peripheral device in fewer I/O instructions, though it is very inefficient. When used by itself, the nibble mode is limited to about 50KB/s. In most practical implementations of IEEE 1284, the nibble mode will rarely be used for more than gathering brief diagnostic or status information about the peripheral.

Byte mode - The byte mode allows the PC to disable the hardware drivers normally used to operate parallel data lines, which allows the data lines to be used as an input port to the PC. When in the byte mode, a peripheral can send a full byte to the PC in only one I/O cycle. Thus, it is possible to acquire data from a peripheral much faster than would be possible in the nibble mode.

ECP mode - The Enhanced Capabilities Port (ECP) allow bi-directional data transfer within a single I/O cycle. When a transfer is requested, the port’s hardware will automatically perform all of the port synchronization and handshaking operations formally handled by software-driven I/O cycles in the compatibility mode. When properly implemented, an ECP port can run from 800KB/s to 2MB/s depending on the device at the port and the cable quality between them.

EPP mode - The Enhanced Parallel Port (EPP) is the apex of IEEE standard 1284. Like the ECP mode, EPP operation facilitated bi-directional data transfer in a single I/O cycle with the port hardware itself handling all synchronization and handshaking. EPP operation also can run from 800KB/s to 2MB/s. However, EPP operation takes another step forward by treating the parallel port as an extension of the system bus - this allows multiple EPP devices to exist on the same port, while still remaining uniquely addressable (similar to a SCSI bus where multiple devices can exist on the same bus).

ECP/EPP cable quality

Conventional parallel ports are limited to cable lengths of about 10 feet (about 3 meters). Beyond that, cross-talk in the parallel cable can result in data errors. Ideally, high-quality, well-shielded cable assemblies can extend that range even more, but the cheap, mass-produced cable assemblies that you often find in stores are rarely suited to support communication over more than 6 feet (about 2 meters). To support the high-speed communication promised by IEEE 1284, a new cable specification also had to be devised. This is hardly a trivial concern - especially considering that IEEE 1284 seeks to extend parallel port operation to as much as 30 feet (about 10 meters). Be sure to use an appropriate cable when configuring a parallel port in ECP or EPP modes.

IEEE 1284 issues

Unfortunately, while the potential and promise of IEEE 1284 offers a lot of appeal, there are some serious considerations involved in configuring an enhanced port arrangement. Specifically, you will require an IEEE 1284-compliant parallel port, cable, and peripheral (i.e. printer, tape drive, hard drive, and so on) to take full advantage of enhanced capabilities.

Installing an IEEE 1284 parallel port is certainly not a problem - most current multi-I/O boards and late-model motherboards are now providing IEEE 1284-compliant ports. The trouble is that using a $5 printer cable with your old Panasonic KX-P1124 dot-matrix printer will just not provide any advantages. To start benefiting from an IEEE 1284 port, you will need at least an IEEE 1284 cable and a device with significant memory capacity (such as a laser printer). At that point, you may start to see some speed improvements, but the additional speed will still fall far short of the projected figures. Ultimately, you will need to install IEEE 1284-compliant peripherals which will provide ID information to the port and allow optimum performance.

Troubleshooting the parallel port

While the typical parallel port is a rather simple I/O device, it presents some special challenges for the technician. Older PCs provided their parallel ports in the form of 8-bit expansion boards - when a port failed, it was a simple matter to replace the board outright. Today, however, virtually all PCs provide at least one parallel port directly on the motherboard - the feature usually supported by an "I/O Controller" component of the motherboard’s main chipset. When a problem is detected with a motherboard parallel port, a technician often has three choices:

NOTE: If a diagnostic cannot identify the presence of a physical parallel port (a loopback plug may need to be attached), chances are that the port is confirmed defective.

Tips to fix parallel ports

Parallel ports are generally not complex devices, but there are some common issues that show up regularly. Before you check out the symptoms later in this chapter, take a look at some of the points below:

Symptoms

Symptom 37-1. You hear a beep code or see a POST error indicating a parallel port error. The system initialization may or may not halt depending on how the BIOS is written. Low-level initialization problems generally indicate trouble in the computer's hardware. If the computer's beep code sequence is indistinct, you could try rebooting the computer with a POST analyzer card installed. The BIOS POST code displayed on the card could be matched to a specific error explanation in the POST card's documentation. Once you have clearly identified the error as a parallel port fault, you can proceed with troubleshooting.

Start with the system as a whole and remove any expansion boards that have parallel ports available. Retest the computer after removing each board. If the error disappears after removing a particular card, then that card is likely at fault. You can simply replace the card with a new one, or attempt to repair the card to the component level. If there is only one parallel port in the system, it is most likely built into the motherboard.

For older systems, the fault is probably in one or more of the discrete I/O ICs or latches directing the port’s operation. You will need to refer to the schematic(s) for your particular system motherboard to determine exact signal flows and component locations. Newer system motherboards enjoy a far lower component count, so all parallel port circuitry is usually integrated onto the same application-specific IC (ASIC). A schematic would still be valuable to determine signal paths, but you could probably trace the parallel port connector directly to its controlling IC. Replace any defective components, or replace the motherboard outright.

Symptom 37-2. You see a 9xx parallel adapter displayed on your XT or early AT system. BIOS has not located any parallel circuit defects on initialization, but has been unable to map LPT labels to the appropriate hardware-level ports. As in Symptom 37-1, the 9xx series error codes usually indicate a hardware fault in the computer. Follow the procedures in Symptom 37-1 to isolate and resolve the problem.

Symptom 37-3. The computer initializes properly, but the peripheral (printer) does not work. Your applications software may indicate a "printer timeout" or "general printer" error. Before you even open your tool kit, you must determine whether the trouble lies in your computer or your peripheral. When your printer stops working, run a self test to ensure the device is at least operational. Check all cables and connectors (perhaps try a different cable). If the peripheral offers multiple interfaces such as serial and parallel, make sure the parallel interface is activated in the peripheral. Also be sure to check the software package being used (i.e. word processor, painting package, system diagnostic, and so on) to operate the printer. Ensure that the software is configured properly to use the appropriate LPT port, and that any necessary printer driver is selected. If no software is available, you can try printing from the DOS command line using the <Shift> and <Print Screen> keys. This key sequence will dump the screen contents to a printer.

Disconnect the printer at the computer and install a parallel loopback plug. Run a diagnostic to inspect each available parallel port. Take note of any port(s) that register as defective. Locate the corresponding parallel port. If the port is installed as an expansion board, replace the defective expansion board. If the port is on the motherboard, you can replace the defective port controller IC, install an alternate expansion board, or replace the motherboard outright.

Symptom 37-4. The peripheral (printer) will not go on-line. Before data can be transferred across a parallel port, proper handshaking conditions must exist; the Busy (pin 11) and Paper Out (pin 12) lines must be TTL logic 0, and the Select (pin 13) and -Error (pin 15) lines must be TTL logic 1. All four signals are outputs from the peripheral. You can examine these levels with an ordinary logic probe. If any of these signals is incorrect, the peripheral will not be on-line. First, try a new communication cable. An old or worn cable may have developed a fault in one or more connections. Next, try the computer with a different peripheral. If a new peripheral DOES come on-line, the error exists in the original peripheral's parallel port circuitry.

If a different peripheral does not operate properly, there is a problem with the computer's parallel port. Examine and alter the computer configuration to ensure that there is no conflict between multiple parallel ports. Disconnect the printer at the computer and install a parallel loopback plug. Run a diagnostic to inspect each available parallel port. Take note of any port(s) that register as defective. Locate the corresponding parallel port. If the port is installed as an expansion board, replace the defective expansion board. If the port is on the motherboard, you can replace the defective port controller IC, install an alternate expansion board, or replace the motherboard outright.

Symptom 37-5. Data is randomly lost or garbled. Your first step should be to check the communication cable. Make sure the cable is intact and properly secured at both ends. The cable should also be less than 2 meters (about 6') long. Very long cables can allow crosstalk to generate erroneous signals. If the cable checks properly, either the port or peripheral is at fault. Start by suspecting the parallel port. Disconnect the printer at the computer and install a parallel loopback plug. Run a diagnostic to inspect each available parallel port. Take note of any port(s) that register as defective. Locate the corresponding parallel port. If the port is installed as an expansion board, replace the defective expansion board. If the port is on the motherboard, you can replace the defective port controller IC, install an alternate expansion board, or replace the motherboard outright.

If you can not test the computer's parallel port directly, test the port indirectly by trying the peripheral on another known-good computer. If the peripheral works properly on another computer, the trouble is probably in the original computer's parallel port circuitry. Replace any defective circuitry or replace the motherboard. If the peripheral remains defective on another computer, the peripheral itself is probably faulty.

Symptom 37-6. You see a continuous "paper out" error even though paper is available and the printer's paper sensor works properly. Plenty of paper is installed in the printer, and you have already checked the paper sensor. Try another printer. If another printer works, the problem is in your original printer and not in the parallel port. Use a logic probe and check the Paper Out signal at the computer. Try removing and re-inserting paper while the printer is running. You should see the Paper Out signal vary between a TTL logic 0 (paper available) and a TTL logic 1 (paper missing). If the signal remains TTL logic 1 regardless of paper availability, the printer's sensor or communication circuits are probably defective. If the Paper Out signal correctly follows the paper availability, the trouble is probably in your computer's communication circuitry.

When you suspect that the problem is in the parallel port, disconnect the printer at the computer and install a parallel loopback plug. Run a diagnostic to inspect each available parallel port. Take note of any port(s) that register as defective. Locate the corresponding parallel port. If the port is installed as an expansion board, replace the defective expansion board. If the port is on the motherboard, you can replace the defective port controller IC, install an alternate expansion board, or replace the motherboard outright.

Further Study

That’s all for Chapter 37. Be sure to review the glossary and chapter questions on the accompanying CD. If you have access to the Internet, take a look at some of the various parallel port resources listed below:

LPT Ports and Parallel Drives: http://syquest.com/support/papers.html

HP: http://www.hp.com

Backward Forward
Chapter: 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53

Reserve your copy at a
Beta Bookstore near you!
Contact Bet@books
© 1998 The McGraw-Hill Companies, Inc. All rights reserved.
Any use of this Beta Book is subject to the rules stated in the Terms of Use.

Beta Books | Beta Bookstores | Computing McGraw-Hill

Professional Publishing Home | Contact Us | Customer Service | For Authors | International Offices | New Book Alert | Search Catalog/Order | Site Map | What's New


A Division of the McGraw-Hill Companies
Copyright © 1998 The McGraw-Hill Companies. All rights reserved. Any use is subject to the Terms of Use; the corporation also has a comprehensive Privacy Policy governing information we may collect from our customers.