Martin McCormick wrote: > The old device is a Votrax Personal Speech System, a speech > synthesizer that was popular in the early eighties. The device has a > DB25 mail connector on its parallel port, but the pinout is totally > unlike anything else. Ahh yes, but that was Votrax. Was it completely encapsulated in epoxy resin to make it un-repairable, like the Type-n'-Talk? I think I have two of these, but at least one was faulty. They used a serial interface which also had handshake problems. > This makes me wonder why have both an ACK and a Busy? If there is an > ACK pin and the peripheral stops acknowledging characters, then the > data stops, anyway. An interesting question. Essentially, the two functions do exactly what they say, that is "Ack" is pulsed to mean "I have seen your Strobe pulse and read the data; you may release it now", while "Busy" means "I an NOT ready for more data". The correct sequence is to poll Busy before attempting to send data, and to wait for Ack afterward. If you can be sure your device will immediately and always latch in data on Strobe, you can use a simple monostable pair to generate Ack from Strobe, otherwise what you should really do is to provide an extra latch AND the monostable pair, with Busy operating as always. I think http://www.hut.fi/Misc/Electronics/pc/interface.html should have links about this. The simplest handshake is a two-phase Strobe and Acknowledge where the data is asserted, Strobe is asserted, Acknowledge is asserted to indicate the data has been latched, Strobe is then cleared and the data de-asserted (wild), while Acknowledge is cleared only when the data has been digested and the receiver is ready again. Lap-link (parallel) uses, I believe, a counter-phase system where data is asserted, Strobe is asserted, Acknowledge is asserted only when the data has been fully processed, new data (nybble) is asserted, Strobe is cleared, and Acknowledge cleared when this new data has been processed. I do not claim that laplink's pin allocations are the conventional ones though! The big problem in all this relates to what happens when a printer goes off-line; i.e., Busy was true then goes false. If a character was sent and Strobed in the interim, whether or not it was Ack-ed, it may be quite unclear whether it should be sent again or not. Or if the printer is switched off and on or connected and disconnected (i.e., switch- boxes!) This sort of uncertainty really fouls up network printing, particularly of graphical data! Cheers, Paul B.