PL/M
| Company type | Programming language |
|---|---|
| Industry | Software, Programming languages |
| Founded | 1973 |
| Founder | Gary Kildall |
| Products | PL/M compilers for Intel 8008, 8080, 8085, Zilog Z80, 8048, 8051, 8086/8088, 80186/80188, 80286, 80386, 8061, 8096/MCS-96 series |
PL/M, standing for Programming Language for Microcomputers, was created by Gary Kildall in 1973 initially for the Intel 8008 processor and subsequently extended to support the Intel 8080. The enhanced capabilities of the 8080 allowed it to execute the PL/M compiler, though it lacked mass storage solutions. To overcome this limitation, Kildall utilized PL/M to develop a disk operating system that facilitated floppy disk usage, which became the foundation of CP/M.
History
In 1973, during his tenure at the Naval Postgraduate School, Kildall secured funding to establish a computer laboratory equipped with Intel-based machines. He dedicated considerable effort to designing a high-level programming language tailored for the 8008 processor. After demonstrating its ability to translate simple code into assembler instructions, he persuaded Intel's software manager Hank Smith of its promise. Smith then garnered customer interest, which drove further development.
PL/M drew inspiration from XPL, itself influenced by IBM’s PL/I, aiming to simplify programming tasks. Early adoption was limited until Kildall proved that PL/M could generate code with assembly-level efficiency and compactness while reducing coding effort substantially.
Initially, PL/M operated on large PDP-10 mainframes, producing machine code on punch tape. Kildall intended to port PL/M to the Intellec 8 platform to enable self-hosting development; however, the 8008’s restricted call stack posed challenges for supporting high-level languages.
The release of the Intel 8080 later in 1973 addressed this issue by introducing a memory-based stack. Intel upgraded to the Intellec 8/80 system capable of running PL/M but still lacked affordable mass storage and sufficient memory capacity. Concurrently, developments in inexpensive floppy disk drives by Memorex and Shugart Associates offered new possibilities. Kildall obtained a test drive from Shugart but found no existing controller compatible with Intel systems.
After about a year, he developed software in PL/M using an 8080 emulator hosted on the PDP-10. Partnering with John Torode, who constructed a controller for the 8080 processor, they successfully operated the system in 1974, displaying its initial prompt.
In 1975, while consulting at Signetics, Kildall adapted PL/M for their Signetics 2650 under the name PLuS. This product did not succeed commercially as Signetics shifted focus toward licensing the Fairchild F8. During this period, Kildall connected with Jim Warren of Dr. Dobb's Journal, whose advice to market under the CP/M name helped propel that operating system into widespread use.
Overview
The language incorporated features from both PL/I and XPL and included an integrated macro processor. Having graduated from the University of Washington and experienced with the Burroughs B5500, Kildall recognized the value of high-level languages such as ESPOL for systems programming.
Unlike contemporaneous languages like Pascal or BASIC, PL/M did not include standard input/output routines but offered low-level access tailored specifically to its target microprocessors. It allowed efficient direct manipulation of memory locations, I/O ports, and processor interrupt flags. As the first high-level language designed for microprocessor-based computers, PL/M was used as the primary implementation language for portions of the CP/M operating system that were not written in assembly language. Throughout the 1970s and 1980s, numerous embedded systems based on Intel and Zilog Z80 processors were programmed using PL/M; notably, firmware for the Service Processor in CISC IBM AS/400 systems was developed in this language.
The initial PL/M compiler targeted the Intel 8008. An enhanced version known as PL/M-80 produced code for the Intel 8080, also compatible with both the Intel 8085 and Zilog Z80 processors. Later compilers supported microcontrollers such as the Intel 8048, members of the Intel 8051 family (PL/M-51), and processors including the 8086 (8088), 80186 (80188), advanced versions like the 80286, as well as 32-bit models such as the 80386. Compilers were also developed for subsequent microcontrollers like the Intel 8061 and devices from the 8096 / MCS-96 series (PL/M-96).
Some versions of PL/M compilers operated natively on systems equipped with their respective microprocessors—for example, Intel’s ISIS operating system—while others functioned as cross-compilers like PLMX, which ran on platforms including Digital Research CP/M, Microsoft DOS, and Digital Equipment Corporation’s VAX/VMS.
Although Intel no longer supports PL/M, third-party tools such as PL/M-to-C source-code translators remain available on the market.
Further reading
- PL/M-80 Programming Manual, Intel Corporation, January 1980 (initial edition 1976)
- MCS-8 Guide to PL/M Programming, Intel Corporation, September 1973
- PL/M 386 Programmer's Guide, RadiSys Corporation, December 1999 (features full PL/M syntax in BNF format)
- Daniel D. McCracken, A Guide to PL/M Programming for Microcomputer Applications, Pearson/Addison-Wesley, 1978
- Ken Burgett, "Interview on the Development of Intel ISIS Operating System," 2017