MACRO-10 is an assembly language with extensive macro facilities for DEC's PDP-10-based Mainframe computer systems, the DECsystem-10 and the DECSYSTEM-20. MACRO-10 is implemented as a two-pass assembler.
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 state OUTPUT: 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 /DLIST MACRO: HELLO EXIT .LOAD HELLO LINK: Loading EXIT .SAVE HELLO 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 1 HELLO 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 000010 CPU TIME USED 58:25.100 36P CORE USED HELLO WORLD MACRO %53B(1247) 17:29 7-Apr-:9 Page S-1 HELLO MAC 7-Apr-:9 17:29 SYMBOL TABLE LAB 000000' MONRT. 047040 000012 OUTPUT 000005' OUTSTR 051140 000000 RESET 047000 000000 START 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]
Original source: https://en.wikipedia.org/wiki/MACRO-10.
Read more |