-- File: CommUtilDefs.Mesa, Last Edit: HGM January 7, 1981 12:57 AM DIRECTORY ControlDefs USING [FrameHandle, returnOffset], Mopcodes USING [zLLB, zPOP], ProcessDefs USING [InterruptLevel]; CommUtilDefs: DEFINITIONS = BEGIN thisIsAnAlto: BOOLEAN = TRUE; -- Buffer/IOCB Allocation AllocateBuffers: PROCEDURE [nwords: CARDINAL] RETURNS [base: LONG POINTER]; FreeBuffers: PROCEDURE [base: LONG POINTER]; LockBuffers: PROCEDURE [LONG POINTER] = INLINE BEGIN END; UnlockBuffers: PROCEDURE [LONG POINTER] = INLINE BEGIN END; AllocateIocbs: PROCEDURE [CARDINAL] RETURNS [LONG POINTER]; FreeIocbs: PROCEDURE [LONG POINTER]; -- Lock Interrupt routines LockCode: PROCEDURE [UNSPECIFIED]; UnlockCode: PROCEDURE [UNSPECIFIED]; -- This is needed because of Process/ProcessDefs LONG/Short complications MaybeShorten: PROCEDURE [LONG POINTER] RETURNS [POINTER] = MACHINE CODE BEGIN Mopcodes.zPOP; END; GetEthernetHostNumber: PROCEDURE RETURNS [CARDINAL]; -- Process/ProcessDefs stuff for Device Drivers AddInterruptHandler: PROCEDURE [InterruptLevel, POINTER TO CONDITION, WORD]; RemoveInterruptHandler: PROCEDURE [InterruptLevel]; InterruptLevel: TYPE = ProcessDefs.InterruptLevel; -- Parity Process runs at Pritority 7, and uses InterruptLevel 0 -- Swat watcher and TOD clock uses InterruptLevel 3 -- Timeout process uses InterruptLevel 4 -- Keyboard Process run at Pritority 6, and uses InterruptLevel 7 -- AltoEthernet drivers run at Pritority 5, and use InterruptLevels 5, 6, and 8 -- PacketRadio driver runs at Priority 4 and uses InterruptLevels 9 and 10 -- ASD/Sweeden is using Pritority 3 and InterruptLevels 9 and 10 for other lines -- D0Ethernet drivers run at Priority 5 and use InterruptLevels 5+6 and 9+10 -- AltoSLA driver runs at Pritority 3, and uses InterruptLevel 12 -- ReadDisk runs at normal Pritority, and uses InterruptLevel 13 -- Gateway Dispatcher runs at Pritority 2 -- Debugging things FrameHandle: TYPE = ControlDefs.FrameHandle; GetReturnFrame: PROCEDURE RETURNS [FrameHandle] = MACHINE CODE BEGIN Mopcodes.zLLB, ControlDefs.returnOffset; END; -- Other goodies EnableAborts: PROCEDURE [LONG POINTER TO CONDITION] = INLINE {}; CopyLong, FriendOfCopyLong: PROCEDURE [ from: LONG POINTER, nwords: CARDINAL, to: LONG POINTER]; -- This is a hack for debugging SetDebuggingPointer: PROCEDURE [LONG POINTER]; magicMemoryLocation: --SHORT--POINTER = LOOPHOLE[612B]; END.