OS/8
Developer | Digital Equipment Corporation |
---|---|
Written in | BASIC, Fortran, TECO |
OS family | DEC OS family |
Working state | Discontinued |
Source model | Closed source |
Platforms | PDP-8 |
Default user interface | Command line interface |
License | Proprietary |
OS/8 was the primary operating system used on the PDP-8 minicomputer developed by Digital Equipment Corporation of Maynard, Massachusetts. OS/8 was originally called MS/8 and, for a brief time, PS/8 ("Programming System/8") before Digital settled on the name OS/8 in 1971.
A virtually identical version of OS/8, called OS/12, was later used with Digital's PDP-12 computer.
Digital released OS/8 images for non-commercial purposes[1] which can be emulated through SIMH.
Overview
OS/8 provided a simple operating environment that was commensurate in complexity and scale with the PDP-8 computers on which it ran. I/O was supported via a series of supplied drivers which used polled (not interrupt-driven) techniques. The device drivers had to be cleverly written as they could only occupy one or two memory pages of 128 12-bit words, and had to be able to run in any page in field 0. This often required considerable cleverness, such as the use of the OPR instruction (7XXX) for small negative constants.
The memory-resident "footprint" of OS/8 was only 256 words; 128 words at the top of Field 0 and 128 words at the top of Field 1. The rest of the operating system (the USR, "User Service Routines") was swapped in and out of memory transparently (with regard to the user's program) as needed.
The Concise Command Language
Early versions of OS/8 had a very rudimentary command line interpreter with very few basic commands: GET, SAVE, RUN, ASSIGN, DEASSIGN, and ODT. With version 3 they added a more sophisticated overlay called CCL (Concise Command Language) that implemented many more commands. OS/8's CCL was directly patterned after the CCL found on Digital's PDP-10 systems running TOPS-10. In fact, much of the OS/8 software system was deliberately designed to mimic, as closely as possible, the TOPS-10 operating environment. (The CCL command language was later used on PDP-11 computers running RT-11, RSX-11, and RSTS/E, providing a similar user operating environment across all three architectures: PDP-8s, PDP-10s, and PDP-11s.)
The basic OS and CCL implemented many rather sophisticated commands, many of which still do not exist in modern command languages, not even in MS-DOS, Windows, or Unix-like operating systems.
For example, the COMPILE command would automatically find the right compiler for a given source file and start the compile/assemble/link cycle.
The ASSIGN and DEASSIGN commands allowed one to use logical device names in a program instead of physical names (as required in MS-DOS). For example, your program could write to device FLOP:AAA.TXT, and if you first did a "ASSIGN FLOP: RXA2:" then the file would be created on physical device RXA2 (the second floppy disk drive). VAX/VMS and the Commodore Amiga's operating system AmigaOS (and other OSes built around Tripos) made considerable use of this very flexible feature.
The SET command was capable of setting many system options, albeit by the crude method of patching locations in the system binary code.
The BUILD command could reconfigure the OS on the fly, even adding device drivers, often without having to reboot the OS.
The OS can boot from a hard disk and present the command prompt in under half a second.
The OS/8 Filesystem
OS/8 supported a simple, flat file system on a variety of mass storage devices including:
- TU56 DECtapes
- DF32 32KB fixed-head disks
- RF08 256KB fixed-head disks
- RK01/02/03/04/05 cartridge disk drives
- RL01/02 cartridge disk drives
- RX01/02 floppy diskette drives
Filenames on the PDP-8 took the form of FFFFFF.XX where "F" represents an uppercase, alphanumeric character of the filename and "X" represents an upper-case, alphanumeric character of the extension (filetype). Assembly language sources used the extension ".PA"; saved core-images (executable programs) used the extension ".SV".
The contents of any given file was stored contiguously in a single "extent". PIP included an option to compress ("squeeze") the filesystem so all unallocated space was moved to a single extent at the end of the disk.
OS/8 volumes had a very limited maximum storage size (4096 blocks) and the RK05 (2.4MB) moving-head disk exceeded this size. Because of this, RK05 cartridges were divided into two partitions. For example the first RK05 on a system would be known as both RKA0: (SY:) and RKB0:. This division was commonly thought to mean "the upper surface" and "the lower surface" but this was incorrect; it in fact was "the outer cylinders" and "the inner cylinders".
OS/8 CUSPs (Utility Programs)
The CUSPs (Commonly-Used System Programs, that is utilities) supplied with OS/8 included:
- BUILD (the program to install a configured OS/8 system onto mass storage)
- DIR (the directory-listing program)
- EDIT (A line-oriented editor)
- MACREL (A relocating assembler that, unlike PAL, implemented macros. Written by Stanley Rabinowitz of DEC's Small Systems Group. Stan had an ASCII-artwork picture of a fish in his office that said "MACREL IS A FISH")
- FLAP (An absolute assembler derived from RALF)
- FORTRAN-II
- FOTP (File-Oriented Transfer Program, an alternative to PIP)
- PAL (The assembler)
- PIP (the Peripheral Interchange Program, used to copy files)
- PIP10 (a version of PIP used to copy files to from PDP-10 DECtapes)
- RALF (Another relocating assembler for the FPP)
- TECO (Text Editor and COrrector, a much-more-sophisticated editor)
- CCL, the command line interpreter, was supplied in source form and could be extended by the user.
Programming languages
A single-user BASIC and two multi-user versions of BASIC were available as options.
The single-user BASIC used several overlays to provide the full functionality of the language; when OS/8 was booted from a DECtape, a very noticeable delay occurred each time BASIC was required to switch overlays as they needed to be read from tape.
The multi-user versions of BASIC (EDU20 and EDU25) differed only in whether or not they supported block-replaceable devices (DECtape or disk). Due to cost constraints, many PDP-8s had punched paper tape readers as their only mass-storage I/O device. EDU20 loaded from paper tape and could do output to a paper tape writer if the machine had one, whereas EDU25 understood the structure of a filesystem, could load from DECtape or disk, and could create files on DECtape or disk. Both could run multiple BASIC programs simultaneously using a primitive task-scheduler that round-robined among the attached terminals. Memory was always very tight because the PDP-8 used core memory, which was extremely expensive compared to RAM technology which came along a few years later. In a mere 8K of 12-bit words EDU20 could support up to 4 terminals at once, although more memory was recommended. EDU25 required an additional 4K memory bank (for a minimum of 12K) because the code contained a disk device driver and a filesystem handler. While running, EDU20 and EDU25 were self-contained programs that didn't use any OS/8 system calls. Immediately upon being invoked from the OS/8 command interpreter they would overwrite OS/8's entire resident portion - all 256 words of it. Upon startup, EDU25 would save the contents of memory to DECtape or disk and restore it when it exited. But EDU20 could not do this as it was targeted at hardware configurations without any block-replaceable device.
There was also a rather complete FORTRAN IV compiler available at extra cost. This compiler generated code for the optional FPP-8 floating-point processor, which was essentially a separate CPU, only sharing memory with the PDP-8 CPU. If you had the FPP-8 option installed, the FORTRAN runtime code would detect it and use the FPP-8 to run the main program code, and the PDP-8 CPU would run as an I/O processor. If you did not have the FPP-8, the runtime code would instead call an FPP-8 interpreter running on the PDP-8 CPU, so the program would still run, but at considerably reduced speed.
This FORTRAN IV compiler in version 1 had the interesting bug that DO loops counted incorrectly! DO loops would count 1,2,3,5,6,7, …! A quick patch was released to fix this.
References
- ↑ File: /Licenses/os8_license.txt in os8swre.tar.Z
External links
- SIMH Software Kits including an OS/8 image.
- OS/8 Manuals at Bitsavers.