<> <> <> DIRECTORY BasicTime: TYPE USING [GMT], BcdDefs: TYPE USING [VersionStamp], FS: TYPE USING [OpenFile, nullOpenFile], PrincOps: TYPE USING [wordsPerPage], Rope: TYPE USING [ROPE]; OSMiscOps: DEFINITIONS = { <> Address: TYPE = LONG POINTER; pageSize: CARDINAL = PrincOps.wordsPerPage; Pages: PROC [n: CARDINAL] RETURNS [Address]; FreePages: PROC [base: Address]; Words: PROC [nWords: CARDINAL] RETURNS [base: Address] = INLINE { RETURN [Pages[(nWords + (pageSize-1)) / pageSize]]}; FreeWords: PROC [base: Address] = INLINE {FreePages[base]}; SignalArgs: PROC RETURNS [signal, message: UNSPECIFIED]; <> GetTableBase: PROC [PROGRAM] RETURNS [LONG POINTER]; <> Stamp: TYPE [3]; MergeStamps: PROC [sum, item: Stamp] RETURNS [Stamp]; <<>> TimeToStamp: PROC [time: BcdDefs.VersionStamp] RETURNS [Stamp] = INLINE { RETURN [LOOPHOLE[time]]}; StampToTime: PROC [s: Stamp] RETURNS [BcdDefs.VersionStamp] = INLINE { RETURN [LOOPHOLE[s]]}; <> GenerateUniqueId: PROC RETURNS [BcdDefs.VersionStamp]; BcdCreateTime: PROC RETURNS [BasicTime.GMT]; <> <> FileAccess: TYPE = {read, write, both}; <> <> <> <> <<>> FindFile: PROC [Rope.ROPE, FileAccess_$read] RETURNS [FS.OpenFile]; RenameFile: PROC [newName, oldName: Rope.ROPE]; UnnameFile: PROC [oldName: Rope.ROPE, file: FS.OpenFile_FS.nullOpenFile]; DeleteFile: PROC [name: Rope.ROPE]; FileError: ERROR [name: Rope.ROPE]; }.