10
20
30
40 :
50 PRINT"Station Machine"SPC(5)"Software User"
60 A%=0:X%=1:os%=(USR&FFF4 AND &FF00)DIV256
70 DIM data% 15,ctrl% 31:X%=ctrl%:Y%=X%DIV256
80 mystn%=FNnet_Info(8,0):fs%=FNnet_Ping(FNnet_Info(0,0))<>0
90 FOR stn%=1 TO 254:ping%=FNnet_Ping(stn%):ok%=ping%<>0 OR stn%=mystn%
100 IF ping%=&03350001:ping%=FNpingFix(stn%)
110 IF ok%:IF ping% :PRINTSPC2;FNd(stn%,3);TAB(8);FNnet_Type(ping%);TAB(23);FNver(ping%);
120 IF ok%:IF ping%=0:PRINTSPC2;FNd(stn%,3);"*";TAB(8);FNmachine(os%);TAB(23);FNnfsver;
130 IF ok%:IF fs%:PRINTTAB(29);FNnetfs_Who(stn%);
140 IF ok%:PRINT
150 NEXT:END
160 :
170 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)
180 DEFFNd(A%,N%)=RIGHT$(" "+STR$A%,N%)
190 :
200 DEFFNmachine(A%)
210 IF A%=0:="Electron"
220 IF A%=1:="BBC Micro"
230 IF A%=2:="BBC B+"
240 IF A%=3:="Master 128"
250 IF A%=4:="Master ET"
260 IF A%=5:="Master Compact"
270 IF A%=6:="RISC OS"
280 ="[Type "+STR$A%+"]"
290 :
300 DEFFNnfsver
310 IF os%>6:=" "
320 IF os%=6:SYS "OS_Module",18,"Econet" TO ,,,A%:SYS "OS_WriteN",A%+A%!20 TO A$:=MID$(A$,9,4)
330 LOCAL X%,Y%,F%,A$:Y%=0:X%=&70
340 A%=0:F%=(USR&FFDA)AND&FF:*FX143,18,5
350 A%=4:IF((USR&FFDA)AND&FF)=4:A$="3.40-3.6x" :
360 A%=3:IF((USR&FFDA)AND&FF)=0:A$="4.00-4.1x" :
370 A%=2:IF((USR&FFDA)AND&FF)=2:A$="3.3x" :
380 A%=1:IF((USR&FFDA)AND&FF)>0:A$="4.2x" :
390 OSCLI"FX143,18,"+STR$F%:=A$
400 :
410 DEFFNver(A%):=LEFT$(FNh0(A%,8+((A%AND&F0000000)=0)),1)+"."+MID$(FNh0(A%,8),3,2)
420 :
430 DEFFNpingFix(S%):!X%=&81:X%!2=S%:X%!4=X%+16:X%!8=X%+20:X%!12=&FFFF820C:X%!16=0
440 A%=&10:REPEATCALL&FFF1:UNTIL?X%:A%=&32:REPEATUNTIL(USR&FFF4 AND &8000)=0
450 IFX%!16=&30342E33:=&03400001 ELSE =&03350001
460 :
470 DEFFNnet_Ping(S%):!X%=&88:X%!2=S%:X%!4=X%+16:X%!8=X%+20:X%!12=0:X%!16=0
480 A%=&10:REPEATCALL&FFF1:UNTIL?X%:A%=&32:REPEATUNTIL(USR&FFF4 AND &8000)=0:=X%!16
490 :
500 DEFFNnet_Type(A%):A%=A%AND&FFFF
510 IF A%=1:="BBC Micro"
520 IF A%=2:="Acorn Atom"
530 IF A%=3:="System 3/4"
540 IF A%=4:="System 5"
550 IF A%=5:="Master 128"
560 IF A%=6:="Electron"
570 IF A%=7:="RISC OS"
580
590 IF A%=9:="Communicator"
600 IF A%=10:="Master ET"
610 IF A%=11:="Filestore"
620 IF A%=12:="Master Compact"
630 IF A%=13:="EcoLink PC"
640 IF A%=14:="RISCiX Workstation"
650 IF A%=15:="RISC PC"
660 IF A%=16:="Iyonix"
670 IF A%=17:="Acorn A9"
680 :
690 IF (A%AND255)=64:="ZX Spectrum"
700 IF (A%AND255)=65:="Amstrad CPC"
710 IF A%DIV256=1:="Torch "+FNh0(A%,2)
720 IF A%DIV256=2:="Reuters "+FNh0(A%,2)
730 IF A%DIV256=80:="PB "+FNh0(A%,2)
740 IF A%=&FFF8:="GP Server"
750 IF A%=&FFF9:="80386 Unix"
760 IF A%=&FFFA:="SCSI Interface"
770 IF A%=&FFFB:="SJ PC Card"
780 IF A%=&FFFC:="Nascom 2"
790 IF A%=&FFFD:="RM480Z"
800 IF A%=&FFFE:="SJ File Server"
810 IF A%=&FFFF:="380Z or CP/M"
820 ="Type "+FNh0(A%,4)
830 :
840 DEFFNnet_Info(A%,D%):?X%=A%:X%!1=D%:A%=&13:CALL&FFF1:=X%!1
850 :
860 DEFFNnetfs_Who(stn%):LOCALu%:REPEAT:A%=FNnetfs_Op(15,CHR$u%+CHR$1)
870 u%=u%+1:UNTILA%<>0ORX%?4=0ORX%?5=stn%:IFA%=0:IFX%?4:=$(X%+7) ELSE =""
880 :
890 DEFFNnetfs_Op(A%,A$)=FNnetfs_OpN(A%,0,7,A$)
900 DEFFNnetfs_OpN(A%,T%,O%,A$):!X%=0:X%?1=O%+1+LENA$:X%!3=A%
910 IFHIMEM>&FFFF:X%?4=T%:$(X%+O%-3)=A$:SYS&60048,A%,X%+4,O%+LENA$,120TOA%:IFA%=0:X%?3=0:=0
920 IFHIMEM>&FFFF:IFA%>&FFFF:X%?3=?A%:SYS&2002B,A%+4TO$(X%+4):=X%?3
930 X%!4=0:X%?7=T%:$(X%+O%)=A$:A%=&14:CALL&FFF1:=X%?3