Category:PL/M: Difference between revisions

Note about the forms of DO statements available
(Language stub)
(Note about the forms of DO statements available)
 
(11 intermediate revisions by the same user not shown)
Line 1:
{{language}}{{stub}}|PL/M
|tags=plm
}}
 
Designed and implemented in 1973 by Gary Kildall, PL/M (Programming Language for Microcomputers) is (as the name suggests) a language designed for microcomputer software, particularly system software.
<br>
<br>
It is approximately a very small subset of PL/1 (though not a strict subset).
<br>
The following statements from PL/1 (with some changes) were available:
* assignment
* CALL
* DECLARE
* DO-END (4 forms: statement grouping, counted loops, while loops and case statements)
* IF-THEN-ELSE
* GOTO
* PROCEDURE-END
* RETURN
Additionally, a HALT statement, interrupt related statements and a number of compiler directive statements existed.<br>
There are no built-in I/O statements - calls to appropriate routines would be made instead.
<br><br>
Unlike PL/1, PL/M keywords are reserved and so cannot be used as identifiers. The Boolean operators are reserved words: AND, OR and NOT instead of the symbols: &, |, ¬.
<br>
Available datatypes (BYTE, WORD, etc.) reflected the available types of the microprocessors. The original 8008 and 8080 compilers only had BYTE and ADDRESS types - 8 and 16 bit unsigned integers.
<br><br>
The declaration of structures in PL/M does not use level-numbers, instead a syntax more like C structs is used, e.g.:
<code>DECLARE A STRUCTURE ( B BYTE, C WORD );</code>
declares a structure A with two members, B and C. Note that structures were not part of the original 8008/8080 PL/M languages.
<br>
<br>
PL/M was used in the development of the CP/M operating system and associated applications.
<br>
Compilers were available for a number of microprocessors including the 8080/Z80, 8051, 8086, 80186, 80286 and 80386.
<br>
The available datatypes varied depending on the processor.
<br>
<br>
Kildall's original PL/M compiler was implemented entirely in standard Fortran 66.
<br>
<br>
==See Also==
* [[wp:PL/M|PL/M on Wikipedia]]
* [[PL/1]]
* [[Polyglot:PL/I and PL/M]]
* [[Tasks not implemented in PL/M]]
3,025

edits