From [1]:
The X11 Conservancy Project (X11CP) pulls together the disparate set of programs which were being written between the very late 80s, and early 90s -- usually for Unix and Linux.
…snip…
As the Internet expanded and Linux distributions became established, certain FTP sites were largely used to host some of the more established programs, as well as those found in the LSM.
…snip…
But the early dawn of free software, especially around applications written for X11, using Motif and XT and other widget libraries has now mostly been consigned to obscurity.
With X11 itself now under threat of no longer being developed in favour of Wayland, these applications are going to be harder to run and be discovered.
Hence, the X11CP is designed to be a central place for hosting the sources of these applications, and to showcase their unique history and properties. In keeping this software active, it will help keep an important historical point alive.
[1] https://x11cp.org/
— Michelangelo
> From: Phil Budne
> The cover page has:
> ...
> Upper right corner:
> PA-1C300-01
> Section 1
> Issue 1, January 1976
> AT&TCo SPCS
I have a very similar manual; I got it a long time ago, and no longer recall
how I came by it. Minor difference: mine is for PD-1C301-01, and at the
bottom of the page, it says "ISSUE 1 1/30/76", followed by a prominent trade
secret notice.
TUHS has a copy of this version, here:
https://www.tuhs.org/Archive/Distributions/USDL/unix_program_description_ja…
The README file in that directory:
https://www.tuhs.org/Archive/Distributions/USDL/README
speculates that "this is PWB/1.0" but admits "this has not yet been
confirmed". It's not PWB1, it's stock V6. If you look at the writeup of
sys1$exec(), on pg. 39 of the PDF, you'll see it describing how arguments are
copied into a disk buffer; that right there is the tip-off. In PWB1 (whose
source we do have):
https://minnie.tuhs.org/cgi-bin/utree.pl?file=PWB1/sys/sys/os/sys1.c
you'll see that PWB1 accumulates the arguments in a chunk of swap space.
V6 _does_ use a disk buffer for this:
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6/usr/sys/ken/sys1.c
So this is for V6.
Noel
The October 1984 BSTJ article by Felton, Miller and Milner
https://www.bell-labs.com/usr/dmr/www/otherports/ibm.pdf
Describes an AT&T port of UNIX to System/370 using TSS/370
underpinnings as the "Resident System Supervisor" and used as the 5ESS
switching system development environment.
I also found mention at http://www.columbia.edu/~rh120/ch106.x09
chapter 9 of http://www.columbia.edu/~rh120/ with footnote 96:
Ian Johnstone, who had been the tutor at University of New
South Wales working with Professor John Lions, was one of the
researchers invited to Bell Labs. He managed the completion at
AT&T Bell Labs of the port of Unix to the IBM 370 computer. See
"Unix on Big Iron" by Ian Johnstone and Steve Rosenthal, UNIX
Review, October, 1984, p. 26. Johnstone also led the group that did
the port to the AT&T 2B20A multiprocessor system.
I found
https://ia902801.us.archive.org/3/items/Unix_Review_1984_Oct.pdf/Unix_Revie…
"BIG UNIX: The Whys and Wherefores" (pdf p.24), which only offers rationale.
Also:
"IBM's own involvement in Unix can be dated to 1979, when it
assisted Bell Labs in doing its own Unix port to the 370 (to
be used as a build host for the 5ESS switch's software). In
the process, IBM made modifications to the TSS/370 hypervisor
to better support Unix.[12]"
at https://en.wikipedia.org/wiki/IBM_AIX#cite_ref-att-s370-unix_12-0
Is there any other surviving documentation about the system?
Any recall of what branch of AT&T UNIX it was based on?
Thanks!
Phil
> From: Bakul Shah
> There is a further para:
> Reducing external memory fragmentation to zero by utilizing the VAX-
> 11/780 memory mapping hardware for scatter loading is high on the list
> of things to do in the second implementation pass.
I'm curious as to exactly what is meant by "external memory"? They must mean
memory on the Synchronous Backplane Interconnect:
http://gunkies.org/wiki/Synchronous_Backplane_Interconnect
I.e. what most of us would call 'main memory'.
If this code didn't even allocate main memory by pages, instead of in
process-size blocks, it sounds like it's much like 32V (or is it 32V that's
being discussed; I thought this thread had moved on to the Reiser demand
paging version - my apologies it I've gotten lost).
Also, this note:
http://gunkies.org/wiki/Talk:CB-UNIX
from Dale DeJager (which he kindly gave me permission to post) gives a fair
amount of detail on the relationship between the Research and CB/UNIX
versions, with a brief mention of USG - precisely the era, and relationships,
that are so poorly documented. Interestingly, he indicates that the early
versions of what later became CB/UNIX used something in the V1/V3 range (V4
was the first one in C), so it dates back earlier than most people apparently
assume.
If anyone else has any first-hand notes (i.e.from people who were there at the
time), about the relationship between all the early systems, for which the
author has given permiosssion to post it, please send it to me and I will
add it to the appropriate article on the CHWiki.
Probably the most needed is more about the roots of USG; Dale has filled in
CB/UNIX, and the roots of PWB are covered fairly well in the BSTJ article
on it:
https://archive.org/details/bstj57-6-2177
at least, for PWB1. Anything that covers the later PWBs would likewise be
gratefully receied.
I suppose I should also write up the relationships of the later UNIXen - 32V
and its descendants too - any material sent to me about them will be most
gratefully received. (If anyone want a CHWiki account, to write it up
themselves, please let me know).
Noel
Good evening folks. I'm starting a new thread to pass along info as I scan materials from the 3B20S manual that I picked up. I figured it'd be easier to trickle out the bits folks ask me for first and then continue to scan the rest, that way anyone looking to sink their teeth into something specific can be sated first.
With that, the first scan (and frankly one of my favorite things about this manual) is the cover itself: https://commons.wikimedia.org/wiki/File:UNIX4.1UsersManualCover.png
Someone had mentioned the idea of making this into a poster and I gotta say, I'd gladly put one up. The image definitely would need some cleanup for that, I just scanned it like it came, haven't tried to clean up any of the wear of time yet. Sadly, the back cover isn't emblazoned with a big Bell logo like the 3.0 and 5.0 (Bell variant) manuals, so scanning that would be a boring white piece of cardstock.
Anywho, the next round which may come later this evening or sometime this weekend is going to be various *ROFF-related documents, so documents like troff(1), mm(5), etc.
- Matt G.
> From: Bakul Shah
> Is there a publicly available description of Reiser's VM system? I
> found "A Unix operating system for the DEC VAX 11/780 Computer" by
> London & Reiser which includes a long paragraph on VM (included below)
That para is basically all about the VAX paging hardware; it doesn't say
anything about how that (any :-) Unix actually uses it.
Noel
Good morning all. I've been doing some historical research on the UUCP cu utility this morning and have come across a little discrepancy between the various UNIX streams I was wondering if someone could illuminate.
So cu as of V7 supported the ~$ escape, a means of calling a local procedure and emitting stdout over the TTY line to the remote machine, all fine and good for packaging a character stream to emit. However, what I'm not finding in that age of documentation is any means of requesting std*in* from the TTY line as input to a local procedure (in essence running a text filter or handshake-driven protocols over cu). The context in which I'm researching this is integrating cu into my bare-metal SBC programming using XMODEM so I can rest a little easier my process is based on tools I'll probably find in most places.
So old fashioned Mike Lesk-era cu only seems to do stdout redirect, but no stdin. I did some further digging and it looks like different UUCP implementations cracked this nut with different escapes, with BSD eventually going with ~C and Taylor UUCP opting for ~+. Checking the current illumos manual pages (for a SVR4-ish example) doesn't turn up any command for this. This is indicative of there never being an agreed-upon mechanism for doing this, although I could see this being a very useful mechanism.
What I'm curious about is if the lack of a bi-directional redirect in early cu is reflective of a lack of need for that sort of functionality at the time or that matters such as that were handled through a different mechanism. One thought I did have is that there wasn't file locking at the time (right?) and so theoretically nothing would prevent one from using a cu session on one terminal to send interactive commands and then a second using fd redirects in the shell to run filters/protocols separately of the interactive stream.
- Matt G.
https://bitsavers.org/pdf/usenix/USENIX_1986_Winter_Technical_Conference_Pr…
Here is the URL
(All I did was search for ‘“Unix on big iron” usenix proceedings’)
On Mon, Dec 19, 2022 at 4:59 PM James Frew <frew(a)ucsb.edu> wrote:
> Hello Marc,
>
> Where did you find the 1986 USENIX proceedings?
>
> Reason I'm asking is, I have a pile of pre-1991 USENIX proceedings that I
> haven't found online, and I'm planning to get them scanned. It would be
> great if I didn't have to go the trouble :-)
>
> Thanks,
> /James Frew
> On 2022-12-19 13:36, Marc Donner wrote:
>
>
> There was a track of USENIX 1986 called "UNIX on Big Iron." Peter Capek
> of IBM was the chair and Gene Miya and Jim Lipkis rounded out the program
> committee. The proceedings are available.
>
> --
=====
nygeek.netmindthegapdialogs.com/home <https://www.mindthegapdialogs.com/home>
> To what extent were the Unix folks at Bell Labs already familiar with DEC systems before the PDP-7?
Some awareness, but no hands-on experience,
> was any thought given to trying to get a 360 system?
Very serious thought. However, virtual memory was a non-negotiable
desideratum, to which Gene Amdahl was implacably opposed because
demand paging would devastate hardware performance. Soon after GE got
the nod, IBM revealed Gerrit Blaauw's skunk-works project, the 360/67,
but by then the die had been cast. Michigan bought one and built a
nice time-sharing system that was running well before Multics.
Doug
I think this cited quote from
https://www.joelonsoftware.com/2001/12/11/ is urban legend.
Why do C strings [have a terminating NUl]? It’s because the PDP-7
microprocessor, on which UNIX and the C programming language were
invented, had an ASCIZ string type. ASCIZ meant “ASCII with a Z (zero)
at the end.”
This assertion seems unlikely since neither C nor the library string
functions existed on the PDP-7. In fact the "terminating character" of
a string in the PDP-7 language B was the pair '*e'. A string was a
sequence of words, packed two characters per word. For odd-length
strings half of the final one-character word was effectively
NUL-padded as described below.
One might trace null termination to the original (1965) proposal for
ASCII, https://dl.acm.org/doi/10.1145/363831.363839. There the only
role specifically suggested for NUL is to "serve to accomplish time
fill or media fill." With character-addressable hardware (not the
PDP-7), it is only a small step from using NUL as terminal padding to
the convention of null termination in all cases.
Ken would probably know for sure whether there's any truth in the
attribution to ASCIZ.
Doug
> From: Bob Supnik
> The PDP11 had .ASCIZ, starting with Macro11 in 1972.
I was just about to report on my results, after a tiny bit of digging, which
included this. The important datum is that PAL-11 (in DEC-11-GGPB-D, "paper
tape software", April 1970, revised March 1971), which _preceded_ Macro-11,
_does not_ include .ASCIZ (although it has .ASCII). My oldest Macro-11 book
(DEC-11-OMACA-B-D, "BATCH-11/DOS-11 Assembler (MACRO-11)", April 1972, revised
March 1973) does have .ASCIZ. So in the DEC PDP-11 universe, it dates from
sometime between 1970 and 1972.
I'm not sure if Bell had any of the DEC paper tape software: "In early 1970 we
proposed acquisition of a PDP-11, which had just been introduced by
Digital. ... an order for a PDP-11 was placed in May. The processor arrived at
the end of the summer, but the PDP-11 was so new a product that no disk was
available until December. In the meantime, a rudimentary, core-only version of
Unix was written using a cross-assembler on the PDP-7." So the .ASCIZ in
Macro-11 wasn't until a couple of years later.
Noel
[Resend from my subscribed address, as the list is subscribers-only, it seems]
In C, most syscalls and libc functions use strings, that is, zero or more
non-NUL characters followed by a NUL.
However, there are a few cases where other incompatible character constructs are
used. A few examples:
- utmpx(5): Some of its fields use fixed-width char arrays which contain a
sequence of non-NUL characters, and padding of NULs to fill the rest (although
some systems only require a NUL to delimit the padding, which can then contain
garbage).
- Some programs use just a pointer and a length to determine sequences of
characters. No NULs involved.
- abstract sockets: On Linux, abstract Unix socket names are stored in a
fixed-width array, and all bytes are meaningful (up to the specified size), even
if they are NULs. Only special that that the first byte is NUL.
Since those are only rare cases, those constructs don't seem to have a name;
some programmers call them strings (quite confusingly).
Has there been any de-facto standard (or informal naming) to call those things,
and differentiate them?
Thanks,
Alex
--
<http://www.alejandro-colomar.es/>
All,
I recently migrated my blog - it's new and improved, of course:) over to
https://decuser.github.io. When I saw Warren was awarded Usenix's "The
Flame" last week, I thought it appropriate that one of my first new blog
posts celebrate Warren and his well deserved award.
Here's the post:
https://decuser.github.io/unix/2022/12/15/usenix-flame-award-2022.html
Thanks again to Warren, both for the initiative, and for the maintenance
of one of my all time favorite archives.
Thanks,
Will
Having recently emeritated, I'm clearing out my university office and
giving away hundreds of books. It occurs to me that some of them may be
of interest to some of the folks on this list. (Before you ask, no, you
can't have my original printed-on-Kleenex versions of the Lions notes...)
Most of the books are listed here:
https://www.librarything.com/catalog/james.frew . They're (alas) utterly
uncategorized, but include a fair amount of UNIX, C, and general CS stuff.
I also have some manuals and USENIX conference proceedings even
LibraryThing couldn't locate; they're listed in the attached Markdown
file. None of these proceedings are online at usenix.org, so I'd be
stoked if someone volunteered to scan them.
If you want any of them, let me know, and we'll figure out some way to
reimburse me for shipping them. (No charge for the "content".) Or if
you're close enough to Santa Barbara, come and get 'em.
Cheers,
/Frew <https://purl.org/frew>
I vaguely remember having read here about 'clever code' which took into
account the time a magnetic drum needed to rotate in order to optimise
access.
Similarly I can imagine that with resource restraints you sometimes need to
be clever in order to get your program to fit. Of course, any such
cleverness needs extra documentation.
I only ever programmed in user space but even then without lots of comment
in my code I may already start wondering what I did after only a few months
past.
Cheers,
uncle rubl
--
The more I learn the better I understand I know nothing.
Wow, this brings back memories. When I was a kid I remember visiting
a guy who had a barn full of computers in or around Princeton, N.J.
There was a Burroughs 500, a PB 250, and a PDP-8. The 500 was a vacuum
tube and nixie display machine. That sucker used a lot of neon, and I
seem to remember that it used about $100 worth of electricity in 1960s
dollars just to warm it up. I think that the PB 250 was one of the
first machines built using transistors. I assume that all of you know
what a PDP-8 is. I remember using the PDP-8 using SNAP (simple numeric
arithmetic processor) to crank out my math homework. Note that the PB
250 also had SNAP, but in that case it was their assembler.
Some of the first serious programming that I did was later at BTL on
516-TSS using FSNAP (floating-point SNAP) written by Heinz. Maybe he
can fill us in on whether it was derived from SNAP.
Anyway, I could only visit the place occasionally because it was far
from home. Does anyone else out there know anything about it? It's a
vague memory brought back by the mention of the 250.
Jon
> From: Stuff Received
> I had always thought of a delay line as a precursor to a register (or
> stack) for storing intermediate results. Is this not an accurate way of
> thinking about it?
No, not at all.
First: delay lines were a memory _technology_ (one that was inherently
serial, not random-access). They preceded all others.
Second: registers used to have two aspects - one now gone (and maybe the
second too). The first was that the _technology_ used to implement them
(latches built out of tubes, then transistors) was faster than main memory -
a distinction now mostly gone, especially since caches blur the speed
distinction between today's main memory and registers. The second was that
registers, being smaller in numbers, could be named with a few bits, allowing
them to be named with a small share of the bits in an instruction. (This one
still remains, although instructions are now so long it's probably less
important.)
Some delay-line machines had two different delay line sizes (since size is
equivalent to average access time) - what one might consider 'registers' were
kept in the small ones, for fast access at all times, whereas main memory
used the longer ones.
Noel
> From: Bakul Shah
> one dealt with it by formatting the disk so that the logical blocks N &
> N+1 (from the OS PoV) were physically more than 1 sector apart. No
> clever coding needed!
An old hack. ('Nothing new', and all that.) DEC Rx01/02 floppies used the
same thing, circa 1976.
Noel
After my posting on Sat, 10 Dec 2022 17:42:14 -0700 about the recent
work on kermit 10.0, some readers asked why a serial line connection
and file transfer tool was still of interest, and a few others
responded with use cases.
Modern kermit has for several years supported ssh connections, and
Unicode, as well: here is a top-level command list:
% kermit
(~/) C-Kermit>? Command, one of the following:
add define hangup msleep resend telnet
answer delete HELP open return touch
apc dial if orientation rlogin trace
array directory increment output rmdir translate
ask disable input pause run transmit
askq do INTRO pdial screen type
assign echo kcd pipe script undeclare
associate edit learn print send undefine
back enable LICENSE pty server version
browse end lineout purge set void
bye evaluate log push shift wait
cd exit login pwd show where
change file logout quit space while
check finish lookup read ssh who
chmod for mail receive statistics write
clear ftp manual redial status xecho
close get message redirect stop xmessage
connect getc minput redo SUPPORT
convert getok mget reget suspend
copy goto mkdir remote switch
date grep mmove remove tail
decrement head msend rename take
or one of the tokens: ! # ( . ; : < @ ^ {
Here are the descriptions of connection and character set translations:
(~/) C-Kermit>help ssh
Syntax: SSH [ options ] <hostname> [ command ]
Makes an SSH connection using the external ssh program via the SET SSH
COMMAND string, which is "ssh -e none" by default. Options for the
external ssh program may be included. If the hostname is followed by a
command, the command is executed on the host instead of an interactive
shell.
(~/) C-Kermit>help connect
Syntax: CONNECT (or C, or CQ) [ switches ]
Connect to a remote computer via the serial communications device given in
the most recent SET LINE command, or to the network host named in the most
recent SET HOST command. Type the escape character followed by C to get
back to the C-Kermit prompt, or followed by ? for a list of CONNECT-mode
escape commands.
Include the /QUIETLY switch to suppress the informational message that
tells you how to escape back, etc. CQ is a synonym for CONNECT /QUIETLY.
Other switches include:
/TRIGGER:string
One or more strings to look for that will cause automatic return to
command mode. To specify one string, just put it right after the
colon, e.g. "/TRIGGER:Goodbye". If the string contains any spaces, you
must enclose it in braces, e.g. "/TRIGGER:{READY TO SEND...}". To
specify more than one trigger, use the following format:
/TRIGGER:{{string1}{string2}...{stringn}}
Upon return from CONNECT mode, the variable \v(trigger) is set to the
trigger string, if any, that was actually encountered. This value, like
all other CONNECT switches applies only to the CONNECT command with which
it is given, and overrides (temporarily) any global SET TERMINAL TRIGGER
string that might be in effect.
Your escape character is Ctrl-\ (ASCII 28, FS)
(~/) C-Kermit>help translate
Syntax: CONVERT file1 cs1 cs2 [ file2 ]
Synonym: TRANSLATE
Converts file1 from the character set cs1 into the character set cs2
and stores the result in file2. The character sets can be any of
C-Kermit's file character sets. If file2 is omitted, the translation
is displayed on the screen. An appropriate intermediate character-set
is chosen automatically, if necessary. Synonym: XLATE. Example:
CONVERT lasagna.txt latin1 utf8 lasagna-utf8.txt
Multiple files can be translated if file2 is a directory or device name,
rather than a filename, or if file2 is omitted.
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah -
- 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/ -
-------------------------------------------------------------------------------
Clem Cole mentions kermit in connection with the question raised about
the uses of the cu utility.
As an FYI, Kermit's author, Frank da Cruz, is preparing a final
release, version 10.0, and I've been working with him on testing
builds in numerous environments. There are frequent updates during
this work, and the latest snapshots can be found at
https://kermitproject.org/ftp/kermit/pretest/
The x-YYYYMMDD.* bundles do not contain a leading directory, so be
careful to unpack them in an empty directory. The build relies on a
lengthy makefile with platform-specific target names, like irix65,
linux, and solaris11: the leading comments in the makefile provide
further guidance.
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah -
- 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/ -
-------------------------------------------------------------------------------
Good day all, this may be COFF instead, but I'm not joined over there yet, might need some Warren help/approval.
In any case, received that 3B20S 4.1 manual in good shape, unpacked it, and out fell a little tri-fold titled "The Office Automation System (OAS) Editor-Formatter (ef) Reference Card" emblazoned with the usual Bell Laboratories, non-disclosure note abut the Bell System, and a nice little picture of a terminal I can't identify as well as the full manual for this OAS leaning against it: "The Office Automation System (OAS)" with a nice big Bell logo at the bottom of the spine.
The latter is likely a manual I spotted in a video once and couldn't make out the name/title at the time, thought I was seeing another long-lost UNIX manual. I've never heard of this before, and Google isn't turning up much as Office Automation System appears to be a general industry term.
I seem to recall hearing about ef itself once or twice, some sort of pre-vi screen editor from Bell methinks? Not super familiar with it though, I just seem to recall reading about that before somewhere.
Anywho, dealing with a move in the near future that is hopefully into a home I own, so pretty distracted from that scanning I keep talking about, but hopefully when I'm settled in in a few months I can setup a proper scan bench in my new place and really go to town on things.
- Matt G.
Exciting development in the process of finding lost documentation, just sealed this one on eBay: https://www.ebay.com/itm/385266550881?mkcid=16&mkevt=1&mkrid=711-127632-235…
After the link is a (now closed) auction for a Western Electric 3B20S UNIX User's Manual Release 4.1, something I thought I'd never see and wasn't sure actually exited: print manuals for 4.x.
Once received I'll be curious to see what differences are obvious between this and the 3.0 manual, and this should be easy to scan given the comb binding. What a nice cover too! I always expected if a 4.x manual of some kind popped up it would feature the falling blocks motif of the two starter package sets of technical reports, but the picture of a 3B20S is nice. How auspicious given the recent discussion on the 3B series. I'm particularly curious to see what makes it specifically a 3B20S manual, if that's referring to it only having commands relevant to that one or omitting any commands/info specific to DEC machines.
Either way, exciting times, this is one of those things that I had originally set out to even verify existed when I first started really studying the history of UNIX documentation, so it's vindicating to have found something floating around out there in the wild. Between this and the 4.0 docs we now should have a much clearer picture of that gulf between III and V.
More to come once I receive it!
- Matt G.
I finally got myself a decent scanner, and have scanned my most prized
relic from my summer at Bell Labs - Draft 1 of Kernighan and Ritchie's "The
C Programming Language".
It's early enough that there are no tables of contents or index; of
particular note is that "chapter 8" is a "C Reference Manual" by Dennis
dated May 1, 1977.
This dates from approx July 1977; it has my name on the cover and various
scribbles pointing out typos throughout.
Enjoy!
https://drive.google.com/drive/folders/1OvgKikM8vpZGxNzCjt4BM1ggBX0dlr-y?us…
p.s. I used a Fujitsu FI-8170 scanner, VueScan on Ubuntu, and pdftk-java
to merge front and back pages.