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