home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
minnie.tuhs.org
/
unixen.tar
/
unixen
/
PDP-11
/
Distributions
/
research
/
Dennis_v3
/
Readme.nsys
< prev
next >
Wrap
Text File
|
2000-01-12
|
5KB
|
94 lines
[ this README file is from Dennis, with significant comment by Warren ]
Early 11/45 C System Source
So far as I can determine, this is the earliest version of Unix that
currently exists in machine-readable form. There are earlier paper
listings of the assembly-language version for the PDP-11, and somewhat
more fragmentary listings of the PDP-7 version; as of writing, they
are on paper only.
This is a tar archive derived from a DECtape labelled "nsys"; a couple
of years ago Keith Bostic and Paul Vixie attached a DECtape drive to a
VAX and transcribed some tapes that we were storing.
The dates on the transcription are hard to interpret correctly; if my
program that interprets the image are correct, the files were last
touched on 22 Jan, 1973. The difficulty of interpretation owes both
to possible bugs in understanding the date bytes on the tape, but also
to epoch uncertainty. Earliest Unix used a 32-bit representation of
time measured in 60ths of one second, which implies a period of just
over 2 years if the number is taken as unsigned. In consequence,
during 1969-73, the epoch was changed several times, usually by
back-dating existing files on disk and tape and changing the origin.
The OS here implements the present standard of a New Year 1970 epoch
and a resolution of 1 second, but the DECtape on which it is stored
uses the older interval and some older epoch.
[ As it turns out, the file nsys-bits is an image of the original
tape. This is in tap(1) format, as used in 1st-3rd Edition UNIX.
However, from 3rd -> 4th Edition, timestamps changed from ticks
(60ths of one second) to whole seconds. The timestamps recorded
in the nsys-bits tap(1) archive are whole-second units. Therefore,
Dennis was incorrect in his last sentence above.
The nsys files are timestamped August 31, 1973. This is consistent
with other known dates. The files use structs, but in December 1972
the C compiler didn't support structs. In September 1973, the C
version of the kernel finally supplanted the assembly version, and
the kernel here certainly works fine. -- Warren
]
1973, however, is a year consistent with other information. The Third
Edition manual from early 1973 clearly refers to a system still
written in assembly language; the Fourth Edition (nominally November,
1973, and incidentally the first rendered via troff on our first
Graphic Systems typesetter) announces
In the months since the last appearance of this manual,
many changes have occurred both in the system itself and
in the way it is used. The most important changes result
from a complete rewrite of the UNIX system in the C language....
The number of UNIX installations is now above 20....
What is here is just the source of the OS itself, written in the pre-K&R
dialect of C. The file u is evidently a binary image of the kernel.
It is intended only for PDP-11/45, and has setup and memory-handling
code that will not work on other models (it's missing things special
to the later, smaller models, and the larger physical address space
of the still later 11/70.) It appears that it is intended to be loaded
into memory at physical 0, and transferred to at location 0.
I'm not sure how much work it would take to get this system to boot.
Even compiling it might be a bit of a challenge, though I imagine
that circa V5-V6 compilers would handle the language (maybe even V7).
It is full of =+ and use of char * as unsigned integers, and integers
used as pointers in locations like p->x.
So far as I can determine, the disk format it expects is compatible with
the layout of other earlyish research systems (V5, V6) for example.
But perhaps not, and it's not certain that the source is complete.
Even the compilation mechanism is a bit unclear, though it certainly
used the shell script ken/rc, which appears to depend on having the
*.o files from ken/* and dmr/* and also slib.a, which doesn't exist
on the tape. My guess is that this was an archive of already compiled
.o files, so that (for example) to test-build a system one would edit a file,
compile it, and run ken/rc to load it. The 'ustr' routine referred to
in ken/rc evidently stripped off the a.out header and the symbols from the
a.out file.
Best wishes with this. I'd be interested to hear whether anyone gets
the u image to run. If you're in luck, all you need is an 11/45 processor
or emulator and a V5/6/7 disk image.
Dennis Ritchie
January 1999
[ The file modified_nsys.tar.gz holds a modified nsys source which can be
compiled and run on a 5th Edition RK05 root filesystem. It also includes
documentation which describes what I had to change in order to get it
to work. -- Warren
]