|
|
1.1 ! root 1: .pa 1 ! 2: .he 'M6 (I)'11/15/72'M6 (I)' ! 3: .ti 0 ! 4: NAME m6 -- general purpose macro processor ! 5: .sp ! 6: .ti 0 ! 7: SYNOPSIS m6__ ! 8: [ -d__ arg1 ] [ arg2 [ arg3 ] ] ! 9: .sp ! 10: .ti 0 ! 11: DESCRIPTION m6__ ! 12: takes input from file arg2 (or standard input if arg2 is missing) ! 13: and places output on file arg3 (or standard output). ! 14: A working file of definitions, "m.def", ! 15: is initialized from file arg1 if that is supplied. ! 16: M6 differs from the standard [1] in these ! 17: respects: ! 18: .sp ! 19: #trace:, #source: and #end: ! 20: are not defined. ! 21: .sp ! 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: .sp ! 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: .sp ! 38: #del,arg1: deletes the definition of macro arg1. ! 39: .sp ! 40: #save: and #rest: save and restore the definition table together with ! 41: the current metacharacters on file ! 42: m.def. ! 43: .sp ! 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: .sp ! 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: .sp ! 70: .ti 0 ! 71: FILES m.def--working file of definitions ! 72: .br ! 73: /usr/lang/mdir/m6a--m6 processor proper (/usr/bin/m6 is only an initializer) ! 74: .br ! 75: /usr/lang/mdir/m6b--default initialization for m.def ! 76: .br ! 77: /bin/cp--used for copying initial value of m.def ! 78: .sp ! 79: .ti 0 ! 80: SEE ALSO [1] A. D. Hall, ! 81: The M6 Macroprocessor, Bell Telephone Laboratories, 1969 ! 82: .sp ! 83: .ti 0 ! 84: DIAGNOSTICS "err" ! 85: -- a bug, an unknown builtin or a bad definition table ! 86: .br ! 87: "oprd"--can't open input or initial definitions ! 88: .br ! 89: "opwr"--can't open output ! 90: .br ! 91: "ova" -- overflow of nested arguments ! 92: .br ! 93: "ovc" -- overflow of calls ! 94: .br ! 95: "ovd" -- overflow of definitions ! 96: .br ! 97: "Try again" -- no process available for copying m.def ! 98: .br ! 99: .sp ! 100: .ti 0 ! 101: BUGS Characters in internal tables are stored ! 102: one per word. ! 103: They really should be packed to improve capacity. ! 104: For want of space (and because of unpacked formats) no file arguments ! 105: have been provided to #save: or #rest:, ! 106: and no check is made on the actual opening of file m.def. ! 107: Again to save space, ! 108: garbage collection makes calls on #save: and #rest: and so overwrites ! 109: m.def.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.