-- BasicHeadsDLion.pack
-- Last Edited by: Taft, February 27, 1983 3:43 pm

BasicHeadsDLion: SEGMENT =
  BEGIN
  HeadsResident: CODE PACK =
    BEGIN
    BasicHeadsDLion EXCEPT HeadsResidentCool, HeadsSwappable, HeadsInitialization,
      [ColorDisplayHeadDLion, DESSoft, EthernetOneHeadDLion, IntervalTimerHeadDummy,
      SetGMTUsingEthernet];
    END;

  DESHead: CODE PACK =
    BEGIN
    DESSoft;
    END;

  HeadsResidentCool: CODE PACK =
    BEGIN
    EthernetHeadDLion [GetNextDevice, GetPacketLength, GetPacketsMissed, GetRetries,
      GetStatus, QueueInput, QueueOutput, TurnOn, TurnOff, RemoveCleanup];
    EthernetOneHeadDLion [GetStatus, MulticastCapabilities];
    IntervalTimerHeadDummy [SetExpirationTime, Wait];
    SA4000HeadDLion [GetDeviceAttributes, GetNextDevice, Reset, Recalibrate];
    UserTerminalHeadDLion [Beep, Connect, Disconnect, GetBitBltTable, TurnOn, TurnOff,
      SetBackground, SetBorderPattern, SetCursorPattern, SetFieldRate, SetPosition,
      SetVerticalWaveforms];
    ProcessorHeadDLion [GetGreenwichMeanTime, SetGreenwichMeanTime, BootButton,
      PowerOff, ExternalEvent, SetAutomaticPowerOn, ResetAutomaticPowerOn,
      BootSpecificMicrocode, GetBootFileNumber, UVersion, Unimplemented];
    RealMemoryImplDLion [PageFromProc, ReservedMemoryHandle];
    SetGMTUsingEthernet [EthernetExists, SetGMT, GetTime];
    END;

  HeadsSwappable: CODE PACK =
    BEGIN EXCEPT [MAIN];
    SA800HeadDLion [DiskChangeClear, Immediate, GetDeviceAttributes,
      GetNextDevice, GetContext, Initiate, CheckIOCB, RunIOCB, Poll, GetStatus,
      Reset, SetContext, BuildIOCB, Touch, IsTransferOp];
    END;

  HeadsInitialization: CODE PACK =
    BEGIN
    ColorDisplayHeadDLion;
    EthernetOneHeadDLion[MAIN, GetNextDevice, QueueOutput, TurnOn,
      GetEthernet1Address, Start];
    EthernetHeadDLion [MAIN, Start];
    IntervalTimerHeadDummy [MAIN, Start];
    ProcessorHeadDLion[MAIN, GetProcessorID, InitializeCVTimeouts, Start];
    SA4000HeadDLion [MAIN, Initialize, Start];
    SA800HeadDLion [MAIN, Initialize, Start];
    SetGMTUsingEthernet[MAIN];
    UserTerminalHeadDLion [MAIN, Initialize, Start];
    RealMemoryImplDLion [MAIN, Initialize, Start, MoveToDisplayMemory, AssocBlock,
      DonateReservedMemory, SetReservedMemoryUse];
    END;
  END;

HeadsResidentFrames: FRAME PACK =
  BEGIN
  ColorDisplayHeadDLion;
  DESSoft;  -- Actually doesn't need to be resident, but it's pretty small
  EthernetHeadDLion;
  EthernetOneHeadDLion;
  IntervalTimerHeadDummy;
  ProcessorHeadDLion;
  RealMemoryImplDLion;
  SA4000HeadDLion;
  SA800HeadDLion;
  SetGMTUsingEthernet;
  TextBltImpl;
  UserTerminalHeadDLion;
  END;