10 REM > BLib.Socket 0.10 12-Dec-2010
   20 REM Sockets and Resolver Library
   30 REM Requires X%->32-byte control block, Y%=X%DIV256
   40 REM FNDNS_*() require name%->80 bytes
   50 :
   60 REM FNSocket_Open(pf%,type%,prot%)
   70 REM FNSocket_Bind(handle%,addr%,addrlen%)
   80 REM FNSocket_Listen(handle%,count%)
   90 REM FNSocket_Accept(handle%,addr%,addrlen%)
  100 REM FNSocket_Connect(handle%,addr%,addrlen%)
  110 REM FNSocket_Recv(handle%,data%,len%,opts%)
  120 REM FNSocket_Send(handle%,data%,len%,opts%)
  130 REM ----------------------------------------
  140 DEFFNSocket_Open(X%!4,X%!8,X%!12):A%=0
  150 DEFFNSocket_Bind(X%!4,X%!8,X%!12):A%=1
  160 DEFFNSocket_Listen(X%!4,X%!8):A%=2
  170 DEFFNSocket_Accept(X%!4,X%!8,X%!12):A%=3
  180 DEFFNSocket_Connect(X%!4,X%!8,X%!12):A%=4
  190 DEFFNSocket_Recv(X%!4,X%!8,X%!12,X%!16):A%=5
  200 DEFFNSocket_Send(X%!4,X%!8,X%!12,X%!16):A%=8
  210 !X%=&814:X%?2=A%:A%=192:CALL&FFF1:IFX%?3:=-X%?3 ELSE =X%!4
  220 :
  230 REM PROCSocket_shutdown(handle%,type%)
  240 REM PROCSocket_close(handle%)
  250 REM ----------------------------------
  260 DEFPROCSocket_Shutdown(X%!4,X%!8):A%=11
  270 DEFPROCSocket_Close(X%!4):A%=16
  280 !X%=&40C:X%?2=A%:A%=192:CALL&FFF1:ENDPROC
  290 :
  300 REM FNDNS_GetHostByName(name$)
  310 REM FNDNS_GetHost(name$)
  320 REM --------------------------
  330 DEFFNDNS_GetHostByName(A$):A%=&40
  340 DEFFNDNS_GetHost(A$):A%=&41
  350 !X%=&1808:X%?2=A%:X%!4=name%:$name%=A$:A%=192:CALL&FFF1:=X%+4 AND X%?3=0
  360 :