Odd Comments and Doings in Unix

birdculture1 pts0 comments

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 &beta; 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 &beta; 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,...

beta unix comments values give rise

Related Articles