Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
PL/M
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming language for microcomputers based on PL/1 and XPL}} {{Use dmy dates|date=January 2020|cs1-dates=y}} {{Infobox programming language | name = PL/M | paradigm = | released = {{Start date|1973|df=yes}}<ref name="Shustek_2016"/><ref name="Kildall_1993"/> | developer = [[Gary Kildall]]<ref name="Swaine_2001"/> at [[Microcomputer Applications Associates]] | influenced by = [[PL/I]], [[XPL]] | influenced = [[CP/M]], PLuS | website = }} '''PL/M''', an acronym for '''''P'''rogramming '''L'''anguage for '''M'''icrocomputers'',<ref name="Shustek_2016"/><ref name="Kildall_1993"/> is a high-level [[programming language|language]] conceived and developed by [[Gary Kildall]] in 1973 for [[Hank Smith (Intel)|Hank Smith]] at [[Intel]] for the [[Intel 8008]]. It was later expanded for the newer [[Intel 8080]]. 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 a [[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]].{{sfn|Kildall|1993|p=48}} 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 [[Volkswagen Type 2|VW Microbus]] in the parking lot of the Intel offices on Bowers Avenue in [[Santa Clara, CA|Santa Clara]].{{sfn|Kildall|1993|p=49}} 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 <code>X = Y + Z</code> 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.{{sfn|Kildall|1993|p=49}} 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.{{sfn|Kildall|1993|p=49}} 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.{{sfn|Kildall|1993|p=50}} This problem was solved with the introduction of the first [[Intel 8080]] in late 1973, which supported a stack of any size in memory.{{sfn|Kildall|1993|p=51}} 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.{{sfn|Kildall|1993|p=52}} Just down the street from Intel, [[Memorex]] had recently introduced a new low-cost [[floppy disk]] drive,{{sfn|Kildall|1993|p=53}} 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.{{sfn|Kildall|1993|p=54}} 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.{{sfn|Kildall|1993|p=55}} 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 (computer specialist)|Jim Warren]], another consultant who was also setting up the new minicomputer-oriented magazine, ''[[Dr. Dobb's Journal]]''. Warren suggested Kildall put an ad in the magazine under the name of [[CP/M]], and this launched the system into the market.{{sfn|Kildall|1993|p=58}} ==Overview== The language incorporated ideas from PL/I and XPL,<ref name="Shustek_2016"/><ref name="Kildall_1993"/> and had an integrated [[Macro (computer science)|macro processor]]. As a graduate of the [[University of Washington]] Kildall had used their [[Burroughs B5500]] computer,<ref name="Kildall_1970_UW"/> and as such was aware of the potential of high-level languages such as [[Executive Systems Problem Oriented Language|ESPOL]] for systems programming. Unlike other contemporary languages such as [[Pascal (programming language)|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 system]]s 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]].<ref name="Kildall_1974"/> An updated version (PL/M-80) generated code for the [[Intel 8080|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 [[Intel 8086|8086 (8088)]] (PL/M-86), [[Intel 80186|80186 (80188)]] and subsequent 8086-based processors, including the advanced [[Intel 80286|80286]] and the 32-bit [[Intel 80386|80386]]. There were also PL/M compilers developed for later microcontrollers, such as the [[Intel 8061]] and 8096 / [[Intel MCS-96|MCS-96]] architecture family (PL/M-96).<ref name="Intel_1983_SH"/> 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)|ISIS]] operating system, there were also [[cross compiler]]s, for instance [[PLMX]], which ran on other operating environments such as [[Digital Research]] CP/M, [[Microsoft]]'s [[DOS]], and [[Digital Equipment Corporation]]'s [[OpenVMS|VAX/VMS]]. '''PL/M''' is no longer supported by Intel, but aftermarket tools like PL/M-to-C [[source-code translator]]s exist.{{citation needed|date=January 2024}} ==PL/M sample code== <syntaxhighlight lang="rexx"> FIND: PROCEDURE(PA,PB) BYTE; DECLARE (PA,PB) BYTE; /* FIND THE STRING IN SCRATCH STARTING AT PA AND ENDING AT PB */ DECLARE J ADDRESS, (K, MATCH) BYTE; J = BACK ; MATCH = FALSE; DO WHILE NOT MATCH AND (MAXM > J); LAST,J = J + 1; /* START SCAN AT J */ K = PA ; /* ATTEMPT STRING MATCH AT K */ DO WHILE SCRATCH(K) = MEMORY(LAST) AND NOT (MATCH := K = PB); /* MATCHED ONE MORE CHARACTER */ K = K + 1; LAST = LAST + 1; END; END; IF MATCH THEN /* MOVE STORAGE */ DO; LAST = LAST - 1; CALL MOVER; END; RETURN MATCH; END FIND; </syntaxhighlight> ==References== {{Reflist|refs= <ref name="Shustek_2016">{{cite web |title=In His Own Words: Gary Kildall |author-first=Len |author-last=Shustek |date=2016-08-02 |work=Remarkable People |publisher=[[Computer History Museum]] |url=http://www.computerhistory.org/atchm/in-his-own-words-gary-kildall/ |access-date=2020-02-02 |url-status=live |archive-url=https://web.archive.org/web/20191003055634/https://computerhistory.org/blog/in-his-own-words-gary-kildall/?key=in-his-own-words-gary-kildall |archive-date=2019-10-03}}</ref> <ref name="Kildall_1993">{{cite book |title=Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry |author-first=Gary Arlen |author-last=Kildall |author-link=Gary Kildall |editor-first1=Scott |editor-last1=Kildall |editor-link=Scott Kildall |editor-first2=Kristin |editor-last2=Kildall |orig-date=1993 |date=2016-08-02 |publisher=Kildall Family |type=Manuscript, part 1 |url=http://www.computerhistory.org/atchm/computer-history-museum-license-agreement-for-the-kildall-manuscript/ |access-date=2016-11-17<!-- https://web.archive.org/web/20161117231531/http://www.computerhistory.org/atchm/computer-history-museum-license-agreement-for-the-kildall-manuscript/ http://s3data.computerhistory.org/kildall-p.1-78-publishable-lowres.pdf |archive-url=https://web.archive.org/web/20161117232745/http://s3data.computerhistory.org/kildall-p.1-78-publishable-lowres.pdf |archive-date=2016-11-17 -->}}</ref> <!-- <ref name="Johnson_2019">{{cite web |title=ISIS, Intellec, PL/M, iRMX, and Intel - 20th century |date=2019-07-21 |author-first=Herb |author-last=Johnson |work=Retrotechnology |url=http://www.retrotechnology.com/dri/isis.html |access-date=2020-01-29 |url-status=live |archive-url=https://web.archive.org/web/20191002192450/http://www.retrotechnology.com/dri/isis.html |archive-date=2019-10-02}}</ref> --> <ref name="Swaine_2001">{{cite journal |title=Gary Kildall and Collegial Entrepreneurship |author-first=Michael |author-last=Swaine |author-link=Michael Swaine (technical author) |date=2001-06-22 |journal=[[Dr. Dobb's Journal]] |url=https://www.drdobbs.com/architecture-and-design/gary-kildall-and-collegial-entrepreneurs/184410428<!-- http://www.ddj.com/184410428 --> |access-date=2006-11-20 |url-status=live |archive-url=https://web.archive.org/web/20190726193738/http://www.drdobbs.com/architecture-and-design/gary-kildall-and-collegial-entrepreneurs/184410428 |archive-date=2019-07-26}}</ref> <ref name="Kildall_1970_UW">{{cite web |title=APL\B5500 - The Language And Its Implementation |author-first=Gary Arlen |author-last=Kildall |author-link=Gary Arlen Kildall |date=September 1970 |id=Technical Report 70-09-04 |publisher=[[University of Washington]], Computer Science Group |url=https://www.cs.washington.edu/tr/1970/09/UW-CSE-70-09-04.PDF |access-date=2020-01-29 |url-status=live |archive-url=https://web.archive.org/web/20191220034728/https://dada.cs.washington.edu/research/tr/1970/09/UW-CSE-70-09-04.PDF |archive-date=2019-12-20}}</ref> <ref name="Intel_1983_SH">{{cite book |title=Software Handbook |chapter=Translators And Utilities For Program Development |page=3-1 |date=1984 |orig-date=1983 |publisher=[[Intel Corporation]] |id=230786-001 |url=http://bitsavers.trailing-edge.com/components/intel/_dataBooks/230786-001_Intel_Software_Handbook_1984.pdf |access-date=2020-01-29 |url-status=live |archive-url=https://web.archive.org/web/20200129010534/http://bitsavers.trailing-edge.com/components/intel/_dataBooks/230786-001_Intel_Software_Handbook_1984.pdf |archive-date=2020-01-29 |quote=[…] 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 [[Intel 8096|8096]] is similarly supported with PL/M-96. […]}}</ref> <ref name="Kildall_1974">{{cite magazine |title=High-level language simplifies microcomputer programming |author-last=Kildall |author-first=Gary Arlen |author-link=Gary Arlen Kildall |website=[[Electronics (magazine)|Electronics]] |publisher=[[McGraw-Hill Education]] |date=1974-06-27 |pages=103–109 |url=https://www.retrotechnology.com/dri/kildall_highlevel_1974.pdf |access-date=2021-11-14 |url-status=live |archive-url=https://web.archive.org/web/20211114174610/https://www.retrotechnology.com/dri/kildall_highlevel_1974.pdf |archive-date=2021-11-14}}</ref> }} ==Further reading== * {{cite book |publisher=[[Intel Corporation]] |date=January 1980 |orig-date=1976 |title=PL/M-80 Programming Manual |id=Doc # 98-268B |url=http://bitsavers.trailing-edge.com/pdf/intel/PLM/9800268B_PLM-80_Programming_Manual_Jan80.pdf |access-date=2020-01-29 |url-status=live |archive-url=https://web.archive.org/web/20191221205639/http://bitsavers.trailing-edge.com/pdf/intel/PLM/9800268B_PLM-80_Programming_Manual_Jan80.pdf |archive-date=2019-12-21}} * {{cite book |title=MCS-8 Guide to PL/M Programming |date=September 1973 |publisher=[[Intel Corporation]] |url=http://bitsavers.org/components/intel/MCS8/MCS-8_A_Guide_to_PLM_Programming_Sep73.pdf |access-date=2020-02-02 |url-status=live |archive-url=https://web.archive.org/web/20191221205640/http://bitsavers.org/components/intel/MCS8/MCS-8_A_Guide_to_PLM_Programming_Sep73.pdf |archive-date=2019-12-21}} * {{cite book |title=PL/M 386 Programmer's Guide |publisher=[[RadiSys Corporation]] |date=December 1999 |url=http://www.slac.stanford.edu/grp/cd/soft/rmx/manuals/PLM_386.PDF |access-date=2020-01-29 |url-status=live |archive-url=https://web.archive.org/web/20060814050742/http://www.slac.stanford.edu/grp/cd/soft/rmx/manuals/PLM_386.PDF |archive-date=2006-08-14}} (NB. Includes entire syntax of PL/M in [[Backus–Naur form|BNF]] notation.) * {{cite book |author-last=McCracken |author-first=Daniel D. |author-link=Daniel D. McCracken |date=1978 |title=A Guide to PL/M Programming for Microcomputer Applications |publisher=[[Pearson Education|Pearson]] / [[Addison-Wesley]]}} * {{cite web |title=Development of Intel ISIS Operating System - An interview with Ken Burgett |author-first=Ken |author-last=Burgett |date=2017-11-10 |url=https://www.rogerarrick.com/osiris/burgett.txt |access-date=2023-11-25 |url-status=live |archive-url=https://web.archive.org/web/20231124165914/https://www.rogerarrick.com/osiris/burgett.txt |archive-date=2023-11-24}} [https://web.archive.org/web/20231125032320/https://00362628054895325210.googlegroups.com/attach/1cc719e8305ed/burgett.txt?part=0.1&view=1&vt=ANaJVrFYjqMX6NCUFa_l-LUDCL-Mu3EqJS1xO4wZczmxImZg2kP3F8E1qEWYTXI5rHv6URyeMi3pcc1oH5LeyEkzHUSeSnUncsii1D7SyIa5EcFQPzu1fzM][https://web.archive.org/web/20231125121523/https://www.rogerarrick.com/kenburgett/ 2017 Ken Burgett interview about development of intel ISIS Operating System] {{Digital Research}} {{Authority control}} {{DEFAULTSORT:PL M}} [[Category:Digital Research languages]] [[Category:PL/I programming language family]] [[Category:Procedural programming languages]] [[Category:Programming languages]] [[Category:Programming languages created in 1972]] [[Category:Structured programming languages]] <!-- [[Category:Digital Research]] -->
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Digital Research
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Reflist
(
edit
)
Template:Sfn
(
edit
)
Template:Short description
(
edit
)
Template:Use dmy dates
(
edit
)