Greetings,
I'm trying to find the predecessor to "Writing a UNIX Device Driver, J.
Egan & T. Teixeira, 1st ed, 1988". In the preface, it says:
"This book is based on a MASSCOMP manual, Guide to Writing a Unix Device
Driver. The first version that MASSCOMP published as part of the
documentation set for the MC-500 was based on preliminary drafts prepared
for MASSCOMP by Cliff Cary and Tom Albough of Creare R&D."
I checked bit keepers and found nothing.
I was wondering if people on this list know of this manual, have a copy,
etc. In general, I'm looking for pre-SysV driver manuals. I can find all
kinds of SysV driver books (some of which cover 4.2BSD or 4.3BSD as well),
but nothing for System III or V7 unix. There were a lot of early systems
that were based on ports of V7 to different architectures that were then
updated to System III or System V (at least according to the big chart of
unix history and some wikipedia entries, which may be just repeating
marketing schlock and not reflect actual reality).
As part of a talk I'm putting together on the 40th anniversary of V7, I
wanted to have a bit of history for things we still have in unix today
(like strategy) and things that successors to unix have added or left
behind (like the packet mux in V7 that was tossed aside for either STREAMS
or netinet from BSD, though packet muxing to userland is back with DPDK).
Warner
>From at least V2 to V6, the ls(1) command would not
show directory entries whose names began with a '.'
unless the -a flag was supplied.
This was changed in V7: only the directory entries
for "." and ".." would be skipped by default.
All further versions of Research Unix retain the
convention of V7 and Plan 9 ultimately made it
unnecessary. However, BSD and its descendants did
not follow suit. Instead, they continued behaving
like V6 with an additional -A flag to emulate V7.
Was the initial behavior intentional or just a
matter of expediency?
Who made the change and what was their motivation?
Was it a reaction to the intentional hiding of what
came to be known as "dot files"?
Thanks,
Anthony
> From: Arnold Skeeve
> If you have information, PLEASE send it to me so that I can relay it
> to Scott.
IMO, only one choice: Chuck Guzis (cclist(a)sydex.com) he's very active in the
vintage computer community, and reads old media professionally.
I've used him (to recover those backup tapes of the MIT PWB1 system), which
was rather tricky (bad mold; he had to build a special tool to remove it), and
I was incredibly happy. Very reasonable price too - although he may have given
me a special 'collector' rate.. :-)
Noel
> There was a hacky implementation of TCP/IP which we didn't really use:
> 4.Y BSD (I don't know the value of Y) protocol code, wrapped up to
> work as stream modules* and shoehorned in, with a custom API quite
> different from the BSD one. The work was done by a summer student,
> Robert T. Morris, who later became rather famous for a smaller but
> rather more troublesome bit of network code. Our production network
> was Datakit, which was also implemented as stream devices and modules
> (it was the network whose use inspired the stream design, in fact).
I’d love to hear more about that. So far, the only information I have found about (lowercase) streams and networking - as used at the labs - is the v8 source code and a 1984 message from dmr on a mailing list. The (lower level) v8 networking concepts appear to carry through to v10 and Plan9.
It is my impression that the unix/datakit tradition essentially views a network connection as a special kind of device, whereas the unix/arpanet tradition essentially views a network connection as a special kind of pipe. In both cases this would seem to have been an accidental choice driven by convenience in early implementations (respectively the Spider network drivers and NCP Unix from the UoI).
However, that is an impression formed 35+ years after the fact and the contemporary view may have been very different.
Paul
> From: Norman Wilson
> Quite a while ago, someone asked how multiplexing was handled in the
> stream world. I meant to write a reply but never did. In a sentence,
> by a paired device driver and stream module. If someone wants more
> details I'll be glad to write more about that.
Please. Thanks!
Noel
On Sat, Apr 27, 2019 at 09:38:27AM -0600, Warner Losh wrote:
But I find this interesting, since the 8th edition was based on BSD 4.1c I
thought....
`Based on' is an overstatement, except in the kernel.
The system described in the 8th Edition manual (as noted in the
past, there was only sort of a real V8 release) had a kernel
that started as 4.1x BSD. I'm not sure of the value of x.
It had the Joy/Babaolgu paging code and the complicated changes
to signals, and a lot of the gratuitous asms, but not a trace
of the BSD networking API. Neither was the BSD FFS present.
Local additions included Dennis's original stream implementation,
which completely replaced the old tty code and rewrote the drivers
for serial-port devices. The tty driver (responsible for cooked
mode, interrupt and quit signals, and the like) was a stream
module. The BSD-style `new tty line discipline' was a separate
module, for the few people who couldn't live without csh.
Tom Killian's original version of /proc and Peter Weinberger's original
network file system (neta) client were there. These were accessed
through a file system switch, also Peter's work.
Instead of FFS, Peter made a simple speedup to the V7 file system:
adding 64 to the minor device number meant the file system used 4KiB
blocks. The unused space at the end of the now-4KiB superblock was a
bitmap of free blocks, allowing somewhat-smarter block allocation.
There was a hacky implementation of TCP/IP which we didn't really use:
4.Y BSD (I don't know the value of Y) protocol code, wrapped up to
work as stream modules* and shoehorned in, with a custom API quite
different from the BSD one. The work was done by a summer student,
Robert T. Morris, who later became rather famous for a smaller but
rather more troublesome bit of network code. Our production network
was Datakit, which was also implemented as stream devices and modules
(it was the network whose use inspired the stream design, in fact).
[* Quite a while ago, someone asked how multiplexing was handled
in the stream world. I meant to write a reply but never did. In
a sentence, by a paired device driver and stream module. If someone
wants more details I'll be glad to write more about that.]
That's just the kernel, though. The user-mode world was largely
descended from V7 rather than from BSD. Most people used sh, which
had been augmented a bit by Rob Pike (perhaps et al) to add functions
and a simple external history mechanism (Tom Duff's idea, I think).
wc had no uucp-dependent flags, and cat had no flags at all. ls did
sniff at whether standard output was a tty and put things in columns.
Things mutated further as time went on, further diverging from and
discarding aspects of the BSD origin. (I can take credit or blame
for a lot of that, though not all.) But that happened later, and
is reflected in the 9th and especially 10th editions of the manual.
Norman Wilson
Toronto ON
I never heard about any history/anniversary track at Usenix in summer in
Renton, Washington. It will be an unofficial side event if anything. I
have no details.
I heard about the two Vintage Computer Festival events but probably too
soon for me.
Does anyone know of any other events with a focus on the Unix
anniversary?
Hi! I am releasing 'datekit-1.0' for 4.3BSD-Reno: a couple of free
utilities for setting post-Y2K date and time, plus timezone and DST.
Here's a brief outtake from the README, detailing the archive contents:
[...]
date.c
the 4.3BSD-Quasijarus `date' program, modified to optionally accept
4-digit years, and default to post-2000 for 2-digit years [...]
It can also:
+ set Daylight Saving Time: option -d
[...]
+ set a time zone: -t minutes-West-of-Greenwich.
Negative values for East.
rdate.c
the `rdate' program ported from OpenBSD 2.0: it synchronizes your
machine's clock to that of a remote host, by connecting to the
host's "time" service.
[...]
Man page for `rdate' and a Makefile for both programs are provided.
All of the above made and tested in 4.3BSD-Reno, on an emulated
VAX-11/780.
Archive for download at:
<gopher://darioniedermann.it/1/Computing/sw/datekit>
--
Dario Niedermann. Also on the Internet at:
gopher://darioniedermann.it/ <> https://www.darioniedermann.it/
I just started a project to recreate the B compiler for the PDP-11 as
authentically as possible, given the few fragments that remain and
some educated guesswork. It should be fun (for various definitions of
fun).
Here is the repository https://github.com/rswier/pdp11-B
I have borrowed some tools from Warren's
https://github.com/DoctorWkt/unix-jun72
I have made a good start at reverse engineering the B run time library
in /usr/lib/libb.a. I have tried to make the source match the same
style as the earliest C library found on the last1120c-bits tape. The
remaining functions in libb.a include printf and printn which appear
to be written in B. This should provide more clues needed to create
the compiler.
I am also tackling the dis-assembly of the threaded code interpreter
/usr/lib/bilib.a (which at the moment is a big mess on my hard-drive)
Later steps will include creating the B compiler itself by carefully
pruning down the last1120c C compiler. The fun here will be to
boot-strap the B compiler without help from any existing modern
compilers. I think TMG will come into play to make that happen.
All are welcome to contribute!
Rob
Hi all, just to let you know that VCF East in May has some Unix anniversary
events. bwk will be interviewing ken as one of the keynotes. Wish I could be
there!
Details at: http://vcfed.org/wp/festivals/vintage-computer-festival-east/
Cheers, Warren