DIRECTORY IO USING [SP, STREAM], Rope USING [ROPE]; MicroDefs: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; Error: SIGNAL[explanation: ROPE _ NIL]; Failure: SIGNAL[explanation: ROPE _ NIL]; SrcFile: TYPE = REF SrcFileRec; SrcFileRec: TYPE = RECORD[ fullName: ROPE, strm: STREAM, upperCaseFlag: BOOL, next: SrcFile ]; OutputFile: TYPE = REF OutputFileRec; OutputFileRec: TYPE = RECORD[ fullName: ROPE, strm: STREAM ]; Memory: TYPE = REF MemoryRec; MemoryRec: TYPE = RECORD[ symIndex: INTEGER, -- back pointer to symbolRec for this memory widthInBits: INTEGER, widthInWords: INTEGER, size: INTEGER, memoryNum: INTEGER, accumWord: WordSeq, sourceIndex: INTEGER, sinkIndex: INTEGER, listOptions: WORD, listFields: WordSeq _ NIL, -- one word per bit of memory width lTag: CARDINAL, memSymPost: INTEGER _ 0, tagMacro: INTEGER _ 0 ]; WordSeq: TYPE = REF WordSeqRec; WordSeqRec: TYPE = RECORD[ints: SEQUENCE length: [0 .. 4000) OF WORD]; IntegerSeq: TYPE = REF IntegerSeqRec; IntegerSeqRec: TYPE = RECORD[ints: SEQUENCE length: [0 .. 4000) OF INTEGER]; SymbolType: TYPE = MACHINE DEPENDENT { nullType(0), macroType(1), fieldType(2), integerType(3), addressType(4), builtInType(5), neutralType(6), memoryType(7), undefnType(8), bitTableType(9) }; SymbolObj: TYPE = REF SymbolRec; SymbolRec: TYPE = RECORD[ symb: ATOM, name: ROPE, sType: SymbolType, symIndex: INTEGER _ 0, sMisc: INTEGER _ 0, -- interpretation depends on sType sVal: WORD _ 0, -- interpretation depends on sType redef: SymbolObj _ NIL, sData: REF ANY -- depnds on sType ]; BitTableObj: TYPE = REF BitTableRec; BitTableRec: TYPE = RECORD[ btSize: INTEGER, btBits: WordSeq ]; ArgRef: TYPE = REF ArgRec; ArgRec: TYPE = RECORD[aPtr: LONG POINTER TO WORD, lx: INTEGER]; EvalMode: TYPE = {returnVal, accumulateVal, fieldStoreVal}; endc: CHAR = '\n; -- '\n endcI: INTEGER = 15B; sepc: CHAR = IO.SP; -- IO.SP Aend: CHAR = '\001; Aargn: CHAR = '\002; Aarg2: CHAR = '\003; Aarg1: CHAR = '\004; Anargs: CHAR = '\005; Askip: CHAR = '\006; symc: CHAR = '\025; numc: CHAR = '\026; num6c: CHAR = '\027; mcsp: INTEGER = -1; isval: INTEGER = -2; asmem: INTEGER = -1; asval: INTEGER = -2; bsno: INTEGER = -2; bttab: INTEGER = -2; btsize: INTEGER = -3; bprefix: INTEGER = -1; LFbinary: WORD = 1; LFfields: WORD = 2; LFnumeric: WORD = 4; LFalphabetic: WORD = 10B; LF16bit: WORD = 20B; LFany: WORD = LFbinary + LFfields + LF16bit; -- list stores if any of these is set biBUILTIN: INTEGER = 1; biINSERT: INTEGER = 20; stBufSize: CARDINAL = 512; MBend: INTEGER = 0; MBdata: INTEGER = 1; MBseta: INTEGER = 2; MBfixup: INTEGER = 3; MBmemdef: INTEGER = 4; MBsymbol: INTEGER = 5; MBext: INTEGER = 6; END. ÒMicroDefs.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Willie-sue, February 26, 1986 10:51:16 am PST Dave Rumph, November 20, 1986 3:16:50 pm PST -- taken from MicDecl.d Interpretation of sMisc & sVal: sType sMisc sVal fieldType firstBitNumber numBits integerType - value addressType memoryIndex address in memory builtInType builtIn Index Interpretation of sData: sType sData macroType REF macroDefnIndex (REF INT) memoryType MemoryObj bitTableType BitTableObj for expanding encoded blocks Evaluation Modes Lexical scan markers - must be control "char's" Displacements Block prefix displacement LIST flags Initial BUILTIN numbers Buffer lengths Binary block types Ê䘚œ™Icodešœ Ïmœ1™