Hi.
Was any documentation ever done for the basic interpreter
that was on System-V?
Things like allowed keywords or special keywords.
Thanks
Ken
--
WWL 📚 Okey Dokey OK Boss
> From: Matt G.
> there is a "core" file included, I wonder if kernel text is swept up in
> that.
My _guess_ is perhaps not; the disks were really small (the UNIX people
started with an RF11, which the first DEC machine I used - a RSTS system -
also had; that was _really small - 512KB :-).
Probably it did whatever V1 did. I was not up for going to look, since I
wasn't familiar with the V1 code - but then I decided to break down and look
at it, and also create a minimal index to say what's in each module. (Here:
https://gunkies.org/wiki/UNIX_First_Edition#Source_index
if anyone is interested. Made easier because the code is very well commented;
it's very easy to read.)
The code to take core dumps is in u1, at 'badsys:'. It dumps the user's
entire possible memory space (i.e. not just up to the 'break'), and then
(separately) the 'user' area. The system is not included. I doubt V2/V3 are
different.
> ac and mq EAE registers are still in use in s2-bits binaries
Interesting. How did you work that out, BTW? Also, V1 seems to mandate use of
a KE11-A (use is made of it throughout the kernel).
> but have been replaced by s1-bits.
Interesting; how did you work that out? V3's core (V):
http://squoze.net/UNIX/v3man/man5/core
doesn't give the format, just says "The actual format of the information is
complicated because it depends on what hardware is present (EAE,
floating-point option)". Do you have C3's db(I) source? Oh, wait, TUHS has
what claims to be V2's db source:
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V2/cmd/db1.s
but it actually seems to be later; it's conditionalized for having the FPP.
So it must be for a machine running the -11/45 - which we seem to have
decided is V3?
The header for TUHS' V2 says: "The files in cmd/ are recreated from the text
fragments found on the file s1-bits.gz." Which agrees with your take:
> All in all that pegs the s1-bits fragments as being closer in character
> to V3
That's all for the moment...
Noel
> From: Matt G.
> Given the movement of UNIX to the 11/45 and then to C, does the Third
> Edition represent a version of UNIX for the 11/45 with protection but
> written in assembly, not C?
I think so (evidence detailed below). The support may not have been _quite_
identical to that in V4 (e.g. there was no support for pure texts in V3 -
below), though.
> is there any other information such as documents, code, etc. concerning
> the 11/45 assembly version?
This is the real problem, of course; all we have for V3 is some man pages.
(And in relying on them, we have to hope that they were updated to match the
then-current system - which is not guaranteed, but in general at this point
in time, man pages do seem to match whats's in the code.)
> Was work completed on the 11/45 kernel changes in the context of this
> version and then simply "ported" to the C version or were there
> concepts that were cropping up in one or the other and varying amounts
> of transportation back and forth as 11/45 and C aspects were
> implemented?
Without a lot more information, which is now almost certainly lost, we are
unlikely to be able to tell. But let me start by laying out what we _do_ know.
To start with, it's important to realize that support for protection (and
relocation - i.e. memory that looks, to user code, like it's at 0,
is actually at, say, 060000 in physical terms) in PDP-11 UNIX _pre-dates_ the
-11/45. DEC had a rare, and now almost forgotten "Memory Protect & Relocate"
option for the -11/20, the KS11:
https://gunkies.org/wiki/KS11_Memory_Protection_and_Relocation_option
What exactly it did, and how, is now uncertain (no documentation, or code
that used it, appeats to have survived - all we have are a couple of vague
recollections), but it is certain that that the UNIX group's -11/20 had it:
https://www.bell-labs.com/usr/dmr/www/odd.html
and Ken has said that he wrote the code to use it.
It's also important to remember that not all the machines running UNIX would
have had their hardware updated simultaneously: e.g. the patent group's
-11/20 would not have needed the KS11 as much, since it was runnng mature
applications. So UNIX was probably conditionalized to run with and without
the KS11. As late as V3, there were apparently still UNIX machines without
relocation hardware: "The purpose of this command is to simplify the
preparation of object programs for systems which have no relocation
hardware.":
http://squoze.net/UNIX/v3man/man1/reloc
When the support for the KS11 appeared is uncertain. It's not in the extant
V1 code; but V2 seems to have had it: "the current system, which has
relocation and protection hardware":
http://squoze.net/UNIX/v2man/man5/core
V2 also seems to have started looking forward to the -11/45 - "a trap is
simulated by the floating point simulator" (ditto); "if they correspond to
11/45 floating point instructions":
http://squoze.net/UNIX/v2man/man3/fptrap
It is possible that they already had the -11/45 at this point, but I would
tend to doubt it: "immediate mode ((pc)+) is not supported, since the
PDP-11/45 handbook is not clear on what to do about it." (If they had it, a
simple experiment would have produced the answer.) And "Double precision
results are probably less correct than the hardware will be" (note tense).
(All from v2man/man3/fptrap.)
V3 seems to have the -11/45: "it depends on what hardware is present (EAE,
floating-point option)":
http://squoze.net/UNIX/v3man/man5/core
The "floating-point option" would only have been on the -11/45. (And again we
see that V3 still ran on -11/20's; the -11/45 would not have had an EAE:
https://gunkies.org/wiki/KE11-A_Extended_Arithmetic_Element
since all the EAE operations - except normalization, but that's only needed
for floating-point - were in the basic -11/45.)
Probably the protection and relocation provided to UNIX processes on the
11/45 was very similar to that provided with the KS11. Do note that thememory
management was not exactly the same as V4's: "In the future the text segment
will be write-protected and shared.":
http://squoze.net/UNIX/v3man/man5/a.out
However, it was keeping multiple processes in main memory at the same time:
"only processes whose core images are on disk have visible names":
http://squoze.net/UNIX/v3man/man8/ps
So we can actually tell a fair amount about the evolution through V2 and V3
from the few scraps that are left to us. I do live in hope that a V2 or V3
listing will turn up one day; the system changed a lot in that period, and
many questions aren't answered definitively by the man pages.
(One big one is details of how the process' address space was laid out -
ld(III) and exec(II) simply say nothing at all. I assume it started at 0 -
but who knows? In V1, it must have started at a higher address - as on
MINI-UNIX:
https://gunkies.org/wiki/MINI-UNIX#Implementation_details
which I am fairly familiar with - but again, neither V1's ld(III) or exec(II)
mentions this detail. I suppose I could work it out from the V1 source, but
I'm not _that_ interested... :-))
It is possible that the evolution started with just protection (if the KS11
could do that), and relocation was added later. It seems clear that the
step from the KS11 to the -11/45 was probably not large.
If anyone has a V2 or V3 listing, please sing up! That would be an
_incredibly_ valuable thing to add to the historical record.
Noel
Hello, I've just today secured purchase of an original 4BSD manual and papers set and a copy of what I believe is the V6 papers set as well. Of note amongst the tabs I could read from the pictures of the Berkeley binder was a section of fonts that I don't think I've seen before named the Berkeley Font Catalog. I did a bit of searching around and didn't find anything matching that on first inspection re: scanned and source-available BSD doc collections. Anyone got the scoop on this?
Either way, once these arrive in the mail in I'll try and see what the delta might be between these and the current sources in V6 and 4BSD stuff on the archive. They're from the collection of an emeritus professor on the east coast, and I'm not sure if they represent unmodified docs shipped from Bell and Berkeley or have local modifications. In any case, his son said they'll be going through more material soon and are liable to turn up more UNIX stuff, so I'll keep folks posted if I come into possession of anything else particularly spiffy.
- Matt G.
for some reason, i have a copy of
“computer programming and autocodes”
by
burnett-hall, dresel and samet (1964).
it covers pegasus-sirius autocode, elliot 803 autocode,
mercury autocode and algol.
it is a hardcover duplicate from the library of congress.
anyone want this?
otherwise, it gets recycled thru my local library.
I've just completed the Fourth Edition pass of commits in my manual history repository here: https://gitlab.com/segaloco/mandiff
Something I've kept a particular eye on is what the landscape looked like on the filesystems over the early years of development. Here are some of those observations with a few areas perhaps requiring further illumination:
In the first two editions, there was a file, /etc/uids, which mapped simply a username to a uid. The reason was presumably due to the plaintext passwords in /etc/passwd at the time. The arrival of crypt(III) and related functionality rendered this moot by the time of V3. Additional GECOS information is first spotted in /etc/ident in V2 but by V3 has also found home in /etc/passwd in the GECOS field today used often for a user's full name. The s1-bits source codes refer to /etc/passwd where disassembled s2-bits binaries refer to /etc/uids still, dating both sets of code.
References to /etc/motd first appear in the V2 manual from what I could find, so that may not have been around in V1. Additionally, after V1 many files are moved from /etc to locations under /usr such as ascii and kbd moving to /usr/pub and roff's suftab moving to /usr/lib. It seems in the First Edition, manual section VII mapped to /etc itself it seems, with etc and misc in the manual being synonymous.
So all in all it seems, in terms of support files anyhow, /etc wound up smaller by the advent of the C system, at which point init beings using /etc/rc and the directory begins to expand again.
Another directory of interest is /sys for a few reasons. First, this directory serves different purposes depending on your kernel these days, with BSD systems storing system source code here whereas Linux provides a kernel interface filesystem. I'm not sure what other contemporary systems may use this for, but from V3 and back, this was another RK disk mounted in addition to /usr. This /sys directory appeared to contain the manuals, source code to system components including the commands, kernel, bootloader, and languages, and a copy of the kernel image referenced down in the source tree.
In total I've identified the following directories: c, fort, lang, man, mdec, source, sys. Most names should be obvious from later releases, with lang being a parent directory that contained bdir and mdir B and m6 languages respectively. My guess is that when RP support was made workable in V4, there was no longer a need to segregate data amongst RKs like this so /sys was merged into /usr, leading to the later structure we see in V4-V6. Of note, this structure is implied in CB-UNIX still in the path names of the source code available on the archive. The kernel is found at /tsys/sys/ much like the kernel in V1-V3 living at /sys/sys.
One thing I haven't been able to glean in the process is precisely how the command and library source code was stored in these very early versions. The kernel in T.R. Bashkow's analysis is implied to be stored in files u[0-9x].s, and command source files at least exist somewhere as the command followed by .s. As of V5, the command, syscall wrapper, and library source codes are split up amongst a number of directories with names such as s1, s2, s3, etc. under source. By V7, this has taken on the cmd/lib/sys structure of later releases.
Finally, just a general curiosity the version study involved has raised. Given the movement of UNIX to the 11/45 and then to C, does the Third Edition represent a version of UNIX for the 11/45 with protection but written in assembly, not C? I've seen one handwritten document that makes mention of some of this, but is there any other information such as documents, code, etc. concerning the 11/45 assembly version? Was work completed on the 11/45 kernel changes in the context of this version and then simply "ported" to the C version or were there concepts that were cropping up in one or the other and varying amounts of transportation back and forth as 11/45 and C aspects were implemented?
As always, thanks for keeping up, hopefully I can get this repository up to V6 soon, then the real branching fun begins. The V3 to V4 changes are hopefully the last time the commit diffs have major noise, what with the conversion from roff to nroff. I suspect transitions to macro packages later won't be as bad.
- Matt G.
Howdy folks, I was perusing old copies of ;login: and came across a note about the BSTJ UNIX issue in the August 1978 newsletter: https://archive.org/details/login_august-1978
What I find particularly amusing is that all UNIX licensees at the time of that publication allegedly were provided a copy free of charge. The text goes on to indicate additional copies can be purchased for a measly $1.50.
Fast forward to today and I typically don't see this copy pop up on auction for less than $100. Still, amazing how something was being just tossed out to anyone who wanted one and now here 45 years later, it's a mad scramble to find the same. Then there's this listing: https://www.ebay.com/itm/134212722284?hash=item1f3fb39e6c:g:9VEAAOSw8HtjCp2…
$3000 dollars...quite shocking, although perhaps they're banking on the uniqueness of that little sleeve, I've never seen one of those with a BSTJ issue before. Was that some sort of packaging the issues were delivered in? It has the Bell Logo in the little window on either side, so I want to believe it's original and not something someone threw together after the fact.
In any case, I suspect part of the low pricing is due to Bell anti-trust stuff, as they really moved on nickle and diming on documentation once they were legally able to. In any case, I'm always shocked to see how much I paid for something in my archival efforts and then I find a price sheet only to find out someone bought a book back in the day for the cost of a burger and fries. While I'm pursuing documents for research purposes...I may be inadvertently building myself quite the value store without even meaning to...
- Matt G.
All, e-mails from the TUHS server are not making it to Hotmail or Outlook.
I've not changed anything. Is there anybody with some MTA/ISP experience
who might be able to help diagnose the problem?
Thanks, Warren
In the midst of my documentation research, I've done a little analysis on the life and times of this whimsical little phrase which first appeared in the "HOW TO GET STARTED" or basinf section of the Third Edition manual (a derivative of the original login(VII) page):
"When you type to UNIX, a gnome deep in the system is gathering your characters and saving them in a secret place."
Aside from the wonderful imagery of the terminal interrupt driver as a little gnome, I've found that this line has some implications regarding UNIX documentation lineages. This exact verbiage survives in the research line through the Sixth Edition, and is slightly edited prior to the Seventh:
"When you type characters, a gnome deep in the system gathers your characters and saves them in a secret place."
The latter of the two changes holds with a trend over time of using progressive rather than continuous language. That aside, simple change of "to UNIX" to "characters". Seems simple enough, reduce redundancy and make it more clear what is happening. In this same breath, basinf was merged into intro. Checking the Tenth Edition manpage sources on the source tree, this version then seems to persist for the rest of the research lifetime. Peering across into BSD-land, I had to pull a paper copy for this one because I can't find the intro document in the tree, but it likewise has the same exact text, so this version also persisted through the remainder of the UCB development period.
When you start to look into other Bell lineages, things get a little more interesting. Let's start with MERT Release 0. This manual was produced in October, 1977, and has a "gnome" message identical to that in the Sixth Edition manual, so presumably by this time, the old text could very well have still been up in research. Unfortunately we only have scans of this manual, so I can't say whether the merge from intro and basinf to just intro has happened yet. Additionally, this may not reflect the case with USG Program Generic 3 (or any of those) as the intro is one of the sections marked as modified from the USG manual.
Next let's check the situation with PWB 1.0. To start, the intro and basinf documents have been merged into a document titled "introduction", which may very well indicate that this manual page at least was produced after the merge in the research line, and given this was July 1977, that's a case for the MERT 0 page likewise probably being a merged page. However, the text reads:
"When you type to UNIX, a gnome deep in the system is gathering your characters and saving them."
So a different modification of the Sixth Edition text, we still have "to UNIX" and the continuous "is gathering...and saving". What does change is we no longer know where the gnome is saving those characters. We've now lost the secret place, research and BSD carry on knowing the real story, and MERT 0 kept this intact as well. Taking a look further afield, in the System III manuals, originally produced in 1980, we see the same as PWB, a merged intro document (now just named intro again), and the same text, the Sixth Edition text minus the secret place commentary. So whatever merges of documentation took place between PWB 1.0 and 3.0, it seems the updated text from the Seventh Edition was never picked up, and the modified line persisted through to this point. Checking forward, this text persists into the release of PWB 5.0. The first release of System V only changes "UNIX" to "the UNIX System", consistent with nomenclature changes throughout documentation in the PWB 5.0->System V transition.
Taking a little peek aside into yet another lineage, the CB-UNIX 2.3 manuals circa 1981 likewise carry this same text, with the "secret place" removed. Unfortunately we don't have any other versions of CB-UNIX manuals to compare with, but the specific page in question actually lists CB-UNIX 2.1 in the footer with a date of November 1979, so the PWB-ish text in that lineage dates to at least that point.
There are a few different variations circa SVR2, with the 1983 BTL version and 1984 DEC processors versions of the manual changing the first bit to "When you type to UNIX system", whereas the 1986 HRW tradebook manuals state "When you type to the UNIX system." So the "the" is dropped, "system" is lower-cased, but then the "the" is added back between 1984 and 1986.
Finally, there is one more variation on this line, the saddest one of all, that appears circa System V Release 3 material in 1987:
"When you type to the UNIX system, your individual characters are being gathered and temporarily saved."
"Pay no attention to the gnome behind the curtain," says AT&T, removing all whimsy from the equation. This persists into SVR4. Can't say what happens in SVR4.2, I don't have one of those user's manuals, but in any case, it's probably save to assume Novell didn't resurrect the gnome. So just to review the strange and wonderful journey our little gnome has been on:
- Introduced in Third Edition
- intro and basinf documents merged between Sixth and Seventh Edition
- MERT 0 takes the old text
- PWB line takes the old text and drops the reference to a "secret place"
- Seventh Edition adjusts the text to drop UNIX redundancy and use progressive language
- PWB line keeps rolling with their modified text, CB-UNIX takes it up (or vice versa? can't conclude anything there)
- PWB to System V process converts most references of "UNIX" to "the UNIX System"
- Along the way, the "System" is ultimately lowercased, the "the" gets lost for a while and comes back
- AT&T finally removes the gnome reference in SVR3/1987
- Research and BSD keep the Seventh Edition text to the end
Granted, this is a very trivial detail, but one that does demonstrate some flow of documentation revisions and what sorts of changes different groups were making to their documents, what with research making changes to the grammatical style while the PWB-then-commercial line grew more sterile in this presentation over time. This then shows at least one instance of a lack of merging of aspects of the Seventh Edition documentation back into the PWB line after the split of 1.0. Eventually I hope to illuminate many more such areas through the diffing and historical analysis I'm performing.
By the way, I believe a few list members had indicated at some point or another being in possession of some USG Program Generic manuals. If you happen to catch this, and have the time, I'd be ever so curious which of the above, if any, variations on the text they contain. This particular line is immediately following the "How to communicate through your terminal" heading the "HOW TO GET STARTED" section.
Anywho, I hope this was an entertaining diversion. While most of the analysis I'm performing concerns software details and version differences, it's also nice to take a closer look at some of the other sorts of changes that have happened in the lifetime of the system's growth and diversification.
- Matt G.
Although it dates from four years ago, MIT's obituary for Corbató was
still interesting to reread. It couldn't bring itself to mention
Unix--only the latecomer Linux. It also peddled some mythology about
Whirlwind from the decade before timesharing.
"Whirlwind was ... a rather clunky machine. Researchers often had
trouble getting much work done on it, since they had to take turns
using it for half-hour chunks of time. (Corbató said that it had a
habit of crashing every 20 minutes or so.)"
"Clunky" perhaps refers to Whirlwind's physical size. It occupied two
stories of the Barta Building, not counting the rotating AC/DC
motor-generators in the basement. But it was not ponderous; its clean
architecture prefigured "RISC" by two decades.
Only a few favored people got "chunks" of (night) time on Whirlwind
for interactive use. In normal business hours it was run by dedicated
operators, who fed it user-submitted code on punched paper tape.
Turnaround time was often as short as an hour--including the
development of microfilm, the main output medium. Hardware crashes
were rare--much rarer than experience with vacuum-tube radios would
lead one to expect--thanks to "marginal testing", in which voltages
were ramped up and down once a day to smoke out failing tubes before
they could affect real computing. My recollection is that crashes
happened on a time scale of days, not minutes.
"Clunky" would better describe the interface of the IBM 704, which
displaced Whirlwind in about 1956. How backward the 60-year-old
uppercase-only Hollerith card technology seemed, after the humane full
Flexowriter font we had enjoyed on Whirlwind. But the 704 had the
enormous advantages of native floating-point (almost all computing was
floating-point in those days) and FORTRAN. (Damn those capital
letters!)
Doug
Apologies for once again posting an item for the groff list to tuhs,
re: "Any reason the removal/renaming of read-only registers should be
permitted?"
Doug
I think Clark was justified in deviating from Ossanna.
The prime rationale for allowing removal of read-only registers is
uniformity--a powerful argument. It simplifies documentation and
relieves a burden on users' understanding. It probably simplifies the
code, too.
This kind of special-casing is AI in the service of some perception
that "no one would want to do that.". If "that" is the clear meaning
of some specified action, then so be it. We are not dealing with
physical hazards here.
> even if they don't screw up the formatter internally,
> they will become unrecoverably useless for documents
> and macro packages,
The same argument could be made about \applying .rm to any standard
request, and I would disagree for the same reason as above. (A
disappointing experimental discovery in this regard: .de seems to be
immune to removal.)
A change that I *would* welcome is warning about writing into a
read-only register. (Also make .rm work on .de--a near reversal of the
original proposal.)
Doug
Hello.
Even in these rusty times (oh what complicated chemical processes
there are!) a question that i hope someone can answer.
In both Spinellis' UNIX history repo as well as the CSRG one (via
robohack/ucb-csrg-bsd.git) one can find two ways of writing Kurt
Shoen's name, and whereas i, who always refer to Mail and its
"usr.bin/mail/def.h" (aac48ec10b56f59b321fb033a36bca2114ef061b):
[ Author: Kurt Shoens <kas>
AuthorDate: 1980-10-08 08:53:34 -0800]
+ * Author: Kurt Shoens (UCB) March 25, 1978
one can find the name "Kurt Schoens" as early as 4.2 BSD (curses,
twinkle1), and then in a growing number of files, especially after
1993 when Keith Bostic and then Kirk McKusick did
admin/admin/contrib/address.list and
admin/admin/contrib/contrib and
share/man/man0/title.cdrom
But one can also see the commit
Author: Kurt A. Schoens <kas(a)ucbvax.Berkeley.EDU>
AuthorDate: 1980-10-09 02:48:47 -0800
and that is strange, as i presume all-automatic version control
conversions here? Schoens .. is a bug?
Thank you.
--steffen
|
|Der Kragenbaer, The moon bear,
|der holt sich munter he cheerfully and one by one
|einen nach dem anderen runter wa.ks himself off
|(By Robert Gernhardt)
|~~
|..and in spring, hear David Leonard sing..
|
|The black bear, The black bear,
|blithely holds his own holds himself at leisure
|beating it, up and down tossing over his ups and downs with pleasure
|~~
|Farewell, dear collar bear
I've mentioned tangentially this a few times, but over the weekend I
finally got around to dusting off the code and getting it running:
https://github.com/dancrossnyc/rxv64.git
rxv64 is a rewrite of MIT's xv6, which in turn, reimagines 6th Edition
as a purely pedagogical system, implemented in ISO C for 32-bit SMP
x86 machines.
Building on xv6, rxv64 is implemented in Rust and targets 64-bit
x86_64. It works well enough to boot up, run a shell, and run
commands, but it doesn't really have much of a userland at present.
I started this as a pedagogical tool, being something that one could
point working engineers at as an example of a "real" operating system
implemented on real hardware in Rust. The code could surely be made
safer and more comprehensible, but cycles are short at present, and
it's better to just get it out there.
Have fun.
- Dan C.
Hello!
For some time now I've had both this address, and my original address
which was on another service altogether subscribed to this list. And
starting some time earlier, it would not show a full thread, it would
show partial contents, the latest was the work by Dan Cross. In fact
With that being last, ah, straw I decided to do that.
-----
Gregg C Levine gregg.drwho8(a)gmail.com
"This signature fought the Time Wars, time and again."
“soldering iron…”
i do remember the fun of changing the baud rate of an async line on the Honeywell level 66 mainframe at college. This required shutting the whole machine down, removing one of the cards, and the (very careful) use of a wire wrap tool.
-Steve
Good evening folks, I'm doing some research lately into the typesetting style apparent in the various UNIX System V guides I've scanned to archive.org. Their typesetting style is unlike that of the MM papers published with 3.0 and 4.0, but the contents seem to have continuity with the text in these collections.
Well, in my searches sometimes telecom documents from the Bell System come up too and in materials from the 70s and 80s I started noticing that familiar typesetting in telecom stuff such as that hosted here https://www.telephonecollectors.info/index.php/browse/bsps-bell-system/bsp-…
The earliest example I could find is 1969, so certainly at least a publication style that predates UNIX, but what I can't tell from my searches alone is if this style implies some non-UNIX typesetting system through and through or if there was a macro package dreamed up at some point between 1969 and 1982 that was in place by the time of the System V documentation.
Just to detail specifics of the publication style, the commonalities I've found are the use of specifically bold numbers for page numbers, having the doc title and call number in the outer upper corner of pages, and just the fonts themselves look very similar. As an added note, the fonts used in the telecom documents and System V guidance documentation also resemble those in the copyright statement pasted on the cover of the extant PDF of the fifth edition UNIX manual. There is also some resemblance to the visual style observable in USG Program Generic and adjacent documentation (for instance the 1976 kernel description of PG 2 or the MERT 0 documents). This typesetting style is not seen in known research, CB, nor PWB until 5.0. Was there some separate typesetting system used in the broader System that, say, WECo may have taken up when they took over documentation between 3.0 and SVR2?
- Matt G.
Hi folks, sharing another project that I've been tinkering on for a little bit since I like having a lot of irons in the fire: https://gitlab.com/segaloco/v2src
After the link is a repository which over time will be accumulating the results of disassembly and analysis of files found in the s2-bits.tar.gz file in the archive. Details of my process are contained in the repository's readme. The short of it is I'm disassembling the binaries one by one, and where possible am comparing them with known sources to massage these into a pretty close restoration of the original sources.
A few discoveries I've made in the process thus far:
- These binaries appear to represent a version between the first and second editions. The binaries themselves are a mix of "naked" binaries as well as V1 and V2 a.out formats. Where it matters, things are much closer in character to V2 than V1.
- All section 1 content that would be gone by V2 is removed here. Curiously, mount(1), type(1), and umount(1) which are in both V1 and V2 are absent from the s2-bits.
- The sources marked "V2" in the UNIX source tree may be a bit closer in character to V3. Notable examples are that, while string references to /etc/uids remain, all data references have been updated to /etc/passwd, and several mathematical operations in the disassembled binaries map to KE-11 Extended Arithemtic Element registers where in the sources labeled "V2" in the tree have instead shifted to doing these calculations differently, presumably as these sources target the 11/45, not the 11/20. Additionally, the cat.s in "V2" on the tree contains the '-' stdin option, which was first documented in V3. The most likely story is that they're somewhere between, just like the s2-bits are between V1 and V2, but all of these observed differences thus far have aligned the sources with their descriptions in the third edition manual.
Anywho, as usual, if anyone spots anything amiss or that could be done better, happy to accept contributions, or fork it and tinker away. Also, if anyone has already done this, speak up and tell me now so I don't double up on something so involved =P
- Matt G.
> From: Paul Ruizendaal
> something like a boot rom only became the norm in the late
> 70's. Before that, one keyed in two dozen words with a tiny program to
> load the first boot stage.
A little wrong on that date. Even the PDP-11/20 (the first -11) had a boot
ROM:
https://gunkies.org/wiki/BM792_ROM
which appreared in mid-1971 (about a year after the release of the /20). DEC
sold them pre-programmed, but one could 'program' one onself, if one wanted -
with a soldering iron! (Check out the image! I actually did that to one that
I was given, that had been eviscerated by someone.) From then on (follow the
category link), the rest used PROM chips.
> From: Warner Losh
> Oftentimes, the interrupt vector was in the lowest core addresses
It's worth remembering that in the early period, that restriction to low
addresses was built into the hardware (in an amusing way :-).
Take the DL11:
https://gunkies.org/wiki/DL11_asynchronous_serial_line_interface
which was sort of mandatory as the 'console' serial interface on most early
-11's (until the DL11-W appeared; more on its big improvement in a second).
It set the interrupt vector with _jumpers_. (You want to change the interrupt
vector? Dig out your soldering iron! :-) There were only 6 jumpers - one each
for address bits 3 through 8. So the largest vector you could set was 0770.
The DL11-W was a big step forward - it replaced the jumpers with a DIP
switch! :-) Still only six bits, though. :-)
Noel
Hi Matt,
I’ve responded on list about the early unix development process as I understand it, but I want to avoid discussing things that are not directly related to the history of Unix. Hence this PM as well.
> Where I'm trying to put this sort of knowledge into use is I'm starting to spec out a kernel bootstrap for the RPi Pico and Pine64 Ox64 boards (ARM32 and RISCV64 respectively) that is not only sufficient to start a V7-ish kernel on each, but that are ultimately based on the same design, varying literally only where the hardware strictly necessitates it, but similar enough that reading the two assembly files side by side yields essentially the exact same discrete operations.
I have a similar interest, working with early Unix and modern RiscV hardware for a compare and contrast experience.
- My development targets are (i) an FPGA based RV32 SoC implementation, (ii) a Sipeed D1 RV64GC board and shortly (iii) a Pine64 Pinetab-V.
- My software targets are: (a) xv6-rv, (b) SysIII, (c) Linux, (d) experiments around SysIII
Linux is for me a secondary target, just for comparison and to see if ideas are “Linux capable”. I’m not overly interested in Arm at the moment.
My ideas are still evolving, but currently more or less along the below lines:
- Boot rom loads SPL, this is custom in each case and set by the SoC's designers.
- SPL initialises DRAM system and loads next stage. Unfortunately, this too would seem to be quite system specific, but the BSP should provide the baseline for this. As BSP’s are often a mess, milage may vary.
- The next stage is a hybrid of BBL, OpenSBI and Virtio. The idea is to provide a standard abstraction layer that all of my software targets can work with. This idea is used for the FPGA target and allows booting a Linux kernel with just the generic Virtio device drivers (so far just disk and console).
- The last layer is the classical OS layer. If I get it right, each OS can run on all h/w targets without customisation.
At the moment I’m playing with USB, and how that might layer into the structure of V7, SysIII or 8th Edition -- and also the above.
> Date: Mon, 10 Apr 2023 18:27:51 +0000
> From: segaloco
> ... or was there no single guiding principle and each machine came up, at that level at least, in a relative vacuum, with only the machine interface to UNIX being the guiding principle?
I stumbled into the same question last year, when doing my SysIII to RV64 port. I managed to turn that into a somewhat chaotic discussion, mixing old and new, and history with ideas. From that chaotic discussion I got the impression that it was indeed mostly ad hoc. In context, hardware was much easier to boot and drive back then -- it probably was not seen as complex enough to warrant much research into layering and abstraction.
Also bear in mind that something like a boot rom only became the norm in the late 70’s. Before that, one keyed in two dozen words with a tiny program to load the first boot stage.
That said, there is an implicit layering in v7 and beyond:
- “low.s" does hardware setup, incl. such stuff as setting up interrupt tables. As this is closely tied to the hardware, it would have been a custom job in each case.
- “mch.s” (later also mch.c) has the basic routines that are hardware dependent (switching stacks, changing priority levels and modes, etc.). It also has emulation for ‘missing’ instructions, such as floating point ops where this is not available in hardware. Same as above, I think. Maybe h/w related memory protection operations should live here as well, but the hardware was still quite divergent in this area in the 70’s and early 80’s.
- low-level device drivers live in the ‘dmr’ or (later) ‘io’ directory. Here there is some standardisation, as all device drivers must conform to the (char/block) device switch APIs. It seems to me that most of these drivers were written by taking one that was similar to what needed to be written and to start from there. Maybe this is still how it works in Linux today.
- To the extent that there is such a thing as 'high-level device drivers’ in early Unix, the structure is less clearly visible. The file system (and there was only one at the time of v7) is placed between the block device switch and the mount table so to speak. This was structured enough that splicing in other file systems seems to have been fairly easy in the early 80’s (the splicing in, not the writing of the file system itself, of course). Starting with 8th edition, the ‘file system switch’ created a clear API for multiple file systems. Arguably, the ‘tty’ subsystem is also a ‘high-level device driver’, but this one lives as custom code together with the serial port device drivers. Also in 8th Edition, ‘streams' were introduced. One could think of this as a structured approach to high-level device drivers for character mode devices, incl. the ’tty’ subsystem.
- I don’t think there was ever anything in early Unix that merged ’streams’ and the 'file system switch' into a single abstraction (but maybe 9P did?).
> Where I'm trying to put this sort of knowledge into use is I'm starting to spec out a kernel bootstrap for the RPi Pico and Pine64 Ox64 boards (ARM32 and RISCV64 respectively) that is not only sufficient to start a V7-ish kernel on each, but that are ultimately based on the same design, varying literally only where the hardware strictly necessitates it, but similar enough that reading the two assembly files side by side yields essentially the exact same discrete operations.
I have a similar interest, but to avoid the same chaos as I created before, I’ll respond to this with a pm.
> Does anyone know of any of the tools, formats, practices, etc. used in producing the actual graphical covers of various published UNIX manuals?
The Bell Labs publication department at Whippany did the physical
design for the bound versions of the Research Unix manual--from v7 as
a trade brook through v10, also a trade book.. They did the cover
designs for v8-v10 in house. I am not sure whether they did the v7
cover, farmed it out, or left it up to Holt Rinehart. Whippany handled
the printing of v8 and v9. Saunders College Publishing did it for v10.
Unfortunately, I do not remember whom I dealt with in Whippany, and my
records of the interactions are long gone.
Doug
Good evening, I'd like to share a listing I've taken of the various extra pages present in the BTL version of the SVR2 User's Manual I picked up a little while ago.
https://pastebin.com/18uTzyfS
Like the Release 5.0 BTL version before it, many of the added pages are DIV 452 standard pages for Writer's Workbench as well as the Basic-16/BELLMAC-4/BELLMAC-8 development environments.
To quote the preface:
"This manual was designed through a cooperative effort of the BTL Computer Centers in Division 452. It represents a collection of nearly all the commands that are running on any Computer Center UNIX machine.
...
The header of each manual page identifies the classification of the command along with any machine or site dependencies.
...
Any page marked LOCAL indicates the sites that are running that command.
...
Pages marked DIV 452 STD are from the collection of Computer Center standard commands, and are available on machines administered by Division 452 Computer Centers. The pages that are designated as INTERIM or 5.0 are those commands which are scheduled to be included in a separate WECo software add-on package."
This manual is just sections 1 and 6, presumably 1m, 7, and 8 are in a corresponding administrator's manual and 2, 3, 4, 5 are in a programmer's manual, making SVR2 the start of the user's manual being further subdivided. I seem to recall one or the other of this same issue of manuals show up on eBay at some point, I'm kicking myself for not springing for it at the time, but hopefully one or the other (or both) turn up again to be documented someday.
Additionally included in the above listing is a list of references from various "SEE ALSO" sections throughout the manual, as well as some other odds and ends from the text. Finally, there is a short listing of teach(1) classes as provided by a couple variants of the application.
If any particular page piques an interest, let me know and I can scan it for you, otherwise this one is a ways away on my scan backlog.
- Matt G.
Good day everyone, I'm in search of a bit of esoteric information regarding published UNIX works. Does anyone know of any of the tools, formats, practices, etc. used in producing the actual graphical covers of various published UNIX manuals?
Some that come to mind:
The alphabet blocks cover of the HRW V7 Manuals
The simple 70's Bell-style cover of the UNIX System III manual
The nice 3B-20 picture on the UNIX 4.1 manual
The grid patterns design on the UNIX System V documentation
The blue "big V" SVR4 manuals (given the time disparity, these could have totally different underpinnings)
Where I'm particularly curious is how these covers were actually set, defined, the image data to print on them stored, formatted, etc. In other words, <???>:troff::covers:manpages where ??? may also represent more than just the specific tools/formats. Anyone have the scoop on the actual raw materials and technologies used for preparing the covers and/or if any of those original assets, in their raw form, would potentially still exist somewhere? To be honest, I am particularly interested in the original, highest fidelity possible image of the 3B-20 from the corresponding manual (https://commons.wikimedia.org/wiki/Category:Unix_Manuals#/media/File:UNIX4.…) but am happy with any info illuminates what went into the actual physical production. Thanks all!
- Matt G.
P.S. If it provides any leads, the closest thing I've found in actual document sources to material related to these aspects of physical publication are the files M.folio and M.tabs here: https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/tools