-- File: CommUtilDefs.Mesa,  Last Edit: BLyon  January 19, 1981  12:05 PM

DIRECTORY
  Mopcodes USING [zBLTL, zLLB],
  Process USING [EnableAborts],
  PrincOps USING [FrameHandle, returnOffset];

CommUtilDefs: DEFINITIONS
  IMPORTS Process =
  BEGIN

  -- for finding out where we really are
  thisIsAnAlto: BOOLEAN = FALSE;

  -- Buffer/IOCB Allocation
  AllocateBuffers: PROC [nwords: CARDINAL] RETURNS [base: LONG POINTER];
  FreeBuffers: PROC [base: LONG POINTER];
  LockBuffers: PROC [LONG POINTER]; -- noop in Alto world
  UnlockBuffers: PROC [LONG POINTER]; -- noop in Alto world
  AllocateIocbs: PROC [CARDINAL] RETURNS [LONG POINTER];
  FreeIocbs: PROC [LONG POINTER];

  -- Lock Interrupt routines
  LockCode: PROC [UNSPECIFIED] = INLINE {}; -- useful in Alto world

  UnlockCode: PROC [UNSPECIFIED] = INLINE {}; -- useful in Alto world


  -- This is needed because of Process/ProcessDefs LONG/Short complications
  -- Shortens in the Alto world, noop in Pilot world

  MaybeShorten: PROC [p: LONG POINTER] RETURNS [LONG POINTER] = INLINE {
    RETURN[p]};

  GetEthernetHostNumber: PROC RETURNS [CARDINAL];

  -- Debugging things
  FrameHandle: TYPE = PrincOps.FrameHandle;
  GetReturnFrame: PROC RETURNS [FrameHandle] = MACHINE CODE
    BEGIN Mopcodes.zLLB, PrincOps.returnOffset END;

  -- Other goodies

  EnableAborts: PROC [condPtr: LONG POINTER TO CONDITION] = INLINE
    {Process.EnableAborts[condPtr]};
  Zero: PROC [POINTER, CARDINAL];
  CopyLong: PROC [from: LONG POINTER, nwords: CARDINAL, to: LONG POINTER] =
    MACHINE CODE BEGIN Mopcodes.zBLTL END;
  FriendOfCopyLong: PROC [from: LONG POINTER, nwords: CARDINAL, to: LONG POINTER];

  -- This is a hack for debugging
  SetDebuggingPointer: PROC [LONG POINTER] = INLINE {}; -- useful in Alto world

  END......
July 19, 1980  3:33 PM	By: Forrest	Action: Removed references to Interupt levels.  Remove pointer into middle of page 1.  Change ControlDefs to Runtime.