MACRO-10

Short description: Assembly language

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:[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

1. ↑ Wolfram Rösler,"The Hello World Collection". Retrieved on 16 November 2016.
2. ↑ "99 Bottles of Beer" Retrieved on 10 April 2009.
3. ↑ Trailing Edge PDP-10 software archive

## External links

* DECsystem-10 Macro Assembler Reference Manual. Maynard, Massachusetts: Digital Equipment Corporation. April 1978. http://bitsavers.org/pdf/dec/pdp10/TOPS10_softwareNotebooks/vol13/AA-C780C-TB_Macro_Assembler_Reference_Manual_Apr78.pdf. Retrieved 2010-07-08.
* Singer, Michael (1978). Introduction to DECsystem-10 Assembler Language Programming. New York: John Wiley & Sons. pp. 145. ISBN 0-471-03458-4.
* Gorin, Ralph E (1981). Introduction to DECSYSTEM-20 Assembly Language Programming. Bedford, Massachusetts: Digital Press. pp. 539. ISBN 0-932376-12-6.

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/MACRO-10. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=MACRO-10&oldid=274127"