From mboxrd@z Thu Jan 1 00:00:00 1970 From: newsham@lava.net (Tim Newsham) Date: Mon, 28 Apr 2008 06:52:16 -1000 (HST) Subject: [TUHS] Whence 1st Edition Unix Kernel Assembly? In-Reply-To: <20080428104853.GB72917@minnie.tuhs.org> References: <200804241753.KAA02899@mist.magic.com> <20080428104853.GB72917@minnie.tuhs.org> Message-ID: > The date on the first page of the memo (PDF) is September 1972. That puts > the memo after 2nd Edition (June 1972) and 3rd Edition (Feb 1973). The cover sheet says sept 14, 1972, an invitation to a talk on the internals of unix. The next page, titled "Preliminary Release of UNIX Implementation Documentation", is dated 6/20/72. The actual unix sources contain a header and a footer and the footer states "Issue D Date 3/17/72". So the sources are probably from much earlier in the year. I was reading through a lot of the 1e manuals that are online (on dmr's page). Much of what is said there lines up with the sources. For example, it mentions that core files are 8kbyte of memory plus a few more bytes for process state. The kernel sources write out this amount of memory on core dump. The notes from dmr mention that the machine is a PDP-11/20 with 24kbyte of memory and the memory layout in u0 reserves 16kbyte for kernel memory and 8kbyte for user memory. One possible deviation is that the tty0(IV) man page says there are six devices, but the u0 srcs sets ntty to 8+1 (I'm assuming the +1 is for the console tty). DMR's comments hints that they will be omving to the PDP-11/45 soon after 1ed: "By this time we knew about the upcoming PDP-11/45, and had visited Digital in Maynard to talk about it; in particular, we had the specs for the floating-point instructions it supported. So the system described here included a simulator for the instructions (fptrap(III))." But it appears the kernel code we have is still just for a 24kbyte machine (I'm assuming they would have gotten more memory when they got a new machine?). Anyway, I'm far from an expert on old PDP's or old UNIX's, but my gut feeling so far is that this is pretty close to what is described in the 1ed manuals that are online. > I'm assuming that some of you are keen to see it running. It's going to > take a lot of work, especially on the debugging side. The existing 1972 > binaries are already executable using my Apout emulator, so that will > help in two ways: we can run the old assembler, and we can tell if a bug > was in a userland binary and not in the kernel. Ahh! I wasn't aware of that! Excellent. I would definitely like to play with it some. So far I've been using the 7e assembler to validate that the code is in compilable condition to help weed out typos. The only gotcha I came across so far was that the system calls arent defined by the assembler (so I whipped up a corresponding sys.s based on u1.s). Building the real kernel with the real 1e assembler will give me a lot more confidence that the assembler phase isn't causing any problems. > If I get a chance, I should try to compare the 1e and 2e manuals, to > outline the kernel API differences, as this might help us to determine > which binaries we have that will run on the PDF kernel. That would be excellent. > Cheers, > Warren Tim Newsham http://www.thenewsh.com/~newsham/