MACRO-10
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
[edit]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]
References
[edit]- ^ 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
[edit]- 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.