teco & microEMACS


In 2001 I created a port of 2.9BSD UNIX that runs on a PDP-11/23, includes MSCP drivers, and will boot from an MSCP hard drive. MSCP hard disk controllers include the RQDX3, Andromeda UDC11, and many ESDI and SCSI controllers. Also included are the standalone utilities to enable loading 2.9BSD onto a "cold" PDP-11 via VTserver.  It has been uploaded to the PUPS archive at. See here for a list of mirrors of the archive. The MSCP version is stored, for example, here:

Caldera has made the Ancient UNIX license free (registration no longer required) for non-commercial use.

Here is some extra info on setting up 2.9BSD on a PDP-11/23. Some of this pertains to specific hardware.

Setting up the floppy drive

Assuming that the hard drive is DU0: and the floppy is DU1:, type the following UNIX commands:

cd /dev
MAKE ra1a
ln ra1a floppy

This creates the floppy node, and an alias "/dev/floppy".

Supplemental directions for setting up 2.9BSD UNIX on a PDP-11/23 with 3-M "NMU INTF" card:

In order to activate the second SLU port, do the following:

cd /dev
mknod tty01 c 0 1
cd /etc
cp dtab dtab.old

Edit (using "vi" or whatever) the line in dtab that appears as:

#kl 1 176500 300 5 klin klou ; DL-11

so that it appears as:

kl 1 177500 310 5 klin klou ; DL-11

After the next reboot, the second RS-232 port will be active, and you can log in a second user on that port.

Note on the 3-M "NMU INTF" card LTC:

2.9BSD UNIX will complain that there is "no clock?" on boot. Ignore this message. The "NMU INTF" has a non-standard LTC that is not detected properly by UNIX. It will function properly, however, after boot.

Y2K issues in 2.9BSD UNIX

2.9BSD does have Y2K bugs. One that must be dealt with immediately is setting the date. The "date" command interprets the two digit date "xx" as 19xx. It is fairly easy to find the source for "date.c" and fix it to interpret all dates as 20xx. Until this is done, you can set the date as follows:

"date 9912312359"

This sets the date to one minute before midnight on 12/31/1999. Waitone minute until the date rolls over to 01/01/2000.

"date 12312359"

This sets the date to one minute before midnight on 12/31/2000. Wait one minute until the date rolls over to 01/01/2001.

"date 12312359"

This sets the date to one minute before midnight on 12/31/2001. Wait one minute until the date rolls over to 01/01/2002.

From now on, UNIX will remember that the year is 2002, even after a reboot. Whenever you set the date, omit the year, and it will default to 2002.

Repeat until the year is correct. After a few more years (as in now, which will be 2010 in a couple hours), this procedure will become rather tedious. Hopefully, by then someone will publish a fixed "date.c". If you want to  do it yourself, find the source code for "date.c", change "1900" to "2000", and rebuild.


Last modified: December 31, 2009