Detailing a few of my interests over the years.

DEC PDP-11/83 BSD 2.11

Download: BSD 2.11 - Patch 499

This image has SIMH and the HDD image packaged together to easily startup a machine and start your journey! The HDD image can be copied to a BLUESCSI or ZULUSCSI to be used with real hardware as well. I usually use SIMH to do all the heavy lifting for compiling a new kernel or patching as it so much faster that using the real machine to do all the work. Compile times are in minutes instead of hours or days on the real thing.

To launch SIMH, just double click on the run.bat file, which will launch the pdp11 emulator with my custom hardware. At the : prompt, enter b rq0 to get started.

If you do decide to use the image with real hardware, you might have some issues using a different processor than the 11/83 as it does have a custom kernel in place. The GENERIC kernel should be up to date as well so that might be a better option. To launch the GENERIC Kernel instead, when you see the ra(0,0,0) on screen enter:

ra(0,0,0)genunix and then hit ENTER.

If you have an 11/83 or are using SIMH, just hit ENTER at the prompt.

The PDP should then start to boot into single user mode and drop you into a # prompt. To load multiuser mode, press CTL + D, and it should finish booting.

username: root
password: pass123

38+ year old bug discovered!

While trying to get my Dilog CQ1610 or Emulex CS02 16-port serial card working in BSD 2.11, I discovered a bug in the original driver. Both cards, and SIMH would crash or display a partial banner when using any port above the 8th line. My thought process made be believe it had to be a BSD issue due to the fact that SIMH was doing it as well. If it was a hardware issue with both of my cards, SIMH should have been behaving correctly. After starting to read through the DHV driver located at /sys/pdpuba/dhv.c, I noticed a shift statement that was incorrect.

Line 522 needs to be changed from:
tp0 = &dhv_tty[dhv<<4];
To:
tp0=&dhv_tty[dhv<<3];

Basically, these shift statements set where the serial lines base index should start in the array dependent on the card number. With card number one, a shift of 0 << 4 will be 0, correctly setting the base index for the array. With a second card or greater, the bug introduces itself. A shift of 1 << 4 sets the base address to 16, instead of a correct base address of 8. 16 will be past the end of a zero index array, which should end at 15 (0-15). This explains why the first 8 (0-7) lines work correctly, and lines 8-16 cause issues.

A patch has been submitted and is scheduled to be included in a future release!

Photos



© 2025 - Seibel Technology - Privacy