%externalroutinespec EtherTransmitBlock(%integer Port,Bytes,%bytename Buffer)
%externalroutinespec EtherReceiveBlock(%integer Port,MaxBytes,%integername Bytes,%ByteName Buffer)
%externalroutinespec EtherOpenPort(%integer Port,RemoteStation,RemotePort)
%externalroutinespec EtherClosePort(%integer Port)
%externalroutinespec EtherClaimPort(%integer port)
%externalroutinespec EtherAllocateZero
%externalintegerfnspec EtherAllocatePort
%externalroutinespec   EtherFreePort(%integer Port)
%Externalroutinespec   Ether Start
%externalintegerfnspec EtherStationAddress
%constinteger  Ether Undefined Error   =  0,
               Ether Success           =  1,
               Ether Bad Function Code =  2,
               Ether Bad Port Number   =  3,
               Ether Port not owned    =  4,
               Ether No Free Port      =  5,
               Ether Port already owned=  6,
               Ether Packet was NAKed  =  7,
               Ether Port was closed   =  8,
               Ether Port was open     =  9,
               Ether Bad Transmit length=10,
               Ether Abort             = 11

%Recordformat etherreqfm (%Record(messagefm) msg,
                     %Integer tag,
                     (%Byte code %or %byte result),
                     %Byte port,
                     (%Byte rdte %or %Byte port0mode),
                     (%Byte rsap %or %Byte channel),
                     %bytename buffer,
                     (%Integer length %OrInteger maxbytes %orinteger resbytes))

%Constinteger Ether Transmit req = 5,
              Ether Receive req  = 6,
              Ether Open req     = 3,
              Ether Close req    = 4,
              Ether Claim req    = 1,
              Ether Free req     = 2,
              Ether Address      = 7
