516-TSS is a little-known but groundbreaking and influential operating system
that was developed at Bell Telephone Laboratories.  I came across this system
because Carl Christensen and later Heinz Lycklama were major contributors to
it, and they were also advisors for the Bell Labs Explorer Scout Post at
Murray Hill.  I was a member of that post which allowed us to play with
computers on Monday evenings, and 516-TSS was what most of us used.  Through
a series of amazingly lucky events, I ended up working as a summer student
for Carl and Heinz and got to contribute to the system.  Long before the term
"code spelunking" was coined Carl and Heinz taught us both code and spelunking.

This is not a complete set of 516-TSS documents, it's a couple of notebooks
that I found in a box in the basement.  Probably my ancient work-at-home copy.

I don't know enough history to know if it was the first, but 516-TSS was an
early department-level time-sharing system.  It was built around a Honeywell
DDP-516.  While other time-sharing systems predate 516-TSS, they weren't
systems that one's department could afford.  CTSS certainly came earlier,
but it used a monster IBM 7090 mainframe.  In round numbers, a 7090 cost
$3,000,000 dollars, a DDP-516 cost $50,000.

516-TSS was also a virtual memory system; again not the first but a rarity
in that era.  My recollection is that it used the 516's index register as
the base address register, and there was some complicated mucking around
that a program had to do if it needed to use the index register including
disabling interrupts and eventually restoring the register from .PRESB
(present base address), one of those weird things stuck in my memory from
long ago.

I believe that the system's development predated UNIX although I remember
our department getting a PDP-11/45 running UNIX Version 3 in the summer of
1973. This machine was acquired so that Doug Bayer and Heinz Lycklama could
develop the MERT operating system.

The 516 was a testbed for a lot of novel technologies.  It had a local area
network called the ring which was later made to work on PDP-11s including
Ken and Dennis's machine up in the attic of building 2.  It was also used
to develop the GLANCE graphics terminals.  My recollection is that one of
the main drivers behind getting the ring to work on PDP-11s and UNIX was so
that Ken could get a GLANCE-G terminal for playing chess.  Sandy Fraser's
Spider network was developed there.  It supported a number of novel
applications including Dick Hause's DTE graphics editor; way ahead of its
time.  I remember that one GLANCE terminal was fitted with an array of LEDs
and photodiodes to make an early version of a touch screen.

While it wasn't exactly work related, a number of the people in the department
had purchased property up in Vermont for ski cabins.  An important use of the
516-TSS system and GLANCE-G terminals was to figure out survey closures.  The
property surveys were ancient, of the "from the big rock to the left of the
tree that's no longer there" sorts of things, so figuring out the actual
property lines was an interesting problem.

The 516 also had a wide area network which consisted of picking up the phone
and calling the computer center.  It had a monster GE-635 or maybe 645 left
over from the Multics project.  It may have been renamed to be a Honeywell
6070 with Honeywell's acquisition of GE's computer business.  The computer
center kept department costs down by hoarding all of the really expensive
peripherals.  For example, we didn't have a card punch; that was effectively
done via remote job entry.  We didn't have a graphics printer either, so when
I was working on GPLOT I'd submit remote jobs to the computer center for
printing.  Matter of fact, I don't think that we even had a printer in our
department; we sent stuff up to the computer center for printing.  Although,
in those days many terminals used paper.  The 516 console was an ASR-33.
There was also the ability to send jobs to the computer center and have it
call back with results.  This early approach to a WAN showed up as the tss
command in UNIX.

One of the missions of the department was the development of an all-digital
telephone exchange which is why some of the documents describe programs that
assist with digital filter design.  Both Jim Kaiser and Hal Alles were in the
department.  One of the side-effects of all this was Hal figuring out how to
use the filter hardware connected to a LSI-11/03 to make sound, followed by
Dave Hagelbarger building a very interesting keyboard for it, culminating in
a visit by Stevie Wonder trailed by a large number of screaming secretaries.
No sexism intended, it was a different world back then.  The LSI-11 was one
of the motivations for Heinz to create the LSX operating system.

My recollection is that on Dave's keyboard each key was an antenna, and that
there was strip of ribbon cable underneath where each wire was driven by a
different bit on a binary counter.  This allowed the position of each key to
be determined which I think was way ahead of its time.  I don't think that
any commercially available keyboards did this at the time, they were all just
on/off.  Dave also designed the GLANCE keyboard which spoiled me for life.
I don't remember how he did it, but the keys had a really good feel where once
they got pushed past a certain point they snapped down.  I do recall that there
was a small solenoid mounted on the circuit board so that the keys gave a
satisfying click that you could feel in your fingers.  Another of Dave's gizmos
was the chess board that he made for Ken.  My recollection is that there was a
tuned circuit in the base of each chess piece and an antenna grid in the board
so that the PDP-11 could read the position of each piece.

Some of the success of the 516 system was that other departments used it.  I
spent some time working an a 516-based integrated circuit test system where
the test equipment stations were on the ring.  Seems really dumb now, it's hard
to believe that there was a time in which a computer cost more than a wafer
stepper.

In addition to his work on 516-TSS, Carl Christensen was one of the people who
interviewed Ken Thompson for a job at the labs and gave a thumbs up.

The 516-TSS documents don't have author names, just initials.  Here's who they
are to the best of my recollection.

ADH	Dick Hause
CC	Carl Christensen
DJB	Doug Bayer
DRW	Dave Weller
EPR	?
HL	Heinz Lycklama
JCS	John Schwartzwelder
JES	Jon Steinhart
JFK	Jim Kaiser
JHC	Joe Condon
JVC	John Camlet
LIS	?
MAS	?
RFG	Rudy Garcia

There is one mysterious document in the collection about a "memory service unit".
I had this filed under "zapper".  To the best of my recollection it was the PROM
programmer that we used to burn the microcode PROMs for the GLANCE terminals.

Jon Steinhart, 11/20/2020
 NameMtimeSizeType
0 516-1-516-DOCUMENTATION.pdf 2020-11-19 00:59:04Z 40 KiB application/pdf
1 516-10-11-12-Ring-Formats.pdf 2020-11-18 21:49:01Z 437 KiB application/pdf
2 516-12-Specifications-For-The-Node-Modem-Interface.pdf 2020-11-18 21:52:24Z 138 KiB application/pdf
3 516-13-Trac-Character-Strings.pdf 2020-11-18 22:04:57Z 60 KiB application/pdf
4 516-14-GMAP-Assembler-for-the-Multi-Programmed-516.pdf 2020-11-18 22:07:29Z 288 KiB application/pdf
5 516-15-A-Suggested-Graphic-Display-with-Keyboard-for-Graphic-Terminals.pdf 2020-11-18 23:47:20Z 386 KiB application/pdf
6 516-16-516-Assembler-And-Post-Processor-For-Unsegmented-Programs.pdf 2020-11-18 22:09:29Z 210 KiB application/pdf
7 516-18-Format-For-Ring-Interrupt.pdf 2020-11-18 21:54:05Z 57 KiB application/pdf
8 516-19-Thread-Save-Blocks.pdf 2020-11-18 22:12:23Z 57 KiB application/pdf
9 516-20-Card-Reader-Bootstrap-and-Programs.pdf 2020-11-19 00:41:48Z 197 KiB application/pdf
10 516-21-Octal-Package.pdf 2020-11-18 23:20:18Z 104 KiB application/pdf
11 516-22-A-Repeater-For-The-Node-Modem.pdf 2020-11-18 21:55:40Z 166 KiB application/pdf
12 516-23-CLEAR-CORE-CARD.pdf 2020-11-19 00:42:25Z 24 KiB application/pdf
13 516-24-SOROBAN-CARD-READER-TEST-PROGRAM.pdf 2020-11-19 00:40:08Z 106 KiB application/pdf
14 516-25-IO-Table.pdf 2020-11-18 22:13:22Z 32 KiB application/pdf
15 516-26-Disk-DMA-Queue.pdf 2020-11-18 22:14:29Z 52 KiB application/pdf
16 516-27-GE-Disc-Files-For-516-Programming.pdf 2020-11-18 22:10:54Z 37 KiB application/pdf
17 516-27-Thread-Table.pdf 2020-11-18 22:15:30Z 53 KiB application/pdf
18 516-28-IO-Ring-Device-Codes.pdf 2020-11-18 21:57:23Z 54 KiB application/pdf
19 516-29-Five-Bit-Character-Codes.pdf 2020-11-18 22:16:30Z 22 KiB application/pdf
20 516-3-DDP-516-PRICE-LIST.pdf 2020-11-19 01:01:00Z 12 KiB application/pdf
21 516-30-Text-Editor.pdf 2020-11-18 23:24:49Z 200 KiB application/pdf
22 516-31-Relocatable-Segment-Octal-Package.pdf 2020-11-18 23:21:31Z 77 KiB application/pdf
23 516-32-ASCII-Character-Mnemonics.pdf 2020-11-18 22:17:41Z 24 KiB application/pdf
24 516-34-Display-List-For-Glance.pdf 2020-11-18 23:50:56Z 538 KiB application/pdf
25 516-35-Internal-Megacycle-Clock.pdf 2020-11-18 22:19:22Z 154 KiB application/pdf
26 516-36-Node-Modem-Interface-For-Computer-Terminals.pdf 2020-11-18 22:00:30Z 360 KiB application/pdf
27 516-38-P8SYS.pdf 2020-11-19 00:44:56Z 140 KiB application/pdf
28 516-39-Resource-Monitor-Meters.pdf 2020-11-18 22:21:08Z 98 KiB application/pdf
29 516-4-Disk-Layout.pdf 2020-11-18 21:28:58Z 72 KiB application/pdf
30 516-40-SNAP-Time-Sharing-Calculator.pdf 2020-11-19 01:04:58Z 83 KiB application/pdf
31 516-41-516-Segment-Assembler.pdf 2020-11-18 22:28:38Z 325 KiB application/pdf
32 516-42-Memory-Service-Unit-Format.pdf 2020-11-18 22:33:52Z 32 KiB application/pdf
33 516-43-GEBKUP-and-FLOAD.pdf 2020-11-18 23:17:24Z 96 KiB application/pdf
34 516-44-FSNAP-Floating-Point-Time-Sharing-Calculator.pdf 2020-11-18 23:27:29Z 74 KiB application/pdf
35 516-45-516-316-Assembler-and-Binder.pdf 2020-11-18 22:32:37Z 434 KiB application/pdf
36 516-46-CALC-A-Desk-Calculator-Program.pdf 2020-11-19 01:03:34Z 42 KiB application/pdf
37 516-47-Remote-Data-Plotting.pdf 2020-11-18 23:11:27Z 616 KiB application/pdf
38 516-48-CODING-FOR-GLANCE-G-Graphics.pdf 2020-11-18 23:59:20Z 538 KiB application/pdf
39 516-49-516-Segment-Assembler.pdf 2020-11-18 22:30:31Z 120 KiB application/pdf
40 516-5-System-Table-Formats.pdf 2020-11-18 21:37:33Z 96 KiB application/pdf
41 516-50-Use-Of-The-516-Segment-Assemblers-Macros-In-Application-Programs.pdf 2020-11-18 22:24:49Z 293 KiB application/pdf
42 516-51-FSNAP-Users-Guide.pdf 2020-11-18 23:33:59Z 857 KiB application/pdf
43 516-52-DESK-A-Desk-Calculator.pdf 2020-11-18 23:44:39Z 152 KiB application/pdf
44 516-53-FSEOF-Flag-End-Of-File.pdf 2020-11-18 23:29:33Z 20 KiB application/pdf
45 516-54-Context-Editing.pdf 2020-11-18 23:25:52Z 130 KiB application/pdf
46 516-55-One-Card-Core-Save-Program.pdf 2020-11-19 00:43:01Z 43 KiB application/pdf
47 516-56-PRIME-An-Integer-Factoring-Program.pdf 2020-11-19 01:07:23Z 43 KiB application/pdf
48 516-57-Format-For-The-516-Node-T-I-U-Spider-Interface.pdf 2020-11-18 22:37:29Z 68 KiB application/pdf
49 516-58-Calling-Procedures-For-Math-Routines.pdf 2020-11-18 22:26:58Z 94 KiB application/pdf
50 516-59-INITIALIZATION-OF-THE-516-TSS-SYSTEM.pdf 2020-11-19 00:39:03Z 492 KiB application/pdf
51 516-6-Segment-Format.pdf 2020-11-18 21:39:28Z 100 KiB application/pdf
52 516-60-SORT-SUBR-FOR-SEGMENTED-PROGRAMS.pdf 2020-11-19 00:57:35Z 559 KiB application/pdf
53 516-61-516-TSS-SYSTEM-BOLTED-IN-CORE-SUBROUTINES.pdf 2020-11-19 00:49:22Z 550 KiB application/pdf
54 516-63-Display-Controller-Glance-G.pdf 2020-11-18 23:54:03Z 96 KiB application/pdf
55 516-64-FSNAP-Designers-Guide.pdf 2020-11-18 23:39:05Z 856 KiB application/pdf
56 516-65-SOME-DIGITAL-FILTER-APPLICATION-PROGRAMS.pdf 2020-11-19 01:06:23Z 130 KiB application/pdf
57 516-66-TSS-516-GE-Communication.pdf 2020-11-18 23:07:08Z 363 KiB application/pdf
58 516-67-Node-Format-For-PDP-11.pdf 2020-11-19 00:46:24Z 60 KiB application/pdf
59 516-68-DFILE-N-A-Program-for-TSS-516.pdf 2020-11-19 01:02:14Z 29 KiB application/pdf
60 516-69-GLANCE-G-COMMUNICATION-FORMAT-TSS-516-TO-SCOPE.pdf 2020-11-18 23:55:36Z 33 KiB application/pdf
61 516-7-DMA-Mnemonics.pdf 2020-11-18 21:41:36Z 11 KiB application/pdf
62 516-70-Routines-to-Perform-Character-String-IO-in-a-FSNAP-Program.pdf 2020-11-18 23:40:11Z 131 KiB application/pdf
63 516-71-FSNAP-Debugging-Aids.pdf 2020-11-18 23:41:38Z 66 KiB application/pdf
64 516-72-Node-Test.pdf 2020-11-18 22:02:20Z 76 KiB application/pdf
65 516-73-Node-IO-Software.pdf 2020-11-18 22:03:46Z 74 KiB application/pdf
66 516-75-Display-Text-Editor-DTE.pdf 2020-11-19 00:03:53Z 604 KiB application/pdf
67 516-76-LOCAL-DATA-PLOTTING.pdf 2020-11-19 00:05:10Z 54 KiB application/pdf
68 516-77-GLANCE-PLOTTING-ROUTINES-GPLOT-GLANCE-CHRGEN.pdf 2020-11-19 00:15:04Z 1.5 MiB application/pdf
69 516-77-V2-GLANCE-PLOTTING-ROUTINES-GPLOT-GLANCE-CHRGEN.pdf 2020-11-19 00:32:49Z 1.5 MiB application/pdf
70 516-78-DUMP.pdf 2020-11-19 01:08:16Z 13 KiB application/pdf
71 516-79-New-File-Features-in-FSNAP.pdf 2020-11-18 23:43:01Z 52 KiB application/pdf
72 516-8-Disk-Hole-Format.pdf 2020-11-18 21:44:17Z 64 KiB application/pdf
73 516-81-OPTION-CHANGING-IN-GPLOT.pdf 2020-11-19 00:34:31Z 153 KiB application/pdf
74 516-86-MODIFICATIONS-TO-201-DATAPHONE-SOFTWARE.pdf 2020-11-19 00:35:28Z 20 KiB application/pdf
75 516-9-Addresses.pdf 2020-11-18 21:42:35Z 44 KiB application/pdf
76 DDP-516-Instruction-Set-Summary.pdf 2020-11-19 01:11:14Z 493 KiB application/pdf
77 DDP-516-PROGRAMMERS-REFERENCE-CARD.pdf 2020-11-19 01:14:29Z 3.3 MiB application/pdf
78 Index.pdf 2020-11-18 21:21:51Z 157 KiB application/pdf
79 README 2020-11-27 02:00:06Z 6.7 KiB text/plain; charset=utf-8