Jump to content

PL/M: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
GreenC bot (talk | contribs)
Line 62: Line 62:
*[http://bitsavers.trailing-edge.com/pdf/intel/PLM/9800268B_PLM-80_Programming_Manual_Jan80.pdf PL/M-80 Programming Manual] – Intel Corporation (On Bitsavers.org).
*[http://bitsavers.trailing-edge.com/pdf/intel/PLM/9800268B_PLM-80_Programming_Manual_Jan80.pdf PL/M-80 Programming Manual] – Intel Corporation (On Bitsavers.org).
*[http://www.ristancase.com/cms/products/p-development-assistant-for-pl-m Development Assistant for PL/M (DA-PL/M)] – Commercial PL/M [[integrated development environment|IDE]] from RistanCASE GmbH
*[http://www.ristancase.com/cms/products/p-development-assistant-for-pl-m Development Assistant for PL/M (DA-PL/M)] – Commercial PL/M [[integrated development environment|IDE]] from RistanCASE GmbH
*[http://www.mpsinc.com - PL/M to C Translator Tools & Services, all PL/M dialects] – Commercial products from Micro-Processor Services, Inc.
*[http://www.plm2c.com PLM2C - PL/M to C Translator] – Commercial product from Alternative Solutions
*[http://www.plm2c.com PLM2C - PL/M to C Translator] – Commercial product from Alternative Solutions
*[http://www.xtran-llc.com/plmcee.html XTRAN Demonstration: Translating PL/M to C] – Commercial product from Pennington Systems, Inc.
*[http://www.xtran-llc.com/plmcee.html XTRAN Demonstration: Translating PL/M to C] – Commercial product from Pennington Systems, Inc.

Revision as of 16:27, 28 October 2016

PL/M
DeveloperGary Kildall [1] at Digital Research
First appeared1972 (1972)
Influenced by
ALGOL, PL/I, XPL

The PL/M programming language (an acronym of Programming Language for Microcomputers) is a high-level language developed by Gary Kildall[1] in 1972 for Intel for its microprocessors.

The language incorporated ideas from PL/I, ALGOL and XPL, and had an integrated macro processor. Unlike other contemporary languages such as Pascal, C 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 the original implementation language for the CP/M operating system. 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 AS/400 was written in PL/M.

The original PL/M compiler targeted the Intel 8008. An updated version generated code for the 8080 processor, which would also run on the Zilog Z80 family as well as on the newer Intel 8085. Later followed compilers for the Intel 8048 and Intel 8051-microcontroller family as well as for the 8086 (8088), 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 micrcontrollers, such as the Intel 8061 and 8096 / MCS-96 architecture family. 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" which ran on other operating environments such as 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 translators exist (for examples, see External links, below).

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 */
    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;

Notes

  1. ^ a b Swaine, Michael (June 22, 2001). "Gary Kildall and Collegial Entrepreneurship". Dr. Dobb's Journal. Retrieved 2006-11-20.

References

  • Intel Corporation (1976). PL/M-80 Programming Manual. Doc # 98-268B.
  • McCracken, Daniel D. (1978). A Guide to PL/M Programming for Microcomputer Applications. Pearson Addison-Wesley.

This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.