<> <> <> <> <> DIRECTORY EthernetFace; EthernetHeadDorado: PROGRAM EXPORTS EthernetFace = { OPEN EthernetFace; Device: TYPE = RECORD [WORD]; IOCB: TYPE = LONG POINTER TO IOControlBlock; IOControlBlock: TYPE = RECORD [WORD]; DeviceHandle: PUBLIC TYPE = Device; ControlBlockRecord: PUBLIC TYPE = IOControlBlock; nullDeviceHandle: PUBLIC DeviceHandle _ LOOPHOLE[123456B]; globalStateSize: PUBLIC CARDINAL _ 0; controlBlockSize: PUBLIC CARDINAL _ 0; hearSelf: PUBLIC BOOLEAN _ TRUE; CantGetHere: ERROR = CODE; QueueOutput: PUBLIC PROC [device: Device, buffer: LONG POINTER, length: CARDINAL, cb: IOCB] = { ERROR CantGetHere; }; QueueInput: PUBLIC PROC [device: Device, buffer: LONG POINTER, length: CARDINAL, cb: IOCB] = { ERROR CantGetHere; }; GetStatus: PUBLIC PROC [cb: IOCB] RETURNS [status: Status] = { ERROR CantGetHere; }; GetRetries: PUBLIC PROC [cb: IOCB] RETURNS [CARDINAL] = { ERROR CantGetHere; }; GetPacketLength: PUBLIC PROC [cb: IOCB] RETURNS [CARDINAL] = { ERROR CantGetHere; }; GetPacketsMissed: PUBLIC PROC [device: Device] RETURNS [CARDINAL] = { ERROR CantGetHere; }; GetNextDevice: PUBLIC PROC [device: Device] RETURNS [Device] = { RETURN[nullDeviceHandle]; }; TurnOn: PUBLIC PROC [ device: Device, host: physical HostNumber, inInterrupt, outInterrupt: WORD, globalState: GlobalStatePtr] = { }; TurnOff: PUBLIC PROC [device: Device] = { }; AddCleanup: PUBLIC PROC [device: Device] = { }; RemoveCleanup: PUBLIC PROC [device: Device] = { }; }. -- EthernetHeadDorado.