> From: Paul Ruizendaal
> project to make V6 run with the Gurwitz TCP stack on a TI990 clone
> (which is pretty similar to a PDP11).
Neat!
> the code size is about 25KB for both a minimal V6 kernel and the TCP
> stack, the rest is data.
That's impressively small; the MIT V6+ with 'demux only in the kernel' was
40KB for the combined code (although I can't easily get separate figures for
the networking part and the rest).
> The Gurwitz code also has an Ethernet driver (note ARP was not invented
> yet)
How did it get Ethernet addresses?
Noel
> I'm sure it's been attempted before, but would anyone be up to the
> challenge of trying to get that going with networking on an
> 18-bit-address-space pdp11?
By coincidence I’m in the middle of a project to make V6 run with the Gurwitz TCP stack on a TI990 clone (which is pretty similar to a PDP11). It runs without separate I/D as two processes in about 100KB.
The Gurwitz TCP stack was the reference implementation for the VAX that BBN did in 1981. It is in the THUS archive:
https://minnie.tuhs.org//cgi-bin/utree.pl?file=BBN-Vax-TCP
As documented in IEN168, the actual TCP processing happens in a separate kernel process, much like process 0 (swapper) in Unix itself. It turns out that the network process shares no data (other than the u struct) with the kernel proper and can be run in a separate address space. Just a few ’thunks’ are needed: open/read/write/close from the kernel to the TCP stack and sleep/wakeup in the other direction.
A V6 Unix kernel runs in 48KB with buffers, the TCP stack with buffers needs about the same; both must remain resident - i.e. it ties up about 100KB of the 256KB core on a 18-bit machine. I suppose when using separate I/D it can run without thunks: the code size is about 25KB for both a minimal V6 kernel and the TCP stack, the rest is data.
In my setup, network connectivity is via a SLIP interface. The Gurwitz code also has an Ethernet driver (note ARP was not invented yet), but I’m not using that. I’m happy to report that this 1981 tcp/ip code can still talk to current OSX and Linux machines.
Just yesterday I got the setup working and I can run minimalist telnet connections etc. Alas it is not quite stable yet, it tends to crash after 5-10 minutes of use.
The BBN reference implementation includes FTP and Telnet servers and clients which I think will still interoperate with current versions. As a final remark note that this BBN code uses an API that is almost unchanged from the API as used on NCP Unix. As compared to sockets this means that a listening connection is not a rendez-vous, but blocks until a connection is made (and then becomes an active connection, i.e. stops listening), and that there is no “select” type functionality.
PS:
> IIRC, outbound packets are copied into kernel buffers
IDRC; according to the documentation, outbound packets are DMA'd directly from
user memory. I have yet to read the code to verify this.
> we must have added PTY's of some sort
There is indeed a PTY driver; it has comments from BBN'ers who edited it, so
perhaps we got it from BBN.
> I don't remember which one SMTP used.
The 'simple' TCP.
> The whole thing worked _really_ well. Alas, I don't think anyone else
> picked up on it.
So I found a long list of people we sent tapes to. Oh well....
> The kernel code is not that large, it should even run on a /40, without
> overlays (although the number of disk buffers would probably get hit).
Well, maybe... Here is the output of 'size' on the last Unix image for that
machine:
40560+3098+44594
It was a /45, so split I/D (no overlays, though). How much could be trimmed
out of that, I'm not sure.
Noel
Hi,
I have an 11/45 I'm hoping will be running soon.
I'd like to run 2.9BSD on it because it's the most highly functional system
I know of that has "official hopes" to fit on such a restrictive machine.
I've heard that it's really unlikely / tough to get a kernel built that'll
run tcp (I care mostly about ftp and telnet) on such a
small-memory-footprint machine. Is this true?
Would anyone be willing to do a quick mentoring / working session with me
to get me up to speed with the constraints I'm facing here and possibly
give me a jump on making adjustments to build such a kernel if possible?
thx
jake
P.S. There's kind of an implied challenge in the 2.11bsd setup docs,
mentioning that "2.11BSD would probably only require a moderate amount of
squeezing to fit on machines with less memory, but it would also be very
unhappy about the prospect."
I'm sure it's been attempted before, but would anyone be up to the
challenge of trying to get that going with networking on an
18-bit-address-space pdp11?
> From: Clem Cole <clemc(a)ccc.com>
> This is why I suggested that if you really want telnet and ftp to the
> PDP-11, you might be better off moving the networking stack out of the
> kernel
Really, the answer is that I need to get off my @ss and put the MIT V6+ system
up (I have all the files, just need to get a round tuit).
It has TCP/IP, but is it not all crammed into the kernel. And unlike the early
BBN V6, it doesn't do TCP as a single process to which all the other
client/server processes talk via IPC.
Instead, the only thing in the kernel is inbound demuxing, and minimal outbound
processing. (IIRC, outbound packets are copied into kernel buffers; an earlier
version of the networking interface driver actually did do inbound and outbound
DMA directly from buffers in the user's process, but only one process could use
the network interface at a time.)
The TCP code was a library that was built into the user process which did the
server/client applications. (The servers which supported login, like FTP,
needed to run as root, like the ordinary login, setuid'ing to the entered
user-id.) I don't remember if we supported server Telnet, but I think we
did. So we must have added PTY's of some sort, I'll have to check.
Since the TCP was in the user process, we actually had a couple of different
ones, depending on the application. Dave Clark had done a quick-n-dirty TCP on
the Alto (in BCPL) which was only good for things like user Telnet, not for
applications that sent a lot of data. We ported that one for the first TCP; we
later did a 'high-speed bulk data' TCP, used for FTP, etc. I don't remember
which one SMTP used.
The whole thing worked _really_ well. Alas, I don't think anyone else picked
up on it.
The kernel code is not that large, it should even run on a /40, without
overlays (although the number of disk buffers would probably get hit). And
since the TCP is in user processes, it could all get swapped out, so it would
run OK on machines without that much physical memory.
The issue is going to be that it will need a new network interface driver,
since I think the only driver ever done for it was for Pronet. And now we get
back to the 'what interfaces are available' question. Doing a DEC driver would
allow use of DEQNA's and DELQA's on QBUS machines, which would be optimal,
since they are common. And people could bring up Unix with TCP/IP on -11/23's.
But we'd have to add ARP (which I would do as a process, with only the
IP->Ether address mapping table stored in the kernel). I wrote a really nice
ARP for the C Gateway that could easily be used for that.
Noel
> From: Warner Losh
> I kinda doubt it has good NCP support: it was released in November of
> 1983.
Wow, that far back? I'd assumed it was later (considerably later).
Looking at the 2.9 networking stuff:
https://minnie.tuhs.org//cgi-bin/utree.pl?file=2.9BSD/usr/net/sys/net
it does indeed have _no_ NCP support.
> I'd get it running in simh, then move to real hardware.
Absolutely; running in an emulator is, I have found, a key step on getting an old
OS running. I've found Ersatz-11 to be really good for PDP-11 emulation.
> It's going to take a lot of elbow grease to make that work, I think.
Indeed; part of the problem, if the goal is going to be 'run it on real
hardware' is 'what network interface to use'.
All the ARPANET interfaces are out. There are drivers there for Proteon,
Ungermann-Bass, Xerox 3MB Ethernet, etc interfaces, but i) where you gonna
find one, and ii) you'll need a router to connect up to most other things.
There's a driver for the Interlan Ethernet interface, but AFAIK, those are
non-existent. (If anyone has one they're willing to part with, please let me
know!)
DEC Ethernet interfaces are available, but i) only the QBUS ones are common,
DEUNAs and DELUAs are almost impossible to find, that I've even seen, and ii)
it would need a driver.
> Ultrix-11 is of similar vintage, and similar functionality and does boot
> on the 18-bit 11's.
Yes, definitely worth looking at; I know it had TCP/IP (we had it on our
-11/73 at Proteon), but I don't know which interfaces it supported; probably
just the DEC ones (which, given the above, is not necessarily a Bad Thing).
Noel
> From: Grant Taylor
> What protocols did 2.9BSD support? Did it have NCP?
NCP was turned off on 1 January, 1983. What do you think?a
> Would it be any easier to use an external NCP to TCP/IP gateway?
Such as?
Noel
Augusta Ada King-Noel, Countess of Lovelace (and daughter of Lord Byron),
was born on this day in 1815; arguably the world's first computer
programmer and a highly independent woman, she saw the potential in
Charles Babbage's new-fangled invention.
J.F.Ossanna was given unto us on this day in 1928; a prolific programmer,
he not only had a hand in developing Unix but also gave us the ROFF
series.
Who'ld've thought that two computer greats would share the same birthday?
-- Dave
We gained Rear Admiral Grace Hopper on this day in 1906; known as "Amazing
Grace", she was a remarkable woman, both in computers and the Navy. She
coined the term "debugging" when she extracted a moth from a set of relay
contacts from a computer (the Harvard Mk I) and wrote "computer debugged"
in the log, taping the deceased Lepidoptera in there as well. She was
convinced that computers could be programmed in an English-like language
and developed Flow-Matic, which in turn became, err, COBOL... She was
posthumously awarded the Presidential Medal of Freedom in 2016 by Barack
Obama.
-- Dave
Very little in language design is so contentious as comment conventions.
C borrowed the PL/I convention, which had the virtue of being useful
for both in-line and interlinear comments, and did not necessitate
marking every line of a long comment. Nobody in the Unix lab had
had much experience with the convention, despite having worked on
Multics for which PL/I was the implementation language.
And how did PL/I get the convention? It was proposed by Paul
Rogoway at the first NPL (as it was then called) design-committee
meeting that I attended. Apparently the topic had been debated
for some while before and people were tired of the subject. Paul
was more firmly committed to his new idea than others were to
old options, so it carried more or less by default. Besides, there
was a much more interesting topic on the agenda. Between the
previous meeting and that one, George Radin had revamped the
entire NPL proposal from mainly Fortran-like syntax to Algol-like.
That was heady enough stuff to divert people's attention from
comments.
As for inexperiece. The comment conventions of previous
languages had not fostered the practice of commenting out
code. So that idea, which is the main impetus for nesting
comments, was not in anybody's mind at the time. Had it
been, nesting might well have carried the day. It probably could
have been changed before 1980, but thereafter there were
too many C compilers. Then standards introduced even more
conservatism. Perhaps Ken can remember whether the notion
was ever seriously considered.
Doug
Another DEC compiler that I forgot was the original C compiler for
Tru64 Unix on the Alpha. This was done at the DECwest facility in
Seattle (which originally had been set up by Dave Cutler). It was a
very strict implementation of the ANSI C89 standard--it had no
extensions such as K&R support. One customer called it the "Rush
Limbaugh of C compilers" because it was extremely conservative and you
couldn't argue with it.
-Paul W.
Hi all,
I haven't seen this on the list yet (apologies if I missed it):
https://unix50.org/
You can get a shell in various historical version of UNIX.
Enjoy !
> Why can't c language comments be nested?
For comments that really are comments, what would be the point?
For comments that are really removal of code - commenting out - there
is a better mechanism, #if (or #ifdef), which does nest.
-- Richard
--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
> So how was it that so many smart - and somewhat like minded it seems
> people end up there? [At Bell Labs]
1. Bell Labs had a great reputation, though it was not at first known
for computing.
2. Research recruiters were researchers themselves, not HR people.
3. Recruiting was for quality hires, not for particular jobs;
complementary talent was valued.
4. Whom a candidate met on site was determined after s/he gave a seminar;
this promoted good matchups.
5. Researchers decided for themselves what to work on--either self-
generated or an interesting problem from elsewhere in the company.
6. If you needed to know something in most any field, you could usually
find a willing expert to get you on track to an answer.
7. Annual merit review was collegial. No one lost out because of unlucky
draw of a supervisor.
8. Collegiality in fact beat that of any faculty I know. Office doors
were always open; new arrivals needed only to do good work, not to
chase tenure.
This culture grew from the grand original idea of the Labs: R&D for
the whole of AT&T funded by the whole of AT&T, with a long time horizon.
I joined thinking the Labs was good seasoning for academia. The culture
held me for 39 years.
The premise was viable in the days of regulated monopoly. It has been
greatly watered down since.
Doug
Ken's story got me thinking about stuff I would still like to learn
and his comment about "when I got to Bell Labs"... made me wonder
how did Ken, Dennis, Brian, Joe and the rest of the crew make their
way to Bell Labs?
When I was just starting out, Sun was sort of the Bell Labs of the
time (not that Sun was the same as Bell Labs but it was sort of
the center of the Unix universe in my mind). So I wanted to go
there and had to work at it a bit but I got there.
Was Bell Labs in the 60's like that? If you were a geek was that
the place to go? I was born in '62 so I don't have any memory of
how well known the Labs were back then.
So how was it that so many smart - and somewhat like minded it seems -
people end up there?
--lm
> From: Toby Thain
> He made amends by being early to recognise that problem, and propose
> solutions, in his 1977 ACM Turing Award lecture
Actually, I'd consider a far bigger amend to be his work on Algol 60 (he was
one of the main contributors), which Hoare so memorably described as "a
language so far ahead of its time that it was not only an improvement on its
predecessors but also on nearly all its successors".
AFAICT, although Algol 60 itself is no longer used, basically _every_ modern
programming language (other than wierd, parallel ones, etc) is heavily
descended from Algol 60 (e.g. C, via CPL).
As for FORTRAN, it's worth recalling that it was originally for the IBM 704,
which was their very _first_ commercial computer with core memory! And not a
lot of it - early 704's came with a massive 4KW of main memory! So the
compiler had to be squeezed into _very_ small space - and it reportedly did an
excellent job of emitting efficient code (at a time when a lot of people
thought that couldn't be done, and so were hostile to the concept of writing
program in HLL). And the compiler had to be written entirely in assembler, to
boot...
Which brings up an interesting query - I wonder when/what the last compiler
written in assembler was? I gather these days compilers for new machines are
always bootstrapped as cross-compilers (an X compiler for the Y machine is
written in X, run through the X compiler for the [existing] Z machine, and
then run though itself, on the Z machine, to produce binary of itself for the
Y machine).
Noel
> On Dec 4, 2018, Greg 'groggy' Lehey <grog(a)lemis.com> wrote:
>
> The original Tandem OS (called Guardian at the time) was written in Tandem's TAL (Transaction Application Language, amongst other productions), a vague evolution of HP's SPL that looked more like Algol, starting in about 1974. That is also the earliest I know of an operating system being implemented entirely in a high level language.
Most likely the earliest operating system written in a high-level language was the one for the Burroughs B5000 (early 1960s), written in a dialect of Algol 60. Others: Multics, written in PL/1 (starting in mid 1960s), the operating system for the Berkeley Computer Corporation’s BCC-500, written in BCC SPL (system programming language) (late 1960s), OS6 by Stoy and Strachey, written in BCPL (early 1970s), Xerox Alto OS, written in BCPL (about 1974).
The ARPAnet reached four nodes on this day in 1969 (anyone know their
names?); at least one "history" site reckoned the third node was connected
in 1977 (and I'm still waiting for a reply to my correction). Well, I can
believe that perhaps there were only three left by then...
Hmmm... According to my notes, the nodes were UCSB, UCLA, SRI, and Utah.
-- Dave
We lost Dr. John Lions of this day in 1998; he was one of my Comp Sci
lecturers (yes, I helped him write The Book, and yes, you'll find my name
in the back).
-- Dave
As every computer programmer should know, John Backus was emitted in 1924;
he gave us the BNF syntax (he is the "B"), but he also gave us that
FORTRAN obscenity... Yeah, it was a nice language at the time; the
engineers loved it, but tthe computer scientists hated it (have you ever
tried to debug a FORTRAN program that somebody else wrote?).
Trivia: there is no way that FORTRAN can be described in any syntax; it is
completely ad-hoc.
-- Dave
I did just that. The National Bureau of Standards picked it up
in NBS Handbook 131, "Using ANS FORTRAN" (1980). It is expressed
in the same formalism that Burroughs used for Algol.
Doug
Thhis is a cross-posting from the groff mailing list, where
it was speculated that without roff there might be no Unix.
Old hands will be familiar with the story.
> Without roff, Unix might well have disappeared.
The patent department and the AT&T president's office are the
only in-house examples I know where Unix was adopted because
of *roff.
The important adoptions, which led Berk Tague to found
a separate Unix Support Group, were mainstream telephone
applications and PWB, a Unix-based IDE.
The first telephone application happened in the field. An
engineer in Charlotte, NC, heard of this cheap easily programmed
system and proposed to use it to automate the scheduling and
dispatch of maintenance on the floor of a wire center. Ken
visited to help get them started.
The first Bell Labs telephone application was automating
the analysis of central-office trouble reports. These had
been voluminous stacks of punched cards that reported every
anomaly detected in huge electromechanical switches. The Unix
application captured the data on line and identfied systematic
failures in real time.
The patent adoption was a direct result of Joe Ossanna's
salesmaship. Other early adopters were self-motivated,
but the generous support lent by Ken, Joe, and others was
certainly a tipping force that helped turn isolated events
into a self-sustaining movement.
Doug