BigDumbDinosaur wrote:
GARTHWILSON wrote:
I have a little bit about these printers' pinouts and signaling protocols in the 6502 primer's circuit potpourri page, at
http://wilsonminesco.com/6502primer/pot ... html#LPT...
From that...
Quote:
The lower two lines, data and strobe, are computer outputs to the printer, while the upper two, busy and acknowledge, are computer inputs from the printer. You do need to pay attention to the busy line, but I've never paid attention to the acknowledge line.
That is at odds with the original Centronics interface, which did not have BUSY. BUSY, along with some other “features,” was added to the Centronics interface by Epson under pressure from IBM, originally in a misguided effort to prevent non-IBM printers from working with a PC. The real Centronics interface uses /ACK as the handshake, along with /STROBE. The parallel port on a PC, regardless of age, is an aberration, not a true Centronics port.
BUSY is not entirely trustworthy as a handshaking line. When asserted, it indicates the printer’s buffer is full or the printer is off-line. It doesn’t mean that the most recent byte was accepted for processing. That is the role of /ACK. Also note that BUSY is high-true, but /ACK is low-true. There is a reason for that...in handshaking, low-true is usually considered the more reliable arrangement due to limitations of TTL totem-pole outputs.
Furthermore, if the port’s driver uses interrupts, use of BUSY as the handshake may cause timing violations that can lead to data corruption. This is because BUSY is asserted almost immediately when /STROBE is driven low. It may not be a problem with a low-speed computer, but will definitely arise on a faster system. Use of /ACK doesn’t open this door, since /ACK is not asserted until well after /STROBE has been toggled and the datum has been accepted by the printer.
Many years ago, I concocted a Centronics interface for my Commodore 128 through the user port, which is wired to CIA #2. The handshaking was /STROBE and /ACK, and I also rigged up the interface so when the computer went through reset it would toggle /RESET on the printer ([pin 31). I wired it in a way so I could reset the printer independently of the computer. This project got published in Transactor. I guess my "Big Blue blood" started this reply, reference the modified Centronics port on the original IBM PC. Going further back in time, pretty much all IBM I/O devices, regardless if they were punch card, tape, disk or printer had a "ready" indicator lamp. When illuminated, the device was ready to accept a command, when out, the device was considered to be busy. Busy being a tape drive searching for the requested data block, or disk drive searching for the requested sector, etc. The same applied to printers, such as the 1403, which the N1 version could print 1100 lines per minute of 132 characters wide and could do a high speed skip of 70 inches per second (announced in 1959 and withdrawn in 1999).
The original IBM PC had a projected life of approximately 250K units.... so much for that guess! In any case, realize that the IBM PC was basically designed by more traditional IBMers, hence the fact that the original IBM PC used parity memory, which all IBM compute platforms did. So I'm not quite sure that it was IBM trying to pressure Epson to make a one-off printer (hence proprietary), versus IBM engineers stating they had to have a BUSY signal in their own mind to be inline with traditional IBM I/O devices and the interactions with the controlling device. I suppose it's anyone's guess.... but then again, as time went on and the PC industry leaped at an alarming rate, IBM did create some one-off bits and such to minimize other players getting in the sand box. But when you publish the entire set of hardware schematics in a complete manner and the entire BIOS listing in the Technical Reference Manual, it's really inviting someone to go off and build their own, as it was all "off the shelf" parts of the day.
Here we are 4+ decades later still talking about it... who knew?
PS - I also wrote code to drive a parallel port printer from my C64 back in the 80's... I bought a Star Micronics dot matrix printer... even as a employee, couldn't afford/justify the employee discounted price on the IBM-logoed Epson printer. Oddly, I still have an IBM ProPrinter that's basically NOS, but I'm certain it needs a new ribbon!