PL/M

From Wikipedia, the free encyclopedia
Jump to: navigation, search
PL/M
Appeared in 1972 (1972)
Developer Gary Kildall [1] at Digital Research
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 original implementation language for the CP/M operating system. Also the firmware of the Service Processor component of CISC AS/400 was written in PL/M. PL/M compilers have been made for the following processors/controllers: Intel 4004, 8008, 8080, 8085, 8051, 8052, 8096, 80196, 8086/8088, 80186/80188, 286, and 386. 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;

[edit] Notes

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

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

[edit] External links

This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL.

Personal tools
Namespaces

Variants
Actions
Navigation
Interaction
Toolbox
Print/export
Languages