home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / research / Dennis_v3 / Readme.nsys < prev    next >
Text File  |  2000-01-12  |  5KB  |  94 lines

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