DIRECTORY Environment, Space, PDInterpSysCalls; PDInterpSysCallsCedar4Impl: MONITOR IMPORTS Space EXPORTS PDInterpSysCalls ~ BEGIN spaces: LIST OF Space.Handle; SetDisplayLights: PUBLIC ENTRY PROC [value: [0..9999]] = {}; AllocateSpace: PUBLIC ENTRY PROC [words: INT] RETURNS [LONG POINTER] ~ { ENABLE UNWIND => NULL; pages: CARDINAL _ (words+Environment.wordsPerPage)/Environment.wordsPerPage; space: Space.Handle _ Space.Create[size: pages, parent: Space.virtualMemory]; Space.Map[space]; IF pages > 16 THEN Space.CreateUniformSwapUnits[16, space]; spaces _ CONS[space, spaces]; RETURN [Space.LongPointer[space]]; }; FreeSpace: PUBLIC ENTRY PROC [pointer: LONG POINTER] ~ { ENABLE UNWIND => NULL; prev: LIST OF Space.Handle _ NIL; FOR s: LIST OF Space.Handle _ spaces, s.rest UNTIL s = NIL DO IF Space.LongPointer[s.first] = pointer THEN { Space.Delete[s.first]; IF prev = NIL THEN spaces _ s.rest ELSE prev.rest _ s.rest; RETURN; }; prev _ s; ENDLOOP; BadFreeSpaceRequest[]; }; BadFreeSpaceRequest: PUBLIC ERROR ~ CODE; END. €PDInterpSysCallsCedar4Impl.mesa Michael Plass, November 17, 1983 2:16 pm Last Edited by: Pier, November 30, 1983 6:45 pm ĘŮ˜Jšœ™J™(J™/JšĎk œ&˜/šœ˜#Jšœ˜ Jšœ˜—Jšœ˜J˜šœœœ˜J˜—šĎnœœœœ˜