> From: Paul Ruizendaal
> Note that LSX only holds one process in core and swaps other processes
> (NPROC = 3) out to floppy. It reportedly took several hours for the
> Terak to self-compile LSX from source.
If one is working in a simulator, and not a real hardware PDP-11, there's a
'trick' one can use to make life a lot easier - for MINI-UNIX, at least; I'll
comment on LSX below.
As I report in the MINI-UNIX Computer History Wiki article: "MINI-UNIX uses
the same file system as V6; this allows MINI-UNIX packs to be 'mounted' on V6
systems (either real, or simulated), which is very convenient for working on
them." So just spin up a V6 in the simulator, mount the LSX/MINI-UNIX pack,
and away you go. The V6 toolchain can be used to compile/link kernels; to
link user commands one will need to import the LSX/MINI-UNIX loader (which,
since V6 is source compatible with LSX/MINI-UNIX, is trivial).
LSX is potentially more complex, as it supports _two different_ file system
formats: the standard V6 one, and a 'contiguous' one which is very similar
to the V6 one (rdwri.c has no conditionals on CONTIG; not so alloc.c,
though), but is not fully compatible. So non-contiguous LSX file systems
can be mounted under V6, but not contiguous ones.
Noel
Hi,
long time lurker here. Today I ended up on an article by Christian Lee Seibold about the origin of shells [1].
Coincidentally the article explained how the “rc” files came to be and why they’re called “rc”: everything started with RUNCOM and Multics. An excerpt from the article:
====
Unix Shells have had a very long history, and it all starts with a program written by Louis Pouzin for the MIT CTSS Operating System, called RUNCOM (which stood for “run commands”). It executed commands from a file, called “a runcom”. According to Kernighan and Ritchie[1], “rc” configuration files from Unix descended from this. Tom Van Vleck also gives origins of Unix’s use of “rc” to RUNCOM [2], and notes that the first time he read the term “shell” was from Multics documentation created by Doug Eastwood. According to Louis Pouzin, he coined the word “shell”.
====
Well, now I know…
[1] https://portal.mozz.us/gemini/auragem.space/~krixano/ShellHistory-Unix.pdf
— Michelangelo
I've not seen an earlier post of mine on this topic; apologies if this
is a duplicate. Roff was probably the earliest way to get a
line-numbered file listing. Of course it took a bit of chicanery to
apply it to a roff input file, but even that was not a big shell
script.
As has often been told, Joe Ossanna used to promise of line numbers
(required by USPTO) to attract the Bell Labs patent department as the
first Unix "customer".
Doug
> More was I curious about the documentation of address chains in books.
It was even discussed in Lomutu and Lomuto, "A Unix Primer", a pleasant
book whose level is accurately described in the title.
Doug
> From: Warner Losh
>> What's "net unix" anyway?
> I'm referring to the University of Illinois distribution
Ah, OK.
> I have seen references to it in the ARPAnet census documents running on
> both V6 and V7 (though mostly they were silent about which version).
Well, V7 came out in January, 1979, and NCP wasn't turned off until January,
1983, so people had a lot of time to get it running under V7.
> I thought this was the normal nomenclature of the time, but I may be
> mistaken.
I'm not sure what it was usually called; we didn't have much contact with it
at MIT (although I had the source; I'm the one that provided it to TUHS).
The problem was that although MIT had two IMPs, all the ports on them were
spoken for, for big time-sharing mainframes (4 PDP-10's running ITS; 1
running TWENEX; a Multics), so there were no ports available to plug in a
lowly PDP-11. (We were unable to get an IP gateway (router) onto the ARPANET
until MIT got some of the first C/30 IMPs.) So we had no use for the NCP Unix
(which I vaguely recall was described as 'the ARPANET Unix from UIll').
Noel
Apologies for being off-topic
> What did people with PDP-11 V7 who wanted TCP/IP do, anyway?
Taking it slightly broader (PDP-11 instead of V7), there is a lot of discussion about that on Mike Meuss’ TCP-digest mailing list:
https://ftp.ripe.net/rfc/museum/tcp-ip-digest/
There is a 1985 index of available implementations as well ( https://ftp.ripe.net/rfc/museum/tcp-ip-implementations.txt.1 ). It includes the following options for PDP-11 systems:
1.7.5. UNIX 2.9BSD
DESCRIPTION:
2.9BSD TCP/IP is an adaptation of Berkeley's original VAX
TCP/IP (running under BSD 4.1B UNIX) which in turn is an
offshoot of BBN's VAX TCP/IP. 2.9BSD TCP/IP runs on PDP-11/44s
and PDP-11/70s. The 2.8 version from SRI was adapted by Bill
Croft (formerly at SRI), then Tektronix adapted it for 2.9.
Berkeley took over modification of the software and brought it
back to SRI where Dan Chernikoff and Greg Satz adapted it for a
later release of 2.9. In addition to TCP/IP, UDP, ARP and the
raw packet interface is available. ICMP redirects are not
supported. User software implementations include Telnet and
FTP, plus Berkeley-developed local net protocols, RWHO, RSH,
RLOGIN, and RCP.
2.9BSD with TCP/IP support could probably be made to run on
smaller PDP-11s although the address space would be very tight
and might present problems.
1.7.6. Venix/11 TCP/IP
DESCRIPTION:
This is based on the "PDP-11/45" implementation available
from the MIT Laboratory for Computer Science. It has been
ported to a V7 UNIX system, in particular VenturCom's Venix/11
V2.0.
As little of the processing as possible takes place in the
kernel, to minimize the code space required. It fits
comfortably on I&D machines, but is almost hopeless on the
smaller machines. The kernel includes a proNET device driver,
IP fragment reassembly, IP header processing, local-net header
processing, and simple routing. The rest of the IP processing,
and all of the UDP and TCP functions, are in user libraries.
The psuedo-teletype driver is also in the kernel, and is used by
Server TELNET.
User programs handle ICMP processing; User and Server TELNET,
SMTP, TFTP, Finger, and Discard. There are User programs for
Nicname and Hostname. IEN-116 nameservers are used by all
programs, and an IEN-116 nameserver is also provided. The TCP
used is very simple, not very fast, and lies about windows. No
FTP is available, nor is one currently planned.
1.7.8. BBN-V6-UNIX
DESCRIPTION:
This TCP/IP/ICMP implementation runs as a user process in
version 6 UNIX, with modifications obtained from BBN for network
access. IP reassembles fragments into datagrams, but has no
separate IP user interface. TCP supports user and server
Telnet, echo, discard, internet SMTP mail, and FTP. ICMP
generates replies to Echo Requests, and sends Source-Quench when
reassembly buffers are full.
1. Hardware - PDP-11/70 and PDP-11/45 running UNIX version
6, with BBN IPC additions.
2. Software - written in C, requiring 25K instruction space,
20K data space. Supports 10 connections (including
"listeners").
3. Unimplemented protocol features:
- TCP - Discards out-of-order segments.
- IP - Does not handle some options and ICMP messages.
1.7.9. v 3COM-UNET
DESCRIPTION:
UNET is a communication software package which enables UNIX
systems to communicate using TCP/IP protocols. UNET will
utilize any physical communications media, from low speed links
such as twisted pair RS-232C to high speed coaxial links such as
Ethernet. All layers of the UNET package are directly available
to the user. The highest layer provides user programs
implementing ARPA standard File Transfer Protocol (UFTP),
Virtual Terminal Protocol (UVTP), and Mail Transfer Protocols
(UMTP). These programs in turn utilize the virtual circuit
services of the TCP. The TCP protocol is implemented on top of
the IP. Finally, IP can simultaneously interface to multiple
local networks. UNET implements 5 of the 7 layers of the
International Standards Organization Open Systems
Interconnection Reference Model, layers 2 through 6: Link,
Network, Transport, Session, and Presentation. Features of TCP
6 not yet implemented are Precedence and Security,
End-of-Letter, and Urgent. Feature of IP 4 not yet implemented
is Options.
Of these, we have 2.9BSD and (a forerunner of) BBN-V6-Unix available on the TUHS Unix Tree. The Venix/11 source and the 3COM source appear lost. These (unfortunately) are the ones that were implemented on top of V7.
Also, BBN back-ported the TCP/IP code of BBN VAX-TCP to V7 for their C/70 Unix.
> Regarding select, I recall that Dennis implemented it and passed it to
> Berkeley*, but maybe not. He certainly had a hand in its design; I
> distinctly remember talking to him about it after one of his trips out
> west.
That is an interesting comment. DMR was on the steering committee for what would become 4.2BSD.
I once spoke with Kirk McKusick about the origins of the sockets API and I think he told me that there was a lot of debate in the committee whether descriptor readiness API should be stateful (like Haverty’s await() https://www.tuhs.org/cgi-bin/utree.pl?file=BBN-V6/ken/awaitr.c ) or stateless (like select). According to Sam Leffler (who I think added select() to 4.1c BSD) the select system call was somewhat modelled after the ADA select statement.
I am speculating now, but I would not be surprised if dmr favoured the stateless design and contributed to its design.
Paul
> From: Warner Losh
> V7 could mean a modification of net unix
What's "net unix" anyway? I know of the Net releases from CSRG, but this
much precedes that.
What did people with PDP-11 V7 who wanted TCP/IP do, anyway?
Noel