10
20
30
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 :