All, very off-topic for TUHS but you have a bounty of experience. If any
of you have Intel ia64 skills and/or fixing compiler back-end bugs, could
you contact me off-list? I'm writing a back-end for the SubC compiler and
I have 'one last bug'™ before it can compile itself, and I'm stuck.
Details at: https://minnie.tuhs.org/wktcloud/index.php/s/QdKZAqcBytoFBkQ/download?path=…
Thanks, Warren
I’ve seen it said a couple of places that the DG/UX kernel was an almost complete rewrite and rather well-done.
Have any details been preserved? There’s not a whole lot out there that I’ve been able to find about DG/UX or the AViiON workstation series (whether 88K or Intel x86).
-- Chris
PS - I’ve found that my asking around has prompted some people to put things online, so may as well keep asking in various places. :)
Ok. I know there was never a v6.5... officially. But there are several
references to that in different bits of the early user group news letters.
This refers to v6 plus all the patches that "leaked" out of bell Labs via
udel and Lou Katz.
My question is, have they survived? The story sure has, but I didn't find
them in the archive..
> From: Jeremy C. Reed
> "PDP-11 that had PDP-10 memory management, KS-1." ... What is this
> PDP-11 and KS-1? Maybe this is the PDP-11/20 with KS-11?
Yes. The reference to "PDP-10 memory management" is because apparently the
KS11 did what the PDP-10 MMU did, i.e. divide the address space into two
sections. (On the -10, one was for code, and one for data.)
Alas, next to nothing is known of the KS11, although I've looked. There's a
mention of it in "Odd Comments and Strange Doings in Unix":
https://www.bell-labs.com/usr/dmr/www/odd.html
but it doesn't say much.
Noel
I read in the PDP-7 reference manual that Precision CRT Display Type 30
and Precision Incremental Display Type 340 are the typical displays used
with the PDP-7, but aren't standard equipment. I read about the
Graphics-II scope. Was it the only display? I read it was used as a
second terminal and that it would pause per display full with a button
to continue.
I assume this second terminal's keyboard was TTY model 33 or similar
since it was the standard equipment. Does anyone know?
Do you know if the PDP-7 or early edition Unixes have pen support for
that Graphics-II or similar displays?
Clem has written that the PDP-7 had a disk from a PDP-9. Where is this
cited?
The ~1971 draft "The UNIX Time-Sharing System" says first version runs
on PDP-9 also.
https://www.tuhs.org/Archive/Distributions/Research/McIlroy_v0/
But I cannot find any other reference of running on PDP-9 at all. Was
this academic?
That draft calls the PDP-7 version the "first edition" but later the
PDP-11/20 is called the "first edition". When did the naming of first
edition get defined to not include the PDP-7 version? Or is it because
the early "0th" version was never released/shared outside?
Thompson interview
https://www.tuhs.org/Archive/Documentation/OralHistory/transcripts/thompson…
mentions an "interim machine" and a "PDP-11 that had PDP-10 memory
management, KS-1." What is this interim machine? Is this a PDP-11
without a disk (for a few months?) What is this PDP-11
and KS-1? Maybe this is the PDP-11/20 with KS-11?
Do we know what hardware was supported for the early editions? We don't
have all the kernel code and from a quick look from what is available I
didn't see specific hardware references.
The later ~1974 "The UNIX Time-Sharing System" paper does mention some
hardware at that time on the PDP-11/45 like a 201 dataset interface and
a Tektronix 611 storage-tube display on a satellite PDP-11/20.
When did a CRT with keyboard terminal like DEC vt01 (with Tektronix 611
CRT display), LS ADM-3, Hazeltine 2000, VT01A display with keyboard
(what keyboard?) get supported? Any code to help find this? (The
https://www.bell-labs.com/usr/dmr/www/picture.html does mention the
VT01A plys keyboard).
Thanks,
Jeremy C. Reed
echo Ohl zl obbx uggc://errqzrqvn.arg/obbxf/csfrafr/ | \
tr "Onoqrsuvxzabcefghl" "Babdefhikmnoprstuy"
Does anyone know where I can find the Unix-related interviews with Dr.
Peter Collinson?
These are acknowledged in front-matter of Peter Salus's Quarter Century
book which says previously appeared in ".EXE". Bottom of
https://www.hillside.co.uk/articles/index.html mentions the magazines
aren't found. I didn't try contacting him yet.
I have read the Mahoney collection (archived at TUHS). Any other
interview collections from long ago?
Jeremy C. Reed
echo Ohl zl obbx uggc://errqzrqvn.arg/obbxf/csfrafr/ | \
tr "Onoqrsuvxzabcefghl" "Babdefhikmnoprstuy"
Hi TUHS folks,
Earlier this month I did a fair bit of research on a little known Unix
programming language - bs - and updated the wikipedia pages
accordingly.
https://en.wikipedia.org/wiki/Bs_(programming_language)
Thanks for solving some bs mysteries goes to its author, Dick Haight,
as well as those that got us in touch: Doug McIlroy, Brian Kernighan,
and John Mashey.
Apart from what is in the aforementioned wikipedia page, in exchanging
email with me, Dick shared:
q(
I wrote bs at the time Unix (V 3?) and all of the commands were being
converted from assembler to C. So Thompson’s bas became my bs — sort
of. I included snobol’s succeed/fail feature (? Operator/fail return).
[...]
No one asked me to write bs. [...] I tried to get Dennis Ritche to add
something like “? / fail” to C but he didn’t. This is probably part of
why I wrote bs. I wasn’t part of the Unix inner circle (BTL Computing
Research, e.g., Thompson, Ritchie, McIlroy, etc). Neither were Mashey
& Dolotta. We were “support”.
)
The Release 3.0 manual (1980) mentions bs prominently on page 9:
Writing a program. To enter the text of a source program into a
UNIX file, use ed(1). The four principal languages available under
UNIX are C (see cc(1)), Fortran (see f77(1)), bs (a
compiler/interpreter in the spirit of Basic, see bs(1)), and assembly
language (see as(1)).
Personally, some reasons I find bs noteworthy is (a) it is not much
like BASIC (from today's perspective) and (b) as mentioned in the
wikipedia page, "The bs language is a hybrid interpreter and compiler
and [an early] divergence in Unix programming" (from Research Unix
mentioning only the other three languages):
q(
The bs language was meant for convenient development and debugging of
small, modular programs. It has a collection of syntax and features
from prior, popular languages but it is internally compiled, unlike a
Shell script. As such, in purpose, design, and function, bs is a
largely unknown, modest predecessor of hybrid interpreted/compiled
languages such as Perl and Python.
)
It survives today in some System III-derived or System V-derived
commercial operating systems, including HP-UX and AIX.
If you have additional information that might be useful for the
wikipedia page, please do share it.
Peace,
Dave
P.S. Here is a 2008 TUHS list discussion, "Re: /usr/bin/bs on HPUX?":
On Wed, Dec 10, 2008 at 01:08:26PM -0500, John Cowan wrote:
> Lord Doomicus scripsit:
>
> > I was poking around an HP UX system at work today, and noticed a
> > command I've never noticed before ... /usr/bin/bs.
> >
> > I'm sure it's been there for a long time, even though I've been an
> > HPUX admin for more than a decade, sometimes I'm just blind ... but
> > anyway ....
> >
> > I tried to search on google ... it looks like only HPUX, AIX, and
> > Maybe AU/X has it. Seems to be some kind of pseudo BASIC like
> > interpreter.
>
> That's just what it is. Here are the things I now know about it.
>
> 0. The string "bs" gets an awful lot of false Google hits, no matter
> how hard you try.
>
> 1. "bs" was written at AT&T, probably at the Labs, at some time between
> the release of 32V and System III. It was part of both System III and
> at least some System V releases.
>
> 2. It was probably meant as a replacement for "bas", which was a more
> conventional GW-Basic-style interpreter written in PDP-11 assembly
> language. (32V still had the PDP-11 source, which of course didn't work.)
>
> 3. At one time System III source code was available on the net,
> including bs.c and bs.1, but apparently it no longer is. I downloaded
> it then but don't have it any more.
>
> 4. I was able to compile it under several Unixes, but it wouldn't run:
> I think there must have been some kind of dependency on memory layout,
> but never found out exactly what.
>
> 5. I remember from the man page that it had regular expressions, and
> two commands "compile" and "execute" that switched modes to storing
> expressions and executing them on the spot, respectively. That eliminated
> the need for line numbers.
>
> 6. It was apparently never part of Solaris.
>
> 7. It was never part of any BSD release, on which "bs" was the battleships
> game.
>
> 8. I can't find the man page on line anywhere either.
>
> 9. The man page said it had some Snobol features. I think that meant
> the ability to return failure -- I vaguely remember an "freturn" command.
>
> 10. 99 Bottles of Beer has a sample bs program at
> http://www2.99-bottles-of-beer.net/language-bs-103.html .
>
> 11. If someone sends me a man page, I'll consider reimplementing it as
> Open Source.
>
> --
> We are lost, lost. No name, no business, no Precious, nothing. Only empty.
> Only hungry: yes, we are hungry. A few little fishes, nassty bony little
> fishes, for a poor creature, and they say death. So wise they are; so just,
> so very just. --Gollum cowan at ccil.orghttp://ccil.org/~cowan
--
dave(a)plonka.us http://www.cs.wisc.edu/~plonka/
> From: "Brian L. Stuart"
> (The tmg doc was one I remember not being there.)
Err, TMG(VI) is 1/2 page long. Is that really what you were looking for?
(I _did_ specify the 'UPM'.)
I do happen to have the V6-era TMG _manual_, if that's what you're looking
for.
Noel
All, I'm just musing where is the best place to store Unix documentation.
My Unix Archive is really just a filesystem, so it's not so good to
capture and search metadata.
Is anybody using archive.org, gunkies or something else, and have
recommendations?
Cheers, Warren
I'm looking for complete compies of UNIX NEWS volumes 1-7. 8 and newer are
available on the USENIX site, or on archive.org, but older ones are not. A
few excerpts are published in newer login issues, but nothing complete.
Reading the AUUGN issues, especially the early ones, are quite enlightening
and help one judge the relative merits of later accounts with better
contemporary context. I was hoping to get the same from UNIX NEWS (later
login) and any other news letters that may exist from the time (I think I
spotted references to one from the UK in AUUGN). It's really quite
enlightening.
Warner
Hello All.
Believed lost in the mists of time for over 30 years, the Georgia Tech
Software Tools Subsystem for Prime Computers, along with the Georgia Tech
C Compiler for Prime Computers, have been recovered!
The source code and documentation (and binary files) are available in a
Github repo: https://github.com/arnoldrobbins/gt-swt.
The README.md there provides some brief history and credits with respect
to the recovery, and w.r.t. the subsystem and C compilers themselves.
Credit to Scott Lee for making and keeping the tapes and driving the
recovery process, and to Dennis Boone and yours truly for contributing
financially. I set up the repo.
For anyone who used and/or contributed to this software, we hope you'll
enjoy this trip down memory lane.
Feel free to forward this note to interested parties.
Enjoy,
Arnold Robbins
(On behalf of the swt recovery team. :-)
Hello All.
I have revived the 10th edition spell(1) program, allowing it to compile
and run on "modern" systems.
See https://github.com/arnoldrobbins/v10spell ; the README.md gives
an overview of what was done.
Enjoy!
Arnold
Greetings!
As a project for our university's seminar on the PDP-8 I wrote a
compiler for the B language targeting it. It's a bit rough around
the edges and the runtime code needs some work (division and
remainder are missing), but it does compile B code correctly,
generating acceptable code (for my taste, though the function call
sequence could be better).
I hope some of you enjoy this compiler for an important historical
language for an important historical computer (makes me wonder why
the two weren't married before).
https://github.com/fuzxxl/8bc
Yours,
Robert Clausecker
--
() ascii ribbon campaign - for an 8-bit clean world
/\ - against html email - against proprietary attachments
https://2019.eurobsdcon.org/livestream-soria-moria/
Has a live stream. My talk is at 1230 UTC or just under 2 hours. There will
be a recording I think that I'll be able to share with you in a day or
three.
Warner
Hi!
Is there a public OpenSolaris Git/CVS/SVN ?
The openloaris.org site is down.
AFIK the first sources set (not complete) was published around June 2005.
The latest available sources were b135 March 2010
(available at TUHS)
https://www.tuhs.org/cgi-bin/utree.pl?file=OpenSolaris_b135
It would be interesting to see an evolution of "pure" SysV R4.
--
-=AV=-
Larry McVoy:
If you have something like perl that needs a zillion sub pages, info
makes sense. For just a man page, info is horrible.
=====
This pokes me in one of my longest-standing complaints:
Manual entries, as printed by man and once upon a time in
the Programmers' Manual Volume 1, should be concise references.
They are not a place for tutorials or long-winded descriptions
or even long lists of hundreds of options (let alone descriptions
of why the developer thinks this is the neatest thing since
sliced bread and what bread he had in his sandwiches that day).
For many programs, one or two pages of concise reference is
all the documentation that's needed; no one needs a ten-page
tutorial on how to use cat or rm or ls, for example. But some
programs really do deserve a longer treatment, either a tutorial
or an extended reference with more detail or both. Those belong
in separate documents, and are why the Programmers' Manual had
a second volume.
Nowadays people think nothing of writing 68-page-long manual
entries (real example from something I'm working with right now)
that are long, chatty lists of options or configuration-file
directives with tutorial information interspersed. The result
makes the developer feel good--look at all the documentation
I've written!!--but it's useless for someone trying to figure
out how to write a configuration file for the first time, and
not so great even for someone trying to edit an existing one.
Even the Research system didn't always get this right; some
manual entries ran on and on and on when what was really
needed was a concise list of something and a longer accompanying
document. (The Tenth Edition manual was much better about
that, mostly because of all the work Doug put in. I doubt
there has ever been a better editor for technical text than
Doug.) But it's far worse now in most systems, because
there's rarely any editor at all; the manuals are just an
accreted clump.
And that's a shame, though I have no suggestions on how
to fix it.
Norman Wilson
Toronto ON
Clem Cole:
Exactly!!!! That's what Eric did when he wrote more(ucb) - he *added to
Unix*. The funny part was that USG thought more(ucb) was a good idea and
then wrote their own, pg(att); which was just as arrogant as the info
behavior from the Gnu folks!!!
======
And others wrote their own too, of course. The one I know
best is p(1), written by Rob Pike in the late 1970s at the
University of Toronto. I encountered at Caltech on the
system Rob had set up before leaving for Bell Labs (and
which I cared for and hacked on for the next four years
before following him). By the time I reached BTL it was
a normal part of the Research system; I believe it's in
all of the Eighth, Ninth, and Tenth Edition manuals.
p is interesting because it's so much lighter-weight, and
because it has rather a different interior design:
Rather than doing termcappy things, p just prints 22 lines
(or the number specified in an option), then doesn't print
the newline after the 22nd line. Hit return and it will
print the next 22 lines, and so on. The resulting text just
flows up the glass-tty screen without any fuss, cbreak, or
anything. (I believe the first version predated V7 and
therefore cbreak.)
Why 22 lines instead of 24, the common height of glass ttys
back then? Partly because that means you keep a line or two
of context when advancing pages, making reading simpler.
But also because in those days, a standard page destined for
a printer (e.g. from pr or nroff, and therefore from man) was
66 lines long. 22 evenly divides 66, so man something | p
never gives you a screen spanning pages.
p was able to back up: type - (and return) instead of just
return, and it reprints the previous 22-line page; -- (return)
the 22 lines before that; and so on. This was implemented
in an interesting and clever way: a wrapper around the standard
I/O library which kept a circular buffer of some fixed number
of characters (8KiB in early versions, I think), and a new
call that, in effect, backed up the file pointer by one character
and returned the character just backed over. That made it easy
to back over the previous N lines: just make that call until
you've seen N newlines, then discard the newline you've just
backed over, and you're at the beginning the first line you want
to reprint.
As I vaguely recall, more was able to back up, but only when
reading from a real file, not a pipeline. p could do (limited
but sufficient) backup from a pipeline too.
As a creature of its pre-window-system era, you could also type
!command when p paused as well.
I remember being quite interested in that wrapper as a
possible library for use in other things, though I never
found a use for it.
I also remember a wonderful Elements-of-Programming-Style
adventure with Rob's code. I discovered it had a bug under some
specific case when read returned less than a full bufferful.
I read the code carefully and couldn't see what was wrong.
So I wrote my own replacement for the problematic subroutine
from scratch, tested it carefully in corner cases, then with
listings of Rob's code and mine side-by-side walked through
each with the problem case and found the bug.
I still carry my own version of p (rewritten from scratch mainly
to make it more portable--Rob's code was old enough to be too
clever in some details) wherever I go; ironically, even back to
U of T where I have been on and off for the past 30 years.
more and less and pg and the like are certainly useful programs;
for various reasons they're not to my taste, but I don't scorn
them. But I can't help being particular fond of p because it
taught me a few things about programming too.
Norman Wilson
Toronto ON
KatolaZ:
> We can discuss whether the split was necessary or "right" in the first
> instance, as we could discuss whether it was good or not for cat(1) to
> leave Murray Hill in 1979 with no options and come back from Berkley
> with a source code doubled in size and 9 options in 1982.
We needn't discuss that (though of course there are opinions and
mine are the correct ones), but in the interest of historic accuracy,
I should point out by 1979 (V7) cat had developed a single option -u
to turn off stdio buffering.
Sometime before 1984 or so, that option was removed, and cat was
simplified to just
while ((n = read(fd, buf, sizeof(buf))) > 0)
write(1, buf, n)
(error checking elided for clarity)
which worked just fine for the rest of the life of the Research
system.
So it's true that BSD added needless (in my humble but correct
opinion) options, but not that it had none before they touched it.
Unless all those other programs were stuffed into cat in an earlier
Berkeley system, but I don't think they were.
Norman Wilson
Toronto ON
(Three cats, no options)
Arthur Krewat:
Which is better, creating a whole new binary to put in /usr/bin to do a
single task, or add a flag to cat?
Which is better, a proliferation of binaries w/standalone source code,
or a single code tree that can handle slightly different tasks and save
space?
======
Which is simpler to write correctly, to debug, and to maintain:
a simple program that does a single task, or a huge single program
with lots of tasks mashed together?
Which is easier to understand and use, individual programs each
with a few options specialized to a particular task, or a monolith
with many more options some of which apply only to one task or
another, others to all?
What are you trying to optimize for? The speed with which
programmers can churn out yet another featureful utility full
of bugs and corner cases, or the ease with which the end-user
can figure out what tool to use and how to use it?
Norman Wilson
Toronto ON
I fear we're drifting a bit here and the S/N ratio is dropping a bit w.r.t
the actual history of Unix. Please no more on the relative merits of
version control systems or alternative text processing systems.
So I'll try to distract you by saying this. I'm sitting on two artifacts
that have recently been given to me:
+ by two large organisations
+ of great significance to Unix history
+ who want me to keep "mum" about them
+ as they are going to make announcements about them soon *
and I am going slowly crazy as I wait for them to be offically released.
Now you have a new topic to talk about :-)
Cheers, Warren
* for some definition of "soon"
OK. I'm totally confused, and I see contradictory information around. So I
thought I'd ask here.
PWB was started to support unix time sharing at bell labs in 1973 (around
V4 time).
PWB 1.0 was released just after V6 "based on" it. PWB 2.0 was released just
after V7, also "based on it". Later Unix TS 3.0 would become System III. We
know there was no System I or System II. But was there a Unix TS 1.0 and
2.0? And were they the same thing as PWB 1.0 and 2.0, or somehow just
closely related? And I've seen both Unix/TS and Unix TS. Is there a
preferred spelling?
Thanks for all your help with this topic and sorting things out. It's been
quite helpful for my talk in a few weeks.
Warner
P.S. Would it be inappropriate to solicit feedback on an early version of
my talk from this group? I'm sure they would be rather keener on catching
errors in my understanding of Unix history than just about any other
forum...