! Ethernet and Filestore communication
option  "-low"
{Filestore Communication}
@16_01108 integerfn   FCOMM(integer  cn,string (255)s)
@16_0110C routine     FCOMMW(integer  cn,string (255) s,
                      bytename  buffer,integer  size)
@16_01110 integerfn   FCOMMR(integer  c,string (255)p,
                      bytename  b,integer  max)
@16_035c4 short       USERNO
{Ethernet Communication}
@16_010f8 routine     ETHEROPEN(integer  port,remote)
@16_010fc routine     ETHERCLOSE(integer  port)
@16_01100 routine     ETHERWRITE(integer  port,bytename  buf,integer  size)
@16_01104 integerfn   ETHERREAD(integer  port,bytename  buf,integer  max)
@16_0372c byte        CYLOCK,FSPORT
@16_03730 integer     ERR,DTX,RDY,STX,ACK,NAK
@16_03fa8 byte        LDTE,LSAP,RDTE,RSAP
@16_7fffc byte        ETHS
@16_7fffd byte        ETHD
@16_7ffff byte        ETHC

routine               TWAIT
  cycle ; repeatuntil  eths&8#0
end 
routine               DISABLE BROADCASTS
constinteger  bof=10
  twait; ethc = bof; twait
end 
routine               ENABLE BROADCASTS(integer  channel)
constinteger  bon=9
  twait; ethc = bon; twait; ethd = channel; twait
end 

integerfn             ETHERSTATION
@16_0372e short       STATION
constinteger  esa=5
  station = 0; twait; ethc = esa; twait
  cycle 
    result  = station unless  station=0
  repeat 
end 

routine               ETHERDTX(integer  port)
integer  bit
  port = port&31
  bit = 1<<port
  port = port+32 if  rdy&bit#0
  port = port+64 if  ack&bit=0
  signal  3,0,port,"ETHERDTX fails" if  port&96#0
  twait; ethc = 16_30; twait; ethd = port; twait
end