home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / comms_networking / unixtalk / !UnixTalk / !RunImage (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1998-01-29  |  16.9 KB  |  784 lines

  1.  > !RunImage
  2. freeResources:
  3. "ERROR 0 "+
  4. $+" at line "+
  5. mA%=15
  6. mR%=15
  7. mH%=15
  8.  pbUni%256,pbMes%256,pbEvents%4,pbID%24,pMesgDesc%16,pLogin%13
  9.  pbIn%128,pbOut%128,pbAddr%16
  10. a%=(mA%+1)*4
  11.  AOH%a%,APT%a%,AIP%a%,APV%a%,AT%a%
  12. a%=(mH%+1)*4
  13.  HOH%a%,HIP%a%
  14. a%=(mR%+1)*4
  15.  ROH%a%,RS1%a%,RS2%a%,RPV%a%,RIP%a%,RCP%a%,RCA%a%,RT%a%,RC%a%
  16.     cA%=0
  17. cA1%=0
  18.     cH%=0
  19.     cR%=0
  20. TimeOut%=3000
  21. LongIdle%=100
  22. ShortIdle%=5
  23. sInit%=0
  24. fEnd%=
  25. cHot%=0
  26. Tomo%=&44ec6
  27. fLoggedIn%=
  28. TaskName$="UnixTalk"
  29. ownVer%=001
  30. Path$="<UnixTalk$Dir>."
  31. /ResDir$=
  32. country(Path$+"Resources.",pbUni%)
  33. _DNSinit
  34. ownIP%=
  35. _ownIP
  36.  ownIP%=(127<<24)+1
  37. 1,"Could not figure out local IP address."
  38. !pbEvents%=0
  39. pbMes%!0=&400c2
  40. pbMes%!4=0
  41. "Toolbox_Initialise",0,360,pbMes%,pbEvents%,ResDir$,pMesgDesc%,pbID%
  42. ,hTask%
  43. makeSocket(2,518)
  44. hsUDP%=p%!0
  45. sInit%=1
  46. /4096)+2)*4096
  47. )+PollMask%=2+16+32+64+256+2048+4096+8192
  48. cIdle%=LongIdle%
  49. "OS_ReadMonotonicTime"
  50. Time%
  51. "Wimp_PollIdle",PollMask%,pbMes%,Time%+cIdle%
  52. Reason%
  53.  Reason%
  54. _NullReason
  55. 17,18,19:
  56. _UserMessage(pbMes%)
  57. _ToolboxEvent(pbMes%)
  58.  fEnd%
  59. freeResources
  60. "Wimp_CloseDown"
  61. _NullReason 
  62. cIdle%=LongIdle%
  63. checkUDP(hsUDP%)
  64. server(c%)
  65.  cA1%
  66. checkA
  67. checkH
  68. checkR
  69. _UserMessage(pb%)
  70.  pb%!16
  71. 0:fEnd%=
  72. &400c2:
  73. _UM_TaskInitialise(pb%)
  74. _ToolboxEvent(pb%)
  75.  ho%,a%
  76. ho%=pbID%!16
  77.  pb%!8
  78. "Filer_Run "+Path$+"!Help"
  79. _TE_II
  80. _TE_AHATH(ho%)
  81. _TE_AN(ho%)
  82. _TE_AY(ho%)
  83. 32:a%=
  84. _CreateRequest
  85. _TE_RATH(ho%)
  86. _TE_RY(ho%)
  87. _TE_RN(ho%)
  88. _TE_HY(ho%)
  89. _TE_HN(ho%)
  90. &44ec1:
  91. _TE_Created(pb%+16,ho%)
  92. &828c3:
  93. _TE_Hotlist
  94. &82a91:fEnd%=
  95. server(l%)
  96.  n%,hoa%,PT%,IP%,a%,hoh%
  97.  l%<>84
  98. showMessage("wrong server packet length:",l%)
  99. [DPT%=((pbIn%?24)<<8)+(pbIn%?25)+((pbIn%?26)<<16)+((pbIn%?27)<<24)
  100. IP%=pbIn%!28
  101.  pbIn%?1
  102. showMessage("client message was LEAVE_INVITE",0)
  103. `$n%=
  104. _ListFindR3or4(IP%,pbIn%+44)
  105.  n%>-1
  106. _SendReply(1,0,5,
  107. getSocketPort(RS2%!n%),PT%,IP%)
  108. pbIn%?79=13
  109. $(pbIn%+72)="RISCOS3"
  110.  RPV%!n%=pbIn%!80
  111.  RT%!n%=3
  112. _Request3to4(n%)
  113. _SendReply(1,1,0,0,PT%,IP%)
  114. _SendReply(2,0,0,0,PT%,IP%)
  115. k"n%=
  116. _ListFindAnnounce(PT%,IP%)
  117.  n%>-1
  118. _KillAnnounce(n%)
  119. n"n%=
  120. _ListFindAnnounce(PT%,IP%)
  121.  n%=-1
  122.  fLoggedIn%
  123. "Toolbox_CreateObject",0,"A"
  124. pbIn%?79=13
  125. $(pbIn%+72)="RISCOS3"
  126.  a%=pbIn%!80
  127. u%n%=
  128. _ListCreateA(hoa%,PT%,IP%,a%)
  129. pbIn%?68=0
  130.  Tomo%,0,hoa%,&1c0,5,pbIn%+56
  131. pbIn%?56=0
  132.  Tomo%,0,hoa%,&1c0,0,pbIn%+44
  133. "Toolbox_ShowObject",0,AOH%!n%,3,0,0,-1
  134. _SendReply(3,1,0,0,PT%,IP%)
  135. "Toolbox_CreateObject",0,"H"
  136. pbIn%?68=0
  137.  Tomo%,0,hoh%,&1c0,5,pbIn%+56
  138. pbIn%?56=0
  139.  Tomo%,0,hoh%,&1c0,0,pbIn%+44
  140. pbUni%!0=3
  141. "OS_Word",14,pbUni%
  142. &4304e,-1,pbUni%,pbUni%+8,252
  143.  Tomo%,0,hoh%,&1c0,6,pbUni%+8
  144. _ListCreateH(hoh%,IP%)
  145. "Toolbox_ShowObject",0,hoh%,3,0,0,-1
  146. "Toolbox_ShowObject",0,AOH%!n%,3,0,0,-1
  147. _SendReply(pbIn%?0,5,0,0,PT%,IP%)
  148. checkA 
  149.  n%,a%,p%
  150. n%=cA%*4
  151.     n%-=4
  152.  AT%!n%=1
  153. _DNSgetName(AIP%!n%,pbUni%)
  154.  Tomo%,0,AOH%!n%,&1c0,4,!pbUni%
  155. AT%!n%=2
  156. cA1%-=1
  157. "MessageTrans_Lookup",pMesgDesc%,"ErrorDNS"
  158.  Tomo%,0,AOH%!n%,&1c0,4,p%
  159. checkH 
  160.  n%,a%,p%
  161. n%=cH%*4
  162.     n%-=4
  163. _DNSgetName(HIP%!n%,pbUni%)
  164.  Tomo%,0,HOH%!n%,&1c0,4,!pbUni%
  165. _ListDelete(n%,2)
  166. "MessageTrans_Lookup",pMesgDesc%,"ErrorDNS"
  167.  Tomo%,0,HOH%!n%,&1c0,4,p%
  168. _ListDelete(n%,2)
  169. checkR 
  170.  a%,F%,n%,hs%,hs2%,s%
  171. n%=cR%*4
  172.     n%-=4
  173. s%=RT%!n%
  174.  Tomo%,0,ROH%!n%,&201,4,pbUni%,256
  175. _DNSgetIP(pbUni%,pbUni%+252)
  176. _Request1to2(n%,pbUni%!252,0)
  177. _AlterRequest(ROH%!n%,"ErrorDNS")
  178. _FadeR(ROH%!n%,
  179. _ListDelete(n%,1)
  180. checkUDP(RS1%!n%)
  181. client(n%,a%)
  182.  Time%-RC%!n%>TimeOut%
  183. _SendDgram(n%,1)
  184. checkUDP(RS1%!n%)
  185. client(n%,a%)
  186.  Time%-RC%!n%>TimeOut%
  187. _SendDgram(n%,3)
  188. hs%=RS2%!n%
  189. pbUni%!0=16
  190. "XSocket_Accept",hs%,pbAddr%,pbUni%
  191. hs2%;F%
  192. (hs2%!0)<>35
  193. "OS_GenerateError",hs2%
  194. _StartSubtask(hs2%,n%)
  195. "Socket_Close",hs%
  196. RT%!n%=9
  197. _TE_RN(ROH%!n%)
  198. hs%=RS2%!n%
  199. pbUni%!0=16
  200. "XSocket_Getpeername",hs%,pbAddr%,pbUni%
  201. a%;F%
  202. (a%!0)=57
  203. pbAddr%!0=RCP%!n%
  204. pbAddr%!4=RCA%!n%
  205. pbAddr%!8=0
  206. pbAddr%!12=0
  207. "XSocket_Connect",hs%,pbAddr%,16
  208. a%,F%
  209. (a%!0)=36
  210. "OS_GenerateError",a%
  211. "OS_GenerateError",a%
  212. _StartSubtask(hs%,n%)
  213. RT%!n%=9
  214. _TE_RN(ROH%!n%)
  215. _UM_TaskInitialise(p%)
  216. p%?(28+
  217. (TaskName$))=13
  218. ($(p%+28)=TaskName$)
  219. (p%!4<>hTask%)
  220. pbMes%!0=20
  221. pbMes%!12=0
  222. pbMes%!16=0
  223. "Wimp_SendMessage",17,pbMes%,p%!4
  224. _TE_II
  225.  fLoggedIn%
  226. fLoggedIn%=
  227.  Tomo%,0,hoII%,&b,"!unixtalk_"
  228.  Tomo%,0,hoMMain%,0,2,0
  229. fLoggedIn%=
  230.  Tomo%,0,hoII%,&b,"!unixtalk"
  231.  Tomo%,0,hoMMain%,0,2,-1
  232. _TE_AHATH(hoa%)
  233.  Tomo%,0,hoa%,&1c1,0,pbUni%,16
  234. ,,,,,l%
  235.  Tomo%,0,hoa%,&1c1,0,pbUni%+l%,16
  236. pbUni%?(l%+l%-1)=
  237. ("@")
  238.  Tomo%,0,hoa%,&1c1,4,pbUni%+l%+l%,128
  239. _HotlistEntry(pbUni%,pbUni%+l%,
  240. _TE_AN(hoa%)
  241. _ListFindObject(hoa%,0)
  242. _SendReply(3,4,0,0,APT%!n%,AIP%!n%)
  243. _KillAnnounce(n%)
  244. _TE_AY(hoa%)
  245.  na%,IP%,hor%,nr%,pv%
  246.  na%=
  247. _ListFindObject(hoa%,0)
  248. IP%=AIP%!na%
  249. _SendReply(3,0,4,0,APT%!na%,IP%)
  250. "Toolbox_CreateObject",0,"R"
  251.  Tomo%,0,hoa%,&1c1,4,pbUni%,256
  252.  Tomo%,0,hor%,&200,4,pbUni%
  253.  Tomo%,0,hoa%,&1c1,0,pbUni%,256
  254.  Tomo%,0,hor%,&200,0,pbUni%
  255.  Tomo%,0,hoa%,&1c1,5,pbUni%,256
  256.  Tomo%,0,hor%,&200,6,pbUni%
  257. pv%=APV%!na%
  258. _KillAnnounce(na%)
  259. _TE_RY(hor%)
  260. ( nr%=
  261. _ListFindObject(hor%,1)
  262.  nr%>-1
  263. _Request1to2(nr%,IP%,pv%)
  264. _TE_RATH(hor%)
  265.  Tomo%,0,hor%,&201,0,pbUni%,16
  266. ,,,,,l%
  267.  Tomo%,0,hor%,&201,0,pbUni%+l%,16
  268. pbUni%?(l%+l%-1)=
  269. ("@")
  270.  Tomo%,0,hor%,&201,4,pbUni%+l%+l%,128
  271. _HotlistEntry(pbUni%,pbUni%+l%,
  272. _TE_RY(hor%)
  273. _ListCreateR(hor%)
  274.  n%=-1
  275. _AlterRequest(hor%,"TooMany")
  276. _FadeR(ROH%!n%,
  277. _AlterRequest(hor%,"Stage1")
  278. _TE_RN(hor%)
  279.  n%,s%
  280. _ListFindObject(hor%,1)
  281.  n%>-1
  282.  RT%!n%
  283. "Socket_Close",RS1%!n%
  284. _SendDgram(n%,2)
  285. "Socket_Close",RS1%!n%
  286. "Socket_Close",RS2%!n%
  287. "Socket_Close",RS2%!n%
  288. "Socket_Close",RS2%!n%
  289. _ListDelete(n%,1)
  290. "Toolbox_DeleteObject",0,hor%
  291. _TE_HY(hoh%)
  292.  hor%
  293. "Toolbox_CreateObject",0,"R"
  294.  Tomo%,0,hoh%,&1c1,4,pbUni%,256
  295.  Tomo%,0,hor%,&200,4,pbUni%
  296.  Tomo%,0,hoh%,&1c1,0,pbUni%,256
  297.  Tomo%,0,hor%,&200,0,pbUni%
  298.  Tomo%,0,hoh%,&1c1,5,pbUni%,256
  299.  Tomo%,0,hor%,&200,6,pbUni%
  300. _TE_RY(hor%)
  301. "Toolbox_DeleteObject",0,hoh%
  302. _TE_HN(hoh%)
  303. _ListFindObject(hoh%,2)
  304.  n%>-1
  305. _ListDelete(n%,2)
  306. "Toolbox_DeleteObject",0,hoh%
  307. _TE_Created(p%,ho%)
  308. readString(p%)
  309. "Hotlist":
  310. importHotlist(ho%)
  311. "Iconbar":hoII%=ho%
  312. "MainMenu":hoMMain%=ho%
  313. "ProgInfo"
  314.  Tomo%,0,ho%,0
  315.  Tomo%,0,a%,&1c0,&82b403,"Freeware"
  316. _TE_Hotlist 
  317.  c%,d%,hor%
  318. hor%=
  319. _CreateRequest
  320.  Tomo%,0,pbID%!16,&13,pbID%!20,pbUni%,256
  321. j    c%=-1
  322. l    c%+=1
  323. d%=pbUni%?c%
  324. (d%<32)
  325. pbUni%?c%=0
  326.  Tomo%,0,hor%,&200,0,pbUni%
  327.  Tomo%,0,hor%,&200,4,pbUni%+c%+1
  328. _TE_RY(hor%)
  329.  Inet$EtherIPAddr, Inet$EcoIPAddr, Inet$SerialIPAddr, Inet$LocalAddr
  330.  Inet$LocalIP, Inet$Address, VTiIP$Address, .
  331. freeResources 
  332.  n%,a%
  333.  sInit%
  334. n%=cR%*4
  335. z    n%-=4
  336. a%=RT%!n%
  337. (a%=2)
  338. (a%=3)
  339. "Socket_Close",RS1%!n%
  340. (a%=3)
  341. (a%=4)
  342. "Socket_Close",RS2%!n%
  343. (a%=4)
  344. (a%=5)
  345. "Socket_Close",RS2%!n%
  346. "Socket_Close",hsUDP%
  347. showMessage(string$,nr%)
  348. "Wimp_ReportError",(
  349. (0)+string$+
  350. (nr%)+
  351. (0)),0,TaskName$
  352. country(r$,pb%)
  353.  c%,c$
  354. 6,70,127
  355. 48,,67,2,c%,pb%,256
  356. ,,,,,c%
  357.  c%=256
  358. 1,"Country name not available."
  359. pb%?c%=13:c$=$pb%
  360. 8,17,r$+c$
  361.  c$="Default"
  362. =r$+c$
  363. _ownIP 
  364.  a$,b$,a%,d1%,d2%,d3%,IP%
  365.     a$=""
  366. "XOS_ReadVarVal",b$,pbUni%,256,,3
  367. pbUni%?a%=13
  368. a$=$pbUni%
  369.  a$<>""
  370. b$="."
  371.  a$=""
  372. =(127<<24)+1
  373. a$,".")
  374. a$,".",d1%+1)
  375. a$,".",d2%+1)
  376. a$,d1%-1))
  377. 'IP%=IP%
  378. a$,d1%+1,d2%-d1%))<<8)
  379. (IP%=IP%
  380. a$,d2%+1,d3%-d2%))<<16)
  381.  IP%=IP%
  382. a$,d3%+1))<<24)
  383. makeSocket(Typ%,Port%)
  384. "Socket_Creat",2,Typ%,0
  385. pbUni%!0=hs%
  386. pbUni%!4=2
  387.  Port%
  388.  pbUni%?6=(Port%>>8):pbUni%?7=Port%
  389. pbUni%!8=0
  390. pbUni%!12=0
  391. pbUni%!16=0
  392. "Socket_Bind",hs%,pbUni%+4,16
  393. pbUni%!20=1
  394. "Socket_Ioctl",hs%,(1<<31)+(4<<16)+(102<<8)+126,pbUni%+20
  395.  Port%=0
  396. pbUni%!28=16
  397. "Socket_Getsockname",hs%,pbUni%+4,pbUni%+28
  398. =pbUni%
  399. getSocketPort(hs%)
  400. pbUni%!0=16
  401. "Socket_Getsockname",hs%,pbAddr%,pbUni%
  402. =pbAddr%!0
  403. _DNSinit 
  404. "OS_SWINumberToString",&46000,pbUni%,256
  405. pbUni%?8=13
  406. s$=$pbUni%
  407. fDNS%=0
  408.  s$="Resolver"
  409.  fDNS%=1
  410. s$,4)="User"
  411. showMessage("Name resolver module unknown",0)
  412. _DNSgetIP(p1%,p2%)
  413.  a%,p%
  414.  fDNS%=1
  415. &46001,p1%
  416. a%,p%
  417.  a%=0
  418.  p2%!0=!(!(p%!16))
  419. &46000,0,p1%
  420.     a%=-1
  421. p2%!0=!(!(p%!16))
  422. _DNSgetName(IP%,p1%)
  423.  a%,p%
  424.  fDNS%=1
  425. T$p1%=
  426.  255)+"."+
  427. (IP%>>8
  428.  255)+"."+
  429. (IP%>>16
  430.  255)+"."+
  431. (IP%>>24
  432.  255)+
  433. &46001,p1%
  434. a%,p%
  435.  a%=0
  436.  p1%!0=!p%
  437. p1%!0=IP%
  438. &46001,0,p1%,4,2
  439.     a%=-1
  440. p1%!0=!p%
  441. importHotlist(ho%)
  442.  a%,b%,f%,hf%
  443. hoMHotlist%=ho%
  444. #hf%=
  445. ("<UnixTalk$Dir>.Hotlist")
  446. #hf%=
  447. $pbUni%=
  448. a%=pbUni%?0
  449. (a%<>
  450. ("#"))
  451. (a%<>13)
  452. ($pbUni%)
  453.  a%>12
  454.  a%=12
  455. pbUni%?a%=0
  456. pLogin%!0=pbUni%!0
  457. pLogin%!4=pbUni%!4
  458. pLogin%!8=pbUni%!8
  459. $pbUni%,",")
  460.  a%>1
  461. ($pbUni%)
  462.  b%>a%
  463. pbUni%?(a%-1)=0
  464. pbUni%?b%=0
  465. _HotlistEntry(pbUni%,pbUni%+a%,
  466. _HotlistEntry(pst%,psh%,f%)
  467.  c%,d%,hf%
  468. #hf%=
  469. ("<UnixTalk$Dir>.Hotlist")
  470. #hf%=
  471.     c%=-1
  472.     d%=10
  473. #hf%,d%
  474.     c%+=1
  475. d%=pst%?c%
  476.  d%<32
  477.     c%=-1
  478. (",")
  479. #hf%,d%
  480.     c%+=1
  481. d%=psh%?c%
  482.  d%<32
  483. pbMes%!0=0
  484. pbMes%!4=cHot%
  485. pbMes%!8=pst%
  486. pbMes%!12=16
  487. pbMes%!16=0
  488. pbMes%!20=0
  489. pbMes%!24=0
  490. pbMes%!28=&828c3
  491. pbMes%!32=psh%
  492. pbMes%!36=96
  493.  Tomo%,0,hoMHotlist%,&14,-2,pbMes%
  494. cHot%+=1
  495. _ListCreateA(hoa%,PT%,IP%,v%)
  496.  cA%>mA%
  497.     n%=-1
  498. n%=cA%*4
  499. AOH%!n%=hoa%
  500. APT%!n%=PT%
  501. AIP%!n%=IP%
  502. APV%!n%=v%
  503. AT%!n%=1
  504. cA%+=1
  505. cA1%+=1
  506. _ListCreateH(hoh%,IP%)
  507.  cH%>mH%
  508. )    n%=-1
  509. n%=cH%*4
  510. HOH%!n%=hoh%
  511. HIP%!n%=IP%
  512. cH%+=1
  513. _ListCreateR(hor%)
  514.  n%,c%,f%
  515.  cR%>mR%
  516. 3    n%=-1
  517. n%=cR%*4
  518. ROH%!n%=hor%
  519. RT%!n%=1
  520. RPV%!n%=0
  521. cR%+=1
  522. _ListDelete(n%,t%)
  523. cA%-=1
  524. b%=cA%*4
  525. AOH%!n%=AOH%!b%
  526. APT%!n%=APT%!b%
  527. AIP%!n%=AIP%!b%
  528. APV%!n%=APV%!b%
  529. AT%!n%=AT%!b%
  530. cR%-=1
  531. b%=cR%*4
  532. ROH%!n%=ROH%!b%
  533. RS1%!n%=RS1%!b%
  534. RS2%!n%=RS2%!b%
  535. RIP%!n%=RIP%!b%
  536. RPV%!n%=RPV%!b%
  537. RCP%!n%=RCP%!b%
  538. RCA%!n%=RCA%!b%
  539. RT%!n%=RT%!b%
  540. RC%!n%=RC%!b%
  541. cH%-=1
  542. b%=cH%*4
  543. HOH%!n%=HOH%!b%
  544. HIP%!n%=HIP%!b%
  545. _ListFindObject(ho%,t%)
  546.  n%,b%
  547. Z    b%=-1
  548. n%=cA%*4
  549. (n%<>0)
  550. (b%=-1)
  551. _    n%-=4
  552.  AOH%!n%=ho%
  553.  b%=n%
  554. n%=cR%*4
  555. (n%<>0)
  556. (b%=-1)
  557. e    n%-=4
  558.  ROH%!n%=ho%
  559.  b%=n%
  560. n%=cH%*4
  561. (n%<>0)
  562. (b%=-1)
  563. k    n%-=4
  564.  HOH%!n%=ho%
  565.  b%=n%
  566. _ListFindAnnounce(PT%,IP%)
  567.  n%,b%
  568. q    b%=-1
  569. n%=cA%*4
  570. (n%<>0)
  571. (b%=-1)
  572. t    n%-=4
  573.  APT%!n%=PT%
  574.  AIP%!n%=IP%
  575.  b%=n%
  576. _ListFindR3or4(IP%,p%)
  577.  n%,b%,c%,f%
  578. y    b%=-1
  579. n%=cR%*4
  580. (n%<>0)
  581. (b%=-1)
  582. |    n%-=4
  583. (RT%!n%=3)
  584. (RT%!n%=4)
  585.  RIP%!n%=IP%
  586.  Tomo%,0,ROH%!n%,&201,0,pbUni%,16
  587.     c%=-1
  588.     c%+=1
  589. (pbUni%?c%)<>(p%?c%)
  590. (((pbUni%?c%)=0)
  591. ((p%?c%)=0)
  592. (c%=11)
  593.  Tomo%,0,ROH%!n%,&201,6,pbUni%+12,16
  594.     c%=11
  595.     c%+=1
  596. (pbUni%?c%)<>(p%?c%)
  597. (((pbUni%?c%)=0)
  598. ((p%?c%)=0)
  599. (c%=23)
  600.  b%=n%
  601. _KillAnnounce(n%)
  602. "Toolbox_DeleteObject",0,AOH%!n%
  603.  AT%!n%=1
  604.  cA1%-=1
  605. _ListDelete(n%,0)
  606. _CreateRequest 
  607.  hor%
  608. "Toolbox_CreateObject",0,"R"
  609.  Tomo%,0,hor%,&200,6,pLogin%
  610.     =hor%
  611. _Request1to2(n%,IP%,v%)
  612.  p%,hs%
  613. RIP%!n%=IP%
  614. RPV%!n%=v%
  615. makeSocket(2,0)
  616. hs%=p%!0
  617. RS1%!n%=hs%
  618. _AlterRequest(ROH%!n%,"Stage2")
  619. RT%!n%=2
  620. RC%!n%=0
  621. cIdle%=ShortIdle%
  622. _Request2To3(n%,pbIn%)
  623.  hs%,p%
  624. makeSocket(1,0)
  625. hs%=p%!0
  626. RS2%!n%=hs%
  627. "Socket_Listen",hs%,0
  628. _AlterRequest(ROH%!n%,"Stage3")
  629. RT%!n%=3
  630. RC%!n%=0
  631. cIdle%=ShortIdle%
  632. _Request2To5(n%,pbIn%)
  633.  PT%,IP%,p%,hs%
  634. BPT%=((pbIn%?8)<<8)+(pbIn%?9)+((pbIn%?10)<<16)+((pbIn%?11)<<24)
  635. IP%=pbIn%!12
  636. RCP%!n%=PT%
  637. RCA%!n%=IP%
  638. makeSocket(1,0)
  639. hs%=p%!0
  640. RS2%!n%=hs%
  641. "Socket_Close",RS1%!n%
  642. _AlterRequest(ROH%!n%,"Stage5")
  643. RT%!n%=5
  644. cIdle%=ShortIdle%
  645. _Request3to4(n%)
  646. "Socket_Close",RS1%!n%
  647. _AlterRequest(ROH%!n%,"Stage4")
  648. RT%!n%=4
  649. cIdle%=ShortIdle%
  650. _AlterRequest(hor%,s$)
  651. "MessageTrans_Lookup",pMesgDesc%,s$
  652.  Tomo%,0,hor%,&1c0,5,p%
  653. checkUDP(hs%)
  654.  a%,b%,F%
  655. "XSocket_Read",hs%,pbIn%,128
  656. a%;F%
  657.     b%=a%
  658.  a%!0<>35
  659. "OS_GenerateError",a%
  660. client(n%,l%)
  661.  l%<>24
  662. showMessage("wrong client packet length:",l%)
  663.  pbIn%?1
  664. showMessage("server reply was LEAVE_INVITE_REPLY",1)
  665.  pbIn%?2
  666. _Request2To5(n%,pbIn%)
  667. _Request2To3(n%,pbIn%)
  668. "Socket_Close",RS1%!n%
  669. _AlterRequest(ROH%!n%,"Reply"+
  670. ("0")+pbIn%?2))
  671. _FadeR(ROH%!n%,
  672. _ListDelete(n%,1)
  673. showMessage("server reply was DELETE_REPLY",1)
  674.  pbIn%?2=0
  675. _SendDgram(n%,2)
  676. "Socket_Close",RS1%!n%
  677. "Socket_Close",RS2%!n%
  678. _AlterRequest(ROH%!n%,"Reply"+
  679. ("0")+pbIn%?2))
  680. _FadeR(ROH%!n%,
  681. _ListDelete(n%,1)
  682. showMessage("server reply unknown",1)
  683. _SendDgram(n%,m%)
  684. pbOut%!0=1
  685. pbOut%?1=m%
  686. pbOut%!4=0
  687. pbOut%!8=512
  688. pbOut%!12=0
  689.  RT%!n%=3
  690. pbOut%!4=-1
  691. getSocketPort(RS2%!n%)
  692. pbOut%?8=a%>>8
  693. pbOut%?9=a%
  694. pbOut%?10=a%>>16
  695. pbOut%?11=a%>>24
  696. pbOut%!12=ownIP%
  697. pbOut%!16=0
  698. pbOut%!20=0
  699. getSocketPort(RS1%!n%)
  700. pbOut%?24=a%>>8
  701. pbOut%?25=a%
  702. pbOut%?26=a%>>16
  703. pbOut%?27=a%>>24
  704. pbOut%!28=ownIP%
  705. pbOut%!32=0
  706. pbOut%!36=0
  707. pbOut%!40=hTask%
  708. pbOut%!44=0
  709. pbOut%!48=0
  710. pbOut%!52=0
  711.  Tomo%,0,ROH%!n%,&201,6,pbOut%+44,16
  712. pbOut%!56=0
  713. pbOut%!60=0
  714. pbOut%!64=0
  715.  Tomo%,0,ROH%!n%,&201,0,pbOut%+56,16
  716. pbOut%!68=0
  717. $(pbOut%+72)="RISCOS3"+
  718. pbOut%!80=ownVer%
  719. pbAddr%!0=2+(2<<16)+(6<<24)
  720. pbAddr%!4=RIP%!n%
  721. pbAddr%!8=0
  722. pbAddr%!12=0
  723. "Socket_Sendto",RS1%!n%,pbOut%,84,0,pbAddr%,16
  724. RC%!n%=Time%
  725. _SendReply(cm%,ca%,id%,PL%,PR%,IP%)
  726. pbAddr%!0=PR%
  727. pbAddr%!4=IP%
  728. pbAddr%!8=0
  729. pbAddr%!12=0
  730. pbOut%!0=1
  731. pbOut%?1=cm%
  732. pbOut%?2=ca%
  733. pbOut%!4=0
  734. pbOut%?7=id%
  735. pbOut%!8=PL%
  736. pbOut%?8=(PL%>>8)
  737. pbOut%?9=PL%
  738. pbOut%!12=0
  739.  pbOut%!12=ownIP%
  740. pbOut%!16=0
  741. pbOut%!20=0
  742. "Socket_Sendto",hsUDP%,pbOut%,24,0,pbAddr%,16
  743. _FadeR(hor%,f%)
  744.  m1%,m2%
  745. 1<<31
  746.  m1%=1<<31
  747.  m1%=0
  748.  Tomo%,0,hor%,&40,0
  749.  Tomo%,0,hor%,&41,0,f%
  750.  Tomo%,0,hor%,&40,1
  751.  Tomo%,0,hor%,&41,1,f%
  752.  Tomo%,0,hor%,&40,4
  753.  Tomo%,0,hor%,&41,4,f%
  754.  Tomo%,0,hor%,&40,6
  755.  Tomo%,0,hor%,&41,6,f%
  756.  Tomo%,0,hor%,&40,16
  757.  Tomo%,0,hor%,&41,16,f%
  758.  Tomo%,0,hor%,&40,17
  759.  Tomo%,0,hor%,&41,17,f%
  760.  Tomo%,0,hor%,&40,18
  761.  Tomo%,0,hor%,&41,18,f%
  762. readString(p%)
  763.  b%,c%
  764. ?    b%=-1
  765. A    b%+=1
  766. c%=p%?b%
  767.  c%<32
  768. p%?b%=13
  769. _StartSubtask(hs%,n%)
  770.  p%,s%
  771. G,$pbUni%="TalkToSocket "+
  772. (hs%)+" "+
  773. p%=pbUni%+
  774. ($pbUni%)
  775.  Tomo%,0,ROH%!n%,&201,0,pbMes%,16
  776.  Tomo%,0,ROH%!n%,&201,4,pbMes%+16,80
  777. "MessageTrans_Lookup",pMesgDesc%,"Talking",p%,256,pbMes%,pbMes%+16,0,0
  778. ,,,s%
  779. p%+=s%
  780.  RPV%!n%
  781. (34)+" -acorn"+
  782. (34)+
  783. "Wimp_StartTask",pbUni%
  784.