In this article we will explore the different aspects of MACRO-11, with the aim of providing the reader with a complete and detailed analysis of this topic. From its origins to its relevance today, through its impact on different areas of society, we will immerse ourselves in a journey in which we will address its multiple facets. Through the combination of historical data, current theories and concrete examples, we aim to offer a comprehensive vision that allows a thorough understanding of the importance of MACRO-11 in contemporary society. Whether it is a person, a concept, a date or any other element of interest, our purpose is to provide the reader with the necessary tools to delve into the fascinating world of MACRO-11 and understand its relevance today.
Paradigms | non-structured, imperative |
---|---|
Family | Assembly language |
Developer | Digital Equipment Corporation |
First appeared | 1980 |
Typing discipline | Untyped |
Scope | Lexical |
Implementation language | assembly language |
Platform | PDP-11 |
OS | All DEC PDP-11 |
Influenced by | |
PAL-11R | |
Influenced | |
VAX MACRO |
MACRO-11 is an assembly language with macro facilities, designed for PDP-11 minicomputer family from Digital Equipment Corporation (DEC). It is the successor to Program Assembler Loader (PAL-11R), an earlier version of the PDP-11 assembly language without macro facilities.
MACRO-11 was supported on all DEC PDP-11 operating systems. PDP-11 Unix systems also include an assembler (named as), structurally similar to MACRO-11, but with different syntax and fewer features. The MACRO-11 assembler (and programs created by it) could also run under the RSX-11 compatibility mode of OpenVMS on VAX.[1]
A complete "Hello, World!" program in PDP-11 macro assembler, to run under RT-11:
.TITLE HELLO WORLD
.MCALL .TTYOUT,.EXIT
HELLO:: MOV #MSG,R1 ;STARTING ADDRESS OF STRING
1$: MOVB (R1)+,R0 ;FETCH NEXT CHARACTER
BEQ DONE ;IF ZERO, EXIT LOOP
.TTYOUT ;OTHERWISE PRINT IT
BR 1$ ;REPEAT LOOP
DONE: .EXIT
MSG: .ASCIZ /Hello, world!/
.END HELLO
The .MCALL
pseudo-op warns the assembler that the code will be using the .TTYOUT
and .EXIT
macros. The .TTYOUT
and .EXIT
macros are defined in the standard system macro library to expand to the EMT
instructions to call the RT-11 monitor to perform the requested functions.
If this file is HELLO.MAC, the RT-11 commands to assemble, link and run (with console output shown) are as follows:
.MACRO HELLO
ERRORS DETECTED: 0
.LINK HELLO
.R HELLO
Hello, world!
.
(The RT-11 command prompt is ".
")
For a more complicated example of MACRO-11 code, two examples chosen at random are Kevin Murrell's KPUN.MAC, or Farba Research's JULIAN routine. More extensive libraries of PDP-11 code can be found in the Metalab freeware and Trailing Edge archives.[2][3]