10 REM > $.ArthurLib.Stations
   20 REM Prints stations connected
   30 REM net_Ping erratic on ARM CoPro, only returns two byte machine type
   40 :
   50 PRINT"Station Machine"SPC(15)"Software"
   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)
   90 FOR stn%=1 TO 254
  100   :
  110   REM netPing very erratic on ARM CoPro
  120   n%=(HIMEM>&FFFF)*5:REPEAT
  130     ping%=FNnet_Ping(stn%):ok%=ping%<>0 OR stn%=mystn%
  140   n%=n%+1:UNTIL n%>0 OR ok%
  150   IF ping%=&03350001:ping%=FNpingFix(stn%)
  160   IF ok%:IF ping%  :PRINTFNd(stn%,3);TAB(5);FNnet_Type(ping%);TAB(33);FNver(ping%)
  170   IF ok%:IF ping%=0:PRINTFNd(stn%,3);"*";TAB(5);FNmachine(os%);TAB(30);RIGHT$("   "+FNnfsver,9)
  180 NEXT:END
  190 :
  200 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)
  210 DEFFNd(A%,N%)=RIGHT$("        "+STR$A%,N%)
  220 :
  230 DEFFNmachine(A%)
  240 IF A%=0:="Electron"
  250 IF A%=1:="BBC Micro"
  260 IF A%=2:="BBC B+"
  270 IF A%=3:="Master 128"
  280 IF A%=4:="Master ET"
  290 IF A%=5:="Master Compact"
  300 IF A%=6:="RISC OS"
  310 ="[Type "+STR$A%+"]"
  320 :
  330 DEFFNnfsver
  340 IF os%>6:=""
  350 IF os%=6:SYS "OS_Module",18,"Econet" TO ,,,A%:SYS "OS_WriteN",A%+A%!20 TO A$:=MID$(A$,9,4)
  360 LOCAL X%,Y%,F%,A$:Y%=0:X%=&70
  370 A%=0:F%=(USR&FFDA)AND&FF:*FX143,18,5
  380 A%=4:IF((USR&FFDA)AND&FF)=4:A$="3.4x-3.6x" :REM 3.34, 3.35, 3.40, 3.60, 3.62, 3.65
  390 A%=3:IF((USR&FFDA)AND&FF)=0:A$="4.0x-4.1x" :REM 4.08, 4.18, 4.21, 4.25
  400 A%=2:IF((USR&FFDA)AND&FF)=2:A$="3.3x"      :REM 3.34, 3.35
  410 A%=1:IF((USR&FFDA)AND&FF)>0:A$="4.2x"      :REM 4.21, 4.25
  420 OSCLI"FX143,18,"+STR$F%:=A$
  430 :
  440 DEFFNver(A%):=LEFT$(FNh0(A%,8+((A%AND&F0000000)=0)),1)+"."+MID$(FNh0(A%,8),3,2)
  450 :
  460 DEFFNpingFix(S%):!X%=&81:X%!2=S%:X%!4=X%+16:X%!8=X%+20:X%!12=&FFFF820C:X%!16=0
  470 A%=&10:REPEATCALL&FFF1:UNTIL?X%:A%=&32:REPEATUNTIL(USR&FFF4 AND &8000)=0
  480 IFX%!16=&30342E33:=&03400001 ELSE =&03350001
  490 :
  500 DEFFNnet_Ping(S%):!X%=&88:X%!2=S%:X%!4=X%+16:X%!8=X%+20:X%!12=0:X%!16=0
  510 A%=&10:REPEATCALL&FFF1:UNTIL?X%:A%=&32:REPEATUNTIL(USR&FFF4 AND &8000)=0:=X%!16
  520 :
  530 DEFFNnet_Type(A%):LOCAL A$:A%=A%AND&FFFF
  540 IF A%DIV256=&00:A$="Acorn "
  550 IF A%DIV256=&01:A$="Torch "
  560 IF A%DIV256=&02:A$="Reuters "
  570 IF A%DIV256=&50:A$="PhilBlundell "
  580 IF A%DIV256=&FF:A$="SJ Research "
  590 :
  600 A%=A%AND255
  610 IF A%=1:=A$+"BBC Micro"
  620 IF A%=2:=A$+"Atom"
  630 IF A%=3:=A$+"System 3/4"
  640 IF A%=4:=A$+"System 5"
  650 IF A%=5:=A$+"Master 128"
  660 IF A%=6:=A$+"Electron"
  670 IF A%=7:=A$+"RISC OS"
  680 REMA%=8:=A$+"Reserved"
  690 IF A%=9:="A$+Communicator"
  700 IF A%=10:=A$+"Master ET"
  710 IF A%=11:=A$+"Filestore"
  720 IF A%=12:=A$+"Master Compact"
  730 IF A%=13:=A$+"PC EcoLink"
  740 IF A%=14:=A$+"RISCiX Workstation"
  750 IF A%=15:=A$+"RISC PC"
  760 IF A%=16:=A$+"Iyonix"
  770 IF A%=17:=A$+"Acorn A9"
  780 :
  790 IF A%=&40:=A$+"ZX Spectrum"
  800 IF A%=&41:=A$+"Amstrad CPC"
  810 IF A%=&50:=A$+"Internet Gateway"
  820 IF A%=&EE:=A$+"Rasberry Pi"
  830 IF A%=&F8:=A$+"GP Server"
  840 IF A%=&F9:=A$+"80386 Unix"
  850 IF A%=&FA:=A$+"SCSI Interface"
  860 IF A%=&FB:=A$+"PC Card"
  870 IF A%=&FC:=A$+"Nascom 2"
  880 IF A%=&FD:=A$+"RM480Z"
  890 IF A%=&FE:=A$+"FileServer"
  900 IF A%=&FF:=A$+"380Z or CP/M"
  910 =A$+"["+FNh0(A%,4)+"]"
  920 :
  930 DEFFNnet_Info(A%,D%):?X%=A%:X%!1=D%:A%=&13:CALL&FFF1:=X%!1
  940 :