<> <> <> <> <> <> <> <<>> <> <<>> EthernetFace: CEDAR DEFINITIONS = { BYTE : TYPE = [0..100H); GetNextDevice: PROC [Handle] RETURNS [Handle]; <> AddCleanup: PROC [Handle]; <> TurnOn: PROC [handle: Handle, inInterrupt, outInterrupt: WORD]; TurnOff: PROC [handle: Handle]; <> SetPromiscuous: PROC [handle: Handle, promiscuous: BOOL]; < Grab every packet on the wire.>> < revert to normal mode. TurnOn also sets normal mode.>> SetOutputDelay: PROC [handle: Handle, microseconds: CARDINAL]; <> <<>> QueueOutput: PROC [handle: Handle, buffer: LONG POINTER, bytes: NAT, iocb: IOCB]; QueueInput: PROC [handle: Handle, buffer: LONG POINTER, bytes: NAT, iocb: IOCB]; <> MarkKilled: PROC [iocb: IOCB]; <> <<>> GetStatusAndLength: PROC [iocb: IOCB] RETURNS [status: Status, bytes: NAT]; <> GetStatusAndCollisions: PROC [iocb: IOCB] RETURNS [status: Status, collisions: NAT]; <> GetPacketsMissed: PROC [Handle] RETURNS [CARDINAL]; <> Handle: TYPE [2]; Status: TYPE = { pending, ok, overrun, -- Input data arrived when FIFO was full underrun, -- Output FIFO went empty before end of packet was set packetTooLong, -- Input packet didn't fit into buffer tooManyCollisions, -- More than 16 attempts to transmit the same packet crc, crcAndBadAlignment, badAlignmentButOkCrc, killedByDriver, otherError }; <> IOCB: TYPE = LONG POINTER TO ControlBlockRecord; ControlBlockRecord: TYPE; controlBlockSize: READONLY CARDINAL; nullHandle: READONLY Handle; hearSelf: READONLY BOOL; <<>> }.