https://www.ebay.com/str/Zees-Fine-Finds
A few old DEC boards/modules.
I don't think there's anything PDP-11 related, but figured someone on
this mailing list might find something interesting.
art k.
> The journey is documented here:
> http://1587660.websites.xs4all.nl/cgi-bin/9995/timeline
>
> The network code is in a different tree, I'll move it over to the above tree over the weekend.
Posted the network bit in the online repo; it's in the v6net directory.
Also fixed the instability - it is quite satisfying to login to v6 from a 'nc' client on modern hardware.
However, I also found that the BBN code from November 1981 is what is says on the can: beta.
I'll move to the October 1982 code when I find some time.
Paul
PS, this is the 'server' that nc connects to:
#define unchar unsigned char
#define netaddr unsigned long
#include "con.h"
#include <stdio.h>
#include <string.h>
unsigned long
ipaddr(w,x,y,z)
int w,x,y,z;
{
unsigned long ip;
ip = w;
ip = (ip<<8)|x;
ip = (ip<<8)|y;
ip = (ip<<8)|z;
return ip;
}
struct con con;
void
child(fd)
int fd;
{
close(0);
dup(fd);
close(1);
dup(fd);
close(2);
dup(fd);
close(fd);
execl("/bin/sh", "[net-sh]", 0);
}
main()
{
int i, n, sd;
con.c_mode = CONTCP;
con.c_fcon = ipaddr(192,168,1,114);
con.c_lcon = ipaddr(172,16,0,2);
con.c_fport = 0;
con.c_lport = 4000;
sd = open("/net", &con);
printf("Connected\n", sd);
child(sd);
close(sd);
}
Hi all,
A Reddit user is asking about Space Traveller:
>I am an OpenBSD user and am interested in finding the original source code for Ken Thompson's Space Traveller. I have been searching the web for sometime now, but have sadly come up empty handed. Does anyone here by chance know where I could find a copy of it's source code? I am wanting to port it over to OpenBSD as a thank you to it's helpful and welcoming community.
> > 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).
I think my sentence was confusing: it is ~25KB each, so about 50KB combined.
The original V6 kernel was about 29KB (says here https://www.tuhs.org//cgi-bin/utree.pl?file=V6) I've simplified the TTY driver, only support one type of disk driver, dropped shared text segments, dropped FP emulation. Remains about 25KB. Note that the SLIP is merely via a "super RAW" mode on the TTY driver, so I don't need to include the bulky IMP interface driver. Even at 30KB, the V6 kernel must have offered the best bang/buck ratio in the history of software, imho.
> > The Gurwitz code also has an Ethernet driver (note ARP was not invented
> > yet)
>
> How did it get Ethernet addresses?
:^) See here: https://www.tuhs.org//cgi-bin/utree.pl?file=BBN-Vax-TCP/bbnnet/netconf.c
"Someday this will be generated from the configuration file." I think later it did, but I don't have that code.
> > a project to make V6 run ... on a TI990 clone
>
> Oh, about the basic part of this: did you start with a plain V6 distribution?
> So you've had to do all the machine language stuff from scratch (and modify
> things in C like estabur())?
> What are you using for a C compiler ? Is there one out there, or did you have
> to do your own?
I has been a journey. I started with the 2.11BSD compiler and ported that to the TI990 architecture (more precisely the 9995 chip, which is similar to a T11 chip).
I debugged that to make XINU run, and then moved on to LSX (as recovered by the BK-UNIX project). Then I started with the V6 kernel from the TUHS website and made that work. Dave Pitts made it work on a real TI990 (he has a TI990/10 and a TI990/12 in working order). So, yes, I did bootstrap all the low level stuff from scratch.
After a three year hiatus I resumed work on this, integrating the Gurwitz TCP stack.
The journey is documented here:
http://1587660.websites.xs4all.nl/cgi-bin/9995/timeline
The network code is in a different tree, I'll move it over to the above tree over the weekend.
Paul
> From: Paul Ruizendaal
> a project to make V6 run ... on a TI990 clone
Oh, about the basic part of this: did you start with a plain V6 distribution?
So you've had to do all the machine language stuff from scratch (and modify
things in C like estabur())?
What are you using for a C compiler ? Is there one out there, or did you have
to do your own?
> In my setup, network connectivity is via a SLIP interface.
Yeah, that's probably the way to go, to start with.
Noel
> 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.