Odd Comments and Strange Doings in Unix
Odd Comments and Strange Doings in Unix
Values of Beeta
In Sixth Edition Unix, the mv command could produce this diagnostic:
values of β will give rise to dom!
This was noticed by some and is recorded in a
WWW page or so, which are mostly copies of the same compilation<br>of rarely encountered and striking error messages from various systems.
The actual source line in mv.c that produced the message was
write(1,"values of \016B\017 will give rise to dom!\n",37);
except that in the real source, the \016B\017 was written with literal<br>ASCII SI and SO control characters. These shifted the Model 37 Teletype<br>into its optional extended character set, and the B printed as the Greek<br>letter beta. See below for more about rendering beta amidst changing<br>hardware and software.
Like most of the messages recorded in these compilations, this one was produced<br>in some situation that we considered unlikely or as result of abuse; the details<br>don't matter. I'm recording why the phrase was selected.
The very first use of Unix in the "real business" of Bell Labs was to<br>type and produce patent applications, and for a while in the early 1970s we had three typists<br>busily typing away in the grotty lab on the sixth floor. One day someone came<br>in and observed on the paper sticking out of one of the Teletypes,<br>displayed in magnificent isolation, this ominous phrase:
values of β will give rise to dom!
It was of course obvious that the typist had interrupted a printout (generating<br>the "!" from the ed editor) and moved up the paper, and that the context<br>must have been something like "varying values of beta will give rise to domain wall movement"<br>or some other fragment of a physically plausible patent application.
But the phrase itself was just so striking! Utterly meaningless, but it looks like what...<br>a warning? What is "dom?"
At the same time, we were experimenting with text-to-voice software by Doug McIlroy<br>and others, and of course the phrase was tried out with it. For whatever reason, its rendition<br>of "give rise to dom!" accented the last word in a way that emphasized<br>the phonetic similarity between "doom" and the first syllable of "dominance."<br>It pronounced "beta" in the British style, "beeta." The entire occurrence became a small, shared<br>treasure.
The phrase had to be recorded somewhere, and it was, in the v6 source.<br>Most likely it was Bob Morris who did the deed, but it could just<br>as easily have been Ken.
I hope that your browser reproduces the β as a Greek beta.<br>It is written here as '& beta ;', which works on MSIE and<br>at least some Linux browsers, but not on Netscape 4.6 (at least mine).<br>Formerly I tried rendering it using 'fontface=symbol b /fontface'<br>with the appropriate angle-brackets, which works on this old Netscape<br>and MSIE, but not recent Mozillas. Sigh. If you are using<br>an old Netscape, with an appropriate fontface, here it is: b.
/* You are not expected to understand this */
Every now and then on Usenet or elsewhere I run across a<br>reference to a certain comment in the source code of the Sixth Edition<br>Unix operating system.
I've even been given two sweatshirts that quote it.
Most probably just heard about it, but those who saw it<br>in the flesh either had Sixth Edition Unix (ca. 1975)<br>or read the annotated version of this system by John Lions<br>(which was republished in 1996: ISBN 1-57298-013-7, Peer-to-Peer Communications).
It's often quoted as a slur on the quantity or quality of the comments<br>in the Bell Labs research releases of Unix. Not an unfair<br>observation in general, I fear, but in this case unjustified.<br>The actual code and other commentary surrounding it were precisely this:
/*<br>* Switch to stack of the new process and set up<br>* his segmentation registers.<br>*/<br>retu(rp->p_addr);<br>sureg();<br>/*<br>* If the new process paused because it was<br>* swapped out, set the stack level to the last call<br>* to savu(u_ssav). This means that the return<br>* which is executed immediately after the call to aretu<br>* actually returns from the last routine which did<br>* the savu.<br>* You are not expected to understand this.<br>*/<br>if(rp->p_flag&SSWAP) {<br>rp->p_flag =& ~SSWAP;<br>aretu(u.u_ssav);<br>/*<br>* The value returned here has many subtle implications.<br>* See the newproc comments.<br>*/<br>return(1);
So we tried to explain what was going on.<br>"You are not expected to understand this" was intended as a remark<br>in the spirit of "This won't be on the exam," rather than as an<br>impudent challenge.
The real problem is that we didn't understand what was going on either.<br>The savu/retu mechanism for doing process exchange was fundamentally broken<br>because it depended on switching to a previous stack frame and executing function<br>return code in a different procedure from the one that saved the earlier state.<br>This worked on the PDP-11 because its compiler always used the same context-save<br>mechanism; with the Interdata compiler, the procedure return code differed<br>depending on which registers were saved.
So,...