DIRECTORY AltoFileDefs: FROM "AltoFileDefs", DiskDefs: FROM "DiskDefs"; DiscoDefs: DEFINITIONS = BEGIN SFD: TYPE = MACHINE DEPENDENT RECORD -- ScanFile descriptor [ zone: DiskDefs.CBZptr, -- CB zone fp: AltoFileDefs.FP, nextCb: DiskDefs.CBptr, -- next read uses this CB ... linkCb: DiskDefs.CBptr, -- ... and reads label into this CB nb: CARDINAL, -- # of buffers (and CBs) bufs: POINTER TO BUF, -- origin of buffers head: CARDINAL, -- pn of head of queue tail: CARDINAL, -- pn of tail of queue +1 next: CARDINAL -- next pn to read, -1 if eof ]; BUF: TYPE = MACHINE DEPENDENT RECORD -- buffer description [ pageNumber: CARDINAL, diskAddress: AltoFileDefs.vDA, nchars: CARDINAL, data: ARRAY [0..256) OF CARDINAL, spacer: CARDINAL ]; LookupList: TYPE = RECORD [link: POINTER TO LookupList, fp: AltoFileDefs.FP, name: STRING ]; DiskPosition: TYPE = RECORD [ VDA: AltoFileDefs.vDA, inMemory: BOOLEAN _ FALSE, beginByte: [0..512) ]; (635)\f1 75b9B22b4B449b3B188b10B6f0 2f1 81b13B6f0 2f1 --low level disk routines ReadPageFromVDA: PROCEDURE [data: POINTER,vda: AltoFileDefs.vDA]; TransferBytes: PROCEDURE [dp: POINTER TO DiskPosition,nBytes: CARDINAL,data: POINTER TO PACKED ARRAY [0..0) OF [0..377B],free: BOOLEAN _ FALSE]; IndexFile: PROCEDURE [VDA: AltoFileDefs.vDA,nVDAs: CARDINAL,vDAs: POINTER TO ARRAY [0..0) OF AltoFileDefs.vDA]; --directory search Lookup: PUBLIC PROCEDURE [matchString: STRING] RETURNS [nameValArray: POINTER TO LookupList]; FreeLookupList: PROCEDURE [POINTER TO LookupList]; --fast streams ScanFile: PROCEDURE [fp: POINTER TO AltoFileDefs.FP, ba: POINTER TO UNSPECIFIED, len: CARDINAL, fa: POINTER TO AltoFileDefs.FA] RETURNS [sfd: POINTER TO SFD]; ScanBuffer: PROCEDURE[sfd: POINTER TO SFD, fa: POINTER TO AltoFileDefs.FA] RETURNS [POINTER TO UNSPECIFIED]; ScanFinish: PROCEDURE [sfd: POINTER TO SFD]; END. \f1i27bI15B52b13B133b9B104i20bI6B89b14B37i16bI8B153b10B100b10B