This is my development fork of 2.11BSD UNIX for the PDP-11. However, this fork is set up with GitHub Workflows so we can test our changes to the kernel.
For more information about 2.11BSD, see https://wfjm.github.io/home/211bsd/
This repo was forked from bsdimp's 2.11BSD repo - thanks to him for making a tidy repo which I can work from.
Current modifications:
- Addition of IBV11-A driver for talking to GPIB devices. (major 27).
This tree started out at patch level 450, but appeared to have a
couple of modifications to one or two files. I ended up merging my
IBV11 driver to make it even more of a mess. Since the lowest patch
level supported by my 2.11BSD-Action
Github Action is 457, the
patches were applied in the following way.
- A branch called
patch-base
was made from main, atc507710
to create a temporary directoryusr
with symlinks tosrc -> ../
andinclude -> ../include
. This allowed patches to be applied from a modern PC. - From
patch-base
, a new branch451-457
was made which allowed me to apply patches 451 to 457, bringing the Git tree back into alignment with the lowest patch level available of my GitHub action. I was able to push this to GitHub and let the workflow run to verify that everything was compiling correctly. - Each individual patch was made in a new branch, taken from the previous, and pushed to GitHub to verify it can be built (i.e.
458
was taken from451-457
, and459
was taken from458
). In each case, thepatch_level
variable was also bumped in this repos GitHub workflow to ensure the two trees would be compatible. - Once all patches were applied, I created a cleanup branch to remove the temporary directory
usr
to keep the tree clean.
There were a few patches which caused issues:
452
attempts to update the version header ofshare/lint/llib-lc
from 1999-09-09 to 2001-02-22, but the copy in this tree was dated 2001-02-22.459
attempts to update the contents ofusr/doc/...
which does not exist in this tree - these changes were removed from the patch file.460
seems to breakf77
builds, but this is fixed in462
, so I commented out the build forf77
until then.476
was a confusing one. Mounting the file system of a 2.11BSD pl 476 image shows zero changes tosys/mdec/bruboot.s
between the patchset applied to this repo and the patchset applied to the image, yet buildingbruboot.s
resultswarning: unterminated literal
errors on line 51, 52 and 100.Eventually I realised mistake - like with$ curl -o ci.dsk.gz https://asjackson-211bsd-ci.s3.fr-par.scw.cloud/211bsd-ci-476.dsk.gz $ gzip -d ci.dsk.gz $ mkdir bsd $ bsd211fs ci.dsk bsd $ diff bsd/usr/src/sys/mdec/bruboot.s git/2.11BSD/sys/mdec/bruboot.s $ echo $? # same if 0 0 $ rsync -av ~/git/2.11BSD/ bsd/usr/src/ $ umount bsd $ ./pdp # my script for booting pdp from ci.dsk ... # cd /usr/src/sys/mdec # make clean # make ... # [ $? -eq 0 ] && echo works on my local machine works on my local machine
459
, I had to remove the changes touse/doc/...
but while doing so, accidentally removed the changeset to the Makefile formdec
. I'm leaving this in here to document my stupidity while applying these patches :-)
I have also been working on the following related stuff:
- 2.11BSD-Distribution-Builder to produce installation / distribution files for the same set of patch levels.
- 2.11BSD-Action which allows GitHub workflows to perform testing against a 2.11BSD simulated PDP-11 - this also performs builds of all patch levels and provides .img files for each
- bnlisp A small lisp written in K&R C for 2.11BSD, dedicated to my friend bnl, written with lots of help from stylewarning