Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199801_2.adf » Regulars2 » StarInfo/Fletcher/!Setup/Files/Disc1/Program/Games/!NetOxo/!RunImage
StarInfo/Fletcher/!Setup/Files/Disc1/Program/Games/!NetOxo/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199801_2.adf » Regulars2 |
Filename: | StarInfo/Fletcher/!Setup/Files/Disc1/Program/Games/!NetOxo/!RunImage |
Read OK: | ✔ |
File size: | 623F bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
1REM>!RunImage 2REMProduced by BasCompress v1.71 (19 Sep 1996) 3testing%=FALSE:PROCinitlibrary:PROCinitheap:PROCinitsockets:ONERRORPROCclosemessages:PROCeerror:IFtesting%=TRUETHENOSCLI("Spool"):ENDELSEEND 4IFtesting%=TRUETHEN*Spool Spooled 5IFtesting%=TRUETHENTRACEON 6Appname$="NetOXO"::::Appdir$=FNsystemvar(Appname$+"$Dir"):PROCinitwimp:PROCinitprog:quit%=FALSE:ONERRORPROCerror 7WHILEquit%=FALSE:PROCPoll:ENDWHILE:SYS&400DD:PROCclosemessages:PROCclosesockets:IFtesting%=TRUETHEN*SPOOL 8END 9DEFPROCPoll:SYS&400C7,0,b%TOreason%:CASEreason%OF 10WHEN0:PROCchecksockets 11WHEN2:SYS&400C5,,b% 12WHEN3:IF!b%=sendwin%THENPROCclosesendELSEIF!b%=msgwin%THENPROCclosemsgELSESYS&400C6,,b% 13WHEN6:PROCmouseclick(b%!8,b%!&C,b%!16) 14WHEN8:PROCprocesskey(b%!0,b%!4,b%!24) 15WHEN9:PROCmenuchoice 16WHEN17,18:PROCreceive(b%!16) 17WHEN19:PROCreceiveack(b%!16) 18ENDCASE:ENDPROC 19DEFPROCmouseclick(but,win,icon):CASEwinOF 20WHEN-2:CASEbutOF 21WHEN2:PROCibmenu 22WHEN1,4:IFconnect$=""THEN 23PROCopenwincentre(connectwin%):PROCsetcaretend(connectwin%,1) 24ELSE:PROCopenwin(oxowin%) 25ENDIF 26ENDCASE 27WHENinfobox%:CASEiconOF 28WHEN1:PROCshowfree 29WHEN3:PROCFetchPage("http://users.essex.ac.uk/users/gerph/") 30WHEN4:PROCFetchPage("http://users.essex.ac.uk/users/gerph/acorn/internet.html#netoxo") 31ENDCASE 32WHENconnectwin%:CASEiconOF 33WHEN4:PROCdoconnect 34ENDCASE 35WHENoxowin%:CASEbutOF 36WHEN1,4:CASEiconOF 37WHEN16:PROCopensend 38OTHERWISEPROCclickonicon(icon) 39ENDCASE 40WHEN2:PROCmenu(mainmenu%,-1,-1) 41ENDCASE 42WHENsendwin%:CASEiconOF 43WHEN1:PROCdosend 44WHEN2:PROCclosesend 45ENDCASE 46WHENmsgwin%:CASEiconOF 47WHEN1:PROCclosemsg 48WHEN2:PROCclosemsg:PROCopensend 49ENDCASE 50ENDCASE:ENDPROC 51DEFPROCprocesskey(win,icon,key):LOCALkeydone:keydone=FALSE:CASEwinOF 52WHENconnectwin%:IFicon=3ANDkey=&DTHENPROCdoconnect:keydone=TRUE 53WHENsendwin%:IFkey=&DTHENPROCdosend:keydone=TRUE 54IFkey=27THENPROCclosesend 55WHENmsgwin%:IFkey=&DORkey=27THENPROCclosemsg:keydone=TRUE 56IFkey=82ORkey=&72THENPROCclosemsg:PROCopensend 57ENDCASE:IFNOTkeydoneTHENSYS&400DC,key 58ENDPROC 59DEFPROCmenuchoice:SYS&400CF,,message_buffer%:mbut%=message_buffer%!8:m$=FNdecodemenu(curmenu%):CASEm$OF 60WHEN"Quit":quit%=TRUE 61WHEN"Clear board":IFwon$<>""THEN 62PROCclearboard:IFconnect$<>""THEN 63?b%=67:PROCsocket_senddata(sock,b%,3) 64ENDIF 65ENDIF 66WHEN"Disconnect":IFconnect$<>""THEN 67?b%=81:PROCsocket_senddata(sock,b%,3):PROCdisconnect 68ENDIF 69WHEN"Message...":PROCopensend 70ENDCASE:IF(mbut%AND1)=1THENPROCrecreatemenuELSEcurmenu%=-1 71ENDPROC 72DEFPROCreceive(mess):CASEmessOF 73WHEN0:quit%=TRUE*2 74WHEN3,5:type=b%!40:IFtype=&8888THEN 75b%!&C=b%!8:b%!16=4:SYS&400E7,17,b%,b%!4:PROCloadfile(FNstring0(b%+44),b%!40) 76ENDIF 77WHEN&502:PROCHelp(b%!32,b%!36,b%!4) 78WHEN&A:PROCdesktopsave(b%!20) 79WHEN&4A266:SYS8,6,"<Wimp$ScrapDir>."+STR$b%!20 80ENDCASE:ENDPROC 81DEFPROCreceiveack(mess):CASEmessOF 82WHEN&4A265:CLOSE#(b%!28):SYS8,6,"<Wimp$ScrapDir>."+STR$b%!20 83ENDCASE:ENDPROC 84DEFPROCdesktopsave(file%):LOCALERROR:ONERRORLOCALb%!&C=b%!8:SYS&400E7,19,b%,b%!4:RESTOREERROR:ENDPROC 85BPUT#file%,"Run "+Appdir$:ENDPROC 86DEFPROCloadfile(file$,type):CASEtypeOF 87ENDCASE:ENDPROC 88DEFPROCinitwimp:DIMmessagelist%256::PROCnotemessage(&502):PROCnotemessage(&A):PROCnotemessage(0):SYS&400C0,310,&4B534154,Appname$,messagelist%TOwimpversion,handle:indl%=&400:menul%=&400:DIMb%&800,ind%indl%,menu%menul%,wspc%&800:curmenu%=-1:PROCopenmessages 89sprites%=FNloadsprites(Appdir$+".Sprites"):infobox%=FNloadtemplate("Info",1):oxowin%=FNloadtemplate("oxo",sprites%):connectwin%=FNloadtemplate("connect",1):sendwin%=FNloadtemplate("send",1):msgwin%=FNloadtemplate("message",1) 90PROCseticontext(infobox%,1,Appname$):PROCseticontext(infobox%,2,"O's and X's (port xxxx)"):PROCseticontext(infobox%,4,"1.04 (25 Jan 1997)"):ibhandle=FNCreateIconBarIcon("!"+Appname$,"",1):mainmenu%=FNcreatemenu(Appname$+"|Clear board|Disconnect|Message...") 91ibmenu%=FNcreatemenu(Appname$+"|Info]>infobox%|Quit"):iboptions%=options%:DIMlastcaret%24:ENDPROC 92DEFPROCinitprog:listener=FNsocket_createinet:port=FNsocket_findlisten(listener,0,&7B8,&F):PROCseticontext(infobox%,2,FNmsgtext(">Info:"+STR$port)):DIMboard$(3,3):player$="x":won$="":connect$="":weare$="":wewon=-1:theywon=-1:state=0:PROCclearboard:ENDPROC 93DEFPROCHelp(win,icon,to):RESTORE+1:PROCreadhelp(win,icon,to):ENDPROC 94DATA infobox%,">HInfobox" 95DATA 3,">HInfobox3" 96DATA -2,">HIconbar" 97DATA -1,-1 98DATA -2,-2,-2,-2 99DEFPROCFetchPage(f$):IFFNsystemvar("Wimp$ScrapDir")<>""THEN 100f%=0:WHILEFNfilelength("<Wimp$ScrapDir>."+STR$f%)<>-1:f%+=1:ENDWHILE:o%=OPENOUT("<Wimp$ScrapDir>."+STR$f%):BPUT#o%,f$:PTR#o%=0:!b%=32:b%!8=0:b%!&C=0:b%!16=&4A265:b%!20=f%:b%!24=(1<<22):b%!28=o%:SYS&400E7,18,b%,0 101ENDIF:ENDPROC 102DEFPROCclearboard:FORI=4TO&C:PROCseticonvalid(oxowin%,I,""):NEXT:board$()="":won$="":PROCupdatetitle:PROCmenushade(mainmenu%,0,1):ENDPROC 103DEFPROCupdatetitle:IFweare$=""THEN 104PROCwindowtitle(oxowin%,">NotConnected") 105ELSE:IFweare$=player$THEN 106PROCwindowtitle(oxowin%,">Us:"+player$) 107ELSE:PROCwindowtitle(oxowin%,">Them:"+player$) 108ENDIF 109ENDIF:ENDPROC 110DEFPROCupdatescore:IFwewon=-1THENw$="-"ELSEw$=LEFT$(STR$wewon,3) 111IFtheywon=-1THENt$="-"ELSEt$=LEFT$(STR$theywon,3) 112PROCseticontext(oxowin%,&F,w$):PROCseticontext(oxowin%,17,t$):ENDPROC 113DEFPROCplacepiece(x,y,c$):LOCALI:I=x+y*3:board$(x,y)=LEFT$(c$+" ",1):PROCseticonvalid(oxowin%,I,"S"+board$(x,y)):won$=FNwinner:IFwon$<>""THEN 114CASEwon$OF 115WHENweare$:reply=FNerrorbox(">Message",">WinUs:"+won$,17):wewon+=1 116WHEN"n":reply=FNerrorbox(">Message",">WinNone",17) 117OTHERWISE:reply=FNerrorbox(">Message",">WinThem:"+won$,17):theywon+=1 118ENDCASE:PROCupdatescore:PROCmenushade(mainmenu%,0,0) 119ENDIF:CASEplayer$OF 120WHEN"x":player$="o" 121WHEN"o":player$="x" 122ENDCASE:PROCupdatetitle:ENDPROC 123DEFPROCclickonicon(icon):IFicon>=4ANDicon<=&CANDwon$=""THEN 124IFplayer$=weare$THEN 125x=((icon-4)MOD3)+1:y=((icon-4)DIV3)+1:IFboard$(x,y)=""THEN 126?b%=77:b%?1=x:b%?2=y:PROCsocket_senddata(sock,b%,3):PROCplacepiece(x,y,player$) 127ENDIF 128ENDIF 129ENDIF:ENDPROC 130DEFFNwinner:LOCALx,y,w$,a$:w$="":a$="":FORx=1TO3:IFboard$(x,1)=board$(x,2)ANDboard$(x,2)=board$(x,3)ANDboard$(x,1)<>""THENw$=board$(x,3) 131a$+=board$(x,1)+board$(x,2)+board$(x,3):NEXT:FORy=1TO3:IFboard$(1,y)=board$(2,y)ANDboard$(2,y)=board$(3,y)ANDboard$(1,y)<>""THENw$=board$(3,y) 132NEXT:IFboard$(1,1)=board$(2,2)ANDboard$(2,2)=board$(3,3)ANDboard$(1,1)<>""THENw$=board$(3,3) 133IFboard$(3,1)=board$(2,2)ANDboard$(2,2)=board$(1,3)ANDboard$(3,1)<>""THENw$=board$(3,1) 134IFw$=""ANDLEN(a$)=9THENw$="n" 135=w$ 136DEFPROCchecksockets:IFconnect$=""THEN 137sock=FNsocket_accept(listener):IFsock<>-1THEN 138connect$=FNsocket_getpeername(sock):PROCseticontext(oxowin%,&D,connect$):PROCreset("x") 139ENDIF 140ELSE:s=FNsocket_accept(listener):IFs<>-1THEN 141PROCsocket_sendline(s,"All connections are taken"):PROCsocket_close(s) 142ENDIF:IFFNsocket_inbuffer(sock)>0THEN 143buf%=FNclaim(&800):len=FNsocket_readdata(sock,buf%):type=buf%?0:CASEstateOF 144WHEN0:IFtype=&6FANDbuf%?1=&78ANDbuf%?2=&6FTHEN 145state=1:PROCopenwin(oxowin%) 146ELSE:PROCsocket_sendline(sock,"Invalid response"):PROCsocket_close(sock):connect$="" 147ENDIF 148WHEN1:CASECHR$(type)OF 149WHEN"M":PROCplacepiece(buf%?1,buf%?2,player$) 150WHEN"C":PROCclearboard 151WHEN"Q":reply=FNerrorbox(">Message",">GameOver",18):PROCdisconnect 152WHEN"T":buf%?len=0:m$=LEFT$(FNstring0(buf%+1),39):PROCseticontext(msgwin%,0,m$):PROCopenmsg 153OTHERWISE:PROCsocket_sendline(sock,"Imposter !") 154ENDCASE 155ENDCASE:PROCrelease(buf%) 156ELSE:IFFNsocket_eof(sock)THEN 157PROCdisconnect:reply=FNerrorbox(">Message",">Closed",18) 158ENDIF 159ENDIF 160ENDIF:ENDPROC 161DEFPROCdoconnect:host$=FNgeticontext(connectwin%,1):port$=FNgeticontext(connectwin%,3):ip=FNinet_gethostbyname(host$):port=FNinet_getservbyname(port$,"tcp"):sock=FNsocket_createinet:ok=FNsocket_connect(sock,ip,port):IFNOTokTHEN 162PROCsocket_close(sock):reply=FNerrorbox(">Message",">NoConnect",18) 163ELSE:connect$=FNsocket_getpeername(sock):PROCseticontext(oxowin%,&D,connect$):PROCreset("o") 164ENDIF:ENDPROC 165DEFPROCdisconnect:PROCsocket_close(sock):connect$="":weare$="":PROCupdatetitle:PROCclosemsg:PROCclosesend:PROCmenushade(mainmenu%,0,1):PROCmenushade(mainmenu%,1,1):PROCmenushade(mainmenu%,2,1):PROCiconshade(oxowin%,16,1):ENDPROC 166DEFPROCreset(x$):?b%=&6F:b%?1=&78:b%?2=&6F:PROCsocket_senddata(sock,b%,3):weare$=x$:player$="x":PROCclearboard:wewon=0:theywon=0:state=0:PROCupdatetitle:PROCupdatescore:PROCclosewin(connectwin%):PROCclosewin(oxowin%):PROCmenushade(mainmenu%,0,1):PROCmenushade(mainmenu%,1,0) 167PROCmenushade(mainmenu%,2,0):PROCiconshade(oxowin%,16,0):ENDPROC 168DEFPROCdosend:PROCclosesend:m$=FNgeticontext(sendwin%,0):$(b%)="T":$(b%+1)=m$+CHR$&D:PROCsocket_senddata(sock,b%,3+LEN(m$)):ENDPROC 169DEFPROCopensend:PROCgetcaretpos(win,icon,chars):IFwin<>sendwin%THEN 170SYS&400D3,,lastcaret% 171ENDIF:PROCseticontext(sendwin%,0,""):PROCopenwin(sendwin%):PROCsetcaretpos(sendwin%,0,-1):ENDPROC 172DEFPROCclosesend:PROCgetcaretpos(win,icon,chars):IFwin=sendwin%THEN 173SYS&600D2,lastcaret%!0,lastcaret%!4,lastcaret%!8,lastcaret%!&C,lastcaret%!16,lastcaret%!20 174ENDIF:PROCclosewin(sendwin%):ENDPROC 175DEFPROCopenmsg:PROCgetcaretpos(win,icon,chars):IFwin<>msgwin%THEN 176SYS&400D3,,lastcaret% 177ENDIF:PROCopenwin(msgwin%):PROCsetcaretpos(msgwin%,-1,-1):ENDPROC 178DEFPROCclosemsg:IFwin=msgwin%THEN 179SYS&600D2,lastcaret%!0,lastcaret%!4,lastcaret%!8,lastcaret%!&C,lastcaret%!16,lastcaret%!20 180ENDIF:PROCclosewin(msgwin%):ENDPROC 4491DEFPROCinitheap:SYS81TOh_page:h_size=h_page:h_start=HIMEM:h_rsize=2:h_full=0:SYS&400EC,-1,-1TOh_appbase:SYS&400EC,h_appbase+h_size,-1:SYS29,0,h_start,,h_size:SYS29,2,h_start,,4*h_rsize+4TO,,h_reloc:h_reloc+=4:h_reloc!-4=&434F4C52:FORI=0TOh_rsize*4-4STEP4:h_reloc!I=-1:NEXT:ENDPROC 4492DEFPROCheap_free(RETURNmax,RETURNfree):SYS29,1,h_startTO,,,free:max=h_size:ENDPROC 4493DEFFNenlargeheap:LOCALok,new:SYS&600EC,h_appbase+h_size+h_page,-1TOnew;ok:IF(okAND1)=1ORnew=h_appbase+h_sizeTHEN=FALSE 4494h_size+=h_page:SYS29,5,h_start,,h_page:=TRUE 4495DEFFNclaim(size):LOCALloc,big,ok,r:ok=TRUE:IFsize<0THENr=TRUE:size=ABS(size)+4ELSEr=FALSE 4496SYS29,1,h_startTO,,big:WHILEsize>bigANDok:ok=FNenlargeheap:SYS29,1,h_startTO,,big:ENDWHILE:IFNOTokTHEN=-1 4497SYS&2001D,2,h_start,,sizeTO,,loc;ok:IF(okAND1)=1THEN=-1 4498IFrTHEN 4499!loc=&434F4C52:loc+=4:IFh_full=h_rsizeTHEN 4500h_reloc=FNextend(h_reloc,4*16):h_rsize+=16:IF(h_relocAND1)=0THENFORr=h_fullTOh_rsize-1:h_reloc!(r*4)=-1:NEXTELSEh_reloc-=1:SYS29,3,h_start,loc-4:=-1 4501ENDIF:h_reloc!(h_full*4)=loc:h_full+=1 4502ENDIF:=loc 4503DEFPROCrelease(RETURNloc):LOCALfull:IFloc>0THEN 4504IFloc>h_start+h_sizeTHEN 4505SYS30,7,,loc 4506ELSE:IFloc!-4=&434F4C52THEN 4507full=0:WHILEfull<h_fullANDh_reloc!(full*4)<>loc:full+=1:ENDWHILE:IFfull=h_fullTHENERROR&802,"Attempt to release unknown relocatable heap block" 4508loc-=4:h_full-=1:h_reloc!(full*4)=h_reloc!(h_full*4):h_reloc!(h_full*4)=-1 4509ENDIF:SYS29,3,h_start,loc 4510ENDIF:loc=-1 4511ENDIF:ENDPROC 4512DEFFNextend(loc,size):LOCALnew,ok,full:full=FALSE:IFloc!-4<>&434F4C52THENERROR&802,"Attempt to extend non-relocatable heap block" 4513REPEAT:SYS&2001D,4,h_start,loc-4,sizeTOk,,new;ok:IF(okAND1)=1THENfull=NOTFNenlargeheap 4514UNTIL(okAND1)=0ORfull:IFfullTHEN 4515new=loc-3 4516ELSE:IFloc<>h_relocTHEN 4517full=0:WHILEfull<h_fullANDh_reloc!(full*4)<>loc:full+=1:ENDWHILE:IFfull=h_fullTHENERROR&802,"Unknown relocatable heap block" 4518h_reloc!(full*4)=new+4 4519ENDIF 4520ENDIF:=new+4 4521DEFPROCinitlibrary:DIMmessage_buffer%&400:rmafontarea=-2:msgbuffer%=-1:msgbuffer2%=-1:ftblk=-2:ENDPROC 4522DEFPROCnotemessage(n)messagelist%!0=n:ENDPROC 4523DEFFNloadtemplate(n$,sprblk%)LOCALtsize%,blk%,ok%:SYS&400D9,,Appdir$+".Templates":SYS&400DB,,0,,,,n$,0TO,,tsize%:DIMblk%tsize%:SYS&400DB,,wspc%,blk%,blk%+tsize%,-1,n$,0TO,,,,,,ok%:SYS&400DA:IFok%=0THENERROR&803,"Template file "+n$+" not found" 4524wspc%!64=sprblk%:SYS&400C1,,wspc%TOblk%:=blk% 4525DEFFNloadsprites(file$)LOCALlen%,o%,sprblk%:o%=OPENIN(file$):IFo%=0THEN=1 4526len%=EXT#o%+16:CLOSE#o%:DIMsprblk%len%:!sprblk%=len%:sprblk%!8=0:SYS46,265,sprblk%:SYS46,266,sprblk%,file$:=sprblk% 4527DEFFNsystemvar(Var$)LOCALlen:SYS&20023,Var$,message_buffer%,&FF,0,3TO,,len:message_buffer%?len=&D:=$message_buffer% 4528DEFPROCeerror:LOCALERROR:ONERRORLOCAL:PROCclosemessages:VDU4:ERROREXT0,REPORT$+" at line "+STR$ERL+" in error handler" 4529mess$="Internal error : ("+STR$ERL+") "+REPORT$:OSCLI("Set Error$ "+mess$):OSCLI("Set Error$Task Not known"):message_buffer%!0=ERR:$(message_buffer%+4)=mess$+" whilst initialising"+CHR$0:ONERRORLOCAL:Appname$="uninitialised task" 4530a$=Appname$:ONERRORLOCAL:PROCclosemessages:VDU4:ERROREXT0,REPORT$+" at line "+STR$ERL+" in error handler" 4531SYS&400DF,message_buffer%,9,Appname$:ENDPROC 4532DEFPROCerrorLOCALerrcode,mess$,reply%:LOCALERROR:ONERRORLOCAL:PROCclosemessages:VDU4:ERROREXT0,REPORT$+" at line "+STR$ERL+" in error handler" 4533SYS6,&7C:IFERR>&7FFANDERR<&803THEN 4534errcode=ERR-&7FF:mess$=REPORT$:IFerrcode=3THENmess$+=" (Cancel to Quit)" 4535reply%=FNerrorbox(Appname$,mess$,errcode):IFreply%=2ANDerrcode=3THENquit%=TRUE 4536ELSE:mess$="Internal error : ("+STR$ERL+") "+REPORT$+" Cancel to Quit":reply%=FNerrorbox(Appname$,mess$,3):IFreply%<>1THEN 4537quit%=TRUE:OSCLI("Set Error$ "+mess$):OSCLI("Set Error$Task "+Appname$) 4538ENDIF:IFINKEY(-1)ANDINKEY(-2)ANDINKEY(-17)THENOSCLI("Spool"):END 4539ENDIF:ENDPROC 4540DEFFNerrorbox(title$,message$,button%)title$=FNmsgtext(title$):message$=FNmsgtext(message$):$(message_buffer%+4)=message$:!message_buffer%=0:SYS&400DF,message_buffer%,button%,title$TO,reply%:=reply% 4541DEFPROCshowfree:LOCALERROR:ONERRORLOCAL:IFERR=&803THENPROCseticontext(infobox%,4,"Old template"):ENDPROCELSEENDPROC 4542PROCseticontext(infobox%,5,"Program"):PROCseticontext(infobox%,1,STR$(TOP-PAGE)+" bytes, "+STR$((TOP-PAGE)DIV&400)+"K"):PROCseticontext(infobox%,6,"Vars"):PROCseticontext(infobox%,2,STR$(END-LOMEM)+" bytes, "+STR$((END-LOMEM)DIV&400)+"K"):PROCseticontext(infobox%,7,"Free") 4543PROCseticontext(infobox%,3,STR$(HIMEM-END)+" bytes, "+STR$((HIMEM-END)DIV&400)+"K"):PROCheap_free(heapsize,heapfree):PROCseticontext(infobox%,8,"Heap"):PROCseticontext(infobox%,4,STR$(heapsize-heapfree)+" bytes, "+STR$((heapsize-heapfree)DIV&400)+"K of "+STR$(heapsizeDIV&400)+"K"):ENDPROC 4544DEFFNcreatemenu(A$):LOCALpointer,p2,p3,l,lk,O$,C$,oind%,oindl%,ks%,k$,S$:oind%=ind%:oindl%=indl%:ks%=FALSE:pointer=menu%:l=0:A$+="|":PROCmenuputs(FNmget(A$,C$)):PROCmenuputw(&70207):p2=menu%:PROCmenuputw(&80):PROCmenuputw(44):PROCmenuputw(0):options%=0:S$=A$:lk=0:REPEAT 4545IFks%=TRUETHENks%=TRUE*2 4546REPEAT:O$=FNmget(A$,C$):options%=options%+1:flags=FNmdecode(C$,p3,s$,k$)+((-(A$=""))<<7):IFks%=TRUE*2ANDk$<>""THEN 4547O$+=STRING$(l+lk-(LEN(O$)+LEN(k$))+1," "):IFLEFT$(k$,1)="�"THENMID$(k$,1,1)=CHR$(&8B) 4548O$+=k$ 4549ELSE:IFk$<>""THENks%=TRUE:IFlk<LEN(k$)THENlk=LEN(k$) 4550ENDIF:flags2=&7000021+((-(LEN(O$)>&B))<<8)+(1<<&E)*(flagsAND256):IF(flagsAND4)<>0THENflags2=flags2OR256 4551PROCmenuputw(flagsAND&FF):PROCmenuputw(p3):IFLEN(O$)>lANDks%<>TRUE*2THENl=LEN(O$) 4552PROCmenuputw(flags2):PROCmenustring(O$,s$,(flagsAND4)):UNTILA$="":IFks%=TRUE*2THENl+=lk+1ELSEIFks%=TRUETHENind%=oind%:indl%=oindl%:menul%+=menu%-p2-&C:menu%=p2+&C:options%=0:A$=S$ 4553UNTILks%<>TRUE:!p2=l*16+16:=pointer 4554DEFPROCmenustring(T$,s$,flag)IFLEFT$(T$,1)="�"THENT$=EVAL(MID$(T$,2)) 4555IFLEN(T$)<&CANDs$=""ANDflag=0THEN 4556PROCmenuputs(T$) 4557ELSE:PROCmenuputw(FNindirect(T$)):IFs$<>""THEN 4558menu%!-8=menu%!-8OR&803:IFLEFT$(FNlower(s$),2)="sm"THENmenu%!-8=menu%!-8EOR&800 4559PROCmenuputw(FNindirect("S"+s$)) 4560ELSE:PROCmenuputw(-1) 4561ENDIF:PROCmenuputw(LEN(T$)+1) 4562ENDIF:ENDPROC 4563DEFFNmget(RETURNA$,RETURNC$):LOCALB$:B$=LEFT$(A$,INSTR(A$,"|")-1):A$=MID$(A$,LEN(B$)+2):IFINSTR(B$,"]")<1THENB$+="]" 4564C$=MID$(B$,INSTR(B$,"]")+1):B$=LEFT$(B$,INSTR(B$,"]")-1):=FNmsgtext(B$) 4565DEFPROCmenuputs(T$)IFLEN(T$)>&BTHENERROR&803,"Menu entry too long" 4566$menu%=T$:menu%+=&C:menul%-=&C:IFmenul%<=4THENERROR&803,"Not enough memory for menus" 4567ENDPROC 4568DEFPROCmenuputw(W%):!menu%=W%:menu%+=4:menul%-=4:IFmenul%<=4THENERROR&803,"Not enough memory for menus" 4569ENDPROC 4570DEFFNmdecode(A$,RETURNp,RETURNs$,RETURNk$):LOCALB$,C$,V:p=-1:s$="":k$="":A$=A$+",":WHILEA$<>"":B$=LEFT$(A$,1):A$=MID$(A$,2):CASEB$OF 4571WHEN"T":V=VOR1 4572WHEN"D":V=VOR2 4573WHEN"W":V=VOR4 4574WHEN"M":V=VOR8 4575WHEN"S":V=VOR256 4576WHEN"K":k$=LEFT$(A$,INSTR(A$,",")-1):A$=MID$(A$,INSTR(A$,",")+1) 4577WHEN">":p=EVAL(LEFT$(A$,INSTR(A$,",")-1)):A$=MID$(A$,INSTR(A$,",")+1) 4578WHEN"}":s$=LEFT$(A$,INSTR(A$,",")-1)+" ":A$=MID$(A$,INSTR(A$,",")+1) 4579ENDCASE:ENDWHILE:=V 4580DEFFNindirect(a$)LOCALi:i=ind%:IFLEN(a$)>indl%-1THENERROR&803,"Not enough room for indirection" 4581$ind%=a$:ind%+=LEN(a$)+1:indl%-=LEN(a$)+1:=i 4582DEFPROCibmenu:SYS&400CF,,b%:curmenu%=ibmenu%:cmenux%=b%!0-64:cmenuy%=96+44*iboptions%:SYS&400D4,,ibmenu%,b%!0-64,96+44*iboptions%:ENDPROC 4583DEFPROCmenu(menu%,x,y):IFx=-1THEN 4584SYS&400CF,,b%:x=b%!0:y=b%!4 4585ENDIF:curmenu%=menu%:cmenux%=x-64:cmenuy%=y+20:SYS&400D4,,menu%,x-64,y+20:ENDPROC 4586DEFPROCrecreatemenu:SYS&400D4,,curmenu%,cmenux%,cmenuy%:ENDPROC 4587DEFPROCmenushade(menu,option,toggle)menu+=option*24+36:CASEtoggleOF 4588WHEN0:!menu=!menuANDNOT(1<<22) 4589WHEN-1,1:!menu=!menuOR(1<<22) 4590WHEN2:!menu=!menuEOR(1<<22) 4591ENDCASE:ENDPROC 4592DEFFNdecodemenu(menu%)LOCALcp%,ptr,b$,c$:cp%=menu%:ptr=0:WHILE(b%!ptr>-1ANDcp%<>rmafontarea):cp%=cp%!(32+(b%!ptr)*24):ptr+=4:ENDWHILE:IFcp%=rmafontareaANDb%!ptr<>0THEN 4593SYS&400A0,,rmafontarea,b%+ptr,STRING$(&FF,CHR$0),&FFTO,,,m$ 4594ELSE:SYS&400D5,,menu%,b%,STRING$(&FF,CHR$0),&FFTO,,,m$:b$="":REPEAT:c$=LEFT$(m$,INSTR(m$+".",".")-1):m$=MID$(m$,LEN(c$)+2):c$=LEFT$(c$,INSTR(c$+" ^"," ^")-1):c$=LEFT$(c$,INSTR(c$+" "+CHR$&8B," "+CHR$&8B)-1):CASERIGHT$(c$,3)OF 4595WHEN"Esc","Del","Ins","End","Hom","Cpy","F10","F11","F12","F13","Prt","Tab","Ret":c$=LEFT$(c$,LEN(c$)-4) 4596ENDCASE:IFMID$(c$,LEN(c$)-2,2)=" F"THENIFRIGHT$(c$)="0"ORVAL(RIGHT$(c$))<>0THENc$=LEFT$(c$,LEN(c$)-3) 4597WHILERIGHT$(c$)=" ":c$=LEFT$(c$):ENDWHILE:b$+=c$+".":UNTILm$=""ORm$=".":IFm$="."THENb$+=".." 4598m$=LEFT$(b$) 4599ENDIF:=m$ 4600DEFPROCclosewin(win%):!b%=win%:SYS&400C6,,b%:ENDPROC 4601DEFPROCopenwin(win%):!b%=win%:SYS&400CB,,b%:b%!28=-1:SYS&400C5,,b%:ENDPROC 4602DEFPROCopenwincentre(win%)LOCALwidth,height,top,right,x,y:!b%=4:b%!4=5:b%!8=&B:b%!&C=&C:b%!16=-1:SYS49,b%,b%+20:right=b%!28+1<<b%!20:top=b%!32+1<<b%!24:!b%=win%:SYS&400CB,,b%:width=b%!4-b%!&C:height=b%!16-b%!8:x=(right-width)/2+width:y=(top-height)/2+height 4603b%!4=x:b%!8=y-height:b%!&C=x-width:b%!16=y:b%!28=-1:SYS&400C5,,b%:ENDPROC 4604DEFPROCwindowtitle(win%,title$):LOCALloc%,a$:b%!0=win%:SYS&400CC,,b%+1:loc%=!(b%+76):a$=FNmsgtext(title$):IFFNstring0(loc%)<>a$THEN 4605$loc%=a$:b%!32=win%:SYS&400E0,,b%+32:SYS&400D1,-1,b%!36,b%!16,b%!44,b%!48 4606ENDIF:ENDPROC 4607DEFFNCreateIconBarIcon(Spr$,title$,pos%)LOCALic%,w%,m%,e%:title$=FNmsgtext(title$):b%!0=-(ABS(pos%)AND&FF):b%!4=0:b%!8=-16:b%!&C=&C+16*LEN(title$):b%!16=88:IFb%!&C<&C+16*4THENb%!&C=&C+16*4 4608IFtitle$<>""THEN 4609b%!20=(1<<28)+(7<<24)+(3<<&C)+(&B)+(1<<8):b%!24=FNindirect(title$):b%!28=FNindirect("S"+Spr$):b%!32=LEN(title$)+1 4610ELSE:b%!20=(1<<28)+(7<<24)+(3<<&C)+(26):$(b%+24)=Spr$ 4611ENDIF:SYS&400E9,296,,LEFT$(Spr$,INSTR(Spr$+",",","))TO,,,w%,m%:SYS&20035,m%,4TO,,e%:w%=(w%+1)<<e%:IFw%>b%!&CTHENb%!&C=w% 4612IF(ABS(pos%)AND&FF)=3OR(ABS(pos%)AND&FF)=4THENpos%=ABS(pos%)>>8ELSEpos%=(ABS(pos%)AND&FF00)<<16 4613SYS&400C2,pos%,b%TOic%:=ic% 4614DEFPROCiconshade(win%,icon%,type%):PROCseticonbit(win%,icon%,22,type%):ENDPROC 4615DEFPROCseticonbit(win%,icon%,bit%,type%):LOCALs%,t%:CASEtype%OF 4616WHEN0:s%=0<<bit%:t%=1<<bit% 4617WHEN-1,1:s%=1<<bit%:t%=1<<bit% 4618WHEN2:s%=1<<bit%:t%=0<<bit% 4619ENDCASE:b%!0=win%:b%!4=icon%:b%!8=s%:b%!&C=t%:SYS&400CD,,b%:ENDPROC 4620DEFPROCredrawicon(win%,icon%):win%+=win%=-1:!b%=win%:b%!4=icon%:SYS&400CE,,b%:SYS&400D1,win%,b%!8,b%!&C,b%!16,b%!20:ENDPROC 4621DEFFNgeticontext(win%,icon%):b%!0=win%:b%!4=icon%:SYS&400CE,,b%:IF((b%!24)AND256)=0THEN=FNstring0(b%+28) 4622=FNstring0(b%!28) 4623DEFPROCseticontext(win%,icon%,text$)LOCALi%:text$=FNmsgtext(text$):SYS&400D3,,b%:i%=(!b%=win%)AND(icon%=b%!4):b%!0=win%:b%!4=icon%:SYS&400CE,,b%:IF((b%!24)AND256)=0THENERROR&803,"Icon isn't indirected (#"+STR$icon%+")" 4624IFFNstring0(b%!28)<>text$THEN 4625IFLEN(text$)<b%!36THEN$(b%!28)=text$ELSEERROR&803,"Text too long for icon (#"+STR$icon%+")" 4626!b%=win%:b%!4=icon%:b%!8=0:b%!&C=0:SYS&400CD,,b%:IFi%AND(b%!24AND1)=1THENSYS&400D2,win%,icon%,-1,-1,-1,LEN(text$) 4627ENDIF:ENDPROC 4628DEFPROCseticonvalid(win%,icon%,text$):b%!0=win%:b%!4=icon%:SYS&400CE,,b%:IF((b%!24)AND256)=0THENERROR&803,"Icon isn't indirected (#"+STR$icon%+")" 4629$(b%!32)=text$:PROCredrawicon(win%,icon%):ENDPROC 4630DEFPROCreadhelp(win,icon,to):LOCALlwin,val,help$,found,a$,m$,m2$,mh$:found=FALSE:lwin=-1:REPEAT:READval,help$:IFval>(1<<16)ORval<0THEN 4631IFlwin=winTHEN 4632val=icon:help$="":m2$=m$ 4633ELSE:lwin=val:m$=help$ 4634ENDIF 4635ENDIF:IFval=iconANDlwin=winTHEN 4636IFicon=-1ORhelp$=""THEN 4637PROCsendhelp(FNmsgtext(m$)+"|M",to) 4638ELSE:m$=FNmsgtext(m$):IFINSTR(m$,"|M")>0THENm$=LEFT$(m$,INSTR(m$,"|M")-1) 4639PROCsendhelp(FNmsgtext(m$)+"|M"+FNmsgtext(help$),to) 4640ENDIF:found=TRUE 4641ENDIF:UNTILhelp$="-1"ORfound=TRUE:IFNOTfoundTHEN 4642!message_buffer%=-1:message_buffer%!4=-1:message_buffer%!8=-1:SYS&400F4,1,message_buffer%,win,icon:IF!message_buffer%<>-1THEN 4643val=b%:b%=message_buffer%:mh$=FNdecodemenu(curmenu%):b%=val:m$=mh$:WHILEINSTR(m$," ")>0:MID$(m$,INSTR(m$," "),1)="_":ENDWHILE:help$=FNmsgtoken("HM"+m$):IFhelp$<>"HM"+m$THEN 4644PROCsendhelp(help$,to) 4645ELSE:REPEAT:READm$,val,help$,help$:UNTILEVAL(m$)=curmenu%ORm$="-2":IFm$<>"-2"THEN 4646IFval>-1THEN 4647PROCsendhelp(help$,to):found=TRUE 4648ELSE:REPEAT:READlwin,m$,val,help$:IFVAL(m$)=0ANDm$<>"0"THEN 4649IFmh$=m$THENPROCsendhelp(help$,to):found=TRUE 4650ELSE:IFlwin=message_buffer%!0ANDVAL(m$)=message_buffer%!4ANDval=message_buffer%!8THEN 4651PROCsendhelp(help$,to):found=TRUE 4652ENDIF 4653ENDIF:UNTILfound=TRUEORlwin=-2ORlwin>&8000 4654ENDIF 4655ENDIF 4656ENDIF 4657ENDIF 4658ENDIF:ENDPROC 4659DEFPROCsendhelp(help$,to)help$=FNmsgtext(help$):IFRIGHT$(help$,2)<>"|M"THENhelp$+="|M" 4660LOCALb$,c$:help$=FNsubstvars(help$):WHILEINSTR(help$,"|M")>0:b$=LEFT$(help$,INSTR(help$,"|M")-1):help$=MID$(help$,LEN(b$)+3):IFINSTR("!.?",RIGHT$(b$,1))=0THENb$+="." 4661c$+=b$+"|M":ENDWHILE:b%!&C=b%!8:b%!4=to:b%!16=&503:$(b%+20)=c$+CHR$0:b%!0=20+(LEN(c$)+4)AND-4:SYS&400E7,17,b%,b%!4:ENDPROC 4662DEFPROCopenmessagesLOCALf,l:IFmsgbuffer%<>-1THENERROR&803,"Message file already open" 4663SYS&41500,,Appdir$+".Messages"TOf,,l:IF(fAND1)=1THENmsgbuffer2%=0ELSEmsgbuffer2%=FNclaim(l) 4664IFmsgbuffer2%=-1THENERROR&803,"No room for secondary MessageTrans buffer" 4665msgbuffer%=FNclaim(16):IFmsgbuffer%=-1THENPROCrelease(msgbuffer2%):ERROR&803,"No room for primary MessageTrans buffer" 4666SYS&41501,msgbuffer%,Appdir$+".Messages",msgbuffer2%:ENDPROC 4667DEFPROCclosemessages:LOCALERROR:ONERRORLOCAL:VDU4:REPORT:PRINT" at ";ERL:G=GET:ENDPROC 4668IFmsgbuffer%>-1THEN 4669SYS&61504,msgbuffer%:PROCrelease(msgbuffer%):PROCrelease(msgbuffer2%) 4670ENDIF:ENDPROC 4671DEFFNmsgtoken(t$)LOCALs1$,s2$,s3$,a$,len%,f:IFmsgbuffer%=-1THEN=t$ 4672a$=MID$(t$,INSTR(t$+":",":")+1):t$=LEFT$(t$,INSTR(t$+":",":")-1):s1$=LEFT$(a$,INSTR(a$+":",":")-1):IFLEFT$(s1$,1)="|"THEN 4673s1$=MID$(a$,2):s2$="":s3$="" 4674ELSE:a$=MID$(a$,LEN(s1$)+2):s2$=LEFT$(a$,INSTR(a$+":",":")-1):IFLEFT$(s2$,1)="|"THENs2$=MID$(a$,2):s3$=""ELSEs3$=MID$(a$,LEN(s2$)+2) 4675ENDIF:SYS&61502,msgbuffer%,t$,message_buffer%,256,s1$,s2$,s3$TO,,,len%;f:IF(fAND1)=1THEN=t$ELSEmessage_buffer%?len%=&D 4676=FNsubstvars($message_buffer%) 4677DEFFNmsgtext(a$):IFLEFT$(a$,1)=">"THENa$=FNmsgtoken(MID$(a$,2)) 4678=a$ 4679DEFFNstring0(a%)LOCALa$:IFa%=0THEN="" 4680WHILE?a%>31ANDLEN(a$)<&FF:a$=a$+CHR$?a%:a%=a%+1:ENDWHILE:=a$ 4681DEFFNlower(a$)LOCALc$,b$,I:FORI=1TOLEN(a$):c$=MID$(a$,I,1):IFc$>="A"ANDc$<="Z"THENc$=CHR$(ASC(c$)+32) 4682b$+=c$:NEXT:=b$ 4683DEFFNsubstvars(a$):LOCALb$,d$:LOCALERROR:ONERRORLOCAL:=a$ 4684WHILEINSTR(a$,"�")>0:b$=MID$(a$,INSTR(a$,"�")+1):b$=LEFT$(b$,INSTR(b$,"�")-1):d$=b$:IFRIGHT$(d$,1)<>"$"THENd$="STR$("+d$+")" 4685a$=LEFT$(a$,INSTR(a$,"�")-1)+EVAL(d$)+MID$(a$,INSTR(a$,"�")+LEN(b$)+2):ENDWHILE:=a$ 4686DEFFNfilelength(f$)LOCALlen%,ex,f:SYS&20008,5,f$TOex,,,,len%;f:IFex=0OR(fAND1)=1THENlen%=-1 4687=len% 4688DEFFNleafname(f$)LOCALr$:IFINSTR(f$,":")>0THENf$=MID$(f$,INSTR(f$,":")+1) 4689CASEINSTR(f$,".")OF 4690WHEN0:r$=f$ 4691OTHERWISEr$=FNleafname(RIGHT$(f$,LEN(f$)-INSTR(f$,"."))) 4692ENDCASE:=r$ 4693DEFPROCsetcaretend(win,icon):PROCsetcaretpos(win,icon,LEN(FNgeticontext(win,icon))):ENDPROC 4694DEFPROCsetcaretpos(win,icon,chars):SYS&400D2,win,icon,0,0,-1,chars:ENDPROC 4695DEFPROCgetcaretpos(RETURNwin,RETURNicon,RETURNchars):SYS&400D3,,b%:win=!b%:icon=b%!4:chars=b%!20:ENDPROC 4696DEFPROCinitsockets:SYS&20039,,"Socket_Creat"TO;flags%:IF(flags%AND1)THENreply=FNerrorbox("SocketLib","This application requires an internet suite to be installed.",2):END 4697*RMEnsure InetServices 1.07 RMLoad System:Modules.Network.IServices 4698*RMEnsure InetServices 1.07 Set NoIServicesModule True 4699IFFNsystemvar("NoIServicesModule")="True"THENOSCLI("Unset NoIServicesModule"):reply=FNerrorbox("SocketLib","This application requires a later version of the IServices module - this can be obtained with JFShared 2.42.",2):END 4700DIMsock%(256),sockaddr%16,socktemp%256:sock%()=-1:sockbuflen%=&400*2:sockline%=FNclaim(sockbuflen%):SYS&41218TOsocktsize%:mtchain%=0:ENDPROC 4701DEFFNsocket_findhandle:LOCALsock%,o%:sock%=-1:REPEATsock%+=1:UNTILsock%(sock%)=-1ORsock%=256:IFsock%=256THEN=-1 4702sock%(sock%)=FNclaim(16):IFsock%(sock%)<0THEN=-1 4703FORo%=0TO16-4STEP4:sock%(sock%)!o%=0:NEXT:=sock% 4704DEFFNsocket_createinet:LOCALsock%:sock%=FNsocket_findhandle:IFsock%=-1THEN=-1 4705SYS&41200,2,1,0TOsock%(sock%)!0:IFsock%(sock%)!0=-1THENPROCrelease(sock%(sock%)):=-1 4706=sock% 4707DEFPROCsocket_check(sock%,r$):IFsock%<0ORsock%>256THENERROR&805,r$+": Socket out of range" 4708IFsock%(sock%)<0THENERROR&805,r$+": Socket has been closed" 4709ENDPROC 4710DEFFNsocket_findlisten(sock%,ip%,port%,limit%):LOCALflags%,r0:port%=port%AND&FFFF:PROCsocket_check(sock%,"FindListen"):REPEAT:sockaddr%!0=2OR((port%DIV256)<<16)OR((port%MOD256)<<24):sockaddr%!4=ip%:sockaddr%!8=0:sockaddr%!&C=0 4711SYS&61201,sock%(sock%)!0,sockaddr%,16TOr0;flags%:IF(flags%AND1)=1THENport%+=1:limit%-=1 4712UNTIL(flags%AND1)=0ORlimit%<0:IFlimit%<0THEN=-1 4713!socktemp%=-1:SYS&61212,sock%(sock%)!0,-&7ffb9982,socktemp%:SYS&61202,sock%(sock%)!0,5:sock%(sock%)!&C=(sock%(sock%)!&CANDNOT1)OR1:=port% 4714DEFFNsocket_connect(sock%,ip%,port%):LOCALflags%,r0:port%=port%AND&FFFF:PROCsocket_check(sock%,"Connect"):sockaddr%!0=2OR((port%DIV256)<<16)OR((port%MOD256)<<24):sockaddr%!4=ip%:sockaddr%!8=0:sockaddr%!&C=0:SYS&61204,sock%(sock%)!0,sockaddr%,16TOr0;flags% 4715IF(flags%AND1)=1THEN=FALSE 4716!socktemp%=-1:SYS&61212,sock%(sock%)!0,-&7ffb9982,socktemp%:sock%(sock%)!&C=(sock%(sock%)!&CANDNOT1):=TRUE 4717DEFFNsocket_accept(main%):PROCsocket_check(main%,"Accept"):LOCALskt%,sock%,O:sock%=FNsocket_findhandle:IFsock%=-1THEN=-1 4718!socktemp%=16:SYS&61203,sock%(main%)!0,sockaddr%,socktemp%TOskt%;flags%:IF(flags%AND1)=1ORskt%=-1THENPROCrelease(sock%(sock%)):=-1 4719sock%(sock%)!0=skt%:FORO=4TO16-4STEP4:sock%(sock%)!O=sock%(main%)!O:NEXT:IF((sock%(main%)!&C)AND2)=2THEN 4720sock%(sock%)!4=FNclaim(sockbuflen%):IFsock%(sock%)!4<0THEN 4721PROCrelease(sock%(sock%)):=-1 4722ENDIF:sock%(sock%)!8=0 4723ENDIF:=sock% 4724DEFPROCclosesockets:LOCALI%,s%:FORI%=0TO256:s%=I%:PROCsocket_close(s%):NEXT:PROCrelease(sockline%):WHILEmtchain%<>0:PROCinet_killmtquery(mtchain%):ENDWHILE:ENDPROC 4725DEFPROCsocket_close(RETURNsock%):IFsock%>=0ANDsock%<=256THEN 4726IFsock%(sock%)>-1THEN 4727SYS&6120B,sock%(sock%)!0,2:SYS&61210,sock%(sock%)!0:IF((sock%(sock%)!&C)AND2)=2THENPROCrelease(sock%(sock%)!4) 4728PROCrelease(sock%(sock%)) 4729ENDIF 4730ENDIF:sock%=-1:ENDPROC 4731DEFFNsocket_inbuffer(sock%):PROCsocket_check(sock%,"InBuffer"):SYS&61212,sock%(sock%)!0,&4004667f,socktemp%:=!socktemp% 4732DEFFNsocket_eof(sock%):PROCsocket_check(sock%,"Eof"):LOCALok,f%:ok=FNsocket_ready(sock%,TRUE):IFok<>0THEN 4733SYS&61205,sock%(sock%)!0,socktemp%,1,2+&80TOok;f%:ok=(ok=0)OR(f%AND1)=1 4734ENDIF:=ok 4735DEFFNsocket_ready(sock%,read%):PROCsocket_check(sock%,"Ready"):LOCALI,fd%,b%,ok%,r%,w%:fd%=sock%(sock%)!0:b%=socktemp%:FORI=0TO((socktsize%/8+3)ANDNOT3)-1STEP4:socktemp%!I=0:NEXT:WHILEfd%>=32:b%+=4:fd%-=32:ENDWHILE:!b%=!b%OR(1<<fd%):b%=socktemp%+I:!b%=0:b%!4=0 4736IFread%THENr%=socktemp%ELSEw%=socktemp% 4737SYS&41211,socktsize%,r%,w%,0,b%TOok%:=ok% 4738DEFFNsocket_readdata(sock%,RETURNstart%):LOCALread%:read%=0:PROCsocket_check(sock%,"ReadData"):IF((sock%(sock%)!&C)AND2)=2THENstart%=sock%(sock%)!4 4739IFstart%<&8000THENERROR&805,"ReadData: Stupid address for socket_readdata ("+STR$~start%+"), flags = "+STR$(sock%(sock%)!&C) 4740IFFNsocket_inbuffer(sock%)>0THEN 4741SYS&41213,sock%(sock%)!0,start%,sockbuflen%TOread% 4742ENDIF:=read% 4743DEFPROCsocket_sendline(sock%,m$):LOCALr0,flags%:PROCsocket_check(sock%,"SendLine"):$(socktemp%)=m$+CHR$&A:SYS&61214,sock%(sock%)!0,socktemp%,LEN(m$)+1TOr0;flags%:IFr0<>LEN(m$)+1THENERROR&805,"Could not send all data" 4744ENDPROC 4745DEFPROCsocket_senddata(sock%,b%,len%):LOCALr0,flags%:PROCsocket_check(sock%,"SendData"):SYS&61214,sock%(sock%)!0,b%,len%TOr0;flags%:ENDPROC 4746DEFFNsocket_getpeername(sock%):LOCALr0,r1:PROCsocket_check(sock%,"GetPeerName"):!socktemp%=16:SYS&4120E,sock%(sock%)!0,sockaddr%,socktemp%:SYS&66001,0,sockaddr%+4,4,2TO,r1;flags%:IF(flags%AND1)=0ANDr1<>0THEN=FNstring0(!r1) 4747=STR$(sockaddr%?4)+"."+STR$(sockaddr%?5)+"."+STR$(sockaddr%?6)+"."+STR$(sockaddr%?7) 4748DEFFNinet_getservbyname(name$,proto$):LOCALservent%,port%:IFVAL(name$)<>0THEN=VAL(name$) 4749SYS&46441,name$,proto$TO,servent%:IFservent%=0THENport%=0ELSEport%=servent%!8 4750=port% 4751DEFFNinet_gethostbyname(host$):LOCALptr%,flags%:SYS&66000,0,host$TO,ptr%;flags%:IFptr%=0OR(flags%AND1)=1THEN=0 4752=!!(ptr%!16) 4753DEFPROCinet_killmtquery(query%):LOCALl%,p%,n%:SYS"XDNSResolver_Dispose",query%:p%=mtchain%:IFp%!4=query%THEN 4754mtchain%=!p%:PROCrelease(p%) 4755ELSE:l%=p%:p%=!p%:WHILEp%<>0:n%=!p%:IFp%!4=query%THENPROCrelease(p%):!l%=n% 4756p%=n%:ENDWHILE 4757ENDIF:ENDPROC
�>!RunImage 0�Produced by BasCompress v1.71 (19 Sep 1996) ftesting%=�:�initlibrary:�initheap:�initsockets:��closemessages:�eerror:�testing%=���("Spool"):�� �testing%=��*Spool Spooled �testing%=���� aAppname$="NetOXO"::::Appdir$=�systemvar(Appname$+"$Dir"):�initwimp:�initprog:quit%=�:��error Nȕquit%=�:�Poll:�:ș&400DD:�closemessages:�closesockets:�testing%=��*SPOOL � +��Poll:ș&400C7,0,b%�reason%:Ȏreason%� �0:�checksockets �2:ș&400C5,,b% C�3:�!b%=sendwin%��closesend��!b%=msgwin%��closemsg�ș&400C6,,b% $�6:�mouseclick(b%!8,b%!&C,b%!16) #�8:�processkey(b%!0,b%!4,b%!24) �9:�menuchoice �17,18:�receive(b%!16) �19:�receiveack(b%!16) �:� %��mouseclick(but,win,icon):Ȏwin� �-2:Ȏbut� �2:�ibmenu �1,4:�connect$=""� ;�openwincentre(connectwin%):�setcaretend(connectwin%,1) �:�openwin(oxowin%) � � �infobox%:Ȏicon� �1:�showfree :�3:�FetchPage("http://users.essex.ac.uk/users/gerph/") T�4:�FetchPage("http://users.essex.ac.uk/users/gerph/acorn/internet.html#netoxo") � �connectwin%:Ȏicon� !�4:�doconnect "� #�oxowin%:Ȏbut� $�1,4:Ȏicon� %�16:�opensend &�clickonicon(icon) '� (�2:�menu(mainmenu%,-1,-1) )� *�sendwin%:Ȏicon� +�1:�dosend ,�2:�closesend -� .�msgwin%:Ȏicon� /�1:�closemsg 0�2:�closemsg:�opensend 1� 2�:� 38��processkey(win,icon,key):�keydone:keydone=�:Ȏwin� 44�connectwin%:�icon=3�key=&D��doconnect:keydone=� 5'�sendwin%:�key=&D��dosend:keydone=� 6�key=27��closesend 7/�msgwin%:�key=&D�key=27��closemsg:keydone=� 8'�key=82�key=&72��closemsg:�opensend 9�:�keydone�ș&400DC,key :� ;a��menuchoice:ș&400CF,,message_buffer%:mbut%=message_buffer%!8:m$=�decodemenu(curmenu%):Ȏm$� <�"Quit":quit%=� =�"Clear board":�won$<>""� >�clearboard:�connect$<>""� ?&?b%=67:�socket_senddata(sock,b%,3) @� A� B �"Disconnect":�connect$<>""� C2?b%=81:�socket_senddata(sock,b%,3):�disconnect D� E�"Message...":�opensend F,�:�(mbut%�1)=1��recreatemenu�curmenu%=-1 G� H��receive(mess):Ȏmess� I�0:quit%=�*2 J �3,5:type=b%!40:�type=&8888� KKb%!&C=b%!8:b%!16=4:ș&400E7,17,b%,b%!4:�loadfile(�string0(b%+44),b%!40) L� M!�&502:�Help(b%!32,b%!36,b%!4) N�&A:�desktopsave(b%!20) O+�&4A266:ș8,6,"<Wimp$ScrapDir>."+�b%!20 P�:� Q��receiveack(mess):Ȏmess� R5�&4A265:�#(b%!28):ș8,6,"<Wimp$ScrapDir>."+�b%!20 S�:� TB��desktopsave(file%):�:��b%!&C=b%!8:ș&400E7,19,b%,b%!4:��:� U�#file%,"Run "+Appdir$:� V"��loadfile(file$,type):Ȏtype� W�:� X���initwimp:�messagelist%256::�notemessage(&502):�notemessage(&A):�notemessage(0):ș&400C0,310,&4B534154,Appname$,messagelist%�wimpversion,handle:indl%=&400:menul%=&400:�b%&800,ind%indl%,menu%menul%,wspc%&800:curmenu%=-1:�openmessages Y�sprites%=�loadsprites(Appdir$+".Sprites"):infobox%=�loadtemplate("Info",1):oxowin%=�loadtemplate("oxo",sprites%):connectwin%=�loadtemplate("connect",1):sendwin%=�loadtemplate("send",1):msgwin%=�loadtemplate("message",1) Z��seticontext(infobox%,1,Appname$):�seticontext(infobox%,2,"O's and X's (port xxxx)"):�seticontext(infobox%,4,"1.04 (25 Jan 1997)"):ibhandle=�CreateIconBarIcon("!"+Appname$,"",1):mainmenu%=�createmenu(Appname$+"|Clear board|Disconnect|Message...") [\ibmenu%=�createmenu(Appname$+"|Info]>infobox%|Quit"):iboptions%=options%:�lastcaret%24:� \���initprog:listener=�socket_createinet:port=�socket_findlisten(listener,0,&7B8,&F):�seticontext(infobox%,2,�msgtext(">Info:"+�port)):�board$(3,3):player$="x":won$="":connect$="":weare$="":wewon=-1:theywon=-1:state=0:�clearboard:� ]4��Help(win,icon,to):�+1:�readhelp(win,icon,to):� ^� infobox%,">HInfobox" _� 3,">HInfobox3" `� -2,">HIconbar" a� -1,-1 b� -2,-2,-2,-2 c5��FetchPage(f$):�systemvar("Wimp$ScrapDir")<>""� d�f%=0:ȕ�filelength("<Wimp$ScrapDir>."+�f%)<>-1:f%+=1:�:o%=�("<Wimp$ScrapDir>."+�f%):�#o%,f$:�#o%=0:!b%=32:b%!8=0:b%!&C=0:b%!16=&4A265:b%!20=f%:b%!24=(1<<22):b%!28=o%:ș&400E7,18,b%,0 e�:� fs��clearboard:�I=4�&C:�seticonvalid(oxowin%,I,""):�:board$()="":won$="":�updatetitle:�menushade(mainmenu%,0,1):� g��updatetitle:�weare$=""� h)�windowtitle(oxowin%,">NotConnected") i�:�weare$=player$� j(�windowtitle(oxowin%,">Us:"+player$) k,�:�windowtitle(oxowin%,">Them:"+player$) l� m�:� n0��updatescore:�wewon=-1�w$="-"�w$=��wewon,3) o&�theywon=-1�t$="-"�t$=��theywon,3) p=�seticontext(oxowin%,&F,w$):�seticontext(oxowin%,17,t$):� q{��placepiece(x,y,c$):�I:I=x+y*3:board$(x,y)=�c$+" ",1):�seticonvalid(oxowin%,I,"S"+board$(x,y)):won$=�winner:�won$<>""� rȎwon$� sB�weare$:reply=�errorbox(">Message",">WinUs:"+won$,17):wewon+=1 t2�"n":reply=�errorbox(">Message",">WinNone",17) u@:reply=�errorbox(">Message",">WinThem:"+won$,17):theywon+=1 v,�:�updatescore:�menushade(mainmenu%,0,0) w�:Ȏplayer$� x�"x":player$="o" y�"o":player$="x" z�:�updatetitle:� {2��clickonicon(icon):�icon>=4�icon<=&C�won$=""� |�player$=weare$� }6x=((icon-4)�3)+1:y=((icon-4)�3)+1:�board$(x,y)=""� ~M?b%=77:b%?1=x:b%?2=y:�socket_senddata(sock,b%,3):�placepiece(x,y,player$) � �� ��:� �zݤwinner:�x,y,w$,a$:w$="":a$="":�x=1�3:�board$(x,1)=board$(x,2)�board$(x,2)=board$(x,3)�board$(x,1)<>""�w$=board$(x,3) ��a$+=board$(x,1)+board$(x,2)+board$(x,3):�:�y=1�3:�board$(1,y)=board$(2,y)�board$(2,y)=board$(3,y)�board$(1,y)<>""�w$=board$(3,y) �U�:�board$(1,1)=board$(2,2)�board$(2,2)=board$(3,3)�board$(1,1)<>""�w$=board$(3,3) �S�board$(3,1)=board$(2,2)�board$(2,2)=board$(1,3)�board$(3,1)<>""�w$=board$(3,1) ��w$=""��(a$)=9�w$="n" �=w$ � ��checksockets:�connect$=""� �,sock=�socket_accept(listener):�sock<>-1� �Tconnect$=�socket_getpeername(sock):�seticontext(oxowin%,&D,connect$):�reset("x") �� �(�:s=�socket_accept(listener):�s<>-1� �D�socket_sendline(s,"All connections are taken"):�socket_close(s) � �:�socket_inbuffer(sock)>0� �Jbuf%=�claim(&800):len=�socket_readdata(sock,buf%):type=buf%?0:Ȏstate� �'�0:�type=&6F�buf%?1=&78�buf%?2=&6F� �state=1:�openwin(oxowin%) �O�:�socket_sendline(sock,"Invalid response"):�socket_close(sock):connect$="" �� ��1:Ȏ�(type)� �+�"M":�placepiece(buf%?1,buf%?2,player$) ��"C":�clearboard �?�"Q":reply=�errorbox(">Message",">GameOver",18):�disconnect �P�"T":buf%?len=0:m$=��string0(buf%+1),39):�seticontext(msgwin%,0,m$):�openmsg �):�socket_sendline(sock,"Imposter !") �� ��:�release(buf%) ��:�socket_eof(sock)� �8�disconnect:reply=�errorbox(">Message",">Closed",18) �� �� ��:� ����doconnect:host$=�geticontext(connectwin%,1):port$=�geticontext(connectwin%,3):ip=�inet_gethostbyname(host$):port=�inet_getservbyname(port$,"tcp"):sock=�socket_createinet:ok=�socket_connect(sock,ip,port):�ok� �C�socket_close(sock):reply=�errorbox(">Message",">NoConnect",18) �V�:connect$=�socket_getpeername(sock):�seticontext(oxowin%,&D,connect$):�reset("o") ��:� ����disconnect:�socket_close(sock):connect$="":weare$="":�updatetitle:�closemsg:�closesend:�menushade(mainmenu%,0,1):�menushade(mainmenu%,1,1):�menushade(mainmenu%,2,1):�iconshade(oxowin%,16,1):� ����reset(x$):?b%=&6F:b%?1=&78:b%?2=&6F:�socket_senddata(sock,b%,3):weare$=x$:player$="x":�clearboard:wewon=0:theywon=0:state=0:�updatetitle:�updatescore:�closewin(connectwin%):�closewin(oxowin%):�menushade(mainmenu%,0,1):�menushade(mainmenu%,1,0) �8�menushade(mainmenu%,2,0):�iconshade(oxowin%,16,0):� �p��dosend:�closesend:m$=�geticontext(sendwin%,0):$(b%)="T":$(b%+1)=m$+�&D:�socket_senddata(sock,b%,3+�(m$)):� �;��opensend:�getcaretpos(win,icon,chars):�win<>sendwin%� �ș&400D3,,lastcaret% �R�:�seticontext(sendwin%,0,""):�openwin(sendwin%):�setcaretpos(sendwin%,0,-1):� �;��closesend:�getcaretpos(win,icon,chars):�win=sendwin%� �]ș&600D2,lastcaret%!0,lastcaret%!4,lastcaret%!8,lastcaret%!&C,lastcaret%!16,lastcaret%!20 ��:�closewin(sendwin%):� �9��openmsg:�getcaretpos(win,icon,chars):�win<>msgwin%� �ș&400D3,,lastcaret% �5�:�openwin(msgwin%):�setcaretpos(msgwin%,-1,-1):� ���closemsg:�win=msgwin%� �]ș&600D2,lastcaret%!0,lastcaret%!4,lastcaret%!8,lastcaret%!&C,lastcaret%!16,lastcaret%!20 ��:�closewin(msgwin%):� ����initheap:ș81�h_page:h_size=h_page:h_start=�:h_rsize=2:h_full=0:ș&400EC,-1,-1�h_appbase:ș&400EC,h_appbase+h_size,-1:ș29,0,h_start,,h_size:ș29,2,h_start,,4*h_rsize+4�,,h_reloc:h_reloc+=4:h_reloc!-4=&434F4C52:�I=0�h_rsize*4-4�4:h_reloc!I=-1:�:� �?��heap_free(�max,�free):ș29,1,h_start�,,,free:max=h_size:� �fݤenlargeheap:�ok,new:ș&600EC,h_appbase+h_size+h_page,-1�new;ok:�(ok�1)=1�new=h_appbase+h_size�=� �,h_size+=h_page:ș29,5,h_start,,h_page:=� �Cݤclaim(size):�loc,big,ok,r:ok=�:�size<0�r=�:size=�(size)+4�r=� �Vș29,1,h_start�,,big:ȕsize>big�ok:ok=�enlargeheap:ș29,1,h_start�,,big:�:�ok�=-1 �3ș&2001D,2,h_start,,size�,,loc;ok:�(ok�1)=1�=-1 ��r� �*!loc=&434F4C52:loc+=4:�h_full=h_rsize� ��h_reloc=�extend(h_reloc,4*16):h_rsize+=16:�(h_reloc�1)=0��r=h_full�h_rsize-1:h_reloc!(r*4)=-1:�h_reloc-=1:ș29,3,h_start,loc-4:=-1 �&�:h_reloc!(h_full*4)=loc:h_full+=1 � �:=loc �!��release(�loc):�full:�loc>0� ��loc>h_start+h_size� �ș30,7,,loc ��:�loc!-4=&434F4C52� �full=0:ȕfull<h_full�h_reloc!(full*4)<>loc:full+=1:�:�full=h_full��&802,"Attempt to release unknown relocatable heap block" �Nloc-=4:h_full-=1:h_reloc!(full*4)=h_reloc!(h_full*4):h_reloc!(h_full*4)=-1 ��:ș29,3,h_start,loc ��:loc=-1 ��:� �rݤextend(loc,size):�new,ok,full:full=�:�loc!-4<>&434F4C52��&802,"Attempt to extend non-relocatable heap block" �J�:ș&2001D,4,h_start,loc-4,size�k,,new;ok:�(ok�1)=1�full=��enlargeheap ��(ok�1)=0�full:�full� � new=loc-3 ��:�loc<>h_reloc� �lfull=0:ȕfull<h_full�h_reloc!(full*4)<>loc:full+=1:�:�full=h_full��&802,"Unknown relocatable heap block" �h_reloc!(full*4)=new+4 �� ��:=new+4 �]��initlibrary:�message_buffer%&400:rmafontarea=-2:msgbuffer%=-1:msgbuffer2%=-1:ftblk=-2:� �&��notemessage(n)messagelist%!0=n:� ��ݤloadtemplate(n$,sprblk%)�tsize%,blk%,ok%:ș&400D9,,Appdir$+".Templates":ș&400DB,,0,,,,n$,0�,,tsize%:�blk%tsize%:ș&400DB,,wspc%,blk%,blk%+tsize%,-1,n$,0�,,,,,,ok%:ș&400DA:�ok%=0��&803,"Template file "+n$+" not found" �/wspc%!64=sprblk%:ș&400C1,,wspc%�blk%:=blk% �=ݤloadsprites(file$)�len%,o%,sprblk%:o%=�(file$):�o%=0�=1 �mlen%=�#o%+16:�#o%:�sprblk%len%:!sprblk%=len%:sprblk%!8=0:ș46,265,sprblk%:ș46,266,sprblk%,file$:=sprblk% �nݤsystemvar(Var$)�len:ș&20023,Var$,message_buffer%,&FF,0,3�,,len:message_buffer%?len=&D:=$message_buffer% �O��eerror:�:��:�closemessages:�4:��0,�$+" at line "+Þ+" in error handler" ��mess$="Internal error : ("+Þ+") "+�$:�("Set Error$ "+mess$):�("Set Error$Task Not known"):message_buffer%!0=�:$(message_buffer%+4)=mess$+" whilst initialising"+�0:��:Appname$="uninitialised task" �Oa$=Appname$:��:�closemessages:�4:��0,�$+" at line "+Þ+" in error handler" �)ș&400DF,message_buffer%,9,Appname$:� �c��error�errcode,mess$,reply%:�:��:�closemessages:�4:��0,�$+" at line "+Þ+" in error handler" �ș6,&7C:�>&7FF��<&803� �Aerrcode=�-&7FF:mess$=�$:�errcode=3�mess$+=" (Cancel to Quit)" �Hreply%=�errorbox(Appname$,mess$,errcode):�reply%=2�errcode=3�quit%=� �l�:mess$="Internal error : ("+Þ+") "+�$+" Cancel to Quit":reply%=�errorbox(Appname$,mess$,3):�reply%<>1� �@quit%=�:�("Set Error$ "+mess$):�("Set Error$Task "+Appname$) �&�:�(-1)��(-2)��(-17)��("Spool"):� ��:� ��ݤerrorbox(title$,message$,button%)title$=�msgtext(title$):message$=�msgtext(message$):$(message_buffer%+4)=message$:!message_buffer%=0:ș&400DF,message_buffer%,button%,title$�,reply%:=reply% �I��showfree:�:��:�=&803��seticontext(infobox%,4,"Old template"):�� ���seticontext(infobox%,5,"Program"):�seticontext(infobox%,1,�(�P-�)+" bytes, "+�((�P-�)�&400)+"K"):�seticontext(infobox%,6,"Vars"):�seticontext(infobox%,2,�(�-�)+" bytes, "+�((�-�)�&400)+"K"):�seticontext(infobox%,7,"Free") ���seticontext(infobox%,3,�(�-�)+" bytes, "+�((�-�)�&400)+"K"):�heap_free(heapsize,heapfree):�seticontext(infobox%,8,"Heap"):�seticontext(infobox%,4,�(heapsize-heapfree)+" bytes, "+�((heapsize-heapfree)�&400)+"K of "+�(heapsize�&400)+"K"):� ��ݤcreatemenu(A$):�pointer,p2,p3,l,lk,O$,C$,oind%,oindl%,ks%,k$,S$:oind%=ind%:oindl%=indl%:ks%=�:pointer=menu%:l=0:A$+="|":�menuputs(�mget(A$,C$)):�menuputw(&70207):p2=menu%:�menuputw(&80):�menuputw(44):�menuputw(0):options%=0:S$=A$:lk=0:� ��ks%=��ks%=�*2 �f�:O$=�mget(A$,C$):options%=options%+1:flags=�mdecode(C$,p3,s$,k$)+((-(A$=""))<<7):�ks%=�*2�k$<>""� �>O$+=�l+lk-(�(O$)+�(k$))+1," "):�k$,1)="�"��k$,1,1)=�(&8B) � O$+=k$ �&�:�k$<>""�ks%=�:�lk<�(k$)�lk=�(k$) �\�:flags2=&7000021+((-(�(O$)>&B))<<8)+(1<<&E)*(flags�256):�(flags�4)<>0�flags2=flags2�256 �@�menuputw(flags�&FF):�menuputw(p3):�(O$)>l�ks%<>�*2�l=�(O$) Ț�menuputw(flags2):�menustring(O$,s$,(flags�4)):�A$="":�ks%=�*2�l+=lk+1��ks%=��ind%=oind%:indl%=oindl%:menul%+=menu%-p2-&C:menu%=p2+&C:options%=0:A$=S$ � �ks%<>�:!p2=l*16+16:=pointer �4��menustring(T$,s$,flag)�T$,1)="�"�T$=�(�T$,2)) ��(T$)<&C�s$=""�flag=0� ��menuputs(T$) �'�:�menuputw(�indirect(T$)):�s$<>""� �Fmenu%!-8=menu%!-8�&803:�lower(s$),2)="sm"�menu%!-8=menu%!-8�&800 � �menuputw(�indirect("S"+s$)) ��:�menuputw(-1) ��:�menuputw(�(T$)+1) ��:� �Nݤmget(�A$,�C$):�B$:B$=�A$,�A$,"|")-1):A$=�A$,�(B$)+2):�B$,"]")<1�B$+="]" �7C$=�B$,�B$,"]")+1):B$=�B$,�B$,"]")-1):=�msgtext(B$) �7��menuputs(T$)�(T$)>&B��&803,"Menu entry too long" �Q$menu%=T$:menu%+=&C:menul%-=&C:�menul%<=4��&803,"Not enough memory for menus" �� �^��menuputw(W%):!menu%=W%:menu%+=4:menul%-=4:�menul%<=4��&803,"Not enough memory for menus" �� �cݤmdecode(A$,�p,�s$,�k$):�B$,C$,V:p=-1:s$="":k$="":A$=A$+",":ȕA$<>"":B$=�A$,1):A$=�A$,2):ȎB$� ��"T":V=V�1 ��"D":V=V�2 ��"W":V=V�4 ��"M":V=V�8 ��"S":V=V�256 �.�"K":k$=�A$,�A$,",")-1):A$=�A$,�A$,",")+1) �0�">":p=�(�A$,�A$,",")-1)):A$=�A$,�A$,",")+1) �2�"}":s$=�A$,�A$,",")-1)+" ":A$=�A$,�A$,",")+1) � �:�:=V �Rݤindirect(a$)�i:i=ind%:�(a$)>indl%-1��&803,"Not enough room for indirection" �,$ind%=a$:ind%+=�(a$)+1:indl%-=�(a$)+1:=i ���ibmenu:ș&400CF,,b%:curmenu%=ibmenu%:cmenux%=b%!0-64:cmenuy%=96+44*iboptions%:ș&400D4,,ibmenu%,b%!0-64,96+44*iboptions%:� ���menu(menu%,x,y):�x=-1� �ș&400CF,,b%:x=b%!0:y=b%!4 �J�:curmenu%=menu%:cmenux%=x-64:cmenuy%=y+20:ș&400D4,,menu%,x-64,y+20:� �7��recreatemenu:ș&400D4,,curmenu%,cmenux%,cmenuy%:� �?��menushade(menu,option,toggle)menu+=option*24+36:Ȏtoggle� ��0:!menu=!menu��(1<<22) ��-1,1:!menu=!menu�(1<<22) ��2:!menu=!menu�(1<<22) ��:� �ݤdecodemenu(menu%)�cp%,ptr,b$,c$:cp%=menu%:ptr=0:ȕ(b%!ptr>-1�cp%<>rmafontarea):cp%=cp%!(32+(b%!ptr)*24):ptr+=4:�:�cp%=rmafontarea�b%!ptr<>0� �3ș&400A0,,rmafontarea,b%+ptr,�&FF,�0),&FF�,,,m$ ��:ș&400D5,,menu%,b%,�&FF,�0),&FF�,,,m$:b$="":�:c$=�m$,�m$+".",".")-1):m$=�m$,�(c$)+2):c$=�c$,�c$+" ^"," ^")-1):c$=�c$,�c$+" "+�&8B," "+�&8B)-1):Ȏ�c$,3)� �b�"Esc","Del","Ins","End","Hom","Cpy","F10","F11","F12","F13","Prt","Tab","Ret":c$=�c$,�(c$)-4) �?�:�c$,�(c$)-2,2)=" F"���c$)="0"��(�c$))<>0�c$=�c$,�(c$)-3) �Bȕ�c$)=" ":c$=�c$):�:b$+=c$+".":�m$=""�m$=".":�m$="."�b$+=".." �m$=�b$) � �:=m$ �,��closewin(win%):!b%=win%:ș&400C6,,b%:� �A��openwin(win%):!b%=win%:ș&400CB,,b%:b%!28=-1:ș&400C5,,b%:� ����openwincentre(win%)�width,height,top,right,x,y:!b%=4:b%!4=5:b%!8=&B:b%!&C=&C:b%!16=-1:ș49,b%,b%+20:right=b%!28+1<<b%!20:top=b%!32+1<<b%!24:!b%=win%:ș&400CB,,b%:width=b%!4-b%!&C:height=b%!16-b%!8:x=(right-width)/2+width:y=(top-height)/2+height �Fb%!4=x:b%!8=y-height:b%!&C=x-width:b%!16=y:b%!28=-1:ș&400C5,,b%:� �w��windowtitle(win%,title$):�loc%,a$:b%!0=win%:ș&400CC,,b%+1:loc%=!(b%+76):a$=�msgtext(title$):�string0(loc%)<>a$� �K$loc%=a$:b%!32=win%:ș&400E0,,b%+32:ș&400D1,-1,b%!36,b%!16,b%!44,b%!48 ��:� ��ݤCreateIconBarIcon(Spr$,title$,pos%)�ic%,w%,m%,e%:title$=�msgtext(title$):b%!0=-(�(pos%)�&FF):b%!4=0:b%!8=-16:b%!&C=&C+16*�(title$):b%!16=88:�b%!&C<&C+16*4�b%!&C=&C+16*4 �title$<>""� qb%!20=(1<<28)+(7<<24)+(3<<&C)+(&B)+(1<<8):b%!24=�indirect(title$):b%!28=�indirect("S"+Spr$):b%!32=�(title$)+1 6�:b%!20=(1<<28)+(7<<24)+(3<<&C)+(26):$(b%+24)=Spr$ f�:ș&400E9,296,,�Spr$,�Spr$+",",","))�,,,w%,m%:ș&20035,m%,4�,,e%:w%=(w%+1)<<e%:�w%>b%!&C�b%!&C=w% M�(�(pos%)�&FF)=3�(�(pos%)�&FF)=4�pos%=�(pos%)>>8�pos%=(�(pos%)�&FF00)<<16 ș&400C2,pos%,b%�ic%:=ic% D��iconshade(win%,icon%,type%):�seticonbit(win%,icon%,22,type%):� 7��seticonbit(win%,icon%,bit%,type%):�s%,t%:Ȏtype%� �0:s%=0<<bit%:t%=1<<bit% �-1,1:s%=1<<bit%:t%=1<<bit% �2:s%=1<<bit%:t%=0<<bit% :�:b%!0=win%:b%!4=icon%:b%!8=s%:b%!&C=t%:ș&400CD,,b%:� r��redrawicon(win%,icon%):win%+=win%=-1:!b%=win%:b%!4=icon%:ș&400CE,,b%:ș&400D1,win%,b%!8,b%!&C,b%!16,b%!20:� aݤgeticontext(win%,icon%):b%!0=win%:b%!4=icon%:ș&400CE,,b%:�((b%!24)�256)=0�=�string0(b%+28) =�string0(b%!28) ���seticontext(win%,icon%,text$)�i%:text$=�msgtext(text$):ș&400D3,,b%:i%=(!b%=win%)�(icon%=b%!4):b%!0=win%:b%!4=icon%:ș&400CE,,b%:�((b%!24)�256)=0��&803,"Icon isn't indirected (#"+�icon%+")" �string0(b%!28)<>text$� O�(text$)<b%!36�$(b%!28)=text$��&803,"Text too long for icon (#"+�icon%+")" i!b%=win%:b%!4=icon%:b%!8=0:b%!&C=0:ș&400CD,,b%:�i%�(b%!24�1)=1�ș&400D2,win%,icon%,-1,-1,-1,�(text$) �:� ���seticonvalid(win%,icon%,text$):b%!0=win%:b%!4=icon%:ș&400CE,,b%:�((b%!24)�256)=0��&803,"Icon isn't indirected (#"+�icon%+")" ,$(b%!32)=text$:�redrawicon(win%,icon%):� p��readhelp(win,icon,to):�lwin,val,help$,found,a$,m$,m2$,mh$:found=�:lwin=-1:�:�val,help$:�val>(1<<16)�val<0� �lwin=win� val=icon:help$="":m2$=m$ �:lwin=val:m$=help$ � �:�val=icon�lwin=win� �icon=-1�help$=""� #�sendhelp(�msgtext(m$)+"|M",to) 6�:m$=�msgtext(m$):�m$,"|M")>0�m$=�m$,�m$,"|M")-1) 3�sendhelp(�msgtext(m$)+"|M"+�msgtext(help$),to) �:found=� !"�:�help$="-1"�found=�:�found� "|!message_buffer%=-1:message_buffer%!4=-1:message_buffer%!8=-1:ș&400F4,1,message_buffer%,win,icon:�!message_buffer%<>-1� #�val=b%:b%=message_buffer%:mh$=�decodemenu(curmenu%):b%=val:m$=mh$:ȕ�m$," ")>0:�m$,�m$," "),1)="_":�:help$=�msgtoken("HM"+m$):�help$<>"HM"+m$� $�sendhelp(help$,to) %>�:�:�m$,val,help$,help$:��(m$)=curmenu%�m$="-2":�m$<>"-2"� &�val>-1� '�sendhelp(help$,to):found=� (,�:�:�lwin,m$,val,help$:�(m$)=0�m$<>"0"� )'�mh$=m$��sendhelp(help$,to):found=� *L�:�lwin=message_buffer%!0��(m$)=message_buffer%!4�val=message_buffer%!8� +�sendhelp(help$,to):found=� ,� -!�:�found=��lwin=-2�lwin>&8000 .� /� 0� 1� 2�:� 3J��sendhelp(help$,to)help$=�msgtext(help$):��help$,2)<>"|M"�help$+="|M" 4}�b$,c$:help$=�substvars(help$):ȕ�help$,"|M")>0:b$=�help$,�help$,"|M")-1):help$=�help$,�(b$)+3):�"!.?",�b$,1))=0�b$+="." 5ic$+=b$+"|M":�:b%!&C=b%!8:b%!4=to:b%!16=&503:$(b%+20)=c$+�0:b%!0=20+(�(c$)+4)�-4:ș&400E7,17,b%,b%!4:� 6H��openmessages�f,l:�msgbuffer%<>-1��&803,"Message file already open" 7Sș&41500,,Appdir$+".Messages"�f,,l:�(f�1)=1�msgbuffer2%=0�msgbuffer2%=�claim(l) 8E�msgbuffer2%=-1��&803,"No room for secondary MessageTrans buffer" 9nmsgbuffer%=�claim(16):�msgbuffer%=-1��release(msgbuffer2%):�&803,"No room for primary MessageTrans buffer" :9ș&41501,msgbuffer%,Appdir$+".Messages",msgbuffer2%:� ;/��closemessages:�:��:�4:�:�" at ";�:G=�:� <�msgbuffer%>-1� =Bș&61504,msgbuffer%:�release(msgbuffer%):�release(msgbuffer2%) >�:� ?;ݤmsgtoken(t$)�s1$,s2$,s3$,a$,len%,f:�msgbuffer%=-1�=t$ @Wa$=�t$,�t$+":",":")+1):t$=�t$,�t$+":",":")-1):s1$=�a$,�a$+":",":")-1):�s1$,1)="|"� As1$=�a$,2):s2$="":s3$="" B_�:a$=�a$,�(s1$)+2):s2$=�a$,�a$+":",":")-1):�s2$,1)="|"�s2$=�a$,2):s3$=""�s3$=�a$,�(s2$)+2) Ck�:ș&61502,msgbuffer%,t$,message_buffer%,256,s1$,s2$,s3$�,,,len%;f:�(f�1)=1�=t$�message_buffer%?len%=&D D!=�substvars($message_buffer%) E2ݤmsgtext(a$):�a$,1)=">"�a$=�msgtoken(�a$,2)) F=a$ Gݤstring0(a%)�a$:�a%=0�="" H/ȕ?a%>31��(a$)<&FF:a$=a$+�?a%:a%=a%+1:�:=a$ INݤlower(a$)�c$,b$,I:�I=1��(a$):c$=�a$,I,1):�c$>="A"�c$<="Z"�c$=�(�(c$)+32) Jb$+=c$:�:=b$ K%ݤsubstvars(a$):�b$,d$:�:��:=a$ L[ȕ�a$,"�")>0:b$=�a$,�a$,"�")+1):b$=�b$,�b$,"�")-1):d$=b$:��d$,1)<>"$"�d$="STR$("+d$+")" M8a$=�a$,�a$,"�")-1)+�(d$)+�a$,�a$,"�")+�(b$)+2):�:=a$ NOݤfilelength(f$)�len%,ex,f:ș&20008,5,f$�ex,,,,len%;f:�ex=0�(f�1)=1�len%=-1 O =len% P4ݤleafname(f$)�r$:�f$,":")>0�f$=�f$,�f$,":")+1) QȎ�f$,".")� R�0:r$=f$ S&r$=�leafname(�f$,�(f$)-�f$,"."))) T �:=r$ UN��setcaretend(win,icon):�setcaretpos(win,icon,�(�geticontext(win,icon))):� VB��setcaretpos(win,icon,chars):ș&400D2,win,icon,0,0,-1,chars:� WQ��getcaretpos(�win,�icon,�chars):ș&400D3,,b%:win=!b%:icon=b%!4:chars=b%!20:� X���initsockets:ș&20039,,"Socket_Creat"�;flags%:�(flags%�1)�reply=�errorbox("SocketLib","This application requires an internet suite to be installed.",2):� YG*RMEnsure InetServices 1.07 RMLoad System:Modules.Network.IServices Z:*RMEnsure InetServices 1.07 Set NoIServicesModule True [��systemvar("NoIServicesModule")="True"��("Unset NoIServicesModule"):reply=�errorbox("SocketLib","This application requires a later version of the IServices module - this can be obtained with JFShared 2.42.",2):� \��sock%(256),sockaddr%16,socktemp%256:sock%()=-1:sockbuflen%=&400*2:sockline%=�claim(sockbuflen%):ș&41218�socktsize%:mtchain%=0:� ]^ݤsocket_findhandle:�sock%,o%:sock%=-1:�sock%+=1:�sock%(sock%)=-1�sock%=256:�sock%=256�=-1 ^/sock%(sock%)=�claim(16):�sock%(sock%)<0�=-1 _+�o%=0�16-4�4:sock%(sock%)!o%=0:�:=sock% `Eݤsocket_createinet:�sock%:sock%=�socket_findhandle:�sock%=-1�=-1 aOș&41200,2,1,0�sock%(sock%)!0:�sock%(sock%)!0=-1��release(sock%(sock%)):=-1 b =sock% cP��socket_check(sock%,r$):�sock%<0�sock%>256��&805,r$+": Socket out of range" d7�sock%(sock%)<0��&805,r$+": Socket has been closed" e� f�ݤsocket_findlisten(sock%,ip%,port%,limit%):�flags%,r0:port%=port%�&FFFF:�socket_check(sock%,"FindListen"):�:sockaddr%!0=2�((port%�256)<<16)�((port%�256)<<24):sockaddr%!4=ip%:sockaddr%!8=0:sockaddr%!&C=0 gSș&61201,sock%(sock%)!0,sockaddr%,16�r0;flags%:�(flags%�1)=1�port%+=1:limit%-=1 h(�(flags%�1)=0�limit%<0:�limit%<0�=-1 i�!socktemp%=-1:ș&61212,sock%(sock%)!0,-&7ffb9982,socktemp%:ș&61202,sock%(sock%)!0,5:sock%(sock%)!&C=(sock%(sock%)!&C��1)�1:=port% j�ݤsocket_connect(sock%,ip%,port%):�flags%,r0:port%=port%�&FFFF:�socket_check(sock%,"Connect"):sockaddr%!0=2�((port%�256)<<16)�((port%�256)<<24):sockaddr%!4=ip%:sockaddr%!8=0:sockaddr%!&C=0:ș&61204,sock%(sock%)!0,sockaddr%,16�r0;flags% k�(flags%�1)=1�=� lf!socktemp%=-1:ș&61212,sock%(sock%)!0,-&7ffb9982,socktemp%:sock%(sock%)!&C=(sock%(sock%)!&C��1):=� mmݤsocket_accept(main%):�socket_check(main%,"Accept"):�skt%,sock%,O:sock%=�socket_findhandle:�sock%=-1�=-1 nz!socktemp%=16:ș&61203,sock%(main%)!0,sockaddr%,socktemp%�skt%;flags%:�(flags%�1)=1�skt%=-1��release(sock%(sock%)):=-1 o]sock%(sock%)!0=skt%:�O=4�16-4�4:sock%(sock%)!O=sock%(main%)!O:�:�((sock%(main%)!&C)�2)=2� p9sock%(sock%)!4=�claim(sockbuflen%):�sock%(sock%)!4<0� q�release(sock%(sock%)):=-1 r�:sock%(sock%)!8=0 s�:=sock% t��closesockets:�I%,s%:�I%=0�256:s%=I%:�socket_close(s%):�:�release(sockline%):ȕmtchain%<>0:�inet_killmtquery(mtchain%):�:� u0��socket_close(�sock%):�sock%>=0�sock%<=256� v�sock%(sock%)>-1� wgș&6120B,sock%(sock%)!0,2:ș&61210,sock%(sock%)!0:�((sock%(sock%)!&C)�2)=2��release(sock%(sock%)!4) x�release(sock%(sock%)) y� z�:sock%=-1:� {tݤsocket_inbuffer(sock%):�socket_check(sock%,"InBuffer"):ș&61212,sock%(sock%)!0,&4004667f,socktemp%:=!socktemp% |[ݤsocket_eof(sock%):�socket_check(sock%,"Eof"):�ok,f%:ok=�socket_ready(sock%,�):�ok<>0� }Fș&61205,sock%(sock%)!0,socktemp%,1,2+&80�ok;f%:ok=(ok=0)�(f%�1)=1 ~ �:=ok �ݤsocket_ready(sock%,read%):�socket_check(sock%,"Ready"):�I,fd%,b%,ok%,r%,w%:fd%=sock%(sock%)!0:b%=socktemp%:�I=0�((socktsize%/8+3)��3)-1�4:socktemp%!I=0:�:ȕfd%>=32:b%+=4:fd%-=32:�:!b%=!b%�(1<<fd%):b%=socktemp%+I:!b%=0:b%!4=0 �$�read%�r%=socktemp%�w%=socktemp% �+ș&41211,socktsize%,r%,w%,0,b%�ok%:=ok% ��ݤsocket_readdata(sock%,�start%):�read%:read%=0:�socket_check(sock%,"ReadData"):�((sock%(sock%)!&C)�2)=2�start%=sock%(sock%)!4 �r�start%<&8000��&805,"ReadData: Stupid address for socket_readdata ("+�~start%+"), flags = "+�(sock%(sock%)!&C) ��socket_inbuffer(sock%)>0� �4ș&41213,sock%(sock%)!0,start%,sockbuflen%�read% ��:=read% ����socket_sendline(sock%,m$):�r0,flags%:�socket_check(sock%,"SendLine"):$(socktemp%)=m$+�&A:ș&61214,sock%(sock%)!0,socktemp%,�(m$)+1�r0;flags%:�r0<>�(m$)+1��&805,"Could not send all data" �� �{��socket_senddata(sock%,b%,len%):�r0,flags%:�socket_check(sock%,"SendData"):ș&61214,sock%(sock%)!0,b%,len%�r0;flags%:� ��ݤsocket_getpeername(sock%):�r0,r1:�socket_check(sock%,"GetPeerName"):!socktemp%=16:ș&4120E,sock%(sock%)!0,sockaddr%,socktemp%:ș&66001,0,sockaddr%+4,4,2�,r1;flags%:�(flags%�1)=0�r1<>0�=�string0(!r1) �L=�(sockaddr%?4)+"."+�(sockaddr%?5)+"."+�(sockaddr%?6)+"."+�(sockaddr%?7) �Mݤinet_getservbyname(name$,proto$):�servent%,port%:�(name$)<>0�=�(name$) �Hș&46441,name$,proto$�,servent%:�servent%=0�port%=0�port%=servent%!8 � =port% �bݤinet_gethostbyname(host$):�ptr%,flags%:ș&66000,0,host$�,ptr%;flags%:�ptr%=0�(flags%�1)=1�=0 �=!!(ptr%!16) �b��inet_killmtquery(query%):�l%,p%,n%:ș"XDNSResolver_Dispose",query%:p%=mtchain%:�p%!4=query%� �mtchain%=!p%:�release(p%) �B�:l%=p%:p%=!p%:ȕp%<>0:n%=!p%:�p%!4=query%��release(p%):!l%=n% �p%=n%:� ��:� �
00000000 0d 00 01 0f f4 3e 21 52 75 6e 49 6d 61 67 65 0d |.....>!RunImage.| 00000010 00 02 30 f4 50 72 6f 64 75 63 65 64 20 62 79 20 |..0.Produced by | 00000020 42 61 73 43 6f 6d 70 72 65 73 73 20 76 31 2e 37 |BasCompress v1.7| 00000030 31 20 28 31 39 20 53 65 70 20 31 39 39 36 29 0d |1 (19 Sep 1996).| 00000040 00 03 66 74 65 73 74 69 6e 67 25 3d a3 3a f2 69 |..ftesting%=.:.i| 00000050 6e 69 74 6c 69 62 72 61 72 79 3a f2 69 6e 69 74 |nitlibrary:.init| 00000060 68 65 61 70 3a f2 69 6e 69 74 73 6f 63 6b 65 74 |heap:.initsocket| 00000070 73 3a ee 85 f2 63 6c 6f 73 65 6d 65 73 73 61 67 |s:...closemessag| 00000080 65 73 3a f2 65 65 72 72 6f 72 3a e7 74 65 73 74 |es:.eerror:.test| 00000090 69 6e 67 25 3d b9 8c ff 28 22 53 70 6f 6f 6c 22 |ing%=...("Spool"| 000000a0 29 3a e0 8b e0 0d 00 04 1e e7 74 65 73 74 69 6e |):........testin| 000000b0 67 25 3d b9 8c 2a 53 70 6f 6f 6c 20 53 70 6f 6f |g%=..*Spool Spoo| 000000c0 6c 65 64 0d 00 05 12 e7 74 65 73 74 69 6e 67 25 |led.....testing%| 000000d0 3d b9 8c fc ee 0d 00 06 61 41 70 70 6e 61 6d 65 |=.......aAppname| 000000e0 24 3d 22 4e 65 74 4f 58 4f 22 3a 3a 3a 3a 41 70 |$="NetOXO"::::Ap| 000000f0 70 64 69 72 24 3d a4 73 79 73 74 65 6d 76 61 72 |pdir$=.systemvar| 00000100 28 41 70 70 6e 61 6d 65 24 2b 22 24 44 69 72 22 |(Appname$+"$Dir"| 00000110 29 3a f2 69 6e 69 74 77 69 6d 70 3a f2 69 6e 69 |):.initwimp:.ini| 00000120 74 70 72 6f 67 3a 71 75 69 74 25 3d a3 3a ee 85 |tprog:quit%=.:..| 00000130 f2 65 72 72 6f 72 0d 00 07 4e c8 95 71 75 69 74 |.error...N..quit| 00000140 25 3d a3 3a f2 50 6f 6c 6c 3a ce 3a c8 99 26 34 |%=.:.Poll:.:..&4| 00000150 30 30 44 44 3a f2 63 6c 6f 73 65 6d 65 73 73 61 |00DD:.closemessa| 00000160 67 65 73 3a f2 63 6c 6f 73 65 73 6f 63 6b 65 74 |ges:.closesocket| 00000170 73 3a e7 74 65 73 74 69 6e 67 25 3d b9 8c 2a 53 |s:.testing%=..*S| 00000180 50 4f 4f 4c 0d 00 08 05 e0 0d 00 09 2b dd f2 50 |POOL........+..P| 00000190 6f 6c 6c 3a c8 99 26 34 30 30 43 37 2c 30 2c 62 |oll:..&400C7,0,b| 000001a0 25 b8 72 65 61 73 6f 6e 25 3a c8 8e 72 65 61 73 |%.reason%:..reas| 000001b0 6f 6e 25 ca 0d 00 0a 14 c9 30 3a f2 63 68 65 63 |on%......0:.chec| 000001c0 6b 73 6f 63 6b 65 74 73 0d 00 0b 13 c9 32 3a c8 |ksockets.....2:.| 000001d0 99 26 34 30 30 43 35 2c 2c 62 25 0d 00 0c 43 c9 |.&400C5,,b%...C.| 000001e0 33 3a e7 21 62 25 3d 73 65 6e 64 77 69 6e 25 8c |3:.!b%=sendwin%.| 000001f0 f2 63 6c 6f 73 65 73 65 6e 64 8b e7 21 62 25 3d |.closesend..!b%=| 00000200 6d 73 67 77 69 6e 25 8c f2 63 6c 6f 73 65 6d 73 |msgwin%..closems| 00000210 67 8b c8 99 26 34 30 30 43 36 2c 2c 62 25 0d 00 |g...&400C6,,b%..| 00000220 0d 24 c9 36 3a f2 6d 6f 75 73 65 63 6c 69 63 6b |.$.6:.mouseclick| 00000230 28 62 25 21 38 2c 62 25 21 26 43 2c 62 25 21 31 |(b%!8,b%!&C,b%!1| 00000240 36 29 0d 00 0e 23 c9 38 3a f2 70 72 6f 63 65 73 |6)...#.8:.proces| 00000250 73 6b 65 79 28 62 25 21 30 2c 62 25 21 34 2c 62 |skey(b%!0,b%!4,b| 00000260 25 21 32 34 29 0d 00 0f 12 c9 39 3a f2 6d 65 6e |%!24).....9:.men| 00000270 75 63 68 6f 69 63 65 0d 00 10 1a c9 31 37 2c 31 |uchoice.....17,1| 00000280 38 3a f2 72 65 63 65 69 76 65 28 62 25 21 31 36 |8:.receive(b%!16| 00000290 29 0d 00 11 1a c9 31 39 3a f2 72 65 63 65 69 76 |).....19:.receiv| 000002a0 65 61 63 6b 28 62 25 21 31 36 29 0d 00 12 07 cb |eack(b%!16).....| 000002b0 3a e1 0d 00 13 25 dd f2 6d 6f 75 73 65 63 6c 69 |:....%..mousecli| 000002c0 63 6b 28 62 75 74 2c 77 69 6e 2c 69 63 6f 6e 29 |ck(but,win,icon)| 000002d0 3a c8 8e 77 69 6e ca 0d 00 14 0e c9 2d 32 3a c8 |:..win......-2:.| 000002e0 8e 62 75 74 ca 0d 00 15 0e c9 32 3a f2 69 62 6d |.but......2:.ibm| 000002f0 65 6e 75 0d 00 16 16 c9 31 2c 34 3a e7 63 6f 6e |enu.....1,4:.con| 00000300 6e 65 63 74 24 3d 22 22 8c 0d 00 17 3b f2 6f 70 |nect$=""....;.op| 00000310 65 6e 77 69 6e 63 65 6e 74 72 65 28 63 6f 6e 6e |enwincentre(conn| 00000320 65 63 74 77 69 6e 25 29 3a f2 73 65 74 63 61 72 |ectwin%):.setcar| 00000330 65 74 65 6e 64 28 63 6f 6e 6e 65 63 74 77 69 6e |etend(connectwin| 00000340 25 2c 31 29 0d 00 18 17 cc 3a f2 6f 70 65 6e 77 |%,1).....:.openw| 00000350 69 6e 28 6f 78 6f 77 69 6e 25 29 0d 00 19 05 cd |in(oxowin%).....| 00000360 0d 00 1a 05 cb 0d 00 1b 15 c9 69 6e 66 6f 62 6f |..........infobo| 00000370 78 25 3a c8 8e 69 63 6f 6e ca 0d 00 1c 10 c9 31 |x%:..icon......1| 00000380 3a f2 73 68 6f 77 66 72 65 65 0d 00 1d 3a c9 33 |:.showfree...:.3| 00000390 3a f2 46 65 74 63 68 50 61 67 65 28 22 68 74 74 |:.FetchPage("htt| 000003a0 70 3a 2f 2f 75 73 65 72 73 2e 65 73 73 65 78 2e |p://users.essex.| 000003b0 61 63 2e 75 6b 2f 75 73 65 72 73 2f 67 65 72 70 |ac.uk/users/gerp| 000003c0 68 2f 22 29 0d 00 1e 54 c9 34 3a f2 46 65 74 63 |h/")...T.4:.Fetc| 000003d0 68 50 61 67 65 28 22 68 74 74 70 3a 2f 2f 75 73 |hPage("http://us| 000003e0 65 72 73 2e 65 73 73 65 78 2e 61 63 2e 75 6b 2f |ers.essex.ac.uk/| 000003f0 75 73 65 72 73 2f 67 65 72 70 68 2f 61 63 6f 72 |users/gerph/acor| 00000400 6e 2f 69 6e 74 65 72 6e 65 74 2e 68 74 6d 6c 23 |n/internet.html#| 00000410 6e 65 74 6f 78 6f 22 29 0d 00 1f 05 cb 0d 00 20 |netoxo")....... | 00000420 18 c9 63 6f 6e 6e 65 63 74 77 69 6e 25 3a c8 8e |..connectwin%:..| 00000430 69 63 6f 6e ca 0d 00 21 11 c9 34 3a f2 64 6f 63 |icon...!..4:.doc| 00000440 6f 6e 6e 65 63 74 0d 00 22 05 cb 0d 00 23 13 c9 |onnect.."....#..| 00000450 6f 78 6f 77 69 6e 25 3a c8 8e 62 75 74 ca 0d 00 |oxowin%:..but...| 00000460 24 10 c9 31 2c 34 3a c8 8e 69 63 6f 6e ca 0d 00 |$..1,4:..icon...| 00000470 25 11 c9 31 36 3a f2 6f 70 65 6e 73 65 6e 64 0d |%..16:.opensend.| 00000480 00 26 17 7f f2 63 6c 69 63 6b 6f 6e 69 63 6f 6e |.&...clickonicon| 00000490 28 69 63 6f 6e 29 0d 00 27 05 cb 0d 00 28 1d c9 |(icon)..'....(..| 000004a0 32 3a f2 6d 65 6e 75 28 6d 61 69 6e 6d 65 6e 75 |2:.menu(mainmenu| 000004b0 25 2c 2d 31 2c 2d 31 29 0d 00 29 05 cb 0d 00 2a |%,-1,-1)..)....*| 000004c0 15 c9 73 65 6e 64 77 69 6e 25 3a c8 8e 69 63 6f |..sendwin%:..ico| 000004d0 6e ca 0d 00 2b 0e c9 31 3a f2 64 6f 73 65 6e 64 |n...+..1:.dosend| 000004e0 0d 00 2c 11 c9 32 3a f2 63 6c 6f 73 65 73 65 6e |..,..2:.closesen| 000004f0 64 0d 00 2d 05 cb 0d 00 2e 14 c9 6d 73 67 77 69 |d..-.......msgwi| 00000500 6e 25 3a c8 8e 69 63 6f 6e ca 0d 00 2f 10 c9 31 |n%:..icon.../..1| 00000510 3a f2 63 6c 6f 73 65 6d 73 67 0d 00 30 1a c9 32 |:.closemsg..0..2| 00000520 3a f2 63 6c 6f 73 65 6d 73 67 3a f2 6f 70 65 6e |:.closemsg:.open| 00000530 73 65 6e 64 0d 00 31 05 cb 0d 00 32 07 cb 3a e1 |send..1....2..:.| 00000540 0d 00 33 38 dd f2 70 72 6f 63 65 73 73 6b 65 79 |..38..processkey| 00000550 28 77 69 6e 2c 69 63 6f 6e 2c 6b 65 79 29 3a ea |(win,icon,key):.| 00000560 6b 65 79 64 6f 6e 65 3a 6b 65 79 64 6f 6e 65 3d |keydone:keydone=| 00000570 a3 3a c8 8e 77 69 6e ca 0d 00 34 34 c9 63 6f 6e |.:..win...44.con| 00000580 6e 65 63 74 77 69 6e 25 3a e7 69 63 6f 6e 3d 33 |nectwin%:.icon=3| 00000590 80 6b 65 79 3d 26 44 8c f2 64 6f 63 6f 6e 6e 65 |.key=&D..doconne| 000005a0 63 74 3a 6b 65 79 64 6f 6e 65 3d b9 0d 00 35 27 |ct:keydone=...5'| 000005b0 c9 73 65 6e 64 77 69 6e 25 3a e7 6b 65 79 3d 26 |.sendwin%:.key=&| 000005c0 44 8c f2 64 6f 73 65 6e 64 3a 6b 65 79 64 6f 6e |D..dosend:keydon| 000005d0 65 3d b9 0d 00 36 16 e7 6b 65 79 3d 32 37 8c f2 |e=...6..key=27..| 000005e0 63 6c 6f 73 65 73 65 6e 64 0d 00 37 2f c9 6d 73 |closesend..7/.ms| 000005f0 67 77 69 6e 25 3a e7 6b 65 79 3d 26 44 84 6b 65 |gwin%:.key=&D.ke| 00000600 79 3d 32 37 8c f2 63 6c 6f 73 65 6d 73 67 3a 6b |y=27..closemsg:k| 00000610 65 79 64 6f 6e 65 3d b9 0d 00 38 27 e7 6b 65 79 |eydone=...8'.key| 00000620 3d 38 32 84 6b 65 79 3d 26 37 32 8c f2 63 6c 6f |=82.key=&72..clo| 00000630 73 65 6d 73 67 3a f2 6f 70 65 6e 73 65 6e 64 0d |semsg:.opensend.| 00000640 00 39 1c cb 3a e7 ac 6b 65 79 64 6f 6e 65 8c c8 |.9..:..keydone..| 00000650 99 26 34 30 30 44 43 2c 6b 65 79 0d 00 3a 05 e1 |.&400DC,key..:..| 00000660 0d 00 3b 61 dd f2 6d 65 6e 75 63 68 6f 69 63 65 |..;a..menuchoice| 00000670 3a c8 99 26 34 30 30 43 46 2c 2c 6d 65 73 73 61 |:..&400CF,,messa| 00000680 67 65 5f 62 75 66 66 65 72 25 3a 6d 62 75 74 25 |ge_buffer%:mbut%| 00000690 3d 6d 65 73 73 61 67 65 5f 62 75 66 66 65 72 25 |=message_buffer%| 000006a0 21 38 3a 6d 24 3d a4 64 65 63 6f 64 65 6d 65 6e |!8:m$=.decodemen| 000006b0 75 28 63 75 72 6d 65 6e 75 25 29 3a c8 8e 6d 24 |u(curmenu%):..m$| 000006c0 ca 0d 00 3c 13 c9 22 51 75 69 74 22 3a 71 75 69 |...<.."Quit":qui| 000006d0 74 25 3d b9 0d 00 3d 1d c9 22 43 6c 65 61 72 20 |t%=...=.."Clear | 000006e0 62 6f 61 72 64 22 3a e7 77 6f 6e 24 3c 3e 22 22 |board":.won$<>""| 000006f0 8c 0d 00 3e 1e f2 63 6c 65 61 72 62 6f 61 72 64 |...>..clearboard| 00000700 3a e7 63 6f 6e 6e 65 63 74 24 3c 3e 22 22 8c 0d |:.connect$<>""..| 00000710 00 3f 26 3f 62 25 3d 36 37 3a f2 73 6f 63 6b 65 |.?&?b%=67:.socke| 00000720 74 5f 73 65 6e 64 64 61 74 61 28 73 6f 63 6b 2c |t_senddata(sock,| 00000730 62 25 2c 33 29 0d 00 40 05 cd 0d 00 41 05 cd 0d |b%,3)..@....A...| 00000740 00 42 20 c9 22 44 69 73 63 6f 6e 6e 65 63 74 22 |.B ."Disconnect"| 00000750 3a e7 63 6f 6e 6e 65 63 74 24 3c 3e 22 22 8c 0d |:.connect$<>""..| 00000760 00 43 32 3f 62 25 3d 38 31 3a f2 73 6f 63 6b 65 |.C2?b%=81:.socke| 00000770 74 5f 73 65 6e 64 64 61 74 61 28 73 6f 63 6b 2c |t_senddata(sock,| 00000780 62 25 2c 33 29 3a f2 64 69 73 63 6f 6e 6e 65 63 |b%,3):.disconnec| 00000790 74 0d 00 44 05 cd 0d 00 45 1b c9 22 4d 65 73 73 |t..D....E.."Mess| 000007a0 61 67 65 2e 2e 2e 22 3a f2 6f 70 65 6e 73 65 6e |age...":.opensen| 000007b0 64 0d 00 46 2c cb 3a e7 28 6d 62 75 74 25 80 31 |d..F,.:.(mbut%.1| 000007c0 29 3d 31 8c f2 72 65 63 72 65 61 74 65 6d 65 6e |)=1..recreatemen| 000007d0 75 8b 63 75 72 6d 65 6e 75 25 3d 2d 31 0d 00 47 |u.curmenu%=-1..G| 000007e0 05 e1 0d 00 48 1b dd f2 72 65 63 65 69 76 65 28 |....H...receive(| 000007f0 6d 65 73 73 29 3a c8 8e 6d 65 73 73 ca 0d 00 49 |mess):..mess...I| 00000800 10 c9 30 3a 71 75 69 74 25 3d b9 2a 32 0d 00 4a |..0:quit%=.*2..J| 00000810 20 c9 33 2c 35 3a 74 79 70 65 3d 62 25 21 34 30 | .3,5:type=b%!40| 00000820 3a e7 74 79 70 65 3d 26 38 38 38 38 8c 0d 00 4b |:.type=&8888...K| 00000830 4b 62 25 21 26 43 3d 62 25 21 38 3a 62 25 21 31 |Kb%!&C=b%!8:b%!1| 00000840 36 3d 34 3a c8 99 26 34 30 30 45 37 2c 31 37 2c |6=4:..&400E7,17,| 00000850 62 25 2c 62 25 21 34 3a f2 6c 6f 61 64 66 69 6c |b%,b%!4:.loadfil| 00000860 65 28 a4 73 74 72 69 6e 67 30 28 62 25 2b 34 34 |e(.string0(b%+44| 00000870 29 2c 62 25 21 34 30 29 0d 00 4c 05 cd 0d 00 4d |),b%!40)..L....M| 00000880 21 c9 26 35 30 32 3a f2 48 65 6c 70 28 62 25 21 |!.&502:.Help(b%!| 00000890 33 32 2c 62 25 21 33 36 2c 62 25 21 34 29 0d 00 |32,b%!36,b%!4)..| 000008a0 4e 1b c9 26 41 3a f2 64 65 73 6b 74 6f 70 73 61 |N..&A:.desktopsa| 000008b0 76 65 28 62 25 21 32 30 29 0d 00 4f 2b c9 26 34 |ve(b%!20)..O+.&4| 000008c0 41 32 36 36 3a c8 99 38 2c 36 2c 22 3c 57 69 6d |A266:..8,6,"<Wim| 000008d0 70 24 53 63 72 61 70 44 69 72 3e 2e 22 2b c3 62 |p$ScrapDir>."+.b| 000008e0 25 21 32 30 0d 00 50 07 cb 3a e1 0d 00 51 1e dd |%!20..P..:...Q..| 000008f0 f2 72 65 63 65 69 76 65 61 63 6b 28 6d 65 73 73 |.receiveack(mess| 00000900 29 3a c8 8e 6d 65 73 73 ca 0d 00 52 35 c9 26 34 |):..mess...R5.&4| 00000910 41 32 36 35 3a d9 23 28 62 25 21 32 38 29 3a c8 |A265:.#(b%!28):.| 00000920 99 38 2c 36 2c 22 3c 57 69 6d 70 24 53 63 72 61 |.8,6,"<Wimp$Scra| 00000930 70 44 69 72 3e 2e 22 2b c3 62 25 21 32 30 0d 00 |pDir>."+.b%!20..| 00000940 53 07 cb 3a e1 0d 00 54 42 dd f2 64 65 73 6b 74 |S..:...TB..deskt| 00000950 6f 70 73 61 76 65 28 66 69 6c 65 25 29 3a ea 85 |opsave(file%):..| 00000960 3a ee 85 ea 62 25 21 26 43 3d 62 25 21 38 3a c8 |:...b%!&C=b%!8:.| 00000970 99 26 34 30 30 45 37 2c 31 39 2c 62 25 2c 62 25 |.&400E7,19,b%,b%| 00000980 21 34 3a f7 85 3a e1 0d 00 55 1c d5 23 66 69 6c |!4:..:...U..#fil| 00000990 65 25 2c 22 52 75 6e 20 22 2b 41 70 70 64 69 72 |e%,"Run "+Appdir| 000009a0 24 3a e1 0d 00 56 22 dd f2 6c 6f 61 64 66 69 6c |$:...V"..loadfil| 000009b0 65 28 66 69 6c 65 24 2c 74 79 70 65 29 3a c8 8e |e(file$,type):..| 000009c0 74 79 70 65 ca 0d 00 57 07 cb 3a e1 0d 00 58 ed |type...W..:...X.| 000009d0 dd f2 69 6e 69 74 77 69 6d 70 3a de 6d 65 73 73 |..initwimp:.mess| 000009e0 61 67 65 6c 69 73 74 25 32 35 36 3a 3a f2 6e 6f |agelist%256::.no| 000009f0 74 65 6d 65 73 73 61 67 65 28 26 35 30 32 29 3a |temessage(&502):| 00000a00 f2 6e 6f 74 65 6d 65 73 73 61 67 65 28 26 41 29 |.notemessage(&A)| 00000a10 3a f2 6e 6f 74 65 6d 65 73 73 61 67 65 28 30 29 |:.notemessage(0)| 00000a20 3a c8 99 26 34 30 30 43 30 2c 33 31 30 2c 26 34 |:..&400C0,310,&4| 00000a30 42 35 33 34 31 35 34 2c 41 70 70 6e 61 6d 65 24 |B534154,Appname$| 00000a40 2c 6d 65 73 73 61 67 65 6c 69 73 74 25 b8 77 69 |,messagelist%.wi| 00000a50 6d 70 76 65 72 73 69 6f 6e 2c 68 61 6e 64 6c 65 |mpversion,handle| 00000a60 3a 69 6e 64 6c 25 3d 26 34 30 30 3a 6d 65 6e 75 |:indl%=&400:menu| 00000a70 6c 25 3d 26 34 30 30 3a de 62 25 26 38 30 30 2c |l%=&400:.b%&800,| 00000a80 69 6e 64 25 69 6e 64 6c 25 2c 6d 65 6e 75 25 6d |ind%indl%,menu%m| 00000a90 65 6e 75 6c 25 2c 77 73 70 63 25 26 38 30 30 3a |enul%,wspc%&800:| 00000aa0 63 75 72 6d 65 6e 75 25 3d 2d 31 3a f2 6f 70 65 |curmenu%=-1:.ope| 00000ab0 6e 6d 65 73 73 61 67 65 73 0d 00 59 df 73 70 72 |nmessages..Y.spr| 00000ac0 69 74 65 73 25 3d a4 6c 6f 61 64 73 70 72 69 74 |ites%=.loadsprit| 00000ad0 65 73 28 41 70 70 64 69 72 24 2b 22 2e 53 70 72 |es(Appdir$+".Spr| 00000ae0 69 74 65 73 22 29 3a 69 6e 66 6f 62 6f 78 25 3d |ites"):infobox%=| 00000af0 a4 6c 6f 61 64 74 65 6d 70 6c 61 74 65 28 22 49 |.loadtemplate("I| 00000b00 6e 66 6f 22 2c 31 29 3a 6f 78 6f 77 69 6e 25 3d |nfo",1):oxowin%=| 00000b10 a4 6c 6f 61 64 74 65 6d 70 6c 61 74 65 28 22 6f |.loadtemplate("o| 00000b20 78 6f 22 2c 73 70 72 69 74 65 73 25 29 3a 63 6f |xo",sprites%):co| 00000b30 6e 6e 65 63 74 77 69 6e 25 3d a4 6c 6f 61 64 74 |nnectwin%=.loadt| 00000b40 65 6d 70 6c 61 74 65 28 22 63 6f 6e 6e 65 63 74 |emplate("connect| 00000b50 22 2c 31 29 3a 73 65 6e 64 77 69 6e 25 3d a4 6c |",1):sendwin%=.l| 00000b60 6f 61 64 74 65 6d 70 6c 61 74 65 28 22 73 65 6e |oadtemplate("sen| 00000b70 64 22 2c 31 29 3a 6d 73 67 77 69 6e 25 3d a4 6c |d",1):msgwin%=.l| 00000b80 6f 61 64 74 65 6d 70 6c 61 74 65 28 22 6d 65 73 |oadtemplate("mes| 00000b90 73 61 67 65 22 2c 31 29 0d 00 5a fa f2 73 65 74 |sage",1)..Z..set| 00000ba0 69 63 6f 6e 74 65 78 74 28 69 6e 66 6f 62 6f 78 |icontext(infobox| 00000bb0 25 2c 31 2c 41 70 70 6e 61 6d 65 24 29 3a f2 73 |%,1,Appname$):.s| 00000bc0 65 74 69 63 6f 6e 74 65 78 74 28 69 6e 66 6f 62 |eticontext(infob| 00000bd0 6f 78 25 2c 32 2c 22 4f 27 73 20 61 6e 64 20 58 |ox%,2,"O's and X| 00000be0 27 73 20 28 70 6f 72 74 20 78 78 78 78 29 22 29 |'s (port xxxx)")| 00000bf0 3a f2 73 65 74 69 63 6f 6e 74 65 78 74 28 69 6e |:.seticontext(in| 00000c00 66 6f 62 6f 78 25 2c 34 2c 22 31 2e 30 34 20 28 |fobox%,4,"1.04 (| 00000c10 32 35 20 4a 61 6e 20 31 39 39 37 29 22 29 3a 69 |25 Jan 1997)"):i| 00000c20 62 68 61 6e 64 6c 65 3d a4 43 72 65 61 74 65 49 |bhandle=.CreateI| 00000c30 63 6f 6e 42 61 72 49 63 6f 6e 28 22 21 22 2b 41 |conBarIcon("!"+A| 00000c40 70 70 6e 61 6d 65 24 2c 22 22 2c 31 29 3a 6d 61 |ppname$,"",1):ma| 00000c50 69 6e 6d 65 6e 75 25 3d a4 63 72 65 61 74 65 6d |inmenu%=.createm| 00000c60 65 6e 75 28 41 70 70 6e 61 6d 65 24 2b 22 7c 43 |enu(Appname$+"|C| 00000c70 6c 65 61 72 20 62 6f 61 72 64 7c 44 69 73 63 6f |lear board|Disco| 00000c80 6e 6e 65 63 74 7c 4d 65 73 73 61 67 65 2e 2e 2e |nnect|Message...| 00000c90 22 29 0d 00 5b 5c 69 62 6d 65 6e 75 25 3d a4 63 |")..[\ibmenu%=.c| 00000ca0 72 65 61 74 65 6d 65 6e 75 28 41 70 70 6e 61 6d |reatemenu(Appnam| 00000cb0 65 24 2b 22 7c 49 6e 66 6f 5d 3e 69 6e 66 6f 62 |e$+"|Info]>infob| 00000cc0 6f 78 25 7c 51 75 69 74 22 29 3a 69 62 6f 70 74 |ox%|Quit"):ibopt| 00000cd0 69 6f 6e 73 25 3d 6f 70 74 69 6f 6e 73 25 3a de |ions%=options%:.| 00000ce0 6c 61 73 74 63 61 72 65 74 25 32 34 3a e1 0d 00 |lastcaret%24:...| 00000cf0 5c e9 dd f2 69 6e 69 74 70 72 6f 67 3a 6c 69 73 |\...initprog:lis| 00000d00 74 65 6e 65 72 3d a4 73 6f 63 6b 65 74 5f 63 72 |tener=.socket_cr| 00000d10 65 61 74 65 69 6e 65 74 3a 70 6f 72 74 3d a4 73 |eateinet:port=.s| 00000d20 6f 63 6b 65 74 5f 66 69 6e 64 6c 69 73 74 65 6e |ocket_findlisten| 00000d30 28 6c 69 73 74 65 6e 65 72 2c 30 2c 26 37 42 38 |(listener,0,&7B8| 00000d40 2c 26 46 29 3a f2 73 65 74 69 63 6f 6e 74 65 78 |,&F):.seticontex| 00000d50 74 28 69 6e 66 6f 62 6f 78 25 2c 32 2c a4 6d 73 |t(infobox%,2,.ms| 00000d60 67 74 65 78 74 28 22 3e 49 6e 66 6f 3a 22 2b c3 |gtext(">Info:"+.| 00000d70 70 6f 72 74 29 29 3a de 62 6f 61 72 64 24 28 33 |port)):.board$(3| 00000d80 2c 33 29 3a 70 6c 61 79 65 72 24 3d 22 78 22 3a |,3):player$="x":| 00000d90 77 6f 6e 24 3d 22 22 3a 63 6f 6e 6e 65 63 74 24 |won$="":connect$| 00000da0 3d 22 22 3a 77 65 61 72 65 24 3d 22 22 3a 77 65 |="":weare$="":we| 00000db0 77 6f 6e 3d 2d 31 3a 74 68 65 79 77 6f 6e 3d 2d |won=-1:theywon=-| 00000dc0 31 3a 73 74 61 74 65 3d 30 3a f2 63 6c 65 61 72 |1:state=0:.clear| 00000dd0 62 6f 61 72 64 3a e1 0d 00 5d 34 dd f2 48 65 6c |board:...]4..Hel| 00000de0 70 28 77 69 6e 2c 69 63 6f 6e 2c 74 6f 29 3a f7 |p(win,icon,to):.| 00000df0 2b 31 3a f2 72 65 61 64 68 65 6c 70 28 77 69 6e |+1:.readhelp(win| 00000e00 2c 69 63 6f 6e 2c 74 6f 29 3a e1 0d 00 5e 1a dc |,icon,to):...^..| 00000e10 20 69 6e 66 6f 62 6f 78 25 2c 22 3e 48 49 6e 66 | infobox%,">HInf| 00000e20 6f 62 6f 78 22 0d 00 5f 14 dc 20 33 2c 22 3e 48 |obox".._.. 3,">H| 00000e30 49 6e 66 6f 62 6f 78 33 22 0d 00 60 14 dc 20 2d |Infobox3"..`.. -| 00000e40 32 2c 22 3e 48 49 63 6f 6e 62 61 72 22 0d 00 61 |2,">HIconbar"..a| 00000e50 0b dc 20 2d 31 2c 2d 31 0d 00 62 11 dc 20 2d 32 |.. -1,-1..b.. -2| 00000e60 2c 2d 32 2c 2d 32 2c 2d 32 0d 00 63 35 dd f2 46 |,-2,-2,-2..c5..F| 00000e70 65 74 63 68 50 61 67 65 28 66 24 29 3a e7 a4 73 |etchPage(f$):..s| 00000e80 79 73 74 65 6d 76 61 72 28 22 57 69 6d 70 24 53 |ystemvar("Wimp$S| 00000e90 63 72 61 70 44 69 72 22 29 3c 3e 22 22 8c 0d 00 |crapDir")<>""...| 00000ea0 64 ba 66 25 3d 30 3a c8 95 a4 66 69 6c 65 6c 65 |d.f%=0:...filele| 00000eb0 6e 67 74 68 28 22 3c 57 69 6d 70 24 53 63 72 61 |ngth("<Wimp$Scra| 00000ec0 70 44 69 72 3e 2e 22 2b c3 66 25 29 3c 3e 2d 31 |pDir>."+.f%)<>-1| 00000ed0 3a 66 25 2b 3d 31 3a ce 3a 6f 25 3d ae 28 22 3c |:f%+=1:.:o%=.("<| 00000ee0 57 69 6d 70 24 53 63 72 61 70 44 69 72 3e 2e 22 |Wimp$ScrapDir>."| 00000ef0 2b c3 66 25 29 3a d5 23 6f 25 2c 66 24 3a cf 23 |+.f%):.#o%,f$:.#| 00000f00 6f 25 3d 30 3a 21 62 25 3d 33 32 3a 62 25 21 38 |o%=0:!b%=32:b%!8| 00000f10 3d 30 3a 62 25 21 26 43 3d 30 3a 62 25 21 31 36 |=0:b%!&C=0:b%!16| 00000f20 3d 26 34 41 32 36 35 3a 62 25 21 32 30 3d 66 25 |=&4A265:b%!20=f%| 00000f30 3a 62 25 21 32 34 3d 28 31 3c 3c 32 32 29 3a 62 |:b%!24=(1<<22):b| 00000f40 25 21 32 38 3d 6f 25 3a c8 99 26 34 30 30 45 37 |%!28=o%:..&400E7| 00000f50 2c 31 38 2c 62 25 2c 30 0d 00 65 07 cd 3a e1 0d |,18,b%,0..e..:..| 00000f60 00 66 73 dd f2 63 6c 65 61 72 62 6f 61 72 64 3a |.fs..clearboard:| 00000f70 e3 49 3d 34 b8 26 43 3a f2 73 65 74 69 63 6f 6e |.I=4.&C:.seticon| 00000f80 76 61 6c 69 64 28 6f 78 6f 77 69 6e 25 2c 49 2c |valid(oxowin%,I,| 00000f90 22 22 29 3a ed 3a 62 6f 61 72 64 24 28 29 3d 22 |""):.:board$()="| 00000fa0 22 3a 77 6f 6e 24 3d 22 22 3a f2 75 70 64 61 74 |":won$="":.updat| 00000fb0 65 74 69 74 6c 65 3a f2 6d 65 6e 75 73 68 61 64 |etitle:.menushad| 00000fc0 65 28 6d 61 69 6e 6d 65 6e 75 25 2c 30 2c 31 29 |e(mainmenu%,0,1)| 00000fd0 3a e1 0d 00 67 1d dd f2 75 70 64 61 74 65 74 69 |:...g...updateti| 00000fe0 74 6c 65 3a e7 77 65 61 72 65 24 3d 22 22 8c 0d |tle:.weare$=""..| 00000ff0 00 68 29 f2 77 69 6e 64 6f 77 74 69 74 6c 65 28 |.h).windowtitle(| 00001000 6f 78 6f 77 69 6e 25 2c 22 3e 4e 6f 74 43 6f 6e |oxowin%,">NotCon| 00001010 6e 65 63 74 65 64 22 29 0d 00 69 16 cc 3a e7 77 |nected")..i..:.w| 00001020 65 61 72 65 24 3d 70 6c 61 79 65 72 24 8c 0d 00 |eare$=player$...| 00001030 6a 28 f2 77 69 6e 64 6f 77 74 69 74 6c 65 28 6f |j(.windowtitle(o| 00001040 78 6f 77 69 6e 25 2c 22 3e 55 73 3a 22 2b 70 6c |xowin%,">Us:"+pl| 00001050 61 79 65 72 24 29 0d 00 6b 2c cc 3a f2 77 69 6e |ayer$)..k,.:.win| 00001060 64 6f 77 74 69 74 6c 65 28 6f 78 6f 77 69 6e 25 |dowtitle(oxowin%| 00001070 2c 22 3e 54 68 65 6d 3a 22 2b 70 6c 61 79 65 72 |,">Them:"+player| 00001080 24 29 0d 00 6c 05 cd 0d 00 6d 07 cd 3a e1 0d 00 |$)..l....m..:...| 00001090 6e 30 dd f2 75 70 64 61 74 65 73 63 6f 72 65 3a |n0..updatescore:| 000010a0 e7 77 65 77 6f 6e 3d 2d 31 8c 77 24 3d 22 2d 22 |.wewon=-1.w$="-"| 000010b0 8b 77 24 3d c0 c3 77 65 77 6f 6e 2c 33 29 0d 00 |.w$=..wewon,3)..| 000010c0 6f 26 e7 74 68 65 79 77 6f 6e 3d 2d 31 8c 74 24 |o&.theywon=-1.t$| 000010d0 3d 22 2d 22 8b 74 24 3d c0 c3 74 68 65 79 77 6f |="-".t$=..theywo| 000010e0 6e 2c 33 29 0d 00 70 3d f2 73 65 74 69 63 6f 6e |n,3)..p=.seticon| 000010f0 74 65 78 74 28 6f 78 6f 77 69 6e 25 2c 26 46 2c |text(oxowin%,&F,| 00001100 77 24 29 3a f2 73 65 74 69 63 6f 6e 74 65 78 74 |w$):.seticontext| 00001110 28 6f 78 6f 77 69 6e 25 2c 31 37 2c 74 24 29 3a |(oxowin%,17,t$):| 00001120 e1 0d 00 71 7b dd f2 70 6c 61 63 65 70 69 65 63 |...q{..placepiec| 00001130 65 28 78 2c 79 2c 63 24 29 3a ea 49 3a 49 3d 78 |e(x,y,c$):.I:I=x| 00001140 2b 79 2a 33 3a 62 6f 61 72 64 24 28 78 2c 79 29 |+y*3:board$(x,y)| 00001150 3d c0 63 24 2b 22 20 22 2c 31 29 3a f2 73 65 74 |=.c$+" ",1):.set| 00001160 69 63 6f 6e 76 61 6c 69 64 28 6f 78 6f 77 69 6e |iconvalid(oxowin| 00001170 25 2c 49 2c 22 53 22 2b 62 6f 61 72 64 24 28 78 |%,I,"S"+board$(x| 00001180 2c 79 29 29 3a 77 6f 6e 24 3d a4 77 69 6e 6e 65 |,y)):won$=.winne| 00001190 72 3a e7 77 6f 6e 24 3c 3e 22 22 8c 0d 00 72 0b |r:.won$<>""...r.| 000011a0 c8 8e 77 6f 6e 24 ca 0d 00 73 42 c9 77 65 61 72 |..won$...sB.wear| 000011b0 65 24 3a 72 65 70 6c 79 3d a4 65 72 72 6f 72 62 |e$:reply=.errorb| 000011c0 6f 78 28 22 3e 4d 65 73 73 61 67 65 22 2c 22 3e |ox(">Message",">| 000011d0 57 69 6e 55 73 3a 22 2b 77 6f 6e 24 2c 31 37 29 |WinUs:"+won$,17)| 000011e0 3a 77 65 77 6f 6e 2b 3d 31 0d 00 74 32 c9 22 6e |:wewon+=1..t2."n| 000011f0 22 3a 72 65 70 6c 79 3d a4 65 72 72 6f 72 62 6f |":reply=.errorbo| 00001200 78 28 22 3e 4d 65 73 73 61 67 65 22 2c 22 3e 57 |x(">Message",">W| 00001210 69 6e 4e 6f 6e 65 22 2c 31 37 29 0d 00 75 40 7f |inNone",17)..u@.| 00001220 3a 72 65 70 6c 79 3d a4 65 72 72 6f 72 62 6f 78 |:reply=.errorbox| 00001230 28 22 3e 4d 65 73 73 61 67 65 22 2c 22 3e 57 69 |(">Message",">Wi| 00001240 6e 54 68 65 6d 3a 22 2b 77 6f 6e 24 2c 31 37 29 |nThem:"+won$,17)| 00001250 3a 74 68 65 79 77 6f 6e 2b 3d 31 0d 00 76 2c cb |:theywon+=1..v,.| 00001260 3a f2 75 70 64 61 74 65 73 63 6f 72 65 3a f2 6d |:.updatescore:.m| 00001270 65 6e 75 73 68 61 64 65 28 6d 61 69 6e 6d 65 6e |enushade(mainmen| 00001280 75 25 2c 30 2c 30 29 0d 00 77 10 cd 3a c8 8e 70 |u%,0,0)..w..:..p| 00001290 6c 61 79 65 72 24 ca 0d 00 78 14 c9 22 78 22 3a |layer$...x.."x":| 000012a0 70 6c 61 79 65 72 24 3d 22 6f 22 0d 00 79 14 c9 |player$="o"..y..| 000012b0 22 6f 22 3a 70 6c 61 79 65 72 24 3d 22 78 22 0d |"o":player$="x".| 000012c0 00 7a 14 cb 3a f2 75 70 64 61 74 65 74 69 74 6c |.z..:.updatetitl| 000012d0 65 3a e1 0d 00 7b 32 dd f2 63 6c 69 63 6b 6f 6e |e:...{2..clickon| 000012e0 69 63 6f 6e 28 69 63 6f 6e 29 3a e7 69 63 6f 6e |icon(icon):.icon| 000012f0 3e 3d 34 80 69 63 6f 6e 3c 3d 26 43 80 77 6f 6e |>=4.icon<=&C.won| 00001300 24 3d 22 22 8c 0d 00 7c 14 e7 70 6c 61 79 65 72 |$=""...|..player| 00001310 24 3d 77 65 61 72 65 24 8c 0d 00 7d 36 78 3d 28 |$=weare$...}6x=(| 00001320 28 69 63 6f 6e 2d 34 29 83 33 29 2b 31 3a 79 3d |(icon-4).3)+1:y=| 00001330 28 28 69 63 6f 6e 2d 34 29 81 33 29 2b 31 3a e7 |((icon-4).3)+1:.| 00001340 62 6f 61 72 64 24 28 78 2c 79 29 3d 22 22 8c 0d |board$(x,y)=""..| 00001350 00 7e 4d 3f 62 25 3d 37 37 3a 62 25 3f 31 3d 78 |.~M?b%=77:b%?1=x| 00001360 3a 62 25 3f 32 3d 79 3a f2 73 6f 63 6b 65 74 5f |:b%?2=y:.socket_| 00001370 73 65 6e 64 64 61 74 61 28 73 6f 63 6b 2c 62 25 |senddata(sock,b%| 00001380 2c 33 29 3a f2 70 6c 61 63 65 70 69 65 63 65 28 |,3):.placepiece(| 00001390 78 2c 79 2c 70 6c 61 79 65 72 24 29 0d 00 7f 05 |x,y,player$)....| 000013a0 cd 0d 00 80 05 cd 0d 00 81 07 cd 3a e1 0d 00 82 |...........:....| 000013b0 7a dd a4 77 69 6e 6e 65 72 3a ea 78 2c 79 2c 77 |z..winner:.x,y,w| 000013c0 24 2c 61 24 3a 77 24 3d 22 22 3a 61 24 3d 22 22 |$,a$:w$="":a$=""| 000013d0 3a e3 78 3d 31 b8 33 3a e7 62 6f 61 72 64 24 28 |:.x=1.3:.board$(| 000013e0 78 2c 31 29 3d 62 6f 61 72 64 24 28 78 2c 32 29 |x,1)=board$(x,2)| 000013f0 80 62 6f 61 72 64 24 28 78 2c 32 29 3d 62 6f 61 |.board$(x,2)=boa| 00001400 72 64 24 28 78 2c 33 29 80 62 6f 61 72 64 24 28 |rd$(x,3).board$(| 00001410 78 2c 31 29 3c 3e 22 22 8c 77 24 3d 62 6f 61 72 |x,1)<>"".w$=boar| 00001420 64 24 28 78 2c 33 29 0d 00 83 84 61 24 2b 3d 62 |d$(x,3)....a$+=b| 00001430 6f 61 72 64 24 28 78 2c 31 29 2b 62 6f 61 72 64 |oard$(x,1)+board| 00001440 24 28 78 2c 32 29 2b 62 6f 61 72 64 24 28 78 2c |$(x,2)+board$(x,| 00001450 33 29 3a ed 3a e3 79 3d 31 b8 33 3a e7 62 6f 61 |3):.:.y=1.3:.boa| 00001460 72 64 24 28 31 2c 79 29 3d 62 6f 61 72 64 24 28 |rd$(1,y)=board$(| 00001470 32 2c 79 29 80 62 6f 61 72 64 24 28 32 2c 79 29 |2,y).board$(2,y)| 00001480 3d 62 6f 61 72 64 24 28 33 2c 79 29 80 62 6f 61 |=board$(3,y).boa| 00001490 72 64 24 28 31 2c 79 29 3c 3e 22 22 8c 77 24 3d |rd$(1,y)<>"".w$=| 000014a0 62 6f 61 72 64 24 28 33 2c 79 29 0d 00 84 55 ed |board$(3,y)...U.| 000014b0 3a e7 62 6f 61 72 64 24 28 31 2c 31 29 3d 62 6f |:.board$(1,1)=bo| 000014c0 61 72 64 24 28 32 2c 32 29 80 62 6f 61 72 64 24 |ard$(2,2).board$| 000014d0 28 32 2c 32 29 3d 62 6f 61 72 64 24 28 33 2c 33 |(2,2)=board$(3,3| 000014e0 29 80 62 6f 61 72 64 24 28 31 2c 31 29 3c 3e 22 |).board$(1,1)<>"| 000014f0 22 8c 77 24 3d 62 6f 61 72 64 24 28 33 2c 33 29 |".w$=board$(3,3)| 00001500 0d 00 85 53 e7 62 6f 61 72 64 24 28 33 2c 31 29 |...S.board$(3,1)| 00001510 3d 62 6f 61 72 64 24 28 32 2c 32 29 80 62 6f 61 |=board$(2,2).boa| 00001520 72 64 24 28 32 2c 32 29 3d 62 6f 61 72 64 24 28 |rd$(2,2)=board$(| 00001530 31 2c 33 29 80 62 6f 61 72 64 24 28 33 2c 31 29 |1,3).board$(3,1)| 00001540 3c 3e 22 22 8c 77 24 3d 62 6f 61 72 64 24 28 33 |<>"".w$=board$(3| 00001550 2c 31 29 0d 00 86 19 e7 77 24 3d 22 22 80 a9 28 |,1).....w$=""..(| 00001560 61 24 29 3d 39 8c 77 24 3d 22 6e 22 0d 00 87 07 |a$)=9.w$="n"....| 00001570 3d 77 24 0d 00 88 20 dd f2 63 68 65 63 6b 73 6f |=w$... ..checkso| 00001580 63 6b 65 74 73 3a e7 63 6f 6e 6e 65 63 74 24 3d |ckets:.connect$=| 00001590 22 22 8c 0d 00 89 2c 73 6f 63 6b 3d a4 73 6f 63 |""....,sock=.soc| 000015a0 6b 65 74 5f 61 63 63 65 70 74 28 6c 69 73 74 65 |ket_accept(liste| 000015b0 6e 65 72 29 3a e7 73 6f 63 6b 3c 3e 2d 31 8c 0d |ner):.sock<>-1..| 000015c0 00 8a 54 63 6f 6e 6e 65 63 74 24 3d a4 73 6f 63 |..Tconnect$=.soc| 000015d0 6b 65 74 5f 67 65 74 70 65 65 72 6e 61 6d 65 28 |ket_getpeername(| 000015e0 73 6f 63 6b 29 3a f2 73 65 74 69 63 6f 6e 74 65 |sock):.seticonte| 000015f0 78 74 28 6f 78 6f 77 69 6e 25 2c 26 44 2c 63 6f |xt(oxowin%,&D,co| 00001600 6e 6e 65 63 74 24 29 3a f2 72 65 73 65 74 28 22 |nnect$):.reset("| 00001610 78 22 29 0d 00 8b 05 cd 0d 00 8c 28 cc 3a 73 3d |x")........(.:s=| 00001620 a4 73 6f 63 6b 65 74 5f 61 63 63 65 70 74 28 6c |.socket_accept(l| 00001630 69 73 74 65 6e 65 72 29 3a e7 73 3c 3e 2d 31 8c |istener):.s<>-1.| 00001640 0d 00 8d 44 f2 73 6f 63 6b 65 74 5f 73 65 6e 64 |...D.socket_send| 00001650 6c 69 6e 65 28 73 2c 22 41 6c 6c 20 63 6f 6e 6e |line(s,"All conn| 00001660 65 63 74 69 6f 6e 73 20 61 72 65 20 74 61 6b 65 |ections are take| 00001670 6e 22 29 3a f2 73 6f 63 6b 65 74 5f 63 6c 6f 73 |n"):.socket_clos| 00001680 65 28 73 29 0d 00 8e 20 cd 3a e7 a4 73 6f 63 6b |e(s)... .:..sock| 00001690 65 74 5f 69 6e 62 75 66 66 65 72 28 73 6f 63 6b |et_inbuffer(sock| 000016a0 29 3e 30 8c 0d 00 8f 4a 62 75 66 25 3d a4 63 6c |)>0....Jbuf%=.cl| 000016b0 61 69 6d 28 26 38 30 30 29 3a 6c 65 6e 3d a4 73 |aim(&800):len=.s| 000016c0 6f 63 6b 65 74 5f 72 65 61 64 64 61 74 61 28 73 |ocket_readdata(s| 000016d0 6f 63 6b 2c 62 75 66 25 29 3a 74 79 70 65 3d 62 |ock,buf%):type=b| 000016e0 75 66 25 3f 30 3a c8 8e 73 74 61 74 65 ca 0d 00 |uf%?0:..state...| 000016f0 90 27 c9 30 3a e7 74 79 70 65 3d 26 36 46 80 62 |.'.0:.type=&6F.b| 00001700 75 66 25 3f 31 3d 26 37 38 80 62 75 66 25 3f 32 |uf%?1=&78.buf%?2| 00001710 3d 26 36 46 8c 0d 00 91 1d 73 74 61 74 65 3d 31 |=&6F.....state=1| 00001720 3a f2 6f 70 65 6e 77 69 6e 28 6f 78 6f 77 69 6e |:.openwin(oxowin| 00001730 25 29 0d 00 92 4f cc 3a f2 73 6f 63 6b 65 74 5f |%)...O.:.socket_| 00001740 73 65 6e 64 6c 69 6e 65 28 73 6f 63 6b 2c 22 49 |sendline(sock,"I| 00001750 6e 76 61 6c 69 64 20 72 65 73 70 6f 6e 73 65 22 |nvalid response"| 00001760 29 3a f2 73 6f 63 6b 65 74 5f 63 6c 6f 73 65 28 |):.socket_close(| 00001770 73 6f 63 6b 29 3a 63 6f 6e 6e 65 63 74 24 3d 22 |sock):connect$="| 00001780 22 0d 00 93 05 cd 0d 00 94 11 c9 31 3a c8 8e bd |"..........1:...| 00001790 28 74 79 70 65 29 ca 0d 00 95 2b c9 22 4d 22 3a |(type)....+."M":| 000017a0 f2 70 6c 61 63 65 70 69 65 63 65 28 62 75 66 25 |.placepiece(buf%| 000017b0 3f 31 2c 62 75 66 25 3f 32 2c 70 6c 61 79 65 72 |?1,buf%?2,player| 000017c0 24 29 0d 00 96 14 c9 22 43 22 3a f2 63 6c 65 61 |$)....."C":.clea| 000017d0 72 62 6f 61 72 64 0d 00 97 3f c9 22 51 22 3a 72 |rboard...?."Q":r| 000017e0 65 70 6c 79 3d a4 65 72 72 6f 72 62 6f 78 28 22 |eply=.errorbox("| 000017f0 3e 4d 65 73 73 61 67 65 22 2c 22 3e 47 61 6d 65 |>Message",">Game| 00001800 4f 76 65 72 22 2c 31 38 29 3a f2 64 69 73 63 6f |Over",18):.disco| 00001810 6e 6e 65 63 74 0d 00 98 50 c9 22 54 22 3a 62 75 |nnect...P."T":bu| 00001820 66 25 3f 6c 65 6e 3d 30 3a 6d 24 3d c0 a4 73 74 |f%?len=0:m$=..st| 00001830 72 69 6e 67 30 28 62 75 66 25 2b 31 29 2c 33 39 |ring0(buf%+1),39| 00001840 29 3a f2 73 65 74 69 63 6f 6e 74 65 78 74 28 6d |):.seticontext(m| 00001850 73 67 77 69 6e 25 2c 30 2c 6d 24 29 3a f2 6f 70 |sgwin%,0,m$):.op| 00001860 65 6e 6d 73 67 0d 00 99 29 7f 3a f2 73 6f 63 6b |enmsg...).:.sock| 00001870 65 74 5f 73 65 6e 64 6c 69 6e 65 28 73 6f 63 6b |et_sendline(sock| 00001880 2c 22 49 6d 70 6f 73 74 65 72 20 21 22 29 0d 00 |,"Imposter !")..| 00001890 9a 05 cb 0d 00 9b 14 cb 3a f2 72 65 6c 65 61 73 |........:.releas| 000018a0 65 28 62 75 66 25 29 0d 00 9c 19 cc 3a e7 a4 73 |e(buf%).....:..s| 000018b0 6f 63 6b 65 74 5f 65 6f 66 28 73 6f 63 6b 29 8c |ocket_eof(sock).| 000018c0 0d 00 9d 38 f2 64 69 73 63 6f 6e 6e 65 63 74 3a |...8.disconnect:| 000018d0 72 65 70 6c 79 3d a4 65 72 72 6f 72 62 6f 78 28 |reply=.errorbox(| 000018e0 22 3e 4d 65 73 73 61 67 65 22 2c 22 3e 43 6c 6f |">Message",">Clo| 000018f0 73 65 64 22 2c 31 38 29 0d 00 9e 05 cd 0d 00 9f |sed",18)........| 00001900 05 cd 0d 00 a0 07 cd 3a e1 0d 00 a1 d6 dd f2 64 |.......:.......d| 00001910 6f 63 6f 6e 6e 65 63 74 3a 68 6f 73 74 24 3d a4 |oconnect:host$=.| 00001920 67 65 74 69 63 6f 6e 74 65 78 74 28 63 6f 6e 6e |geticontext(conn| 00001930 65 63 74 77 69 6e 25 2c 31 29 3a 70 6f 72 74 24 |ectwin%,1):port$| 00001940 3d a4 67 65 74 69 63 6f 6e 74 65 78 74 28 63 6f |=.geticontext(co| 00001950 6e 6e 65 63 74 77 69 6e 25 2c 33 29 3a 69 70 3d |nnectwin%,3):ip=| 00001960 a4 69 6e 65 74 5f 67 65 74 68 6f 73 74 62 79 6e |.inet_gethostbyn| 00001970 61 6d 65 28 68 6f 73 74 24 29 3a 70 6f 72 74 3d |ame(host$):port=| 00001980 a4 69 6e 65 74 5f 67 65 74 73 65 72 76 62 79 6e |.inet_getservbyn| 00001990 61 6d 65 28 70 6f 72 74 24 2c 22 74 63 70 22 29 |ame(port$,"tcp")| 000019a0 3a 73 6f 63 6b 3d a4 73 6f 63 6b 65 74 5f 63 72 |:sock=.socket_cr| 000019b0 65 61 74 65 69 6e 65 74 3a 6f 6b 3d a4 73 6f 63 |eateinet:ok=.soc| 000019c0 6b 65 74 5f 63 6f 6e 6e 65 63 74 28 73 6f 63 6b |ket_connect(sock| 000019d0 2c 69 70 2c 70 6f 72 74 29 3a e7 ac 6f 6b 8c 0d |,ip,port):..ok..| 000019e0 00 a2 43 f2 73 6f 63 6b 65 74 5f 63 6c 6f 73 65 |..C.socket_close| 000019f0 28 73 6f 63 6b 29 3a 72 65 70 6c 79 3d a4 65 72 |(sock):reply=.er| 00001a00 72 6f 72 62 6f 78 28 22 3e 4d 65 73 73 61 67 65 |rorbox(">Message| 00001a10 22 2c 22 3e 4e 6f 43 6f 6e 6e 65 63 74 22 2c 31 |",">NoConnect",1| 00001a20 38 29 0d 00 a3 56 cc 3a 63 6f 6e 6e 65 63 74 24 |8)...V.:connect$| 00001a30 3d a4 73 6f 63 6b 65 74 5f 67 65 74 70 65 65 72 |=.socket_getpeer| 00001a40 6e 61 6d 65 28 73 6f 63 6b 29 3a f2 73 65 74 69 |name(sock):.seti| 00001a50 63 6f 6e 74 65 78 74 28 6f 78 6f 77 69 6e 25 2c |context(oxowin%,| 00001a60 26 44 2c 63 6f 6e 6e 65 63 74 24 29 3a f2 72 65 |&D,connect$):.re| 00001a70 73 65 74 28 22 6f 22 29 0d 00 a4 07 cd 3a e1 0d |set("o").....:..| 00001a80 00 a5 c5 dd f2 64 69 73 63 6f 6e 6e 65 63 74 3a |.....disconnect:| 00001a90 f2 73 6f 63 6b 65 74 5f 63 6c 6f 73 65 28 73 6f |.socket_close(so| 00001aa0 63 6b 29 3a 63 6f 6e 6e 65 63 74 24 3d 22 22 3a |ck):connect$="":| 00001ab0 77 65 61 72 65 24 3d 22 22 3a f2 75 70 64 61 74 |weare$="":.updat| 00001ac0 65 74 69 74 6c 65 3a f2 63 6c 6f 73 65 6d 73 67 |etitle:.closemsg| 00001ad0 3a f2 63 6c 6f 73 65 73 65 6e 64 3a f2 6d 65 6e |:.closesend:.men| 00001ae0 75 73 68 61 64 65 28 6d 61 69 6e 6d 65 6e 75 25 |ushade(mainmenu%| 00001af0 2c 30 2c 31 29 3a f2 6d 65 6e 75 73 68 61 64 65 |,0,1):.menushade| 00001b00 28 6d 61 69 6e 6d 65 6e 75 25 2c 31 2c 31 29 3a |(mainmenu%,1,1):| 00001b10 f2 6d 65 6e 75 73 68 61 64 65 28 6d 61 69 6e 6d |.menushade(mainm| 00001b20 65 6e 75 25 2c 32 2c 31 29 3a f2 69 63 6f 6e 73 |enu%,2,1):.icons| 00001b30 68 61 64 65 28 6f 78 6f 77 69 6e 25 2c 31 36 2c |hade(oxowin%,16,| 00001b40 31 29 3a e1 0d 00 a6 f9 dd f2 72 65 73 65 74 28 |1):.......reset(| 00001b50 78 24 29 3a 3f 62 25 3d 26 36 46 3a 62 25 3f 31 |x$):?b%=&6F:b%?1| 00001b60 3d 26 37 38 3a 62 25 3f 32 3d 26 36 46 3a f2 73 |=&78:b%?2=&6F:.s| 00001b70 6f 63 6b 65 74 5f 73 65 6e 64 64 61 74 61 28 73 |ocket_senddata(s| 00001b80 6f 63 6b 2c 62 25 2c 33 29 3a 77 65 61 72 65 24 |ock,b%,3):weare$| 00001b90 3d 78 24 3a 70 6c 61 79 65 72 24 3d 22 78 22 3a |=x$:player$="x":| 00001ba0 f2 63 6c 65 61 72 62 6f 61 72 64 3a 77 65 77 6f |.clearboard:wewo| 00001bb0 6e 3d 30 3a 74 68 65 79 77 6f 6e 3d 30 3a 73 74 |n=0:theywon=0:st| 00001bc0 61 74 65 3d 30 3a f2 75 70 64 61 74 65 74 69 74 |ate=0:.updatetit| 00001bd0 6c 65 3a f2 75 70 64 61 74 65 73 63 6f 72 65 3a |le:.updatescore:| 00001be0 f2 63 6c 6f 73 65 77 69 6e 28 63 6f 6e 6e 65 63 |.closewin(connec| 00001bf0 74 77 69 6e 25 29 3a f2 63 6c 6f 73 65 77 69 6e |twin%):.closewin| 00001c00 28 6f 78 6f 77 69 6e 25 29 3a f2 6d 65 6e 75 73 |(oxowin%):.menus| 00001c10 68 61 64 65 28 6d 61 69 6e 6d 65 6e 75 25 2c 30 |hade(mainmenu%,0| 00001c20 2c 31 29 3a f2 6d 65 6e 75 73 68 61 64 65 28 6d |,1):.menushade(m| 00001c30 61 69 6e 6d 65 6e 75 25 2c 31 2c 30 29 0d 00 a7 |ainmenu%,1,0)...| 00001c40 38 f2 6d 65 6e 75 73 68 61 64 65 28 6d 61 69 6e |8.menushade(main| 00001c50 6d 65 6e 75 25 2c 32 2c 30 29 3a f2 69 63 6f 6e |menu%,2,0):.icon| 00001c60 73 68 61 64 65 28 6f 78 6f 77 69 6e 25 2c 31 36 |shade(oxowin%,16| 00001c70 2c 30 29 3a e1 0d 00 a8 70 dd f2 64 6f 73 65 6e |,0):....p..dosen| 00001c80 64 3a f2 63 6c 6f 73 65 73 65 6e 64 3a 6d 24 3d |d:.closesend:m$=| 00001c90 a4 67 65 74 69 63 6f 6e 74 65 78 74 28 73 65 6e |.geticontext(sen| 00001ca0 64 77 69 6e 25 2c 30 29 3a 24 28 62 25 29 3d 22 |dwin%,0):$(b%)="| 00001cb0 54 22 3a 24 28 62 25 2b 31 29 3d 6d 24 2b bd 26 |T":$(b%+1)=m$+.&| 00001cc0 44 3a f2 73 6f 63 6b 65 74 5f 73 65 6e 64 64 61 |D:.socket_sendda| 00001cd0 74 61 28 73 6f 63 6b 2c 62 25 2c 33 2b a9 28 6d |ta(sock,b%,3+.(m| 00001ce0 24 29 29 3a e1 0d 00 a9 3b dd f2 6f 70 65 6e 73 |$)):....;..opens| 00001cf0 65 6e 64 3a f2 67 65 74 63 61 72 65 74 70 6f 73 |end:.getcaretpos| 00001d00 28 77 69 6e 2c 69 63 6f 6e 2c 63 68 61 72 73 29 |(win,icon,chars)| 00001d10 3a e7 77 69 6e 3c 3e 73 65 6e 64 77 69 6e 25 8c |:.win<>sendwin%.| 00001d20 0d 00 aa 18 c8 99 26 34 30 30 44 33 2c 2c 6c 61 |......&400D3,,la| 00001d30 73 74 63 61 72 65 74 25 0d 00 ab 52 cd 3a f2 73 |stcaret%...R.:.s| 00001d40 65 74 69 63 6f 6e 74 65 78 74 28 73 65 6e 64 77 |eticontext(sendw| 00001d50 69 6e 25 2c 30 2c 22 22 29 3a f2 6f 70 65 6e 77 |in%,0,""):.openw| 00001d60 69 6e 28 73 65 6e 64 77 69 6e 25 29 3a f2 73 65 |in(sendwin%):.se| 00001d70 74 63 61 72 65 74 70 6f 73 28 73 65 6e 64 77 69 |tcaretpos(sendwi| 00001d80 6e 25 2c 30 2c 2d 31 29 3a e1 0d 00 ac 3b dd f2 |n%,0,-1):....;..| 00001d90 63 6c 6f 73 65 73 65 6e 64 3a f2 67 65 74 63 61 |closesend:.getca| 00001da0 72 65 74 70 6f 73 28 77 69 6e 2c 69 63 6f 6e 2c |retpos(win,icon,| 00001db0 63 68 61 72 73 29 3a e7 77 69 6e 3d 73 65 6e 64 |chars):.win=send| 00001dc0 77 69 6e 25 8c 0d 00 ad 5d c8 99 26 36 30 30 44 |win%....]..&600D| 00001dd0 32 2c 6c 61 73 74 63 61 72 65 74 25 21 30 2c 6c |2,lastcaret%!0,l| 00001de0 61 73 74 63 61 72 65 74 25 21 34 2c 6c 61 73 74 |astcaret%!4,last| 00001df0 63 61 72 65 74 25 21 38 2c 6c 61 73 74 63 61 72 |caret%!8,lastcar| 00001e00 65 74 25 21 26 43 2c 6c 61 73 74 63 61 72 65 74 |et%!&C,lastcaret| 00001e10 25 21 31 36 2c 6c 61 73 74 63 61 72 65 74 25 21 |%!16,lastcaret%!| 00001e20 32 30 0d 00 ae 1b cd 3a f2 63 6c 6f 73 65 77 69 |20.....:.closewi| 00001e30 6e 28 73 65 6e 64 77 69 6e 25 29 3a e1 0d 00 af |n(sendwin%):....| 00001e40 39 dd f2 6f 70 65 6e 6d 73 67 3a f2 67 65 74 63 |9..openmsg:.getc| 00001e50 61 72 65 74 70 6f 73 28 77 69 6e 2c 69 63 6f 6e |aretpos(win,icon| 00001e60 2c 63 68 61 72 73 29 3a e7 77 69 6e 3c 3e 6d 73 |,chars):.win<>ms| 00001e70 67 77 69 6e 25 8c 0d 00 b0 18 c8 99 26 34 30 30 |gwin%.......&400| 00001e80 44 33 2c 2c 6c 61 73 74 63 61 72 65 74 25 0d 00 |D3,,lastcaret%..| 00001e90 b1 35 cd 3a f2 6f 70 65 6e 77 69 6e 28 6d 73 67 |.5.:.openwin(msg| 00001ea0 77 69 6e 25 29 3a f2 73 65 74 63 61 72 65 74 70 |win%):.setcaretp| 00001eb0 6f 73 28 6d 73 67 77 69 6e 25 2c 2d 31 2c 2d 31 |os(msgwin%,-1,-1| 00001ec0 29 3a e1 0d 00 b2 1c dd f2 63 6c 6f 73 65 6d 73 |):.......closems| 00001ed0 67 3a e7 77 69 6e 3d 6d 73 67 77 69 6e 25 8c 0d |g:.win=msgwin%..| 00001ee0 00 b3 5d c8 99 26 36 30 30 44 32 2c 6c 61 73 74 |..]..&600D2,last| 00001ef0 63 61 72 65 74 25 21 30 2c 6c 61 73 74 63 61 72 |caret%!0,lastcar| 00001f00 65 74 25 21 34 2c 6c 61 73 74 63 61 72 65 74 25 |et%!4,lastcaret%| 00001f10 21 38 2c 6c 61 73 74 63 61 72 65 74 25 21 26 43 |!8,lastcaret%!&C| 00001f20 2c 6c 61 73 74 63 61 72 65 74 25 21 31 36 2c 6c |,lastcaret%!16,l| 00001f30 61 73 74 63 61 72 65 74 25 21 32 30 0d 00 b4 1a |astcaret%!20....| 00001f40 cd 3a f2 63 6c 6f 73 65 77 69 6e 28 6d 73 67 77 |.:.closewin(msgw| 00001f50 69 6e 25 29 3a e1 0d 11 8b fc dd f2 69 6e 69 74 |in%):.......init| 00001f60 68 65 61 70 3a c8 99 38 31 b8 68 5f 70 61 67 65 |heap:..81.h_page| 00001f70 3a 68 5f 73 69 7a 65 3d 68 5f 70 61 67 65 3a 68 |:h_size=h_page:h| 00001f80 5f 73 74 61 72 74 3d 93 3a 68 5f 72 73 69 7a 65 |_start=.:h_rsize| 00001f90 3d 32 3a 68 5f 66 75 6c 6c 3d 30 3a c8 99 26 34 |=2:h_full=0:..&4| 00001fa0 30 30 45 43 2c 2d 31 2c 2d 31 b8 68 5f 61 70 70 |00EC,-1,-1.h_app| 00001fb0 62 61 73 65 3a c8 99 26 34 30 30 45 43 2c 68 5f |base:..&400EC,h_| 00001fc0 61 70 70 62 61 73 65 2b 68 5f 73 69 7a 65 2c 2d |appbase+h_size,-| 00001fd0 31 3a c8 99 32 39 2c 30 2c 68 5f 73 74 61 72 74 |1:..29,0,h_start| 00001fe0 2c 2c 68 5f 73 69 7a 65 3a c8 99 32 39 2c 32 2c |,,h_size:..29,2,| 00001ff0 68 5f 73 74 61 72 74 2c 2c 34 2a 68 5f 72 73 69 |h_start,,4*h_rsi| 00002000 7a 65 2b 34 b8 2c 2c 68 5f 72 65 6c 6f 63 3a 68 |ze+4.,,h_reloc:h| 00002010 5f 72 65 6c 6f 63 2b 3d 34 3a 68 5f 72 65 6c 6f |_reloc+=4:h_relo| 00002020 63 21 2d 34 3d 26 34 33 34 46 34 43 35 32 3a e3 |c!-4=&434F4C52:.| 00002030 49 3d 30 b8 68 5f 72 73 69 7a 65 2a 34 2d 34 88 |I=0.h_rsize*4-4.| 00002040 34 3a 68 5f 72 65 6c 6f 63 21 49 3d 2d 31 3a ed |4:h_reloc!I=-1:.| 00002050 3a e1 0d 11 8c 3f dd f2 68 65 61 70 5f 66 72 65 |:....?..heap_fre| 00002060 65 28 f8 6d 61 78 2c f8 66 72 65 65 29 3a c8 99 |e(.max,.free):..| 00002070 32 39 2c 31 2c 68 5f 73 74 61 72 74 b8 2c 2c 2c |29,1,h_start.,,,| 00002080 66 72 65 65 3a 6d 61 78 3d 68 5f 73 69 7a 65 3a |free:max=h_size:| 00002090 e1 0d 11 8d 66 dd a4 65 6e 6c 61 72 67 65 68 65 |....f..enlargehe| 000020a0 61 70 3a ea 6f 6b 2c 6e 65 77 3a c8 99 26 36 30 |ap:.ok,new:..&60| 000020b0 30 45 43 2c 68 5f 61 70 70 62 61 73 65 2b 68 5f |0EC,h_appbase+h_| 000020c0 73 69 7a 65 2b 68 5f 70 61 67 65 2c 2d 31 b8 6e |size+h_page,-1.n| 000020d0 65 77 3b 6f 6b 3a e7 28 6f 6b 80 31 29 3d 31 84 |ew;ok:.(ok.1)=1.| 000020e0 6e 65 77 3d 68 5f 61 70 70 62 61 73 65 2b 68 5f |new=h_appbase+h_| 000020f0 73 69 7a 65 8c 3d a3 0d 11 8e 2c 68 5f 73 69 7a |size.=....,h_siz| 00002100 65 2b 3d 68 5f 70 61 67 65 3a c8 99 32 39 2c 35 |e+=h_page:..29,5| 00002110 2c 68 5f 73 74 61 72 74 2c 2c 68 5f 70 61 67 65 |,h_start,,h_page| 00002120 3a 3d b9 0d 11 8f 43 dd a4 63 6c 61 69 6d 28 73 |:=....C..claim(s| 00002130 69 7a 65 29 3a ea 6c 6f 63 2c 62 69 67 2c 6f 6b |ize):.loc,big,ok| 00002140 2c 72 3a 6f 6b 3d b9 3a e7 73 69 7a 65 3c 30 8c |,r:ok=.:.size<0.| 00002150 72 3d b9 3a 73 69 7a 65 3d 94 28 73 69 7a 65 29 |r=.:size=.(size)| 00002160 2b 34 8b 72 3d a3 0d 11 90 56 c8 99 32 39 2c 31 |+4.r=....V..29,1| 00002170 2c 68 5f 73 74 61 72 74 b8 2c 2c 62 69 67 3a c8 |,h_start.,,big:.| 00002180 95 73 69 7a 65 3e 62 69 67 80 6f 6b 3a 6f 6b 3d |.size>big.ok:ok=| 00002190 a4 65 6e 6c 61 72 67 65 68 65 61 70 3a c8 99 32 |.enlargeheap:..2| 000021a0 39 2c 31 2c 68 5f 73 74 61 72 74 b8 2c 2c 62 69 |9,1,h_start.,,bi| 000021b0 67 3a ce 3a e7 ac 6f 6b 8c 3d 2d 31 0d 11 91 33 |g:.:..ok.=-1...3| 000021c0 c8 99 26 32 30 30 31 44 2c 32 2c 68 5f 73 74 61 |..&2001D,2,h_sta| 000021d0 72 74 2c 2c 73 69 7a 65 b8 2c 2c 6c 6f 63 3b 6f |rt,,size.,,loc;o| 000021e0 6b 3a e7 28 6f 6b 80 31 29 3d 31 8c 3d 2d 31 0d |k:.(ok.1)=1.=-1.| 000021f0 11 92 07 e7 72 8c 0d 11 93 2a 21 6c 6f 63 3d 26 |....r....*!loc=&| 00002200 34 33 34 46 34 43 35 32 3a 6c 6f 63 2b 3d 34 3a |434F4C52:loc+=4:| 00002210 e7 68 5f 66 75 6c 6c 3d 68 5f 72 73 69 7a 65 8c |.h_full=h_rsize.| 00002220 0d 11 94 87 68 5f 72 65 6c 6f 63 3d a4 65 78 74 |....h_reloc=.ext| 00002230 65 6e 64 28 68 5f 72 65 6c 6f 63 2c 34 2a 31 36 |end(h_reloc,4*16| 00002240 29 3a 68 5f 72 73 69 7a 65 2b 3d 31 36 3a e7 28 |):h_rsize+=16:.(| 00002250 68 5f 72 65 6c 6f 63 80 31 29 3d 30 8c e3 72 3d |h_reloc.1)=0..r=| 00002260 68 5f 66 75 6c 6c b8 68 5f 72 73 69 7a 65 2d 31 |h_full.h_rsize-1| 00002270 3a 68 5f 72 65 6c 6f 63 21 28 72 2a 34 29 3d 2d |:h_reloc!(r*4)=-| 00002280 31 3a ed 8b 68 5f 72 65 6c 6f 63 2d 3d 31 3a c8 |1:..h_reloc-=1:.| 00002290 99 32 39 2c 33 2c 68 5f 73 74 61 72 74 2c 6c 6f |.29,3,h_start,lo| 000022a0 63 2d 34 3a 3d 2d 31 0d 11 95 26 cd 3a 68 5f 72 |c-4:=-1...&.:h_r| 000022b0 65 6c 6f 63 21 28 68 5f 66 75 6c 6c 2a 34 29 3d |eloc!(h_full*4)=| 000022c0 6c 6f 63 3a 68 5f 66 75 6c 6c 2b 3d 31 0d 11 96 |loc:h_full+=1...| 000022d0 0a cd 3a 3d 6c 6f 63 0d 11 97 21 dd f2 72 65 6c |..:=loc...!..rel| 000022e0 65 61 73 65 28 f8 6c 6f 63 29 3a ea 66 75 6c 6c |ease(.loc):.full| 000022f0 3a e7 6c 6f 63 3e 30 8c 0d 11 98 18 e7 6c 6f 63 |:.loc>0......loc| 00002300 3e 68 5f 73 74 61 72 74 2b 68 5f 73 69 7a 65 8c |>h_start+h_size.| 00002310 0d 11 99 0f c8 99 33 30 2c 37 2c 2c 6c 6f 63 0d |......30,7,,loc.| 00002320 11 9a 18 cc 3a e7 6c 6f 63 21 2d 34 3d 26 34 33 |....:.loc!-4=&43| 00002330 34 46 34 43 35 32 8c 0d 11 9b 7f 66 75 6c 6c 3d |4F4C52.....full=| 00002340 30 3a c8 95 66 75 6c 6c 3c 68 5f 66 75 6c 6c 80 |0:..full<h_full.| 00002350 68 5f 72 65 6c 6f 63 21 28 66 75 6c 6c 2a 34 29 |h_reloc!(full*4)| 00002360 3c 3e 6c 6f 63 3a 66 75 6c 6c 2b 3d 31 3a ce 3a |<>loc:full+=1:.:| 00002370 e7 66 75 6c 6c 3d 68 5f 66 75 6c 6c 8c 85 26 38 |.full=h_full..&8| 00002380 30 32 2c 22 41 74 74 65 6d 70 74 20 74 6f 20 72 |02,"Attempt to r| 00002390 65 6c 65 61 73 65 20 75 6e 6b 6e 6f 77 6e 20 72 |elease unknown r| 000023a0 65 6c 6f 63 61 74 61 62 6c 65 20 68 65 61 70 20 |elocatable heap | 000023b0 62 6c 6f 63 6b 22 0d 11 9c 4e 6c 6f 63 2d 3d 34 |block"...Nloc-=4| 000023c0 3a 68 5f 66 75 6c 6c 2d 3d 31 3a 68 5f 72 65 6c |:h_full-=1:h_rel| 000023d0 6f 63 21 28 66 75 6c 6c 2a 34 29 3d 68 5f 72 65 |oc!(full*4)=h_re| 000023e0 6c 6f 63 21 28 68 5f 66 75 6c 6c 2a 34 29 3a 68 |loc!(h_full*4):h| 000023f0 5f 72 65 6c 6f 63 21 28 68 5f 66 75 6c 6c 2a 34 |_reloc!(h_full*4| 00002400 29 3d 2d 31 0d 11 9d 18 cd 3a c8 99 32 39 2c 33 |)=-1.....:..29,3| 00002410 2c 68 5f 73 74 61 72 74 2c 6c 6f 63 0d 11 9e 0c |,h_start,loc....| 00002420 cd 3a 6c 6f 63 3d 2d 31 0d 11 9f 07 cd 3a e1 0d |.:loc=-1.....:..| 00002430 11 a0 72 dd a4 65 78 74 65 6e 64 28 6c 6f 63 2c |..r..extend(loc,| 00002440 73 69 7a 65 29 3a ea 6e 65 77 2c 6f 6b 2c 66 75 |size):.new,ok,fu| 00002450 6c 6c 3a 66 75 6c 6c 3d a3 3a e7 6c 6f 63 21 2d |ll:full=.:.loc!-| 00002460 34 3c 3e 26 34 33 34 46 34 43 35 32 8c 85 26 38 |4<>&434F4C52..&8| 00002470 30 32 2c 22 41 74 74 65 6d 70 74 20 74 6f 20 65 |02,"Attempt to e| 00002480 78 74 65 6e 64 20 6e 6f 6e 2d 72 65 6c 6f 63 61 |xtend non-reloca| 00002490 74 61 62 6c 65 20 68 65 61 70 20 62 6c 6f 63 6b |table heap block| 000024a0 22 0d 11 a1 4a f5 3a c8 99 26 32 30 30 31 44 2c |"...J.:..&2001D,| 000024b0 34 2c 68 5f 73 74 61 72 74 2c 6c 6f 63 2d 34 2c |4,h_start,loc-4,| 000024c0 73 69 7a 65 b8 6b 2c 2c 6e 65 77 3b 6f 6b 3a e7 |size.k,,new;ok:.| 000024d0 28 6f 6b 80 31 29 3d 31 8c 66 75 6c 6c 3d ac a4 |(ok.1)=1.full=..| 000024e0 65 6e 6c 61 72 67 65 68 65 61 70 0d 11 a2 19 fd |enlargeheap.....| 000024f0 28 6f 6b 80 31 29 3d 30 84 66 75 6c 6c 3a e7 66 |(ok.1)=0.full:.f| 00002500 75 6c 6c 8c 0d 11 a3 0d 6e 65 77 3d 6c 6f 63 2d |ull.....new=loc-| 00002510 33 0d 11 a4 14 cc 3a e7 6c 6f 63 3c 3e 68 5f 72 |3.....:.loc<>h_r| 00002520 65 6c 6f 63 8c 0d 11 a5 6c 66 75 6c 6c 3d 30 3a |eloc....lfull=0:| 00002530 c8 95 66 75 6c 6c 3c 68 5f 66 75 6c 6c 80 68 5f |..full<h_full.h_| 00002540 72 65 6c 6f 63 21 28 66 75 6c 6c 2a 34 29 3c 3e |reloc!(full*4)<>| 00002550 6c 6f 63 3a 66 75 6c 6c 2b 3d 31 3a ce 3a e7 66 |loc:full+=1:.:.f| 00002560 75 6c 6c 3d 68 5f 66 75 6c 6c 8c 85 26 38 30 32 |ull=h_full..&802| 00002570 2c 22 55 6e 6b 6e 6f 77 6e 20 72 65 6c 6f 63 61 |,"Unknown reloca| 00002580 74 61 62 6c 65 20 68 65 61 70 20 62 6c 6f 63 6b |table heap block| 00002590 22 0d 11 a6 1a 68 5f 72 65 6c 6f 63 21 28 66 75 |"....h_reloc!(fu| 000025a0 6c 6c 2a 34 29 3d 6e 65 77 2b 34 0d 11 a7 05 cd |ll*4)=new+4.....| 000025b0 0d 11 a8 0c cd 3a 3d 6e 65 77 2b 34 0d 11 a9 5d |.....:=new+4...]| 000025c0 dd f2 69 6e 69 74 6c 69 62 72 61 72 79 3a de 6d |..initlibrary:.m| 000025d0 65 73 73 61 67 65 5f 62 75 66 66 65 72 25 26 34 |essage_buffer%&4| 000025e0 30 30 3a 72 6d 61 66 6f 6e 74 61 72 65 61 3d 2d |00:rmafontarea=-| 000025f0 32 3a 6d 73 67 62 75 66 66 65 72 25 3d 2d 31 3a |2:msgbuffer%=-1:| 00002600 6d 73 67 62 75 66 66 65 72 32 25 3d 2d 31 3a 66 |msgbuffer2%=-1:f| 00002610 74 62 6c 6b 3d 2d 32 3a e1 0d 11 aa 26 dd f2 6e |tblk=-2:....&..n| 00002620 6f 74 65 6d 65 73 73 61 67 65 28 6e 29 6d 65 73 |otemessage(n)mes| 00002630 73 61 67 65 6c 69 73 74 25 21 30 3d 6e 3a e1 0d |sagelist%!0=n:..| 00002640 11 ab e0 dd a4 6c 6f 61 64 74 65 6d 70 6c 61 74 |.....loadtemplat| 00002650 65 28 6e 24 2c 73 70 72 62 6c 6b 25 29 ea 74 73 |e(n$,sprblk%).ts| 00002660 69 7a 65 25 2c 62 6c 6b 25 2c 6f 6b 25 3a c8 99 |ize%,blk%,ok%:..| 00002670 26 34 30 30 44 39 2c 2c 41 70 70 64 69 72 24 2b |&400D9,,Appdir$+| 00002680 22 2e 54 65 6d 70 6c 61 74 65 73 22 3a c8 99 26 |".Templates":..&| 00002690 34 30 30 44 42 2c 2c 30 2c 2c 2c 2c 6e 24 2c 30 |400DB,,0,,,,n$,0| 000026a0 b8 2c 2c 74 73 69 7a 65 25 3a de 62 6c 6b 25 74 |.,,tsize%:.blk%t| 000026b0 73 69 7a 65 25 3a c8 99 26 34 30 30 44 42 2c 2c |size%:..&400DB,,| 000026c0 77 73 70 63 25 2c 62 6c 6b 25 2c 62 6c 6b 25 2b |wspc%,blk%,blk%+| 000026d0 74 73 69 7a 65 25 2c 2d 31 2c 6e 24 2c 30 b8 2c |tsize%,-1,n$,0.,| 000026e0 2c 2c 2c 2c 2c 6f 6b 25 3a c8 99 26 34 30 30 44 |,,,,,ok%:..&400D| 000026f0 41 3a e7 6f 6b 25 3d 30 8c 85 26 38 30 33 2c 22 |A:.ok%=0..&803,"| 00002700 54 65 6d 70 6c 61 74 65 20 66 69 6c 65 20 22 2b |Template file "+| 00002710 6e 24 2b 22 20 6e 6f 74 20 66 6f 75 6e 64 22 0d |n$+" not found".| 00002720 11 ac 2f 77 73 70 63 25 21 36 34 3d 73 70 72 62 |../wspc%!64=sprb| 00002730 6c 6b 25 3a c8 99 26 34 30 30 43 31 2c 2c 77 73 |lk%:..&400C1,,ws| 00002740 70 63 25 b8 62 6c 6b 25 3a 3d 62 6c 6b 25 0d 11 |pc%.blk%:=blk%..| 00002750 ad 3d dd a4 6c 6f 61 64 73 70 72 69 74 65 73 28 |.=..loadsprites(| 00002760 66 69 6c 65 24 29 ea 6c 65 6e 25 2c 6f 25 2c 73 |file$).len%,o%,s| 00002770 70 72 62 6c 6b 25 3a 6f 25 3d 8e 28 66 69 6c 65 |prblk%:o%=.(file| 00002780 24 29 3a e7 6f 25 3d 30 8c 3d 31 0d 11 ae 6d 6c |$):.o%=0.=1...ml| 00002790 65 6e 25 3d a2 23 6f 25 2b 31 36 3a d9 23 6f 25 |en%=.#o%+16:.#o%| 000027a0 3a de 73 70 72 62 6c 6b 25 6c 65 6e 25 3a 21 73 |:.sprblk%len%:!s| 000027b0 70 72 62 6c 6b 25 3d 6c 65 6e 25 3a 73 70 72 62 |prblk%=len%:sprb| 000027c0 6c 6b 25 21 38 3d 30 3a c8 99 34 36 2c 32 36 35 |lk%!8=0:..46,265| 000027d0 2c 73 70 72 62 6c 6b 25 3a c8 99 34 36 2c 32 36 |,sprblk%:..46,26| 000027e0 36 2c 73 70 72 62 6c 6b 25 2c 66 69 6c 65 24 3a |6,sprblk%,file$:| 000027f0 3d 73 70 72 62 6c 6b 25 0d 11 af 6e dd a4 73 79 |=sprblk%...n..sy| 00002800 73 74 65 6d 76 61 72 28 56 61 72 24 29 ea 6c 65 |stemvar(Var$).le| 00002810 6e 3a c8 99 26 32 30 30 32 33 2c 56 61 72 24 2c |n:..&20023,Var$,| 00002820 6d 65 73 73 61 67 65 5f 62 75 66 66 65 72 25 2c |message_buffer%,| 00002830 26 46 46 2c 30 2c 33 b8 2c 2c 6c 65 6e 3a 6d 65 |&FF,0,3.,,len:me| 00002840 73 73 61 67 65 5f 62 75 66 66 65 72 25 3f 6c 65 |ssage_buffer%?le| 00002850 6e 3d 26 44 3a 3d 24 6d 65 73 73 61 67 65 5f 62 |n=&D:=$message_b| 00002860 75 66 66 65 72 25 0d 11 b0 4f dd f2 65 65 72 72 |uffer%...O..eerr| 00002870 6f 72 3a ea 85 3a ee 85 ea 3a f2 63 6c 6f 73 65 |or:..:...:.close| 00002880 6d 65 73 73 61 67 65 73 3a ef 34 3a 85 a2 30 2c |messages:.4:..0,| 00002890 f6 24 2b 22 20 61 74 20 6c 69 6e 65 20 22 2b c3 |.$+" at line "+.| 000028a0 9e 2b 22 20 69 6e 20 65 72 72 6f 72 20 68 61 6e |.+" in error han| 000028b0 64 6c 65 72 22 0d 11 b1 c9 6d 65 73 73 24 3d 22 |dler"....mess$="| 000028c0 49 6e 74 65 72 6e 61 6c 20 65 72 72 6f 72 20 3a |Internal error :| 000028d0 20 28 22 2b c3 9e 2b 22 29 20 22 2b f6 24 3a ff | ("+..+") "+.$:.| 000028e0 28 22 53 65 74 20 45 72 72 6f 72 24 20 22 2b 6d |("Set Error$ "+m| 000028f0 65 73 73 24 29 3a ff 28 22 53 65 74 20 45 72 72 |ess$):.("Set Err| 00002900 6f 72 24 54 61 73 6b 20 4e 6f 74 20 6b 6e 6f 77 |or$Task Not know| 00002910 6e 22 29 3a 6d 65 73 73 61 67 65 5f 62 75 66 66 |n"):message_buff| 00002920 65 72 25 21 30 3d 9f 3a 24 28 6d 65 73 73 61 67 |er%!0=.:$(messag| 00002930 65 5f 62 75 66 66 65 72 25 2b 34 29 3d 6d 65 73 |e_buffer%+4)=mes| 00002940 73 24 2b 22 20 77 68 69 6c 73 74 20 69 6e 69 74 |s$+" whilst init| 00002950 69 61 6c 69 73 69 6e 67 22 2b bd 30 3a ee 85 ea |ialising"+.0:...| 00002960 3a 41 70 70 6e 61 6d 65 24 3d 22 75 6e 69 6e 69 |:Appname$="unini| 00002970 74 69 61 6c 69 73 65 64 20 74 61 73 6b 22 0d 11 |tialised task"..| 00002980 b2 4f 61 24 3d 41 70 70 6e 61 6d 65 24 3a ee 85 |.Oa$=Appname$:..| 00002990 ea 3a f2 63 6c 6f 73 65 6d 65 73 73 61 67 65 73 |.:.closemessages| 000029a0 3a ef 34 3a 85 a2 30 2c f6 24 2b 22 20 61 74 20 |:.4:..0,.$+" at | 000029b0 6c 69 6e 65 20 22 2b c3 9e 2b 22 20 69 6e 20 65 |line "+..+" in e| 000029c0 72 72 6f 72 20 68 61 6e 64 6c 65 72 22 0d 11 b3 |rror handler"...| 000029d0 29 c8 99 26 34 30 30 44 46 2c 6d 65 73 73 61 67 |)..&400DF,messag| 000029e0 65 5f 62 75 66 66 65 72 25 2c 39 2c 41 70 70 6e |e_buffer%,9,Appn| 000029f0 61 6d 65 24 3a e1 0d 11 b4 63 dd f2 65 72 72 6f |ame$:....c..erro| 00002a00 72 ea 65 72 72 63 6f 64 65 2c 6d 65 73 73 24 2c |r.errcode,mess$,| 00002a10 72 65 70 6c 79 25 3a ea 85 3a ee 85 ea 3a f2 63 |reply%:..:...:.c| 00002a20 6c 6f 73 65 6d 65 73 73 61 67 65 73 3a ef 34 3a |losemessages:.4:| 00002a30 85 a2 30 2c f6 24 2b 22 20 61 74 20 6c 69 6e 65 |..0,.$+" at line| 00002a40 20 22 2b c3 9e 2b 22 20 69 6e 20 65 72 72 6f 72 | "+..+" in error| 00002a50 20 68 61 6e 64 6c 65 72 22 0d 11 b5 1b c8 99 36 | handler"......6| 00002a60 2c 26 37 43 3a e7 9f 3e 26 37 46 46 80 9f 3c 26 |,&7C:..>&7FF..<&| 00002a70 38 30 33 8c 0d 11 b6 41 65 72 72 63 6f 64 65 3d |803....Aerrcode=| 00002a80 9f 2d 26 37 46 46 3a 6d 65 73 73 24 3d f6 24 3a |.-&7FF:mess$=.$:| 00002a90 e7 65 72 72 63 6f 64 65 3d 33 8c 6d 65 73 73 24 |.errcode=3.mess$| 00002aa0 2b 3d 22 20 28 43 61 6e 63 65 6c 20 74 6f 20 51 |+=" (Cancel to Q| 00002ab0 75 69 74 29 22 0d 11 b7 48 72 65 70 6c 79 25 3d |uit)"...Hreply%=| 00002ac0 a4 65 72 72 6f 72 62 6f 78 28 41 70 70 6e 61 6d |.errorbox(Appnam| 00002ad0 65 24 2c 6d 65 73 73 24 2c 65 72 72 63 6f 64 65 |e$,mess$,errcode| 00002ae0 29 3a e7 72 65 70 6c 79 25 3d 32 80 65 72 72 63 |):.reply%=2.errc| 00002af0 6f 64 65 3d 33 8c 71 75 69 74 25 3d b9 0d 11 b8 |ode=3.quit%=....| 00002b00 6c cc 3a 6d 65 73 73 24 3d 22 49 6e 74 65 72 6e |l.:mess$="Intern| 00002b10 61 6c 20 65 72 72 6f 72 20 3a 20 28 22 2b c3 9e |al error : ("+..| 00002b20 2b 22 29 20 22 2b f6 24 2b 22 20 43 61 6e 63 65 |+") "+.$+" Cance| 00002b30 6c 20 74 6f 20 51 75 69 74 22 3a 72 65 70 6c 79 |l to Quit":reply| 00002b40 25 3d a4 65 72 72 6f 72 62 6f 78 28 41 70 70 6e |%=.errorbox(Appn| 00002b50 61 6d 65 24 2c 6d 65 73 73 24 2c 33 29 3a e7 72 |ame$,mess$,3):.r| 00002b60 65 70 6c 79 25 3c 3e 31 8c 0d 11 b9 40 71 75 69 |eply%<>1....@qui| 00002b70 74 25 3d b9 3a ff 28 22 53 65 74 20 45 72 72 6f |t%=.:.("Set Erro| 00002b80 72 24 20 22 2b 6d 65 73 73 24 29 3a ff 28 22 53 |r$ "+mess$):.("S| 00002b90 65 74 20 45 72 72 6f 72 24 54 61 73 6b 20 22 2b |et Error$Task "+| 00002ba0 41 70 70 6e 61 6d 65 24 29 0d 11 ba 26 cd 3a e7 |Appname$)...&.:.| 00002bb0 a6 28 2d 31 29 80 a6 28 2d 32 29 80 a6 28 2d 31 |.(-1)..(-2)..(-1| 00002bc0 37 29 8c ff 28 22 53 70 6f 6f 6c 22 29 3a e0 0d |7)..("Spool"):..| 00002bd0 11 bb 07 cd 3a e1 0d 11 bc c3 dd a4 65 72 72 6f |....:.......erro| 00002be0 72 62 6f 78 28 74 69 74 6c 65 24 2c 6d 65 73 73 |rbox(title$,mess| 00002bf0 61 67 65 24 2c 62 75 74 74 6f 6e 25 29 74 69 74 |age$,button%)tit| 00002c00 6c 65 24 3d a4 6d 73 67 74 65 78 74 28 74 69 74 |le$=.msgtext(tit| 00002c10 6c 65 24 29 3a 6d 65 73 73 61 67 65 24 3d a4 6d |le$):message$=.m| 00002c20 73 67 74 65 78 74 28 6d 65 73 73 61 67 65 24 29 |sgtext(message$)| 00002c30 3a 24 28 6d 65 73 73 61 67 65 5f 62 75 66 66 65 |:$(message_buffe| 00002c40 72 25 2b 34 29 3d 6d 65 73 73 61 67 65 24 3a 21 |r%+4)=message$:!| 00002c50 6d 65 73 73 61 67 65 5f 62 75 66 66 65 72 25 3d |message_buffer%=| 00002c60 30 3a c8 99 26 34 30 30 44 46 2c 6d 65 73 73 61 |0:..&400DF,messa| 00002c70 67 65 5f 62 75 66 66 65 72 25 2c 62 75 74 74 6f |ge_buffer%,butto| 00002c80 6e 25 2c 74 69 74 6c 65 24 b8 2c 72 65 70 6c 79 |n%,title$.,reply| 00002c90 25 3a 3d 72 65 70 6c 79 25 0d 11 bd 49 dd f2 73 |%:=reply%...I..s| 00002ca0 68 6f 77 66 72 65 65 3a ea 85 3a ee 85 ea 3a e7 |howfree:..:...:.| 00002cb0 9f 3d 26 38 30 33 8c f2 73 65 74 69 63 6f 6e 74 |.=&803..seticont| 00002cc0 65 78 74 28 69 6e 66 6f 62 6f 78 25 2c 34 2c 22 |ext(infobox%,4,"| 00002cd0 4f 6c 64 20 74 65 6d 70 6c 61 74 65 22 29 3a e1 |Old template"):.| 00002ce0 8b e1 0d 11 be e2 f2 73 65 74 69 63 6f 6e 74 65 |.......seticonte| 00002cf0 78 74 28 69 6e 66 6f 62 6f 78 25 2c 35 2c 22 50 |xt(infobox%,5,"P| 00002d00 72 6f 67 72 61 6d 22 29 3a f2 73 65 74 69 63 6f |rogram"):.setico| 00002d10 6e 74 65 78 74 28 69 6e 66 6f 62 6f 78 25 2c 31 |ntext(infobox%,1| 00002d20 2c c3 28 b8 50 2d 90 29 2b 22 20 62 79 74 65 73 |,.(.P-.)+" bytes| 00002d30 2c 20 22 2b c3 28 28 b8 50 2d 90 29 81 26 34 30 |, "+.((.P-.).&40| 00002d40 30 29 2b 22 4b 22 29 3a f2 73 65 74 69 63 6f 6e |0)+"K"):.seticon| 00002d50 74 65 78 74 28 69 6e 66 6f 62 6f 78 25 2c 36 2c |text(infobox%,6,| 00002d60 22 56 61 72 73 22 29 3a f2 73 65 74 69 63 6f 6e |"Vars"):.seticon| 00002d70 74 65 78 74 28 69 6e 66 6f 62 6f 78 25 2c 32 2c |text(infobox%,2,| 00002d80 c3 28 e0 2d 92 29 2b 22 20 62 79 74 65 73 2c 20 |.(.-.)+" bytes, | 00002d90 22 2b c3 28 28 e0 2d 92 29 81 26 34 30 30 29 2b |"+.((.-.).&400)+| 00002da0 22 4b 22 29 3a f2 73 65 74 69 63 6f 6e 74 65 78 |"K"):.seticontex| 00002db0 74 28 69 6e 66 6f 62 6f 78 25 2c 37 2c 22 46 72 |t(infobox%,7,"Fr| 00002dc0 65 65 22 29 0d 11 bf f2 f2 73 65 74 69 63 6f 6e |ee").....seticon| 00002dd0 74 65 78 74 28 69 6e 66 6f 62 6f 78 25 2c 33 2c |text(infobox%,3,| 00002de0 c3 28 93 2d e0 29 2b 22 20 62 79 74 65 73 2c 20 |.(.-.)+" bytes, | 00002df0 22 2b c3 28 28 93 2d e0 29 81 26 34 30 30 29 2b |"+.((.-.).&400)+| 00002e00 22 4b 22 29 3a f2 68 65 61 70 5f 66 72 65 65 28 |"K"):.heap_free(| 00002e10 68 65 61 70 73 69 7a 65 2c 68 65 61 70 66 72 65 |heapsize,heapfre| 00002e20 65 29 3a f2 73 65 74 69 63 6f 6e 74 65 78 74 28 |e):.seticontext(| 00002e30 69 6e 66 6f 62 6f 78 25 2c 38 2c 22 48 65 61 70 |infobox%,8,"Heap| 00002e40 22 29 3a f2 73 65 74 69 63 6f 6e 74 65 78 74 28 |"):.seticontext(| 00002e50 69 6e 66 6f 62 6f 78 25 2c 34 2c c3 28 68 65 61 |infobox%,4,.(hea| 00002e60 70 73 69 7a 65 2d 68 65 61 70 66 72 65 65 29 2b |psize-heapfree)+| 00002e70 22 20 62 79 74 65 73 2c 20 22 2b c3 28 28 68 65 |" bytes, "+.((he| 00002e80 61 70 73 69 7a 65 2d 68 65 61 70 66 72 65 65 29 |apsize-heapfree)| 00002e90 81 26 34 30 30 29 2b 22 4b 20 6f 66 20 22 2b c3 |.&400)+"K of "+.| 00002ea0 28 68 65 61 70 73 69 7a 65 81 26 34 30 30 29 2b |(heapsize.&400)+| 00002eb0 22 4b 22 29 3a e1 0d 11 c0 f2 dd a4 63 72 65 61 |"K"):.......crea| 00002ec0 74 65 6d 65 6e 75 28 41 24 29 3a ea 70 6f 69 6e |temenu(A$):.poin| 00002ed0 74 65 72 2c 70 32 2c 70 33 2c 6c 2c 6c 6b 2c 4f |ter,p2,p3,l,lk,O| 00002ee0 24 2c 43 24 2c 6f 69 6e 64 25 2c 6f 69 6e 64 6c |$,C$,oind%,oindl| 00002ef0 25 2c 6b 73 25 2c 6b 24 2c 53 24 3a 6f 69 6e 64 |%,ks%,k$,S$:oind| 00002f00 25 3d 69 6e 64 25 3a 6f 69 6e 64 6c 25 3d 69 6e |%=ind%:oindl%=in| 00002f10 64 6c 25 3a 6b 73 25 3d a3 3a 70 6f 69 6e 74 65 |dl%:ks%=.:pointe| 00002f20 72 3d 6d 65 6e 75 25 3a 6c 3d 30 3a 41 24 2b 3d |r=menu%:l=0:A$+=| 00002f30 22 7c 22 3a f2 6d 65 6e 75 70 75 74 73 28 a4 6d |"|":.menuputs(.m| 00002f40 67 65 74 28 41 24 2c 43 24 29 29 3a f2 6d 65 6e |get(A$,C$)):.men| 00002f50 75 70 75 74 77 28 26 37 30 32 30 37 29 3a 70 32 |uputw(&70207):p2| 00002f60 3d 6d 65 6e 75 25 3a f2 6d 65 6e 75 70 75 74 77 |=menu%:.menuputw| 00002f70 28 26 38 30 29 3a f2 6d 65 6e 75 70 75 74 77 28 |(&80):.menuputw(| 00002f80 34 34 29 3a f2 6d 65 6e 75 70 75 74 77 28 30 29 |44):.menuputw(0)| 00002f90 3a 6f 70 74 69 6f 6e 73 25 3d 30 3a 53 24 3d 41 |:options%=0:S$=A| 00002fa0 24 3a 6c 6b 3d 30 3a f5 0d 11 c1 12 e7 6b 73 25 |$:lk=0:......ks%| 00002fb0 3d b9 8c 6b 73 25 3d b9 2a 32 0d 11 c2 66 f5 3a |=..ks%=.*2...f.:| 00002fc0 4f 24 3d a4 6d 67 65 74 28 41 24 2c 43 24 29 3a |O$=.mget(A$,C$):| 00002fd0 6f 70 74 69 6f 6e 73 25 3d 6f 70 74 69 6f 6e 73 |options%=options| 00002fe0 25 2b 31 3a 66 6c 61 67 73 3d a4 6d 64 65 63 6f |%+1:flags=.mdeco| 00002ff0 64 65 28 43 24 2c 70 33 2c 73 24 2c 6b 24 29 2b |de(C$,p3,s$,k$)+| 00003000 28 28 2d 28 41 24 3d 22 22 29 29 3c 3c 37 29 3a |((-(A$=""))<<7):| 00003010 e7 6b 73 25 3d b9 2a 32 80 6b 24 3c 3e 22 22 8c |.ks%=.*2.k$<>"".| 00003020 0d 11 c3 3e 4f 24 2b 3d c4 6c 2b 6c 6b 2d 28 a9 |...>O$+=.l+lk-(.| 00003030 28 4f 24 29 2b a9 28 6b 24 29 29 2b 31 2c 22 20 |(O$)+.(k$))+1," | 00003040 22 29 3a e7 c0 6b 24 2c 31 29 3d 22 a4 22 8c c1 |"):..k$,1)="."..| 00003050 6b 24 2c 31 2c 31 29 3d bd 28 26 38 42 29 0d 11 |k$,1,1)=.(&8B)..| 00003060 c4 0a 4f 24 2b 3d 6b 24 0d 11 c5 26 cc 3a e7 6b |..O$+=k$...&.:.k| 00003070 24 3c 3e 22 22 8c 6b 73 25 3d b9 3a e7 6c 6b 3c |$<>"".ks%=.:.lk<| 00003080 a9 28 6b 24 29 8c 6c 6b 3d a9 28 6b 24 29 0d 11 |.(k$).lk=.(k$)..| 00003090 c6 5c cd 3a 66 6c 61 67 73 32 3d 26 37 30 30 30 |.\.:flags2=&7000| 000030a0 30 32 31 2b 28 28 2d 28 a9 28 4f 24 29 3e 26 42 |021+((-(.(O$)>&B| 000030b0 29 29 3c 3c 38 29 2b 28 31 3c 3c 26 45 29 2a 28 |))<<8)+(1<<&E)*(| 000030c0 66 6c 61 67 73 80 32 35 36 29 3a e7 28 66 6c 61 |flags.256):.(fla| 000030d0 67 73 80 34 29 3c 3e 30 8c 66 6c 61 67 73 32 3d |gs.4)<>0.flags2=| 000030e0 66 6c 61 67 73 32 84 32 35 36 0d 11 c7 40 f2 6d |flags2.256...@.m| 000030f0 65 6e 75 70 75 74 77 28 66 6c 61 67 73 80 26 46 |enuputw(flags.&F| 00003100 46 29 3a f2 6d 65 6e 75 70 75 74 77 28 70 33 29 |F):.menuputw(p3)| 00003110 3a e7 a9 28 4f 24 29 3e 6c 80 6b 73 25 3c 3e b9 |:..(O$)>l.ks%<>.| 00003120 2a 32 8c 6c 3d a9 28 4f 24 29 0d 11 c8 9a f2 6d |*2.l=.(O$).....m| 00003130 65 6e 75 70 75 74 77 28 66 6c 61 67 73 32 29 3a |enuputw(flags2):| 00003140 f2 6d 65 6e 75 73 74 72 69 6e 67 28 4f 24 2c 73 |.menustring(O$,s| 00003150 24 2c 28 66 6c 61 67 73 80 34 29 29 3a fd 41 24 |$,(flags.4)):.A$| 00003160 3d 22 22 3a e7 6b 73 25 3d b9 2a 32 8c 6c 2b 3d |="":.ks%=.*2.l+=| 00003170 6c 6b 2b 31 8b e7 6b 73 25 3d b9 8c 69 6e 64 25 |lk+1..ks%=..ind%| 00003180 3d 6f 69 6e 64 25 3a 69 6e 64 6c 25 3d 6f 69 6e |=oind%:indl%=oin| 00003190 64 6c 25 3a 6d 65 6e 75 6c 25 2b 3d 6d 65 6e 75 |dl%:menul%+=menu| 000031a0 25 2d 70 32 2d 26 43 3a 6d 65 6e 75 25 3d 70 32 |%-p2-&C:menu%=p2| 000031b0 2b 26 43 3a 6f 70 74 69 6f 6e 73 25 3d 30 3a 41 |+&C:options%=0:A| 000031c0 24 3d 53 24 0d 11 c9 20 fd 6b 73 25 3c 3e b9 3a |$=S$... .ks%<>.:| 000031d0 21 70 32 3d 6c 2a 31 36 2b 31 36 3a 3d 70 6f 69 |!p2=l*16+16:=poi| 000031e0 6e 74 65 72 0d 11 ca 34 dd f2 6d 65 6e 75 73 74 |nter...4..menust| 000031f0 72 69 6e 67 28 54 24 2c 73 24 2c 66 6c 61 67 29 |ring(T$,s$,flag)| 00003200 e7 c0 54 24 2c 31 29 3d 22 a4 22 8c 54 24 3d a0 |..T$,1)=".".T$=.| 00003210 28 c1 54 24 2c 32 29 29 0d 11 cb 1b e7 a9 28 54 |(.T$,2))......(T| 00003220 24 29 3c 26 43 80 73 24 3d 22 22 80 66 6c 61 67 |$)<&C.s$="".flag| 00003230 3d 30 8c 0d 11 cc 11 f2 6d 65 6e 75 70 75 74 73 |=0......menuputs| 00003240 28 54 24 29 0d 11 cd 27 cc 3a f2 6d 65 6e 75 70 |(T$)...'.:.menup| 00003250 75 74 77 28 a4 69 6e 64 69 72 65 63 74 28 54 24 |utw(.indirect(T$| 00003260 29 29 3a e7 73 24 3c 3e 22 22 8c 0d 11 ce 46 6d |)):.s$<>""....Fm| 00003270 65 6e 75 25 21 2d 38 3d 6d 65 6e 75 25 21 2d 38 |enu%!-8=menu%!-8| 00003280 84 26 38 30 33 3a e7 c0 a4 6c 6f 77 65 72 28 73 |.&803:...lower(s| 00003290 24 29 2c 32 29 3d 22 73 6d 22 8c 6d 65 6e 75 25 |$),2)="sm".menu%| 000032a0 21 2d 38 3d 6d 65 6e 75 25 21 2d 38 82 26 38 30 |!-8=menu%!-8.&80| 000032b0 30 0d 11 cf 20 f2 6d 65 6e 75 70 75 74 77 28 a4 |0... .menuputw(.| 000032c0 69 6e 64 69 72 65 63 74 28 22 53 22 2b 73 24 29 |indirect("S"+s$)| 000032d0 29 0d 11 d0 13 cc 3a f2 6d 65 6e 75 70 75 74 77 |).....:.menuputw| 000032e0 28 2d 31 29 0d 11 d1 18 cd 3a f2 6d 65 6e 75 70 |(-1).....:.menup| 000032f0 75 74 77 28 a9 28 54 24 29 2b 31 29 0d 11 d2 07 |utw(.(T$)+1)....| 00003300 cd 3a e1 0d 11 d3 4e dd a4 6d 67 65 74 28 f8 41 |.:....N..mget(.A| 00003310 24 2c f8 43 24 29 3a ea 42 24 3a 42 24 3d c0 41 |$,.C$):.B$:B$=.A| 00003320 24 2c a7 41 24 2c 22 7c 22 29 2d 31 29 3a 41 24 |$,.A$,"|")-1):A$| 00003330 3d c1 41 24 2c a9 28 42 24 29 2b 32 29 3a e7 a7 |=.A$,.(B$)+2):..| 00003340 42 24 2c 22 5d 22 29 3c 31 8c 42 24 2b 3d 22 5d |B$,"]")<1.B$+="]| 00003350 22 0d 11 d4 37 43 24 3d c1 42 24 2c a7 42 24 2c |"...7C$=.B$,.B$,| 00003360 22 5d 22 29 2b 31 29 3a 42 24 3d c0 42 24 2c a7 |"]")+1):B$=.B$,.| 00003370 42 24 2c 22 5d 22 29 2d 31 29 3a 3d a4 6d 73 67 |B$,"]")-1):=.msg| 00003380 74 65 78 74 28 42 24 29 0d 11 d5 37 dd f2 6d 65 |text(B$)...7..me| 00003390 6e 75 70 75 74 73 28 54 24 29 e7 a9 28 54 24 29 |nuputs(T$)..(T$)| 000033a0 3e 26 42 8c 85 26 38 30 33 2c 22 4d 65 6e 75 20 |>&B..&803,"Menu | 000033b0 65 6e 74 72 79 20 74 6f 6f 20 6c 6f 6e 67 22 0d |entry too long".| 000033c0 11 d6 51 24 6d 65 6e 75 25 3d 54 24 3a 6d 65 6e |..Q$menu%=T$:men| 000033d0 75 25 2b 3d 26 43 3a 6d 65 6e 75 6c 25 2d 3d 26 |u%+=&C:menul%-=&| 000033e0 43 3a e7 6d 65 6e 75 6c 25 3c 3d 34 8c 85 26 38 |C:.menul%<=4..&8| 000033f0 30 33 2c 22 4e 6f 74 20 65 6e 6f 75 67 68 20 6d |03,"Not enough m| 00003400 65 6d 6f 72 79 20 66 6f 72 20 6d 65 6e 75 73 22 |emory for menus"| 00003410 0d 11 d7 05 e1 0d 11 d8 5e dd f2 6d 65 6e 75 70 |........^..menup| 00003420 75 74 77 28 57 25 29 3a 21 6d 65 6e 75 25 3d 57 |utw(W%):!menu%=W| 00003430 25 3a 6d 65 6e 75 25 2b 3d 34 3a 6d 65 6e 75 6c |%:menu%+=4:menul| 00003440 25 2d 3d 34 3a e7 6d 65 6e 75 6c 25 3c 3d 34 8c |%-=4:.menul%<=4.| 00003450 85 26 38 30 33 2c 22 4e 6f 74 20 65 6e 6f 75 67 |.&803,"Not enoug| 00003460 68 20 6d 65 6d 6f 72 79 20 66 6f 72 20 6d 65 6e |h memory for men| 00003470 75 73 22 0d 11 d9 05 e1 0d 11 da 63 dd a4 6d 64 |us"........c..md| 00003480 65 63 6f 64 65 28 41 24 2c f8 70 2c f8 73 24 2c |ecode(A$,.p,.s$,| 00003490 f8 6b 24 29 3a ea 42 24 2c 43 24 2c 56 3a 70 3d |.k$):.B$,C$,V:p=| 000034a0 2d 31 3a 73 24 3d 22 22 3a 6b 24 3d 22 22 3a 41 |-1:s$="":k$="":A| 000034b0 24 3d 41 24 2b 22 2c 22 3a c8 95 41 24 3c 3e 22 |$=A$+",":..A$<>"| 000034c0 22 3a 42 24 3d c0 41 24 2c 31 29 3a 41 24 3d c1 |":B$=.A$,1):A$=.| 000034d0 41 24 2c 32 29 3a c8 8e 42 24 ca 0d 11 db 0e c9 |A$,2):..B$......| 000034e0 22 54 22 3a 56 3d 56 84 31 0d 11 dc 0e c9 22 44 |"T":V=V.1....."D| 000034f0 22 3a 56 3d 56 84 32 0d 11 dd 0e c9 22 57 22 3a |":V=V.2....."W":| 00003500 56 3d 56 84 34 0d 11 de 0e c9 22 4d 22 3a 56 3d |V=V.4....."M":V=| 00003510 56 84 38 0d 11 df 10 c9 22 53 22 3a 56 3d 56 84 |V.8....."S":V=V.| 00003520 32 35 36 0d 11 e0 2e c9 22 4b 22 3a 6b 24 3d c0 |256....."K":k$=.| 00003530 41 24 2c a7 41 24 2c 22 2c 22 29 2d 31 29 3a 41 |A$,.A$,",")-1):A| 00003540 24 3d c1 41 24 2c a7 41 24 2c 22 2c 22 29 2b 31 |$=.A$,.A$,",")+1| 00003550 29 0d 11 e1 30 c9 22 3e 22 3a 70 3d a0 28 c0 41 |)...0.">":p=.(.A| 00003560 24 2c a7 41 24 2c 22 2c 22 29 2d 31 29 29 3a 41 |$,.A$,",")-1)):A| 00003570 24 3d c1 41 24 2c a7 41 24 2c 22 2c 22 29 2b 31 |$=.A$,.A$,",")+1| 00003580 29 0d 11 e2 32 c9 22 7d 22 3a 73 24 3d c0 41 24 |)...2."}":s$=.A$| 00003590 2c a7 41 24 2c 22 2c 22 29 2d 31 29 2b 22 20 22 |,.A$,",")-1)+" "| 000035a0 3a 41 24 3d c1 41 24 2c a7 41 24 2c 22 2c 22 29 |:A$=.A$,.A$,",")| 000035b0 2b 31 29 0d 11 e3 0a cb 3a ce 3a 3d 56 0d 11 e4 |+1).....:.:=V...| 000035c0 52 dd a4 69 6e 64 69 72 65 63 74 28 61 24 29 ea |R..indirect(a$).| 000035d0 69 3a 69 3d 69 6e 64 25 3a e7 a9 28 61 24 29 3e |i:i=ind%:..(a$)>| 000035e0 69 6e 64 6c 25 2d 31 8c 85 26 38 30 33 2c 22 4e |indl%-1..&803,"N| 000035f0 6f 74 20 65 6e 6f 75 67 68 20 72 6f 6f 6d 20 66 |ot enough room f| 00003600 6f 72 20 69 6e 64 69 72 65 63 74 69 6f 6e 22 0d |or indirection".| 00003610 11 e5 2c 24 69 6e 64 25 3d 61 24 3a 69 6e 64 25 |..,$ind%=a$:ind%| 00003620 2b 3d a9 28 61 24 29 2b 31 3a 69 6e 64 6c 25 2d |+=.(a$)+1:indl%-| 00003630 3d a9 28 61 24 29 2b 31 3a 3d 69 0d 11 e6 80 dd |=.(a$)+1:=i.....| 00003640 f2 69 62 6d 65 6e 75 3a c8 99 26 34 30 30 43 46 |.ibmenu:..&400CF| 00003650 2c 2c 62 25 3a 63 75 72 6d 65 6e 75 25 3d 69 62 |,,b%:curmenu%=ib| 00003660 6d 65 6e 75 25 3a 63 6d 65 6e 75 78 25 3d 62 25 |menu%:cmenux%=b%| 00003670 21 30 2d 36 34 3a 63 6d 65 6e 75 79 25 3d 39 36 |!0-64:cmenuy%=96| 00003680 2b 34 34 2a 69 62 6f 70 74 69 6f 6e 73 25 3a c8 |+44*iboptions%:.| 00003690 99 26 34 30 30 44 34 2c 2c 69 62 6d 65 6e 75 25 |.&400D4,,ibmenu%| 000036a0 2c 62 25 21 30 2d 36 34 2c 39 36 2b 34 34 2a 69 |,b%!0-64,96+44*i| 000036b0 62 6f 70 74 69 6f 6e 73 25 3a e1 0d 11 e7 1c dd |boptions%:......| 000036c0 f2 6d 65 6e 75 28 6d 65 6e 75 25 2c 78 2c 79 29 |.menu(menu%,x,y)| 000036d0 3a e7 78 3d 2d 31 8c 0d 11 e8 1e c8 99 26 34 30 |:.x=-1.......&40| 000036e0 30 43 46 2c 2c 62 25 3a 78 3d 62 25 21 30 3a 79 |0CF,,b%:x=b%!0:y| 000036f0 3d 62 25 21 34 0d 11 e9 4a cd 3a 63 75 72 6d 65 |=b%!4...J.:curme| 00003700 6e 75 25 3d 6d 65 6e 75 25 3a 63 6d 65 6e 75 78 |nu%=menu%:cmenux| 00003710 25 3d 78 2d 36 34 3a 63 6d 65 6e 75 79 25 3d 79 |%=x-64:cmenuy%=y| 00003720 2b 32 30 3a c8 99 26 34 30 30 44 34 2c 2c 6d 65 |+20:..&400D4,,me| 00003730 6e 75 25 2c 78 2d 36 34 2c 79 2b 32 30 3a e1 0d |nu%,x-64,y+20:..| 00003740 11 ea 37 dd f2 72 65 63 72 65 61 74 65 6d 65 6e |..7..recreatemen| 00003750 75 3a c8 99 26 34 30 30 44 34 2c 2c 63 75 72 6d |u:..&400D4,,curm| 00003760 65 6e 75 25 2c 63 6d 65 6e 75 78 25 2c 63 6d 65 |enu%,cmenux%,cme| 00003770 6e 75 79 25 3a e1 0d 11 eb 3f dd f2 6d 65 6e 75 |nuy%:....?..menu| 00003780 73 68 61 64 65 28 6d 65 6e 75 2c 6f 70 74 69 6f |shade(menu,optio| 00003790 6e 2c 74 6f 67 67 6c 65 29 6d 65 6e 75 2b 3d 6f |n,toggle)menu+=o| 000037a0 70 74 69 6f 6e 2a 32 34 2b 33 36 3a c8 8e 74 6f |ption*24+36:..to| 000037b0 67 67 6c 65 ca 0d 11 ec 1b c9 30 3a 21 6d 65 6e |ggle......0:!men| 000037c0 75 3d 21 6d 65 6e 75 80 ac 28 31 3c 3c 32 32 29 |u=!menu..(1<<22)| 000037d0 0d 11 ed 1d c9 2d 31 2c 31 3a 21 6d 65 6e 75 3d |.....-1,1:!menu=| 000037e0 21 6d 65 6e 75 84 28 31 3c 3c 32 32 29 0d 11 ee |!menu.(1<<22)...| 000037f0 1a c9 32 3a 21 6d 65 6e 75 3d 21 6d 65 6e 75 82 |..2:!menu=!menu.| 00003800 28 31 3c 3c 32 32 29 0d 11 ef 07 cb 3a e1 0d 11 |(1<<22).....:...| 00003810 f0 92 dd a4 64 65 63 6f 64 65 6d 65 6e 75 28 6d |....decodemenu(m| 00003820 65 6e 75 25 29 ea 63 70 25 2c 70 74 72 2c 62 24 |enu%).cp%,ptr,b$| 00003830 2c 63 24 3a 63 70 25 3d 6d 65 6e 75 25 3a 70 74 |,c$:cp%=menu%:pt| 00003840 72 3d 30 3a c8 95 28 62 25 21 70 74 72 3e 2d 31 |r=0:..(b%!ptr>-1| 00003850 80 63 70 25 3c 3e 72 6d 61 66 6f 6e 74 61 72 65 |.cp%<>rmafontare| 00003860 61 29 3a 63 70 25 3d 63 70 25 21 28 33 32 2b 28 |a):cp%=cp%!(32+(| 00003870 62 25 21 70 74 72 29 2a 32 34 29 3a 70 74 72 2b |b%!ptr)*24):ptr+| 00003880 3d 34 3a ce 3a e7 63 70 25 3d 72 6d 61 66 6f 6e |=4:.:.cp%=rmafon| 00003890 74 61 72 65 61 80 62 25 21 70 74 72 3c 3e 30 8c |tarea.b%!ptr<>0.| 000038a0 0d 11 f1 33 c8 99 26 34 30 30 41 30 2c 2c 72 6d |...3..&400A0,,rm| 000038b0 61 66 6f 6e 74 61 72 65 61 2c 62 25 2b 70 74 72 |afontarea,b%+ptr| 000038c0 2c c4 26 46 46 2c bd 30 29 2c 26 46 46 b8 2c 2c |,.&FF,.0),&FF.,,| 000038d0 2c 6d 24 0d 11 f2 9e cc 3a c8 99 26 34 30 30 44 |,m$.....:..&400D| 000038e0 35 2c 2c 6d 65 6e 75 25 2c 62 25 2c c4 26 46 46 |5,,menu%,b%,.&FF| 000038f0 2c bd 30 29 2c 26 46 46 b8 2c 2c 2c 6d 24 3a 62 |,.0),&FF.,,,m$:b| 00003900 24 3d 22 22 3a f5 3a 63 24 3d c0 6d 24 2c a7 6d |$="":.:c$=.m$,.m| 00003910 24 2b 22 2e 22 2c 22 2e 22 29 2d 31 29 3a 6d 24 |$+".",".")-1):m$| 00003920 3d c1 6d 24 2c a9 28 63 24 29 2b 32 29 3a 63 24 |=.m$,.(c$)+2):c$| 00003930 3d c0 63 24 2c a7 63 24 2b 22 20 5e 22 2c 22 20 |=.c$,.c$+" ^"," | 00003940 5e 22 29 2d 31 29 3a 63 24 3d c0 63 24 2c a7 63 |^")-1):c$=.c$,.c| 00003950 24 2b 22 20 22 2b bd 26 38 42 2c 22 20 22 2b bd |$+" "+.&8B," "+.| 00003960 26 38 42 29 2d 31 29 3a c8 8e c2 63 24 2c 33 29 |&8B)-1):...c$,3)| 00003970 ca 0d 11 f3 62 c9 22 45 73 63 22 2c 22 44 65 6c |....b."Esc","Del| 00003980 22 2c 22 49 6e 73 22 2c 22 45 6e 64 22 2c 22 48 |","Ins","End","H| 00003990 6f 6d 22 2c 22 43 70 79 22 2c 22 46 31 30 22 2c |om","Cpy","F10",| 000039a0 22 46 31 31 22 2c 22 46 31 32 22 2c 22 46 31 33 |"F11","F12","F13| 000039b0 22 2c 22 50 72 74 22 2c 22 54 61 62 22 2c 22 52 |","Prt","Tab","R| 000039c0 65 74 22 3a 63 24 3d c0 63 24 2c a9 28 63 24 29 |et":c$=.c$,.(c$)| 000039d0 2d 34 29 0d 11 f4 3f cb 3a e7 c1 63 24 2c a9 28 |-4)...?.:..c$,.(| 000039e0 63 24 29 2d 32 2c 32 29 3d 22 20 46 22 8c e7 c2 |c$)-2,2)=" F"...| 000039f0 63 24 29 3d 22 30 22 84 bb 28 c2 63 24 29 29 3c |c$)="0"..(.c$))<| 00003a00 3e 30 8c 63 24 3d c0 63 24 2c a9 28 63 24 29 2d |>0.c$=.c$,.(c$)-| 00003a10 33 29 0d 11 f5 42 c8 95 c2 63 24 29 3d 22 20 22 |3)...B...c$)=" "| 00003a20 3a 63 24 3d c0 63 24 29 3a ce 3a 62 24 2b 3d 63 |:c$=.c$):.:b$+=c| 00003a30 24 2b 22 2e 22 3a fd 6d 24 3d 22 22 84 6d 24 3d |$+".":.m$="".m$=| 00003a40 22 2e 22 3a e7 6d 24 3d 22 2e 22 8c 62 24 2b 3d |".":.m$=".".b$+=| 00003a50 22 2e 2e 22 0d 11 f6 0b 6d 24 3d c0 62 24 29 0d |".."....m$=.b$).| 00003a60 11 f7 09 cd 3a 3d 6d 24 0d 11 f8 2c dd f2 63 6c |....:=m$...,..cl| 00003a70 6f 73 65 77 69 6e 28 77 69 6e 25 29 3a 21 62 25 |osewin(win%):!b%| 00003a80 3d 77 69 6e 25 3a c8 99 26 34 30 30 43 36 2c 2c |=win%:..&400C6,,| 00003a90 62 25 3a e1 0d 11 f9 41 dd f2 6f 70 65 6e 77 69 |b%:....A..openwi| 00003aa0 6e 28 77 69 6e 25 29 3a 21 62 25 3d 77 69 6e 25 |n(win%):!b%=win%| 00003ab0 3a c8 99 26 34 30 30 43 42 2c 2c 62 25 3a 62 25 |:..&400CB,,b%:b%| 00003ac0 21 32 38 3d 2d 31 3a c8 99 26 34 30 30 43 35 2c |!28=-1:..&400C5,| 00003ad0 2c 62 25 3a e1 0d 11 fa fa dd f2 6f 70 65 6e 77 |,b%:.......openw| 00003ae0 69 6e 63 65 6e 74 72 65 28 77 69 6e 25 29 ea 77 |incentre(win%).w| 00003af0 69 64 74 68 2c 68 65 69 67 68 74 2c 74 6f 70 2c |idth,height,top,| 00003b00 72 69 67 68 74 2c 78 2c 79 3a 21 62 25 3d 34 3a |right,x,y:!b%=4:| 00003b10 62 25 21 34 3d 35 3a 62 25 21 38 3d 26 42 3a 62 |b%!4=5:b%!8=&B:b| 00003b20 25 21 26 43 3d 26 43 3a 62 25 21 31 36 3d 2d 31 |%!&C=&C:b%!16=-1| 00003b30 3a c8 99 34 39 2c 62 25 2c 62 25 2b 32 30 3a 72 |:..49,b%,b%+20:r| 00003b40 69 67 68 74 3d 62 25 21 32 38 2b 31 3c 3c 62 25 |ight=b%!28+1<<b%| 00003b50 21 32 30 3a 74 6f 70 3d 62 25 21 33 32 2b 31 3c |!20:top=b%!32+1<| 00003b60 3c 62 25 21 32 34 3a 21 62 25 3d 77 69 6e 25 3a |<b%!24:!b%=win%:| 00003b70 c8 99 26 34 30 30 43 42 2c 2c 62 25 3a 77 69 64 |..&400CB,,b%:wid| 00003b80 74 68 3d 62 25 21 34 2d 62 25 21 26 43 3a 68 65 |th=b%!4-b%!&C:he| 00003b90 69 67 68 74 3d 62 25 21 31 36 2d 62 25 21 38 3a |ight=b%!16-b%!8:| 00003ba0 78 3d 28 72 69 67 68 74 2d 77 69 64 74 68 29 2f |x=(right-width)/| 00003bb0 32 2b 77 69 64 74 68 3a 79 3d 28 74 6f 70 2d 68 |2+width:y=(top-h| 00003bc0 65 69 67 68 74 29 2f 32 2b 68 65 69 67 68 74 0d |eight)/2+height.| 00003bd0 11 fb 46 62 25 21 34 3d 78 3a 62 25 21 38 3d 79 |..Fb%!4=x:b%!8=y| 00003be0 2d 68 65 69 67 68 74 3a 62 25 21 26 43 3d 78 2d |-height:b%!&C=x-| 00003bf0 77 69 64 74 68 3a 62 25 21 31 36 3d 79 3a 62 25 |width:b%!16=y:b%| 00003c00 21 32 38 3d 2d 31 3a c8 99 26 34 30 30 43 35 2c |!28=-1:..&400C5,| 00003c10 2c 62 25 3a e1 0d 11 fc 77 dd f2 77 69 6e 64 6f |,b%:....w..windo| 00003c20 77 74 69 74 6c 65 28 77 69 6e 25 2c 74 69 74 6c |wtitle(win%,titl| 00003c30 65 24 29 3a ea 6c 6f 63 25 2c 61 24 3a 62 25 21 |e$):.loc%,a$:b%!| 00003c40 30 3d 77 69 6e 25 3a c8 99 26 34 30 30 43 43 2c |0=win%:..&400CC,| 00003c50 2c 62 25 2b 31 3a 6c 6f 63 25 3d 21 28 62 25 2b |,b%+1:loc%=!(b%+| 00003c60 37 36 29 3a 61 24 3d a4 6d 73 67 74 65 78 74 28 |76):a$=.msgtext(| 00003c70 74 69 74 6c 65 24 29 3a e7 a4 73 74 72 69 6e 67 |title$):..string| 00003c80 30 28 6c 6f 63 25 29 3c 3e 61 24 8c 0d 11 fd 4b |0(loc%)<>a$....K| 00003c90 24 6c 6f 63 25 3d 61 24 3a 62 25 21 33 32 3d 77 |$loc%=a$:b%!32=w| 00003ca0 69 6e 25 3a c8 99 26 34 30 30 45 30 2c 2c 62 25 |in%:..&400E0,,b%| 00003cb0 2b 33 32 3a c8 99 26 34 30 30 44 31 2c 2d 31 2c |+32:..&400D1,-1,| 00003cc0 62 25 21 33 36 2c 62 25 21 31 36 2c 62 25 21 34 |b%!36,b%!16,b%!4| 00003cd0 34 2c 62 25 21 34 38 0d 11 fe 07 cd 3a e1 0d 11 |4,b%!48.....:...| 00003ce0 ff ae dd a4 43 72 65 61 74 65 49 63 6f 6e 42 61 |....CreateIconBa| 00003cf0 72 49 63 6f 6e 28 53 70 72 24 2c 74 69 74 6c 65 |rIcon(Spr$,title| 00003d00 24 2c 70 6f 73 25 29 ea 69 63 25 2c 77 25 2c 6d |$,pos%).ic%,w%,m| 00003d10 25 2c 65 25 3a 74 69 74 6c 65 24 3d a4 6d 73 67 |%,e%:title$=.msg| 00003d20 74 65 78 74 28 74 69 74 6c 65 24 29 3a 62 25 21 |text(title$):b%!| 00003d30 30 3d 2d 28 94 28 70 6f 73 25 29 80 26 46 46 29 |0=-(.(pos%).&FF)| 00003d40 3a 62 25 21 34 3d 30 3a 62 25 21 38 3d 2d 31 36 |:b%!4=0:b%!8=-16| 00003d50 3a 62 25 21 26 43 3d 26 43 2b 31 36 2a a9 28 74 |:b%!&C=&C+16*.(t| 00003d60 69 74 6c 65 24 29 3a 62 25 21 31 36 3d 38 38 3a |itle$):b%!16=88:| 00003d70 e7 62 25 21 26 43 3c 26 43 2b 31 36 2a 34 8c 62 |.b%!&C<&C+16*4.b| 00003d80 25 21 26 43 3d 26 43 2b 31 36 2a 34 0d 12 00 10 |%!&C=&C+16*4....| 00003d90 e7 74 69 74 6c 65 24 3c 3e 22 22 8c 0d 12 01 71 |.title$<>""....q| 00003da0 62 25 21 32 30 3d 28 31 3c 3c 32 38 29 2b 28 37 |b%!20=(1<<28)+(7| 00003db0 3c 3c 32 34 29 2b 28 33 3c 3c 26 43 29 2b 28 26 |<<24)+(3<<&C)+(&| 00003dc0 42 29 2b 28 31 3c 3c 38 29 3a 62 25 21 32 34 3d |B)+(1<<8):b%!24=| 00003dd0 a4 69 6e 64 69 72 65 63 74 28 74 69 74 6c 65 24 |.indirect(title$| 00003de0 29 3a 62 25 21 32 38 3d a4 69 6e 64 69 72 65 63 |):b%!28=.indirec| 00003df0 74 28 22 53 22 2b 53 70 72 24 29 3a 62 25 21 33 |t("S"+Spr$):b%!3| 00003e00 32 3d a9 28 74 69 74 6c 65 24 29 2b 31 0d 12 02 |2=.(title$)+1...| 00003e10 36 cc 3a 62 25 21 32 30 3d 28 31 3c 3c 32 38 29 |6.:b%!20=(1<<28)| 00003e20 2b 28 37 3c 3c 32 34 29 2b 28 33 3c 3c 26 43 29 |+(7<<24)+(3<<&C)| 00003e30 2b 28 32 36 29 3a 24 28 62 25 2b 32 34 29 3d 53 |+(26):$(b%+24)=S| 00003e40 70 72 24 0d 12 03 66 cd 3a c8 99 26 34 30 30 45 |pr$...f.:..&400E| 00003e50 39 2c 32 39 36 2c 2c c0 53 70 72 24 2c a7 53 70 |9,296,,.Spr$,.Sp| 00003e60 72 24 2b 22 2c 22 2c 22 2c 22 29 29 b8 2c 2c 2c |r$+",",",")).,,,| 00003e70 77 25 2c 6d 25 3a c8 99 26 32 30 30 33 35 2c 6d |w%,m%:..&20035,m| 00003e80 25 2c 34 b8 2c 2c 65 25 3a 77 25 3d 28 77 25 2b |%,4.,,e%:w%=(w%+| 00003e90 31 29 3c 3c 65 25 3a e7 77 25 3e 62 25 21 26 43 |1)<<e%:.w%>b%!&C| 00003ea0 8c 62 25 21 26 43 3d 77 25 0d 12 04 4d e7 28 94 |.b%!&C=w%...M.(.| 00003eb0 28 70 6f 73 25 29 80 26 46 46 29 3d 33 84 28 94 |(pos%).&FF)=3.(.| 00003ec0 28 70 6f 73 25 29 80 26 46 46 29 3d 34 8c 70 6f |(pos%).&FF)=4.po| 00003ed0 73 25 3d 94 28 70 6f 73 25 29 3e 3e 38 8b 70 6f |s%=.(pos%)>>8.po| 00003ee0 73 25 3d 28 94 28 70 6f 73 25 29 80 26 46 46 30 |s%=(.(pos%).&FF0| 00003ef0 30 29 3c 3c 31 36 0d 12 05 1d c8 99 26 34 30 30 |0)<<16......&400| 00003f00 43 32 2c 70 6f 73 25 2c 62 25 b8 69 63 25 3a 3d |C2,pos%,b%.ic%:=| 00003f10 69 63 25 0d 12 06 44 dd f2 69 63 6f 6e 73 68 61 |ic%...D..iconsha| 00003f20 64 65 28 77 69 6e 25 2c 69 63 6f 6e 25 2c 74 79 |de(win%,icon%,ty| 00003f30 70 65 25 29 3a f2 73 65 74 69 63 6f 6e 62 69 74 |pe%):.seticonbit| 00003f40 28 77 69 6e 25 2c 69 63 6f 6e 25 2c 32 32 2c 74 |(win%,icon%,22,t| 00003f50 79 70 65 25 29 3a e1 0d 12 07 37 dd f2 73 65 74 |ype%):....7..set| 00003f60 69 63 6f 6e 62 69 74 28 77 69 6e 25 2c 69 63 6f |iconbit(win%,ico| 00003f70 6e 25 2c 62 69 74 25 2c 74 79 70 65 25 29 3a ea |n%,bit%,type%):.| 00003f80 73 25 2c 74 25 3a c8 8e 74 79 70 65 25 ca 0d 12 |s%,t%:..type%...| 00003f90 08 1c c9 30 3a 73 25 3d 30 3c 3c 62 69 74 25 3a |...0:s%=0<<bit%:| 00003fa0 74 25 3d 31 3c 3c 62 69 74 25 0d 12 09 1f c9 2d |t%=1<<bit%.....-| 00003fb0 31 2c 31 3a 73 25 3d 31 3c 3c 62 69 74 25 3a 74 |1,1:s%=1<<bit%:t| 00003fc0 25 3d 31 3c 3c 62 69 74 25 0d 12 0a 1c c9 32 3a |%=1<<bit%.....2:| 00003fd0 73 25 3d 31 3c 3c 62 69 74 25 3a 74 25 3d 30 3c |s%=1<<bit%:t%=0<| 00003fe0 3c 62 69 74 25 0d 12 0b 3a cb 3a 62 25 21 30 3d |<bit%...:.:b%!0=| 00003ff0 77 69 6e 25 3a 62 25 21 34 3d 69 63 6f 6e 25 3a |win%:b%!4=icon%:| 00004000 62 25 21 38 3d 73 25 3a 62 25 21 26 43 3d 74 25 |b%!8=s%:b%!&C=t%| 00004010 3a c8 99 26 34 30 30 43 44 2c 2c 62 25 3a e1 0d |:..&400CD,,b%:..| 00004020 12 0c 72 dd f2 72 65 64 72 61 77 69 63 6f 6e 28 |..r..redrawicon(| 00004030 77 69 6e 25 2c 69 63 6f 6e 25 29 3a 77 69 6e 25 |win%,icon%):win%| 00004040 2b 3d 77 69 6e 25 3d 2d 31 3a 21 62 25 3d 77 69 |+=win%=-1:!b%=wi| 00004050 6e 25 3a 62 25 21 34 3d 69 63 6f 6e 25 3a c8 99 |n%:b%!4=icon%:..| 00004060 26 34 30 30 43 45 2c 2c 62 25 3a c8 99 26 34 30 |&400CE,,b%:..&40| 00004070 30 44 31 2c 77 69 6e 25 2c 62 25 21 38 2c 62 25 |0D1,win%,b%!8,b%| 00004080 21 26 43 2c 62 25 21 31 36 2c 62 25 21 32 30 3a |!&C,b%!16,b%!20:| 00004090 e1 0d 12 0d 61 dd a4 67 65 74 69 63 6f 6e 74 65 |....a..geticonte| 000040a0 78 74 28 77 69 6e 25 2c 69 63 6f 6e 25 29 3a 62 |xt(win%,icon%):b| 000040b0 25 21 30 3d 77 69 6e 25 3a 62 25 21 34 3d 69 63 |%!0=win%:b%!4=ic| 000040c0 6f 6e 25 3a c8 99 26 34 30 30 43 45 2c 2c 62 25 |on%:..&400CE,,b%| 000040d0 3a e7 28 28 62 25 21 32 34 29 80 32 35 36 29 3d |:.((b%!24).256)=| 000040e0 30 8c 3d a4 73 74 72 69 6e 67 30 28 62 25 2b 32 |0.=.string0(b%+2| 000040f0 38 29 0d 12 0e 14 3d a4 73 74 72 69 6e 67 30 28 |8)....=.string0(| 00004100 62 25 21 32 38 29 0d 12 0f c3 dd f2 73 65 74 69 |b%!28)......seti| 00004110 63 6f 6e 74 65 78 74 28 77 69 6e 25 2c 69 63 6f |context(win%,ico| 00004120 6e 25 2c 74 65 78 74 24 29 ea 69 25 3a 74 65 78 |n%,text$).i%:tex| 00004130 74 24 3d a4 6d 73 67 74 65 78 74 28 74 65 78 74 |t$=.msgtext(text| 00004140 24 29 3a c8 99 26 34 30 30 44 33 2c 2c 62 25 3a |$):..&400D3,,b%:| 00004150 69 25 3d 28 21 62 25 3d 77 69 6e 25 29 80 28 69 |i%=(!b%=win%).(i| 00004160 63 6f 6e 25 3d 62 25 21 34 29 3a 62 25 21 30 3d |con%=b%!4):b%!0=| 00004170 77 69 6e 25 3a 62 25 21 34 3d 69 63 6f 6e 25 3a |win%:b%!4=icon%:| 00004180 c8 99 26 34 30 30 43 45 2c 2c 62 25 3a e7 28 28 |..&400CE,,b%:.((| 00004190 62 25 21 32 34 29 80 32 35 36 29 3d 30 8c 85 26 |b%!24).256)=0..&| 000041a0 38 30 33 2c 22 49 63 6f 6e 20 69 73 6e 27 74 20 |803,"Icon isn't | 000041b0 69 6e 64 69 72 65 63 74 65 64 20 28 23 22 2b c3 |indirected (#"+.| 000041c0 69 63 6f 6e 25 2b 22 29 22 0d 12 10 1c e7 a4 73 |icon%+")"......s| 000041d0 74 72 69 6e 67 30 28 62 25 21 32 38 29 3c 3e 74 |tring0(b%!28)<>t| 000041e0 65 78 74 24 8c 0d 12 11 4f e7 a9 28 74 65 78 74 |ext$....O..(text| 000041f0 24 29 3c 62 25 21 33 36 8c 24 28 62 25 21 32 38 |$)<b%!36.$(b%!28| 00004200 29 3d 74 65 78 74 24 8b 85 26 38 30 33 2c 22 54 |)=text$..&803,"T| 00004210 65 78 74 20 74 6f 6f 20 6c 6f 6e 67 20 66 6f 72 |ext too long for| 00004220 20 69 63 6f 6e 20 28 23 22 2b c3 69 63 6f 6e 25 | icon (#"+.icon%| 00004230 2b 22 29 22 0d 12 12 69 21 62 25 3d 77 69 6e 25 |+")"...i!b%=win%| 00004240 3a 62 25 21 34 3d 69 63 6f 6e 25 3a 62 25 21 38 |:b%!4=icon%:b%!8| 00004250 3d 30 3a 62 25 21 26 43 3d 30 3a c8 99 26 34 30 |=0:b%!&C=0:..&40| 00004260 30 43 44 2c 2c 62 25 3a e7 69 25 80 28 62 25 21 |0CD,,b%:.i%.(b%!| 00004270 32 34 80 31 29 3d 31 8c c8 99 26 34 30 30 44 32 |24.1)=1...&400D2| 00004280 2c 77 69 6e 25 2c 69 63 6f 6e 25 2c 2d 31 2c 2d |,win%,icon%,-1,-| 00004290 31 2c 2d 31 2c a9 28 74 65 78 74 24 29 0d 12 13 |1,-1,.(text$)...| 000042a0 07 cd 3a e1 0d 12 14 83 dd f2 73 65 74 69 63 6f |..:.......setico| 000042b0 6e 76 61 6c 69 64 28 77 69 6e 25 2c 69 63 6f 6e |nvalid(win%,icon| 000042c0 25 2c 74 65 78 74 24 29 3a 62 25 21 30 3d 77 69 |%,text$):b%!0=wi| 000042d0 6e 25 3a 62 25 21 34 3d 69 63 6f 6e 25 3a c8 99 |n%:b%!4=icon%:..| 000042e0 26 34 30 30 43 45 2c 2c 62 25 3a e7 28 28 62 25 |&400CE,,b%:.((b%| 000042f0 21 32 34 29 80 32 35 36 29 3d 30 8c 85 26 38 30 |!24).256)=0..&80| 00004300 33 2c 22 49 63 6f 6e 20 69 73 6e 27 74 20 69 6e |3,"Icon isn't in| 00004310 64 69 72 65 63 74 65 64 20 28 23 22 2b c3 69 63 |directed (#"+.ic| 00004320 6f 6e 25 2b 22 29 22 0d 12 15 2c 24 28 62 25 21 |on%+")"...,$(b%!| 00004330 33 32 29 3d 74 65 78 74 24 3a f2 72 65 64 72 61 |32)=text$:.redra| 00004340 77 69 63 6f 6e 28 77 69 6e 25 2c 69 63 6f 6e 25 |wicon(win%,icon%| 00004350 29 3a e1 0d 12 16 70 dd f2 72 65 61 64 68 65 6c |):....p..readhel| 00004360 70 28 77 69 6e 2c 69 63 6f 6e 2c 74 6f 29 3a ea |p(win,icon,to):.| 00004370 6c 77 69 6e 2c 76 61 6c 2c 68 65 6c 70 24 2c 66 |lwin,val,help$,f| 00004380 6f 75 6e 64 2c 61 24 2c 6d 24 2c 6d 32 24 2c 6d |ound,a$,m$,m2$,m| 00004390 68 24 3a 66 6f 75 6e 64 3d a3 3a 6c 77 69 6e 3d |h$:found=.:lwin=| 000043a0 2d 31 3a f5 3a f3 76 61 6c 2c 68 65 6c 70 24 3a |-1:.:.val,help$:| 000043b0 e7 76 61 6c 3e 28 31 3c 3c 31 36 29 84 76 61 6c |.val>(1<<16).val| 000043c0 3c 30 8c 0d 12 17 0e e7 6c 77 69 6e 3d 77 69 6e |<0......lwin=win| 000043d0 8c 0d 12 18 1c 76 61 6c 3d 69 63 6f 6e 3a 68 65 |.....val=icon:he| 000043e0 6c 70 24 3d 22 22 3a 6d 32 24 3d 6d 24 0d 12 19 |lp$="":m2$=m$...| 000043f0 17 cc 3a 6c 77 69 6e 3d 76 61 6c 3a 6d 24 3d 68 |..:lwin=val:m$=h| 00004400 65 6c 70 24 0d 12 1a 05 cd 0d 12 1b 19 cd 3a e7 |elp$..........:.| 00004410 76 61 6c 3d 69 63 6f 6e 80 6c 77 69 6e 3d 77 69 |val=icon.lwin=wi| 00004420 6e 8c 0d 12 1c 16 e7 69 63 6f 6e 3d 2d 31 84 68 |n......icon=-1.h| 00004430 65 6c 70 24 3d 22 22 8c 0d 12 1d 23 f2 73 65 6e |elp$=""....#.sen| 00004440 64 68 65 6c 70 28 a4 6d 73 67 74 65 78 74 28 6d |dhelp(.msgtext(m| 00004450 24 29 2b 22 7c 4d 22 2c 74 6f 29 0d 12 1e 36 cc |$)+"|M",to)...6.| 00004460 3a 6d 24 3d a4 6d 73 67 74 65 78 74 28 6d 24 29 |:m$=.msgtext(m$)| 00004470 3a e7 a7 6d 24 2c 22 7c 4d 22 29 3e 30 8c 6d 24 |:..m$,"|M")>0.m$| 00004480 3d c0 6d 24 2c a7 6d 24 2c 22 7c 4d 22 29 2d 31 |=.m$,.m$,"|M")-1| 00004490 29 0d 12 1f 33 f2 73 65 6e 64 68 65 6c 70 28 a4 |)...3.sendhelp(.| 000044a0 6d 73 67 74 65 78 74 28 6d 24 29 2b 22 7c 4d 22 |msgtext(m$)+"|M"| 000044b0 2b a4 6d 73 67 74 65 78 74 28 68 65 6c 70 24 29 |+.msgtext(help$)| 000044c0 2c 74 6f 29 0d 12 20 0d cd 3a 66 6f 75 6e 64 3d |,to).. ..:found=| 000044d0 b9 0d 12 21 22 cd 3a fd 68 65 6c 70 24 3d 22 2d |...!".:.help$="-| 000044e0 31 22 84 66 6f 75 6e 64 3d b9 3a e7 ac 66 6f 75 |1".found=.:..fou| 000044f0 6e 64 8c 0d 12 22 7c 21 6d 65 73 73 61 67 65 5f |nd..."|!message_| 00004500 62 75 66 66 65 72 25 3d 2d 31 3a 6d 65 73 73 61 |buffer%=-1:messa| 00004510 67 65 5f 62 75 66 66 65 72 25 21 34 3d 2d 31 3a |ge_buffer%!4=-1:| 00004520 6d 65 73 73 61 67 65 5f 62 75 66 66 65 72 25 21 |message_buffer%!| 00004530 38 3d 2d 31 3a c8 99 26 34 30 30 46 34 2c 31 2c |8=-1:..&400F4,1,| 00004540 6d 65 73 73 61 67 65 5f 62 75 66 66 65 72 25 2c |message_buffer%,| 00004550 77 69 6e 2c 69 63 6f 6e 3a e7 21 6d 65 73 73 61 |win,icon:.!messa| 00004560 67 65 5f 62 75 66 66 65 72 25 3c 3e 2d 31 8c 0d |ge_buffer%<>-1..| 00004570 12 23 92 76 61 6c 3d 62 25 3a 62 25 3d 6d 65 73 |.#.val=b%:b%=mes| 00004580 73 61 67 65 5f 62 75 66 66 65 72 25 3a 6d 68 24 |sage_buffer%:mh$| 00004590 3d a4 64 65 63 6f 64 65 6d 65 6e 75 28 63 75 72 |=.decodemenu(cur| 000045a0 6d 65 6e 75 25 29 3a 62 25 3d 76 61 6c 3a 6d 24 |menu%):b%=val:m$| 000045b0 3d 6d 68 24 3a c8 95 a7 6d 24 2c 22 20 22 29 3e |=mh$:...m$," ")>| 000045c0 30 3a c1 6d 24 2c a7 6d 24 2c 22 20 22 29 2c 31 |0:.m$,.m$," "),1| 000045d0 29 3d 22 5f 22 3a ce 3a 68 65 6c 70 24 3d a4 6d |)="_":.:help$=.m| 000045e0 73 67 74 6f 6b 65 6e 28 22 48 4d 22 2b 6d 24 29 |sgtoken("HM"+m$)| 000045f0 3a e7 68 65 6c 70 24 3c 3e 22 48 4d 22 2b 6d 24 |:.help$<>"HM"+m$| 00004600 8c 0d 12 24 17 f2 73 65 6e 64 68 65 6c 70 28 68 |...$..sendhelp(h| 00004610 65 6c 70 24 2c 74 6f 29 0d 12 25 3e cc 3a f5 3a |elp$,to)..%>.:.:| 00004620 f3 6d 24 2c 76 61 6c 2c 68 65 6c 70 24 2c 68 65 |.m$,val,help$,he| 00004630 6c 70 24 3a fd a0 28 6d 24 29 3d 63 75 72 6d 65 |lp$:..(m$)=curme| 00004640 6e 75 25 84 6d 24 3d 22 2d 32 22 3a e7 6d 24 3c |nu%.m$="-2":.m$<| 00004650 3e 22 2d 32 22 8c 0d 12 26 0c e7 76 61 6c 3e 2d |>"-2"...&..val>-| 00004660 31 8c 0d 12 27 1f f2 73 65 6e 64 68 65 6c 70 28 |1...'..sendhelp(| 00004670 68 65 6c 70 24 2c 74 6f 29 3a 66 6f 75 6e 64 3d |help$,to):found=| 00004680 b9 0d 12 28 2c cc 3a f5 3a f3 6c 77 69 6e 2c 6d |...(,.:.:.lwin,m| 00004690 24 2c 76 61 6c 2c 68 65 6c 70 24 3a e7 bb 28 6d |$,val,help$:..(m| 000046a0 24 29 3d 30 80 6d 24 3c 3e 22 30 22 8c 0d 12 29 |$)=0.m$<>"0"...)| 000046b0 27 e7 6d 68 24 3d 6d 24 8c f2 73 65 6e 64 68 65 |'.mh$=m$..sendhe| 000046c0 6c 70 28 68 65 6c 70 24 2c 74 6f 29 3a 66 6f 75 |lp(help$,to):fou| 000046d0 6e 64 3d b9 0d 12 2a 4c cc 3a e7 6c 77 69 6e 3d |nd=...*L.:.lwin=| 000046e0 6d 65 73 73 61 67 65 5f 62 75 66 66 65 72 25 21 |message_buffer%!| 000046f0 30 80 bb 28 6d 24 29 3d 6d 65 73 73 61 67 65 5f |0..(m$)=message_| 00004700 62 75 66 66 65 72 25 21 34 80 76 61 6c 3d 6d 65 |buffer%!4.val=me| 00004710 73 73 61 67 65 5f 62 75 66 66 65 72 25 21 38 8c |ssage_buffer%!8.| 00004720 0d 12 2b 1f f2 73 65 6e 64 68 65 6c 70 28 68 65 |..+..sendhelp(he| 00004730 6c 70 24 2c 74 6f 29 3a 66 6f 75 6e 64 3d b9 0d |lp$,to):found=..| 00004740 12 2c 05 cd 0d 12 2d 21 cd 3a fd 66 6f 75 6e 64 |.,....-!.:.found| 00004750 3d b9 84 6c 77 69 6e 3d 2d 32 84 6c 77 69 6e 3e |=..lwin=-2.lwin>| 00004760 26 38 30 30 30 0d 12 2e 05 cd 0d 12 2f 05 cd 0d |&8000......./...| 00004770 12 30 05 cd 0d 12 31 05 cd 0d 12 32 07 cd 3a e1 |.0....1....2..:.| 00004780 0d 12 33 4a dd f2 73 65 6e 64 68 65 6c 70 28 68 |..3J..sendhelp(h| 00004790 65 6c 70 24 2c 74 6f 29 68 65 6c 70 24 3d a4 6d |elp$,to)help$=.m| 000047a0 73 67 74 65 78 74 28 68 65 6c 70 24 29 3a e7 c2 |sgtext(help$):..| 000047b0 68 65 6c 70 24 2c 32 29 3c 3e 22 7c 4d 22 8c 68 |help$,2)<>"|M".h| 000047c0 65 6c 70 24 2b 3d 22 7c 4d 22 0d 12 34 7d ea 62 |elp$+="|M"..4}.b| 000047d0 24 2c 63 24 3a 68 65 6c 70 24 3d a4 73 75 62 73 |$,c$:help$=.subs| 000047e0 74 76 61 72 73 28 68 65 6c 70 24 29 3a c8 95 a7 |tvars(help$):...| 000047f0 68 65 6c 70 24 2c 22 7c 4d 22 29 3e 30 3a 62 24 |help$,"|M")>0:b$| 00004800 3d c0 68 65 6c 70 24 2c a7 68 65 6c 70 24 2c 22 |=.help$,.help$,"| 00004810 7c 4d 22 29 2d 31 29 3a 68 65 6c 70 24 3d c1 68 ||M")-1):help$=.h| 00004820 65 6c 70 24 2c a9 28 62 24 29 2b 33 29 3a e7 a7 |elp$,.(b$)+3):..| 00004830 22 21 2e 3f 22 2c c2 62 24 2c 31 29 29 3d 30 8c |"!.?",.b$,1))=0.| 00004840 62 24 2b 3d 22 2e 22 0d 12 35 69 63 24 2b 3d 62 |b$+="."..5ic$+=b| 00004850 24 2b 22 7c 4d 22 3a ce 3a 62 25 21 26 43 3d 62 |$+"|M":.:b%!&C=b| 00004860 25 21 38 3a 62 25 21 34 3d 74 6f 3a 62 25 21 31 |%!8:b%!4=to:b%!1| 00004870 36 3d 26 35 30 33 3a 24 28 62 25 2b 32 30 29 3d |6=&503:$(b%+20)=| 00004880 63 24 2b bd 30 3a 62 25 21 30 3d 32 30 2b 28 a9 |c$+.0:b%!0=20+(.| 00004890 28 63 24 29 2b 34 29 80 2d 34 3a c8 99 26 34 30 |(c$)+4).-4:..&40| 000048a0 30 45 37 2c 31 37 2c 62 25 2c 62 25 21 34 3a e1 |0E7,17,b%,b%!4:.| 000048b0 0d 12 36 48 dd f2 6f 70 65 6e 6d 65 73 73 61 67 |..6H..openmessag| 000048c0 65 73 ea 66 2c 6c 3a e7 6d 73 67 62 75 66 66 65 |es.f,l:.msgbuffe| 000048d0 72 25 3c 3e 2d 31 8c 85 26 38 30 33 2c 22 4d 65 |r%<>-1..&803,"Me| 000048e0 73 73 61 67 65 20 66 69 6c 65 20 61 6c 72 65 61 |ssage file alrea| 000048f0 64 79 20 6f 70 65 6e 22 0d 12 37 53 c8 99 26 34 |dy open"..7S..&4| 00004900 31 35 30 30 2c 2c 41 70 70 64 69 72 24 2b 22 2e |1500,,Appdir$+".| 00004910 4d 65 73 73 61 67 65 73 22 b8 66 2c 2c 6c 3a e7 |Messages".f,,l:.| 00004920 28 66 80 31 29 3d 31 8c 6d 73 67 62 75 66 66 65 |(f.1)=1.msgbuffe| 00004930 72 32 25 3d 30 8b 6d 73 67 62 75 66 66 65 72 32 |r2%=0.msgbuffer2| 00004940 25 3d a4 63 6c 61 69 6d 28 6c 29 0d 12 38 45 e7 |%=.claim(l)..8E.| 00004950 6d 73 67 62 75 66 66 65 72 32 25 3d 2d 31 8c 85 |msgbuffer2%=-1..| 00004960 26 38 30 33 2c 22 4e 6f 20 72 6f 6f 6d 20 66 6f |&803,"No room fo| 00004970 72 20 73 65 63 6f 6e 64 61 72 79 20 4d 65 73 73 |r secondary Mess| 00004980 61 67 65 54 72 61 6e 73 20 62 75 66 66 65 72 22 |ageTrans buffer"| 00004990 0d 12 39 6e 6d 73 67 62 75 66 66 65 72 25 3d a4 |..9nmsgbuffer%=.| 000049a0 63 6c 61 69 6d 28 31 36 29 3a e7 6d 73 67 62 75 |claim(16):.msgbu| 000049b0 66 66 65 72 25 3d 2d 31 8c f2 72 65 6c 65 61 73 |ffer%=-1..releas| 000049c0 65 28 6d 73 67 62 75 66 66 65 72 32 25 29 3a 85 |e(msgbuffer2%):.| 000049d0 26 38 30 33 2c 22 4e 6f 20 72 6f 6f 6d 20 66 6f |&803,"No room fo| 000049e0 72 20 70 72 69 6d 61 72 79 20 4d 65 73 73 61 67 |r primary Messag| 000049f0 65 54 72 61 6e 73 20 62 75 66 66 65 72 22 0d 12 |eTrans buffer"..| 00004a00 3a 39 c8 99 26 34 31 35 30 31 2c 6d 73 67 62 75 |:9..&41501,msgbu| 00004a10 66 66 65 72 25 2c 41 70 70 64 69 72 24 2b 22 2e |ffer%,Appdir$+".| 00004a20 4d 65 73 73 61 67 65 73 22 2c 6d 73 67 62 75 66 |Messages",msgbuf| 00004a30 66 65 72 32 25 3a e1 0d 12 3b 2f dd f2 63 6c 6f |fer2%:...;/..clo| 00004a40 73 65 6d 65 73 73 61 67 65 73 3a ea 85 3a ee 85 |semessages:..:..| 00004a50 ea 3a ef 34 3a f6 3a f1 22 20 61 74 20 22 3b 9e |.:.4:.:." at ";.| 00004a60 3a 47 3d a5 3a e1 0d 12 3c 13 e7 6d 73 67 62 75 |:G=.:...<..msgbu| 00004a70 66 66 65 72 25 3e 2d 31 8c 0d 12 3d 42 c8 99 26 |ffer%>-1...=B..&| 00004a80 36 31 35 30 34 2c 6d 73 67 62 75 66 66 65 72 25 |61504,msgbuffer%| 00004a90 3a f2 72 65 6c 65 61 73 65 28 6d 73 67 62 75 66 |:.release(msgbuf| 00004aa0 66 65 72 25 29 3a f2 72 65 6c 65 61 73 65 28 6d |fer%):.release(m| 00004ab0 73 67 62 75 66 66 65 72 32 25 29 0d 12 3e 07 cd |sgbuffer2%)..>..| 00004ac0 3a e1 0d 12 3f 3b dd a4 6d 73 67 74 6f 6b 65 6e |:...?;..msgtoken| 00004ad0 28 74 24 29 ea 73 31 24 2c 73 32 24 2c 73 33 24 |(t$).s1$,s2$,s3$| 00004ae0 2c 61 24 2c 6c 65 6e 25 2c 66 3a e7 6d 73 67 62 |,a$,len%,f:.msgb| 00004af0 75 66 66 65 72 25 3d 2d 31 8c 3d 74 24 0d 12 40 |uffer%=-1.=t$..@| 00004b00 57 61 24 3d c1 74 24 2c a7 74 24 2b 22 3a 22 2c |Wa$=.t$,.t$+":",| 00004b10 22 3a 22 29 2b 31 29 3a 74 24 3d c0 74 24 2c a7 |":")+1):t$=.t$,.| 00004b20 74 24 2b 22 3a 22 2c 22 3a 22 29 2d 31 29 3a 73 |t$+":",":")-1):s| 00004b30 31 24 3d c0 61 24 2c a7 61 24 2b 22 3a 22 2c 22 |1$=.a$,.a$+":","| 00004b40 3a 22 29 2d 31 29 3a e7 c0 73 31 24 2c 31 29 3d |:")-1):..s1$,1)=| 00004b50 22 7c 22 8c 0d 12 41 1c 73 31 24 3d c1 61 24 2c |"|"...A.s1$=.a$,| 00004b60 32 29 3a 73 32 24 3d 22 22 3a 73 33 24 3d 22 22 |2):s2$="":s3$=""| 00004b70 0d 12 42 5f cc 3a 61 24 3d c1 61 24 2c a9 28 73 |..B_.:a$=.a$,.(s| 00004b80 31 24 29 2b 32 29 3a 73 32 24 3d c0 61 24 2c a7 |1$)+2):s2$=.a$,.| 00004b90 61 24 2b 22 3a 22 2c 22 3a 22 29 2d 31 29 3a e7 |a$+":",":")-1):.| 00004ba0 c0 73 32 24 2c 31 29 3d 22 7c 22 8c 73 32 24 3d |.s2$,1)="|".s2$=| 00004bb0 c1 61 24 2c 32 29 3a 73 33 24 3d 22 22 8b 73 33 |.a$,2):s3$="".s3| 00004bc0 24 3d c1 61 24 2c a9 28 73 32 24 29 2b 32 29 0d |$=.a$,.(s2$)+2).| 00004bd0 12 43 6b cd 3a c8 99 26 36 31 35 30 32 2c 6d 73 |.Ck.:..&61502,ms| 00004be0 67 62 75 66 66 65 72 25 2c 74 24 2c 6d 65 73 73 |gbuffer%,t$,mess| 00004bf0 61 67 65 5f 62 75 66 66 65 72 25 2c 32 35 36 2c |age_buffer%,256,| 00004c00 73 31 24 2c 73 32 24 2c 73 33 24 b8 2c 2c 2c 6c |s1$,s2$,s3$.,,,l| 00004c10 65 6e 25 3b 66 3a e7 28 66 80 31 29 3d 31 8c 3d |en%;f:.(f.1)=1.=| 00004c20 74 24 8b 6d 65 73 73 61 67 65 5f 62 75 66 66 65 |t$.message_buffe| 00004c30 72 25 3f 6c 65 6e 25 3d 26 44 0d 12 44 21 3d a4 |r%?len%=&D..D!=.| 00004c40 73 75 62 73 74 76 61 72 73 28 24 6d 65 73 73 61 |substvars($messa| 00004c50 67 65 5f 62 75 66 66 65 72 25 29 0d 12 45 32 dd |ge_buffer%)..E2.| 00004c60 a4 6d 73 67 74 65 78 74 28 61 24 29 3a e7 c0 61 |.msgtext(a$):..a| 00004c70 24 2c 31 29 3d 22 3e 22 8c 61 24 3d a4 6d 73 67 |$,1)=">".a$=.msg| 00004c80 74 6f 6b 65 6e 28 c1 61 24 2c 32 29 29 0d 12 46 |token(.a$,2))..F| 00004c90 07 3d 61 24 0d 12 47 1e dd a4 73 74 72 69 6e 67 |.=a$..G...string| 00004ca0 30 28 61 25 29 ea 61 24 3a e7 61 25 3d 30 8c 3d |0(a%).a$:.a%=0.=| 00004cb0 22 22 0d 12 48 2f c8 95 3f 61 25 3e 33 31 80 a9 |""..H/..?a%>31..| 00004cc0 28 61 24 29 3c 26 46 46 3a 61 24 3d 61 24 2b bd |(a$)<&FF:a$=a$+.| 00004cd0 3f 61 25 3a 61 25 3d 61 25 2b 31 3a ce 3a 3d 61 |?a%:a%=a%+1:.:=a| 00004ce0 24 0d 12 49 4e dd a4 6c 6f 77 65 72 28 61 24 29 |$..IN..lower(a$)| 00004cf0 ea 63 24 2c 62 24 2c 49 3a e3 49 3d 31 b8 a9 28 |.c$,b$,I:.I=1..(| 00004d00 61 24 29 3a 63 24 3d c1 61 24 2c 49 2c 31 29 3a |a$):c$=.a$,I,1):| 00004d10 e7 63 24 3e 3d 22 41 22 80 63 24 3c 3d 22 5a 22 |.c$>="A".c$<="Z"| 00004d20 8c 63 24 3d bd 28 97 28 63 24 29 2b 33 32 29 0d |.c$=.(.(c$)+32).| 00004d30 12 4a 10 62 24 2b 3d 63 24 3a ed 3a 3d 62 24 0d |.J.b$+=c$:.:=b$.| 00004d40 12 4b 25 dd a4 73 75 62 73 74 76 61 72 73 28 61 |.K%..substvars(a| 00004d50 24 29 3a ea 62 24 2c 64 24 3a ea 85 3a ee 85 ea |$):.b$,d$:..:...| 00004d60 3a 3d 61 24 0d 12 4c 5b c8 95 a7 61 24 2c 22 a4 |:=a$..L[...a$,".| 00004d70 22 29 3e 30 3a 62 24 3d c1 61 24 2c a7 61 24 2c |")>0:b$=.a$,.a$,| 00004d80 22 a4 22 29 2b 31 29 3a 62 24 3d c0 62 24 2c a7 |".")+1):b$=.b$,.| 00004d90 62 24 2c 22 a4 22 29 2d 31 29 3a 64 24 3d 62 24 |b$,".")-1):d$=b$| 00004da0 3a e7 c2 64 24 2c 31 29 3c 3e 22 24 22 8c 64 24 |:..d$,1)<>"$".d$| 00004db0 3d 22 53 54 52 24 28 22 2b 64 24 2b 22 29 22 0d |="STR$("+d$+")".| 00004dc0 12 4d 38 61 24 3d c0 61 24 2c a7 61 24 2c 22 a4 |.M8a$=.a$,.a$,".| 00004dd0 22 29 2d 31 29 2b a0 28 64 24 29 2b c1 61 24 2c |")-1)+.(d$)+.a$,| 00004de0 a7 61 24 2c 22 a4 22 29 2b a9 28 62 24 29 2b 32 |.a$,".")+.(b$)+2| 00004df0 29 3a ce 3a 3d 61 24 0d 12 4e 4f dd a4 66 69 6c |):.:=a$..NO..fil| 00004e00 65 6c 65 6e 67 74 68 28 66 24 29 ea 6c 65 6e 25 |elength(f$).len%| 00004e10 2c 65 78 2c 66 3a c8 99 26 32 30 30 30 38 2c 35 |,ex,f:..&20008,5| 00004e20 2c 66 24 b8 65 78 2c 2c 2c 2c 6c 65 6e 25 3b 66 |,f$.ex,,,,len%;f| 00004e30 3a e7 65 78 3d 30 84 28 66 80 31 29 3d 31 8c 6c |:.ex=0.(f.1)=1.l| 00004e40 65 6e 25 3d 2d 31 0d 12 4f 09 3d 6c 65 6e 25 0d |en%=-1..O.=len%.| 00004e50 12 50 34 dd a4 6c 65 61 66 6e 61 6d 65 28 66 24 |.P4..leafname(f$| 00004e60 29 ea 72 24 3a e7 a7 66 24 2c 22 3a 22 29 3e 30 |).r$:..f$,":")>0| 00004e70 8c 66 24 3d c1 66 24 2c a7 66 24 2c 22 3a 22 29 |.f$=.f$,.f$,":")| 00004e80 2b 31 29 0d 12 51 0f c8 8e a7 66 24 2c 22 2e 22 |+1)..Q....f$,"."| 00004e90 29 ca 0d 12 52 0c c9 30 3a 72 24 3d 66 24 0d 12 |)...R..0:r$=f$..| 00004ea0 53 26 7f 72 24 3d a4 6c 65 61 66 6e 61 6d 65 28 |S&.r$=.leafname(| 00004eb0 c2 66 24 2c a9 28 66 24 29 2d a7 66 24 2c 22 2e |.f$,.(f$)-.f$,".| 00004ec0 22 29 29 29 0d 12 54 09 cb 3a 3d 72 24 0d 12 55 |")))..T..:=r$..U| 00004ed0 4e dd f2 73 65 74 63 61 72 65 74 65 6e 64 28 77 |N..setcaretend(w| 00004ee0 69 6e 2c 69 63 6f 6e 29 3a f2 73 65 74 63 61 72 |in,icon):.setcar| 00004ef0 65 74 70 6f 73 28 77 69 6e 2c 69 63 6f 6e 2c a9 |etpos(win,icon,.| 00004f00 28 a4 67 65 74 69 63 6f 6e 74 65 78 74 28 77 69 |(.geticontext(wi| 00004f10 6e 2c 69 63 6f 6e 29 29 29 3a e1 0d 12 56 42 dd |n,icon))):...VB.| 00004f20 f2 73 65 74 63 61 72 65 74 70 6f 73 28 77 69 6e |.setcaretpos(win| 00004f30 2c 69 63 6f 6e 2c 63 68 61 72 73 29 3a c8 99 26 |,icon,chars):..&| 00004f40 34 30 30 44 32 2c 77 69 6e 2c 69 63 6f 6e 2c 30 |400D2,win,icon,0| 00004f50 2c 30 2c 2d 31 2c 63 68 61 72 73 3a e1 0d 12 57 |,0,-1,chars:...W| 00004f60 51 dd f2 67 65 74 63 61 72 65 74 70 6f 73 28 f8 |Q..getcaretpos(.| 00004f70 77 69 6e 2c f8 69 63 6f 6e 2c f8 63 68 61 72 73 |win,.icon,.chars| 00004f80 29 3a c8 99 26 34 30 30 44 33 2c 2c 62 25 3a 77 |):..&400D3,,b%:w| 00004f90 69 6e 3d 21 62 25 3a 69 63 6f 6e 3d 62 25 21 34 |in=!b%:icon=b%!4| 00004fa0 3a 63 68 61 72 73 3d 62 25 21 32 30 3a e1 0d 12 |:chars=b%!20:...| 00004fb0 58 9e dd f2 69 6e 69 74 73 6f 63 6b 65 74 73 3a |X...initsockets:| 00004fc0 c8 99 26 32 30 30 33 39 2c 2c 22 53 6f 63 6b 65 |..&20039,,"Socke| 00004fd0 74 5f 43 72 65 61 74 22 b8 3b 66 6c 61 67 73 25 |t_Creat".;flags%| 00004fe0 3a e7 28 66 6c 61 67 73 25 80 31 29 8c 72 65 70 |:.(flags%.1).rep| 00004ff0 6c 79 3d a4 65 72 72 6f 72 62 6f 78 28 22 53 6f |ly=.errorbox("So| 00005000 63 6b 65 74 4c 69 62 22 2c 22 54 68 69 73 20 61 |cketLib","This a| 00005010 70 70 6c 69 63 61 74 69 6f 6e 20 72 65 71 75 69 |pplication requi| 00005020 72 65 73 20 61 6e 20 69 6e 74 65 72 6e 65 74 20 |res an internet | 00005030 73 75 69 74 65 20 74 6f 20 62 65 20 69 6e 73 74 |suite to be inst| 00005040 61 6c 6c 65 64 2e 22 2c 32 29 3a e0 0d 12 59 47 |alled.",2):...YG| 00005050 2a 52 4d 45 6e 73 75 72 65 20 49 6e 65 74 53 65 |*RMEnsure InetSe| 00005060 72 76 69 63 65 73 20 31 2e 30 37 20 52 4d 4c 6f |rvices 1.07 RMLo| 00005070 61 64 20 53 79 73 74 65 6d 3a 4d 6f 64 75 6c 65 |ad System:Module| 00005080 73 2e 4e 65 74 77 6f 72 6b 2e 49 53 65 72 76 69 |s.Network.IServi| 00005090 63 65 73 0d 12 5a 3a 2a 52 4d 45 6e 73 75 72 65 |ces..Z:*RMEnsure| 000050a0 20 49 6e 65 74 53 65 72 76 69 63 65 73 20 31 2e | InetServices 1.| 000050b0 30 37 20 53 65 74 20 4e 6f 49 53 65 72 76 69 63 |07 Set NoIServic| 000050c0 65 73 4d 6f 64 75 6c 65 20 54 72 75 65 0d 12 5b |esModule True..[| 000050d0 d8 e7 a4 73 79 73 74 65 6d 76 61 72 28 22 4e 6f |...systemvar("No| 000050e0 49 53 65 72 76 69 63 65 73 4d 6f 64 75 6c 65 22 |IServicesModule"| 000050f0 29 3d 22 54 72 75 65 22 8c ff 28 22 55 6e 73 65 |)="True"..("Unse| 00005100 74 20 4e 6f 49 53 65 72 76 69 63 65 73 4d 6f 64 |t NoIServicesMod| 00005110 75 6c 65 22 29 3a 72 65 70 6c 79 3d a4 65 72 72 |ule"):reply=.err| 00005120 6f 72 62 6f 78 28 22 53 6f 63 6b 65 74 4c 69 62 |orbox("SocketLib| 00005130 22 2c 22 54 68 69 73 20 61 70 70 6c 69 63 61 74 |","This applicat| 00005140 69 6f 6e 20 72 65 71 75 69 72 65 73 20 61 20 6c |ion requires a l| 00005150 61 74 65 72 20 76 65 72 73 69 6f 6e 20 6f 66 20 |ater version of | 00005160 74 68 65 20 49 53 65 72 76 69 63 65 73 20 6d 6f |the IServices mo| 00005170 64 75 6c 65 20 2d 20 74 68 69 73 20 63 61 6e 20 |dule - this can | 00005180 62 65 20 6f 62 74 61 69 6e 65 64 20 77 69 74 68 |be obtained with| 00005190 20 4a 46 53 68 61 72 65 64 20 32 2e 34 32 2e 22 | JFShared 2.42."| 000051a0 2c 32 29 3a e0 0d 12 5c 85 de 73 6f 63 6b 25 28 |,2):...\..sock%(| 000051b0 32 35 36 29 2c 73 6f 63 6b 61 64 64 72 25 31 36 |256),sockaddr%16| 000051c0 2c 73 6f 63 6b 74 65 6d 70 25 32 35 36 3a 73 6f |,socktemp%256:so| 000051d0 63 6b 25 28 29 3d 2d 31 3a 73 6f 63 6b 62 75 66 |ck%()=-1:sockbuf| 000051e0 6c 65 6e 25 3d 26 34 30 30 2a 32 3a 73 6f 63 6b |len%=&400*2:sock| 000051f0 6c 69 6e 65 25 3d a4 63 6c 61 69 6d 28 73 6f 63 |line%=.claim(soc| 00005200 6b 62 75 66 6c 65 6e 25 29 3a c8 99 26 34 31 32 |kbuflen%):..&412| 00005210 31 38 b8 73 6f 63 6b 74 73 69 7a 65 25 3a 6d 74 |18.socktsize%:mt| 00005220 63 68 61 69 6e 25 3d 30 3a e1 0d 12 5d 5e dd a4 |chain%=0:...]^..| 00005230 73 6f 63 6b 65 74 5f 66 69 6e 64 68 61 6e 64 6c |socket_findhandl| 00005240 65 3a ea 73 6f 63 6b 25 2c 6f 25 3a 73 6f 63 6b |e:.sock%,o%:sock| 00005250 25 3d 2d 31 3a f5 73 6f 63 6b 25 2b 3d 31 3a fd |%=-1:.sock%+=1:.| 00005260 73 6f 63 6b 25 28 73 6f 63 6b 25 29 3d 2d 31 84 |sock%(sock%)=-1.| 00005270 73 6f 63 6b 25 3d 32 35 36 3a e7 73 6f 63 6b 25 |sock%=256:.sock%| 00005280 3d 32 35 36 8c 3d 2d 31 0d 12 5e 2f 73 6f 63 6b |=256.=-1..^/sock| 00005290 25 28 73 6f 63 6b 25 29 3d a4 63 6c 61 69 6d 28 |%(sock%)=.claim(| 000052a0 31 36 29 3a e7 73 6f 63 6b 25 28 73 6f 63 6b 25 |16):.sock%(sock%| 000052b0 29 3c 30 8c 3d 2d 31 0d 12 5f 2b e3 6f 25 3d 30 |)<0.=-1.._+.o%=0| 000052c0 b8 31 36 2d 34 88 34 3a 73 6f 63 6b 25 28 73 6f |.16-4.4:sock%(so| 000052d0 63 6b 25 29 21 6f 25 3d 30 3a ed 3a 3d 73 6f 63 |ck%)!o%=0:.:=soc| 000052e0 6b 25 0d 12 60 45 dd a4 73 6f 63 6b 65 74 5f 63 |k%..`E..socket_c| 000052f0 72 65 61 74 65 69 6e 65 74 3a ea 73 6f 63 6b 25 |reateinet:.sock%| 00005300 3a 73 6f 63 6b 25 3d a4 73 6f 63 6b 65 74 5f 66 |:sock%=.socket_f| 00005310 69 6e 64 68 61 6e 64 6c 65 3a e7 73 6f 63 6b 25 |indhandle:.sock%| 00005320 3d 2d 31 8c 3d 2d 31 0d 12 61 4f c8 99 26 34 31 |=-1.=-1..aO..&41| 00005330 32 30 30 2c 32 2c 31 2c 30 b8 73 6f 63 6b 25 28 |200,2,1,0.sock%(| 00005340 73 6f 63 6b 25 29 21 30 3a e7 73 6f 63 6b 25 28 |sock%)!0:.sock%(| 00005350 73 6f 63 6b 25 29 21 30 3d 2d 31 8c f2 72 65 6c |sock%)!0=-1..rel| 00005360 65 61 73 65 28 73 6f 63 6b 25 28 73 6f 63 6b 25 |ease(sock%(sock%| 00005370 29 29 3a 3d 2d 31 0d 12 62 0a 3d 73 6f 63 6b 25 |)):=-1..b.=sock%| 00005380 0d 12 63 50 dd f2 73 6f 63 6b 65 74 5f 63 68 65 |..cP..socket_che| 00005390 63 6b 28 73 6f 63 6b 25 2c 72 24 29 3a e7 73 6f |ck(sock%,r$):.so| 000053a0 63 6b 25 3c 30 84 73 6f 63 6b 25 3e 32 35 36 8c |ck%<0.sock%>256.| 000053b0 85 26 38 30 35 2c 72 24 2b 22 3a 20 53 6f 63 6b |.&805,r$+": Sock| 000053c0 65 74 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 22 |et out of range"| 000053d0 0d 12 64 37 e7 73 6f 63 6b 25 28 73 6f 63 6b 25 |..d7.sock%(sock%| 000053e0 29 3c 30 8c 85 26 38 30 35 2c 72 24 2b 22 3a 20 |)<0..&805,r$+": | 000053f0 53 6f 63 6b 65 74 20 68 61 73 20 62 65 65 6e 20 |Socket has been | 00005400 63 6c 6f 73 65 64 22 0d 12 65 05 e1 0d 12 66 cf |closed"..e....f.| 00005410 dd a4 73 6f 63 6b 65 74 5f 66 69 6e 64 6c 69 73 |..socket_findlis| 00005420 74 65 6e 28 73 6f 63 6b 25 2c 69 70 25 2c 70 6f |ten(sock%,ip%,po| 00005430 72 74 25 2c 6c 69 6d 69 74 25 29 3a ea 66 6c 61 |rt%,limit%):.fla| 00005440 67 73 25 2c 72 30 3a 70 6f 72 74 25 3d 70 6f 72 |gs%,r0:port%=por| 00005450 74 25 80 26 46 46 46 46 3a f2 73 6f 63 6b 65 74 |t%.&FFFF:.socket| 00005460 5f 63 68 65 63 6b 28 73 6f 63 6b 25 2c 22 46 69 |_check(sock%,"Fi| 00005470 6e 64 4c 69 73 74 65 6e 22 29 3a f5 3a 73 6f 63 |ndListen"):.:soc| 00005480 6b 61 64 64 72 25 21 30 3d 32 84 28 28 70 6f 72 |kaddr%!0=2.((por| 00005490 74 25 81 32 35 36 29 3c 3c 31 36 29 84 28 28 70 |t%.256)<<16).((p| 000054a0 6f 72 74 25 83 32 35 36 29 3c 3c 32 34 29 3a 73 |ort%.256)<<24):s| 000054b0 6f 63 6b 61 64 64 72 25 21 34 3d 69 70 25 3a 73 |ockaddr%!4=ip%:s| 000054c0 6f 63 6b 61 64 64 72 25 21 38 3d 30 3a 73 6f 63 |ockaddr%!8=0:soc| 000054d0 6b 61 64 64 72 25 21 26 43 3d 30 0d 12 67 53 c8 |kaddr%!&C=0..gS.| 000054e0 99 26 36 31 32 30 31 2c 73 6f 63 6b 25 28 73 6f |.&61201,sock%(so| 000054f0 63 6b 25 29 21 30 2c 73 6f 63 6b 61 64 64 72 25 |ck%)!0,sockaddr%| 00005500 2c 31 36 b8 72 30 3b 66 6c 61 67 73 25 3a e7 28 |,16.r0;flags%:.(| 00005510 66 6c 61 67 73 25 80 31 29 3d 31 8c 70 6f 72 74 |flags%.1)=1.port| 00005520 25 2b 3d 31 3a 6c 69 6d 69 74 25 2d 3d 31 0d 12 |%+=1:limit%-=1..| 00005530 68 28 fd 28 66 6c 61 67 73 25 80 31 29 3d 30 84 |h(.(flags%.1)=0.| 00005540 6c 69 6d 69 74 25 3c 30 3a e7 6c 69 6d 69 74 25 |limit%<0:.limit%| 00005550 3c 30 8c 3d 2d 31 0d 12 69 86 21 73 6f 63 6b 74 |<0.=-1..i.!sockt| 00005560 65 6d 70 25 3d 2d 31 3a c8 99 26 36 31 32 31 32 |emp%=-1:..&61212| 00005570 2c 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 30 2c |,sock%(sock%)!0,| 00005580 2d 26 37 66 66 62 39 39 38 32 2c 73 6f 63 6b 74 |-&7ffb9982,sockt| 00005590 65 6d 70 25 3a c8 99 26 36 31 32 30 32 2c 73 6f |emp%:..&61202,so| 000055a0 63 6b 25 28 73 6f 63 6b 25 29 21 30 2c 35 3a 73 |ck%(sock%)!0,5:s| 000055b0 6f 63 6b 25 28 73 6f 63 6b 25 29 21 26 43 3d 28 |ock%(sock%)!&C=(| 000055c0 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 26 43 80 |sock%(sock%)!&C.| 000055d0 ac 31 29 84 31 3a 3d 70 6f 72 74 25 0d 12 6a ef |.1).1:=port%..j.| 000055e0 dd a4 73 6f 63 6b 65 74 5f 63 6f 6e 6e 65 63 74 |..socket_connect| 000055f0 28 73 6f 63 6b 25 2c 69 70 25 2c 70 6f 72 74 25 |(sock%,ip%,port%| 00005600 29 3a ea 66 6c 61 67 73 25 2c 72 30 3a 70 6f 72 |):.flags%,r0:por| 00005610 74 25 3d 70 6f 72 74 25 80 26 46 46 46 46 3a f2 |t%=port%.&FFFF:.| 00005620 73 6f 63 6b 65 74 5f 63 68 65 63 6b 28 73 6f 63 |socket_check(soc| 00005630 6b 25 2c 22 43 6f 6e 6e 65 63 74 22 29 3a 73 6f |k%,"Connect"):so| 00005640 63 6b 61 64 64 72 25 21 30 3d 32 84 28 28 70 6f |ckaddr%!0=2.((po| 00005650 72 74 25 81 32 35 36 29 3c 3c 31 36 29 84 28 28 |rt%.256)<<16).((| 00005660 70 6f 72 74 25 83 32 35 36 29 3c 3c 32 34 29 3a |port%.256)<<24):| 00005670 73 6f 63 6b 61 64 64 72 25 21 34 3d 69 70 25 3a |sockaddr%!4=ip%:| 00005680 73 6f 63 6b 61 64 64 72 25 21 38 3d 30 3a 73 6f |sockaddr%!8=0:so| 00005690 63 6b 61 64 64 72 25 21 26 43 3d 30 3a c8 99 26 |ckaddr%!&C=0:..&| 000056a0 36 31 32 30 34 2c 73 6f 63 6b 25 28 73 6f 63 6b |61204,sock%(sock| 000056b0 25 29 21 30 2c 73 6f 63 6b 61 64 64 72 25 2c 31 |%)!0,sockaddr%,1| 000056c0 36 b8 72 30 3b 66 6c 61 67 73 25 0d 12 6b 14 e7 |6.r0;flags%..k..| 000056d0 28 66 6c 61 67 73 25 80 31 29 3d 31 8c 3d a3 0d |(flags%.1)=1.=..| 000056e0 12 6c 66 21 73 6f 63 6b 74 65 6d 70 25 3d 2d 31 |.lf!socktemp%=-1| 000056f0 3a c8 99 26 36 31 32 31 32 2c 73 6f 63 6b 25 28 |:..&61212,sock%(| 00005700 73 6f 63 6b 25 29 21 30 2c 2d 26 37 66 66 62 39 |sock%)!0,-&7ffb9| 00005710 39 38 32 2c 73 6f 63 6b 74 65 6d 70 25 3a 73 6f |982,socktemp%:so| 00005720 63 6b 25 28 73 6f 63 6b 25 29 21 26 43 3d 28 73 |ck%(sock%)!&C=(s| 00005730 6f 63 6b 25 28 73 6f 63 6b 25 29 21 26 43 80 ac |ock%(sock%)!&C..| 00005740 31 29 3a 3d b9 0d 12 6d 6d dd a4 73 6f 63 6b 65 |1):=...mm..socke| 00005750 74 5f 61 63 63 65 70 74 28 6d 61 69 6e 25 29 3a |t_accept(main%):| 00005760 f2 73 6f 63 6b 65 74 5f 63 68 65 63 6b 28 6d 61 |.socket_check(ma| 00005770 69 6e 25 2c 22 41 63 63 65 70 74 22 29 3a ea 73 |in%,"Accept"):.s| 00005780 6b 74 25 2c 73 6f 63 6b 25 2c 4f 3a 73 6f 63 6b |kt%,sock%,O:sock| 00005790 25 3d a4 73 6f 63 6b 65 74 5f 66 69 6e 64 68 61 |%=.socket_findha| 000057a0 6e 64 6c 65 3a e7 73 6f 63 6b 25 3d 2d 31 8c 3d |ndle:.sock%=-1.=| 000057b0 2d 31 0d 12 6e 7a 21 73 6f 63 6b 74 65 6d 70 25 |-1..nz!socktemp%| 000057c0 3d 31 36 3a c8 99 26 36 31 32 30 33 2c 73 6f 63 |=16:..&61203,soc| 000057d0 6b 25 28 6d 61 69 6e 25 29 21 30 2c 73 6f 63 6b |k%(main%)!0,sock| 000057e0 61 64 64 72 25 2c 73 6f 63 6b 74 65 6d 70 25 b8 |addr%,socktemp%.| 000057f0 73 6b 74 25 3b 66 6c 61 67 73 25 3a e7 28 66 6c |skt%;flags%:.(fl| 00005800 61 67 73 25 80 31 29 3d 31 84 73 6b 74 25 3d 2d |ags%.1)=1.skt%=-| 00005810 31 8c f2 72 65 6c 65 61 73 65 28 73 6f 63 6b 25 |1..release(sock%| 00005820 28 73 6f 63 6b 25 29 29 3a 3d 2d 31 0d 12 6f 5d |(sock%)):=-1..o]| 00005830 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 30 3d 73 |sock%(sock%)!0=s| 00005840 6b 74 25 3a e3 4f 3d 34 b8 31 36 2d 34 88 34 3a |kt%:.O=4.16-4.4:| 00005850 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 4f 3d 73 |sock%(sock%)!O=s| 00005860 6f 63 6b 25 28 6d 61 69 6e 25 29 21 4f 3a ed 3a |ock%(main%)!O:.:| 00005870 e7 28 28 73 6f 63 6b 25 28 6d 61 69 6e 25 29 21 |.((sock%(main%)!| 00005880 26 43 29 80 32 29 3d 32 8c 0d 12 70 39 73 6f 63 |&C).2)=2...p9soc| 00005890 6b 25 28 73 6f 63 6b 25 29 21 34 3d a4 63 6c 61 |k%(sock%)!4=.cla| 000058a0 69 6d 28 73 6f 63 6b 62 75 66 6c 65 6e 25 29 3a |im(sockbuflen%):| 000058b0 e7 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 34 3c |.sock%(sock%)!4<| 000058c0 30 8c 0d 12 71 1e f2 72 65 6c 65 61 73 65 28 73 |0...q..release(s| 000058d0 6f 63 6b 25 28 73 6f 63 6b 25 29 29 3a 3d 2d 31 |ock%(sock%)):=-1| 000058e0 0d 12 72 16 cd 3a 73 6f 63 6b 25 28 73 6f 63 6b |..r..:sock%(sock| 000058f0 25 29 21 38 3d 30 0d 12 73 0c cd 3a 3d 73 6f 63 |%)!8=0..s..:=soc| 00005900 6b 25 0d 12 74 7f dd f2 63 6c 6f 73 65 73 6f 63 |k%..t...closesoc| 00005910 6b 65 74 73 3a ea 49 25 2c 73 25 3a e3 49 25 3d |kets:.I%,s%:.I%=| 00005920 30 b8 32 35 36 3a 73 25 3d 49 25 3a f2 73 6f 63 |0.256:s%=I%:.soc| 00005930 6b 65 74 5f 63 6c 6f 73 65 28 73 25 29 3a ed 3a |ket_close(s%):.:| 00005940 f2 72 65 6c 65 61 73 65 28 73 6f 63 6b 6c 69 6e |.release(socklin| 00005950 65 25 29 3a c8 95 6d 74 63 68 61 69 6e 25 3c 3e |e%):..mtchain%<>| 00005960 30 3a f2 69 6e 65 74 5f 6b 69 6c 6c 6d 74 71 75 |0:.inet_killmtqu| 00005970 65 72 79 28 6d 74 63 68 61 69 6e 25 29 3a ce 3a |ery(mtchain%):.:| 00005980 e1 0d 12 75 30 dd f2 73 6f 63 6b 65 74 5f 63 6c |...u0..socket_cl| 00005990 6f 73 65 28 f8 73 6f 63 6b 25 29 3a e7 73 6f 63 |ose(.sock%):.soc| 000059a0 6b 25 3e 3d 30 80 73 6f 63 6b 25 3c 3d 32 35 36 |k%>=0.sock%<=256| 000059b0 8c 0d 12 76 15 e7 73 6f 63 6b 25 28 73 6f 63 6b |...v..sock%(sock| 000059c0 25 29 3e 2d 31 8c 0d 12 77 67 c8 99 26 36 31 32 |%)>-1...wg..&612| 000059d0 30 42 2c 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 |0B,sock%(sock%)!| 000059e0 30 2c 32 3a c8 99 26 36 31 32 31 30 2c 73 6f 63 |0,2:..&61210,soc| 000059f0 6b 25 28 73 6f 63 6b 25 29 21 30 3a e7 28 28 73 |k%(sock%)!0:.((s| 00005a00 6f 63 6b 25 28 73 6f 63 6b 25 29 21 26 43 29 80 |ock%(sock%)!&C).| 00005a10 32 29 3d 32 8c f2 72 65 6c 65 61 73 65 28 73 6f |2)=2..release(so| 00005a20 63 6b 25 28 73 6f 63 6b 25 29 21 34 29 0d 12 78 |ck%(sock%)!4)..x| 00005a30 1a f2 72 65 6c 65 61 73 65 28 73 6f 63 6b 25 28 |..release(sock%(| 00005a40 73 6f 63 6b 25 29 29 0d 12 79 05 cd 0d 12 7a 10 |sock%))..y....z.| 00005a50 cd 3a 73 6f 63 6b 25 3d 2d 31 3a e1 0d 12 7b 74 |.:sock%=-1:...{t| 00005a60 dd a4 73 6f 63 6b 65 74 5f 69 6e 62 75 66 66 65 |..socket_inbuffe| 00005a70 72 28 73 6f 63 6b 25 29 3a f2 73 6f 63 6b 65 74 |r(sock%):.socket| 00005a80 5f 63 68 65 63 6b 28 73 6f 63 6b 25 2c 22 49 6e |_check(sock%,"In| 00005a90 42 75 66 66 65 72 22 29 3a c8 99 26 36 31 32 31 |Buffer"):..&6121| 00005aa0 32 2c 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 30 |2,sock%(sock%)!0| 00005ab0 2c 26 34 30 30 34 36 36 37 66 2c 73 6f 63 6b 74 |,&4004667f,sockt| 00005ac0 65 6d 70 25 3a 3d 21 73 6f 63 6b 74 65 6d 70 25 |emp%:=!socktemp%| 00005ad0 0d 12 7c 5b dd a4 73 6f 63 6b 65 74 5f 65 6f 66 |..|[..socket_eof| 00005ae0 28 73 6f 63 6b 25 29 3a f2 73 6f 63 6b 65 74 5f |(sock%):.socket_| 00005af0 63 68 65 63 6b 28 73 6f 63 6b 25 2c 22 45 6f 66 |check(sock%,"Eof| 00005b00 22 29 3a ea 6f 6b 2c 66 25 3a 6f 6b 3d a4 73 6f |"):.ok,f%:ok=.so| 00005b10 63 6b 65 74 5f 72 65 61 64 79 28 73 6f 63 6b 25 |cket_ready(sock%| 00005b20 2c b9 29 3a e7 6f 6b 3c 3e 30 8c 0d 12 7d 46 c8 |,.):.ok<>0...}F.| 00005b30 99 26 36 31 32 30 35 2c 73 6f 63 6b 25 28 73 6f |.&61205,sock%(so| 00005b40 63 6b 25 29 21 30 2c 73 6f 63 6b 74 65 6d 70 25 |ck%)!0,socktemp%| 00005b50 2c 31 2c 32 2b 26 38 30 b8 6f 6b 3b 66 25 3a 6f |,1,2+&80.ok;f%:o| 00005b60 6b 3d 28 6f 6b 3d 30 29 84 28 66 25 80 31 29 3d |k=(ok=0).(f%.1)=| 00005b70 31 0d 12 7e 09 cd 3a 3d 6f 6b 0d 12 7f e6 dd a4 |1..~..:=ok......| 00005b80 73 6f 63 6b 65 74 5f 72 65 61 64 79 28 73 6f 63 |socket_ready(soc| 00005b90 6b 25 2c 72 65 61 64 25 29 3a f2 73 6f 63 6b 65 |k%,read%):.socke| 00005ba0 74 5f 63 68 65 63 6b 28 73 6f 63 6b 25 2c 22 52 |t_check(sock%,"R| 00005bb0 65 61 64 79 22 29 3a ea 49 2c 66 64 25 2c 62 25 |eady"):.I,fd%,b%| 00005bc0 2c 6f 6b 25 2c 72 25 2c 77 25 3a 66 64 25 3d 73 |,ok%,r%,w%:fd%=s| 00005bd0 6f 63 6b 25 28 73 6f 63 6b 25 29 21 30 3a 62 25 |ock%(sock%)!0:b%| 00005be0 3d 73 6f 63 6b 74 65 6d 70 25 3a e3 49 3d 30 b8 |=socktemp%:.I=0.| 00005bf0 28 28 73 6f 63 6b 74 73 69 7a 65 25 2f 38 2b 33 |((socktsize%/8+3| 00005c00 29 80 ac 33 29 2d 31 88 34 3a 73 6f 63 6b 74 65 |)..3)-1.4:sockte| 00005c10 6d 70 25 21 49 3d 30 3a ed 3a c8 95 66 64 25 3e |mp%!I=0:.:..fd%>| 00005c20 3d 33 32 3a 62 25 2b 3d 34 3a 66 64 25 2d 3d 33 |=32:b%+=4:fd%-=3| 00005c30 32 3a ce 3a 21 62 25 3d 21 62 25 84 28 31 3c 3c |2:.:!b%=!b%.(1<<| 00005c40 66 64 25 29 3a 62 25 3d 73 6f 63 6b 74 65 6d 70 |fd%):b%=socktemp| 00005c50 25 2b 49 3a 21 62 25 3d 30 3a 62 25 21 34 3d 30 |%+I:!b%=0:b%!4=0| 00005c60 0d 12 80 24 e7 72 65 61 64 25 8c 72 25 3d 73 6f |...$.read%.r%=so| 00005c70 63 6b 74 65 6d 70 25 8b 77 25 3d 73 6f 63 6b 74 |cktemp%.w%=sockt| 00005c80 65 6d 70 25 0d 12 81 2b c8 99 26 34 31 32 31 31 |emp%...+..&41211| 00005c90 2c 73 6f 63 6b 74 73 69 7a 65 25 2c 72 25 2c 77 |,socktsize%,r%,w| 00005ca0 25 2c 30 2c 62 25 b8 6f 6b 25 3a 3d 6f 6b 25 0d |%,0,b%.ok%:=ok%.| 00005cb0 12 82 82 dd a4 73 6f 63 6b 65 74 5f 72 65 61 64 |.....socket_read| 00005cc0 64 61 74 61 28 73 6f 63 6b 25 2c f8 73 74 61 72 |data(sock%,.star| 00005cd0 74 25 29 3a ea 72 65 61 64 25 3a 72 65 61 64 25 |t%):.read%:read%| 00005ce0 3d 30 3a f2 73 6f 63 6b 65 74 5f 63 68 65 63 6b |=0:.socket_check| 00005cf0 28 73 6f 63 6b 25 2c 22 52 65 61 64 44 61 74 61 |(sock%,"ReadData| 00005d00 22 29 3a e7 28 28 73 6f 63 6b 25 28 73 6f 63 6b |"):.((sock%(sock| 00005d10 25 29 21 26 43 29 80 32 29 3d 32 8c 73 74 61 72 |%)!&C).2)=2.star| 00005d20 74 25 3d 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 |t%=sock%(sock%)!| 00005d30 34 0d 12 83 72 e7 73 74 61 72 74 25 3c 26 38 30 |4...r.start%<&80| 00005d40 30 30 8c 85 26 38 30 35 2c 22 52 65 61 64 44 61 |00..&805,"ReadDa| 00005d50 74 61 3a 20 53 74 75 70 69 64 20 61 64 64 72 65 |ta: Stupid addre| 00005d60 73 73 20 66 6f 72 20 73 6f 63 6b 65 74 5f 72 65 |ss for socket_re| 00005d70 61 64 64 61 74 61 20 28 22 2b c3 7e 73 74 61 72 |addata ("+.~star| 00005d80 74 25 2b 22 29 2c 20 66 6c 61 67 73 20 3d 20 22 |t%+"), flags = "| 00005d90 2b c3 28 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 |+.(sock%(sock%)!| 00005da0 26 43 29 0d 12 84 1f e7 a4 73 6f 63 6b 65 74 5f |&C)......socket_| 00005db0 69 6e 62 75 66 66 65 72 28 73 6f 63 6b 25 29 3e |inbuffer(sock%)>| 00005dc0 30 8c 0d 12 85 34 c8 99 26 34 31 32 31 33 2c 73 |0....4..&41213,s| 00005dd0 6f 63 6b 25 28 73 6f 63 6b 25 29 21 30 2c 73 74 |ock%(sock%)!0,st| 00005de0 61 72 74 25 2c 73 6f 63 6b 62 75 66 6c 65 6e 25 |art%,sockbuflen%| 00005df0 b8 72 65 61 64 25 0d 12 86 0c cd 3a 3d 72 65 61 |.read%.....:=rea| 00005e00 64 25 0d 12 87 bf dd f2 73 6f 63 6b 65 74 5f 73 |d%......socket_s| 00005e10 65 6e 64 6c 69 6e 65 28 73 6f 63 6b 25 2c 6d 24 |endline(sock%,m$| 00005e20 29 3a ea 72 30 2c 66 6c 61 67 73 25 3a f2 73 6f |):.r0,flags%:.so| 00005e30 63 6b 65 74 5f 63 68 65 63 6b 28 73 6f 63 6b 25 |cket_check(sock%| 00005e40 2c 22 53 65 6e 64 4c 69 6e 65 22 29 3a 24 28 73 |,"SendLine"):$(s| 00005e50 6f 63 6b 74 65 6d 70 25 29 3d 6d 24 2b bd 26 41 |ocktemp%)=m$+.&A| 00005e60 3a c8 99 26 36 31 32 31 34 2c 73 6f 63 6b 25 28 |:..&61214,sock%(| 00005e70 73 6f 63 6b 25 29 21 30 2c 73 6f 63 6b 74 65 6d |sock%)!0,socktem| 00005e80 70 25 2c a9 28 6d 24 29 2b 31 b8 72 30 3b 66 6c |p%,.(m$)+1.r0;fl| 00005e90 61 67 73 25 3a e7 72 30 3c 3e a9 28 6d 24 29 2b |ags%:.r0<>.(m$)+| 00005ea0 31 8c 85 26 38 30 35 2c 22 43 6f 75 6c 64 20 6e |1..&805,"Could n| 00005eb0 6f 74 20 73 65 6e 64 20 61 6c 6c 20 64 61 74 61 |ot send all data| 00005ec0 22 0d 12 88 05 e1 0d 12 89 7b dd f2 73 6f 63 6b |"........{..sock| 00005ed0 65 74 5f 73 65 6e 64 64 61 74 61 28 73 6f 63 6b |et_senddata(sock| 00005ee0 25 2c 62 25 2c 6c 65 6e 25 29 3a ea 72 30 2c 66 |%,b%,len%):.r0,f| 00005ef0 6c 61 67 73 25 3a f2 73 6f 63 6b 65 74 5f 63 68 |lags%:.socket_ch| 00005f00 65 63 6b 28 73 6f 63 6b 25 2c 22 53 65 6e 64 44 |eck(sock%,"SendD| 00005f10 61 74 61 22 29 3a c8 99 26 36 31 32 31 34 2c 73 |ata"):..&61214,s| 00005f20 6f 63 6b 25 28 73 6f 63 6b 25 29 21 30 2c 62 25 |ock%(sock%)!0,b%| 00005f30 2c 6c 65 6e 25 b8 72 30 3b 66 6c 61 67 73 25 3a |,len%.r0;flags%:| 00005f40 e1 0d 12 8a cc dd a4 73 6f 63 6b 65 74 5f 67 65 |.......socket_ge| 00005f50 74 70 65 65 72 6e 61 6d 65 28 73 6f 63 6b 25 29 |tpeername(sock%)| 00005f60 3a ea 72 30 2c 72 31 3a f2 73 6f 63 6b 65 74 5f |:.r0,r1:.socket_| 00005f70 63 68 65 63 6b 28 73 6f 63 6b 25 2c 22 47 65 74 |check(sock%,"Get| 00005f80 50 65 65 72 4e 61 6d 65 22 29 3a 21 73 6f 63 6b |PeerName"):!sock| 00005f90 74 65 6d 70 25 3d 31 36 3a c8 99 26 34 31 32 30 |temp%=16:..&4120| 00005fa0 45 2c 73 6f 63 6b 25 28 73 6f 63 6b 25 29 21 30 |E,sock%(sock%)!0| 00005fb0 2c 73 6f 63 6b 61 64 64 72 25 2c 73 6f 63 6b 74 |,sockaddr%,sockt| 00005fc0 65 6d 70 25 3a c8 99 26 36 36 30 30 31 2c 30 2c |emp%:..&66001,0,| 00005fd0 73 6f 63 6b 61 64 64 72 25 2b 34 2c 34 2c 32 b8 |sockaddr%+4,4,2.| 00005fe0 2c 72 31 3b 66 6c 61 67 73 25 3a e7 28 66 6c 61 |,r1;flags%:.(fla| 00005ff0 67 73 25 80 31 29 3d 30 80 72 31 3c 3e 30 8c 3d |gs%.1)=0.r1<>0.=| 00006000 a4 73 74 72 69 6e 67 30 28 21 72 31 29 0d 12 8b |.string0(!r1)...| 00006010 4c 3d c3 28 73 6f 63 6b 61 64 64 72 25 3f 34 29 |L=.(sockaddr%?4)| 00006020 2b 22 2e 22 2b c3 28 73 6f 63 6b 61 64 64 72 25 |+"."+.(sockaddr%| 00006030 3f 35 29 2b 22 2e 22 2b c3 28 73 6f 63 6b 61 64 |?5)+"."+.(sockad| 00006040 64 72 25 3f 36 29 2b 22 2e 22 2b c3 28 73 6f 63 |dr%?6)+"."+.(soc| 00006050 6b 61 64 64 72 25 3f 37 29 0d 12 8c 4d dd a4 69 |kaddr%?7)...M..i| 00006060 6e 65 74 5f 67 65 74 73 65 72 76 62 79 6e 61 6d |net_getservbynam| 00006070 65 28 6e 61 6d 65 24 2c 70 72 6f 74 6f 24 29 3a |e(name$,proto$):| 00006080 ea 73 65 72 76 65 6e 74 25 2c 70 6f 72 74 25 3a |.servent%,port%:| 00006090 e7 bb 28 6e 61 6d 65 24 29 3c 3e 30 8c 3d bb 28 |..(name$)<>0.=.(| 000060a0 6e 61 6d 65 24 29 0d 12 8d 48 c8 99 26 34 36 34 |name$)...H..&464| 000060b0 34 31 2c 6e 61 6d 65 24 2c 70 72 6f 74 6f 24 b8 |41,name$,proto$.| 000060c0 2c 73 65 72 76 65 6e 74 25 3a e7 73 65 72 76 65 |,servent%:.serve| 000060d0 6e 74 25 3d 30 8c 70 6f 72 74 25 3d 30 8b 70 6f |nt%=0.port%=0.po| 000060e0 72 74 25 3d 73 65 72 76 65 6e 74 25 21 38 0d 12 |rt%=servent%!8..| 000060f0 8e 0a 3d 70 6f 72 74 25 0d 12 8f 62 dd a4 69 6e |..=port%...b..in| 00006100 65 74 5f 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 |et_gethostbyname| 00006110 28 68 6f 73 74 24 29 3a ea 70 74 72 25 2c 66 6c |(host$):.ptr%,fl| 00006120 61 67 73 25 3a c8 99 26 36 36 30 30 30 2c 30 2c |ags%:..&66000,0,| 00006130 68 6f 73 74 24 b8 2c 70 74 72 25 3b 66 6c 61 67 |host$.,ptr%;flag| 00006140 73 25 3a e7 70 74 72 25 3d 30 84 28 66 6c 61 67 |s%:.ptr%=0.(flag| 00006150 73 25 80 31 29 3d 31 8c 3d 30 0d 12 90 10 3d 21 |s%.1)=1.=0....=!| 00006160 21 28 70 74 72 25 21 31 36 29 0d 12 91 62 dd f2 |!(ptr%!16)...b..| 00006170 69 6e 65 74 5f 6b 69 6c 6c 6d 74 71 75 65 72 79 |inet_killmtquery| 00006180 28 71 75 65 72 79 25 29 3a ea 6c 25 2c 70 25 2c |(query%):.l%,p%,| 00006190 6e 25 3a c8 99 22 58 44 4e 53 52 65 73 6f 6c 76 |n%:.."XDNSResolv| 000061a0 65 72 5f 44 69 73 70 6f 73 65 22 2c 71 75 65 72 |er_Dispose",quer| 000061b0 79 25 3a 70 25 3d 6d 74 63 68 61 69 6e 25 3a e7 |y%:p%=mtchain%:.| 000061c0 70 25 21 34 3d 71 75 65 72 79 25 8c 0d 12 92 1d |p%!4=query%.....| 000061d0 6d 74 63 68 61 69 6e 25 3d 21 70 25 3a f2 72 65 |mtchain%=!p%:.re| 000061e0 6c 65 61 73 65 28 70 25 29 0d 12 93 42 cc 3a 6c |lease(p%)...B.:l| 000061f0 25 3d 70 25 3a 70 25 3d 21 70 25 3a c8 95 70 25 |%=p%:p%=!p%:..p%| 00006200 3c 3e 30 3a 6e 25 3d 21 70 25 3a e7 70 25 21 34 |<>0:n%=!p%:.p%!4| 00006210 3d 71 75 65 72 79 25 8c f2 72 65 6c 65 61 73 65 |=query%..release| 00006220 28 70 25 29 3a 21 6c 25 3d 6e 25 0d 12 94 0b 70 |(p%):!l%=n%....p| 00006230 25 3d 6e 25 3a ce 0d 12 95 07 cd 3a e1 0d ff |%=n%:......:...| 0000623f