MACRO-11

{{Short description|Assembly language with macro facilities}}

{{Infobox programming language

| name = MACRO-11

| paradigms = non-structured, imperative

| family = Assembly language

| designer =

| developer = Digital Equipment Corporation

| released = {{Start date and age|1980}}

| typing = Untyped

| scope = Lexical

| programming language = assembly language

| discontinued = Yes

| platform = PDP-11

| operating system = All DEC PDP-11

| influenced by = PAL-11R

| influenced = VAX MACRO

| website =

}}

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.{{cite web |url=http://bitsavers.org/pdf/dec/vax/handbook/VMS_Language_and_Tools_Handbook_1985.pdf |title=VAX/VMS Software Language and Tools Handbook |date=1985 |website=Bitsavers.org |access-date=2020-12-31}}

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 (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 {{mono|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.[http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/ Metalab][http://pdp-11.trailing-edge.com/ Trailing Edge]

References

{{Reflist}}