Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
systems:pdp7_unix [2015/12/29 23:55] – wkt | systems:pdp7_unix [2019/12/01 13:33] – [PDP-7 Unix] frank |
---|
**Release Date:** Developed from mid-1969 to the end of 1970\\ | **Release Date:** Developed from mid-1969 to the end of 1970\\ |
**Released By:** Never released outside of Bell Labs\\ | **Released By:** Never released outside of Bell Labs\\ |
**Source Code: ** No longer exists\\ | **Source Code:** [[https://github.com/DoctorWkt/pdp7-unix|Reconstructed from original listings]]\\ |
**Documentation: ** No longer exists | **Documentation: [[https://github.com/DoctorWkt/pdp7-unix|Reconstructed from original listings]]** |
| |
Ken Thompson began the development of the system that was to become Unix, first as a file system on paper and then on a "little-used PDP-7" (Dennis Ritchie, [[https://www.bell-labs.com/usr/dmr/www/hist.html|The Evolution of the Unix Time-sharing System]]). | Ken Thompson began the development of the system that was to become Unix, first as a file system on paper and then on a "little-used PDP-7" (Dennis Ritchie, [[https://www.bell-labs.com/usr/dmr/www/hist.html|The Evolution of the Unix Time-sharing System]]). |
===== Details from "The Evolution of Unix" ===== | ===== Details from "The Evolution of Unix" ===== |
| |
Also during 1969, Thompson developed the game of `Space Travel.' First written on Multics, then transliterated into Fortran for GECOS (the operating system for the GE, later Honeywell, 635), it was nothing less than a simulation of the movement of the major bodies of the Solar System, with the player guiding a ship here and there, observing the scenery, and attempting to land on the various planets and moons. The GECOS version was unsatisfactory in two important respects: first, the display of the state of the game was jerky and hard to control because one had to type commands at it, and second, a game cost about $75 for CPU time on the big computer. It did not take long, therefore, for Thompson to find a little-used PDP-7 computer with an excellent display processor; the whole system was used as a Graphic-II terminal. He and I rewrote Space Travel to run on this machine. The undertaking was more ambitious than it might seem; because we disdained all existing software, we had to write a floating-point arithmetic package, the pointwise specification of the graphic characters for the display, and a debugging subsystem that continuously displayed the contents of typed-in locations in a corner of the screen. All this was written in assembly language for a cross-assembler that ran under GECOS and produced paper tapes to be carried to the PDP-7. | Also during 1969, Thompson developed the game of `Space Travel.' First written on [[https://www.multicians.org/|Multics]], then transliterated into Fortran for GECOS (the operating system for the GE, later Honeywell, 635), it was nothing less than a simulation of the movement of the major bodies of the Solar System, with the player guiding a ship here and there, observing the scenery, and attempting to land on the various planets and moons. The GECOS version was unsatisfactory in two important respects: first, the display of the state of the game was jerky and hard to control because one had to type commands at it, and second, a game cost about $75 for CPU time on the big computer. It did not take long, therefore, for Thompson to find a little-used PDP-7 computer with an excellent display processor; the whole system was used as a Graphic-II terminal. He and I rewrote Space Travel to run on this machine. The undertaking was more ambitious than it might seem; because we disdained all existing software, we had to write a floating-point arithmetic package, the pointwise specification of the graphic characters for the display, and a debugging subsystem that continuously displayed the contents of typed-in locations in a corner of the screen. All this was written in assembly language for a cross-assembler that ran under GECOS and produced paper tapes to be carried to the PDP-7. |
| |
Space Travel, though it made a very attractive game, served mainly as an introduction to the clumsy technology of preparing programs for the PDP-7. Soon Thompson began implementing the paper file system (perhaps `chalk file system' would be more accurate) that had been designed earlier. A file system without a way to exercise it is a sterile proposition, so he proceeded to flesh it out with the other requirements for a working operating system, in particular the notion of processes. Then came a small set of user-level utilities: the means to copy, print, delete, and edit files, and of course a simple command interpreter (shell). Up to this time all the programs were written using GECOS and files were transferred to the PDP-7 on paper tape; but once an assembler was completed the system was able to support itself. Although it was not until well into 1970 that Brian Kernighan suggested the name `Unix,' in a somewhat treacherous pun on `Multics,' the operating system we know today was born. | Space Travel, though it made a very attractive game, served mainly as an introduction to the clumsy technology of preparing programs for the PDP-7. Soon Thompson began implementing the paper file system (perhaps `chalk file system' would be more accurate) that had been designed earlier. A file system without a way to exercise it is a sterile proposition, so he proceeded to flesh it out with the other requirements for a working operating system, in particular the notion of processes. Then came a small set of user-level utilities: the means to copy, print, delete, and edit files, and of course a simple command interpreter (shell). Up to this time all the programs were written using GECOS and files were transferred to the PDP-7 on paper tape; but once an assembler was completed the system was able to support itself. Although it was not until well into 1970 that Brian Kernighan suggested the name `Unix,' in a somewhat treacherous pun on `Multics,' the operating system we know today was born. |
So that every user did not need to maintain a link to all directories of interest, there existed a directory called //dd// that contained entries for the directory of each user. Thus, to make a link to file //x// in directory //ken//, I might do | So that every user did not need to maintain a link to all directories of interest, there existed a directory called //dd// that contained entries for the directory of each user. Thus, to make a link to file //x// in directory //ken//, I might do |
| |
<code>ln dd ken ken | <code> |
| ln dd ken ken |
ln ken x x | ln ken x x |
rm ken | rm ken |
The very convenient notation for IO redirection, using the `>' and `<' characters, was not present from the very beginning of the PDP-7 Unix system, but it did appear quite early. Like much else in Unix, it was inspired by an idea from Multics. Multics has a rather general IO redirection mechanism [3] embodying named IO streams that can be dynamically redirected to various devices, files, and even through special stream-processing modules. Even in the version of Multics we were familiar with a decade ago, there existed a command that switched subsequent output normally destined for the terminal to a file, and another command to reattach output to the terminal. Where under Unix one might say | The very convenient notation for IO redirection, using the `>' and `<' characters, was not present from the very beginning of the PDP-7 Unix system, but it did appear quite early. Like much else in Unix, it was inspired by an idea from Multics. Multics has a rather general IO redirection mechanism [3] embodying named IO streams that can be dynamically redirected to various devices, files, and even through special stream-processing modules. Even in the version of Multics we were familiar with a decade ago, there existed a command that switched subsequent output normally destined for the terminal to a file, and another command to reattach output to the terminal. Where under Unix one might say |
| |
<code>ls>xx | <code> |
| ls>xx |
</code> | </code> |
| |
===== Extant PDP-7 Unix Source Code ===== | ===== Extant PDP-7 Unix Source Code ===== |
| |
The only extant source code from the PDP-7 version of Unix appears to be the source code to the //dsw// command that Dennis [[http://minnie.tuhs.org/pipermail/pups/1999-November/000139.html|posted on the net.unix-wizards]] Usenet newsgroup in 1984. He wrote: | For many years, the only extant source code from the PDP-7 version of Unix appeared to be the source code to the //dsw// command that Dennis [[http://minnie.tuhs.org/pipermail/pups/1999-November/000139.html|posted on the net.unix-wizards]] Usenet newsgroup in 1984. He wrote: |
| |
I happened to dredge up an old notebook and found a listing of the PDP-7 version of dsw. Because several people have approached me recently about reviving a version of PDP-7 Unix as a sort of paleontological exhibit, and because the subject has been discussed here, I thought people might be interested in seeing the code. I first considered net.sources, but decided not to carry whimsy too far. | I happened to dredge up an old notebook and found a listing of the PDP-7 version of dsw. Because several people have approached me recently about reviving a version of PDP-7 Unix as a sort of paleontological exhibit, and because the subject has been discussed here, I thought people might be interested in seeing the code. I first considered net.sources, but decided not to carry whimsy too far. |
| |
Notes: | Notes: |
- "sys save" makes a core image. | - "sys save" makes a core image. |
| |
<code>" dsw | <code> |
| " dsw |
| |
lac djmp | lac djmp |
| |
In October 2009, Dennis sent Warren Toomey a private e-mail that said "In other news, I have found the book that has the [PDP-7] listings that I knew I had, that of (some) of the user-level commands. I wonder what's the best way to get it scanned?". Unfortunately, Dennis passed away before he could get the listings scanned in. | In October 2009, Dennis sent Warren Toomey a private e-mail that said "In other news, I have found the book that has the [PDP-7] listings that I knew I had, that of (some) of the user-level commands. I wonder what's the best way to get it scanned?". Unfortunately, Dennis passed away before he could get the listings scanned in. |
| |
| In 2016, [[https://www.teach.cs.toronto.edu/~norman/pers/index.html|Norman Wilson]] discovered a set of paper copies PDP-7 Unix listings he had done while he worked at Bell Labs. Warren Toomey organized [[https://github.com/DoctorWkt/pdp7-unix|a project to attempt to resurrect PDP-7 Unix]] with source code derived from scans of the listings. The listings were partial, but there was enough to create a system that would boot and run. |
| |
| October 2019 saw another notebook of listings discovered (by Dennis Ritchie's heirs?). Those were scanned, proofread and corrected, creating a more complete and original PDP-7 Unix. A month later, the [[https://www.youtube.com/watch?v=pvaPaWyiuLA|Living Computer Museum bootstrapped the reconstructed operating system on renovated PDP-7 hardware]]. |
| |
| ===== PDP-9 Unix ===== |
| |
| In several places, including the [[http://www.tuhs.org/Archive/Documentation/Papers/unix_cacm74.pdf|CACM paper]], there is mention made of Unix running on a PDP-9. Dennis Ritchie posted [[http://minnie.tuhs.org/pipermail/pups/2002-August/000529.html|a message on the PUPS mailing list]] in August 2002 which said: |
| |
| The [PDP-]7, 9, 15 were very compatible. I think the -15 had some scheme for using an index register, which the earlier ones didn't have, but it was otherwise pretty much identical in IS architecture. |
| |
| There was very little rewriting to try Unix out on the -9 and -15; perhaps just some tweaks in |
| the disk device commands. I don't think the system actually ran on either for more than a few hours. Ken was just playing around. |
| |
| The -15 may have had an electrically different bus, but I'm reasonably sure it was not a Unibus. All of them used IOT instructions, not memory-mapped IO registers. |
| |
| Both of the machines we tried were being used by other groups and we couldn't squat on them as with the PDP-7. I recall that the -15's main job was controlling a step-and-repeat camera that exposed LSI masks. |
| |
| |