10 REM > NetServer
   20 REM Find network server information
   30 REM Needs optimising
   40 ;
   50 DEFPROCNet_ServerList(Type$)
   60 LOCAL found$
   70 PRINT"Station Type     Vers Name"
   80 $txBuf%=LEFT$(FNuc(Type$)+"        ",8)
   90 rxNum%=FNNet_RxOpen(0,&B1,rxBuf%,&20)
  100 FOR txcnt%=1 TO 5
  110     tx%=FNNet_TxCount(&FFFF,&80,&B0,txBuf%,8,0,0,0)
  120   IF tx% THEN PRINT FNNet_Err(tx%):txcnt%=6:NEXT:PROCNet_RxKill(rxNum%):ENDPROC
  130   REPEAT:try%=10
  140       REPEAT:rx%=FNNet_Rx(rxNum%)
  150           IF NOT rx%:A%=TIME+5:REPEATUNTILTIME>A%:try%=try%-1
  160       UNTIL rx% OR try%<1
  170       IF rx% THEN PROCNet_Server:rxNum%=FNNet_RxOpen(0,&B1,rxBuf%,&20)
  180   UNTIL try%<1
  190 NEXT txcnt%
  200 PROCNet_RxKill(rxNum%)
  210 ENDPROC
  220 :
  230 DEFPROCNet_Server
  240 rxCount%=FNNet_RxRead(rxNum%):stn%=X%!3
  250 IF INSTR(found$,CHR$(stn%DIV256)+CHR$stn%):ENDPROC
  260 found$=found$+CHR$(stn%DIV256)+CHR$stn%
  270 PRINTFNNet_StnFixed(stn%);" ";
  280 IF ?rxBuf% THEN PRINT "Server error: ";$(rxBuf%+1):ENDPROC
  290 rxBuf%?(12+rxBuf%?11)=13:name$=$(rxBuf%+12)
  300 rxBuf%?11=13:server$=$(rxBuf%+3)
  310 vers%=rxBuf%?2
  320 portBase%=rxBuf%?1
  330 PRINT server$;" ";vers%DIV16;".";(vers%AND15)*10;
  340 PRINT " ";name$:ENDPROC
  350 :
  360 DEFFNNet_ServerPort(stn%)
  370 rx%=FNNet_RxOpen(0,&B1,rxBuf%,&20)
  380 $txBuf%="        ":try%=10
  390 REPEAT
  400   tx%=FNNet_TxCount(stn%,&80,&B0,txBuf%,8,0,0,0)
  410   IF tx% THEN UNTIL TRUE:=-tx%
  420   rx%=FNNet_Rx(rx%)
  430   IF NOT rx%:A%=TIME+50:REPEATUNTILTIME>A%:try%=try%-1
  440 UNTIL rx% OR try%<1
  450 IF NOT rx% THEN PROCNet_RxKill(rx%):=0
  460 rxCount%=FNNet_RxRead(rx%):=rxBuf%?1
  470 :