>If I remember corectly I did some work with a device that only used the busy
>line (a cash till) the printer was conected through this device and the busy
>was flaged when the till opned this stops the flow of char's so if the busy is
>aranged to pulse after each char then this should hold the PC until it is
>released when it can send the next char.
I want to express thanks for this answer and another response I got
privately. It sounds like the P.C. parallel port works a lot like the
Apple II port I remember except for the addition of the Busy flag. I was
wanting to be sure there wasn't a cabling shortcut that I could use to make
the port work without the ACK pin, but it sounds like I will need to build
a delay like was described in the response. 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. Fortunately, there is a 5-volt
VCC line available so I can power some logic chips. It just means my cable
will now have an extra box hanging off of it. Oh well, that's better than
not being able to make it work at all.
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
stop, anyway. At least this tells me that if I ever build something using
a PIC that gets input from the P.C. printer port, I had better leave a
PIC pin to send the ACK each time a new byte is received.
I think I came up with a solution to my parallel port problem, but
I cheated. Thanks to a couple of comments from list members, I decided that
trying to improvise an ACK signal to run that old speech synthesizer from
the P.C. parallel port wasn't going to be worth the effort. If the screen
dumps I meant to send to the synthesizer caused any problem with it, I would
have been stuck with that.
I found out much to my surprise that Jameco still sells 8-bit
bidirectional parallel ports that can be set to unused printer port addresses.
At about $20.00, this sounded like just the ticket.
Thanks to the couple of people who answered my questions, I
confirmed what options were left and finally decided to change course and
work smarter rather than harder. I will now dump the printer port data
to another P.C. and capture it. The Votrax synthesizer works great connected
to a serial port so that should pretty well take care of things.
For anybody else who wants full 8-bit input, the part number from
the catalog is 129373.
> 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.
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
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!
"Paul B. Webster VK2BZC" writes:
> 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.
That's the beast, all right. They were very protective of their
circuitry and design, (Insert philosophical rant and %#@@%%%&&*** here.)
I believe this device sold for about $400.00 when new. I bought
it used about 12 years ago and I will try to use it until it dies and then
that's that. The power switch also resets the Z-80 so you have to keep the
switch clean and make several attempts at powering it up. This also means
that one must cycle the power switch off and on if the power is interrupted
from the AC outlet such as an external outlet strip or power failure.
A little less potting compound and a better reset circuit would have made
a pretty good product for the time.
Excellent description of the strobe/ACK timing dropped for brevity.
I connected another odd-ball speech synthesizer to an Apple II parallel port
in 1979 and basically discovered what you told us the hard way. I even
put a fast-forward button on the box to let one move through the output
at a fast rate. All that did was to take the speech board's Busy output
out of the circuit and cause a one-shot to deliver an ACK for each strobe
sent. The speech board used, then, was a TeleSensory Minispeech2 module.
It used -5 and -15 volt power rails and logic levels were -5 for 0 and 0 for
1. The company had good documentation for it and it explained what to do
to properly interface it with TTL. The Minispeech board also had only
6 data lines so you had to logically prevent control characters from reaching
the data bus or you would hear lots of weird characters mixed in with the
I shouldn't tell this part, but I got confused back in 1979 about
which data bit was LSB and MSB and soldered all 8 data lines wrong-way
out. I got the strobe and other lines of which there were only one correct,
so I got output, but it was all garbage. I remember being shall we say
furious when I found out about the reversed conductors on the data lines
because they were all tiny stranded wires that had been a royal pain to solder
in the first place.
Some of these discussions bring back floods of memories, but I won't
waste any more of the list bandwidth. I am glad I finally decided to just
buy an 8-bit input port for the application that started all this good
discussion. I am even more surprised that somebody is still selling them.
The system board I am trying to get screen dumps from to work the
CMOS setup is the system I plan to use for PIC development so this will
eventually lead to on-topic messages:-).