MACRO-11


MACRO-11 is an assembly language with macro facilities for PDP-11 minicomputers from Digital Equipment Corporation. It is the successor to PAL-11, an earlier version of the PDP-11 assembly language without macro facilities.
The MACRO-11 assembly language was designed for the PDP-11 minicomputer family. It was supported on all DEC PDP-11 operating systems. PDP-11 Unix systems also include an assembler, structurally similar to MACRO-11 but with different syntax and fewer features.

Programming example

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 +,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 are as follows:

.MACRO HELLO
ERRORS DETECTED: 0
.LINK HELLO
.R HELLO
Hello, world!

For a more complicated example of MACRO-11 code, two examples chosen at random are Kevin Murrell's , or Farba Research's routine. More extensive libraries of PDP-11 code can be found in the Metalab freeware and Trailing Edge archives.