10 REM > BLib.IP 1.00 12Feb2009
   20 :
   30 REM IP_Stn - Returns dotted net&station number
   40 REM ------------------------------------------
   50 DEFFNIP_Stn(A%):LOCAL B%:DIM B%-1:!B%=A%:B%!4=0
   60 =STR$B%?3+"."+STR$B%?2+"."+STR$B%?1+"."+STR$?B%
   70 :
   80 REM IP_StnFixed - Returns fixed-length dotted net&station number
   90 REM ----------------------------------------------------------------
  100 DEFFNIP_StnFixed(A%):LOCAL B%:DIM B%-1:!B%=A%
  110 =FNd0(B%?3,3)+"."+FNd0(B%?2,3)+"."+FNd0(B%?1,3)+"."+FNd0(?B%,3)
  120 :
  130 REM IP_StnNum - Convert dotted IP address string into number
  140 REM --------------------------------------------------------
  150 DEFFNIP_StnNum(A$):LOCAL B%:DIM B%-1:!B%=0:REPEAT!B%=!B%+VALA$
  160   A%=INSTR(A$,"."):IFA%:A$=MID$(A$,A%+1):B%!1=!B%:?B%=0
  170 UNTILA%=0:=!B%
  180 :
  190 REM swap_16 - Swap b0-b7 and b8-b15 of number
  200 REM -------------------------------------------
  210 DEFFNswap_16(A%)
  220 LOCAL B%:DIM B%-1:!B%=A%:B%!2=A%:=(B%!1)AND&FFFF
  230 :
  240 REM swap_32 - Swap word from &AABBCCDD to &DDCCBBAA
  250 REM -----------------------------------------------
  260 DEFFNswap_32(A%)
  270 LOCAL B%:DIM B%-1:!B%=A%:B%?4=B%?2:B%?5=B%?1:B%?6=?B%:=B%!3
  280 :
  290 DEFFNd0(A%,N%)=RIGHT$("00000000"+STR$A%,N%)
  300 :
  310 :