6

The Unibus was an innovative I/O system used by DEC PDP-11 machines. A device would choose some memory addresses to respond to, register an interrupt vector, then communicate with software that was compatible with it. This allowed the computer to be very flexible with what it could be used for, a little like USB today.

If I wanted to create a Unibus compatible device today (e.g. an Ethernet adapter that could "talk" to a web browser), I would need knowledge of the interface to create. According to Wikipedia, DEC "openly published the Unibus specification", so this information should still exist.

What signals and data would a hardware driver need to send to register as a minimal Unibus device?

  • 1
    Just found the Unibus Specification. I don't have time to put together an answer right now though (it's 132 pages!) so anybody else could instead. – wizzwizz4 Nov 8 '16 at 21:43
  • Wikipedia has an overview of the signals, and here's how the bus cycles look on a logic analyzer. And there's also the guy who built his own PDP-11 and unibus cards using a unique physical form factor... – dirkt Nov 9 '16 at 8:46
  • Being a Unibus device is more about how you react to signals you receive. You don't send anything to register yourself as a device. Building a Unibus device today is made a bit harder because the bus driver/receiver chip you need is no longer made. – Ken Gober Nov 9 '16 at 14:22
  • @KenGober I know that how from reading the specification. This question is harder than I originally thought... I'm not sure I know enough to write my own answer, but I'll try! – wizzwizz4 Nov 9 '16 at 16:37
  • bus transceiver chips are going to be a problem (= unobtainium), see brouhaha.com/~eric/retrocomputing/dec/interfacing/chips.html – sendmoreinfo Nov 9 '16 at 19:06
7

The simplest Unibus card is the G727 Grant Continuity Card, which does nothing except forward certain daisy-chained bus signals from one slot to the next. You can see a picture of one on the Wikipedia Unibus page.

But a Grant Continuity Card is arguably not really a "device". I think the simplest device would be a 1-word ROM. Still pretty useless but at least it counts as a device. It would be straightforward to extend that to a larger ROM size (something between 256 and 4096 16-bit words). The smaller ROM size would be good for a bootstrap card containing instructions to boot from an external device (tape or disk), while the larger size might be good for something like a ROM-based operating system or resident monitor.

A ROM device would need to respond to Data-In requests on the Unibus, but not much else. It would not need to be a busmaster (i.e. it would not do DMA) so you wouldn't need to worry about bus grant lines (aside from forwarding them just like a grant continuity card would do).

The way a Data-In request works is basically this:
1. processor puts an address on the address lines of the Unibus, sets the C0 and C1 lines on the bus to 0, then asserts MSYN.
2. when your device sees MSYN asserted with C0=0 and C1=0 it recognizes that this is a Data-In request. if the address on the address line is one that this device should recognize, then it retrieves the requested word and puts it on the data lines of the bus. the device then asserts SSYN.
3. when the processor sees SSYN asserted, it reads the requested data from the bus. when it has finished reading from the bus, it deasserts MSYN.
4. when your device seems MSYN deasserted, it deasserts SSYN. The Data-In bus cycle has now been completed and the bus is available for the next request.

  • From what little I've read of the specification, this seems to be very accurate. Thanks for the answer! – wizzwizz4 Nov 9 '16 at 18:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.