RL02 version of UNIX6?

Noel Chiappa jnc at mercury.lcs.mit.edu
Thu Feb 2 14:07:48 CST 2017


    > From: William Degnan

    > was there ever UNIX made for the PDP 11/40 and RL02, or was it only run
    > on RK05? Wouldn't all of the C and wake calls, etc issues have been
    > solved then? 

You're mixing up two _TOTALLY_ different things.


Unix V6 will happily run on _ANY_ block device, all you need to do is write a
driver for it. The rest of Unix V6 doesn't know ^%$^%$ about the device, all
it know is that there's this thing that can store, and read back, blocks 0-N.
The _only_ interface between the rest of Unix, and the driver, is through a
file called c.c which just contains entries for functions to read and write
blocks, etc.

(You can even run Unix - painfully - on a DECTape drive.)

Adding support for RL drives to Unix V6 involves i) writing an RL driver, and
ii) editing that file c.c to add _one line in a table_ to hook the driver
into the rest of the OS. (And there's a edit to something called l.s which
holds interrupt vectors, to all the RL vector.) THAT'S IT.

Editing c.c and l.s was No Big Deal. To customize Unix to one's particular
hardware configuration, you _had_ to change those two files, and every V6
site in the known universe tweaked those files. _WITHOUT EXCEPTION_.

Unix V6 doesn't give a *&^*&^* what disk drives its using. As long as there's
a driver for the controller.


The stuff about wake() calls is a totally different subject, it's all about
how the code in V6 Unix cuts a lot of 'C' corners (e.g. using an 'int *' as a
pointer to a struct - something that would horrify modern compilers) because
it's in very early C.

	Noel


More information about the cctalk mailing list