I recently came across this:
http://www.cs.princeton.edu/~bwk/202
It's been there for a while but I hadn't noticed it. It describes the
trials and tribulations of getting the Mergenthaler 202 up and running
at Bell Labs and is very interesting reading.
I have already requested that they archive their work with TUHS and
gotten a positve response about this from David Brailsford. In the
meantime, it's fun reading!
Enjoy,
Arnold
I noticed that the assembly source file for blackjack is missing from
the source tree so I tried to recreate it, so far unsuccessfully.
My first idea was to grab bj.s from 2.11BSD and assemble it the Unix
v5 as command. That seems to generate a bunch of errors. Also other
assembly source files don't seem to have .even in them.
Another idea would be generate the source code from the executable
itself, but there doesn't seem to be a disassembler for early Unix.
It's possible that v5 bj.s was printed out somewhere but so far no
luck finding it.
Mark
Mark Longridge:
chmod 0744 bj
Dave Horsfall:
That has to be the world's oddest "chmod" command.
======
Not by a long shot.
Recently, for reasons related both to NFS permissions and to
hardware testing, I have occasionally been making directories
with mode 753.
At the place I worked 20 years ago, we wanted a directory
into which anonymous ftp could write, so that people could
send us files; but we didn't want it to become a place for
creeps to stash their creepy files. I thought about the
problem briefly, then made the directory with mode 0270,
owned by the user used for anonymous ftp and by a group
containing all the staff members allowed to receive files
that way. That way creeps could deposit files but couldn't
see what was there.
I also told cron to run every ten minutes, changing the
permissions of any file in that directory to 0060.
Oh, and I had already maniacally (and paranoiacally)
excised from ftpd the code allowing ftp to change permissions.
I admit I can't think of a reason to use 744 offhand, since
if you can read the file you can copy it and make the copy
executable. But UNIX permissions can be used in so many
interesting ways that I'm not willing to claim there is no
such reason just because I can't see what it is.
Norman Wilson
Toronto ON
OK, success...
in Unix v5:
as bj.s etc.s us.s
ld a.out -lc
mv a.out bj
chmod 0744 bj
It seems to work OK now. Probably should work on v6 and v7 as well.
Mark
> From: Mark Longridge <cubexyz(a)gmail.com>
> My first idea was to grab bj.s from 2.11BSD and assemble it the Unix v5
> as command. That seems to generate a bunch of errors. Also other
> assembly source files don't seem to have .even in them.
My first question was going to be 'Maybe try an earlier version of the
source?', but I see there is no earlier version online. Odd. ISTR that some
of the fun things in V6 came without source, maybe blackjack was the same way?
> Another idea would be generate the source code from the executable
> itself, but there doesn't seem to be a disassembler for early Unix.
Where's the binary? I'd like to take a look at it, and see if the source was
assembler, or C (there's a C version in the source tree, too). Then I can
look and see how close it is to that 2.11 source - that may be a
re-implementation, and totally different.
Noel
> From: Mark Longridge <cubexyz(a)gmail.com>
> OK, success...
Yeah, I just got there too, but by a slightly longer route!
(Google wasn't turning up the matches for the routines I needed, which you
found in etc.s, etc - it seems the source archive on Minnie isn't being
indexed by Google. So I wound up cobbling them together with a mix of stuff
from other places, along with stuff I wrote/modified.)
> Probably should work on v6 and v7 as well.
Does on V6, dunno about V7.
> It seems to work OK now.
Yes, but this is _not_ the source for the V5/V6 'bj'. (I just checked,
and the V5 and V6 binaries are identical.)
Right at the moment, I've used enough time on this - I may get back to
it later, and disassemble the V5/V6 binary and see what the original
source looks like.
Noel
> From: Noel Chiappa
> another assembler source file, which contains the following routines
> which are missing from bj.s:
I missed some. It also wants quest1, quest2 and quest5 (and maybe more).
This may present a bit of a problem, as I can't find any trace of them
anywhere, and will have to work out from the source what their arguments,
etc are, what they do, etc.
I wonder how on earth the 2.11 people got this to assemble? (Or maybe they
didn't?)
Noel
> From: Mark Longridge <cubexyz(a)gmail.com>
> My first idea was to grab bj.s from 2.11BSD and assemble it the Unix v5
> as command. That seems to generate a bunch of errors.
I saw that there's a SysIII bj.s, which is almost identical to the 2.11 one;
so the latter is probably descended from the first, which I assume is Bell
source. So I grabbed it and tried to assemble it.
The errors are because bj.s is designed to be assembled along with another
assembler source file, which contains the following routines which are
missing from bj.s:
mesg
decml
nline
Dunno if you're aware of this, but, the line 'as a.s b.s' _doesn't_
separately assemble a.s and b.s, rather it's as if you'd typed
'cat a.s b.s > temp.s ; as temp.s'. (This is used in the demi-enigmatic
"as data.s l.s" in the system generation procedure.)
I looked around in the sources that come with V6, and I didn't see any obvious
such file. I'm going to whip the required routines up really quickly, and see
if the results assemble/run.
I looked to see if I could steal them from the binary of 'bj' on V6, and...
it looks like that binary is totally different from this source. Let me look
into this...
> Also other assembly source files don't seem to have .even in them.
The V6 assembler groks '.even'.
Noel
Hello All.
FYI.
Warren - can you mirror?
> Date: Thu, 11 Jun 2015 04:41:39 -0400 (EDT)
> From: Brian Kernighan <bwk(a)cs.princeton.edu>
> Subject: dmr web site (fwd)
>
> Finally indeed. I can't recall who else asked me about
> Dennis's pages, so feel free to pass this on.
> And someone ought to make a mirror. If I were not far
> away at the moment, I'd do so myself.
>
> Brian
>
> ---------- Forwarded message ----------
> Date: Tue, 09 Jun 2015 16:32:13 -0400
> To: Brian Kernighan <bwk(a)CS.Princeton.EDU>
> Subject: dmr web site
>
> finally, try this: https://www.bell-labs.com/usr/dmr/www/
>
> It's almost a complete copy of Dennis Ritchie's pages, with some
> adaptation needed for the new location. There are a few broken links,
> but hopefully they're not too annoying.
This new paper may be of interest to list readers:
Dan Murphy
TENEX and TOPS-20
IEEE Annals of the History of Computing 37(1) 75--82 (2015)
http://dx.doi.org/10.1109/MAHC.2015.15
In particular, the author notes on page 81:
>> ...
>> The fact that UNIX was implemented in a reasonably portable language
>> (at least as compared with 36-bit MACRO) also encouraged its spread to
>> new and less expensive machines. If I could have done just one thing
>> differently in the history of TENEX and TOPS-20, it would be to have
>> coded it in a higher-level language. With that, it's probable that the
>> system, or at least large parts of it, would have spread to other
>> architectures and ultimately survived the demise of the 36-bit
>> architecture.
>> ...
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: beebe(a)math.utah.edu -
- 155 S 1400 E RM 233 beebe(a)acm.org beebe(a)computer.org -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------
Just cuz of this list and recent comments about SVRx and I see this comment in ftrap.s
fpreent: # this is the point we return to
# when we are executing the n+1th
# floating point instruction in a
# contiguous sequence of floating
# point instructions (floating
# pointlessly forever?)
Makes me wonder how many other humorous comments are buried in the code.
David
Oh, if no one out there has a SVR3.1 distribution (apparently for the 3b2), I’ve got one to send out….
Since early 2013 I've occasionally asked this list for help, and shared
the progress regarding the creation of a Unix Git repository containing
Unix releases from the 1970s until today [1].
On Saturday I presented this work [2, 3] at MSR '15: The 12th Working
Conference on Mining Software Repositories, and on Sunday I discussed
the work with the participants over a poster [4] (complete with commits
shown in a teletype (lcase) and a VT-220 font). Amazingly, the work
received the conference's "Best Data Showcase Award", for which I'm
obviously very happy.
I'd like to thank again the many individuals who contributed to the
effort. Brian W. Kernighan, Doug McIlroy, and Arnold D. Robbins helped
with Bell Labs login identifiers. Clem Cole, Era Eriksson, Mary Ann
Horton, Kirk McKusick, Jeremy C. Reed, Ingo Schwarze, and Anatole Shaw
helped with BSD login identifiers. The BSD SCCS import code is based on
work by H. Merijn Brand and Jonathan Gray.
A lot of work remains to be done. Given that the build process is
shared as open source code, it is easy to contribute additions and fixes
through GitHub pull requests on the build software repository [5], but
if you feel uncomfortable with that, just send me email. The most useful
community contribution would be to increase the coverage of imported
snapshot files that are attributed to a specific author. Currently,
about 90 thousand files (out of a total of 160 thousand) are getting
assigned an author through a default rule. Similarly, there are about
250 authors (primarily early FreeBSD ones) for which only the identifier
is known. Both are listed in the build repository's unmatched directory
[6], and contributions are welcomed (start with early editions; I can
propagate from there). Most importantly, more branches of open source
systems can be added, such as NetBSD OpenBSD, DragonFlyBSD, and illumos.
Ideally, current right holders of other important historical Unix
releases, such as System III, System V, NeXTSTEP, and SunOS, will
release their systems under a license that would allow their
incorporation into this repository. If you know people who can help in
this, please nudge them.
--Diomidis
[1] https://github.com/dspinellis/unix-history-repo
[2]
http://www.dmst.aueb.gr/dds/pubs/conf/2015-MSR-Unix-History/html/Spi15c.html
(HTML)
[3]
http://www.dmst.aueb.gr/dds/pubs/conf/2015-MSR-Unix-History/html/Spi15c.pdf
(PDF)
[4]
http://www.dmst.aueb.gr/dds/pubs/conf/2015-MSR-Unix-History/html/poster.pdf
(105MB)
[5] https://github.com/dspinellis/unix-history-make
[6]
https://github.com/dspinellis/unix-history-make/tree/master/src/unmatched
All, I finally remembered to export the unix-jun72 project over to Github:
https://github.com/DoctorWkt/unix-jun72
This was our effort to bring the 1st Edition Unix kernel back to life
along with the early C compilers and the 2nd Edition userland binaries.
Cheers, Warren
>
> On Thu, May 21, 2015 at 11:49 AM, Clem Cole <clemc(a)ccc.com <mailto:clemc@ccc.com>
> <mailto:clemc@ccc.com <mailto:clemc@ccc.com>>> wrote:
>
> ? HP/UX is an SVR3 & OSF/1 ancester. Solaris is SVR4. In fact
> it was the SVR4 license and deal between Sun and AT&T)? that
> forced the whole OSF creation. One of the "principles" of the
> OSF was "Fair and Stable" license terms.
>
> Which begs a question - since Solaris was SVR4 based and was
> made freely available via OpenSolaris et al, does that not
> make SVR4 open? I'm not a lawyer (nor play one on TV), but
> it does seem like that sets some sort of precedent.
This is indeed an interesting question. During the IBM vs SCO debacle,
IBM requested the use of TMGE to be used as an example for proof of
how the SVR4 kernel algorithms were already out in the public domain
and thus set the precedent. And this was also (eventually) approved by
AT&T for publication.
> From: Mary Ann Horton
> I have 5 AT&T SVR4 tapes among them .. Is it worth recovering them?
I would say that unless they are _known_ to be in a repository somewhere, yes
(unless it's going to cost a fortune - SVR4 isn't _that_ key a step in the
evolution, I don't think [but I stand to be corrected :-]).
Noel
Hi.
Can anyone still read 9 track tapes? We just uncovered two that date
from my wife's time in grad school, circa 1989 - 1990. They would
be tar tapes.
Thanks!
Arnold
A fantastic curatorial exploit!
> Deadly quote "and nobody cares about that early code history any more
> --so this is all water under the bridge."
This particular metaphor always reminds me of the Farberism: "That's
water over the bridge." Dave, a major presence at Bell Labs, master
malaprop, friend of many and collaborator with several of the early
Unix team, may be counted as an honorary Unixian.
Doug
> From: Aharon Robbins
> Can anyone still read 9 track tapes? We just un-covered two that date
> from my wife's time in grad school, circa 1989 - 1990. They would be
> tar tapes.
That old, the issue is not going to be the format (TAR is still grokkable),
but the physical condition of the tapes; that old, they might have issues
with shedding of oxide, etc (which a heat soak can mostly cure). If you
really want them read, I would recommend a specialist in reading old tapes;
it will cost, but if you really want the data... I have used Chuck Guzis, in
Washington (state) in the US.
Noel
Hoi.
What started as the plan to write a short portrait of cut(1)
for a free german online magazine (translation to English is
not done yet) became a closer look at the history of cut(1).
Well, the topic got me hooked at some point. The text is still
only about eight pages long and far from scientific quality,
but it features some facts not found in Wikipedia. ;-)
So, let me come to my questions.
1) The oldest version of cut that I found is this one in System III.
http://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd
(The file date says 1980-04-11.) As the sccsid reads version 1.5,
there must be older code. How can I find it? Is there a story of
how cut appeared for the first time?
2) As far as I found out, POSIX.2-1992 introduced the byte mode
(-b) and added multi-byte support for the character mode. Is
this correct?
3) Old BSD sources reference POSIX Draft 9 (which, it seems,
they implement) but lack multi-byte support and the byte mode.
They also support decreasing lists, which, they state, POSIX
Draft 9 would not.
http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut/cu…
The only POSIX.2 Draft I have access to is Draft 11.2.
http://www.nic.funet.fi/pub/doc/posix/p1003.2/d11.2/all.ps
It does specify the multi-byte stuff and does also allow
decreasing lists. Hence, it appears that these things were
added somewhen between Draft 9 and Draft 11.2. Does anyone
know details?
It would be great, if you can give me some pointers for
further research or even share some cut-stories from the
good old days. :-)
meillo
P.S.
In case you understand German, feel free to have a look at the
current version of the text: http://hg.marmaro.de/docs/cut/file/
I welcome your comments, but bear with me, the text issn't meant
to become a doctoral thesis; I just want to write it for fun and
to learn about the historical background.
Hello All.
I have a full set of the O'Reilly X reference manuals - Volumes 1-5, 6a
and 6b. Also "The X Window System In A Nutshell". These are all from
like the mid-1990s.
Are they worth hanging onto?
If not, does anyone on this list want them? If so, I'll send them for
the cost of postage from Israel.
Thanks,
Arnold
> From: Dave Horsfall <dave(a)horsfall.org>
>> In V6, the bootstrap in block 0 prompts for a file name, and when that
>> is entered, it loads that file into memory and starts it. (It doesn't
>> have to be in the root directory, IIRC - I'm pretty sure the bootstrap
>> will accept full path names.)
> I'm pretty sure that it didn't have the full namei() functionality, so
> all files had to be in the root directory.
It depends on what you mean by the first "it" above - if you meant 'V6', then
no. From the Distribution V6's /src/mdec/fsboot.s:
/ read in path name
/ breaking on '/' into 14 ch names
The process of breaking the name up into segments, and then later finding
each name in the appropriate directory, can be seen. The code is kind of
obscure, but if you look at the RL bootstap I dis-assembled:
http://ana-3.lcs.mit.edu/~jnc/tech/unix/rlboot.s
it's pretty much the same code, and a little better commented in the 'read
in directories' part.
Noel
> From: Mark Longridge
> I'm not sure where Unix v1 is loading the kernel from.
> From: Warren Toomey
> Have a look here: https://code.google.com/p/unix-jun72/
Thanks for the pointer! From poking around there, it looks like V1 had
special 'cold boot' and 'warm boot' disk partitions.
I wonder why they lost the 'warm boot' capability in later versions? Maybe it
became reliable enough that the extra complexity of supporting it wasn't
worth it?
Noel
> From: Mark Longridge <cubexyz(a)gmail.com>
> I'm not sure where Unix v1 is loading the kernel from. .. In all the
> other versions of Unix there was always a file like 'unix' in the root
> directory but I guess Unix v1 was different?
I don't know much about the other versions, but it would all depend on what's
in the bootstrap (usually contained in block 0 of drive 0, at least on older
11's). In V6, the bootstrap in block 0 prompts for a file name, and when that
is entered, it loads that file into memory and starts it. (It doesn't have
to be in the root directory, IIRC - I'm pretty sure the bootstrap will accept
full path names.)
How did you create a V1 filesystem? (I don't know, BTW, what they look like -
is that documented anywhere?) It's probably not the same layout as the V6
(which I think is the same as V5).
Noel