This directory doesn't contain a full distribution of UNIX, but it has a bunch of stuff that Dennis Ritchie extracted from some old DECtapes at the labs. Here are his notes. s1-bits I haven't cracked this yet. s2-bits Is not source, but a dump of (parts of) /bin, /etc, /usr/lib, and bits of a few other directories. Caution! The tape uses absolute pathnames, and is dangerous to extract unless you want to install old PDP-11 binaries. (tap format). s1-bits tape ------------ s1-bits is possibly output from a dump program like 1st Edition rkd(1), where the disk image was written `as is'. rkd(1) used to require nine DECtapes, so s1-bits may be one of the middle ones. Although there is substantial C and asm code on the tape (use strings(1) to see it), I can't find filenames ending in .c or .s. This seems to imply that the directory entries for the files are elsewhere, making it impossible to recover the contents. However, it is possible to manually extract files, such as the oldcp.c source file. After a bit of manual eyeballing, I've extracted what I can from this file, and placed the bits into s1-fragments.tar.gz s2-bits tape ------------ The s2-bits tape is definitely recoverable, and both Dennis Ritchie and Warren Toomey have done so. Dennis used a plug-in for Plan 9 to read the tape. Warren used his Apout emulator and the real 1st Edition tap(1) program to decode the archive. The following list gives details of all the files in the s2-bits tap-format archive. The first columns are a direct copy of a listing done with the emulated 1st Edition tap(1) from the s2-bits tape. The last column gives the file's modified timestamp (in decimal) as recorded in the archive: I captured the smdate(2) argument in Apout as tap(1) tried to extract the archive. This is in 1/60th second units. The list is sorted by the TAP DATE column. MODE UID SIZE TAPA DATE NAME TAP DATE =============================================================== -rwrw 0 16448 538 Jan 1 00:33 /core 121912 -rwrw 10 54 529 Jan 1 00:52 /usr/x 188944 -rwrw 10 84 474 Jan 1 00:58 /usr/jack/x.f 209544 -rwrw 0 312 490 Jan 1 00:58 /usr/jack/x.o 210381 xrwrw 0 7514 475 Jan 1 00:58 /usr/jack/a.out 210836 -r-r- 1 1664 533 Jan 1 01:31 /tmp/etma 328795 -rwrw 1 670 530 Jan 1 01:33 /usr/ken/maki.s 336810 -rwr- 0 142 532 Jan 1 01:33 /tmp/utmp 337991 -rwrw 0 512 259 Jan 1 01:33 /etc/std0 338378 xrwrw 0 698 229 Jan 1 01:35 /bin/maki 344095 -rwrw 0 26 537 Jan 1 01:35 /tmp/ttmp 344821 -rwrw 0 16448 260 Jan 1 01:36 /usr/sys/core 347684 -rwr- 1 1928 298 Jan 1 01:36 /usr/sys/maki.s 348923 xrwrw 0 2192 293 Jan 1 01:37 /usr/sys/a.out 349375 xrwr- 3 1912 135 Jan 4 17:05 /bin/form 19243860 urwr- 0 3940 142 Jan 5 19:26 /bin/mail 24936840 xrwr- 1 2662 241 Jan 6 18:01 /etc/glob 29812654 xrwr- 1 186 240 Jan 6 18:01 /etc/msh 29812724 urwr- 0 784 50 Jan 17 17:46 /bin/mv 86785042 xrwr- 3 134 114 Jan 17 17:53 /bin/cat 86808907 xrwr- 3 82 25 Jan 17 17:53 /bin/chmod 86808926 xrwr- 3 420 93 Jan 17 17:53 /bin/cmp 86808947 xrwr- 3 160 48 Jan 17 17:53 /bin/cp 86808966 xrwr- 3 464 79 Jan 17 17:53 /bin/du 86809052 xrwr- 3 104 49 Jan 17 17:53 /bin/ln 86809162 xrwr- 3 2010 42 Jan 17 17:53 /bin/ls 86809182 xrwr- 3 154 126 Jan 17 17:53 /bin/mesg 86809205 xrwr- 3 70 121 Jan 17 17:53 /bin/rew 86809297 xrwr- 3 93 52 Jan 17 17:53 /bin/rm 86809316 xrwr- 3 1026 54 Jan 17 17:53 /bin/stat 86809356 xrwr- 3 80 125 Jan 17 17:53 /bin/tty 86809419 xrwr- 3 524 57 Jan 17 17:53 /bin/write 86809532 xrwr- 3 560 77 Jan 17 17:54 /bin/who 86813788 xrwr- 3 644 139 Jan 17 17:54 /bin/wc 86813793 xrwr- 3 750 164 Jan 17 17:54 /bin/skip 86813802 xrwr- 3 1166 115 Jan 17 17:54 /bin/pr 86813803 xrwr- 3 300 141 Jan 17 17:54 /bin/od 86813807 xrwr- 3 1844 159 Jan 17 17:56 /bin/if 86819396 xrwr- 3 1154 156 Jan 17 17:56 /bin/goto 86819398 xrwr- 3 276 163 Jan 17 17:56 /bin/exit 86819403 xrwr- 3 1054 153 Jan 17 17:56 /bin/echo 86819406 xrwr- 3 244 60 Jan 17 17:56 /bin/dsw 86819407 xrwr- 3 5922 80 Jan 17 17:56 /bin/bas 86819408 xrwr- 3 16 152 Jan 17 17:56 /bin/: 86819410 xrwr- 1 954 32 Jan 19 17:20 /bin/sh 97059255 xrwr- 3 2310 103 Jan 26 17:20 /bin/ar 133346922 xrwr- 3 1048 166 Jan 31 18:14 /bin/stty 159458885 xrwrw 6 2860 169 Mar 7 12:23 /bin/cal 339637168 -rwr- 3 2082 233 Mar 28 16:42 /etc/suftab 449432781 urwr- 0 1290 28 Mar 29 15:19 /bin/login 454317684 xrwr- 3 4066 95 Mar 29 16:42 /bin/db 454616955 xrwrw 3 76 94 Apr 6 19:42 /bin/chball 496735250 xrwrw 3 446 232 Apr 7 16:40 /etc/getty 501264829 xrwr- 3 6846 176 Apr 14 20:50 /bin/dc 538454712 urwr- 0 794 26 Apr 20 23:45 /bin/date 570186721 urwr- 0 746 190 May 3 22:54 /bin/su 637395674 xrwr- 3 3998 127 May 10 15:23 /bin/ed 672059949 xrwr- 3 330 213 May 27 00:21 /bin/find 756940137 xrwr- 3 480 59 May 27 00:21 /bin/strip 756940428 urwr- 1 872 211 May 27 00:26 /bin/ds 756957948 xrwr- 10 2730 192 May 27 23:37 /bin/fc 761966733 xrwrw 3 17092 346 Jun 6 21:26 /usr/lib/c1 813333853 -rwrw 0 3498 339 Jun 9 17:10 /usr/lib/bilib.a 827964344 -rwrw 0 6626 326 Jun 20 10:47 /usr/lib/libb.a 883611316 xrwr- 3 7582 214 Jun 30 17:45 /bin/as 936955268 xrwrw 3 5778 247 Jun 30 17:47 /etc/as2 936962166 xrwr- 3 238 118 Jun 30 18:37 /bin/un 937143109 -rwrw 0 12158 302 Jun 30 18:40 /usr/lib/liba.a 937154143 xrwr- 3 2942 108 Jun 30 19:26 /bin/ld 937319472 xrwr- 3 518 75 Jun 30 20:09 /bin/nm 937472871 xrwr- 3 1446 208 Jun 30 20:15 /bin/size 937496145 -rwrw 28 304 448 Jun 30 20:31 /usr/lib/fr0.o 937553564 -rwrw 28 12222 449 Jun 30 20:37 /usr/lib/filib.a 937573356 -rwrw 28 9158 419 Jun 30 20:46 /usr/lib/libf.a 937606048 -rwrw 0 108 473 Jun 30 21:11 /usr/lib/crt0.o 937696858 -rwrw 0 5242 437 Jun 30 21:20 /usr/lib/libc.a 937728015 xrwrw 3 19948 380 Jun 30 21:21 /usr/lib/c0 937734428 xrwrw 3 4672 198 Jun 30 21:53 /bin/cc 937848855 xrwr- 28 3462 491 Jul 1 16:35 /usr/fort/fc1 941888104 xrwr- 28 3238 498 Jul 1 16:35 /usr/fort/fc2 941888184 xrwr- 28 6840 505 Jul 1 16:35 /usr/fort/fc3 941888472 xrwr- 28 4918 519 Jul 1 16:35 /usr/fort/fc4 941888613 xrwrw 3 214 175 Jul 15 01:21 /bin/sum 1011175062 xrwr- 4 7154 61 Jul 21 12:42 /bin/roff 1044729738 urwr- 0 282 53 Sep 28 21:37 /bin/rmdir 1404349922 urwr- 0 232 31 Nov 6 21:42 /bin/mkdir 1606544287 urwr- 1 192 92 Nov 22 19:35 /bin/df 1689030995 urwr- 1 1084 122 Nov 22 19:35 /bin/check 1689030997 xrwr- 3 718 46 Nov 22 22:51 /bin/chown 1689737545 xrwr- 3 604 150 Nov 22 22:51 /bin/sort 1689737557 urwr- 1 790 119 Nov 26 14:24 /bin/tm 1708647263 urwr- 0 3678 34 Dec 31 04:08 /bin/tap 1887871165 -rw-- 1 221 239 Feb 6 14:35 /etc/passwd 2081934621 -rwr- 1 70 238 Feb 6 14:38 /etc/uids 2081948231 xrwr- 1 424 231 Feb 6 14:50 /etc/init 2081988977 Note that the tap timestamp of 2081988977 for /etc/init is approximately 13 months. Therefore, the February for the last 3 files is the one in the year after all the other archive files. The biggest problem here is to pin down the epoch for the files. In the early version of UNIX, timestamps were in 1/60th second units. A 32-bit counter using these units overflows in 2.5 years, so the epoch had to be changed periodically, and I believe 1970, 1971, 1972 and 1973 were all epochs at one stage or another. Given that the C compiler passes, and the library, are dated in June of the epoch year, and that Dennis has said ``1972-73 were the truly formative years in the development of the C language'', it's therefore unlikely that the epoch for the s2 tape is 1971: it is more likely to be 1972. The tape also contains several 1st Edition a.out binaries, which also makes it unlikely to be 1973. Therefore, Warren's decoding of the s2-bits file, in s2-bits.tar.gz, uses 1972 as the epoch. However, Dennis decoding in s2.tar.gz uses 1973. Finally, the date(1) a.out on the tape uses 1971 as its archive. How annoying! After a bit of discussion, Dennis and Warren have agreed that 1972 is the most probable epoch for s2-bits. tmg.pdf ------- Doug McIlroy ported Bob McClure's TMG tool, first to PDP-7 Unix to help create the B compiler, and then to PDP-11 Unix. This document describes the PDP-11 Unix version of TMG.