| • Science | • People | • Locations | • Timeline |
p-System started around 1977 as an idea of Kenneth Bowles at UCSD, who felt that the number of new platforms coming out at the time would make it difficult for new languages to gain acceptance. In particular he was interested in Pascal as a teaching language, which had just been announced. UCSD introduced two features which were tremendous improvements on the original Pascal, variable length strings, and "units" of independently compiled code (an idea taken from the then-evolving Ada programming language). Niklaus Wirth credits the p-System, and UCSD Pascal in particular, with popularizing the language. It was not until the release of Turbo Pascal that UCSD's version started to slip from first place among Pascal users.
The machine independence was achieved by defining a virtual machine called the p-Machine (or pseudo-machine, which many users began to call the "Pascal-machine" like the OS, although the UCSD documentation always used "pseudo-machine") with its own instruction set called p-Code (or pseudo-code). This p-Code was optimized specifically for generation by the Pascal programming language and all the original development was done in UCSD Pascal. Each hardware platform then only needed a p-Code interpreter program written for it to port the entire p-System and all the tools to run on it. Later versions also included additional languages that compiled to the p-code base (for example, Telesoft Pascal, also in San Diego, a licensee of the p-system, ported it to the Motorola 68000).
The p-System shares some concepts with the more current Java platformThe Java platform consists of: The Java virtual machine The Java API In addition to Java itself, the following languages were specifically designed for the platform: Groovy Pizza GJ Java platform.. Both use a virtual machine to hide operating system and hardware differences, and both use programs written to that virtual machine to provide cross-platform support. Likewise both systems allow the virtual machine to be used as the complete operating system for the target computer, or running in a "box" under some other operating system.
There were four versions of UCSD p-Code engine, each with several revisions of the p-System (and UCSD Pascal). A revision of the p-Code engine (i.e. the p-Machine) meant a change to the p-Code language, and therefore compiled code is not portable between different p-Machine versions. Each such revision is represented with a leading Roman Numeral, while operating system revisions were enumerated as the "dot" number following the p-Code Roman Numeral. For example, II.3 represented the third revision of the p-System running on the second revision of the p-Machine.