https://gunkies.org/w/api.php?action=feedcontributions&user=Paul+Koning&feedformat=atomComputer History Wiki - User contributions [en]2024-03-29T09:43:53ZUser contributionsMediaWiki 1.30.0https://gunkies.org/w/index.php?title=DECnet&diff=12746DECnet2016-12-07T20:31:33Z<p>Paul Koning: /* Phase II (1976) */</p>
<hr />
<div>{{wp-orig}}<br />
'''DECnet''' is a proprietary suite of network protocols created by [[DEC]], originally released in [[1975]] in order to connect two [[PDP-11]] [[minicomputers]]. It evolved into one of the first peer-to-peer network architectures, thus transforming DEC into a networking powerhouse in the [[1980s]].<br />
<br />
Initially built with four layers, it later ([[1992]]) evolved into a seven layer [[Open Systems Interconnection|OSI]] compliant networking protocol, around the time when open systems ([[POSIX]] compliant, i.e. [[Unix-like]]) were grabbing marketshare from the proprietary OSes, like VMS.<br />
<br />
DECnet was built right into the DEC flagship operating system [[OpenVMS|VAX/VMS]] since its inception.<br />
Digital ported it to its own [[Ultrix]] variant of [[UNIX]], as well as [[Apple Macintosh]] computers and PCs running both DOS and Windows under the name '''DEC Pathworks''', transforming these systems into DECnet end-nodes in a network of [[VAX]] machines. More recently, an open-source version has been developed for the [[Linux]] OS: see [http://linux-decnet.sourceforge.net/ Linux-DECnet on Sourceforge].<br />
<br />
==Brief overview of the evolution of DECnet==<br />
<br />
DECnet refers to a specific set of hardware and software networking products which implement the '''DIGITAL Network Architecture''' (DNA). The DIGITAL Network Architecture is essentially a set of documents which define the network architecture in general, state the specifications for each layer of the architecture, and describe the [[protocol stack|protocols]] which operate within each layer. Although [[packet sniffer|network protocol analyzer tools]] tend to categorize all protocols from DIGITAL as "DECnet", strictly speaking, non-routed DIGITAL protocols such as LAT, SCS, AMDS, LAST/LAD are not DECnet protocols and are not part of the DIGITAL Network Architecture.<br />
<br />
To trace the evolution of DECnet is to trace the development of DNA. The beginnings of DNA were in the early 1970s. DIGITAL published its first DNA specification at about the same time that [[IBM]] announced its [[Systems Network Architecture]] (SNA). Since that time, development of DNA has evolved through the following phases:<br />
<br />
==='''Phase I''' ([[1974]])===<br />
Support limited to 2 [[PDP-11]]s running the [[RSX-11]] operating system only, with communication over point-to-point ([[DDCMP]]) links between nodes.<br />
<br />
==='''Phase II''' ([[1976]])===<br />
Support for networks of up to 32 nodes with multiple, different implementations which could interoperate with each other. Implementations expanded to included [[RSTS/E]], [[TOPS-10]] and [[TOPS-20]] with communications between processors still limited to point-to-point links only. Introduction of file transfer (FAL), remote file access (DAP), task-to-task programming interfaces and network management features.<br />
<br />
==='''Phase III''' ([[1980]])===<br />
Support for networks of up to 255 nodes over point-to point and multi-drop links. Introduction of adaptive routing capability, downline loading (MOP), record access, a network management architecture, and gateways to other types of networks including IBM’s SNA and [[ITU-T|CCITT]] Recommendation [[X.25]].<br />
<br />
<div style="float:right;margin:15px;margin-top:0px;padding:0px;border: 1px solid #aaa;"><br />
<br />
{| border="0" cellspacing="2" cellpadding="2"<br />
|+ '''DECnet Phase IV protocol suite'''<br />
|----- align="left"<br />
! Application<br />
| DAP: Data Access Protocol<BR><br />
CTERM: Command Terminal<br />
|----- align="left"<br />
! Network Management<br />
| NICE: Network Management protocol<br><br />
MOP: Maintenance Operation Protocol<br />
|----- align="left"<br />
! Session<br />
| SCP: Session Control Protocol<br />
|----- align="left"<br />
! Transport<br />
| NSP: Network Service Protocol<br />
|----- align="left"<br />
! Network<br />
| DRP: DECnet Routing Protocol<br />
|----- align="left"<br />
! Data link<br />
| DDCMP: Digital Data Communications Message Protocol<br>[[Ethernet]], [[IBM token ring|Token ring]], [[HDLC]], [[Fiber distributed data interface|FDDI]], ...<br />
|----- align="left"<br />
! Physical<br />
| [[Ethernet]], [[IBM token ring|Token ring]], [[Fiber distributed data interface|FDDI]], ...<br />
|}<br />
</div><br />
==='''Phase IV''' and '''Phase IV+''' ([[1982]])===<br />
Phase IV was released initially to [[RSX-11]] and [[OpenVMS|VMS]] systems, later [[TOPS-20]], [[TOPS-10]], [[ULTRIX]], [[VAXELN]], and [[RSTS/E]] gained support. Support for networks of up to 64,449 nodes (63 areas of 1023 nodes), datalink capabilities expanded beyond DDCMP to include [[Ethernet]] [[local area network]] support as the datalink of choice, expanded adaptive routing capability to include hierarchical routing (areas, level 1 and level 2 routers), [[VMScluster]] support (cluster alias) and host services (CTERM). CTERM allowed a user on one computer to log into another computer remotely, performing the same function that [[Telnet]] does in the [[TCP/IP]] protocol stack. Digital also released a product called the PATHWORKS client, and more commonly known as the PATHWORKS 32 client, that implemented much of DECnet Phase IV for DOS, and 16 and 32 bit Microsoft Windows platforms (all the way through to Windows Server 2003).<br />
<br />
Phase IV implemented an 8 layer architecture similar to the [[OSI model|OSI]] (7 layer) model especially at the lower levels ''(see diagram below)''. Since the OSI standards were not yet fully developed at the time, many of the Phase IV protocols remained proprietary. <br />
<br />
The Ethernet implementation was unusual in that the software changed the physical address of the Ethernet interface on the network to AA-00-04-00-xx-yy where xx-yy reflected the DECnet network address of the host. This allowed router-less LAN operation because the LAN address could be deduced from the DECnet address. This precluded connecting two NICs from the same DECnet node onto the same LAN segment, however.<br />
<br />
The initial implementations released were for [[Virtual Memory System|VMS]] and RSX-11, later this expanded to virtually every [[operating system]] DIGITAL ever shipped with the notable exception of [[RT-11]]. DECnet stacks are found on Linux, SunOS and other platforms, and Cisco and other network vendors offer products that can cooperate with and operate within DECnet networks. Full DECnet Phase IV specifications are available.<br />
<br />
At the same time that DECnet Phase IV was released, the company also released a proprietary protocol called [[Local Area Transport|LAT]] for serial terminal access via [[Terminal server]]s. LAT is entirely separate from DECnet, though many DECserver LAT terminal servers did use MOP for the server image download and related bootstrap processing.<br />
<br />
Enhancements made to DECnet Phase IV eventually became known as DECnet Phase IV+, although systems running this protocol remained completely interoperable with DECnet Phase IV systems.<br />
<br />
==='''Phase V''' and '''Phase V+''' ([[1987]])===<br />
Support for very large (architecturally unlimited) networks, a new network management model, local or distributed name service, improved performance over Phase IV. Move from a proprietary network to an [[Open Systems Interconnection]] (OSI) by integration of ISO standards to provide multi-vendor connectivity and <br />
compatibility with DNA Phase IV, the last two features resulted in a hybrid network architecture (DNA and OSI) with separate “towers” sharing an integrated transport layer. Transparent transport level links to [[TCP/IP]] were added via the [[Internet Engineering Task Force|IETF]] [[Request for Comments|RFC]] 1006 (OSI over IP) and RFC 1859 (NSP over IP) standards ''(see diagram below)''.<br />
<br />
It was later renamed '''DECnet/OSI''' to emphasize its OSI interconnectibility, and subsequently '''DECnet-Plus''' as TCP/IP protocols were incorporated.<br />
==References==<br />
<br />
* [[Carl Malamud]], ''Analyzing DECnet/OSI Phase V''. Van Hostrand Reinhold, 1991. ISBN 0-442-00375-7.<br />
<br />
* James Martin, Joe Leben, ''DECnet Phase V: An OSI Implementation''. Digital Press, 1992. ISBN 1-55580-769-0.<br />
<br />
* DECnet-Plus manuals for OpenVMS are available at http://www.hp.com/go/openvms/doc/<br />
<br />
* DECnet Phase IV OpenVMS manuals for DECnet Phase IV; these Phase IV manuals are archived on OpenVMS Freeware V5.0 distribution, at http://www.hp.com/go/openvms/freeware and other sites.<br />
<br />
* DECnet Phase IV architecture manuals (including DDCMP, MOP, NICE, NSP, DAP, CTERM, routing); at http://ftp.digital.com/pub/DEC/DECnet/PhaseIV/ and other sites.<br />
<br />
==See also==<br />
<br />
* [[HECnet]], a hobbyist DECnet bridged over IP.<br />
<br />
==Related articles and practical guides==<br />
<br />
* [[DECnet on VMS]]<br />
<br />
* [[DECnet on RSX-11M]]<br />
<br />
* [[DECnet on RSTS/E]]<br />
<br />
[[Category:Network Protocols]]<br />
[[Category:VMS]]<br />
[[Category:DECnet]]</div>Paul Koninghttps://gunkies.org/w/index.php?title=RSTS/E&diff=12745RSTS/E2016-12-07T20:30:11Z<p>Paul Koning: /* Overview */ Adjust the terminals and job limits discussion</p>
<hr />
<div>{{wp-orig}}<br />
{{infobox OS<br />
| name = RSTS/E<br />
| creator = [[Digital Equipment Corporation|DEC]]<br />
| architecture = [[PDP-11]]<br />
}}<br />
'''RSTS/E''' (an acronym for '''Resource Sharing Time Sharing Extended''') was a [[multi-user]] [[time-shared]] [[operating system]] developed by [[Digital Equipment Corporation]] ("DEC") (now part of [[Hewlett Packard]]) for the [[PDP-11]] series of 16-bit [[minicomputers]], and used primarily during the [[1970s]] and [[1980s]], although some installations were still being upgraded well into the [[1990s]]. <br />
<br />
== History ==<br />
<br />
RSTS/E started as [[RSTS-11]], for the [[PDP-11/20]]. Unlike RSTS/E, it ran on PDP-11s without memory mapping hardware. RSTS-11 only supported the BASIC-PLUS programming language. RSTS/E (V5A) was introduced in 1973, to take advantage of the memory mapping hardware and larger memory support introduced with the PDP-11/45. Starting with V5B, RSTS/E supported multiple programming languages, although that support was not made official until some time later.<br />
<br />
The cost of micro computers dropped so drastically, and their performance rose so radically, that minicomputers such as the PDP-11 were no longer cost effective. In the late 1990s DEC sold its PDP-11 software business to a company named Mentec [http://www.mentec.com/], and DEC then essentially discontinued releases of RSTS in order to concentrate on their [[VAX]] series of mainframe computers.<br />
<br />
Mentec would later publicly grant a no-cost license to anyone for non-commercial hobby purpose use of the operating system software developed for the PDP-11, and as the result of the release (for non-commercial use) of a PDP-11 emulator for the IBM-PC, as well as image copies of disk drives of RSTS which exist on the Internet, it is possible for a hobbyist to run RSTS/E on a personal computer in software emulation as fast or faster than it originally ran on the real hardware.<br />
<br />
The last release of RSTS/E was version 10.1A(1998). DEC would later be purchased by [[Compaq]], which itself later merged with [[Hewlett Packard]].<br />
<br />
== Overview == <br />
<br />
The RSTS/E Operating System is usually referred to just as "RSTS" and this article will generally use the shorter form. The acronym was usually pronounced as "RIST-ess" or "RIST-uhs". RSTS was primarily programmed using an extended version of the [[BASIC programming language]] which DEC called "[[BASIC-PLUS]]." Essentially all of the system software for the operating system, including the programs for resource accounting, login, logout and managing the system, were written using BASIC-PLUS.<br />
<br />
RSTS operates strictly in text mode as it used non-graphical [[computer terminal]]s (and modems) connected to it by the equivalent of serial ports, and uses a [[command line interpreter]] (or CLI) whose primary command language is BASIC-PLUS, although special "CCL" (Concise Command Language) commands which can be installed by the System Manager may be used. A CCL is analogous to a shortcut to a program on a Windows system or a symbolic link on Unix-based systems, although a CCL is installed as a memory-resident command each time the system is restarted, it is not permanent like a disk file. Later versions of RSTS include [[DIGITAL Command Language|DCL]] as a choice for the CLI, giving users access to essentially the same command language used in [[RSX-11]] and, later, [[OpenVMS]]. Starting with RSTS V9.0, command files containing DCL commands were supported for [[batch]] jobs, and also as indirect command files.<br />
<br />
As many as 127 terminals could be connected to a RSTS system, depending on the [[processor]] being used, the amount of [[main memory]] and disk space, and the system load. Most RSTS systems had nowhere near that many terminals. As many as 63 concurrent jobs (processes, execution states) were supported. These might be interactive jobs (controlled by a terminal), detached (similar to Unix "daemons"), or [[batch]] jobs (controlled by a batch command file). A typical interactive job would interact only with its control terminal, but special programming techniques enabled the use of additional terminals ("multi terminal mode"), which is why 127 terminals were potentially useable even though the interactive job limit is at most 63.<br />
<br />
== Use == <br />
<br />
Users connected to the system by typing the LOGIN command (or HELLO) at a logged-out terminal and pressing return. Actually, typing any command at a logged-out terminal simply started the LOGIN program which then interpreted the command. If it was one of the commands which were allowed to be used by a user that is not yet logged in ("Logged Out"), then the associated program for that command was CHAINed to, otherwise the message "Please say HELLO" was printed on the terminal. One could determine the status of a terminal by the prompt printed by the command interpreter, usually the BASIC-PLUS run-time system. A logged-in user was given the prompt "Ready" and a user who is logged out is given the prompt "Bye".<br />
<br />
A user would log in by supplying their user number and password. User numbers consisted of a project number (this would be the equivalent of a group number in Unix), a comma, and a programmer number. Both numbers were in the range of 0 to 254, with special exceptions. When specifying an account, the project and programmer number were enclosed in brackets. A typical user number could be [10,5] (project 10, programmer 5), [2,146], [254,31], or [200,220], etc. When a user was running a system program while logged out (because the system manager had enabled it) their user number would appear as [0,0]. Thus that is not a valid account number.<br />
<br />
In every project, the programmer number 0 was usually reserved as a group account, as it could be referenced by the special symbol #. If one's user number were [20,103], a reference to a file name beginning with "#" would refer to a file stored in the account of the user number [20,0]. This feature would be useful in educational environments, as programmer number 0 could be issued to the instructor of a class, and the individuals students given accounts with the same project number, and the instructor could store in his account files marked as shared only for that project number (which would be students in that class only, and no other).<br />
<br />
Two special classes of project numbers existed. Project numbers of 0 were generally reserved for system software. Project numbers of 1 are privileged accounts, equivalent to the single account "root" on Unix systems, except that the account numbers [1,0] through [1,254] are all privileged accounts. <br />
<br />
There are also certain special accounts on the system. The account [0,1] is used to store the operating system file itself, all run-time library systems, and certain system files relating to booting the system (author's comments appear on the right in bold):<br />
<br />
<pre><br />
Ready<br />
<br />
DIR [0,1]<br />
Name .Ext Size Prot Date SY:[0,1]<br />
BADB .SYS 0P < 63> 06-Jun-98 '''List of bad blocks'''<br />
SATT .SYS 3CP < 63> 06-Jun-98 '''Bitmap of allocated disk storage''' <br />
INIT .SYS 419P < 40> 06-Jun-98 '''Operating system loader program'''<br />
ERR .ERR 16CP < 40> 06-Jun-98 '''System error messages'''<br />
RSTS .SIL 307CP < 60> 06-Jun-98 '''Operating system itself'''<br />
BASIC .RTS 73CP < 60> 06-Jun-98 '''BASIC-PLUS run time system'''<br />
RT11 .RTS 20C < 60> 06-Jun-98 '''[[RT-11]] run time system'''<br />
SWAP .SYS 1024CP < 63> 06-Jun-98 '''System swap file''' <br />
CRASH .SYS 35CP < 63> 06-Jun-98 '''System crash dump'''<br />
RSX .RTS 16C < 60> 23-Sep-79 '''[[RSX-11]] run-time system'''<br />
TECO .RTS 39C < 60> 24-Sep-79 '''[[Text Editor and Corrector|TECO]] text editor'''<br />
<br />
Total of 1952 blocks in 11 files in SY:[0,1]<br />
<br />
<br />
Ready<br />
</pre><br />
<br />
<br />
'''Ready''' in this case is the system command prompt, similar to the C> prompt in MS-DOS or the % prompt in many Unix-based shells. The '''DIR''' command is an installed CCL equivalent to a RUN command for the DIRECT program. [0,1] is the account number (and directory name) of the main system storage account. It would be referred to as "project number 0, programmer number 1".<br />
<br />
The numbers shown after each file represent its size in disk blocks, a block being 512 [[byte]]s or 1/2 kilobyte (K). "C" indicates the file is contiguous (is stored as one file without being separated into pieces, similar to files on a [[Microsoft Windows]] system after a drive has been [[defragementation|defragmented]]), while "P" indicates it is specially protected (cannot be deleted, even by a privileged user unless the P bit is cleared using the "Refresh" system initialization option). The numbers in brackets (like "< 40>") represent the protections for the file, which is always displayed in decimal. Protections indicate if the file may be seen by any other user, by other users with the same programmer number, if the file is read only or if it may be altered by another user, and whether the file may be executed by an ordimary user giving them additional privileges. These [[protection code]]s are very similar to the r, w and x protections in [[Unix]] and similar operating systems such as [[BSD]] and [[Linux]]. Code 60 is equivalent to a private file, code 62 is a private non-deletable file, and 40 is a public file.<br />
<br />
Certain other system files are kept in account [1,1]. The account [1,2] is the system-wide public library, and any public file in that account could be referenced by prefixing its name with a dollar sign ($). "!" is used for account [1,3], "%" for [1,4] and "&amp;" for [1,5]. The account [1,1] also had the special privilege of being the only account where a user logged in under that account is permitted to execute the POKE system call to put values into any memory in the system. Thus the account number [1,1] is the closest equivalent to "root" on Unix-based systems.<br />
<br />
When logged in, a user may either type language statements in the BASIC-PLUS programming language, issue the RUN command to run a program, or issue a special command called a CCL to execute a program with command options. <br />
<br />
One of the features of RSTS is the means for the execution of programs and the environment used to run them. The various environments allowed for programming in BASIC-PLUS, the enhanced BASIC Plus 2, and in more traditional programming languages such as [[COBOL]] and [[FORTRAN]]. These environments were separate from each other such that one could start a program from one environment and switch to a different environment to run a different program. These environments were referred to as "[[run-time system]]s".<br />
<br />
One of the most powerful text editors ever developed, the [[Text Editor and Corrector|TECO]] editor, was itself implemented as a run-time system partly to maximize the amount of memory available for the text buffer, and partly because it was originally ported to RSTS/E before general support for assembly language programming was released. (The RT11 and RSX emulation run time systems appeared later.)<br />
<br />
Programs written in BASIC-PLUS ran under the BASIC run-time system, which allowed them 32K bytes of memory. If one wrote programs in a language that permitted true binary executables such as FORTRAN or the Macro Assembler or others that ran under the [[RT-11]] run-time system, the amount of memory available would be 56K.<br />
<br />
Programs written for the [[RSX-11|RSX]] run time system such as COBOL, the Macro Assembler, or the later releases of BASIC Plus 2, the amount of memory available to such a binary program would still be 56K due to the requirements of the RSX Run-Time System being allowed the top 8K to use for itself. RSTS version 7 and later allowed the RSX Run-Time system to be included in the kernel of RSTS, making it completely "disappear" from the user address space, thus allowing 62K of memory for user programs. The remaining 2K still could not be used, either because of software limitations in RSTS memory management, or deliberately, to catch accidental wraparound of addresses in user programs.<br />
<br />
Programs got around the limitations of the amount of available memory by using libraries (when permissible), by complicated overlay strategies, or by calling other programs ("Chaining") and passing them commands in a shared memory area called "Core Common," among other practices.<br />
<br />
== RSTS Release Dates and historical notes ==<br />
<br />
{|border="1"<br />
|Version||Date||Notes<br />
|-<br />
|V03A-19||1970?<br />
|-<br />
|V03C-32||1971?<br />
|-<br />
|V04A-12||1972 October<br />
|-<br />
|V05-21||1973 July||First version called "RSTS/E".<br />
|-<br />
|V05B-24||1974 September||<br />
|-<br />
|V05C-01||1975 February||<br />
|-<br />
|V04B-17||1975 July||Final patch release of V04; last version for non-MMU machines.<br />
|-<br />
|V06A-02||1975 July||Last version to be installed using DOS-11.<br />
|-<br />
|V06B||1977 January||<br />
|-<br />
|V06C||1978 July||First release of RSTS/E supporting DECnet.<br />
|-<br />
|7.0||1979 September||<br />
|-<br />
|7.1||1981 December||First release of RSTS/E supporting DECnet Phase III.<br />
|-<br />
|7.2||1982 May||<br />
|-<br />
|7.2A||1982 June||<br />
|-<br />
|8.0||1983 November||<br />
|-<br />
|8.0C||1983 November||<br />
|-<br />
|8.0F||1984 November||<br />
|-<br />
|9.0||1985 May||DCL becomes the default command line interface.<br />
|-<br />
|8.0G||1985 September||Final patch release of 8.0<br />
|-<br />
|9.1||1985 October||<br />
|-<br />
|9.2||1986 April||<br />
|-<br />
|9.3||1986 December||First release of RSTS/E supporting DECnet Phase IV.<br />
|-<br />
|9.4||1987 June||<br />
|-<br />
|9.5||1987 October||<br />
|-<br />
|9.6||1988 August||<br />
|-<br />
|9.7||1989 June||<br />
|-<br />
|10.0||1990 September||<br />
|-<br />
|10.1||1992 August||<br />
|-<br />
|10.1A||1998||First and only Mentec release, Year 2000 fixes only.<br />
|-<br />
|}<br />
<br />
== Licensing == <br />
<br />
RSTS/E is available under a non-commercial free licence for hobbyist use on the Supnik emulator.<br />
<br />
RSTS/E is still available under a commercial license from Mentec.<br />
<br />
{{sect-stub}}<br />
== Documentation ==<br />
=== '''Official''' ===<br />
===== Version 9.x =====<br />
[http://elvira.stacken.kth.se/rstsdoc/rsts-doc-v97/v9.7-v1-k-aa-2666j-tc-rsts-e-system-installation-and-update-guide-v9.7.pdf RSTS/E System Installation and Update Guide v9.7]<br />
<br />
=== Practical Guides ===<br />
===== System Generation =====<br />
[[FireflyST's user notes for RSTS/E 9.x system generation]]<br />
{{sect-stub}}<br />
<br />
<br />
[[Category:DEC Operating Systems]]<br />
[[Category:PDP-11 Operating Systems]]</div>Paul Koninghttps://gunkies.org/w/index.php?title=RSTS/E&diff=12744RSTS/E2016-12-07T20:23:53Z<p>Paul Koning: /* RSTS Release Dates and historical notes */</p>
<hr />
<div>{{wp-orig}}<br />
{{infobox OS<br />
| name = RSTS/E<br />
| creator = [[Digital Equipment Corporation|DEC]]<br />
| architecture = [[PDP-11]]<br />
}}<br />
'''RSTS/E''' (an acronym for '''Resource Sharing Time Sharing Extended''') was a [[multi-user]] [[time-shared]] [[operating system]] developed by [[Digital Equipment Corporation]] ("DEC") (now part of [[Hewlett Packard]]) for the [[PDP-11]] series of 16-bit [[minicomputers]], and used primarily during the [[1970s]] and [[1980s]], although some installations were still being upgraded well into the [[1990s]]. <br />
<br />
== History ==<br />
<br />
RSTS/E started as [[RSTS-11]], for the [[PDP-11/20]]. Unlike RSTS/E, it ran on PDP-11s without memory mapping hardware. RSTS-11 only supported the BASIC-PLUS programming language. RSTS/E (V5A) was introduced in 1973, to take advantage of the memory mapping hardware and larger memory support introduced with the PDP-11/45. Starting with V5B, RSTS/E supported multiple programming languages, although that support was not made official until some time later.<br />
<br />
The cost of micro computers dropped so drastically, and their performance rose so radically, that minicomputers such as the PDP-11 were no longer cost effective. In the late 1990s DEC sold its PDP-11 software business to a company named Mentec [http://www.mentec.com/], and DEC then essentially discontinued releases of RSTS in order to concentrate on their [[VAX]] series of mainframe computers.<br />
<br />
Mentec would later publicly grant a no-cost license to anyone for non-commercial hobby purpose use of the operating system software developed for the PDP-11, and as the result of the release (for non-commercial use) of a PDP-11 emulator for the IBM-PC, as well as image copies of disk drives of RSTS which exist on the Internet, it is possible for a hobbyist to run RSTS/E on a personal computer in software emulation as fast or faster than it originally ran on the real hardware.<br />
<br />
The last release of RSTS/E was version 10.1A(1998). DEC would later be purchased by [[Compaq]], which itself later merged with [[Hewlett Packard]].<br />
<br />
== Overview == <br />
<br />
The RSTS/E Operating System is usually referred to just as "RSTS" and this article will generally use the shorter form. The acronym was usually pronounced as "RIST-ess" or "RIST-uhs". RSTS was primarily programmed using an extended version of the [[BASIC programming language]] which DEC called "[[BASIC-PLUS]]." Essentially all of the system software for the operating system, including the programs for resource accounting, login, logout and managing the system, were written using BASIC-PLUS.<br />
<br />
RSTS operates strictly in text mode as it used non-graphical [[computer terminal]]s (and modems) connected to it by the equivalent of serial ports, and uses a [[command line interpreter]] (or CLI) whose primary command language is BASIC-PLUS, although special "CCL" (Concise Command Language) commands which can be installed by the System Manager may be used. A CCL is analogous to a shortcut to a program on a Windows system or a symbolic link on Unix-based systems, although a CCL is installed as a memory-resident command each time the system is restarted, it is not permanent like a disk file. Later versions of RSTS include [[DIGITAL Command Language|DCL]] as a choice for the CLI, giving users access to the same command language used in [[RSX-11]] and, later, [[OpenVMS]].<br />
<br />
As many as 63 terminals could be connected to a RSTS system, depending on the [[processor]] being used, the amount of [[main memory]] and disk space, and the system load. Most RSTS systems had nowhere near that many terminals. Users could also submit jobs to be run in [[batch]] mode. There was also a batch system called "ATPK" that allowed users to run a series of commands on another terminal in semi-interactive mode similar to batch commands in [[MS-DOS]].<br />
<br />
== Use == <br />
<br />
Users connected to the system by typing the LOGIN command (or HELLO) at a logged-out terminal and pressing return. Actually, typing any command at a logged-out terminal simply started the LOGIN program which then interpreted the command. If it was one of the commands which were allowed to be used by a user that is not yet logged in ("Logged Out"), then the associated program for that command was CHAINed to, otherwise the message "Please say HELLO" was printed on the terminal. One could determine the status of a terminal by the prompt printed by the command interpreter, usually the BASIC-PLUS run-time system. A logged-in user was given the prompt "Ready" and a user who is logged out is given the prompt "Bye".<br />
<br />
A user would log in by supplying their user number and password. User numbers consisted of a project number (this would be the equivalent of a group number in Unix), a comma, and a programmer number. Both numbers were in the range of 0 to 254, with special exceptions. When specifying an account, the project and programmer number were enclosed in brackets. A typical user number could be [10,5] (project 10, programmer 5), [2,146], [254,31], or [200,220], etc. When a user was running a system program while logged out (because the system manager had enabled it) their user number would appear as [0,0]. Thus that is not a valid account number.<br />
<br />
In every project, the programmer number 0 was usually reserved as a group account, as it could be referenced by the special symbol #. If one's user number were [20,103], a reference to a file name beginning with "#" would refer to a file stored in the account of the user number [20,0]. This feature would be useful in educational environments, as programmer number 0 could be issued to the instructor of a class, and the individuals students given accounts with the same project number, and the instructor could store in his account files marked as shared only for that project number (which would be students in that class only, and no other).<br />
<br />
Two special classes of project numbers existed. Project numbers of 0 were generally reserved for system software. Project numbers of 1 are privileged accounts, equivalent to the single account "root" on Unix systems, except that the account numbers [1,0] through [1,254] are all privileged accounts. <br />
<br />
There are also certain special accounts on the system. The account [0,1] is used to store the operating system file itself, all run-time library systems, and certain system files relating to booting the system (author's comments appear on the right in bold):<br />
<br />
<pre><br />
Ready<br />
<br />
DIR [0,1]<br />
Name .Ext Size Prot Date SY:[0,1]<br />
BADB .SYS 0P < 63> 06-Jun-98 '''List of bad blocks'''<br />
SATT .SYS 3CP < 63> 06-Jun-98 '''Bitmap of allocated disk storage''' <br />
INIT .SYS 419P < 40> 06-Jun-98 '''Operating system loader program'''<br />
ERR .ERR 16CP < 40> 06-Jun-98 '''System error messages'''<br />
RSTS .SIL 307CP < 60> 06-Jun-98 '''Operating system itself'''<br />
BASIC .RTS 73CP < 60> 06-Jun-98 '''BASIC-PLUS run time system'''<br />
RT11 .RTS 20C < 60> 06-Jun-98 '''[[RT-11]] run time system'''<br />
SWAP .SYS 1024CP < 63> 06-Jun-98 '''System swap file''' <br />
CRASH .SYS 35CP < 63> 06-Jun-98 '''System crash dump'''<br />
RSX .RTS 16C < 60> 23-Sep-79 '''[[RSX-11]] run-time system'''<br />
TECO .RTS 39C < 60> 24-Sep-79 '''[[Text Editor and Corrector|TECO]] text editor'''<br />
<br />
Total of 1952 blocks in 11 files in SY:[0,1]<br />
<br />
<br />
Ready<br />
</pre><br />
<br />
<br />
'''Ready''' in this case is the system command prompt, similar to the C> prompt in MS-DOS or the % prompt in many Unix-based shells. The '''DIR''' command is an installed CCL equivalent to a RUN command for the DIRECT program. [0,1] is the account number (and directory name) of the main system storage account. It would be referred to as "project number 0, programmer number 1".<br />
<br />
The numbers shown after each file represent its size in disk blocks, a block being 512 [[byte]]s or 1/2 kilobyte (K). "C" indicates the file is contiguous (is stored as one file without being separated into pieces, similar to files on a [[Microsoft Windows]] system after a drive has been [[defragementation|defragmented]]), while "P" indicates it is specially protected (cannot be deleted, even by a privileged user unless the P bit is cleared using the "Refresh" system initialization option). The numbers in brackets (like "< 40>") represent the protections for the file, which is always displayed in decimal. Protections indicate if the file may be seen by any other user, by other users with the same programmer number, if the file is read only or if it may be altered by another user, and whether the file may be executed by an ordimary user giving them additional privileges. These [[protection code]]s are very similar to the r, w and x protections in [[Unix]] and similar operating systems such as [[BSD]] and [[Linux]]. Code 60 is equivalent to a private file, code 62 is a private non-deletable file, and 40 is a public file.<br />
<br />
Certain other system files are kept in account [1,1]. The account [1,2] is the system-wide public library, and any public file in that account could be referenced by prefixing its name with a dollar sign ($). "!" is used for account [1,3], "%" for [1,4] and "&amp;" for [1,5]. The account [1,1] also had the special privilege of being the only account where a user logged in under that account is permitted to execute the POKE system call to put values into any memory in the system. Thus the account number [1,1] is the closest equivalent to "root" on Unix-based systems.<br />
<br />
When logged in, a user may either type language statements in the BASIC-PLUS programming language, issue the RUN command to run a program, or issue a special command called a CCL to execute a program with command options. <br />
<br />
One of the features of RSTS is the means for the execution of programs and the environment used to run them. The various environments allowed for programming in BASIC-PLUS, the enhanced BASIC Plus 2, and in more traditional programming languages such as [[COBOL]] and [[FORTRAN]]. These environments were separate from each other such that one could start a program from one environment and switch to a different environment to run a different program. These environments were referred to as "[[run-time system]]s".<br />
<br />
One of the most powerful text editors ever developed, the [[Text Editor and Corrector|TECO]] editor, was itself implemented as a run-time system partly to maximize the amount of memory available for the text buffer, and partly because it was originally ported to RSTS/E before general support for assembly language programming was released. (The RT11 and RSX emulation run time systems appeared later.)<br />
<br />
Programs written in BASIC-PLUS ran under the BASIC run-time system, which allowed them 32K bytes of memory. If one wrote programs in a language that permitted true binary executables such as FORTRAN or the Macro Assembler or others that ran under the [[RT-11]] run-time system, the amount of memory available would be 56K.<br />
<br />
Programs written for the [[RSX-11|RSX]] run time system such as COBOL, the Macro Assembler, or the later releases of BASIC Plus 2, the amount of memory available to such a binary program would still be 56K due to the requirements of the RSX Run-Time System being allowed the top 8K to use for itself. RSTS version 7 and later allowed the RSX Run-Time system to be included in the kernel of RSTS, making it completely "disappear" from the user address space, thus allowing 62K of memory for user programs. The remaining 2K still could not be used, either because of software limitations in RSTS memory management, or deliberately, to catch accidental wraparound of addresses in user programs.<br />
<br />
Programs got around the limitations of the amount of available memory by using libraries (when permissible), by complicated overlay strategies, or by calling other programs ("Chaining") and passing them commands in a shared memory area called "Core Common," among other practices.<br />
<br />
== RSTS Release Dates and historical notes ==<br />
<br />
{|border="1"<br />
|Version||Date||Notes<br />
|-<br />
|V03A-19||1970?<br />
|-<br />
|V03C-32||1971?<br />
|-<br />
|V04A-12||1972 October<br />
|-<br />
|V05-21||1973 July||First version called "RSTS/E".<br />
|-<br />
|V05B-24||1974 September||<br />
|-<br />
|V05C-01||1975 February||<br />
|-<br />
|V04B-17||1975 July||Final patch release of V04; last version for non-MMU machines.<br />
|-<br />
|V06A-02||1975 July||Last version to be installed using DOS-11.<br />
|-<br />
|V06B||1977 January||<br />
|-<br />
|V06C||1978 July||First release of RSTS/E supporting DECnet.<br />
|-<br />
|7.0||1979 September||<br />
|-<br />
|7.1||1981 December||First release of RSTS/E supporting DECnet Phase III.<br />
|-<br />
|7.2||1982 May||<br />
|-<br />
|7.2A||1982 June||<br />
|-<br />
|8.0||1983 November||<br />
|-<br />
|8.0C||1983 November||<br />
|-<br />
|8.0F||1984 November||<br />
|-<br />
|9.0||1985 May||DCL becomes the default command line interface.<br />
|-<br />
|8.0G||1985 September||Final patch release of 8.0<br />
|-<br />
|9.1||1985 October||<br />
|-<br />
|9.2||1986 April||<br />
|-<br />
|9.3||1986 December||First release of RSTS/E supporting DECnet Phase IV.<br />
|-<br />
|9.4||1987 June||<br />
|-<br />
|9.5||1987 October||<br />
|-<br />
|9.6||1988 August||<br />
|-<br />
|9.7||1989 June||<br />
|-<br />
|10.0||1990 September||<br />
|-<br />
|10.1||1992 August||<br />
|-<br />
|10.1A||1998||First and only Mentec release, Year 2000 fixes only.<br />
|-<br />
|}<br />
<br />
== Licensing == <br />
<br />
RSTS/E is available under a non-commercial free licence for hobbyist use on the Supnik emulator.<br />
<br />
RSTS/E is still available under a commercial license from Mentec.<br />
<br />
{{sect-stub}}<br />
== Documentation ==<br />
=== '''Official''' ===<br />
===== Version 9.x =====<br />
[http://elvira.stacken.kth.se/rstsdoc/rsts-doc-v97/v9.7-v1-k-aa-2666j-tc-rsts-e-system-installation-and-update-guide-v9.7.pdf RSTS/E System Installation and Update Guide v9.7]<br />
<br />
=== Practical Guides ===<br />
===== System Generation =====<br />
[[FireflyST's user notes for RSTS/E 9.x system generation]]<br />
{{sect-stub}}<br />
<br />
<br />
[[Category:DEC Operating Systems]]<br />
[[Category:PDP-11 Operating Systems]]</div>Paul Koninghttps://gunkies.org/w/index.php?title=RSTS/E&diff=12743RSTS/E2016-12-07T20:23:11Z<p>Paul Koning: /* RSTS Release Dates and historical notes */ Correct DECnet release points</p>
<hr />
<div>{{wp-orig}}<br />
{{infobox OS<br />
| name = RSTS/E<br />
| creator = [[Digital Equipment Corporation|DEC]]<br />
| architecture = [[PDP-11]]<br />
}}<br />
'''RSTS/E''' (an acronym for '''Resource Sharing Time Sharing Extended''') was a [[multi-user]] [[time-shared]] [[operating system]] developed by [[Digital Equipment Corporation]] ("DEC") (now part of [[Hewlett Packard]]) for the [[PDP-11]] series of 16-bit [[minicomputers]], and used primarily during the [[1970s]] and [[1980s]], although some installations were still being upgraded well into the [[1990s]]. <br />
<br />
== History ==<br />
<br />
RSTS/E started as [[RSTS-11]], for the [[PDP-11/20]]. Unlike RSTS/E, it ran on PDP-11s without memory mapping hardware. RSTS-11 only supported the BASIC-PLUS programming language. RSTS/E (V5A) was introduced in 1973, to take advantage of the memory mapping hardware and larger memory support introduced with the PDP-11/45. Starting with V5B, RSTS/E supported multiple programming languages, although that support was not made official until some time later.<br />
<br />
The cost of micro computers dropped so drastically, and their performance rose so radically, that minicomputers such as the PDP-11 were no longer cost effective. In the late 1990s DEC sold its PDP-11 software business to a company named Mentec [http://www.mentec.com/], and DEC then essentially discontinued releases of RSTS in order to concentrate on their [[VAX]] series of mainframe computers.<br />
<br />
Mentec would later publicly grant a no-cost license to anyone for non-commercial hobby purpose use of the operating system software developed for the PDP-11, and as the result of the release (for non-commercial use) of a PDP-11 emulator for the IBM-PC, as well as image copies of disk drives of RSTS which exist on the Internet, it is possible for a hobbyist to run RSTS/E on a personal computer in software emulation as fast or faster than it originally ran on the real hardware.<br />
<br />
The last release of RSTS/E was version 10.1A(1998). DEC would later be purchased by [[Compaq]], which itself later merged with [[Hewlett Packard]].<br />
<br />
== Overview == <br />
<br />
The RSTS/E Operating System is usually referred to just as "RSTS" and this article will generally use the shorter form. The acronym was usually pronounced as "RIST-ess" or "RIST-uhs". RSTS was primarily programmed using an extended version of the [[BASIC programming language]] which DEC called "[[BASIC-PLUS]]." Essentially all of the system software for the operating system, including the programs for resource accounting, login, logout and managing the system, were written using BASIC-PLUS.<br />
<br />
RSTS operates strictly in text mode as it used non-graphical [[computer terminal]]s (and modems) connected to it by the equivalent of serial ports, and uses a [[command line interpreter]] (or CLI) whose primary command language is BASIC-PLUS, although special "CCL" (Concise Command Language) commands which can be installed by the System Manager may be used. A CCL is analogous to a shortcut to a program on a Windows system or a symbolic link on Unix-based systems, although a CCL is installed as a memory-resident command each time the system is restarted, it is not permanent like a disk file. Later versions of RSTS include [[DIGITAL Command Language|DCL]] as a choice for the CLI, giving users access to the same command language used in [[RSX-11]] and, later, [[OpenVMS]].<br />
<br />
As many as 63 terminals could be connected to a RSTS system, depending on the [[processor]] being used, the amount of [[main memory]] and disk space, and the system load. Most RSTS systems had nowhere near that many terminals. Users could also submit jobs to be run in [[batch]] mode. There was also a batch system called "ATPK" that allowed users to run a series of commands on another terminal in semi-interactive mode similar to batch commands in [[MS-DOS]].<br />
<br />
== Use == <br />
<br />
Users connected to the system by typing the LOGIN command (or HELLO) at a logged-out terminal and pressing return. Actually, typing any command at a logged-out terminal simply started the LOGIN program which then interpreted the command. If it was one of the commands which were allowed to be used by a user that is not yet logged in ("Logged Out"), then the associated program for that command was CHAINed to, otherwise the message "Please say HELLO" was printed on the terminal. One could determine the status of a terminal by the prompt printed by the command interpreter, usually the BASIC-PLUS run-time system. A logged-in user was given the prompt "Ready" and a user who is logged out is given the prompt "Bye".<br />
<br />
A user would log in by supplying their user number and password. User numbers consisted of a project number (this would be the equivalent of a group number in Unix), a comma, and a programmer number. Both numbers were in the range of 0 to 254, with special exceptions. When specifying an account, the project and programmer number were enclosed in brackets. A typical user number could be [10,5] (project 10, programmer 5), [2,146], [254,31], or [200,220], etc. When a user was running a system program while logged out (because the system manager had enabled it) their user number would appear as [0,0]. Thus that is not a valid account number.<br />
<br />
In every project, the programmer number 0 was usually reserved as a group account, as it could be referenced by the special symbol #. If one's user number were [20,103], a reference to a file name beginning with "#" would refer to a file stored in the account of the user number [20,0]. This feature would be useful in educational environments, as programmer number 0 could be issued to the instructor of a class, and the individuals students given accounts with the same project number, and the instructor could store in his account files marked as shared only for that project number (which would be students in that class only, and no other).<br />
<br />
Two special classes of project numbers existed. Project numbers of 0 were generally reserved for system software. Project numbers of 1 are privileged accounts, equivalent to the single account "root" on Unix systems, except that the account numbers [1,0] through [1,254] are all privileged accounts. <br />
<br />
There are also certain special accounts on the system. The account [0,1] is used to store the operating system file itself, all run-time library systems, and certain system files relating to booting the system (author's comments appear on the right in bold):<br />
<br />
<pre><br />
Ready<br />
<br />
DIR [0,1]<br />
Name .Ext Size Prot Date SY:[0,1]<br />
BADB .SYS 0P < 63> 06-Jun-98 '''List of bad blocks'''<br />
SATT .SYS 3CP < 63> 06-Jun-98 '''Bitmap of allocated disk storage''' <br />
INIT .SYS 419P < 40> 06-Jun-98 '''Operating system loader program'''<br />
ERR .ERR 16CP < 40> 06-Jun-98 '''System error messages'''<br />
RSTS .SIL 307CP < 60> 06-Jun-98 '''Operating system itself'''<br />
BASIC .RTS 73CP < 60> 06-Jun-98 '''BASIC-PLUS run time system'''<br />
RT11 .RTS 20C < 60> 06-Jun-98 '''[[RT-11]] run time system'''<br />
SWAP .SYS 1024CP < 63> 06-Jun-98 '''System swap file''' <br />
CRASH .SYS 35CP < 63> 06-Jun-98 '''System crash dump'''<br />
RSX .RTS 16C < 60> 23-Sep-79 '''[[RSX-11]] run-time system'''<br />
TECO .RTS 39C < 60> 24-Sep-79 '''[[Text Editor and Corrector|TECO]] text editor'''<br />
<br />
Total of 1952 blocks in 11 files in SY:[0,1]<br />
<br />
<br />
Ready<br />
</pre><br />
<br />
<br />
'''Ready''' in this case is the system command prompt, similar to the C> prompt in MS-DOS or the % prompt in many Unix-based shells. The '''DIR''' command is an installed CCL equivalent to a RUN command for the DIRECT program. [0,1] is the account number (and directory name) of the main system storage account. It would be referred to as "project number 0, programmer number 1".<br />
<br />
The numbers shown after each file represent its size in disk blocks, a block being 512 [[byte]]s or 1/2 kilobyte (K). "C" indicates the file is contiguous (is stored as one file without being separated into pieces, similar to files on a [[Microsoft Windows]] system after a drive has been [[defragementation|defragmented]]), while "P" indicates it is specially protected (cannot be deleted, even by a privileged user unless the P bit is cleared using the "Refresh" system initialization option). The numbers in brackets (like "< 40>") represent the protections for the file, which is always displayed in decimal. Protections indicate if the file may be seen by any other user, by other users with the same programmer number, if the file is read only or if it may be altered by another user, and whether the file may be executed by an ordimary user giving them additional privileges. These [[protection code]]s are very similar to the r, w and x protections in [[Unix]] and similar operating systems such as [[BSD]] and [[Linux]]. Code 60 is equivalent to a private file, code 62 is a private non-deletable file, and 40 is a public file.<br />
<br />
Certain other system files are kept in account [1,1]. The account [1,2] is the system-wide public library, and any public file in that account could be referenced by prefixing its name with a dollar sign ($). "!" is used for account [1,3], "%" for [1,4] and "&amp;" for [1,5]. The account [1,1] also had the special privilege of being the only account where a user logged in under that account is permitted to execute the POKE system call to put values into any memory in the system. Thus the account number [1,1] is the closest equivalent to "root" on Unix-based systems.<br />
<br />
When logged in, a user may either type language statements in the BASIC-PLUS programming language, issue the RUN command to run a program, or issue a special command called a CCL to execute a program with command options. <br />
<br />
One of the features of RSTS is the means for the execution of programs and the environment used to run them. The various environments allowed for programming in BASIC-PLUS, the enhanced BASIC Plus 2, and in more traditional programming languages such as [[COBOL]] and [[FORTRAN]]. These environments were separate from each other such that one could start a program from one environment and switch to a different environment to run a different program. These environments were referred to as "[[run-time system]]s".<br />
<br />
One of the most powerful text editors ever developed, the [[Text Editor and Corrector|TECO]] editor, was itself implemented as a run-time system partly to maximize the amount of memory available for the text buffer, and partly because it was originally ported to RSTS/E before general support for assembly language programming was released. (The RT11 and RSX emulation run time systems appeared later.)<br />
<br />
Programs written in BASIC-PLUS ran under the BASIC run-time system, which allowed them 32K bytes of memory. If one wrote programs in a language that permitted true binary executables such as FORTRAN or the Macro Assembler or others that ran under the [[RT-11]] run-time system, the amount of memory available would be 56K.<br />
<br />
Programs written for the [[RSX-11|RSX]] run time system such as COBOL, the Macro Assembler, or the later releases of BASIC Plus 2, the amount of memory available to such a binary program would still be 56K due to the requirements of the RSX Run-Time System being allowed the top 8K to use for itself. RSTS version 7 and later allowed the RSX Run-Time system to be included in the kernel of RSTS, making it completely "disappear" from the user address space, thus allowing 62K of memory for user programs. The remaining 2K still could not be used, either because of software limitations in RSTS memory management, or deliberately, to catch accidental wraparound of addresses in user programs.<br />
<br />
Programs got around the limitations of the amount of available memory by using libraries (when permissible), by complicated overlay strategies, or by calling other programs ("Chaining") and passing them commands in a shared memory area called "Core Common," among other practices.<br />
<br />
== RSTS Release Dates and historical notes ==<br />
<br />
{|border="1"<br />
|Version||Date||Notes<br />
|-<br />
|V03A-19||1970?<br />
|-<br />
|V03C-32||1971?<br />
|-<br />
|V04A-12||1972 October<br />
|-<br />
|V05-21||1973 July||First version called "RSTS/E".<br />
|-<br />
|V05B-24||1974 September||<br />
|-<br />
|V05C-01||1975 February||<br />
|-<br />
|V04B-17||1975 July||Final patch release of V04; last version for non-MMU machines.<br />
|-<br />
|V06A-02||1975 July||Last version to be installed using DOS-11.<br />
|-<br />
|V06B||1977 January||<br />
|-<br />
|V06C||1978 July||First release of RSTS/E supporting DECnet.<br />
|-<br />
|7.0||1979 September||<br />
|-<br />
|7.1||1981 December||First release of RSTS/E supporting DECnet Phase III.<br />
|-<br />
|7.2||1982 May||<br />
|-<br />
|7.2A||1982 June||<br />
|-<br />
|8.0||1983 November||<br />
|-<br />
|8.0C||1983 November||<br />
|-<br />
|8.0F||1984 November||<br />
|-<br />
|9.0||1985 May||DCL supercedes MCR as of this release.<br />
|-<br />
|8.0G||1985 September||Final patch release of 8.0<br />
|-<br />
|9.1||1985 October||<br />
|-<br />
|9.2||1986 April||<br />
|-<br />
|9.3||1986 December||First release of RSTS/E supporting DECnet Phase IV.<br />
|-<br />
|9.4||1987 June||<br />
|-<br />
|9.5||1987 October||<br />
|-<br />
|9.6||1988 August||<br />
|-<br />
|9.7||1989 June||<br />
|-<br />
|10.0||1990 September||<br />
|-<br />
|10.1||1992 August||<br />
|-<br />
|10.1A||1998||First and only Mentec release, Year 2000 fixes only.<br />
|-<br />
|}<br />
<br />
== Licensing == <br />
<br />
RSTS/E is available under a non-commercial free licence for hobbyist use on the Supnik emulator.<br />
<br />
RSTS/E is still available under a commercial license from Mentec.<br />
<br />
{{sect-stub}}<br />
== Documentation ==<br />
=== '''Official''' ===<br />
===== Version 9.x =====<br />
[http://elvira.stacken.kth.se/rstsdoc/rsts-doc-v97/v9.7-v1-k-aa-2666j-tc-rsts-e-system-installation-and-update-guide-v9.7.pdf RSTS/E System Installation and Update Guide v9.7]<br />
<br />
=== Practical Guides ===<br />
===== System Generation =====<br />
[[FireflyST's user notes for RSTS/E 9.x system generation]]<br />
{{sect-stub}}<br />
<br />
<br />
[[Category:DEC Operating Systems]]<br />
[[Category:PDP-11 Operating Systems]]</div>Paul Koninghttps://gunkies.org/w/index.php?title=RSTS/E&diff=12742RSTS/E2016-12-07T20:21:33Z<p>Paul Koning: /* Use */ Correct how P is cleared; tweak TECO RTS comments</p>
<hr />
<div>{{wp-orig}}<br />
{{infobox OS<br />
| name = RSTS/E<br />
| creator = [[Digital Equipment Corporation|DEC]]<br />
| architecture = [[PDP-11]]<br />
}}<br />
'''RSTS/E''' (an acronym for '''Resource Sharing Time Sharing Extended''') was a [[multi-user]] [[time-shared]] [[operating system]] developed by [[Digital Equipment Corporation]] ("DEC") (now part of [[Hewlett Packard]]) for the [[PDP-11]] series of 16-bit [[minicomputers]], and used primarily during the [[1970s]] and [[1980s]], although some installations were still being upgraded well into the [[1990s]]. <br />
<br />
== History ==<br />
<br />
RSTS/E started as [[RSTS-11]], for the [[PDP-11/20]]. Unlike RSTS/E, it ran on PDP-11s without memory mapping hardware. RSTS-11 only supported the BASIC-PLUS programming language. RSTS/E (V5A) was introduced in 1973, to take advantage of the memory mapping hardware and larger memory support introduced with the PDP-11/45. Starting with V5B, RSTS/E supported multiple programming languages, although that support was not made official until some time later.<br />
<br />
The cost of micro computers dropped so drastically, and their performance rose so radically, that minicomputers such as the PDP-11 were no longer cost effective. In the late 1990s DEC sold its PDP-11 software business to a company named Mentec [http://www.mentec.com/], and DEC then essentially discontinued releases of RSTS in order to concentrate on their [[VAX]] series of mainframe computers.<br />
<br />
Mentec would later publicly grant a no-cost license to anyone for non-commercial hobby purpose use of the operating system software developed for the PDP-11, and as the result of the release (for non-commercial use) of a PDP-11 emulator for the IBM-PC, as well as image copies of disk drives of RSTS which exist on the Internet, it is possible for a hobbyist to run RSTS/E on a personal computer in software emulation as fast or faster than it originally ran on the real hardware.<br />
<br />
The last release of RSTS/E was version 10.1A(1998). DEC would later be purchased by [[Compaq]], which itself later merged with [[Hewlett Packard]].<br />
<br />
== Overview == <br />
<br />
The RSTS/E Operating System is usually referred to just as "RSTS" and this article will generally use the shorter form. The acronym was usually pronounced as "RIST-ess" or "RIST-uhs". RSTS was primarily programmed using an extended version of the [[BASIC programming language]] which DEC called "[[BASIC-PLUS]]." Essentially all of the system software for the operating system, including the programs for resource accounting, login, logout and managing the system, were written using BASIC-PLUS.<br />
<br />
RSTS operates strictly in text mode as it used non-graphical [[computer terminal]]s (and modems) connected to it by the equivalent of serial ports, and uses a [[command line interpreter]] (or CLI) whose primary command language is BASIC-PLUS, although special "CCL" (Concise Command Language) commands which can be installed by the System Manager may be used. A CCL is analogous to a shortcut to a program on a Windows system or a symbolic link on Unix-based systems, although a CCL is installed as a memory-resident command each time the system is restarted, it is not permanent like a disk file. Later versions of RSTS include [[DIGITAL Command Language|DCL]] as a choice for the CLI, giving users access to the same command language used in [[RSX-11]] and, later, [[OpenVMS]].<br />
<br />
As many as 63 terminals could be connected to a RSTS system, depending on the [[processor]] being used, the amount of [[main memory]] and disk space, and the system load. Most RSTS systems had nowhere near that many terminals. Users could also submit jobs to be run in [[batch]] mode. There was also a batch system called "ATPK" that allowed users to run a series of commands on another terminal in semi-interactive mode similar to batch commands in [[MS-DOS]].<br />
<br />
== Use == <br />
<br />
Users connected to the system by typing the LOGIN command (or HELLO) at a logged-out terminal and pressing return. Actually, typing any command at a logged-out terminal simply started the LOGIN program which then interpreted the command. If it was one of the commands which were allowed to be used by a user that is not yet logged in ("Logged Out"), then the associated program for that command was CHAINed to, otherwise the message "Please say HELLO" was printed on the terminal. One could determine the status of a terminal by the prompt printed by the command interpreter, usually the BASIC-PLUS run-time system. A logged-in user was given the prompt "Ready" and a user who is logged out is given the prompt "Bye".<br />
<br />
A user would log in by supplying their user number and password. User numbers consisted of a project number (this would be the equivalent of a group number in Unix), a comma, and a programmer number. Both numbers were in the range of 0 to 254, with special exceptions. When specifying an account, the project and programmer number were enclosed in brackets. A typical user number could be [10,5] (project 10, programmer 5), [2,146], [254,31], or [200,220], etc. When a user was running a system program while logged out (because the system manager had enabled it) their user number would appear as [0,0]. Thus that is not a valid account number.<br />
<br />
In every project, the programmer number 0 was usually reserved as a group account, as it could be referenced by the special symbol #. If one's user number were [20,103], a reference to a file name beginning with "#" would refer to a file stored in the account of the user number [20,0]. This feature would be useful in educational environments, as programmer number 0 could be issued to the instructor of a class, and the individuals students given accounts with the same project number, and the instructor could store in his account files marked as shared only for that project number (which would be students in that class only, and no other).<br />
<br />
Two special classes of project numbers existed. Project numbers of 0 were generally reserved for system software. Project numbers of 1 are privileged accounts, equivalent to the single account "root" on Unix systems, except that the account numbers [1,0] through [1,254] are all privileged accounts. <br />
<br />
There are also certain special accounts on the system. The account [0,1] is used to store the operating system file itself, all run-time library systems, and certain system files relating to booting the system (author's comments appear on the right in bold):<br />
<br />
<pre><br />
Ready<br />
<br />
DIR [0,1]<br />
Name .Ext Size Prot Date SY:[0,1]<br />
BADB .SYS 0P < 63> 06-Jun-98 '''List of bad blocks'''<br />
SATT .SYS 3CP < 63> 06-Jun-98 '''Bitmap of allocated disk storage''' <br />
INIT .SYS 419P < 40> 06-Jun-98 '''Operating system loader program'''<br />
ERR .ERR 16CP < 40> 06-Jun-98 '''System error messages'''<br />
RSTS .SIL 307CP < 60> 06-Jun-98 '''Operating system itself'''<br />
BASIC .RTS 73CP < 60> 06-Jun-98 '''BASIC-PLUS run time system'''<br />
RT11 .RTS 20C < 60> 06-Jun-98 '''[[RT-11]] run time system'''<br />
SWAP .SYS 1024CP < 63> 06-Jun-98 '''System swap file''' <br />
CRASH .SYS 35CP < 63> 06-Jun-98 '''System crash dump'''<br />
RSX .RTS 16C < 60> 23-Sep-79 '''[[RSX-11]] run-time system'''<br />
TECO .RTS 39C < 60> 24-Sep-79 '''[[Text Editor and Corrector|TECO]] text editor'''<br />
<br />
Total of 1952 blocks in 11 files in SY:[0,1]<br />
<br />
<br />
Ready<br />
</pre><br />
<br />
<br />
'''Ready''' in this case is the system command prompt, similar to the C> prompt in MS-DOS or the % prompt in many Unix-based shells. The '''DIR''' command is an installed CCL equivalent to a RUN command for the DIRECT program. [0,1] is the account number (and directory name) of the main system storage account. It would be referred to as "project number 0, programmer number 1".<br />
<br />
The numbers shown after each file represent its size in disk blocks, a block being 512 [[byte]]s or 1/2 kilobyte (K). "C" indicates the file is contiguous (is stored as one file without being separated into pieces, similar to files on a [[Microsoft Windows]] system after a drive has been [[defragementation|defragmented]]), while "P" indicates it is specially protected (cannot be deleted, even by a privileged user unless the P bit is cleared using the "Refresh" system initialization option). The numbers in brackets (like "< 40>") represent the protections for the file, which is always displayed in decimal. Protections indicate if the file may be seen by any other user, by other users with the same programmer number, if the file is read only or if it may be altered by another user, and whether the file may be executed by an ordimary user giving them additional privileges. These [[protection code]]s are very similar to the r, w and x protections in [[Unix]] and similar operating systems such as [[BSD]] and [[Linux]]. Code 60 is equivalent to a private file, code 62 is a private non-deletable file, and 40 is a public file.<br />
<br />
Certain other system files are kept in account [1,1]. The account [1,2] is the system-wide public library, and any public file in that account could be referenced by prefixing its name with a dollar sign ($). "!" is used for account [1,3], "%" for [1,4] and "&amp;" for [1,5]. The account [1,1] also had the special privilege of being the only account where a user logged in under that account is permitted to execute the POKE system call to put values into any memory in the system. Thus the account number [1,1] is the closest equivalent to "root" on Unix-based systems.<br />
<br />
When logged in, a user may either type language statements in the BASIC-PLUS programming language, issue the RUN command to run a program, or issue a special command called a CCL to execute a program with command options. <br />
<br />
One of the features of RSTS is the means for the execution of programs and the environment used to run them. The various environments allowed for programming in BASIC-PLUS, the enhanced BASIC Plus 2, and in more traditional programming languages such as [[COBOL]] and [[FORTRAN]]. These environments were separate from each other such that one could start a program from one environment and switch to a different environment to run a different program. These environments were referred to as "[[run-time system]]s".<br />
<br />
One of the most powerful text editors ever developed, the [[Text Editor and Corrector|TECO]] editor, was itself implemented as a run-time system partly to maximize the amount of memory available for the text buffer, and partly because it was originally ported to RSTS/E before general support for assembly language programming was released. (The RT11 and RSX emulation run time systems appeared later.)<br />
<br />
Programs written in BASIC-PLUS ran under the BASIC run-time system, which allowed them 32K bytes of memory. If one wrote programs in a language that permitted true binary executables such as FORTRAN or the Macro Assembler or others that ran under the [[RT-11]] run-time system, the amount of memory available would be 56K.<br />
<br />
Programs written for the [[RSX-11|RSX]] run time system such as COBOL, the Macro Assembler, or the later releases of BASIC Plus 2, the amount of memory available to such a binary program would still be 56K due to the requirements of the RSX Run-Time System being allowed the top 8K to use for itself. RSTS version 7 and later allowed the RSX Run-Time system to be included in the kernel of RSTS, making it completely "disappear" from the user address space, thus allowing 62K of memory for user programs. The remaining 2K still could not be used, either because of software limitations in RSTS memory management, or deliberately, to catch accidental wraparound of addresses in user programs.<br />
<br />
Programs got around the limitations of the amount of available memory by using libraries (when permissible), by complicated overlay strategies, or by calling other programs ("Chaining") and passing them commands in a shared memory area called "Core Common," among other practices.<br />
<br />
== RSTS Release Dates and historical notes ==<br />
<br />
{|border="1"<br />
|Version||Date||Notes<br />
|-<br />
|V03A-19||1970?<br />
|-<br />
|V03C-32||1971?<br />
|-<br />
|V04A-12||1972 October<br />
|-<br />
|V05-21||1973 July||First version called "RSTS/E".<br />
|-<br />
|V05B-24||1974 September||<br />
|-<br />
|V05C-01||1975 February||<br />
|-<br />
|V04B-17||1975 July||Final patch release of V04; last version for non-MMU machines.<br />
|-<br />
|V06A-02||1975 July||Last version to be installed using DOS-11.<br />
|-<br />
|V06B||1977 January||<br />
|-<br />
|V06C||1978 July||<br />
|-<br />
|7.0||1979 September||<br />
|-<br />
|7.1||1981 December||<br />
|-<br />
|7.2||1982 May||First release of RSTS/E supporting DECnet.<br />
|-<br />
|7.2A||1982 June||<br />
|-<br />
|8.0||1983 November||<br />
|-<br />
|8.0C||1983 November||<br />
|-<br />
|8.0F||1984 November||<br />
|-<br />
|9.0||1985 May||DCL supercedes MCR as of this release.<br />
|-<br />
|8.0G||1985 September||Final patch release of 8.0<br />
|-<br />
|9.1||1985 October||<br />
|-<br />
|9.2||1986 April||<br />
|-<br />
|9.3||1986 December||<br />
|-<br />
|9.4||1987 June||<br />
|-<br />
|9.5||1987 October||<br />
|-<br />
|9.6||1988 August||<br />
|-<br />
|9.7||1989 June||<br />
|-<br />
|10.0||1990 September||<br />
|-<br />
|10.1||1992 August||<br />
|-<br />
|10.1A||1998||First and only Mentec release, Year 2000 fixes only.<br />
|-<br />
|}<br />
<br />
== Licensing == <br />
<br />
RSTS/E is available under a non-commercial free licence for hobbyist use on the Supnik emulator.<br />
<br />
RSTS/E is still available under a commercial license from Mentec.<br />
<br />
{{sect-stub}}<br />
== Documentation ==<br />
=== '''Official''' ===<br />
===== Version 9.x =====<br />
[http://elvira.stacken.kth.se/rstsdoc/rsts-doc-v97/v9.7-v1-k-aa-2666j-tc-rsts-e-system-installation-and-update-guide-v9.7.pdf RSTS/E System Installation and Update Guide v9.7]<br />
<br />
=== Practical Guides ===<br />
===== System Generation =====<br />
[[FireflyST's user notes for RSTS/E 9.x system generation]]<br />
{{sect-stub}}<br />
<br />
<br />
[[Category:DEC Operating Systems]]<br />
[[Category:PDP-11 Operating Systems]]</div>Paul Koninghttps://gunkies.org/w/index.php?title=RSTS/E&diff=6318RSTS/E2009-08-25T10:59:34Z<p>Paul Koning: /* RSTS Release Dates and historical notes */ Correct when changeover from DOS based sysgen happened</p>
<hr />
<div>{{wp-orig}}<br />
{{infobox OS<br />
| name = RSTS/E<br />
| creator = [[Digital Equipment Corporation|DEC]]<br />
| architecture = [[PDP-11]]<br />
}}<br />
'''RSTS/E''' (an acronym for '''Resource Sharing Time Sharing Extended''') was a [[multi-user]] [[time-shared]] [[operating system]] developed by [[Digital Equipment Corporation]] ("DEC") (now part of [[Hewlett Packard]]) for the [[PDP-11]] series of 16-bit [[minicomputers]], and used primarily during the [[1970s]] and [[1980s]], although some installations were still being upgraded well into the [[1990s]]. <br />
<br />
== History ==<br />
<br />
RSTS/E started as [[RSTS-11]], for the [[PDP-11/20]]. Unlike RSTS/E, it ran on PDP-11s without memory mapping hardware. RSTS-11 only supported the BASIC-PLUS programming language. RSTS/E (V5A) was introduced in 1973, to take advantage of the memory mapping hardware and larger memory support introduced with the PDP-11/45. Starting with V5B, RSTS/E supported multiple programming languages, although that support was not made official until some time later.<br />
<br />
The cost of micro computers dropped so drastically, and their performance rose so radically, that minicomputers such as the PDP-11 were no longer cost effective. In the late 1990s DEC sold its PDP-11 software business to a company named Mentec [http://www.mentec.com/], and DEC then essentially discontinued releases of RSTS in order to concentrate on their [[VAX]] series of mainframe computers.<br />
<br />
Mentec would later publicly grant a no-cost license to anyone for non-commercial hobby purpose use of the operating system software developed for the PDP-11, and as the result of the release (for non-commercial use) of a PDP-11 emulator for the IBM-PC, as well as image copies of disk drives of RSTS which exist on the Internet, it is possible for a hobbyist to run RSTS/E on a personal computer in software emulation as fast or faster than it originally ran on the real hardware.<br />
<br />
The last release of RSTS/E was version 10.1A(1998). DEC would later be purchased by [[Compaq]], which itself later merged with [[Hewlett Packard]].<br />
<br />
== Overview == <br />
<br />
The RSTS/E Operating System is usually referred to just as "RSTS" and this article will generally use the shorter form. The acronym was usually pronounced as "RIST-ess" or "RIST-uhs". RSTS was primarily programmed using an extended version of the [[BASIC programming language]] which DEC called "[[BASIC-PLUS]]." Essentially all of the system software for the operating system, including the programs for resource accounting, login, logout and managing the system, were written using BASIC-PLUS.<br />
<br />
RSTS operates strictly in text mode as it used non-graphical [[computer terminal]]s (and modems) connected to it by the equivalent of serial ports, and uses a [[command line interpreter]] (or CLI) whose primary command language is BASIC-PLUS, although special "CCL" (Concise Command Language) commands which can be installed by the System Manager may be used. A CCL is analogous to a shortcut to a program on a Windows system or a symbolic link on Unix-based systems, although a CCL is installed as a memory-resident command each time the system is restarted, it is not permanent like a disk file. Later versions of RSTS include [[DIGITAL Command Language|DCL]] as a choice for the CLI, giving users access to the same command language used in [[RSX-11]] and, later, [[OpenVMS]].<br />
<br />
As many as 63 terminals could be connected to a RSTS system, depending on the [[processor]] being used, the amount of [[memory]] and disk space, and the system load. Most RSTS systems had nowhere near that many terminals. Users could also submit jobs to be run in [[batch]] mode. There was also a batch system called "ATPK" that allowed users to run a series of commands on another terminal in semi-interactive mode similar to batch commands in [[MS-DOS]]. <br />
<br />
== Use == <br />
<br />
Users connected to the system by typing the LOGIN command (or HELLO) at a logged-out terminal and pressing return. Actually, typing any command at a logged-out terminal simply started the LOGIN program which then interpreted the command. If it was one of the commands which were allowed to be used by a user that is not yet logged in ("Logged Out"), then the associated program for that command was CHAINed to, otherwise the message "Please say HELLO" was printed on the terminal. One could determine the status of a terminal by the prompt printed by the command interpreter, usually the BASIC-PLUS run-time system. A logged-in user was given the prompt "Ready" and a user who is logged out is given the prompt "Bye".<br />
<br />
A user would log in by supplying their user number and password. User numbers consisted of a project number (this would be the equivalent of a group number in Unix), a comma, and a programmer number. Both numbers were in the range of 0 to 254, with special exceptions. When specifying an account, the project and programmer number were enclosed in brackets. A typical user number could be [10,5] (project 10, programmer 5), [2,146], [254,31], or [200,220], etc. When a user was running a system program while logged out (because the system manager had enabled it) their user number would appear as [0,0]. Thus that is not a valid account number.<br />
<br />
In every project, the programmer number 0 was usually reserved as a group account, as it could be referenced by the special symbol #. If one's user number were [20,103], a reference to a file name beginning with "#" would refer to a file stored in the account of the user number [20,0]. This feature would be useful in educational environments, as programmer number 0 could be issued to the instructor of a class, and the individuals students given accounts with the same project number, and the instructor could store in his account files marked as shared only for that project number (which would be students in that class only, and no other).<br />
<br />
Two special classes of project numbers existed. Project numbers of 0 were generally reserved for system software. Project numbers of 1 are privileged accounts, equivalent to the single account "root" on Unix systems, except that the account numbers [1,0] through [1,254] are all privileged accounts. <br />
<br />
There are also certain special accounts on the system. The account [0,1] is used to store the operating system file itself, all run-time library systems, and certain system files relating to booting the system (author's comments appear on the right in bold):<br />
<br />
<pre><br />
Ready<br />
<br />
DIR [0,1]<br />
Name .Ext Size Prot Date SY:[0,1]<br />
BADB .SYS 0P < 63> 06-Jun-98 '''List of bad blocks'''<br />
SATT .SYS 3CP < 63> 06-Jun-98 '''Bitmap of allocated disk storage''' <br />
INIT .SYS 419P < 40> 06-Jun-98 '''Operating system loader program'''<br />
ERR .ERR 16CP < 40> 06-Jun-98 '''System error messages'''<br />
RSTS .SIL 307CP < 60> 06-Jun-98 '''Operating system itself'''<br />
BASIC .RTS 73CP < 60> 06-Jun-98 '''BASIC-PLUS run time system'''<br />
RT11 .RTS 20C < 60> 06-Jun-98 '''[[RT-11]] run time system'''<br />
SWAP .SYS 1024CP < 63> 06-Jun-98 '''System swap file''' <br />
CRASH .SYS 35CP < 63> 06-Jun-98 '''System crash dump'''<br />
RSX .RTS 16C < 60> 23-Sep-79 '''[[RSX-11]] run-time system'''<br />
TECO .RTS 39C < 60> 24-Sep-79 '''[[Text Editor and Corrector|TECO]] text editor'''<br />
<br />
Total of 1952 blocks in 11 files in SY:[0,1]<br />
<br />
<br />
Ready<br />
</pre><br />
<br />
<br />
'''Ready''' in this case is the system command prompt, similar to the C> prompt in MS-DOS or the % prompt in many Unix-based shells. The '''DIR''' command is an installed CCL equivalent to a RUN command for the DIRECT program. [0,1] is the account number (and directory name) of the main system storage account. It would be referred to as "project number 0, programmer number 1".<br />
<br />
The numbers shown after each file represent its size in disk blocks, a block being 512 [[byte]]s or 1/2 kilobyte (K). "C" indicates the file is contiguous (is stored as one file without being separated into pieces, similar to files on a [[Microsoft Windows]] system after a drive has been [[defragementation|defragmented]]), while "P" indicates it is specially protected (cannot be deleted, even by a privileged user unless the P bit is cleared by changing the protection code). The numbers in brackets (like "< 40>") represent the protections for the file, which is always displayed in decimal. Protections indicate if the file may be seen by any other user, by other users with the same programmer number, if the file is read only or if it may be altered by another user, and whether the file may be executed by an ordimary user giving them additional privileges. These [[protection code]]s are very similar to the r, w and x protections in [[Unix]] and similar operating systems such as [[BSD]] and [[Linux]]. Code 60 is equivalent to a private file, code 63 is a private non-deletable file, and 40 is a public file.<br />
<br />
Certain other system files are kept in account [1,1]. The account [1,2] is the system-wide public library, and any public file in that account could be referenced by prefixing its name with a dollar sign ($). "!" is used for account [1,3], "%" for [1,4] and "&amp;" for [1,5]. The account [1,1] also had the special privilege of being the only account where a user logged in under that account is permitted to execute the POKE system call to put values into any memory in the system. Thus the account number [1,1] is the closest equivalent to "root" on Unix-based systems.<br />
<br />
When logged in, a user may either type language statements in the BASIC-PLUS programming language, issue the RUN command to run a program, or issue a special command called a CCL to execute a program with command options. <br />
<br />
One of the features of RSTS is the means for the execution of programs and the environment used to run them. The various environments allowed for programming in BASIC-PLUS, the enhanced BASIC Plus 2, and in more traditional programming languages such as [[COBOL]] and [[FORTRAN]]. These environments were separate from each other such that one could start a program from one environment and switch to a different environment to run a different program. These environments were referred to as "[[run-time system]]s".<br />
<br />
One of the most powerful text editors ever developed, the [[Text Editor and Corrector|TECO]] editor, was itself implemented as a run-time system due to the amount of memory it used, (i.e. if it had run within another run-time system there probably would have been no memory available to edit user documents.)<br />
<br />
Programs written in BASIC-PLUS ran under the BASIC run-time system, which allowed them 32K bytes of memory. If one wrote programs in a language that permitted true binary executables such as FORTRAN or the Macro Assembler or others that ran under the [[RT-11]] run-time system, the amount of memory available would be 56K.<br />
<br />
Programs written for the [[RSX-11|RSX]] run time system such as COBOL, the Macro Assembler, or the later releases of BASIC Plus 2, the amount of memory available to such a binary program would still be 56K due to the requirements of the RSX Run-Time System being allowed the top 8K to use for itself. RSTS version 7 and later allowed the RSX Run-Time system to be included in the kernel of RSTS, making it completely "disappear" from the user address space, thus allowing 62K of memory for user programs. The remaining 2K still could not be used, either because of software limitations in RSTS memory management, or deliberately, to catch accidental wraparound of addresses in user programs.<br />
<br />
Programs got around the limitations of the amount of available memory by using libraries (when permissible), by complicated overlay strategies, or by calling other programs ("Chaining") and passing them commands in a shared memory area called "Core Common," among other practices.<br />
<br />
== RSTS Release Dates and historical notes ==<br />
<br />
{|border="1"<br />
|Version||Date||Notes<br />
|-<br />
|V03A-19||1970?<br />
|-<br />
|V03C-32||1971?<br />
|-<br />
|V04A-12||1972 October<br />
|-<br />
|V05-21||1973 July||First version called "RSTS/E".<br />
|-<br />
|V05B-24||1974 September||<br />
|-<br />
|V05C-01||1975 February||<br />
|-<br />
|V04B-17||1975 July||Final patch release of V04; last version for non-MMU machines.<br />
|-<br />
|V06A-02||1975 July||Last version to be installed using DOS-11.<br />
|-<br />
|V06B||1977 January||<br />
|-<br />
|V06C||1978 July||<br />
|-<br />
|7.0||1979 September||<br />
|-<br />
|7.1||1981 December||<br />
|-<br />
|7.2||1982 May||First release of RSTS/E supporting DECnet.<br />
|-<br />
|7.2A||1982 June||<br />
|-<br />
|8.0||1983 November||<br />
|-<br />
|8.0C||1983 November||<br />
|-<br />
|8.0F||1984 November||<br />
|-<br />
|9.0||1985 May||DCL supercedes MCR as of this release.<br />
|-<br />
|8.0G||1985 September||Final patch release of 8.0<br />
|-<br />
|9.1||1985 October||<br />
|-<br />
|9.2||1986 April||<br />
|-<br />
|9.3||1986 December||<br />
|-<br />
|9.4||1987 June||<br />
|-<br />
|9.5||1987 October||<br />
|-<br />
|9.6||1988 August||<br />
|-<br />
|9.7||1989 June||<br />
|-<br />
|10.0||1990 September||<br />
|-<br />
|10.1||1992 August||<br />
|-<br />
|10.1A||1998||First and only Mentec release, Year 2000 fixes only.<br />
|-<br />
|}<br />
<br />
== Licensing == <br />
<br />
RSTS/E is available under a non-commercial free licence for hobbyist use on the Supnik emulator.<br />
<br />
RSTS/E is still available under a commercial license from Mentec.<br />
<br />
{{sect-stub}}<br />
== Documentation ==<br />
=== '''Official''' ===<br />
===== Version 9.x =====<br />
[http://elvira.stacken.kth.se/rstsdoc/rsts-doc-v97/v9.7-v1-k-aa-2666j-tc-rsts-e-system-installation-and-update-guide-v9.7.pdf RSTS/E System Installation and Update Guide v9.7]<br />
<br />
=== Practical Guides ===<br />
===== System Generation =====<br />
[[FireflyST's user notes for RSTS/E 9.x system generation]]<br />
{{sect-stub}}<br />
<br />
<br />
[[Category:DEC Operating Systems]]<br />
[[Category:PDP-11 Operating Systems]]</div>Paul Koninghttps://gunkies.org/w/index.php?title=RSTS/E&diff=6219RSTS/E2009-08-21T17:40:21Z<p>Paul Koning: RSTS was never layered on top of DOS; it was (from V4 through V5A) installed using DOS.</p>
<hr />
<div>{{wp-orig}}<br />
{{infobox OS<br />
| name = RSTS/E<br />
| creator = [[Digital Equipment Corporation|DEC]]<br />
| architecture = [[PDP-11]]<br />
}}<br />
'''RSTS/E''' (an acronym for '''Resource Sharing Time Sharing Extended''') was a [[multi-user]] [[time-shared]] [[operating system]] developed by [[Digital Equipment Corporation]] ("DEC") (now part of [[Hewlett Packard]]) for the [[PDP-11]] series of 16-bit [[minicomputers]], and used primarily during the [[1970s]] and [[1980s]], although some installations were still being upgraded well into the [[1990s]]. <br />
<br />
== History ==<br />
<br />
RSTS/E started as [[RSTS-11]], for the [[PDP-11/20]]. Unlike RSTS/E, it ran on PDP-11s without memory mapping hardware. RSTS-11 only supported the BASIC-PLUS programming language. RSTS/E (V5A) was introduced in 1973, to take advantage of the memory mapping hardware and larger memory support introduced with the PDP-11/45. Starting with V5B, RSTS/E supported multiple programming languages, although that support was not made official until some time later.<br />
<br />
The cost of micro computers dropped so drastically, and their performance rose so radically, that minicomputers such as the PDP-11 were no longer cost effective. In the late 1990s DEC sold its PDP-11 software business to a company named Mentec [http://www.mentec.com/], and DEC then essentially discontinued releases of RSTS in order to concentrate on their [[VAX]] series of mainframe computers.<br />
<br />
Mentec would later publicly grant a no-cost license to anyone for non-commercial hobby purpose use of the operating system software developed for the PDP-11, and as the result of the release (for non-commercial use) of a PDP-11 emulator for the IBM-PC, as well as image copies of disk drives of RSTS which exist on the Internet, it is possible for a hobbyist to run RSTS/E on a personal computer in software emulation as fast or faster than it originally ran on the real hardware.<br />
<br />
The last release of RSTS/E was version 10.1A(1998). DEC would later be purchased by [[Compaq]], which itself later merged with [[Hewlett Packard]].<br />
<br />
== Overview == <br />
<br />
The RSTS/E Operating System is usually referred to just as "RSTS" and this article will generally use the shorter form. The acronym was usually pronounced as "RIST-ess" or "RIST-uhs". RSTS was primarily programmed using an extended version of the [[BASIC programming language]] which DEC called "[[BASIC-PLUS]]." Essentially all of the system software for the operating system, including the programs for resource accounting, login, logout and managing the system, were written using BASIC-PLUS.<br />
<br />
RSTS operates strictly in text mode as it used non-graphical [[computer terminal]]s (and modems) connected to it by the equivalent of serial ports, and uses a [[command line interpreter]] (or CLI) whose primary command language is BASIC-PLUS, although special "CCL" (Concise Command Language) commands which can be installed by the System Manager may be used. A CCL is analogous to a shortcut to a program on a Windows system or a symbolic link on Unix-based systems, although a CCL is installed as a memory-resident command each time the system is restarted, it is not permanent like a disk file. Later versions of RSTS include [[DIGITAL Command Language|DCL]] as a choice for the CLI, giving users access to the same command language used in [[RSX-11]] and, later, [[OpenVMS]].<br />
<br />
As many as 63 terminals could be connected to a RSTS system, depending on the [[processor]] being used, the amount of [[memory]] and disk space, and the system load. Most RSTS systems had nowhere near that many terminals. Users could also submit jobs to be run in [[batch]] mode. There was also a batch system called "ATPK" that allowed users to run a series of commands on another terminal in semi-interactive mode similar to batch commands in [[MS-DOS]]. <br />
<br />
== Use == <br />
<br />
Users connected to the system by typing the LOGIN command (or HELLO) at a logged-out terminal and pressing return. Actually, typing any command at a logged-out terminal simply started the LOGIN program which then interpreted the command. If it was one of the commands which were allowed to be used by a user that is not yet logged in ("Logged Out"), then the associated program for that command was CHAINed to, otherwise the message "Please say HELLO" was printed on the terminal. One could determine the status of a terminal by the prompt printed by the command interpreter, usually the BASIC-PLUS run-time system. A logged-in user was given the prompt "Ready" and a user who is logged out is given the prompt "Bye".<br />
<br />
A user would log in by supplying their user number and password. User numbers consisted of a project number (this would be the equivalent of a group number in Unix), a comma, and a programmer number. Both numbers were in the range of 0 to 254, with special exceptions. When specifying an account, the project and programmer number were enclosed in brackets. A typical user number could be [10,5] (project 10, programmer 5), [2,146], [254,31], or [200,220], etc. When a user was running a system program while logged out (because the system manager had enabled it) their user number would appear as [0,0]. Thus that is not a valid account number.<br />
<br />
In every project, the programmer number 0 was usually reserved as a group account, as it could be referenced by the special symbol #. If one's user number were [20,103], a reference to a file name beginning with "#" would refer to a file stored in the account of the user number [20,0]. This feature would be useful in educational environments, as programmer number 0 could be issued to the instructor of a class, and the individuals students given accounts with the same project number, and the instructor could store in his account files marked as shared only for that project number (which would be students in that class only, and no other).<br />
<br />
Two special classes of project numbers existed. Project numbers of 0 were generally reserved for system software. Project numbers of 1 are privileged accounts, equivalent to the single account "root" on Unix systems, except that the account numbers [1,0] through [1,254] are all privileged accounts. <br />
<br />
There are also certain special accounts on the system. The account [0,1] is used to store the operating system file itself, all run-time library systems, and certain system files relating to booting the system (author's comments appear on the right in bold):<br />
<br />
<pre><br />
Ready<br />
<br />
DIR [0,1]<br />
Name .Ext Size Prot Date SY:[0,1]<br />
BADB .SYS 0P < 63> 06-Jun-98 '''List of bad blocks'''<br />
SATT .SYS 3CP < 63> 06-Jun-98 '''Bitmap of allocated disk storage''' <br />
INIT .SYS 419P < 40> 06-Jun-98 '''Operating system loader program'''<br />
ERR .ERR 16CP < 40> 06-Jun-98 '''System error messages'''<br />
RSTS .SIL 307CP < 60> 06-Jun-98 '''Operating system itself'''<br />
BASIC .RTS 73CP < 60> 06-Jun-98 '''BASIC-PLUS run time system'''<br />
RT11 .RTS 20C < 60> 06-Jun-98 '''[[RT-11]] run time system'''<br />
SWAP .SYS 1024CP < 63> 06-Jun-98 '''System swap file''' <br />
CRASH .SYS 35CP < 63> 06-Jun-98 '''System crash dump'''<br />
RSX .RTS 16C < 60> 23-Sep-79 '''[[RSX-11]] run-time system'''<br />
TECO .RTS 39C < 60> 24-Sep-79 '''[[Text Editor and Corrector|TECO]] text editor'''<br />
<br />
Total of 1952 blocks in 11 files in SY:[0,1]<br />
<br />
<br />
Ready<br />
</pre><br />
<br />
<br />
'''Ready''' in this case is the system command prompt, similar to the C> prompt in MS-DOS or the % prompt in many Unix-based shells. The '''DIR''' command is an installed CCL equivalent to a RUN command for the DIRECT program. [0,1] is the account number (and directory name) of the main system storage account. It would be referred to as "project number 0, programmer number 1".<br />
<br />
The numbers shown after each file represent its size in disk blocks, a block being 512 [[byte]]s or 1/2 kilobyte (K). "C" indicates the file is contiguous (is stored as one file without being separated into pieces, similar to files on a [[Microsoft Windows]] system after a drive has been [[defragementation|defragmented]]), while "P" indicates it is specially protected (cannot be deleted, even by a privileged user unless the P bit is cleared by changing the protection code). The numbers in brackets (like "< 40>") represent the protections for the file, which is always displayed in decimal. Protections indicate if the file may be seen by any other user, by other users with the same programmer number, if the file is read only or if it may be altered by another user, and whether the file may be executed by an ordimary user giving them additional privileges. These [[protection code]]s are very similar to the r, w and x protections in [[Unix]] and similar operating systems such as [[BSD]] and [[Linux]]. Code 60 is equivalent to a private file, code 63 is a private non-deletable file, and 40 is a public file.<br />
<br />
Certain other system files are kept in account [1,1]. The account [1,2] is the system-wide public library, and any public file in that account could be referenced by prefixing its name with a dollar sign ($). "!" is used for account [1,3], "%" for [1,4] and "&amp;" for [1,5]. The account [1,1] also had the special privilege of being the only account where a user logged in under that account is permitted to execute the POKE system call to put values into any memory in the system. Thus the account number [1,1] is the closest equivalent to "root" on Unix-based systems.<br />
<br />
When logged in, a user may either type language statements in the BASIC-PLUS programming language, issue the RUN command to run a program, or issue a special command called a CCL to execute a program with command options. <br />
<br />
One of the features of RSTS is the means for the execution of programs and the environment used to run them. The various environments allowed for programming in BASIC-PLUS, the enhanced BASIC Plus 2, and in more traditional programming languages such as [[COBOL]] and [[FORTRAN]]. These environments were separate from each other such that one could start a program from one environment and switch to a different environment to run a different program. These environments were referred to as "[[run-time system]]s".<br />
<br />
One of the most powerful text editors ever developed, the [[Text Editor and Corrector|TECO]] editor, was itself implemented as a run-time system due to the amount of memory it used, (i.e. if it had run within another run-time system there probably would have been no memory available to edit user documents.)<br />
<br />
Programs written in BASIC-PLUS ran under the BASIC run-time system, which allowed them 32K bytes of memory. If one wrote programs in a language that permitted true binary executables such as FORTRAN or the Macro Assembler or others that ran under the [[RT-11]] run-time system, the amount of memory available would be 56K.<br />
<br />
Programs written for the [[RSX-11|RSX]] run time system such as COBOL, the Macro Assembler, or the later releases of BASIC Plus 2, the amount of memory available to such a binary program would still be 56K due to the requirements of the RSX Run-Time System being allowed the top 8K to use for itself. RSTS version 7 and later allowed the RSX Run-Time system to be included in the kernel of RSTS, making it completely "disappear" from the user address space, thus allowing 62K of memory for user programs. The remaining 2K still could not be used, either because of software limitations in RSTS memory management, or deliberately, to catch accidental wraparound of addresses in user programs.<br />
<br />
Programs got around the limitations of the amount of available memory by using libraries (when permissible), by complicated overlay strategies, or by calling other programs ("Chaining") and passing them commands in a shared memory area called "Core Common," among other practices.<br />
<br />
== RSTS Release Dates and historical notes ==<br />
<br />
{|border="1"<br />
|Version||Date||Notes<br />
|-<br />
|V03A-19||1970?<br />
|-<br />
|V03C-32||1971?<br />
|-<br />
|V04A-12||1972 October<br />
|-<br />
|V05-21||1973 July||First version called "RSTS/E"; last version to be installed using DOS-11.<br />
|-<br />
|V05B-24||1974 September||<br />
|-<br />
|V05C-01||1975 February||<br />
|-<br />
|V04B-17||1975 July||Final patch release of V04; last version for non-MMU machines.<br />
|-<br />
|V06A-02||1975 July||<br />
|-<br />
|V06B||1977 January||<br />
|-<br />
|V06C||1978 July||<br />
|-<br />
|7.0||1979 September||<br />
|-<br />
|7.1||1981 December||<br />
|-<br />
|7.2||1982 May||First release of RSTS/E supporting DECnet.<br />
|-<br />
|7.2A||1982 June||<br />
|-<br />
|8.0||1983 November||<br />
|-<br />
|8.0C||1983 November||<br />
|-<br />
|8.0F||1984 November||<br />
|-<br />
|9.0||1985 May||DCL supercedes MCR as of this release.<br />
|-<br />
|8.0G||1985 September||Final patch release of 8.0<br />
|-<br />
|9.1||1985 October||<br />
|-<br />
|9.2||1986 April||<br />
|-<br />
|9.3||1986 December||<br />
|-<br />
|9.4||1987 June||<br />
|-<br />
|9.5||1987 October||<br />
|-<br />
|9.6||1988 August||<br />
|-<br />
|9.7||1989 June||<br />
|-<br />
|10.0||1990 September||<br />
|-<br />
|10.1||1992 August||<br />
|-<br />
|10.1A||1998||First and only Mentec release, Year 2000 fixes only.<br />
|-<br />
|}<br />
<br />
== Licensing == <br />
<br />
RSTS/E is available under a non-commercial free licence for hobbyist use on the Supnik emulator.<br />
<br />
RSTS/E is still available under a commercial license from Mentec.<br />
<br />
{{sect-stub}}<br />
== Documentation ==<br />
=== '''Official''' ===<br />
===== Version 9.x =====<br />
[http://elvira.stacken.kth.se/rstsdoc/rsts-doc-v97/v9.7-v1-k-aa-2666j-tc-rsts-e-system-installation-and-update-guide-v9.7.pdf RSTS/E System Installation and Update Guide v9.7]<br />
<br />
=== Practical Guides ===<br />
===== System Generation =====<br />
[[FireflyST's user notes for RSTS/E 9.x system generation]]<br />
{{sect-stub}}<br />
<br />
<br />
[[Category:DEC Operating Systems]]<br />
[[Category:PDP-11 Operating Systems]]</div>Paul Koning