Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Overview  





2 PL/M sample code  





3 References  





4 Further reading  














PL/M






Català
Čeština
Deutsch
Español
Français
Hrvatski
Italiano
Nederlands

Polski
Русский
Тоҷикӣ
Українська
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


PL/M
DeveloperGary Kildall[1]atMicrocomputer Applications Associates
First appeared1973 (1973)[2][3]
Influenced by
ALGOL, PL/I, XPL

The PL/M programming language (an acronym of Programming Language for Microcomputers[2][3]) is a high-level language conceived and developed by Gary Kildall[2][3][4][1] in 1973[2][3] for Hank Smith[2][3]atIntel for its microprocessors.

Overview[edit]

The language incorporated ideas from PL/I, ALGOL[citation needed] 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,[5] 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, CorBASIC, 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.[6] 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).[7]

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[edit]

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;

References[edit]

  1. ^ a b 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.
  • ^ a b c d e f 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.
  • ^ a b c d e f 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.
  • ^ Johnson, Herb (2019-07-21). "ISIS, Intellec, PL/M, iRMX, and Intel - 20th century". Retrotechnology. Archived from the original on 2019-10-02. Retrieved 2020-01-29.
  • ^ 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.
  • ^ 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.
  • ^ "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[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=PL/M&oldid=1193800785"

    Categories: 
    Digital Research languages
    PL/I programming language family
    Procedural programming languages
    Programming languages
    Programming languages created in 1972
    Structured programming languages
    Hidden categories: 
    Articles with short description
    Short description is different from Wikidata
    Use dmy dates from January 2020
    All articles with unsourced statements
    Articles with unsourced statements from November 2016
    Articles with unsourced statements from January 2024
    Articles with J9U identifiers
    Articles with LCCN identifiers
    Articles with NKC identifiers
     



    This page was last edited on 5 January 2024, at 18:34 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki