GithubHelp home page GithubHelp logo

pdp-10 / tenex Goto Github PK

View Code? Open in Web Editor NEW
32.0 7.0 3.0 414.65 MB

BBN's PDP-10 operating system

Batchfile 0.14% Roff 96.80% Fortran 0.43% RUNOFF 1.24% Gosu 0.01% Forth 0.16% DIGITAL Command Language 0.17% Common Lisp 0.77% PLSQL 0.01% OCaml 0.03% Cadence 0.25%
pdp-10 operating-system computer-history tenex foonly bbn maxc

tenex's Introduction

tenex's People

Contributors

b4 avatar larsbrinkhoff avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

tenex's Issues

PA1050

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.

Major subsystems

Look into these at some point:

Noted elsewhere:

Write 10DMP to disk

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

TENEX version history

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.

TCP

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.

DLUSER

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

Connection to SDS Berkeley Timesharing System

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.

SUDS

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.

Installation media

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:

  1. DLUSER.SAV
  2. USERS.TXT
  3. DUMPER.SAV
  4. Dumper saveset.

If the first three files fit on the DECtape, that's more convenient.

Survey of monitor versions

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

TCP/IP

We need TCP/IP for TENEX. Maybe it's already there, I haven't checked.

"Installing TCP and servers" on Tenex

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.