10 REM > BLib.Skt 0.11 18-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 FNskt_open(pf%,type%,prot%)
   70 REM FNskt_bind(socket%,addr%,addrlen%)
   80 REM FNskt_listen(socket%,count%)
   90 REM FNskt_accept(socket%,addr%,addrlen%)
  100 REM FNskt_connect(socket%,addr%,addrlen%)
  110 REM FNskt_recv(socket%,data%,len%,opts%)
  120 REM FNskt_send(socket%,data%,len%,opts%)
  130 REM -------------------------------------
  140 DEFFNskt_open(X%!4,X%!8,X%!12):A%=0
  150 DEFFNskt_bind(X%!4,X%!8,X%!12):A%=1
  160 DEFFNskt_listen(X%!4,X%!8):A%=2
  170 DEFFNskt_accept(X%!4,X%!8,X%!12):A%=3
  180 DEFFNskt_connect(X%!4,X%!8,X%!12):A%=4
  190 DEFFNskt_recv(X%!4,X%!8,X%!12,X%!16):A%=5
  200 DEFFNskt_send(X%!4,X%!8,X%!12,X%!16):A%=8
  210 !X%=&814:X%?2=A%:A%=192:CALL&FFF1:=X%!4 OR X%?3>0
  220 :
  230 REM PROCskt_shutdown(socket%,type%)
  240 REM PROCskt_close(socket%)
  250 REM -------------------------------
  260 DEFPROCskt_shutdown(X%!4,X%!8):A%=11
  270 DEFPROCskt_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 :