-- Copyright (C) 1983  by Xerox Corporation. All rights reserved. 
-- SA4000HeadDummy.mesa, HGM,  3-Jul-85  3:44:11

DIRECTORY
  Device  USING [Type],
  HeadStartChain USING [Start],
  PilotDiskFace  USING [
    DeterminationMode, DeviceHandle, DiskAddress, FormattingUnit, GlobalStatePtr, OperationPtr, Status],
  PilotDiskFaceExtras  USING [FormattingSpec];

SA4000HeadDummy: PROGRAM
  IMPORTS RemainingHeads: HeadStartChain
  EXPORTS HeadStartChain, PilotDiskFace, PilotDiskFaceExtras =
  BEGIN OPEN PilotDiskFace;

  ControllerHandle: PUBLIC TYPE = MACHINE DEPENDENT RECORD [CARDINAL];

  DiskHandle: TYPE = MACHINE DEPENDENT RECORD [CARDINAL];

  -- Constants --
  nullControllerHandle: PUBLIC ControllerHandle ← [0];
  nullDiskHandle: DiskHandle = [0];
  nullDeviceHandle: PUBLIC DeviceHandle ← LOOPHOLE[nullDiskHandle];
  
  operationSize: PUBLIC CARDINAL ← 0;

  -- Public procedures --

  DetermineDiskShape: PUBLIC PROC [
    DeviceHandle, OperationPtr, DeterminationMode, LONG POINTER] RETURNS
    [BOOLEAN] = {ERROR};

  GetControllerAttributes: PUBLIC PROCEDURE [ControllerHandle]
    RETURNS [globalStateSize: CARDINAL] = {ERROR};

  GetDeviceAttributes: PUBLIC PROCEDURE [DeviceHandle]
    RETURNS [cylinders, movingHeads, fixedHeads, sectorsPerTrack: CARDINAL] = {ERROR};

  GetDeviceType: PUBLIC PROCEDURE [DeviceHandle] RETURNS [Device.Type] = {ERROR};

  GetDriveInfo: PUBLIC PROCEDURE [PilotDiskFace.DeviceHandle]
    RETURNS [
      firstPageOfInitialMicrocode: PilotDiskFace.DiskAddress,
      lastPageOfInitialMicrocode: PilotDiskFace.DiskAddress,
      firstPilotPage: PilotDiskFace.DiskAddress,
      formattingSpec: PilotDiskFaceExtras.FormattingSpec,
      formattingAlignment: PilotDiskFace.FormattingUnit] = {ERROR};

  GetFormattingUnit: PUBLIC PROCEDURE [device: DeviceHandle]
    RETURNS [FormattingUnit] = {ERROR};

  GetNextController: PUBLIC PROC [ControllerHandle] RETURNS [ControllerHandle] = {
    RETURN[nullControllerHandle]};

  GetNextDevice: PUBLIC PROCEDURE [DeviceHandle] RETURNS [DeviceHandle] =
    BEGIN
    RETURN[nullDeviceHandle];
    END;

  InitializeCleanup: PUBLIC PROCEDURE [controller: ControllerHandle] =
    BEGIN
    ERROR;
    END;

  InitializeController: PUBLIC PROCEDURE [
    controller: ControllerHandle, globalState: GlobalStatePtr, mask: WORD] = {ERROR};

  Initiate: PUBLIC PROCEDURE [operationPtr: OperationPtr] = {ERROR};

  Poll: PUBLIC PROCEDURE [controller: ControllerHandle]
    RETURNS [status: Status, op: OperationPtr, retriedCount: CARDINAL] = {ERROR};

  Recalibrate: PUBLIC PROCEDURE [device: DeviceHandle] = {ERROR};

  Reset: PUBLIC PROCEDURE [controller: ControllerHandle] = {ERROR};

  Start: PUBLIC PROCEDURE = BEGIN RemainingHeads.Start[]; END;    

  END....