  option decimalsep,.
  external vdsinet.dll,Public Freeware Key|90257236
  inifile open,.\@name(%0).ini
  %%name = @iniread(general,name)
  if @not(@trim(%%name))
    repeat 
      %%name = @input(Please enter your nickname:)
      if @not(@ok())
        exit 
      end 
    until @trim(%%name)@not(@ok())
  end 
  inifile write,general,name,%%name
  %%server = @iniread(general,server)
  if @not(@trim(%%server))
    repeat 
      %%server = @input(Please enter the server's IP address:)
      if @not(@ok())
        exit 
      end 
    until @trim(%%server)@not(@ok())
  end 
  inifile write,general,server,@trim(%%server)
  %%port = @iniread(general,port)
  if @not(@trim(%%port))
    repeat 
      %%port = @input(Please enter the port on the server:)
      if @not(@ok())
        exit 
      end 
    until @trim(%%port)@not(@ok())
  end 
  inifile write,general,port,@trim(%%port)
  dialog CREATE,IRC,-1,0,584,346
  dialog ADD,EDIT,eChat,8,8,416,280,,MULTI
  dialog ADD,LIST,lUsers,8,432,144,280
  dialog ADD,EDIT,eText,296,8,416,24
  dialog ADD,BUTTON,bSubmit,296,432,144,24,&Submit,default
  dialog ADD,STATUS,sStatus
  dialog SHOW
  net socket,auto
  net socket,vdsevents
  net socket,addr,@trim(%%server)
  net socket,port,@trim(%%port)
  net socket,client
  list create,1
  list create,2
:evloop
  %e = @event()
  if %E
    goto %E
  end 
  %e = @net(socket,event)
  if %E
    goto %E
  end 
  wait "0.2"
  goto evloop
:bSubmitbutton
  %%data = @dlgtext(eText)
  %%char = " "
  gosub split
  if @equal(@substr(%%command,1,1),/)
    %%command = @strdel(%%command,1,1)
    %%text = %%command %%params
    gosub send
  else 
    %%text = PRIVMSG %%channel :%%params
    gosub send
  end 
  dialog set,eText
  goto evloop
:network
  %%buffer = %%buffer@net(socket,data)
  if @not(@zero(@pos(@cr(),%%buffer)))
    repeat 
      %%data = @substr(%%buffer,1,@pred(@pos(@cr(),%%buffer)))
      %%buffer = @strdel(%%buffer,1,@succ(@pos(@cr(),%%buffer)))
      %%char = " "
      gosub split
      if @equal(%%command,PING)
        %%text = PONG %%params
        gosub send
      else 
        list clear,1
        list assign,1,@dlgtext(eChat)
        list clear,2
        list assign,2,%%command %%params
        dialog set,eChat,@text(2)@text(1)
      end 
    until @zero(@pos(@cr(),%%buffer))
  end 
  goto evloop
:connect
  %%text = USER %%name @chr(34)mshome.net@chr(34) @chr(34)@net(socket,addr)@chr(34) :%%name@cr()@chr(10)NICK %%name
  gosub send
  goto evloop
:send
  net socket,sendserver,%%text@cr()@chr(10)
  list clear,1
  list assign,1,@dlgtext(eChat)
  list clear,2
  list assign,2,%%text
  dialog set,eChat,@text(2)@text(1)
  exit 
:split
  if @zero(@pos(%%char,%%data))
    %%command = %%data
    %%params =
  else 
    %%command = @substr(%%data,1,@pred(@pos(%%char,%%data)))
    %%params = @substr(%%data,@succ(@pos(%%char,%%data)),@len(%%data))
  end 
  exit 
:closec
  list clear,1
  list assign,1,@dlgtext(eChat)
  list clear,2
  list assign,2,Connection closed
  dialog set,eChat,@text(2)@text(1)
  goto evloop
:error
  warn Fatal error: @net(socket,error)
:close
  list close,1
  list close,2
  exit 
