On Thu, Feb 2, 2017 at 3:07 PM, Noel Chiappa <[email protected]> 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
