On 1/21/22 9:00 AM, Clem Cole wrote:
I get the feeling, reading old documentation, that unix
systems did something similar to copy files around and to
send mail from one system to another.
It is
called UUCP [UNIX to UNIX Copy Protocol] and the USENET
was created to exploit it. The docs describing it are
part of Seventh Edition in /usr/doc.
BTW: later
implementations of UNIX could do IP over serial lines also
... IIRC Scott Braden or one of his minions wrote the
first version for the Berkeley IP stack in the mid-1980s.
Interesting. I've done IP over my mains - slow, but it worked.
What I haven't quite figured out is how to get
instances to talk to each other. I figure I can probably
use ethernet/tcp/ip with 211bsd and talk between those
instances, but in my current view, that's cheating. In the
real world, I'm guessing that folks had their pdp-11's
sitting in a lab and those pdp-11's (or vaxes, etc) had
devices (DCI is apparently ancient, so DZ's maybe)
As I have
said before, the prefered interface for UNIX systems back
in the day for both PDP-11s and Vaxen, particularly when
running UUCP was the DH11 - although we used the
implementation from Able Computer called the DMAX or DHDM
- because it was much smaller and less expensive. The
prefered modem for UUCP was a Telebit Trailblazer [which
had the UUCP G protocol built in]. Note that the
Able version of the DH could support 56K - I'm not sure
the original DEC could go that fast [I never tried it on
the few real DH11s I had access]. DZs and DLs and DC were
two slow, lacked buffering and tended to drop characters
at speeds over 120 cps.
Somebody oughta add DH support to SIMH :), but then I'd be needing a
virtual Trailblazer / Courier / DN-11 / WE212 and autodialer (and
phone system) to sit between them?
They would dial up a remote location and the reverse
would be the case (wall to modem to dz to pdp-11)?
Correct
except it was traditionally a DH port and Telebit not a DZ
or a Hayes. BTW: the v7 code, need a DN11 to do the
dialing for the phone line and assumes a WE212 modem and
their associated autodialer for the modem rack [see the
docs]. Remember that Hayes style 'in-band dialing did not
yet exist when UUCP was written in the mid'70s and when
those unit did appear on the general market in the late
1970s, were considered was a bit of an anathema to the
AT&T BTL/WE folks.
Also,
by the late 1990s [after cheap Broadband Internet was
available] and use of UUCP fell off, many of us replaced
the Telebit's with Couriers [I still have two] which did
not have the g protocol, but could do 56K with regular
dial in.
At the same time, maybe the wires from the DCI/DZ on
one pdp-11 could be attached directly to another pdp-11 on
the other side of the lab.
Yes - this is
also how the BerkNET code works - which you will see in
later versions of the BSD distributions. I will say, we
did run a few BerkNET lines to DZ ports on some of the
smaller PDP-11s at UCB. But again most of the larger
systems and Vaxen were DH11s.
I saw berknet in 4.2bsd, when I fired it up, interesting. Added to
the list of never heard of it, but may need it later items.
Anyhow, here we are in SimH land. I can pretty much
configure any device simh supports. Can I get two
instances talking over these virtual DCI/DZ lines and if
so, how? and once they're magically connected, how do I
start a conversation on one to the other? If I'm on A and
want to talk to B (in the same room, so to speak) how do I
dial up B and talk, copy a file, etc? telnet, rsh, rcp,
uucp, mail, what's possible and what was common?
Please read
the UUCP documentation included in V7 and/or find the
O'Reilly 'UUCP In a Nutshell' book from '85 [it's quite
possible Tim wrote the original version, maybe someone
like Cindy Lamb - I forget and my copy is in storage right
now. FYI: I was one of the original reviewers].
The short
form is: A DH11 port on each system is connected via fully
pinned NULL modem. System B leaves a getty/login on the
associated dedicated port on it's side [but System A does
not have a login]. When system A wants to send data to B,
it has been configured so that a specific tty on it's own
system is the direct connection to B. The UNIX uucico(8)
program will open the tty, and the login from system B
will appear to System A. What is now called the
expect(1) protocol will run [the program expect(1) was
written being modeled from the original code in uucico].
System A will login as the uucp user to System B, and both
will start running the uucico with the g protocol after
configuring the line on each end to 8b no parity, 'raw
mode' with calls to ioctl(2) on each system [the g is for
the late Greg Chesson's protocol - BTW]. Files will
then be exchanged. Finally System A will log out of system
B, which will put a new getty/login on its line go back to
awaiting for System A to try again.
This sounds promising. I'll dig up the documentation and proceed
with hooking up the connectors via simh for a test spin.
Unless
there are two dedicated lines [i.e. system A has a
getty/login awaiting] system B is 'passive' and queues up
all data until system A polls it.
I'm comfortable with and willing to fire up and modify
v6, v7, 211, 4.2, att3b2 svr2.0.5, etc. I also already
know how to enable and configure the lines in simh as I
mentioned above, it's the talking to each other that's
been the challenge. I can use my host to login over telnet
to these systems without issue.
RTFM 🤔
Really this is well documented -- start with the V7 docs.
I do think that the ORA book was the best, but most UNIX
System Admin books from the day describe the set up process
also.
Clem
Oh yeah, RTFM :), totally. I am definitely going that route in
tandem with asking the question. But here's a take on background (a
little bit stream of consciousness, beware)...
I've got Nemeth's Unix System Administration Handbook out my table
and the manpages pulled up in my virtual 4.2BSD on Microvax 3900...
BTW, I really appreciate the information you and Johnny have shared
on this topic. Things are definitely becoming clearer. Nemeth has a
lot of detail, maybe too much for my pea brain.
Here's the thing... If I had my Microvax sitting here with manuals
arrayed around me, and some inkling of what the various connectors
were meant to connect to, it'd probably be patently obvious what the
limitations were - on the wall, I have an rj11 jack, a coax
connection, and 110 power connections. On my various laptops and
desktops, I've got USB-c, USB-a, 9-pin serial, parallel ports, DVI,
etc. I'd look on the back of the microvax and see what "could" be
connected and I could try connecting them, looking online for the
gaps in the manual, for adapters, and so on. Interestingly, I could
open the vax and observe if there were any addons - cards or modules
or what-nots (my macpro is built kinda like that with CPU modules
and Graphic cards and such, as is my dell 755). I could go on ebay
and order up devices that would do what I thought I wanted to do and
I could then look up the modules in the manuals and learn more about
them. I would still be limited to what connectors the machine had
exposed, at the end of the day, but I'd be able to see and touch
them, physically.
In the virtual world, there's some semblance of analogy, sure. The
SIMH PDP-11/Vax/Vax780 handbooks kind of explain what's in the box,
well they pretty much do explain, but, and it's a big but, the
combinations of what can go in the box are nearly inexhaustible and
can be 'realized' instantaneously without materially affecting the
appearance of the box. A simple addition of an enable command can
add 48, invisible to the naked eye, connection ports. I think where
I struggle the most is that, while in your minds eye, you can
actually envision what was actually connected to what, how they were
connected, and how they were accessed, I cannot. I have to rely on
hypothetical models based on legends of how they used to work and
then try to recreate the model on my trusty SIMH. When it's
something local to the machine, this has a typical learning curve,
which thankfully, has a direct analog in the modern world - how do I
add a new NVMe PCIe M.2 ssd to my supposedly non-user upgradable
mac. Read up, buy the ssd and an NGFF M.2 nVME SSD Adapter, plug
stuff in, make the necessary configuration changes, et voiala, it
works... or not. So, you say, add a DH (hypothetically), I pull up
the SIMH PDP-11 manuals, find no reference to a DH device in my
handbook and start looking for somebody who got it working... no
luck, cuz, as you later tell me, it's not supported on my brand of
simulated hardware. Next up DZ, or whatever. Same trick. Sure
enough, my pdp11 supports DZ, as does unix, kind of, after a bit of
tweakage, it's talking via telnet with a few oddities, but working
(reminds me of the Cukoo's Egg, so I'll take it). So, that gets me
thinking about maybe, just maybe having one hosted unix talk to
another (not over TCP/IP cuz with the later OS's, even running on
SIMH, that's too easy), but over something more primitive... and
that's what brought me here today.
When I say, something more primitive, it may not be super clear that
I only have a vague idea myself of what that means and it gets
fuzzier and fuzzier as it gets closer and closer to the 1970's. I
really appreciate the detailed answers y'all give... I don't
understand it all as it applies to the simulated world, but I do
learn, incrementally and eventually.
What I keep hoping is that somebody says - oh yeah, I run a couple
of simulated vax 3900's at home and I use BSD 4.2 (what I'm
currently playing with), or V7, or SysVr2, and they talk to each
other like they did back in the day using uucp over serial (see
nemeth for details on how that works) but in a nutshell, you need to
add a DZ and however many lines you think you'll need to your
vax'es. You also need to hook up the serial cables (null modem
between, no special pinouts). Then follow nemeth (or whatever
manual) to configure the two endpoints. I use uucico and uusend and
it works great. Or, and this harks back to my fuzzy idea of more
primitive, maybe uucp wasn't really the bomb back in the day, even
though it's mentioned EVERYWHERE... oh, yeah, dude, just set up the
serial-null modem-serial contraption like you already know how to
do, and then the DZ's like we talked about, but kermit (vX.Y will
build fine) works better for sending and receiving, and for remote
login, you should be able to rsh in or telnet direct over serial (I
wish). It's hard for me to guess what primitive means relative to
the cushy ssh over tcp/ip world of today... other than through
reading and asking for help from oldtimers who lived it. Sadly, sort
of - everybody who lived this reality and are part of the active
online world, tend to be heavy-weight hitters and know WAY more
about EVERYTHING, hardware, software, os, and so on than your
average programmer/retro enthusiast Joe (that's me) who likes to
tinker and make things work that other folks though were dead.
I'm thinking we need a sim-retro-unix-enthusiast club for newbs.
TUHS is more for reminiscing, SIMH is for hardcore simulation nerds,
pidp11 is really for pidp11 users :), pdp11, retrocomp, and so on,
are for people with real hardware. There's really nowhere, that I
know of, where hobby sim unix users congregate, or is it that too
niche, even in a world of 7 billion?
Anyway, off to trying the simh pdp-11's (running v7) with DZ's
enabled and connected to the serial ports exposed by my
usb-serial-null modem-serial-usb contraption hooked up to the two
usb ports on my mac to see if I can configure and run uucb so I can
maybe:
mail -v ruby!joe
on emerald, and:
mail -v emerald!will
on ruby...
Wish me luck!
Will