macro-11 for V7-Unix

Tim Shoppa SHOPPA at
Sat Jan 15 10:52:53 AEST 2000

>In article by Prof. Karl Kleine:
>> once upon a time, it was around 1981, I used a pdp11/45 with V7
>> (I started my life with Unix with V6 in 1977/8), doing some research
>> in compilers, portability, dense code schemes for interpreters.
>> For that I used a port of DEC MACRO-11 to Unix. There was also
>> I have the Supnik emulator to play with, and I wonder if this
>> macro-11 and linker is still somewhere around. I would love to
>> prepare a few examples for my lessons here (I'm a professor in

>Hi Karl, I think this came up on Usenet recently. No I don't know
>of a port of Macro-11 to Unix. I'll pass this on to our mailing list,
>just in case anybody knows of it.

As the possibly only member of this list who still makes a living writing
MACRO-11 code, I'm gonna take two shots at this:

One possibility is the "as11" assembler from Xinu.  It's a fairly portable
PDP-11 assembler, but doesn't have all the real macro facilities of
real Macro-11.  You can find this at

The other (and more likely) possibility is the "m11" macro package from
Harvard, which *does* come with a linker ("l11") as Karl described.  The
full distribution is in the 2.11BSD source tree, at "/usr/src/new/m11".

Here's the man page - look at the "NOTES" section near the bottom for
the history.

M11(1)                                                     M11(1)

       m11 - Macro-11 assembler for UNIX

       m11 [ option1 option2 ...  ] file1 file2 ...  filen

       M11  assembles  the  concatenation  of the specified files
       (file1, etc.)  and terminates when an  ``.end''  statement
       is  encountered.   The  resulting  object  file is usually
       named  filen.obj (see below).  If a file  argument,  filei
       does  not  contain a ``.'' in its name, the file filei.m11
       will be sought before filei itself.

       Options, if desired, may appear anywhere in  the  command,
       and  are  chosen from the following list.  All options are
       interpreted before any files are read.

       -ls    Produce an assembly listing and place in filen.lst

       -lt    Produce an assembly listing on the standard output.

       -fl    If  coupled  with  the -ls or -lt directives, makes
              the listing have a shortened format.  It is  short<AD>
              hand for -nl:seq:loc:bin:bex:me:meb:ttm:toc:sym.

       -uc    Simulate an initial .dsabl lc directive.  Force all
              characters in macro definitions to be  upper  case.
              This  flag makes lower-case handling in m11 compat<AD>
              able with the DEC Macro-11 assemblers.

       -um    Force all characters in  macro  definitions  to  be
              upper case.  This flag makes lower-case handling in
              this release of m11 compatable with  previous  ver<AD>
              sions of m11.

       -de    Make  all  option  choices  needed to make assembly
              mimic DEC Macro-11.  Implies (inter alia)  the  -uc
              flag.   This  includes the Johns Hopkins asm assem<AD>

       -ha    Make all option choices  needed  to  make  assembly
              mimic  earlier  (Harvard)  releases  of  m11.  This
              implies the -um flag.  Default  .psect  and  .csect
              attributes are set up in the funny Harvard way.

       -mx    Produce  a  listing  of  the  source  program as it
              appears after macro expansion.  Macro calls, condi<AD>
              tional  directives  and so on appear in the listing
              as comments.  Listing appears on  standard  output.
              No  machine  code  is  generated  or  listed.  This
              option is meant to  correspond  to  the  -E  or  -P
              options of the C compiler cc(1).

       -my    Like  -mx,  except that macro calls and conditional
              directives do not show up in the listing.

       -10    Generate an error whenever  op  codes  not  in  the
              PDP-11  ``standard  instruction  set''  are encoun<AD>
              tered.  Programmers writing for  a  PDP  11/10  can
              catch  instructions  illegal  for  that  machine by
              using this argument.

              The default attributes  for  a  .psect  or  unnamed
              .csect  are  redefined,  using  the colon-separated
              list args of valid .psect attributes.

              The default attributes for an .asect are redefined.

       -dp:c  The default attributes for a named .csect are rede<AD>

              Simulate an initial .list arglist  directive.   All
              .list  and  .nlist  directives  in the program text
              which attempt to change  the  settings  established
              with the -li flag will be ignored.

              Like -li:arglist, but for the .nlist directive.

              Similarly, for the .enabl directive.

              Similarly, but for the .dsabl directive.
              Produces  a  cross-reference  listing.   If the -ls
              option is also included, the cross-reference  list<AD>
              ing  will follow the assembly listing in filen.lst.
              References which are tagged with the symbol  #  are
              definitions.   References tagged with * are destuc<AD>
              tive references: the value of the symbol  or  vari<AD>
              able  in  question is changed.  Arglist consists of
              colon-separated keywords from  the  following  set.
              The keywords may be prefix abbreviated:

              sym    All user-defined symbols are indexed.

              mac    All macro names are indexed.

              per    All  uses  of  permanent symbols - op codes,
                     directives, etc - are indexed.

              pse    All psect names are indexed.   For  compata<AD>
                     bility  with  the  RT-11  CREF  program, the
                     argument cse is synonymous with pse.

              err    All errors are indexed.

              reg    All register uses are indexed.

              If no arglist is specified the default  sym:mac:err
              is  used.  In the listing page and line numbers for
              uses of symbols are followed by a  #  sign  if  the
              symbol  is defined and by a * sign if the symbol is

       -lp    Same as -ls, but also spools filen.lst for printing
              upon completion.

       -no    No  object  file  is  produced.  This is useful for
              syntax checking or list producing.

       -xs:n  Allots nK words of extra space for symbol table and
              macro  storage.   NOTE:  This  option  is currently
              inoperative: m11 automatically allots core for  its
              tables as needed.

       -xx    Debug flag: generate all kinds of wierd hack flack.

       -ns    No symbol table is  included  in  the  object  file
              (thus  ddt knows of no symbols from this assembly).

       -sx    Make the symbol table contain ``local symbols''  as
              well as ordinary symbols.

       -u     Treat  form  feed  characters as spaces.  This will
              make m11's idea of line numbers coincide  with  the
              UNIX  text editors.  Macro-11 statements containing
              imbedded form feed characters will be  parsed  dif<AD>
              ferently when the -u flag is in effect.

              Override  the convention of using last name as file
              name.  Instead, use names file.obj and file.lst for
              object and listing files.

       This  implementation of Macro-11 is a distant hand-me down
       from an old DEC Macro-11 modified at Harvard University in
       the  early  1970's.   It  is  grubby with smudges by Brent
       Byer, F. J. Howard, Bob Bowering, and Jim Reeds.  It  does
       not  implement  keyword arguments such as are described in
       section 7.3.6 of the DEC manual.  The  .enabl  abs  option
       does  not  work.  Listing control is by default .list ttm.
       Unlike earlier editions of m11 at UCB and at  Harvard,  it
       does  treat  immediate  constants of floating point opera<AD>
       tions correctly: see the last paragraph of  section  6.4.2
       on  the  middle  of  page 6-27 of the DEC manual.  M11 has
       several directives not described in the DEC  manual.   See
       the  New  UCB  M11  Manual.   The  default  attributes for
       .psects are different from those described in the DEC man<AD>
       ual,  but  may be changed by the -dp flag.  The .enabl glb
       feature is implemented: undefined  symbols  are  taken  as
       undefined global externals.

       /usr/share/misc/sysmac.smlsystem macro library (for .mcall
       filen.xrf           intermediate cross-reference temporary
       lpr(1)              spooler
       /usr/ucb/macxrf     cross-reference post-processor

       PDP-11 MACRO-11 Language Reference Manual , Digital Equip<AD>
       ment Corp. Order No. AA-5075A-TC, August 1977.
       New UCB M11 Manual , notional document by Jim Reeds.
 Tim Shoppa                        Email: shoppa at
 Trailing Edge Technology          WWW:
 7328 Bradley Blvd		   Voice: 301-767-5917
 Bethesda, MD, USA 20817           Fax:   301-767-5927

More information about the TUHS mailing list