I have been working for some time on a pet project to
make a mass
storage emulator for HP-IB systems. Given the massive improvement in
capacity that has taken place the past 10 years, most mass storage
devices from the 80s look pathetic.
However they're often large enough for the machines they were designed to
work with...
Consider the 9114 disk drive (HPIL interface). It fits about 630K on a
3.5" floppy disk. That's a _massive_ amount of storage for the HP41 (or
even HP71, HP75) calculators, to the extent that all the programs from
the HP solution books for a particular machine will fit on 1 or 2 disks.
So I looked hard at the HP-IB bus itself (using the
schematics from the
Series 80 adaptor) and it looks like a simple parallel bus. So why use
Tbe HPIB spec (or IEEE-488) is certainly published and available.
It is an 8 bit parallel bus, although it's not particularly simple. There
are a total of 16 lines :
8 data lines (bidirectional)
3 handshake lines (DAV (Data AVailable), from talker to listener(s) and
NFRD (Not Ready For Data), NDAC (Not Data ACknowledge) from listern(s) to
talker)
5 control lines (ATN (Attention), EOI (End Or Indentify), SRQ (Service
ReQuest), IFC (InterFace Clear), REN (Remote ENable)).
There are 3 classes of device on the bus : Controllers (which send bus
commands, select other devices, etc), Talkers (which output data) and
Listeners (which input data). A particular device may be more than one of
these -- a computer is likely to be able to be a Controller, Talker and
Listener, a disk drive a Talker and Listener (but not a controller) and a
printer a Listener (only).
a custom card, if the PC parallel port can be adapted
to drive an HP-IB
bus.
There have been many devices which implemented the IEEE-488 bus (GPIB,
HPIB) using a standard parallel interface chip like the 6821 or 6522
together with buffers. Sometimes some TTL (or PLD-based) state machines
were added to handle the low level side of the handshake, but this is
_not_ required. The handshake system was carefully designed so that a
relatively slow device (like a software driven PIA chip) can handle it
without missing changes of the signals. HP themselves often used a simple
microcontroller (8048 series) + a buffer chip to do it. The handshake was
handled entirely in software on the microcontroller.
I don't know if a PC (bidirectional) parallel printer port can do it.
Possibly it can, but there may not be enough inputs/outputs for all the
control lines. Cut-down GPIB implelmentations (e.g. to drive a plotter,
with the PC as controller) have certainly worked on the parallel port.
Even if you can't use the standard parallel port, it would be fairly easy
to make an add-on card with the necessary logic on it. And you wouldn't
have to use a difficult-to-find GPIB interface chip (many of which are
long out of production)
If the PC parallel port can be used, then I can port
the NetBSD drivers
to use the parallel port, rather than the HP 300 HP-IB interface. The
NetBSD drivers also support SS-80 compatible mass storage devices,
which means that the implementation can be verified against a real
HP-IB mass storage device. If this works than the drivers will have to
The CS/80 command specification was also published, although it's not
easy to find (I _do_ have it somewhere).
Let's keep this on the list (it's on-topic). I've fooled around with the
GPIB bus a bit (to the extent of making my own devices using TTL/PALs,
not the special interface chips) and might be able to give some help.
-tony