MACRO-10 is an assembly language with extensive macro facilities for DEC's PDP-10-based minicomputer systems, the DECsystem-10 and the DECSYSTEM-20. MACRO-10 is implemented as a two-pass assembler.
 Programming examples
A simple "Hello, world!" program in MACRO-10 assembler, to run under TOPS-10, adapted from a specimen in a large collection of "Hello World" programs in various languages:[1]
        TITLE   HELLO WORLD        ; 'Hello world' in MACRO-10 for TOPS-10        SEARCH  UUOSYM          ; Make UUO symbol names available LAB:    ASCIZ   /Hello, world!/                               ; NUL-terminated ASCII string with CRLF START:  RESET                   ; Initialise job to clean runtime stateOUTPUT: OUTSTR  LAB             ; Output string starting at LAB:        MONRT.                  ; Return to monitor        JRST    OUTPUT          ; Restart at OUTPUT: if user CONTINUEs job        END     START           ; End assembly, set program start address
If this program is saved in the file HELLO.MAC, it can be assembled, linked and run like this (the TOPS-10 system prompt is the . at the start of lines):
.COMPILE HELLO.MAC /DLISTMACRO:  HELLO EXIT .LOAD HELLOLINK:   Loading EXIT .SAVEHELLO saved .RUN Hello, world! .
The assembly listing file generated by the /DLIST (Disk LISTing) option to the COMPILE command:
HELLO WORLD     MACRO %53B(1247) 17:29  7-Apr-:9 Page 1HELLO   MAC      7-Apr-:9 17:29                                                 TITLE   HELLO WORLD                                                ; 'Hello world' in MACRO-10 for TOPS-10                                                SEARCH  UUOSYM          ; Make UUO symbol names available         000000' 110 145 154 154 157     LAB:    ASCIZ   /Hello, world!        000001' 054 040 167 157 162        000002' 154 144 041 015 012     /                               ; NUL-terminated ASCII string with CRLF        000003' 000 000 000 000 000         000004' 047 00 0 00 000000      START:  RESET                   ; Initialise job to clean runtime state        000005' 051 03 0 00 000000'     OUTPUT: OUTSTR  LAB             ; Output string starting at LAB:        000006' 047 01 0 00 000012              MONRT.                  ; Return to monitor        000007' 254 00 0 00 000005'             JRST    OUTPUT          ; Restart at OUTPUT: if user CONTINUEs job                        000004'                 END     START           ; End assembly, set program start address NO ERRORS DETECTED PROGRAM BREAK IS 000010CPU TIME USED 58:25.100 36P CORE USED HELLO WORLD     MACRO %53B(1247) 17:29  7-Apr-:9 Page S-1HELLO   MAC      7-Apr-:9 17:29         SYMBOL TABLE LAB             000000'MONRT.  047040  000012OUTPUT          000005'OUTSTR  051140  000000RESET   047000  000000START           000004'
The date ":9" is a Year 2000 problem. A more complex MACRO-10 example program, which renders one version of the 99 Bottles of Beer song, may be examined at the "99 Bottles of Beer" web site.[2]
For larger bodies of code, much of the MACRO-10 code for the TOPS-10 and TOPS-20 systems is available in the Trailing Edge PDP-10 tape archives.[3]
 References
 External links
- Singer, Michael (1978). Introduction to DECsystem-10 Assembler Language Programming. New York: John Wiley & Sons. p. 145. ISBN 0-471-03458-4. 
 
- Gorin, Ralph E (1981). Introduction to DECSYSTEM-20 Assembly Language Programming. Bedford, Massachusetts: Digital Press. p. 539. ISBN 0-932376-12-6.