<<>> <> <> GenericCall: DEFINITIONS = BEGIN Size: TYPE ~ INT--I'd like to say [0..INT.LAST], but PrincOps can't compile that--; Pointer: TYPE ~ CARD32 --so they can be seen with Cirio--; Nil: Pointer ~ 0; bitsPerUnit: Size ~ BITS[UNIT]; bitsPerWord: Size ~ BITS[WORD]; unitsPerWord: Size ~ UNITS[WORD]; divides: BOOL[TRUE..TRUE] ~ ((bitsPerWord MOD bitsPerUnit) = 0); Fields: TYPE ~ REF FieldSeq; FieldSeq: TYPE ~ RECORD [SEQUENCE length: NAT OF Field]; FieldList: TYPE ~ LIST OF Field; Field: TYPE ~ RECORD [ address: Pointer, bitOffset: Size, bits: Size]; nilField: Field ~ [Nil, 0, 0]; SizeList: TYPE ~ LIST OF Size; ProcRep: TYPE ~ LONG POINTER TO ProcPair; ProcPair: TYPE ~ RECORD [startPC, flag: Pointer]; Call: PROC [proc: ProcRep, formalArgSizes, formalRetSizes: SizeList, actualArgs, actualRets: Fields]; Seqifields: PROC [FieldList] RETURNS [Fields]; Unimplemented: ERROR; BadArgs: ERROR; END.