Virtual Device Bus Project

32 views
Skip to first unread message

Nick M

unread,
Dec 24, 2025, 11:52:57 PM (2 days ago) Dec 24
to [PiDP-11]
Hello!

I've been enjoying playing with SimH and the PiDP-11 for a little while now. I worked with the IMSAI 8080 back in the day, and before that pressed my nose against the glass to look at the blinkenlights of a PDP-11/70, but never had a chance to really dig into that machine, until now :) I believe I will be building up a PiDP-11 front panel kit soon! but even just playing through the SimH interface and Joerg Hoppe's simulated console has been a blast! This group has been a great resource for digging into the code, and a fun read for seeing what others are working on.

I got myself going on a pet project a few weeks back, and while the original motivation sort of went away, the project took on a life of its own. The basic idea is a virtual device bus (named the PigBus) that connects to the UNIBUS and allows the insertion of up to 255 custom devices. The main feature of this (vs. compiling custom devices directly into SimH, akin to Oscar Vermeulen's BMP180 device) is that once the PigBus is compiled into SimH, new devices can be developed and connected to it without re-compiling SimH. The system even allows hot-swapping of devices on a running SimH system.

This was my first time messing with SimH, so there's surely a lot of things I did wrong (or perhaps not in the best possible way). Also, I don't claim that this is particularly useful, or even necessarily interesting; but I've had a lot of fun with it, it's been a good excuse to learn a lot of new things (including more about how SimH works), and so I thought I would share it. The GitLab repository is https://gitlab.com/nickmacias/pigbus-release I've also made a set of videos discussing this project: https://youtube.com/playlist?list=PL2InzLo35oTeEa_T-BDbRR4b5DVmKHSbX&si=7EsK9MB-UZ5cVwDk

 Best wishes, -Nick

Anton Lavrentiev

unread,
Dec 25, 2025, 12:38:03 AM (yesterday) Dec 25
to Nick M, [PiDP-11]
Interesting project! :-)
My comments:
1. The source code of what it's based on is rather off the current open-simh repo;
2. Most DEC devices follow a rather uniform convention for bit assignments in CSRs:
<0> = GO
<6> = IE
<7> = RDY
<15> = ERR
I think it's best to stick with these assignments for clarity.
Best,
Anton

--
You received this message because you are subscribed to the Google Groups "[PiDP-11]" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-11+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/pidp-11/b80111e0-47bc-44c1-a517-0464b30c5f0en%40googlegroups.com.

Anton Lavrentiev

unread,
Dec 25, 2025, 12:42:51 AM (yesterday) Dec 25
to Nick M, [PiDP-11]
> <7> = RDY
I meant DONE, but the same meaning, basically

Nick M

unread,
Dec 25, 2025, 1:39:00 AM (23 hours ago) Dec 25
to [PiDP-11]
Hi Anton,

Thanks for the comments and suggestion about bit fields - I didn't realize there was a convention, that makes life a bit easier :) I'll probably switch things over to follow that.

> The source code of what it's based on is rather off the current open-simh repo;

Ah, that makes sense! I started with code from https://github.com/obsolescence/pidp11, but looking at that now, it says right there it came from https://github.com/open-simh/simh I'll update my READMEs to note that.

 Cheers, -Nick

Johnny Billquist

unread,
Dec 25, 2025, 9:40:55 AM (15 hours ago) Dec 25
to pid...@googlegroups.com
There is a sortof convention described in the PDP-11 Peripherals
Handbook. I'm including the first page of the relevant section here...

Johnny
> into SimH, new devices can be developed and connected to it /
> without re-compiling SimH/. The system even allows hot-swapping
> of devices on a running SimH system.
>
> This was my first time messing with SimH, so there's surely a
> lot of things I did wrong (or perhaps not in the best possible
> way). Also, I don't claim that this is particularly useful, or
> even necessarily interesting; but I've had a lot of fun with it,
> it's been a good excuse to learn a lot of new things (including
> more about how SimH works), and so I thought I would share it.
> The GitLab repository is https://gitlab.com/nickmacias/pigbus-
> release <https://gitlab.com/nickmacias/pigbus-release> I've also
> made a set of videos discussing this project: https://
> youtube.com/playlist?list=PL2InzLo35oTeEa_T-
> BDbRR4b5DVmKHSbX&si=7EsK9MB-UZ5cVwDk <https://youtube.com/
> playlist?list=PL2InzLo35oTeEa_T-BDbRR4b5DVmKHSbX&si=7EsK9MB-
> UZ5cVwDk>
>
>  Best wishes, -Nick
>
> --
> You received this message because you are subscribed to the
> Google Groups "[PiDP-11]" group.
> To unsubscribe from this group and stop receiving emails from
> it, send an email to pidp-11+u...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/
> pidp-11/b80111e0-47bc-44c1-a517-0464b30c5f0en%40googlegroups.com
> <https://groups.google.com/d/msgid/pidp-11/b80111e0-47bc-44c1-
> a517-0464b30c5f0en%40googlegroups.com?
> utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "[PiDP-11]" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to pidp-11+u...@googlegroups.com
> <mailto:pidp-11+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/pidp-11/
> b9921892-9aa4-403f-a63f-a0247c93ffb2n%40googlegroups.com <https://
> groups.google.com/d/msgid/pidp-11/b9921892-9aa4-403f-a63f-
> a0247c93ffb2n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: b...@softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol
CSR layout.pdf

Anton Lavrentiev

unread,
Dec 25, 2025, 11:30:28 AM (13 hours ago) Dec 25
to Nick M, [PiDP-11]
> but looking at that now, it says right there it came from https://github.com/open-simh/simh I'll update my READMEs to note that.
Not only that, since you're replacing a few SimH files, it's best to do that based on their current versions, not what they were some 5+ years ago.
There was a repo with current open-simh merged with all the patches and blinkenlights mods -- maybe you can base your fork on that one, alternatively
(but I don't seem to remember where it was, unfortunately).


Anton Lavrentiev

unread,
Dec 25, 2025, 11:57:44 AM (13 hours ago) Dec 25
to Nick M, [PiDP-11]
>   I didn't realize there was a convention, that makes life a bit easier :) I'll probably switch things over to follow that.
Also, there's assignment for interrupt vectors (described in PDP11 handbooks).  I'd suggest NOT to use any vectors what have an assignment.
These were specifically reserved for "users" (octal):
170, 174, 270, 274
(vector 140 is reserved for AA11, a lightpen display)
Also, these seem to have been unassigned (from the "fixed" assignment range):150, 154, 160, 164
Vectors above 300 (thru 777) are used for floating assignments.
UNIBUS address ranges have also been quite standardized, and again 176400 (thru 176476) is assigned to AA11, so it is in conflict with your device.
There are safer ranges, which have never been assigned and are still available.
E.g. see Appendix A in here:
(maybe later year editions, too).
Just a suggestion.
HTH

On Thu, Dec 25, 2025 at 1:39 AM Nick M <nicholas...@gmail.com> wrote:

Clem Cole

unread,
Dec 25, 2025, 2:55:59 PM (10 hours ago) Dec 25
to Anton Lavrentiev, Nick M, [PiDP-11]
Nick,
I will second Anton’s comment as a minimum you need to look Appendix A at what address and vector have been assigned. But please read the floating vector rules described on page A-4. If you follow the rules then you will minimum a chance of a conflict. FWIW: if you look at the sources for the PDP-11 simulator in the OpenSIMH repo, the code for the floating space is properly implemented.

Sent from a handheld expect more typos than usual


Nick M

unread,
Dec 25, 2025, 4:06:05 PM (9 hours ago) Dec 25
to [PiDP-11]
Johnny, thanks for the CSR info. It'll be fun working from that to implement devices :)
Anton, all that info is super helpful, thanks! My 1978 version of the PDP-11 handbook simply had gaps in the address space, whereas the 1981 version lists some as RESERVED. 777520-777526 with vector 270 seems to be working well :)
I'll look into floating vectors and see how those work (thanks Clem for the suggestion).

Really appreciate all the feedback! And yay, I now have a PiDP-11waiting to be assembled :)

 -Nick

Clem Cole

unread,
Dec 25, 2025, 4:28:17 PM (8 hours ago) Dec 25
to Nick M, [PiDP-11]
Checkout 

Most of them DEC handbooks are there. Check out the first one titled conventions.  Note many of the later handbooks in the series are focused on QBUS. One of the disappointing issues is later book often dropped information that the earlier ones contend.  For instance the 1976 peripherals Handbook has more complete information but the later ones drop a large number of the peripherals as DEC had stopped selling them. 

The 1983 Architecture Book is fairly good for what it covers and the 83-84 micro computer book is the best for J11 family, but for traditional Unibus systems the union of 76 Processor handbook and the 1979 handbooks will cover then fairly well. 

Sent from a handheld expect more typos than usual

terri-...@glaver.org

unread,
Dec 25, 2025, 4:36:12 PM (8 hours ago) Dec 25
to [PiDP-11]
On Thursday, December 25, 2025 at 4:06:05 PM UTC-5 nicholas...@gmail.com wrote:
Really appreciate all the feedback! And yay, I now have a PiDP-11waiting to be assembled :)

Be careful which SIMH code base you start with. The PiDP-11 uses its own kettle of worms
which is nothing like any current or previous version of any of the three (!) existing SIMH
projects. It is heavily modified for front panel support, so if you wan your code to run on the
PiDP-11, you'll want to start from that code base.

Yes, the PiDP-11 version of SIMH (and any of its front panel mods that aren't already sup-
ported by the SIMH front panel API) needs to dragged, kicking and screaming, to a current 
SIMH release and then any PIDP-11 changes maintained in a fork. That's more work than I 
can commit to, both time-wise and from unfamiliarity with SIMH internals. Volunteers are 
welcome...
Reply all
Reply to author
Forward
0 new messages