DIRECTORY Basics USING [BITAND, BITNOT, BITOR, BITRSHIFT, BITXOR], Basics16 USING [BITAND, BITNOT, BITOR, BITXOR], MobDefs USING [MobFormat, VersionStamp]; OSMiscOps: DEFINITIONS IMPORTS Basics, Basics16 = { WordAnd: PROC [w1, w2: WORD] RETURNS [WORD] = INLINE { IF BITS[WORD] = 16 THEN RETURN [Basics16.BITAND[w1, w2]] ELSE RETURN [Basics.BITAND[w1, w2]]; }; WordOr: PROC [w1, w2: WORD] RETURNS [WORD] = INLINE { IF BITS[WORD] = 16 THEN RETURN [Basics16.BITOR[w1, w2]] ELSE RETURN [Basics.BITOR[w1, w2]]; }; WordXor: PROC [w1, w2: WORD] RETURNS [WORD] = INLINE { IF BITS[WORD] = 16 THEN RETURN [Basics16.BITXOR[w1, w2]] ELSE RETURN [Basics.BITXOR[w1, w2]]; }; WordNot: PROC [w: WORD] RETURNS [WORD] = INLINE { IF BITS[WORD] = 16 THEN RETURN [Basics16.BITNOT[w]] ELSE RETURN [Basics.BITNOT[w]]; }; Address: TYPE = LONG POINTER; Pages: PROC [n: CARD] RETURNS [Address]; FreePages: PROC [base: Address]; Units: PROC [nUnits: CARD] RETURNS [base: Address]; FreeUnits: PROC [base: Address]; UnitsToBytes: PROC [units: INT] RETURNS [INT] = INLINE { SELECT bytesPerUnit FROM 1 => RETURN [units]; 2 => RETURN [units+units]; 4 => RETURN [units+units+units+units]; ENDCASE => ERROR; }; BytesToUnits: PROC [bytes: CARD] RETURNS [INT] = INLINE { SELECT bytesPerUnit FROM 1 => RETURN [bytes]; 2 => RETURN [Basics.BITRSHIFT[bytes, 1]]; 4 => RETURN [Basics.BITRSHIFT[bytes, 2]]; ENDCASE => ERROR; }; bytesPerUnit: NAT = BYTES[UNIT]; bytesPerFilePage: NAT; mobFormat: MobDefs.MobFormat = []; Copy: PROC [from: LONG POINTER, nwords: CARD, to: LONG POINTER]; Fill: PROC [where: LONG POINTER, nWords: CARD, value: WORD]; Stamp: TYPE[SIZE[MobDefs.VersionStamp]]; MergeStamps: PROC [sum, item: Stamp] RETURNS [Stamp]; TimeToStamp: PROC [time: MobDefs.VersionStamp] RETURNS [Stamp]; StampToTime: PROC [s: Stamp] RETURNS [MobDefs.VersionStamp]; GenerateUniqueId: PROC RETURNS [MobDefs.VersionStamp]; }. n OSMiscOps.mesa Copyright Σ 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved. Satterthwaite, November 4, 1985 9:40:23 am PST Russ Atkinson (RRA) December 8, 1988 4:13:05 pm PST Willie-s, September 24, 1991 1:52 pm PDT Bit utilities based on words utilities For PrincOps machines copying & clearing functional version stamps unique ids Κg–(cedarcode) style•NewlineDelimiter ™codešœ™Kšœ ΟeœI™TKšΟy.™.K™3K™(—˜šΟk ˜ Kš œŸœŸœŸ œŸ œŸœ˜8Kš œ ŸœŸœŸ œŸœ˜/KšœŸœ˜(——headšΟn œŸ ˜KšŸœ˜—K˜šœ™K™š  œŸœ ŸœŸœŸœŸœ˜6šŸœŸœŸœ˜KšŸœŸœ Ÿœ ˜%KšŸœŸœ Ÿœ ˜$—K˜K˜—š  œŸœ ŸœŸœŸœŸœ˜5šŸœŸœŸœ˜KšŸœŸœ Ÿœ ˜$KšŸœŸœ Ÿœ ˜#—K˜K˜—š  œŸœ ŸœŸœŸœŸœ˜6šŸœŸœŸœ˜KšŸœŸœ Ÿœ ˜%KšŸœŸœ Ÿœ ˜$—K˜K˜—š  œŸœŸœŸœŸœŸœ˜1šŸœŸœŸœ˜KšŸœŸœ Ÿœ˜ KšŸœŸœ Ÿœ˜—K˜K˜——šœ ™ K˜Kšœ ŸœŸœŸœ˜K˜Kš œŸœŸœŸœ ˜(Kš  œŸœ˜ K˜Kš œŸœ ŸœŸœ˜3Kš  œŸœ˜ K˜š   œŸœ ŸœŸœŸœŸœ˜8šŸœŸ˜KšœŸœ ˜KšœŸœ˜KšœŸœ˜&KšŸœŸœ˜—K˜K˜—š   œŸœ ŸœŸœŸœŸœ˜9šŸœŸ˜KšœŸœ ˜KšœŸœ Ÿ œ ˜)KšœŸœ Ÿ œ ˜)KšŸœŸœ˜—K˜—K˜KšœŸœŸœŸœ˜ KšœŸœ˜K˜šœ"˜"Kšœ™—K˜—™K˜š  œŸœŸœŸœ ŸœŸ œ˜@K˜—š  œŸœ ŸœŸœ Ÿœ Ÿœ˜