M6(VI)                       2/19/74                       M6(VI)

     m6 - general purpose macroprocessor

     m6 [ name ]

     M6  copies  the  standard input to the standard output, with
     substitutions for any macro calls that appear.  When a  file
     name  argument  is given, that file is read before the stan-
     dard input.

     The processor is as described in the  reference  with  these

       #def,arg1,arg2,arg3:  causes  arg1  to become a macro with
       defining text arg2 and (optional) built-in  serial  number

       #del,arg1: deletes the definition of macro arg1.

       #end: is not implemented.

       #list,arg1: sends the name of the macro designated by arg1
       to the current  destination  without  recognition  of  any
       warning  characters;  arg1  is 1 for the most recently de-
       fined macro, 2 for the next most recent, and so  on.   The
       name is taken to be empty when arg1 doesn't make sense.

       #warn,arg1,arg2:  replaces  the old warning character arg1
       by the new warning character arg2.

       #quote,arg1: sends the definition text of  macro  arg1  to
       the current destination without recognition of any warning

       #serial,arg1: delivers the built-in serial number  associ-
       ated with macro arg1.

       #source,arg1: is not implemented.

       #trace,arg1:  with  arg1  = `1' causes a reconstruction of
       each later call to be placed on the standard output with a
       call  level number; other values of arg1 turn tracing off.

     The built-in `warn' may  be  used  to  replace  inconvenient
     warning  characters.  The example below replaces `#' `:' `<'
     `>' by `[' `]' `{' `}'.

               [now,{calls look like this}]

                              - 1 -

M6(VI)                       2/19/74                       M6(VI)

     Every built-in function has a serial number, which specifies
     the  action  to be performed before the defining text is ex-
     panded.  The serial numbers are: 1 gt, 2 eq, 3 ge, 4  lt,  5
     ne,  6  le,  7 seq, 8 sne, 9 add, 10 sub, 11 mpy, 12 div, 13
     exp, 20 if, 21 def, 22 copy, 23 warn, 24 size, 25 substr, 26
     go,  27  gobk, 28 del, 29 dnl, 32 quote, 33 serial, 34 list,
     35 trace.  Serial number 0 specifies no built-in action.

     A. D. Hall, M6 Reference Manual.  Computer Science Technical
     Report #2, Bell Laboratories, 1969.

     Various table overflows and ``impossible'' conditions result
     in comment and dump.  There are no  diagnostics  for  poorly
     formed input.

     M. D. McIlroy

     Provision should be made to extend tables as needed, instead
     of wasting a big fixed core allocation.  You  get  what  the
     PDP11 gives you for arithmetic.

                              - 2 -