All, I received this detailed e-mail from Yufeng Gao who has done a great
job at analysing some of the DECtapes that Dennis made available to the
Unix Archive. I'm sure many of you would be interested and, possibly, could
provide some feedback on his work. A tarball of his efforts are here:
https://mega.nz/file/1cJFTJxT#BgszYuFc_ebSMaQXAIG5b2NtaGInPWMoaxExPM5Lr9Y
Cheers, Warren
P.S. I have a follow-up e-mail coming ...
----- Forwarded message from Yufeng Gao -----
Subject: UNIX DECtapes from Ritchie
Hi Warren,
I am writing you this email after seeing the DECtapes from Dennis
Ritchie that you put up last year. I found them while playing around
with the early C compilers on Ritchie's site. After some research into
the tapes, I have written a parser to parse them and convert them into
tarballs suitable for preservation. Most importantly, the 'dmr' tape
and 's1' tape are currently not decoded properly.
The biggest issue with the current decoding of the 's1' tape is, well,
there is none. After quickly glancing over the tape, I have concluded
that it is in fact not one of the middle tapes of an rkd(1) backup, but
a copy of UNIX INIT DECtape from a version of UNIX between V1 and V2. I
have extracted its contents:
Mode UID GID Size Date Name
---------- --- --- ----- ------------------- ------------
-rw-rw-rw- 0 0 512 1970-01-01 00:00:00 [vcboot]
-rw-rw-rw- 0 0 2048 1970-01-01 00:00:00 [bos]
-rw-rw-rw- 0 0 12288 1970-01-01 00:00:00 [wunix]
-rw-rw-rw- 0 0 12288 1970-01-01 00:00:00 [cunix]
-rw-rw-rw- 0 0 3072 1970-01-01 00:00:00 [unassigned]
-rwxr-xr-x 1 0 424 1970-01-01 00:00:00 /etc/init
-rwxrwxrwx 3 0 446 1970-01-01 00:00:00 /etc/getty
-rwxr-xr-x 3 0 82 1970-01-01 00:00:00 /bin/chmod
-rwsr-xr-x 0 0 794 1970-01-01 00:00:00 /bin/date
-rwsr-xr-x 0 0 1290 1970-01-01 00:00:00 /bin/login
-rwsr-xr-x 0 0 232 1970-01-01 00:00:00 /bin/mkdir
-rwxr-xr-x 1 0 954 1970-01-01 00:00:00 /bin/sh
-rwsr-xr-x 0 0 3678 1970-01-01 00:00:00 /bin/tap
-rwxr-xr-x 3 0 2010 1970-01-01 00:00:00 /bin/ls
578 blocks, 98 (16.96%) used, 480 (83.04%) free.
B = boot; D = directroy;
. = free; X = file data;
O = bos; W = wunix;
C = cunix; S = rf slack;
U = unassigned program;
|0123456789ABCDEF
--+----------------
00|BOOOOWWWWWWWWWWW
01|WWWWWWWWWWWWWCCC
02|CCCCCCCCCCCCCCCC
03|CCCCCUUUUUUSSSSS
04|SDXDXDXDXXDXXXDX
05|DXXDXXXXXXXXDXXX
06|XD..............
07|................
<...>
What is significant here is it contains the vcboot and bos programs
mentioned in bproc(7), as well as a Warm and a Cold UNIX kernel. This
version of UNIX appears to be between V1 and V2, which I believe is the
earliest to exist in binary form. The reason why I say it's between V1
and V2 is its bos program accepts the following console switches
compared to V1 and V2:
| UNIX V1 | s1 | UNIX V2
----------------------+----------+-------+---------
Warm boot | [1]73700 | ??? | ???
Cold boot | 1 | 1 | 1
Unassigned 3K prog | 2 | 2 |
Dump core & halt | 10 | 10 | 10
Boot from RK | | 20 | 20
Dump core & warm boot | | 40 | 40
Boot from paper tape | 0 | 0 | 0
Load DEC loaders | 57500 | 57500 | 77500
----------------------+----------+-------+---------
UNIX load address | 400 | 400 | 600
----------------------+----------+-------+---------
The boot-from-unassigned-3K-program option was probably in the process
of being depreciated, as the 3K of space is also loaded as a part of
the Cold UNIX despite it not being used by the Cold UNIX kernel. The
list of files on the 's1' tape also appear to be between V1 and V2:
| V1 | s1 | V2
-----------+-----+-----+-----
/etc/init | Yes | Yes | Yes
/etc/getty | No | Yes | Y/N
/bin/chmod | Yes | Yes | Yes
/bin/chown | Yes | No | No
/bin/date | No | Yes | Yes
/bin/login | No | Yes | Yes
/bin/cp | Yes | No | No
/bin/ln | Yes | No | No
/bin/ls | Yes | Yes | Yes
/bin/mkdir | Yes | Yes | Yes
/bin/mv | Yes | No | No
/bin/rm | Yes | No | No
/bin/rmdir | Yes | No | No
/etc/mount | No | No | Yes
/bin/sh | Yes | Yes | Yes
/bin/stat | Yes | No | No
/bin/tap | Yes | Yes | Yes
-----------+-----+-----+-----
Given that the files on this tape are identical to the same files on
the 's2' tape and that the files on the 's2' tape are also sort
of
between V1 and V2, and that this tape is named 's1' while the other is
named 's2', they are probably from the same version of UNIX. I have
tried booting the 's1' tape using SIMH, but unfortunately it did not
work and I have not yet attempted to debug it.
Next I'm going to talk about the 'dmr' tape. It’s interesting, most of
it was written by tap(1) running under UNIX V1-V2, but files in the
./paper directory were written by tap(1) running under UNIX V4. When
decoded using the tap(1) program itself, the timestamps and access
modes of those files are garbled. My program corrected the timestamps
and access modes in the converted tar(1) archive. The same goes for the
'nsys' tape.
The tar(1) conversion of 's2'
(/Archive/Distributions/Research/1972_stuff/s2-bits.tar.gz) in the TUHS
archives is missing some files in the /etc directory - compare it with
mine and Ritchie's (Ritchie's has wrong timestamps and access modes,
however). Speaking of timestamps and the 's2' tape, the timestamps
outputted by tap(1) are inaccurate because 1972 is a leap year and the
ctime(3) function hard coded 28 for the number of days in February.
I have attached an archive of my tar(1) conversion of each tape, as
well as tarballs containing all the slack space data and unused blocks
which I dumped for data recovery and forensic analysis purposes. There
are some interesting bits and pieces in the unused blocks of various
tapes, but I have not had time to look into them in detail. Just a very
quick summary:
* The 'config' tape has leftover of a dictionary file.
* The 'dmr' tape has some assembler manual ?roff leftover.
* The 'dmr2' tape has some paper ?roff leftover.
* The 'e-pi' tape has a lot of interesting binary stuff, including
bits and pieces of a B compiler from what I can tell.
* The 'ken' tape has some C source fragments and Thompson’s mail
templates and some UNIX manual ?roff leftover.
* The 'ken-du' tape has some paper ?roff leftover.
* The 'ken-sky' tape has some binary leftover.
* The 'nsys' tape has some source code leftover of what seems to be
the kernel.
* The 's1' tape has some source code leftover of what seems to be
userland programs.
* The 'scratch' tape has some binary and source listing and ?roff
leftover.
* The 'unix' tape has some binary leftover.
I hope that these newly extracted stuff could be put up in the TUHS
archives :). If the attachment in this email somehow doesn't come
through, I have also uploaded the archive [1]here. I have a disassembly
of vcboot and bos from 's1', they may help with the UNIX V1
reconstruction project - let me know if you need them. If you can get
the 's1' kernel to boot, I'd like to also receive an update.
Sincerely,
Yufeng Gao
----- End forwarded message -----