-- File: QueueCool.mesa, Last Edit: JGS February 7, 1980 9:11 AM -- Copyright Xerox Corporation 1979, 1980 DIRECTORY DriverDefs: FROM "DriverDefs" USING [dataWordsPerBuffer], PupDefs: FROM "PupDefs", -- EXPORTs BufferDefs: FROM "BufferDefs" USING [ Buffer, BufferObject, Queue, Dequeue, ReturnFreeBuffer], DriverTypes: FROM "DriverTypes" USING [queueSeal]; QueueCool: PROGRAM IMPORTS DriverDefs, BufferDefs EXPORTS PupDefs, BufferDefs, DriverDefs SHARES BufferDefs = BEGIN OPEN DriverDefs, BufferDefs; rawOverhead: CARDINAL = SIZE[raw BufferDefs.BufferObject]; pupOverhead: CARDINAL = SIZE[pupWords pup BufferDefs.BufferObject]+1; overhead: CARDINAL = MAX[ pupOverhead, SIZE[rppWords rpp BufferDefs.BufferObject]+1]; DataWordsPerPupBuffer: PUBLIC PROCEDURE RETURNS [CARDINAL] = BEGIN RETURN[DriverDefs.dataWordsPerBuffer+(overhead-pupOverhead)]; END; DataWordsPerRawBuffer: PUBLIC PROCEDURE RETURNS [CARDINAL] = BEGIN RETURN[DriverDefs.dataWordsPerBuffer+(overhead-rawOverhead)]; END; QueueInitialize: PUBLIC PROCEDURE [q: Queue] = BEGIN q^ _ [ length: 0, first: NIL, last: NIL, seal: DriverTypes.queueSeal ]; END; -- put all buffers back onto freeQueue QueueCleanup: PUBLIC PROCEDURE [q: Queue] = BEGIN b: Buffer; UNTIL (b_Dequeue[q])=NIL DO ReturnFreeBuffer[b]; ENDLOOP; END; -- initialization END. -- QueueCool(2048)\710b21B120b21B120b15B161b12B