I've assembled some notes from old manuals and other sources
on the formats used for on-disk file systems through the
Seventh Edition:
http://www.cita.utoronto.ca/~norman/old-unix/old-fs.html
Additional notes, comments on style, and whatnot are welcome.
(It may be sensible to send anything in the last two categories
directly to me, rather than to the whole list.)
Hi TUHSers,
For a long time now, I have had a theory that I've never seen
substantiated (or disproved) in print. After Steve Johnson's recollection
of how hard it was to type on the Teletype terminals, I'm going to throw
this thought out for consideration.
One of Unix's signature hallmarks is its terseness: short command names
like mv, ln, cp, cc, ed; short options (a dash and a single letter),
programs with just a few, if any, options at all, and short path names:
"usr" instead of "user", "src" instead of "source" and so on.
I have long theorized that the reason for the short names is that since
typing was so physically demanding, it was natural to make the command
names (and all the rest) be short and easier to type. I don't know if
this was a conscious decision, but I suspect it more likely to have been
an unconscious / natural one.
Today, I started wondering if this wasn't at least part of the reason
for commands being simple, with few if any options. After all, if I
have to type 'man foo' to remember how foo works, I don't want to wait
for 85 pages of printout (at 110 characters per second!) to finally see
what option -z does after wading through the descriptions of options -a
through -y.
I certainly think there's some truth to this idea; longer command
names and especially GNU style long options didn't appear until the
video terminal era when terminals were faster (9600 or 19200 baud!) and
much less physically demanding to use. How MUCH correlation is there,
I don't claim to know, but I think there's definitely some.
For the record, I did use the paper teletypes some, mainly at a university
where I took summer classes, connected to a Univac system. I remember
how hard it was to use them. You could almost set your watch by when
it would crash around noon time, as the load went up. :-) On Unix I
only used VDTs, except if I was at a console DECwriter.
Anyway, that's my thought. :-) Comments and or insights, especially from
those who were there, would be welcome.
Thanks,
Arnold
The Unix History repository on GitHub [1] aims to provide the evolution
of Unix from the 1970s until today under Git revision control. Through
a few changes recently made [2] it's now possible for individual
contributors to have their GitHub profile linked to their early Unix
contributions. Ken Thompson graciously made this move last week
following a personal email invitation. I think it would be really cool
if more followed. This would send a powerful message of continuity and
tradition in computing to youngsters joining GitHub today.
What you need to do is the following.
- Create a GitHub profile (if you haven't already got one)
- Click on https://github.com/settings/emails
- Add the email address(es) associated with your early Unix commits
(e.g. foo(a)research.uucp or bar(a)ucbvax.berkeley.edu) You can easily find
an author's commits and email addresses recorded in the repository
through the web search form http://www.spinellis.gr/cgi-bin/namegrep.pl
- GitHub will tell you that a verification email has been sent to your
(probably defunct) email address. Don't worry. Your account will be
linked to the address even without the verification step.
- Adding your photograph to your profile will increase the vividness of
GitHub's revision listings.
If you're in contact with Unix contributors who are not on this list,
please forward them this message. Also, if your name isn't properly
associated with the repository's commits, drop me an email message (or a
GitHub pull request for the corresponding file [3]), and I'll add it.
[1] https://github.com/dspinellis/unix-history-repo
[2] The modifications involved the change of UUCP addresses to use the
.uucp pseudo-domain rather than a ! path and the listing of co-authors
within the commit message.
[3]
https://github.com/dspinellis/unix-history-make/tree/master/src/author-path
Diomidis - http://www.spinellis.gr
Just a friendly word from the guy who runs the TUHS list.
Historical details, with verifiable facts: OK.
Questions and replies about old systems: OK.
Semi-off-topic threads: mostly OK, they usually peter out.
Comments about systems (good or bad): fine.
Comments about individuals and their motivations/actions
(especially if the comments are pejorative): not good at all.
If you think a thread is going to devolve into a slanging match
between people, then a) don't fuel the flames by posting replies,
b) walk away and calm down, c) let me know.
We've had a few threads recently which are coming close to the
edge, and I hate acting as a censor/wet blanket, so please
avoid saying things that will raise other people's hackles.
Back to you regularly scheduled notalgia....
Warren
Marc Rochkind:
BSD is the new kind on the block. I don't think it came along until 1977 or
so. Research UNIX I don't think picked up SCCS ever. SCCS first appeared in
the PWB releases, if you don't count the earlier version in SNOBOL4 for the
IBM mainframes.
=====
Correct. We never needed no stinkin' revision control in Research.
More fairly, early systems like SCCS were so cumbersome that a
community that was fairly small, in which everyone talked to
everyone, and in which there was no glaring need wasn't willing
to adopt them.
I remember trying SCCS for a few small personal projects back in
1979 or so (well before I moved to New Jersey), finding it just
too clunky for the benefits it gave me, and giving up. Much later,
I found RCS just as messy. One thing that really bugged me was
those systems' inherent belief that you rarely want to keep a
checked-out copy of something except while you're working on it.
Another, harder to work around, is that in any nontrivial project
there are often stages when I want to make changes of scope broader
than a single file: factor common stuff out into a new file, merge
things into a single file, rename files, etc.
CVS was a big step forward, but not enough. Subversion was the
first revision-control that didn't feel like a huge burden to me.
None of which is to say that SCCS and RCS were useless; they were
important pioneers, and for the big projects that originally
spawned them I'm sure they were indispensible. But I can't imagine
Ken or Dennis putting up with them for very long, and I'm glad I
never had to.
Norman Wilson
Toronto ON
> These are USED cards. That's OK. No duty!
Quite the opposite happened to me in Britain. I wanted to
import an early computer-generated film to show. When I
inquired whether there would be any customs implications,
I was asked whether the film was exposed or not. Britain
charged duty only on exposed film.
With apologies for straying ever farther from Unix,
Doug
> From: Dave Horsfall
> That makes sense, and someone forgot to document it...
Or perhaps it was added precisely to get rid of the window, and then someone
discovered that it could be used to freeze the system, so they decided they'd
better not document it?
If the system had MOS memory, and you had to power cycle the machine to get it
out of this state, there wouldn't be any evidence left of who did the deed
(unless the system was writing extensive audit trailing to disk), so it would
be a great 'system assasin' (aka vandal) tool.
Noel
PS: I guess this is more PDP-11ish than UNIXish - apologies for the off-topic!
On 21 March 2016 at 17:43, Greg 'groggy' Lehey <grog(a)lemis.com> wrote:
> On Tuesday, 22 March 2016 at 1:11:07 +1100, Dave Horsfall wrote:
>>
>> Walking down the corridors of Comp Sci, a student in front of me
>> dropped his entire deck of approx 2000 cards, all over the floor...
>> I have no idea whether he got them sorted, but I sure as hell used
>> rubber bands after that!
>
> But that's what the sequence numbers in columns 73 to 80 are for!
I did that religiously, even with my small PL/C runs -- PL/C runs were
free. One day, they decided to extend the code area to the entire
card.... and so I learned another feature of the card punch.
N.
>
> Greg
> --
Thanks for some additional information.
On 2016-03-28 18:16, Milo Velimirović wrote:
>
>> On Mar 28, 2016, at 9:44 AM, Johnny Billquist <bqt(a)update.uu.se> wrote:
>>
>> On 2016-03-28 16:18, Noel Chiappa wrote:
>>> > From: Dave Horsfall <dave(a)horsfall.org>
>>>
>
> [ Wait & RK discussion snipped.]
>
>>
>>
>>> > I know that Kevin Dawson (I think) tried it on my /40 as well
>>>
>>> The 11/40 does not have the SPL instruction; see the '75-'76 PDP-11 Processor
>>> Handbook, pg. 4-5. (Again, sorry, just want to be accurate.)
>>
>> This is also a pretty important point. But one which also begs the question how the splxxx() functions in Unix worked back then. Or did Unix not use this pattern and these functions back when the 11/40 was relevant?
>
> These functions existed in V6 and can be found in the file, m40.s, that was assembled with the rest of the kernel to generate a unix that would run on a /40 class machine.
Aha. Great. Thanks. Yes, BIS and BIC on the PSW obviously works, but
this would definitely not block interrupts for the next instruction. So
at least in that case, a WAIT could result in the kernel sitting around
waiting for the next interrupt. I don't really think DEC intend WAIT to
be used in the way Unix uses it, and it don't really have the properties
that would be ideas for Unix. Also somewhat indicated by the fact that
DEC did not use WAIT this way themselves.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt(a)softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol
On 2016-03-27 23:49, jnc(a)mercury.lcs.mit.edu (Noel Chiappa) wrote:
>
> > From: Johnny Billquist
>
> > It would also be interesting if anyone can come up with a good reason
> > why SPL should work that way.
>
> So that when doing:
>
> SPL 0
> WAIT
>
> you don't lose by having the interrupt happen between the SPL and the WAIT?
Hmm. A good point. If you depend on WAIT waking you up at an interrupt,
then you need SPL to block here. But this also means that you must be at
SPL 7 before any of this, otherwise you are still exposed to this
problem (nothing says that the interrupt won't happen before the SPL as
well).
In general, I would say that this is not the way I would write code, but
checking in RSX and 2.11BSD I can tell that RSX do not use this pattern,
and does a WAIT without any SPL, while 2.11BSD do an SPL 0 followed by
WAIT. And the routine in 2.11BSD is also called at SPL 7.
So obviously, both ways have been done, and 2.11BSD will work
potentially with a slight degration if the SPL do not block interrupts.
It will still work fine, as you will, at a minimum, get an interrupt at
the next clock tick, which will wake it up. But it might possibly be
sitting in a WAIT slightly longer than required.
RSX in fact just loops after the WAIT. If an interrupt should cause the
system to be able to do something more productive, it will not return to
the idle loop. So yes, it also detects in the interrupt exit processing,
that it was/is in the idle loop.
I still haven't had time to investigate properly. But at least processor
and chip manuals do not say that SPL will block interrupts. But that is
no guarantee that it don't in reality.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt(a)softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol