PL/M

Last updated

PL/M
Developer Gary Kildall [1] at Microcomputer Applications Associates
First appeared1973 (1973) [2] [3]
Influenced by
PL/I, XPL
Influenced
CP/M, PLuS

PL/M, an acronym for Programming Language for Microcomputers, [2] [3] is a is a high-level language conceived and developed by Gary Kildall in 1973 for Hank Smith at Intel for the Intel 8008. It was later expanded for the newer Intel 8080.

Contents

The 8080 had enough power to run the PL/M compiler, but lacked a suitable form of mass storage. In an effort to port the language from the PDP-10 to the 8080, Kildall used PL/M to write a disk operating system that allowed it to floppy disk to be used. This was the basis of CP/M.

History

Kildall was working at the Naval Postgraduate School in Monterey, California in 1973 when he received funds to equip a computer lab, first with MCS-4-based SIM4 and, a year later, the Intel 8008-based Intel Intellec 8. [4] As part of his employment, Kildall was allowed to spend one day a week on his own projects, but soon found himself spending much more than that living in his VW Microbus in the parking lot of the Intel offices on Bowers Avenue in Santa Clara. [5]

One day he went to see Hank Smith, Intel's manager for the tiny microcomputer software department. Kildall explained his idea of making a high level language for the 8008. Smith didn't understand the concept, so Kildall explained that a programmer could write something like X = Y + Z and the program would convert that into several lines of assembler code which would perform this operation. Smith then called one of Intel's customers and asked if they might be interested in such a product, and when they expressed their interest, Smith immediately told Kildall to do it. [5]

Kildall wrote PL/M based on the concepts of the XPL language, which in turn was based on the syntax and concepts of IBM's PL/I. XPL was explicitly designed to compile PL/I-like programs in a much simpler software system, explicitly for teaching purposes. As Kildall began promoting the language he found that few programmers were interested in it, until he demonstrated that one could write a program of roughly the same size and performance as assembly but in about a tenth of the time. [5]

PL/M originally ran on large PDP-10 mainframe computers that would output the final machine language code on punch tape which would then be fed into an programmable ROM burner and then the ROMs would be transferred to the target machine. With the release of the Intellec 8 in 1974, he began an attempt to port the system to this platform to make it "self hosting" and allow programmers to do everything on that platform. Unfortunately, the 8008 had a very small eight entry call stack that was simply too small for a high-level language. [6]

This problem was solved with the introduction of the first Intel 8080 in late 1973, which supported a stack of any size in memory. [7] Intel upgraded the Intellec 8 to the Intellec 8/80 based on the new chip. Although this system had the processing power to run PL/M, it lacked any useful form of mass storage and adding a useful amount of main memory was extremely expensive. [8] Just down the street from Intel, Memorex had recently introduced a new low-cost floppy disk drive, [9] and this in turn prompted Alan Shugart to start Shugart Associates and introduce lower-cost drives. Kildall was able to talk Finis Conner, then at Shugart, into giving him one of their older test drives. [10]

Unfortunately, there was no drive controller for the Intel systems, and while one was sketched out it was never implemented. After sitting on a shelf for a year, Kildall decided to go ahead and write the software needed to use it in PL/M running on his 8080-emulator on the PDP-10. In 1974 he called a friend from the University of Washington, John Torode, who built a controller for the 8080. After a few months the system was running, and Kildall loaded the driver and it ran the first time and displayed the prompt. [11]

During the summer of 1975, Kildall was working as a consultant at Signetics, who asked him to port PL/M to their Signetics 2650. This resulted in the PLuS language. The 2650 "bombed" in the market and Signetics gave up on it within a year, deciding to license the Fairchild F8 instead. While working there he met Jim Warren, another consultant who was also setting up the new minicomputer-oriented magazine, Dr. Dobb's Journal . Warren suggested Kildall put an add in the magazine under the name of CP/M, and this launched the system into the market. [12]

Overview

The language incorporated ideas from PL/I and XPL, [2] [3] and had an integrated macro processor. As a graduate of the University of Washington Kildall had used their Burroughs B5500 computer, [13] and as such was aware of the potential of high-level languages such as ESPOL for systems programming.

Unlike other contemporary languages such as Pascal or BASIC, PL/M had no standard input or output routines. It included features targeted at the low-level hardware specific to the target microprocessors, and as such, it could support direct access to any location in memory, I/O ports and the processor interrupt flags in a very efficient manner. PL/M was the first higher level programming language for microprocessor-based computers and was the original implementation language for those parts of the CP/M operating system which were not written in assembler. Many Intel and Zilog Z80-based embedded systems were programmed in PL/M during the 1970s and 1980s. For instance, the firmware of the Service Processor component of CISC IBM AS/400 was written in PL/M.

The original PL/M compiler targeted the Intel 8008. [14] An updated version (PL/M-80) generated code for the 8080 processor, which would also run on the newer Intel 8085 as well as on the Zilog Z80 family (as it is backward-compatible with the 8080). Later followed compilers for the Intel 8048 and Intel 8051-microcontroller family (PL/M-51) as well as for the 8086 (8088) (PL/M-86), 80186 (80188) and subsequent 8086-based processors, including the advanced 80286 and the 32-bit 80386. There were also PL/M compilers developed for later microcontrollers, such as the Intel 8061 and 8096 / MCS-96 architecture family (PL/M-96). [15]

While some PL/M compilers were "native", meaning that they ran on systems using that same microprocessor, e.g. for the Intel ISIS operating system, there were also cross compilers, for instance PLMX, which ran on other operating environments such as Digital Research CP/M, Microsoft's DOS, and Digital Equipment Corporation's VAX/VMS.

PL/M is no longer supported by Intel, but aftermarket tools like PL/M-to-C source-code translators exist.[ citation needed ]

PL/M sample code

FIND:PROCEDURE(PA,PB)BYTE;DECLARE(PA,PB)BYTE;/* FIND THE STRING IN SCRATCH STARTING AT PA AND ENDING AT PB */DECLAREJADDRESS,(K,MATCH)BYTE;J=BACK;MATCH=FALSE;DOWHILENOTMATCHAND(MAXM>J);LAST,J=J+1;/* START SCAN AT J */K=PA;/* ATTEMPT STRING MATCH AT K */DOWHILESCRATCH(K)=MEMORY(LAST)AND NOT(MATCH:=K=PB);/* MATCHED ONE MORE CHARACTER */K=K+1;LAST=LAST+1;END;END;IFMATCHTHEN/* MOVE STORAGE */DO;LAST=LAST-1;CALLMOVER;END;RETURNMATCH;ENDFIND;

Related Research Articles

<span class="mw-page-title-main">Gary Kildall</span> American computer scientist and microcomputer entrepreneur (1942–1994)

Gary Arlen Kildall was an American computer scientist and microcomputer entrepreneur. During the 1970s, Kildall created the CP/M operating system among other operating systems and programming tools, and subsequently founded Digital Research, Inc. to market and sell his software products. He is considered a pioneer of the personal computer revolution.

<span class="mw-page-title-main">Intel 8080</span> 8-bit microprocessor

The Intel 8080 ("eighty-eighty") is the second 8-bit microprocessor designed and manufactured by Intel. It first appeared in April 1974 and is an extended and enhanced variant of the earlier 8008 design, although without binary compatibility. Although earlier microprocessors were commonly used in mass-produced devices such as calculators, cash registers, computer terminals, industrial robots, and other applications, the 8080 saw greater success in a wider set of applications, and is largely credited with starting the microcomputer industry.

<span class="mw-page-title-main">Intel 8086</span> 16-bit microprocessor

The 8086 is a 16-bit microprocessor chip designed by Intel between early 1976 and June 8, 1978, when it was released. The Intel 8088, released July 1, 1979, is a slightly modified chip with an external 8-bit data bus, and is notable as the processor used in the original IBM PC design.

<span class="mw-page-title-main">CP/M</span> Discontinued family of computer operating systems

CP/M, originally standing for Control Program/Monitor and later Control Program for Microcomputers, is a mass-market operating system created in 1974 for Intel 8080/85-based microcomputers by Gary Kildall of Digital Research, Inc. CP/M is a disk operating system and its purpose is to organize files on a magnetic storage medium, and to load and run programs stored on a disk. Initially confined to single-tasking on 8-bit processors and no more than 64 kilobytes of memory, later versions of CP/M added multi-user variations and were migrated to 16-bit processors.

<span class="mw-page-title-main">Microcomputer</span> Small computer with a CPU made out of a microprocessor

A microcomputer is a small, relatively inexpensive computer having a central processing unit (CPU) made out of a microprocessor. The computer also includes memory and input/output (I/O) circuitry together mounted on a printed circuit board (PCB). Microcomputers became popular in the 1970s and 1980s with the advent of increasingly powerful microprocessors. The predecessors to these computers, mainframes and minicomputers, were comparatively much larger and more expensive. Many microcomputers are also personal computers. An early use of the term "personal computer" in 1962 predates microprocessor-based designs. (See "Personal Computer: Computers at Companies" reference below). A "microcomputer" used as an embedded control system may have no human-readable input and output devices. "Personal computer" may be used generically or may denote an IBM PC compatible machine.

<span class="mw-page-title-main">Intel 8008</span> 8-bit microprocessor

The Intel 8008 is an early 8-bit microprocessor capable of addressing 16 KB of memory, introduced in April 1972. The 8008 architecture was designed by Computer Terminal Corporation (CTC) and was implemented and manufactured by Intel. While the 8008 was originally designed for use in CTC's Datapoint 2200 programmable terminal, an agreement between CTC and Intel permitted Intel to market the chip to other customers after Seiko expressed an interest in using it for a calculator.

<span class="mw-page-title-main">Digital Research</span> Defunct American software company

Digital Research, Inc. was a privately held American software company created by Gary Kildall to market and develop his CP/M operating system and related 8-bit, 16-bit and 32-bit systems like MP/M, Concurrent DOS, FlexOS, Multiuser DOS, DOS Plus, DR DOS and GEM. It was the first large software company in the microcomputer world. Digital Research was originally based in Pacific Grove, California, later in Monterey, California.

<span class="mw-page-title-main">Intel iAPX 432</span> Discontinued Intel microprocessor architecture

The iAPX 432 is a discontinued computer architecture introduced in 1981. It was Intel's first 32-bit processor design. The main processor of the architecture, the general data processor, is implemented as a set of two separate integrated circuits, due to technical limitations at the time. Although some early 8086, 80186 and 80286-based systems and manuals also used the iAPX prefix for marketing reasons, the iAPX 432 and the 8086 processor lines are completely separate designs with completely different instruction sets.

<span class="mw-page-title-main">IMSAI 8080</span> Microcomputer

The IMSAI 8080 is an early microcomputer released in late 1975, based on the Intel 8080 and S-100 bus. It is a clone of its main competitor, the earlier MITS Altair 8800. The IMSAI is largely regarded as the first "clone" microcomputer. The IMSAI machine runs a highly modified version of the CP/M operating system called IMDOS. It was developed, manufactured and sold by IMS Associates, Inc.. In total, between 17,000 and 20,000 units were produced from 1975 to 1978.

XPL, for expert's programming language is a programming language based on PL/I, a portable one-pass compiler written in its own language, and a parser generator tool for easily implementing similar compilers for other languages. XPL was designed in 1967 as a way to teach compiler design principles and as starting point for students to build compilers for their own languages.

Real-time Multitasking eXecutive (iRMX) is a real-time operating system designed for use with the Intel 8080 and 8086 family of processors.

Gordon Edwin Eubanks, Jr. is an American microcomputer industry pioneer who worked with Gary Kildall in the early days of Digital Research (DRI).

Intel hexadecimal object file format, Intel hex format or Intellec Hex is a file format that conveys binary information in ASCII text form, making it possible to store on non-binary media such as paper tape, punch cards, etc., to display on text terminals or be printed on line-oriented printers. The format is commonly used for programming microcontrollers, EPROMs, and other types of programmable logic devices and hardware emulators. In a typical application, a compiler or assembler converts a program's source code to machine code and outputs it into a object or executable file in hexadecimal format. In some applications, the Intel hex format is also used as a container format holding packets of stream data. Common file extensions used for the resulting files are .HEX or .H86. The HEX file is then read by a programmer to write the machine code into a PROM or is transferred to the target system for loading and execution. There are various tools to convert files between hexadecimal and binary format, and vice versa.

A source-to-source translator, source-to-source compiler, transcompiler, or transpiler is a type of translator that takes the source code of a program written in a programming language as its input and produces an equivalent source code in the same or a different programming language. A source-to-source translator converts between programming languages that operate at approximately the same level of abstraction, while a traditional compiler translates from a higher level programming language to a lower level programming language. For example, a source-to-source translator may perform a translation of a program from Python to JavaScript, while a traditional compiler translates from a language like C to assembly or Java to bytecode. An automatic parallelizing compiler will frequently take in a high level language program as an input and then transform the code and annotate it with parallel code annotations or language constructs.

<span class="mw-page-title-main">Micral</span> Series of microcomputers produced by R2E

Micral is a series of microcomputers produced by the French company Réalisation d'Études Électroniques, beginning with the Micral N in early 1973. The Micral N was one of the first commercially available microprocessor-based computers.

<span class="mw-page-title-main">CBASIC</span> Compiled BASIC programming language for CP/M

CBASIC is a compiled version of the BASIC programming language written for the CP/M operating system by Gordon Eubanks in 1976–1977. It is an enhanced version of BASIC-E.

Each time Intel launched a new microprocessor, they simultaneously provided a system development kit (SDK) allowing engineers, university students, and others to familiarise themselves with the new processor's concepts and features. The SDK single-board computers allowed the user to enter object code from a keyboard or upload it through a communication port, and then test run the code. The SDK boards provided a system monitor ROM to operate the keyboard and other interfaces. Kits varied in their specific features but generally offered optional memory and interface configurations, a serial terminal link, audio cassette storage, and EPROM program memory. Intel's Intellec development system could download code to the SDK boards.

A binary recompiler is a compiler that takes executable binary files as input, analyzes their structure, applies transformations and optimizations, and outputs new optimized executable binaries.

ISIS, short for Intel System Implementation Supervisor, was an operating system for early Intel microprocessors like the 8080. It was originally developed by Ken Burgett and Jim Stein under the management of Steve Hanna and Terry Opdendyk for the Intel Microprocessor Development System with two 8" floppy drives, starting in 1975, and later adopted as ISIS-II as the operating system for the PL/M compiler, assembler, link editor, and In-Circuit Emulator. The ISIS operating system was developed on an early prototype of the MDS 800 computer, the same type of hardware that Gary Kildall used to develop CP/M.

<span class="mw-page-title-main">Intellec</span>

The Intellec computers were a series of early microcomputers Intel produced in the 1970s as a development platform for their processors. The Intellec computers were among the first microcomputers ever sold, predating the Altair 8800 by at least two years.

References

  1. Swaine, Michael (2001-06-22). "Gary Kildall and Collegial Entrepreneurship". Dr. Dobb's Journal . Archived from the original on 2019-07-26. Retrieved 2006-11-20.
  2. 1 2 3 Shustek, Len (2016-08-02). "In His Own Words: Gary Kildall". Remarkable People. Computer History Museum. Archived from the original on 2019-10-03. Retrieved 2020-02-02.
  3. 1 2 3 Kildall, Gary Arlen (2016-08-02) [1993]. Kildall, Scott; Kildall, Kristin (eds.). Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry (Manuscript, part 1). Kildall Family. Retrieved 2016-11-17.
  4. Kildall 1993, p. 48.
  5. 1 2 3 Kildall 1993, p. 49.
  6. Kildall 1993, p. 50.
  7. Kildall 1993, p. 51.
  8. Kildall 1993, p. 52.
  9. Kildall 1993, p. 53.
  10. Kildall 1993, p. 54.
  11. Kildall 1993, p. 55.
  12. Kildall 1993, p. 58.
  13. Kildall, Gary Arlen (September 1970). "APL\B5500 - The Language And Its Implementation" (PDF). University of Washington, Computer Science Group. Technical Report 70-09-04. Archived (PDF) from the original on 2019-12-20. Retrieved 2020-01-29.
  14. Kildall, Gary Arlen (1974-06-27). "High-level language simplifies microcomputer programming" (PDF). Electronics . McGraw-Hill Education. pp. 103–109. Archived (PDF) from the original on 2021-11-14. Retrieved 2021-11-14.
  15. "Translators And Utilities For Program Development". Software Handbook (PDF). Intel Corporation. 1984 [1983]. p. 3-1. 230786-001. Archived (PDF) from the original on 2020-01-29. Retrieved 2020-01-29. […] A LANGUAGE FOR EVERY NEED […] PL/M is the most popular 8086 language for systems programming and provides the best of both optimal code and high level language capabilities. […] PL/M-51 was the first high level language ever to be introduced for a microcontroller. The 8096 is similarly supported with PL/M-96. […]

Further reading