|
|
1.1 root 1: .th M6 VI 11/15/72
2: .sh NAME
3: m6 \*- general purpose macro processor
4: .sh SYNOPSIS
5: .bd m6
6: [
7: .bd \*-d
8: arg1 ] [ arg2 [ arg3 ] ]
9: .sh DESCRIPTION
10: .it M6
11: takes input from file arg2 (or standard input if arg2 is missing)
12: and places output on file arg3 (or standard output).
13: A working file of definitions, ``m.def'',
14: is initialized from file arg1 if that is supplied.
15: .it M6
16: differs from the standard [1] in these
17: respects:
18: .s3
19: #trace:, #source: and #end:
20: are not defined.
21: .s3
22: #meta,arg1,arg2: transfers the role of metacharacter
23: arg1 to character arg2. If two metacharacters become identical
24: thereby, the outcome of further processing is not guaranteed.
25: For example, to make [ ]{} play the
26: roles of #:<> type
27: .s3
28: .in+5
29: \\\#meta,<\\\#>,[:
30: .br
31: [meta,<:>,]:
32: .br
33: [meta,[substr,<<>>,1,1;,{]
34: .br
35: [meta,[substr,{{>>,2,1;,}]
36: .in-5
37: .s3
38: #del,arg1: deletes the definition of macro arg1.
39: .s3
40: #save: and #rest: save and restore the definition table together with
41: the current metacharacters on file
42: m.def.
43: .s3
44: #def,arg1,arg2,arg3: works as in the standard with the extension
45: that an integer may be
46: supplied to arg3 to cause the new macro to perform the
47: action of a specified builtin before its replacement text is evaluated.
48: Thus all builtins
49: except #def: can be retrieved even after deletion.
50: Codes for arg3 are:
51: .s3
52: .in+5
53: .nf
54: 0 \*- no function
55: 1,2,3,4,5,6 \*- gt,eq,ge,lt,ne,le
56: 7,8 \*- seq,sne
57: 9,10,11,12,13 \*- add,sub,mpy,div,exp
58: 20 \*- if
59: 21,22 \*- def,copy
60: 23 \*- meta
61: 24 \*- size
62: 25 \*- substr
63: 26,27 \*- go,gobk
64: 28 \*- del
65: 29 \*- dnl
66: 30,31 \*- save,rest
67: .fi
68: .in-5
69: .sh FILES
70: m.def working file of definitions
71: .br
72: /usr/lang/mdir/m6a m6 processor proper (/usr/bin/m6 is only an initializer)
73: .br
74: /usr/lang/mdir/m6b default initialization for m.def
75: .br
76: /bin/cp used for copying initial value of m.def
77: .sh "SEE ALSO"
78: [1] A. D. Hall,
79: The M6 Macroprocessor, Bell Telephone Laboratories, 1969
80: .sh DIAGNOSTICS
81: ``err''
82: \*- a bug, an unknown builtin or a bad definition table
83: .br
84: ``oprd''\*-can't open input or initial definitions
85: .br
86: ``opwr''\*-can't open output
87: .br
88: ``ova'' \*- overflow of nested arguments
89: .br
90: ``ovc'' \*- overflow of calls
91: .br
92: ``ovd'' \*- overflow of definitions
93: .br
94: ``Try again'' \*- no process available for copying m.def
95: .sh AUTHOR
96: M. D. McIlroy
97: .sh BUGS
98: Characters in internal tables are stored
99: one per word.
100: They really should be packed to improve capacity.
101: For want of space (and because of unpacked formats) no file arguments
102: have been provided to #save: or #rest:,
103: and no check is made on the actual opening of file m.def.
104: Again to save space,
105: garbage collection makes calls on #save: and #rest: and so overwrites
106: m.def.
107: .s3
108: Since the program is written in the defunct language
109: B it is currently unavailable.
110: Expressions of interest may make a C version appear.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.