Jump to content

MACRO-10

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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
  • 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.