RL02 version of UNIX6?

william degnan billdegnan at gmail.com
Thu Feb 2 14:12:19 CST 2017


On Thu, Feb 2, 2017 at 3:07 PM, Noel Chiappa <jnc at mercury.lcs.mit.edu>
wrote:

>     > 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
>


thanks for the explanation.
Bill


More information about the cctech mailing list