pdp-10 / tenex Goto Github PK
View Code? Open in Web Editor NEWBBN's PDP-10 operating system
BBN's PDP-10 operating system
PA1050 is rather important since most tools are only lightly updated from TOPS-10.
The source file is called <SOURCES>PAT.MAC. The executable should be <SUBSYS>PA1050.SAV.
Look into these at some point:
Noted elsewhere:
KI10 simulator boots TOPS-10 6.03 - I have COMPIL/COMPIL'd 10DMP.MAC (mangled-for-copy-and-paste-into-vm TENDMP.10X)
BTM barfs on TENEX.SAV - needs 10DMP.
Need to fully figure out W{A,I,L}BOOT to coerce it in to writing 10DMP instead of BOOTS
Can we (re)create a version history for TENEX?
I see the version in here, 1.34, is from late 1975. And TOPS-20 v1 is from early 1976. Does this mean 1.34 was one of the last versions? As released from BBN.
I suppose some sites kept TENEX running and may have made modifications of their own. Like Xerox.
Geoff Goodfellow found this
To: System Programmers
From: William W. Plummer, BBN
Date: 19SEP76
Re: Installing TCP and servers
1. Make a directory <TCP> to hold all of the files.
2. If the TCP and servers are to be run by <SYSTEM> or <TCP> or
whoever, give that user WHEEL (so it can use PTY's in their
current partially implemented form) and NETWIZ (so it can
use raw network messages.
3. Add the TCP assembly switch to PARAMS.MAC. See partial
listing.
4. Add code under TCP switch in FORKS.MAC. See partial listing.
5. Add directed PSI code in IMPDV.MAC. See partial listing.
6. Define FORKX as JSYS 747 in STENEX.MAC. Reassemble STENEX.
7. Define FORKX in PROLOG.MAC. Delete LDINIT.REL;* to cause the
JSYS dispatch vector to be reassembled.
8. In PARAMS.MAC set NPTYS to 8. Figure out what line numbers
your PTY's will be for later use.
9. Be sure your CHKJFN routine matches the one enclosed. Same
for other PTY-related fragments enclosed.
10. Assemble a new monitor.
11. A copy of the file <SYSTEM>SYSJOB.TCP is included here which
should be updated for your system. To restart the TCP after
flushing the old jobs, just copy this file to
<SYSTEM>SYSJOB.COMMANDS and Job0 will do the rest.
12. To have the TCP started automatically when the system comes
up, include the contents of SYSJOB.TCP in SYSJOB.RUN.
13. You may want to have a separate account and pieslice for the
TCP.
14. Files and what they do:
<TCP>TCP155.SAV Contains all code for the TCP job and
interface (simulated JSYS's) for users.
<TCP>TTLSRV.MAC Sources for "TCP Telnet Server".
<TCP>TTLSRV.SAV The actual program.
<TCP>TTLSRV.LOG Textual log of activities.
<TCP>ECHO.SAV An echo server.
<TCP>ECHO.LOG A log file.
<TCP>SINK.SAV InterNet version of NIL:
<TCP>SINK.LOG Textual log file.
<TCP>XTCP155.SAV Used to map the TCP for debugging.
<TCP>XTCI155.SAV Used to map the TCI
<TCP>START-TCP155.SAV Program run by a created job to cause
a TCP to be mapped and started.
<TCP>START-TTLSRV155.SAV Program run by a created job to
cause the TTLSRV to be started.
<TCP>START-ECHO.SAV Program run by a created job to
start the ECHO server.
<TCP>START-SINK.SAV Program run by a created job to
start the SINK server.
15. A word about TCP155.SAV
This is a specially constructed SSAVE file. Parts are "normal"
Read, Copy-on-write, Execute while others are actual shared Read-Write.
This file may be copied with the EXEC "COPY" command and may be
shipped around with FTP, but don't try to GET and SSAVE it. Don't
try to just RUN it. In order for the GET JSYS to properly map the
file, it must be openned with "per-page table" access. That is all
XTCP155 and XTCI155 do: open the file, do a GET and HALTF. The
EXEC "START" command may then be used. Programs like START-TCP155
do the same but automatically start the program.
TCP is the actual protocol routines, the packetizer, the
retransmitter, the reassembler, ... etc.
Our version of DLUSER seems to want this format:
!USER
$HASHED,PASSWORD
#2=parameter,#3=parameter,...,#15=parameter,NOMAIL
!USER
PLAINTEXT PASSWORD
#2=parameter,#3=parameter,...,#15=parameter
Output to the file when DLUSER is run is per below. Presumably these are the 13 parameters.
DIRECTORY NAME
PASSWORD
DISK LIMIT
CAPABILITIES
FILES ONLY, ALPHA ACCTS, REPEAT LMSG
SPECIAL RESOURCE INFO
DIRECTORY NUMBER
DEFAULT FILE PROTECTION
DIRECTORY PROTECTION
DEFAULT RETENTION SPECIFICATION
LAST LOGIN
USER GROUP WORD
DIRECTORY GROUP WORD
Fred Wright wrote:
Not only did TENEX have nothing to do with TOPS-10, but also it wasn't really a new design in its own right, being merely a rewrite of the SDS 940 system for the PDP-10. The 940 system, as well as the hardware enhancements that turned the 930 into the 940, came from Project Genie at UC Berkeley. The hardware enhancements were taken over by SDS (later XDS) to become the 940, though I'm not sure if SDS distributed a version of the Project Genie OS or not. There were certainly service bureaus running it, though, since I recall using one of them in '68.
The 940 OS (mostly written by Peter Deutsch) was based on paging, viewed memory primarily as a cache for drum, had jobs with multiple forks which could optionally share pages, used the topmost fork of the job for the "shell", and had command and filename completion. Sound familiar? Although the 940 only had a 16KW (24 bits) address space (64KW physical), the OS made page switching fairly convenient (and reasonably efficient) so that programs could "juggle their way" around that with overlays.
BBN had developed a popular LISP implementation that ran on the 940, and was getting squeezed by the limited address space. They wanted to move to another machine with more addressing, and the PDP-10 seemed like a good candidate, but it lacked paging (this was years before the KI). So they decided to build their own pager for the KA10, with some rather complex features designed to put some of the 940 OS's mechanisms into hardware. They also came up with the ugliest "fixes" for the KA10's difficulties with recoverable memory protect violations anywhere (and a step backwards from the 940). I know of at least three cases of fixing this "right", before DEC started getting it right on the KI and later.
TENEX was really not much more than a port of the 940 OS to the PDP-10, except for changing some things that didn't scale well to larger address spaces and storage devices. I can recall seeing TENEX code that looked literally like a line-by-line translation of 940 code, right down to using only three registers (like the 940's A, B, and X), and with half the instructions being MOVEs and MOVEMs since you can't keep much in three registers. They did, however, use a stack and PUSHJ/POPJ instead of JSR/JRST. :-) The exception model for system calls was as ugly as their hardware, instead of adopting an ITS-like PCLSR approach - another step backwards from the 940 system, which in essence had simplified PCLSR.
When ARPA got onto their kick of wanting to standardize on a single PDP-10 OS for all ARPA sites, TENEX was the only available choice that supported paging, which of course was a highly desirable feature. Thus, TENEX was selected as the "ARPA standard" OS on that basis alone. However, BBN had initially designed TENEX solely as a vehicle to support BBN LISP. It was designed almost in a vacuum, drawing only from the 940 system while ignoring the substantial benefits of some of the features in ITS and WAITS. Needels to say, there was a lot of kicking and screaming over the prospect of giving up important features just so that some bureaucrats in DC could see the same commands no matter what ARPAnet site they connected to, and eventually ARPA relented on the "TENEX mandate". DEC's willingness to take over TENEX and turn it into TOPS-20 may have played a part in this; I'm not sure.
One of the things DEC did with TOPS-20 was to junk the TENEX filesystem, which was widely known to be the most unreliable of all PDP-10 filesystems, and start over. It's still not as robust as the TOPS-10 filesystem, but it's a lot better than TENEX. The flaky TENEX filesystem was probably also a 940 legacy, but the 940 only used it on the drum. Long-term storage was either on magtape (and it had an elaborate means for allowing magtape files to be overwritten in place), or on disk partitions accessed purely through a user program called KDF (Kludge Disk Files). Restoring the drum filesystem from tape was a frequent occurrence.
Is this more TENEX code, or is it something to run ATOP TENEX?
Put this somewhere, add its docs, etc.
CAD system from Stanford. Originally made by the AI lab.
Not sure it it's a TENEX thing. Maybe WAITS. But it seems to have been widely ported to DEC-10 and 20 systems.
Bootable DECtape with TENEX.SAV and TENEX.SWP.
Once we reach the mini-exec it should be enough to mount a magtape with these files:
If the first three files fit on the DECtape, that's more convenient.
Information about the monitor versions in this repository (also FOONEX, and their configuration. Much comes from the PARAM files.
Version | Host | CPU | Memory | Disk | Network |
---|---|---|---|---|---|
1.28 | BBN-A | KA10 | 256K | RP02 | NCP |
1.28 | BBN-B | KA10 | 256K | RP02 | NCP |
1.31 | SUMEX-AIM | KI10 | 1024K | SA10 | NCP |
1.33 | SRI-AIC | KA10 | 256K | RP02 | NCP |
1.33 | SRI-ARC | KA10 | 512K | SA10 | NCP |
RUTGERS | KI10 | 512K | RP02 | ||
1.33 | ISI-B | KI10 | 1024K | SA10 | NCP |
1.34 | ISI-A | KI10 | 1280K | SA10 | NCP, TCP/IP |
1.34 or 1.31? | OFFICE-2 | KI10 | 2048K | SA10 | |
1.34 | MAXC1 | (KA10) | 1024K | NCP | |
1.34 | MAXC2 | (KA10) | 1024K | NCP | |
1.34 | BBN-C | KA10 | 256K | SA10 | NCP |
1.34 | Ampex | F3 | 512K | Foonly | |
1.34 | SRI-CSL | F3 | 512K | Foonly | NCP |
1.34 | Foonly | F3 | 512K | Foonly | |
1.34 | Symbolics SCRC | F2 | 512K | Foonly | |
1.35 | SRI-NIC | F3 | 768K | Foonly | Tymnet, TCP/IP |
We need TCP/IP for TENEX. Maybe it's already there, I haven't checked.
Any sign?
https://elists.isoc.org/pipermail/internet-history/2020-March/005912.html
To: System Programmers
From: William W. Plummer, BBN
Date: 19SEP76
Re: Installing TCP and servers
1. Make a directory <TCP> to hold all of the files.
2. If the TCP and servers are to be run by <SYSTEM> or <TCP> or
whoever, give that user WHEEL (so it can use PTY's in their
current partially implemented form) and NETWIZ (so it can
use raw network messages.
3. Add the TCP assembly switch to PARAMS.MAC. See partial
listing.
4. Add code under TCP switch in FORKS.MAC. See partial listing.
5. Add directed PSI code in IMPDV.MAC. See partial listing.
6. Define FORKX as JSYS 747 in STENEX.MAC. Reassemble STENEX.
7. Define FORKX in PROLOG.MAC. Delete LDINIT.REL;* to cause the
JSYS dispatch vector to be reassembled.
8. In PARAMS.MAC set NPTYS to 8. Figure out what line numbers
your PTY's will be for later use.
9. Be sure your CHKJFN routine matches the one enclosed. Same
for other PTY-related fragments enclosed.
10. Assemble a new monitor.
11. A copy of the file <SYSTEM>SYSJOB.TCP is included here which
should be updated for your system. To restart the TCP after
flushing the old jobs, just copy this file to
<SYSTEM>SYSJOB.COMMANDS and Job0 will do the rest.
12. To have the TCP started automatically when the system comes
up, include the contents of SYSJOB.TCP in SYSJOB.RUN.
13. You may want to have a separate account and pieslice for the
TCP.
14. Files and what they do:
<TCP>TCP155.SAV Contains all code for the TCP job and
interface (simulated JSYS's) for users.
<TCP>TTLSRV.MAC Sources for "TCP Telnet Server".
<TCP>TTLSRV.SAV The actual program.
<TCP>TTLSRV.LOG Textual log of activities.
<TCP>ECHO.SAV An echo server.
<TCP>ECHO.LOG A log file.
<TCP>SINK.SAV InterNet version of NIL:
<TCP>SINK.LOG Textual log file.
<TCP>XTCP155.SAV Used to map the TCP for debugging.
<TCP>XTCI155.SAV Used to map the TCI
<TCP>START-TCP155.SAV Program run by a created job to cause
a TCP to be mapped and started.
<TCP>START-TTLSRV155.SAV Program run by a created job to
cause the TTLSRV to be started.
<TCP>START-ECHO.SAV Program run by a created job to
start the ECHO server.
<TCP>START-SINK.SAV Program run by a created job to
start the SINK server.
15. A word about TCP155.SAV
This is a specially constructed SSAVE file. Parts are "normal"
Read, Copy-on-write, Execute while others are actual shared Read-Write.
This file may be copied with the EXEC "COPY" command and may be
shipped around with FTP, but don't try to GET and SSAVE it. Don't
try to just RUN it. In order for the GET JSYS to properly map the
file, it must be openned with "per-page table" access. That is all
XTCP155 and XTCI155 do: open the file, do a GET and HALTF. The
EXEC "START" command may then be used. Programs like START-TCP155
do the same but automatically start the program.
TCP is the actual protocol routines, the packetizer, the
retransmitter, the reassembler, ... etc.
I haven't found any copy of RSEXEC.
Here's a PDF:
rsexec.pdf
BBN's PDP-10 version of LOGO. Suppose it would have ran in TENEX?
Need Interlisp installed!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.