Given that reliable parallel port operation limits one to a cable length of no more than 15 feet, network print servers make a lot more sense.
Incidentally, a seemingly slow parallel port can be a victim of an overly long cable -- this malady can also affect network print servers that drive their printers via a parallel port. To understand why, you need to know a little bit about how the Centronics interface operates.
Centronics' original design consisted of eight data lines corresponding to the eight bits of a byte (usually labeled D0-D7) and two handshaking lines called *STROBE and *ACK (the asterisk indicates that these lines are low-true). Other lines, such as *BUSY and *RESET, exist in modern implementations to increase functionality. However, only D0-D7, *STROBE and *ACK are required to set up a working interface.
When the port is quiescent and the printer idle, D0-D7 will be at random logic levels. *STROBE, which is controlled by the computer, will be held at logic one (high or 5 volts) and *ACK (acknowledge), which is controlled by the printer, will also be held high.
When the computer is ready to print it will place a data byte on D0-D7, with the hardware logic corresponding to the individual bit values (i.e., a set bit will be manifested by the corresponding data line being brought high and a clear bit represented by a logic zero -- low or zero volts -- on the corresponding line. Following a small delay of one to two microseconds, the computer will inform the printer that a valid byte is present by momentarily bringing *STROBE low and then returning it to high -- *STROBE is said to have been toggled. Each transition of *STROBE must be maintained for at least one microsecond to assure that the printer will have sufficient time to recognize the toggling of *STROBE.
Assuming that the printer is ready for data, it will react to the toggling of *STROBE by reading the data from D0-D7. When the printer has completed this process it will toggle *ACK, which (in most cases) will cause an interrupt to occur in the computer, letting it know that the printer is ready for more data. Here again, each transition on *ACK must be maintained for at least one microsecond.
Now, in examining the above sequence it becomes clear that the data transfer rate can be quite high (as much as 500 K per second), which means there isn't a lot time for the data signals to propagate. Theoretically, electrical impulses can travel about 328 yards per microsecond. However, reactive effects within the cable substantially reduce the rate of propagation and also distort the signal's waveform or shape. If the cable is too long, errors will occur, either resulting in slower printing, random garbage appearing in the printer's output, or both.
To assure reliable operation, the waveform of the various signals must be reasonably rectangular (as seen on an oscilloscope) so that the logic transitions are clearly defined. If the waveform is excessively distorted, which can occur with a long cable, the hardware may have difficulty in determining when a logic transition has occurred, again causing errors.
Where the biggest slowdown comes is in the receipt of the *ACK signal. If signal distortion and/or propagation delay occurs, the expected interrupt from *ACK will not arrive as often, which means the computer will not feed data to the port as often. If the cable is too long, *ACK may become too distorted to cause a clean logic transition and the expected interrupt may never occur, stalling the printer.
The bottom line is keep the cable short, 10 feet or less is ideal. At 20 feet, printing problems will start to occur. Your only solutions if you need to increase the distance between the computer and the printer are to either use an EIA-232 (RS-232) interface, which can operate over distances of several hundred feet, or a network print server (a 100Base-T network is reliable out to 100 meters or about 328 feet). Given the greater flexibility of networking, you'd be better off going that route.
Got something to add? Send me email.
More Articles by BigDumbDinosaur © 2010-10-29 BigDumbDinosaur
Basic happened to be on a GE timesharing system that was done by Dartmouth, and when GE decided to franchise that, it started spreading Basic around just because it was there, not because it had any intrinsic merits whatsoever. (Alan Kay)