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/ -
-------------------------------------------------------------------------------