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.
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:
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.
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.
References
- Wolfram Rösler,"The Hello World Collection". Retrieved on 16 November 2016.
- "99 Bottles of Beer" Retrieved on 10 April 2009.
- Trailing Edge PDP-10 software archive
External links
- DECsystem-10 Macro Assembler Reference Manual (PDF). Maynard, Massachusetts: Digital Equipment Corporation. April 1978. Retrieved 2010-07-08.
- 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.
Digital Equipment Corporation | |||||||||
---|---|---|---|---|---|---|---|---|---|
Key people |
| ||||||||
Instruction set architectures, processors |
| ||||||||
Computer terminals | |||||||||
Operating systems | |||||||||
Programming languages | |||||||||
Character sets |
| ||||||||
Bus standards | |||||||||
Other hardware | |||||||||
Related topics |
| ||||||||