Home » Archimedes archive » Acorn User » AU 1995-04.adf » !Internet_StarterPak » !SLIPdial/!RunimageS

!SLIPdial/!RunimageS

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 » Archimedes archive » Acorn User » AU 1995-04.adf » !Internet_StarterPak
Filename: !SLIPdial/!RunimageS
Read OK:
File size: 11531 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >!Runimage
   20ONERROR REPORT:PRINT" at ";ERL:END
   30END=HIMEM+&2000
   40PROCinit
   50PROCloadcode
   60PROCstartmsgtrans
   70PROCgetenv
   80PROCinitwimp
   90ONERRORPROCerrorbox:END
  100PROCloadconfig
  110WHILEFNlomem(txtx%DIV2*txty%):END=HIMEM+&2000:ENDWHILE
  120PROCinit_txt
  130SYS"XOS_File",17,file$TOA%,,,,S%
  140WHILEFNlomem(S%):END=HIMEM+&2000:ENDWHILE
  150PROCinitscript(file$)
  160A%=FNmodemdrv("")
  170REPEAT
  180  stage%=0
  190  REPEAT
  200    IFFNlomem(0)THENPROCwarn_txt(FNmsg0("MoreMem")):END=HIMEM+&2000
  210    IFFNtestevent THENA$=FNgetevent ELSEA$=FNline(stage%):stage%+=1
  220    return%=FNcommand(A$)
  230  UNTILstage%>=count% ORrun%=FALSE
  240  run%=FALSE:IFstage%>=count%THENPROCprint("",FNmsg0("Idle"),"")
  250  PROCpaused
  260UNTIL0
  270END
  280
  290REM set up universal variables
  300DEFPROCinit
  310DIM tmp% 256,driver 4096
  320SYS"OS_Byte",129,0,&FF TO,osver%
  330sprsz%=&1B00
  340redial%=FALSE
  350fileno%=1:total%=0:pause%=FALSE:stop%=FALSE:run%=FALSE:taskstart%=0:highest%=-1
  360device%=FALSE:oldline%=0:debug%=FALSE:errC%=0:fh1%=0:fh2%=0:online$="":stage%=0
  370submax%=20:DIMcall_ret%(submax%),call_lock%(submax%)
  380casmax%=10:DIMcase$(casmax%),casmatch% casmax%,aline$(3),aline%(3)
  390menumax%=30:DIMumenu$(menumax%,1),usermenu$(1),logmenu$(1)
  400jtmax%=50:DIMjt%(jtmax%),jt$(jtmax%):jtl%=0:return$=""
  410vmax%=150:DIMvar$(vmax%,1),s4$(3),tget$(3),ihist$(10):ihist%=0
  420almax%=10:DIMalarm$(almax%,1),alarmtime%(almax%),alarmid$(almax%)
  430imax%=8:DIMifile$(imax%),ibar$(imax%),imenu$(imax%,1)
  440DIMibarid$(imax%),ibar%(imax%)
  450taskmax%=8:DIMtaskex$(taskmax%),taskn$(taskmax%),taskh%(taskmax%)
  460twmax%=8:DIMtwexit$(twmax%),twname$(twmax%),twcom$(twmax%)
  470DIMtwh%(twmax%),twf%(twmax%),tdata$(twmax%),tww%(twmax%)
  480DIMtwy%(twmax%),two%(twmax%),twk%(twmax%),twt%(twmax%)
  490tget%=-1:tww%()=0:two%()=0:twwmax%=29:txtx%=80:txty%=24
  500maxev%=10:DIMevent$(maxev%),event%(maxev%),evtype%(maxev%):event%()=TRUE
  510fmax%=10:DIMfileh%(fmax%),fileid$(fmax%),filewr%(fmax%),filen$(fmax%)
  520msgmax%=25:msg_cs$="":msg_ce$="":msg_cm%=0:msg_cs%=0:msgc%=TRUE:msgt%=0
  530sddir$=FNvarval("Slipdial$dir")
  540sdres$=FNvarval("Slipdial$resources")
  550sdlang$=sdres$+".UK":ch$="":autowinpos%=1:num$="none"
  560ENDPROC
  570
  580REM set up wimp and related variables
  590DEFPROCinitwimp
  600DIM sprites% sprsz%:!sprites%=sprsz%:sprites%!8=0
  610SYS "OS_SpriteOp",&109,sprites%
  620IFFNmergesprites(sdres$+".Sprites")=0THENERROR0,"Couldn't load sprites"
  630DIM taskid%4:$taskid%="TASK":Task$="SLIPdial"
  640DIM msglist%4:!msglist%=0
  650SYS "Wimp_Initialise",310,!taskid%,Task$,msglist% TO version%,task%
  660IFversion%<310 THENERROR1,"Window Manager too old"
  670stwx%=0:stwy%=0
  680fh1%=FNopenin(sdres$+".!windows")
  690IFfh1%>0THEN
  700  stwx%=VALGET$#fh1%:stwy%=VALGET$#fh1%
  710ENDIF
  720PROCcf(fh1%)
  730DIM q% &400,menudata% &200,icons% &100,buffer% &100
  740SYS "Wimp_OpenTemplate",,sdlang$+".Templates"
  750info%=FNloadtemp("Info")
  760status%=FNloadtemp("Status")
  770txt%=FNloadtemp("txtwin")
  780config%=FNloadtemp("config")
  790mess%=FNloadtemp("message")
  800input%=FNloadtemp("input")
  810yesno%=FNloadtemp("yesno")
  820SYS "Wimp_CloseTemplate"
  830PROCseticonstring(info%,4,"0.33 (17-Feb-1995)"):PROCsetv("$ver","33")
  840sdic$="nodev":icon0%=FNic(sdic$,-1)
  850IFicon0%=0THENERROR0,"Couldn't create icon"
  860M%=%10000001100000110000:slice%=-20
  870SYS"OS_ReadMonotonicTime"TOlastpoll%:time%=lastpoll%
  880checkalarm%=time%:checkline%=time%:PROCcheckicon:PROCusericon("")
  890ENDPROC
  900
  910DEFFNloadtemp(A$)
  920LOCALb%,i%,s%,scr%,icon%,h%
  930SYS"Wimp_LoadTemplate",,-1,0,0,-1,A$,0TO,b%,i%
  940s%=FNclaimmem(scr%,b%,"TBUF"):DIMicon% i%
  950SYS"Wimp_LoadTemplate",,scr%,icon%,icon%+i%,-1,A$,0
  960IFA$="message"THENmsgttl%=scr%!72
  970IFA$="Status"THENPROCsetwpos(scr%,stwx%,stwy%)
  980scr%!64=sprites%:SYS"Wimp_CreateWindow",,scr% TOh%:PROCreleasemem(s%)
  990=h%
 1000
 1010DEFPROCsetwpos(q%,x%,y%)
 1020LOCALw%,h%
 1030IFx%>0THEN
 1040w%=q%!8-!q%:h%=q%!12-q%!4
 1050!q%=x%:q%!8=x%+w%
 1060q%!4=y%:q%!12=y%+h%
 1070ENDIF
 1080ENDPROC
 1090
 1100REM merge sprite file into slipdial sprite area
 1110DEFFNmergesprites(A$)
 1120LOCALs%,f%,n%,r%:r%=0
 1130SYS"XOS_File",17,A$TOA%,,,,S%
 1140SYS"XOS_SpriteOp",&108,sprites%TO,,s%,n%,,f%
 1150IFA%=1ANDS%<=(s%-f%) THEN
 1160SYS"XOS_SpriteOp",&10B+(n%=0),sprites%,A$TO;F%
 1170IF(F%AND1)=0 THENr%=s%-f%-S%
 1180ENDIF
 1190=r%
 1200
 1210DEFFNsfree
 1220LOCALs%,f%:SYS"XOS_SpriteOp",&108,sprites%TO,,s%,,,f%
 1230=s%-f%
 1240
 1250REM places an icon on the iconbar, n%<0 is main icon, others are user icons
 1260DEFFNic(A$,n%)
 1270LOCALZ%,next%,w%,h%
 1280SYS"OS_SpriteOp",&100+40,sprites%,A$TO,,,w%,h%:IFw%>200ORh%>70THEN=0
 1290IFn%<0THEN
 1300  !icons%=-1:next%=0
 1310  REM dimension memory in known location & store name
 1320  DIMibarname%12:$ibarname%=A$:icons%!24=ibarname%
 1330ELSE
 1340  next%=icon0%
 1350  FORZ%=0TOn%:IFibar%(Z%)>0 THENnext%=ibar%(Z%)
 1360  NEXT:!icons%=-3
 1370  REM dimension some memory & store name
 1380  DIMicons%!24 12:$(icons%!24)=A$
 1390ENDIF
 1400icons%!4=0:icons%!8=0:icons%!12=w%*2:icons%!16=100:icons%!20=&3102
 1410icons%!28=sprites%:icons%!32=11
 1420SYS "Wimp_CreateIcon",next%,icons%TOic%
 1430=ic%
 1440
 1450REM update the main icon
 1460DEFPROCcheckicon
 1470LOCALname$
 1480IFdevice%=FALSE THEN
 1490  name$="nodev"
 1500  ELSE
 1510  IF (FNd(9,port%,0,0)AND8)=0 THEN
 1520    name$="dev"
 1530    ELSE
 1540    IFsdic$="online1" THENname$="online2"ELSEname$="online1"
 1550  ENDIF
 1560ENDIF
 1570checkline%=time%
 1580IFibarname%>0ANDname$<>sdic$ THEN
 1590  PROCcall_log(sdic$,name$)
 1600  sdic$=name$
 1610  SYS "XOS_SpriteOp",&118,sprites%,name$TO,,src%;F%
 1620  IF(F%AND1)=0THEN
 1630    $ibarname%=name$:!q%=-1:q%!4=icon0%:q%!8=0:q%!12=0
 1640    SYS"Wimp_SetIconState",,q%
 1650  ENDIF
 1660ENDIF
 1670ENDPROC
 1680
 1690REM update call log on online-offline transitions
 1700DEFPROCcall_log(A$,B$)
 1710CASEB$ OF
 1720  WHEN"nodev":IFA$="online1"ORA$="online2"ORA$="dev"THENPROCwclog(TIME$+": offline after "+online$)
 1730  WHEN"online1":IFA$<>"online2"THENPROCwclog(TIME$+": online to "+num$):ontime%=time%:ELSEPROCupd_time
 1740  WHEN"online2":PROCupd_time
 1750ENDCASE
 1760ENDPROC
 1770
 1780REM update timer icon in status window
 1790DEFPROCupd_time
 1800LOCALT%
 1810T%=ABS(time%-ontime%)DIV100
 1820online$=RIGHT$("0"+STR$(T%DIV3600),2)+":"
 1830online$+=RIGHT$("0"+STR$((T%DIV60)MOD60),2)+":"
 1840online$+=RIGHT$("0"+STR$(T%MOD60),2)
 1850PROCupd_icon(status%,8,online$)
 1860ENDPROC
 1870
 1880REM write a line to the logfile
 1890DEFPROCwclog(A$)
 1900fh1%=FNopenup(sddir$+".logfile")
 1910IFfh1%<>0THENPTR#fh1%=EXT#fh1%:BPUT#fh1%,A$:PROCcf(fh1%)
 1920ENDPROC
 1930
 1940DEFPROCpoll(idle%)
 1950REM idle%=pollidle time (+) or time before polling (-)
 1960SYS"OS_ReadMonotonicTime" TOtime%
 1970IFidle%>=0 OR lastpoll%-time%<idle% THEN
 1980  lastpoll%=time%
 1990  REPEAT
 2000    SYS "Wimp_PollIdle",M%,q%,time%+idle% TO R%
 2010    IFdevice% THEN J%=FNd(19,port%,0,0):REM line to fix II dual serial card
 2020    CASE R% OF
 2030    WHEN 1 :PROCredraww(!q%)
 2040    WHEN 2 :PROCopenw(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
 2050    WHEN 3 :PROCclosew(!q%)
 2060    WHEN 6 :PROCclick(!q%,q%!4,q%!8,q%!12,q%!16)
 2070    WHEN 8 :PROCkeypress(!q%,q%!4,q%!24)
 2080    WHEN 9 :PROCgetpointer:PROCmenuselect(q%)
 2090    WHEN 17,18:PROCreceive(q%)
 2100    ENDCASE
 2110  UNTILR%=0
 2120  IFtime%>checkline%+100 THENPROCcheckicon:PROClinealarm:PROCsettime
 2130  IFtime%>checkalarm%+500 THENPROCtimealarm:PROCsetdate
 2140  IFmsg_cs%>0ANDtime%>msgt%+500 THENPROCaddmessage("")
 2150ENDIF
 2160ENDPROC
 2170
 2180DEFPROCkeypress(w%,i%,k%)
 2190LOCALl%
 2200IFw%=txt%ANDi%=inic%THEN
 2210  CASEk%OF
 2220    WHEN13:FORl%=10TO1STEP-1:ihist$(l%)=ihist$(l%-1):NEXT
 2230      ihist$(0)=FNic_str(w%,i%):PROCaddevent(ihist$(0),0):ihist%=-1
 2240      PROCupd_icon(w%,i%,""):SYS"Wimp_SetCaretPosition",w%,i%,,,-1,0
 2250    WHEN&18F:IFihist%<10ANDihist$(ihist%+1)>""THEN
 2260      ihist%+=1:PROCupd_icon(w%,i%,ihist$(ihist%))
 2270      SYS"Wimp_SetCaretPosition",w%,i%,,,-1,LENihist$(ihist%)
 2280      ENDIF
 2290    WHEN&18E:IFihist%>0THEN
 2300      ihist%-=1:PROCupd_icon(w%,i%,ihist$(ihist%))
 2310      SYS"Wimp_SetCaretPosition",w%,i%,,,-1,LENihist$(ihist%)
 2320      ELSE
 2330      ihist%=-1:PROCupd_icon(w%,i%,""):SYS"Wimp_SetCaretPosition",w%,i%,,,-1,0
 2340      ENDIF
 2350    OTHERWISE:SYS"Wimp_ProcessKey",q%!24
 2360  ENDCASE
 2370ELSE
 2380IFw%=input%ANDi%=1ANDk%=13THEN
 2390input$=FNic_str(w%,i%):IFinput$=""THENinput$=" "
 2400ELSE
 2410SYS"Wimp_ProcessKey",q%!24
 2420ENDIF
 2430ENDIF
 2440ENDPROC
 2450
 2460DEFPROCreceive(q%)
 2470LOCALZ%,h%,i%,t%,f$,tw%,a%,A$
 2480CASE q%!16 OF
 2490WHEN 0:PROCfinish:END
 2500WHEN 1:q%!16=2:q%!36=-1:$(q%+44)="<Wimp$Scrap>"+CHR$0
 2510  q%!12=q%!8:SYS"Wimp_SendMessage",17,q%,q%!4
 2520WHEN 3:i%=q%!24:h%=q%!20:t%=q%!40:f$=FNstr(q%+44)
 2530  q%!16=4:SYS"Wimp_SendMessage",17,q%,q%!4
 2540  CASEh%OF
 2550    WHENconfig%:IFt%=&FFF THEN
 2560        IFi%=4PROCupd_icon(config%,4,f$)
 2570        ELSE
 2580        PROCinitscript(f$)
 2590      ENDIF
 2600    WHENstatus%:IFt%=&FFF THENPROCinitscript(f$)
 2610    WHEN-1,-2:IFt%=&FFF ANDi%=icon0% THEN
 2620      PROCinitscript(f$)
 2630      ELSE
 2640      FORZ%=0TOimax%
 2650        IFi%=ibar%(Z%)ANDifile$(Z%)>""THENPROCifile(Z%,f$,t%)
 2660      NEXT
 2670      ENDIF
 2680  ENDCASE
 2690  Z%=FNdelfile("<Wimp$Scrap>")
 2700WHEN 11:IFdevice% ANDq%!4<>task% THENPROCrefusedevice
 2710WHEN 12:IFq%!4<>task% THEN
 2720  PROCprint("Device claim failed",FNstr(q%+28),"")
 2730  PROCfront(status%):device%=FALSE
 2740  ENDIF
 2750WHEN &502:A$=FNsendhelp(q%!32,q%!36)
 2760  IFA$>""THEN
 2770    q%!16=&503:q%!12=q%!8:$(q%+20)=A$:q%?(20+LENA$)=0:!q%=256
 2780    SYS"Wimp_SendMessage",17,q%,q%!4
 2790  ENDIF
 2800WHEN &400C2:IF taskstart%<>0 THEN
 2810  IFtaskh%(taskstart%)=0 THEN
 2820    taskh%(taskstart%)=q%!4:PROClog(FNmsg1("TaskStart2",taskn$(taskstart%)))
 2830  ENDIF
 2840  taskstart%=0
 2850  ENDIF
 2860WHEN &400C3:REM TaskClosedown
 2870  FORl%=0TOtaskmax%
 2880    IFtaskh%(l%)=q%!4 THEN
 2890      taskh%(l%)=0:IFtaskex$(l%)>""THENPROCaddevent(taskex$(l%),3)
 2900    ENDIF
 2910  NEXT
 2920  PROCsorttasks
 2930WHEN &808C1:REM TaskWindow_Output
 2940  tw%=0:twlen%=q%!20-1
 2950  WHILEtwh%(tw%)<>q%!4ANDtw%<twmax%:tw%+=1:ENDWHILE
 2960  IFtwf%(tw%)=0 THEN
 2970    FORZ%=0TOtwlen%STEP4:tmp%!Z%=q%!(24+Z%):NEXT
 2980    PROCtw_data(tw%,tmp%,twlen%)
 2990    ELSE
 3000    FORZ%=0TOtwlen%:BPUT#twf%(tw%),q%!(24+Z%):NEXT
 3010  ENDIF
 3020WHEN &808C2:REM TaskWindow_Ego
 3030  IFq%!20>=task%ANDq%!20<=(task%+twmax%)THEN
 3040    twh%(q%!20-task%)=q%!4:PROClog("Task started: "+twname$(q%!20-task%))
 3050  ENDIF
 3060WHEN &808C3:REM TaskWindow_Morio, task finished
 3070  tw%=0:WHILEq%!4<>twh%(tw%)ANDtw%<twmax%:tw%+=1:ENDWHILE
 3080  IFq%!4=twh%(tw%)THEN
 3090    PROClog(FNmsg1("TaskEnd",twname$(tw%)))
 3100    IFtwk%(tw%)=0 THEN
 3110      twh%(tw%)=0:PROCclosew(tww%(tw%))
 3120      ELSE
 3130      twh%(tw%)=-1:$twt%(tw%)=twname$(tw%)+FNmsg0("TaskFin")
 3140      PROCdotitle(tww%(tw%))
 3150    ENDIF
 3160    twname$(tw%)="":PROCcf(twf%(tw%)):twf%(tw%)=0
 3170    IFtwexit$(tw%)>""THENPROCaddevent(twexit$(tw%),4)
 3180  ENDIF
 3190ENDCASE
 3200ENDPROC
 3210
 3220DEFFNsendhelp(w%,i%)
 3230LOCALA$,l%
 3240A$="Hgeneric":CASEw%OF
 3250  WHENtxt%:A$="Htext"
 3260  WHENstatus%:A$="Hstatus":CASEi%OF
 3270    WHEN1,2:A$="Haction"
 3280    WHEN3:A$="Hip"
 3290    WHEN4:A$="Hstop"
 3300    WHEN5:A$="Hpause"
 3310    WHEN6,7:A$="Hmenus"
 3320    WHEN8:A$="Htime"
 3330    WHEN10:A$="Hmodem"
 3340  ENDCASE
 3350  WHENmess%:A$="Hmess":IFpause%THENA$="Hmess2"
 3360  WHENinput%:A$="Henter"
 3370  WHENyesno%:A$="Hyesno"
 3380  WHENinfo%:A$="Hinfo"
 3390  WHENconfig%:A$="Hconfig"
 3400  OTHERWISE:FORl%=0TOtwmax%:IFw%=tww%(l%)THENA$="Htask"
 3410    NEXT
 3420ENDCASE
 3430=FNmsg0(A$)
 3440
 3450DEFPROCfinish
 3460LOCALl%
 3470IFdevice%<>0THEN
 3480  J%=FNd(8,port%,0,0)
 3490  J%=FNd(18,port%,0,0)
 3500ENDIF
 3510PROCopenlog("")
 3520PROCcf(fh1%):PROCcf(fh2%)
 3530FORl%=0TOtwmax%:PROCcf(twf%(l%)):NEXT
 3540FORl%=0TOfmax%:PROCcf(fileh%(l%)):NEXT
 3550PROCendmsgtrans
 3560ENDPROC
 3570
 3580DEFPROCcf(RETURN C%)
 3590IFC%<>0THENSYS"XOS_Find",0,C%:C%=0
 3600ENDPROC
 3610
 3620DEFPROCgetpointer
 3630SYS"Wimp_GetPointerInfo",,buffer%
 3640mx%=!buffer%:my%=buffer%!4:b%=buffer%!8:handle%=buffer%!12
 3650icon%=buffer%!16:ob%=buffer%!20
 3660ENDPROC
 3670
 3680DEFPROCclick(mx%,my%,b%,w%,i%)
 3690LOCALZ%
 3700CASEb% OF
 3710WHEN 2
 3720  CASEw% OF
 3730    WHEN -2:IFi%=icon0%THEN
 3740        PROCdefmenu(TRUE)
 3750      ELSE
 3760        FORZ%=0TOimax%
 3770          IFi%=ibar%(Z%)ANDimenu$(Z%,0)>""THENPROCdomenu(102,FNmakemenu(imenu$(Z%,0),imenu$(Z%,1)),ibarid$(Z%),TRUE)
 3780        NEXT
 3790      ENDIF
 3800    WHEN txt%:SYS"OS_Byte",121,(1EOR&80)TO,Z%
 3810      IFZ%=0THEN
 3820        PROCdomenu(101,"Alarm list,Menu list,Var list,Task list,|Script list,Quit","Control",0)
 3830        ELSE
 3840        PROCdomenu(101,"DbgLev 0,DbgLev 1,DbgLev 2,DbgLev 3","Debug",0)
 3850      ENDIF
 3860    WHEN status%
 3870      CASEi% OF
 3880        WHEN7:IFusermenu$(0)>""THENPROCdomenu(102,FNmakemenu(usermenu$(0),usermenu$(1)),"User menu",FALSE)
 3890        OTHERWISE:PROCdefmenu(0)
 3900      ENDCASE
 3910    OTHERWISE:PROCdefmenu(0)
 3920  ENDCASE
 3930WHEN1,4:
 3940  CASE w% OF
 3950    WHEN status%:
 3960      CASEi% OF
 3970        WHEN5:
 3980        IFNOTpause% THEN
 3990          PROCprint("",FNmsg0("PauseP"),"")
 4000          pause%=TRUE:PROCaddevent("pause",0)
 4010          ELSE
 4020          PROCunpause
 4030        ENDIF
 4040        WHEN4:
 4050          stop%=TRUE:PROCprint("",FNmsg0("StopP"),""):PROCstop
 4060        WHEN6:IFusermenu$(0)>""THENPROCdomenu(102,FNmakemenu(usermenu$(0),usermenu$(1)),"User menu",FALSE)
 4070        WHEN11:IFFNic_str(status%,i%)="Redial"THENredial%=TRUE:PROCprint("",FNmsg0("RedialP"),"")
 4080      ENDCASE
 4090    WHEN config%:
 4100      IF i%=6 THENPROCsaveconfig:PROCclosew(config%)
 4110    WHEN yesno%:
 4120      IF i%=0 THENyesnoans%=2
 4130      IF i%=1 THENyesnoans%=1
 4140    WHEN txt%:
 4150      SYS"Wimp_SetCaretPosition",w%,inic%,,,-1,LENFNic_str(w%,inic%)
 4160    WHEN -2:
 4170      IFi%=icon0%THEN
 4180        IFb%=4THENPROCfront(status%)ELSEPROCfront(txt%)
 4190      ELSE
 4200        FORZ%=0TOimax%
 4210          IFi%=ibar%(Z%)ANDibar$(Z%)>""THENPROCaddevent(ibar$(Z%),6)
 4220        NEXT
 4230      ENDIF
 4240  ENDCASE
 4250ENDCASE
 4260ENDPROC
 4270
 4280DEFPROCdefmenu(i%)
 4290PROCdomenu(101,">Info,Choices...,|Control...,Quit","SLIPdial",i%)
 4300ENDPROC
 4310
 4320DEFPROChalt(mess$)
 4330call_lev%=0:call_lock%()=0:event$()="":event%()=TRUE
 4340IFerror$>""THENPROCaddevent(error$,0):error$="":ENDPROC
 4350PROCmessage(""""+FNmsg2("Escript",STR$stage%,mess$)+""""):VDU7
 4360PROCprint("",FNmsg0("StopE"),"")
 4370stage%=0:run%=FALSE:PROCpaused
 4380ENDPROC
 4390
 4400DEFPROCinput(A$)
 4410LOCALv$,p$:p$="Input:"
 4420REPEATB$=FNparam(A$):input$=""
 4430IFLEFT$(B$,1)="/"THEN
 4440C$=FNvalue(B$):CASELEFT$(B$,2)OF
 4450  WHEN"pr":p$=LEFT$(C$,40)
 4460  ENDCASE
 4470ELSE
 4480  v$=B$:PROCupd_icon(input%,1,""):PROCupd_icon(input%,0,p$)
 4490  PROCfront(input%):SYS"Wimp_SetCaretPosition",input%,1,,,-1,0
 4500  REPEATPROCpoll(50):UNTILinput$>"":p$="Input:"
 4510  IFinput$=" "THENinput$=""
 4520  PROCsetv(v$,input$)
 4530ENDIF
 4540UNTILA$=""
 4550PROCclosew(input%)
 4560ENDPROC
 4570
 4580DEFPROCmessage(A$)
 4590LOCALw%,n%,t$
 4600t$=FNmsg0("Message"):msgc%=FALSE
 4610w%=0:n%=0
 4620REPEATB$=FNparam(A$)
 4630IFLEFT$(B$,1)="/"THEN
 4640C$=FNvalue(B$):CASELEFT$(B$,2)OF
 4650  WHEN"cl":PROCclosew(mess%)
 4660  WHEN"wa":w%=TRUE
 4670  WHEN"ti":t$=C$
 4680  WHEN"ca":msg_cs$=C$:msg_ce$=""
 4690        msg_cm%=msgmax%:msg_cs%=1:msgt%=time%:IFn%=0THENmsg$()=""
 4700  WHEN"ce":msgc%=TRUE
 4710  WHEN"en":msg_ce$=C$
 4720  WHEN"ma":msg_cm%=VALC$
 4730  WHEN"ad":n%+=1
 4740  WHEN"na","id":
 4750  ENDCASE
 4760ELSE
 4770  IFB$>""ANDn%=0THENmsg$()=""
 4780  IFB$>""THENPROCaddmessage(B$):n%+=1
 4790ENDIF
 4800UNTILB$=""ORn%>msgmax%
 4810$msgttl%=t$:PROCdotitle(mess%)
 4820IFn%>0THEN
 4830PROCaddmessage("")
 4840ENDIF
 4850IFw%THENPROCaddevent("pause",0)
 4860ENDPROC
 4870
 4880DEFPROCaddmessage(A$)
 4890LOCALl%,w%,t$:l%=-1:w%=0
 4900REPEATl%+=1:t$=msg$(l%):IFLENt$>w%THENw%=LENt$
 4910UNTILt$=""ORl%=msgmax%:msgt%=time%
 4920IFA$>""THEN
 4930  IFl%=msgmax%THENFORl%=1TOmsgmax%:msg$(l%-1)=msg$(l%):NEXT
 4940  msg$(l%)=A$
 4950  ELSE
 4960  IFl%>0THENPROCopenmess(l%,w%)
 4970ENDIF
 4980ENDPROC
 4990
 5000DEFPROCopenmess(y%,x%)
 5010LOCALo%
 5020!tmp%=0:tmp%!4=-y%*32-32:tmp%!8=x%*16+10:tmp%!12=0
 5030SYS"Wimp_SetExtent",mess%,tmp%
 5040!q%=mess%:SYS"Wimp_GetWindowState",,q%:o%=(q%!32)AND(1<<16)
 5050q%!12=q%!4+x%*16+10:q%!16=q%!8+y%*32+32
 5060q%!20=0:q%!24=0:q%!28=-1:SYS"Wimp_OpenWindow",,q%
 5070IFo%=0THENPROCcfront(mess%,0,150) ELSEPROCfront(mess%)
 5080!q%=mess%:SYS"Wimp_GetWindowState",,q%:msgw%=q%!12-q%!4
 5090PROCupdate_msg(0,-y%*32-32,msgw%,0)
 5100ENDPROC
 5110
 5120DEFPROCmsgfilt(A$)
 5130IFmsg_cs%=1 ANDINSTR(A$,msg_cs$)>0 THENmsg_cs%=2
 5140IFmsg_cs%=2 THEN
 5150  msg_cm%-=1:PROCaddmessage(A$)
 5160  IFmsg_cm%<1OR(msg_ce$>""ANDINSTR(A$,msg_ce$)>0) THENmsg_cs%=0:PROCaddmessage("")
 5170ENDIF
 5180ENDPROC
 5190
 5200DEFPROCpaused
 5210pause%=TRUE:PROCupd_icon(status%,5,FNmsg0("Resume"))
 5220PROCprint("",FNmsg0("Paused"),"")
 5230REPEATPROCpoll(30):UNTILpause%=FALSE
 5240ENDPROC
 5250
 5260DEFPROCunpause
 5270pause%=FALSE:stop%=FALSE:run%=TRUE:PROCupd_icon(status%,5,FNmsg0("Pause"))
 5280PROCprint(""," ","")
 5290ENDPROC
 5300
 5310DEFPROCstop
 5320call_lev%=0:call_lock%()=0:event$()="":event%()=TRUE:msg_cs%=0
 5330IFstage%>0ANDstop$<>""THENPROCaddevent(stop$,0):stop$="":ELSEPROCaddevent("pause",0):stage%=0:PROCrelease
 5340ENDPROC
 5350
 5360DEFPROCdomenu(handle%,menu$,menutitle$,I%)
 5370LOCALi%,item$,menuItems%,menuptr%
 5380IFmenu$=""THENENDPROC
 5390menuItems% = 0
 5400menuhandle%=handle%
 5410menuptr%=menudata%
 5420i%=0
 5430menuptr%!20=44
 5440$menuptr%=menutitle$
 5450menuptr%?12=7:menuptr%?13=2:menuptr%?14=&7:menuptr%?15=0
 5460menuptr%!16=230-24:menuptr%!24=0
 5470menuptr%+=28
 5480REPEAT
 5490  item$=FNpar(menu$,",",i%):PROCmenuitem(item$):menuItems%+=1
 5500UNTILitem$=""
 5510menuptr%!-24=(menuptr%!-24)OR&80
 5520IFI%<>0 THENY%=120+(menuItems%-1)*44 ELSEY%=my%
 5530SYS "Wimp_CreateMenu",,menudata%,mx%-64,Y%
 5540ENDPROC
 5550
 5560DEFPROCmenuitem(text$)
 5570LOCALleft$
 5580IF text$>""THEN
 5590  !menuptr%=0
 5600  IFLEFT$(text$,1)="|"THENtext$=MID$(text$,2):!menuptr%=2
 5610  left$ = LEFT$(text$,1):menuptr%!4=-1
 5620  IF left$=">" THENmenuptr%!4=info%
 5630  menuptr%!8=&07000021
 5640  IF left$=">" OR left$="<" THEN $(menuptr%+12)=MID$(text$,2) ELSE $(menuptr%+12)=text$
 5650  menuptr%+=24
 5660ENDIF
 5670ENDPROC
 5680
 5690DEFFNpar(menu$,sep$,RETURN i%)
 5700LOCALi1%
 5710i1%=i%+1:i%=INSTR(menu$+sep$,sep$,i1%)
 5720=MID$(menu$,i1%,i%-i1%)
 5730
 5740DEFPROCmenuselect(menus%)
 5750LOCALA$
 5760LOCALl%:SYS"Wimp_DecodeMenu",,menudata%,menus%,STRING$(20," ")TO,,,A$
 5770CASE A$ OF
 5780  WHEN"Choices...":PROCfront(config%)
 5790  WHEN"Control...":PROCfront(txt%)
 5800  WHEN"Quit":PROCfinish:END
 5810  WHEN"Alarm list":PROClistalarms
 5820  WHEN"Menu list":PROClistmenu
 5830  WHEN"Task list":PROClisttasks
 5840  WHEN"Var list":PROClistvars
 5850  WHEN"Script list":PROClistscript("")
 5860  WHEN"DbgLev 0":debug%=0
 5870  WHEN"DbgLev 1":debug%=1
 5880  WHEN"DbgLev 2":debug%=2
 5890  WHEN"DbgLev 3":debug%=3
 5900  OTHERWISE:IFumenu%>0 THEN
 5910      FORl%=1TOumenu%
 5920        IFA$=umenu$(l%,0) THEN
 5930          PROCupd_icon(status%,7,umenu$(l%,0))
 5940          PROCaddevent(umenu$(l%,1),8)
 5950        ENDIF
 5960      NEXT
 5970    ENDIF
 5980ENDCASE
 5990ENDPROC
 6000
 6010DEFPROCerrorbox
 6020!buffer%=ERR:$(buffer%+4)=REPORT$+" (internal code "+STR$ERL+")."+CHR$0
 6030SYS "Wimp_ReportError",buffer%,1,Task$:PROCfinish
 6040ENDPROC
 6050
 6060DEFPROCfront(h%)
 6070!q%=h%:SYS"Wimp_GetWindowState",,q%
 6080q%!28=-1:SYS"Wimp_OpenWindow",,q%
 6090IFh%=txt%THENSYS"Wimp_SetCaretPosition",h%,inic%,,,-1,LENFNic_str(h%,inic%)
 6100ENDPROC
 6110
 6120DEFPROCcfront(h%,xoff%,yoff%)
 6130LOCALx%,y%,wx%,wy%,xe%,ye%
 6140IFautowinpos%=0ANDh%=status%THEN
 6150  PROCfront(h%)
 6160  ELSE
 6170  SYS"OS_ReadModeVariable",-1,4TO,,xe%:SYS"OS_ReadModeVariable",-1,11TO,,x%
 6180  SYS"OS_ReadModeVariable",-1,5TO,,ye%:SYS"OS_ReadModeVariable",-1,12TO,,y%
 6190  !q%=h%:SYS"Wimp_GetWindowState",,q%
 6200  x%=x%<<xe%:y%=y%<<ye%:wx%=q%!12-q%!4:wy%=q%!16-q%!8
 6210  q%!4=(x%-wx%)DIV2-xoff%:q%!12=q%!4+wx%:q%!8=(y%-wy%)DIV2-yoff%:q%!16=q%!8+wy%
 6220  q%!20=0:q%!24=0:q%!28=-1:SYS"Wimp_OpenWindow",,q%
 6230ENDIF
 6240ENDPROC
 6250
 6260DEFPROCdotitle(h%)
 6270!q%=h%:SYS"Wimp_GetWindowOutline",,q%
 6280SYS"Wimp_ForceRedraw",-1,q%!4,q%!16-44,q%!12,q%!16
 6290ENDPROC
 6300
 6310DEFFNic_str(H%,I%)
 6320!q%=H%:q%!4=I%:SYS"Wimp_GetIconState",,q%
 6330=FNstr(q%!28)
 6340
 6350DEFPROCseticonstring(H%,I%,A$)
 6360!q%=H%:q%!4=I%:SYS"XWimp_GetIconState",,q%TO;F%
 6370IFFNtf10(F%)ANDq%!28>&8800 THEN$(q%!28)=A$+CHR$0
 6380ENDPROC
 6390
 6400DEFPROCupd_icon(H%,I%,A$)
 6410PROCseticonstring(H%,I%,A$):!q%=H%:q%!4=I%:q%!8=0:q%!12=0
 6420SYS"Wimp_SetIconState",,q%
 6430ENDPROC
 6440
 6450DEFPROCsetinv(H%,I%,S%)
 6460S%=ABS(S%=0):!q%=H%:q%!4=I%:q%!8=((1)<<21)*S%:q%!12=(1<<21)
 6470SYS"Wimp_SetIconState",,q%
 6480ENDPROC
 6490
 6500DEFFNrdinv(H%,I%)
 6510!q%=H%:q%!4=I%:SYS"Wimp_GetIconState",,q%
 6520=NOT(((q%!24)AND(1<<21))DIV2097152<>0)
 6530
 6540DEFPROCsetshaded(H%,I%,S%)
 6550!q%=H%:q%!4=I%:q%!8=((1)<<22)*ABSS%:q%!12=(1<<22)
 6560SYS"Wimp_SetIconState",,q%
 6570ENDPROC
 6580
 6590DEFPROCprint(a$,b$,c$)
 6600IFa$>""THENPROCupd_icon(status%,1,RIGHT$(a$,34)):IFLENa$>1THENPROClog("Action: "+a$)
 6610IFb$>""THENPROCupd_icon(status%,2,RIGHT$(b$,34)):IFLENb$>1THENPROClog("Status: "+b$)
 6620IFc$>""THENPROCupd_icon(status%,3,RIGHT$(c$,34)):IFLENc$>1THENPROClog("IP add: "+c$)
 6630ENDPROC
 6640
 6650DEFPROCopenw(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%)
 6660IFhandle%>-1THEN
 6670  q%!0=handle%:q%!28=bhandle%
 6680  q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%
 6690  q%!20=scx%:q%!24=scy%
 6700  SYS"Wimp_OpenWindow",,q%
 6710ENDIF
 6720ENDPROC
 6730
 6740DEFPROCclosew(h%)
 6750LOCALL%
 6760CASEh%OF
 6770  WHENmess%:IFpause% THENPROCunpause
 6780  WHENinput%:input$=" "
 6790  OTHERWISE:
 6800    FORL%=0TOtwmax%
 6810      IFh%=tww%(L%)ANDtwh%(L%)>0THEN
 6820        VDU7:IFFNyesno(FNmsg0("TaskKill"),3)=2 THEN
 6830          PROCmesstw(twname$(L%),&808C4)
 6840          ELSE
 6850          h%=0
 6860        ENDIF
 6870        L%=twmax%
 6880      ENDIF
 6890    NEXT
 6900ENDCASE
 6910IFh%>0THEN!q%=h%:SYS"Wimp_CloseWindow",,q%
 6920ENDPROC
 6930
 6940DEFFNask(A$)
 6950LOCALd%,r%,def%:d%=60:r%=0:def%=1
 6960REPEATB$=FNparam(A$)
 6970  IFLEFT$(B$,1)="/"THEN
 6980    C$=FNvalue(B$):CASELEFT$(B$,3)OF
 6990      WHEN"del":d%=VALC$:IFd%<5THENd%=5
 7000      WHEN"def":C$=FNlower(C$):IFLEFT$(C$,1)="y"THENdef%=2
 7010    ENDCASE
 7020    ELSE
 7030    r%=FNyesno(B$,d%)
 7040  ENDIF
 7050UNTILA$=""
 7060IFr%=0THENr%=def%
 7070=-(r%=2)
 7080
 7090REM ***
 7100
 7110DEFFNyesno(A$,wait%)
 7120REM returns 0=timeout 1=no 2=yes
 7130LOCALst%:st%=time%:wait%=wait%*100:PROCupd_icon(yesno%,2,LEFT$(A$,57))
 7140PROCcfront(yesno%,0,0):IFwait%=0THENwait%=60000
 7150yesnoans%=0:REPEAT:PROCpoll(50):UNTILyesnoans%>0ORtime%-st%>wait%
 7160PROCclosew(yesno%)
 7170=yesnoans%
 7180
 7190DEFFNvarval(A$)
 7200LOCALL%,F%
 7210SYS"XOS_ReadVarVal",A$,tmp%,256,0,3 TO,,L%;F%
 7220IF(F%AND1) ORL%>256 THEN:=""
 7230tmp%?L%=13:=$tmp%
 7240
 7250DEFPROCinfo(q%)
 7260x0%=!q%:y0%=q%!4:x1%=q%!8:y1%=q%!12:scx%=q%!16:scy%=q%!20
 7270bx%=x0%-scx%:by%=y1%-scy%:gy0%=q%!28:gy1%=q%!36
 7280ENDPROC
 7290
 7300DEFPROCredraww(h%)
 7310LOCALtw%:!q%=h%:CASEh%OF
 7320WHENtxt%:
 7330  SYS "Wimp_RedrawWindow",,q% TO more%
 7340  PROCdraw_txt(more%)
 7350WHENmess%:
 7360  SYS "Wimp_RedrawWindow",,q% TO more%
 7370  PROCdraw_msg(more%)
 7380OTHERWISE:
 7390  FORtw%=0TOtwmax%:IFh%=tww%(tw%)THEN
 7400    SYS "Wimp_RedrawWindow",,q% TO more%
 7410    PROCdraw_tw(tw%,more%)
 7420  ENDIF
 7430  NEXT
 7440ENDCASE
 7450ENDPROC
 7460
 7470DEFPROCinit_txt
 7480txto%=0
 7490log_y%=1:DIMtxtl$(txty%),txtc% txty%,msg$(msgmax%):msgw%=0
 7500txtl$()=STRING$(txtx%DIV2," "):ioff%=40
 7510!tmp%=0:tmp%!4=-txty%*32-ioff%-8:tmp%!8=txtx%*16:tmp%!12=0
 7520SYS"Wimp_SetExtent",txt%,tmp%
 7530FORi%=0TO1:!tmp%=txt%:tmp%!4=i%:SYS"Wimp_GetIconState",,tmp%
 7540tmp%!12=tmp%!12-txty%*32:tmp%!20=tmp%!20-txty%*32:tmp%!4=txt%
 7550!q%=txt%:q%!4=i%:SYS"Wimp_DeleteIcon",,q%
 7560SYS"Wimp_CreateIcon",,tmp%+4 TOinic%:NEXT
 7570ptr%=0:lt%=0:data$="":tdata$=""
 7580PROCprint("Starting SLIPdial","Idle"," ")
 7590IFquiet%=0ANDFNrdinv(config%,2)=0 THENPROCfront(txt%)
 7600ENDPROC
 7610
 7620DEFPROCinit_tww(tw%,out%,T$)
 7630LOCALoff%:off%=(tw%MOD4)*40
 7640IFtww%(tw%)=0THEN
 7650  SYS "Wimp_OpenTemplate",,sdlang$+".Templates"
 7660  SYS "Wimp_LoadTemplate",,q%,ind%,sp%+size%,-1,"task",0 TO,,ind%
 7670  twt%(tw%)=q%!72:q%!44=-twwmax%*32
 7680  !q%=!q%+off%:q%!8=q%!8+off%:q%!4=q%!4-off%:q%!12=q%!12-off%
 7690  SYS "Wimp_CreateWindow",,q% TO tww%(tw%)
 7700  SYS "Wimp_CloseTemplate"
 7710  CASEtw%OF
 7720    WHEN0:DIMtwbuf0$(twwmax%)
 7730    WHEN1:DIMtwbuf1$(twwmax%)
 7740    WHEN2:DIMtwbuf2$(twwmax%)
 7750    WHEN3:DIMtwbuf3$(twwmax%)
 7760    WHEN4:DIMtwbuf4$(twwmax%)
 7770    WHEN5:DIMtwbuf5$(twwmax%)
 7780    WHEN6:DIMtwbuf6$(twwmax%)
 7790    OTHERWISE:PROChalt(FNmsg0("Etask1")):ENDPROC
 7800  ENDCASE
 7810  ELSE
 7820  CASEtw%OF
 7830    WHEN0:twbuf0$()=""
 7840    WHEN1:twbuf1$()=""
 7850    WHEN2:twbuf2$()=""
 7860    WHEN3:twbuf3$()=""
 7870    WHEN4:twbuf4$()=""
 7880    WHEN5:twbuf5$()=""
 7890    WHEN6:twbuf6$()=""
 7900  ENDCASE
 7910ENDIF
 7920$twt%(tw%)=FNmsg1("TaskRun",T$):tdata$(tw%)="":twy%(tw%)=0:two%(tw%)=0
 7930IFout%THENPROCfront(tww%(tw%))
 7940ENDPROC
 7950
 7960DEFPROCupdate_txt(ux0%,uy0%,ux1%,uy1%)
 7970!q%=txt%:q%!4=ux0%:q%!8=uy0%:q%!12=ux1%:q%!16=uy1%
 7980SYS"Wimp_UpdateWindow",,q% TO more%
 7990PROCdraw_txt(more%)
 8000ENDPROC
 8010
 8020DEFPROCupdate_msg(ux0%,uy0%,ux1%,uy1%)
 8030!q%=mess%:q%!4=ux0%:q%!8=uy0%:q%!12=ux1%:q%!16=uy1%
 8040SYS"Wimp_UpdateWindow",,q% TO more%
 8050PROCdraw_msg(more%)
 8060ENDPROC
 8070
 8080DEFPROCupdate_tw(tw%,ux0%,uy0%,ux1%,uy1%)
 8090!q%=tww%(tw%):q%!4=ux0%:q%!8=uy0%:q%!12=ux1%:q%!16=uy1%
 8100SYS"Wimp_UpdateWindow",,q% TO more%
 8110PROCdraw_tw(tw%,more%)
 8120ENDPROC
 8130
 8140DEFPROCdraw_msg(more%)
 8150WHILE more%
 8160  PROCinfo(q%+4):CLG
 8170  top%=ABS(gy1%-by%+16)DIV32:bot%=ABS(gy0%-by%+16)DIV32
 8180  IFbot%>msgmax% THENbot%=msgmax%:IFtop%>bot% THENtop%=bot%
 8190  SYS"Wimp_SetColour",7:FORL%=top%TObot%
 8200  MOVEbx%+4-msgc%*(msgw%DIV2-LENmsg$(L%)*8),by%-L%*32-16
 8210  PRINTmsg$(L%):NEXT
 8220  SYS"Wimp_GetRectangle",,q%TOmore%
 8230ENDWHILE
 8240ENDPROC
 8250
 8260DEFPROCdraw_tw(tw%,more%)
 8270LOCALL%,y%,top%,bot%:WHILE more%
 8280  PROCinfo(q%+4):CLG
 8290  top%=ABS(gy1%-by%)DIV32:bot%=ABS(gy0%-by%)DIV32
 8300  IFbot%>twwmax% THENbot%=twwmax%:IFtop%>bot% THENtop%=bot%
 8310  SYS"Wimp_SetColour",7:FORL%=top%TObot%
 8320  y%=(L%+two%(tw%))MODtwwmax%
 8330  MOVEbx%+4,by%-L%*32-4
 8340  CASEtw%OF
 8350    WHEN0:PRINTtwbuf0$(y%)
 8360    WHEN1:PRINTtwbuf1$(y%)
 8370    WHEN2:PRINTtwbuf2$(y%)
 8380    WHEN3:PRINTtwbuf3$(y%)
 8390    WHEN4:PRINTtwbuf4$(y%)
 8400    WHEN5:PRINTtwbuf5$(y%)
 8410    WHEN6:PRINTtwbuf6$(y%)
 8420  ENDCASE
 8430  NEXT
 8440  SYS"Wimp_GetRectangle",,q%TOmore%
 8450ENDWHILE
 8460ENDPROC
 8470
 8480DEFPROCdraw_txt(more%)
 8490LOCALL%,y%,top%,bot%:WHILE more%
 8500  PROCinfo(q%+4):CLG
 8510  top%=ABS(gy1%-by%)DIV32:bot%=ABS(gy0%-by%)DIV32
 8520  IFbot%>txty% THENbot%=txty%:IFtop%>bot% THENtop%=bot%
 8530  FORL%=top%TObot%:y%=(L%+txto%)MODtxty%
 8540  MOVEbx%,by%-L%*32:SYS"Wimp_SetColour",txtc%?y%:PRINTtxtl$(y%):NEXT
 8550  SYS"Wimp_GetRectangle",,q% TO more%
 8560ENDWHILE
 8570ENDPROC
 8580
 8590DEFPROCstr_txt(A$)
 8600IFdata$>""THENPROCflush
 8610PROCline_txt(A$,7)
 8620ENDPROC
 8630
 8640DEFPROCwarn_txt(A$)
 8650PROCline_txt(A$,11)
 8660ENDPROC
 8670
 8680DEFPROCflush
 8690IFdata$>""THEN
 8700  IF(debug%AND2)<>0ANDerrC%<>0 THENBPUT#errC%,data$
 8710  IFmsg_cs%>0THENPROCmsgfilt(data$)
 8720  PROCline_txt(data$,5):data$=""
 8730ENDIF
 8740ENDPROC
 8750
 8760DEFFNrec:IFdevice%=0THEN=-1
 8770Z%=FNd(1,port%,0,0)
 8780IFZ%>0AND(debug%AND2)>0ORmsg_cs%>0 THEN
 8790  IFZ%>31 ANDZ%<128 THENdata$+=CHR$Z%
 8800  IFZ%=13ORZ%=10ORLENdata$>=txtx% THENPROCflush
 8810ENDIF
 8820=Z%
 8830
 8840DEFPROCtw_data(tw%,buf%,len%)
 8850LOCALl%
 8860FORl%=0TOlen%:C%=buf%?l%
 8870  IFC%>31 ANDC%<128 THENtdata$(tw%)+=CHR$C%
 8880  IFC%=13ORC%=10ORLENtdata$(tw%)>78 THEN
 8890    PROCtw_txt(tw%,tdata$(tw%))
 8900    IFtget%=tw%ANDtget$(0)>""THENPROCtget(tdata$(tw%))
 8910    tdata$(tw%)=""
 8920  ENDIF
 8930NEXT
 8940IFtget%=tw%ANDtget$(0)>""THENPROCtget(tdata$(tw%))
 8950ENDPROC
 8960
 8970DEFPROCtw_txt(tw%,A$)
 8980LOCALt%,B$
 8990IF(debug%AND4)<>0ANDerrC%<>0 THENBPUT#errC%,"TW"+STR$tw%+">"+A$
 9000WHILEA$>""
 9010  t%=(twy%(tw%)+two%(tw%))MODtwwmax%
 9020  B$=LEFT$(A$,79):A$=MID$(A$,79)
 9030  CASEtw%OF
 9040    WHEN0:twbuf0$(t%)=B$
 9050    WHEN1:twbuf1$(t%)=B$
 9060    WHEN2:twbuf2$(t%)=B$
 9070    WHEN3:twbuf3$(t%)=B$
 9080    WHEN4:twbuf4$(t%)=B$
 9090    WHEN5:twbuf5$(t%)=B$
 9100    WHEN6:twbuf6$(t%)=B$
 9110  ENDCASE
 9120  IFtwy%(tw%)<twwmax% THEN
 9130    !q%=tww%(tw%):SYS"Wimp_GetWindowState",,q%:f%=(q%!32)AND(1<<16)
 9140    IFtwy%(tw%)>=ABS(q%!8-q%!16)DIV32 THENq%!24=-(twy%(tw%)*32-ABS(q%!8-q%!16))-32:SYS"Wimp_OpenWindow",,q%
 9150    PROCupdate_tw(tw%,0,-twy%(tw%)*32-32,1280,-twy%(tw%)*32+4)
 9160    twy%(tw%)+=1
 9170  ELSE
 9180    two%(tw%)=(two%(tw%)+1)MODtwwmax%
 9190    SYS"Wimp_BlockCopy",tww%(tw%),0,-32*twwmax%,1280,0,0,-32*(twwmax%-1)
 9200    PROCupdate_tw(tw%,0,-32*twwmax%,1280,-32*(twwmax%-1)+4)
 9210  ENDIF
 9220ENDWHILE
 9230ENDPROC
 9240
 9250DEFPROCline_txt(A$,col%)
 9260LOCALt%:PROCpoll(slice%)
 9270WHILEA$>""
 9280  t%=(log_y%+txto%)MODtxty%
 9290  txtl$(t%)=LEFT$(A$,txtx%):A$=MID$(A$,txtx%)
 9300  txtc%?t%=col%:IFlog_y%<txty% THEN
 9310    !q%=txt%:SYS"Wimp_GetWindowState",,q%:f%=(q%!32)AND(1<<16)
 9320    IFf%<>0ANDlog_y%>=ABS(q%!8-q%!16)DIV32 THENq%!24=-(log_y%*32-ABS(q%!8-q%!16))-32:SYS"Wimp_OpenWindow",,q%
 9330    PROCupdate_txt(0,-log_y%*32-32,1280,-log_y%*32+4)
 9340    log_y%+=1
 9350  ELSE
 9360    txto%=(txto%+1)MODtxty%
 9370    SYS"Wimp_BlockCopy",txt%,0,-32*txty%,1280,0,0,-32*(txty%-1)
 9380    PROCupdate_txt(0,-32*txty%,1280,-32*(txty%-1)+4)
 9390  ENDIF
 9400ENDWHILE
 9410ENDPROC
 9420
 9430DEFPROCclr_txt
 9440txtl$()="":log_y%=0:txto%=0:data$=""
 9450PROCupdate_txt(0,-txty%*32-ioff%-8,16*txtx%,0)
 9460ENDPROC
 9470
 9480DEFPROClog(m$)
 9490IF(debug%AND1) THEN
 9500  PROCstr_txt(m$)
 9510  IFerrC%<>0 THENBPUT#errC%,m$
 9520ENDIF
 9530ENDPROC
 9540
 9550DEFPROCopenlog(A$)
 9560B$=FNparam(A$)
 9570IFB$="" THEN
 9580  PROCflush:PROCcf(errC%)
 9590ELSE
 9600  B$=FNcanon(B$)
 9610  SYS"XOS_Find",&CF,B$TOerrC%;F%
 9620  IF(F%AND1)THENSYS"XOS_Find",&8F,B$TOerrC%;F%
 9630  IF(F%AND1)THENerrC%=0:PROChalt(FNmsg0("Etrace")):ENDPROC
 9640  SYS"XOS_File",18,B$,&FFF
 9650  IFerrC%<>0 THENPTR#errC%=EXT#errC%
 9660ENDIF
 9670ENDPROC
 9680
 9690DEFPROCclaimdevice
 9700IFdriverno%>-1THEN
 9710  !q%=256:q%!12=0:q%!16=11:q%!20=2:q%!24=driverno%+port%
 9720  $(q%+28)="SLIPdial"+CHR$0
 9730  SYS"Wimp_SendMessage",18,q%,0
 9740  device%=TRUE:FORL%=1TO5:PROCpoll(0):NEXT
 9750ENDIF
 9760ENDPROC
 9770
 9780DEFPROCrefusedevice
 9790IFdriverno%>-1THEN
 9800  IF q%!20=2 AND q%!24=driverno%+port% THEN
 9810    !q%=256:q%!12=q%!8:q%!16=12
 9820    $(q%+28)=FNmsg0("DevMine")+CHR$0
 9830    SYS"Wimp_SendMessage",17,q%,q%!4
 9840  ENDIF
 9850ENDIF
 9860ENDPROC
 9870
 9880DEFFNloaddriver(A$)
 9890A%=INSTR(A$," "):IFA%>=0 THEN
 9900  driver$=LEFT$(A$,A%-1)
 9910  port%=VAL(MID$(A$,A%+1))
 9920  ELSE
 9930  driver$="internal"
 9940  port%=0
 9950ENDIF
 9960
 9970PROCsetv("port",driver$+" "+STR$port%)
 9980PROCprint(FNmsg1("DevLoad",driver$)," ","")
 9990SYS"XOS_File",16,"SerialDev:modules."+driver$+".driver",driver,0TO;F%
10000IF(F%AND1) THENPROChalt(FNmsg1("Edev",driver$)):=0
10010PROCprint("",FNmsg0("DevOK"),"")
10020driverno%=driver!&C8
10030=port%
10040
10050DEFPROCsetspeed(B$)
10060speed%=VALB$:IFspeed%=0 THENspeed%=19200
10070PROCsetv("speed",STR$speed%)
10080ENDPROC
10090
10100DEFPROCaddevent(A$,t%)
10110REM event types are: 0 system, 1 time-alarm, 2 line-alarm, 3 task-end,
10120REM 4 taskwindow-end, 5 command-input, 6 icon-click, 7 icon-filedrop,
10130REM 8 user-menu, 9 user-eof
10140PROClog(FNmsg1("Qadd",A$))
10150L%=0:WHILEevent$(L%)>""ANDL%<maxev%
10160L%+=1:ENDWHILE
10170event$(L%)=A$:evtype%(L%)=t%:ENDPROC
10180
10190DEFFNgetevent
10200LOCALt%,l%,A$,n%:l%=0:A$="":n%=0
10210REPEATIFevent$(l%)>""ANDevent%(evtype%(l%))=TRUE THENA$=event$(l%):n%=l%
10220l%+=1:UNTILA$>""ORevent$(l%)=""ORl%=maxev%
10230IFA$>""THEN
10240  FORl%=n%TOmaxev%-1:event$(l%)=event$(l%+1):evtype%(l%)=evtype%(l%+1):NEXT
10250  event$(maxev%)=""
10260ENDIF
10270=A$
10280
10290DEFFNtestevent
10300LOCALt%,l%,r%:l%=0:r%=0
10310REPEATIFevent$(l%)>""ANDevent%(evtype%(l%))=TRUE THENr%=TRUE
10320l%+=1:UNTILr%<>0ORevent$(l%)=""ORl%=maxev%
10330=r%
10340
10350DEFFNcommand(com$)
10360WHILEcom$>""ANDstop%=0:A$=FNmulticom(com$)
10370PROCpoll(slice%)
10380PROClog(STR$stage%+": "+A$)
10390B$=FNparam(A$):B$=FNlower(B$):lc$=B$:REM store last command for help
10400IFLEFT$(B$,1)<>":" THEN
10410  CASEB$ OF
10420    WHEN "if"   :return%=FNif(A$,com$)
10430    WHEN "ask"  :return%=FNask(A$)
10440    WHEN "case" :return%=FNcase(A$)
10450    WHEN "when" :return%=FNwhen(A$,com$)
10460    WHEN "otherwise":PROCotherwise(com$)
10470    WHEN "endcase":return%=FNendcase
10480    WHEN "claim":return%=FNclaim(A$)
10490    WHEN "debug":debug%=FNdebug(A$)
10500    WHEN "driver":return%=FNmodemdrv(A$)
10510    WHEN "source":return%=FNsource(A$)
10520    WHEN "library":return%=FNlibrary(A$)
10530    WHEN "chain":PROCchain(A$)
10540    WHEN "port" :port%=FNloaddriver(A$)
10550    WHEN "speed":PROCsetspeed(A$)
10560    WHEN "release":PROCrelease
10570    WHEN "init" :return%=FNinitmodem(A$)
10580    WHEN "reinit":PROCreinit
10590    WHEN "dial" :return%=FNdial(A$)
10600    WHEN "wait" :return%=FNwait(A$)
10610    WHEN "trace":PROCopenlog(A$)
10620    WHEN "send" :PROCsend(A$)
10630    WHEN "ipget":return%=FNipget(A$)
10640    WHEN "make" :PROCmakefile(A$)
10650    WHEN "task" :return%=FNtask(A$)
10660    WHEN "taskwindow":return%=FNtaskw(A$)
10670    WHEN "sleep","pause":PROCpause(VAL(A$))
10680    WHEN "alarm":PROCalarm(A$)
10690    WHEN "set"  :PROCset(A$)
10700    WHEN "unset":PROCunset(A$)
10710    WHEN "?eq","?ne","?lt","?le","?gt","?ge":return%=FNtesteq(B$,A$)
10720    WHEN "string":return%=FNstring(A$)
10730    WHEN "eval" :return%=FNeval(A$)
10740    WHEN "label":REM ignore labels
10750    WHEN "goto" :PROCgoto(A$,stage%)
10760    WHEN "call" :PROCgosub(A$,stage%)
10770    WHEN "return":return%=FNreturn(A$,stage%)
10780    WHEN "echo" :PROCecho(A$)
10790    WHEN "?file":return%=FNfile(A$)
10800    WHEN "?line":return%=FNtestline(A$)
10810    WHEN "?free":return%=FNfree(A$)
10820    WHEN "retry":PROCsetretry(A$)
10830    WHEN "open" :return%=FNopen(A$)
10840    WHEN "close":return%=FNclose(A$)
10850    WHEN "read" :return%=FNread(A$)
10860    WHEN "write" :return%=FNwrite(A$)
10870    WHEN "ptr" :return%=FNptr(A$)
10880    WHEN "move" :return%=FNmovefile(A$)
10890    WHEN "copy" :return%=FNcopyfile(A$)
10900    WHEN "append":return%=FNappend(A$)
10910    WHEN "delete":return%=FNdelete(A$)
10920    WHEN "newsrate":return%=FNnewsrate(A$)
10930    WHEN "?task":return%=FNtesttask(A$)
10940    WHEN "dopen","dataopen":return%=FNdataopen(A$)
10950    WHEN "stamp":PROClog("("+STR$(TIME DIV100)+") "+A$)
10960    WHEN "error":PROChalt(A$)
10970    WHEN "message":PROCmessage(A$)
10980    WHEN "menu" :PROCmenudef(A$)
10990    WHEN "list" :PROClist(A$)
11000    WHEN "icon":return%=FNiconbar(A$)
11010    WHEN "analyse","analyze":PROCanalyse(A$)
11020    WHEN "help" :PROChelp(A$)
11030    WHEN "event":PROCeventonoff(A$)
11040    WHEN "stop" :PROCstop
11050    WHEN "quit" :PROCquit(FNmsg0("Quit"))
11060    WHEN "exit" :PROCexit
11070    WHEN "input":PROCinput(A$)
11080    WHEN "oscli":return%=FNoscli(A$)
11090    OTHERWISE:PROClog(FNmsg0("BadCom"))
11100  ENDCASE
11110ENDIF
11120IFreturn%<0THENPROCsetv("$status",return$)ELSEPROCsetv("$status",STR$return%)
11130ENDWHILE
11140=return%
11150
11160DEFPROCecho(A$)
11170LOCALB$,s%:s%=0
11180REPEAT
11190  B$=FNparam(A$)
11200  IFLEFT$(B$,1)="/"THEN
11210    CASELEFT$(B$,3)OF
11220      WHEN"/st":s%=TRUE
11230      WHEN"/lo":s%=0
11240      WHEN"/da":A$=""""+TIME$+""" "+A$
11250    ENDCASE
11260    ELSE
11270    IFs%THEN
11280      PROCprint("",B$,"")
11290      ELSE
11300      PROCstr_txt(B$)
11310      IF(debug%AND3)<>0ANDerrC%<>0 THENBPUT#errC%,B$
11320    ENDIF
11330  ENDIF
11340UNTILA$=""
11350ENDPROC
11360
11370DEFFNclaim(A$)
11380LOCALJ%,t%,d%,try%
11390PROCprint(FNmsg0("DevClaim")," ","")
11400t%=VALFNparam(A$):IFt%<0 THENt%=retry%
11410d%=VALFNparam(A$):IFd%<2 THENd%=delay%
11420try%=1
11430REPEAT
11440PROCclaimdevice
11450IFdevice%<>0 THEN
11460  J%=FNd(17,port%,0,0)
11470  J%=FNd(13,port%,speed%,0):IFJ%<>speed%THENspeed%=J%
11480  J%=FNd(14,port%,speed%,0):IFJ%<>speed%THENspeed%=J%
11490  J%=FNd(15,port%,0,0)
11500  J%=FNd(16,port%,1,0)
11510  J%=FNd(6,port%,0,0)
11520  J%=FNd(7,port%,0,0)
11530ELSE
11540  PROCpause(d%):IFt%>0 THENtry%+=1
11550ENDIF
11560UNTILdevice%<>0 ORtry%>t% ORstop%<>0
11570=device%
11580
11590DEFPROCrelease
11600LOCALJ%
11610IF device% THEN
11620  PROCprint(FNmsg0("DevRel"),FNmsg0("DevDrop"),"")
11630  J%=FNd(8,port%,0,0)
11640  J%=FNd(18,port%,0,0)
11650  device%=FALSE
11660ENDIF
11670ENDPROC
11680
11690DEFFNinitmodem(A$)
11700LOCALB$,h%:h%=0
11710IFFNdroplines<>0 THEN
11720  PROCprint(FNmsg0("DevInit"),"","")
11730  IFA$=""THENA$=FNvv("$init")
11740  REPEAT
11750    B$=FNparam(A$)
11760    PROCprint("",FNmsg1("Sending",B$),"")
11770    PROCsend(B$):h%=FNget4s("OK","","","",5)
11780  UNTILA$=""ORh%=0
11790ENDIF
11800=h%
11810
11820DEFPROCreinit
11830LOCALJ%
11840J%=FNd(13,port%,speed%,0):IFJ%<>speed%THENspeed%=J%
11850J%=FNd(14,port%,speed%,0):IFJ%<>speed%THENspeed%=J%
11860J%=FNd(15,port%,0,0)
11870J%=FNd(16,port%,1,0)
11880J%=FNd(8,port%,3,0)
11890ENDPROC
11900
11910DEFPROCsetretry(A$)
11920LOCALB$
11930B$=FNparam(A$)
11940IFVALB$>0 THENretry%=VALB$
11950IFVALA$>2 THENdelay%=VALA$
11960ENDPROC
11970
11980DEFPROCusericon(A$)
11990PROCupd_icon(status%,11,A$)
12000PROCsetshaded(status%,11,(A$=""))
12010ENDPROC
12020
12030DEFFNdial(numlist$)
12040LOCALflag%,r%,d%,nod%,noc%,bus%,dc$,B$,C$
12050flag%=0:dc$="ATDT"
12060r%=retry%:d%=delay%:nod%=d%:noc%=d%:bus%=d%
12070PROCusericon(FNmsg0("Redial"))
12080REPEAT
12090  B$=FNparam(numlist$)
12100  IFLEFT$(B$,1)="/"THEN
12110      C$=FNvalue(B$):CASELEFT$(B$,3)OF
12120        WHEN"ret":r%=VALC$:IFr%<1 THENr%=1
12130        WHEN"del":d%=VALC$:IFd%<2 THENd%=2
12140          nod%=d%:noc%=d%:bus%=d%
12150        WHEN"noc":noc%=VALC$
12160        WHEN"nod":nod%=VALC$
12170        WHEN"not","pul":dc$="ATDP"
12180        WHEN"ton","nop":dc$="ATDT"
12190        WHEN"bus":bus%=VALC$
12200      ENDCASE
12210    ELSE
12220    attempt%=1:flag%=0:num$=B$
12230    REPEAT
12240      PROCprint(FNmsg1("Dialling",num$),FNmsg2("Dattempt",STR$attempt%,STR$r%),"")
12250      PROCsend(dc$+num$):attempt%+=1
12260      return%=FNget4s(FNvv("$conn"),FNvv("$busy"),FNvv("$nocarr"),FNvv("$nodial"),120)
12270      IFstop%=0 THEN
12280      IFredial%=TRUE THEN
12290        A%=FNdroplines:WHILE FNd(5,port%,0,0)>0:J%=FNrec:ENDWHILE:redial%=FALSE
12300        ELSE
12310        CASEreturn% OF
12320          WHEN 1:PROCprint("",FNmsg0("Dconnect"),""):flag%=1
12330          WHEN 2:PROCprint("",FNmsg0("Dbusy"),""):PROCpause(bus%)
12340          WHEN 3:PROCprint("",FNmsg0("Dnc"),""):PROCpause(noc%)
12350          WHEN 4:PROCprint("",FNmsg0("Dnd"),""):PROCpause(nod%)
12360          WHEN 2,3,4:WHILE FNd(5,port%,0,0)>0:J%=FNrec:ENDWHILE
12370          OTHERWISEPROCprint("",FNmsg0("Dnr"),""):PROCpause(d%)
12380        ENDCASE
12390      ENDIF
12400      ELSE
12410      A%=FNdroplines:REM cancel a dial if stop active
12420    ENDIF
12430  UNTIL attempt%>r% ORstop%<>0 ORflag%>0 ORdevice%=0
12440  IFflag%=0 ANDnumlist$>"" THENPROCprint(FNmsg0("Dnext"),"",""):PROCpause(1)
12450  ENDIF
12460UNTIL numlist$="" ORstop%<>0 OR flag%>0 ORdevice%=0
12470PROCusericon("")
12480=flag%
12490
12500DEFFNwait(A$)
12510LOCALl%,m%,d%,s%,return%,B$,C$,qual%
12520d%=600:tget%=-1:return%=0
12530REPEATB$=FNparam(A$):qual%=FALSE
12540IFLEFT$(B$,1)="/"THEN
12550  C$=FNvalue(B$):qual%=TRUE
12560  CASELEFT$(B$,2)OF
12570  WHEN"ev":return%=FNwaitevent
12580  WHEN"de","del":d%=VALC$
12590  WHEN"na","id":FORl%=0TOtwmax%:IFC$=twname$(l%)THENtget%=l%:l%=twmax%
12600    NEXT:IFtget%<0 THENPROChalt(FNmsg0("Ebadtask")):=0
12610  OTHERWISE:PROChalt(FNmsg0("Ebadwait")):=0
12620  ENDCASE
12630ENDIF
12640UNTILqual%=FALSE
12650IFreturn%=0 THEN
12660  IFd%=0THENPROChalt(FNmsg1("Ebaddel",A$)):=0
12670  s4$()="":l%=0:C$="":REPEAT
12680    s4$(l%)=B$:C$+=B$+"/":l%+=1:B$=FNparam(A$)
12690  UNTILB$=""ORl%=4:C$=LEFT$(C$,LENC$-1)
12700  PROCprint(FNmsg1("Wait",C$),FNmsg1("Timeout",STR$d%),"")
12710  IFtget%<0 THEN
12720    return%=FNget4s(s4$(0),s4$(1),s4$(2),s4$(3),d%)
12730  ELSE
12740    return%=FNgettw(s4$(0),s4$(1),s4$(2),s4$(3),d%)
12750  ENDIF
12760  IF return%>0 THENPROCprint("",FNmsg1("Received",s4$(return%-1)),"")ELSEPROCprint("",FNmsg0("TimedOut"),"")
12770ENDIF
12780=return%
12790
12800DEFFNwaitevent
12810PROCupd_icon(status%,7,FNmsg0("Select"))
12820PROCprint(FNmsg0("Waiting")," ","")
12830REPEATPROCpoll(50):UNTILFNtestevent
12840=1
12850
12860DEFPROCeventonoff(A$)
12870LOCALa%,B$:a%=TRUE
12880REPEATB$=FNparam(A$)
12890CASELEFT$(B$,2)OF
12900WHEN"/e":a%=TRUE
12910WHEN"/d":a%=FALSE
12920WHEN"ti":event%(1)=a%
12930WHEN"li":event%(2)=a%
12940WHEN"ta":event%(3)=a%
12950WHEN"tw":event%(4)=a%
12960WHEN"in":event%(5)=a%
12970WHEN"ic":event%(6)=a%
12980WHEN"fi":event%(7)=a%
12990WHEN"me":event%(8)=a%
13000WHEN"eo":event%(9)=a%
13010WHEN"al":event%()=a%
13020ENDCASE
13030UNTILA$="":event%(0)=TRUE
13040ENDPROC
13050
13060DEFFNgettw(tget$(0),tget$(1),tget$(2),tget$(3),wait%)
13070LOCALst%,r%
13080r%=0:twgflag%=0:wait%=wait%*100:st%=time%
13090PROCtget(tdata$(tget%))
13100REPEATPROCpoll(50):UNTILtwgflag%>0 ORABS(time%-st%)>wait% ORstop%<>0
13110IFtwgflag%>0 THENr%=twgflag%
13120=r%
13130
13140DEFPROCtget(A$)
13150LOCALL%
13160FORL%=0TO3
13170  IFtget$(L%)>""ANDINSTR(A$,tget$(L%))>0 THENtwgflag%=L%+1:L%=3
13180NEXT
13190tget%=-1
13200ENDPROC
13210
13220DEFFNget4s(s1$,s2$,s3$,s4$,wait%)
13230LOCALflag%,st%,J%
13240wait%=wait%*100:st%=time%
13250n1%=ASCs1$:n2%=ASCs2$:n3%=ASCs3$:n4%=ASCs4$
13260p1%=1:p2%=1:p3%=1:p4%=1:flag%=0
13270REPEAT
13280  J%=FNrec
13290  IFJ%>-1 THEN
13300    IFJ%=n1% THENp1%+=1:n1%=ASC(MID$(s1$,p1%)) ELSEn1%=ASCs1$:p1%=1
13310    IFJ%=n2% THENp2%+=1:n2%=ASC(MID$(s2$,p2%)) ELSEn2%=ASCs2$:p2%=1
13320    IFJ%=n3% THENp3%+=1:n3%=ASC(MID$(s3$,p3%)) ELSEn3%=ASCs3$:p3%=1
13330    IFJ%=n4% THENp4%+=1:n4%=ASC(MID$(s4$,p4%)) ELSEn4%=ASCs4$:p4%=1
13340    ELSE
13350    PROCpoll(10)
13360  ENDIF
13370  IFp1%>LENs1$ ANDs1$>"":flag%=1
13380  IFp2%>LENs2$ ANDs2$>"":flag%=2
13390  IFp3%>LENs3$ ANDs3$>"":flag%=3
13400  IFp4%>LENs4$ ANDs4$>"":flag%=4
13410UNTILflag%>0 ORABS(time%-st%)>wait% ORstop%<>0 ORredial%<>0
13420IFflag%>0 THEN:=flag%
13430=0
13440
13450DEFPROCsend(A$)
13460LOCALA%,J%,R%,t$,tw%,B$,C$:t$="":R%=0
13470REPEATB$=FNparam(A$)
13480  IFLEFT$(B$,1)="/"THEN
13490    C$=FNvalue(B$):CASELEFT$(B$,2)OF
13500      WHEN"ra":R%=TRUE
13510      WHEN"no":R%=FALSE
13520      WHEN"na","id":t$=C$
13530    ENDCASE
13540    ELSE
13550    IFt$=""THEN
13560      IFdevice%=0THENPROChalt(FNmsg0("Enodev")):ENDPROC
13570      FORA%=1TOLENB$:J%=FNd(0,port%,ASCMID$(B$,A%,1),0):NEXT
13580      IFR%=0 THENJ%=FNd(0,port%,13,0)
13590      ELSE
13600      tw%=0:WHILEtwname$(tw%)<>t$ANDtw%<twmax%:tw%+=1:ENDWHILE
13610      IFtw%<twmax%ANDtwh%(tw%)<>0THEN
13620        !q%=256:q%!12=0:q%!16=&808C0:q%!20=LENB$-(R%=0):$(q%+24)=B$
13630        SYS"Wimp_SendMessage",17,q%,twh%(tw%)
13640        PROClog(FNmsg2("TaskSend",LEFT$(B$,100),twname$(tw%)))
13650      ENDIF
13660    ENDIF
13670  ENDIF
13680UNTILA$=""
13690ENDPROC
13700
13710DEFFNipget(A$)
13720LOCALr%,start$,d%,a%,loc%,tlim%,B$,C$,J%
13730r%=0:d%=60:a%=0
13740REPEATB$=FNparam(A$)
13750IFLEFT$(B$,1)="/"THEN
13760  C$=FNvalue(B$):CASELEFT$(B$,2)OF
13770    WHEN"de":d%=VALC$:IFd%<10THENd%=10
13780    WHEN"au":a%=TRUE
13790  ENDCASE
13800  ELSE
13810  start$=B$
13820ENDIF
13830UNTILA$=""
13840IFa%=0THEN
13850  r%=FNget4s(start$,"","","",d%)
13860  ELSE
13870  start$="":loc%=0:r%=0:tlim%=time%+d%*100
13880  REPEAT
13890    J%=FNrec
13900    IFJ%>0THEN
13910    CASEloc%OF
13920      WHEN0,1,2:IFJ%>47ANDJ%<57THENstart$+=CHR$J%:loc%+=1:ELSEstart$="":loc%=0
13930      WHEN3:IFJ%=46THENstart$+=".":loc%+=1:ELSEstart$="":loc%=0
13940    ENDCASE
13950    ELSE
13960    PROCpoll(slice%)
13970    ENDIF
13980  UNTILloc%=4ORtime%>tlim%:IFloc%=4THENr%=1
13990ENDIF
14000IFr%=1 THEN
14010  ipnumber$=start$
14020  J%=FNrec
14030  REM terminates on space or control char
14040  WHILE (J%>32 OR J%=0) ANDLENipnumber$<20
14050    IFJ%>31 THENipnumber$=ipnumber$+CHR$J%:PROCpoll(slice%):ELSEPROCpoll(10)
14060    J%=FNrec
14070  ENDWHILE
14080  C%=ASC(RIGHT$(ipnumber$,1))
14090  WHILE (C%<48 OR C%>57) ANDLENipnumber$>5
14100  ipnumber$=LEFT$(ipnumber$,LEN(ipnumber$)-1)
14110  C%=ASC(RIGHT$(ipnumber$,1))
14120  ENDWHILE
14130  PROCsetv("ipaddress",ipnumber$)
14140  PROCsetv("route",FNsubst("%ip1.%ip2.%ip3.254"))
14150  return$=ipnumber$:r%=-1:A$=""
14160ENDIF
14170=r%
14180
14190DEFPROCupdateip(A$)
14200LOCALl%,m%
14210l%=INSTR(A$,"."):PROCsetv("ip1",LEFT$(A$,l%-1))
14220m%=INSTR(A$,".",l%+1):PROCsetv("ip2",MID$(A$,l%+1,m%-l%-1))
14230l%=INSTR(A$,".",m%+1):PROCsetv("ip3",MID$(A$,m%+1,l%-m%-1))
14240PROCsetv("ip4",MID$(A$,l%+1))
14250PROCprint("","",A$)
14260ENDPROC
14270
14280DEFPROCmakefile(name$)
14290A%=INSTR(name$," ")
14300IFA%<=1 THEN PROCquit(FNmsg1("Ebadmake",name$))
14310source$=LEFT$(name$,A%-1):dest$=MID$(name$,A%+1)
14320PROCprint(FNmsg1("Make",dest$),"","")
14330IFsource$="-"THENsource$="null:"
14340fh1%=FNopenin(source$)
14350IFfh1%=0 THENPROChalt(FNmsg1("Enotfound",source$)):ENDPROC
14360fh2%=FNopenout(dest$)
14370IFfh2%=0 THENPROChalt(FNmsg1("Ebadfile",dest$)):ENDPROC
14380WHILE (EOF#fh1%=FALSE ORLEFT$(FNline(stage%+1),1)="+")
14390  IF EOF#fh1% THEN
14400    stage%+=1:A$=MID$(FNline(stage%),2)
14410    ELSE
14420    A$=GET$#fh1%
14430  ENDIF
14440  A$=FNsubst(A$)
14450  IFLEFT$(A$,1)<>"#" THENBPUT#fh2%,A$
14460  PROCpoll(slice%)
14470ENDWHILE
14480PROCcf(fh1%):PROCcf(fh2%)
14490ENDPROC
14500
14510DEFFNopenin(f$)
14520=FNfopen(f$,&4F)
14530
14540DEFFNopenout(f$)
14550=FNfopen(f$,&8F):PROCsettype(f$,&FFF)
14560
14570DEFFNopenup(f$)
14580LOCALh%
14590h%=FNfopen(f$,&CF)
14600IFh%=0THENh%=FNfopen(f$,&8F):PROCsettype(f$,&FFF)
14610=h%
14620
14630DEFFNfopen(f$,r%)
14640LOCALh%,F%
14650SYS"XOS_Find",r%,f$TOh%;F%
14660IF(F%AND1)THENh%=0
14670=h%
14680
14690DEFFNdelfile(f$)
14700LOCALF%:SYS"XOS_File",6,f$TO;F%
14710=(F%AND1)
14720
14730DEFPROCsettype(f$,t%)
14740SYS"XOS_File",18,f$,t%
14750ENDPROC
14760
14770DEFPROCpause(wait%)
14780LOCALendtime%
14790IFwait%=0 THEN
14800  PROCpaused
14810  ELSE
14820  PROClog(FNmsg1("Wait",STR$wait%+"s"))
14830  PROCpoll(0):st%=time%:wait%=wait%*100
14840  REPEAT
14850    PROCpoll(50)
14860  UNTILABS(st%-time%)>wait%
14870  ENDIF
14880ENDPROC
14890
14900DEFPROCsettime
14910LOCALl%,m%
14920?q%=3:SYS"OS_Word",14,q%
14930SYS"OS_ConvertDateAndTime",q%,tmp%,256,"%24%MI%SE"TOl%,m%:now$=FNstr(l%)
14940PROCsetv("$time",now$):PROCsetv("$mtime",STR$(time%DIV100))
14950ENDPROC
14960
14970DEFPROCsetdate
14980LOCALl%,m%
14990?q%=3:SYS"OS_Word",14,q%
15000SYS"OS_ConvertDateAndTime",q%,tmp%,256,"%YR%MN%DY"TOl%,m%:now$=FNstr(l%)
15010PROCsetv("$date",now$)
15020ENDPROC
15030
15040DEFPROCalarm(A$)
15050LOCALal%,a$,an%,at%,ai%,B$,C$
15060an%=-1:al%=-1:ai%=-1:a$=A$
15070REPEATB$=FNparam(A$)
15080IFLEFT$(B$,1)="/"THEN
15090  C$=FNvalue(B$)
15100  CASELEFT$(B$,2)OF
15110    WHEN"st":stop$=C$
15120    WHEN"er":error$=C$
15130    WHEN"dt","cts":aline%(0)=FNtf10(VALC$):al%=0
15140    WHEN"ds":aline%(1)=FNtf10(VALC$):al%=1
15150    WHEN"rn":aline%(2)=FNtf10(VALC$):al%=2
15160    WHEN"dc":aline%(3)=FNtf10(VALC$):al%=3
15170    WHEN"ti":at%=FNdecodetime(C$)
15180    WHEN"ic":ai%=FNiconid(C$)
15190    WHEN"na","id":an%=FNalarmno(C$):alarmid$(an%)=C$
15200    WHEN"ca","de":PROCcancelalarm(C$)
15210  ENDCASE
15220ENDIF
15230UNTILA$=""
15240IFat%>0 THEN
15250  IFan%<0THENan%=FNalarmno("~")
15260  alarm$(an%,0)=B$:alarm$(an%,1)=a$:alarmtime%(an%)=at%
15270ELSE
15280  IFal%>=0 THENaline$(al%)=B$
15290  IFai%>=0 THENifile$(ai%)=B$
15300ENDIF
15310ENDPROC
15320
15330DEFFNalarmno(A$)
15340LOCALa%:a%=0
15350REPEATa%+=1:UNTILalarm$(a%,0)=""ORalarmid$(a%)=A$ORa%=almax%
15360IFa%=almax%THENPROChalt(FNmsg0("Ealarm")):=0
15370=a%
15380
15390DEFFNtf10(A%):=-(A%<>0)
15400
15410DEFPROCcancelalarm(C$)
15420LOCALa%:a%=0
15430REPEATa%+=1:UNTILalarmid$(a%)=C$ORa%=almax%
15440IFalarmid$(a%)=C$ THENalarm$(a%,0)="":PROClog(FNmsg1("Acancel",C$))
15450ENDPROC
15460
15470DEFFNdecodetime(C$)
15480LOCALl%,m%,hr%,mi%,sc%,add%,r%,now%,nhr%,nmi%,nse%,wait%,tnow%
15490IFLEFT$(C$,1)="+"THENadd%=TRUE:C$=MID$(C$,2) ELSEadd%=FALSE
15500l%=INSTR(C$,":"):IFl%>0 THEN
15510  m%=INSTR(C$,":",l%+1):IFm%>0 THEN
15520    hr%=VALLEFT$(C$,l%-1)
15530    mi%=VALMID$(C$,l%+1,m%-1)
15540    sc%=VALMID$(C$,m%+1,m%+3)
15550    ELSE
15560    IFadd% THEN
15570      hr%=0:mi%=VALLEFT$(C$,l%-1):sc%=VALMID$(C$,l%+1,l%+3)
15580      ELSE
15590      sc%=0:hr%=VALLEFT$(C$,l%-1):mi%=VALMID$(C$,l%+1,l%+3)
15600    ENDIF
15610  ENDIF
15620  ELSE
15630  IFadd% THENhr%=0:mi%=0:sc%=VALLEFT$(C$,2) ELSEsc%=0:mi%=0:hr%=VALLEFT$(C$,2)
15640ENDIF
15650SYS"OS_ReadMonotonicTime"TOnow%
15660IFadd% THEN
15670  r%=now%+100*sc%+6000*mi%+360000*hr%
15680  ELSE
15690  ?q%=3:SYS"OS_Word",14,q%
15700  SYS"OS_ConvertDateAndTime",q%,tmp%,256,"%24%MI%SE"TOl%,m%:now$=FNstr(l%)
15710  nhr%=VALLEFT$(now$,2):nmi%=VALMID$(now$,3,2):nse%=VALRIGHT$(now$,2)
15720  tnow%=nse%+nmi%*60+nhr%*3600
15730  wait%=(sc%+mi%*60+hr%*3600)-tnow%:WHILEwait%<0:wait%+=24*3600:ENDWHILE
15740  r%=now%+wait%*100
15750ENDIF
15760=r%
15770
15780DEFPROCtimealarm
15790LOCALc%:c%=0
15800REPEATc%+=1
15810  IFalarm$(c%,0)>"" ANDtime%>alarmtime%(c%) THEN
15820    com$=alarm$(c%,0):alarm$(c%,0)=""
15830    IFINSTR(alarm$(c%,1),"/repeat")>0 THENPROCalarm(alarm$(c%,1))
15840    PROCaddevent(com$,1)
15850  ENDIF
15860UNTILc%=almax%
15870checkalarm%=time%
15880ENDPROC
15890
15900DEFPROClinealarm
15910LOCALl1%,J%
15920IFdevice%THEN
15930  J%=FNd(9,port%,0,0)
15940  IFJ%<>oldline%THEN
15950    oldline%=J%:IF(J%AND1)THENt$="�"ELSEt$=" "
15960    IF(J%AND2)THENt$+="�"ELSEt$+=" "
15970    IF(J%AND8)THENt$+="�"ELSEt$+=" "
15980    PROCupd_icon(status%,10,t$)
15990  ENDIF
16000  FORl1%=0TO3
16010    IFaline$(l1%)>""AND(J%AND(1<<l1%))=aline%(l1%)THENPROCaddevent(aline$(l1%),2):aline$(l1%)=""
16020  NEXTl1%
16030  ELSE
16040  IFoldline%>0THENoldline%=0:PROCupd_icon(status%,15,"")
16050ENDIF
16060ENDPROC
16070
16080DEFPROClist(A$)
16090LOCALB$,C$
16100B$=FNparam(A$):C$=FNvalue(B$)
16110CASELEFT$(B$,2)OF
16120  WHEN"al":PROClistalarms
16130  WHEN"me":PROClistmenu
16140  WHEN"ta":PROClisttasks
16150  WHEN"va":PROClistvars
16160  WHEN"sc":PROClistscript(A$)
16170  WHEN"fi":PROClistfiles
16180  WHEN"ju":PROClistjt
16190ENDCASE
16200ENDPROC
16210
16220DEFPROClistalarms
16230LOCALc%,A%,A$
16240PROCwarn_txt(FNmsg0("Condition")+"    "+FNmsg0("Action"))
16250FORc%=0TOalmax%
16260  IFalarm$(c%,0)>"" THEN
16270    A%=(alarmtime%(c%)-time%)DIV100
16280    A$="t+"+RIGHT$("00"+STR$(A%DIV3600),2)+":"
16290    A$+=RIGHT$("00"+STR$((A%MOD3600)DIV60),2)+":"
16300    A$+=RIGHT$("00"+STR$(A%MOD60),2)
16310    PROCf_list(A$,alarm$(c%,1)+" ("+alarmid$(c%)+")")
16320  ENDIF
16330NEXT
16340FORc%=0TOimax%
16350  IFibar$(c%)>""THENPROCf_list(FNmsg0("Iclick"),ibar$(c%)+" ("+ibarid$(c%)+")")
16360  IFifile$(c%)>""THENPROCf_list(FNmsg0("Ifile"),ifile$(c%)+" ("+ibarid$(c%)+")")
16370NEXT
16380PROCf_list("stop",stop$)
16390IFaline$(0)>""THENPROCf_list("DTR"+" ("+STR$aline%(0)+")",aline$(0))
16400IFaline$(1)>""THENPROCf_list("DSR"+" ("+STR$aline%(1)+")",aline$(1))
16410IFaline$(2)>""THENPROCf_list("RNG"+" ("+STR$aline%(2)+")",aline$(2))
16420IFaline$(3)>""THENPROCf_list("DCD"+" ("+STR$aline%(3)+")",aline$(3))
16430ENDPROC
16440
16450DEFPROCf_list(A$,B$)
16460IFB$>""THENPROCwarn_txt(" "+A$+STRING$(13-LENA$," ")+B$)
16470ENDPROC
16480
16490DEFFNiconbar(A$)
16500LOCALr%,id$,act$,s$,B$,C$
16510id$="":act$="":s$=""
16520REPEAT
16530  B$=FNparam(A$)
16540  IFLEFT$(B$,1)="/"THEN
16550    C$=FNvalue(B$)
16560    CASELEFT$(B$,2)OF
16570      WHEN"fi":r%=FNmergesprites(C$)
16580      WHEN"id","name":id$=C$
16590      WHEN"ac":act$=C$
16600      WHEN"ca","de":r%=FNcancelicon(C$)
16610      WHEN"fr":r%=FNsfree
16620    ENDCASE
16630  ELSE
16640    s$=B$
16650  ENDIF
16660UNTILA$=""
16670  IFid$>""ANDs$>""THENr%=FNaddicon(s$,id$,act$)
16680=r%
16690
16700DEFFNiconid(A$)
16710LOCALa%:a%=0
16720REPEATa%+=1:UNTILibarid$(a%)=A$ORa%=imax%
16730IFa%=imax%ORA$=""THENPROClog(FNmsg0("Eicon1")):=-1
16740=a%
16750
16760DEFFNnewiconid(A$)
16770LOCALa%:a%=0
16780REPEATa%+=1:UNTILibarid$(a%)=A$ORibar%(a%)=0ORa%=imax%
16790IFa%=imax%ORA$=""THENPROClog(FNmsg0("Eicon1")):=-1
16800=a%
16810
16820DEFFNaddicon(A$,id$,act$)
16830LOCALa%,Z%
16840a%=FNnewiconid(id$)
16850IFa%<0THEN=0
16860IFA$>""THEN
16870  IFibarid$(a%)=id$ THENZ%=FNcancelicon(id$)
16880  PROClog("Adding icon "+A$)
16890  ibar%(a%)=FNic(A$,a%):ibarid$(a%)=id$
16900ENDIF
16910ibar$(a%)=act$
16920=FNtf10(ibar%(a%))
16930
16940DEFFNcancelicon(A$)
16950LOCALa%
16960a%=FNiconid(A$)
16970IFa%<0THENPROClog(FNmsg0("Eicon1")):=0
16980IFibar%(a%)<1THENPROClog(FNmsg0("Eicon2")):=0
16990!icons%=-2:icons%!4=ibar%(a%):SYS"XWimp_DeleteIcon",,icons%TO;F%
17000ibar%(a%)=0:ibarid$(a%)=""
17010=FNtf10(F%)
17020
17030DEFPROCifile(Z%,f$,ty%)
17040PROCsetv("$type",STR$~ty%):PROCsetv("$file",+f$)
17050PROCaddevent(ifile$(Z%),7)
17060ENDPROC
17070
17080DEFPROCset(A$)
17090LOCALl%,m%,B$,C$
17100B$=FNparam(A$):C$=FNparam(A$)
17110PROCsetv(B$,C$)
17120ENDPROC
17130
17140DEFPROCsetv(B$,C$)
17150LOCALl%,p%:p%=-1:FORl%=0TOvmax%
17160  IFvar$(l%,0)=B$ORvar$(l%,0)=""THENvar$(l%,0)=B$:var$(l%,1)=C$:p%=l%:l%=vmax%+1
17170NEXT
17180IFB$="ipaddress"THENPROCupdateip(C$)
17190IFp%=-1THENPROChalt(FNmsg0("Evar"))
17200ENDPROC
17210
17220DEFPROCunset(A$)
17230LOCALl%,B$
17240B$=FNparam(A$)
17250FORl%=0TOvmax%
17260  IFvar$(l%,0)=B$ THENvar$(l%,0)="":var$(l%,1)=""
17270NEXT
17280IFB$="ipaddress"THENPROCprint("",""," ")
17290ENDPROC
17300
17310DEFFNvv(A$)
17320LOCALl%,t$,B$:t$=""
17330B$=FNparam(A$)
17340FORl%=0TOvmax%
17350  IFvar$(l%,0)=B$ THENt$=var$(l%,1):l%=vmax%
17360NEXT
17370=t$
17380
17390DEFPROClistvars
17400LOCALc%
17410PROCwarn_txt(FNmsg0("Variable")+"      "+FNmsg0("Value"))
17420FORc%=0TOvmax%
17430  IFvar$(c%,0)>""THENPROCf_list(var$(c%,0),var$(c%,1))
17440NEXT
17450ENDPROC
17460
17470DEFFNdroplines
17480LOCALJ%
17490IFdevice%=0THEN=0
17500PROCprint("",FNmsg0("DevDrop"),"")
17510J%=FNd(8,port%,0,0)
17520PROCpoll(100)
17530J%=FNd(8,port%,3,0)
17540=1
17550
17560DEFPROCgoto(A$,RETURN stage%)
17570LOCALl%,flag%,dest$
17580l%=0:flag%=-1:dest$=FNparam(A$)
17590REPEAT
17600IFjt$(l%)=dest$THENflag%=jt%(l%):l%=jtl%
17610l%+=1:UNTILl%>=jtl%
17620IFflag%<0THENPROChalt(FNmsg1("Elabel",dest$)):ENDPROC
17630stage%=flag%
17640ENDPROC
17650
17660DEFPROCgosub(A$,RETURN stage%)
17670LOCALB$,p%,old%,lock%
17680IFcall_lev%=submax% THENPROChalt(FNmsg0("Elevel")):ENDPROC
17690dest$=FNparam(A$)
17700lock%=FALSE:IFdest$="/lock"THENlock%=TRUE:dest$=FNparam(A$)
17710p%=0:IFA$>""THEN
17720  REPEATp%+=1:B$=FNparam(A$):PROCsetv("p"+STR$p%,B$):UNTILA$=""
17730ENDIF
17740old%=stage%:PROCgoto(dest$,stage%)
17750IFlock%THEN
17760  FORp%=0TOcall_lev%:IFcall_lock%(p%)=stage% THENstage%=old%:PROCwarn_txt(FNmsg1("Elock",dest$))
17770  NEXT
17780ENDIF
17790IFstage%<>old% THEN
17800  call_lev%+=1:call_ret%(call_lev%)=old%
17810  IFlock% THENcall_lock%(call_lev%)=stage%
17820ENDIF
17830ENDPROC
17840
17850DEFFNreturn(A$,RETURN stage%)
17860IFcall_lev%=0 THENPROChalt(FNmsg0("Ereturn")):=0
17870stage%=call_ret%(call_lev%):call_lev%-=1
17880return$=A$
17890=-1
17900
17910DEFFNtestfile(A$)
17920LOCALr%
17930SYS"XOS_File",17,A$TOr%
17940=r%
17950
17960DEFFNfile(A$)
17970LOCALr%,n%,l%,B$,C$
17980r%=0:B$=FNparam(A$):C$=FNparam(A$)
17990CASELEFT$(B$,3)OF
18000  WHEN"/si":SYS"XOS_File",23,C$TOn%,,,,r%
18010  WHEN"/at":SYS"XOS_File",23,C$TOn%,,,,,r%
18020  WHEN"/ty":SYS"XOS_File",23,C$TOn%,,,,,,r%:return$=STR$~r%:r%=-1
18030  WHEN"/ex":return$=FNcanon(C$):IFreturn$>""THENr%=-1:n%=1
18040  WHEN"/le":return$=FNcanon(C$):n%=LENreturn$
18050    WHILEn%>0ANDMID$(return$,n%,1)<>".":n%-=1:ENDWHILE
18060    IFn%>1THENreturn$=MID$(return$,n%+1):r%=-1
18070  WHEN"/pa":return$=FNcanon(C$):n%=LENreturn$
18080    WHILEn%>0ANDMID$(return$,n%,1)<>".":n%-=1:ENDWHILE
18090    IFn%>1THENreturn$=LEFT$(return$,n%-1):r%=-1
18100  OTHERWISE:SYS"XOS_File",23,B$TOr%:n%=r%
18110ENDCASE
18120IFn%=0THENr%=0
18130=r%
18140
18150DEFFNcanon(A$)
18160LOCALr$:r$=""
18170SYS"XOS_FSControl",37,A$,tmp%,,,256TO,,,,,r%;F%
18180IFr%>0AND(F%AND1)=0THENr$=FNstr(tmp%)
18190=r$
18200
18210DEFFNtestline(A$)
18220LOCAL return%,J%,B$:return%=0
18230J%=FNd(9,port%,0,0)
18240REPEATB$=FNparam(A$)
18250  CASEB$OF
18260    WHEN "/cts","/dtr":return%+=(J%AND1)
18270    WHEN "/dsr":return%+=(J%AND2)
18280    WHEN "/rng":return%+=(J%AND4)
18290    WHEN "/dcd":return%+=(J%AND8)
18300    OTHERWISE:PROChalt(FNmsg0("Eparam")):=0
18310  ENDCASE
18320UNTILA$=""
18330=return%
18340
18350DEFFNfree(A$)
18360LOCALn%,f%,r%,B$,C$
18370SYS"Wimp_SlotSize",-1,-1TO,n%,f%
18380REPEATB$=FNparam(A$)
18390  IFLEFT$(B$,1)="/"THEN
18400    C$=FNvalue(B$)
18410    CASELEFT$(B$,2)OF
18420      WHEN"me":r%=n%+f%
18430      WHEN"ne":r%=n%
18440      WHEN"fr":r%=f%
18450      WHEN"in":r%=HIMEM-END
18460      WHEN"de":SYS"XOS_FSControl",49,C$TOr%;F%:IFFNtf10(F%)=0THENr%=0
18470    ENDCASE
18480    ELSE
18490    IFB$>""THENPROCsetv(B$,STR$r%)
18500  ENDIF
18510UNTILA$=""
18520=r%
18530
18540DEFFNif(A$,RETURNcom$)
18550LOCAL test$,if$,not%,return%,l%,m%,n%
18560l%=INSTR(A$,"("):m%=INSTR(A$,")",l%):n%=INSTR(A$," ",m%)
18570IF l%*m%*n%=0 THENPROClog(FNmsg0("Eif")):=0
18580not%=FALSE:test$=MID$(A$,l%+1,m%-l%-1):if$=MID$(A$,n%+1)
18590IFLEFT$(test$,1)="!" THENnot%=TRUE:test$=MID$(test$,2)
18600return%=FNcommand(test$):IFnot% THENreturn%=-(return%=0)
18610IF return%<>0ANDstop%=0THENreturn%=FNcommand(if$) ELSEcom$=""
18620=return%
18630
18640DEFFNcase(A$)
18650caslev%+=1:IFcaslev%>casmax%THENPROChalt(FNmsg0("Ecase")):=0
18660case$(caslev%)=FNparam(A$):casmatch%?caslev%=0:=1
18670
18680DEFFNwhen(A$,RETURNcom$)
18690LOCALm%,B$:m%=FALSE
18700IFcaslev%=0 THENPROChalt(FNmsg0("Ewhen")):=0
18710REPEATB$=FNparam(A$)
18720  IFB$=case$(caslev%)THENm%=TRUE:casmatch%?caslev%=1
18730UNTILA$=""
18740IFm%=FALSE THENcom$=""
18750=0
18760
18770DEFPROCotherwise(RETURNcom$)
18780IFcaslev%=0 THENPROChalt(FNmsg0("Ewhen")):ENDPROC
18790IFcasmatch%?caslev%=1 THENcom$=""
18800ENDPROC
18810
18820DEFFNendcase
18830IFcaslev%=0 THENPROChalt(FNmsg0("Ewhen")):=0
18840caslev%-=1:=1
18850
18860DEFFNtesteq(c$,A$)
18870LOCALr%,n%,l%,c%,b$,B$,C$:r%=0
18880B$=FNparam(A$):C$=FNparam(A$)
18890b$=B$+C$:n%=TRUE:FORl%=1TOLENb$:c%=ASCMID$(b$,l%,1)
18900  IFc%<46ORc%>57ORc%=47THENn%=FALSE:l%=LENb$
18910NEXT
18920LOCALERROR
18930ONERRORLOCAL:PROClog(FNmsg1("Ecomp",c$)):ENDPROC
18940CASEc$OF
18950  WHEN"?eq":IFn%THENr%=(VALB$=VALC$)ELSEr%=(B$=C$)
18960  WHEN"?ne":IFn%THENr%=(VALB$<>VALC$)ELSEr%=(B$<>C$)
18970  WHEN"?lt":IFn%THENr%=(VALB$<VALC$)ELSEr%=(B$<C$)
18980  WHEN"?gt":IFn%THENr%=(VALB$>VALC$)ELSEr%=(B$>C$)
18990  WHEN"?le":IFn%THENr%=(VALB$<=VALC$)ELSEr%=(B$<=C$)
19000  WHEN"?ge":IFn%THENr%=(VALB$>=VALC$)ELSEr%=(B$>=C$)
19010ENDCASE
19020=-(r%<>0)
19030
19040DEFFNeval(A$)
19050LOCALB$
19060return$=""
19070B$=FNparam(A$)
19080LOCAL ERROR
19090ON ERROR LOCAL:PROClog(FNmsg1("Eeval",B$)):=0
19100return$=STR$(EVALB$)
19110=-1
19120
19130DEFFNstring(A$)
19140LOCALa%,s%,l%,s$,b$,B$,C$:a%=0:s%=0:l%=0
19150REPEATB$=FNparam(A$)
19160  IFLEFT$(B$,1)="/"THEN
19170  C$=FNvalue(B$):CASELEFT$(B$,3)OF
19180    WHEN"siz":a%=1
19190    WHEN"low":a%=2
19200    WHEN"lef":a%=3:s%=VALC$
19210    WHEN"rig":a%=4:s%=VALC$
19220    WHEN"sta":a%=5:s%=VALC$
19230    WHEN"len":l%=VALC$
19240    WHEN"ins":a%=6:b$=C$
19250    WHEN"upp":a%=7
19260  ENDCASE
19270  ELSE
19280  s$=B$
19290  ENDIF
19300UNTILA$=""
19310CASEa%OF
19320  WHEN1:return$=STR$LENs$
19330  WHEN2:return$=FNlower(s$)
19340  WHEN3:return$=LEFT$(s$,s%)
19350  WHEN4:return$=RIGHT$(s$,s%)
19360  WHEN5:IFl%<1THENreturn$=MID$(s$,s%)ELSEreturn$=MID$(s$,s%,l%)
19370  WHEN6:return$=STR$(INSTR(s$,b$))
19380  WHEN7:return$=FNupper(s$)
19390  OTHERWISE:return$=s$
19400ENDCASE
19410=-1
19420
19430DEFFNmovefile(A$)
19440LOCALl%,B$
19450PROCprint(FNmsg0("Fmove1")," ","")
19460B$=FNparam(A$)
19470IFA$=""THENPROCprint("",FNmsg0("Fbad"),""):=0
19480l%=INSTR(A$,"*")
19490IFl%>0 THEN
19500  REPEATA$=LEFT$(A$,l%-1)+RIGHT$(STR$(TIME),4)+MID$(A$,l%+1)
19510  PROCpoll(slice%)
19520  UNTILFNtestfile(A$)<>1
19530ENDIF
19540PROCprint("",FNmsg2("Fto",B$,A$),"")
19550SYS"XOS_FSControl",25,B$,A$ TO;F%
19560IF (F%AND1) THEN
19570  SYS"XOS_FSControl",26,B$,A$,%10000010 TO;F%
19580ENDIF
19590PROCsetv("$dest",A$)
19600=-((F%AND1)=0)
19610
19620DEFFNcopyfile(A$)
19630LOCALl%,act%,s$,d$,n%,B$,C$
19640act%=0:s$="":d$=""
19650PROCprint(FNmsg0("Fcopy")," ","")
19660REPEATB$=FNparam(A$)
19670  IFLEFT$(B$,1)="/"THEN
19680    C$=FNvalue(B$):CASELEFT$(B$,2)OF
19690      WHEN"ta":act%=1:n%=VALC$:IFn%=0THENn%=50
19700      WHEN"he":act%=2:n%=VALC$:IFn%=0THENn%=50
19710    ENDCASE
19720  ELSE
19730  IFs$=""THENs$=B$:ELSEd$=B$
19740ENDIF
19750UNTILA$=""
19760IFd$=""THENPROCprint("",FNmsg0("Fbad"),""):=0
19770l%=INSTR(d$,"*"):IFl%>0 THEN
19780  REPEATd$=LEFT$(d$,l%-1)+RIGHT$(STR$(TIME),4)+MID$(d$,l%+1)
19790  UNTILFNtestfile(d$)<>1
19800ENDIF
19810PROCprint("",FNmsg2("Fto",B$,A$),"")
19820l%=0:CASEact%OF
19830  WHEN0:SYS"XOS_FSControl",26,s$,d$TO;F%:l%=-((F%AND1)=0)
19840  WHEN1:PROCprint(FNmsg0("Ftail"),"",""):l%=FNtail(s$,d$,n%)
19850  WHEN2:PROCprint(FNmsg0("Fhead"),"",""):l%=FNhead(s$,d$,n%)
19860ENDCASE
19870PROCsetv("$dest",A$)
19880=l%
19890
19900DEFFNappend(A$)
19910LOCALS%,r%,ff%,tf%,f$,t$,F%
19920PROCprint(FNmsg0("Fapp")," ","")
19930f$=FNparam(A$):t$=FNparam(A$)
19940IFt$=""THENPROCprint("",FNmsg0("Fbad"),""):=0
19950PROCprint("",FNmsg2("Fto",f$,t$),"")
19960ff%=FNopenin(f$):IFff%=0THENPROClog(FNmsg1("Fsource",f$)):=0
19970tf%=FNopenup(t$):IFtf%=0THENSYS"XOS_File",11,t$,&FFF,,0,0:tf%=FNopenout(t$)
19980IFtf%>0 ANDEXT#ff%>0THEN
19990  PTR#tf%=EXT#tf%:S%=0:REPEATSYS"XOS_GBPB",4,ff%,tmp%,256TO,,,r%;F%
20000  IFr%<>256AND(F%AND1)=0THENSYS"XOS_GBPB",2,tf%,tmp%,256-r%TO;F%:PROCpoll(slice%)
20010  S%+=256-r%
20020UNTILS%>=EXT#ff%OR(F%AND1)<>0
20030ENDIF
20040PROCcf(ff%):PROCcf(tf%)
20050=1
20060
20070DEFFNtail(s$,d$,l%)
20080LOCALn%,m%,A$
20090ff%=FNopenin(s$):IFff%=0THENPROClog(FNmsg1("Fsource",s$)):=0
20100SYS"XOS_File",11,d$,&FFF,,0,0:tf%=FNopenout(d$)
20110IFtf%>0 ANDEXT#ff%>0THEN
20120  n%=0:REPEAT
20130    A$=GET$#ff%:n%+=1:PROCpoll(slice%*2)
20140  UNTILEOF#ff%:PTR#ff%=0
20150  m%=n%-l%:IFm%<0THENm%=0
20160  n%=0:REPEAT
20170    A$=GET$#ff%:n%+=1:PROCpoll(slice%*2)
20180  UNTILn%>=m%
20190  REPEAT
20200    A$=GET$#ff%:BPUT#tf%,A$:PROCpoll(slice%*2)
20210  UNTILEOF#ff%
20220ENDIF
20230PROCcf(ff%):PROCcf(tf%)
20240=1
20250
20260DEFFNhead(s$,d$,l%)
20270LOCALn%,m%,A$
20280ff%=FNopenin(s$):IFff%=0THENPROClog(FNmsg1("Fsource",s$)):=0
20290SYS"XOS_File",11,d$,&FFF,,0,0:tf%=FNopenout(d$)
20300IFtf%>0 ANDEXT#ff%>0THEN
20310  n%=0:REPEAT
20320    A$=GET$#ff%:BPUT#tf%,A$:n%+=1:PROCpoll(slice%*2)
20330  UNTILEOF#ff%ORn%>=l%
20340ENDIF
20350PROCcf(ff%):PROCcf(tf%)
20360=1
20370
20380DEFFNdelete(A$)
20390LOCALw%,B$
20400w%=0
20410REPEATB$=FNparam(A$)
20420IFLEFT$(B$,3)="/wi"THEN
20430  w%=TRUE
20440  ELSE
20450  IFw%=0THENSYS"XOS_File",6,B$TO;F%ELSESYS"XOS_FSControl",27,B$,,2TO;F%
20460ENDIF
20470UNTILA$=""
20480=-((F%AND1)=0)
20490
20500DEFFNdataopen(A$)
20510LOCALl%,h%,type%,B$
20520B$=FNparam(A$)
20530IFA$=""THENPROChalt(FNmsg0("Edata")):=0
20540PROCprint(FNmsg0("DataOpen")," ","")
20550h%=FNtaskhand(B$)
20560SYS"XOS_File",23,A$ TO l%,,,,,,type%
20570IFh%<>0 ANDl%=1 THEN
20580  return%=1
20590  PROCprint("",A$+" (type &"+STR$~type%+") to "+B$,"")
20600  q%!12=0:q%!16=5:q%!20=0:q%!24=0:q%!28=0:q%!32=0:q%!36=0
20610  q%!40=type%:$(q%+44)=A$+CHR$0:!q%=47+LENA$+1ANDNOT3
20620  SYS"Wimp_SendMessage",18,q%,h%
20630ELSE
20640  return%=0
20650  IFh%=0THENPROCprint("",FNmsg1("Enotask",B$),"")
20660  IFl%<>1THENPROCprint("",FNmsg1("Enofile",A$),"")
20670ENDIF
20680=return%
20690
20700DEFPROClisttasks
20710LOCALl%
20720PROCwarn_txt(FNmsg0("TaskList1"))
20730FORl%=0TOtaskmax%
20740IFtaskh%(l%)>0 THEN
20750  PROCf_list(STR$~taskh%(l%),FNtaskname(taskh%(l%))+" ("+taskn$(l%)+")")
20760  IFtaskex$(l%)>""THENPROCf_list(""," exit: "+taskex$(l%))
20770ENDIF
20780NEXT
20790PROCwarn_txt(FNmsg0("TaskList2"))
20800FORl%=0TOtwmax%
20810IFtwh%(l%)>0 THEN
20820  PROCf_list(STR$~twh%(l%),twcom$(l%)+" ("+twname$(l%)+")")
20830  IFtwexit$(l%)>""THENPROCf_list(""," exit: "+twexit$(l%))
20840ENDIF
20850NEXT
20860ENDPROC
20870
20880DEFFNoscli(A$)
20890LOCALB$
20900REPEATB$=FNparam(A$)
20910  SYS"XWimp_StartTask",B$ TO;F%
20920UNTILA$=""
20930=(F%AND1)
20940
20950DEFFNtask(A$)
20960LOCALa%,w%,h%,ts%,B$,C$
20970wait%=0:a%=0
20980REPEATa%+=1:UNTILtaskh%(a%)=0ORa%=taskmax%
20990IFtaskh%(a%)<>0 THENPROChalt(FNmsg0("Etask2")):ENDPROC
21000taskn$(a%)="task"+STR$a%:taskex$(a%)="":h%=0
21010REPEATB$=FNparam(A$)
21020IFLEFT$(B$,1)="/"THEN
21030  C$=FNvalue(B$)
21040  CASELEFT$(B$,2)OF
21050    WHEN"ki","de":h%=FNkilltask(C$):B$="":A$=""
21060    WHEN"na","id":taskn$(a%)=C$
21070    WHEN"ex":taskex$(a%)=C$
21080    WHEN"wa":wait%=TRUE
21090  ENDCASE
21100ENDIF
21110UNTILA$=""
21120IFB$>""THEN
21130  PROCprint(FNmsg1("TaskStart1",B$),"","")
21140  SYS"XWimp_StartTask",B$ TO;F%
21150  IF(F%AND1)=0 THEN
21160    taskstart%=a%:ts%=0
21170    REPEATts%+=1:PROCpoll(0):UNTILtaskstart%=0ORts%>10:taskstart%=0
21180  ENDIF
21190  IFtaskh%(a%)<>0ANDwait%<>0THEN
21200    REPEAT:PROCpoll(50):UNTILtaskh%(a%)=0
21210  ENDIF
21220  h%=-((F%AND1)=0)
21230ENDIF
21240=h%
21250
21260DEFFNkilltask(A$)
21270LOCALl%,h%
21280IFA$=""THEN
21290  l%=taskmax%:WHILEtaskh%(l%)=0ANDl%>0:l%-=1:ENDWHILE
21300  IF taskh%(l%)>0 THENh%=taskh%(l%)
21310ELSE
21320  FORl%=0TOtaskmax%
21330    IFtaskh%(l%)>0THEN
21340      IFFNtaskname(taskh%(l%))=A$ ORtaskn$(l%)=A$ THENh%=taskh%(l%)
21350    ENDIF
21360  NEXT
21370ENDIF
21380IFh%<>0 THEN
21390  PROClog("Killing task: "+A$)
21400  !q%=256:q%!12=0:q%!16=0:SYS"Wimp_SendMessage",17,q%,h%:PROCpoll(0)
21410ENDIF
21420=-(h%<>0)
21430
21440DEFFNtesttask(A$)
21450=FNtaskhand(A$)
21460
21470DEFFNtaskname(h%)
21480LOCALf$,n%
21490f$="":SYS"XTaskManager_TaskNameFromHandle",h% TOh%;F%
21500IF(F%AND1)=0 THEN
21510  n%=0:WHILEh%?n%>31:f$+=CHR$(h%?n%):n%+=1:ENDWHILE
21520ENDIF
21530=f$
21540
21550DEFFNtaskhand(A$)
21560LOCALA%,r%,l%,h%,B$
21570r%=0:A%=0:A$=FNlower(A$)
21580REPEAT
21590  SYS"TaskManager_EnumerateTasks",A%,buffer%,&100 TO A%,l%
21600  ptr%=0
21610  WHILE(A%>=0 ANDr%=0 AND(ptr%+buffer%)<=l%)
21620    h%=buffer%!ptr%:B$=FNstr(buffer%!(ptr%+4)):ptr%+=16
21630    IFA$=FNlower(B$) THENr%=h%
21640  ENDWHILE
21650UNTIL A%<0 OR r%<>0
21660=r%
21670
21680DEFPROCsorttasks
21690LOCALl%
21700FORl%=0TOtaskmax%-1
21710  IFtaskh%(l%)=0ANDtaskh%(l%+1)<>0 THEN
21720    SWAPtaskh%(l%),taskh%(l%+1)
21730    SWAPtaskn$(l%),taskn$(l%+1)
21740    SWAPtaskex$(l%),taskex$(l%+1)
21750  ENDIF
21760NEXT
21770ENDPROC
21780
21790DEFFNtaskw(A$)
21800LOCALtw%,w%,ts%,n%,F%,out%,B$,C$,S$
21810tw%=0:wait%=0:F%=0:out%=TRUE
21820WHILEtwh%(tw%)<>0ANDtw%<twmax%:tw%+=1:ENDWHILE
21830IFtw%=twmax%THENPROChalt(FNmsg0("Etask2")):=0
21840SYS"Wimp_SlotSize",-1,-1TO,n%:n%=n%DIV1024
21850S$=STR$n%+"k":twname$(tw%)="SDtask"+STR$tw%:twexit$(tw%)="":twk%(tw%)=0
21860REPEATB$=FNparam(A$)
21870IFLEFT$(B$,1)="/"THEN
21880  C$=FNvalue(B$)
21890  CASELEFT$(B$,2)OF
21900    WHEN"si":S$=C$
21910    WHEN"na","id":twname$(tw%)=C$
21920    WHEN"ex":twexit$(tw%)=C$
21930    WHEN"ou":PROCcf(twf%(tw%)):twf%(tw%)=FNopenout(C$)
21940    WHEN"wa":wait%=TRUE
21950    WHEN"ke":twk%(tw%)=TRUE
21960    WHEN"ki":PROCmesstw(C$,&808C4)
21970    WHEN"su":PROCmesstw(C$,&808C6)
21980    WHEN"re":PROCmesstw(C$,&808C7)
21990    WHEN"no":out%=FALSE
22000  ENDCASE
22010  B$=""
22020ENDIF
22030UNTILA$=""
22040IFB$>""THEN
22050  PROCprint(FNmsg1("TaskStart1",twname$(tw%)),"",""):twcom$(tw%)=B$
22060  IFtwf%(tw%)=0THENPROCinit_tww(tw%,out%,twname$(tw%))
22070  SYS"XWimp_StartTask","TaskWindow """+B$+""" -quit -wimpslot "+S$+" -name """+twname$(tw%)+""" -task &"+STR$~task%+" -txt &"+STR$~(task%+tw%) TO;F%
22080  ts%=0:REPEATts%+=1:PROCpoll(0):UNTILtwh%(tw%)<>0ORts%>10
22090  IFtwh%(tw%)=0THENPROCcf(twf%(tw%)):twname$(tw%)="":PROCclosew(tww%(tw%))
22100  IFwait%<>0ANDtwh%(tw%)<>0THEN
22110    REPEAT:PROCpoll(50):UNTILtwh%(tw%)=0
22120  ENDIF
22130ENDIF
22140=ABS((F%AND1)=0)
22150
22160DEFPROCmesstw(A$,m%)
22170A$=FNlower(A$)
22180LOCALtw%:FORtw%=0TOtwmax%
22190IFA$=FNlower(twname$(tw%))ANDtwh%(tw%)>0THEN
22200  !q%=20:q%!4=0:q%!8=0:q%!12=0:q%!16=m%
22210  SYS"Wimp_SendMessage",17,q%,twh%(tw%)
22220  CASEm%OF
22230    WHEN&808C6:$twt%(tw%)=FNmsg1("TaskSusp",twname$(tw%)):PROCdotitle(tww%(tw%))
22240    WHEN&808C7:$twt%(tw%)=FNmsg1("TaskRun",twname$(tw%)):PROCdotitle(tww%(tw%))
22250  ENDCASE
22260  tw%=twmax%
22270ENDIF
22280NEXT
22290ENDPROC
22300
22310DEFFNopen(A$)
22320LOCALf%,r%,err$,B$,C$
22330err$="":f%=0:WHILEfileh%(f%)<>0ANDf%<fmax%:f%+=1:ENDWHILE
22340IFf%=fmax%THENPROChalt(FNmsg0("Efullfile")):=0
22350fileid$(f%)="":filewr%(f%)=1:r%=&4F
22360REPEATB$=FNparam(A$)
22370IFLEFT$(B$,1)="/"THEN
22380  C$=FNvalue(B$)
22390  CASELEFT$(B$,2)OF
22400    WHEN"na","id":fileid$(f%)=C$
22410    WHEN"re":filewr%(f%)=1:r%=&4F
22420    WHEN"wr":filewr%(f%)=2:r%=&8F
22430    WHEN"rw":filewr%(f%)=3:r%=&CF
22440    WHEN"er":err$=C$
22450  ENDCASE
22460  ELSE
22470  filen$(f%)=B$
22480ENDIF
22490UNTILA$=""
22500IFfileid$(f%)>""THENSYS"XOS_Find",r%,filen$(f%)TOfileh%(f%);F%
22510IF(F%AND1)<>0THEN
22520  fileh%(f%)=0:fileid$(f%)=""
22530  IFerr$=""THENPROChalt(FNmsg0("Efilefail")):ELSEPROCaddevent(err$,9)
22540  ELSE
22550  IFfilewr%(f%)=2THENSYS"XOS_File",18,filen$(f%),&FFF
22560ENDIF
22570=fileh%(f%)
22580
22590DEFFNclose(A$)
22600LOCALn%,r%,B$,C$
22610r%=0
22620REPEATB$=FNparam(A$)
22630  IFLEFT$(B$,1)="/"THEN
22640    C$=FNvalue(B$)
22650    CASELEFT$(B$,2)OF
22660      WHEN"na","id":FORn%=0TOfmax%
22670        IFfileid$(n%)=C$THENPROCcf(fileh%(n%)):fileid$(n%)="":n%=fmax%:r%=1
22680        NEXT
22690    ENDCASE
22700  ENDIF
22710UNTILA$=""
22720=r%
22730
22740DEFFNread(A$)
22750LOCALf%,r%,eof$,B$,C$
22760f%=-1:r%=0:eof$=""
22770REPEATB$=FNparam(A$)
22780  IFLEFT$(B$,1)="/"THEN
22790    C$=FNvalue(B$)
22800    CASELEFT$(B$,2)OF
22810      WHEN"na","id":f%=FNfileidtoh(C$)
22820      WHEN"eof":eof$=C$
22830    ENDCASE
22840    ELSE
22850    IFf%>-1ANDf%<fmax%THEN
22860      IF(filewr%(f%)AND1)=0THENPROChalt(FNmsg0("Enoread")):=0
22870      IFNOTEOF#fileh%(f%)THENPROCsetv(B$,GET$#fileh%(f%)):r%=1
22880      IFEOF#fileh%(f%)ANDeof$>""THENPROCaddevent(eof$,9)
22890    ENDIF
22900  ENDIF
22910UNTILA$=""
22920=r%
22930
22940DEFFNwrite(A$)
22950LOCALf%,r%,B$,C$
22960f%=-1:r%=0
22970REPEATB$=FNparam(A$)
22980  IFLEFT$(B$,1)="/"THEN
22990    C$=FNvalue(B$)
23000    CASELEFT$(B$,2)OF
23010      WHEN"na","id":f%=FNfileidtoh(C$)
23020    ENDCASE
23030    ELSE
23040    IFf%>-1ANDf%<fmax%THEN
23050      IF(filewr%(f%)AND2)=0THENPROChalt(FNmsg0("Enowrite")):=0
23060      BPUT#fileh%(f%),B$
23070    ENDIF
23080  ENDIF
23090UNTILA$=""
23100=r%
23110
23120DEFFNptr(A$)
23130LOCALf%,r%,s%,B$,C$
23140f%=-1:s%=-1
23150REPEATB$=FNparam(A$)
23160  IFLEFT$(B$,1)="/"THEN
23170    C$=FNvalue(B$)
23180    CASELEFT$(B$,2)OF
23190      WHEN"na","id":f%=FNfileidtoh(C$)
23200      WHEN"se":IFFNlower(C$)="eof"THENs%=-2:ELSEs%=VALC$
23210    ENDCASE
23220  ENDIF
23230UNTILA$=""
23240r%=0
23250IFf%>-1ANDfileh%(f%)<>0 THEN
23260  IFs%=-2THENPTR#fileh%(f%)=EXT#fileh%(f%):ELSEIFs%>=0THENPTR#fileh%(f%)=s%
23270  r%=PTR#fileh%(f%)
23280ENDIF
23290=r%
23300
23310DEFPROClistfiles
23320PROCf_list("Identifier","Filename")
23330LOCALf%:FORf%=0TOfmax%
23340IFfileh%(f%)>0THENPROCf_list(fileid$(f%),filen$(f%))
23350NEXT
23360ENDPROC
23370
23380DEFFNfileidtoh(A$)
23390LOCALf%:f%=0:WHILEfileid$(f%)<>C$ANDf%<fmax%:f%+=1:ENDWHILE
23400IFf%=fmax%THENPROChalt(FNmsg0("Efileid")):=0
23410=f%
23420
23430DEFPROCmenudef(A$)
23440LOCALn%,l%,m$,n$,a$,b$,B$,C$:n%=-1:m$="":n$=""
23450REPEATB$=FNparam(A$)
23460  IFLEFT$(B$,1)="/"THEN
23470    C$=FNvalue(B$)
23480    CASELEFT$(B$,2)OF
23490      WHEN"co":n%=-2
23500      WHEN"ic":n%=0:REPEATn%+=1:UNTILibarid$(n%)=C$ORibar%(n%)=0ORn%=imax%
23510        IFn%=imax%ORC$=""THENPROClog(FNmsg0("Eicon1")):n%=-5
23520    ENDCASE
23530    ELSE
23540    l%=INSTR(B$,":")
23550    IFl%>0THEN
23560      a$=LEFT$(B$,l%-1):b$=MID$(B$,l%+1)
23570      ELSE
23580      a$=B$:b$=""
23590    ENDIF
23600    IFa$=""ORb$=""THENPROChalt(FNmsg1("Emenu",B$)):A$=""
23610    IFLENm$+LENa$<252ANDLENn$+LENb$<252THEN
23620      m$+=a$+CHR$0:n$+=b$+CHR$0
23630      ELSE
23640      PROChalt(FNmsg0("Ebigmenu")):A$=""
23650    ENDIF
23660  ENDIF
23670UNTILA$=""
23680IFRIGHT$(m$,1)=" "THENm$=LEFT$(m$,LENm$-1)
23690CASEn%OF
23700  WHEN-1:usermenu$(0)=m$:usermenu$(1)=n$
23710  WHEN-2:logmenu$(0)=m$:logmenu$(1)=n$
23720  OTHERWISE:IFn%>=0ANDn%<=imax%THENimenu$(n%,0)=m$:imenu$(n%,1)=n$:
23730ENDCASE
23740ENDPROC
23750
23760DEFFNmakemenu(A$,B$)
23770LOCALu$,a$,b$:umenu%=0:u$=""
23780REPEAT
23790  umenu%+=1
23800  a$=FNgetpar(A$,CHR$0):b$=FNgetpar(B$,CHR$0)
23810  u$+=","+a$:umenu$(umenu%,0)=a$:umenu$(umenu%,1)=b$
23820UNTILA$=""ORumenu%=menumax%:u$=MID$(u$,2)
23830=u$
23840
23850DEFPROClistmenu
23860LOCALC$
23870IFusermenu$(0)>""THENC$=FNmakemenu(usermenu$(0),usermenu$(1)):PROClmenu("user")
23880IFlogmenu$(0)>""THENC$=FNmakemenu(logmenu$(0),logmenu$(1)):PROClmenu("debug")
23890FORZ%=0TOimax%
23900  IFimenu$(Z%,0)>""THENC$=FNmakemenu(imenu$(Z%,0),imenu$(Z%,1)):PROClmenu("icon: "+ibarid$(Z%))
23910NEXT
23920ENDPROC
23930
23940DEFPROClmenu(t$)
23950LOCALl%
23960PROCwarn_txt("Label         Action ("+t$+")")
23970FORl%=1TOumenu%
23980  PROCf_list(umenu$(l%,0),umenu$(l%,1))
23990NEXT
24000ENDPROC
24010
24020DEFPROCanalyse(A$)
24030LOCALB$,C$
24040REPEATB$=FNparam(A$)
24050  CASELEFT$(B$,1)OF
24060    WHEN"/":C$=FNvalue(B$):PROClog("Qualifier /"+B$+" value="+C$)
24070    OTHERWISE:PROClog("Parameter "+B$)
24080  ENDCASE
24090UNTILA$=""
24100ENDPROC
24110
24120DEFFNmulticom(RETURN str$):REM split on ; (ASCII 59)
24130LOCALB$,A%,B%,F%,qc%,bc%,cc%,esc%,l%
24140B$="":B%=0:qc%=0:bc%=0:cc%=0:esc%=0:F%=0:l%=LENstr$
24150IFstr$=""THEN=""
24160REPEAT:B%+=1:A%=ASCMID$(str$,B%,1)
24170IFesc%=92 THEN
24180  B$+=CHR$A%:esc%=0
24190  ELSE
24200  IFA%=34ANDbc%=0 THENqc%+=1
24210  IFqc%MOD2=0 THEN
24220    IFA%=40 THENbc%+=1
24230    IFA%=41 THENbc%-=1
24240    IFA%=123 THENcc%+=1
24250    IFA%=125 THENcc%-=1
24260    IFbc%=0AND(qc%MOD2)=0 THEN
24270      IFA%=59ANDB%>1 THENF%=TRUE
24280    ENDIF
24290  ENDIF
24300  esc%=A%:IFF%=0ANDA%<>92THENB$+=CHR$A%
24310ENDIF
24320UNTILF%<>0ORB%=l%:IFB%=l% THENB%+=1
24330str$=FNtrim(MID$(str$,B%+1))
24340B$=FNsubst(B$)
24350=FNtrim(B$)
24360
24370DEFFNsubst(A$)
24380LOCALl%,f%,c%,a$,l$,B$:l$=""
24390c%=INSTR(A$,"%"):IFc%=0THEN:=A$
24400c%=c%-2:IFc%<0THENc%=0
24410B$=LEFT$(A$,c%)
24420REPEATc%+=1:a$=MID$(A$,c%,1)
24430  IFl$="\"THEN
24440    B$+=a$:l$=""
24450    ELSE
24460    IFa$="%"THEN
24470      FORl%=0TOvmax%
24480        IFvar$(l%,0)>""ANDvar$(l%,0)=MID$(A$,c%+1,LENvar$(l%,0)) THENB$+=var$(l%,1):c%+=LENvar$(l%,0):l%=vmax%+1
24490      NEXT
24500      IFl%=vmax% THENB$+="%"
24510      ELSE
24520      B$+=a$:l$=a$
24530    ENDIF
24540  ENDIF
24550UNTILc%>=LENA$
24560=B$
24570
24580DEFFNparam(RETURN str$):REM split a param or qual from line
24590LOCALB$,A%,B%,F%,qc%,bc%,cc%,esc%,l%
24600B$="":B%=0:qc%=0:bc%=0:cc%=0:esc%=0:F%=0:l%=LENstr$
24610IFstr$=""THEN=""
24620REPEAT:B%+=1:A%=ASCMID$(str$,B%,1)
24630IFesc%=92THEN
24640  B$+=CHR$A%:esc%=0
24650  ELSE
24660  IFA%=34ANDbc%=0 THENqc%+=1
24670  IFqc%MOD2=0 THEN
24680    IFA%=40 THENbc%+=1
24690    IFA%=41 THENbc%-=1
24700    IFA%=123 THENcc%+=1
24710    IFA%=125 THENcc%-=1
24720    IFbc%=0ANDcc%=0 THEN
24730      IF(A%=32ORA%=47)ANDB%>1 THENF%=TRUE
24740    ENDIF
24750  ENDIF
24760  esc%=A%:IFF%=0ANDA%<>92THENB$+=CHR$A%
24770ENDIF
24780UNTILF%<>0ORB%=l%:IFB%=l% THENB%+=1
24790B$=FNtrim(B$)
24800str$=FNcline(FNtrim(MID$(str$,B%)))
24810=FNstq(B$)
24820
24830DEFFNstq(B$)
24840LOCALl%,r%
24850l%=ASCB$:r%=ASCRIGHT$(B$,1):REM strip quotes from around a string
24860IFl%=34ANDr%=34 THENB$=MID$(B$,2,LENB$-2)
24870IFl%=123ANDr%=125 THEN
24880r%=FNcommand(MID$(B$,2,LENB$-2)):B$=FNvv("$status")
24890ENDIF
24900=B$
24910
24920DEFFNupper(A$)
24930LOCALB$,l%,c%:B$=""
24940FORl%=1TOLENA$:c%=ASCMID$(A$,l%,1):IFc%>96ANDc%<123THENc%-=32
24950B$+=CHR$c%:NEXT:=B$
24960
24970DEFFNcline(A$)
24980IFA$="-"THENA$=FNsubst(FNline(stage%)):PROClog("Continuation line:"+A$):stage%+=1
24990=A$
25000
25010DEFFNvalue(RETURN A$):REM split value assignment from qual
25020LOCALB$,A%,B%:WHILELEFT$(A$,1)="/":A$=MID$(A$,2):ENDWHILE
25030A%=INSTR(A$,"="):IFA%=0THENA$=FNlower(A$):=""
25040B$=MID$(A$,A%+1):A$=FNlower(LEFT$(A$,A%-1))
25050=FNstq(B$)
25060
25070DEFPROCexit
25080PROCprint("",FNmsg0("Exit"),"")
25090run%=FALSE:ENDPROC
25100
25110DEFFNdebug(A$)
25120IFA$=""THEN=1
25130=VAL(A$)
25140
25150DEFFNd(A%,B%,C%,D%)
25160=USR(driver)
25170
25180DEFPROCgetenv
25190LOCALA$,B$
25200SYS"OS_GetEnv"TOA$
25210A$=MID$(A$,INSTR(FNlower(A$),"!runi")):quiet%=0:file$="":spar$=""
25220A$=MID$(A$,INSTR(A$," ")+1):REM discard !Runimage part
25230REPEAT
25240  B$=FNparam(A$)
25250  CASELEFT$(B$,2) OF
25260    WHEN"-f":file$=FNparam(A$)
25270    WHEN"-a":file$="SLIPdial:default"
25280    WHEN"-q":quiet%=TRUE
25290    WHEN"-s":sprsz%=VALFNparam(A$):IFsprsz%<&1B00 THENsprsz%=&1B00
25300    OTHERWISE:spar$=spar$+B$+" "
25310  ENDCASE
25320UNTILB$=""
25330ENDPROC
25340
25350DEFFNnextsp(RETURN A$)
25360LOCALB$,a%:a%=INSTR(A$," ")
25370IFa%>0THEN
25380  B$=FNtrim(LEFT$(A$,a%-1)):A$=FNtrim(MID$(A$,a%+1))
25390  ELSE
25400  B$=A$:A$=""
25410ENDIF
25420=B$
25430
25440DEFPROCchain(N$)
25450PROCsetv("$caller",scriptname$):run%=0:PROCinitscript(N$)
25460ENDPROC
25470
25480DEFPROCinitscript(N$)
25490REM must be stopped to load...
25500IFrun%<>0THENPROClog(FNmsg0("Eload1")):ENDPROC
25510PROCcleanup
25520p%=0:IFspar$>""THEN
25530  REPEAT:p%+=1:B$=FNparam(spar$):PROCsetv("p"+STR$p%,B$):UNTILspar$=""
25540ENDIF
25550IFN$>""ANDFNloadscript(N$,0) THEN
25560  PROCprint(FNmsg0("Sload2")," "," "):scriptname$=N$:PROCsetv("$script",N$)
25570  run%=TRUE:stage%=0:PROCunpause
25580ENDIF
25590ENDPROC
25600
25610DEFPROCcleanup
25620driverno%=0:port%=0:speed%=19200:PROCclr_txt
25630retry%=1:delay%=30:debug%=FALSE:count%=0:stop$="":error$=""
25640call_lev%=0:caslev%=0:usermenu$()="":logmenu$()="":umenu%=0:alarm$()="":
25650FORn%=0TOvmax%:IFLEFT$(var$(n%,0),1)<>"$"THENvar$(n%,0)=""
25660NEXT
25670FORn%=0TOimax%:IFibar%(n%)>0THEN!icons%=-2:icons%!4=ibar%(n%):SYS"XWimp_DeleteIcon",,icons%TO;F%
25680NEXT:ibarid$()="":ibar%()=0:imenu$()="":alarm$()="":alarmtime%()=0
25690twh%()=0:twname$()="":twexit$()="":taskh%()=0:taskn$()=""
25700taskex$()="":event$()="":umenu$()=""
25710aline$()="":aline%()=0
25720ENDPROC
25730
25740DEFFNloadscript(N$,lib%)
25750LOCALA$,r%,fh1%
25760SYS"XOS_File",23,N$TOr%:IFr%<>1THEN=0
25770r%=0:fh1%=FNopenin(N$)
25780IFfh1%=0 THENPROClog("File not found: "+N$):=0
25790IFlib%=0THENcount%=0:jtl%=1
25800A$=GET$#fh1%
25810IFINSTR(A$,"slipdial")>0 THEN
25820  REPEATA$=GET$#fh1%
25830    IFLEFT$(A$,1)<>"#"ANDA$>"" THEN
25840      PROCaddline(A$,count%)
25850      IFLEFT$(A$,1)=":"THEN
25860      A$=MID$(A$,2):B$=FNparam(A$)
25870        IFB$="autoexec"THENjt%(0)=count%:jt$(0)=B$ ELSEjt%(jtl%)=count%:jt$(jtl%)=B$:jtl%+=1
25880      ENDIF
25890      count%+=1
25900    ENDIF
25910  UNTILEOF#fh1%
25920  IF count%>2000 THEN
25930    PROCcf(fh1%):PROChalt(FNmsg0("Elong")):=0
25940  ELSE
25950  r%=1
25960  ENDIF
25970ELSE
25980  PROChalt(FNmsg0("Eload2")):=0
25990ENDIF
26000PROCcf(fh1%)
26010=r%
26020
26030DEFPROCaddline(A$,n%)
26040IFn%>highest% THEN
26050  CASEn%OF
26060  WHEN0:DIMbuf0$(199)
26070  WHEN200:DIMbuf1$(199)
26080  WHEN400:DIMbuf2$(199)
26090  WHEN600:DIMbuf3$(199)
26100  WHEN800:DIMbuf4$(199)
26110  WHEN1000:DIMbuf5$(199)
26120  WHEN1200:DIMbuf6$(199)
26130  WHEN1400:DIMbuf7$(199)
26140  WHEN1600:DIMbuf8$(199)
26150  WHEN1800:DIMbuf9$(199)
26160  WHEN2000:DIMbufA$(199)
26170  ENDCASE
26180  highest%=n%
26190ENDIF
26200CASE(n%DIV200)OF
26210WHEN0:buf0$(n%)=A$
26220WHEN1:buf1$(n%-200)=A$
26230WHEN2:buf2$(n%-400)=A$
26240WHEN3:buf3$(n%-600)=A$
26250WHEN4:buf4$(n%-800)=A$
26260WHEN5:buf5$(n%-1000)=A$
26270WHEN6:buf6$(n%-1200)=A$
26280WHEN7:buf7$(n%-1400)=A$
26290WHEN8:buf8$(n%-1600)=A$
26300WHEN9:buf9$(n%-1800)=A$
26310WHEN10:bufA$(n%-2000)=A$
26320ENDCASE
26330ENDPROC
26340
26350DEFFNline(n%)
26360IFn%>highest%THEN=""
26370LOCALA$:CASE(n%DIV200)OF
26380WHEN0:A$=buf0$(n%)
26390WHEN1:A$=buf1$(n%-200)
26400WHEN2:A$=buf2$(n%-400)
26410WHEN3:A$=buf3$(n%-600)
26420WHEN4:A$=buf4$(n%-800)
26430WHEN5:A$=buf5$(n%-1000)
26440WHEN6:A$=buf6$(n%-1200)
26450WHEN7:A$=buf7$(n%-1400)
26460WHEN8:A$=buf8$(n%-1600)
26470WHEN9:A$=buf9$(n%-1800)
26480WHEN10:A$=bufA$(n%-2000)
26490OTHERWISE:A$=""
26500ENDCASE
26510=A$
26520
26530DEFFNlibrary(lib_p$)
26540LOCALr%,ae%,B$
26550B$=FNparam(lib_p$):PROClog(FNmsg1("Slib",B$))
26560ae%=jt%(0)
26570r%=FNloadscript(B$,1)
26580IFae%<>jt%(0)ANDr%<>0THENPROCaddevent("call auto "+lib_p$,0)
26590=r%
26600
26610DEFPROClistscript(A$)
26620LOCALst%,fn%
26630PROCwarn_txt(FNmsg0("Slist"))
26640st%=VALFNparam(A$):fn%=VALA$
26650IFst%<0 THENst%=0
26660IFfn%=0ORfn%>count% THENfn%=count%
26670FORc%=st%TOfn%
26680  A$=STR$c%:IFc%=stage% THENA$="*"+A$
26690  A$=RIGHT$("   "+A$,4)+" "
26700  PROCwarn_txt(A$+FNline(c%))
26710NEXT
26720ENDPROC
26730
26740DEFPROClistjt
26750PROCf_list("Label","Line")
26760LOCALn%:FORn%=0TOjtl%-1:PROCf_list(jt$(n%),STR$jt%(n%)):NEXT
26770ENDPROC
26780
26790DEFFNmodemdrv(A$)
26800LOCALr%:r%=0
26810PROCsetv("$init","ATZQ0V1")
26820PROCsetv("$busy","BUSY")
26830PROCsetv("$conn","CONNECT")
26840PROCsetv("$nocarr","NO CARRIER")
26850PROCsetv("$nodial","NO DIALTONE")
26860IFA$>""THEN
26870  IFINSTR(A$,".")=0 THENA$="SlipDialDrv:"+A$
26880  r%=FNsource(A$)
26890ENDIF
26900=r%
26910
26920DEFFNsource(file$)
26930LOCALr%,fh1%,B$,C$
26940r%=0
26950REPEATB$=FNparam(file$)
26960  fh1%=FNopenin(B$)
26970  IFfh1%=0THEN
26980    PROClog(FNmsg1("Fsource",B$)):=0
26990    ELSE
27000    REPEATC$=GET$#fh1%
27010      IFLEFT$(C$,1)<>"#"ANDC$>"" THEN
27020        r%=FNcommand(C$)
27030      ENDIF
27040    UNTILEOF#fh1%
27050    PROCcf(fh1%)
27060  ENDIF
27070UNTILfile$=""
27080=r%
27090
27100DEFPROChelp(A$)
27110LOCALfh1%,n%,r%,B$,C$:msgc%=FALSE:msg$()=""
27120IFA$=""THEN
27130  PROCaddmessage(FNmsg0("Hannounce"))
27140  n%=0:C$=""
27150  REPEATB$=""
27160    REPEAT
27170      SYS"XOS_GBPB",9,sdlang$+".help",tmp%,1,n%,255,"*"TO,,,r%,n%
27180      C$=FNstr(tmp%):B$+=C$+STRING$(15-LENC$," ")
27190    UNTILn%=-1ORLENB$>60
27200    PROCaddmessage(B$)
27210  UNTILn%=-1:PROCaddmessage("")
27220  ELSE
27230  fh1%=FNopenin(sdlang$+".Help."+A$+"*")
27240  IFfh1%>0THEN
27250    PROCaddmessage("Help on "+A$+":")
27260    n%=0
27270    REPEAT
27280      B$=GET$#fh1%:IFB$>""THENn%+=1:PROCaddmessage(B$)
27290    UNTILEOF#fh1%ORn%>msgmax%
27300    PROCaddmessage(""):PROCcf(fh1%)
27310    ELSE
27320    PROChelp("")
27330  ENDIF
27340ENDIF
27350ENDPROC
27360
27370DEFPROCquit(mess$)
27380PROCprint(FNmsg0("Quit2"),mess$,"")
27390PROCfinish
27400END
27410ENDPROC
27420
27430DEFPROCloadconfig
27440fh1%=FNopenin(sdres$+".!Config"):IFfh1%=0 THENERROR0,"No config!":ENDPROC
27450PROCsetinv(config%,1,BGET#fh1%)
27460PROCsetinv(config%,2,BGET#fh1%)
27470PROCsetinv(config%,3,BGET#fh1%)
27480PROCupd_icon(config%,4,GET$#fh1%)
27490IFNOTEOF#fh1%THENPROCupd_icon(config%,7,GET$#fh1%)
27500IFNOTEOF#fh1%THENPROCupd_icon(config%,8,GET$#fh1%)
27510IFNOTEOF#fh1%THENPROCupd_icon(config%,12,GET$#fh1%)
27520IFNOTEOF#fh1%THENPROCsetinv(config%,13,BGET#fh1%)
27530IFNOTEOF#fh1%THENPROCsetinv(config%,14,BGET#fh1%)
27540PROCcf(fh1%)
27550txty%=VALFNic_str(config%,7):IFtxty%<24 THENtxty%=24
27560txtx%=VALFNic_str(config%,8)
27570autowinpos%=FNrdinv(config%,13)
27580  IFtxtx%<40 THENtxtx%=40ELSEIFtxtx%>240THENtxtx%=240
27590twwmax%=VALFNic_str(config%,12)
27600  IFtwwmax%<10 THENtwwmax%=10ELSEIFtwwmax%>100THENtwwmax%=100
27610SYS"OS_Byte",121,(2EOR&80)TO,A%
27620IFfile$=""ANDFNrdinv(config%,3)=0 ANDA%<>&FF THENfile$=FNic_str(config%,4)
27630IFquiet%=0ANDFNrdinv(config%,1)=0 THENPROCcfront(status%,0,-200)
27640ENDPROC
27650
27660DEFPROCsaveconfig
27670fh1%=FNopenout(sdres$+".!Config"):IFfh1%=0 THENENDPROC
27680BPUT#fh1%,FNrdinv(config%,1)
27690BPUT#fh1%,FNrdinv(config%,2)
27700BPUT#fh1%,FNrdinv(config%,3)
27710BPUT#fh1%,FNic_str(config%,4)
27720BPUT#fh1%,FNic_str(config%,7)
27730BPUT#fh1%,FNic_str(config%,8)
27740BPUT#fh1%,FNic_str(config%,12)
27750BPUT#fh1%,FNrdinv(config%,13):autowinpos%=FNrdinv(config%,13)
27760BPUT#fh1%,FNrdinv(config%,14)
27770PROCcf(fh1%)
27780IFFNrdinv(config%,14)=0 THEN
27790  fh1%=FNopenout(sdres$+".!windows"):IFfh1%=0 THENENDPROC
27800  !q%=status%:SYS"Wimp_GetWindowState",,q%
27810  BPUT#fh1%,STR$(q%!4)
27820  BPUT#fh1%,STR$(q%!8)
27830  PROCcf(fh1%)
27840ENDIF
27850ENDPROC
27860
27870DEFFNlomem(A%)
27880IFHIMEM-END<(A%+&2000) THEN=TRUE
27890=FALSE
27900
27910DEFFNnewsrate(A$)
27920LOCALf$,tim,cps%:cps%=0
27930f$=FNparam(A$):IFf$>""THEN
27940  tim=FNfile_age("<Mail$Dir>.folder."+f$+"News")-FNfile_age("<Mail$Dir>.folder."+f$+"NG"):PROClog("Time "+STR$tim)
27950  IFtim>0THENcps%=100*FNfile_size("<Mail$Dir>.folder."+f$+"News")/tim
27960ENDIF
27970=cps%
27980
27990DEFFNfile_age(f$)
28000LOCALfound%,load%,exec%
28010SYS"XOS_File",17,f$TOfound%,,load%,exec%;F%
28020IFfound%=0 OR(F%AND1)<>0 THENPROClog(FNmsg1("Enofile",f$)):=0
28030=(load%AND&FF)*2^32+exec%
28040
28050DEFFNfile_size(f$)
28060LOCALsize%,found%
28070SYS"XOS_File",17,f$TOfound%,,,,size%;F%
28080IFfound%=0 OR(F%AND1)<>0 THENPROClog(FNmsg1("Enofile",f$)):=0
28090=size%
28100
28110DEFFNtrim(A$)
28120REM strips leading & trailing spaces
28130LOCALB$:IFA$>""THENCALLtrimstr%,A$,B$
28140=B$
28150
28160DEFFNlower(A$)
28170IFA$>""THENCALLmklcase%,A$
28180=A$
28190
28200DEFFNstr(a%)
28210LOCALdummy%,B$
28220CALLgetline%,dummy%,a%,B$
28230=B$
28240
28250DEFPROCloadcode
28260LOCALo%,l%,F%
28270SYS"XOS_File",17,sdres$+".code"TOo%,,,,l%;F%
28280IFo%=1ANDl%>0AND(F%AND1)=0THEN
28290  DIMmcode% l%
28300  cpylcase%=mcode%+4:getpath%=mcode%+8:getline%=mcode%+12
28310  getlinez%=mcode%+16:getstr%=mcode%+20:mklcase%=mcode%+24
28320  trimstr%=mcode%+28:chkdelart%=mcode%+32:headerno%=mcode%+36
28330  smatch%=mcode%+40
28340  SYS"XOS_File",16,sdres$+".code",mcode%,0TO;F%
28350  IF(F%AND1)THENERROR0,"Help! I can't find my Code file!"
28360  ELSE
28370  ERROR0,"Help! I can't find my Code file!"
28380ENDIF
28390ENDPROC
28400
28410DEFFNclaimmem(RETURN var%,size%,A$)
28420LOCALF%,ret%
28430IFosver%<&A5 THEN
28440  SYS"XOS_Module",6,,,size%TO,,var%;F%
28450  IF(F%AND1)THENvar%=0
28460  ret%=var%
28470  ELSE
28480  SYS&20066,0,-1,size%,-1,0,-1,0,0,Task$+"_"+A$TO,ret%,,var%;F%
28490  IF(F%AND1)THENvar%=0:ret%=0
28500ENDIF
28510=ret%
28520
28530DEFPROCreleasemem(RETURN var%)
28540LOCALF%
28550IFvar%>0THEN
28560  IFosver%<&A5 THEN
28570  SYS"XOS_Module",7,,var%TO;F%:var%=0
28580  SYS"XOS_ChangeDynamicArea",1,(-16*1024*1024)
28590  ELSE
28600  SYS&20066,1,var%TO;F%:var%=0
28610  ENDIF
28620ENDIF
28630ENDPROC
28640
28650DEFPROCtidydynareas
28660LOCALA%,N%,P%
28670IFosver%>&A4 THEN
28680  SYS&66,3,-1TO,A%
28690  WHILEA%<>-1
28700    SYS&66,2,A%TO,,,,,,,,P%
28710    SYS&66,3,A%TO,N%
28720    IFLEFT$(FNstr(P%),1+LENTask$)=Task$+"_"THENSYS&66,1,A%
28730    A%=N%
28740  ENDWHILE
28750ENDIF
28760ENDPROC
28770
28780DEFFNgetpar(RETURN A$,s$)
28790LOCALB$,l%
28800l%=INSTR(A$,s$)
28810IFl%>0THEN
28820  B$=LEFT$(A$,l%-1):A$=MID$(A$,l%+1)
28830  ELSE
28840  B$=A$:A$=""
28850ENDIF
28860=B$
28870
28880DEFPROCstartmsgtrans
28890SYS"XMessageTrans_FileInfo",,sdlang$+".messages"TO,,buf%;F%
28900IF(F%AND1)THENERROR0,"Couldn't load Messages file!"
28910DIMmsgdesc%16,msgbuf% buf%
28920SYS"MessageTrans_OpenFile",msgdesc%,sdlang$+".messages",msgbuf%
28930ENDPROC
28940
28950DEFPROCendmsgtrans
28960IFmsgdesc%>0THENSYS"MessageTrans_CloseFile",msgdesc%
28970ENDPROC
28980
28990DEFFNmsg0(t$)
29000LOCALs%
29010SYS"MessageTrans_Lookup",msgdesc%,t$TO,,s%
29020=FNstr(s%)
29030DEFFNmsg1(t$,a$)
29040LOCALs%
29050SYS"MessageTrans_Lookup",msgdesc%,t$,tmp%,255,a$TO,,s%
29060=FNstr(s%)
29070DEFFNmsg2(t$,a$,b$)
29080LOCALs%
29090SYS"MessageTrans_Lookup",msgdesc%,t$,tmp%,255,a$,b$TO,,s%
29100=FNstr(s%)
29110DEFFNmsg3(t$,a$,b$,c$)
29120LOCALs%
29130SYS"MessageTrans_Lookup",msgdesc%,t$,tmp%,255,a$,b$,c$TO,,s%
29140=FNstr(s%)

� >!Runimage
� �:�" at ";�:�

�=�+&2000
(	�init
2
�loadcode
<�startmsgtrans
F�getenv
P
�initwimp
Z��errorbox:�
d�loadconfig
n'ȕ�lomem(txtx%�2*txty%):�=�+&2000:�
x
�init_txt
�"ș"XOS_File",17,file$�A%,,,,S%
�ȕ�lomem(S%):�=�+&2000:�
��initscript(file$)
�A%=�modemdrv("")
��
�  stage%=0
�  �
�8    �lomem(0)��warn_txt(�msg0("MoreMem")):�=�+&2000
�=    �testevent �A$=�getevent �A$=�line(stage%):stage%+=1
�    return%=�command(A$)
�  �stage%>=count% �run%=�
�8  run%=�:�stage%>=count%��print("",�msg0("Idle"),"")
�
  �paused
�0
�

" � set up universal variables
,
��init
6� tmp% 256,driver 4096
@"ș"OS_Byte",129,0,&FF �,osver%
Jsprsz%=&1B00
T
redial%=�
^Gfileno%=1:total%=0:pause%=�:stop%=�:run%=�:taskstart%=0:highest%=-1
hKdevice%=�:oldline%=0:debug%=�:errC%=0:fh1%=0:fh2%=0:online$="":stage%=0
r6submax%=20:�call_ret%(submax%),call_lock%(submax%)
|Dcasmax%=10:�case$(casmax%),casmatch% casmax%,aline$(3),aline%(3)
�<menumax%=30:�umenu$(menumax%,1),usermenu$(1),logmenu$(1)
�8jtmax%=50:�jt%(jtmax%),jt$(jtmax%):jtl%=0:return$=""
�@vmax%=150:�var$(vmax%,1),s4$(3),tget$(3),ihist$(10):ihist%=0
�Calmax%=10:�alarm$(almax%,1),alarmtime%(almax%),alarmid$(almax%)
�7imax%=8:�ifile$(imax%),ibar$(imax%),imenu$(imax%,1)
� �ibarid$(imax%),ibar%(imax%)
�Ctaskmax%=8:�taskex$(taskmax%),taskn$(taskmax%),taskh%(taskmax%)
�<twmax%=8:�twexit$(twmax%),twname$(twmax%),twcom$(twmax%)
�:�twh%(twmax%),twf%(twmax%),tdata$(twmax%),tww%(twmax%)
�8�twy%(twmax%),two%(twmax%),twk%(twmax%),twt%(twmax%)
�;tget%=-1:tww%()=0:two%()=0:twwmax%=29:txtx%=80:txty%=24
�Gmaxev%=10:�event$(maxev%),event%(maxev%),evtype%(maxev%):event%()=�
�Gfmax%=10:�fileh%(fmax%),fileid$(fmax%),filewr%(fmax%),filen$(fmax%)
Hmsgmax%=25:msg_cs$="":msg_ce$="":msg_cm%=0:msg_cs%=0:msgc%=�:msgt%=0
"sddir$=�varval("Slipdial$dir")
(sdres$=�varval("Slipdial$resources")
&9sdlang$=sdres$+".UK":ch$="":autowinpos%=1:num$="none"
0�
:
D'� set up wimp and related variables
N��initwimp
X3� sprites% sprsz%:!sprites%=sprsz%:sprites%!8=0
b"È™ "OS_SpriteOp",&109,sprites%
lB�mergesprites(sdres$+".Sprites")=0��0,"Couldn't load sprites"
v/� taskid%4:$taskid%="TASK":Task$="SLIPdial"
�� msglist%4:!msglist%=0
�Eș "Wimp_Initialise",310,!taskid%,Task$,msglist% � version%,task%
�.�version%<310 ��1,"Window Manager too old"
�stwx%=0:stwy%=0
�$fh1%=�openin(sdres$+".!windows")
��fh1%>0�
�!  stwx%=��#fh1%:stwy%=��#fh1%
��
�
�cf(fh1%)
�5� q% &400,menudata% &200,icons% &100,buffer% &100
�0ș "Wimp_OpenTemplate",,sdlang$+".Templates"
�info%=�loadtemp("Info")
�status%=�loadtemp("Status")
txt%=�loadtemp("txtwin")
config%=�loadtemp("config")
mess%=�loadtemp("message")
 input%=�loadtemp("input")
*yesno%=�loadtemp("yesno")
4È™ "Wimp_CloseTemplate"
>C�seticonstring(info%,4,"0.33 (17-Feb-1995)"):�setv("$ver","33")
H&sdic$="nodev":icon0%=�ic(sdic$,-1)
R'�icon0%=0��0,"Couldn't create icon"
\'M%=%10000001100000110000:slice%=-20
f6ș"OS_ReadMonotonicTime"�lastpoll%:time%=lastpoll%
p?checkalarm%=time%:checkline%=time%:�checkicon:�usericon("")
z�
�
�ݤloadtemp(A$)
��b%,i%,s%,scr%,icon%,h%
�0ș"Wimp_LoadTemplate",,-1,0,0,-1,A$,0�,b%,i%
�*s%=�claimmem(scr%,b%,"TBUF"):�icon% i%
�6ș"Wimp_LoadTemplate",,scr%,icon%,icon%+i%,-1,A$,0
�!�A$="message"�msgttl%=scr%!72
�+�A$="Status"��setwpos(scr%,stwx%,stwy%)
�Dscr%!64=sprites%:ș"Wimp_CreateWindow",,scr% �h%:�releasemem(s%)
�=h%
�
���setwpos(q%,x%,y%)
�
�w%,h%

�x%>0�
w%=q%!8-!q%:h%=q%!12-q%!4
!q%=x%:q%!8=x%+w%
$q%!4=y%:q%!12=y%+h%
.�
8�
B
L1� merge sprite file into slipdial sprite area
Vݤmergesprites(A$)
`�s%,f%,n%,r%:r%=0
jș"XOS_File",17,A$�A%,,,,S%
t.ș"XOS_SpriteOp",&108,sprites%�,,s%,n%,,f%
~�A%=1�S%<=(s%-f%) �
�0ș"XOS_SpriteOp",&10B+(n%=0),sprites%,A$�;F%
��(F%�1)=0 �r%=s%-f%-S%
��
�=r%
�
�ݤsfree
�3�s%,f%:ș"XOS_SpriteOp",&108,sprites%�,,s%,,,f%
�
=s%-f%
�
�M� places an icon on the iconbar, n%<0 is main icon, others are user icons
�ݤic(A$,n%)
��Z%,next%,w%,h%
Aș"OS_SpriteOp",&100+40,sprites%,A$�,,,w%,h%:�w%>200�h%>70�=0


�n%<0�
  !icons%=-1:next%=0
7  � dimension memory in known location & store name
(4  �ibarname%12:$ibarname%=A$:icons%!24=ibarname%
2�
<  next%=icon0%
F,  �Z%=0�n%:�ibar%(Z%)>0 �next%=ibar%(Z%)
P  �:!icons%=-3
Z*  � dimension some memory & store name
d#  �icons%!24 12:$(icons%!24)=A$
n�
xFicons%!4=0:icons%!8=0:icons%!12=w%*2:icons%!16=100:icons%!20=&3102
�#icons%!28=sprites%:icons%!32=11
�)ș "Wimp_CreateIcon",next%,icons%�ic%
�=ic%
�
�� update the main icon
���checkicon
�
�name$
��device%=� �
�  name$="nodev"
�  �
�  � (�d(9,port%,0,0)�8)=0 �
�    name$="dev"
�	    �
9    �sdic$="online1" �name$="online2"�name$="online1"
  �
�
"checkline%=time%
,�ibarname%>0�name$<>sdic$ �
6  �call_log(sdic$,name$)
@  sdic$=name$
J5  ș "XOS_SpriteOp",&118,sprites%,name$�,,src%;F%
T  �(F%�1)=0�
^:    $ibarname%=name$:!q%=-1:q%!4=icon0%:q%!8=0:q%!12=0
h!    È™"Wimp_SetIconState",,q%
r  �
|�
��
�
�3� update call log on online-offline transitions
���call_log(A$,B$)
�
ȎB$ �
�X  �"nodev":�A$="online1"�A$="online2"�A$="dev"��wclog(�$+": offline after "+online$)
�W  �"online1":�A$<>"online2"��wclog(�$+": online to "+num$):ontime%=time%:��upd_time
�  �"online2":�upd_time
��
��
�
�(� update timer icon in status window
���upd_time
�T%
T%=�(time%-ontime%)�100
"online$=�"0"+�(T%�3600),2)+":"
&&online$+=�"0"+�((T%�60)�60),2)+":"
0online$+=�"0"+�(T%�60),2)
: �upd_icon(status%,8,online$)
D�
N
X!� write a line to the logfile
b��wclog(A$)
l#fh1%=�openup(sddir$+".logfile")
v.�fh1%<>0��#fh1%=�#fh1%:�#fh1%,A$:�cf(fh1%)
��
�
���poll(idle%)
�8� idle%=pollidle time (+) or time before polling (-)
�#ș"OS_ReadMonotonicTime" �time%
�'�idle%>=0 � lastpoll%-time%<idle% �
�  lastpoll%=time%
�  �
�1    ș "Wimp_PollIdle",M%,q%,time%+idle% � R%
�H    �device% � J%=�d(19,port%,0,0):� line to fix II dual serial card
�    Ȏ R% �
�    � 1 :�redraww(!q%)
�@    � 2 :�openw(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
    � 3 :�closew(!q%)
.    � 6 :�click(!q%,q%!4,q%!8,q%!12,q%!16)
&    � 8 :�keypress(!q%,q%!4,q%!24)
 (    � 9 :�getpointer:�menuselect(q%)
*    � 17,18:�receive(q%)
4	    �
>  �R%=0
H;  �time%>checkline%+100 ��checkicon:�linealarm:�settime
R1  �time%>checkalarm%+500 ��timealarm:�setdate
\1  �msg_cs%>0�time%>msgt%+500 ��addmessage("")
f�
p�
z
���keypress(w%,i%,k%)
��l%
��w%=txt%�i%=inic%�
�  Ȏk%�
�1    �13:�l%=10�1�-1:ihist$(l%)=ihist$(l%-1):�
�C      ihist$(0)=�ic_str(w%,i%):�addevent(ihist$(0),0):ihist%=-1
�D      �upd_icon(w%,i%,""):ș"Wimp_SetCaretPosition",w%,i%,,,-1,0
�-    �&18F:�ihist%<10�ihist$(ihist%+1)>""�
�3      ihist%+=1:�upd_icon(w%,i%,ihist$(ihist%))
�>      ș"Wimp_SetCaretPosition",w%,i%,,,-1,�ihist$(ihist%)
�      �
�    �&18E:�ihist%>0�
�3      ihist%-=1:�upd_icon(w%,i%,ihist$(ihist%))
	>      ș"Wimp_SetCaretPosition",w%,i%,,,-1,�ihist$(ihist%)
	      �
	N      ihist%=-1:�upd_icon(w%,i%,""):È™"Wimp_SetCaretPosition",w%,i%,,,-1,0
	$      �
	.#    :È™"Wimp_ProcessKey",q%!24
	8  �
	B�
	L�w%=input%�i%=1�k%=13�
	V/input$=�ic_str(w%,i%):�input$=""�input$=" "
	`�
	jÈ™"Wimp_ProcessKey",q%!24
	t�
	~�
	��
	�
	���receive(q%)
	��Z%,h%,i%,t%,f$,tw%,a%,A$
	�Ȏ q%!16 �
	�� 0:�finish:�
	�3� 1:q%!16=2:q%!36=-1:$(q%+44)="<Wimp$Scrap>"+�0
	�0  q%!12=q%!8:ș"Wimp_SendMessage",17,q%,q%!4
	�1� 3:i%=q%!24:h%=q%!20:t%=q%!40:f$=�str(q%+44)
	�-  q%!16=4:ș"Wimp_SendMessage",17,q%,q%!4
	�  Ȏh%�
	�    �config%:�t%=&FFF �
(        �i%=4�upd_icon(config%,4,f$)


        �
        �initscript(f$)
      �
(*    �status%:�t%=&FFF ��initscript(f$)
2$    �-1,-2:�t%=&FFF �i%=icon0% �
<      �initscript(f$)
F      �
P      �Z%=0�imax%
Z8        �i%=ibar%(Z%)�ifile$(Z%)>""��ifile(Z%,f$,t%)
d      �
n      �
x  �
�!  Z%=�delfile("<Wimp$Scrap>")
�-� 11:�device% �q%!4<>task% ��refusedevice
�� 12:�q%!4<>task% �
�2  �print("Device claim failed",�str(q%+28),"")
�  �front(status%):device%=�
�  �
�$� &502:A$=�sendhelp(q%!32,q%!36)
�
  �A$>""�
�?    q%!16=&503:q%!12=q%!8:$(q%+20)=A$:q%?(20+�A$)=0:!q%=256
�'    ș"Wimp_SendMessage",17,q%,q%!4
�  �
�� &400C2:� taskstart%<>0 �
�  �taskh%(taskstart%)=0 �
L    taskh%(taskstart%)=q%!4:�log(�msg1("TaskStart2",taskn$(taskstart%)))
  �
  taskstart%=0
"  �
,� &400C3:� TaskClosedown
6  �l%=0�taskmax%
@    �taskh%(l%)=q%!4 �
J?      taskh%(l%)=0:�taskex$(l%)>""��addevent(taskex$(l%),3)
T	    �
^  �
h  �sorttasks
r � &808C1:� TaskWindow_Output
|  tw%=0:twlen%=q%!20-1
�+  ȕtwh%(tw%)<>q%!4�tw%<twmax%:tw%+=1:�
�  �twf%(tw%)=0 �
�+    �Z%=0�twlen%�4:tmp%!Z%=q%!(24+Z%):�
�!    �tw_data(tw%,tmp%,twlen%)
�	    �
�-    �Z%=0�twlen%:�#twf%(tw%),q%!(24+Z%):�
�  �
�� &808C2:� TaskWindow_Ego
�*  �q%!20>=task%�q%!20<=(task%+twmax%)�
�J    twh%(q%!20-task%)=q%!4:�log("Task started: "+twname$(q%!20-task%))
�  �
�.� &808C3:� TaskWindow_Morio, task finished
�1  tw%=0:ȕq%!4<>twh%(tw%)�tw%<twmax%:tw%+=1:�
  �q%!4=twh%(tw%)�
+    �log(�msg1("TaskEnd",twname$(tw%)))
    �twk%(tw%)=0 �
&(      twh%(tw%)=0:�closew(tww%(tw%))
0      �
:?      twh%(tw%)=-1:$twt%(tw%)=twname$(tw%)+�msg0("TaskFin")
D      �dotitle(tww%(tw%))
N	    �
X2    twname$(tw%)="":�cf(twf%(tw%)):twf%(tw%)=0
b2    �twexit$(tw%)>""��addevent(twexit$(tw%),4)
l  �
v�
��
�
�ݤsendhelp(w%,i%)
�
�A$,l%
�A$="Hgeneric":Ȏw%�
�  �txt%:A$="Htext"
�!  �status%:A$="Hstatus":Ȏi%�
�    �1,2:A$="Haction"
�    �3:A$="Hip"
�    �4:A$="Hstop"
�    �5:A$="Hpause"
�    �6,7:A$="Hmenus"
�    �8:A$="Htime"

    �10:A$="Hmodem"

  �

+  �mess%:A$="Hmess":�pause%�A$="Hmess2"

   �input%:A$="Henter"

*  �yesno%:A$="Hyesno"

4  �info%:A$="Hinfo"

>  �config%:A$="Hconfig"

H,  :�l%=0�twmax%:�w%=tww%(l%)�A$="Htask"

R	    �

\�

f=�msg0(A$)

p

z��finish

��l%

��device%<>0�

�  J%=�d(8,port%,0,0)

�  J%=�d(18,port%,0,0)

��

��openlog("")

��cf(fh1%):�cf(fh2%)

� �l%=0�twmax%:�cf(twf%(l%)):�

�!�l%=0�fmax%:�cf(fileh%(l%)):�

��endmsgtrans

��

�

���cf(� C%)
!�C%<>0�ș"XOS_Find",0,C%:C%=0
�

$��getpointer
.$È™"Wimp_GetPointerInfo",,buffer%
8>mx%=!buffer%:my%=buffer%!4:b%=buffer%!8:handle%=buffer%!12
B#icon%=buffer%!16:ob%=buffer%!20
L�
V
`��click(mx%,my%,b%,w%,i%)
j�Z%
t
Ȏb% �
~� 2
�  Ȏw% �
�    � -2:�i%=icon0%�
�        �defmenu(�)
�      �
�        �Z%=0�imax%
�k          �i%=ibar%(Z%)�imenu$(Z%,0)>""��domenu(102,�makemenu(imenu$(Z%,0),imenu$(Z%,1)),ibarid$(Z%),�)
�
        �
�      �
�*    � txt%:ș"OS_Byte",121,(1�&80)�,Z%
�      �Z%=0�
�`        �domenu(101,"Alarm list,Menu list,Var list,Task list,|Script list,Quit","Control",0)
�
        �
H        �domenu(101,"DbgLev 0,DbgLev 1,DbgLev 2,DbgLev 3","Debug",0)

      �
    � status%
      Ȏi% �
(_        �7:�usermenu$(0)>""��domenu(102,�makemenu(usermenu$(0),usermenu$(1)),"User menu",�)
2        :�defmenu(0)
<      �
F    :�defmenu(0)
P  �
Z	�1,4:
d
  Ȏ w% �
n    � status%:
x      Ȏi% �
�        �5:
�        �pause% �
�+          �print("",�msg0("PauseP"),"")
�+          pause%=�:�addevent("pause",0)
�          �
�          �unpause
�
        �
�        �4:
�8          stop%=�:�print("",�msg0("StopP"),""):�stop
�_        �6:�usermenu$(0)>""��domenu(102,�makemenu(usermenu$(0),usermenu$(1)),"User menu",�)
�V        �11:�ic_str(status%,i%)="Redial"�redial%=�:�print("",�msg0("RedialP"),"")
�      �
�    � config%:
.      � i%=6 ��saveconfig:�closew(config%)
    � yesno%:
      � i%=0 �yesnoans%=2
"      � i%=1 �yesnoans%=1
,    � txt%:
6D      ș"Wimp_SetCaretPosition",w%,inic%,,,-1,��ic_str(w%,inic%)
@
    � -2:
J      �i%=icon0%�
T.        �b%=4��front(status%)��front(txt%)
^      �
h        �Z%=0�imax%
r?          �i%=ibar%(Z%)�ibar$(Z%)>""��addevent(ibar$(Z%),6)
|
        �
�      �
�  �
��
��
�
���defmenu(i%)
�B�domenu(101,">Info,Choices...,|Control...,Quit","SLIPdial",i%)
��
�
���halt(mess$)
�5call_lev%=0:call_lock%()=0:event$()="":event%()=�
�.�error$>""��addevent(error$,0):error$="":�
�9�message(""""+�msg2("Escript",�stage%,mess$)+""""):�7
 �print("",�msg0("StopE"),"")
stage%=0:run%=�:�paused
�
&
0��input(A$)
:�v$,p$:p$="Input:"
D�B$=�param(A$):input$=""
N�B$,1)="/"�
XC$=�value(B$):Ȏ�B$,2)�
b  �"pr":p$=�C$,40)
l  �
v�
�9  v$=B$:�upd_icon(input%,1,""):�upd_icon(input%,0,p$)
�>  �front(input%):ș"Wimp_SetCaretPosition",input%,1,,,-1,0
�'  ��poll(50):�input$>"":p$="Input:"
�  �input$=" "�input$=""
�  �setv(v$,input$)
��
�
�A$=""
��closew(input%)
��
�
���message(A$)
�
�w%,n%,t$
�t$=�msg0("Message"):msgc%=�

w%=0:n%=0
�B$=�param(A$)
�B$,1)="/"�
 C$=�value(B$):Ȏ�B$,2)�
*  �"cl":�closew(mess%)
4  �"wa":w%=�
>  �"ti":t$=C$
H!  �"ca":msg_cs$=C$:msg_ce$=""
RA        msg_cm%=msgmax%:msg_cs%=1:msgt%=time%:�n%=0�msg$()=""
\  �"ce":msgc%=�
f  �"en":msg_ce$=C$
p  �"ma":msg_cm%=�C$
z  �"ad":n%+=1
�  �"na","id":
�  �
��
�  �B$>""�n%=0�msg$()=""
�"  �B$>""��addmessage(B$):n%+=1
��
��B$=""�n%>msgmax%
�$msgttl%=t$:�dotitle(mess%)
�
�n%>0�
��addmessage("")
��
��w%��addevent("pause",0)
��

��addmessage(A$)
�l%,w%,t$:l%=-1:w%=0
$%�l%+=1:t$=msg$(l%):�t$>w%�w%=�t$
.!�t$=""�l%=msgmax%:msgt%=time%
8�A$>""�
B5  �l%=msgmax%��l%=1�msgmax%:msg$(l%-1)=msg$(l%):�
L  msg$(l%)=A$
V  �
`  �l%>0��openmess(l%,w%)
j�
t�
~
���openmess(y%,x%)
��o%
�6!tmp%=0:tmp%!4=-y%*32-32:tmp%!8=x%*16+10:tmp%!12=0
�!ș"Wimp_SetExtent",mess%,tmp%
�<!q%=mess%:ș"Wimp_GetWindowState",,q%:o%=(q%!32)�(1<<16)
�+q%!12=q%!4+x%*16+10:q%!16=q%!8+y%*32+32
�4q%!20=0:q%!24=0:q%!28=-1:ș"Wimp_OpenWindow",,q%
�-�o%=0��cfront(mess%,0,150) ��front(mess%)
�:!q%=mess%:ș"Wimp_GetWindowState",,q%:msgw%=q%!12-q%!4
�$�update_msg(0,-y%*32-32,msgw%,0)
��
�
��msgfilt(A$)

)�msg_cs%=1 ��A$,msg_cs$)>0 �msg_cs%=2
�msg_cs%=2 �
   msg_cm%-=1:�addmessage(A$)
(G  �msg_cm%<1�(msg_ce$>""��A$,msg_ce$)>0) �msg_cs%=0:�addmessage("")
2�
<�
F
P��paused
Z1pause%=�:�upd_icon(status%,5,�msg0("Resume"))
d!�print("",�msg0("Paused"),"")
n��poll(30):�pause%=�
x�
�
�
��unpause
�?pause%=�:stop%=�:run%=�:�upd_icon(status%,5,�msg0("Pause"))
��print(""," ","")
��
�
�
��stop
�?call_lev%=0:call_lock%()=0:event$()="":event%()=�:msg_cs%=0
�[�stage%>0�stop$<>""��addevent(stop$,0):stop$="":��addevent("pause",0):stage%=0:�release
��
�
�)��domenu(handle%,menu$,menutitle$,I%)
�!�i%,item$,menuItems%,menuptr%
�menu$=""��
menuItems% = 0
menuhandle%=handle%
"menuptr%=menudata%
,i%=0
6menuptr%!20=44
@$menuptr%=menutitle$
J<menuptr%?12=7:menuptr%?13=2:menuptr%?14=&7:menuptr%?15=0
T$menuptr%!16=230-24:menuptr%!24=0
^menuptr%+=28
h�
r=  item$=�par(menu$,",",i%):�menuitem(item$):menuItems%+=1
|
�item$=""
�#menuptr%!-24=(menuptr%!-24)�&80
�,�I%<>0 �Y%=120+(menuItems%-1)*44 �Y%=my%
�-ș "Wimp_CreateMenu",,menudata%,mx%-64,Y%
��
�
���menuitem(text$)
�
�left$
�� text$>""�
�  !menuptr%=0
�0  �text$,1)="|"�text$=�text$,2):!menuptr%=2
�%  left$ = �text$,1):menuptr%!4=-1
�#  � left$=">" �menuptr%!4=info%
�  menuptr%!8=&07000021
O  � left$=">" � left$="<" � $(menuptr%+12)=�text$,2) � $(menuptr%+12)=text$
  menuptr%+=24
�
&�
0
:ݤpar(menu$,sep$,� i%)
D�i1%
N%i1%=i%+1:i%=�menu$+sep$,sep$,i1%)
X=�menu$,i1%,i%-i1%)
b
l��menuselect(menus%)
v�A$
�<�l%:ș"Wimp_DecodeMenu",,menudata%,menus%,�20," ")�,,,A$
�Ȏ A$ �
�#  �"Choices...":�front(config%)
�   �"Control...":�front(txt%)
�  �"Quit":�finish:�
�  �"Alarm list":�listalarms
�  �"Menu list":�listmenu
�  �"Task list":�listtasks
�  �"Var list":�listvars
�$  �"Script list":�listscript("")
�  �"DbgLev 0":debug%=0
�  �"DbgLev 1":debug%=1
�  �"DbgLev 2":debug%=2
  �"DbgLev 3":debug%=3
  :�umenu%>0 �
      �l%=1�umenu%
         �A$=umenu$(l%,0) �
*/          �upd_icon(status%,7,umenu$(l%,0))
4'          �addevent(umenu$(l%,1),8)
>
        �
H      �
R	    �
\�
f�
p
z��errorbox
�<!buffer%=�:$(buffer%+4)=�$+" (internal code "+Þ+")."+�0
�1ș "Wimp_ReportError",buffer%,1,Task$:�finish
��
�
���front(h%)
�&!q%=h%:ș"Wimp_GetWindowState",,q%
�$q%!28=-1:ș"Wimp_OpenWindow",,q%
�G�h%=txt%�ș"Wimp_SetCaretPosition",h%,inic%,,,-1,��ic_str(h%,inic%)
��
�
���cfront(h%,xoff%,yoff%)
��x%,y%,wx%,wy%,xe%,ye%
��autowinpos%=0�h%=status%�
  �front(h%)
  �
K  È™"OS_ReadModeVariable",-1,4�,,xe%:È™"OS_ReadModeVariable",-1,11�,,x%
$K  ș"OS_ReadModeVariable",-1,5�,,ye%:ș"OS_ReadModeVariable",-1,12�,,y%
.(  !q%=h%:È™"Wimp_GetWindowState",,q%
89  x%=x%<<xe%:y%=y%<<ye%:wx%=q%!12-q%!4:wy%=q%!16-q%!8
BO  q%!4=(x%-wx%)�2-xoff%:q%!12=q%!4+wx%:q%!8=(y%-wy%)�2-yoff%:q%!16=q%!8+wy%
L6  q%!20=0:q%!24=0:q%!28=-1:È™"Wimp_OpenWindow",,q%
V�
`�
j
t��dotitle(h%)
~(!q%=h%:È™"Wimp_GetWindowOutline",,q%
�5ș"Wimp_ForceRedraw",-1,q%!4,q%!16-44,q%!12,q%!16
��
�
�ݤic_str(H%,I%)
�,!q%=H%:q%!4=I%:ș"Wimp_GetIconState",,q%
�=�str(q%!28)
�
���seticonstring(H%,I%,A$)
�1!q%=H%:q%!4=I%:ș"XWimp_GetIconState",,q%�;F%
�*�tf10(F%)�q%!28>&8800 �$(q%!28)=A$+�0
��
�
��upd_icon(H%,I%,A$)

:�seticonstring(H%,I%,A$):!q%=H%:q%!4=I%:q%!8=0:q%!12=0
È™"Wimp_SetIconState",,q%
�
(
2��setinv(H%,I%,S%)
<=S%=�(S%=0):!q%=H%:q%!4=I%:q%!8=((1)<<21)*S%:q%!12=(1<<21)
FÈ™"Wimp_SetIconState",,q%
P�
Z
dݤrdinv(H%,I%)
n,!q%=H%:q%!4=I%:È™"Wimp_GetIconState",,q%
x$=�(((q%!24)�(1<<21))�2097152<>0)
�
���setshaded(H%,I%,S%)
�3!q%=H%:q%!4=I%:q%!8=((1)<<22)*�S%:q%!12=(1<<22)
�ș"Wimp_SetIconState",,q%
��
�
���print(a$,b$,c$)
�B�a$>""��upd_icon(status%,1,�a$,34)):�a$>1��log("Action: "+a$)
�B�b$>""��upd_icon(status%,2,�b$,34)):�b$>1��log("Status: "+b$)
�B�c$>""��upd_icon(status%,3,�c$,34)):�c$>1��log("IP add: "+c$)
��
�
�7��openw(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%)
�handle%>-1�
!  q%!0=handle%:q%!28=bhandle%
+  q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%
"  q%!20=scx%:q%!24=scy%
,  È™"Wimp_OpenWindow",,q%
6�
@�
J
T��closew(h%)
^�L%
h	ÈŽh%�
r  �mess%:�pause% ��unpause
|  �input%:input$=" "
�  :
�    �L%=0�twmax%
�"      �h%=tww%(L%)�twh%(L%)>0�
�/        �7:�yesno(�msg0("TaskKill"),3)=2 �
�)          �messtw(twname$(L%),&808C4)
�          �
�          h%=0
�
        �
�        L%=twmax%
�      �
�	    �
��
�)�h%>0�!q%=h%:È™"Wimp_CloseWindow",,q%
�


ݤask(A$)
&!�d%,r%,def%:d%=60:r%=0:def%=1
0�B$=�param(A$)
:  �B$,1)="/"�
D    C$=�value(B$):Ȏ�B$,3)�
N"      �"del":d%=�C$:�d%<5�d%=5
X1      �"def":C$=�lower(C$):�C$,1)="y"�def%=2
b	    �
l	    �
v    r%=�yesno(B$,d%)
�  �
�
�A$=""
��r%=0�r%=def%
�=-(r%=2)
�
�	� ***
�
�ݤyesno(A$,wait%)
�"� returns 0=timeout 1=no 2=yes
�>�st%:st%=time%:wait%=wait%*100:�upd_icon(yesno%,2,�A$,57))
�,�cfront(yesno%,0,0):�wait%=0�wait%=60000
�8yesnoans%=0:�:�poll(50):�yesnoans%>0�time%-st%>wait%
��closew(yesno%)
=yesnoans%

ݤvarval(A$)
 
�L%,F%
*/ș"XOS_ReadVarVal",A$,tmp%,256,0,3 �,,L%;F%
4�(F%�1) �L%>256 �:=""
>tmp%?L%=13:=$tmp%
H
R��info(q%)
\=x0%=!q%:y0%=q%!4:x1%=q%!8:y1%=q%!12:scx%=q%!16:scy%=q%!20
f3bx%=x0%-scx%:by%=y1%-scy%:gy0%=q%!28:gy1%=q%!36
p�
z
���redraww(h%)
��tw%:!q%=h%:Ȏh%�
�
�txt%:
�(  ș "Wimp_RedrawWindow",,q% � more%
�  �draw_txt(more%)
��mess%:
�(  ș "Wimp_RedrawWindow",,q% � more%
�  �draw_msg(more%)
�:
�"  �tw%=0�twmax%:�h%=tww%(tw%)�
�*    ș "Wimp_RedrawWindow",,q% � more%
�    �draw_tw(tw%,more%)
�  �
  �
�
�
$
.��init_txt
8txto%=0
B<log_y%=1:�txtl$(txty%),txtc% txty%,msg$(msgmax%):msgw%=0
L"txtl$()=�txtx%�2," "):ioff%=40
V>!tmp%=0:tmp%!4=-txty%*32-ioff%-8:tmp%!8=txtx%*16:tmp%!12=0
` È™"Wimp_SetExtent",txt%,tmp%
j<�i%=0�1:!tmp%=txt%:tmp%!4=i%:ș"Wimp_GetIconState",,tmp%
tAtmp%!12=tmp%!12-txty%*32:tmp%!20=tmp%!20-txty%*32:tmp%!4=txt%
~,!q%=txt%:q%!4=i%:È™"Wimp_DeleteIcon",,q%
�(ș"Wimp_CreateIcon",,tmp%+4 �inic%:�
�#ptr%=0:lt%=0:data$="":tdata$=""
�*�print("Starting SLIPdial","Idle"," ")
�/�quiet%=0��rdinv(config%,2)=0 ��front(txt%)
��
�
���init_tww(tw%,out%,T$)
��off%:off%=(tw%�4)*40
��tww%(tw%)=0�
�2  ș "Wimp_OpenTemplate",,sdlang$+".Templates"
�C  ș "Wimp_LoadTemplate",,q%,ind%,sp%+size%,-1,"task",0 �,,ind%
�'  twt%(tw%)=q%!72:q%!44=-twwmax%*32
A  !q%=!q%+off%:q%!8=q%!8+off%:q%!4=q%!4-off%:q%!12=q%!12-off%

,  ș "Wimp_CreateWindow",,q% � tww%(tw%)
  È™ "Wimp_CloseTemplate"
  Ȏtw%�
(    �0:�twbuf0$(twwmax%)
2    �1:�twbuf1$(twwmax%)
<    �2:�twbuf2$(twwmax%)
F    �3:�twbuf3$(twwmax%)
P    �4:�twbuf4$(twwmax%)
Z    �5:�twbuf5$(twwmax%)
d    �6:�twbuf6$(twwmax%)
n"    :�halt(�msg0("Etask1")):�
x  �
�  �
�  Ȏtw%�
�    �0:twbuf0$()=""
�    �1:twbuf1$()=""
�    �2:twbuf2$()=""
�    �3:twbuf3$()=""
�    �4:twbuf4$()=""
�    �5:twbuf5$()=""
�    �6:twbuf6$()=""
�  �
��
�I$twt%(tw%)=�msg1("TaskRun",T$):tdata$(tw%)="":twy%(tw%)=0:two%(tw%)=0
��out%��front(tww%(tw%))
�

%��update_txt(ux0%,uy0%,ux1%,uy1%)
"6!q%=txt%:q%!4=ux0%:q%!8=uy0%:q%!12=ux1%:q%!16=uy1%
,%ș"Wimp_UpdateWindow",,q% � more%
6�draw_txt(more%)
@�
J
T%��update_msg(ux0%,uy0%,ux1%,uy1%)
^7!q%=mess%:q%!4=ux0%:q%!8=uy0%:q%!12=ux1%:q%!16=uy1%
h%ș"Wimp_UpdateWindow",,q% � more%
r�draw_msg(more%)
|�
�
�(��update_tw(tw%,ux0%,uy0%,ux1%,uy1%)
�;!q%=tww%(tw%):q%!4=ux0%:q%!8=uy0%:q%!12=ux1%:q%!16=uy1%
�%ș"Wimp_UpdateWindow",,q% � more%
��draw_tw(tw%,more%)
��
�
���draw_msg(more%)
�ȕ more%
�  �info(q%+4):�
�3  top%=�(gy1%-by%+16)�32:bot%=�(gy0%-by%+16)�32
�7  �bot%>msgmax% �bot%=msgmax%:�top%>bot% �top%=bot%
�(  ș"Wimp_SetColour",7:�L%=top%�bot%
 5  �bx%+4-msgc%*(msgw%�2-�msg$(L%)*8),by%-L%*32-16
   �msg$(L%):�
 %  ș"Wimp_GetRectangle",,q%�more%
 &�
 0�
 :
 D��draw_tw(tw%,more%)
 N�L%,y%,top%,bot%:ȕ more%
 X  �info(q%+4):�
 b-  top%=�(gy1%-by%)�32:bot%=�(gy0%-by%)�32
 l7  �bot%>twwmax% �bot%=twwmax%:�top%>bot% �top%=bot%
 v(  ș"Wimp_SetColour",7:�L%=top%�bot%
 �  y%=(L%+two%(tw%))�twwmax%
 �  �bx%+4,by%-L%*32-4
 �  Ȏtw%�
 �    �0:�twbuf0$(y%)
 �    �1:�twbuf1$(y%)
 �    �2:�twbuf2$(y%)
 �    �3:�twbuf3$(y%)
 �    �4:�twbuf4$(y%)
 �    �5:�twbuf5$(y%)
 �    �6:�twbuf6$(y%)
 �  �
 �  �
 �%  ș"Wimp_GetRectangle",,q%�more%
!�
!�
!
! ��draw_txt(more%)
!*�L%,y%,top%,bot%:ȕ more%
!4  �info(q%+4):�
!>-  top%=�(gy1%-by%)�32:bot%=�(gy0%-by%)�32
!H3  �bot%>txty% �bot%=txty%:�top%>bot% �top%=bot%
!R'  �L%=top%�bot%:y%=(L%+txto%)�txty%
!\=  �bx%,by%-L%*32:ș"Wimp_SetColour",txtc%?y%:�txtl$(y%):�
!f'  ș"Wimp_GetRectangle",,q% � more%
!p�
!z�
!�
!���str_txt(A$)
!��data$>""��flush
!��line_txt(A$,7)
!��
!�
!���warn_txt(A$)
!��line_txt(A$,11)
!��
!�
!���flush
!��data$>""�
!�,  �(debug%�2)<>0�errC%<>0 ��#errC%,data$
"   �msg_cs%>0��msgfilt(data$)
"!  �line_txt(data$,5):data$=""
"�
"$�
".
"8ݤrec:�device%=0�=-1
"BZ%=�d(1,port%,0,0)
"L"�Z%>0�(debug%�2)>0�msg_cs%>0 �
"V   �Z%>31 �Z%<128 �data$+=�Z%
"`(  �Z%=13�Z%=10��data$>=txtx% ��flush
"j�
"t=Z%
"~
"���tw_data(tw%,buf%,len%)
"��l%
"��l%=0�len%:C%=buf%?l%
"�&  �C%>31 �C%<128 �tdata$(tw%)+=�C%
"�$  �C%=13�C%=10��tdata$(tw%)>78 �
"�     �tw_txt(tw%,tdata$(tw%))
"�1    �tget%=tw%�tget$(0)>""��tget(tdata$(tw%))
"�    tdata$(tw%)=""
"�  �
"��
"�-�tget%=tw%�tget$(0)>""��tget(tdata$(tw%))
"��
#
#
��tw_txt(tw%,A$)
#
�t%,B$
#5�(debug%�4)<>0�errC%<>0 ��#errC%,"TW"+�tw%+">"+A$
#(ȕA$>""
#2&  t%=(twy%(tw%)+two%(tw%))�twwmax%
#<  B$=�A$,79):A$=�A$,79)
#F  Ȏtw%�
#P    �0:twbuf0$(t%)=B$
#Z    �1:twbuf1$(t%)=B$
#d    �2:twbuf2$(t%)=B$
#n    �3:twbuf3$(t%)=B$
#x    �4:twbuf4$(t%)=B$
#�    �5:twbuf5$(t%)=B$
#�    �6:twbuf6$(t%)=B$
#�  �
#�  �twy%(tw%)<twwmax% �
#�D    !q%=tww%(tw%):ș"Wimp_GetWindowState",,q%:f%=(q%!32)�(1<<16)
#�d    �twy%(tw%)>=�(q%!8-q%!16)�32 �q%!24=-(twy%(tw%)*32-�(q%!8-q%!16))-32:ș"Wimp_OpenWindow",,q%
#�?    �update_tw(tw%,0,-twy%(tw%)*32-32,1280,-twy%(tw%)*32+4)
#�    twy%(tw%)+=1
#�  �
#�'    two%(tw%)=(two%(tw%)+1)�twwmax%
#�K    ș"Wimp_BlockCopy",tww%(tw%),0,-32*twwmax%,1280,0,0,-32*(twwmax%-1)
#�<    �update_tw(tw%,0,-32*twwmax%,1280,-32*(twwmax%-1)+4)
#�  �
$�
$�
$
$"��line_txt(A$,col%)
$,�t%:�poll(slice%)
$6ȕA$>""
$@  t%=(log_y%+txto%)�txty%
$J(  txtl$(t%)=�A$,txtx%):A$=�A$,txtx%)
$T#  txtc%?t%=col%:�log_y%<txty% �
$^?    !q%=txt%:ș"Wimp_GetWindowState",,q%:f%=(q%!32)�(1<<16)
$hd    �f%<>0�log_y%>=�(q%!8-q%!16)�32 �q%!24=-(log_y%*32-�(q%!8-q%!16))-32:ș"Wimp_OpenWindow",,q%
$r6    �update_txt(0,-log_y%*32-32,1280,-log_y%*32+4)
$|    log_y%+=1
$�  �
$�    txto%=(txto%+1)�txty%
$�B    ș"Wimp_BlockCopy",txt%,0,-32*txty%,1280,0,0,-32*(txty%-1)
$�5    �update_txt(0,-32*txty%,1280,-32*(txty%-1)+4)
$�  �
$��
$��
$�
$�
��clr_txt
$�(txtl$()="":log_y%=0:txto%=0:data$=""
$�/�update_txt(0,-txty%*32-ioff%-8,16*txtx%,0)
$��
$�
%
��log(m$)
%�(debug%�1) �
%  �str_txt(m$)
%&  �errC%<>0 ��#errC%,m$
%0�
%:�
%D
%N��openlog(A$)
%XB$=�param(A$)
%b�B$="" �
%l  �flush:�cf(errC%)
%v�
%�  B$=�canon(B$)
%�"  ș"XOS_Find",&CF,B$�errC%;F%
%�*  �(F%�1)�ș"XOS_Find",&8F,B$�errC%;F%
%�.  �(F%�1)�errC%=0:�halt(�msg0("Etrace")):�
%�  ș"XOS_File",18,B$,&FFF
%�   �errC%<>0 ��#errC%=�#errC%
%��
%��
%�
%���claimdevice
%��driverno%>-1�
%�<  !q%=256:q%!12=0:q%!16=11:q%!20=2:q%!24=driverno%+port%
%�  $(q%+28)="SLIPdial"+�0
&"  È™"Wimp_SendMessage",18,q%,0
&"  device%=�:�L%=1�5:�poll(0):�
&�
& �
&*
&4��refusedevice
&>�driverno%>-1�
&H)  � q%!20=2 � q%!24=driverno%+port% �
&R#    !q%=256:q%!12=q%!8:q%!16=12
&\$    $(q%+28)=�msg0("DevMine")+�0
&f'    È™"Wimp_SendMessage",17,q%,q%!4
&p  �
&z�
&��
&�
&�ݤloaddriver(A$)
&�A%=�A$," "):�A%>=0 �
&�  driver$=�A$,A%-1)
&�  port%=�(�A$,A%+1))
&�  �
&�  driver$="internal"
&�
  port%=0
&��
&�
&�$�setv("port",driver$+" "+�port%)
&�+�print(�msg1("DevLoad",driver$)," ","")
'Gș"XOS_File",16,"SerialDev:modules."+driver$+".driver",driver,0�;F%
',�(F%�1) ��halt(�msg1("Edev",driver$)):=0
' �print("",�msg0("DevOK"),"")
'$driverno%=driver!&C8
'.
=port%
'8
'B��setspeed(B$)
'L&speed%=�B$:�speed%=0 �speed%=19200
'V�setv("speed",�speed%)
'`�
'j
't��addevent(A$,t%)
'~H� event types are: 0 system, 1 time-alarm, 2 line-alarm, 3 task-end,
'�G� 4 taskwindow-end, 5 command-input, 6 icon-click, 7 icon-filedrop,
'�� 8 user-menu, 9 user-eof
'��log(�msg1("Qadd",A$))
'�"L%=0:ȕevent$(L%)>""�L%<maxev%
'�L%+=1:�
'�"event$(L%)=A$:evtype%(L%)=t%:�
'�
'�ݤgetevent
'� �t%,l%,A$,n%:l%=0:A$="":n%=0
'�>��event$(l%)>""�event%(evtype%(l%))=� �A$=event$(l%):n%=l%
'�(l%+=1:�A$>""�event$(l%)=""�l%=maxev%
'��A$>""�
(I  �l%=n%�maxev%-1:event$(l%)=event$(l%+1):evtype%(l%)=evtype%(l%+1):�
(
  event$(maxev%)=""
(�
(=A$
((
(2ݤtestevent
(<�t%,l%,r%:l%=0:r%=0
(F/��event$(l%)>""�event%(evtype%(l%))=� �r%=�
(P(l%+=1:�r%<>0�event$(l%)=""�l%=maxev%
(Z=r%
(d
(nݤcommand(com$)
(x(ȕcom$>""�stop%=0:A$=�multicom(com$)
(��poll(slice%)
(��log(�stage%+": "+A$)
(�DB$=�param(A$):B$=�lower(B$):lc$=B$:� store last command for help
(��B$,1)<>":" �
(�  ȎB$ �
(�&    � "if"   :return%=�if(A$,com$)
(�"    � "ask"  :return%=�ask(A$)
(�#    � "case" :return%=�case(A$)
(�(    � "when" :return%=�when(A$,com$)
(�&    � "otherwise":�otherwise(com$)
(�$    � "endcase":return%=�endcase
(�$    � "claim":return%=�claim(A$)
(�#    � "debug":debug%=�debug(A$)
)(    � "driver":return%=�modemdrv(A$)
)&    � "source":return%=�source(A$)
)(    � "library":return%=�library(A$)
)"    � "chain":�chain(A$)
),'    � "port" :port%=�loaddriver(A$)
)6    � "speed":�setspeed(A$)
)@    � "release":�release
)J(    � "init" :return%=�initmodem(A$)
)T    � "reinit":�reinit
)^#    � "dial" :return%=�dial(A$)
)h#    � "wait" :return%=�wait(A$)
)r    � "trace":�openlog(A$)
)|    � "send" :�send(A$)
)�$    � "ipget":return%=�ipget(A$)
)�    � "make" :�makefile(A$)
)�#    � "task" :return%=�task(A$)
)�)    � "taskwindow":return%=�taskw(A$)
)�'    � "sleep","pause":�pause(�(A$))
)�    � "alarm":�alarm(A$)
)�    � "set"  :�set(A$)
)�    � "unset":�unset(A$)
)�D    � "?eq","?ne","?lt","?le","?gt","?ge":return%=�testeq(B$,A$)
)�&    � "string":return%=�string(A$)
)�#    � "eval" :return%=�eval(A$)
)�!    � "label":� ignore labels
)�"    � "goto" :�goto(A$,stage%)
*#    � "call" :�gosub(A$,stage%)
*-    � "return":return%=�return(A$,stage%)
*    � "echo" :�echo(A$)
*&#    � "?file":return%=�file(A$)
*0'    � "?line":return%=�testline(A$)
*:#    � "?free":return%=�free(A$)
*D    � "retry":�setretry(A$)
*N#    � "open" :return%=�open(A$)
*X$    � "close":return%=�close(A$)
*b#    � "read" :return%=�read(A$)
*l%    � "write" :return%=�write(A$)
*v!    � "ptr" :return%=�ptr(A$)
*�'    � "move" :return%=�movefile(A$)
*�'    � "copy" :return%=�copyfile(A$)
*�&    � "append":return%=�append(A$)
*�&    � "delete":return%=�delete(A$)
*�*    � "newsrate":return%=�newsrate(A$)
*�'    � "?task":return%=�testtask(A$)
*�2    � "dopen","dataopen":return%=�dataopen(A$)
*�-    � "stamp":�log("("+�(� �100)+") "+A$)
*�    � "error":�halt(A$)
*�     � "message":�message(A$)
*�    � "menu" :�menudef(A$)
*�    � "list" :�list(A$)
*�%    � "icon":return%=�iconbar(A$)
+*    � "analyse","analyze":�analyse(A$)
+    � "help" :�help(A$)
+!    � "event":�eventonoff(A$)
+     � "stop" :�stop
+*&    � "quit" :�quit(�msg0("Quit"))
+4    � "exit" :�exit
+>    � "input":�input(A$)
+H$    � "oscli":return%=�oscli(A$)
+R    :�log(�msg0("BadCom"))
+\  �
+f�
+pA�return%<0��setv("$status",return$)��setv("$status",�return%)
+z�
+�=return%
+�
+���echo(A$)
+��B$,s%:s%=0
+��
+�  B$=�param(A$)
+�  �B$,1)="/"�
+�    Ȏ�B$,3)�
+�      �"/st":s%=�
+�      �"/lo":s%=0
+�$      �"/da":A$=""""+�$+""" "+A$
+�	    �
+�	    �
,    �s%�
,      �print("",B$,"")
,      �
,$      �str_txt(B$)
,.-      �(debug%�3)<>0�errC%<>0 ��#errC%,B$
,8	    �
,B  �
,L
�A$=""
,V�
,`
,jݤclaim(A$)
,t�J%,t%,d%,try%
,~$�print(�msg0("DevClaim")," ","")
,�#t%=��param(A$):�t%<0 �t%=retry%
,�#d%=��param(A$):�d%<2 �d%=delay%
,�
try%=1
,��
,��claimdevice
,��device%<>0 �
,�  J%=�d(17,port%,0,0)
,�4  J%=�d(13,port%,speed%,0):�J%<>speed%�speed%=J%
,�4  J%=�d(14,port%,speed%,0):�J%<>speed%�speed%=J%
,�  J%=�d(15,port%,0,0)
,�  J%=�d(16,port%,1,0)
,�  J%=�d(6,port%,0,0)
-  J%=�d(7,port%,0,0)
-
�
-  �pause(d%):�t%>0 �try%+=1
-�
-("�device%<>0 �try%>t% �stop%<>0
-2=device%
-<
-F
��release
-P�J%
-Z� device% �
-d1  �print(�msg0("DevRel"),�msg0("DevDrop"),"")
-n  J%=�d(8,port%,0,0)
-x  J%=�d(18,port%,0,0)
-�  device%=�
-��
-��
-�
-�ݤinitmodem(A$)
-��B$,h%:h%=0
-��droplines<>0 �
-�$  �print(�msg0("DevInit"),"","")
-�  �A$=""�A$=�vv("$init")
-�  �
-�    B$=�param(A$)
-�)    �print("",�msg1("Sending",B$),"")
-�,    �send(B$):h%=�get4s("OK","","","",5)
.  �A$=""�h%=0
.�
.=h%
."
.,��reinit
.6�J%
.@2J%=�d(13,port%,speed%,0):�J%<>speed%�speed%=J%
.J2J%=�d(14,port%,speed%,0):�J%<>speed%�speed%=J%
.TJ%=�d(15,port%,0,0)
.^J%=�d(16,port%,1,0)
.hJ%=�d(8,port%,3,0)
.r�
.|
.���setretry(A$)
.��B$
.�B$=�param(A$)
.��B$>0 �retry%=�B$
.��A$>2 �delay%=�A$
.��
.�
.���usericon(A$)
.��upd_icon(status%,11,A$)
.�"�setshaded(status%,11,(A$=""))
.��
.�
.�ݤdial(numlist$)
/)�flag%,r%,d%,nod%,noc%,bus%,dc$,B$,C$
/flag%=0:dc$="ATDT"
//r%=retry%:d%=delay%:nod%=d%:noc%=d%:bus%=d%
/&�usericon(�msg0("Redial"))
/0�
/:  B$=�param(numlist$)
/D  �B$,1)="/"�
/N!      C$=�value(B$):Ȏ�B$,3)�
/X%        �"ret":r%=�C$:�r%<1 �r%=1
/b%        �"del":d%=�C$:�d%<2 �d%=2
/l%          nod%=d%:noc%=d%:bus%=d%
/v        �"noc":noc%=�C$
/�        �"nod":nod%=�C$
/�#        �"not","pul":dc$="ATDP"
/�#        �"ton","nop":dc$="ATDT"
/�        �"bus":bus%=�C$
/�      �
/�	    �
/�"    attempt%=1:flag%=0:num$=B$
/�	    �
/�K      �print(�msg1("Dialling",num$),�msg2("Dattempt",�attempt%,�r%),"")
/�%      �send(dc$+num$):attempt%+=1
/�U      return%=�get4s(�vv("$conn"),�vv("$busy"),�vv("$nocarr"),�vv("$nodial"),120)
/�      �stop%=0 �
/�      �redial%=� �
0B        A%=�droplines:ȕ �d(5,port%,0,0)>0:J%=�rec:�:redial%=�
0
        �
0        Ȏreturn% �
0 9          � 1:�print("",�msg0("Dconnect"),""):flag%=1
0*;          � 2:�print("",�msg0("Dbusy"),""):�pause(bus%)
049          � 3:�print("",�msg0("Dnc"),""):�pause(noc%)
0>9          � 4:�print("",�msg0("Dnd"),""):�pause(nod%)
0H4          � 2,3,4:ȕ �d(5,port%,0,0)>0:J%=�rec:�
0R4          �print("",�msg0("Dnr"),""):�pause(d%)
0\
        �
0f      �
0p      �
0z6      A%=�droplines:� cancel a dial if stop active
0�	    �
0�1  � attempt%>r% �stop%<>0 �flag%>0 �device%=0
0�C  �flag%=0 �numlist$>"" ��print(�msg0("Dnext"),"",""):�pause(1)
0�  �
0�0� numlist$="" �stop%<>0 � flag%>0 �device%=0
0��usericon("")
0�
=flag%
0�
0�ݤwait(A$)
0�$�l%,m%,d%,s%,return%,B$,C$,qual%
0�d%=600:tget%=-1:return%=0
0��B$=�param(A$):qual%=�
0��B$,1)="/"�
1  C$=�value(B$):qual%=�
1  Ȏ�B$,2)�
1  �"ev":return%=�waitevent
1$  �"de","del":d%=�C$
1.@  �"na","id":�l%=0�twmax%:�C$=twname$(l%)�tget%=l%:l%=twmax%
18/    �:�tget%<0 ��halt(�msg0("Ebadtask")):=0
1B#  :�halt(�msg0("Ebadwait")):=0
1L  �
1V�
1`�qual%=�
1j�return%=0 �
1t)  �d%=0��halt(�msg1("Ebaddel",A$)):=0
1~  s4$()="":l%=0:C$="":�
1�1    s4$(l%)=B$:C$+=B$+"/":l%+=1:B$=�param(A$)
1�  �B$=""�l%=4:C$=�C$,�C$-1)
1�6  �print(�msg1("Wait",C$),�msg1("Timeout",�d%),"")
1�  �tget%<0 �
1�6    return%=�get4s(s4$(0),s4$(1),s4$(2),s4$(3),d%)
1�  �
1�6    return%=�gettw(s4$(0),s4$(1),s4$(2),s4$(3),d%)
1�  �
1�a  � return%>0 ��print("",�msg1("Received",s4$(return%-1)),"")��print("",�msg0("TimedOut"),"")
1��
1�=return%
1�
2ݤwaitevent
2
(�upd_icon(status%,7,�msg0("Select"))
2#�print(�msg0("Waiting")," ","")
2��poll(50):��testevent
2(=1
22
2<��eventonoff(A$)
2F�a%,B$:a%=�
2P�B$=�param(A$)
2Z
Ȏ�B$,2)�
2d�"/e":a%=�
2n�"/d":a%=�
2x�"ti":event%(1)=a%
2��"li":event%(2)=a%
2��"ta":event%(3)=a%
2��"tw":event%(4)=a%
2��"in":event%(5)=a%
2��"ic":event%(6)=a%
2��"fi":event%(7)=a%
2��"me":event%(8)=a%
2��"eo":event%(9)=a%
2��"al":event%()=a%
2��
2��A$="":event%(0)=�
2��
2�
36ݤgettw(tget$(0),tget$(1),tget$(2),tget$(3),wait%)
3�st%,r%
3-r%=0:twgflag%=0:wait%=wait%*100:st%=time%
3"�tget(tdata$(tget%))
3,8��poll(50):�twgflag%>0 ��(time%-st%)>wait% �stop%<>0
36�twgflag%>0 �r%=twgflag%
3@=r%
3J
3T��tget(A$)
3^�L%
3h�L%=0�3
3r8  �tget$(L%)>""��A$,tget$(L%))>0 �twgflag%=L%+1:L%=3
3|�
3�tget%=-1
3��
3�
3�"ݤget4s(s1$,s2$,s3$,s4$,wait%)
3��flag%,st%,J%
3�wait%=wait%*100:st%=time%
3�'n1%=�s1$:n2%=�s2$:n3%=�s3$:n4%=�s4$
3�#p1%=1:p2%=1:p3%=1:p4%=1:flag%=0
3��
3�
  J%=�rec
3�  �J%>-1 �
3�8    �J%=n1% �p1%+=1:n1%=�(�s1$,p1%)) �n1%=�s1$:p1%=1
3�8    �J%=n2% �p2%+=1:n2%=�(�s2$,p2%)) �n2%=�s2$:p2%=1
48    �J%=n3% �p3%+=1:n3%=�(�s3$,p3%)) �n3%=�s3$:p3%=1
48    �J%=n4% �p4%+=1:n4%=�(�s4$,p4%)) �n4%=�s4$:p4%=1
4	    �
4&    �poll(10)
40  �
4:  �p1%>�s1$ �s1$>"":flag%=1
4D  �p2%>�s2$ �s2$>"":flag%=2
4N  �p3%>�s3$ �s3$>"":flag%=3
4X  �p4%>�s4$ �s4$>"":flag%=4
4b6�flag%>0 ��(time%-st%)>wait% �stop%<>0 �redial%<>0
4l�flag%>0 �:=flag%
4v=0
4�
4���send(A$)
4�%�A%,J%,R%,t$,tw%,B$,C$:t$="":R%=0
4��B$=�param(A$)
4�  �B$,1)="/"�
4�    C$=�value(B$):Ȏ�B$,2)�
4�      �"ra":R%=�
4�      �"no":R%=�
4�      �"na","id":t$=C$
4�	    �
4�	    �
4�    �t$=""�
4�-      �device%=0��halt(�msg0("Enodev")):�
51      �A%=1��B$:J%=�d(0,port%,��B$,A%,1),0):�
5$      �R%=0 �J%=�d(0,port%,13,0)
5      �
5 6      tw%=0:ȕtwname$(tw%)<>t$�tw%<twmax%:tw%+=1:�
5*#      �tw%<twmax%�twh%(tw%)<>0�
54E        !q%=256:q%!12=0:q%!16=&808C0:q%!20=�B$-(R%=0):$(q%+24)=B$
5>0        È™"Wimp_SendMessage",17,q%,twh%(tw%)
5H9        �log(�msg2("TaskSend",�B$,100),twname$(tw%)))
5R      �
5\	    �
5f  �
5p
�A$=""
5z�
5�
5�ݤipget(A$)
5�(�r%,start$,d%,a%,loc%,tlim%,B$,C$,J%
5�r%=0:d%=60:a%=0
5��B$=�param(A$)
5��B$,1)="/"�
5�  C$=�value(B$):Ȏ�B$,2)�
5�!    �"de":d%=�C$:�d%<10�d%=10
5�    �"au":a%=�
5�  �
5�  �
5�  start$=B$
5��
6
�A$=""
6
�a%=0�
6#  r%=�get4s(start$,"","","",d%)
6$  �
6..  start$="":loc%=0:r%=0:tlim%=time%+d%*100
68  �
6B    J%=�rec
6L    �J%>0�
6V    Ȏloc%�
6`C      �0,1,2:�J%>47�J%<57�start$+=�J%:loc%+=1:�start$="":loc%=0
6j9      �3:�J%=46�start$+=".":loc%+=1:�start$="":loc%=0
6t	    �
6~	    �
6�    �poll(slice%)
6�	    �
6�&  �loc%=4�time%>tlim%:�loc%=4�r%=1
6��
6��r%=1 �
6�  ipnumber$=start$
6�
  J%=�rec
6�+  � terminates on space or control char
6�&  ȕ (J%>32 � J%=0) ��ipnumber$<20
6�@    �J%>31 �ipnumber$=ipnumber$+�J%:�poll(slice%):��poll(10)
6�    J%=�rec
6�  �
7  C%=�(�ipnumber$,1))
7
&  ȕ (C%<48 � C%>57) ��ipnumber$>5
7*  ipnumber$=�ipnumber$,�(ipnumber$)-1)
7  C%=�(�ipnumber$,1))
7(  �
72"  �setv("ipaddress",ipnumber$)
7<1  �setv("route",�subst("%ip1.%ip2.%ip3.254"))
7F#  return$=ipnumber$:r%=-1:A$=""
7P�
7Z=r%
7d
7n��updateip(A$)
7x
�l%,m%
7�&l%=�A$,"."):�setv("ip1",�A$,l%-1))
7�3m%=�A$,".",l%+1):�setv("ip2",�A$,l%+1,m%-l%-1))
7�3l%=�A$,".",m%+1):�setv("ip3",�A$,m%+1,l%-m%-1))
7��setv("ip4",�A$,l%+1))
7��print("","",A$)
7��
7�
7���makefile(name$)
7�A%=�name$," ")
7�+�A%<=1 � �quit(�msg1("Ebadmake",name$))
7�+source$=�name$,A%-1):dest$=�name$,A%+1)
7�%�print(�msg1("Make",dest$),"","")
7� �source$="-"�source$="null:"
8fh1%=�openin(source$)
80�fh1%=0 ��halt(�msg1("Enotfound",source$)):�
8fh2%=�openout(dest$)
8"-�fh2%=0 ��halt(�msg1("Ebadfile",dest$)):�
8,*ȕ (�#fh1%=� ���line(stage%+1),1)="+")
86  � �#fh1% �
8@&    stage%+=1:A$=��line(stage%),2)
8J	    �
8T    A$=�#fh1%
8^  �
8h  A$=�subst(A$)
8r  �A$,1)<>"#" ��#fh2%,A$
8|  �poll(slice%)
8��
8��cf(fh1%):�cf(fh2%)
8��
8�
8�ݤopenin(f$)
8�=�fopen(f$,&4F)
8�
8�ݤopenout(f$)
8�%=�fopen(f$,&8F):�settype(f$,&FFF)
8�
8�ݤopenup(f$)
8��h%
8�h%=�fopen(f$,&CF)
9-�h%=0�h%=�fopen(f$,&8F):�settype(f$,&FFF)
9=h%
9
9&ݤfopen(f$,r%)
90
�h%,F%
9:ș"XOS_Find",r%,f$�h%;F%
9D�(F%�1)�h%=0
9N=h%
9X
9bݤdelfile(f$)
9l�F%:ș"XOS_File",6,f$�;F%
9v=(F%�1)
9�
9���settype(f$,t%)
9�ș"XOS_File",18,f$,t%
9��
9�
9���pause(wait%)
9�
�endtime%
9��wait%=0 �
9�
  �paused
9�  �
9�$  �log(�msg1("Wait",�wait%+"s"))
9�(  �poll(0):st%=time%:wait%=wait%*100
9�  �
:    �poll(50)
:  ��(st%-time%)>wait%
:  �
: �
:*
:4
��settime
:>
�l%,m%
:H?q%=3:È™"OS_Word",14,q%
:RIș"OS_ConvertDateAndTime",q%,tmp%,256,"%24%MI%SE"�l%,m%:now$=�str(l%)
:\4�setv("$time",now$):�setv("$mtime",�(time%�100))
:f�
:p
:z
��setdate
:�
�l%,m%
:�?q%=3:ș"OS_Word",14,q%
:�Iș"OS_ConvertDateAndTime",q%,tmp%,256,"%YR%MN%DY"�l%,m%:now$=�str(l%)
:��setv("$date",now$)
:��
:�
:���alarm(A$)
:��al%,a$,an%,at%,ai%,B$,C$
:�an%=-1:al%=-1:ai%=-1:a$=A$
:��B$=�param(A$)
:��B$,1)="/"�
:�  C$=�value(B$)
:�  Ȏ�B$,2)�
;    �"st":stop$=C$
;    �"er":error$=C$
;.    �"dt","cts":aline%(0)=�tf10(�C$):al%=0
;$(    �"ds":aline%(1)=�tf10(�C$):al%=1
;.(    �"rn":aline%(2)=�tf10(�C$):al%=2
;8(    �"dc":aline%(3)=�tf10(�C$):al%=3
;B!    �"ti":at%=�decodetime(C$)
;L    �"ic":ai%=�iconid(C$)
;V4    �"na","id":an%=�alarmno(C$):alarmid$(an%)=C$
;`#    �"ca","de":�cancelalarm(C$)
;j  �
;t�
;~
�A$=""
;��at%>0 �
;�  �an%<0�an%=�alarmno("~")
;�;  alarm$(an%,0)=B$:alarm$(an%,1)=a$:alarmtime%(an%)=at%
;��
;�  �al%>=0 �aline$(al%)=B$
;�  �ai%>=0 �ifile$(ai%)=B$
;��
;��
;�
;�ݤalarmno(A$)
;��a%:a%=0
;�5�a%+=1:�alarm$(a%,0)=""�alarmid$(a%)=A$�a%=almax%
<(�a%=almax%��halt(�msg0("Ealarm")):=0
<
=a%
<
<ݤtf10(A%):=-(A%<>0)
<(
<2��cancelalarm(C$)
<<�a%:a%=0
<F%�a%+=1:�alarmid$(a%)=C$�a%=almax%
<P?�alarmid$(a%)=C$ �alarm$(a%,0)="":�log(�msg1("Acancel",C$))
<Z�
<d
<nݤdecodetime(C$)
<x>�l%,m%,hr%,mi%,sc%,add%,r%,now%,nhr%,nmi%,nse%,wait%,tnow%
<�(�C$,1)="+"�add%=�:C$=�C$,2) �add%=�
<�l%=�C$,":"):�l%>0 �
<�  m%=�C$,":",l%+1):�m%>0 �
<�    hr%=��C$,l%-1)
<�    mi%=��C$,l%+1,m%-1)
<�    sc%=��C$,m%+1,m%+3)
<�	    �
<�    �add% �
<�2      hr%=0:mi%=��C$,l%-1):sc%=��C$,l%+1,l%+3)
<�      �
<�2      sc%=0:hr%=��C$,l%-1):mi%=��C$,l%+1,l%+3)
<�	    �
<�  �
=  �
==  �add% �hr%=0:mi%=0:sc%=��C$,2) �sc%=0:mi%=0:hr%=��C$,2)
=�
="!ș"OS_ReadMonotonicTime"�now%
=,�add% �
=6)  r%=now%+100*sc%+6000*mi%+360000*hr%
=@  �
=J  ?q%=3:È™"OS_Word",14,q%
=TK  ș"OS_ConvertDateAndTime",q%,tmp%,256,"%24%MI%SE"�l%,m%:now$=�str(l%)
=^4  nhr%=��now$,2):nmi%=��now$,3,2):nse%=��now$,2)
=h"  tnow%=nse%+nmi%*60+nhr%*3600
=rB  wait%=(sc%+mi%*60+hr%*3600)-tnow%:ȕwait%<0:wait%+=24*3600:�
=|  r%=now%+wait%*100
=��
=�=r%
=�
=���timealarm
=��c%:c%=0
=�
�c%+=1
=�.  �alarm$(c%,0)>"" �time%>alarmtime%(c%) �
=�)    com$=alarm$(c%,0):alarm$(c%,0)=""
=�9    �alarm$(c%,1),"/repeat")>0 ��alarm(alarm$(c%,1))
=�    �addevent(com$,1)
=�  �
=��c%=almax%
=�checkalarm%=time%
>�
>
>��linealarm
>&�l1%,J%
>0
�device%�
>:  J%=�d(9,port%,0,0)
>D  �J%<>oldline%�
>N)    oldline%=J%:�(J%�1)�t$="�"�t$=" "
>X    �(J%�2)�t$+="�"�t$+=" "
>b    �(J%�8)�t$+="�"�t$+=" "
>l     �upd_icon(status%,10,t$)
>v  �
>�  �l1%=0�3
>�Y    �aline$(l1%)>""�(J%�(1<<l1%))=aline%(l1%)��addevent(aline$(l1%),2):aline$(l1%)=""
>�
  �l1%
>�  �
>�5  �oldline%>0�oldline%=0:�upd_icon(status%,15,"")
>��
>��
>�
>���list(A$)
>�
�B$,C$
>�B$=�param(A$):C$=�value(B$)
>�
Ȏ�B$,2)�
>�  �"al":�listalarms
?  �"me":�listmenu
?  �"ta":�listtasks
?  �"va":�listvars
?   �"sc":�listscript(A$)
?*  �"fi":�listfiles
?4  �"ju":�listjt
?>�
?H�
?R
?\��listalarms
?f
�c%,A%,A$
?p8�warn_txt(�msg0("Condition")+"    "+�msg0("Action"))
?z�c%=0�almax%
?�  �alarm$(c%,0)>"" �
?�%    A%=(alarmtime%(c%)-time%)�100
?�'    A$="t+"+�"00"+�(A%�3600),2)+":"
?�(    A$+=�"00"+�((A%�3600)�60),2)+":"
?�    A$+=�"00"+�(A%�60),2)
?�6    �f_list(A$,alarm$(c%,1)+" ("+alarmid$(c%)+")")
?�  �
?��
?��c%=0�imax%
?�K  �ibar$(c%)>""��f_list(�msg0("Iclick"),ibar$(c%)+" ("+ibarid$(c%)+")")
?�L  �ifile$(c%)>""��f_list(�msg0("Ifile"),ifile$(c%)+" ("+ibarid$(c%)+")")
?��
?��f_list("stop",stop$)
@>�aline$(0)>""��f_list("DTR"+" ("+�aline%(0)+")",aline$(0))
@>�aline$(1)>""��f_list("DSR"+" ("+�aline%(1)+")",aline$(1))
@>�aline$(2)>""��f_list("RNG"+" ("+�aline%(2)+")",aline$(2))
@$>�aline$(3)>""��f_list("DCD"+" ("+�aline%(3)+")",aline$(3))
@.�
@8
@B��f_list(A$,B$)
@L,�B$>""��warn_txt(" "+A$+�13-�A$," ")+B$)
@V�
@`
@jݤiconbar(A$)
@t�r%,id$,act$,s$,B$,C$
@~id$="":act$="":s$=""
@��
@�  B$=�param(A$)
@�  �B$,1)="/"�
@�    C$=�value(B$)
@�    Ȏ�B$,2)�
@�$      �"fi":r%=�mergesprites(C$)
@�      �"id","name":id$=C$
@�      �"ac":act$=C$
@�'      �"ca","de":r%=�cancelicon(C$)
@�      �"fr":r%=�sfree
@�	    �
@�  �
A
    s$=B$
A
  �
A
�A$=""
A,  �id$>""�s$>""�r%=�addicon(s$,id$,act$)
A(=r%
A2
A<ݤiconid(A$)
AF�a%:a%=0
AP#�a%+=1:�ibarid$(a%)=A$�a%=imax%
AZ-�a%=imax%�A$=""��log(�msg0("Eicon1")):=-1
Ad=a%
An
Axݤnewiconid(A$)
A��a%:a%=0
A�/�a%+=1:�ibarid$(a%)=A$�ibar%(a%)=0�a%=imax%
A�-�a%=imax%�A$=""��log(�msg0("Eicon1")):=-1
A�=a%
A�
A�ݤaddicon(A$,id$,act$)
A�
�a%,Z%
A�a%=�newiconid(id$)
A��a%<0�=0
A��A$>""�
A�+  �ibarid$(a%)=id$ �Z%=�cancelicon(id$)
A�  �log("Adding icon "+A$)
A�*  ibar%(a%)=�ic(A$,a%):ibarid$(a%)=id$
B�
Bibar$(a%)=act$
B=�tf10(ibar%(a%))
B"
B,ݤcancelicon(A$)
B6�a%
B@a%=�iconid(A$)
BJ"�a%<0��log(�msg0("Eicon1")):=0
BT)�ibar%(a%)<1��log(�msg0("Eicon2")):=0
B^B!icons%=-2:icons%!4=ibar%(a%):ș"XWimp_DeleteIcon",,icons%�;F%
Bhibar%(a%)=0:ibarid$(a%)=""
Br=�tf10(F%)
B|
B���ifile(Z%,f$,ty%)
B�+�setv("$type",�~ty%):�setv("$file",+f$)
B��addevent(ifile$(Z%),7)
B��
B�
B�
��set(A$)
B��l%,m%,B$,C$
B�B$=�param(A$):C$=�param(A$)
B��setv(B$,C$)
B��
B�
B���setv(B$,C$)
B��l%,p%:p%=-1:�l%=0�vmax%
CO  �var$(l%,0)=B$�var$(l%,0)=""�var$(l%,0)=B$:var$(l%,1)=C$:p%=l%:l%=vmax%+1
C�
C!�B$="ipaddress"��updateip(C$)
C&�p%=-1��halt(�msg0("Evar"))
C0�
C:
CD��unset(A$)
CN
�l%,B$
CXB$=�param(A$)
Cb�l%=0�vmax%
Cl1  �var$(l%,0)=B$ �var$(l%,0)="":var$(l%,1)=""
Cv�
C�%�B$="ipaddress"��print("",""," ")
C��
C�
C�ݤvv(A$)
C��l%,t$,B$:t$=""
C�B$=�param(A$)
C��l%=0�vmax%
C�,  �var$(l%,0)=B$ �t$=var$(l%,1):l%=vmax%
C��
C�=t$
C�
C���listvars
C��c%
D8�warn_txt(�msg0("Variable")+"      "+�msg0("Value"))
D�c%=0�vmax%
D3  �var$(c%,0)>""��f_list(var$(c%,0),var$(c%,1))
D �
D*�
D4
D>ݤdroplines
DH�J%
DR�device%=0�=0
D\"�print("",�msg0("DevDrop"),"")
DfJ%=�d(8,port%,0,0)
Dp�poll(100)
DzJ%=�d(8,port%,3,0)
D�=1
D�
D���goto(A$,� stage%)
D��l%,flag%,dest$
D�"l%=0:flag%=-1:dest$=�param(A$)
D��
D�(�jt$(l%)=dest$�flag%=jt%(l%):l%=jtl%
D�l%+=1:�l%>=jtl%
D�+�flag%<0��halt(�msg1("Elabel",dest$)):�
D�stage%=flag%
D��
D�
D���gosub(A$,� stage%)
E�B$,p%,old%,lock%
E0�call_lev%=submax% ��halt(�msg0("Elevel")):�
Edest$=�param(A$)
E$3lock%=�:�dest$="/lock"�lock%=�:dest$=�param(A$)
E.p%=0:�A$>""�
E83  �p%+=1:B$=�param(A$):�setv("p"+�p%,B$):�A$=""
EB�
EL#old%=stage%:�goto(dest$,stage%)
EV�lock%�
E`Y  �p%=0�call_lev%:�call_lock%(p%)=stage% �stage%=old%:�warn_txt(�msg1("Elock",dest$))
Ej  �
Et�
E~�stage%<>old% �
E�,  call_lev%+=1:call_ret%(call_lev%)=old%
E�*  �lock% �call_lock%(call_lev%)=stage%
E��
E��
E�
E�ݤreturn(A$,� stage%)
E�,�call_lev%=0 ��halt(�msg0("Ereturn")):=0
E�,stage%=call_ret%(call_lev%):call_lev%-=1
E�return$=A$
E�=-1
E�
E�ݤtestfile(A$)
F�r%
F
ș"XOS_File",17,A$�r%
F=r%
F
F(ݤfile(A$)
F2�r%,n%,l%,B$,C$
F<$r%=0:B$=�param(A$):C$=�param(A$)
FF
Ȏ�B$,3)�
FP(  �"/si":ș"XOS_File",23,C$�n%,,,,r%
FZ)  �"/at":ș"XOS_File",23,C$�n%,,,,,r%
Fd=  �"/ty":ș"XOS_File",23,C$�n%,,,,,,r%:return$=�~r%:r%=-1
Fn6  �"/ex":return$=�canon(C$):�return$>""�r%=-1:n%=1
Fx+  �"/le":return$=�canon(C$):n%=�return$
F�*    ȕn%>0��return$,n%,1)<>".":n%-=1:�
F�*    �n%>1�return$=�return$,n%+1):r%=-1
F�+  �"/pa":return$=�canon(C$):n%=�return$
F�*    ȕn%>0��return$,n%,1)<>".":n%-=1:�
F�*    �n%>1�return$=�return$,n%-1):r%=-1
F�#  :ș"XOS_File",23,B$�r%:n%=r%
F��
F��n%=0�r%=0
F�=r%
F�
F�ݤcanon(A$)
F�
�r$:r$=""
F�1ș"XOS_FSControl",37,A$,tmp%,,,256�,,,,,r%;F%
G �r%>0�(F%�1)=0�r$=�str(tmp%)
G=r$
G
G"ݤtestline(A$)
G,� return%,J%,B$:return%=0
G6J%=�d(9,port%,0,0)
G@�B$=�param(A$)
GJ  ȎB$�
GT'    � "/cts","/dtr":return%+=(J%�1)
G^     � "/dsr":return%+=(J%�2)
Gh     � "/rng":return%+=(J%�4)
Gr     � "/dcd":return%+=(J%�8)
G|#    :�halt(�msg0("Eparam")):=0
G�  �
G�
�A$=""
G�=return%
G�
G�ݤfree(A$)
G��n%,f%,r%,B$,C$
G�"ș"Wimp_SlotSize",-1,-1�,n%,f%
G��B$=�param(A$)
G�  �B$,1)="/"�
G�    C$=�value(B$)
G�    Ȏ�B$,2)�
G�      �"me":r%=n%+f%
G�      �"ne":r%=n%
H      �"fr":r%=f%
H      �"in":r%=�-�
H?      �"de":ș"XOS_FSControl",49,C$�r%;F%:�tf10(F%)=0�r%=0
H&	    �
H0	    �
H:    �B$>""��setv(B$,�r%)
HD  �
HN
�A$=""
HX=r%
Hb
Hlݤif(A$,RETURNcom$)
Hv%� test$,if$,not%,return%,l%,m%,n%
H�-l%=�A$,"("):m%=�A$,")",l%):n%=�A$," ",m%)
H�'� l%*m%*n%=0 ��log(�msg0("Eif")):=0
H�0not%=�:test$=�A$,l%+1,m%-l%-1):if$=�A$,n%+1)
H�*�test$,1)="!" �not%=�:test$=�test$,2)
H�7return%=�command(test$):�not% �return%=-(return%=0)
H�7� return%<>0�stop%=0�return%=�command(if$) �com$=""
H�=return%
H�
H�ݤcase(A$)
H�8caslev%+=1:�caslev%>casmax%��halt(�msg0("Ecase")):=0
H�4case$(caslev%)=�param(A$):casmatch%?caslev%=0:=1
H�
H�ݤwhen(A$,RETURNcom$)
I�m%,B$:m%=�
I(�caslev%=0 ��halt(�msg0("Ewhen")):=0
I�B$=�param(A$)
I 1  �B$=case$(caslev%)�m%=�:casmatch%?caslev%=1
I*
�A$=""
I4�m%=� �com$=""
I>=0
IH
IR��otherwise(RETURNcom$)
I\'�caslev%=0 ��halt(�msg0("Ewhen")):�
If!�casmatch%?caslev%=1 �com$=""
Ip�
Iz
I�
ݤendcase
I�(�caslev%=0 ��halt(�msg0("Ewhen")):=0
I�caslev%-=1:=1
I�
I�ݤtesteq(c$,A$)
I��r%,n%,l%,c%,b$,B$,C$:r%=0
I�B$=�param(A$):C$=�param(A$)
I�)b$=B$+C$:n%=�:�l%=1��b$:c%=��b$,l%,1)
I�$  �c%<46�c%>57�c%=47�n%=�:l%=�b$
I��
I��
I�!��:�log(�msg1("Ecomp",c$)):�
I�	Ȏc$�
J(  �"?eq":�n%�r%=(�B$=�C$)�r%=(B$=C$)
J*  �"?ne":�n%�r%=(�B$<>�C$)�r%=(B$<>C$)
J(  �"?lt":�n%�r%=(�B$<�C$)�r%=(B$<C$)
J$(  �"?gt":�n%�r%=(�B$>�C$)�r%=(B$>C$)
J.*  �"?le":�n%�r%=(�B$<=�C$)�r%=(B$<=C$)
J8*  �"?ge":�n%�r%=(�B$>=�C$)�r%=(B$>=C$)
JB�
JL
=-(r%<>0)
JV
J`ݤeval(A$)
Jj�B$
Jtreturn$=""
J~B$=�param(A$)
J�� �
J�$� � �:�log(�msg1("Eeval",B$)):=0
J�return$=�(�B$)
J�=-1
J�
J�ݤstring(A$)
J�(�a%,s%,l%,s$,b$,B$,C$:a%=0:s%=0:l%=0
J��B$=�param(A$)
J�  �B$,1)="/"�
J�  C$=�value(B$):Ȏ�B$,3)�
J�    �"siz":a%=1
J�    �"low":a%=2
K    �"lef":a%=3:s%=�C$
K
    �"rig":a%=4:s%=�C$
K    �"sta":a%=5:s%=�C$
K    �"len":l%=�C$
K(    �"ins":a%=6:b$=C$
K2    �"upp":a%=7
K<  �
KF  �
KP  s$=B$
KZ  �
Kd
�A$=""
Kn	Ȏa%�
Kx  �1:return$=és$
K�  �2:return$=�lower(s$)
K�  �3:return$=�s$,s%)
K�  �4:return$=�s$,s%)
K�1  �5:�l%<1�return$=�s$,s%)�return$=�s$,s%,l%)
K�  �6:return$=�(�s$,b$))
K�  �7:return$=�upper(s$)
K�  :return$=s$
K��
K�=-1
K�
K�ݤmovefile(A$)
K�
�l%,B$
K�"�print(�msg0("Fmove1")," ","")
LB$=�param(A$)
L)�A$=""��print("",�msg0("Fbad"),""):=0
Ll%=�A$,"*")
L"�l%>0 �
L,&  �A$=�A$,l%-1)+��(�),4)+�A$,l%+1)
L6  �poll(slice%)
L@  ��testfile(A$)<>1
LJ�
LT$�print("",�msg2("Fto",B$,A$),"")
L^#ș"XOS_FSControl",25,B$,A$ �;F%
Lh� (F%�1) �
Lr/  ș"XOS_FSControl",26,B$,A$,%10000010 �;F%
L|�
L��setv("$dest",A$)
L�=-((F%�1)=0)
L�
L�ݤcopyfile(A$)
L��l%,act%,s$,d$,n%,B$,C$
L�act%=0:s$="":d$=""
L�!�print(�msg0("Fcopy")," ","")
L��B$=�param(A$)
L�  �B$,1)="/"�
L�    C$=�value(B$):Ȏ�B$,2)�
L�)      �"ta":act%=1:n%=�C$:�n%=0�n%=50
L�)      �"he":act%=2:n%=�C$:�n%=0�n%=50
L�	    �
M  �
M  �s$=""�s$=B$:�d$=B$
M�
M&
�A$=""
M0)�d$=""��print("",�msg0("Fbad"),""):=0
M:l%=�d$,"*"):�l%>0 �
MD&  �d$=�d$,l%-1)+��(�),4)+�d$,l%+1)
MN  ��testfile(d$)<>1
MX�
Mb$�print("",�msg2("Fto",B$,A$),"")
Mll%=0:Ȏact%�
Mv6  �0:ș"XOS_FSControl",26,s$,d$�;F%:l%=-((F%�1)=0)
M�8  �1:�print(�msg0("Ftail"),"",""):l%=�tail(s$,d$,n%)
M�8  �2:�print(�msg0("Fhead"),"",""):l%=�head(s$,d$,n%)
M��
M��setv("$dest",A$)
M�=l%
M�
M�ݤappend(A$)
M��S%,r%,ff%,tf%,f$,t$,F%
M� �print(�msg0("Fapp")," ","")
M�f$=�param(A$):t$=�param(A$)
M�)�t$=""��print("",�msg0("Fbad"),""):=0
M�$�print("",�msg2("Fto",f$,t$),"")
M�7ff%=�openin(f$):�ff%=0��log(�msg1("Fsource",f$)):=0
NHtf%=�openup(t$):�tf%=0�ș"XOS_File",11,t$,&FFF,,0,0:tf%=�openout(t$)
N�tf%>0 ��#ff%>0�
N<  �#tf%=�#tf%:S%=0:�ș"XOS_GBPB",4,ff%,tmp%,256�,,,r%;F%
N H  �r%<>256�(F%�1)=0�ș"XOS_GBPB",2,tf%,tmp%,256-r%�;F%:�poll(slice%)
N*  S%+=256-r%
N4�S%>=�#ff%�(F%�1)<>0
N>�
NH�cf(ff%):�cf(tf%)
NR=1
N\
Nfݤtail(s$,d$,l%)
Np
�n%,m%,A$
Nz7ff%=�openin(s$):�ff%=0��log(�msg1("Fsource",s$)):=0
N�1ș"XOS_File",11,d$,&FFF,,0,0:tf%=�openout(d$)
N��tf%>0 ��#ff%>0�
N�  n%=0:�
N�&    A$=�#ff%:n%+=1:�poll(slice%*2)
N�  ��#ff%:�#ff%=0
N�  m%=n%-l%:�m%<0�m%=0
N�  n%=0:�
N�&    A$=�#ff%:n%+=1:�poll(slice%*2)
N�
  �n%>=m%
N�  �
N�)    A$=�#ff%:�#tf%,A$:�poll(slice%*2)
N�  ��#ff%
N��
O�cf(ff%):�cf(tf%)
O=1
O
O$ݤhead(s$,d$,l%)
O.
�n%,m%,A$
O87ff%=�openin(s$):�ff%=0��log(�msg1("Fsource",s$)):=0
OB1ș"XOS_File",11,d$,&FFF,,0,0:tf%=�openout(d$)
OL�tf%>0 ��#ff%>0�
OV  n%=0:�
O`/    A$=�#ff%:�#tf%,A$:n%+=1:�poll(slice%*2)
Oj  ��#ff%�n%>=l%
Ot�
O~�cf(ff%):�cf(tf%)
O�=1
O�
O�ݤdelete(A$)
O�
�w%,B$
O�w%=0
O��B$=�param(A$)
O��B$,3)="/wi"�
O�
  w%=�
O�  �
O�@  �w%=0�ș"XOS_File",6,B$�;F%�ș"XOS_FSControl",27,B$,,2�;F%
O��
O�
�A$=""
P=-((F%�1)=0)
P

Pݤdataopen(A$)
P�l%,h%,type%,B$
P(B$=�param(A$)
P2#�A$=""��halt(�msg0("Edata")):=0
P<$�print(�msg0("DataOpen")," ","")
PFh%=�taskhand(B$)
PP&ș"XOS_File",23,A$ � l%,,,,,,type%
PZ�h%<>0 �l%=1 �
Pd  return%=1
Pn4  �print("",A$+" (type &"+�~type%+") to "+B$,"")
Px=  q%!12=0:q%!16=5:q%!20=0:q%!24=0:q%!28=0:q%!32=0:q%!36=0
P�0  q%!40=type%:$(q%+44)=A$+�0:!q%=47+�A$+1��3
P�#  ș"Wimp_SendMessage",18,q%,h%
P��
P�  return%=0
P�-  �h%=0��print("",�msg1("Enotask",B$),"")
P�.  �l%<>1��print("",�msg1("Enofile",A$),"")
P��
P�=return%
P�
P���listtasks
P��l%
P�!�warn_txt(�msg0("TaskList1"))
P��l%=0�taskmax%
Q�taskh%(l%)>0 �
QE  �f_list(�~taskh%(l%),�taskname(taskh%(l%))+" ("+taskn$(l%)+")")
Q7  �taskex$(l%)>""��f_list(""," exit: "+taskex$(l%))
Q"�
Q,�
Q6!�warn_txt(�msg0("TaskList2"))
Q@�l%=0�twmax%
QJ�twh%(l%)>0 �
QT9  �f_list(�~twh%(l%),twcom$(l%)+" ("+twname$(l%)+")")
Q^7  �twexit$(l%)>""��f_list(""," exit: "+twexit$(l%))
Qh�
Qr�
Q|�
Q�
Q�ݤoscli(A$)
Q��B$
Q��B$=�param(A$)
Q�!  ș"XWimp_StartTask",B$ �;F%
Q�
�A$=""
Q�=(F%�1)
Q�
Q�ݤtask(A$)
Q��a%,w%,h%,ts%,B$,C$
Q�wait%=0:a%=0
Q�$�a%+=1:�taskh%(a%)=0�a%=taskmax%
Q�,�taskh%(a%)<>0 ��halt(�msg0("Etask2")):�
R-taskn$(a%)="task"+�a%:taskex$(a%)="":h%=0
R�B$=�param(A$)
R�B$,1)="/"�
R&  C$=�value(B$)
R0  Ȏ�B$,2)�
R:/    �"ki","de":h%=�killtask(C$):B$="":A$=""
RD     �"na","id":taskn$(a%)=C$
RN    �"ex":taskex$(a%)=C$
RX    �"wa":wait%=�
Rb  �
Rl�
Rv
�A$=""
R��B$>""�
R�*  �print(�msg1("TaskStart1",B$),"","")
R�!  ș"XWimp_StartTask",B$ �;F%
R�  �(F%�1)=0 �
R�    taskstart%=a%:ts%=0
R�:    �ts%+=1:�poll(0):�taskstart%=0�ts%>10:taskstart%=0
R�  �
R�  �taskh%(a%)<>0�wait%<>0�
R�!    �:�poll(50):�taskh%(a%)=0
R�  �
R�  h%=-((F%�1)=0)
R��
R�=h%
S
Sݤkilltask(A$)
S
�l%,h%
S �A$=""�
S*-  l%=taskmax%:ȕtaskh%(l%)=0�l%>0:l%-=1:�
S4#  � taskh%(l%)>0 �h%=taskh%(l%)
S>�
SH  �l%=0�taskmax%
SR    �taskh%(l%)>0�
S\A      �taskname(taskh%(l%))=A$ �taskn$(l%)=A$ �h%=taskh%(l%)
Sf	    �
Sp  �
Sz�
S��h%<>0 �
S�  �log("Killing task: "+A$)
S�D  !q%=256:q%!12=0:q%!16=0:ș"Wimp_SendMessage",17,q%,h%:�poll(0)
S��
S�
=-(h%<>0)
S�
S�ݤtesttask(A$)
S�=�taskhand(A$)
S�
S�ݤtaskname(h%)
S�
�f$,n%
S�7f$="":ș"XTaskManager_TaskNameFromHandle",h% �h%;F%
S��(F%�1)=0 �
T*  n%=0:ȕh%?n%>31:f$+=�(h%?n%):n%+=1:�
T�
T=f$
T$
T.ݤtaskhand(A$)
T8�A%,r%,l%,h%,B$
TBr%=0:A%=0:A$=�lower(A$)
TL�
TV<  ș"TaskManager_EnumerateTasks",A%,buffer%,&100 � A%,l%
T`  ptr%=0
Tj)  ȕ(A%>=0 �r%=0 �(ptr%+buffer%)<=l%)
Tt:    h%=buffer%!ptr%:B$=�str(buffer%!(ptr%+4)):ptr%+=16
T~    �A$=�lower(B$) �r%=h%
T�  �
T�� A%<0 � r%<>0
T�=r%
T�
T���sorttasks
T��l%
T��l%=0�taskmax%-1
T�%  �taskh%(l%)=0�taskh%(l%+1)<>0 �
T�!    Ȕtaskh%(l%),taskh%(l%+1)
T�!    Ȕtaskn$(l%),taskn$(l%+1)
T�#    Ȕtaskex$(l%),taskex$(l%+1)
T�  �
U�
U
�
U
Uݤtaskw(A$)
U(#�tw%,w%,ts%,n%,F%,out%,B$,C$,S$
U2tw%=0:wait%=0:F%=0:out%=�
U<&ȕtwh%(tw%)<>0�tw%<twmax%:tw%+=1:�
UF)�tw%=twmax%��halt(�msg0("Etask2")):=0
UP*ș"Wimp_SlotSize",-1,-1�,n%:n%=n%�1024
UZES$=�n%+"k":twname$(tw%)="SDtask"+�tw%:twexit$(tw%)="":twk%(tw%)=0
Ud�B$=�param(A$)
Un�B$,1)="/"�
Ux  C$=�value(B$)
U�  Ȏ�B$,2)�
U�    �"si":S$=C$
U�"    �"na","id":twname$(tw%)=C$
U�    �"ex":twexit$(tw%)=C$
U�3    �"ou":�cf(twf%(tw%)):twf%(tw%)=�openout(C$)
U�    �"wa":wait%=�
U�    �"ke":twk%(tw%)=�
U�     �"ki":�messtw(C$,&808C4)
U�     �"su":�messtw(C$,&808C6)
U�     �"re":�messtw(C$,&808C7)
U�    �"no":out%=�
U�  �
U�  B$=""
V�
V
�A$=""
V�B$>""�
V"C  �print(�msg1("TaskStart1",twname$(tw%)),"",""):twcom$(tw%)=B$
V,3  �twf%(tw%)=0��init_tww(tw%,out%,twname$(tw%))
V6�  ș"XWimp_StartTask","TaskWindow """+B$+""" -quit -wimpslot "+S$+" -name """+twname$(tw%)+""" -task &"+�~task%+" -txt &"+�~(task%+tw%) �;F%
V@1  ts%=0:�ts%+=1:�poll(0):�twh%(tw%)<>0�ts%>10
VJD  �twh%(tw%)=0��cf(twf%(tw%)):twname$(tw%)="":�closew(tww%(tw%))
VT  �wait%<>0�twh%(tw%)<>0�
V^     �:�poll(50):�twh%(tw%)=0
Vh  �
Vr�
V|=�((F%�1)=0)
V�
V���messtw(A$,m%)
V�A$=�lower(A$)
V��tw%:�tw%=0�twmax%
V�)�A$=�lower(twname$(tw%))�twh%(tw%)>0�
V�+  !q%=20:q%!4=0:q%!8=0:q%!12=0:q%!16=m%
V�*  ș"Wimp_SendMessage",17,q%,twh%(tw%)
V�  Ȏm%�
V�M    �&808C6:$twt%(tw%)=�msg1("TaskSusp",twname$(tw%)):�dotitle(tww%(tw%))
V�L    �&808C7:$twt%(tw%)=�msg1("TaskRun",twname$(tw%)):�dotitle(tww%(tw%))
V�  �
V�  tw%=twmax%
V��
W�
W�
W
W&ݤopen(A$)
W0�f%,r%,err$,B$,C$
W:1err$="":f%=0:ȕfileh%(f%)<>0�f%<fmax%:f%+=1:�
WD*�f%=fmax%��halt(�msg0("Efullfile")):=0
WN'fileid$(f%)="":filewr%(f%)=1:r%=&4F
WX�B$=�param(A$)
Wb�B$,1)="/"�
Wl  C$=�value(B$)
Wv  Ȏ�B$,2)�
W�!    �"na","id":fileid$(f%)=C$
W�"    �"re":filewr%(f%)=1:r%=&4F
W�"    �"wr":filewr%(f%)=2:r%=&8F
W�"    �"rw":filewr%(f%)=3:r%=&CF
W�    �"er":err$=C$
W�  �
W�  �
W�  filen$(f%)=B$
W��
W�
�A$=""
W�<�fileid$(f%)>""�ș"XOS_Find",r%,filen$(f%)�fileh%(f%);F%
W��(F%�1)<>0�
W�!  fileh%(f%)=0:fileid$(f%)=""
X;  �err$=""��halt(�msg0("Efilefail")):��addevent(err$,9)
X  �
X4  �filewr%(f%)=2�ș"XOS_File",18,filen$(f%),&FFF
X �
X*=fileh%(f%)
X4
X>ݤclose(A$)
XH�n%,r%,B$,C$
XRr%=0
X\�B$=�param(A$)
Xf  �B$,1)="/"�
Xp    C$=�value(B$)
Xz    Ȏ�B$,2)�
X�       �"na","id":�n%=0�fmax%
X�H        �fileid$(n%)=C$��cf(fileh%(n%)):fileid$(n%)="":n%=fmax%:r%=1
X�
        �
X�	    �
X�  �
X�
�A$=""
X�=r%
X�
X�ݤread(A$)
X��f%,r%,eof$,B$,C$
X�f%=-1:r%=0:eof$=""
X��B$=�param(A$)
X�  �B$,1)="/"�
Y    C$=�value(B$)
Y    Ȏ�B$,2)�
Y&      �"na","id":f%=�fileidtoh(C$)
Y$      �"eof":eof$=C$
Y.	    �
Y8	    �
YB    �f%>-1�f%<fmax%�
YL7      �(filewr%(f%)�1)=0��halt(�msg0("Enoread")):=0
YV4      ��#fileh%(f%)��setv(B$,�#fileh%(f%)):r%=1
Y`1      ��#fileh%(f%)�eof$>""��addevent(eof$,9)
Yj	    �
Yt  �
Y~
�A$=""
Y�=r%
Y�
Y�ݤwrite(A$)
Y��f%,r%,B$,C$
Y�f%=-1:r%=0
Y��B$=�param(A$)
Y�  �B$,1)="/"�
Y�    C$=�value(B$)
Y�    Ȏ�B$,2)�
Y�&      �"na","id":f%=�fileidtoh(C$)
Y�	    �
Y�	    �
Z    �f%>-1�f%<fmax%�
Z
8      �(filewr%(f%)�2)=0��halt(�msg0("Enowrite")):=0
Z      �#fileh%(f%),B$
Z	    �
Z(  �
Z2
�A$=""
Z<=r%
ZF
ZP
ݤptr(A$)
ZZ�f%,r%,s%,B$,C$
Zdf%=-1:s%=-1
Zn�B$=�param(A$)
Zx  �B$,1)="/"�
Z�    C$=�value(B$)
Z�    Ȏ�B$,2)�
Z�&      �"na","id":f%=�fileidtoh(C$)
Z�/      �"se":�lower(C$)="eof"�s%=-2:�s%=�C$
Z�	    �
Z�  �
Z�
�A$=""
Z�r%=0
Z��f%>-1�fileh%(f%)<>0 �
Z�>  �s%=-2��#fileh%(f%)=�#fileh%(f%):��s%>=0��#fileh%(f%)=s%
Z�  r%=�#fileh%(f%)
Z��
Z�=r%
[
[��listfiles
[$�f_list("Identifier","Filename")
["�f%:�f%=0�fmax%
[,1�fileh%(f%)>0��f_list(fileid$(f%),filen$(f%))
[6�
[@�
[J
[Tݤfileidtoh(A$)
[^/�f%:f%=0:ȕfileid$(f%)<>C$�f%<fmax%:f%+=1:�
[h(�f%=fmax%��halt(�msg0("Efileid")):=0
[r=f%
[|
[���menudef(A$)
[�.�n%,l%,m$,n$,a$,b$,B$,C$:n%=-1:m$="":n$=""
[��B$=�param(A$)
[�  �B$,1)="/"�
[�    C$=�value(B$)
[�    Ȏ�B$,2)�
[�      �"co":n%=-2
[�@      �"ic":n%=0:�n%+=1:�ibarid$(n%)=C$�ibar%(n%)=0�n%=imax%
[�7        �n%=imax%�C$=""��log(�msg0("Eicon1")):n%=-5
[�	    �
[�	    �
[�    l%=�B$,":")
[�    �l%>0�
\#      a$=�B$,l%-1):b$=�B$,l%+1)
\      �
\      a$=B$:b$=""
\&	    �
\03    �a$=""�b$=""��halt(�msg1("Emenu",B$)):A$=""
\:!    �m$+�a$<252��n$+�b$<252�
\D      m$+=a$+�0:n$+=b$+�0
\N      �
\X(      �halt(�msg0("Ebigmenu")):A$=""
\b	    �
\l  �
\v
�A$=""
\���m$,1)=" "�m$=�m$,�m$-1)
\�	Ȏn%�
\�)  �-1:usermenu$(0)=m$:usermenu$(1)=n$
\�'  �-2:logmenu$(0)=m$:logmenu$(1)=n$
\�9  :�n%>=0�n%<=imax%�imenu$(n%,0)=m$:imenu$(n%,1)=n$:
\��
\��
\�
\�ݤmakemenu(A$,B$)
\��u$,a$,b$:umenu%=0:u$=""
\��
\�  umenu%+=1
\�)  a$=�getpar(A$,�0):b$=�getpar(B$,�0)
]8  u$+=","+a$:umenu$(umenu%,0)=a$:umenu$(umenu%,1)=b$
]$�A$=""�umenu%=menumax%:u$=�u$,2)
]=u$
] 
]*��listmenu
]4�C$
]>K�usermenu$(0)>""�C$=�makemenu(usermenu$(0),usermenu$(1)):�lmenu("user")
]HI�logmenu$(0)>""�C$=�makemenu(logmenu$(0),logmenu$(1)):�lmenu("debug")
]R�Z%=0�imax%
]\[  �imenu$(Z%,0)>""�C$=�makemenu(imenu$(Z%,0),imenu$(Z%,1)):�lmenu("icon: "+ibarid$(Z%))
]f�
]p�
]z
]���lmenu(t$)
]��l%
]�.�warn_txt("Label         Action ("+t$+")")
]��l%=1�umenu%
]�(  �f_list(umenu$(l%,0),umenu$(l%,1))
]��
]��
]�
]���analyse(A$)
]�
�B$,C$
]��B$=�param(A$)
]�  Ȏ�B$,1)�
]�>    �"/":C$=�value(B$):�log("Qualifier /"+B$+" value="+C$)
^    :�log("Parameter "+B$)
^  �
^
�A$=""
^$�
^.
^8.ݤmulticom(� str$):� split on ; (ASCII 59)
^B$�B$,A%,B%,F%,qc%,bc%,cc%,esc%,l%
^L5B$="":B%=0:qc%=0:bc%=0:cc%=0:esc%=0:F%=0:l%=�str$
^V�str$=""�=""
^`�:B%+=1:A%=��str$,B%,1)
^j�esc%=92 �
^t  B$+=�A%:esc%=0
^~  �
^�  �A%=34�bc%=0 �qc%+=1
^�  �qc%�2=0 �
^�    �A%=40 �bc%+=1
^�    �A%=41 �bc%-=1
^�    �A%=123 �cc%+=1
^�    �A%=125 �cc%-=1
^�    �bc%=0�(qc%�2)=0 �
^�      �A%=59�B%>1 �F%=�
^�	    �
^�  �
^�"  esc%=A%:�F%=0�A%<>92�B$+=�A%
^��
_�F%<>0�B%=l%:�B%=l% �B%+=1
_
str$=�trim(�str$,B%+1))
_B$=�subst(B$)
_=�trim(B$)
_(
_2ݤsubst(A$)
_<�l%,f%,c%,a$,l$,B$:l$=""
_Fc%=�A$,"%"):�c%=0�:=A$
_Pc%=c%-2:�c%<0�c%=0
_ZB$=�A$,c%)
_d�c%+=1:a$=�A$,c%,1)
_n  �l$="\"�
_x    B$+=a$:l$=""
_�	    �
_�    �a$="%"�
_�      �l%=0�vmax%
_�f        �var$(l%,0)>""�var$(l%,0)=�A$,c%+1,�var$(l%,0)) �B$+=var$(l%,1):c%+=�var$(l%,0):l%=vmax%+1
_�      �
_�      �l%=vmax% �B$+="%"
_�      �
_�      B$+=a$:l$=a$
_�	    �
_�  �
_��c%>=�A$
_�=B$
_�
`5ݤparam(� str$):� split a param or qual from line
`$�B$,A%,B%,F%,qc%,bc%,cc%,esc%,l%
`5B$="":B%=0:qc%=0:bc%=0:cc%=0:esc%=0:F%=0:l%=�str$
`"�str$=""�=""
`,�:B%+=1:A%=��str$,B%,1)
`6
�esc%=92�
`@  B$+=�A%:esc%=0
`J  �
`T  �A%=34�bc%=0 �qc%+=1
`^  �qc%�2=0 �
`h    �A%=40 �bc%+=1
`r    �A%=41 �bc%-=1
`|    �A%=123 �cc%+=1
`�    �A%=125 �cc%-=1
`�    �bc%=0�cc%=0 �
`�#      �(A%=32�A%=47)�B%>1 �F%=�
`�	    �
`�  �
`�"  esc%=A%:�F%=0�A%<>92�B$+=�A%
`��
`��F%<>0�B%=l%:�B%=l% �B%+=1
`�B$=�trim(B$)
`�!str$=�cline(�trim(�str$,B%)))
`�
=�stq(B$)
`�
`�
ݤstq(B$)
a
�l%,r%
a9l%=�B$:r%=��B$,1):� strip quotes from around a string
a!�l%=34�r%=34 �B$=�B$,2,�B$-2)
a&�l%=123�r%=125 �
a0/r%=�command(�B$,2,�B$-2)):B$=�vv("$status")
a:�
aD=B$
aN
aXݤupper(A$)
ab�B$,l%,c%:B$=""
al0�l%=1��A$:c%=��A$,l%,1):�c%>96�c%<123�c%-=32
avB$+=�c%:�:=B$
a�
a�ݤcline(A$)
a�L�A$="-"�A$=�subst(�line(stage%)):�log("Continuation line:"+A$):stage%+=1
a�=A$
a�
a�4ݤvalue(� A$):� split value assignment from qual
a�&�B$,A%,B%:ȕ�A$,1)="/":A$=�A$,2):�
a�'A%=�A$,"="):�A%=0�A$=�lower(A$):=""
a�%B$=�A$,A%+1):A$=�lower(�A$,A%-1))
a�
=�stq(B$)
a�
a�
��exit
a��print("",�msg0("Exit"),"")
brun%=�:�
b
bݤdebug(A$)
b 
�A$=""�=1
b*
=�(A$)
b4
b>ݤd(A%,B%,C%,D%)
bH=�(driver)
bR
b\��getenv
bf
�A$,B$
bpș"OS_GetEnv"�A$
bz;A$=�A$,��lower(A$),"!runi")):quiet%=0:file$="":spar$=""
b�/A$=�A$,�A$," ")+1):� discard !Runimage part
b��
b�  B$=�param(A$)
b�  Ȏ�B$,2) �
b�    �"-f":file$=�param(A$)
b�&    �"-a":file$="SLIPdial:default"
b�    �"-q":quiet%=�
b�<    �"-s":sprsz%=��param(A$):�sprsz%<&1B00 �sprsz%=&1B00
b�    :spar$=spar$+B$+" "
b�  �
b�
�B$=""
b��
b�
cݤnextsp(� A$)
c�B$,a%:a%=�A$," ")
c
�a%>0�
c$-  B$=�trim(�A$,a%-1)):A$=�trim(�A$,a%+1))
c.  �
c8  B$=A$:A$=""
cB�
cL=B$
cV
c`��chain(N$)
cj7�setv("$caller",scriptname$):run%=0:�initscript(N$)
ct�
c~
c���initscript(N$)
c� � must be stopped to load...
c�$�run%<>0��log(�msg0("Eload1")):�
c��cleanup
c�p%=0:�spar$>""�
c�:  �:p%+=1:B$=�param(spar$):�setv("p"+�p%,B$):�spar$=""
c��
c��N$>""��loadscript(N$,0) �
c�H  �print(�msg0("Sload2")," "," "):scriptname$=N$:�setv("$script",N$)
c�  run%=�:stage%=0:�unpause
c��
c��
d
d

��cleanup
d-driverno%=0:port%=0:speed%=19200:�clr_txt
d;retry%=1:delay%=30:debug%=�:count%=0:stop$="":error$=""
d(Lcall_lev%=0:caslev%=0:usermenu$()="":logmenu$()="":umenu%=0:alarm$()="":
d22�n%=0�vmax%:�var$(n%,0),1)<>"$"�var$(n%,0)=""
d<�
dF[�n%=0�imax%:�ibar%(n%)>0�!icons%=-2:icons%!4=ibar%(n%):ș"XWimp_DeleteIcon",,icons%�;F%
dPC�:ibarid$()="":ibar%()=0:imenu$()="":alarm$()="":alarmtime%()=0
dZ=twh%()=0:twname$()="":twexit$()="":taskh%()=0:taskn$()=""
dd(taskex$()="":event$()="":umenu$()=""
dnaline$()="":aline%()=0
dx�
d�
d�ݤloadscript(N$,lib%)
d��A$,r%,fh1%
d�#ș"XOS_File",23,N$�r%:�r%<>1�=0
d�r%=0:fh1%=�openin(N$)
d�+�fh1%=0 ��log("File not found: "+N$):=0
d��lib%=0�count%=0:jtl%=1
d�
A$=�#fh1%
d��A$,"slipdial")>0 �
d�  �A$=�#fh1%
d�    �A$,1)<>"#"�A$>"" �
d�      �addline(A$,count%)
d�      �A$,1)=":"�
e!      A$=�A$,2):B$=�param(A$)
eY        �B$="autoexec"�jt%(0)=count%:jt$(0)=B$ �jt%(jtl%)=count%:jt$(jtl%)=B$:jtl%+=1
e      �
e"      count%+=1
e,	    �
e6
  ��#fh1%
e@  � count%>2000 �
eJ*    �cf(fh1%):�halt(�msg0("Elong")):=0
eT  �
e^
  r%=1
eh  �
er�
e|  �halt(�msg0("Eload2")):=0
e��
e�
�cf(fh1%)
e�=r%
e�
e���addline(A$,n%)
e��n%>highest% �
e�  Ȏn%�
e�  �0:�buf0$(199)
e�  �200:�buf1$(199)
e�  �400:�buf2$(199)
e�  �600:�buf3$(199)
e�  �800:�buf4$(199)
e�  �1000:�buf5$(199)
f  �1200:�buf6$(199)
f  �1400:�buf7$(199)
f  �1600:�buf8$(199)
f&  �1800:�buf9$(199)
f0  �2000:�bufA$(199)
f:  �
fD  highest%=n%
fN�
fXȎ(n%�200)�
fb�0:buf0$(n%)=A$
fl�1:buf1$(n%-200)=A$
fv�2:buf2$(n%-400)=A$
f��3:buf3$(n%-600)=A$
f��4:buf4$(n%-800)=A$
f��5:buf5$(n%-1000)=A$
f��6:buf6$(n%-1200)=A$
f��7:buf7$(n%-1400)=A$
f��8:buf8$(n%-1600)=A$
f��9:buf9$(n%-1800)=A$
f��10:bufA$(n%-2000)=A$
f��
f��
f�
f�ݤline(n%)
f��n%>highest%�=""
g�A$:Ȏ(n%�200)�
g�0:A$=buf0$(n%)
g�1:A$=buf1$(n%-200)
g �2:A$=buf2$(n%-400)
g*�3:A$=buf3$(n%-600)
g4�4:A$=buf4$(n%-800)
g>�5:A$=buf5$(n%-1000)
gH�6:A$=buf6$(n%-1200)
gR�7:A$=buf7$(n%-1400)
g\�8:A$=buf8$(n%-1600)
gf�9:A$=buf9$(n%-1800)
gp�10:A$=bufA$(n%-2000)
gz:A$=""
g��
g�=A$
g�
g�ݤlibrary(lib_p$)
g��r%,ae%,B$
g�,B$=�param(lib_p$):�log(�msg1("Slib",B$))
g�ae%=jt%(0)
g�r%=�loadscript(B$,1)
g�7�ae%<>jt%(0)�r%<>0��addevent("call auto "+lib_p$,0)
g�=r%
g�
g���listscript(A$)
g��st%,fn%
h�warn_txt(�msg0("Slist"))
hst%=��param(A$):fn%=�A$
h�st%<0 �st%=0
h$!�fn%=0�fn%>count% �fn%=count%
h.�c%=st%�fn%
h8"  A$=�c%:�c%=stage% �A$="*"+A$
hB  A$=�"   "+A$,4)+" "
hL  �warn_txt(A$+�line(c%))
hV�
h`�
hj
ht��listjt
h~�f_list("Label","Line")
h�0�n%:�n%=0�jtl%-1:�f_list(jt$(n%),�jt%(n%)):�
h��
h�
h�ݤmodemdrv(A$)
h��r%:r%=0
h��setv("$init","ATZQ0V1")
h��setv("$busy","BUSY")
h��setv("$conn","CONNECT")
h�!�setv("$nocarr","NO CARRIER")
h�"�setv("$nodial","NO DIALTONE")
h��A$>""�
h�'  �A$,".")=0 �A$="SlipDialDrv:"+A$
i  r%=�source(A$)
i
�
i=r%
i
i(ݤsource(file$)
i2�r%,fh1%,B$,C$
i<r%=0
iF�B$=�param(file$)
iP  fh1%=�openin(B$)
iZ  �fh1%=0�
id$    �log(�msg1("Fsource",B$)):=0
in	    �
ix    �C$=�#fh1%
i�      �C$,1)<>"#"�C$>"" �
i�        r%=�command(C$)
i�      �
i�    ��#fh1%
i�    �cf(fh1%)
i�  �
i�
�file$=""
i�=r%
i�
i���help(A$)
i�'�fh1%,n%,r%,B$,C$:msgc%=�:msg$()=""
i��A$=""�
i�%  �addmessage(�msg0("Hannounce"))
j  n%=0:C$=""
j  �B$=""
j	    �
j"C      ș"XOS_GBPB",9,sdlang$+".help",tmp%,1,n%,255,"*"�,,,r%,n%
j,+      C$=�str(tmp%):B$+=C$+�15-�C$," ")
j6    �n%=-1��B$>60
j@    �addmessage(B$)
jJ  �n%=-1:�addmessage("")
jT  �
j^+  fh1%=�openin(sdlang$+".Help."+A$+"*")
jh  �fh1%>0�
jr&    �addmessage("Help on "+A$+":")
j|    n%=0
j�	    �
j�0      B$=�#fh1%:�B$>""�n%+=1:�addmessage(B$)
j�    ��#fh1%�n%>msgmax%
j�!    �addmessage(""):�cf(fh1%)
j�	    �
j�    �help("")
j�  �
j��
j��
j�
j���quit(mess$)
j�#�print(�msg0("Quit2"),mess$,"")
j��finish
k�
k�
k
k&��loadconfig
k0>fh1%=�openin(sdres$+".!Config"):�fh1%=0 ��0,"No config!":�
k:�setinv(config%,1,�#fh1%)
kD�setinv(config%,2,�#fh1%)
kN�setinv(config%,3,�#fh1%)
kX�upd_icon(config%,4,�#fh1%)
kb(��#fh1%��upd_icon(config%,7,�#fh1%)
kl(��#fh1%��upd_icon(config%,8,�#fh1%)
kv)��#fh1%��upd_icon(config%,12,�#fh1%)
k�'��#fh1%��setinv(config%,13,�#fh1%)
k�'��#fh1%��setinv(config%,14,�#fh1%)
k�
�cf(fh1%)
k�1txty%=��ic_str(config%,7):�txty%<24 �txty%=24
k�txtx%=��ic_str(config%,8)
k�"autowinpos%=�rdinv(config%,13)
k�.  �txtx%<40 �txtx%=40��txtx%>240�txtx%=240
k� twwmax%=��ic_str(config%,12)
k�6  �twwmax%<10 �twwmax%=10��twwmax%>100�twwmax%=100
k�ș"OS_Byte",121,(2�&80)�,A%
k�D�file$=""��rdinv(config%,3)=0 �A%<>&FF �file$=�ic_str(config%,4)
k�:�quiet%=0��rdinv(config%,1)=0 ��cfront(status%,0,-200)
k��
l
l��saveconfig
l/fh1%=�openout(sdres$+".!Config"):�fh1%=0 ��
l �#fh1%,�rdinv(config%,1)
l*�#fh1%,�rdinv(config%,2)
l4�#fh1%,�rdinv(config%,3)
l>�#fh1%,�ic_str(config%,4)
lH�#fh1%,�ic_str(config%,7)
lR�#fh1%,�ic_str(config%,8)
l\�#fh1%,�ic_str(config%,12)
lf<�#fh1%,�rdinv(config%,13):autowinpos%=�rdinv(config%,13)
lp�#fh1%,�rdinv(config%,14)
lz
�cf(fh1%)
l��rdinv(config%,14)=0 �
l�2  fh1%=�openout(sdres$+".!windows"):�fh1%=0 ��
l�-  !q%=status%:ș"Wimp_GetWindowState",,q%
l�  �#fh1%,�(q%!4)
l�  �#fh1%,�(q%!8)
l�  �cf(fh1%)
l��
l��
l�
l�ݤlomem(A%)
l��-�<(A%+&2000) �=�
l�=�
l�
mݤnewsrate(A$)
m�f$,tim,cps%:cps%=0
mf$=�param(A$):�f$>""�
m$n  tim=�file_age("<Mail$Dir>.folder."+f$+"News")-�file_age("<Mail$Dir>.folder."+f$+"NG"):�log("Time "+�tim)
m.D  �tim>0�cps%=100*�file_size("<Mail$Dir>.folder."+f$+"News")/tim
m8�
mB	=cps%
mL
mVݤfile_age(f$)
m`�found%,load%,exec%
mj-ș"XOS_File",17,f$�found%,,load%,exec%;F%
mt6�found%=0 �(F%�1)<>0 ��log(�msg1("Enofile",f$)):=0
m~=(load%�&FF)*2^32+exec%
m�
m�ݤfile_size(f$)
m��size%,found%
m�)ș"XOS_File",17,f$�found%,,,,size%;F%
m�6�found%=0 �(F%�1)<>0 ��log(�msg1("Enofile",f$)):=0
m�
=size%
m�
m�ݤtrim(A$)
m�&� strips leading & trailing spaces
m��B$:�A$>""��trimstr%,A$,B$
m�=B$
m�
nݤlower(A$)
n
�A$>""��mklcase%,A$
n=A$
n
n(
ݤstr(a%)
n2�dummy%,B$
n<�getline%,dummy%,a%,B$
nF=B$
nP
nZ��loadcode
nd
�o%,l%,F%
nn.ș"XOS_File",17,sdres$+".code"�o%,,,,l%;F%
nx�o%=1�l%>0�(F%�1)=0�
n�  �mcode% l%
n�=  cpylcase%=mcode%+4:getpath%=mcode%+8:getline%=mcode%+12
n�>  getlinez%=mcode%+16:getstr%=mcode%+20:mklcase%=mcode%+24
n�A  trimstr%=mcode%+28:chkdelart%=mcode%+32:headerno%=mcode%+36
n�  smatch%=mcode%+40
n�1  ș"XOS_File",16,sdres$+".code",mcode%,0�;F%
n�3  �(F%�1)��0,"Help! I can't find my Code file!"
n�  �
n�+  �0,"Help! I can't find my Code file!"
n��
n��
n�
n�ݤclaimmem(� var%,size%,A$)
o�F%,ret%
o�osver%<&A5 �
o(  ș"XOS_Module",6,,,size%�,,var%;F%
o"  �(F%�1)�var%=0
o,  ret%=var%
o6  �
o@A  ș&20066,0,-1,size%,-1,0,-1,0,0,Task$+"_"+A$�,ret%,,var%;F%
oJ  �(F%�1)�var%=0:ret%=0
oT�
o^	=ret%
oh
or��releasemem(� var%)
o|�F%
o��var%>0�
o�  �osver%<&A5 �
o�'  ș"XOS_Module",7,,var%�;F%:var%=0
o�1  ș"XOS_ChangeDynamicArea",1,(-16*1024*1024)
o�  �
o�   ș&20066,1,var%�;F%:var%=0
o�  �
o��
o��
o�
o���tidydynareas
o�
�A%,N%,P%
o��osver%>&A4 �
p  ș&66,3,-1�,A%
p  ȕA%<>-1
p    ș&66,2,A%�,,,,,,,,P%
p&    ș&66,3,A%�,N%
p01    �str(P%),1+�Task$)=Task$+"_"�ș&66,1,A%
p:
    A%=N%
pD  �
pN�
pX�
pb
plݤgetpar(� A$,s$)
pv
�B$,l%
p�l%=�A$,s$)
p�
�l%>0�
p�  B$=�A$,l%-1):A$=�A$,l%+1)
p�  �
p�  B$=A$:A$=""
p��
p�=B$
p�
p���startmsgtrans
p�=ș"XMessageTrans_FileInfo",,sdlang$+".messages"�,,buf%;F%
p�-�(F%�1)��0,"Couldn't load Messages file!"
p��msgdesc%16,msgbuf% buf%
p�Bș"MessageTrans_OpenFile",msgdesc%,sdlang$+".messages",msgbuf%
q�
q
q��endmsgtrans
q 3�msgdesc%>0�ș"MessageTrans_CloseFile",msgdesc%
q*�
q4
q>ݤmsg0(t$)
qH�s%
qR,ș"MessageTrans_Lookup",msgdesc%,t$�,,s%
q\
=�str(s%)
qfݤmsg1(t$,a$)
qp�s%
qz8ș"MessageTrans_Lookup",msgdesc%,t$,tmp%,255,a$�,,s%
q�
=�str(s%)
q�ݤmsg2(t$,a$,b$)
q��s%
q�;ș"MessageTrans_Lookup",msgdesc%,t$,tmp%,255,a$,b$�,,s%
q�
=�str(s%)
q�ݤmsg3(t$,a$,b$,c$)
q��s%
q�>ș"MessageTrans_Lookup",msgdesc%,t$,tmp%,255,a$,b$,c$�,,s%
q�
=�str(s%)
�
00000000  0d 00 0a 10 f4 20 3e 21  52 75 6e 69 6d 61 67 65  |..... >!Runimage|
00000010  0d 00 14 14 ee 85 20 f6  3a f1 22 20 61 74 20 22  |...... .:." at "|
00000020  3b 9e 3a e0 0d 00 1e 0d  e0 3d 93 2b 26 32 30 30  |;.:......=.+&200|
00000030  30 0d 00 28 09 f2 69 6e  69 74 0d 00 32 0d f2 6c  |0..(..init..2..l|
00000040  6f 61 64 63 6f 64 65 0d  00 3c 12 f2 73 74 61 72  |oadcode..<..star|
00000050  74 6d 73 67 74 72 61 6e  73 0d 00 46 0b f2 67 65  |tmsgtrans..F..ge|
00000060  74 65 6e 76 0d 00 50 0d  f2 69 6e 69 74 77 69 6d  |tenv..P..initwim|
00000070  70 0d 00 5a 11 ee 85 f2  65 72 72 6f 72 62 6f 78  |p..Z....errorbox|
00000080  3a e0 0d 00 64 0f f2 6c  6f 61 64 63 6f 6e 66 69  |:...d..loadconfi|
00000090  67 0d 00 6e 27 c8 95 a4  6c 6f 6d 65 6d 28 74 78  |g..n'...lomem(tx|
000000a0  74 78 25 81 32 2a 74 78  74 79 25 29 3a e0 3d 93  |tx%.2*txty%):.=.|
000000b0  2b 26 32 30 30 30 3a ce  0d 00 78 0d f2 69 6e 69  |+&2000:...x..ini|
000000c0  74 5f 74 78 74 0d 00 82  22 c8 99 22 58 4f 53 5f  |t_txt...".."XOS_|
000000d0  46 69 6c 65 22 2c 31 37  2c 66 69 6c 65 24 b8 41  |File",17,file$.A|
000000e0  25 2c 2c 2c 2c 53 25 0d  00 8c 1c c8 95 a4 6c 6f  |%,,,,S%.......lo|
000000f0  6d 65 6d 28 53 25 29 3a  e0 3d 93 2b 26 32 30 30  |mem(S%):.=.+&200|
00000100  30 3a ce 0d 00 96 16 f2  69 6e 69 74 73 63 72 69  |0:......initscri|
00000110  70 74 28 66 69 6c 65 24  29 0d 00 a0 14 41 25 3d  |pt(file$)....A%=|
00000120  a4 6d 6f 64 65 6d 64 72  76 28 22 22 29 0d 00 aa  |.modemdrv("")...|
00000130  05 f5 0d 00 b4 0e 20 20  73 74 61 67 65 25 3d 30  |......  stage%=0|
00000140  0d 00 be 07 20 20 f5 0d  00 c8 38 20 20 20 20 e7  |....  ....8    .|
00000150  a4 6c 6f 6d 65 6d 28 30  29 8c f2 77 61 72 6e 5f  |.lomem(0)..warn_|
00000160  74 78 74 28 a4 6d 73 67  30 28 22 4d 6f 72 65 4d  |txt(.msg0("MoreM|
00000170  65 6d 22 29 29 3a e0 3d  93 2b 26 32 30 30 30 0d  |em")):.=.+&2000.|
00000180  00 d2 3d 20 20 20 20 e7  a4 74 65 73 74 65 76 65  |..=    ..testeve|
00000190  6e 74 20 8c 41 24 3d a4  67 65 74 65 76 65 6e 74  |nt .A$=.getevent|
000001a0  20 8b 41 24 3d a4 6c 69  6e 65 28 73 74 61 67 65  | .A$=.line(stage|
000001b0  25 29 3a 73 74 61 67 65  25 2b 3d 31 0d 00 dc 1c  |%):stage%+=1....|
000001c0  20 20 20 20 72 65 74 75  72 6e 25 3d a4 63 6f 6d  |    return%=.com|
000001d0  6d 61 6e 64 28 41 24 29  0d 00 e6 1d 20 20 fd 73  |mand(A$)....  .s|
000001e0  74 61 67 65 25 3e 3d 63  6f 75 6e 74 25 20 84 72  |tage%>=count% .r|
000001f0  75 6e 25 3d a3 0d 00 f0  38 20 20 72 75 6e 25 3d  |un%=....8  run%=|
00000200  a3 3a e7 73 74 61 67 65  25 3e 3d 63 6f 75 6e 74  |.:.stage%>=count|
00000210  25 8c f2 70 72 69 6e 74  28 22 22 2c a4 6d 73 67  |%..print("",.msg|
00000220  30 28 22 49 64 6c 65 22  29 2c 22 22 29 0d 00 fa  |0("Idle"),"")...|
00000230  0d 20 20 f2 70 61 75 73  65 64 0d 01 04 06 fd 30  |.  .paused.....0|
00000240  0d 01 0e 05 e0 0d 01 18  04 0d 01 22 20 f4 20 73  |..........." . s|
00000250  65 74 20 75 70 20 75 6e  69 76 65 72 73 61 6c 20  |et up universal |
00000260  76 61 72 69 61 62 6c 65  73 0d 01 2c 0a dd f2 69  |variables..,...i|
00000270  6e 69 74 0d 01 36 1a de  20 74 6d 70 25 20 32 35  |nit..6.. tmp% 25|
00000280  36 2c 64 72 69 76 65 72  20 34 30 39 36 0d 01 40  |6,driver 4096..@|
00000290  22 c8 99 22 4f 53 5f 42  79 74 65 22 2c 31 32 39  |".."OS_Byte",129|
000002a0  2c 30 2c 26 46 46 20 b8  2c 6f 73 76 65 72 25 0d  |,0,&FF .,osver%.|
000002b0  01 4a 10 73 70 72 73 7a  25 3d 26 31 42 30 30 0d  |.J.sprsz%=&1B00.|
000002c0  01 54 0d 72 65 64 69 61  6c 25 3d a3 0d 01 5e 47  |.T.redial%=...^G|
000002d0  66 69 6c 65 6e 6f 25 3d  31 3a 74 6f 74 61 6c 25  |fileno%=1:total%|
000002e0  3d 30 3a 70 61 75 73 65  25 3d a3 3a 73 74 6f 70  |=0:pause%=.:stop|
000002f0  25 3d a3 3a 72 75 6e 25  3d a3 3a 74 61 73 6b 73  |%=.:run%=.:tasks|
00000300  74 61 72 74 25 3d 30 3a  68 69 67 68 65 73 74 25  |tart%=0:highest%|
00000310  3d 2d 31 0d 01 68 4b 64  65 76 69 63 65 25 3d a3  |=-1..hKdevice%=.|
00000320  3a 6f 6c 64 6c 69 6e 65  25 3d 30 3a 64 65 62 75  |:oldline%=0:debu|
00000330  67 25 3d a3 3a 65 72 72  43 25 3d 30 3a 66 68 31  |g%=.:errC%=0:fh1|
00000340  25 3d 30 3a 66 68 32 25  3d 30 3a 6f 6e 6c 69 6e  |%=0:fh2%=0:onlin|
00000350  65 24 3d 22 22 3a 73 74  61 67 65 25 3d 30 0d 01  |e$="":stage%=0..|
00000360  72 36 73 75 62 6d 61 78  25 3d 32 30 3a de 63 61  |r6submax%=20:.ca|
00000370  6c 6c 5f 72 65 74 25 28  73 75 62 6d 61 78 25 29  |ll_ret%(submax%)|
00000380  2c 63 61 6c 6c 5f 6c 6f  63 6b 25 28 73 75 62 6d  |,call_lock%(subm|
00000390  61 78 25 29 0d 01 7c 44  63 61 73 6d 61 78 25 3d  |ax%)..|Dcasmax%=|
000003a0  31 30 3a de 63 61 73 65  24 28 63 61 73 6d 61 78  |10:.case$(casmax|
000003b0  25 29 2c 63 61 73 6d 61  74 63 68 25 20 63 61 73  |%),casmatch% cas|
000003c0  6d 61 78 25 2c 61 6c 69  6e 65 24 28 33 29 2c 61  |max%,aline$(3),a|
000003d0  6c 69 6e 65 25 28 33 29  0d 01 86 3c 6d 65 6e 75  |line%(3)...<menu|
000003e0  6d 61 78 25 3d 33 30 3a  de 75 6d 65 6e 75 24 28  |max%=30:.umenu$(|
000003f0  6d 65 6e 75 6d 61 78 25  2c 31 29 2c 75 73 65 72  |menumax%,1),user|
00000400  6d 65 6e 75 24 28 31 29  2c 6c 6f 67 6d 65 6e 75  |menu$(1),logmenu|
00000410  24 28 31 29 0d 01 90 38  6a 74 6d 61 78 25 3d 35  |$(1)...8jtmax%=5|
00000420  30 3a de 6a 74 25 28 6a  74 6d 61 78 25 29 2c 6a  |0:.jt%(jtmax%),j|
00000430  74 24 28 6a 74 6d 61 78  25 29 3a 6a 74 6c 25 3d  |t$(jtmax%):jtl%=|
00000440  30 3a 72 65 74 75 72 6e  24 3d 22 22 0d 01 9a 40  |0:return$=""...@|
00000450  76 6d 61 78 25 3d 31 35  30 3a de 76 61 72 24 28  |vmax%=150:.var$(|
00000460  76 6d 61 78 25 2c 31 29  2c 73 34 24 28 33 29 2c  |vmax%,1),s4$(3),|
00000470  74 67 65 74 24 28 33 29  2c 69 68 69 73 74 24 28  |tget$(3),ihist$(|
00000480  31 30 29 3a 69 68 69 73  74 25 3d 30 0d 01 a4 43  |10):ihist%=0...C|
00000490  61 6c 6d 61 78 25 3d 31  30 3a de 61 6c 61 72 6d  |almax%=10:.alarm|
000004a0  24 28 61 6c 6d 61 78 25  2c 31 29 2c 61 6c 61 72  |$(almax%,1),alar|
000004b0  6d 74 69 6d 65 25 28 61  6c 6d 61 78 25 29 2c 61  |mtime%(almax%),a|
000004c0  6c 61 72 6d 69 64 24 28  61 6c 6d 61 78 25 29 0d  |larmid$(almax%).|
000004d0  01 ae 37 69 6d 61 78 25  3d 38 3a de 69 66 69 6c  |..7imax%=8:.ifil|
000004e0  65 24 28 69 6d 61 78 25  29 2c 69 62 61 72 24 28  |e$(imax%),ibar$(|
000004f0  69 6d 61 78 25 29 2c 69  6d 65 6e 75 24 28 69 6d  |imax%),imenu$(im|
00000500  61 78 25 2c 31 29 0d 01  b8 20 de 69 62 61 72 69  |ax%,1)... .ibari|
00000510  64 24 28 69 6d 61 78 25  29 2c 69 62 61 72 25 28  |d$(imax%),ibar%(|
00000520  69 6d 61 78 25 29 0d 01  c2 43 74 61 73 6b 6d 61  |imax%)...Ctaskma|
00000530  78 25 3d 38 3a de 74 61  73 6b 65 78 24 28 74 61  |x%=8:.taskex$(ta|
00000540  73 6b 6d 61 78 25 29 2c  74 61 73 6b 6e 24 28 74  |skmax%),taskn$(t|
00000550  61 73 6b 6d 61 78 25 29  2c 74 61 73 6b 68 25 28  |askmax%),taskh%(|
00000560  74 61 73 6b 6d 61 78 25  29 0d 01 cc 3c 74 77 6d  |taskmax%)...<twm|
00000570  61 78 25 3d 38 3a de 74  77 65 78 69 74 24 28 74  |ax%=8:.twexit$(t|
00000580  77 6d 61 78 25 29 2c 74  77 6e 61 6d 65 24 28 74  |wmax%),twname$(t|
00000590  77 6d 61 78 25 29 2c 74  77 63 6f 6d 24 28 74 77  |wmax%),twcom$(tw|
000005a0  6d 61 78 25 29 0d 01 d6  3a de 74 77 68 25 28 74  |max%)...:.twh%(t|
000005b0  77 6d 61 78 25 29 2c 74  77 66 25 28 74 77 6d 61  |wmax%),twf%(twma|
000005c0  78 25 29 2c 74 64 61 74  61 24 28 74 77 6d 61 78  |x%),tdata$(twmax|
000005d0  25 29 2c 74 77 77 25 28  74 77 6d 61 78 25 29 0d  |%),tww%(twmax%).|
000005e0  01 e0 38 de 74 77 79 25  28 74 77 6d 61 78 25 29  |..8.twy%(twmax%)|
000005f0  2c 74 77 6f 25 28 74 77  6d 61 78 25 29 2c 74 77  |,two%(twmax%),tw|
00000600  6b 25 28 74 77 6d 61 78  25 29 2c 74 77 74 25 28  |k%(twmax%),twt%(|
00000610  74 77 6d 61 78 25 29 0d  01 ea 3b 74 67 65 74 25  |twmax%)...;tget%|
00000620  3d 2d 31 3a 74 77 77 25  28 29 3d 30 3a 74 77 6f  |=-1:tww%()=0:two|
00000630  25 28 29 3d 30 3a 74 77  77 6d 61 78 25 3d 32 39  |%()=0:twwmax%=29|
00000640  3a 74 78 74 78 25 3d 38  30 3a 74 78 74 79 25 3d  |:txtx%=80:txty%=|
00000650  32 34 0d 01 f4 47 6d 61  78 65 76 25 3d 31 30 3a  |24...Gmaxev%=10:|
00000660  de 65 76 65 6e 74 24 28  6d 61 78 65 76 25 29 2c  |.event$(maxev%),|
00000670  65 76 65 6e 74 25 28 6d  61 78 65 76 25 29 2c 65  |event%(maxev%),e|
00000680  76 74 79 70 65 25 28 6d  61 78 65 76 25 29 3a 65  |vtype%(maxev%):e|
00000690  76 65 6e 74 25 28 29 3d  b9 0d 01 fe 47 66 6d 61  |vent%()=....Gfma|
000006a0  78 25 3d 31 30 3a de 66  69 6c 65 68 25 28 66 6d  |x%=10:.fileh%(fm|
000006b0  61 78 25 29 2c 66 69 6c  65 69 64 24 28 66 6d 61  |ax%),fileid$(fma|
000006c0  78 25 29 2c 66 69 6c 65  77 72 25 28 66 6d 61 78  |x%),filewr%(fmax|
000006d0  25 29 2c 66 69 6c 65 6e  24 28 66 6d 61 78 25 29  |%),filen$(fmax%)|
000006e0  0d 02 08 48 6d 73 67 6d  61 78 25 3d 32 35 3a 6d  |...Hmsgmax%=25:m|
000006f0  73 67 5f 63 73 24 3d 22  22 3a 6d 73 67 5f 63 65  |sg_cs$="":msg_ce|
00000700  24 3d 22 22 3a 6d 73 67  5f 63 6d 25 3d 30 3a 6d  |$="":msg_cm%=0:m|
00000710  73 67 5f 63 73 25 3d 30  3a 6d 73 67 63 25 3d b9  |sg_cs%=0:msgc%=.|
00000720  3a 6d 73 67 74 25 3d 30  0d 02 12 22 73 64 64 69  |:msgt%=0..."sddi|
00000730  72 24 3d a4 76 61 72 76  61 6c 28 22 53 6c 69 70  |r$=.varval("Slip|
00000740  64 69 61 6c 24 64 69 72  22 29 0d 02 1c 28 73 64  |dial$dir")...(sd|
00000750  72 65 73 24 3d a4 76 61  72 76 61 6c 28 22 53 6c  |res$=.varval("Sl|
00000760  69 70 64 69 61 6c 24 72  65 73 6f 75 72 63 65 73  |ipdial$resources|
00000770  22 29 0d 02 26 39 73 64  6c 61 6e 67 24 3d 73 64  |")..&9sdlang$=sd|
00000780  72 65 73 24 2b 22 2e 55  4b 22 3a 63 68 24 3d 22  |res$+".UK":ch$="|
00000790  22 3a 61 75 74 6f 77 69  6e 70 6f 73 25 3d 31 3a  |":autowinpos%=1:|
000007a0  6e 75 6d 24 3d 22 6e 6f  6e 65 22 0d 02 30 05 e1  |num$="none"..0..|
000007b0  0d 02 3a 04 0d 02 44 27  f4 20 73 65 74 20 75 70  |..:...D'. set up|
000007c0  20 77 69 6d 70 20 61 6e  64 20 72 65 6c 61 74 65  | wimp and relate|
000007d0  64 20 76 61 72 69 61 62  6c 65 73 0d 02 4e 0e dd  |d variables..N..|
000007e0  f2 69 6e 69 74 77 69 6d  70 0d 02 58 33 de 20 73  |.initwimp..X3. s|
000007f0  70 72 69 74 65 73 25 20  73 70 72 73 7a 25 3a 21  |prites% sprsz%:!|
00000800  73 70 72 69 74 65 73 25  3d 73 70 72 73 7a 25 3a  |sprites%=sprsz%:|
00000810  73 70 72 69 74 65 73 25  21 38 3d 30 0d 02 62 22  |sprites%!8=0..b"|
00000820  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
00000830  2c 26 31 30 39 2c 73 70  72 69 74 65 73 25 0d 02  |,&109,sprites%..|
00000840  6c 42 e7 a4 6d 65 72 67  65 73 70 72 69 74 65 73  |lB..mergesprites|
00000850  28 73 64 72 65 73 24 2b  22 2e 53 70 72 69 74 65  |(sdres$+".Sprite|
00000860  73 22 29 3d 30 8c 85 30  2c 22 43 6f 75 6c 64 6e  |s")=0..0,"Couldn|
00000870  27 74 20 6c 6f 61 64 20  73 70 72 69 74 65 73 22  |'t load sprites"|
00000880  0d 02 76 2f de 20 74 61  73 6b 69 64 25 34 3a 24  |..v/. taskid%4:$|
00000890  74 61 73 6b 69 64 25 3d  22 54 41 53 4b 22 3a 54  |taskid%="TASK":T|
000008a0  61 73 6b 24 3d 22 53 4c  49 50 64 69 61 6c 22 0d  |ask$="SLIPdial".|
000008b0  02 80 1b de 20 6d 73 67  6c 69 73 74 25 34 3a 21  |.... msglist%4:!|
000008c0  6d 73 67 6c 69 73 74 25  3d 30 0d 02 8a 45 c8 99  |msglist%=0...E..|
000008d0  20 22 57 69 6d 70 5f 49  6e 69 74 69 61 6c 69 73  | "Wimp_Initialis|
000008e0  65 22 2c 33 31 30 2c 21  74 61 73 6b 69 64 25 2c  |e",310,!taskid%,|
000008f0  54 61 73 6b 24 2c 6d 73  67 6c 69 73 74 25 20 b8  |Task$,msglist% .|
00000900  20 76 65 72 73 69 6f 6e  25 2c 74 61 73 6b 25 0d  | version%,task%.|
00000910  02 94 2e e7 76 65 72 73  69 6f 6e 25 3c 33 31 30  |....version%<310|
00000920  20 8c 85 31 2c 22 57 69  6e 64 6f 77 20 4d 61 6e  | ..1,"Window Man|
00000930  61 67 65 72 20 74 6f 6f  20 6f 6c 64 22 0d 02 9e  |ager too old"...|
00000940  13 73 74 77 78 25 3d 30  3a 73 74 77 79 25 3d 30  |.stwx%=0:stwy%=0|
00000950  0d 02 a8 24 66 68 31 25  3d a4 6f 70 65 6e 69 6e  |...$fh1%=.openin|
00000960  28 73 64 72 65 73 24 2b  22 2e 21 77 69 6e 64 6f  |(sdres$+".!windo|
00000970  77 73 22 29 0d 02 b2 0c  e7 66 68 31 25 3e 30 8c  |ws").....fh1%>0.|
00000980  0d 02 bc 21 20 20 73 74  77 78 25 3d bb be 23 66  |...!  stwx%=..#f|
00000990  68 31 25 3a 73 74 77 79  25 3d bb be 23 66 68 31  |h1%:stwy%=..#fh1|
000009a0  25 0d 02 c6 05 cd 0d 02  d0 0d f2 63 66 28 66 68  |%..........cf(fh|
000009b0  31 25 29 0d 02 da 35 de  20 71 25 20 26 34 30 30  |1%)...5. q% &400|
000009c0  2c 6d 65 6e 75 64 61 74  61 25 20 26 32 30 30 2c  |,menudata% &200,|
000009d0  69 63 6f 6e 73 25 20 26  31 30 30 2c 62 75 66 66  |icons% &100,buff|
000009e0  65 72 25 20 26 31 30 30  0d 02 e4 30 c8 99 20 22  |er% &100...0.. "|
000009f0  57 69 6d 70 5f 4f 70 65  6e 54 65 6d 70 6c 61 74  |Wimp_OpenTemplat|
00000a00  65 22 2c 2c 73 64 6c 61  6e 67 24 2b 22 2e 54 65  |e",,sdlang$+".Te|
00000a10  6d 70 6c 61 74 65 73 22  0d 02 ee 1b 69 6e 66 6f  |mplates"....info|
00000a20  25 3d a4 6c 6f 61 64 74  65 6d 70 28 22 49 6e 66  |%=.loadtemp("Inf|
00000a30  6f 22 29 0d 02 f8 1f 73  74 61 74 75 73 25 3d a4  |o")....status%=.|
00000a40  6c 6f 61 64 74 65 6d 70  28 22 53 74 61 74 75 73  |loadtemp("Status|
00000a50  22 29 0d 03 02 1c 74 78  74 25 3d a4 6c 6f 61 64  |")....txt%=.load|
00000a60  74 65 6d 70 28 22 74 78  74 77 69 6e 22 29 0d 03  |temp("txtwin")..|
00000a70  0c 1f 63 6f 6e 66 69 67  25 3d a4 6c 6f 61 64 74  |..config%=.loadt|
00000a80  65 6d 70 28 22 63 6f 6e  66 69 67 22 29 0d 03 16  |emp("config")...|
00000a90  1e 6d 65 73 73 25 3d a4  6c 6f 61 64 74 65 6d 70  |.mess%=.loadtemp|
00000aa0  28 22 6d 65 73 73 61 67  65 22 29 0d 03 20 1d 69  |("message").. .i|
00000ab0  6e 70 75 74 25 3d a4 6c  6f 61 64 74 65 6d 70 28  |nput%=.loadtemp(|
00000ac0  22 69 6e 70 75 74 22 29  0d 03 2a 1d 79 65 73 6e  |"input")..*.yesn|
00000ad0  6f 25 3d a4 6c 6f 61 64  74 65 6d 70 28 22 79 65  |o%=.loadtemp("ye|
00000ae0  73 6e 6f 22 29 0d 03 34  1b c8 99 20 22 57 69 6d  |sno")..4... "Wim|
00000af0  70 5f 43 6c 6f 73 65 54  65 6d 70 6c 61 74 65 22  |p_CloseTemplate"|
00000b00  0d 03 3e 43 f2 73 65 74  69 63 6f 6e 73 74 72 69  |..>C.seticonstri|
00000b10  6e 67 28 69 6e 66 6f 25  2c 34 2c 22 30 2e 33 33  |ng(info%,4,"0.33|
00000b20  20 28 31 37 2d 46 65 62  2d 31 39 39 35 29 22 29  | (17-Feb-1995)")|
00000b30  3a f2 73 65 74 76 28 22  24 76 65 72 22 2c 22 33  |:.setv("$ver","3|
00000b40  33 22 29 0d 03 48 26 73  64 69 63 24 3d 22 6e 6f  |3")..H&sdic$="no|
00000b50  64 65 76 22 3a 69 63 6f  6e 30 25 3d a4 69 63 28  |dev":icon0%=.ic(|
00000b60  73 64 69 63 24 2c 2d 31  29 0d 03 52 27 e7 69 63  |sdic$,-1)..R'.ic|
00000b70  6f 6e 30 25 3d 30 8c 85  30 2c 22 43 6f 75 6c 64  |on0%=0..0,"Could|
00000b80  6e 27 74 20 63 72 65 61  74 65 20 69 63 6f 6e 22  |n't create icon"|
00000b90  0d 03 5c 27 4d 25 3d 25  31 30 30 30 30 30 30 31  |..\'M%=%10000001|
00000ba0  31 30 30 30 30 30 31 31  30 30 30 30 3a 73 6c 69  |100000110000:sli|
00000bb0  63 65 25 3d 2d 32 30 0d  03 66 36 c8 99 22 4f 53  |ce%=-20..f6.."OS|
00000bc0  5f 52 65 61 64 4d 6f 6e  6f 74 6f 6e 69 63 54 69  |_ReadMonotonicTi|
00000bd0  6d 65 22 b8 6c 61 73 74  70 6f 6c 6c 25 3a 74 69  |me".lastpoll%:ti|
00000be0  6d 65 25 3d 6c 61 73 74  70 6f 6c 6c 25 0d 03 70  |me%=lastpoll%..p|
00000bf0  3f 63 68 65 63 6b 61 6c  61 72 6d 25 3d 74 69 6d  |?checkalarm%=tim|
00000c00  65 25 3a 63 68 65 63 6b  6c 69 6e 65 25 3d 74 69  |e%:checkline%=ti|
00000c10  6d 65 25 3a f2 63 68 65  63 6b 69 63 6f 6e 3a f2  |me%:.checkicon:.|
00000c20  75 73 65 72 69 63 6f 6e  28 22 22 29 0d 03 7a 05  |usericon("")..z.|
00000c30  e1 0d 03 84 04 0d 03 8e  12 dd a4 6c 6f 61 64 74  |...........loadt|
00000c40  65 6d 70 28 41 24 29 0d  03 98 1b ea 62 25 2c 69  |emp(A$).....b%,i|
00000c50  25 2c 73 25 2c 73 63 72  25 2c 69 63 6f 6e 25 2c  |%,s%,scr%,icon%,|
00000c60  68 25 0d 03 a2 30 c8 99  22 57 69 6d 70 5f 4c 6f  |h%...0.."Wimp_Lo|
00000c70  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 2d 31 2c  |adTemplate",,-1,|
00000c80  30 2c 30 2c 2d 31 2c 41  24 2c 30 b8 2c 62 25 2c  |0,0,-1,A$,0.,b%,|
00000c90  69 25 0d 03 ac 2a 73 25  3d a4 63 6c 61 69 6d 6d  |i%...*s%=.claimm|
00000ca0  65 6d 28 73 63 72 25 2c  62 25 2c 22 54 42 55 46  |em(scr%,b%,"TBUF|
00000cb0  22 29 3a de 69 63 6f 6e  25 20 69 25 0d 03 b6 36  |"):.icon% i%...6|
00000cc0  c8 99 22 57 69 6d 70 5f  4c 6f 61 64 54 65 6d 70  |.."Wimp_LoadTemp|
00000cd0  6c 61 74 65 22 2c 2c 73  63 72 25 2c 69 63 6f 6e  |late",,scr%,icon|
00000ce0  25 2c 69 63 6f 6e 25 2b  69 25 2c 2d 31 2c 41 24  |%,icon%+i%,-1,A$|
00000cf0  2c 30 0d 03 c0 21 e7 41  24 3d 22 6d 65 73 73 61  |,0...!.A$="messa|
00000d00  67 65 22 8c 6d 73 67 74  74 6c 25 3d 73 63 72 25  |ge".msgttl%=scr%|
00000d10  21 37 32 0d 03 ca 2b e7  41 24 3d 22 53 74 61 74  |!72...+.A$="Stat|
00000d20  75 73 22 8c f2 73 65 74  77 70 6f 73 28 73 63 72  |us"..setwpos(scr|
00000d30  25 2c 73 74 77 78 25 2c  73 74 77 79 25 29 0d 03  |%,stwx%,stwy%)..|
00000d40  d4 44 73 63 72 25 21 36  34 3d 73 70 72 69 74 65  |.Dscr%!64=sprite|
00000d50  73 25 3a c8 99 22 57 69  6d 70 5f 43 72 65 61 74  |s%:.."Wimp_Creat|
00000d60  65 57 69 6e 64 6f 77 22  2c 2c 73 63 72 25 20 b8  |eWindow",,scr% .|
00000d70  68 25 3a f2 72 65 6c 65  61 73 65 6d 65 6d 28 73  |h%:.releasemem(s|
00000d80  25 29 0d 03 de 07 3d 68  25 0d 03 e8 04 0d 03 f2  |%)....=h%.......|
00000d90  17 dd f2 73 65 74 77 70  6f 73 28 71 25 2c 78 25  |...setwpos(q%,x%|
00000da0  2c 79 25 29 0d 03 fc 0a  ea 77 25 2c 68 25 0d 04  |,y%).....w%,h%..|
00000db0  06 0a e7 78 25 3e 30 8c  0d 04 10 1d 77 25 3d 71  |...x%>0.....w%=q|
00000dc0  25 21 38 2d 21 71 25 3a  68 25 3d 71 25 21 31 32  |%!8-!q%:h%=q%!12|
00000dd0  2d 71 25 21 34 0d 04 1a  15 21 71 25 3d 78 25 3a  |-q%!4....!q%=x%:|
00000de0  71 25 21 38 3d 78 25 2b  77 25 0d 04 24 17 71 25  |q%!8=x%+w%..$.q%|
00000df0  21 34 3d 79 25 3a 71 25  21 31 32 3d 79 25 2b 68  |!4=y%:q%!12=y%+h|
00000e00  25 0d 04 2e 05 cd 0d 04  38 05 e1 0d 04 42 04 0d  |%.......8....B..|
00000e10  04 4c 31 f4 20 6d 65 72  67 65 20 73 70 72 69 74  |.L1. merge sprit|
00000e20  65 20 66 69 6c 65 20 69  6e 74 6f 20 73 6c 69 70  |e file into slip|
00000e30  64 69 61 6c 20 73 70 72  69 74 65 20 61 72 65 61  |dial sprite area|
00000e40  0d 04 56 16 dd a4 6d 65  72 67 65 73 70 72 69 74  |..V...mergesprit|
00000e50  65 73 28 41 24 29 0d 04  60 15 ea 73 25 2c 66 25  |es(A$)..`..s%,f%|
00000e60  2c 6e 25 2c 72 25 3a 72  25 3d 30 0d 04 6a 1f c8  |,n%,r%:r%=0..j..|
00000e70  99 22 58 4f 53 5f 46 69  6c 65 22 2c 31 37 2c 41  |."XOS_File",17,A|
00000e80  24 b8 41 25 2c 2c 2c 2c  53 25 0d 04 74 2e c8 99  |$.A%,,,,S%..t...|
00000e90  22 58 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |"XOS_SpriteOp",&|
00000ea0  31 30 38 2c 73 70 72 69  74 65 73 25 b8 2c 2c 73  |108,sprites%.,,s|
00000eb0  25 2c 6e 25 2c 2c 66 25  0d 04 7e 17 e7 41 25 3d  |%,n%,,f%..~..A%=|
00000ec0  31 80 53 25 3c 3d 28 73  25 2d 66 25 29 20 8c 0d  |1.S%<=(s%-f%) ..|
00000ed0  04 88 30 c8 99 22 58 4f  53 5f 53 70 72 69 74 65  |..0.."XOS_Sprite|
00000ee0  4f 70 22 2c 26 31 30 42  2b 28 6e 25 3d 30 29 2c  |Op",&10B+(n%=0),|
00000ef0  73 70 72 69 74 65 73 25  2c 41 24 b8 3b 46 25 0d  |sprites%,A$.;F%.|
00000f00  04 92 1a e7 28 46 25 80  31 29 3d 30 20 8c 72 25  |....(F%.1)=0 .r%|
00000f10  3d 73 25 2d 66 25 2d 53  25 0d 04 9c 05 cd 0d 04  |=s%-f%-S%.......|
00000f20  a6 07 3d 72 25 0d 04 b0  04 0d 04 ba 0b dd a4 73  |..=r%..........s|
00000f30  66 72 65 65 0d 04 c4 33  ea 73 25 2c 66 25 3a c8  |free...3.s%,f%:.|
00000f40  99 22 58 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |."XOS_SpriteOp",|
00000f50  26 31 30 38 2c 73 70 72  69 74 65 73 25 b8 2c 2c  |&108,sprites%.,,|
00000f60  73 25 2c 2c 2c 66 25 0d  04 ce 0a 3d 73 25 2d 66  |s%,,,f%....=s%-f|
00000f70  25 0d 04 d8 04 0d 04 e2  4d f4 20 70 6c 61 63 65  |%.......M. place|
00000f80  73 20 61 6e 20 69 63 6f  6e 20 6f 6e 20 74 68 65  |s an icon on the|
00000f90  20 69 63 6f 6e 62 61 72  2c 20 6e 25 3c 30 20 69  | iconbar, n%<0 i|
00000fa0  73 20 6d 61 69 6e 20 69  63 6f 6e 2c 20 6f 74 68  |s main icon, oth|
00000fb0  65 72 73 20 61 72 65 20  75 73 65 72 20 69 63 6f  |ers are user ico|
00000fc0  6e 73 0d 04 ec 0f dd a4  69 63 28 41 24 2c 6e 25  |ns......ic(A$,n%|
00000fd0  29 0d 04 f6 13 ea 5a 25  2c 6e 65 78 74 25 2c 77  |).....Z%,next%,w|
00000fe0  25 2c 68 25 0d 05 00 41  c8 99 22 4f 53 5f 53 70  |%,h%...A.."OS_Sp|
00000ff0  72 69 74 65 4f 70 22 2c  26 31 30 30 2b 34 30 2c  |riteOp",&100+40,|
00001000  73 70 72 69 74 65 73 25  2c 41 24 b8 2c 2c 2c 77  |sprites%,A$.,,,w|
00001010  25 2c 68 25 3a e7 77 25  3e 32 30 30 84 68 25 3e  |%,h%:.w%>200.h%>|
00001020  37 30 8c 3d 30 0d 05 0a  0a e7 6e 25 3c 30 8c 0d  |70.=0.....n%<0..|
00001030  05 14 18 20 20 21 69 63  6f 6e 73 25 3d 2d 31 3a  |...  !icons%=-1:|
00001040  6e 65 78 74 25 3d 30 0d  05 1e 37 20 20 f4 20 64  |next%=0...7  . d|
00001050  69 6d 65 6e 73 69 6f 6e  20 6d 65 6d 6f 72 79 20  |imension memory |
00001060  69 6e 20 6b 6e 6f 77 6e  20 6c 6f 63 61 74 69 6f  |in known locatio|
00001070  6e 20 26 20 73 74 6f 72  65 20 6e 61 6d 65 0d 05  |n & store name..|
00001080  28 34 20 20 de 69 62 61  72 6e 61 6d 65 25 31 32  |(4  .ibarname%12|
00001090  3a 24 69 62 61 72 6e 61  6d 65 25 3d 41 24 3a 69  |:$ibarname%=A$:i|
000010a0  63 6f 6e 73 25 21 32 34  3d 69 62 61 72 6e 61 6d  |cons%!24=ibarnam|
000010b0  65 25 0d 05 32 05 cc 0d  05 3c 12 20 20 6e 65 78  |e%..2....<.  nex|
000010c0  74 25 3d 69 63 6f 6e 30  25 0d 05 46 2c 20 20 e3  |t%=icon0%..F,  .|
000010d0  5a 25 3d 30 b8 6e 25 3a  e7 69 62 61 72 25 28 5a  |Z%=0.n%:.ibar%(Z|
000010e0  25 29 3e 30 20 8c 6e 65  78 74 25 3d 69 62 61 72  |%)>0 .next%=ibar|
000010f0  25 28 5a 25 29 0d 05 50  12 20 20 ed 3a 21 69 63  |%(Z%)..P.  .:!ic|
00001100  6f 6e 73 25 3d 2d 33 0d  05 5a 2a 20 20 f4 20 64  |ons%=-3..Z*  . d|
00001110  69 6d 65 6e 73 69 6f 6e  20 73 6f 6d 65 20 6d 65  |imension some me|
00001120  6d 6f 72 79 20 26 20 73  74 6f 72 65 20 6e 61 6d  |mory & store nam|
00001130  65 0d 05 64 23 20 20 de  69 63 6f 6e 73 25 21 32  |e..d#  .icons%!2|
00001140  34 20 31 32 3a 24 28 69  63 6f 6e 73 25 21 32 34  |4 12:$(icons%!24|
00001150  29 3d 41 24 0d 05 6e 05  cd 0d 05 78 46 69 63 6f  |)=A$..n....xFico|
00001160  6e 73 25 21 34 3d 30 3a  69 63 6f 6e 73 25 21 38  |ns%!4=0:icons%!8|
00001170  3d 30 3a 69 63 6f 6e 73  25 21 31 32 3d 77 25 2a  |=0:icons%!12=w%*|
00001180  32 3a 69 63 6f 6e 73 25  21 31 36 3d 31 30 30 3a  |2:icons%!16=100:|
00001190  69 63 6f 6e 73 25 21 32  30 3d 26 33 31 30 32 0d  |icons%!20=&3102.|
000011a0  05 82 23 69 63 6f 6e 73  25 21 32 38 3d 73 70 72  |..#icons%!28=spr|
000011b0  69 74 65 73 25 3a 69 63  6f 6e 73 25 21 33 32 3d  |ites%:icons%!32=|
000011c0  31 31 0d 05 8c 29 c8 99  20 22 57 69 6d 70 5f 43  |11...).. "Wimp_C|
000011d0  72 65 61 74 65 49 63 6f  6e 22 2c 6e 65 78 74 25  |reateIcon",next%|
000011e0  2c 69 63 6f 6e 73 25 b8  69 63 25 0d 05 96 08 3d  |,icons%.ic%....=|
000011f0  69 63 25 0d 05 a0 04 0d  05 aa 1a f4 20 75 70 64  |ic%......... upd|
00001200  61 74 65 20 74 68 65 20  6d 61 69 6e 20 69 63 6f  |ate the main ico|
00001210  6e 0d 05 b4 0f dd f2 63  68 65 63 6b 69 63 6f 6e  |n......checkicon|
00001220  0d 05 be 0a ea 6e 61 6d  65 24 0d 05 c8 10 e7 64  |.....name$.....d|
00001230  65 76 69 63 65 25 3d a3  20 8c 0d 05 d2 13 20 20  |evice%=. .....  |
00001240  6e 61 6d 65 24 3d 22 6e  6f 64 65 76 22 0d 05 dc  |name$="nodev"...|
00001250  07 20 20 cc 0d 05 e6 1f  20 20 e7 20 28 a4 64 28  |.  .....  . (.d(|
00001260  39 2c 70 6f 72 74 25 2c  30 2c 30 29 80 38 29 3d  |9,port%,0,0).8)=|
00001270  30 20 8c 0d 05 f0 13 20  20 20 20 6e 61 6d 65 24  |0 .....    name$|
00001280  3d 22 64 65 76 22 0d 05  fa 09 20 20 20 20 cc 0d  |="dev"....    ..|
00001290  06 04 39 20 20 20 20 e7  73 64 69 63 24 3d 22 6f  |..9    .sdic$="o|
000012a0  6e 6c 69 6e 65 31 22 20  8c 6e 61 6d 65 24 3d 22  |nline1" .name$="|
000012b0  6f 6e 6c 69 6e 65 32 22  8b 6e 61 6d 65 24 3d 22  |online2".name$="|
000012c0  6f 6e 6c 69 6e 65 31 22  0d 06 0e 07 20 20 cd 0d  |online1"....  ..|
000012d0  06 18 05 cd 0d 06 22 14  63 68 65 63 6b 6c 69 6e  |......".checklin|
000012e0  65 25 3d 74 69 6d 65 25  0d 06 2c 1f e7 69 62 61  |e%=time%..,..iba|
000012f0  72 6e 61 6d 65 25 3e 30  80 6e 61 6d 65 24 3c 3e  |rname%>0.name$<>|
00001300  73 64 69 63 24 20 8c 0d  06 36 1c 20 20 f2 63 61  |sdic$ ...6.  .ca|
00001310  6c 6c 5f 6c 6f 67 28 73  64 69 63 24 2c 6e 61 6d  |ll_log(sdic$,nam|
00001320  65 24 29 0d 06 40 11 20  20 73 64 69 63 24 3d 6e  |e$)..@.  sdic$=n|
00001330  61 6d 65 24 0d 06 4a 35  20 20 c8 99 20 22 58 4f  |ame$..J5  .. "XO|
00001340  53 5f 53 70 72 69 74 65  4f 70 22 2c 26 31 31 38  |S_SpriteOp",&118|
00001350  2c 73 70 72 69 74 65 73  25 2c 6e 61 6d 65 24 b8  |,sprites%,name$.|
00001360  2c 2c 73 72 63 25 3b 46  25 0d 06 54 10 20 20 e7  |,,src%;F%..T.  .|
00001370  28 46 25 80 31 29 3d 30  8c 0d 06 5e 3a 20 20 20  |(F%.1)=0...^:   |
00001380  20 24 69 62 61 72 6e 61  6d 65 25 3d 6e 61 6d 65  | $ibarname%=name|
00001390  24 3a 21 71 25 3d 2d 31  3a 71 25 21 34 3d 69 63  |$:!q%=-1:q%!4=ic|
000013a0  6f 6e 30 25 3a 71 25 21  38 3d 30 3a 71 25 21 31  |on0%:q%!8=0:q%!1|
000013b0  32 3d 30 0d 06 68 21 20  20 20 20 c8 99 22 57 69  |2=0..h!    .."Wi|
000013c0  6d 70 5f 53 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_SetIconState"|
000013d0  2c 2c 71 25 0d 06 72 07  20 20 cd 0d 06 7c 05 cd  |,,q%..r.  ...|..|
000013e0  0d 06 86 05 e1 0d 06 90  04 0d 06 9a 33 f4 20 75  |............3. u|
000013f0  70 64 61 74 65 20 63 61  6c 6c 20 6c 6f 67 20 6f  |pdate call log o|
00001400  6e 20 6f 6e 6c 69 6e 65  2d 6f 66 66 6c 69 6e 65  |n online-offline|
00001410  20 74 72 61 6e 73 69 74  69 6f 6e 73 0d 06 a4 15  | transitions....|
00001420  dd f2 63 61 6c 6c 5f 6c  6f 67 28 41 24 2c 42 24  |..call_log(A$,B$|
00001430  29 0d 06 ae 0a c8 8e 42  24 20 ca 0d 06 b8 58 20  |)......B$ ....X |
00001440  20 c9 22 6e 6f 64 65 76  22 3a e7 41 24 3d 22 6f  | ."nodev":.A$="o|
00001450  6e 6c 69 6e 65 31 22 84  41 24 3d 22 6f 6e 6c 69  |nline1".A$="onli|
00001460  6e 65 32 22 84 41 24 3d  22 64 65 76 22 8c f2 77  |ne2".A$="dev"..w|
00001470  63 6c 6f 67 28 91 24 2b  22 3a 20 6f 66 66 6c 69  |clog(.$+": offli|
00001480  6e 65 20 61 66 74 65 72  20 22 2b 6f 6e 6c 69 6e  |ne after "+onlin|
00001490  65 24 29 0d 06 c2 57 20  20 c9 22 6f 6e 6c 69 6e  |e$)...W  ."onlin|
000014a0  65 31 22 3a e7 41 24 3c  3e 22 6f 6e 6c 69 6e 65  |e1":.A$<>"online|
000014b0  32 22 8c f2 77 63 6c 6f  67 28 91 24 2b 22 3a 20  |2"..wclog(.$+": |
000014c0  6f 6e 6c 69 6e 65 20 74  6f 20 22 2b 6e 75 6d 24  |online to "+num$|
000014d0  29 3a 6f 6e 74 69 6d 65  25 3d 74 69 6d 65 25 3a  |):ontime%=time%:|
000014e0  8b f2 75 70 64 5f 74 69  6d 65 0d 06 cc 1a 20 20  |..upd_time....  |
000014f0  c9 22 6f 6e 6c 69 6e 65  32 22 3a f2 75 70 64 5f  |."online2":.upd_|
00001500  74 69 6d 65 0d 06 d6 05  cb 0d 06 e0 05 e1 0d 06  |time............|
00001510  ea 04 0d 06 f4 28 f4 20  75 70 64 61 74 65 20 74  |.....(. update t|
00001520  69 6d 65 72 20 69 63 6f  6e 20 69 6e 20 73 74 61  |imer icon in sta|
00001530  74 75 73 20 77 69 6e 64  6f 77 0d 06 fe 0e dd f2  |tus window......|
00001540  75 70 64 5f 74 69 6d 65  0d 07 08 07 ea 54 25 0d  |upd_time.....T%.|
00001550  07 12 1b 54 25 3d 94 28  74 69 6d 65 25 2d 6f 6e  |...T%=.(time%-on|
00001560  74 69 6d 65 25 29 81 31  30 30 0d 07 1c 22 6f 6e  |time%).100..."on|
00001570  6c 69 6e 65 24 3d c2 22  30 22 2b c3 28 54 25 81  |line$=."0"+.(T%.|
00001580  33 36 30 30 29 2c 32 29  2b 22 3a 22 0d 07 26 26  |3600),2)+":"..&&|
00001590  6f 6e 6c 69 6e 65 24 2b  3d c2 22 30 22 2b c3 28  |online$+=."0"+.(|
000015a0  28 54 25 81 36 30 29 83  36 30 29 2c 32 29 2b 22  |(T%.60).60),2)+"|
000015b0  3a 22 0d 07 30 1d 6f 6e  6c 69 6e 65 24 2b 3d c2  |:"..0.online$+=.|
000015c0  22 30 22 2b c3 28 54 25  83 36 30 29 2c 32 29 0d  |"0"+.(T%.60),2).|
000015d0  07 3a 20 f2 75 70 64 5f  69 63 6f 6e 28 73 74 61  |.: .upd_icon(sta|
000015e0  74 75 73 25 2c 38 2c 6f  6e 6c 69 6e 65 24 29 0d  |tus%,8,online$).|
000015f0  07 44 05 e1 0d 07 4e 04  0d 07 58 21 f4 20 77 72  |.D....N...X!. wr|
00001600  69 74 65 20 61 20 6c 69  6e 65 20 74 6f 20 74 68  |ite a line to th|
00001610  65 20 6c 6f 67 66 69 6c  65 0d 07 62 0f dd f2 77  |e logfile..b...w|
00001620  63 6c 6f 67 28 41 24 29  0d 07 6c 23 66 68 31 25  |clog(A$)..l#fh1%|
00001630  3d a4 6f 70 65 6e 75 70  28 73 64 64 69 72 24 2b  |=.openup(sddir$+|
00001640  22 2e 6c 6f 67 66 69 6c  65 22 29 0d 07 76 2e e7  |".logfile")..v..|
00001650  66 68 31 25 3c 3e 30 8c  cf 23 66 68 31 25 3d a2  |fh1%<>0..#fh1%=.|
00001660  23 66 68 31 25 3a d5 23  66 68 31 25 2c 41 24 3a  |#fh1%:.#fh1%,A$:|
00001670  f2 63 66 28 66 68 31 25  29 0d 07 80 05 e1 0d 07  |.cf(fh1%).......|
00001680  8a 04 0d 07 94 11 dd f2  70 6f 6c 6c 28 69 64 6c  |........poll(idl|
00001690  65 25 29 0d 07 9e 38 f4  20 69 64 6c 65 25 3d 70  |e%)...8. idle%=p|
000016a0  6f 6c 6c 69 64 6c 65 20  74 69 6d 65 20 28 2b 29  |ollidle time (+)|
000016b0  20 6f 72 20 74 69 6d 65  20 62 65 66 6f 72 65 20  | or time before |
000016c0  70 6f 6c 6c 69 6e 67 20  28 2d 29 0d 07 a8 23 c8  |polling (-)...#.|
000016d0  99 22 4f 53 5f 52 65 61  64 4d 6f 6e 6f 74 6f 6e  |."OS_ReadMonoton|
000016e0  69 63 54 69 6d 65 22 20  b8 74 69 6d 65 25 0d 07  |icTime" .time%..|
000016f0  b2 27 e7 69 64 6c 65 25  3e 3d 30 20 84 20 6c 61  |.'.idle%>=0 . la|
00001700  73 74 70 6f 6c 6c 25 2d  74 69 6d 65 25 3c 69 64  |stpoll%-time%<id|
00001710  6c 65 25 20 8c 0d 07 bc  15 20 20 6c 61 73 74 70  |le% .....  lastp|
00001720  6f 6c 6c 25 3d 74 69 6d  65 25 0d 07 c6 07 20 20  |oll%=time%....  |
00001730  f5 0d 07 d0 31 20 20 20  20 c8 99 20 22 57 69 6d  |....1    .. "Wim|
00001740  70 5f 50 6f 6c 6c 49 64  6c 65 22 2c 4d 25 2c 71  |p_PollIdle",M%,q|
00001750  25 2c 74 69 6d 65 25 2b  69 64 6c 65 25 20 b8 20  |%,time%+idle% . |
00001760  52 25 0d 07 da 48 20 20  20 20 e7 64 65 76 69 63  |R%...H    .devic|
00001770  65 25 20 8c 20 4a 25 3d  a4 64 28 31 39 2c 70 6f  |e% . J%=.d(19,po|
00001780  72 74 25 2c 30 2c 30 29  3a f4 20 6c 69 6e 65 20  |rt%,0,0):. line |
00001790  74 6f 20 66 69 78 20 49  49 20 64 75 61 6c 20 73  |to fix II dual s|
000017a0  65 72 69 61 6c 20 63 61  72 64 0d 07 e4 0f 20 20  |erial card....  |
000017b0  20 20 c8 8e 20 52 25 20  ca 0d 07 ee 1a 20 20 20  |  .. R% .....   |
000017c0  20 c9 20 31 20 3a f2 72  65 64 72 61 77 77 28 21  | . 1 :.redraww(!|
000017d0  71 25 29 0d 07 f8 40 20  20 20 20 c9 20 32 20 3a  |q%)...@    . 2 :|
000017e0  f2 6f 70 65 6e 77 28 21  71 25 2c 71 25 21 34 2c  |.openw(!q%,q%!4,|
000017f0  71 25 21 38 2c 71 25 21  31 32 2c 71 25 21 31 36  |q%!8,q%!12,q%!16|
00001800  2c 71 25 21 32 30 2c 71  25 21 32 34 2c 71 25 21  |,q%!20,q%!24,q%!|
00001810  32 38 29 0d 08 02 19 20  20 20 20 c9 20 33 20 3a  |28)....    . 3 :|
00001820  f2 63 6c 6f 73 65 77 28  21 71 25 29 0d 08 0c 2e  |.closew(!q%)....|
00001830  20 20 20 20 c9 20 36 20  3a f2 63 6c 69 63 6b 28  |    . 6 :.click(|
00001840  21 71 25 2c 71 25 21 34  2c 71 25 21 38 2c 71 25  |!q%,q%!4,q%!8,q%|
00001850  21 31 32 2c 71 25 21 31  36 29 0d 08 16 26 20 20  |!12,q%!16)...&  |
00001860  20 20 c9 20 38 20 3a f2  6b 65 79 70 72 65 73 73  |  . 8 :.keypress|
00001870  28 21 71 25 2c 71 25 21  34 2c 71 25 21 32 34 29  |(!q%,q%!4,q%!24)|
00001880  0d 08 20 28 20 20 20 20  c9 20 39 20 3a f2 67 65  |.. (    . 9 :.ge|
00001890  74 70 6f 69 6e 74 65 72  3a f2 6d 65 6e 75 73 65  |tpointer:.menuse|
000018a0  6c 65 63 74 28 71 25 29  0d 08 2a 1c 20 20 20 20  |lect(q%)..*.    |
000018b0  c9 20 31 37 2c 31 38 3a  f2 72 65 63 65 69 76 65  |. 17,18:.receive|
000018c0  28 71 25 29 0d 08 34 09  20 20 20 20 cb 0d 08 3e  |(q%)..4.    ...>|
000018d0  0b 20 20 fd 52 25 3d 30  0d 08 48 3b 20 20 e7 74  |.  .R%=0..H;  .t|
000018e0  69 6d 65 25 3e 63 68 65  63 6b 6c 69 6e 65 25 2b  |ime%>checkline%+|
000018f0  31 30 30 20 8c f2 63 68  65 63 6b 69 63 6f 6e 3a  |100 ..checkicon:|
00001900  f2 6c 69 6e 65 61 6c 61  72 6d 3a f2 73 65 74 74  |.linealarm:.sett|
00001910  69 6d 65 0d 08 52 31 20  20 e7 74 69 6d 65 25 3e  |ime..R1  .time%>|
00001920  63 68 65 63 6b 61 6c 61  72 6d 25 2b 35 30 30 20  |checkalarm%+500 |
00001930  8c f2 74 69 6d 65 61 6c  61 72 6d 3a f2 73 65 74  |..timealarm:.set|
00001940  64 61 74 65 0d 08 5c 31  20 20 e7 6d 73 67 5f 63  |date..\1  .msg_c|
00001950  73 25 3e 30 80 74 69 6d  65 25 3e 6d 73 67 74 25  |s%>0.time%>msgt%|
00001960  2b 35 30 30 20 8c f2 61  64 64 6d 65 73 73 61 67  |+500 ..addmessag|
00001970  65 28 22 22 29 0d 08 66  05 cd 0d 08 70 05 e1 0d  |e("")..f....p...|
00001980  08 7a 04 0d 08 84 18 dd  f2 6b 65 79 70 72 65 73  |.z.......keypres|
00001990  73 28 77 25 2c 69 25 2c  6b 25 29 0d 08 8e 07 ea  |s(w%,i%,k%).....|
000019a0  6c 25 0d 08 98 16 e7 77  25 3d 74 78 74 25 80 69  |l%.....w%=txt%.i|
000019b0  25 3d 69 6e 69 63 25 8c  0d 08 a2 0b 20 20 c8 8e  |%=inic%.....  ..|
000019c0  6b 25 ca 0d 08 ac 31 20  20 20 20 c9 31 33 3a e3  |k%....1    .13:.|
000019d0  6c 25 3d 31 30 b8 31 88  2d 31 3a 69 68 69 73 74  |l%=10.1.-1:ihist|
000019e0  24 28 6c 25 29 3d 69 68  69 73 74 24 28 6c 25 2d  |$(l%)=ihist$(l%-|
000019f0  31 29 3a ed 0d 08 b6 43  20 20 20 20 20 20 69 68  |1):....C      ih|
00001a00  69 73 74 24 28 30 29 3d  a4 69 63 5f 73 74 72 28  |ist$(0)=.ic_str(|
00001a10  77 25 2c 69 25 29 3a f2  61 64 64 65 76 65 6e 74  |w%,i%):.addevent|
00001a20  28 69 68 69 73 74 24 28  30 29 2c 30 29 3a 69 68  |(ihist$(0),0):ih|
00001a30  69 73 74 25 3d 2d 31 0d  08 c0 44 20 20 20 20 20  |ist%=-1...D     |
00001a40  20 f2 75 70 64 5f 69 63  6f 6e 28 77 25 2c 69 25  | .upd_icon(w%,i%|
00001a50  2c 22 22 29 3a c8 99 22  57 69 6d 70 5f 53 65 74  |,""):.."Wimp_Set|
00001a60  43 61 72 65 74 50 6f 73  69 74 69 6f 6e 22 2c 77  |CaretPosition",w|
00001a70  25 2c 69 25 2c 2c 2c 2d  31 2c 30 0d 08 ca 2d 20  |%,i%,,,-1,0...- |
00001a80  20 20 20 c9 26 31 38 46  3a e7 69 68 69 73 74 25  |   .&18F:.ihist%|
00001a90  3c 31 30 80 69 68 69 73  74 24 28 69 68 69 73 74  |<10.ihist$(ihist|
00001aa0  25 2b 31 29 3e 22 22 8c  0d 08 d4 33 20 20 20 20  |%+1)>""....3    |
00001ab0  20 20 69 68 69 73 74 25  2b 3d 31 3a f2 75 70 64  |  ihist%+=1:.upd|
00001ac0  5f 69 63 6f 6e 28 77 25  2c 69 25 2c 69 68 69 73  |_icon(w%,i%,ihis|
00001ad0  74 24 28 69 68 69 73 74  25 29 29 0d 08 de 3e 20  |t$(ihist%))...> |
00001ae0  20 20 20 20 20 c8 99 22  57 69 6d 70 5f 53 65 74  |     .."Wimp_Set|
00001af0  43 61 72 65 74 50 6f 73  69 74 69 6f 6e 22 2c 77  |CaretPosition",w|
00001b00  25 2c 69 25 2c 2c 2c 2d  31 2c a9 69 68 69 73 74  |%,i%,,,-1,.ihist|
00001b10  24 28 69 68 69 73 74 25  29 0d 08 e8 0b 20 20 20  |$(ihist%)....   |
00001b20  20 20 20 cd 0d 08 f2 18  20 20 20 20 c9 26 31 38  |   .....    .&18|
00001b30  45 3a e7 69 68 69 73 74  25 3e 30 8c 0d 08 fc 33  |E:.ihist%>0....3|
00001b40  20 20 20 20 20 20 69 68  69 73 74 25 2d 3d 31 3a  |      ihist%-=1:|
00001b50  f2 75 70 64 5f 69 63 6f  6e 28 77 25 2c 69 25 2c  |.upd_icon(w%,i%,|
00001b60  69 68 69 73 74 24 28 69  68 69 73 74 25 29 29 0d  |ihist$(ihist%)).|
00001b70  09 06 3e 20 20 20 20 20  20 c8 99 22 57 69 6d 70  |..>      .."Wimp|
00001b80  5f 53 65 74 43 61 72 65  74 50 6f 73 69 74 69 6f  |_SetCaretPositio|
00001b90  6e 22 2c 77 25 2c 69 25  2c 2c 2c 2d 31 2c a9 69  |n",w%,i%,,,-1,.i|
00001ba0  68 69 73 74 24 28 69 68  69 73 74 25 29 0d 09 10  |hist$(ihist%)...|
00001bb0  0b 20 20 20 20 20 20 cc  0d 09 1a 4e 20 20 20 20  |.      ....N    |
00001bc0  20 20 69 68 69 73 74 25  3d 2d 31 3a f2 75 70 64  |  ihist%=-1:.upd|
00001bd0  5f 69 63 6f 6e 28 77 25  2c 69 25 2c 22 22 29 3a  |_icon(w%,i%,""):|
00001be0  c8 99 22 57 69 6d 70 5f  53 65 74 43 61 72 65 74  |.."Wimp_SetCaret|
00001bf0  50 6f 73 69 74 69 6f 6e  22 2c 77 25 2c 69 25 2c  |Position",w%,i%,|
00001c00  2c 2c 2d 31 2c 30 0d 09  24 0b 20 20 20 20 20 20  |,,-1,0..$.      |
00001c10  cd 0d 09 2e 23 20 20 20  20 7f 3a c8 99 22 57 69  |....#    .:.."Wi|
00001c20  6d 70 5f 50 72 6f 63 65  73 73 4b 65 79 22 2c 71  |mp_ProcessKey",q|
00001c30  25 21 32 34 0d 09 38 07  20 20 cb 0d 09 42 05 cc  |%!24..8.  ...B..|
00001c40  0d 09 4c 1a e7 77 25 3d  69 6e 70 75 74 25 80 69  |..L..w%=input%.i|
00001c50  25 3d 31 80 6b 25 3d 31  33 8c 0d 09 56 2f 69 6e  |%=1.k%=13...V/in|
00001c60  70 75 74 24 3d a4 69 63  5f 73 74 72 28 77 25 2c  |put$=.ic_str(w%,|
00001c70  69 25 29 3a e7 69 6e 70  75 74 24 3d 22 22 8c 69  |i%):.input$="".i|
00001c80  6e 70 75 74 24 3d 22 20  22 0d 09 60 05 cc 0d 09  |nput$=" "..`....|
00001c90  6a 1d c8 99 22 57 69 6d  70 5f 50 72 6f 63 65 73  |j..."Wimp_Proces|
00001ca0  73 4b 65 79 22 2c 71 25  21 32 34 0d 09 74 05 cd  |sKey",q%!24..t..|
00001cb0  0d 09 7e 05 cd 0d 09 88  05 e1 0d 09 92 04 0d 09  |..~.............|
00001cc0  9c 11 dd f2 72 65 63 65  69 76 65 28 71 25 29 0d  |....receive(q%).|
00001cd0  09 a6 1d ea 5a 25 2c 68  25 2c 69 25 2c 74 25 2c  |....Z%,h%,i%,t%,|
00001ce0  66 24 2c 74 77 25 2c 61  25 2c 41 24 0d 09 b0 0e  |f$,tw%,a%,A$....|
00001cf0  c8 8e 20 71 25 21 31 36  20 ca 0d 09 ba 11 c9 20  |.. q%!16 ...... |
00001d00  30 3a f2 66 69 6e 69 73  68 3a e0 0d 09 c4 33 c9  |0:.finish:....3.|
00001d10  20 31 3a 71 25 21 31 36  3d 32 3a 71 25 21 33 36  | 1:q%!16=2:q%!36|
00001d20  3d 2d 31 3a 24 28 71 25  2b 34 34 29 3d 22 3c 57  |=-1:$(q%+44)="<W|
00001d30  69 6d 70 24 53 63 72 61  70 3e 22 2b bd 30 0d 09  |imp$Scrap>"+.0..|
00001d40  ce 30 20 20 71 25 21 31  32 3d 71 25 21 38 3a c8  |.0  q%!12=q%!8:.|
00001d50  99 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  |."Wimp_SendMessa|
00001d60  67 65 22 2c 31 37 2c 71  25 2c 71 25 21 34 0d 09  |ge",17,q%,q%!4..|
00001d70  d8 31 c9 20 33 3a 69 25  3d 71 25 21 32 34 3a 68  |.1. 3:i%=q%!24:h|
00001d80  25 3d 71 25 21 32 30 3a  74 25 3d 71 25 21 34 30  |%=q%!20:t%=q%!40|
00001d90  3a 66 24 3d a4 73 74 72  28 71 25 2b 34 34 29 0d  |:f$=.str(q%+44).|
00001da0  09 e2 2d 20 20 71 25 21  31 36 3d 34 3a c8 99 22  |..-  q%!16=4:.."|
00001db0  57 69 6d 70 5f 53 65 6e  64 4d 65 73 73 61 67 65  |Wimp_SendMessage|
00001dc0  22 2c 31 37 2c 71 25 2c  71 25 21 34 0d 09 ec 0b  |",17,q%,q%!4....|
00001dd0  20 20 c8 8e 68 25 ca 0d  09 f6 1b 20 20 20 20 c9  |  ..h%.....    .|
00001de0  63 6f 6e 66 69 67 25 3a  e7 74 25 3d 26 46 46 46  |config%:.t%=&FFF|
00001df0  20 8c 0d 0a 00 28 20 20  20 20 20 20 20 20 e7 69  | ....(        .i|
00001e00  25 3d 34 f2 75 70 64 5f  69 63 6f 6e 28 63 6f 6e  |%=4.upd_icon(con|
00001e10  66 69 67 25 2c 34 2c 66  24 29 0d 0a 0a 0d 20 20  |fig%,4,f$)....  |
00001e20  20 20 20 20 20 20 cc 0d  0a 14 1b 20 20 20 20 20  |      .....     |
00001e30  20 20 20 f2 69 6e 69 74  73 63 72 69 70 74 28 66  |   .initscript(f|
00001e40  24 29 0d 0a 1e 0b 20 20  20 20 20 20 cd 0d 0a 28  |$)....      ...(|
00001e50  2a 20 20 20 20 c9 73 74  61 74 75 73 25 3a e7 74  |*    .status%:.t|
00001e60  25 3d 26 46 46 46 20 8c  f2 69 6e 69 74 73 63 72  |%=&FFF ..initscr|
00001e70  69 70 74 28 66 24 29 0d  0a 32 24 20 20 20 20 c9  |ipt(f$)..2$    .|
00001e80  2d 31 2c 2d 32 3a e7 74  25 3d 26 46 46 46 20 80  |-1,-2:.t%=&FFF .|
00001e90  69 25 3d 69 63 6f 6e 30  25 20 8c 0d 0a 3c 19 20  |i%=icon0% ...<. |
00001ea0  20 20 20 20 20 f2 69 6e  69 74 73 63 72 69 70 74  |     .initscript|
00001eb0  28 66 24 29 0d 0a 46 0b  20 20 20 20 20 20 cc 0d  |(f$)..F.      ..|
00001ec0  0a 50 15 20 20 20 20 20  20 e3 5a 25 3d 30 b8 69  |.P.      .Z%=0.i|
00001ed0  6d 61 78 25 0d 0a 5a 38  20 20 20 20 20 20 20 20  |max%..Z8        |
00001ee0  e7 69 25 3d 69 62 61 72  25 28 5a 25 29 80 69 66  |.i%=ibar%(Z%).if|
00001ef0  69 6c 65 24 28 5a 25 29  3e 22 22 8c f2 69 66 69  |ile$(Z%)>""..ifi|
00001f00  6c 65 28 5a 25 2c 66 24  2c 74 25 29 0d 0a 64 0b  |le(Z%,f$,t%)..d.|
00001f10  20 20 20 20 20 20 ed 0d  0a 6e 0b 20 20 20 20 20  |      ...n.     |
00001f20  20 cd 0d 0a 78 07 20 20  cb 0d 0a 82 21 20 20 5a  | ...x.  ....!  Z|
00001f30  25 3d a4 64 65 6c 66 69  6c 65 28 22 3c 57 69 6d  |%=.delfile("<Wim|
00001f40  70 24 53 63 72 61 70 3e  22 29 0d 0a 8c 2d c9 20  |p$Scrap>")...-. |
00001f50  31 31 3a e7 64 65 76 69  63 65 25 20 80 71 25 21  |11:.device% .q%!|
00001f60  34 3c 3e 74 61 73 6b 25  20 8c f2 72 65 66 75 73  |4<>task% ..refus|
00001f70  65 64 65 76 69 63 65 0d  0a 96 17 c9 20 31 32 3a  |edevice..... 12:|
00001f80  e7 71 25 21 34 3c 3e 74  61 73 6b 25 20 8c 0d 0a  |.q%!4<>task% ...|
00001f90  a0 32 20 20 f2 70 72 69  6e 74 28 22 44 65 76 69  |.2  .print("Devi|
00001fa0  63 65 20 63 6c 61 69 6d  20 66 61 69 6c 65 64 22  |ce claim failed"|
00001fb0  2c a4 73 74 72 28 71 25  2b 32 38 29 2c 22 22 29  |,.str(q%+28),"")|
00001fc0  0d 0a aa 1f 20 20 f2 66  72 6f 6e 74 28 73 74 61  |....  .front(sta|
00001fd0  74 75 73 25 29 3a 64 65  76 69 63 65 25 3d a3 0d  |tus%):device%=..|
00001fe0  0a b4 07 20 20 cd 0d 0a  be 24 c9 20 26 35 30 32  |...  ....$. &502|
00001ff0  3a 41 24 3d a4 73 65 6e  64 68 65 6c 70 28 71 25  |:A$=.sendhelp(q%|
00002000  21 33 32 2c 71 25 21 33  36 29 0d 0a c8 0d 20 20  |!32,q%!36)....  |
00002010  e7 41 24 3e 22 22 8c 0d  0a d2 3f 20 20 20 20 71  |.A$>""....?    q|
00002020  25 21 31 36 3d 26 35 30  33 3a 71 25 21 31 32 3d  |%!16=&503:q%!12=|
00002030  71 25 21 38 3a 24 28 71  25 2b 32 30 29 3d 41 24  |q%!8:$(q%+20)=A$|
00002040  3a 71 25 3f 28 32 30 2b  a9 41 24 29 3d 30 3a 21  |:q%?(20+.A$)=0:!|
00002050  71 25 3d 32 35 36 0d 0a  dc 27 20 20 20 20 c8 99  |q%=256...'    ..|
00002060  22 57 69 6d 70 5f 53 65  6e 64 4d 65 73 73 61 67  |"Wimp_SendMessag|
00002070  65 22 2c 31 37 2c 71 25  2c 71 25 21 34 0d 0a e6  |e",17,q%,q%!4...|
00002080  07 20 20 cd 0d 0a f0 1e  c9 20 26 34 30 30 43 32  |.  ...... &400C2|
00002090  3a e7 20 74 61 73 6b 73  74 61 72 74 25 3c 3e 30  |:. taskstart%<>0|
000020a0  20 8c 0d 0a fa 1d 20 20  e7 74 61 73 6b 68 25 28  | .....  .taskh%(|
000020b0  74 61 73 6b 73 74 61 72  74 25 29 3d 30 20 8c 0d  |taskstart%)=0 ..|
000020c0  0b 04 4c 20 20 20 20 74  61 73 6b 68 25 28 74 61  |..L    taskh%(ta|
000020d0  73 6b 73 74 61 72 74 25  29 3d 71 25 21 34 3a f2  |skstart%)=q%!4:.|
000020e0  6c 6f 67 28 a4 6d 73 67  31 28 22 54 61 73 6b 53  |log(.msg1("TaskS|
000020f0  74 61 72 74 32 22 2c 74  61 73 6b 6e 24 28 74 61  |tart2",taskn$(ta|
00002100  73 6b 73 74 61 72 74 25  29 29 29 0d 0b 0e 07 20  |skstart%))).... |
00002110  20 cd 0d 0b 18 12 20 20  74 61 73 6b 73 74 61 72  | .....  taskstar|
00002120  74 25 3d 30 0d 0b 22 07  20 20 cd 0d 0b 2c 1c c9  |t%=0..".  ...,..|
00002130  20 26 34 30 30 43 33 3a  f4 20 54 61 73 6b 43 6c  | &400C3:. TaskCl|
00002140  6f 73 65 64 6f 77 6e 0d  0b 36 14 20 20 e3 6c 25  |osedown..6.  .l%|
00002150  3d 30 b8 74 61 73 6b 6d  61 78 25 0d 0b 40 1a 20  |=0.taskmax%..@. |
00002160  20 20 20 e7 74 61 73 6b  68 25 28 6c 25 29 3d 71  |   .taskh%(l%)=q|
00002170  25 21 34 20 8c 0d 0b 4a  3f 20 20 20 20 20 20 74  |%!4 ...J?      t|
00002180  61 73 6b 68 25 28 6c 25  29 3d 30 3a e7 74 61 73  |askh%(l%)=0:.tas|
00002190  6b 65 78 24 28 6c 25 29  3e 22 22 8c f2 61 64 64  |kex$(l%)>""..add|
000021a0  65 76 65 6e 74 28 74 61  73 6b 65 78 24 28 6c 25  |event(taskex$(l%|
000021b0  29 2c 33 29 0d 0b 54 09  20 20 20 20 cd 0d 0b 5e  |),3)..T.    ...^|
000021c0  07 20 20 ed 0d 0b 68 10  20 20 f2 73 6f 72 74 74  |.  ...h.  .sortt|
000021d0  61 73 6b 73 0d 0b 72 20  c9 20 26 38 30 38 43 31  |asks..r . &808C1|
000021e0  3a f4 20 54 61 73 6b 57  69 6e 64 6f 77 5f 4f 75  |:. TaskWindow_Ou|
000021f0  74 70 75 74 0d 0b 7c 1a  20 20 74 77 25 3d 30 3a  |tput..|.  tw%=0:|
00002200  74 77 6c 65 6e 25 3d 71  25 21 32 30 2d 31 0d 0b  |twlen%=q%!20-1..|
00002210  86 2b 20 20 c8 95 74 77  68 25 28 74 77 25 29 3c  |.+  ..twh%(tw%)<|
00002220  3e 71 25 21 34 80 74 77  25 3c 74 77 6d 61 78 25  |>q%!4.tw%<twmax%|
00002230  3a 74 77 25 2b 3d 31 3a  ce 0d 0b 90 14 20 20 e7  |:tw%+=1:.....  .|
00002240  74 77 66 25 28 74 77 25  29 3d 30 20 8c 0d 0b 9a  |twf%(tw%)=0 ....|
00002250  2b 20 20 20 20 e3 5a 25  3d 30 b8 74 77 6c 65 6e  |+    .Z%=0.twlen|
00002260  25 88 34 3a 74 6d 70 25  21 5a 25 3d 71 25 21 28  |%.4:tmp%!Z%=q%!(|
00002270  32 34 2b 5a 25 29 3a ed  0d 0b a4 21 20 20 20 20  |24+Z%):....!    |
00002280  f2 74 77 5f 64 61 74 61  28 74 77 25 2c 74 6d 70  |.tw_data(tw%,tmp|
00002290  25 2c 74 77 6c 65 6e 25  29 0d 0b ae 09 20 20 20  |%,twlen%)....   |
000022a0  20 cc 0d 0b b8 2d 20 20  20 20 e3 5a 25 3d 30 b8  | ....-    .Z%=0.|
000022b0  74 77 6c 65 6e 25 3a d5  23 74 77 66 25 28 74 77  |twlen%:.#twf%(tw|
000022c0  25 29 2c 71 25 21 28 32  34 2b 5a 25 29 3a ed 0d  |%),q%!(24+Z%):..|
000022d0  0b c2 07 20 20 cd 0d 0b  cc 1d c9 20 26 38 30 38  |...  ...... &808|
000022e0  43 32 3a f4 20 54 61 73  6b 57 69 6e 64 6f 77 5f  |C2:. TaskWindow_|
000022f0  45 67 6f 0d 0b d6 2a 20  20 e7 71 25 21 32 30 3e  |Ego...*  .q%!20>|
00002300  3d 74 61 73 6b 25 80 71  25 21 32 30 3c 3d 28 74  |=task%.q%!20<=(t|
00002310  61 73 6b 25 2b 74 77 6d  61 78 25 29 8c 0d 0b e0  |ask%+twmax%)....|
00002320  4a 20 20 20 20 74 77 68  25 28 71 25 21 32 30 2d  |J    twh%(q%!20-|
00002330  74 61 73 6b 25 29 3d 71  25 21 34 3a f2 6c 6f 67  |task%)=q%!4:.log|
00002340  28 22 54 61 73 6b 20 73  74 61 72 74 65 64 3a 20  |("Task started: |
00002350  22 2b 74 77 6e 61 6d 65  24 28 71 25 21 32 30 2d  |"+twname$(q%!20-|
00002360  74 61 73 6b 25 29 29 0d  0b ea 07 20 20 cd 0d 0b  |task%))....  ...|
00002370  f4 2e c9 20 26 38 30 38  43 33 3a f4 20 54 61 73  |... &808C3:. Tas|
00002380  6b 57 69 6e 64 6f 77 5f  4d 6f 72 69 6f 2c 20 74  |kWindow_Morio, t|
00002390  61 73 6b 20 66 69 6e 69  73 68 65 64 0d 0b fe 31  |ask finished...1|
000023a0  20 20 74 77 25 3d 30 3a  c8 95 71 25 21 34 3c 3e  |  tw%=0:..q%!4<>|
000023b0  74 77 68 25 28 74 77 25  29 80 74 77 25 3c 74 77  |twh%(tw%).tw%<tw|
000023c0  6d 61 78 25 3a 74 77 25  2b 3d 31 3a ce 0d 0c 08  |max%:tw%+=1:....|
000023d0  16 20 20 e7 71 25 21 34  3d 74 77 68 25 28 74 77  |.  .q%!4=twh%(tw|
000023e0  25 29 8c 0d 0c 12 2b 20  20 20 20 f2 6c 6f 67 28  |%)....+    .log(|
000023f0  a4 6d 73 67 31 28 22 54  61 73 6b 45 6e 64 22 2c  |.msg1("TaskEnd",|
00002400  74 77 6e 61 6d 65 24 28  74 77 25 29 29 29 0d 0c  |twname$(tw%)))..|
00002410  1c 16 20 20 20 20 e7 74  77 6b 25 28 74 77 25 29  |..    .twk%(tw%)|
00002420  3d 30 20 8c 0d 0c 26 28  20 20 20 20 20 20 74 77  |=0 ...&(      tw|
00002430  68 25 28 74 77 25 29 3d  30 3a f2 63 6c 6f 73 65  |h%(tw%)=0:.close|
00002440  77 28 74 77 77 25 28 74  77 25 29 29 0d 0c 30 0b  |w(tww%(tw%))..0.|
00002450  20 20 20 20 20 20 cc 0d  0c 3a 3f 20 20 20 20 20  |      ...:?     |
00002460  20 74 77 68 25 28 74 77  25 29 3d 2d 31 3a 24 74  | twh%(tw%)=-1:$t|
00002470  77 74 25 28 74 77 25 29  3d 74 77 6e 61 6d 65 24  |wt%(tw%)=twname$|
00002480  28 74 77 25 29 2b a4 6d  73 67 30 28 22 54 61 73  |(tw%)+.msg0("Tas|
00002490  6b 46 69 6e 22 29 0d 0c  44 1d 20 20 20 20 20 20  |kFin")..D.      |
000024a0  f2 64 6f 74 69 74 6c 65  28 74 77 77 25 28 74 77  |.dotitle(tww%(tw|
000024b0  25 29 29 0d 0c 4e 09 20  20 20 20 cd 0d 0c 58 32  |%))..N.    ...X2|
000024c0  20 20 20 20 74 77 6e 61  6d 65 24 28 74 77 25 29  |    twname$(tw%)|
000024d0  3d 22 22 3a f2 63 66 28  74 77 66 25 28 74 77 25  |="":.cf(twf%(tw%|
000024e0  29 29 3a 74 77 66 25 28  74 77 25 29 3d 30 0d 0c  |)):twf%(tw%)=0..|
000024f0  62 32 20 20 20 20 e7 74  77 65 78 69 74 24 28 74  |b2    .twexit$(t|
00002500  77 25 29 3e 22 22 8c f2  61 64 64 65 76 65 6e 74  |w%)>""..addevent|
00002510  28 74 77 65 78 69 74 24  28 74 77 25 29 2c 34 29  |(twexit$(tw%),4)|
00002520  0d 0c 6c 07 20 20 cd 0d  0c 76 05 cb 0d 0c 80 05  |..l.  ...v......|
00002530  e1 0d 0c 8a 04 0d 0c 94  15 dd a4 73 65 6e 64 68  |...........sendh|
00002540  65 6c 70 28 77 25 2c 69  25 29 0d 0c 9e 0a ea 41  |elp(w%,i%).....A|
00002550  24 2c 6c 25 0d 0c a8 17  41 24 3d 22 48 67 65 6e  |$,l%....A$="Hgen|
00002560  65 72 69 63 22 3a c8 8e  77 25 ca 0d 0c b2 16 20  |eric":..w%..... |
00002570  20 c9 74 78 74 25 3a 41  24 3d 22 48 74 65 78 74  | .txt%:A$="Htext|
00002580  22 0d 0c bc 21 20 20 c9  73 74 61 74 75 73 25 3a  |"...!  .status%:|
00002590  41 24 3d 22 48 73 74 61  74 75 73 22 3a c8 8e 69  |A$="Hstatus":..i|
000025a0  25 ca 0d 0c c6 19 20 20  20 20 c9 31 2c 32 3a 41  |%.....    .1,2:A|
000025b0  24 3d 22 48 61 63 74 69  6f 6e 22 0d 0c d0 13 20  |$="Haction".... |
000025c0  20 20 20 c9 33 3a 41 24  3d 22 48 69 70 22 0d 0c  |   .3:A$="Hip"..|
000025d0  da 15 20 20 20 20 c9 34  3a 41 24 3d 22 48 73 74  |..    .4:A$="Hst|
000025e0  6f 70 22 0d 0c e4 16 20  20 20 20 c9 35 3a 41 24  |op"....    .5:A$|
000025f0  3d 22 48 70 61 75 73 65  22 0d 0c ee 18 20 20 20  |="Hpause"....   |
00002600  20 c9 36 2c 37 3a 41 24  3d 22 48 6d 65 6e 75 73  | .6,7:A$="Hmenus|
00002610  22 0d 0c f8 15 20 20 20  20 c9 38 3a 41 24 3d 22  |"....    .8:A$="|
00002620  48 74 69 6d 65 22 0d 0d  02 17 20 20 20 20 c9 31  |Htime"....    .1|
00002630  30 3a 41 24 3d 22 48 6d  6f 64 65 6d 22 0d 0d 0c  |0:A$="Hmodem"...|
00002640  07 20 20 cb 0d 0d 16 2b  20 20 c9 6d 65 73 73 25  |.  ....+  .mess%|
00002650  3a 41 24 3d 22 48 6d 65  73 73 22 3a e7 70 61 75  |:A$="Hmess":.pau|
00002660  73 65 25 8c 41 24 3d 22  48 6d 65 73 73 32 22 0d  |se%.A$="Hmess2".|
00002670  0d 20 19 20 20 c9 69 6e  70 75 74 25 3a 41 24 3d  |. .  .input%:A$=|
00002680  22 48 65 6e 74 65 72 22  0d 0d 2a 19 20 20 c9 79  |"Henter"..*.  .y|
00002690  65 73 6e 6f 25 3a 41 24  3d 22 48 79 65 73 6e 6f  |esno%:A$="Hyesno|
000026a0  22 0d 0d 34 17 20 20 c9  69 6e 66 6f 25 3a 41 24  |"..4.  .info%:A$|
000026b0  3d 22 48 69 6e 66 6f 22  0d 0d 3e 1b 20 20 c9 63  |="Hinfo"..>.  .c|
000026c0  6f 6e 66 69 67 25 3a 41  24 3d 22 48 63 6f 6e 66  |onfig%:A$="Hconf|
000026d0  69 67 22 0d 0d 48 2c 20  20 7f 3a e3 6c 25 3d 30  |ig"..H,  .:.l%=0|
000026e0  b8 74 77 6d 61 78 25 3a  e7 77 25 3d 74 77 77 25  |.twmax%:.w%=tww%|
000026f0  28 6c 25 29 8c 41 24 3d  22 48 74 61 73 6b 22 0d  |(l%).A$="Htask".|
00002700  0d 52 09 20 20 20 20 ed  0d 0d 5c 05 cb 0d 0d 66  |.R.    ...\....f|
00002710  0e 3d a4 6d 73 67 30 28  41 24 29 0d 0d 70 04 0d  |.=.msg0(A$)..p..|
00002720  0d 7a 0c dd f2 66 69 6e  69 73 68 0d 0d 84 07 ea  |.z...finish.....|
00002730  6c 25 0d 0d 8e 10 e7 64  65 76 69 63 65 25 3c 3e  |l%.....device%<>|
00002740  30 8c 0d 0d 98 18 20 20  4a 25 3d a4 64 28 38 2c  |0.....  J%=.d(8,|
00002750  70 6f 72 74 25 2c 30 2c  30 29 0d 0d a2 19 20 20  |port%,0,0)....  |
00002760  4a 25 3d a4 64 28 31 38  2c 70 6f 72 74 25 2c 30  |J%=.d(18,port%,0|
00002770  2c 30 29 0d 0d ac 05 cd  0d 0d b6 10 f2 6f 70 65  |,0)..........ope|
00002780  6e 6c 6f 67 28 22 22 29  0d 0d c0 17 f2 63 66 28  |nlog("").....cf(|
00002790  66 68 31 25 29 3a f2 63  66 28 66 68 32 25 29 0d  |fh1%):.cf(fh2%).|
000027a0  0d ca 20 e3 6c 25 3d 30  b8 74 77 6d 61 78 25 3a  |.. .l%=0.twmax%:|
000027b0  f2 63 66 28 74 77 66 25  28 6c 25 29 29 3a ed 0d  |.cf(twf%(l%)):..|
000027c0  0d d4 21 e3 6c 25 3d 30  b8 66 6d 61 78 25 3a f2  |..!.l%=0.fmax%:.|
000027d0  63 66 28 66 69 6c 65 68  25 28 6c 25 29 29 3a ed  |cf(fileh%(l%)):.|
000027e0  0d 0d de 10 f2 65 6e 64  6d 73 67 74 72 61 6e 73  |.....endmsgtrans|
000027f0  0d 0d e8 05 e1 0d 0d f2  04 0d 0d fc 0e dd f2 63  |...............c|
00002800  66 28 f8 20 43 25 29 0d  0e 06 21 e7 43 25 3c 3e  |f(. C%)...!.C%<>|
00002810  30 8c c8 99 22 58 4f 53  5f 46 69 6e 64 22 2c 30  |0..."XOS_Find",0|
00002820  2c 43 25 3a 43 25 3d 30  0d 0e 10 05 e1 0d 0e 1a  |,C%:C%=0........|
00002830  04 0d 0e 24 10 dd f2 67  65 74 70 6f 69 6e 74 65  |...$...getpointe|
00002840  72 0d 0e 2e 24 c8 99 22  57 69 6d 70 5f 47 65 74  |r...$.."Wimp_Get|
00002850  50 6f 69 6e 74 65 72 49  6e 66 6f 22 2c 2c 62 75  |PointerInfo",,bu|
00002860  66 66 65 72 25 0d 0e 38  3e 6d 78 25 3d 21 62 75  |ffer%..8>mx%=!bu|
00002870  66 66 65 72 25 3a 6d 79  25 3d 62 75 66 66 65 72  |ffer%:my%=buffer|
00002880  25 21 34 3a 62 25 3d 62  75 66 66 65 72 25 21 38  |%!4:b%=buffer%!8|
00002890  3a 68 61 6e 64 6c 65 25  3d 62 75 66 66 65 72 25  |:handle%=buffer%|
000028a0  21 31 32 0d 0e 42 23 69  63 6f 6e 25 3d 62 75 66  |!12..B#icon%=buf|
000028b0  66 65 72 25 21 31 36 3a  6f 62 25 3d 62 75 66 66  |fer%!16:ob%=buff|
000028c0  65 72 25 21 32 30 0d 0e  4c 05 e1 0d 0e 56 04 0d  |er%!20..L....V..|
000028d0  0e 60 1d dd f2 63 6c 69  63 6b 28 6d 78 25 2c 6d  |.`...click(mx%,m|
000028e0  79 25 2c 62 25 2c 77 25  2c 69 25 29 0d 0e 6a 07  |y%,b%,w%,i%)..j.|
000028f0  ea 5a 25 0d 0e 74 0a c8  8e 62 25 20 ca 0d 0e 7e  |.Z%..t...b% ...~|
00002900  07 c9 20 32 0d 0e 88 0c  20 20 c8 8e 77 25 20 ca  |.. 2....  ..w% .|
00002910  0d 0e 92 18 20 20 20 20  c9 20 2d 32 3a e7 69 25  |....    . -2:.i%|
00002920  3d 69 63 6f 6e 30 25 8c  0d 0e 9c 17 20 20 20 20  |=icon0%.....    |
00002930  20 20 20 20 f2 64 65 66  6d 65 6e 75 28 b9 29 0d  |    .defmenu(.).|
00002940  0e a6 0b 20 20 20 20 20  20 cc 0d 0e b0 17 20 20  |...      .....  |
00002950  20 20 20 20 20 20 e3 5a  25 3d 30 b8 69 6d 61 78  |      .Z%=0.imax|
00002960  25 0d 0e ba 6b 20 20 20  20 20 20 20 20 20 20 e7  |%...k          .|
00002970  69 25 3d 69 62 61 72 25  28 5a 25 29 80 69 6d 65  |i%=ibar%(Z%).ime|
00002980  6e 75 24 28 5a 25 2c 30  29 3e 22 22 8c f2 64 6f  |nu$(Z%,0)>""..do|
00002990  6d 65 6e 75 28 31 30 32  2c a4 6d 61 6b 65 6d 65  |menu(102,.makeme|
000029a0  6e 75 28 69 6d 65 6e 75  24 28 5a 25 2c 30 29 2c  |nu(imenu$(Z%,0),|
000029b0  69 6d 65 6e 75 24 28 5a  25 2c 31 29 29 2c 69 62  |imenu$(Z%,1)),ib|
000029c0  61 72 69 64 24 28 5a 25  29 2c b9 29 0d 0e c4 0d  |arid$(Z%),.)....|
000029d0  20 20 20 20 20 20 20 20  ed 0d 0e ce 0b 20 20 20  |        .....   |
000029e0  20 20 20 cd 0d 0e d8 2a  20 20 20 20 c9 20 74 78  |   ....*    . tx|
000029f0  74 25 3a c8 99 22 4f 53  5f 42 79 74 65 22 2c 31  |t%:.."OS_Byte",1|
00002a00  32 31 2c 28 31 82 26 38  30 29 b8 2c 5a 25 0d 0e  |21,(1.&80).,Z%..|
00002a10  e2 10 20 20 20 20 20 20  e7 5a 25 3d 30 8c 0d 0e  |..      .Z%=0...|
00002a20  ec 60 20 20 20 20 20 20  20 20 f2 64 6f 6d 65 6e  |.`        .domen|
00002a30  75 28 31 30 31 2c 22 41  6c 61 72 6d 20 6c 69 73  |u(101,"Alarm lis|
00002a40  74 2c 4d 65 6e 75 20 6c  69 73 74 2c 56 61 72 20  |t,Menu list,Var |
00002a50  6c 69 73 74 2c 54 61 73  6b 20 6c 69 73 74 2c 7c  |list,Task list,||
00002a60  53 63 72 69 70 74 20 6c  69 73 74 2c 51 75 69 74  |Script list,Quit|
00002a70  22 2c 22 43 6f 6e 74 72  6f 6c 22 2c 30 29 0d 0e  |","Control",0)..|
00002a80  f6 0d 20 20 20 20 20 20  20 20 cc 0d 0f 00 48 20  |..        ....H |
00002a90  20 20 20 20 20 20 20 f2  64 6f 6d 65 6e 75 28 31  |       .domenu(1|
00002aa0  30 31 2c 22 44 62 67 4c  65 76 20 30 2c 44 62 67  |01,"DbgLev 0,Dbg|
00002ab0  4c 65 76 20 31 2c 44 62  67 4c 65 76 20 32 2c 44  |Lev 1,DbgLev 2,D|
00002ac0  62 67 4c 65 76 20 33 22  2c 22 44 65 62 75 67 22  |bgLev 3","Debug"|
00002ad0  2c 30 29 0d 0f 0a 0b 20  20 20 20 20 20 cd 0d 0f  |,0)....      ...|
00002ae0  14 11 20 20 20 20 c9 20  73 74 61 74 75 73 25 0d  |..    . status%.|
00002af0  0f 1e 10 20 20 20 20 20  20 c8 8e 69 25 20 ca 0d  |...      ..i% ..|
00002b00  0f 28 5f 20 20 20 20 20  20 20 20 c9 37 3a e7 75  |.(_        .7:.u|
00002b10  73 65 72 6d 65 6e 75 24  28 30 29 3e 22 22 8c f2  |sermenu$(0)>""..|
00002b20  64 6f 6d 65 6e 75 28 31  30 32 2c a4 6d 61 6b 65  |domenu(102,.make|
00002b30  6d 65 6e 75 28 75 73 65  72 6d 65 6e 75 24 28 30  |menu(usermenu$(0|
00002b40  29 2c 75 73 65 72 6d 65  6e 75 24 28 31 29 29 2c  |),usermenu$(1)),|
00002b50  22 55 73 65 72 20 6d 65  6e 75 22 2c a3 29 0d 0f  |"User menu",.)..|
00002b60  32 19 20 20 20 20 20 20  20 20 7f 3a f2 64 65 66  |2.        .:.def|
00002b70  6d 65 6e 75 28 30 29 0d  0f 3c 0b 20 20 20 20 20  |menu(0)..<.     |
00002b80  20 cb 0d 0f 46 15 20 20  20 20 7f 3a f2 64 65 66  | ...F.    .:.def|
00002b90  6d 65 6e 75 28 30 29 0d  0f 50 07 20 20 cb 0d 0f  |menu(0)..P.  ...|
00002ba0  5a 09 c9 31 2c 34 3a 0d  0f 64 0d 20 20 c8 8e 20  |Z..1,4:..d.  .. |
00002bb0  77 25 20 ca 0d 0f 6e 12  20 20 20 20 c9 20 73 74  |w% ...n.    . st|
00002bc0  61 74 75 73 25 3a 0d 0f  78 10 20 20 20 20 20 20  |atus%:..x.      |
00002bd0  c8 8e 69 25 20 ca 0d 0f  82 0f 20 20 20 20 20 20  |..i% .....      |
00002be0  20 20 c9 35 3a 0d 0f 8c  16 20 20 20 20 20 20 20  |  .5:....       |
00002bf0  20 e7 ac 70 61 75 73 65  25 20 8c 0d 0f 96 2b 20  | ..pause% ....+ |
00002c00  20 20 20 20 20 20 20 20  20 f2 70 72 69 6e 74 28  |         .print(|
00002c10  22 22 2c a4 6d 73 67 30  28 22 50 61 75 73 65 50  |"",.msg0("PauseP|
00002c20  22 29 2c 22 22 29 0d 0f  a0 2b 20 20 20 20 20 20  |"),"")...+      |
00002c30  20 20 20 20 70 61 75 73  65 25 3d b9 3a f2 61 64  |    pause%=.:.ad|
00002c40  64 65 76 65 6e 74 28 22  70 61 75 73 65 22 2c 30  |devent("pause",0|
00002c50  29 0d 0f aa 0f 20 20 20  20 20 20 20 20 20 20 cc  |)....          .|
00002c60  0d 0f b4 16 20 20 20 20  20 20 20 20 20 20 f2 75  |....          .u|
00002c70  6e 70 61 75 73 65 0d 0f  be 0d 20 20 20 20 20 20  |npause....      |
00002c80  20 20 cd 0d 0f c8 0f 20  20 20 20 20 20 20 20 c9  |  .....        .|
00002c90  34 3a 0d 0f d2 38 20 20  20 20 20 20 20 20 20 20  |4:...8          |
00002ca0  73 74 6f 70 25 3d b9 3a  f2 70 72 69 6e 74 28 22  |stop%=.:.print("|
00002cb0  22 2c a4 6d 73 67 30 28  22 53 74 6f 70 50 22 29  |",.msg0("StopP")|
00002cc0  2c 22 22 29 3a f2 73 74  6f 70 0d 0f dc 5f 20 20  |,""):.stop..._  |
00002cd0  20 20 20 20 20 20 c9 36  3a e7 75 73 65 72 6d 65  |      .6:.userme|
00002ce0  6e 75 24 28 30 29 3e 22  22 8c f2 64 6f 6d 65 6e  |nu$(0)>""..domen|
00002cf0  75 28 31 30 32 2c a4 6d  61 6b 65 6d 65 6e 75 28  |u(102,.makemenu(|
00002d00  75 73 65 72 6d 65 6e 75  24 28 30 29 2c 75 73 65  |usermenu$(0),use|
00002d10  72 6d 65 6e 75 24 28 31  29 29 2c 22 55 73 65 72  |rmenu$(1)),"User|
00002d20  20 6d 65 6e 75 22 2c a3  29 0d 0f e6 56 20 20 20  | menu",.)...V   |
00002d30  20 20 20 20 20 c9 31 31  3a e7 a4 69 63 5f 73 74  |     .11:..ic_st|
00002d40  72 28 73 74 61 74 75 73  25 2c 69 25 29 3d 22 52  |r(status%,i%)="R|
00002d50  65 64 69 61 6c 22 8c 72  65 64 69 61 6c 25 3d b9  |edial".redial%=.|
00002d60  3a f2 70 72 69 6e 74 28  22 22 2c a4 6d 73 67 30  |:.print("",.msg0|
00002d70  28 22 52 65 64 69 61 6c  50 22 29 2c 22 22 29 0d  |("RedialP"),"").|
00002d80  0f f0 0b 20 20 20 20 20  20 cb 0d 0f fa 12 20 20  |...      .....  |
00002d90  20 20 c9 20 63 6f 6e 66  69 67 25 3a 0d 10 04 2e  |  . config%:....|
00002da0  20 20 20 20 20 20 e7 20  69 25 3d 36 20 8c f2 73  |      . i%=6 ..s|
00002db0  61 76 65 63 6f 6e 66 69  67 3a f2 63 6c 6f 73 65  |aveconfig:.close|
00002dc0  77 28 63 6f 6e 66 69 67  25 29 0d 10 0e 11 20 20  |w(config%)....  |
00002dd0  20 20 c9 20 79 65 73 6e  6f 25 3a 0d 10 18 1d 20  |  . yesno%:.... |
00002de0  20 20 20 20 20 e7 20 69  25 3d 30 20 8c 79 65 73  |     . i%=0 .yes|
00002df0  6e 6f 61 6e 73 25 3d 32  0d 10 22 1d 20 20 20 20  |noans%=2..".    |
00002e00  20 20 e7 20 69 25 3d 31  20 8c 79 65 73 6e 6f 61  |  . i%=1 .yesnoa|
00002e10  6e 73 25 3d 31 0d 10 2c  0f 20 20 20 20 c9 20 74  |ns%=1..,.    . t|
00002e20  78 74 25 3a 0d 10 36 44  20 20 20 20 20 20 c8 99  |xt%:..6D      ..|
00002e30  22 57 69 6d 70 5f 53 65  74 43 61 72 65 74 50 6f  |"Wimp_SetCaretPo|
00002e40  73 69 74 69 6f 6e 22 2c  77 25 2c 69 6e 69 63 25  |sition",w%,inic%|
00002e50  2c 2c 2c 2d 31 2c a9 a4  69 63 5f 73 74 72 28 77  |,,,-1,..ic_str(w|
00002e60  25 2c 69 6e 69 63 25 29  0d 10 40 0d 20 20 20 20  |%,inic%)..@.    |
00002e70  c9 20 2d 32 3a 0d 10 4a  15 20 20 20 20 20 20 e7  |. -2:..J.      .|
00002e80  69 25 3d 69 63 6f 6e 30  25 8c 0d 10 54 2e 20 20  |i%=icon0%...T.  |
00002e90  20 20 20 20 20 20 e7 62  25 3d 34 8c f2 66 72 6f  |      .b%=4..fro|
00002ea0  6e 74 28 73 74 61 74 75  73 25 29 8b f2 66 72 6f  |nt(status%)..fro|
00002eb0  6e 74 28 74 78 74 25 29  0d 10 5e 0b 20 20 20 20  |nt(txt%)..^.    |
00002ec0  20 20 cc 0d 10 68 17 20  20 20 20 20 20 20 20 e3  |  ...h.        .|
00002ed0  5a 25 3d 30 b8 69 6d 61  78 25 0d 10 72 3f 20 20  |Z%=0.imax%..r?  |
00002ee0  20 20 20 20 20 20 20 20  e7 69 25 3d 69 62 61 72  |        .i%=ibar|
00002ef0  25 28 5a 25 29 80 69 62  61 72 24 28 5a 25 29 3e  |%(Z%).ibar$(Z%)>|
00002f00  22 22 8c f2 61 64 64 65  76 65 6e 74 28 69 62 61  |""..addevent(iba|
00002f10  72 24 28 5a 25 29 2c 36  29 0d 10 7c 0d 20 20 20  |r$(Z%),6)..|.   |
00002f20  20 20 20 20 20 ed 0d 10  86 0b 20 20 20 20 20 20  |     .....      |
00002f30  cd 0d 10 90 07 20 20 cb  0d 10 9a 05 cb 0d 10 a4  |.....  .........|
00002f40  05 e1 0d 10 ae 04 0d 10  b8 11 dd f2 64 65 66 6d  |............defm|
00002f50  65 6e 75 28 69 25 29 0d  10 c2 42 f2 64 6f 6d 65  |enu(i%)...B.dome|
00002f60  6e 75 28 31 30 31 2c 22  3e 49 6e 66 6f 2c 43 68  |nu(101,">Info,Ch|
00002f70  6f 69 63 65 73 2e 2e 2e  2c 7c 43 6f 6e 74 72 6f  |oices...,|Contro|
00002f80  6c 2e 2e 2e 2c 51 75 69  74 22 2c 22 53 4c 49 50  |l...,Quit","SLIP|
00002f90  64 69 61 6c 22 2c 69 25  29 0d 10 cc 05 e1 0d 10  |dial",i%).......|
00002fa0  d6 04 0d 10 e0 11 dd f2  68 61 6c 74 28 6d 65 73  |........halt(mes|
00002fb0  73 24 29 0d 10 ea 35 63  61 6c 6c 5f 6c 65 76 25  |s$)...5call_lev%|
00002fc0  3d 30 3a 63 61 6c 6c 5f  6c 6f 63 6b 25 28 29 3d  |=0:call_lock%()=|
00002fd0  30 3a 65 76 65 6e 74 24  28 29 3d 22 22 3a 65 76  |0:event$()="":ev|
00002fe0  65 6e 74 25 28 29 3d b9  0d 10 f4 2e e7 65 72 72  |ent%()=......err|
00002ff0  6f 72 24 3e 22 22 8c f2  61 64 64 65 76 65 6e 74  |or$>""..addevent|
00003000  28 65 72 72 6f 72 24 2c  30 29 3a 65 72 72 6f 72  |(error$,0):error|
00003010  24 3d 22 22 3a e1 0d 10  fe 39 f2 6d 65 73 73 61  |$="":....9.messa|
00003020  67 65 28 22 22 22 22 2b  a4 6d 73 67 32 28 22 45  |ge(""""+.msg2("E|
00003030  73 63 72 69 70 74 22 2c  c3 73 74 61 67 65 25 2c  |script",.stage%,|
00003040  6d 65 73 73 24 29 2b 22  22 22 22 29 3a ef 37 0d  |mess$)+""""):.7.|
00003050  11 08 20 f2 70 72 69 6e  74 28 22 22 2c a4 6d 73  |.. .print("",.ms|
00003060  67 30 28 22 53 74 6f 70  45 22 29 2c 22 22 29 0d  |g0("StopE"),"").|
00003070  11 12 1b 73 74 61 67 65  25 3d 30 3a 72 75 6e 25  |...stage%=0:run%|
00003080  3d a3 3a f2 70 61 75 73  65 64 0d 11 1c 05 e1 0d  |=.:.paused......|
00003090  11 26 04 0d 11 30 0f dd  f2 69 6e 70 75 74 28 41  |.&...0...input(A|
000030a0  24 29 0d 11 3a 16 ea 76  24 2c 70 24 3a 70 24 3d  |$)..:..v$,p$:p$=|
000030b0  22 49 6e 70 75 74 3a 22  0d 11 44 1c f5 42 24 3d  |"Input:"..D..B$=|
000030c0  a4 70 61 72 61 6d 28 41  24 29 3a 69 6e 70 75 74  |.param(A$):input|
000030d0  24 3d 22 22 0d 11 4e 10  e7 c0 42 24 2c 31 29 3d  |$=""..N...B$,1)=|
000030e0  22 2f 22 8c 0d 11 58 1b  43 24 3d a4 76 61 6c 75  |"/"...X.C$=.valu|
000030f0  65 28 42 24 29 3a c8 8e  c0 42 24 2c 32 29 ca 0d  |e(B$):...B$,2)..|
00003100  11 62 16 20 20 c9 22 70  72 22 3a 70 24 3d c0 43  |.b.  ."pr":p$=.C|
00003110  24 2c 34 30 29 0d 11 6c  07 20 20 cb 0d 11 76 05  |$,40)..l.  ...v.|
00003120  cc 0d 11 80 39 20 20 76  24 3d 42 24 3a f2 75 70  |....9  v$=B$:.up|
00003130  64 5f 69 63 6f 6e 28 69  6e 70 75 74 25 2c 31 2c  |d_icon(input%,1,|
00003140  22 22 29 3a f2 75 70 64  5f 69 63 6f 6e 28 69 6e  |""):.upd_icon(in|
00003150  70 75 74 25 2c 30 2c 70  24 29 0d 11 8a 3e 20 20  |put%,0,p$)...>  |
00003160  f2 66 72 6f 6e 74 28 69  6e 70 75 74 25 29 3a c8  |.front(input%):.|
00003170  99 22 57 69 6d 70 5f 53  65 74 43 61 72 65 74 50  |."Wimp_SetCaretP|
00003180  6f 73 69 74 69 6f 6e 22  2c 69 6e 70 75 74 25 2c  |osition",input%,|
00003190  31 2c 2c 2c 2d 31 2c 30  0d 11 94 27 20 20 f5 f2  |1,,,-1,0...'  ..|
000031a0  70 6f 6c 6c 28 35 30 29  3a fd 69 6e 70 75 74 24  |poll(50):.input$|
000031b0  3e 22 22 3a 70 24 3d 22  49 6e 70 75 74 3a 22 0d  |>"":p$="Input:".|
000031c0  11 9e 1b 20 20 e7 69 6e  70 75 74 24 3d 22 20 22  |...  .input$=" "|
000031d0  8c 69 6e 70 75 74 24 3d  22 22 0d 11 a8 16 20 20  |.input$=""....  |
000031e0  f2 73 65 74 76 28 76 24  2c 69 6e 70 75 74 24 29  |.setv(v$,input$)|
000031f0  0d 11 b2 05 cd 0d 11 bc  0a fd 41 24 3d 22 22 0d  |..........A$="".|
00003200  11 c6 13 f2 63 6c 6f 73  65 77 28 69 6e 70 75 74  |....closew(input|
00003210  25 29 0d 11 d0 05 e1 0d  11 da 04 0d 11 e4 11 dd  |%)..............|
00003220  f2 6d 65 73 73 61 67 65  28 41 24 29 0d 11 ee 0d  |.message(A$)....|
00003230  ea 77 25 2c 6e 25 2c 74  24 0d 11 f8 1f 74 24 3d  |.w%,n%,t$....t$=|
00003240  a4 6d 73 67 30 28 22 4d  65 73 73 61 67 65 22 29  |.msg0("Message")|
00003250  3a 6d 73 67 63 25 3d a3  0d 12 02 0d 77 25 3d 30  |:msgc%=.....w%=0|
00003260  3a 6e 25 3d 30 0d 12 0c  12 f5 42 24 3d a4 70 61  |:n%=0.....B$=.pa|
00003270  72 61 6d 28 41 24 29 0d  12 16 10 e7 c0 42 24 2c  |ram(A$)......B$,|
00003280  31 29 3d 22 2f 22 8c 0d  12 20 1b 43 24 3d a4 76  |1)="/"... .C$=.v|
00003290  61 6c 75 65 28 42 24 29  3a c8 8e c0 42 24 2c 32  |alue(B$):...B$,2|
000032a0  29 ca 0d 12 2a 1a 20 20  c9 22 63 6c 22 3a f2 63  |)...*.  ."cl":.c|
000032b0  6c 6f 73 65 77 28 6d 65  73 73 25 29 0d 12 34 10  |losew(mess%)..4.|
000032c0  20 20 c9 22 77 61 22 3a  77 25 3d b9 0d 12 3e 11  |  ."wa":w%=...>.|
000032d0  20 20 c9 22 74 69 22 3a  74 24 3d 43 24 0d 12 48  |  ."ti":t$=C$..H|
000032e0  21 20 20 c9 22 63 61 22  3a 6d 73 67 5f 63 73 24  |!  ."ca":msg_cs$|
000032f0  3d 43 24 3a 6d 73 67 5f  63 65 24 3d 22 22 0d 12  |=C$:msg_ce$=""..|
00003300  52 41 20 20 20 20 20 20  20 20 6d 73 67 5f 63 6d  |RA        msg_cm|
00003310  25 3d 6d 73 67 6d 61 78  25 3a 6d 73 67 5f 63 73  |%=msgmax%:msg_cs|
00003320  25 3d 31 3a 6d 73 67 74  25 3d 74 69 6d 65 25 3a  |%=1:msgt%=time%:|
00003330  e7 6e 25 3d 30 8c 6d 73  67 24 28 29 3d 22 22 0d  |.n%=0.msg$()="".|
00003340  12 5c 13 20 20 c9 22 63  65 22 3a 6d 73 67 63 25  |.\.  ."ce":msgc%|
00003350  3d b9 0d 12 66 16 20 20  c9 22 65 6e 22 3a 6d 73  |=...f.  ."en":ms|
00003360  67 5f 63 65 24 3d 43 24  0d 12 70 17 20 20 c9 22  |g_ce$=C$..p.  ."|
00003370  6d 61 22 3a 6d 73 67 5f  63 6d 25 3d bb 43 24 0d  |ma":msg_cm%=.C$.|
00003380  12 7a 11 20 20 c9 22 61  64 22 3a 6e 25 2b 3d 31  |.z.  ."ad":n%+=1|
00003390  0d 12 84 11 20 20 c9 22  6e 61 22 2c 22 69 64 22  |....  ."na","id"|
000033a0  3a 0d 12 8e 07 20 20 cb  0d 12 98 05 cc 0d 12 a2  |:....  .........|
000033b0  1b 20 20 e7 42 24 3e 22  22 80 6e 25 3d 30 8c 6d  |.  .B$>"".n%=0.m|
000033c0  73 67 24 28 29 3d 22 22  0d 12 ac 22 20 20 e7 42  |sg$()=""..."  .B|
000033d0  24 3e 22 22 8c f2 61 64  64 6d 65 73 73 61 67 65  |$>""..addmessage|
000033e0  28 42 24 29 3a 6e 25 2b  3d 31 0d 12 b6 05 cd 0d  |(B$):n%+=1......|
000033f0  12 c0 15 fd 42 24 3d 22  22 84 6e 25 3e 6d 73 67  |....B$="".n%>msg|
00003400  6d 61 78 25 0d 12 ca 1f  24 6d 73 67 74 74 6c 25  |max%....$msgttl%|
00003410  3d 74 24 3a f2 64 6f 74  69 74 6c 65 28 6d 65 73  |=t$:.dotitle(mes|
00003420  73 25 29 0d 12 d4 0a e7  6e 25 3e 30 8c 0d 12 de  |s%).....n%>0....|
00003430  13 f2 61 64 64 6d 65 73  73 61 67 65 28 22 22 29  |..addmessage("")|
00003440  0d 12 e8 05 cd 0d 12 f2  1c e7 77 25 8c f2 61 64  |..........w%..ad|
00003450  64 65 76 65 6e 74 28 22  70 61 75 73 65 22 2c 30  |devent("pause",0|
00003460  29 0d 12 fc 05 e1 0d 13  06 04 0d 13 10 14 dd f2  |)...............|
00003470  61 64 64 6d 65 73 73 61  67 65 28 41 24 29 0d 13  |addmessage(A$)..|
00003480  1a 18 ea 6c 25 2c 77 25  2c 74 24 3a 6c 25 3d 2d  |...l%,w%,t$:l%=-|
00003490  31 3a 77 25 3d 30 0d 13  24 25 f5 6c 25 2b 3d 31  |1:w%=0..$%.l%+=1|
000034a0  3a 74 24 3d 6d 73 67 24  28 6c 25 29 3a e7 a9 74  |:t$=msg$(l%):..t|
000034b0  24 3e 77 25 8c 77 25 3d  a9 74 24 0d 13 2e 21 fd  |$>w%.w%=.t$...!.|
000034c0  74 24 3d 22 22 84 6c 25  3d 6d 73 67 6d 61 78 25  |t$="".l%=msgmax%|
000034d0  3a 6d 73 67 74 25 3d 74  69 6d 65 25 0d 13 38 0b  |:msgt%=time%..8.|
000034e0  e7 41 24 3e 22 22 8c 0d  13 42 35 20 20 e7 6c 25  |.A$>""...B5  .l%|
000034f0  3d 6d 73 67 6d 61 78 25  8c e3 6c 25 3d 31 b8 6d  |=msgmax%..l%=1.m|
00003500  73 67 6d 61 78 25 3a 6d  73 67 24 28 6c 25 2d 31  |sgmax%:msg$(l%-1|
00003510  29 3d 6d 73 67 24 28 6c  25 29 3a ed 0d 13 4c 11  |)=msg$(l%):...L.|
00003520  20 20 6d 73 67 24 28 6c  25 29 3d 41 24 0d 13 56  |  msg$(l%)=A$..V|
00003530  07 20 20 cc 0d 13 60 1c  20 20 e7 6c 25 3e 30 8c  |.  ...`.  .l%>0.|
00003540  f2 6f 70 65 6e 6d 65 73  73 28 6c 25 2c 77 25 29  |.openmess(l%,w%)|
00003550  0d 13 6a 05 cd 0d 13 74  05 e1 0d 13 7e 04 0d 13  |..j....t....~...|
00003560  88 15 dd f2 6f 70 65 6e  6d 65 73 73 28 79 25 2c  |....openmess(y%,|
00003570  78 25 29 0d 13 92 07 ea  6f 25 0d 13 9c 36 21 74  |x%).....o%...6!t|
00003580  6d 70 25 3d 30 3a 74 6d  70 25 21 34 3d 2d 79 25  |mp%=0:tmp%!4=-y%|
00003590  2a 33 32 2d 33 32 3a 74  6d 70 25 21 38 3d 78 25  |*32-32:tmp%!8=x%|
000035a0  2a 31 36 2b 31 30 3a 74  6d 70 25 21 31 32 3d 30  |*16+10:tmp%!12=0|
000035b0  0d 13 a6 21 c8 99 22 57  69 6d 70 5f 53 65 74 45  |...!.."Wimp_SetE|
000035c0  78 74 65 6e 74 22 2c 6d  65 73 73 25 2c 74 6d 70  |xtent",mess%,tmp|
000035d0  25 0d 13 b0 3c 21 71 25  3d 6d 65 73 73 25 3a c8  |%...<!q%=mess%:.|
000035e0  99 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  |."Wimp_GetWindow|
000035f0  53 74 61 74 65 22 2c 2c  71 25 3a 6f 25 3d 28 71  |State",,q%:o%=(q|
00003600  25 21 33 32 29 80 28 31  3c 3c 31 36 29 0d 13 ba  |%!32).(1<<16)...|
00003610  2b 71 25 21 31 32 3d 71  25 21 34 2b 78 25 2a 31  |+q%!12=q%!4+x%*1|
00003620  36 2b 31 30 3a 71 25 21  31 36 3d 71 25 21 38 2b  |6+10:q%!16=q%!8+|
00003630  79 25 2a 33 32 2b 33 32  0d 13 c4 34 71 25 21 32  |y%*32+32...4q%!2|
00003640  30 3d 30 3a 71 25 21 32  34 3d 30 3a 71 25 21 32  |0=0:q%!24=0:q%!2|
00003650  38 3d 2d 31 3a c8 99 22  57 69 6d 70 5f 4f 70 65  |8=-1:.."Wimp_Ope|
00003660  6e 57 69 6e 64 6f 77 22  2c 2c 71 25 0d 13 ce 2d  |nWindow",,q%...-|
00003670  e7 6f 25 3d 30 8c f2 63  66 72 6f 6e 74 28 6d 65  |.o%=0..cfront(me|
00003680  73 73 25 2c 30 2c 31 35  30 29 20 8b f2 66 72 6f  |ss%,0,150) ..fro|
00003690  6e 74 28 6d 65 73 73 25  29 0d 13 d8 3a 21 71 25  |nt(mess%)...:!q%|
000036a0  3d 6d 65 73 73 25 3a c8  99 22 57 69 6d 70 5f 47  |=mess%:.."Wimp_G|
000036b0  65 74 57 69 6e 64 6f 77  53 74 61 74 65 22 2c 2c  |etWindowState",,|
000036c0  71 25 3a 6d 73 67 77 25  3d 71 25 21 31 32 2d 71  |q%:msgw%=q%!12-q|
000036d0  25 21 34 0d 13 e2 24 f2  75 70 64 61 74 65 5f 6d  |%!4...$.update_m|
000036e0  73 67 28 30 2c 2d 79 25  2a 33 32 2d 33 32 2c 6d  |sg(0,-y%*32-32,m|
000036f0  73 67 77 25 2c 30 29 0d  13 ec 05 e1 0d 13 f6 04  |sgw%,0).........|
00003700  0d 14 00 11 dd f2 6d 73  67 66 69 6c 74 28 41 24  |......msgfilt(A$|
00003710  29 0d 14 0a 29 e7 6d 73  67 5f 63 73 25 3d 31 20  |)...).msg_cs%=1 |
00003720  80 a7 41 24 2c 6d 73 67  5f 63 73 24 29 3e 30 20  |..A$,msg_cs$)>0 |
00003730  8c 6d 73 67 5f 63 73 25  3d 32 0d 14 14 10 e7 6d  |.msg_cs%=2.....m|
00003740  73 67 5f 63 73 25 3d 32  20 8c 0d 14 1e 20 20 20  |sg_cs%=2 ....   |
00003750  6d 73 67 5f 63 6d 25 2d  3d 31 3a f2 61 64 64 6d  |msg_cm%-=1:.addm|
00003760  65 73 73 61 67 65 28 41  24 29 0d 14 28 47 20 20  |essage(A$)..(G  |
00003770  e7 6d 73 67 5f 63 6d 25  3c 31 84 28 6d 73 67 5f  |.msg_cm%<1.(msg_|
00003780  63 65 24 3e 22 22 80 a7  41 24 2c 6d 73 67 5f 63  |ce$>""..A$,msg_c|
00003790  65 24 29 3e 30 29 20 8c  6d 73 67 5f 63 73 25 3d  |e$)>0) .msg_cs%=|
000037a0  30 3a f2 61 64 64 6d 65  73 73 61 67 65 28 22 22  |0:.addmessage(""|
000037b0  29 0d 14 32 05 cd 0d 14  3c 05 e1 0d 14 46 04 0d  |)..2....<....F..|
000037c0  14 50 0c dd f2 70 61 75  73 65 64 0d 14 5a 31 70  |.P...paused..Z1p|
000037d0  61 75 73 65 25 3d b9 3a  f2 75 70 64 5f 69 63 6f  |ause%=.:.upd_ico|
000037e0  6e 28 73 74 61 74 75 73  25 2c 35 2c a4 6d 73 67  |n(status%,5,.msg|
000037f0  30 28 22 52 65 73 75 6d  65 22 29 29 0d 14 64 21  |0("Resume"))..d!|
00003800  f2 70 72 69 6e 74 28 22  22 2c a4 6d 73 67 30 28  |.print("",.msg0(|
00003810  22 50 61 75 73 65 64 22  29 2c 22 22 29 0d 14 6e  |"Paused"),"")..n|
00003820  18 f5 f2 70 6f 6c 6c 28  33 30 29 3a fd 70 61 75  |...poll(30):.pau|
00003830  73 65 25 3d a3 0d 14 78  05 e1 0d 14 82 04 0d 14  |se%=...x........|
00003840  8c 0d dd f2 75 6e 70 61  75 73 65 0d 14 96 3f 70  |....unpause...?p|
00003850  61 75 73 65 25 3d a3 3a  73 74 6f 70 25 3d a3 3a  |ause%=.:stop%=.:|
00003860  72 75 6e 25 3d b9 3a f2  75 70 64 5f 69 63 6f 6e  |run%=.:.upd_icon|
00003870  28 73 74 61 74 75 73 25  2c 35 2c a4 6d 73 67 30  |(status%,5,.msg0|
00003880  28 22 50 61 75 73 65 22  29 29 0d 14 a0 15 f2 70  |("Pause")).....p|
00003890  72 69 6e 74 28 22 22 2c  22 20 22 2c 22 22 29 0d  |rint(""," ","").|
000038a0  14 aa 05 e1 0d 14 b4 04  0d 14 be 0a dd f2 73 74  |..............st|
000038b0  6f 70 0d 14 c8 3f 63 61  6c 6c 5f 6c 65 76 25 3d  |op...?call_lev%=|
000038c0  30 3a 63 61 6c 6c 5f 6c  6f 63 6b 25 28 29 3d 30  |0:call_lock%()=0|
000038d0  3a 65 76 65 6e 74 24 28  29 3d 22 22 3a 65 76 65  |:event$()="":eve|
000038e0  6e 74 25 28 29 3d b9 3a  6d 73 67 5f 63 73 25 3d  |nt%()=.:msg_cs%=|
000038f0  30 0d 14 d2 5b e7 73 74  61 67 65 25 3e 30 80 73  |0...[.stage%>0.s|
00003900  74 6f 70 24 3c 3e 22 22  8c f2 61 64 64 65 76 65  |top$<>""..addeve|
00003910  6e 74 28 73 74 6f 70 24  2c 30 29 3a 73 74 6f 70  |nt(stop$,0):stop|
00003920  24 3d 22 22 3a 8b f2 61  64 64 65 76 65 6e 74 28  |$="":..addevent(|
00003930  22 70 61 75 73 65 22 2c  30 29 3a 73 74 61 67 65  |"pause",0):stage|
00003940  25 3d 30 3a f2 72 65 6c  65 61 73 65 0d 14 dc 05  |%=0:.release....|
00003950  e1 0d 14 e6 04 0d 14 f0  29 dd f2 64 6f 6d 65 6e  |........)..domen|
00003960  75 28 68 61 6e 64 6c 65  25 2c 6d 65 6e 75 24 2c  |u(handle%,menu$,|
00003970  6d 65 6e 75 74 69 74 6c  65 24 2c 49 25 29 0d 14  |menutitle$,I%)..|
00003980  fa 21 ea 69 25 2c 69 74  65 6d 24 2c 6d 65 6e 75  |.!.i%,item$,menu|
00003990  49 74 65 6d 73 25 2c 6d  65 6e 75 70 74 72 25 0d  |Items%,menuptr%.|
000039a0  15 04 0f e7 6d 65 6e 75  24 3d 22 22 8c e1 0d 15  |....menu$=""....|
000039b0  0e 12 6d 65 6e 75 49 74  65 6d 73 25 20 3d 20 30  |..menuItems% = 0|
000039c0  0d 15 18 17 6d 65 6e 75  68 61 6e 64 6c 65 25 3d  |....menuhandle%=|
000039d0  68 61 6e 64 6c 65 25 0d  15 22 16 6d 65 6e 75 70  |handle%..".menup|
000039e0  74 72 25 3d 6d 65 6e 75  64 61 74 61 25 0d 15 2c  |tr%=menudata%..,|
000039f0  08 69 25 3d 30 0d 15 36  12 6d 65 6e 75 70 74 72  |.i%=0..6.menuptr|
00003a00  25 21 32 30 3d 34 34 0d  15 40 18 24 6d 65 6e 75  |%!20=44..@.$menu|
00003a10  70 74 72 25 3d 6d 65 6e  75 74 69 74 6c 65 24 0d  |ptr%=menutitle$.|
00003a20  15 4a 3c 6d 65 6e 75 70  74 72 25 3f 31 32 3d 37  |.J<menuptr%?12=7|
00003a30  3a 6d 65 6e 75 70 74 72  25 3f 31 33 3d 32 3a 6d  |:menuptr%?13=2:m|
00003a40  65 6e 75 70 74 72 25 3f  31 34 3d 26 37 3a 6d 65  |enuptr%?14=&7:me|
00003a50  6e 75 70 74 72 25 3f 31  35 3d 30 0d 15 54 24 6d  |nuptr%?15=0..T$m|
00003a60  65 6e 75 70 74 72 25 21  31 36 3d 32 33 30 2d 32  |enuptr%!16=230-2|
00003a70  34 3a 6d 65 6e 75 70 74  72 25 21 32 34 3d 30 0d  |4:menuptr%!24=0.|
00003a80  15 5e 10 6d 65 6e 75 70  74 72 25 2b 3d 32 38 0d  |.^.menuptr%+=28.|
00003a90  15 68 05 f5 0d 15 72 3d  20 20 69 74 65 6d 24 3d  |.h....r=  item$=|
00003aa0  a4 70 61 72 28 6d 65 6e  75 24 2c 22 2c 22 2c 69  |.par(menu$,",",i|
00003ab0  25 29 3a f2 6d 65 6e 75  69 74 65 6d 28 69 74 65  |%):.menuitem(ite|
00003ac0  6d 24 29 3a 6d 65 6e 75  49 74 65 6d 73 25 2b 3d  |m$):menuItems%+=|
00003ad0  31 0d 15 7c 0d fd 69 74  65 6d 24 3d 22 22 0d 15  |1..|..item$=""..|
00003ae0  86 23 6d 65 6e 75 70 74  72 25 21 2d 32 34 3d 28  |.#menuptr%!-24=(|
00003af0  6d 65 6e 75 70 74 72 25  21 2d 32 34 29 84 26 38  |menuptr%!-24).&8|
00003b00  30 0d 15 90 2c e7 49 25  3c 3e 30 20 8c 59 25 3d  |0...,.I%<>0 .Y%=|
00003b10  31 32 30 2b 28 6d 65 6e  75 49 74 65 6d 73 25 2d  |120+(menuItems%-|
00003b20  31 29 2a 34 34 20 8b 59  25 3d 6d 79 25 0d 15 9a  |1)*44 .Y%=my%...|
00003b30  2d c8 99 20 22 57 69 6d  70 5f 43 72 65 61 74 65  |-.. "Wimp_Create|
00003b40  4d 65 6e 75 22 2c 2c 6d  65 6e 75 64 61 74 61 25  |Menu",,menudata%|
00003b50  2c 6d 78 25 2d 36 34 2c  59 25 0d 15 a4 05 e1 0d  |,mx%-64,Y%......|
00003b60  15 ae 04 0d 15 b8 15 dd  f2 6d 65 6e 75 69 74 65  |.........menuite|
00003b70  6d 28 74 65 78 74 24 29  0d 15 c2 0a ea 6c 65 66  |m(text$).....lef|
00003b80  74 24 0d 15 cc 0f e7 20  74 65 78 74 24 3e 22 22  |t$..... text$>""|
00003b90  8c 0d 15 d6 11 20 20 21  6d 65 6e 75 70 74 72 25  |.....  !menuptr%|
00003ba0  3d 30 0d 15 e0 30 20 20  e7 c0 74 65 78 74 24 2c  |=0...0  ..text$,|
00003bb0  31 29 3d 22 7c 22 8c 74  65 78 74 24 3d c1 74 65  |1)="|".text$=.te|
00003bc0  78 74 24 2c 32 29 3a 21  6d 65 6e 75 70 74 72 25  |xt$,2):!menuptr%|
00003bd0  3d 32 0d 15 ea 25 20 20  6c 65 66 74 24 20 3d 20  |=2...%  left$ = |
00003be0  c0 74 65 78 74 24 2c 31  29 3a 6d 65 6e 75 70 74  |.text$,1):menupt|
00003bf0  72 25 21 34 3d 2d 31 0d  15 f4 23 20 20 e7 20 6c  |r%!4=-1...#  . l|
00003c00  65 66 74 24 3d 22 3e 22  20 8c 6d 65 6e 75 70 74  |eft$=">" .menupt|
00003c10  72 25 21 34 3d 69 6e 66  6f 25 0d 15 fe 1a 20 20  |r%!4=info%....  |
00003c20  6d 65 6e 75 70 74 72 25  21 38 3d 26 30 37 30 30  |menuptr%!8=&0700|
00003c30  30 30 32 31 0d 16 08 4f  20 20 e7 20 6c 65 66 74  |0021...O  . left|
00003c40  24 3d 22 3e 22 20 84 20  6c 65 66 74 24 3d 22 3c  |$=">" . left$="<|
00003c50  22 20 8c 20 24 28 6d 65  6e 75 70 74 72 25 2b 31  |" . $(menuptr%+1|
00003c60  32 29 3d c1 74 65 78 74  24 2c 32 29 20 8b 20 24  |2)=.text$,2) . $|
00003c70  28 6d 65 6e 75 70 74 72  25 2b 31 32 29 3d 74 65  |(menuptr%+12)=te|
00003c80  78 74 24 0d 16 12 12 20  20 6d 65 6e 75 70 74 72  |xt$....  menuptr|
00003c90  25 2b 3d 32 34 0d 16 1c  05 cd 0d 16 26 05 e1 0d  |%+=24.......&...|
00003ca0  16 30 04 0d 16 3a 1a dd  a4 70 61 72 28 6d 65 6e  |.0...:...par(men|
00003cb0  75 24 2c 73 65 70 24 2c  f8 20 69 25 29 0d 16 44  |u$,sep$,. i%)..D|
00003cc0  08 ea 69 31 25 0d 16 4e  25 69 31 25 3d 69 25 2b  |..i1%..N%i1%=i%+|
00003cd0  31 3a 69 25 3d a7 6d 65  6e 75 24 2b 73 65 70 24  |1:i%=.menu$+sep$|
00003ce0  2c 73 65 70 24 2c 69 31  25 29 0d 16 58 17 3d c1  |,sep$,i1%)..X.=.|
00003cf0  6d 65 6e 75 24 2c 69 31  25 2c 69 25 2d 69 31 25  |menu$,i1%,i%-i1%|
00003d00  29 0d 16 62 04 0d 16 6c  18 dd f2 6d 65 6e 75 73  |)..b...l...menus|
00003d10  65 6c 65 63 74 28 6d 65  6e 75 73 25 29 0d 16 76  |elect(menus%)..v|
00003d20  07 ea 41 24 0d 16 80 3c  ea 6c 25 3a c8 99 22 57  |..A$...<.l%:.."W|
00003d30  69 6d 70 5f 44 65 63 6f  64 65 4d 65 6e 75 22 2c  |imp_DecodeMenu",|
00003d40  2c 6d 65 6e 75 64 61 74  61 25 2c 6d 65 6e 75 73  |,menudata%,menus|
00003d50  25 2c c4 32 30 2c 22 20  22 29 b8 2c 2c 2c 41 24  |%,.20," ").,,,A$|
00003d60  0d 16 8a 0b c8 8e 20 41  24 20 ca 0d 16 94 23 20  |...... A$ ....# |
00003d70  20 c9 22 43 68 6f 69 63  65 73 2e 2e 2e 22 3a f2  | ."Choices...":.|
00003d80  66 72 6f 6e 74 28 63 6f  6e 66 69 67 25 29 0d 16  |front(config%)..|
00003d90  9e 20 20 20 c9 22 43 6f  6e 74 72 6f 6c 2e 2e 2e  |.   ."Control...|
00003da0  22 3a f2 66 72 6f 6e 74  28 74 78 74 25 29 0d 16  |":.front(txt%)..|
00003db0  a8 17 20 20 c9 22 51 75  69 74 22 3a f2 66 69 6e  |..  ."Quit":.fin|
00003dc0  69 73 68 3a e0 0d 16 b2  1f 20 20 c9 22 41 6c 61  |ish:.....  ."Ala|
00003dd0  72 6d 20 6c 69 73 74 22  3a f2 6c 69 73 74 61 6c  |rm list":.listal|
00003de0  61 72 6d 73 0d 16 bc 1c  20 20 c9 22 4d 65 6e 75  |arms....  ."Menu|
00003df0  20 6c 69 73 74 22 3a f2  6c 69 73 74 6d 65 6e 75  | list":.listmenu|
00003e00  0d 16 c6 1d 20 20 c9 22  54 61 73 6b 20 6c 69 73  |....  ."Task lis|
00003e10  74 22 3a f2 6c 69 73 74  74 61 73 6b 73 0d 16 d0  |t":.listtasks...|
00003e20  1b 20 20 c9 22 56 61 72  20 6c 69 73 74 22 3a f2  |.  ."Var list":.|
00003e30  6c 69 73 74 76 61 72 73  0d 16 da 24 20 20 c9 22  |listvars...$  ."|
00003e40  53 63 72 69 70 74 20 6c  69 73 74 22 3a f2 6c 69  |Script list":.li|
00003e50  73 74 73 63 72 69 70 74  28 22 22 29 0d 16 e4 1a  |stscript("")....|
00003e60  20 20 c9 22 44 62 67 4c  65 76 20 30 22 3a 64 65  |  ."DbgLev 0":de|
00003e70  62 75 67 25 3d 30 0d 16  ee 1a 20 20 c9 22 44 62  |bug%=0....  ."Db|
00003e80  67 4c 65 76 20 31 22 3a  64 65 62 75 67 25 3d 31  |gLev 1":debug%=1|
00003e90  0d 16 f8 1a 20 20 c9 22  44 62 67 4c 65 76 20 32  |....  ."DbgLev 2|
00003ea0  22 3a 64 65 62 75 67 25  3d 32 0d 17 02 1a 20 20  |":debug%=2....  |
00003eb0  c9 22 44 62 67 4c 65 76  20 33 22 3a 64 65 62 75  |."DbgLev 3":debu|
00003ec0  67 25 3d 33 0d 17 0c 13  20 20 7f 3a e7 75 6d 65  |g%=3....  .:.ume|
00003ed0  6e 75 25 3e 30 20 8c 0d  17 16 16 20 20 20 20 20  |nu%>0 .....     |
00003ee0  20 e3 6c 25 3d 31 b8 75  6d 65 6e 75 25 0d 17 20  | .l%=1.umenu%.. |
00003ef0  1e 20 20 20 20 20 20 20  20 e7 41 24 3d 75 6d 65  |.        .A$=ume|
00003f00  6e 75 24 28 6c 25 2c 30  29 20 8c 0d 17 2a 2f 20  |nu$(l%,0) ...*/ |
00003f10  20 20 20 20 20 20 20 20  20 f2 75 70 64 5f 69 63  |         .upd_ic|
00003f20  6f 6e 28 73 74 61 74 75  73 25 2c 37 2c 75 6d 65  |on(status%,7,ume|
00003f30  6e 75 24 28 6c 25 2c 30  29 29 0d 17 34 27 20 20  |nu$(l%,0))..4'  |
00003f40  20 20 20 20 20 20 20 20  f2 61 64 64 65 76 65 6e  |        .addeven|
00003f50  74 28 75 6d 65 6e 75 24  28 6c 25 2c 31 29 2c 38  |t(umenu$(l%,1),8|
00003f60  29 0d 17 3e 0d 20 20 20  20 20 20 20 20 cd 0d 17  |)..>.        ...|
00003f70  48 0b 20 20 20 20 20 20  ed 0d 17 52 09 20 20 20  |H.      ...R.   |
00003f80  20 cd 0d 17 5c 05 cb 0d  17 66 05 e1 0d 17 70 04  | ...\....f....p.|
00003f90  0d 17 7a 0e dd f2 65 72  72 6f 72 62 6f 78 0d 17  |..z...errorbox..|
00003fa0  84 3c 21 62 75 66 66 65  72 25 3d 9f 3a 24 28 62  |.<!buffer%=.:$(b|
00003fb0  75 66 66 65 72 25 2b 34  29 3d f6 24 2b 22 20 28  |uffer%+4)=.$+" (|
00003fc0  69 6e 74 65 72 6e 61 6c  20 63 6f 64 65 20 22 2b  |internal code "+|
00003fd0  c3 9e 2b 22 29 2e 22 2b  bd 30 0d 17 8e 31 c8 99  |..+")."+.0...1..|
00003fe0  20 22 57 69 6d 70 5f 52  65 70 6f 72 74 45 72 72  | "Wimp_ReportErr|
00003ff0  6f 72 22 2c 62 75 66 66  65 72 25 2c 31 2c 54 61  |or",buffer%,1,Ta|
00004000  73 6b 24 3a f2 66 69 6e  69 73 68 0d 17 98 05 e1  |sk$:.finish.....|
00004010  0d 17 a2 04 0d 17 ac 0f  dd f2 66 72 6f 6e 74 28  |..........front(|
00004020  68 25 29 0d 17 b6 26 21  71 25 3d 68 25 3a c8 99  |h%)...&!q%=h%:..|
00004030  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 53  |"Wimp_GetWindowS|
00004040  74 61 74 65 22 2c 2c 71  25 0d 17 c0 24 71 25 21  |tate",,q%...$q%!|
00004050  32 38 3d 2d 31 3a c8 99  22 57 69 6d 70 5f 4f 70  |28=-1:.."Wimp_Op|
00004060  65 6e 57 69 6e 64 6f 77  22 2c 2c 71 25 0d 17 ca  |enWindow",,q%...|
00004070  47 e7 68 25 3d 74 78 74  25 8c c8 99 22 57 69 6d  |G.h%=txt%..."Wim|
00004080  70 5f 53 65 74 43 61 72  65 74 50 6f 73 69 74 69  |p_SetCaretPositi|
00004090  6f 6e 22 2c 68 25 2c 69  6e 69 63 25 2c 2c 2c 2d  |on",h%,inic%,,,-|
000040a0  31 2c a9 a4 69 63 5f 73  74 72 28 68 25 2c 69 6e  |1,..ic_str(h%,in|
000040b0  69 63 25 29 0d 17 d4 05  e1 0d 17 de 04 0d 17 e8  |ic%)............|
000040c0  1c dd f2 63 66 72 6f 6e  74 28 68 25 2c 78 6f 66  |...cfront(h%,xof|
000040d0  66 25 2c 79 6f 66 66 25  29 0d 17 f2 1a ea 78 25  |f%,yoff%).....x%|
000040e0  2c 79 25 2c 77 78 25 2c  77 79 25 2c 78 65 25 2c  |,y%,wx%,wy%,xe%,|
000040f0  79 65 25 0d 17 fc 1e e7  61 75 74 6f 77 69 6e 70  |ye%.....autowinp|
00004100  6f 73 25 3d 30 80 68 25  3d 73 74 61 74 75 73 25  |os%=0.h%=status%|
00004110  8c 0d 18 06 10 20 20 f2  66 72 6f 6e 74 28 68 25  |.....  .front(h%|
00004120  29 0d 18 10 07 20 20 cc  0d 18 1a 4b 20 20 c8 99  |)....  ....K  ..|
00004130  22 4f 53 5f 52 65 61 64  4d 6f 64 65 56 61 72 69  |"OS_ReadModeVari|
00004140  61 62 6c 65 22 2c 2d 31  2c 34 b8 2c 2c 78 65 25  |able",-1,4.,,xe%|
00004150  3a c8 99 22 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |:.."OS_ReadModeV|
00004160  61 72 69 61 62 6c 65 22  2c 2d 31 2c 31 31 b8 2c  |ariable",-1,11.,|
00004170  2c 78 25 0d 18 24 4b 20  20 c8 99 22 4f 53 5f 52  |,x%..$K  .."OS_R|
00004180  65 61 64 4d 6f 64 65 56  61 72 69 61 62 6c 65 22  |eadModeVariable"|
00004190  2c 2d 31 2c 35 b8 2c 2c  79 65 25 3a c8 99 22 4f  |,-1,5.,,ye%:.."O|
000041a0  53 5f 52 65 61 64 4d 6f  64 65 56 61 72 69 61 62  |S_ReadModeVariab|
000041b0  6c 65 22 2c 2d 31 2c 31  32 b8 2c 2c 79 25 0d 18  |le",-1,12.,,y%..|
000041c0  2e 28 20 20 21 71 25 3d  68 25 3a c8 99 22 57 69  |.(  !q%=h%:.."Wi|
000041d0  6d 70 5f 47 65 74 57 69  6e 64 6f 77 53 74 61 74  |mp_GetWindowStat|
000041e0  65 22 2c 2c 71 25 0d 18  38 39 20 20 78 25 3d 78  |e",,q%..89  x%=x|
000041f0  25 3c 3c 78 65 25 3a 79  25 3d 79 25 3c 3c 79 65  |%<<xe%:y%=y%<<ye|
00004200  25 3a 77 78 25 3d 71 25  21 31 32 2d 71 25 21 34  |%:wx%=q%!12-q%!4|
00004210  3a 77 79 25 3d 71 25 21  31 36 2d 71 25 21 38 0d  |:wy%=q%!16-q%!8.|
00004220  18 42 4f 20 20 71 25 21  34 3d 28 78 25 2d 77 78  |.BO  q%!4=(x%-wx|
00004230  25 29 81 32 2d 78 6f 66  66 25 3a 71 25 21 31 32  |%).2-xoff%:q%!12|
00004240  3d 71 25 21 34 2b 77 78  25 3a 71 25 21 38 3d 28  |=q%!4+wx%:q%!8=(|
00004250  79 25 2d 77 79 25 29 81  32 2d 79 6f 66 66 25 3a  |y%-wy%).2-yoff%:|
00004260  71 25 21 31 36 3d 71 25  21 38 2b 77 79 25 0d 18  |q%!16=q%!8+wy%..|
00004270  4c 36 20 20 71 25 21 32  30 3d 30 3a 71 25 21 32  |L6  q%!20=0:q%!2|
00004280  34 3d 30 3a 71 25 21 32  38 3d 2d 31 3a c8 99 22  |4=0:q%!28=-1:.."|
00004290  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 22  |Wimp_OpenWindow"|
000042a0  2c 2c 71 25 0d 18 56 05  cd 0d 18 60 05 e1 0d 18  |,,q%..V....`....|
000042b0  6a 04 0d 18 74 11 dd f2  64 6f 74 69 74 6c 65 28  |j...t...dotitle(|
000042c0  68 25 29 0d 18 7e 28 21  71 25 3d 68 25 3a c8 99  |h%)..~(!q%=h%:..|
000042d0  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 4f  |"Wimp_GetWindowO|
000042e0  75 74 6c 69 6e 65 22 2c  2c 71 25 0d 18 88 35 c8  |utline",,q%...5.|
000042f0  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
00004300  61 77 22 2c 2d 31 2c 71  25 21 34 2c 71 25 21 31  |aw",-1,q%!4,q%!1|
00004310  36 2d 34 34 2c 71 25 21  31 32 2c 71 25 21 31 36  |6-44,q%!12,q%!16|
00004320  0d 18 92 05 e1 0d 18 9c  04 0d 18 a6 13 dd a4 69  |...............i|
00004330  63 5f 73 74 72 28 48 25  2c 49 25 29 0d 18 b0 2c  |c_str(H%,I%)...,|
00004340  21 71 25 3d 48 25 3a 71  25 21 34 3d 49 25 3a c8  |!q%=H%:q%!4=I%:.|
00004350  99 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  |."Wimp_GetIconSt|
00004360  61 74 65 22 2c 2c 71 25  0d 18 ba 10 3d a4 73 74  |ate",,q%....=.st|
00004370  72 28 71 25 21 32 38 29  0d 18 c4 04 0d 18 ce 1d  |r(q%!28)........|
00004380  dd f2 73 65 74 69 63 6f  6e 73 74 72 69 6e 67 28  |..seticonstring(|
00004390  48 25 2c 49 25 2c 41 24  29 0d 18 d8 31 21 71 25  |H%,I%,A$)...1!q%|
000043a0  3d 48 25 3a 71 25 21 34  3d 49 25 3a c8 99 22 58  |=H%:q%!4=I%:.."X|
000043b0  57 69 6d 70 5f 47 65 74  49 63 6f 6e 53 74 61 74  |Wimp_GetIconStat|
000043c0  65 22 2c 2c 71 25 b8 3b  46 25 0d 18 e2 2a e7 a4  |e",,q%.;F%...*..|
000043d0  74 66 31 30 28 46 25 29  80 71 25 21 32 38 3e 26  |tf10(F%).q%!28>&|
000043e0  38 38 30 30 20 8c 24 28  71 25 21 32 38 29 3d 41  |8800 .$(q%!28)=A|
000043f0  24 2b bd 30 0d 18 ec 05  e1 0d 18 f6 04 0d 19 00  |$+.0............|
00004400  18 dd f2 75 70 64 5f 69  63 6f 6e 28 48 25 2c 49  |...upd_icon(H%,I|
00004410  25 2c 41 24 29 0d 19 0a  3a f2 73 65 74 69 63 6f  |%,A$)...:.setico|
00004420  6e 73 74 72 69 6e 67 28  48 25 2c 49 25 2c 41 24  |nstring(H%,I%,A$|
00004430  29 3a 21 71 25 3d 48 25  3a 71 25 21 34 3d 49 25  |):!q%=H%:q%!4=I%|
00004440  3a 71 25 21 38 3d 30 3a  71 25 21 31 32 3d 30 0d  |:q%!8=0:q%!12=0.|
00004450  19 14 1d c8 99 22 57 69  6d 70 5f 53 65 74 49 63  |....."Wimp_SetIc|
00004460  6f 6e 53 74 61 74 65 22  2c 2c 71 25 0d 19 1e 05  |onState",,q%....|
00004470  e1 0d 19 28 04 0d 19 32  16 dd f2 73 65 74 69 6e  |...(...2...setin|
00004480  76 28 48 25 2c 49 25 2c  53 25 29 0d 19 3c 3d 53  |v(H%,I%,S%)..<=S|
00004490  25 3d 94 28 53 25 3d 30  29 3a 21 71 25 3d 48 25  |%=.(S%=0):!q%=H%|
000044a0  3a 71 25 21 34 3d 49 25  3a 71 25 21 38 3d 28 28  |:q%!4=I%:q%!8=((|
000044b0  31 29 3c 3c 32 31 29 2a  53 25 3a 71 25 21 31 32  |1)<<21)*S%:q%!12|
000044c0  3d 28 31 3c 3c 32 31 29  0d 19 46 1d c8 99 22 57  |=(1<<21)..F..."W|
000044d0  69 6d 70 5f 53 65 74 49  63 6f 6e 53 74 61 74 65  |imp_SetIconState|
000044e0  22 2c 2c 71 25 0d 19 50  05 e1 0d 19 5a 04 0d 19  |",,q%..P....Z...|
000044f0  64 12 dd a4 72 64 69 6e  76 28 48 25 2c 49 25 29  |d...rdinv(H%,I%)|
00004500  0d 19 6e 2c 21 71 25 3d  48 25 3a 71 25 21 34 3d  |..n,!q%=H%:q%!4=|
00004510  49 25 3a c8 99 22 57 69  6d 70 5f 47 65 74 49 63  |I%:.."Wimp_GetIc|
00004520  6f 6e 53 74 61 74 65 22  2c 2c 71 25 0d 19 78 24  |onState",,q%..x$|
00004530  3d ac 28 28 28 71 25 21  32 34 29 80 28 31 3c 3c  |=.(((q%!24).(1<<|
00004540  32 31 29 29 81 32 30 39  37 31 35 32 3c 3e 30 29  |21)).2097152<>0)|
00004550  0d 19 82 04 0d 19 8c 19  dd f2 73 65 74 73 68 61  |..........setsha|
00004560  64 65 64 28 48 25 2c 49  25 2c 53 25 29 0d 19 96  |ded(H%,I%,S%)...|
00004570  33 21 71 25 3d 48 25 3a  71 25 21 34 3d 49 25 3a  |3!q%=H%:q%!4=I%:|
00004580  71 25 21 38 3d 28 28 31  29 3c 3c 32 32 29 2a 94  |q%!8=((1)<<22)*.|
00004590  53 25 3a 71 25 21 31 32  3d 28 31 3c 3c 32 32 29  |S%:q%!12=(1<<22)|
000045a0  0d 19 a0 1d c8 99 22 57  69 6d 70 5f 53 65 74 49  |......"Wimp_SetI|
000045b0  63 6f 6e 53 74 61 74 65  22 2c 2c 71 25 0d 19 aa  |conState",,q%...|
000045c0  05 e1 0d 19 b4 04 0d 19  be 15 dd f2 70 72 69 6e  |............prin|
000045d0  74 28 61 24 2c 62 24 2c  63 24 29 0d 19 c8 42 e7  |t(a$,b$,c$)...B.|
000045e0  61 24 3e 22 22 8c f2 75  70 64 5f 69 63 6f 6e 28  |a$>""..upd_icon(|
000045f0  73 74 61 74 75 73 25 2c  31 2c c2 61 24 2c 33 34  |status%,1,.a$,34|
00004600  29 29 3a e7 a9 61 24 3e  31 8c f2 6c 6f 67 28 22  |)):..a$>1..log("|
00004610  41 63 74 69 6f 6e 3a 20  22 2b 61 24 29 0d 19 d2  |Action: "+a$)...|
00004620  42 e7 62 24 3e 22 22 8c  f2 75 70 64 5f 69 63 6f  |B.b$>""..upd_ico|
00004630  6e 28 73 74 61 74 75 73  25 2c 32 2c c2 62 24 2c  |n(status%,2,.b$,|
00004640  33 34 29 29 3a e7 a9 62  24 3e 31 8c f2 6c 6f 67  |34)):..b$>1..log|
00004650  28 22 53 74 61 74 75 73  3a 20 22 2b 62 24 29 0d  |("Status: "+b$).|
00004660  19 dc 42 e7 63 24 3e 22  22 8c f2 75 70 64 5f 69  |..B.c$>""..upd_i|
00004670  63 6f 6e 28 73 74 61 74  75 73 25 2c 33 2c c2 63  |con(status%,3,.c|
00004680  24 2c 33 34 29 29 3a e7  a9 63 24 3e 31 8c f2 6c  |$,34)):..c$>1..l|
00004690  6f 67 28 22 49 50 20 61  64 64 3a 20 22 2b 63 24  |og("IP add: "+c$|
000046a0  29 0d 19 e6 05 e1 0d 19  f0 04 0d 19 fa 37 dd f2  |)............7..|
000046b0  6f 70 65 6e 77 28 68 61  6e 64 6c 65 25 2c 78 30  |openw(handle%,x0|
000046c0  25 2c 79 30 25 2c 78 31  25 2c 79 31 25 2c 73 63  |%,y0%,x1%,y1%,sc|
000046d0  78 25 2c 73 63 79 25 2c  62 68 61 6e 64 6c 65 25  |x%,scy%,bhandle%|
000046e0  29 0d 1a 04 10 e7 68 61  6e 64 6c 65 25 3e 2d 31  |).....handle%>-1|
000046f0  8c 0d 1a 0e 21 20 20 71  25 21 30 3d 68 61 6e 64  |....!  q%!0=hand|
00004700  6c 65 25 3a 71 25 21 32  38 3d 62 68 61 6e 64 6c  |le%:q%!28=bhandl|
00004710  65 25 0d 1a 18 2b 20 20  71 25 21 34 3d 78 30 25  |e%...+  q%!4=x0%|
00004720  3a 71 25 21 38 3d 79 30  25 3a 71 25 21 31 32 3d  |:q%!8=y0%:q%!12=|
00004730  78 31 25 3a 71 25 21 31  36 3d 79 31 25 0d 1a 22  |x1%:q%!16=y1%.."|
00004740  1b 20 20 71 25 21 32 30  3d 73 63 78 25 3a 71 25  |.  q%!20=scx%:q%|
00004750  21 32 34 3d 73 63 79 25  0d 1a 2c 1d 20 20 c8 99  |!24=scy%..,.  ..|
00004760  22 57 69 6d 70 5f 4f 70  65 6e 57 69 6e 64 6f 77  |"Wimp_OpenWindow|
00004770  22 2c 2c 71 25 0d 1a 36  05 cd 0d 1a 40 05 e1 0d  |",,q%..6....@...|
00004780  1a 4a 04 0d 1a 54 10 dd  f2 63 6c 6f 73 65 77 28  |.J...T...closew(|
00004790  68 25 29 0d 1a 5e 07 ea  4c 25 0d 1a 68 09 c8 8e  |h%)..^..L%..h...|
000047a0  68 25 ca 0d 1a 72 1e 20  20 c9 6d 65 73 73 25 3a  |h%...r.  .mess%:|
000047b0  e7 70 61 75 73 65 25 20  8c f2 75 6e 70 61 75 73  |.pause% ..unpaus|
000047c0  65 0d 1a 7c 18 20 20 c9  69 6e 70 75 74 25 3a 69  |e..|.  .input%:i|
000047d0  6e 70 75 74 24 3d 22 20  22 0d 1a 86 08 20 20 7f  |nput$=" "....  .|
000047e0  3a 0d 1a 90 14 20 20 20  20 e3 4c 25 3d 30 b8 74  |:....    .L%=0.t|
000047f0  77 6d 61 78 25 0d 1a 9a  22 20 20 20 20 20 20 e7  |wmax%..."      .|
00004800  68 25 3d 74 77 77 25 28  4c 25 29 80 74 77 68 25  |h%=tww%(L%).twh%|
00004810  28 4c 25 29 3e 30 8c 0d  1a a4 2f 20 20 20 20 20  |(L%)>0..../     |
00004820  20 20 20 ef 37 3a e7 a4  79 65 73 6e 6f 28 a4 6d  |   .7:..yesno(.m|
00004830  73 67 30 28 22 54 61 73  6b 4b 69 6c 6c 22 29 2c  |sg0("TaskKill"),|
00004840  33 29 3d 32 20 8c 0d 1a  ae 29 20 20 20 20 20 20  |3)=2 ....)      |
00004850  20 20 20 20 f2 6d 65 73  73 74 77 28 74 77 6e 61  |    .messtw(twna|
00004860  6d 65 24 28 4c 25 29 2c  26 38 30 38 43 34 29 0d  |me$(L%),&808C4).|
00004870  1a b8 0f 20 20 20 20 20  20 20 20 20 20 cc 0d 1a  |...          ...|
00004880  c2 12 20 20 20 20 20 20  20 20 20 20 68 25 3d 30  |..          h%=0|
00004890  0d 1a cc 0d 20 20 20 20  20 20 20 20 cd 0d 1a d6  |....        ....|
000048a0  15 20 20 20 20 20 20 20  20 4c 25 3d 74 77 6d 61  |.        L%=twma|
000048b0  78 25 0d 1a e0 0b 20 20  20 20 20 20 cd 0d 1a ea  |x%....      ....|
000048c0  09 20 20 20 20 ed 0d 1a  f4 05 cb 0d 1a fe 29 e7  |.    .........).|
000048d0  68 25 3e 30 8c 21 71 25  3d 68 25 3a c8 99 22 57  |h%>0.!q%=h%:.."W|
000048e0  69 6d 70 5f 43 6c 6f 73  65 57 69 6e 64 6f 77 22  |imp_CloseWindow"|
000048f0  2c 2c 71 25 0d 1b 08 05  e1 0d 1b 12 04 0d 1b 1c  |,,q%............|
00004900  0d dd a4 61 73 6b 28 41  24 29 0d 1b 26 21 ea 64  |...ask(A$)..&!.d|
00004910  25 2c 72 25 2c 64 65 66  25 3a 64 25 3d 36 30 3a  |%,r%,def%:d%=60:|
00004920  72 25 3d 30 3a 64 65 66  25 3d 31 0d 1b 30 12 f5  |r%=0:def%=1..0..|
00004930  42 24 3d a4 70 61 72 61  6d 28 41 24 29 0d 1b 3a  |B$=.param(A$)..:|
00004940  12 20 20 e7 c0 42 24 2c  31 29 3d 22 2f 22 8c 0d  |.  ..B$,1)="/"..|
00004950  1b 44 1f 20 20 20 20 43  24 3d a4 76 61 6c 75 65  |.D.    C$=.value|
00004960  28 42 24 29 3a c8 8e c0  42 24 2c 33 29 ca 0d 1b  |(B$):...B$,3)...|
00004970  4e 22 20 20 20 20 20 20  c9 22 64 65 6c 22 3a 64  |N"      ."del":d|
00004980  25 3d bb 43 24 3a e7 64  25 3c 35 8c 64 25 3d 35  |%=.C$:.d%<5.d%=5|
00004990  0d 1b 58 31 20 20 20 20  20 20 c9 22 64 65 66 22  |..X1      ."def"|
000049a0  3a 43 24 3d a4 6c 6f 77  65 72 28 43 24 29 3a e7  |:C$=.lower(C$):.|
000049b0  c0 43 24 2c 31 29 3d 22  79 22 8c 64 65 66 25 3d  |.C$,1)="y".def%=|
000049c0  32 0d 1b 62 09 20 20 20  20 cb 0d 1b 6c 09 20 20  |2..b.    ...l.  |
000049d0  20 20 cc 0d 1b 76 18 20  20 20 20 72 25 3d a4 79  |  ...v.    r%=.y|
000049e0  65 73 6e 6f 28 42 24 2c  64 25 29 0d 1b 80 07 20  |esno(B$,d%).... |
000049f0  20 cd 0d 1b 8a 0a fd 41  24 3d 22 22 0d 1b 94 11  | ......A$=""....|
00004a00  e7 72 25 3d 30 8c 72 25  3d 64 65 66 25 0d 1b 9e  |.r%=0.r%=def%...|
00004a10  0c 3d 2d 28 72 25 3d 32  29 0d 1b a8 04 0d 1b b2  |.=-(r%=2).......|
00004a20  09 f4 20 2a 2a 2a 0d 1b  bc 04 0d 1b c6 15 dd a4  |.. ***..........|
00004a30  79 65 73 6e 6f 28 41 24  2c 77 61 69 74 25 29 0d  |yesno(A$,wait%).|
00004a40  1b d0 22 f4 20 72 65 74  75 72 6e 73 20 30 3d 74  |..". returns 0=t|
00004a50  69 6d 65 6f 75 74 20 31  3d 6e 6f 20 32 3d 79 65  |imeout 1=no 2=ye|
00004a60  73 0d 1b da 3e ea 73 74  25 3a 73 74 25 3d 74 69  |s...>.st%:st%=ti|
00004a70  6d 65 25 3a 77 61 69 74  25 3d 77 61 69 74 25 2a  |me%:wait%=wait%*|
00004a80  31 30 30 3a f2 75 70 64  5f 69 63 6f 6e 28 79 65  |100:.upd_icon(ye|
00004a90  73 6e 6f 25 2c 32 2c c0  41 24 2c 35 37 29 29 0d  |sno%,2,.A$,57)).|
00004aa0  1b e4 2c f2 63 66 72 6f  6e 74 28 79 65 73 6e 6f  |..,.cfront(yesno|
00004ab0  25 2c 30 2c 30 29 3a e7  77 61 69 74 25 3d 30 8c  |%,0,0):.wait%=0.|
00004ac0  77 61 69 74 25 3d 36 30  30 30 30 0d 1b ee 38 79  |wait%=60000...8y|
00004ad0  65 73 6e 6f 61 6e 73 25  3d 30 3a f5 3a f2 70 6f  |esnoans%=0:.:.po|
00004ae0  6c 6c 28 35 30 29 3a fd  79 65 73 6e 6f 61 6e 73  |ll(50):.yesnoans|
00004af0  25 3e 30 84 74 69 6d 65  25 2d 73 74 25 3e 77 61  |%>0.time%-st%>wa|
00004b00  69 74 25 0d 1b f8 13 f2  63 6c 6f 73 65 77 28 79  |it%.....closew(y|
00004b10  65 73 6e 6f 25 29 0d 1c  02 0e 3d 79 65 73 6e 6f  |esno%)....=yesno|
00004b20  61 6e 73 25 0d 1c 0c 04  0d 1c 16 10 dd a4 76 61  |ans%..........va|
00004b30  72 76 61 6c 28 41 24 29  0d 1c 20 0a ea 4c 25 2c  |rval(A$).. ..L%,|
00004b40  46 25 0d 1c 2a 2f c8 99  22 58 4f 53 5f 52 65 61  |F%..*/.."XOS_Rea|
00004b50  64 56 61 72 56 61 6c 22  2c 41 24 2c 74 6d 70 25  |dVarVal",A$,tmp%|
00004b60  2c 32 35 36 2c 30 2c 33  20 b8 2c 2c 4c 25 3b 46  |,256,0,3 .,,L%;F|
00004b70  25 0d 1c 34 19 e7 28 46  25 80 31 29 20 84 4c 25  |%..4..(F%.1) .L%|
00004b80  3e 32 35 36 20 8c 3a 3d  22 22 0d 1c 3e 15 74 6d  |>256 .:=""..>.tm|
00004b90  70 25 3f 4c 25 3d 31 33  3a 3d 24 74 6d 70 25 0d  |p%?L%=13:=$tmp%.|
00004ba0  1c 48 04 0d 1c 52 0e dd  f2 69 6e 66 6f 28 71 25  |.H...R...info(q%|
00004bb0  29 0d 1c 5c 3d 78 30 25  3d 21 71 25 3a 79 30 25  |)..\=x0%=!q%:y0%|
00004bc0  3d 71 25 21 34 3a 78 31  25 3d 71 25 21 38 3a 79  |=q%!4:x1%=q%!8:y|
00004bd0  31 25 3d 71 25 21 31 32  3a 73 63 78 25 3d 71 25  |1%=q%!12:scx%=q%|
00004be0  21 31 36 3a 73 63 79 25  3d 71 25 21 32 30 0d 1c  |!16:scy%=q%!20..|
00004bf0  66 33 62 78 25 3d 78 30  25 2d 73 63 78 25 3a 62  |f3bx%=x0%-scx%:b|
00004c00  79 25 3d 79 31 25 2d 73  63 79 25 3a 67 79 30 25  |y%=y1%-scy%:gy0%|
00004c10  3d 71 25 21 32 38 3a 67  79 31 25 3d 71 25 21 33  |=q%!28:gy1%=q%!3|
00004c20  36 0d 1c 70 05 e1 0d 1c  7a 04 0d 1c 84 11 dd f2  |6..p....z.......|
00004c30  72 65 64 72 61 77 77 28  68 25 29 0d 1c 8e 15 ea  |redraww(h%).....|
00004c40  74 77 25 3a 21 71 25 3d  68 25 3a c8 8e 68 25 ca  |tw%:!q%=h%:..h%.|
00004c50  0d 1c 98 0a c9 74 78 74  25 3a 0d 1c a2 28 20 20  |.....txt%:...(  |
00004c60  c8 99 20 22 57 69 6d 70  5f 52 65 64 72 61 77 57  |.. "Wimp_RedrawW|
00004c70  69 6e 64 6f 77 22 2c 2c  71 25 20 b8 20 6d 6f 72  |indow",,q% . mor|
00004c80  65 25 0d 1c ac 16 20 20  f2 64 72 61 77 5f 74 78  |e%....  .draw_tx|
00004c90  74 28 6d 6f 72 65 25 29  0d 1c b6 0b c9 6d 65 73  |t(more%).....mes|
00004ca0  73 25 3a 0d 1c c0 28 20  20 c8 99 20 22 57 69 6d  |s%:...(  .. "Wim|
00004cb0  70 5f 52 65 64 72 61 77  57 69 6e 64 6f 77 22 2c  |p_RedrawWindow",|
00004cc0  2c 71 25 20 b8 20 6d 6f  72 65 25 0d 1c ca 16 20  |,q% . more%.... |
00004cd0  20 f2 64 72 61 77 5f 6d  73 67 28 6d 6f 72 65 25  | .draw_msg(more%|
00004ce0  29 0d 1c d4 06 7f 3a 0d  1c de 22 20 20 e3 74 77  |).....:..."  .tw|
00004cf0  25 3d 30 b8 74 77 6d 61  78 25 3a e7 68 25 3d 74  |%=0.twmax%:.h%=t|
00004d00  77 77 25 28 74 77 25 29  8c 0d 1c e8 2a 20 20 20  |ww%(tw%)....*   |
00004d10  20 c8 99 20 22 57 69 6d  70 5f 52 65 64 72 61 77  | .. "Wimp_Redraw|
00004d20  57 69 6e 64 6f 77 22 2c  2c 71 25 20 b8 20 6d 6f  |Window",,q% . mo|
00004d30  72 65 25 0d 1c f2 1b 20  20 20 20 f2 64 72 61 77  |re%....    .draw|
00004d40  5f 74 77 28 74 77 25 2c  6d 6f 72 65 25 29 0d 1c  |_tw(tw%,more%)..|
00004d50  fc 07 20 20 cd 0d 1d 06  07 20 20 ed 0d 1d 10 05  |..  .....  .....|
00004d60  cb 0d 1d 1a 05 e1 0d 1d  24 04 0d 1d 2e 0e dd f2  |........$.......|
00004d70  69 6e 69 74 5f 74 78 74  0d 1d 38 0b 74 78 74 6f  |init_txt..8.txto|
00004d80  25 3d 30 0d 1d 42 3c 6c  6f 67 5f 79 25 3d 31 3a  |%=0..B<log_y%=1:|
00004d90  de 74 78 74 6c 24 28 74  78 74 79 25 29 2c 74 78  |.txtl$(txty%),tx|
00004da0  74 63 25 20 74 78 74 79  25 2c 6d 73 67 24 28 6d  |tc% txty%,msg$(m|
00004db0  73 67 6d 61 78 25 29 3a  6d 73 67 77 25 3d 30 0d  |sgmax%):msgw%=0.|
00004dc0  1d 4c 22 74 78 74 6c 24  28 29 3d c4 74 78 74 78  |.L"txtl$()=.txtx|
00004dd0  25 81 32 2c 22 20 22 29  3a 69 6f 66 66 25 3d 34  |%.2," "):ioff%=4|
00004de0  30 0d 1d 56 3e 21 74 6d  70 25 3d 30 3a 74 6d 70  |0..V>!tmp%=0:tmp|
00004df0  25 21 34 3d 2d 74 78 74  79 25 2a 33 32 2d 69 6f  |%!4=-txty%*32-io|
00004e00  66 66 25 2d 38 3a 74 6d  70 25 21 38 3d 74 78 74  |ff%-8:tmp%!8=txt|
00004e10  78 25 2a 31 36 3a 74 6d  70 25 21 31 32 3d 30 0d  |x%*16:tmp%!12=0.|
00004e20  1d 60 20 c8 99 22 57 69  6d 70 5f 53 65 74 45 78  |.` .."Wimp_SetEx|
00004e30  74 65 6e 74 22 2c 74 78  74 25 2c 74 6d 70 25 0d  |tent",txt%,tmp%.|
00004e40  1d 6a 3c e3 69 25 3d 30  b8 31 3a 21 74 6d 70 25  |.j<.i%=0.1:!tmp%|
00004e50  3d 74 78 74 25 3a 74 6d  70 25 21 34 3d 69 25 3a  |=txt%:tmp%!4=i%:|
00004e60  c8 99 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |.."Wimp_GetIconS|
00004e70  74 61 74 65 22 2c 2c 74  6d 70 25 0d 1d 74 41 74  |tate",,tmp%..tAt|
00004e80  6d 70 25 21 31 32 3d 74  6d 70 25 21 31 32 2d 74  |mp%!12=tmp%!12-t|
00004e90  78 74 79 25 2a 33 32 3a  74 6d 70 25 21 32 30 3d  |xty%*32:tmp%!20=|
00004ea0  74 6d 70 25 21 32 30 2d  74 78 74 79 25 2a 33 32  |tmp%!20-txty%*32|
00004eb0  3a 74 6d 70 25 21 34 3d  74 78 74 25 0d 1d 7e 2c  |:tmp%!4=txt%..~,|
00004ec0  21 71 25 3d 74 78 74 25  3a 71 25 21 34 3d 69 25  |!q%=txt%:q%!4=i%|
00004ed0  3a c8 99 22 57 69 6d 70  5f 44 65 6c 65 74 65 49  |:.."Wimp_DeleteI|
00004ee0  63 6f 6e 22 2c 2c 71 25  0d 1d 88 28 c8 99 22 57  |con",,q%...(.."W|
00004ef0  69 6d 70 5f 43 72 65 61  74 65 49 63 6f 6e 22 2c  |imp_CreateIcon",|
00004f00  2c 74 6d 70 25 2b 34 20  b8 69 6e 69 63 25 3a ed  |,tmp%+4 .inic%:.|
00004f10  0d 1d 92 23 70 74 72 25  3d 30 3a 6c 74 25 3d 30  |...#ptr%=0:lt%=0|
00004f20  3a 64 61 74 61 24 3d 22  22 3a 74 64 61 74 61 24  |:data$="":tdata$|
00004f30  3d 22 22 0d 1d 9c 2a f2  70 72 69 6e 74 28 22 53  |=""...*.print("S|
00004f40  74 61 72 74 69 6e 67 20  53 4c 49 50 64 69 61 6c  |tarting SLIPdial|
00004f50  22 2c 22 49 64 6c 65 22  2c 22 20 22 29 0d 1d a6  |","Idle"," ")...|
00004f60  2f e7 71 75 69 65 74 25  3d 30 80 a4 72 64 69 6e  |/.quiet%=0..rdin|
00004f70  76 28 63 6f 6e 66 69 67  25 2c 32 29 3d 30 20 8c  |v(config%,2)=0 .|
00004f80  f2 66 72 6f 6e 74 28 74  78 74 25 29 0d 1d b0 05  |.front(txt%)....|
00004f90  e1 0d 1d ba 04 0d 1d c4  1b dd f2 69 6e 69 74 5f  |...........init_|
00004fa0  74 77 77 28 74 77 25 2c  6f 75 74 25 2c 54 24 29  |tww(tw%,out%,T$)|
00004fb0  0d 1d ce 19 ea 6f 66 66  25 3a 6f 66 66 25 3d 28  |.....off%:off%=(|
00004fc0  74 77 25 83 34 29 2a 34  30 0d 1d d8 11 e7 74 77  |tw%.4)*40.....tw|
00004fd0  77 25 28 74 77 25 29 3d  30 8c 0d 1d e2 32 20 20  |w%(tw%)=0....2  |
00004fe0  c8 99 20 22 57 69 6d 70  5f 4f 70 65 6e 54 65 6d  |.. "Wimp_OpenTem|
00004ff0  70 6c 61 74 65 22 2c 2c  73 64 6c 61 6e 67 24 2b  |plate",,sdlang$+|
00005000  22 2e 54 65 6d 70 6c 61  74 65 73 22 0d 1d ec 43  |".Templates"...C|
00005010  20 20 c8 99 20 22 57 69  6d 70 5f 4c 6f 61 64 54  |  .. "Wimp_LoadT|
00005020  65 6d 70 6c 61 74 65 22  2c 2c 71 25 2c 69 6e 64  |emplate",,q%,ind|
00005030  25 2c 73 70 25 2b 73 69  7a 65 25 2c 2d 31 2c 22  |%,sp%+size%,-1,"|
00005040  74 61 73 6b 22 2c 30 20  b8 2c 2c 69 6e 64 25 0d  |task",0 .,,ind%.|
00005050  1d f6 27 20 20 74 77 74  25 28 74 77 25 29 3d 71  |..'  twt%(tw%)=q|
00005060  25 21 37 32 3a 71 25 21  34 34 3d 2d 74 77 77 6d  |%!72:q%!44=-twwm|
00005070  61 78 25 2a 33 32 0d 1e  00 41 20 20 21 71 25 3d  |ax%*32...A  !q%=|
00005080  21 71 25 2b 6f 66 66 25  3a 71 25 21 38 3d 71 25  |!q%+off%:q%!8=q%|
00005090  21 38 2b 6f 66 66 25 3a  71 25 21 34 3d 71 25 21  |!8+off%:q%!4=q%!|
000050a0  34 2d 6f 66 66 25 3a 71  25 21 31 32 3d 71 25 21  |4-off%:q%!12=q%!|
000050b0  31 32 2d 6f 66 66 25 0d  1e 0a 2c 20 20 c8 99 20  |12-off%...,  .. |
000050c0  22 57 69 6d 70 5f 43 72  65 61 74 65 57 69 6e 64  |"Wimp_CreateWind|
000050d0  6f 77 22 2c 2c 71 25 20  b8 20 74 77 77 25 28 74  |ow",,q% . tww%(t|
000050e0  77 25 29 0d 1e 14 1d 20  20 c8 99 20 22 57 69 6d  |w%)....  .. "Wim|
000050f0  70 5f 43 6c 6f 73 65 54  65 6d 70 6c 61 74 65 22  |p_CloseTemplate"|
00005100  0d 1e 1e 0c 20 20 c8 8e  74 77 25 ca 0d 1e 28 1c  |....  ..tw%...(.|
00005110  20 20 20 20 c9 30 3a de  74 77 62 75 66 30 24 28  |    .0:.twbuf0$(|
00005120  74 77 77 6d 61 78 25 29  0d 1e 32 1c 20 20 20 20  |twwmax%)..2.    |
00005130  c9 31 3a de 74 77 62 75  66 31 24 28 74 77 77 6d  |.1:.twbuf1$(twwm|
00005140  61 78 25 29 0d 1e 3c 1c  20 20 20 20 c9 32 3a de  |ax%)..<.    .2:.|
00005150  74 77 62 75 66 32 24 28  74 77 77 6d 61 78 25 29  |twbuf2$(twwmax%)|
00005160  0d 1e 46 1c 20 20 20 20  c9 33 3a de 74 77 62 75  |..F.    .3:.twbu|
00005170  66 33 24 28 74 77 77 6d  61 78 25 29 0d 1e 50 1c  |f3$(twwmax%)..P.|
00005180  20 20 20 20 c9 34 3a de  74 77 62 75 66 34 24 28  |    .4:.twbuf4$(|
00005190  74 77 77 6d 61 78 25 29  0d 1e 5a 1c 20 20 20 20  |twwmax%)..Z.    |
000051a0  c9 35 3a de 74 77 62 75  66 35 24 28 74 77 77 6d  |.5:.twbuf5$(twwm|
000051b0  61 78 25 29 0d 1e 64 1c  20 20 20 20 c9 36 3a de  |ax%)..d.    .6:.|
000051c0  74 77 62 75 66 36 24 28  74 77 77 6d 61 78 25 29  |twbuf6$(twwmax%)|
000051d0  0d 1e 6e 22 20 20 20 20  7f 3a f2 68 61 6c 74 28  |..n"    .:.halt(|
000051e0  a4 6d 73 67 30 28 22 45  74 61 73 6b 31 22 29 29  |.msg0("Etask1"))|
000051f0  3a e1 0d 1e 78 07 20 20  cb 0d 1e 82 07 20 20 cc  |:...x.  .....  .|
00005200  0d 1e 8c 0c 20 20 c8 8e  74 77 25 ca 0d 1e 96 17  |....  ..tw%.....|
00005210  20 20 20 20 c9 30 3a 74  77 62 75 66 30 24 28 29  |    .0:twbuf0$()|
00005220  3d 22 22 0d 1e a0 17 20  20 20 20 c9 31 3a 74 77  |=""....    .1:tw|
00005230  62 75 66 31 24 28 29 3d  22 22 0d 1e aa 17 20 20  |buf1$()=""....  |
00005240  20 20 c9 32 3a 74 77 62  75 66 32 24 28 29 3d 22  |  .2:twbuf2$()="|
00005250  22 0d 1e b4 17 20 20 20  20 c9 33 3a 74 77 62 75  |"....    .3:twbu|
00005260  66 33 24 28 29 3d 22 22  0d 1e be 17 20 20 20 20  |f3$()=""....    |
00005270  c9 34 3a 74 77 62 75 66  34 24 28 29 3d 22 22 0d  |.4:twbuf4$()="".|
00005280  1e c8 17 20 20 20 20 c9  35 3a 74 77 62 75 66 35  |...    .5:twbuf5|
00005290  24 28 29 3d 22 22 0d 1e  d2 17 20 20 20 20 c9 36  |$()=""....    .6|
000052a0  3a 74 77 62 75 66 36 24  28 29 3d 22 22 0d 1e dc  |:twbuf6$()=""...|
000052b0  07 20 20 cb 0d 1e e6 05  cd 0d 1e f0 49 24 74 77  |.  .........I$tw|
000052c0  74 25 28 74 77 25 29 3d  a4 6d 73 67 31 28 22 54  |t%(tw%)=.msg1("T|
000052d0  61 73 6b 52 75 6e 22 2c  54 24 29 3a 74 64 61 74  |askRun",T$):tdat|
000052e0  61 24 28 74 77 25 29 3d  22 22 3a 74 77 79 25 28  |a$(tw%)="":twy%(|
000052f0  74 77 25 29 3d 30 3a 74  77 6f 25 28 74 77 25 29  |tw%)=0:two%(tw%)|
00005300  3d 30 0d 1e fa 1b e7 6f  75 74 25 8c f2 66 72 6f  |=0.....out%..fro|
00005310  6e 74 28 74 77 77 25 28  74 77 25 29 29 0d 1f 04  |nt(tww%(tw%))...|
00005320  05 e1 0d 1f 0e 04 0d 1f  18 25 dd f2 75 70 64 61  |.........%..upda|
00005330  74 65 5f 74 78 74 28 75  78 30 25 2c 75 79 30 25  |te_txt(ux0%,uy0%|
00005340  2c 75 78 31 25 2c 75 79  31 25 29 0d 1f 22 36 21  |,ux1%,uy1%).."6!|
00005350  71 25 3d 74 78 74 25 3a  71 25 21 34 3d 75 78 30  |q%=txt%:q%!4=ux0|
00005360  25 3a 71 25 21 38 3d 75  79 30 25 3a 71 25 21 31  |%:q%!8=uy0%:q%!1|
00005370  32 3d 75 78 31 25 3a 71  25 21 31 36 3d 75 79 31  |2=ux1%:q%!16=uy1|
00005380  25 0d 1f 2c 25 c8 99 22  57 69 6d 70 5f 55 70 64  |%..,%.."Wimp_Upd|
00005390  61 74 65 57 69 6e 64 6f  77 22 2c 2c 71 25 20 b8  |ateWindow",,q% .|
000053a0  20 6d 6f 72 65 25 0d 1f  36 14 f2 64 72 61 77 5f  | more%..6..draw_|
000053b0  74 78 74 28 6d 6f 72 65  25 29 0d 1f 40 05 e1 0d  |txt(more%)..@...|
000053c0  1f 4a 04 0d 1f 54 25 dd  f2 75 70 64 61 74 65 5f  |.J...T%..update_|
000053d0  6d 73 67 28 75 78 30 25  2c 75 79 30 25 2c 75 78  |msg(ux0%,uy0%,ux|
000053e0  31 25 2c 75 79 31 25 29  0d 1f 5e 37 21 71 25 3d  |1%,uy1%)..^7!q%=|
000053f0  6d 65 73 73 25 3a 71 25  21 34 3d 75 78 30 25 3a  |mess%:q%!4=ux0%:|
00005400  71 25 21 38 3d 75 79 30  25 3a 71 25 21 31 32 3d  |q%!8=uy0%:q%!12=|
00005410  75 78 31 25 3a 71 25 21  31 36 3d 75 79 31 25 0d  |ux1%:q%!16=uy1%.|
00005420  1f 68 25 c8 99 22 57 69  6d 70 5f 55 70 64 61 74  |.h%.."Wimp_Updat|
00005430  65 57 69 6e 64 6f 77 22  2c 2c 71 25 20 b8 20 6d  |eWindow",,q% . m|
00005440  6f 72 65 25 0d 1f 72 14  f2 64 72 61 77 5f 6d 73  |ore%..r..draw_ms|
00005450  67 28 6d 6f 72 65 25 29  0d 1f 7c 05 e1 0d 1f 86  |g(more%)..|.....|
00005460  04 0d 1f 90 28 dd f2 75  70 64 61 74 65 5f 74 77  |....(..update_tw|
00005470  28 74 77 25 2c 75 78 30  25 2c 75 79 30 25 2c 75  |(tw%,ux0%,uy0%,u|
00005480  78 31 25 2c 75 79 31 25  29 0d 1f 9a 3b 21 71 25  |x1%,uy1%)...;!q%|
00005490  3d 74 77 77 25 28 74 77  25 29 3a 71 25 21 34 3d  |=tww%(tw%):q%!4=|
000054a0  75 78 30 25 3a 71 25 21  38 3d 75 79 30 25 3a 71  |ux0%:q%!8=uy0%:q|
000054b0  25 21 31 32 3d 75 78 31  25 3a 71 25 21 31 36 3d  |%!12=ux1%:q%!16=|
000054c0  75 79 31 25 0d 1f a4 25  c8 99 22 57 69 6d 70 5f  |uy1%...%.."Wimp_|
000054d0  55 70 64 61 74 65 57 69  6e 64 6f 77 22 2c 2c 71  |UpdateWindow",,q|
000054e0  25 20 b8 20 6d 6f 72 65  25 0d 1f ae 17 f2 64 72  |% . more%.....dr|
000054f0  61 77 5f 74 77 28 74 77  25 2c 6d 6f 72 65 25 29  |aw_tw(tw%,more%)|
00005500  0d 1f b8 05 e1 0d 1f c2  04 0d 1f cc 15 dd f2 64  |...............d|
00005510  72 61 77 5f 6d 73 67 28  6d 6f 72 65 25 29 0d 1f  |raw_msg(more%)..|
00005520  d6 0c c8 95 20 6d 6f 72  65 25 0d 1f e0 13 20 20  |.... more%....  |
00005530  f2 69 6e 66 6f 28 71 25  2b 34 29 3a da 0d 1f ea  |.info(q%+4):....|
00005540  33 20 20 74 6f 70 25 3d  94 28 67 79 31 25 2d 62  |3  top%=.(gy1%-b|
00005550  79 25 2b 31 36 29 81 33  32 3a 62 6f 74 25 3d 94  |y%+16).32:bot%=.|
00005560  28 67 79 30 25 2d 62 79  25 2b 31 36 29 81 33 32  |(gy0%-by%+16).32|
00005570  0d 1f f4 37 20 20 e7 62  6f 74 25 3e 6d 73 67 6d  |...7  .bot%>msgm|
00005580  61 78 25 20 8c 62 6f 74  25 3d 6d 73 67 6d 61 78  |ax% .bot%=msgmax|
00005590  25 3a e7 74 6f 70 25 3e  62 6f 74 25 20 8c 74 6f  |%:.top%>bot% .to|
000055a0  70 25 3d 62 6f 74 25 0d  1f fe 28 20 20 c8 99 22  |p%=bot%...(  .."|
000055b0  57 69 6d 70 5f 53 65 74  43 6f 6c 6f 75 72 22 2c  |Wimp_SetColour",|
000055c0  37 3a e3 4c 25 3d 74 6f  70 25 b8 62 6f 74 25 0d  |7:.L%=top%.bot%.|
000055d0  20 08 35 20 20 ec 62 78  25 2b 34 2d 6d 73 67 63  | .5  .bx%+4-msgc|
000055e0  25 2a 28 6d 73 67 77 25  81 32 2d a9 6d 73 67 24  |%*(msgw%.2-.msg$|
000055f0  28 4c 25 29 2a 38 29 2c  62 79 25 2d 4c 25 2a 33  |(L%)*8),by%-L%*3|
00005600  32 2d 31 36 0d 20 12 11  20 20 f1 6d 73 67 24 28  |2-16. ..  .msg$(|
00005610  4c 25 29 3a ed 0d 20 1c  25 20 20 c8 99 22 57 69  |L%):.. .%  .."Wi|
00005620  6d 70 5f 47 65 74 52 65  63 74 61 6e 67 6c 65 22  |mp_GetRectangle"|
00005630  2c 2c 71 25 b8 6d 6f 72  65 25 0d 20 26 05 ce 0d  |,,q%.more%. &...|
00005640  20 30 05 e1 0d 20 3a 04  0d 20 44 18 dd f2 64 72  | 0... :.. D...dr|
00005650  61 77 5f 74 77 28 74 77  25 2c 6d 6f 72 65 25 29  |aw_tw(tw%,more%)|
00005660  0d 20 4e 1d ea 4c 25 2c  79 25 2c 74 6f 70 25 2c  |. N..L%,y%,top%,|
00005670  62 6f 74 25 3a c8 95 20  6d 6f 72 65 25 0d 20 58  |bot%:.. more%. X|
00005680  13 20 20 f2 69 6e 66 6f  28 71 25 2b 34 29 3a da  |.  .info(q%+4):.|
00005690  0d 20 62 2d 20 20 74 6f  70 25 3d 94 28 67 79 31  |. b-  top%=.(gy1|
000056a0  25 2d 62 79 25 29 81 33  32 3a 62 6f 74 25 3d 94  |%-by%).32:bot%=.|
000056b0  28 67 79 30 25 2d 62 79  25 29 81 33 32 0d 20 6c  |(gy0%-by%).32. l|
000056c0  37 20 20 e7 62 6f 74 25  3e 74 77 77 6d 61 78 25  |7  .bot%>twwmax%|
000056d0  20 8c 62 6f 74 25 3d 74  77 77 6d 61 78 25 3a e7  | .bot%=twwmax%:.|
000056e0  74 6f 70 25 3e 62 6f 74  25 20 8c 74 6f 70 25 3d  |top%>bot% .top%=|
000056f0  62 6f 74 25 0d 20 76 28  20 20 c8 99 22 57 69 6d  |bot%. v(  .."Wim|
00005700  70 5f 53 65 74 43 6f 6c  6f 75 72 22 2c 37 3a e3  |p_SetColour",7:.|
00005710  4c 25 3d 74 6f 70 25 b8  62 6f 74 25 0d 20 80 1f  |L%=top%.bot%. ..|
00005720  20 20 79 25 3d 28 4c 25  2b 74 77 6f 25 28 74 77  |  y%=(L%+two%(tw|
00005730  25 29 29 83 74 77 77 6d  61 78 25 0d 20 8a 18 20  |%)).twwmax%. .. |
00005740  20 ec 62 78 25 2b 34 2c  62 79 25 2d 4c 25 2a 33  | .bx%+4,by%-L%*3|
00005750  32 2d 34 0d 20 94 0c 20  20 c8 8e 74 77 25 ca 0d  |2-4. ..  ..tw%..|
00005760  20 9e 17 20 20 20 20 c9  30 3a f1 74 77 62 75 66  | ..    .0:.twbuf|
00005770  30 24 28 79 25 29 0d 20  a8 17 20 20 20 20 c9 31  |0$(y%). ..    .1|
00005780  3a f1 74 77 62 75 66 31  24 28 79 25 29 0d 20 b2  |:.twbuf1$(y%). .|
00005790  17 20 20 20 20 c9 32 3a  f1 74 77 62 75 66 32 24  |.    .2:.twbuf2$|
000057a0  28 79 25 29 0d 20 bc 17  20 20 20 20 c9 33 3a f1  |(y%). ..    .3:.|
000057b0  74 77 62 75 66 33 24 28  79 25 29 0d 20 c6 17 20  |twbuf3$(y%). .. |
000057c0  20 20 20 c9 34 3a f1 74  77 62 75 66 34 24 28 79  |   .4:.twbuf4$(y|
000057d0  25 29 0d 20 d0 17 20 20  20 20 c9 35 3a f1 74 77  |%). ..    .5:.tw|
000057e0  62 75 66 35 24 28 79 25  29 0d 20 da 17 20 20 20  |buf5$(y%). ..   |
000057f0  20 c9 36 3a f1 74 77 62  75 66 36 24 28 79 25 29  | .6:.twbuf6$(y%)|
00005800  0d 20 e4 07 20 20 cb 0d  20 ee 07 20 20 ed 0d 20  |. ..  .. ..  .. |
00005810  f8 25 20 20 c8 99 22 57  69 6d 70 5f 47 65 74 52  |.%  .."Wimp_GetR|
00005820  65 63 74 61 6e 67 6c 65  22 2c 2c 71 25 b8 6d 6f  |ectangle",,q%.mo|
00005830  72 65 25 0d 21 02 05 ce  0d 21 0c 05 e1 0d 21 16  |re%.!....!....!.|
00005840  04 0d 21 20 15 dd f2 64  72 61 77 5f 74 78 74 28  |..! ...draw_txt(|
00005850  6d 6f 72 65 25 29 0d 21  2a 1d ea 4c 25 2c 79 25  |more%).!*..L%,y%|
00005860  2c 74 6f 70 25 2c 62 6f  74 25 3a c8 95 20 6d 6f  |,top%,bot%:.. mo|
00005870  72 65 25 0d 21 34 13 20  20 f2 69 6e 66 6f 28 71  |re%.!4.  .info(q|
00005880  25 2b 34 29 3a da 0d 21  3e 2d 20 20 74 6f 70 25  |%+4):..!>-  top%|
00005890  3d 94 28 67 79 31 25 2d  62 79 25 29 81 33 32 3a  |=.(gy1%-by%).32:|
000058a0  62 6f 74 25 3d 94 28 67  79 30 25 2d 62 79 25 29  |bot%=.(gy0%-by%)|
000058b0  81 33 32 0d 21 48 33 20  20 e7 62 6f 74 25 3e 74  |.32.!H3  .bot%>t|
000058c0  78 74 79 25 20 8c 62 6f  74 25 3d 74 78 74 79 25  |xty% .bot%=txty%|
000058d0  3a e7 74 6f 70 25 3e 62  6f 74 25 20 8c 74 6f 70  |:.top%>bot% .top|
000058e0  25 3d 62 6f 74 25 0d 21  52 27 20 20 e3 4c 25 3d  |%=bot%.!R'  .L%=|
000058f0  74 6f 70 25 b8 62 6f 74  25 3a 79 25 3d 28 4c 25  |top%.bot%:y%=(L%|
00005900  2b 74 78 74 6f 25 29 83  74 78 74 79 25 0d 21 5c  |+txto%).txty%.!\|
00005910  3d 20 20 ec 62 78 25 2c  62 79 25 2d 4c 25 2a 33  |=  .bx%,by%-L%*3|
00005920  32 3a c8 99 22 57 69 6d  70 5f 53 65 74 43 6f 6c  |2:.."Wimp_SetCol|
00005930  6f 75 72 22 2c 74 78 74  63 25 3f 79 25 3a f1 74  |our",txtc%?y%:.t|
00005940  78 74 6c 24 28 79 25 29  3a ed 0d 21 66 27 20 20  |xtl$(y%):..!f'  |
00005950  c8 99 22 57 69 6d 70 5f  47 65 74 52 65 63 74 61  |.."Wimp_GetRecta|
00005960  6e 67 6c 65 22 2c 2c 71  25 20 b8 20 6d 6f 72 65  |ngle",,q% . more|
00005970  25 0d 21 70 05 ce 0d 21  7a 05 e1 0d 21 84 04 0d  |%.!p...!z...!...|
00005980  21 8e 11 dd f2 73 74 72  5f 74 78 74 28 41 24 29  |!....str_txt(A$)|
00005990  0d 21 98 14 e7 64 61 74  61 24 3e 22 22 8c f2 66  |.!...data$>""..f|
000059a0  6c 75 73 68 0d 21 a2 13  f2 6c 69 6e 65 5f 74 78  |lush.!...line_tx|
000059b0  74 28 41 24 2c 37 29 0d  21 ac 05 e1 0d 21 b6 04  |t(A$,7).!....!..|
000059c0  0d 21 c0 12 dd f2 77 61  72 6e 5f 74 78 74 28 41  |.!....warn_txt(A|
000059d0  24 29 0d 21 ca 14 f2 6c  69 6e 65 5f 74 78 74 28  |$).!...line_txt(|
000059e0  41 24 2c 31 31 29 0d 21  d4 05 e1 0d 21 de 04 0d  |A$,11).!....!...|
000059f0  21 e8 0b dd f2 66 6c 75  73 68 0d 21 f2 0e e7 64  |!....flush.!...d|
00005a00  61 74 61 24 3e 22 22 8c  0d 21 fc 2c 20 20 e7 28  |ata$>""..!.,  .(|
00005a10  64 65 62 75 67 25 80 32  29 3c 3e 30 80 65 72 72  |debug%.2)<>0.err|
00005a20  43 25 3c 3e 30 20 8c d5  23 65 72 72 43 25 2c 64  |C%<>0 ..#errC%,d|
00005a30  61 74 61 24 0d 22 06 20  20 20 e7 6d 73 67 5f 63  |ata$.".   .msg_c|
00005a40  73 25 3e 30 8c f2 6d 73  67 66 69 6c 74 28 64 61  |s%>0..msgfilt(da|
00005a50  74 61 24 29 0d 22 10 21  20 20 f2 6c 69 6e 65 5f  |ta$).".!  .line_|
00005a60  74 78 74 28 64 61 74 61  24 2c 35 29 3a 64 61 74  |txt(data$,5):dat|
00005a70  61 24 3d 22 22 0d 22 1a  05 cd 0d 22 24 05 e1 0d  |a$=""."...."$...|
00005a80  22 2e 04 0d 22 38 18 dd  a4 72 65 63 3a e7 64 65  |"..."8...rec:.de|
00005a90  76 69 63 65 25 3d 30 8c  3d 2d 31 0d 22 42 16 5a  |vice%=0.=-1."B.Z|
00005aa0  25 3d a4 64 28 31 2c 70  6f 72 74 25 2c 30 2c 30  |%=.d(1,port%,0,0|
00005ab0  29 0d 22 4c 22 e7 5a 25  3e 30 80 28 64 65 62 75  |)."L".Z%>0.(debu|
00005ac0  67 25 80 32 29 3e 30 84  6d 73 67 5f 63 73 25 3e  |g%.2)>0.msg_cs%>|
00005ad0  30 20 8c 0d 22 56 20 20  20 e7 5a 25 3e 33 31 20  |0 .."V   .Z%>31 |
00005ae0  80 5a 25 3c 31 32 38 20  8c 64 61 74 61 24 2b 3d  |.Z%<128 .data$+=|
00005af0  bd 5a 25 0d 22 60 28 20  20 e7 5a 25 3d 31 33 84  |.Z%."`(  .Z%=13.|
00005b00  5a 25 3d 31 30 84 a9 64  61 74 61 24 3e 3d 74 78  |Z%=10..data$>=tx|
00005b10  74 78 25 20 8c f2 66 6c  75 73 68 0d 22 6a 05 cd  |tx% ..flush."j..|
00005b20  0d 22 74 07 3d 5a 25 0d  22 7e 04 0d 22 88 1c dd  |."t.=Z%."~.."...|
00005b30  f2 74 77 5f 64 61 74 61  28 74 77 25 2c 62 75 66  |.tw_data(tw%,buf|
00005b40  25 2c 6c 65 6e 25 29 0d  22 92 07 ea 6c 25 0d 22  |%,len%)."...l%."|
00005b50  9c 19 e3 6c 25 3d 30 b8  6c 65 6e 25 3a 43 25 3d  |...l%=0.len%:C%=|
00005b60  62 75 66 25 3f 6c 25 0d  22 a6 26 20 20 e7 43 25  |buf%?l%.".&  .C%|
00005b70  3e 33 31 20 80 43 25 3c  31 32 38 20 8c 74 64 61  |>31 .C%<128 .tda|
00005b80  74 61 24 28 74 77 25 29  2b 3d bd 43 25 0d 22 b0  |ta$(tw%)+=.C%.".|
00005b90  24 20 20 e7 43 25 3d 31  33 84 43 25 3d 31 30 84  |$  .C%=13.C%=10.|
00005ba0  a9 74 64 61 74 61 24 28  74 77 25 29 3e 37 38 20  |.tdata$(tw%)>78 |
00005bb0  8c 0d 22 ba 20 20 20 20  20 f2 74 77 5f 74 78 74  |..".     .tw_txt|
00005bc0  28 74 77 25 2c 74 64 61  74 61 24 28 74 77 25 29  |(tw%,tdata$(tw%)|
00005bd0  29 0d 22 c4 31 20 20 20  20 e7 74 67 65 74 25 3d  |).".1    .tget%=|
00005be0  74 77 25 80 74 67 65 74  24 28 30 29 3e 22 22 8c  |tw%.tget$(0)>"".|
00005bf0  f2 74 67 65 74 28 74 64  61 74 61 24 28 74 77 25  |.tget(tdata$(tw%|
00005c00  29 29 0d 22 ce 16 20 20  20 20 74 64 61 74 61 24  |))."..    tdata$|
00005c10  28 74 77 25 29 3d 22 22  0d 22 d8 07 20 20 cd 0d  |(tw%)=""."..  ..|
00005c20  22 e2 05 ed 0d 22 ec 2d  e7 74 67 65 74 25 3d 74  |"....".-.tget%=t|
00005c30  77 25 80 74 67 65 74 24  28 30 29 3e 22 22 8c f2  |w%.tget$(0)>""..|
00005c40  74 67 65 74 28 74 64 61  74 61 24 28 74 77 25 29  |tget(tdata$(tw%)|
00005c50  29 0d 22 f6 05 e1 0d 23  00 04 0d 23 0a 14 dd f2  |)."....#...#....|
00005c60  74 77 5f 74 78 74 28 74  77 25 2c 41 24 29 0d 23  |tw_txt(tw%,A$).#|
00005c70  14 0a ea 74 25 2c 42 24  0d 23 1e 35 e7 28 64 65  |...t%,B$.#.5.(de|
00005c80  62 75 67 25 80 34 29 3c  3e 30 80 65 72 72 43 25  |bug%.4)<>0.errC%|
00005c90  3c 3e 30 20 8c d5 23 65  72 72 43 25 2c 22 54 57  |<>0 ..#errC%,"TW|
00005ca0  22 2b c3 74 77 25 2b 22  3e 22 2b 41 24 0d 23 28  |"+.tw%+">"+A$.#(|
00005cb0  0b c8 95 41 24 3e 22 22  0d 23 32 26 20 20 74 25  |...A$>"".#2&  t%|
00005cc0  3d 28 74 77 79 25 28 74  77 25 29 2b 74 77 6f 25  |=(twy%(tw%)+two%|
00005cd0  28 74 77 25 29 29 83 74  77 77 6d 61 78 25 0d 23  |(tw%)).twwmax%.#|
00005ce0  3c 1b 20 20 42 24 3d c0  41 24 2c 37 39 29 3a 41  |<.  B$=.A$,79):A|
00005cf0  24 3d c1 41 24 2c 37 39  29 0d 23 46 0c 20 20 c8  |$=.A$,79).#F.  .|
00005d00  8e 74 77 25 ca 0d 23 50  19 20 20 20 20 c9 30 3a  |.tw%..#P.    .0:|
00005d10  74 77 62 75 66 30 24 28  74 25 29 3d 42 24 0d 23  |twbuf0$(t%)=B$.#|
00005d20  5a 19 20 20 20 20 c9 31  3a 74 77 62 75 66 31 24  |Z.    .1:twbuf1$|
00005d30  28 74 25 29 3d 42 24 0d  23 64 19 20 20 20 20 c9  |(t%)=B$.#d.    .|
00005d40  32 3a 74 77 62 75 66 32  24 28 74 25 29 3d 42 24  |2:twbuf2$(t%)=B$|
00005d50  0d 23 6e 19 20 20 20 20  c9 33 3a 74 77 62 75 66  |.#n.    .3:twbuf|
00005d60  33 24 28 74 25 29 3d 42  24 0d 23 78 19 20 20 20  |3$(t%)=B$.#x.   |
00005d70  20 c9 34 3a 74 77 62 75  66 34 24 28 74 25 29 3d  | .4:twbuf4$(t%)=|
00005d80  42 24 0d 23 82 19 20 20  20 20 c9 35 3a 74 77 62  |B$.#..    .5:twb|
00005d90  75 66 35 24 28 74 25 29  3d 42 24 0d 23 8c 19 20  |uf5$(t%)=B$.#.. |
00005da0  20 20 20 c9 36 3a 74 77  62 75 66 36 24 28 74 25  |   .6:twbuf6$(t%|
00005db0  29 3d 42 24 0d 23 96 07  20 20 cb 0d 23 a0 1a 20  |)=B$.#..  ..#.. |
00005dc0  20 e7 74 77 79 25 28 74  77 25 29 3c 74 77 77 6d  | .twy%(tw%)<twwm|
00005dd0  61 78 25 20 8c 0d 23 aa  44 20 20 20 20 21 71 25  |ax% ..#.D    !q%|
00005de0  3d 74 77 77 25 28 74 77  25 29 3a c8 99 22 57 69  |=tww%(tw%):.."Wi|
00005df0  6d 70 5f 47 65 74 57 69  6e 64 6f 77 53 74 61 74  |mp_GetWindowStat|
00005e00  65 22 2c 2c 71 25 3a 66  25 3d 28 71 25 21 33 32  |e",,q%:f%=(q%!32|
00005e10  29 80 28 31 3c 3c 31 36  29 0d 23 b4 64 20 20 20  |).(1<<16).#.d   |
00005e20  20 e7 74 77 79 25 28 74  77 25 29 3e 3d 94 28 71  | .twy%(tw%)>=.(q|
00005e30  25 21 38 2d 71 25 21 31  36 29 81 33 32 20 8c 71  |%!8-q%!16).32 .q|
00005e40  25 21 32 34 3d 2d 28 74  77 79 25 28 74 77 25 29  |%!24=-(twy%(tw%)|
00005e50  2a 33 32 2d 94 28 71 25  21 38 2d 71 25 21 31 36  |*32-.(q%!8-q%!16|
00005e60  29 29 2d 33 32 3a c8 99  22 57 69 6d 70 5f 4f 70  |))-32:.."Wimp_Op|
00005e70  65 6e 57 69 6e 64 6f 77  22 2c 2c 71 25 0d 23 be  |enWindow",,q%.#.|
00005e80  3f 20 20 20 20 f2 75 70  64 61 74 65 5f 74 77 28  |?    .update_tw(|
00005e90  74 77 25 2c 30 2c 2d 74  77 79 25 28 74 77 25 29  |tw%,0,-twy%(tw%)|
00005ea0  2a 33 32 2d 33 32 2c 31  32 38 30 2c 2d 74 77 79  |*32-32,1280,-twy|
00005eb0  25 28 74 77 25 29 2a 33  32 2b 34 29 0d 23 c8 14  |%(tw%)*32+4).#..|
00005ec0  20 20 20 20 74 77 79 25  28 74 77 25 29 2b 3d 31  |    twy%(tw%)+=1|
00005ed0  0d 23 d2 07 20 20 cc 0d  23 dc 27 20 20 20 20 74  |.#..  ..#.'    t|
00005ee0  77 6f 25 28 74 77 25 29  3d 28 74 77 6f 25 28 74  |wo%(tw%)=(two%(t|
00005ef0  77 25 29 2b 31 29 83 74  77 77 6d 61 78 25 0d 23  |w%)+1).twwmax%.#|
00005f00  e6 4b 20 20 20 20 c8 99  22 57 69 6d 70 5f 42 6c  |.K    .."Wimp_Bl|
00005f10  6f 63 6b 43 6f 70 79 22  2c 74 77 77 25 28 74 77  |ockCopy",tww%(tw|
00005f20  25 29 2c 30 2c 2d 33 32  2a 74 77 77 6d 61 78 25  |%),0,-32*twwmax%|
00005f30  2c 31 32 38 30 2c 30 2c  30 2c 2d 33 32 2a 28 74  |,1280,0,0,-32*(t|
00005f40  77 77 6d 61 78 25 2d 31  29 0d 23 f0 3c 20 20 20  |wwmax%-1).#.<   |
00005f50  20 f2 75 70 64 61 74 65  5f 74 77 28 74 77 25 2c  | .update_tw(tw%,|
00005f60  30 2c 2d 33 32 2a 74 77  77 6d 61 78 25 2c 31 32  |0,-32*twwmax%,12|
00005f70  38 30 2c 2d 33 32 2a 28  74 77 77 6d 61 78 25 2d  |80,-32*(twwmax%-|
00005f80  31 29 2b 34 29 0d 23 fa  07 20 20 cd 0d 24 04 05  |1)+4).#..  ..$..|
00005f90  ce 0d 24 0e 05 e1 0d 24  18 04 0d 24 22 17 dd f2  |..$....$...$"...|
00005fa0  6c 69 6e 65 5f 74 78 74  28 41 24 2c 63 6f 6c 25  |line_txt(A$,col%|
00005fb0  29 0d 24 2c 15 ea 74 25  3a f2 70 6f 6c 6c 28 73  |).$,..t%:.poll(s|
00005fc0  6c 69 63 65 25 29 0d 24  36 0b c8 95 41 24 3e 22  |lice%).$6...A$>"|
00005fd0  22 0d 24 40 1d 20 20 74  25 3d 28 6c 6f 67 5f 79  |".$@.  t%=(log_y|
00005fe0  25 2b 74 78 74 6f 25 29  83 74 78 74 79 25 0d 24  |%+txto%).txty%.$|
00005ff0  4a 28 20 20 74 78 74 6c  24 28 74 25 29 3d c0 41  |J(  txtl$(t%)=.A|
00006000  24 2c 74 78 74 78 25 29  3a 41 24 3d c1 41 24 2c  |$,txtx%):A$=.A$,|
00006010  74 78 74 78 25 29 0d 24  54 23 20 20 74 78 74 63  |txtx%).$T#  txtc|
00006020  25 3f 74 25 3d 63 6f 6c  25 3a e7 6c 6f 67 5f 79  |%?t%=col%:.log_y|
00006030  25 3c 74 78 74 79 25 20  8c 0d 24 5e 3f 20 20 20  |%<txty% ..$^?   |
00006040  20 21 71 25 3d 74 78 74  25 3a c8 99 22 57 69 6d  | !q%=txt%:.."Wim|
00006050  70 5f 47 65 74 57 69 6e  64 6f 77 53 74 61 74 65  |p_GetWindowState|
00006060  22 2c 2c 71 25 3a 66 25  3d 28 71 25 21 33 32 29  |",,q%:f%=(q%!32)|
00006070  80 28 31 3c 3c 31 36 29  0d 24 68 64 20 20 20 20  |.(1<<16).$hd    |
00006080  e7 66 25 3c 3e 30 80 6c  6f 67 5f 79 25 3e 3d 94  |.f%<>0.log_y%>=.|
00006090  28 71 25 21 38 2d 71 25  21 31 36 29 81 33 32 20  |(q%!8-q%!16).32 |
000060a0  8c 71 25 21 32 34 3d 2d  28 6c 6f 67 5f 79 25 2a  |.q%!24=-(log_y%*|
000060b0  33 32 2d 94 28 71 25 21  38 2d 71 25 21 31 36 29  |32-.(q%!8-q%!16)|
000060c0  29 2d 33 32 3a c8 99 22  57 69 6d 70 5f 4f 70 65  |)-32:.."Wimp_Ope|
000060d0  6e 57 69 6e 64 6f 77 22  2c 2c 71 25 0d 24 72 36  |nWindow",,q%.$r6|
000060e0  20 20 20 20 f2 75 70 64  61 74 65 5f 74 78 74 28  |    .update_txt(|
000060f0  30 2c 2d 6c 6f 67 5f 79  25 2a 33 32 2d 33 32 2c  |0,-log_y%*32-32,|
00006100  31 32 38 30 2c 2d 6c 6f  67 5f 79 25 2a 33 32 2b  |1280,-log_y%*32+|
00006110  34 29 0d 24 7c 11 20 20  20 20 6c 6f 67 5f 79 25  |4).$|.    log_y%|
00006120  2b 3d 31 0d 24 86 07 20  20 cc 0d 24 90 1d 20 20  |+=1.$..  ..$..  |
00006130  20 20 74 78 74 6f 25 3d  28 74 78 74 6f 25 2b 31  |  txto%=(txto%+1|
00006140  29 83 74 78 74 79 25 0d  24 9a 42 20 20 20 20 c8  |).txty%.$.B    .|
00006150  99 22 57 69 6d 70 5f 42  6c 6f 63 6b 43 6f 70 79  |."Wimp_BlockCopy|
00006160  22 2c 74 78 74 25 2c 30  2c 2d 33 32 2a 74 78 74  |",txt%,0,-32*txt|
00006170  79 25 2c 31 32 38 30 2c  30 2c 30 2c 2d 33 32 2a  |y%,1280,0,0,-32*|
00006180  28 74 78 74 79 25 2d 31  29 0d 24 a4 35 20 20 20  |(txty%-1).$.5   |
00006190  20 f2 75 70 64 61 74 65  5f 74 78 74 28 30 2c 2d  | .update_txt(0,-|
000061a0  33 32 2a 74 78 74 79 25  2c 31 32 38 30 2c 2d 33  |32*txty%,1280,-3|
000061b0  32 2a 28 74 78 74 79 25  2d 31 29 2b 34 29 0d 24  |2*(txty%-1)+4).$|
000061c0  ae 07 20 20 cd 0d 24 b8  05 ce 0d 24 c2 05 e1 0d  |..  ..$....$....|
000061d0  24 cc 04 0d 24 d6 0d dd  f2 63 6c 72 5f 74 78 74  |$...$....clr_txt|
000061e0  0d 24 e0 28 74 78 74 6c  24 28 29 3d 22 22 3a 6c  |.$.(txtl$()="":l|
000061f0  6f 67 5f 79 25 3d 30 3a  74 78 74 6f 25 3d 30 3a  |og_y%=0:txto%=0:|
00006200  64 61 74 61 24 3d 22 22  0d 24 ea 2f f2 75 70 64  |data$="".$./.upd|
00006210  61 74 65 5f 74 78 74 28  30 2c 2d 74 78 74 79 25  |ate_txt(0,-txty%|
00006220  2a 33 32 2d 69 6f 66 66  25 2d 38 2c 31 36 2a 74  |*32-ioff%-8,16*t|
00006230  78 74 78 25 2c 30 29 0d  24 f4 05 e1 0d 24 fe 04  |xtx%,0).$....$..|
00006240  0d 25 08 0d dd f2 6c 6f  67 28 6d 24 29 0d 25 12  |.%....log(m$).%.|
00006250  11 e7 28 64 65 62 75 67  25 80 31 29 20 8c 0d 25  |..(debug%.1) ..%|
00006260  1c 12 20 20 f2 73 74 72  5f 74 78 74 28 6d 24 29  |..  .str_txt(m$)|
00006270  0d 25 26 1b 20 20 e7 65  72 72 43 25 3c 3e 30 20  |.%&.  .errC%<>0 |
00006280  8c d5 23 65 72 72 43 25  2c 6d 24 0d 25 30 05 cd  |..#errC%,m$.%0..|
00006290  0d 25 3a 05 e1 0d 25 44  04 0d 25 4e 11 dd f2 6f  |.%:...%D..%N...o|
000062a0  70 65 6e 6c 6f 67 28 41  24 29 0d 25 58 11 42 24  |penlog(A$).%X.B$|
000062b0  3d a4 70 61 72 61 6d 28  41 24 29 0d 25 62 0c e7  |=.param(A$).%b..|
000062c0  42 24 3d 22 22 20 8c 0d  25 6c 17 20 20 f2 66 6c  |B$="" ..%l.  .fl|
000062d0  75 73 68 3a f2 63 66 28  65 72 72 43 25 29 0d 25  |ush:.cf(errC%).%|
000062e0  76 05 cc 0d 25 80 13 20  20 42 24 3d a4 63 61 6e  |v...%..  B$=.can|
000062f0  6f 6e 28 42 24 29 0d 25  8a 22 20 20 c8 99 22 58  |on(B$).%."  .."X|
00006300  4f 53 5f 46 69 6e 64 22  2c 26 43 46 2c 42 24 b8  |OS_Find",&CF,B$.|
00006310  65 72 72 43 25 3b 46 25  0d 25 94 2a 20 20 e7 28  |errC%;F%.%.*  .(|
00006320  46 25 80 31 29 8c c8 99  22 58 4f 53 5f 46 69 6e  |F%.1)..."XOS_Fin|
00006330  64 22 2c 26 38 46 2c 42  24 b8 65 72 72 43 25 3b  |d",&8F,B$.errC%;|
00006340  46 25 0d 25 9e 2e 20 20  e7 28 46 25 80 31 29 8c  |F%.%..  .(F%.1).|
00006350  65 72 72 43 25 3d 30 3a  f2 68 61 6c 74 28 a4 6d  |errC%=0:.halt(.m|
00006360  73 67 30 28 22 45 74 72  61 63 65 22 29 29 3a e1  |sg0("Etrace")):.|
00006370  0d 25 a8 1d 20 20 c8 99  22 58 4f 53 5f 46 69 6c  |.%..  .."XOS_Fil|
00006380  65 22 2c 31 38 2c 42 24  2c 26 46 46 46 0d 25 b2  |e",18,B$,&FFF.%.|
00006390  20 20 20 e7 65 72 72 43  25 3c 3e 30 20 8c cf 23  |   .errC%<>0 ..#|
000063a0  65 72 72 43 25 3d a2 23  65 72 72 43 25 0d 25 bc  |errC%=.#errC%.%.|
000063b0  05 cd 0d 25 c6 05 e1 0d  25 d0 04 0d 25 da 11 dd  |...%....%...%...|
000063c0  f2 63 6c 61 69 6d 64 65  76 69 63 65 0d 25 e4 12  |.claimdevice.%..|
000063d0  e7 64 72 69 76 65 72 6e  6f 25 3e 2d 31 8c 0d 25  |.driverno%>-1..%|
000063e0  ee 3c 20 20 21 71 25 3d  32 35 36 3a 71 25 21 31  |.<  !q%=256:q%!1|
000063f0  32 3d 30 3a 71 25 21 31  36 3d 31 31 3a 71 25 21  |2=0:q%!16=11:q%!|
00006400  32 30 3d 32 3a 71 25 21  32 34 3d 64 72 69 76 65  |20=2:q%!24=drive|
00006410  72 6e 6f 25 2b 70 6f 72  74 25 0d 25 f8 1c 20 20  |rno%+port%.%..  |
00006420  24 28 71 25 2b 32 38 29  3d 22 53 4c 49 50 64 69  |$(q%+28)="SLIPdi|
00006430  61 6c 22 2b bd 30 0d 26  02 22 20 20 c8 99 22 57  |al"+.0.&."  .."W|
00006440  69 6d 70 5f 53 65 6e 64  4d 65 73 73 61 67 65 22  |imp_SendMessage"|
00006450  2c 31 38 2c 71 25 2c 30  0d 26 0c 22 20 20 64 65  |,18,q%,0.&."  de|
00006460  76 69 63 65 25 3d b9 3a  e3 4c 25 3d 31 b8 35 3a  |vice%=.:.L%=1.5:|
00006470  f2 70 6f 6c 6c 28 30 29  3a ed 0d 26 16 05 cd 0d  |.poll(0):..&....|
00006480  26 20 05 e1 0d 26 2a 04  0d 26 34 12 dd f2 72 65  |& ...&*..&4...re|
00006490  66 75 73 65 64 65 76 69  63 65 0d 26 3e 12 e7 64  |fusedevice.&>..d|
000064a0  72 69 76 65 72 6e 6f 25  3e 2d 31 8c 0d 26 48 29  |riverno%>-1..&H)|
000064b0  20 20 e7 20 71 25 21 32  30 3d 32 20 80 20 71 25  |  . q%!20=2 . q%|
000064c0  21 32 34 3d 64 72 69 76  65 72 6e 6f 25 2b 70 6f  |!24=driverno%+po|
000064d0  72 74 25 20 8c 0d 26 52  23 20 20 20 20 21 71 25  |rt% ..&R#    !q%|
000064e0  3d 32 35 36 3a 71 25 21  31 32 3d 71 25 21 38 3a  |=256:q%!12=q%!8:|
000064f0  71 25 21 31 36 3d 31 32  0d 26 5c 24 20 20 20 20  |q%!16=12.&\$    |
00006500  24 28 71 25 2b 32 38 29  3d a4 6d 73 67 30 28 22  |$(q%+28)=.msg0("|
00006510  44 65 76 4d 69 6e 65 22  29 2b bd 30 0d 26 66 27  |DevMine")+.0.&f'|
00006520  20 20 20 20 c8 99 22 57  69 6d 70 5f 53 65 6e 64  |    .."Wimp_Send|
00006530  4d 65 73 73 61 67 65 22  2c 31 37 2c 71 25 2c 71  |Message",17,q%,q|
00006540  25 21 34 0d 26 70 07 20  20 cd 0d 26 7a 05 cd 0d  |%!4.&p.  ..&z...|
00006550  26 84 05 e1 0d 26 8e 04  0d 26 98 14 dd a4 6c 6f  |&....&...&....lo|
00006560  61 64 64 72 69 76 65 72  28 41 24 29 0d 26 a2 18  |addriver(A$).&..|
00006570  41 25 3d a7 41 24 2c 22  20 22 29 3a e7 41 25 3e  |A%=.A$," "):.A%>|
00006580  3d 30 20 8c 0d 26 ac 17  20 20 64 72 69 76 65 72  |=0 ..&..  driver|
00006590  24 3d c0 41 24 2c 41 25  2d 31 29 0d 26 b6 18 20  |$=.A$,A%-1).&.. |
000065a0  20 70 6f 72 74 25 3d bb  28 c1 41 24 2c 41 25 2b  | port%=.(.A$,A%+|
000065b0  31 29 29 0d 26 c0 07 20  20 cc 0d 26 ca 18 20 20  |1)).&..  ..&..  |
000065c0  64 72 69 76 65 72 24 3d  22 69 6e 74 65 72 6e 61  |driver$="interna|
000065d0  6c 22 0d 26 d4 0d 20 20  70 6f 72 74 25 3d 30 0d  |l".&..  port%=0.|
000065e0  26 de 05 cd 0d 26 e8 04  0d 26 f2 24 f2 73 65 74  |&....&...&.$.set|
000065f0  76 28 22 70 6f 72 74 22  2c 64 72 69 76 65 72 24  |v("port",driver$|
00006600  2b 22 20 22 2b c3 70 6f  72 74 25 29 0d 26 fc 2b  |+" "+.port%).&.+|
00006610  f2 70 72 69 6e 74 28 a4  6d 73 67 31 28 22 44 65  |.print(.msg1("De|
00006620  76 4c 6f 61 64 22 2c 64  72 69 76 65 72 24 29 2c  |vLoad",driver$),|
00006630  22 20 22 2c 22 22 29 0d  27 06 47 c8 99 22 58 4f  |" ","").'.G.."XO|
00006640  53 5f 46 69 6c 65 22 2c  31 36 2c 22 53 65 72 69  |S_File",16,"Seri|
00006650  61 6c 44 65 76 3a 6d 6f  64 75 6c 65 73 2e 22 2b  |alDev:modules."+|
00006660  64 72 69 76 65 72 24 2b  22 2e 64 72 69 76 65 72  |driver$+".driver|
00006670  22 2c 64 72 69 76 65 72  2c 30 b8 3b 46 25 0d 27  |",driver,0.;F%.'|
00006680  10 2c e7 28 46 25 80 31  29 20 8c f2 68 61 6c 74  |.,.(F%.1) ..halt|
00006690  28 a4 6d 73 67 31 28 22  45 64 65 76 22 2c 64 72  |(.msg1("Edev",dr|
000066a0  69 76 65 72 24 29 29 3a  3d 30 0d 27 1a 20 f2 70  |iver$)):=0.'. .p|
000066b0  72 69 6e 74 28 22 22 2c  a4 6d 73 67 30 28 22 44  |rint("",.msg0("D|
000066c0  65 76 4f 4b 22 29 2c 22  22 29 0d 27 24 18 64 72  |evOK"),"").'$.dr|
000066d0  69 76 65 72 6e 6f 25 3d  64 72 69 76 65 72 21 26  |iverno%=driver!&|
000066e0  43 38 0d 27 2e 0a 3d 70  6f 72 74 25 0d 27 38 04  |C8.'..=port%.'8.|
000066f0  0d 27 42 12 dd f2 73 65  74 73 70 65 65 64 28 42  |.'B...setspeed(B|
00006700  24 29 0d 27 4c 26 73 70  65 65 64 25 3d bb 42 24  |$).'L&speed%=.B$|
00006710  3a e7 73 70 65 65 64 25  3d 30 20 8c 73 70 65 65  |:.speed%=0 .spee|
00006720  64 25 3d 31 39 32 30 30  0d 27 56 1a f2 73 65 74  |d%=19200.'V..set|
00006730  76 28 22 73 70 65 65 64  22 2c c3 73 70 65 65 64  |v("speed",.speed|
00006740  25 29 0d 27 60 05 e1 0d  27 6a 04 0d 27 74 15 dd  |%).'`...'j..'t..|
00006750  f2 61 64 64 65 76 65 6e  74 28 41 24 2c 74 25 29  |.addevent(A$,t%)|
00006760  0d 27 7e 48 f4 20 65 76  65 6e 74 20 74 79 70 65  |.'~H. event type|
00006770  73 20 61 72 65 3a 20 30  20 73 79 73 74 65 6d 2c  |s are: 0 system,|
00006780  20 31 20 74 69 6d 65 2d  61 6c 61 72 6d 2c 20 32  | 1 time-alarm, 2|
00006790  20 6c 69 6e 65 2d 61 6c  61 72 6d 2c 20 33 20 74  | line-alarm, 3 t|
000067a0  61 73 6b 2d 65 6e 64 2c  0d 27 88 47 f4 20 34 20  |ask-end,.'.G. 4 |
000067b0  74 61 73 6b 77 69 6e 64  6f 77 2d 65 6e 64 2c 20  |taskwindow-end, |
000067c0  35 20 63 6f 6d 6d 61 6e  64 2d 69 6e 70 75 74 2c  |5 command-input,|
000067d0  20 36 20 69 63 6f 6e 2d  63 6c 69 63 6b 2c 20 37  | 6 icon-click, 7|
000067e0  20 69 63 6f 6e 2d 66 69  6c 65 64 72 6f 70 2c 0d  | icon-filedrop,.|
000067f0  27 92 1d f4 20 38 20 75  73 65 72 2d 6d 65 6e 75  |'... 8 user-menu|
00006800  2c 20 39 20 75 73 65 72  2d 65 6f 66 0d 27 9c 1a  |, 9 user-eof.'..|
00006810  f2 6c 6f 67 28 a4 6d 73  67 31 28 22 51 61 64 64  |.log(.msg1("Qadd|
00006820  22 2c 41 24 29 29 0d 27  a6 22 4c 25 3d 30 3a c8  |",A$)).'."L%=0:.|
00006830  95 65 76 65 6e 74 24 28  4c 25 29 3e 22 22 80 4c  |.event$(L%)>"".L|
00006840  25 3c 6d 61 78 65 76 25  0d 27 b0 0b 4c 25 2b 3d  |%<maxev%.'..L%+=|
00006850  31 3a ce 0d 27 ba 22 65  76 65 6e 74 24 28 4c 25  |1:..'."event$(L%|
00006860  29 3d 41 24 3a 65 76 74  79 70 65 25 28 4c 25 29  |)=A$:evtype%(L%)|
00006870  3d 74 25 3a e1 0d 27 c4  04 0d 27 ce 0e dd a4 67  |=t%:..'...'....g|
00006880  65 74 65 76 65 6e 74 0d  27 d8 20 ea 74 25 2c 6c  |etevent.'. .t%,l|
00006890  25 2c 41 24 2c 6e 25 3a  6c 25 3d 30 3a 41 24 3d  |%,A$,n%:l%=0:A$=|
000068a0  22 22 3a 6e 25 3d 30 0d  27 e2 3e f5 e7 65 76 65  |"":n%=0.'.>..eve|
000068b0  6e 74 24 28 6c 25 29 3e  22 22 80 65 76 65 6e 74  |nt$(l%)>"".event|
000068c0  25 28 65 76 74 79 70 65  25 28 6c 25 29 29 3d b9  |%(evtype%(l%))=.|
000068d0  20 8c 41 24 3d 65 76 65  6e 74 24 28 6c 25 29 3a  | .A$=event$(l%):|
000068e0  6e 25 3d 6c 25 0d 27 ec  28 6c 25 2b 3d 31 3a fd  |n%=l%.'.(l%+=1:.|
000068f0  41 24 3e 22 22 84 65 76  65 6e 74 24 28 6c 25 29  |A$>"".event$(l%)|
00006900  3d 22 22 84 6c 25 3d 6d  61 78 65 76 25 0d 27 f6  |="".l%=maxev%.'.|
00006910  0b e7 41 24 3e 22 22 8c  0d 28 00 49 20 20 e3 6c  |..A$>""..(.I  .l|
00006920  25 3d 6e 25 b8 6d 61 78  65 76 25 2d 31 3a 65 76  |%=n%.maxev%-1:ev|
00006930  65 6e 74 24 28 6c 25 29  3d 65 76 65 6e 74 24 28  |ent$(l%)=event$(|
00006940  6c 25 2b 31 29 3a 65 76  74 79 70 65 25 28 6c 25  |l%+1):evtype%(l%|
00006950  29 3d 65 76 74 79 70 65  25 28 6c 25 2b 31 29 3a  |)=evtype%(l%+1):|
00006960  ed 0d 28 0a 17 20 20 65  76 65 6e 74 24 28 6d 61  |..(..  event$(ma|
00006970  78 65 76 25 29 3d 22 22  0d 28 14 05 cd 0d 28 1e  |xev%)="".(....(.|
00006980  07 3d 41 24 0d 28 28 04  0d 28 32 0f dd a4 74 65  |.=A$.((..(2...te|
00006990  73 74 65 76 65 6e 74 0d  28 3c 17 ea 74 25 2c 6c  |stevent.(<..t%,l|
000069a0  25 2c 72 25 3a 6c 25 3d  30 3a 72 25 3d 30 0d 28  |%,r%:l%=0:r%=0.(|
000069b0  46 2f f5 e7 65 76 65 6e  74 24 28 6c 25 29 3e 22  |F/..event$(l%)>"|
000069c0  22 80 65 76 65 6e 74 25  28 65 76 74 79 70 65 25  |".event%(evtype%|
000069d0  28 6c 25 29 29 3d b9 20  8c 72 25 3d b9 0d 28 50  |(l%))=. .r%=..(P|
000069e0  28 6c 25 2b 3d 31 3a fd  72 25 3c 3e 30 84 65 76  |(l%+=1:.r%<>0.ev|
000069f0  65 6e 74 24 28 6c 25 29  3d 22 22 84 6c 25 3d 6d  |ent$(l%)="".l%=m|
00006a00  61 78 65 76 25 0d 28 5a  07 3d 72 25 0d 28 64 04  |axev%.(Z.=r%.(d.|
00006a10  0d 28 6e 13 dd a4 63 6f  6d 6d 61 6e 64 28 63 6f  |.(n...command(co|
00006a20  6d 24 29 0d 28 78 28 c8  95 63 6f 6d 24 3e 22 22  |m$).(x(..com$>""|
00006a30  80 73 74 6f 70 25 3d 30  3a 41 24 3d a4 6d 75 6c  |.stop%=0:A$=.mul|
00006a40  74 69 63 6f 6d 28 63 6f  6d 24 29 0d 28 82 11 f2  |ticom(com$).(...|
00006a50  70 6f 6c 6c 28 73 6c 69  63 65 25 29 0d 28 8c 19  |poll(slice%).(..|
00006a60  f2 6c 6f 67 28 c3 73 74  61 67 65 25 2b 22 3a 20  |.log(.stage%+": |
00006a70  22 2b 41 24 29 0d 28 96  44 42 24 3d a4 70 61 72  |"+A$).(.DB$=.par|
00006a80  61 6d 28 41 24 29 3a 42  24 3d a4 6c 6f 77 65 72  |am(A$):B$=.lower|
00006a90  28 42 24 29 3a 6c 63 24  3d 42 24 3a f4 20 73 74  |(B$):lc$=B$:. st|
00006aa0  6f 72 65 20 6c 61 73 74  20 63 6f 6d 6d 61 6e 64  |ore last command|
00006ab0  20 66 6f 72 20 68 65 6c  70 0d 28 a0 12 e7 c0 42  | for help.(....B|
00006ac0  24 2c 31 29 3c 3e 22 3a  22 20 8c 0d 28 aa 0c 20  |$,1)<>":" ..(.. |
00006ad0  20 c8 8e 42 24 20 ca 0d  28 b4 26 20 20 20 20 c9  | ..B$ ..(.&    .|
00006ae0  20 22 69 66 22 20 20 20  3a 72 65 74 75 72 6e 25  | "if"   :return%|
00006af0  3d a4 69 66 28 41 24 2c  63 6f 6d 24 29 0d 28 be  |=.if(A$,com$).(.|
00006b00  22 20 20 20 20 c9 20 22  61 73 6b 22 20 20 3a 72  |"    . "ask"  :r|
00006b10  65 74 75 72 6e 25 3d a4  61 73 6b 28 41 24 29 0d  |eturn%=.ask(A$).|
00006b20  28 c8 23 20 20 20 20 c9  20 22 63 61 73 65 22 20  |(.#    . "case" |
00006b30  3a 72 65 74 75 72 6e 25  3d a4 63 61 73 65 28 41  |:return%=.case(A|
00006b40  24 29 0d 28 d2 28 20 20  20 20 c9 20 22 77 68 65  |$).(.(    . "whe|
00006b50  6e 22 20 3a 72 65 74 75  72 6e 25 3d a4 77 68 65  |n" :return%=.whe|
00006b60  6e 28 41 24 2c 63 6f 6d  24 29 0d 28 dc 26 20 20  |n(A$,com$).(.&  |
00006b70  20 20 c9 20 22 6f 74 68  65 72 77 69 73 65 22 3a  |  . "otherwise":|
00006b80  f2 6f 74 68 65 72 77 69  73 65 28 63 6f 6d 24 29  |.otherwise(com$)|
00006b90  0d 28 e6 24 20 20 20 20  c9 20 22 65 6e 64 63 61  |.(.$    . "endca|
00006ba0  73 65 22 3a 72 65 74 75  72 6e 25 3d a4 65 6e 64  |se":return%=.end|
00006bb0  63 61 73 65 0d 28 f0 24  20 20 20 20 c9 20 22 63  |case.(.$    . "c|
00006bc0  6c 61 69 6d 22 3a 72 65  74 75 72 6e 25 3d a4 63  |laim":return%=.c|
00006bd0  6c 61 69 6d 28 41 24 29  0d 28 fa 23 20 20 20 20  |laim(A$).(.#    |
00006be0  c9 20 22 64 65 62 75 67  22 3a 64 65 62 75 67 25  |. "debug":debug%|
00006bf0  3d a4 64 65 62 75 67 28  41 24 29 0d 29 04 28 20  |=.debug(A$).).( |
00006c00  20 20 20 c9 20 22 64 72  69 76 65 72 22 3a 72 65  |   . "driver":re|
00006c10  74 75 72 6e 25 3d a4 6d  6f 64 65 6d 64 72 76 28  |turn%=.modemdrv(|
00006c20  41 24 29 0d 29 0e 26 20  20 20 20 c9 20 22 73 6f  |A$).).&    . "so|
00006c30  75 72 63 65 22 3a 72 65  74 75 72 6e 25 3d a4 73  |urce":return%=.s|
00006c40  6f 75 72 63 65 28 41 24  29 0d 29 18 28 20 20 20  |ource(A$).).(   |
00006c50  20 c9 20 22 6c 69 62 72  61 72 79 22 3a 72 65 74  | . "library":ret|
00006c60  75 72 6e 25 3d a4 6c 69  62 72 61 72 79 28 41 24  |urn%=.library(A$|
00006c70  29 0d 29 22 1c 20 20 20  20 c9 20 22 63 68 61 69  |).)".    . "chai|
00006c80  6e 22 3a f2 63 68 61 69  6e 28 41 24 29 0d 29 2c  |n":.chain(A$).),|
00006c90  27 20 20 20 20 c9 20 22  70 6f 72 74 22 20 3a 70  |'    . "port" :p|
00006ca0  6f 72 74 25 3d a4 6c 6f  61 64 64 72 69 76 65 72  |ort%=.loaddriver|
00006cb0  28 41 24 29 0d 29 36 1f  20 20 20 20 c9 20 22 73  |(A$).)6.    . "s|
00006cc0  70 65 65 64 22 3a f2 73  65 74 73 70 65 65 64 28  |peed":.setspeed(|
00006cd0  41 24 29 0d 29 40 1c 20  20 20 20 c9 20 22 72 65  |A$).)@.    . "re|
00006ce0  6c 65 61 73 65 22 3a f2  72 65 6c 65 61 73 65 0d  |lease":.release.|
00006cf0  29 4a 28 20 20 20 20 c9  20 22 69 6e 69 74 22 20  |)J(    . "init" |
00006d00  3a 72 65 74 75 72 6e 25  3d a4 69 6e 69 74 6d 6f  |:return%=.initmo|
00006d10  64 65 6d 28 41 24 29 0d  29 54 1a 20 20 20 20 c9  |dem(A$).)T.    .|
00006d20  20 22 72 65 69 6e 69 74  22 3a f2 72 65 69 6e 69  | "reinit":.reini|
00006d30  74 0d 29 5e 23 20 20 20  20 c9 20 22 64 69 61 6c  |t.)^#    . "dial|
00006d40  22 20 3a 72 65 74 75 72  6e 25 3d a4 64 69 61 6c  |" :return%=.dial|
00006d50  28 41 24 29 0d 29 68 23  20 20 20 20 c9 20 22 77  |(A$).)h#    . "w|
00006d60  61 69 74 22 20 3a 72 65  74 75 72 6e 25 3d a4 77  |ait" :return%=.w|
00006d70  61 69 74 28 41 24 29 0d  29 72 1e 20 20 20 20 c9  |ait(A$).)r.    .|
00006d80  20 22 74 72 61 63 65 22  3a f2 6f 70 65 6e 6c 6f  | "trace":.openlo|
00006d90  67 28 41 24 29 0d 29 7c  1b 20 20 20 20 c9 20 22  |g(A$).)|.    . "|
00006da0  73 65 6e 64 22 20 3a f2  73 65 6e 64 28 41 24 29  |send" :.send(A$)|
00006db0  0d 29 86 24 20 20 20 20  c9 20 22 69 70 67 65 74  |.).$    . "ipget|
00006dc0  22 3a 72 65 74 75 72 6e  25 3d a4 69 70 67 65 74  |":return%=.ipget|
00006dd0  28 41 24 29 0d 29 90 1f  20 20 20 20 c9 20 22 6d  |(A$).)..    . "m|
00006de0  61 6b 65 22 20 3a f2 6d  61 6b 65 66 69 6c 65 28  |ake" :.makefile(|
00006df0  41 24 29 0d 29 9a 23 20  20 20 20 c9 20 22 74 61  |A$).).#    . "ta|
00006e00  73 6b 22 20 3a 72 65 74  75 72 6e 25 3d a4 74 61  |sk" :return%=.ta|
00006e10  73 6b 28 41 24 29 0d 29  a4 29 20 20 20 20 c9 20  |sk(A$).).)    . |
00006e20  22 74 61 73 6b 77 69 6e  64 6f 77 22 3a 72 65 74  |"taskwindow":ret|
00006e30  75 72 6e 25 3d a4 74 61  73 6b 77 28 41 24 29 0d  |urn%=.taskw(A$).|
00006e40  29 ae 27 20 20 20 20 c9  20 22 73 6c 65 65 70 22  |).'    . "sleep"|
00006e50  2c 22 70 61 75 73 65 22  3a f2 70 61 75 73 65 28  |,"pause":.pause(|
00006e60  bb 28 41 24 29 29 0d 29  b8 1c 20 20 20 20 c9 20  |.(A$)).)..    . |
00006e70  22 61 6c 61 72 6d 22 3a  f2 61 6c 61 72 6d 28 41  |"alarm":.alarm(A|
00006e80  24 29 0d 29 c2 1a 20 20  20 20 c9 20 22 73 65 74  |$).)..    . "set|
00006e90  22 20 20 3a f2 73 65 74  28 41 24 29 0d 29 cc 1c  |"  :.set(A$).)..|
00006ea0  20 20 20 20 c9 20 22 75  6e 73 65 74 22 3a f2 75  |    . "unset":.u|
00006eb0  6e 73 65 74 28 41 24 29  0d 29 d6 44 20 20 20 20  |nset(A$).).D    |
00006ec0  c9 20 22 3f 65 71 22 2c  22 3f 6e 65 22 2c 22 3f  |. "?eq","?ne","?|
00006ed0  6c 74 22 2c 22 3f 6c 65  22 2c 22 3f 67 74 22 2c  |lt","?le","?gt",|
00006ee0  22 3f 67 65 22 3a 72 65  74 75 72 6e 25 3d a4 74  |"?ge":return%=.t|
00006ef0  65 73 74 65 71 28 42 24  2c 41 24 29 0d 29 e0 26  |esteq(B$,A$).).&|
00006f00  20 20 20 20 c9 20 22 73  74 72 69 6e 67 22 3a 72  |    . "string":r|
00006f10  65 74 75 72 6e 25 3d a4  73 74 72 69 6e 67 28 41  |eturn%=.string(A|
00006f20  24 29 0d 29 ea 23 20 20  20 20 c9 20 22 65 76 61  |$).).#    . "eva|
00006f30  6c 22 20 3a 72 65 74 75  72 6e 25 3d a4 65 76 61  |l" :return%=.eva|
00006f40  6c 28 41 24 29 0d 29 f4  21 20 20 20 20 c9 20 22  |l(A$).).!    . "|
00006f50  6c 61 62 65 6c 22 3a f4  20 69 67 6e 6f 72 65 20  |label":. ignore |
00006f60  6c 61 62 65 6c 73 0d 29  fe 22 20 20 20 20 c9 20  |labels.)."    . |
00006f70  22 67 6f 74 6f 22 20 3a  f2 67 6f 74 6f 28 41 24  |"goto" :.goto(A$|
00006f80  2c 73 74 61 67 65 25 29  0d 2a 08 23 20 20 20 20  |,stage%).*.#    |
00006f90  c9 20 22 63 61 6c 6c 22  20 3a f2 67 6f 73 75 62  |. "call" :.gosub|
00006fa0  28 41 24 2c 73 74 61 67  65 25 29 0d 2a 12 2d 20  |(A$,stage%).*.- |
00006fb0  20 20 20 c9 20 22 72 65  74 75 72 6e 22 3a 72 65  |   . "return":re|
00006fc0  74 75 72 6e 25 3d a4 72  65 74 75 72 6e 28 41 24  |turn%=.return(A$|
00006fd0  2c 73 74 61 67 65 25 29  0d 2a 1c 1b 20 20 20 20  |,stage%).*..    |
00006fe0  c9 20 22 65 63 68 6f 22  20 3a f2 65 63 68 6f 28  |. "echo" :.echo(|
00006ff0  41 24 29 0d 2a 26 23 20  20 20 20 c9 20 22 3f 66  |A$).*&#    . "?f|
00007000  69 6c 65 22 3a 72 65 74  75 72 6e 25 3d a4 66 69  |ile":return%=.fi|
00007010  6c 65 28 41 24 29 0d 2a  30 27 20 20 20 20 c9 20  |le(A$).*0'    . |
00007020  22 3f 6c 69 6e 65 22 3a  72 65 74 75 72 6e 25 3d  |"?line":return%=|
00007030  a4 74 65 73 74 6c 69 6e  65 28 41 24 29 0d 2a 3a  |.testline(A$).*:|
00007040  23 20 20 20 20 c9 20 22  3f 66 72 65 65 22 3a 72  |#    . "?free":r|
00007050  65 74 75 72 6e 25 3d a4  66 72 65 65 28 41 24 29  |eturn%=.free(A$)|
00007060  0d 2a 44 1f 20 20 20 20  c9 20 22 72 65 74 72 79  |.*D.    . "retry|
00007070  22 3a f2 73 65 74 72 65  74 72 79 28 41 24 29 0d  |":.setretry(A$).|
00007080  2a 4e 23 20 20 20 20 c9  20 22 6f 70 65 6e 22 20  |*N#    . "open" |
00007090  3a 72 65 74 75 72 6e 25  3d a4 6f 70 65 6e 28 41  |:return%=.open(A|
000070a0  24 29 0d 2a 58 24 20 20  20 20 c9 20 22 63 6c 6f  |$).*X$    . "clo|
000070b0  73 65 22 3a 72 65 74 75  72 6e 25 3d a4 63 6c 6f  |se":return%=.clo|
000070c0  73 65 28 41 24 29 0d 2a  62 23 20 20 20 20 c9 20  |se(A$).*b#    . |
000070d0  22 72 65 61 64 22 20 3a  72 65 74 75 72 6e 25 3d  |"read" :return%=|
000070e0  a4 72 65 61 64 28 41 24  29 0d 2a 6c 25 20 20 20  |.read(A$).*l%   |
000070f0  20 c9 20 22 77 72 69 74  65 22 20 3a 72 65 74 75  | . "write" :retu|
00007100  72 6e 25 3d a4 77 72 69  74 65 28 41 24 29 0d 2a  |rn%=.write(A$).*|
00007110  76 21 20 20 20 20 c9 20  22 70 74 72 22 20 3a 72  |v!    . "ptr" :r|
00007120  65 74 75 72 6e 25 3d a4  70 74 72 28 41 24 29 0d  |eturn%=.ptr(A$).|
00007130  2a 80 27 20 20 20 20 c9  20 22 6d 6f 76 65 22 20  |*.'    . "move" |
00007140  3a 72 65 74 75 72 6e 25  3d a4 6d 6f 76 65 66 69  |:return%=.movefi|
00007150  6c 65 28 41 24 29 0d 2a  8a 27 20 20 20 20 c9 20  |le(A$).*.'    . |
00007160  22 63 6f 70 79 22 20 3a  72 65 74 75 72 6e 25 3d  |"copy" :return%=|
00007170  a4 63 6f 70 79 66 69 6c  65 28 41 24 29 0d 2a 94  |.copyfile(A$).*.|
00007180  26 20 20 20 20 c9 20 22  61 70 70 65 6e 64 22 3a  |&    . "append":|
00007190  72 65 74 75 72 6e 25 3d  a4 61 70 70 65 6e 64 28  |return%=.append(|
000071a0  41 24 29 0d 2a 9e 26 20  20 20 20 c9 20 22 64 65  |A$).*.&    . "de|
000071b0  6c 65 74 65 22 3a 72 65  74 75 72 6e 25 3d a4 64  |lete":return%=.d|
000071c0  65 6c 65 74 65 28 41 24  29 0d 2a a8 2a 20 20 20  |elete(A$).*.*   |
000071d0  20 c9 20 22 6e 65 77 73  72 61 74 65 22 3a 72 65  | . "newsrate":re|
000071e0  74 75 72 6e 25 3d a4 6e  65 77 73 72 61 74 65 28  |turn%=.newsrate(|
000071f0  41 24 29 0d 2a b2 27 20  20 20 20 c9 20 22 3f 74  |A$).*.'    . "?t|
00007200  61 73 6b 22 3a 72 65 74  75 72 6e 25 3d a4 74 65  |ask":return%=.te|
00007210  73 74 74 61 73 6b 28 41  24 29 0d 2a bc 32 20 20  |sttask(A$).*.2  |
00007220  20 20 c9 20 22 64 6f 70  65 6e 22 2c 22 64 61 74  |  . "dopen","dat|
00007230  61 6f 70 65 6e 22 3a 72  65 74 75 72 6e 25 3d a4  |aopen":return%=.|
00007240  64 61 74 61 6f 70 65 6e  28 41 24 29 0d 2a c6 2d  |dataopen(A$).*.-|
00007250  20 20 20 20 c9 20 22 73  74 61 6d 70 22 3a f2 6c  |    . "stamp":.l|
00007260  6f 67 28 22 28 22 2b c3  28 91 20 81 31 30 30 29  |og("("+.(. .100)|
00007270  2b 22 29 20 22 2b 41 24  29 0d 2a d0 1b 20 20 20  |+") "+A$).*..   |
00007280  20 c9 20 22 65 72 72 6f  72 22 3a f2 68 61 6c 74  | . "error":.halt|
00007290  28 41 24 29 0d 2a da 20  20 20 20 20 c9 20 22 6d  |(A$).*.     . "m|
000072a0  65 73 73 61 67 65 22 3a  f2 6d 65 73 73 61 67 65  |essage":.message|
000072b0  28 41 24 29 0d 2a e4 1e  20 20 20 20 c9 20 22 6d  |(A$).*..    . "m|
000072c0  65 6e 75 22 20 3a f2 6d  65 6e 75 64 65 66 28 41  |enu" :.menudef(A|
000072d0  24 29 0d 2a ee 1b 20 20  20 20 c9 20 22 6c 69 73  |$).*..    . "lis|
000072e0  74 22 20 3a f2 6c 69 73  74 28 41 24 29 0d 2a f8  |t" :.list(A$).*.|
000072f0  25 20 20 20 20 c9 20 22  69 63 6f 6e 22 3a 72 65  |%    . "icon":re|
00007300  74 75 72 6e 25 3d a4 69  63 6f 6e 62 61 72 28 41  |turn%=.iconbar(A|
00007310  24 29 0d 2b 02 2a 20 20  20 20 c9 20 22 61 6e 61  |$).+.*    . "ana|
00007320  6c 79 73 65 22 2c 22 61  6e 61 6c 79 7a 65 22 3a  |lyse","analyze":|
00007330  f2 61 6e 61 6c 79 73 65  28 41 24 29 0d 2b 0c 1b  |.analyse(A$).+..|
00007340  20 20 20 20 c9 20 22 68  65 6c 70 22 20 3a f2 68  |    . "help" :.h|
00007350  65 6c 70 28 41 24 29 0d  2b 16 21 20 20 20 20 c9  |elp(A$).+.!    .|
00007360  20 22 65 76 65 6e 74 22  3a f2 65 76 65 6e 74 6f  | "event":.evento|
00007370  6e 6f 66 66 28 41 24 29  0d 2b 20 17 20 20 20 20  |noff(A$).+ .    |
00007380  c9 20 22 73 74 6f 70 22  20 3a f2 73 74 6f 70 0d  |. "stop" :.stop.|
00007390  2b 2a 26 20 20 20 20 c9  20 22 71 75 69 74 22 20  |+*&    . "quit" |
000073a0  3a f2 71 75 69 74 28 a4  6d 73 67 30 28 22 51 75  |:.quit(.msg0("Qu|
000073b0  69 74 22 29 29 0d 2b 34  17 20 20 20 20 c9 20 22  |it")).+4.    . "|
000073c0  65 78 69 74 22 20 3a f2  65 78 69 74 0d 2b 3e 1c  |exit" :.exit.+>.|
000073d0  20 20 20 20 c9 20 22 69  6e 70 75 74 22 3a f2 69  |    . "input":.i|
000073e0  6e 70 75 74 28 41 24 29  0d 2b 48 24 20 20 20 20  |nput(A$).+H$    |
000073f0  c9 20 22 6f 73 63 6c 69  22 3a 72 65 74 75 72 6e  |. "oscli":return|
00007400  25 3d a4 6f 73 63 6c 69  28 41 24 29 0d 2b 52 1f  |%=.oscli(A$).+R.|
00007410  20 20 20 20 7f 3a f2 6c  6f 67 28 a4 6d 73 67 30  |    .:.log(.msg0|
00007420  28 22 42 61 64 43 6f 6d  22 29 29 0d 2b 5c 07 20  |("BadCom")).+\. |
00007430  20 cb 0d 2b 66 05 cd 0d  2b 70 41 e7 72 65 74 75  | ..+f...+pA.retu|
00007440  72 6e 25 3c 30 8c f2 73  65 74 76 28 22 24 73 74  |rn%<0..setv("$st|
00007450  61 74 75 73 22 2c 72 65  74 75 72 6e 24 29 8b f2  |atus",return$)..|
00007460  73 65 74 76 28 22 24 73  74 61 74 75 73 22 2c c3  |setv("$status",.|
00007470  72 65 74 75 72 6e 25 29  0d 2b 7a 05 ce 0d 2b 84  |return%).+z...+.|
00007480  0c 3d 72 65 74 75 72 6e  25 0d 2b 8e 04 0d 2b 98  |.=return%.+...+.|
00007490  0e dd f2 65 63 68 6f 28  41 24 29 0d 2b a2 0f ea  |...echo(A$).+...|
000074a0  42 24 2c 73 25 3a 73 25  3d 30 0d 2b ac 05 f5 0d  |B$,s%:s%=0.+....|
000074b0  2b b6 13 20 20 42 24 3d  a4 70 61 72 61 6d 28 41  |+..  B$=.param(A|
000074c0  24 29 0d 2b c0 12 20 20  e7 c0 42 24 2c 31 29 3d  |$).+..  ..B$,1)=|
000074d0  22 2f 22 8c 0d 2b ca 11  20 20 20 20 c8 8e c0 42  |"/"..+..    ...B|
000074e0  24 2c 33 29 ca 0d 2b d4  15 20 20 20 20 20 20 c9  |$,3)..+..      .|
000074f0  22 2f 73 74 22 3a 73 25  3d b9 0d 2b de 15 20 20  |"/st":s%=..+..  |
00007500  20 20 20 20 c9 22 2f 6c  6f 22 3a 73 25 3d 30 0d  |    ."/lo":s%=0.|
00007510  2b e8 24 20 20 20 20 20  20 c9 22 2f 64 61 22 3a  |+.$      ."/da":|
00007520  41 24 3d 22 22 22 22 2b  91 24 2b 22 22 22 20 22  |A$=""""+.$+""" "|
00007530  2b 41 24 0d 2b f2 09 20  20 20 20 cb 0d 2b fc 09  |+A$.+..    ..+..|
00007540  20 20 20 20 cc 0d 2c 06  0c 20 20 20 20 e7 73 25  |    ..,..    .s%|
00007550  8c 0d 2c 10 1a 20 20 20  20 20 20 f2 70 72 69 6e  |..,..      .prin|
00007560  74 28 22 22 2c 42 24 2c  22 22 29 0d 2c 1a 0b 20  |t("",B$,"").,.. |
00007570  20 20 20 20 20 cc 0d 2c  24 16 20 20 20 20 20 20  |     ..,$.      |
00007580  f2 73 74 72 5f 74 78 74  28 42 24 29 0d 2c 2e 2d  |.str_txt(B$).,.-|
00007590  20 20 20 20 20 20 e7 28  64 65 62 75 67 25 80 33  |      .(debug%.3|
000075a0  29 3c 3e 30 80 65 72 72  43 25 3c 3e 30 20 8c d5  |)<>0.errC%<>0 ..|
000075b0  23 65 72 72 43 25 2c 42  24 0d 2c 38 09 20 20 20  |#errC%,B$.,8.   |
000075c0  20 cd 0d 2c 42 07 20 20  cd 0d 2c 4c 0a fd 41 24  | ..,B.  ..,L..A$|
000075d0  3d 22 22 0d 2c 56 05 e1  0d 2c 60 04 0d 2c 6a 0f  |="".,V...,`..,j.|
000075e0  dd a4 63 6c 61 69 6d 28  41 24 29 0d 2c 74 12 ea  |..claim(A$).,t..|
000075f0  4a 25 2c 74 25 2c 64 25  2c 74 72 79 25 0d 2c 7e  |J%,t%,d%,try%.,~|
00007600  24 f2 70 72 69 6e 74 28  a4 6d 73 67 30 28 22 44  |$.print(.msg0("D|
00007610  65 76 43 6c 61 69 6d 22  29 2c 22 20 22 2c 22 22  |evClaim")," ",""|
00007620  29 0d 2c 88 23 74 25 3d  bb a4 70 61 72 61 6d 28  |).,.#t%=..param(|
00007630  41 24 29 3a e7 74 25 3c  30 20 8c 74 25 3d 72 65  |A$):.t%<0 .t%=re|
00007640  74 72 79 25 0d 2c 92 23  64 25 3d bb a4 70 61 72  |try%.,.#d%=..par|
00007650  61 6d 28 41 24 29 3a e7  64 25 3c 32 20 8c 64 25  |am(A$):.d%<2 .d%|
00007660  3d 64 65 6c 61 79 25 0d  2c 9c 0a 74 72 79 25 3d  |=delay%.,..try%=|
00007670  31 0d 2c a6 05 f5 0d 2c  b0 10 f2 63 6c 61 69 6d  |1.,....,...claim|
00007680  64 65 76 69 63 65 0d 2c  ba 11 e7 64 65 76 69 63  |device.,...devic|
00007690  65 25 3c 3e 30 20 8c 0d  2c c4 19 20 20 4a 25 3d  |e%<>0 ..,..  J%=|
000076a0  a4 64 28 31 37 2c 70 6f  72 74 25 2c 30 2c 30 29  |.d(17,port%,0,0)|
000076b0  0d 2c ce 34 20 20 4a 25  3d a4 64 28 31 33 2c 70  |.,.4  J%=.d(13,p|
000076c0  6f 72 74 25 2c 73 70 65  65 64 25 2c 30 29 3a e7  |ort%,speed%,0):.|
000076d0  4a 25 3c 3e 73 70 65 65  64 25 8c 73 70 65 65 64  |J%<>speed%.speed|
000076e0  25 3d 4a 25 0d 2c d8 34  20 20 4a 25 3d a4 64 28  |%=J%.,.4  J%=.d(|
000076f0  31 34 2c 70 6f 72 74 25  2c 73 70 65 65 64 25 2c  |14,port%,speed%,|
00007700  30 29 3a e7 4a 25 3c 3e  73 70 65 65 64 25 8c 73  |0):.J%<>speed%.s|
00007710  70 65 65 64 25 3d 4a 25  0d 2c e2 19 20 20 4a 25  |peed%=J%.,..  J%|
00007720  3d a4 64 28 31 35 2c 70  6f 72 74 25 2c 30 2c 30  |=.d(15,port%,0,0|
00007730  29 0d 2c ec 19 20 20 4a  25 3d a4 64 28 31 36 2c  |).,..  J%=.d(16,|
00007740  70 6f 72 74 25 2c 31 2c  30 29 0d 2c f6 18 20 20  |port%,1,0).,..  |
00007750  4a 25 3d a4 64 28 36 2c  70 6f 72 74 25 2c 30 2c  |J%=.d(6,port%,0,|
00007760  30 29 0d 2d 00 18 20 20  4a 25 3d a4 64 28 37 2c  |0).-..  J%=.d(7,|
00007770  70 6f 72 74 25 2c 30 2c  30 29 0d 2d 0a 05 cc 0d  |port%,0,0).-....|
00007780  2d 14 1f 20 20 f2 70 61  75 73 65 28 64 25 29 3a  |-..  .pause(d%):|
00007790  e7 74 25 3e 30 20 8c 74  72 79 25 2b 3d 31 0d 2d  |.t%>0 .try%+=1.-|
000077a0  1e 05 cd 0d 2d 28 22 fd  64 65 76 69 63 65 25 3c  |....-(".device%<|
000077b0  3e 30 20 84 74 72 79 25  3e 74 25 20 84 73 74 6f  |>0 .try%>t% .sto|
000077c0  70 25 3c 3e 30 0d 2d 32  0c 3d 64 65 76 69 63 65  |p%<>0.-2.=device|
000077d0  25 0d 2d 3c 04 0d 2d 46  0d dd f2 72 65 6c 65 61  |%.-<..-F...relea|
000077e0  73 65 0d 2d 50 07 ea 4a  25 0d 2d 5a 0f e7 20 64  |se.-P..J%.-Z.. d|
000077f0  65 76 69 63 65 25 20 8c  0d 2d 64 31 20 20 f2 70  |evice% ..-d1  .p|
00007800  72 69 6e 74 28 a4 6d 73  67 30 28 22 44 65 76 52  |rint(.msg0("DevR|
00007810  65 6c 22 29 2c a4 6d 73  67 30 28 22 44 65 76 44  |el"),.msg0("DevD|
00007820  72 6f 70 22 29 2c 22 22  29 0d 2d 6e 18 20 20 4a  |rop"),"").-n.  J|
00007830  25 3d a4 64 28 38 2c 70  6f 72 74 25 2c 30 2c 30  |%=.d(8,port%,0,0|
00007840  29 0d 2d 78 19 20 20 4a  25 3d a4 64 28 31 38 2c  |).-x.  J%=.d(18,|
00007850  70 6f 72 74 25 2c 30 2c  30 29 0d 2d 82 0f 20 20  |port%,0,0).-..  |
00007860  64 65 76 69 63 65 25 3d  a3 0d 2d 8c 05 cd 0d 2d  |device%=..-....-|
00007870  96 05 e1 0d 2d a0 04 0d  2d aa 13 dd a4 69 6e 69  |....-...-....ini|
00007880  74 6d 6f 64 65 6d 28 41  24 29 0d 2d b4 0f ea 42  |tmodem(A$).-...B|
00007890  24 2c 68 25 3a 68 25 3d  30 0d 2d be 14 e7 a4 64  |$,h%:h%=0.-....d|
000078a0  72 6f 70 6c 69 6e 65 73  3c 3e 30 20 8c 0d 2d c8  |roplines<>0 ..-.|
000078b0  24 20 20 f2 70 72 69 6e  74 28 a4 6d 73 67 30 28  |$  .print(.msg0(|
000078c0  22 44 65 76 49 6e 69 74  22 29 2c 22 22 2c 22 22  |"DevInit"),"",""|
000078d0  29 0d 2d d2 1c 20 20 e7  41 24 3d 22 22 8c 41 24  |).-..  .A$="".A$|
000078e0  3d a4 76 76 28 22 24 69  6e 69 74 22 29 0d 2d dc  |=.vv("$init").-.|
000078f0  07 20 20 f5 0d 2d e6 15  20 20 20 20 42 24 3d a4  |.  ..-..    B$=.|
00007900  70 61 72 61 6d 28 41 24  29 0d 2d f0 29 20 20 20  |param(A$).-.)   |
00007910  20 f2 70 72 69 6e 74 28  22 22 2c a4 6d 73 67 31  | .print("",.msg1|
00007920  28 22 53 65 6e 64 69 6e  67 22 2c 42 24 29 2c 22  |("Sending",B$),"|
00007930  22 29 0d 2d fa 2c 20 20  20 20 f2 73 65 6e 64 28  |").-.,    .send(|
00007940  42 24 29 3a 68 25 3d a4  67 65 74 34 73 28 22 4f  |B$):h%=.get4s("O|
00007950  4b 22 2c 22 22 2c 22 22  2c 22 22 2c 35 29 0d 2e  |K","","","",5)..|
00007960  04 11 20 20 fd 41 24 3d  22 22 84 68 25 3d 30 0d  |..  .A$="".h%=0.|
00007970  2e 0e 05 cd 0d 2e 18 07  3d 68 25 0d 2e 22 04 0d  |........=h%.."..|
00007980  2e 2c 0c dd f2 72 65 69  6e 69 74 0d 2e 36 07 ea  |.,...reinit..6..|
00007990  4a 25 0d 2e 40 32 4a 25  3d a4 64 28 31 33 2c 70  |J%..@2J%=.d(13,p|
000079a0  6f 72 74 25 2c 73 70 65  65 64 25 2c 30 29 3a e7  |ort%,speed%,0):.|
000079b0  4a 25 3c 3e 73 70 65 65  64 25 8c 73 70 65 65 64  |J%<>speed%.speed|
000079c0  25 3d 4a 25 0d 2e 4a 32  4a 25 3d a4 64 28 31 34  |%=J%..J2J%=.d(14|
000079d0  2c 70 6f 72 74 25 2c 73  70 65 65 64 25 2c 30 29  |,port%,speed%,0)|
000079e0  3a e7 4a 25 3c 3e 73 70  65 65 64 25 8c 73 70 65  |:.J%<>speed%.spe|
000079f0  65 64 25 3d 4a 25 0d 2e  54 17 4a 25 3d a4 64 28  |ed%=J%..T.J%=.d(|
00007a00  31 35 2c 70 6f 72 74 25  2c 30 2c 30 29 0d 2e 5e  |15,port%,0,0)..^|
00007a10  17 4a 25 3d a4 64 28 31  36 2c 70 6f 72 74 25 2c  |.J%=.d(16,port%,|
00007a20  31 2c 30 29 0d 2e 68 16  4a 25 3d a4 64 28 38 2c  |1,0)..h.J%=.d(8,|
00007a30  70 6f 72 74 25 2c 33 2c  30 29 0d 2e 72 05 e1 0d  |port%,3,0)..r...|
00007a40  2e 7c 04 0d 2e 86 12 dd  f2 73 65 74 72 65 74 72  |.|.......setretr|
00007a50  79 28 41 24 29 0d 2e 90  07 ea 42 24 0d 2e 9a 11  |y(A$).....B$....|
00007a60  42 24 3d a4 70 61 72 61  6d 28 41 24 29 0d 2e a4  |B$=.param(A$)...|
00007a70  16 e7 bb 42 24 3e 30 20  8c 72 65 74 72 79 25 3d  |...B$>0 .retry%=|
00007a80  bb 42 24 0d 2e ae 16 e7  bb 41 24 3e 32 20 8c 64  |.B$......A$>2 .d|
00007a90  65 6c 61 79 25 3d bb 41  24 0d 2e b8 05 e1 0d 2e  |elay%=.A$.......|
00007aa0  c2 04 0d 2e cc 12 dd f2  75 73 65 72 69 63 6f 6e  |........usericon|
00007ab0  28 41 24 29 0d 2e d6 1c  f2 75 70 64 5f 69 63 6f  |(A$).....upd_ico|
00007ac0  6e 28 73 74 61 74 75 73  25 2c 31 31 2c 41 24 29  |n(status%,11,A$)|
00007ad0  0d 2e e0 22 f2 73 65 74  73 68 61 64 65 64 28 73  |...".setshaded(s|
00007ae0  74 61 74 75 73 25 2c 31  31 2c 28 41 24 3d 22 22  |tatus%,11,(A$=""|
00007af0  29 29 0d 2e ea 05 e1 0d  2e f4 04 0d 2e fe 14 dd  |))..............|
00007b00  a4 64 69 61 6c 28 6e 75  6d 6c 69 73 74 24 29 0d  |.dial(numlist$).|
00007b10  2f 08 29 ea 66 6c 61 67  25 2c 72 25 2c 64 25 2c  |/.).flag%,r%,d%,|
00007b20  6e 6f 64 25 2c 6e 6f 63  25 2c 62 75 73 25 2c 64  |nod%,noc%,bus%,d|
00007b30  63 24 2c 42 24 2c 43 24  0d 2f 12 16 66 6c 61 67  |c$,B$,C$./..flag|
00007b40  25 3d 30 3a 64 63 24 3d  22 41 54 44 54 22 0d 2f  |%=0:dc$="ATDT"./|
00007b50  1c 2f 72 25 3d 72 65 74  72 79 25 3a 64 25 3d 64  |./r%=retry%:d%=d|
00007b60  65 6c 61 79 25 3a 6e 6f  64 25 3d 64 25 3a 6e 6f  |elay%:nod%=d%:no|
00007b70  63 25 3d 64 25 3a 62 75  73 25 3d 64 25 0d 2f 26  |c%=d%:bus%=d%./&|
00007b80  1e f2 75 73 65 72 69 63  6f 6e 28 a4 6d 73 67 30  |..usericon(.msg0|
00007b90  28 22 52 65 64 69 61 6c  22 29 29 0d 2f 30 05 f5  |("Redial"))./0..|
00007ba0  0d 2f 3a 19 20 20 42 24  3d a4 70 61 72 61 6d 28  |./:.  B$=.param(|
00007bb0  6e 75 6d 6c 69 73 74 24  29 0d 2f 44 12 20 20 e7  |numlist$)./D.  .|
00007bc0  c0 42 24 2c 31 29 3d 22  2f 22 8c 0d 2f 4e 21 20  |.B$,1)="/"../N! |
00007bd0  20 20 20 20 20 43 24 3d  a4 76 61 6c 75 65 28 42  |     C$=.value(B|
00007be0  24 29 3a c8 8e c0 42 24  2c 33 29 ca 0d 2f 58 25  |$):...B$,3)../X%|
00007bf0  20 20 20 20 20 20 20 20  c9 22 72 65 74 22 3a 72  |        ."ret":r|
00007c00  25 3d bb 43 24 3a e7 72  25 3c 31 20 8c 72 25 3d  |%=.C$:.r%<1 .r%=|
00007c10  31 0d 2f 62 25 20 20 20  20 20 20 20 20 c9 22 64  |1./b%        ."d|
00007c20  65 6c 22 3a 64 25 3d bb  43 24 3a e7 64 25 3c 32  |el":d%=.C$:.d%<2|
00007c30  20 8c 64 25 3d 32 0d 2f  6c 25 20 20 20 20 20 20  | .d%=2./l%      |
00007c40  20 20 20 20 6e 6f 64 25  3d 64 25 3a 6e 6f 63 25  |    nod%=d%:noc%|
00007c50  3d 64 25 3a 62 75 73 25  3d 64 25 0d 2f 76 1b 20  |=d%:bus%=d%./v. |
00007c60  20 20 20 20 20 20 20 c9  22 6e 6f 63 22 3a 6e 6f  |       ."noc":no|
00007c70  63 25 3d bb 43 24 0d 2f  80 1b 20 20 20 20 20 20  |c%=.C$./..      |
00007c80  20 20 c9 22 6e 6f 64 22  3a 6e 6f 64 25 3d bb 43  |  ."nod":nod%=.C|
00007c90  24 0d 2f 8a 23 20 20 20  20 20 20 20 20 c9 22 6e  |$./.#        ."n|
00007ca0  6f 74 22 2c 22 70 75 6c  22 3a 64 63 24 3d 22 41  |ot","pul":dc$="A|
00007cb0  54 44 50 22 0d 2f 94 23  20 20 20 20 20 20 20 20  |TDP"./.#        |
00007cc0  c9 22 74 6f 6e 22 2c 22  6e 6f 70 22 3a 64 63 24  |."ton","nop":dc$|
00007cd0  3d 22 41 54 44 54 22 0d  2f 9e 1b 20 20 20 20 20  |="ATDT"./..     |
00007ce0  20 20 20 c9 22 62 75 73  22 3a 62 75 73 25 3d bb  |   ."bus":bus%=.|
00007cf0  43 24 0d 2f a8 0b 20 20  20 20 20 20 cb 0d 2f b2  |C$./..      ../.|
00007d00  09 20 20 20 20 cc 0d 2f  bc 22 20 20 20 20 61 74  |.    ../."    at|
00007d10  74 65 6d 70 74 25 3d 31  3a 66 6c 61 67 25 3d 30  |tempt%=1:flag%=0|
00007d20  3a 6e 75 6d 24 3d 42 24  0d 2f c6 09 20 20 20 20  |:num$=B$./..    |
00007d30  f5 0d 2f d0 4b 20 20 20  20 20 20 f2 70 72 69 6e  |../.K      .prin|
00007d40  74 28 a4 6d 73 67 31 28  22 44 69 61 6c 6c 69 6e  |t(.msg1("Diallin|
00007d50  67 22 2c 6e 75 6d 24 29  2c a4 6d 73 67 32 28 22  |g",num$),.msg2("|
00007d60  44 61 74 74 65 6d 70 74  22 2c c3 61 74 74 65 6d  |Dattempt",.attem|
00007d70  70 74 25 2c c3 72 25 29  2c 22 22 29 0d 2f da 25  |pt%,.r%),"")./.%|
00007d80  20 20 20 20 20 20 f2 73  65 6e 64 28 64 63 24 2b  |      .send(dc$+|
00007d90  6e 75 6d 24 29 3a 61 74  74 65 6d 70 74 25 2b 3d  |num$):attempt%+=|
00007da0  31 0d 2f e4 55 20 20 20  20 20 20 72 65 74 75 72  |1./.U      retur|
00007db0  6e 25 3d a4 67 65 74 34  73 28 a4 76 76 28 22 24  |n%=.get4s(.vv("$|
00007dc0  63 6f 6e 6e 22 29 2c a4  76 76 28 22 24 62 75 73  |conn"),.vv("$bus|
00007dd0  79 22 29 2c a4 76 76 28  22 24 6e 6f 63 61 72 72  |y"),.vv("$nocarr|
00007de0  22 29 2c a4 76 76 28 22  24 6e 6f 64 69 61 6c 22  |"),.vv("$nodial"|
00007df0  29 2c 31 32 30 29 0d 2f  ee 14 20 20 20 20 20 20  |),120)./..      |
00007e00  e7 73 74 6f 70 25 3d 30  20 8c 0d 2f f8 16 20 20  |.stop%=0 ../..  |
00007e10  20 20 20 20 e7 72 65 64  69 61 6c 25 3d b9 20 8c  |    .redial%=. .|
00007e20  0d 30 02 42 20 20 20 20  20 20 20 20 41 25 3d a4  |.0.B        A%=.|
00007e30  64 72 6f 70 6c 69 6e 65  73 3a c8 95 20 a4 64 28  |droplines:.. .d(|
00007e40  35 2c 70 6f 72 74 25 2c  30 2c 30 29 3e 30 3a 4a  |5,port%,0,0)>0:J|
00007e50  25 3d a4 72 65 63 3a ce  3a 72 65 64 69 61 6c 25  |%=.rec:.:redial%|
00007e60  3d a3 0d 30 0c 0d 20 20  20 20 20 20 20 20 cc 0d  |=..0..        ..|
00007e70  30 16 17 20 20 20 20 20  20 20 20 c8 8e 72 65 74  |0..        ..ret|
00007e80  75 72 6e 25 20 ca 0d 30  20 39 20 20 20 20 20 20  |urn% ..0 9      |
00007e90  20 20 20 20 c9 20 31 3a  f2 70 72 69 6e 74 28 22  |    . 1:.print("|
00007ea0  22 2c a4 6d 73 67 30 28  22 44 63 6f 6e 6e 65 63  |",.msg0("Dconnec|
00007eb0  74 22 29 2c 22 22 29 3a  66 6c 61 67 25 3d 31 0d  |t"),""):flag%=1.|
00007ec0  30 2a 3b 20 20 20 20 20  20 20 20 20 20 c9 20 32  |0*;          . 2|
00007ed0  3a f2 70 72 69 6e 74 28  22 22 2c a4 6d 73 67 30  |:.print("",.msg0|
00007ee0  28 22 44 62 75 73 79 22  29 2c 22 22 29 3a f2 70  |("Dbusy"),""):.p|
00007ef0  61 75 73 65 28 62 75 73  25 29 0d 30 34 39 20 20  |ause(bus%).049  |
00007f00  20 20 20 20 20 20 20 20  c9 20 33 3a f2 70 72 69  |        . 3:.pri|
00007f10  6e 74 28 22 22 2c a4 6d  73 67 30 28 22 44 6e 63  |nt("",.msg0("Dnc|
00007f20  22 29 2c 22 22 29 3a f2  70 61 75 73 65 28 6e 6f  |"),""):.pause(no|
00007f30  63 25 29 0d 30 3e 39 20  20 20 20 20 20 20 20 20  |c%).0>9         |
00007f40  20 c9 20 34 3a f2 70 72  69 6e 74 28 22 22 2c a4  | . 4:.print("",.|
00007f50  6d 73 67 30 28 22 44 6e  64 22 29 2c 22 22 29 3a  |msg0("Dnd"),""):|
00007f60  f2 70 61 75 73 65 28 6e  6f 64 25 29 0d 30 48 34  |.pause(nod%).0H4|
00007f70  20 20 20 20 20 20 20 20  20 20 c9 20 32 2c 33 2c  |          . 2,3,|
00007f80  34 3a c8 95 20 a4 64 28  35 2c 70 6f 72 74 25 2c  |4:.. .d(5,port%,|
00007f90  30 2c 30 29 3e 30 3a 4a  25 3d a4 72 65 63 3a ce  |0,0)>0:J%=.rec:.|
00007fa0  0d 30 52 34 20 20 20 20  20 20 20 20 20 20 7f f2  |.0R4          ..|
00007fb0  70 72 69 6e 74 28 22 22  2c a4 6d 73 67 30 28 22  |print("",.msg0("|
00007fc0  44 6e 72 22 29 2c 22 22  29 3a f2 70 61 75 73 65  |Dnr"),""):.pause|
00007fd0  28 64 25 29 0d 30 5c 0d  20 20 20 20 20 20 20 20  |(d%).0\.        |
00007fe0  cb 0d 30 66 0b 20 20 20  20 20 20 cd 0d 30 70 0b  |..0f.      ..0p.|
00007ff0  20 20 20 20 20 20 cc 0d  30 7a 36 20 20 20 20 20  |      ..0z6     |
00008000  20 41 25 3d a4 64 72 6f  70 6c 69 6e 65 73 3a f4  | A%=.droplines:.|
00008010  20 63 61 6e 63 65 6c 20  61 20 64 69 61 6c 20 69  | cancel a dial i|
00008020  66 20 73 74 6f 70 20 61  63 74 69 76 65 0d 30 84  |f stop active.0.|
00008030  09 20 20 20 20 cd 0d 30  8e 31 20 20 fd 20 61 74  |.    ..0.1  . at|
00008040  74 65 6d 70 74 25 3e 72  25 20 84 73 74 6f 70 25  |tempt%>r% .stop%|
00008050  3c 3e 30 20 84 66 6c 61  67 25 3e 30 20 84 64 65  |<>0 .flag%>0 .de|
00008060  76 69 63 65 25 3d 30 0d  30 98 43 20 20 e7 66 6c  |vice%=0.0.C  .fl|
00008070  61 67 25 3d 30 20 80 6e  75 6d 6c 69 73 74 24 3e  |ag%=0 .numlist$>|
00008080  22 22 20 8c f2 70 72 69  6e 74 28 a4 6d 73 67 30  |"" ..print(.msg0|
00008090  28 22 44 6e 65 78 74 22  29 2c 22 22 2c 22 22 29  |("Dnext"),"","")|
000080a0  3a f2 70 61 75 73 65 28  31 29 0d 30 a2 07 20 20  |:.pause(1).0..  |
000080b0  cd 0d 30 ac 30 fd 20 6e  75 6d 6c 69 73 74 24 3d  |..0.0. numlist$=|
000080c0  22 22 20 84 73 74 6f 70  25 3c 3e 30 20 84 20 66  |"" .stop%<>0 . f|
000080d0  6c 61 67 25 3e 30 20 84  64 65 76 69 63 65 25 3d  |lag%>0 .device%=|
000080e0  30 0d 30 b6 11 f2 75 73  65 72 69 63 6f 6e 28 22  |0.0...usericon("|
000080f0  22 29 0d 30 c0 0a 3d 66  6c 61 67 25 0d 30 ca 04  |").0..=flag%.0..|
00008100  0d 30 d4 0e dd a4 77 61  69 74 28 41 24 29 0d 30  |.0....wait(A$).0|
00008110  de 24 ea 6c 25 2c 6d 25  2c 64 25 2c 73 25 2c 72  |.$.l%,m%,d%,s%,r|
00008120  65 74 75 72 6e 25 2c 42  24 2c 43 24 2c 71 75 61  |eturn%,B$,C$,qua|
00008130  6c 25 0d 30 e8 1d 64 25  3d 36 30 30 3a 74 67 65  |l%.0..d%=600:tge|
00008140  74 25 3d 2d 31 3a 72 65  74 75 72 6e 25 3d 30 0d  |t%=-1:return%=0.|
00008150  30 f2 1a f5 42 24 3d a4  70 61 72 61 6d 28 41 24  |0...B$=.param(A$|
00008160  29 3a 71 75 61 6c 25 3d  a3 0d 30 fc 10 e7 c0 42  |):qual%=..0....B|
00008170  24 2c 31 29 3d 22 2f 22  8c 0d 31 06 1b 20 20 43  |$,1)="/"..1..  C|
00008180  24 3d a4 76 61 6c 75 65  28 42 24 29 3a 71 75 61  |$=.value(B$):qua|
00008190  6c 25 3d b9 0d 31 10 0f  20 20 c8 8e c0 42 24 2c  |l%=..1..  ...B$,|
000081a0  32 29 ca 0d 31 1a 1e 20  20 c9 22 65 76 22 3a 72  |2)..1..  ."ev":r|
000081b0  65 74 75 72 6e 25 3d a4  77 61 69 74 65 76 65 6e  |eturn%=.waiteven|
000081c0  74 0d 31 24 18 20 20 c9  22 64 65 22 2c 22 64 65  |t.1$.  ."de","de|
000081d0  6c 22 3a 64 25 3d bb 43  24 0d 31 2e 40 20 20 c9  |l":d%=.C$.1.@  .|
000081e0  22 6e 61 22 2c 22 69 64  22 3a e3 6c 25 3d 30 b8  |"na","id":.l%=0.|
000081f0  74 77 6d 61 78 25 3a e7  43 24 3d 74 77 6e 61 6d  |twmax%:.C$=twnam|
00008200  65 24 28 6c 25 29 8c 74  67 65 74 25 3d 6c 25 3a  |e$(l%).tget%=l%:|
00008210  6c 25 3d 74 77 6d 61 78  25 0d 31 38 2f 20 20 20  |l%=twmax%.18/   |
00008220  20 ed 3a e7 74 67 65 74  25 3c 30 20 8c f2 68 61  | .:.tget%<0 ..ha|
00008230  6c 74 28 a4 6d 73 67 30  28 22 45 62 61 64 74 61  |lt(.msg0("Ebadta|
00008240  73 6b 22 29 29 3a 3d 30  0d 31 42 23 20 20 7f 3a  |sk")):=0.1B#  .:|
00008250  f2 68 61 6c 74 28 a4 6d  73 67 30 28 22 45 62 61  |.halt(.msg0("Eba|
00008260  64 77 61 69 74 22 29 29  3a 3d 30 0d 31 4c 07 20  |dwait")):=0.1L. |
00008270  20 cb 0d 31 56 05 cd 0d  31 60 0c fd 71 75 61 6c  | ..1V...1`..qual|
00008280  25 3d a3 0d 31 6a 10 e7  72 65 74 75 72 6e 25 3d  |%=..1j..return%=|
00008290  30 20 8c 0d 31 74 29 20  20 e7 64 25 3d 30 8c f2  |0 ..1t)  .d%=0..|
000082a0  68 61 6c 74 28 a4 6d 73  67 31 28 22 45 62 61 64  |halt(.msg1("Ebad|
000082b0  64 65 6c 22 2c 41 24 29  29 3a 3d 30 0d 31 7e 1b  |del",A$)):=0.1~.|
000082c0  20 20 73 34 24 28 29 3d  22 22 3a 6c 25 3d 30 3a  |  s4$()="":l%=0:|
000082d0  43 24 3d 22 22 3a f5 0d  31 88 31 20 20 20 20 73  |C$="":..1.1    s|
000082e0  34 24 28 6c 25 29 3d 42  24 3a 43 24 2b 3d 42 24  |4$(l%)=B$:C$+=B$|
000082f0  2b 22 2f 22 3a 6c 25 2b  3d 31 3a 42 24 3d a4 70  |+"/":l%+=1:B$=.p|
00008300  61 72 61 6d 28 41 24 29  0d 31 92 1f 20 20 fd 42  |aram(A$).1..  .B|
00008310  24 3d 22 22 84 6c 25 3d  34 3a 43 24 3d c0 43 24  |$="".l%=4:C$=.C$|
00008320  2c a9 43 24 2d 31 29 0d  31 9c 36 20 20 f2 70 72  |,.C$-1).1.6  .pr|
00008330  69 6e 74 28 a4 6d 73 67  31 28 22 57 61 69 74 22  |int(.msg1("Wait"|
00008340  2c 43 24 29 2c a4 6d 73  67 31 28 22 54 69 6d 65  |,C$),.msg1("Time|
00008350  6f 75 74 22 2c c3 64 25  29 2c 22 22 29 0d 31 a6  |out",.d%),"").1.|
00008360  10 20 20 e7 74 67 65 74  25 3c 30 20 8c 0d 31 b0  |.  .tget%<0 ..1.|
00008370  36 20 20 20 20 72 65 74  75 72 6e 25 3d a4 67 65  |6    return%=.ge|
00008380  74 34 73 28 73 34 24 28  30 29 2c 73 34 24 28 31  |t4s(s4$(0),s4$(1|
00008390  29 2c 73 34 24 28 32 29  2c 73 34 24 28 33 29 2c  |),s4$(2),s4$(3),|
000083a0  64 25 29 0d 31 ba 07 20  20 cc 0d 31 c4 36 20 20  |d%).1..  ..1.6  |
000083b0  20 20 72 65 74 75 72 6e  25 3d a4 67 65 74 74 77  |  return%=.gettw|
000083c0  28 73 34 24 28 30 29 2c  73 34 24 28 31 29 2c 73  |(s4$(0),s4$(1),s|
000083d0  34 24 28 32 29 2c 73 34  24 28 33 29 2c 64 25 29  |4$(2),s4$(3),d%)|
000083e0  0d 31 ce 07 20 20 cd 0d  31 d8 61 20 20 e7 20 72  |.1..  ..1.a  . r|
000083f0  65 74 75 72 6e 25 3e 30  20 8c f2 70 72 69 6e 74  |eturn%>0 ..print|
00008400  28 22 22 2c a4 6d 73 67  31 28 22 52 65 63 65 69  |("",.msg1("Recei|
00008410  76 65 64 22 2c 73 34 24  28 72 65 74 75 72 6e 25  |ved",s4$(return%|
00008420  2d 31 29 29 2c 22 22 29  8b f2 70 72 69 6e 74 28  |-1)),"")..print(|
00008430  22 22 2c a4 6d 73 67 30  28 22 54 69 6d 65 64 4f  |"",.msg0("TimedO|
00008440  75 74 22 29 2c 22 22 29  0d 31 e2 05 cd 0d 31 ec  |ut"),"").1....1.|
00008450  0c 3d 72 65 74 75 72 6e  25 0d 31 f6 04 0d 32 00  |.=return%.1...2.|
00008460  0f dd a4 77 61 69 74 65  76 65 6e 74 0d 32 0a 28  |...waitevent.2.(|
00008470  f2 75 70 64 5f 69 63 6f  6e 28 73 74 61 74 75 73  |.upd_icon(status|
00008480  25 2c 37 2c a4 6d 73 67  30 28 22 53 65 6c 65 63  |%,7,.msg0("Selec|
00008490  74 22 29 29 0d 32 14 23  f2 70 72 69 6e 74 28 a4  |t")).2.#.print(.|
000084a0  6d 73 67 30 28 22 57 61  69 74 69 6e 67 22 29 2c  |msg0("Waiting"),|
000084b0  22 20 22 2c 22 22 29 0d  32 1e 1a f5 f2 70 6f 6c  |" ","").2....pol|
000084c0  6c 28 35 30 29 3a fd a4  74 65 73 74 65 76 65 6e  |l(50):..testeven|
000084d0  74 0d 32 28 06 3d 31 0d  32 32 04 0d 32 3c 14 dd  |t.2(.=1.22..2<..|
000084e0  f2 65 76 65 6e 74 6f 6e  6f 66 66 28 41 24 29 0d  |.eventonoff(A$).|
000084f0  32 46 0f ea 61 25 2c 42  24 3a 61 25 3d b9 0d 32  |2F..a%,B$:a%=..2|
00008500  50 12 f5 42 24 3d a4 70  61 72 61 6d 28 41 24 29  |P..B$=.param(A$)|
00008510  0d 32 5a 0d c8 8e c0 42  24 2c 32 29 ca 0d 32 64  |.2Z....B$,2)..2d|
00008520  0e c9 22 2f 65 22 3a 61  25 3d b9 0d 32 6e 0e c9  |.."/e":a%=..2n..|
00008530  22 2f 64 22 3a 61 25 3d  a3 0d 32 78 16 c9 22 74  |"/d":a%=..2x.."t|
00008540  69 22 3a 65 76 65 6e 74  25 28 31 29 3d 61 25 0d  |i":event%(1)=a%.|
00008550  32 82 16 c9 22 6c 69 22  3a 65 76 65 6e 74 25 28  |2..."li":event%(|
00008560  32 29 3d 61 25 0d 32 8c  16 c9 22 74 61 22 3a 65  |2)=a%.2..."ta":e|
00008570  76 65 6e 74 25 28 33 29  3d 61 25 0d 32 96 16 c9  |vent%(3)=a%.2...|
00008580  22 74 77 22 3a 65 76 65  6e 74 25 28 34 29 3d 61  |"tw":event%(4)=a|
00008590  25 0d 32 a0 16 c9 22 69  6e 22 3a 65 76 65 6e 74  |%.2..."in":event|
000085a0  25 28 35 29 3d 61 25 0d  32 aa 16 c9 22 69 63 22  |%(5)=a%.2..."ic"|
000085b0  3a 65 76 65 6e 74 25 28  36 29 3d 61 25 0d 32 b4  |:event%(6)=a%.2.|
000085c0  16 c9 22 66 69 22 3a 65  76 65 6e 74 25 28 37 29  |.."fi":event%(7)|
000085d0  3d 61 25 0d 32 be 16 c9  22 6d 65 22 3a 65 76 65  |=a%.2..."me":eve|
000085e0  6e 74 25 28 38 29 3d 61  25 0d 32 c8 16 c9 22 65  |nt%(8)=a%.2..."e|
000085f0  6f 22 3a 65 76 65 6e 74  25 28 39 29 3d 61 25 0d  |o":event%(9)=a%.|
00008600  32 d2 15 c9 22 61 6c 22  3a 65 76 65 6e 74 25 28  |2..."al":event%(|
00008610  29 3d 61 25 0d 32 dc 05  cb 0d 32 e6 16 fd 41 24  |)=a%.2....2...A$|
00008620  3d 22 22 3a 65 76 65 6e  74 25 28 30 29 3d b9 0d  |="":event%(0)=..|
00008630  32 f0 05 e1 0d 32 fa 04  0d 33 04 36 dd a4 67 65  |2....2...3.6..ge|
00008640  74 74 77 28 74 67 65 74  24 28 30 29 2c 74 67 65  |ttw(tget$(0),tge|
00008650  74 24 28 31 29 2c 74 67  65 74 24 28 32 29 2c 74  |t$(1),tget$(2),t|
00008660  67 65 74 24 28 33 29 2c  77 61 69 74 25 29 0d 33  |get$(3),wait%).3|
00008670  0e 0b ea 73 74 25 2c 72  25 0d 33 18 2d 72 25 3d  |...st%,r%.3.-r%=|
00008680  30 3a 74 77 67 66 6c 61  67 25 3d 30 3a 77 61 69  |0:twgflag%=0:wai|
00008690  74 25 3d 77 61 69 74 25  2a 31 30 30 3a 73 74 25  |t%=wait%*100:st%|
000086a0  3d 74 69 6d 65 25 0d 33  22 18 f2 74 67 65 74 28  |=time%.3"..tget(|
000086b0  74 64 61 74 61 24 28 74  67 65 74 25 29 29 0d 33  |tdata$(tget%)).3|
000086c0  2c 38 f5 f2 70 6f 6c 6c  28 35 30 29 3a fd 74 77  |,8..poll(50):.tw|
000086d0  67 66 6c 61 67 25 3e 30  20 84 94 28 74 69 6d 65  |gflag%>0 ..(time|
000086e0  25 2d 73 74 25 29 3e 77  61 69 74 25 20 84 73 74  |%-st%)>wait% .st|
000086f0  6f 70 25 3c 3e 30 0d 33  36 1c e7 74 77 67 66 6c  |op%<>0.36..twgfl|
00008700  61 67 25 3e 30 20 8c 72  25 3d 74 77 67 66 6c 61  |ag%>0 .r%=twgfla|
00008710  67 25 0d 33 40 07 3d 72  25 0d 33 4a 04 0d 33 54  |g%.3@.=r%.3J..3T|
00008720  0e dd f2 74 67 65 74 28  41 24 29 0d 33 5e 07 ea  |...tget(A$).3^..|
00008730  4c 25 0d 33 68 0b e3 4c  25 3d 30 b8 33 0d 33 72  |L%.3h..L%=0.3.3r|
00008740  38 20 20 e7 74 67 65 74  24 28 4c 25 29 3e 22 22  |8  .tget$(L%)>""|
00008750  80 a7 41 24 2c 74 67 65  74 24 28 4c 25 29 29 3e  |..A$,tget$(L%))>|
00008760  30 20 8c 74 77 67 66 6c  61 67 25 3d 4c 25 2b 31  |0 .twgflag%=L%+1|
00008770  3a 4c 25 3d 33 0d 33 7c  05 ed 0d 33 86 0c 74 67  |:L%=3.3|...3..tg|
00008780  65 74 25 3d 2d 31 0d 33  90 05 e1 0d 33 9a 04 0d  |et%=-1.3....3...|
00008790  33 a4 22 dd a4 67 65 74  34 73 28 73 31 24 2c 73  |3."..get4s(s1$,s|
000087a0  32 24 2c 73 33 24 2c 73  34 24 2c 77 61 69 74 25  |2$,s3$,s4$,wait%|
000087b0  29 0d 33 ae 11 ea 66 6c  61 67 25 2c 73 74 25 2c  |).3...flag%,st%,|
000087c0  4a 25 0d 33 b8 1d 77 61  69 74 25 3d 77 61 69 74  |J%.3..wait%=wait|
000087d0  25 2a 31 30 30 3a 73 74  25 3d 74 69 6d 65 25 0d  |%*100:st%=time%.|
000087e0  33 c2 27 6e 31 25 3d 97  73 31 24 3a 6e 32 25 3d  |3.'n1%=.s1$:n2%=|
000087f0  97 73 32 24 3a 6e 33 25  3d 97 73 33 24 3a 6e 34  |.s2$:n3%=.s3$:n4|
00008800  25 3d 97 73 34 24 0d 33  cc 23 70 31 25 3d 31 3a  |%=.s4$.3.#p1%=1:|
00008810  70 32 25 3d 31 3a 70 33  25 3d 31 3a 70 34 25 3d  |p2%=1:p3%=1:p4%=|
00008820  31 3a 66 6c 61 67 25 3d  30 0d 33 d6 05 f5 0d 33  |1:flag%=0.3....3|
00008830  e0 0d 20 20 4a 25 3d a4  72 65 63 0d 33 ea 0e 20  |..  J%=.rec.3.. |
00008840  20 e7 4a 25 3e 2d 31 20  8c 0d 33 f4 38 20 20 20  | .J%>-1 ..3.8   |
00008850  20 e7 4a 25 3d 6e 31 25  20 8c 70 31 25 2b 3d 31  | .J%=n1% .p1%+=1|
00008860  3a 6e 31 25 3d 97 28 c1  73 31 24 2c 70 31 25 29  |:n1%=.(.s1$,p1%)|
00008870  29 20 8b 6e 31 25 3d 97  73 31 24 3a 70 31 25 3d  |) .n1%=.s1$:p1%=|
00008880  31 0d 33 fe 38 20 20 20  20 e7 4a 25 3d 6e 32 25  |1.3.8    .J%=n2%|
00008890  20 8c 70 32 25 2b 3d 31  3a 6e 32 25 3d 97 28 c1  | .p2%+=1:n2%=.(.|
000088a0  73 32 24 2c 70 32 25 29  29 20 8b 6e 32 25 3d 97  |s2$,p2%)) .n2%=.|
000088b0  73 32 24 3a 70 32 25 3d  31 0d 34 08 38 20 20 20  |s2$:p2%=1.4.8   |
000088c0  20 e7 4a 25 3d 6e 33 25  20 8c 70 33 25 2b 3d 31  | .J%=n3% .p3%+=1|
000088d0  3a 6e 33 25 3d 97 28 c1  73 33 24 2c 70 33 25 29  |:n3%=.(.s3$,p3%)|
000088e0  29 20 8b 6e 33 25 3d 97  73 33 24 3a 70 33 25 3d  |) .n3%=.s3$:p3%=|
000088f0  31 0d 34 12 38 20 20 20  20 e7 4a 25 3d 6e 34 25  |1.4.8    .J%=n4%|
00008900  20 8c 70 34 25 2b 3d 31  3a 6e 34 25 3d 97 28 c1  | .p4%+=1:n4%=.(.|
00008910  73 34 24 2c 70 34 25 29  29 20 8b 6e 34 25 3d 97  |s4$,p4%)) .n4%=.|
00008920  73 34 24 3a 70 34 25 3d  31 0d 34 1c 09 20 20 20  |s4$:p4%=1.4..   |
00008930  20 cc 0d 34 26 11 20 20  20 20 f2 70 6f 6c 6c 28  | ..4&.    .poll(|
00008940  31 30 29 0d 34 30 07 20  20 cd 0d 34 3a 1f 20 20  |10).40.  ..4:.  |
00008950  e7 70 31 25 3e a9 73 31  24 20 80 73 31 24 3e 22  |.p1%>.s1$ .s1$>"|
00008960  22 3a 66 6c 61 67 25 3d  31 0d 34 44 1f 20 20 e7  |":flag%=1.4D.  .|
00008970  70 32 25 3e a9 73 32 24  20 80 73 32 24 3e 22 22  |p2%>.s2$ .s2$>""|
00008980  3a 66 6c 61 67 25 3d 32  0d 34 4e 1f 20 20 e7 70  |:flag%=2.4N.  .p|
00008990  33 25 3e a9 73 33 24 20  80 73 33 24 3e 22 22 3a  |3%>.s3$ .s3$>"":|
000089a0  66 6c 61 67 25 3d 33 0d  34 58 1f 20 20 e7 70 34  |flag%=3.4X.  .p4|
000089b0  25 3e a9 73 34 24 20 80  73 34 24 3e 22 22 3a 66  |%>.s4$ .s4$>"":f|
000089c0  6c 61 67 25 3d 34 0d 34  62 36 fd 66 6c 61 67 25  |lag%=4.4b6.flag%|
000089d0  3e 30 20 84 94 28 74 69  6d 65 25 2d 73 74 25 29  |>0 ..(time%-st%)|
000089e0  3e 77 61 69 74 25 20 84  73 74 6f 70 25 3c 3e 30  |>wait% .stop%<>0|
000089f0  20 84 72 65 64 69 61 6c  25 3c 3e 30 0d 34 6c 15  | .redial%<>0.4l.|
00008a00  e7 66 6c 61 67 25 3e 30  20 8c 3a 3d 66 6c 61 67  |.flag%>0 .:=flag|
00008a10  25 0d 34 76 06 3d 30 0d  34 80 04 0d 34 8a 0e dd  |%.4v.=0.4...4...|
00008a20  f2 73 65 6e 64 28 41 24  29 0d 34 94 25 ea 41 25  |.send(A$).4.%.A%|
00008a30  2c 4a 25 2c 52 25 2c 74  24 2c 74 77 25 2c 42 24  |,J%,R%,t$,tw%,B$|
00008a40  2c 43 24 3a 74 24 3d 22  22 3a 52 25 3d 30 0d 34  |,C$:t$="":R%=0.4|
00008a50  9e 12 f5 42 24 3d a4 70  61 72 61 6d 28 41 24 29  |...B$=.param(A$)|
00008a60  0d 34 a8 12 20 20 e7 c0  42 24 2c 31 29 3d 22 2f  |.4..  ..B$,1)="/|
00008a70  22 8c 0d 34 b2 1f 20 20  20 20 43 24 3d a4 76 61  |"..4..    C$=.va|
00008a80  6c 75 65 28 42 24 29 3a  c8 8e c0 42 24 2c 32 29  |lue(B$):...B$,2)|
00008a90  ca 0d 34 bc 14 20 20 20  20 20 20 c9 22 72 61 22  |..4..      ."ra"|
00008aa0  3a 52 25 3d b9 0d 34 c6  14 20 20 20 20 20 20 c9  |:R%=..4..      .|
00008ab0  22 6e 6f 22 3a 52 25 3d  a3 0d 34 d0 1a 20 20 20  |"no":R%=..4..   |
00008ac0  20 20 20 c9 22 6e 61 22  2c 22 69 64 22 3a 74 24  |   ."na","id":t$|
00008ad0  3d 43 24 0d 34 da 09 20  20 20 20 cb 0d 34 e4 09  |=C$.4..    ..4..|
00008ae0  20 20 20 20 cc 0d 34 ee  0f 20 20 20 20 e7 74 24  |    ..4..    .t$|
00008af0  3d 22 22 8c 0d 34 f8 2d  20 20 20 20 20 20 e7 64  |=""..4.-      .d|
00008b00  65 76 69 63 65 25 3d 30  8c f2 68 61 6c 74 28 a4  |evice%=0..halt(.|
00008b10  6d 73 67 30 28 22 45 6e  6f 64 65 76 22 29 29 3a  |msg0("Enodev")):|
00008b20  e1 0d 35 02 31 20 20 20  20 20 20 e3 41 25 3d 31  |..5.1      .A%=1|
00008b30  b8 a9 42 24 3a 4a 25 3d  a4 64 28 30 2c 70 6f 72  |..B$:J%=.d(0,por|
00008b40  74 25 2c 97 c1 42 24 2c  41 25 2c 31 29 2c 30 29  |t%,..B$,A%,1),0)|
00008b50  3a ed 0d 35 0c 24 20 20  20 20 20 20 e7 52 25 3d  |:..5.$      .R%=|
00008b60  30 20 8c 4a 25 3d a4 64  28 30 2c 70 6f 72 74 25  |0 .J%=.d(0,port%|
00008b70  2c 31 33 2c 30 29 0d 35  16 0b 20 20 20 20 20 20  |,13,0).5..      |
00008b80  cc 0d 35 20 36 20 20 20  20 20 20 74 77 25 3d 30  |..5 6      tw%=0|
00008b90  3a c8 95 74 77 6e 61 6d  65 24 28 74 77 25 29 3c  |:..twname$(tw%)<|
00008ba0  3e 74 24 80 74 77 25 3c  74 77 6d 61 78 25 3a 74  |>t$.tw%<twmax%:t|
00008bb0  77 25 2b 3d 31 3a ce 0d  35 2a 23 20 20 20 20 20  |w%+=1:..5*#     |
00008bc0  20 e7 74 77 25 3c 74 77  6d 61 78 25 80 74 77 68  | .tw%<twmax%.twh|
00008bd0  25 28 74 77 25 29 3c 3e  30 8c 0d 35 34 45 20 20  |%(tw%)<>0..54E  |
00008be0  20 20 20 20 20 20 21 71  25 3d 32 35 36 3a 71 25  |      !q%=256:q%|
00008bf0  21 31 32 3d 30 3a 71 25  21 31 36 3d 26 38 30 38  |!12=0:q%!16=&808|
00008c00  43 30 3a 71 25 21 32 30  3d a9 42 24 2d 28 52 25  |C0:q%!20=.B$-(R%|
00008c10  3d 30 29 3a 24 28 71 25  2b 32 34 29 3d 42 24 0d  |=0):$(q%+24)=B$.|
00008c20  35 3e 30 20 20 20 20 20  20 20 20 c8 99 22 57 69  |5>0        .."Wi|
00008c30  6d 70 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |mp_SendMessage",|
00008c40  31 37 2c 71 25 2c 74 77  68 25 28 74 77 25 29 0d  |17,q%,twh%(tw%).|
00008c50  35 48 39 20 20 20 20 20  20 20 20 f2 6c 6f 67 28  |5H9        .log(|
00008c60  a4 6d 73 67 32 28 22 54  61 73 6b 53 65 6e 64 22  |.msg2("TaskSend"|
00008c70  2c c0 42 24 2c 31 30 30  29 2c 74 77 6e 61 6d 65  |,.B$,100),twname|
00008c80  24 28 74 77 25 29 29 29  0d 35 52 0b 20 20 20 20  |$(tw%))).5R.    |
00008c90  20 20 cd 0d 35 5c 09 20  20 20 20 cd 0d 35 66 07  |  ..5\.    ..5f.|
00008ca0  20 20 cd 0d 35 70 0a fd  41 24 3d 22 22 0d 35 7a  |  ..5p..A$="".5z|
00008cb0  05 e1 0d 35 84 04 0d 35  8e 0f dd a4 69 70 67 65  |...5...5....ipge|
00008cc0  74 28 41 24 29 0d 35 98  28 ea 72 25 2c 73 74 61  |t(A$).5.(.r%,sta|
00008cd0  72 74 24 2c 64 25 2c 61  25 2c 6c 6f 63 25 2c 74  |rt$,d%,a%,loc%,t|
00008ce0  6c 69 6d 25 2c 42 24 2c  43 24 2c 4a 25 0d 35 a2  |lim%,B$,C$,J%.5.|
00008cf0  13 72 25 3d 30 3a 64 25  3d 36 30 3a 61 25 3d 30  |.r%=0:d%=60:a%=0|
00008d00  0d 35 ac 12 f5 42 24 3d  a4 70 61 72 61 6d 28 41  |.5...B$=.param(A|
00008d10  24 29 0d 35 b6 10 e7 c0  42 24 2c 31 29 3d 22 2f  |$).5....B$,1)="/|
00008d20  22 8c 0d 35 c0 1d 20 20  43 24 3d a4 76 61 6c 75  |"..5..  C$=.valu|
00008d30  65 28 42 24 29 3a c8 8e  c0 42 24 2c 32 29 ca 0d  |e(B$):...B$,2)..|
00008d40  35 ca 21 20 20 20 20 c9  22 64 65 22 3a 64 25 3d  |5.!    ."de":d%=|
00008d50  bb 43 24 3a e7 64 25 3c  31 30 8c 64 25 3d 31 30  |.C$:.d%<10.d%=10|
00008d60  0d 35 d4 12 20 20 20 20  c9 22 61 75 22 3a 61 25  |.5..    ."au":a%|
00008d70  3d b9 0d 35 de 07 20 20  cb 0d 35 e8 07 20 20 cc  |=..5..  ..5..  .|
00008d80  0d 35 f2 0f 20 20 73 74  61 72 74 24 3d 42 24 0d  |.5..  start$=B$.|
00008d90  35 fc 05 cd 0d 36 06 0a  fd 41 24 3d 22 22 0d 36  |5....6...A$="".6|
00008da0  10 0a e7 61 25 3d 30 8c  0d 36 1a 23 20 20 72 25  |...a%=0..6.#  r%|
00008db0  3d a4 67 65 74 34 73 28  73 74 61 72 74 24 2c 22  |=.get4s(start$,"|
00008dc0  22 2c 22 22 2c 22 22 2c  64 25 29 0d 36 24 07 20  |","","",d%).6$. |
00008dd0  20 cc 0d 36 2e 2e 20 20  73 74 61 72 74 24 3d 22  | ..6..  start$="|
00008de0  22 3a 6c 6f 63 25 3d 30  3a 72 25 3d 30 3a 74 6c  |":loc%=0:r%=0:tl|
00008df0  69 6d 25 3d 74 69 6d 65  25 2b 64 25 2a 31 30 30  |im%=time%+d%*100|
00008e00  0d 36 38 07 20 20 f5 0d  36 42 0f 20 20 20 20 4a  |.68.  ..6B.    J|
00008e10  25 3d a4 72 65 63 0d 36  4c 0e 20 20 20 20 e7 4a  |%=.rec.6L.    .J|
00008e20  25 3e 30 8c 0d 36 56 0f  20 20 20 20 c8 8e 6c 6f  |%>0..6V.    ..lo|
00008e30  63 25 ca 0d 36 60 43 20  20 20 20 20 20 c9 30 2c  |c%..6`C      .0,|
00008e40  31 2c 32 3a e7 4a 25 3e  34 37 80 4a 25 3c 35 37  |1,2:.J%>47.J%<57|
00008e50  8c 73 74 61 72 74 24 2b  3d bd 4a 25 3a 6c 6f 63  |.start$+=.J%:loc|
00008e60  25 2b 3d 31 3a 8b 73 74  61 72 74 24 3d 22 22 3a  |%+=1:.start$="":|
00008e70  6c 6f 63 25 3d 30 0d 36  6a 39 20 20 20 20 20 20  |loc%=0.6j9      |
00008e80  c9 33 3a e7 4a 25 3d 34  36 8c 73 74 61 72 74 24  |.3:.J%=46.start$|
00008e90  2b 3d 22 2e 22 3a 6c 6f  63 25 2b 3d 31 3a 8b 73  |+=".":loc%+=1:.s|
00008ea0  74 61 72 74 24 3d 22 22  3a 6c 6f 63 25 3d 30 0d  |tart$="":loc%=0.|
00008eb0  36 74 09 20 20 20 20 cb  0d 36 7e 09 20 20 20 20  |6t.    ..6~.    |
00008ec0  cc 0d 36 88 15 20 20 20  20 f2 70 6f 6c 6c 28 73  |..6..    .poll(s|
00008ed0  6c 69 63 65 25 29 0d 36  92 09 20 20 20 20 cd 0d  |lice%).6..    ..|
00008ee0  36 9c 26 20 20 fd 6c 6f  63 25 3d 34 84 74 69 6d  |6.&  .loc%=4.tim|
00008ef0  65 25 3e 74 6c 69 6d 25  3a e7 6c 6f 63 25 3d 34  |e%>tlim%:.loc%=4|
00008f00  8c 72 25 3d 31 0d 36 a6  05 cd 0d 36 b0 0b e7 72  |.r%=1.6....6...r|
00008f10  25 3d 31 20 8c 0d 36 ba  16 20 20 69 70 6e 75 6d  |%=1 ..6..  ipnum|
00008f20  62 65 72 24 3d 73 74 61  72 74 24 0d 36 c4 0d 20  |ber$=start$.6.. |
00008f30  20 4a 25 3d a4 72 65 63  0d 36 ce 2b 20 20 f4 20  | J%=.rec.6.+  . |
00008f40  74 65 72 6d 69 6e 61 74  65 73 20 6f 6e 20 73 70  |terminates on sp|
00008f50  61 63 65 20 6f 72 20 63  6f 6e 74 72 6f 6c 20 63  |ace or control c|
00008f60  68 61 72 0d 36 d8 26 20  20 c8 95 20 28 4a 25 3e  |har.6.&  .. (J%>|
00008f70  33 32 20 84 20 4a 25 3d  30 29 20 80 a9 69 70 6e  |32 . J%=0) ..ipn|
00008f80  75 6d 62 65 72 24 3c 32  30 0d 36 e2 40 20 20 20  |umber$<20.6.@   |
00008f90  20 e7 4a 25 3e 33 31 20  8c 69 70 6e 75 6d 62 65  | .J%>31 .ipnumbe|
00008fa0  72 24 3d 69 70 6e 75 6d  62 65 72 24 2b bd 4a 25  |r$=ipnumber$+.J%|
00008fb0  3a f2 70 6f 6c 6c 28 73  6c 69 63 65 25 29 3a 8b  |:.poll(slice%):.|
00008fc0  f2 70 6f 6c 6c 28 31 30  29 0d 36 ec 0f 20 20 20  |.poll(10).6..   |
00008fd0  20 4a 25 3d a4 72 65 63  0d 36 f6 07 20 20 ce 0d  | J%=.rec.6..  ..|
00008fe0  37 00 19 20 20 43 25 3d  97 28 c2 69 70 6e 75 6d  |7..  C%=.(.ipnum|
00008ff0  62 65 72 24 2c 31 29 29  0d 37 0a 26 20 20 c8 95  |ber$,1)).7.&  ..|
00009000  20 28 43 25 3c 34 38 20  84 20 43 25 3e 35 37 29  | (C%<48 . C%>57)|
00009010  20 80 a9 69 70 6e 75 6d  62 65 72 24 3e 35 0d 37  | ..ipnumber$>5.7|
00009020  14 2a 20 20 69 70 6e 75  6d 62 65 72 24 3d c0 69  |.*  ipnumber$=.i|
00009030  70 6e 75 6d 62 65 72 24  2c a9 28 69 70 6e 75 6d  |pnumber$,.(ipnum|
00009040  62 65 72 24 29 2d 31 29  0d 37 1e 19 20 20 43 25  |ber$)-1).7..  C%|
00009050  3d 97 28 c2 69 70 6e 75  6d 62 65 72 24 2c 31 29  |=.(.ipnumber$,1)|
00009060  29 0d 37 28 07 20 20 ce  0d 37 32 22 20 20 f2 73  |).7(.  ..72"  .s|
00009070  65 74 76 28 22 69 70 61  64 64 72 65 73 73 22 2c  |etv("ipaddress",|
00009080  69 70 6e 75 6d 62 65 72  24 29 0d 37 3c 31 20 20  |ipnumber$).7<1  |
00009090  f2 73 65 74 76 28 22 72  6f 75 74 65 22 2c a4 73  |.setv("route",.s|
000090a0  75 62 73 74 28 22 25 69  70 31 2e 25 69 70 32 2e  |ubst("%ip1.%ip2.|
000090b0  25 69 70 33 2e 32 35 34  22 29 29 0d 37 46 23 20  |%ip3.254")).7F# |
000090c0  20 72 65 74 75 72 6e 24  3d 69 70 6e 75 6d 62 65  | return$=ipnumbe|
000090d0  72 24 3a 72 25 3d 2d 31  3a 41 24 3d 22 22 0d 37  |r$:r%=-1:A$="".7|
000090e0  50 05 cd 0d 37 5a 07 3d  72 25 0d 37 64 04 0d 37  |P...7Z.=r%.7d..7|
000090f0  6e 12 dd f2 75 70 64 61  74 65 69 70 28 41 24 29  |n...updateip(A$)|
00009100  0d 37 78 0a ea 6c 25 2c  6d 25 0d 37 82 26 6c 25  |.7x..l%,m%.7.&l%|
00009110  3d a7 41 24 2c 22 2e 22  29 3a f2 73 65 74 76 28  |=.A$,"."):.setv(|
00009120  22 69 70 31 22 2c c0 41  24 2c 6c 25 2d 31 29 29  |"ip1",.A$,l%-1))|
00009130  0d 37 8c 33 6d 25 3d a7  41 24 2c 22 2e 22 2c 6c  |.7.3m%=.A$,".",l|
00009140  25 2b 31 29 3a f2 73 65  74 76 28 22 69 70 32 22  |%+1):.setv("ip2"|
00009150  2c c1 41 24 2c 6c 25 2b  31 2c 6d 25 2d 6c 25 2d  |,.A$,l%+1,m%-l%-|
00009160  31 29 29 0d 37 96 33 6c  25 3d a7 41 24 2c 22 2e  |1)).7.3l%=.A$,".|
00009170  22 2c 6d 25 2b 31 29 3a  f2 73 65 74 76 28 22 69  |",m%+1):.setv("i|
00009180  70 33 22 2c c1 41 24 2c  6d 25 2b 31 2c 6c 25 2d  |p3",.A$,m%+1,l%-|
00009190  6d 25 2d 31 29 29 0d 37  a0 1a f2 73 65 74 76 28  |m%-1)).7...setv(|
000091a0  22 69 70 34 22 2c c1 41  24 2c 6c 25 2b 31 29 29  |"ip4",.A$,l%+1))|
000091b0  0d 37 aa 14 f2 70 72 69  6e 74 28 22 22 2c 22 22  |.7...print("",""|
000091c0  2c 41 24 29 0d 37 b4 05  e1 0d 37 be 04 0d 37 c8  |,A$).7....7...7.|
000091d0  15 dd f2 6d 61 6b 65 66  69 6c 65 28 6e 61 6d 65  |...makefile(name|
000091e0  24 29 0d 37 d2 12 41 25  3d a7 6e 61 6d 65 24 2c  |$).7..A%=.name$,|
000091f0  22 20 22 29 0d 37 dc 2b  e7 41 25 3c 3d 31 20 8c  |" ").7.+.A%<=1 .|
00009200  20 f2 71 75 69 74 28 a4  6d 73 67 31 28 22 45 62  | .quit(.msg1("Eb|
00009210  61 64 6d 61 6b 65 22 2c  6e 61 6d 65 24 29 29 0d  |admake",name$)).|
00009220  37 e6 2b 73 6f 75 72 63  65 24 3d c0 6e 61 6d 65  |7.+source$=.name|
00009230  24 2c 41 25 2d 31 29 3a  64 65 73 74 24 3d c1 6e  |$,A%-1):dest$=.n|
00009240  61 6d 65 24 2c 41 25 2b  31 29 0d 37 f0 25 f2 70  |ame$,A%+1).7.%.p|
00009250  72 69 6e 74 28 a4 6d 73  67 31 28 22 4d 61 6b 65  |rint(.msg1("Make|
00009260  22 2c 64 65 73 74 24 29  2c 22 22 2c 22 22 29 0d  |",dest$),"","").|
00009270  37 fa 20 e7 73 6f 75 72  63 65 24 3d 22 2d 22 8c  |7. .source$="-".|
00009280  73 6f 75 72 63 65 24 3d  22 6e 75 6c 6c 3a 22 0d  |source$="null:".|
00009290  38 04 19 66 68 31 25 3d  a4 6f 70 65 6e 69 6e 28  |8..fh1%=.openin(|
000092a0  73 6f 75 72 63 65 24 29  0d 38 0e 30 e7 66 68 31  |source$).8.0.fh1|
000092b0  25 3d 30 20 8c f2 68 61  6c 74 28 a4 6d 73 67 31  |%=0 ..halt(.msg1|
000092c0  28 22 45 6e 6f 74 66 6f  75 6e 64 22 2c 73 6f 75  |("Enotfound",sou|
000092d0  72 63 65 24 29 29 3a e1  0d 38 18 18 66 68 32 25  |rce$)):..8..fh2%|
000092e0  3d a4 6f 70 65 6e 6f 75  74 28 64 65 73 74 24 29  |=.openout(dest$)|
000092f0  0d 38 22 2d e7 66 68 32  25 3d 30 20 8c f2 68 61  |.8"-.fh2%=0 ..ha|
00009300  6c 74 28 a4 6d 73 67 31  28 22 45 62 61 64 66 69  |lt(.msg1("Ebadfi|
00009310  6c 65 22 2c 64 65 73 74  24 29 29 3a e1 0d 38 2c  |le",dest$)):..8,|
00009320  2a c8 95 20 28 c5 23 66  68 31 25 3d a3 20 84 c0  |*.. (.#fh1%=. ..|
00009330  a4 6c 69 6e 65 28 73 74  61 67 65 25 2b 31 29 2c  |.line(stage%+1),|
00009340  31 29 3d 22 2b 22 29 0d  38 36 10 20 20 e7 20 c5  |1)="+").86.  . .|
00009350  23 66 68 31 25 20 8c 0d  38 40 26 20 20 20 20 73  |#fh1% ..8@&    s|
00009360  74 61 67 65 25 2b 3d 31  3a 41 24 3d c1 a4 6c 69  |tage%+=1:A$=..li|
00009370  6e 65 28 73 74 61 67 65  25 29 2c 32 29 0d 38 4a  |ne(stage%),2).8J|
00009380  09 20 20 20 20 cc 0d 38  54 11 20 20 20 20 41 24  |.    ..8T.    A$|
00009390  3d be 23 66 68 31 25 0d  38 5e 07 20 20 cd 0d 38  |=.#fh1%.8^.  ..8|
000093a0  68 13 20 20 41 24 3d a4  73 75 62 73 74 28 41 24  |h.  A$=.subst(A$|
000093b0  29 0d 38 72 1d 20 20 e7  c0 41 24 2c 31 29 3c 3e  |).8r.  ..A$,1)<>|
000093c0  22 23 22 20 8c d5 23 66  68 32 25 2c 41 24 0d 38  |"#" ..#fh2%,A$.8|
000093d0  7c 13 20 20 f2 70 6f 6c  6c 28 73 6c 69 63 65 25  ||.  .poll(slice%|
000093e0  29 0d 38 86 05 ce 0d 38  90 17 f2 63 66 28 66 68  |).8....8...cf(fh|
000093f0  31 25 29 3a f2 63 66 28  66 68 32 25 29 0d 38 9a  |1%):.cf(fh2%).8.|
00009400  05 e1 0d 38 a4 04 0d 38  ae 10 dd a4 6f 70 65 6e  |...8...8....open|
00009410  69 6e 28 66 24 29 0d 38  b8 13 3d a4 66 6f 70 65  |in(f$).8..=.fope|
00009420  6e 28 66 24 2c 26 34 46  29 0d 38 c2 04 0d 38 cc  |n(f$,&4F).8...8.|
00009430  11 dd a4 6f 70 65 6e 6f  75 74 28 66 24 29 0d 38  |...openout(f$).8|
00009440  d6 25 3d a4 66 6f 70 65  6e 28 66 24 2c 26 38 46  |.%=.fopen(f$,&8F|
00009450  29 3a f2 73 65 74 74 79  70 65 28 66 24 2c 26 46  |):.settype(f$,&F|
00009460  46 46 29 0d 38 e0 04 0d  38 ea 10 dd a4 6f 70 65  |FF).8...8....ope|
00009470  6e 75 70 28 66 24 29 0d  38 f4 07 ea 68 25 0d 38  |nup(f$).8...h%.8|
00009480  fe 15 68 25 3d a4 66 6f  70 65 6e 28 66 24 2c 26  |..h%=.fopen(f$,&|
00009490  43 46 29 0d 39 08 2d e7  68 25 3d 30 8c 68 25 3d  |CF).9.-.h%=0.h%=|
000094a0  a4 66 6f 70 65 6e 28 66  24 2c 26 38 46 29 3a f2  |.fopen(f$,&8F):.|
000094b0  73 65 74 74 79 70 65 28  66 24 2c 26 46 46 46 29  |settype(f$,&FFF)|
000094c0  0d 39 12 07 3d 68 25 0d  39 1c 04 0d 39 26 12 dd  |.9..=h%.9...9&..|
000094d0  a4 66 6f 70 65 6e 28 66  24 2c 72 25 29 0d 39 30  |.fopen(f$,r%).90|
000094e0  0a ea 68 25 2c 46 25 0d  39 3a 1c c8 99 22 58 4f  |..h%,F%.9:..."XO|
000094f0  53 5f 46 69 6e 64 22 2c  72 25 2c 66 24 b8 68 25  |S_Find",r%,f$.h%|
00009500  3b 46 25 0d 39 44 10 e7  28 46 25 80 31 29 8c 68  |;F%.9D..(F%.1).h|
00009510  25 3d 30 0d 39 4e 07 3d  68 25 0d 39 58 04 0d 39  |%=0.9N.=h%.9X..9|
00009520  62 11 dd a4 64 65 6c 66  69 6c 65 28 66 24 29 0d  |b...delfile(f$).|
00009530  39 6c 1d ea 46 25 3a c8  99 22 58 4f 53 5f 46 69  |9l..F%:.."XOS_Fi|
00009540  6c 65 22 2c 36 2c 66 24  b8 3b 46 25 0d 39 76 0b  |le",6,f$.;F%.9v.|
00009550  3d 28 46 25 80 31 29 0d  39 80 04 0d 39 8a 14 dd  |=(F%.1).9...9...|
00009560  f2 73 65 74 74 79 70 65  28 66 24 2c 74 25 29 0d  |.settype(f$,t%).|
00009570  39 94 19 c8 99 22 58 4f  53 5f 46 69 6c 65 22 2c  |9...."XOS_File",|
00009580  31 38 2c 66 24 2c 74 25  0d 39 9e 05 e1 0d 39 a8  |18,f$,t%.9....9.|
00009590  04 0d 39 b2 12 dd f2 70  61 75 73 65 28 77 61 69  |..9....pause(wai|
000095a0  74 25 29 0d 39 bc 0d ea  65 6e 64 74 69 6d 65 25  |t%).9...endtime%|
000095b0  0d 39 c6 0e e7 77 61 69  74 25 3d 30 20 8c 0d 39  |.9...wait%=0 ..9|
000095c0  d0 0d 20 20 f2 70 61 75  73 65 64 0d 39 da 07 20  |..  .paused.9.. |
000095d0  20 cc 0d 39 e4 24 20 20  f2 6c 6f 67 28 a4 6d 73  | ..9.$  .log(.ms|
000095e0  67 31 28 22 57 61 69 74  22 2c c3 77 61 69 74 25  |g1("Wait",.wait%|
000095f0  2b 22 73 22 29 29 0d 39  ee 28 20 20 f2 70 6f 6c  |+"s")).9.(  .pol|
00009600  6c 28 30 29 3a 73 74 25  3d 74 69 6d 65 25 3a 77  |l(0):st%=time%:w|
00009610  61 69 74 25 3d 77 61 69  74 25 2a 31 30 30 0d 39  |ait%=wait%*100.9|
00009620  f8 07 20 20 f5 0d 3a 02  11 20 20 20 20 f2 70 6f  |..  ..:..    .po|
00009630  6c 6c 28 35 30 29 0d 3a  0c 19 20 20 fd 94 28 73  |ll(50).:..  ..(s|
00009640  74 25 2d 74 69 6d 65 25  29 3e 77 61 69 74 25 0d  |t%-time%)>wait%.|
00009650  3a 16 07 20 20 cd 0d 3a  20 05 e1 0d 3a 2a 04 0d  |:..  ..: ...:*..|
00009660  3a 34 0d dd f2 73 65 74  74 69 6d 65 0d 3a 3e 0a  |:4...settime.:>.|
00009670  ea 6c 25 2c 6d 25 0d 3a  48 1b 3f 71 25 3d 33 3a  |.l%,m%.:H.?q%=3:|
00009680  c8 99 22 4f 53 5f 57 6f  72 64 22 2c 31 34 2c 71  |.."OS_Word",14,q|
00009690  25 0d 3a 52 49 c8 99 22  4f 53 5f 43 6f 6e 76 65  |%.:RI.."OS_Conve|
000096a0  72 74 44 61 74 65 41 6e  64 54 69 6d 65 22 2c 71  |rtDateAndTime",q|
000096b0  25 2c 74 6d 70 25 2c 32  35 36 2c 22 25 32 34 25  |%,tmp%,256,"%24%|
000096c0  4d 49 25 53 45 22 b8 6c  25 2c 6d 25 3a 6e 6f 77  |MI%SE".l%,m%:now|
000096d0  24 3d a4 73 74 72 28 6c  25 29 0d 3a 5c 34 f2 73  |$=.str(l%).:\4.s|
000096e0  65 74 76 28 22 24 74 69  6d 65 22 2c 6e 6f 77 24  |etv("$time",now$|
000096f0  29 3a f2 73 65 74 76 28  22 24 6d 74 69 6d 65 22  |):.setv("$mtime"|
00009700  2c c3 28 74 69 6d 65 25  81 31 30 30 29 29 0d 3a  |,.(time%.100)).:|
00009710  66 05 e1 0d 3a 70 04 0d  3a 7a 0d dd f2 73 65 74  |f...:p..:z...set|
00009720  64 61 74 65 0d 3a 84 0a  ea 6c 25 2c 6d 25 0d 3a  |date.:...l%,m%.:|
00009730  8e 1b 3f 71 25 3d 33 3a  c8 99 22 4f 53 5f 57 6f  |..?q%=3:.."OS_Wo|
00009740  72 64 22 2c 31 34 2c 71  25 0d 3a 98 49 c8 99 22  |rd",14,q%.:.I.."|
00009750  4f 53 5f 43 6f 6e 76 65  72 74 44 61 74 65 41 6e  |OS_ConvertDateAn|
00009760  64 54 69 6d 65 22 2c 71  25 2c 74 6d 70 25 2c 32  |dTime",q%,tmp%,2|
00009770  35 36 2c 22 25 59 52 25  4d 4e 25 44 59 22 b8 6c  |56,"%YR%MN%DY".l|
00009780  25 2c 6d 25 3a 6e 6f 77  24 3d a4 73 74 72 28 6c  |%,m%:now$=.str(l|
00009790  25 29 0d 3a a2 17 f2 73  65 74 76 28 22 24 64 61  |%).:...setv("$da|
000097a0  74 65 22 2c 6e 6f 77 24  29 0d 3a ac 05 e1 0d 3a  |te",now$).:....:|
000097b0  b6 04 0d 3a c0 0f dd f2  61 6c 61 72 6d 28 41 24  |...:....alarm(A$|
000097c0  29 0d 3a ca 1d ea 61 6c  25 2c 61 24 2c 61 6e 25  |).:...al%,a$,an%|
000097d0  2c 61 74 25 2c 61 69 25  2c 42 24 2c 43 24 0d 3a  |,at%,ai%,B$,C$.:|
000097e0  d4 1e 61 6e 25 3d 2d 31  3a 61 6c 25 3d 2d 31 3a  |..an%=-1:al%=-1:|
000097f0  61 69 25 3d 2d 31 3a 61  24 3d 41 24 0d 3a de 12  |ai%=-1:a$=A$.:..|
00009800  f5 42 24 3d a4 70 61 72  61 6d 28 41 24 29 0d 3a  |.B$=.param(A$).:|
00009810  e8 10 e7 c0 42 24 2c 31  29 3d 22 2f 22 8c 0d 3a  |....B$,1)="/"..:|
00009820  f2 13 20 20 43 24 3d a4  76 61 6c 75 65 28 42 24  |..  C$=.value(B$|
00009830  29 0d 3a fc 0f 20 20 c8  8e c0 42 24 2c 32 29 ca  |).:..  ...B$,2).|
00009840  0d 3b 06 16 20 20 20 20  c9 22 73 74 22 3a 73 74  |.;..    ."st":st|
00009850  6f 70 24 3d 43 24 0d 3b  10 17 20 20 20 20 c9 22  |op$=C$.;..    ."|
00009860  65 72 22 3a 65 72 72 6f  72 24 3d 43 24 0d 3b 1a  |er":error$=C$.;.|
00009870  2e 20 20 20 20 c9 22 64  74 22 2c 22 63 74 73 22  |.    ."dt","cts"|
00009880  3a 61 6c 69 6e 65 25 28  30 29 3d a4 74 66 31 30  |:aline%(0)=.tf10|
00009890  28 bb 43 24 29 3a 61 6c  25 3d 30 0d 3b 24 28 20  |(.C$):al%=0.;$( |
000098a0  20 20 20 c9 22 64 73 22  3a 61 6c 69 6e 65 25 28  |   ."ds":aline%(|
000098b0  31 29 3d a4 74 66 31 30  28 bb 43 24 29 3a 61 6c  |1)=.tf10(.C$):al|
000098c0  25 3d 31 0d 3b 2e 28 20  20 20 20 c9 22 72 6e 22  |%=1.;.(    ."rn"|
000098d0  3a 61 6c 69 6e 65 25 28  32 29 3d a4 74 66 31 30  |:aline%(2)=.tf10|
000098e0  28 bb 43 24 29 3a 61 6c  25 3d 32 0d 3b 38 28 20  |(.C$):al%=2.;8( |
000098f0  20 20 20 c9 22 64 63 22  3a 61 6c 69 6e 65 25 28  |   ."dc":aline%(|
00009900  33 29 3d a4 74 66 31 30  28 bb 43 24 29 3a 61 6c  |3)=.tf10(.C$):al|
00009910  25 3d 33 0d 3b 42 21 20  20 20 20 c9 22 74 69 22  |%=3.;B!    ."ti"|
00009920  3a 61 74 25 3d a4 64 65  63 6f 64 65 74 69 6d 65  |:at%=.decodetime|
00009930  28 43 24 29 0d 3b 4c 1d  20 20 20 20 c9 22 69 63  |(C$).;L.    ."ic|
00009940  22 3a 61 69 25 3d a4 69  63 6f 6e 69 64 28 43 24  |":ai%=.iconid(C$|
00009950  29 0d 3b 56 34 20 20 20  20 c9 22 6e 61 22 2c 22  |).;V4    ."na","|
00009960  69 64 22 3a 61 6e 25 3d  a4 61 6c 61 72 6d 6e 6f  |id":an%=.alarmno|
00009970  28 43 24 29 3a 61 6c 61  72 6d 69 64 24 28 61 6e  |(C$):alarmid$(an|
00009980  25 29 3d 43 24 0d 3b 60  23 20 20 20 20 c9 22 63  |%)=C$.;`#    ."c|
00009990  61 22 2c 22 64 65 22 3a  f2 63 61 6e 63 65 6c 61  |a","de":.cancela|
000099a0  6c 61 72 6d 28 43 24 29  0d 3b 6a 07 20 20 cb 0d  |larm(C$).;j.  ..|
000099b0  3b 74 05 cd 0d 3b 7e 0a  fd 41 24 3d 22 22 0d 3b  |;t...;~..A$="".;|
000099c0  88 0c e7 61 74 25 3e 30  20 8c 0d 3b 92 1e 20 20  |...at%>0 ..;..  |
000099d0  e7 61 6e 25 3c 30 8c 61  6e 25 3d a4 61 6c 61 72  |.an%<0.an%=.alar|
000099e0  6d 6e 6f 28 22 7e 22 29  0d 3b 9c 3b 20 20 61 6c  |mno("~").;.;  al|
000099f0  61 72 6d 24 28 61 6e 25  2c 30 29 3d 42 24 3a 61  |arm$(an%,0)=B$:a|
00009a00  6c 61 72 6d 24 28 61 6e  25 2c 31 29 3d 61 24 3a  |larm$(an%,1)=a$:|
00009a10  61 6c 61 72 6d 74 69 6d  65 25 28 61 6e 25 29 3d  |alarmtime%(an%)=|
00009a20  61 74 25 0d 3b a6 05 cc  0d 3b b0 1d 20 20 e7 61  |at%.;....;..  .a|
00009a30  6c 25 3e 3d 30 20 8c 61  6c 69 6e 65 24 28 61 6c  |l%>=0 .aline$(al|
00009a40  25 29 3d 42 24 0d 3b ba  1d 20 20 e7 61 69 25 3e  |%)=B$.;..  .ai%>|
00009a50  3d 30 20 8c 69 66 69 6c  65 24 28 61 69 25 29 3d  |=0 .ifile$(ai%)=|
00009a60  42 24 0d 3b c4 05 cd 0d  3b ce 05 e1 0d 3b d8 04  |B$.;....;....;..|
00009a70  0d 3b e2 11 dd a4 61 6c  61 72 6d 6e 6f 28 41 24  |.;....alarmno(A$|
00009a80  29 0d 3b ec 0c ea 61 25  3a 61 25 3d 30 0d 3b f6  |).;...a%:a%=0.;.|
00009a90  35 f5 61 25 2b 3d 31 3a  fd 61 6c 61 72 6d 24 28  |5.a%+=1:.alarm$(|
00009aa0  61 25 2c 30 29 3d 22 22  84 61 6c 61 72 6d 69 64  |a%,0)="".alarmid|
00009ab0  24 28 61 25 29 3d 41 24  84 61 25 3d 61 6c 6d 61  |$(a%)=A$.a%=alma|
00009ac0  78 25 0d 3c 00 28 e7 61  25 3d 61 6c 6d 61 78 25  |x%.<.(.a%=almax%|
00009ad0  8c f2 68 61 6c 74 28 a4  6d 73 67 30 28 22 45 61  |..halt(.msg0("Ea|
00009ae0  6c 61 72 6d 22 29 29 3a  3d 30 0d 3c 0a 07 3d 61  |larm")):=0.<..=a|
00009af0  25 0d 3c 14 04 0d 3c 1e  18 dd a4 74 66 31 30 28  |%.<...<....tf10(|
00009b00  41 25 29 3a 3d 2d 28 41  25 3c 3e 30 29 0d 3c 28  |A%):=-(A%<>0).<(|
00009b10  04 0d 3c 32 15 dd f2 63  61 6e 63 65 6c 61 6c 61  |..<2...cancelala|
00009b20  72 6d 28 43 24 29 0d 3c  3c 0c ea 61 25 3a 61 25  |rm(C$).<<..a%:a%|
00009b30  3d 30 0d 3c 46 25 f5 61  25 2b 3d 31 3a fd 61 6c  |=0.<F%.a%+=1:.al|
00009b40  61 72 6d 69 64 24 28 61  25 29 3d 43 24 84 61 25  |armid$(a%)=C$.a%|
00009b50  3d 61 6c 6d 61 78 25 0d  3c 50 3f e7 61 6c 61 72  |=almax%.<P?.alar|
00009b60  6d 69 64 24 28 61 25 29  3d 43 24 20 8c 61 6c 61  |mid$(a%)=C$ .ala|
00009b70  72 6d 24 28 61 25 2c 30  29 3d 22 22 3a f2 6c 6f  |rm$(a%,0)="":.lo|
00009b80  67 28 a4 6d 73 67 31 28  22 41 63 61 6e 63 65 6c  |g(.msg1("Acancel|
00009b90  22 2c 43 24 29 29 0d 3c  5a 05 e1 0d 3c 64 04 0d  |",C$)).<Z...<d..|
00009ba0  3c 6e 14 dd a4 64 65 63  6f 64 65 74 69 6d 65 28  |<n...decodetime(|
00009bb0  43 24 29 0d 3c 78 3e ea  6c 25 2c 6d 25 2c 68 72  |C$).<x>.l%,m%,hr|
00009bc0  25 2c 6d 69 25 2c 73 63  25 2c 61 64 64 25 2c 72  |%,mi%,sc%,add%,r|
00009bd0  25 2c 6e 6f 77 25 2c 6e  68 72 25 2c 6e 6d 69 25  |%,now%,nhr%,nmi%|
00009be0  2c 6e 73 65 25 2c 77 61  69 74 25 2c 74 6e 6f 77  |,nse%,wait%,tnow|
00009bf0  25 0d 3c 82 28 e7 c0 43  24 2c 31 29 3d 22 2b 22  |%.<.(..C$,1)="+"|
00009c00  8c 61 64 64 25 3d b9 3a  43 24 3d c1 43 24 2c 32  |.add%=.:C$=.C$,2|
00009c10  29 20 8b 61 64 64 25 3d  a3 0d 3c 8c 17 6c 25 3d  |) .add%=..<..l%=|
00009c20  a7 43 24 2c 22 3a 22 29  3a e7 6c 25 3e 30 20 8c  |.C$,":"):.l%>0 .|
00009c30  0d 3c 96 1e 20 20 6d 25  3d a7 43 24 2c 22 3a 22  |.<..  m%=.C$,":"|
00009c40  2c 6c 25 2b 31 29 3a e7  6d 25 3e 30 20 8c 0d 3c  |,l%+1):.m%>0 ..<|
00009c50  a0 16 20 20 20 20 68 72  25 3d bb c0 43 24 2c 6c  |..    hr%=..C$,l|
00009c60  25 2d 31 29 0d 3c aa 1b  20 20 20 20 6d 69 25 3d  |%-1).<..    mi%=|
00009c70  bb c1 43 24 2c 6c 25 2b  31 2c 6d 25 2d 31 29 0d  |..C$,l%+1,m%-1).|
00009c80  3c b4 1b 20 20 20 20 73  63 25 3d bb c1 43 24 2c  |<..    sc%=..C$,|
00009c90  6d 25 2b 31 2c 6d 25 2b  33 29 0d 3c be 09 20 20  |m%+1,m%+3).<..  |
00009ca0  20 20 cc 0d 3c c8 0f 20  20 20 20 e7 61 64 64 25  |  ..<..    .add%|
00009cb0  20 8c 0d 3c d2 32 20 20  20 20 20 20 68 72 25 3d  | ..<.2      hr%=|
00009cc0  30 3a 6d 69 25 3d bb c0  43 24 2c 6c 25 2d 31 29  |0:mi%=..C$,l%-1)|
00009cd0  3a 73 63 25 3d bb c1 43  24 2c 6c 25 2b 31 2c 6c  |:sc%=..C$,l%+1,l|
00009ce0  25 2b 33 29 0d 3c dc 0b  20 20 20 20 20 20 cc 0d  |%+3).<..      ..|
00009cf0  3c e6 32 20 20 20 20 20  20 73 63 25 3d 30 3a 68  |<.2      sc%=0:h|
00009d00  72 25 3d bb c0 43 24 2c  6c 25 2d 31 29 3a 6d 69  |r%=..C$,l%-1):mi|
00009d10  25 3d bb c1 43 24 2c 6c  25 2b 31 2c 6c 25 2b 33  |%=..C$,l%+1,l%+3|
00009d20  29 0d 3c f0 09 20 20 20  20 cd 0d 3c fa 07 20 20  |).<..    ..<..  |
00009d30  cd 0d 3d 04 07 20 20 cc  0d 3d 0e 3d 20 20 e7 61  |..=..  ..=.=  .a|
00009d40  64 64 25 20 8c 68 72 25  3d 30 3a 6d 69 25 3d 30  |dd% .hr%=0:mi%=0|
00009d50  3a 73 63 25 3d bb c0 43  24 2c 32 29 20 8b 73 63  |:sc%=..C$,2) .sc|
00009d60  25 3d 30 3a 6d 69 25 3d  30 3a 68 72 25 3d bb c0  |%=0:mi%=0:hr%=..|
00009d70  43 24 2c 32 29 0d 3d 18  05 cd 0d 3d 22 21 c8 99  |C$,2).=....="!..|
00009d80  22 4f 53 5f 52 65 61 64  4d 6f 6e 6f 74 6f 6e 69  |"OS_ReadMonotoni|
00009d90  63 54 69 6d 65 22 b8 6e  6f 77 25 0d 3d 2c 0b e7  |cTime".now%.=,..|
00009da0  61 64 64 25 20 8c 0d 3d  36 29 20 20 72 25 3d 6e  |add% ..=6)  r%=n|
00009db0  6f 77 25 2b 31 30 30 2a  73 63 25 2b 36 30 30 30  |ow%+100*sc%+6000|
00009dc0  2a 6d 69 25 2b 33 36 30  30 30 30 2a 68 72 25 0d  |*mi%+360000*hr%.|
00009dd0  3d 40 07 20 20 cc 0d 3d  4a 1d 20 20 3f 71 25 3d  |=@.  ..=J.  ?q%=|
00009de0  33 3a c8 99 22 4f 53 5f  57 6f 72 64 22 2c 31 34  |3:.."OS_Word",14|
00009df0  2c 71 25 0d 3d 54 4b 20  20 c8 99 22 4f 53 5f 43  |,q%.=TK  .."OS_C|
00009e00  6f 6e 76 65 72 74 44 61  74 65 41 6e 64 54 69 6d  |onvertDateAndTim|
00009e10  65 22 2c 71 25 2c 74 6d  70 25 2c 32 35 36 2c 22  |e",q%,tmp%,256,"|
00009e20  25 32 34 25 4d 49 25 53  45 22 b8 6c 25 2c 6d 25  |%24%MI%SE".l%,m%|
00009e30  3a 6e 6f 77 24 3d a4 73  74 72 28 6c 25 29 0d 3d  |:now$=.str(l%).=|
00009e40  5e 34 20 20 6e 68 72 25  3d bb c0 6e 6f 77 24 2c  |^4  nhr%=..now$,|
00009e50  32 29 3a 6e 6d 69 25 3d  bb c1 6e 6f 77 24 2c 33  |2):nmi%=..now$,3|
00009e60  2c 32 29 3a 6e 73 65 25  3d bb c2 6e 6f 77 24 2c  |,2):nse%=..now$,|
00009e70  32 29 0d 3d 68 22 20 20  74 6e 6f 77 25 3d 6e 73  |2).=h"  tnow%=ns|
00009e80  65 25 2b 6e 6d 69 25 2a  36 30 2b 6e 68 72 25 2a  |e%+nmi%*60+nhr%*|
00009e90  33 36 30 30 0d 3d 72 42  20 20 77 61 69 74 25 3d  |3600.=rB  wait%=|
00009ea0  28 73 63 25 2b 6d 69 25  2a 36 30 2b 68 72 25 2a  |(sc%+mi%*60+hr%*|
00009eb0  33 36 30 30 29 2d 74 6e  6f 77 25 3a c8 95 77 61  |3600)-tnow%:..wa|
00009ec0  69 74 25 3c 30 3a 77 61  69 74 25 2b 3d 32 34 2a  |it%<0:wait%+=24*|
00009ed0  33 36 30 30 3a ce 0d 3d  7c 17 20 20 72 25 3d 6e  |3600:..=|.  r%=n|
00009ee0  6f 77 25 2b 77 61 69 74  25 2a 31 30 30 0d 3d 86  |ow%+wait%*100.=.|
00009ef0  05 cd 0d 3d 90 07 3d 72  25 0d 3d 9a 04 0d 3d a4  |...=..=r%.=...=.|
00009f00  0f dd f2 74 69 6d 65 61  6c 61 72 6d 0d 3d ae 0c  |...timealarm.=..|
00009f10  ea 63 25 3a 63 25 3d 30  0d 3d b8 0a f5 63 25 2b  |.c%:c%=0.=...c%+|
00009f20  3d 31 0d 3d c2 2e 20 20  e7 61 6c 61 72 6d 24 28  |=1.=..  .alarm$(|
00009f30  63 25 2c 30 29 3e 22 22  20 80 74 69 6d 65 25 3e  |c%,0)>"" .time%>|
00009f40  61 6c 61 72 6d 74 69 6d  65 25 28 63 25 29 20 8c  |alarmtime%(c%) .|
00009f50  0d 3d cc 29 20 20 20 20  63 6f 6d 24 3d 61 6c 61  |.=.)    com$=ala|
00009f60  72 6d 24 28 63 25 2c 30  29 3a 61 6c 61 72 6d 24  |rm$(c%,0):alarm$|
00009f70  28 63 25 2c 30 29 3d 22  22 0d 3d d6 39 20 20 20  |(c%,0)="".=.9   |
00009f80  20 e7 a7 61 6c 61 72 6d  24 28 63 25 2c 31 29 2c  | ..alarm$(c%,1),|
00009f90  22 2f 72 65 70 65 61 74  22 29 3e 30 20 8c f2 61  |"/repeat")>0 ..a|
00009fa0  6c 61 72 6d 28 61 6c 61  72 6d 24 28 63 25 2c 31  |larm(alarm$(c%,1|
00009fb0  29 29 0d 3d e0 19 20 20  20 20 f2 61 64 64 65 76  |)).=..    .addev|
00009fc0  65 6e 74 28 63 6f 6d 24  2c 31 29 0d 3d ea 07 20  |ent(com$,1).=.. |
00009fd0  20 cd 0d 3d f4 0e fd 63  25 3d 61 6c 6d 61 78 25  | ..=...c%=almax%|
00009fe0  0d 3d fe 15 63 68 65 63  6b 61 6c 61 72 6d 25 3d  |.=..checkalarm%=|
00009ff0  74 69 6d 65 25 0d 3e 08  05 e1 0d 3e 12 04 0d 3e  |time%.>....>...>|
0000a000  1c 0f dd f2 6c 69 6e 65  61 6c 61 72 6d 0d 3e 26  |....linealarm.>&|
0000a010  0b ea 6c 31 25 2c 4a 25  0d 3e 30 0d e7 64 65 76  |..l1%,J%.>0..dev|
0000a020  69 63 65 25 8c 0d 3e 3a  18 20 20 4a 25 3d a4 64  |ice%..>:.  J%=.d|
0000a030  28 39 2c 70 6f 72 74 25  2c 30 2c 30 29 0d 3e 44  |(9,port%,0,0).>D|
0000a040  14 20 20 e7 4a 25 3c 3e  6f 6c 64 6c 69 6e 65 25  |.  .J%<>oldline%|
0000a050  8c 0d 3e 4e 29 20 20 20  20 6f 6c 64 6c 69 6e 65  |..>N)    oldline|
0000a060  25 3d 4a 25 3a e7 28 4a  25 80 31 29 8c 74 24 3d  |%=J%:.(J%.1).t$=|
0000a070  22 8f 22 8b 74 24 3d 22  20 22 0d 3e 58 1f 20 20  |".".t$=" ".>X.  |
0000a080  20 20 e7 28 4a 25 80 32  29 8c 74 24 2b 3d 22 8f  |  .(J%.2).t$+=".|
0000a090  22 8b 74 24 2b 3d 22 20  22 0d 3e 62 1f 20 20 20  |".t$+=" ".>b.   |
0000a0a0  20 e7 28 4a 25 80 38 29  8c 74 24 2b 3d 22 8f 22  | .(J%.8).t$+="."|
0000a0b0  8b 74 24 2b 3d 22 20 22  0d 3e 6c 20 20 20 20 20  |.t$+=" ".>l     |
0000a0c0  f2 75 70 64 5f 69 63 6f  6e 28 73 74 61 74 75 73  |.upd_icon(status|
0000a0d0  25 2c 31 30 2c 74 24 29  0d 3e 76 07 20 20 cd 0d  |%,10,t$).>v.  ..|
0000a0e0  3e 80 0e 20 20 e3 6c 31  25 3d 30 b8 33 0d 3e 8a  |>..  .l1%=0.3.>.|
0000a0f0  59 20 20 20 20 e7 61 6c  69 6e 65 24 28 6c 31 25  |Y    .aline$(l1%|
0000a100  29 3e 22 22 80 28 4a 25  80 28 31 3c 3c 6c 31 25  |)>"".(J%.(1<<l1%|
0000a110  29 29 3d 61 6c 69 6e 65  25 28 6c 31 25 29 8c f2  |))=aline%(l1%)..|
0000a120  61 64 64 65 76 65 6e 74  28 61 6c 69 6e 65 24 28  |addevent(aline$(|
0000a130  6c 31 25 29 2c 32 29 3a  61 6c 69 6e 65 24 28 6c  |l1%),2):aline$(l|
0000a140  31 25 29 3d 22 22 0d 3e  94 0a 20 20 ed 6c 31 25  |1%)="".>..  .l1%|
0000a150  0d 3e 9e 07 20 20 cc 0d  3e a8 35 20 20 e7 6f 6c  |.>..  ..>.5  .ol|
0000a160  64 6c 69 6e 65 25 3e 30  8c 6f 6c 64 6c 69 6e 65  |dline%>0.oldline|
0000a170  25 3d 30 3a f2 75 70 64  5f 69 63 6f 6e 28 73 74  |%=0:.upd_icon(st|
0000a180  61 74 75 73 25 2c 31 35  2c 22 22 29 0d 3e b2 05  |atus%,15,"").>..|
0000a190  cd 0d 3e bc 05 e1 0d 3e  c6 04 0d 3e d0 0e dd f2  |..>....>...>....|
0000a1a0  6c 69 73 74 28 41 24 29  0d 3e da 0a ea 42 24 2c  |list(A$).>...B$,|
0000a1b0  43 24 0d 3e e4 1f 42 24  3d a4 70 61 72 61 6d 28  |C$.>..B$=.param(|
0000a1c0  41 24 29 3a 43 24 3d a4  76 61 6c 75 65 28 42 24  |A$):C$=.value(B$|
0000a1d0  29 0d 3e ee 0d c8 8e c0  42 24 2c 32 29 ca 0d 3e  |).>.....B$,2)..>|
0000a1e0  f8 17 20 20 c9 22 61 6c  22 3a f2 6c 69 73 74 61  |..  ."al":.lista|
0000a1f0  6c 61 72 6d 73 0d 3f 02  15 20 20 c9 22 6d 65 22  |larms.?..  ."me"|
0000a200  3a f2 6c 69 73 74 6d 65  6e 75 0d 3f 0c 16 20 20  |:.listmenu.?..  |
0000a210  c9 22 74 61 22 3a f2 6c  69 73 74 74 61 73 6b 73  |."ta":.listtasks|
0000a220  0d 3f 16 15 20 20 c9 22  76 61 22 3a f2 6c 69 73  |.?..  ."va":.lis|
0000a230  74 76 61 72 73 0d 3f 20  1b 20 20 c9 22 73 63 22  |tvars.? .  ."sc"|
0000a240  3a f2 6c 69 73 74 73 63  72 69 70 74 28 41 24 29  |:.listscript(A$)|
0000a250  0d 3f 2a 16 20 20 c9 22  66 69 22 3a f2 6c 69 73  |.?*.  ."fi":.lis|
0000a260  74 66 69 6c 65 73 0d 3f  34 13 20 20 c9 22 6a 75  |tfiles.?4.  ."ju|
0000a270  22 3a f2 6c 69 73 74 6a  74 0d 3f 3e 05 cb 0d 3f  |":.listjt.?>...?|
0000a280  48 05 e1 0d 3f 52 04 0d  3f 5c 10 dd f2 6c 69 73  |H...?R..?\...lis|
0000a290  74 61 6c 61 72 6d 73 0d  3f 66 0d ea 63 25 2c 41  |talarms.?f..c%,A|
0000a2a0  25 2c 41 24 0d 3f 70 38  f2 77 61 72 6e 5f 74 78  |%,A$.?p8.warn_tx|
0000a2b0  74 28 a4 6d 73 67 30 28  22 43 6f 6e 64 69 74 69  |t(.msg0("Conditi|
0000a2c0  6f 6e 22 29 2b 22 20 20  20 20 22 2b a4 6d 73 67  |on")+"    "+.msg|
0000a2d0  30 28 22 41 63 74 69 6f  6e 22 29 29 0d 3f 7a 10  |0("Action")).?z.|
0000a2e0  e3 63 25 3d 30 b8 61 6c  6d 61 78 25 0d 3f 84 18  |.c%=0.almax%.?..|
0000a2f0  20 20 e7 61 6c 61 72 6d  24 28 63 25 2c 30 29 3e  |  .alarm$(c%,0)>|
0000a300  22 22 20 8c 0d 3f 8e 25  20 20 20 20 41 25 3d 28  |"" ..?.%    A%=(|
0000a310  61 6c 61 72 6d 74 69 6d  65 25 28 63 25 29 2d 74  |alarmtime%(c%)-t|
0000a320  69 6d 65 25 29 81 31 30  30 0d 3f 98 27 20 20 20  |ime%).100.?.'   |
0000a330  20 41 24 3d 22 74 2b 22  2b c2 22 30 30 22 2b c3  | A$="t+"+."00"+.|
0000a340  28 41 25 81 33 36 30 30  29 2c 32 29 2b 22 3a 22  |(A%.3600),2)+":"|
0000a350  0d 3f a2 28 20 20 20 20  41 24 2b 3d c2 22 30 30  |.?.(    A$+=."00|
0000a360  22 2b c3 28 28 41 25 83  33 36 30 30 29 81 36 30  |"+.((A%.3600).60|
0000a370  29 2c 32 29 2b 22 3a 22  0d 3f ac 1d 20 20 20 20  |),2)+":".?..    |
0000a380  41 24 2b 3d c2 22 30 30  22 2b c3 28 41 25 83 36  |A$+=."00"+.(A%.6|
0000a390  30 29 2c 32 29 0d 3f b6  36 20 20 20 20 f2 66 5f  |0),2).?.6    .f_|
0000a3a0  6c 69 73 74 28 41 24 2c  61 6c 61 72 6d 24 28 63  |list(A$,alarm$(c|
0000a3b0  25 2c 31 29 2b 22 20 28  22 2b 61 6c 61 72 6d 69  |%,1)+" ("+alarmi|
0000a3c0  64 24 28 63 25 29 2b 22  29 22 29 0d 3f c0 07 20  |d$(c%)+")").?.. |
0000a3d0  20 cd 0d 3f ca 05 ed 0d  3f d4 0f e3 63 25 3d 30  | ..?....?...c%=0|
0000a3e0  b8 69 6d 61 78 25 0d 3f  de 4b 20 20 e7 69 62 61  |.imax%.?.K  .iba|
0000a3f0  72 24 28 63 25 29 3e 22  22 8c f2 66 5f 6c 69 73  |r$(c%)>""..f_lis|
0000a400  74 28 a4 6d 73 67 30 28  22 49 63 6c 69 63 6b 22  |t(.msg0("Iclick"|
0000a410  29 2c 69 62 61 72 24 28  63 25 29 2b 22 20 28 22  |),ibar$(c%)+" ("|
0000a420  2b 69 62 61 72 69 64 24  28 63 25 29 2b 22 29 22  |+ibarid$(c%)+")"|
0000a430  29 0d 3f e8 4c 20 20 e7  69 66 69 6c 65 24 28 63  |).?.L  .ifile$(c|
0000a440  25 29 3e 22 22 8c f2 66  5f 6c 69 73 74 28 a4 6d  |%)>""..f_list(.m|
0000a450  73 67 30 28 22 49 66 69  6c 65 22 29 2c 69 66 69  |sg0("Ifile"),ifi|
0000a460  6c 65 24 28 63 25 29 2b  22 20 28 22 2b 69 62 61  |le$(c%)+" ("+iba|
0000a470  72 69 64 24 28 63 25 29  2b 22 29 22 29 0d 3f f2  |rid$(c%)+")").?.|
0000a480  05 ed 0d 3f fc 19 f2 66  5f 6c 69 73 74 28 22 73  |...?...f_list("s|
0000a490  74 6f 70 22 2c 73 74 6f  70 24 29 0d 40 06 3e e7  |top",stop$).@.>.|
0000a4a0  61 6c 69 6e 65 24 28 30  29 3e 22 22 8c f2 66 5f  |aline$(0)>""..f_|
0000a4b0  6c 69 73 74 28 22 44 54  52 22 2b 22 20 28 22 2b  |list("DTR"+" ("+|
0000a4c0  c3 61 6c 69 6e 65 25 28  30 29 2b 22 29 22 2c 61  |.aline%(0)+")",a|
0000a4d0  6c 69 6e 65 24 28 30 29  29 0d 40 10 3e e7 61 6c  |line$(0)).@.>.al|
0000a4e0  69 6e 65 24 28 31 29 3e  22 22 8c f2 66 5f 6c 69  |ine$(1)>""..f_li|
0000a4f0  73 74 28 22 44 53 52 22  2b 22 20 28 22 2b c3 61  |st("DSR"+" ("+.a|
0000a500  6c 69 6e 65 25 28 31 29  2b 22 29 22 2c 61 6c 69  |line%(1)+")",ali|
0000a510  6e 65 24 28 31 29 29 0d  40 1a 3e e7 61 6c 69 6e  |ne$(1)).@.>.alin|
0000a520  65 24 28 32 29 3e 22 22  8c f2 66 5f 6c 69 73 74  |e$(2)>""..f_list|
0000a530  28 22 52 4e 47 22 2b 22  20 28 22 2b c3 61 6c 69  |("RNG"+" ("+.ali|
0000a540  6e 65 25 28 32 29 2b 22  29 22 2c 61 6c 69 6e 65  |ne%(2)+")",aline|
0000a550  24 28 32 29 29 0d 40 24  3e e7 61 6c 69 6e 65 24  |$(2)).@$>.aline$|
0000a560  28 33 29 3e 22 22 8c f2  66 5f 6c 69 73 74 28 22  |(3)>""..f_list("|
0000a570  44 43 44 22 2b 22 20 28  22 2b c3 61 6c 69 6e 65  |DCD"+" ("+.aline|
0000a580  25 28 33 29 2b 22 29 22  2c 61 6c 69 6e 65 24 28  |%(3)+")",aline$(|
0000a590  33 29 29 0d 40 2e 05 e1  0d 40 38 04 0d 40 42 13  |3)).@....@8..@B.|
0000a5a0  dd f2 66 5f 6c 69 73 74  28 41 24 2c 42 24 29 0d  |..f_list(A$,B$).|
0000a5b0  40 4c 2c e7 42 24 3e 22  22 8c f2 77 61 72 6e 5f  |@L,.B$>""..warn_|
0000a5c0  74 78 74 28 22 20 22 2b  41 24 2b c4 31 33 2d a9  |txt(" "+A$+.13-.|
0000a5d0  41 24 2c 22 20 22 29 2b  42 24 29 0d 40 56 05 e1  |A$," ")+B$).@V..|
0000a5e0  0d 40 60 04 0d 40 6a 11  dd a4 69 63 6f 6e 62 61  |.@`..@j...iconba|
0000a5f0  72 28 41 24 29 0d 40 74  19 ea 72 25 2c 69 64 24  |r(A$).@t..r%,id$|
0000a600  2c 61 63 74 24 2c 73 24  2c 42 24 2c 43 24 0d 40  |,act$,s$,B$,C$.@|
0000a610  7e 18 69 64 24 3d 22 22  3a 61 63 74 24 3d 22 22  |~.id$="":act$=""|
0000a620  3a 73 24 3d 22 22 0d 40  88 05 f5 0d 40 92 13 20  |:s$="".@....@.. |
0000a630  20 42 24 3d a4 70 61 72  61 6d 28 41 24 29 0d 40  | B$=.param(A$).@|
0000a640  9c 12 20 20 e7 c0 42 24  2c 31 29 3d 22 2f 22 8c  |..  ..B$,1)="/".|
0000a650  0d 40 a6 15 20 20 20 20  43 24 3d a4 76 61 6c 75  |.@..    C$=.valu|
0000a660  65 28 42 24 29 0d 40 b0  11 20 20 20 20 c8 8e c0  |e(B$).@..    ...|
0000a670  42 24 2c 32 29 ca 0d 40  ba 24 20 20 20 20 20 20  |B$,2)..@.$      |
0000a680  c9 22 66 69 22 3a 72 25  3d a4 6d 65 72 67 65 73  |."fi":r%=.merges|
0000a690  70 72 69 74 65 73 28 43  24 29 0d 40 c4 1d 20 20  |prites(C$).@..  |
0000a6a0  20 20 20 20 c9 22 69 64  22 2c 22 6e 61 6d 65 22  |    ."id","name"|
0000a6b0  3a 69 64 24 3d 43 24 0d  40 ce 17 20 20 20 20 20  |:id$=C$.@..     |
0000a6c0  20 c9 22 61 63 22 3a 61  63 74 24 3d 43 24 0d 40  | ."ac":act$=C$.@|
0000a6d0  d8 27 20 20 20 20 20 20  c9 22 63 61 22 2c 22 64  |.'      ."ca","d|
0000a6e0  65 22 3a 72 25 3d a4 63  61 6e 63 65 6c 69 63 6f  |e":r%=.cancelico|
0000a6f0  6e 28 43 24 29 0d 40 e2  19 20 20 20 20 20 20 c9  |n(C$).@..      .|
0000a700  22 66 72 22 3a 72 25 3d  a4 73 66 72 65 65 0d 40  |"fr":r%=.sfree.@|
0000a710  ec 09 20 20 20 20 cb 0d  40 f6 07 20 20 cc 0d 41  |..    ..@..  ..A|
0000a720  00 0d 20 20 20 20 73 24  3d 42 24 0d 41 0a 07 20  |..    s$=B$.A.. |
0000a730  20 cd 0d 41 14 0a fd 41  24 3d 22 22 0d 41 1e 2c  | ..A...A$="".A.,|
0000a740  20 20 e7 69 64 24 3e 22  22 80 73 24 3e 22 22 8c  |  .id$>"".s$>"".|
0000a750  72 25 3d a4 61 64 64 69  63 6f 6e 28 73 24 2c 69  |r%=.addicon(s$,i|
0000a760  64 24 2c 61 63 74 24 29  0d 41 28 07 3d 72 25 0d  |d$,act$).A(.=r%.|
0000a770  41 32 04 0d 41 3c 10 dd  a4 69 63 6f 6e 69 64 28  |A2..A<...iconid(|
0000a780  41 24 29 0d 41 46 0c ea  61 25 3a 61 25 3d 30 0d  |A$).AF..a%:a%=0.|
0000a790  41 50 23 f5 61 25 2b 3d  31 3a fd 69 62 61 72 69  |AP#.a%+=1:.ibari|
0000a7a0  64 24 28 61 25 29 3d 41  24 84 61 25 3d 69 6d 61  |d$(a%)=A$.a%=ima|
0000a7b0  78 25 0d 41 5a 2d e7 61  25 3d 69 6d 61 78 25 84  |x%.AZ-.a%=imax%.|
0000a7c0  41 24 3d 22 22 8c f2 6c  6f 67 28 a4 6d 73 67 30  |A$=""..log(.msg0|
0000a7d0  28 22 45 69 63 6f 6e 31  22 29 29 3a 3d 2d 31 0d  |("Eicon1")):=-1.|
0000a7e0  41 64 07 3d 61 25 0d 41  6e 04 0d 41 78 13 dd a4  |Ad.=a%.An..Ax...|
0000a7f0  6e 65 77 69 63 6f 6e 69  64 28 41 24 29 0d 41 82  |newiconid(A$).A.|
0000a800  0c ea 61 25 3a 61 25 3d  30 0d 41 8c 2f f5 61 25  |..a%:a%=0.A./.a%|
0000a810  2b 3d 31 3a fd 69 62 61  72 69 64 24 28 61 25 29  |+=1:.ibarid$(a%)|
0000a820  3d 41 24 84 69 62 61 72  25 28 61 25 29 3d 30 84  |=A$.ibar%(a%)=0.|
0000a830  61 25 3d 69 6d 61 78 25  0d 41 96 2d e7 61 25 3d  |a%=imax%.A.-.a%=|
0000a840  69 6d 61 78 25 84 41 24  3d 22 22 8c f2 6c 6f 67  |imax%.A$=""..log|
0000a850  28 a4 6d 73 67 30 28 22  45 69 63 6f 6e 31 22 29  |(.msg0("Eicon1")|
0000a860  29 3a 3d 2d 31 0d 41 a0  07 3d 61 25 0d 41 aa 04  |):=-1.A..=a%.A..|
0000a870  0d 41 b4 1a dd a4 61 64  64 69 63 6f 6e 28 41 24  |.A....addicon(A$|
0000a880  2c 69 64 24 2c 61 63 74  24 29 0d 41 be 0a ea 61  |,id$,act$).A...a|
0000a890  25 2c 5a 25 0d 41 c8 16  61 25 3d a4 6e 65 77 69  |%,Z%.A..a%=.newi|
0000a8a0  63 6f 6e 69 64 28 69 64  24 29 0d 41 d2 0c e7 61  |conid(id$).A...a|
0000a8b0  25 3c 30 8c 3d 30 0d 41  dc 0b e7 41 24 3e 22 22  |%<0.=0.A...A$>""|
0000a8c0  8c 0d 41 e6 2b 20 20 e7  69 62 61 72 69 64 24 28  |..A.+  .ibarid$(|
0000a8d0  61 25 29 3d 69 64 24 20  8c 5a 25 3d a4 63 61 6e  |a%)=id$ .Z%=.can|
0000a8e0  63 65 6c 69 63 6f 6e 28  69 64 24 29 0d 41 f0 1d  |celicon(id$).A..|
0000a8f0  20 20 f2 6c 6f 67 28 22  41 64 64 69 6e 67 20 69  |  .log("Adding i|
0000a900  63 6f 6e 20 22 2b 41 24  29 0d 41 fa 2a 20 20 69  |con "+A$).A.*  i|
0000a910  62 61 72 25 28 61 25 29  3d a4 69 63 28 41 24 2c  |bar%(a%)=.ic(A$,|
0000a920  61 25 29 3a 69 62 61 72  69 64 24 28 61 25 29 3d  |a%):ibarid$(a%)=|
0000a930  69 64 24 0d 42 04 05 cd  0d 42 0e 12 69 62 61 72  |id$.B....B..ibar|
0000a940  24 28 61 25 29 3d 61 63  74 24 0d 42 18 15 3d a4  |$(a%)=act$.B..=.|
0000a950  74 66 31 30 28 69 62 61  72 25 28 61 25 29 29 0d  |tf10(ibar%(a%)).|
0000a960  42 22 04 0d 42 2c 14 dd  a4 63 61 6e 63 65 6c 69  |B"..B,...canceli|
0000a970  63 6f 6e 28 41 24 29 0d  42 36 07 ea 61 25 0d 42  |con(A$).B6..a%.B|
0000a980  40 12 61 25 3d a4 69 63  6f 6e 69 64 28 41 24 29  |@.a%=.iconid(A$)|
0000a990  0d 42 4a 22 e7 61 25 3c  30 8c f2 6c 6f 67 28 a4  |.BJ".a%<0..log(.|
0000a9a0  6d 73 67 30 28 22 45 69  63 6f 6e 31 22 29 29 3a  |msg0("Eicon1")):|
0000a9b0  3d 30 0d 42 54 29 e7 69  62 61 72 25 28 61 25 29  |=0.BT).ibar%(a%)|
0000a9c0  3c 31 8c f2 6c 6f 67 28  a4 6d 73 67 30 28 22 45  |<1..log(.msg0("E|
0000a9d0  69 63 6f 6e 32 22 29 29  3a 3d 30 0d 42 5e 42 21  |icon2")):=0.B^B!|
0000a9e0  69 63 6f 6e 73 25 3d 2d  32 3a 69 63 6f 6e 73 25  |icons%=-2:icons%|
0000a9f0  21 34 3d 69 62 61 72 25  28 61 25 29 3a c8 99 22  |!4=ibar%(a%):.."|
0000aa00  58 57 69 6d 70 5f 44 65  6c 65 74 65 49 63 6f 6e  |XWimp_DeleteIcon|
0000aa10  22 2c 2c 69 63 6f 6e 73  25 b8 3b 46 25 0d 42 68  |",,icons%.;F%.Bh|
0000aa20  1e 69 62 61 72 25 28 61  25 29 3d 30 3a 69 62 61  |.ibar%(a%)=0:iba|
0000aa30  72 69 64 24 28 61 25 29  3d 22 22 0d 42 72 0e 3d  |rid$(a%)="".Br.=|
0000aa40  a4 74 66 31 30 28 46 25  29 0d 42 7c 04 0d 42 86  |.tf10(F%).B|..B.|
0000aa50  16 dd f2 69 66 69 6c 65  28 5a 25 2c 66 24 2c 74  |...ifile(Z%,f$,t|
0000aa60  79 25 29 0d 42 90 2b f2  73 65 74 76 28 22 24 74  |y%).B.+.setv("$t|
0000aa70  79 70 65 22 2c c3 7e 74  79 25 29 3a f2 73 65 74  |ype",.~ty%):.set|
0000aa80  76 28 22 24 66 69 6c 65  22 2c 2b 66 24 29 0d 42  |v("$file",+f$).B|
0000aa90  9a 1b f2 61 64 64 65 76  65 6e 74 28 69 66 69 6c  |...addevent(ifil|
0000aaa0  65 24 28 5a 25 29 2c 37  29 0d 42 a4 05 e1 0d 42  |e$(Z%),7).B....B|
0000aab0  ae 04 0d 42 b8 0d dd f2  73 65 74 28 41 24 29 0d  |...B....set(A$).|
0000aac0  42 c2 10 ea 6c 25 2c 6d  25 2c 42 24 2c 43 24 0d  |B...l%,m%,B$,C$.|
0000aad0  42 cc 1f 42 24 3d a4 70  61 72 61 6d 28 41 24 29  |B..B$=.param(A$)|
0000aae0  3a 43 24 3d a4 70 61 72  61 6d 28 41 24 29 0d 42  |:C$=.param(A$).B|
0000aaf0  d6 10 f2 73 65 74 76 28  42 24 2c 43 24 29 0d 42  |...setv(B$,C$).B|
0000ab00  e0 05 e1 0d 42 ea 04 0d  42 f4 11 dd f2 73 65 74  |....B...B....set|
0000ab10  76 28 42 24 2c 43 24 29  0d 42 fe 1c ea 6c 25 2c  |v(B$,C$).B...l%,|
0000ab20  70 25 3a 70 25 3d 2d 31  3a e3 6c 25 3d 30 b8 76  |p%:p%=-1:.l%=0.v|
0000ab30  6d 61 78 25 0d 43 08 4f  20 20 e7 76 61 72 24 28  |max%.C.O  .var$(|
0000ab40  6c 25 2c 30 29 3d 42 24  84 76 61 72 24 28 6c 25  |l%,0)=B$.var$(l%|
0000ab50  2c 30 29 3d 22 22 8c 76  61 72 24 28 6c 25 2c 30  |,0)="".var$(l%,0|
0000ab60  29 3d 42 24 3a 76 61 72  24 28 6c 25 2c 31 29 3d  |)=B$:var$(l%,1)=|
0000ab70  43 24 3a 70 25 3d 6c 25  3a 6c 25 3d 76 6d 61 78  |C$:p%=l%:l%=vmax|
0000ab80  25 2b 31 0d 43 12 05 ed  0d 43 1c 21 e7 42 24 3d  |%+1.C....C.!.B$=|
0000ab90  22 69 70 61 64 64 72 65  73 73 22 8c f2 75 70 64  |"ipaddress"..upd|
0000aba0  61 74 65 69 70 28 43 24  29 0d 43 26 1f e7 70 25  |ateip(C$).C&..p%|
0000abb0  3d 2d 31 8c f2 68 61 6c  74 28 a4 6d 73 67 30 28  |=-1..halt(.msg0(|
0000abc0  22 45 76 61 72 22 29 29  0d 43 30 05 e1 0d 43 3a  |"Evar")).C0...C:|
0000abd0  04 0d 43 44 0f dd f2 75  6e 73 65 74 28 41 24 29  |..CD...unset(A$)|
0000abe0  0d 43 4e 0a ea 6c 25 2c  42 24 0d 43 58 11 42 24  |.CN..l%,B$.CX.B$|
0000abf0  3d a4 70 61 72 61 6d 28  41 24 29 0d 43 62 0f e3  |=.param(A$).Cb..|
0000ac00  6c 25 3d 30 b8 76 6d 61  78 25 0d 43 6c 31 20 20  |l%=0.vmax%.Cl1  |
0000ac10  e7 76 61 72 24 28 6c 25  2c 30 29 3d 42 24 20 8c  |.var$(l%,0)=B$ .|
0000ac20  76 61 72 24 28 6c 25 2c  30 29 3d 22 22 3a 76 61  |var$(l%,0)="":va|
0000ac30  72 24 28 6c 25 2c 31 29  3d 22 22 0d 43 76 05 ed  |r$(l%,1)="".Cv..|
0000ac40  0d 43 80 25 e7 42 24 3d  22 69 70 61 64 64 72 65  |.C.%.B$="ipaddre|
0000ac50  73 73 22 8c f2 70 72 69  6e 74 28 22 22 2c 22 22  |ss"..print("",""|
0000ac60  2c 22 20 22 29 0d 43 8a  05 e1 0d 43 94 04 0d 43  |," ").C....C...C|
0000ac70  9e 0c dd a4 76 76 28 41  24 29 0d 43 a8 13 ea 6c  |....vv(A$).C...l|
0000ac80  25 2c 74 24 2c 42 24 3a  74 24 3d 22 22 0d 43 b2  |%,t$,B$:t$="".C.|
0000ac90  11 42 24 3d a4 70 61 72  61 6d 28 41 24 29 0d 43  |.B$=.param(A$).C|
0000aca0  bc 0f e3 6c 25 3d 30 b8  76 6d 61 78 25 0d 43 c6  |...l%=0.vmax%.C.|
0000acb0  2c 20 20 e7 76 61 72 24  28 6c 25 2c 30 29 3d 42  |,  .var$(l%,0)=B|
0000acc0  24 20 8c 74 24 3d 76 61  72 24 28 6c 25 2c 31 29  |$ .t$=var$(l%,1)|
0000acd0  3a 6c 25 3d 76 6d 61 78  25 0d 43 d0 05 ed 0d 43  |:l%=vmax%.C....C|
0000ace0  da 07 3d 74 24 0d 43 e4  04 0d 43 ee 0e dd f2 6c  |..=t$.C...C....l|
0000acf0  69 73 74 76 61 72 73 0d  43 f8 07 ea 63 25 0d 44  |istvars.C...c%.D|
0000ad00  02 38 f2 77 61 72 6e 5f  74 78 74 28 a4 6d 73 67  |.8.warn_txt(.msg|
0000ad10  30 28 22 56 61 72 69 61  62 6c 65 22 29 2b 22 20  |0("Variable")+" |
0000ad20  20 20 20 20 20 22 2b a4  6d 73 67 30 28 22 56 61  |     "+.msg0("Va|
0000ad30  6c 75 65 22 29 29 0d 44  0c 0f e3 63 25 3d 30 b8  |lue")).D...c%=0.|
0000ad40  76 6d 61 78 25 0d 44 16  33 20 20 e7 76 61 72 24  |vmax%.D.3  .var$|
0000ad50  28 63 25 2c 30 29 3e 22  22 8c f2 66 5f 6c 69 73  |(c%,0)>""..f_lis|
0000ad60  74 28 76 61 72 24 28 63  25 2c 30 29 2c 76 61 72  |t(var$(c%,0),var|
0000ad70  24 28 63 25 2c 31 29 29  0d 44 20 05 ed 0d 44 2a  |$(c%,1)).D ...D*|
0000ad80  05 e1 0d 44 34 04 0d 44  3e 0f dd a4 64 72 6f 70  |...D4..D>...drop|
0000ad90  6c 69 6e 65 73 0d 44 48  07 ea 4a 25 0d 44 52 11  |lines.DH..J%.DR.|
0000ada0  e7 64 65 76 69 63 65 25  3d 30 8c 3d 30 0d 44 5c  |.device%=0.=0.D\|
0000adb0  22 f2 70 72 69 6e 74 28  22 22 2c a4 6d 73 67 30  |".print("",.msg0|
0000adc0  28 22 44 65 76 44 72 6f  70 22 29 2c 22 22 29 0d  |("DevDrop"),"").|
0000add0  44 66 16 4a 25 3d a4 64  28 38 2c 70 6f 72 74 25  |Df.J%=.d(8,port%|
0000ade0  2c 30 2c 30 29 0d 44 70  0e f2 70 6f 6c 6c 28 31  |,0,0).Dp..poll(1|
0000adf0  30 30 29 0d 44 7a 16 4a  25 3d a4 64 28 38 2c 70  |00).Dz.J%=.d(8,p|
0000ae00  6f 72 74 25 2c 33 2c 30  29 0d 44 84 06 3d 31 0d  |ort%,3,0).D..=1.|
0000ae10  44 8e 04 0d 44 98 17 dd  f2 67 6f 74 6f 28 41 24  |D...D....goto(A$|
0000ae20  2c f8 20 73 74 61 67 65  25 29 0d 44 a2 13 ea 6c  |,. stage%).D...l|
0000ae30  25 2c 66 6c 61 67 25 2c  64 65 73 74 24 0d 44 ac  |%,flag%,dest$.D.|
0000ae40  22 6c 25 3d 30 3a 66 6c  61 67 25 3d 2d 31 3a 64  |"l%=0:flag%=-1:d|
0000ae50  65 73 74 24 3d a4 70 61  72 61 6d 28 41 24 29 0d  |est$=.param(A$).|
0000ae60  44 b6 05 f5 0d 44 c0 28  e7 6a 74 24 28 6c 25 29  |D....D.(.jt$(l%)|
0000ae70  3d 64 65 73 74 24 8c 66  6c 61 67 25 3d 6a 74 25  |=dest$.flag%=jt%|
0000ae80  28 6c 25 29 3a 6c 25 3d  6a 74 6c 25 0d 44 ca 13  |(l%):l%=jtl%.D..|
0000ae90  6c 25 2b 3d 31 3a fd 6c  25 3e 3d 6a 74 6c 25 0d  |l%+=1:.l%>=jtl%.|
0000aea0  44 d4 2b e7 66 6c 61 67  25 3c 30 8c f2 68 61 6c  |D.+.flag%<0..hal|
0000aeb0  74 28 a4 6d 73 67 31 28  22 45 6c 61 62 65 6c 22  |t(.msg1("Elabel"|
0000aec0  2c 64 65 73 74 24 29 29  3a e1 0d 44 de 10 73 74  |,dest$)):..D..st|
0000aed0  61 67 65 25 3d 66 6c 61  67 25 0d 44 e8 05 e1 0d  |age%=flag%.D....|
0000aee0  44 f2 04 0d 44 fc 18 dd  f2 67 6f 73 75 62 28 41  |D...D....gosub(A|
0000aef0  24 2c f8 20 73 74 61 67  65 25 29 0d 45 06 15 ea  |$,. stage%).E...|
0000af00  42 24 2c 70 25 2c 6f 6c  64 25 2c 6c 6f 63 6b 25  |B$,p%,old%,lock%|
0000af10  0d 45 10 30 e7 63 61 6c  6c 5f 6c 65 76 25 3d 73  |.E.0.call_lev%=s|
0000af20  75 62 6d 61 78 25 20 8c  f2 68 61 6c 74 28 a4 6d  |ubmax% ..halt(.m|
0000af30  73 67 30 28 22 45 6c 65  76 65 6c 22 29 29 3a e1  |sg0("Elevel")):.|
0000af40  0d 45 1a 14 64 65 73 74  24 3d a4 70 61 72 61 6d  |.E..dest$=.param|
0000af50  28 41 24 29 0d 45 24 33  6c 6f 63 6b 25 3d a3 3a  |(A$).E$3lock%=.:|
0000af60  e7 64 65 73 74 24 3d 22  2f 6c 6f 63 6b 22 8c 6c  |.dest$="/lock".l|
0000af70  6f 63 6b 25 3d b9 3a 64  65 73 74 24 3d a4 70 61  |ock%=.:dest$=.pa|
0000af80  72 61 6d 28 41 24 29 0d  45 2e 10 70 25 3d 30 3a  |ram(A$).E..p%=0:|
0000af90  e7 41 24 3e 22 22 8c 0d  45 38 33 20 20 f5 70 25  |.A$>""..E83  .p%|
0000afa0  2b 3d 31 3a 42 24 3d a4  70 61 72 61 6d 28 41 24  |+=1:B$=.param(A$|
0000afb0  29 3a f2 73 65 74 76 28  22 70 22 2b c3 70 25 2c  |):.setv("p"+.p%,|
0000afc0  42 24 29 3a fd 41 24 3d  22 22 0d 45 42 05 cd 0d  |B$):.A$="".EB...|
0000afd0  45 4c 23 6f 6c 64 25 3d  73 74 61 67 65 25 3a f2  |EL#old%=stage%:.|
0000afe0  67 6f 74 6f 28 64 65 73  74 24 2c 73 74 61 67 65  |goto(dest$,stage|
0000aff0  25 29 0d 45 56 0b e7 6c  6f 63 6b 25 8c 0d 45 60  |%).EV..lock%..E`|
0000b000  59 20 20 e3 70 25 3d 30  b8 63 61 6c 6c 5f 6c 65  |Y  .p%=0.call_le|
0000b010  76 25 3a e7 63 61 6c 6c  5f 6c 6f 63 6b 25 28 70  |v%:.call_lock%(p|
0000b020  25 29 3d 73 74 61 67 65  25 20 8c 73 74 61 67 65  |%)=stage% .stage|
0000b030  25 3d 6f 6c 64 25 3a f2  77 61 72 6e 5f 74 78 74  |%=old%:.warn_txt|
0000b040  28 a4 6d 73 67 31 28 22  45 6c 6f 63 6b 22 2c 64  |(.msg1("Elock",d|
0000b050  65 73 74 24 29 29 0d 45  6a 07 20 20 ed 0d 45 74  |est$)).Ej.  ..Et|
0000b060  05 cd 0d 45 7e 13 e7 73  74 61 67 65 25 3c 3e 6f  |...E~..stage%<>o|
0000b070  6c 64 25 20 8c 0d 45 88  2c 20 20 63 61 6c 6c 5f  |ld% ..E.,  call_|
0000b080  6c 65 76 25 2b 3d 31 3a  63 61 6c 6c 5f 72 65 74  |lev%+=1:call_ret|
0000b090  25 28 63 61 6c 6c 5f 6c  65 76 25 29 3d 6f 6c 64  |%(call_lev%)=old|
0000b0a0  25 0d 45 92 2a 20 20 e7  6c 6f 63 6b 25 20 8c 63  |%.E.*  .lock% .c|
0000b0b0  61 6c 6c 5f 6c 6f 63 6b  25 28 63 61 6c 6c 5f 6c  |all_lock%(call_l|
0000b0c0  65 76 25 29 3d 73 74 61  67 65 25 0d 45 9c 05 cd  |ev%)=stage%.E...|
0000b0d0  0d 45 a6 05 e1 0d 45 b0  04 0d 45 ba 19 dd a4 72  |.E....E...E....r|
0000b0e0  65 74 75 72 6e 28 41 24  2c f8 20 73 74 61 67 65  |eturn(A$,. stage|
0000b0f0  25 29 0d 45 c4 2c e7 63  61 6c 6c 5f 6c 65 76 25  |%).E.,.call_lev%|
0000b100  3d 30 20 8c f2 68 61 6c  74 28 a4 6d 73 67 30 28  |=0 ..halt(.msg0(|
0000b110  22 45 72 65 74 75 72 6e  22 29 29 3a 3d 30 0d 45  |"Ereturn")):=0.E|
0000b120  ce 2c 73 74 61 67 65 25  3d 63 61 6c 6c 5f 72 65  |.,stage%=call_re|
0000b130  74 25 28 63 61 6c 6c 5f  6c 65 76 25 29 3a 63 61  |t%(call_lev%):ca|
0000b140  6c 6c 5f 6c 65 76 25 2d  3d 31 0d 45 d8 0e 72 65  |ll_lev%-=1.E..re|
0000b150  74 75 72 6e 24 3d 41 24  0d 45 e2 07 3d 2d 31 0d  |turn$=A$.E..=-1.|
0000b160  45 ec 04 0d 45 f6 12 dd  a4 74 65 73 74 66 69 6c  |E...E....testfil|
0000b170  65 28 41 24 29 0d 46 00  07 ea 72 25 0d 46 0a 19  |e(A$).F...r%.F..|
0000b180  c8 99 22 58 4f 53 5f 46  69 6c 65 22 2c 31 37 2c  |.."XOS_File",17,|
0000b190  41 24 b8 72 25 0d 46 14  07 3d 72 25 0d 46 1e 04  |A$.r%.F..=r%.F..|
0000b1a0  0d 46 28 0e dd a4 66 69  6c 65 28 41 24 29 0d 46  |.F(...file(A$).F|
0000b1b0  32 13 ea 72 25 2c 6e 25  2c 6c 25 2c 42 24 2c 43  |2..r%,n%,l%,B$,C|
0000b1c0  24 0d 46 3c 24 72 25 3d  30 3a 42 24 3d a4 70 61  |$.F<$r%=0:B$=.pa|
0000b1d0  72 61 6d 28 41 24 29 3a  43 24 3d a4 70 61 72 61  |ram(A$):C$=.para|
0000b1e0  6d 28 41 24 29 0d 46 46  0d c8 8e c0 42 24 2c 33  |m(A$).FF....B$,3|
0000b1f0  29 ca 0d 46 50 28 20 20  c9 22 2f 73 69 22 3a c8  |)..FP(  ."/si":.|
0000b200  99 22 58 4f 53 5f 46 69  6c 65 22 2c 32 33 2c 43  |."XOS_File",23,C|
0000b210  24 b8 6e 25 2c 2c 2c 2c  72 25 0d 46 5a 29 20 20  |$.n%,,,,r%.FZ)  |
0000b220  c9 22 2f 61 74 22 3a c8  99 22 58 4f 53 5f 46 69  |."/at":.."XOS_Fi|
0000b230  6c 65 22 2c 32 33 2c 43  24 b8 6e 25 2c 2c 2c 2c  |le",23,C$.n%,,,,|
0000b240  2c 72 25 0d 46 64 3d 20  20 c9 22 2f 74 79 22 3a  |,r%.Fd=  ."/ty":|
0000b250  c8 99 22 58 4f 53 5f 46  69 6c 65 22 2c 32 33 2c  |.."XOS_File",23,|
0000b260  43 24 b8 6e 25 2c 2c 2c  2c 2c 2c 72 25 3a 72 65  |C$.n%,,,,,,r%:re|
0000b270  74 75 72 6e 24 3d c3 7e  72 25 3a 72 25 3d 2d 31  |turn$=.~r%:r%=-1|
0000b280  0d 46 6e 36 20 20 c9 22  2f 65 78 22 3a 72 65 74  |.Fn6  ."/ex":ret|
0000b290  75 72 6e 24 3d a4 63 61  6e 6f 6e 28 43 24 29 3a  |urn$=.canon(C$):|
0000b2a0  e7 72 65 74 75 72 6e 24  3e 22 22 8c 72 25 3d 2d  |.return$>"".r%=-|
0000b2b0  31 3a 6e 25 3d 31 0d 46  78 2b 20 20 c9 22 2f 6c  |1:n%=1.Fx+  ."/l|
0000b2c0  65 22 3a 72 65 74 75 72  6e 24 3d a4 63 61 6e 6f  |e":return$=.cano|
0000b2d0  6e 28 43 24 29 3a 6e 25  3d a9 72 65 74 75 72 6e  |n(C$):n%=.return|
0000b2e0  24 0d 46 82 2a 20 20 20  20 c8 95 6e 25 3e 30 80  |$.F.*    ..n%>0.|
0000b2f0  c1 72 65 74 75 72 6e 24  2c 6e 25 2c 31 29 3c 3e  |.return$,n%,1)<>|
0000b300  22 2e 22 3a 6e 25 2d 3d  31 3a ce 0d 46 8c 2a 20  |".":n%-=1:..F.* |
0000b310  20 20 20 e7 6e 25 3e 31  8c 72 65 74 75 72 6e 24  |   .n%>1.return$|
0000b320  3d c1 72 65 74 75 72 6e  24 2c 6e 25 2b 31 29 3a  |=.return$,n%+1):|
0000b330  72 25 3d 2d 31 0d 46 96  2b 20 20 c9 22 2f 70 61  |r%=-1.F.+  ."/pa|
0000b340  22 3a 72 65 74 75 72 6e  24 3d a4 63 61 6e 6f 6e  |":return$=.canon|
0000b350  28 43 24 29 3a 6e 25 3d  a9 72 65 74 75 72 6e 24  |(C$):n%=.return$|
0000b360  0d 46 a0 2a 20 20 20 20  c8 95 6e 25 3e 30 80 c1  |.F.*    ..n%>0..|
0000b370  72 65 74 75 72 6e 24 2c  6e 25 2c 31 29 3c 3e 22  |return$,n%,1)<>"|
0000b380  2e 22 3a 6e 25 2d 3d 31  3a ce 0d 46 aa 2a 20 20  |.":n%-=1:..F.*  |
0000b390  20 20 e7 6e 25 3e 31 8c  72 65 74 75 72 6e 24 3d  |  .n%>1.return$=|
0000b3a0  c0 72 65 74 75 72 6e 24  2c 6e 25 2d 31 29 3a 72  |.return$,n%-1):r|
0000b3b0  25 3d 2d 31 0d 46 b4 23  20 20 7f 3a c8 99 22 58  |%=-1.F.#  .:.."X|
0000b3c0  4f 53 5f 46 69 6c 65 22  2c 32 33 2c 42 24 b8 72  |OS_File",23,B$.r|
0000b3d0  25 3a 6e 25 3d 72 25 0d  46 be 05 cb 0d 46 c8 0e  |%:n%=r%.F....F..|
0000b3e0  e7 6e 25 3d 30 8c 72 25  3d 30 0d 46 d2 07 3d 72  |.n%=0.r%=0.F..=r|
0000b3f0  25 0d 46 dc 04 0d 46 e6  0f dd a4 63 61 6e 6f 6e  |%.F...F....canon|
0000b400  28 41 24 29 0d 46 f0 0d  ea 72 24 3a 72 24 3d 22  |(A$).F...r$:r$="|
0000b410  22 0d 46 fa 31 c8 99 22  58 4f 53 5f 46 53 43 6f  |".F.1.."XOS_FSCo|
0000b420  6e 74 72 6f 6c 22 2c 33  37 2c 41 24 2c 74 6d 70  |ntrol",37,A$,tmp|
0000b430  25 2c 2c 2c 32 35 36 b8  2c 2c 2c 2c 2c 72 25 3b  |%,,,256.,,,,,r%;|
0000b440  46 25 0d 47 04 20 e7 72  25 3e 30 80 28 46 25 80  |F%.G. .r%>0.(F%.|
0000b450  31 29 3d 30 8c 72 24 3d  a4 73 74 72 28 74 6d 70  |1)=0.r$=.str(tmp|
0000b460  25 29 0d 47 0e 07 3d 72  24 0d 47 18 04 0d 47 22  |%).G..=r$.G...G"|
0000b470  12 dd a4 74 65 73 74 6c  69 6e 65 28 41 24 29 0d  |...testline(A$).|
0000b480  47 2c 1d ea 20 72 65 74  75 72 6e 25 2c 4a 25 2c  |G,.. return%,J%,|
0000b490  42 24 3a 72 65 74 75 72  6e 25 3d 30 0d 47 36 16  |B$:return%=0.G6.|
0000b4a0  4a 25 3d a4 64 28 39 2c  70 6f 72 74 25 2c 30 2c  |J%=.d(9,port%,0,|
0000b4b0  30 29 0d 47 40 12 f5 42  24 3d a4 70 61 72 61 6d  |0).G@..B$=.param|
0000b4c0  28 41 24 29 0d 47 4a 0b  20 20 c8 8e 42 24 ca 0d  |(A$).GJ.  ..B$..|
0000b4d0  47 54 27 20 20 20 20 c9  20 22 2f 63 74 73 22 2c  |GT'    . "/cts",|
0000b4e0  22 2f 64 74 72 22 3a 72  65 74 75 72 6e 25 2b 3d  |"/dtr":return%+=|
0000b4f0  28 4a 25 80 31 29 0d 47  5e 20 20 20 20 20 c9 20  |(J%.1).G^     . |
0000b500  22 2f 64 73 72 22 3a 72  65 74 75 72 6e 25 2b 3d  |"/dsr":return%+=|
0000b510  28 4a 25 80 32 29 0d 47  68 20 20 20 20 20 c9 20  |(J%.2).Gh     . |
0000b520  22 2f 72 6e 67 22 3a 72  65 74 75 72 6e 25 2b 3d  |"/rng":return%+=|
0000b530  28 4a 25 80 34 29 0d 47  72 20 20 20 20 20 c9 20  |(J%.4).Gr     . |
0000b540  22 2f 64 63 64 22 3a 72  65 74 75 72 6e 25 2b 3d  |"/dcd":return%+=|
0000b550  28 4a 25 80 38 29 0d 47  7c 23 20 20 20 20 7f 3a  |(J%.8).G|#    .:|
0000b560  f2 68 61 6c 74 28 a4 6d  73 67 30 28 22 45 70 61  |.halt(.msg0("Epa|
0000b570  72 61 6d 22 29 29 3a 3d  30 0d 47 86 07 20 20 cb  |ram")):=0.G..  .|
0000b580  0d 47 90 0a fd 41 24 3d  22 22 0d 47 9a 0c 3d 72  |.G...A$="".G..=r|
0000b590  65 74 75 72 6e 25 0d 47  a4 04 0d 47 ae 0e dd a4  |eturn%.G...G....|
0000b5a0  66 72 65 65 28 41 24 29  0d 47 b8 13 ea 6e 25 2c  |free(A$).G...n%,|
0000b5b0  66 25 2c 72 25 2c 42 24  2c 43 24 0d 47 c2 22 c8  |f%,r%,B$,C$.G.".|
0000b5c0  99 22 57 69 6d 70 5f 53  6c 6f 74 53 69 7a 65 22  |."Wimp_SlotSize"|
0000b5d0  2c 2d 31 2c 2d 31 b8 2c  6e 25 2c 66 25 0d 47 cc  |,-1,-1.,n%,f%.G.|
0000b5e0  12 f5 42 24 3d a4 70 61  72 61 6d 28 41 24 29 0d  |..B$=.param(A$).|
0000b5f0  47 d6 12 20 20 e7 c0 42  24 2c 31 29 3d 22 2f 22  |G..  ..B$,1)="/"|
0000b600  8c 0d 47 e0 15 20 20 20  20 43 24 3d a4 76 61 6c  |..G..    C$=.val|
0000b610  75 65 28 42 24 29 0d 47  ea 11 20 20 20 20 c8 8e  |ue(B$).G..    ..|
0000b620  c0 42 24 2c 32 29 ca 0d  47 f4 18 20 20 20 20 20  |.B$,2)..G..     |
0000b630  20 c9 22 6d 65 22 3a 72  25 3d 6e 25 2b 66 25 0d  | ."me":r%=n%+f%.|
0000b640  47 fe 15 20 20 20 20 20  20 c9 22 6e 65 22 3a 72  |G..      ."ne":r|
0000b650  25 3d 6e 25 0d 48 08 15  20 20 20 20 20 20 c9 22  |%=n%.H..      ."|
0000b660  66 72 22 3a 72 25 3d 66  25 0d 48 12 16 20 20 20  |fr":r%=f%.H..   |
0000b670  20 20 20 c9 22 69 6e 22  3a 72 25 3d 93 2d e0 0d  |   ."in":r%=.-..|
0000b680  48 1c 3f 20 20 20 20 20  20 c9 22 64 65 22 3a c8  |H.?      ."de":.|
0000b690  99 22 58 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 22  |."XOS_FSControl"|
0000b6a0  2c 34 39 2c 43 24 b8 72  25 3b 46 25 3a e7 a4 74  |,49,C$.r%;F%:..t|
0000b6b0  66 31 30 28 46 25 29 3d  30 8c 72 25 3d 30 0d 48  |f10(F%)=0.r%=0.H|
0000b6c0  26 09 20 20 20 20 cb 0d  48 30 09 20 20 20 20 cc  |&.    ..H0.    .|
0000b6d0  0d 48 3a 1c 20 20 20 20  e7 42 24 3e 22 22 8c f2  |.H:.    .B$>""..|
0000b6e0  73 65 74 76 28 42 24 2c  c3 72 25 29 0d 48 44 07  |setv(B$,.r%).HD.|
0000b6f0  20 20 cd 0d 48 4e 0a fd  41 24 3d 22 22 0d 48 58  |  ..HN..A$="".HX|
0000b700  07 3d 72 25 0d 48 62 04  0d 48 6c 17 dd a4 69 66  |.=r%.Hb..Hl...if|
0000b710  28 41 24 2c 52 45 54 55  52 4e 63 6f 6d 24 29 0d  |(A$,RETURNcom$).|
0000b720  48 76 25 ea 20 74 65 73  74 24 2c 69 66 24 2c 6e  |Hv%. test$,if$,n|
0000b730  6f 74 25 2c 72 65 74 75  72 6e 25 2c 6c 25 2c 6d  |ot%,return%,l%,m|
0000b740  25 2c 6e 25 0d 48 80 2d  6c 25 3d a7 41 24 2c 22  |%,n%.H.-l%=.A$,"|
0000b750  28 22 29 3a 6d 25 3d a7  41 24 2c 22 29 22 2c 6c  |("):m%=.A$,")",l|
0000b760  25 29 3a 6e 25 3d a7 41  24 2c 22 20 22 2c 6d 25  |%):n%=.A$," ",m%|
0000b770  29 0d 48 8a 27 e7 20 6c  25 2a 6d 25 2a 6e 25 3d  |).H.'. l%*m%*n%=|
0000b780  30 20 8c f2 6c 6f 67 28  a4 6d 73 67 30 28 22 45  |0 ..log(.msg0("E|
0000b790  69 66 22 29 29 3a 3d 30  0d 48 94 30 6e 6f 74 25  |if")):=0.H.0not%|
0000b7a0  3d a3 3a 74 65 73 74 24  3d c1 41 24 2c 6c 25 2b  |=.:test$=.A$,l%+|
0000b7b0  31 2c 6d 25 2d 6c 25 2d  31 29 3a 69 66 24 3d c1  |1,m%-l%-1):if$=.|
0000b7c0  41 24 2c 6e 25 2b 31 29  0d 48 9e 2a e7 c0 74 65  |A$,n%+1).H.*..te|
0000b7d0  73 74 24 2c 31 29 3d 22  21 22 20 8c 6e 6f 74 25  |st$,1)="!" .not%|
0000b7e0  3d b9 3a 74 65 73 74 24  3d c1 74 65 73 74 24 2c  |=.:test$=.test$,|
0000b7f0  32 29 0d 48 a8 37 72 65  74 75 72 6e 25 3d a4 63  |2).H.7return%=.c|
0000b800  6f 6d 6d 61 6e 64 28 74  65 73 74 24 29 3a e7 6e  |ommand(test$):.n|
0000b810  6f 74 25 20 8c 72 65 74  75 72 6e 25 3d 2d 28 72  |ot% .return%=-(r|
0000b820  65 74 75 72 6e 25 3d 30  29 0d 48 b2 37 e7 20 72  |eturn%=0).H.7. r|
0000b830  65 74 75 72 6e 25 3c 3e  30 80 73 74 6f 70 25 3d  |eturn%<>0.stop%=|
0000b840  30 8c 72 65 74 75 72 6e  25 3d a4 63 6f 6d 6d 61  |0.return%=.comma|
0000b850  6e 64 28 69 66 24 29 20  8b 63 6f 6d 24 3d 22 22  |nd(if$) .com$=""|
0000b860  0d 48 bc 0c 3d 72 65 74  75 72 6e 25 0d 48 c6 04  |.H..=return%.H..|
0000b870  0d 48 d0 0e dd a4 63 61  73 65 28 41 24 29 0d 48  |.H....case(A$).H|
0000b880  da 38 63 61 73 6c 65 76  25 2b 3d 31 3a e7 63 61  |.8caslev%+=1:.ca|
0000b890  73 6c 65 76 25 3e 63 61  73 6d 61 78 25 8c f2 68  |slev%>casmax%..h|
0000b8a0  61 6c 74 28 a4 6d 73 67  30 28 22 45 63 61 73 65  |alt(.msg0("Ecase|
0000b8b0  22 29 29 3a 3d 30 0d 48  e4 34 63 61 73 65 24 28  |")):=0.H.4case$(|
0000b8c0  63 61 73 6c 65 76 25 29  3d a4 70 61 72 61 6d 28  |caslev%)=.param(|
0000b8d0  41 24 29 3a 63 61 73 6d  61 74 63 68 25 3f 63 61  |A$):casmatch%?ca|
0000b8e0  73 6c 65 76 25 3d 30 3a  3d 31 0d 48 ee 04 0d 48  |slev%=0:=1.H...H|
0000b8f0  f8 19 dd a4 77 68 65 6e  28 41 24 2c 52 45 54 55  |....when(A$,RETU|
0000b900  52 4e 63 6f 6d 24 29 0d  49 02 0f ea 6d 25 2c 42  |RNcom$).I...m%,B|
0000b910  24 3a 6d 25 3d a3 0d 49  0c 28 e7 63 61 73 6c 65  |$:m%=..I.(.casle|
0000b920  76 25 3d 30 20 8c f2 68  61 6c 74 28 a4 6d 73 67  |v%=0 ..halt(.msg|
0000b930  30 28 22 45 77 68 65 6e  22 29 29 3a 3d 30 0d 49  |0("Ewhen")):=0.I|
0000b940  16 12 f5 42 24 3d a4 70  61 72 61 6d 28 41 24 29  |...B$=.param(A$)|
0000b950  0d 49 20 31 20 20 e7 42  24 3d 63 61 73 65 24 28  |.I 1  .B$=case$(|
0000b960  63 61 73 6c 65 76 25 29  8c 6d 25 3d b9 3a 63 61  |caslev%).m%=.:ca|
0000b970  73 6d 61 74 63 68 25 3f  63 61 73 6c 65 76 25 3d  |smatch%?caslev%=|
0000b980  31 0d 49 2a 0a fd 41 24  3d 22 22 0d 49 34 12 e7  |1.I*..A$="".I4..|
0000b990  6d 25 3d a3 20 8c 63 6f  6d 24 3d 22 22 0d 49 3e  |m%=. .com$="".I>|
0000b9a0  06 3d 30 0d 49 48 04 0d  49 52 1b dd f2 6f 74 68  |.=0.IH..IR...oth|
0000b9b0  65 72 77 69 73 65 28 52  45 54 55 52 4e 63 6f 6d  |erwise(RETURNcom|
0000b9c0  24 29 0d 49 5c 27 e7 63  61 73 6c 65 76 25 3d 30  |$).I\'.caslev%=0|
0000b9d0  20 8c f2 68 61 6c 74 28  a4 6d 73 67 30 28 22 45  | ..halt(.msg0("E|
0000b9e0  77 68 65 6e 22 29 29 3a  e1 0d 49 66 21 e7 63 61  |when")):..If!.ca|
0000b9f0  73 6d 61 74 63 68 25 3f  63 61 73 6c 65 76 25 3d  |smatch%?caslev%=|
0000ba00  31 20 8c 63 6f 6d 24 3d  22 22 0d 49 70 05 e1 0d  |1 .com$="".Ip...|
0000ba10  49 7a 04 0d 49 84 0d dd  a4 65 6e 64 63 61 73 65  |Iz..I....endcase|
0000ba20  0d 49 8e 28 e7 63 61 73  6c 65 76 25 3d 30 20 8c  |.I.(.caslev%=0 .|
0000ba30  f2 68 61 6c 74 28 a4 6d  73 67 30 28 22 45 77 68  |.halt(.msg0("Ewh|
0000ba40  65 6e 22 29 29 3a 3d 30  0d 49 98 11 63 61 73 6c  |en")):=0.I..casl|
0000ba50  65 76 25 2d 3d 31 3a 3d  31 0d 49 a2 04 0d 49 ac  |ev%-=1:=1.I...I.|
0000ba60  13 dd a4 74 65 73 74 65  71 28 63 24 2c 41 24 29  |...testeq(c$,A$)|
0000ba70  0d 49 b6 1e ea 72 25 2c  6e 25 2c 6c 25 2c 63 25  |.I...r%,n%,l%,c%|
0000ba80  2c 62 24 2c 42 24 2c 43  24 3a 72 25 3d 30 0d 49  |,b$,B$,C$:r%=0.I|
0000ba90  c0 1f 42 24 3d a4 70 61  72 61 6d 28 41 24 29 3a  |..B$=.param(A$):|
0000baa0  43 24 3d a4 70 61 72 61  6d 28 41 24 29 0d 49 ca  |C$=.param(A$).I.|
0000bab0  29 62 24 3d 42 24 2b 43  24 3a 6e 25 3d b9 3a e3  |)b$=B$+C$:n%=.:.|
0000bac0  6c 25 3d 31 b8 a9 62 24  3a 63 25 3d 97 c1 62 24  |l%=1..b$:c%=..b$|
0000bad0  2c 6c 25 2c 31 29 0d 49  d4 24 20 20 e7 63 25 3c  |,l%,1).I.$  .c%<|
0000bae0  34 36 84 63 25 3e 35 37  84 63 25 3d 34 37 8c 6e  |46.c%>57.c%=47.n|
0000baf0  25 3d a3 3a 6c 25 3d a9  62 24 0d 49 de 05 ed 0d  |%=.:l%=.b$.I....|
0000bb00  49 e8 06 ea 85 0d 49 f2  21 ee 85 ea 3a f2 6c 6f  |I.....I.!...:.lo|
0000bb10  67 28 a4 6d 73 67 31 28  22 45 63 6f 6d 70 22 2c  |g(.msg1("Ecomp",|
0000bb20  63 24 29 29 3a e1 0d 49  fc 09 c8 8e 63 24 ca 0d  |c$)):..I....c$..|
0000bb30  4a 06 28 20 20 c9 22 3f  65 71 22 3a e7 6e 25 8c  |J.(  ."?eq":.n%.|
0000bb40  72 25 3d 28 bb 42 24 3d  bb 43 24 29 8b 72 25 3d  |r%=(.B$=.C$).r%=|
0000bb50  28 42 24 3d 43 24 29 0d  4a 10 2a 20 20 c9 22 3f  |(B$=C$).J.*  ."?|
0000bb60  6e 65 22 3a e7 6e 25 8c  72 25 3d 28 bb 42 24 3c  |ne":.n%.r%=(.B$<|
0000bb70  3e bb 43 24 29 8b 72 25  3d 28 42 24 3c 3e 43 24  |>.C$).r%=(B$<>C$|
0000bb80  29 0d 4a 1a 28 20 20 c9  22 3f 6c 74 22 3a e7 6e  |).J.(  ."?lt":.n|
0000bb90  25 8c 72 25 3d 28 bb 42  24 3c bb 43 24 29 8b 72  |%.r%=(.B$<.C$).r|
0000bba0  25 3d 28 42 24 3c 43 24  29 0d 4a 24 28 20 20 c9  |%=(B$<C$).J$(  .|
0000bbb0  22 3f 67 74 22 3a e7 6e  25 8c 72 25 3d 28 bb 42  |"?gt":.n%.r%=(.B|
0000bbc0  24 3e bb 43 24 29 8b 72  25 3d 28 42 24 3e 43 24  |$>.C$).r%=(B$>C$|
0000bbd0  29 0d 4a 2e 2a 20 20 c9  22 3f 6c 65 22 3a e7 6e  |).J.*  ."?le":.n|
0000bbe0  25 8c 72 25 3d 28 bb 42  24 3c 3d bb 43 24 29 8b  |%.r%=(.B$<=.C$).|
0000bbf0  72 25 3d 28 42 24 3c 3d  43 24 29 0d 4a 38 2a 20  |r%=(B$<=C$).J8* |
0000bc00  20 c9 22 3f 67 65 22 3a  e7 6e 25 8c 72 25 3d 28  | ."?ge":.n%.r%=(|
0000bc10  bb 42 24 3e 3d bb 43 24  29 8b 72 25 3d 28 42 24  |.B$>=.C$).r%=(B$|
0000bc20  3e 3d 43 24 29 0d 4a 42  05 cb 0d 4a 4c 0d 3d 2d  |>=C$).JB...JL.=-|
0000bc30  28 72 25 3c 3e 30 29 0d  4a 56 04 0d 4a 60 0e dd  |(r%<>0).JV..J`..|
0000bc40  a4 65 76 61 6c 28 41 24  29 0d 4a 6a 07 ea 42 24  |.eval(A$).Jj..B$|
0000bc50  0d 4a 74 0e 72 65 74 75  72 6e 24 3d 22 22 0d 4a  |.Jt.return$="".J|
0000bc60  7e 11 42 24 3d a4 70 61  72 61 6d 28 41 24 29 0d  |~.B$=.param(A$).|
0000bc70  4a 88 07 ea 20 85 0d 4a  92 24 ee 20 85 20 ea 3a  |J... ..J.$. . .:|
0000bc80  f2 6c 6f 67 28 a4 6d 73  67 31 28 22 45 65 76 61  |.log(.msg1("Eeva|
0000bc90  6c 22 2c 42 24 29 29 3a  3d 30 0d 4a 9c 12 72 65  |l",B$)):=0.J..re|
0000bca0  74 75 72 6e 24 3d c3 28  a0 42 24 29 0d 4a a6 07  |turn$=.(.B$).J..|
0000bcb0  3d 2d 31 0d 4a b0 04 0d  4a ba 10 dd a4 73 74 72  |=-1.J...J....str|
0000bcc0  69 6e 67 28 41 24 29 0d  4a c4 28 ea 61 25 2c 73  |ing(A$).J.(.a%,s|
0000bcd0  25 2c 6c 25 2c 73 24 2c  62 24 2c 42 24 2c 43 24  |%,l%,s$,b$,B$,C$|
0000bce0  3a 61 25 3d 30 3a 73 25  3d 30 3a 6c 25 3d 30 0d  |:a%=0:s%=0:l%=0.|
0000bcf0  4a ce 12 f5 42 24 3d a4  70 61 72 61 6d 28 41 24  |J...B$=.param(A$|
0000bd00  29 0d 4a d8 12 20 20 e7  c0 42 24 2c 31 29 3d 22  |).J..  ..B$,1)="|
0000bd10  2f 22 8c 0d 4a e2 1d 20  20 43 24 3d a4 76 61 6c  |/"..J..  C$=.val|
0000bd20  75 65 28 42 24 29 3a c8  8e c0 42 24 2c 33 29 ca  |ue(B$):...B$,3).|
0000bd30  0d 4a ec 13 20 20 20 20  c9 22 73 69 7a 22 3a 61  |.J..    ."siz":a|
0000bd40  25 3d 31 0d 4a f6 13 20  20 20 20 c9 22 6c 6f 77  |%=1.J..    ."low|
0000bd50  22 3a 61 25 3d 32 0d 4b  00 1a 20 20 20 20 c9 22  |":a%=2.K..    ."|
0000bd60  6c 65 66 22 3a 61 25 3d  33 3a 73 25 3d bb 43 24  |lef":a%=3:s%=.C$|
0000bd70  0d 4b 0a 1a 20 20 20 20  c9 22 72 69 67 22 3a 61  |.K..    ."rig":a|
0000bd80  25 3d 34 3a 73 25 3d bb  43 24 0d 4b 14 1a 20 20  |%=4:s%=.C$.K..  |
0000bd90  20 20 c9 22 73 74 61 22  3a 61 25 3d 35 3a 73 25  |  ."sta":a%=5:s%|
0000bda0  3d bb 43 24 0d 4b 1e 15  20 20 20 20 c9 22 6c 65  |=.C$.K..    ."le|
0000bdb0  6e 22 3a 6c 25 3d bb 43  24 0d 4b 28 19 20 20 20  |n":l%=.C$.K(.   |
0000bdc0  20 c9 22 69 6e 73 22 3a  61 25 3d 36 3a 62 24 3d  | ."ins":a%=6:b$=|
0000bdd0  43 24 0d 4b 32 13 20 20  20 20 c9 22 75 70 70 22  |C$.K2.    ."upp"|
0000bde0  3a 61 25 3d 37 0d 4b 3c  07 20 20 cb 0d 4b 46 07  |:a%=7.K<.  ..KF.|
0000bdf0  20 20 cc 0d 4b 50 0b 20  20 73 24 3d 42 24 0d 4b  |  ..KP.  s$=B$.K|
0000be00  5a 07 20 20 cd 0d 4b 64  0a fd 41 24 3d 22 22 0d  |Z.  ..Kd..A$="".|
0000be10  4b 6e 09 c8 8e 61 25 ca  0d 4b 78 15 20 20 c9 31  |Kn...a%..Kx.  .1|
0000be20  3a 72 65 74 75 72 6e 24  3d c3 a9 73 24 0d 4b 82  |:return$=..s$.K.|
0000be30  1b 20 20 c9 32 3a 72 65  74 75 72 6e 24 3d a4 6c  |.  .2:return$=.l|
0000be40  6f 77 65 72 28 73 24 29  0d 4b 8c 18 20 20 c9 33  |ower(s$).K..  .3|
0000be50  3a 72 65 74 75 72 6e 24  3d c0 73 24 2c 73 25 29  |:return$=.s$,s%)|
0000be60  0d 4b 96 18 20 20 c9 34  3a 72 65 74 75 72 6e 24  |.K..  .4:return$|
0000be70  3d c2 73 24 2c 73 25 29  0d 4b a0 31 20 20 c9 35  |=.s$,s%).K.1  .5|
0000be80  3a e7 6c 25 3c 31 8c 72  65 74 75 72 6e 24 3d c1  |:.l%<1.return$=.|
0000be90  73 24 2c 73 25 29 8b 72  65 74 75 72 6e 24 3d c1  |s$,s%).return$=.|
0000bea0  73 24 2c 73 25 2c 6c 25  29 0d 4b aa 1b 20 20 c9  |s$,s%,l%).K..  .|
0000beb0  36 3a 72 65 74 75 72 6e  24 3d c3 28 a7 73 24 2c  |6:return$=.(.s$,|
0000bec0  62 24 29 29 0d 4b b4 1b  20 20 c9 37 3a 72 65 74  |b$)).K..  .7:ret|
0000bed0  75 72 6e 24 3d a4 75 70  70 65 72 28 73 24 29 0d  |urn$=.upper(s$).|
0000bee0  4b be 12 20 20 7f 3a 72  65 74 75 72 6e 24 3d 73  |K..  .:return$=s|
0000bef0  24 0d 4b c8 05 cb 0d 4b  d2 07 3d 2d 31 0d 4b dc  |$.K....K..=-1.K.|
0000bf00  04 0d 4b e6 12 dd a4 6d  6f 76 65 66 69 6c 65 28  |..K....movefile(|
0000bf10  41 24 29 0d 4b f0 0a ea  6c 25 2c 42 24 0d 4b fa  |A$).K...l%,B$.K.|
0000bf20  22 f2 70 72 69 6e 74 28  a4 6d 73 67 30 28 22 46  |".print(.msg0("F|
0000bf30  6d 6f 76 65 31 22 29 2c  22 20 22 2c 22 22 29 0d  |move1")," ","").|
0000bf40  4c 04 11 42 24 3d a4 70  61 72 61 6d 28 41 24 29  |L..B$=.param(A$)|
0000bf50  0d 4c 0e 29 e7 41 24 3d  22 22 8c f2 70 72 69 6e  |.L.).A$=""..prin|
0000bf60  74 28 22 22 2c a4 6d 73  67 30 28 22 46 62 61 64  |t("",.msg0("Fbad|
0000bf70  22 29 2c 22 22 29 3a 3d  30 0d 4c 18 0f 6c 25 3d  |"),""):=0.L..l%=|
0000bf80  a7 41 24 2c 22 2a 22 29  0d 4c 22 0b e7 6c 25 3e  |.A$,"*").L"..l%>|
0000bf90  30 20 8c 0d 4c 2c 26 20  20 f5 41 24 3d c0 41 24  |0 ..L,&  .A$=.A$|
0000bfa0  2c 6c 25 2d 31 29 2b c2  c3 28 91 29 2c 34 29 2b  |,l%-1)+..(.),4)+|
0000bfb0  c1 41 24 2c 6c 25 2b 31  29 0d 4c 36 13 20 20 f2  |.A$,l%+1).L6.  .|
0000bfc0  70 6f 6c 6c 28 73 6c 69  63 65 25 29 0d 4c 40 17  |poll(slice%).L@.|
0000bfd0  20 20 fd a4 74 65 73 74  66 69 6c 65 28 41 24 29  |  ..testfile(A$)|
0000bfe0  3c 3e 31 0d 4c 4a 05 cd  0d 4c 54 24 f2 70 72 69  |<>1.LJ...LT$.pri|
0000bff0  6e 74 28 22 22 2c a4 6d  73 67 32 28 22 46 74 6f  |nt("",.msg2("Fto|
0000c000  22 2c 42 24 2c 41 24 29  2c 22 22 29 0d 4c 5e 23  |",B$,A$),"").L^#|
0000c010  c8 99 22 58 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |.."XOS_FSControl|
0000c020  22 2c 32 35 2c 42 24 2c  41 24 20 b8 3b 46 25 0d  |",25,B$,A$ .;F%.|
0000c030  4c 68 0e e7 20 28 46 25  80 31 29 20 8c 0d 4c 72  |Lh.. (F%.1) ..Lr|
0000c040  2f 20 20 c8 99 22 58 4f  53 5f 46 53 43 6f 6e 74  |/  .."XOS_FSCont|
0000c050  72 6f 6c 22 2c 32 36 2c  42 24 2c 41 24 2c 25 31  |rol",26,B$,A$,%1|
0000c060  30 30 30 30 30 31 30 20  b8 3b 46 25 0d 4c 7c 05  |0000010 .;F%.L|.|
0000c070  cd 0d 4c 86 15 f2 73 65  74 76 28 22 24 64 65 73  |..L...setv("$des|
0000c080  74 22 2c 41 24 29 0d 4c  90 10 3d 2d 28 28 46 25  |t",A$).L..=-((F%|
0000c090  80 31 29 3d 30 29 0d 4c  9a 04 0d 4c a4 12 dd a4  |.1)=0).L...L....|
0000c0a0  63 6f 70 79 66 69 6c 65  28 41 24 29 0d 4c ae 1b  |copyfile(A$).L..|
0000c0b0  ea 6c 25 2c 61 63 74 25  2c 73 24 2c 64 24 2c 6e  |.l%,act%,s$,d$,n|
0000c0c0  25 2c 42 24 2c 43 24 0d  4c b8 16 61 63 74 25 3d  |%,B$,C$.L..act%=|
0000c0d0  30 3a 73 24 3d 22 22 3a  64 24 3d 22 22 0d 4c c2  |0:s$="":d$="".L.|
0000c0e0  21 f2 70 72 69 6e 74 28  a4 6d 73 67 30 28 22 46  |!.print(.msg0("F|
0000c0f0  63 6f 70 79 22 29 2c 22  20 22 2c 22 22 29 0d 4c  |copy")," ","").L|
0000c100  cc 12 f5 42 24 3d a4 70  61 72 61 6d 28 41 24 29  |...B$=.param(A$)|
0000c110  0d 4c d6 12 20 20 e7 c0  42 24 2c 31 29 3d 22 2f  |.L..  ..B$,1)="/|
0000c120  22 8c 0d 4c e0 1f 20 20  20 20 43 24 3d a4 76 61  |"..L..    C$=.va|
0000c130  6c 75 65 28 42 24 29 3a  c8 8e c0 42 24 2c 32 29  |lue(B$):...B$,2)|
0000c140  ca 0d 4c ea 29 20 20 20  20 20 20 c9 22 74 61 22  |..L.)      ."ta"|
0000c150  3a 61 63 74 25 3d 31 3a  6e 25 3d bb 43 24 3a e7  |:act%=1:n%=.C$:.|
0000c160  6e 25 3d 30 8c 6e 25 3d  35 30 0d 4c f4 29 20 20  |n%=0.n%=50.L.)  |
0000c170  20 20 20 20 c9 22 68 65  22 3a 61 63 74 25 3d 32  |    ."he":act%=2|
0000c180  3a 6e 25 3d bb 43 24 3a  e7 6e 25 3d 30 8c 6e 25  |:n%=.C$:.n%=0.n%|
0000c190  3d 35 30 0d 4c fe 09 20  20 20 20 cb 0d 4d 08 07  |=50.L..    ..M..|
0000c1a0  20 20 cc 0d 4d 12 19 20  20 e7 73 24 3d 22 22 8c  |  ..M..  .s$="".|
0000c1b0  73 24 3d 42 24 3a 8b 64  24 3d 42 24 0d 4d 1c 05  |s$=B$:.d$=B$.M..|
0000c1c0  cd 0d 4d 26 0a fd 41 24  3d 22 22 0d 4d 30 29 e7  |..M&..A$="".M0).|
0000c1d0  64 24 3d 22 22 8c f2 70  72 69 6e 74 28 22 22 2c  |d$=""..print("",|
0000c1e0  a4 6d 73 67 30 28 22 46  62 61 64 22 29 2c 22 22  |.msg0("Fbad"),""|
0000c1f0  29 3a 3d 30 0d 4d 3a 17  6c 25 3d a7 64 24 2c 22  |):=0.M:.l%=.d$,"|
0000c200  2a 22 29 3a e7 6c 25 3e  30 20 8c 0d 4d 44 26 20  |*"):.l%>0 ..MD& |
0000c210  20 f5 64 24 3d c0 64 24  2c 6c 25 2d 31 29 2b c2  | .d$=.d$,l%-1)+.|
0000c220  c3 28 91 29 2c 34 29 2b  c1 64 24 2c 6c 25 2b 31  |.(.),4)+.d$,l%+1|
0000c230  29 0d 4d 4e 17 20 20 fd  a4 74 65 73 74 66 69 6c  |).MN.  ..testfil|
0000c240  65 28 64 24 29 3c 3e 31  0d 4d 58 05 cd 0d 4d 62  |e(d$)<>1.MX...Mb|
0000c250  24 f2 70 72 69 6e 74 28  22 22 2c a4 6d 73 67 32  |$.print("",.msg2|
0000c260  28 22 46 74 6f 22 2c 42  24 2c 41 24 29 2c 22 22  |("Fto",B$,A$),""|
0000c270  29 0d 4d 6c 10 6c 25 3d  30 3a c8 8e 61 63 74 25  |).Ml.l%=0:..act%|
0000c280  ca 0d 4d 76 36 20 20 c9  30 3a c8 99 22 58 4f 53  |..Mv6  .0:.."XOS|
0000c290  5f 46 53 43 6f 6e 74 72  6f 6c 22 2c 32 36 2c 73  |_FSControl",26,s|
0000c2a0  24 2c 64 24 b8 3b 46 25  3a 6c 25 3d 2d 28 28 46  |$,d$.;F%:l%=-((F|
0000c2b0  25 80 31 29 3d 30 29 0d  4d 80 38 20 20 c9 31 3a  |%.1)=0).M.8  .1:|
0000c2c0  f2 70 72 69 6e 74 28 a4  6d 73 67 30 28 22 46 74  |.print(.msg0("Ft|
0000c2d0  61 69 6c 22 29 2c 22 22  2c 22 22 29 3a 6c 25 3d  |ail"),"",""):l%=|
0000c2e0  a4 74 61 69 6c 28 73 24  2c 64 24 2c 6e 25 29 0d  |.tail(s$,d$,n%).|
0000c2f0  4d 8a 38 20 20 c9 32 3a  f2 70 72 69 6e 74 28 a4  |M.8  .2:.print(.|
0000c300  6d 73 67 30 28 22 46 68  65 61 64 22 29 2c 22 22  |msg0("Fhead"),""|
0000c310  2c 22 22 29 3a 6c 25 3d  a4 68 65 61 64 28 73 24  |,""):l%=.head(s$|
0000c320  2c 64 24 2c 6e 25 29 0d  4d 94 05 cb 0d 4d 9e 15  |,d$,n%).M....M..|
0000c330  f2 73 65 74 76 28 22 24  64 65 73 74 22 2c 41 24  |.setv("$dest",A$|
0000c340  29 0d 4d a8 07 3d 6c 25  0d 4d b2 04 0d 4d bc 10  |).M..=l%.M...M..|
0000c350  dd a4 61 70 70 65 6e 64  28 41 24 29 0d 4d c6 1b  |..append(A$).M..|
0000c360  ea 53 25 2c 72 25 2c 66  66 25 2c 74 66 25 2c 66  |.S%,r%,ff%,tf%,f|
0000c370  24 2c 74 24 2c 46 25 0d  4d d0 20 f2 70 72 69 6e  |$,t$,F%.M. .prin|
0000c380  74 28 a4 6d 73 67 30 28  22 46 61 70 70 22 29 2c  |t(.msg0("Fapp"),|
0000c390  22 20 22 2c 22 22 29 0d  4d da 1f 66 24 3d a4 70  |" ","").M..f$=.p|
0000c3a0  61 72 61 6d 28 41 24 29  3a 74 24 3d a4 70 61 72  |aram(A$):t$=.par|
0000c3b0  61 6d 28 41 24 29 0d 4d  e4 29 e7 74 24 3d 22 22  |am(A$).M.).t$=""|
0000c3c0  8c f2 70 72 69 6e 74 28  22 22 2c a4 6d 73 67 30  |..print("",.msg0|
0000c3d0  28 22 46 62 61 64 22 29  2c 22 22 29 3a 3d 30 0d  |("Fbad"),""):=0.|
0000c3e0  4d ee 24 f2 70 72 69 6e  74 28 22 22 2c a4 6d 73  |M.$.print("",.ms|
0000c3f0  67 32 28 22 46 74 6f 22  2c 66 24 2c 74 24 29 2c  |g2("Fto",f$,t$),|
0000c400  22 22 29 0d 4d f8 37 66  66 25 3d a4 6f 70 65 6e  |"").M.7ff%=.open|
0000c410  69 6e 28 66 24 29 3a e7  66 66 25 3d 30 8c f2 6c  |in(f$):.ff%=0..l|
0000c420  6f 67 28 a4 6d 73 67 31  28 22 46 73 6f 75 72 63  |og(.msg1("Fsourc|
0000c430  65 22 2c 66 24 29 29 3a  3d 30 0d 4e 02 48 74 66  |e",f$)):=0.N.Htf|
0000c440  25 3d a4 6f 70 65 6e 75  70 28 74 24 29 3a e7 74  |%=.openup(t$):.t|
0000c450  66 25 3d 30 8c c8 99 22  58 4f 53 5f 46 69 6c 65  |f%=0..."XOS_File|
0000c460  22 2c 31 31 2c 74 24 2c  26 46 46 46 2c 2c 30 2c  |",11,t$,&FFF,,0,|
0000c470  30 3a 74 66 25 3d a4 6f  70 65 6e 6f 75 74 28 74  |0:tf%=.openout(t|
0000c480  24 29 0d 4e 0c 14 e7 74  66 25 3e 30 20 80 a2 23  |$).N...tf%>0 ..#|
0000c490  66 66 25 3e 30 8c 0d 4e  16 3c 20 20 cf 23 74 66  |ff%>0..N.<  .#tf|
0000c4a0  25 3d a2 23 74 66 25 3a  53 25 3d 30 3a f5 c8 99  |%=.#tf%:S%=0:...|
0000c4b0  22 58 4f 53 5f 47 42 50  42 22 2c 34 2c 66 66 25  |"XOS_GBPB",4,ff%|
0000c4c0  2c 74 6d 70 25 2c 32 35  36 b8 2c 2c 2c 72 25 3b  |,tmp%,256.,,,r%;|
0000c4d0  46 25 0d 4e 20 48 20 20  e7 72 25 3c 3e 32 35 36  |F%.N H  .r%<>256|
0000c4e0  80 28 46 25 80 31 29 3d  30 8c c8 99 22 58 4f 53  |.(F%.1)=0..."XOS|
0000c4f0  5f 47 42 50 42 22 2c 32  2c 74 66 25 2c 74 6d 70  |_GBPB",2,tf%,tmp|
0000c500  25 2c 32 35 36 2d 72 25  b8 3b 46 25 3a f2 70 6f  |%,256-r%.;F%:.po|
0000c510  6c 6c 28 73 6c 69 63 65  25 29 0d 4e 2a 10 20 20  |ll(slice%).N*.  |
0000c520  53 25 2b 3d 32 35 36 2d  72 25 0d 4e 34 18 fd 53  |S%+=256-r%.N4..S|
0000c530  25 3e 3d a2 23 66 66 25  84 28 46 25 80 31 29 3c  |%>=.#ff%.(F%.1)<|
0000c540  3e 30 0d 4e 3e 05 cd 0d  4e 48 15 f2 63 66 28 66  |>0.N>...NH..cf(f|
0000c550  66 25 29 3a f2 63 66 28  74 66 25 29 0d 4e 52 06  |f%):.cf(tf%).NR.|
0000c560  3d 31 0d 4e 5c 04 0d 4e  66 14 dd a4 74 61 69 6c  |=1.N\..Nf...tail|
0000c570  28 73 24 2c 64 24 2c 6c  25 29 0d 4e 70 0d ea 6e  |(s$,d$,l%).Np..n|
0000c580  25 2c 6d 25 2c 41 24 0d  4e 7a 37 66 66 25 3d a4  |%,m%,A$.Nz7ff%=.|
0000c590  6f 70 65 6e 69 6e 28 73  24 29 3a e7 66 66 25 3d  |openin(s$):.ff%=|
0000c5a0  30 8c f2 6c 6f 67 28 a4  6d 73 67 31 28 22 46 73  |0..log(.msg1("Fs|
0000c5b0  6f 75 72 63 65 22 2c 73  24 29 29 3a 3d 30 0d 4e  |ource",s$)):=0.N|
0000c5c0  84 31 c8 99 22 58 4f 53  5f 46 69 6c 65 22 2c 31  |.1.."XOS_File",1|
0000c5d0  31 2c 64 24 2c 26 46 46  46 2c 2c 30 2c 30 3a 74  |1,d$,&FFF,,0,0:t|
0000c5e0  66 25 3d a4 6f 70 65 6e  6f 75 74 28 64 24 29 0d  |f%=.openout(d$).|
0000c5f0  4e 8e 14 e7 74 66 25 3e  30 20 80 a2 23 66 66 25  |N...tf%>0 ..#ff%|
0000c600  3e 30 8c 0d 4e 98 0c 20  20 6e 25 3d 30 3a f5 0d  |>0..N..  n%=0:..|
0000c610  4e a2 26 20 20 20 20 41  24 3d be 23 66 66 25 3a  |N.&    A$=.#ff%:|
0000c620  6e 25 2b 3d 31 3a f2 70  6f 6c 6c 28 73 6c 69 63  |n%+=1:.poll(slic|
0000c630  65 25 2a 32 29 0d 4e ac  14 20 20 fd c5 23 66 66  |e%*2).N..  ..#ff|
0000c640  25 3a cf 23 66 66 25 3d  30 0d 4e b6 19 20 20 6d  |%:.#ff%=0.N..  m|
0000c650  25 3d 6e 25 2d 6c 25 3a  e7 6d 25 3c 30 8c 6d 25  |%=n%-l%:.m%<0.m%|
0000c660  3d 30 0d 4e c0 0c 20 20  6e 25 3d 30 3a f5 0d 4e  |=0.N..  n%=0:..N|
0000c670  ca 26 20 20 20 20 41 24  3d be 23 66 66 25 3a 6e  |.&    A$=.#ff%:n|
0000c680  25 2b 3d 31 3a f2 70 6f  6c 6c 28 73 6c 69 63 65  |%+=1:.poll(slice|
0000c690  25 2a 32 29 0d 4e d4 0d  20 20 fd 6e 25 3e 3d 6d  |%*2).N..  .n%>=m|
0000c6a0  25 0d 4e de 07 20 20 f5  0d 4e e8 29 20 20 20 20  |%.N..  ..N.)    |
0000c6b0  41 24 3d be 23 66 66 25  3a d5 23 74 66 25 2c 41  |A$=.#ff%:.#tf%,A|
0000c6c0  24 3a f2 70 6f 6c 6c 28  73 6c 69 63 65 25 2a 32  |$:.poll(slice%*2|
0000c6d0  29 0d 4e f2 0c 20 20 fd  c5 23 66 66 25 0d 4e fc  |).N..  ..#ff%.N.|
0000c6e0  05 cd 0d 4f 06 15 f2 63  66 28 66 66 25 29 3a f2  |...O...cf(ff%):.|
0000c6f0  63 66 28 74 66 25 29 0d  4f 10 06 3d 31 0d 4f 1a  |cf(tf%).O..=1.O.|
0000c700  04 0d 4f 24 14 dd a4 68  65 61 64 28 73 24 2c 64  |..O$...head(s$,d|
0000c710  24 2c 6c 25 29 0d 4f 2e  0d ea 6e 25 2c 6d 25 2c  |$,l%).O...n%,m%,|
0000c720  41 24 0d 4f 38 37 66 66  25 3d a4 6f 70 65 6e 69  |A$.O87ff%=.openi|
0000c730  6e 28 73 24 29 3a e7 66  66 25 3d 30 8c f2 6c 6f  |n(s$):.ff%=0..lo|
0000c740  67 28 a4 6d 73 67 31 28  22 46 73 6f 75 72 63 65  |g(.msg1("Fsource|
0000c750  22 2c 73 24 29 29 3a 3d  30 0d 4f 42 31 c8 99 22  |",s$)):=0.OB1.."|
0000c760  58 4f 53 5f 46 69 6c 65  22 2c 31 31 2c 64 24 2c  |XOS_File",11,d$,|
0000c770  26 46 46 46 2c 2c 30 2c  30 3a 74 66 25 3d a4 6f  |&FFF,,0,0:tf%=.o|
0000c780  70 65 6e 6f 75 74 28 64  24 29 0d 4f 4c 14 e7 74  |penout(d$).OL..t|
0000c790  66 25 3e 30 20 80 a2 23  66 66 25 3e 30 8c 0d 4f  |f%>0 ..#ff%>0..O|
0000c7a0  56 0c 20 20 6e 25 3d 30  3a f5 0d 4f 60 2f 20 20  |V.  n%=0:..O`/  |
0000c7b0  20 20 41 24 3d be 23 66  66 25 3a d5 23 74 66 25  |  A$=.#ff%:.#tf%|
0000c7c0  2c 41 24 3a 6e 25 2b 3d  31 3a f2 70 6f 6c 6c 28  |,A$:n%+=1:.poll(|
0000c7d0  73 6c 69 63 65 25 2a 32  29 0d 4f 6a 13 20 20 fd  |slice%*2).Oj.  .|
0000c7e0  c5 23 66 66 25 84 6e 25  3e 3d 6c 25 0d 4f 74 05  |.#ff%.n%>=l%.Ot.|
0000c7f0  cd 0d 4f 7e 15 f2 63 66  28 66 66 25 29 3a f2 63  |..O~..cf(ff%):.c|
0000c800  66 28 74 66 25 29 0d 4f  88 06 3d 31 0d 4f 92 04  |f(tf%).O..=1.O..|
0000c810  0d 4f 9c 10 dd a4 64 65  6c 65 74 65 28 41 24 29  |.O....delete(A$)|
0000c820  0d 4f a6 0a ea 77 25 2c  42 24 0d 4f b0 08 77 25  |.O...w%,B$.O..w%|
0000c830  3d 30 0d 4f ba 12 f5 42  24 3d a4 70 61 72 61 6d  |=0.O...B$=.param|
0000c840  28 41 24 29 0d 4f c4 12  e7 c0 42 24 2c 33 29 3d  |(A$).O....B$,3)=|
0000c850  22 2f 77 69 22 8c 0d 4f  ce 0a 20 20 77 25 3d b9  |"/wi"..O..  w%=.|
0000c860  0d 4f d8 07 20 20 cc 0d  4f e2 40 20 20 e7 77 25  |.O..  ..O.@  .w%|
0000c870  3d 30 8c c8 99 22 58 4f  53 5f 46 69 6c 65 22 2c  |=0..."XOS_File",|
0000c880  36 2c 42 24 b8 3b 46 25  8b c8 99 22 58 4f 53 5f  |6,B$.;F%..."XOS_|
0000c890  46 53 43 6f 6e 74 72 6f  6c 22 2c 32 37 2c 42 24  |FSControl",27,B$|
0000c8a0  2c 2c 32 b8 3b 46 25 0d  4f ec 05 cd 0d 4f f6 0a  |,,2.;F%.O....O..|
0000c8b0  fd 41 24 3d 22 22 0d 50  00 10 3d 2d 28 28 46 25  |.A$="".P..=-((F%|
0000c8c0  80 31 29 3d 30 29 0d 50  0a 04 0d 50 14 12 dd a4  |.1)=0).P...P....|
0000c8d0  64 61 74 61 6f 70 65 6e  28 41 24 29 0d 50 1e 13  |dataopen(A$).P..|
0000c8e0  ea 6c 25 2c 68 25 2c 74  79 70 65 25 2c 42 24 0d  |.l%,h%,type%,B$.|
0000c8f0  50 28 11 42 24 3d a4 70  61 72 61 6d 28 41 24 29  |P(.B$=.param(A$)|
0000c900  0d 50 32 23 e7 41 24 3d  22 22 8c f2 68 61 6c 74  |.P2#.A$=""..halt|
0000c910  28 a4 6d 73 67 30 28 22  45 64 61 74 61 22 29 29  |(.msg0("Edata"))|
0000c920  3a 3d 30 0d 50 3c 24 f2  70 72 69 6e 74 28 a4 6d  |:=0.P<$.print(.m|
0000c930  73 67 30 28 22 44 61 74  61 4f 70 65 6e 22 29 2c  |sg0("DataOpen"),|
0000c940  22 20 22 2c 22 22 29 0d  50 46 14 68 25 3d a4 74  |" ","").PF.h%=.t|
0000c950  61 73 6b 68 61 6e 64 28  42 24 29 0d 50 50 26 c8  |askhand(B$).PP&.|
0000c960  99 22 58 4f 53 5f 46 69  6c 65 22 2c 32 33 2c 41  |."XOS_File",23,A|
0000c970  24 20 b8 20 6c 25 2c 2c  2c 2c 2c 2c 74 79 70 65  |$ . l%,,,,,,type|
0000c980  25 0d 50 5a 12 e7 68 25  3c 3e 30 20 80 6c 25 3d  |%.PZ..h%<>0 .l%=|
0000c990  31 20 8c 0d 50 64 0f 20  20 72 65 74 75 72 6e 25  |1 ..Pd.  return%|
0000c9a0  3d 31 0d 50 6e 34 20 20  f2 70 72 69 6e 74 28 22  |=1.Pn4  .print("|
0000c9b0  22 2c 41 24 2b 22 20 28  74 79 70 65 20 26 22 2b  |",A$+" (type &"+|
0000c9c0  c3 7e 74 79 70 65 25 2b  22 29 20 74 6f 20 22 2b  |.~type%+") to "+|
0000c9d0  42 24 2c 22 22 29 0d 50  78 3d 20 20 71 25 21 31  |B$,"").Px=  q%!1|
0000c9e0  32 3d 30 3a 71 25 21 31  36 3d 35 3a 71 25 21 32  |2=0:q%!16=5:q%!2|
0000c9f0  30 3d 30 3a 71 25 21 32  34 3d 30 3a 71 25 21 32  |0=0:q%!24=0:q%!2|
0000ca00  38 3d 30 3a 71 25 21 33  32 3d 30 3a 71 25 21 33  |8=0:q%!32=0:q%!3|
0000ca10  36 3d 30 0d 50 82 30 20  20 71 25 21 34 30 3d 74  |6=0.P.0  q%!40=t|
0000ca20  79 70 65 25 3a 24 28 71  25 2b 34 34 29 3d 41 24  |ype%:$(q%+44)=A$|
0000ca30  2b bd 30 3a 21 71 25 3d  34 37 2b a9 41 24 2b 31  |+.0:!q%=47+.A$+1|
0000ca40  80 ac 33 0d 50 8c 23 20  20 c8 99 22 57 69 6d 70  |..3.P.#  .."Wimp|
0000ca50  5f 53 65 6e 64 4d 65 73  73 61 67 65 22 2c 31 38  |_SendMessage",18|
0000ca60  2c 71 25 2c 68 25 0d 50  96 05 cc 0d 50 a0 0f 20  |,q%,h%.P....P.. |
0000ca70  20 72 65 74 75 72 6e 25  3d 30 0d 50 aa 2d 20 20  | return%=0.P.-  |
0000ca80  e7 68 25 3d 30 8c f2 70  72 69 6e 74 28 22 22 2c  |.h%=0..print("",|
0000ca90  a4 6d 73 67 31 28 22 45  6e 6f 74 61 73 6b 22 2c  |.msg1("Enotask",|
0000caa0  42 24 29 2c 22 22 29 0d  50 b4 2e 20 20 e7 6c 25  |B$),"").P..  .l%|
0000cab0  3c 3e 31 8c f2 70 72 69  6e 74 28 22 22 2c a4 6d  |<>1..print("",.m|
0000cac0  73 67 31 28 22 45 6e 6f  66 69 6c 65 22 2c 41 24  |sg1("Enofile",A$|
0000cad0  29 2c 22 22 29 0d 50 be  05 cd 0d 50 c8 0c 3d 72  |),"").P....P..=r|
0000cae0  65 74 75 72 6e 25 0d 50  d2 04 0d 50 dc 0f dd f2  |eturn%.P...P....|
0000caf0  6c 69 73 74 74 61 73 6b  73 0d 50 e6 07 ea 6c 25  |listtasks.P...l%|
0000cb00  0d 50 f0 21 f2 77 61 72  6e 5f 74 78 74 28 a4 6d  |.P.!.warn_txt(.m|
0000cb10  73 67 30 28 22 54 61 73  6b 4c 69 73 74 31 22 29  |sg0("TaskList1")|
0000cb20  29 0d 50 fa 12 e3 6c 25  3d 30 b8 74 61 73 6b 6d  |).P...l%=0.taskm|
0000cb30  61 78 25 0d 51 04 13 e7  74 61 73 6b 68 25 28 6c  |ax%.Q...taskh%(l|
0000cb40  25 29 3e 30 20 8c 0d 51  0e 45 20 20 f2 66 5f 6c  |%)>0 ..Q.E  .f_l|
0000cb50  69 73 74 28 c3 7e 74 61  73 6b 68 25 28 6c 25 29  |ist(.~taskh%(l%)|
0000cb60  2c a4 74 61 73 6b 6e 61  6d 65 28 74 61 73 6b 68  |,.taskname(taskh|
0000cb70  25 28 6c 25 29 29 2b 22  20 28 22 2b 74 61 73 6b  |%(l%))+" ("+task|
0000cb80  6e 24 28 6c 25 29 2b 22  29 22 29 0d 51 18 37 20  |n$(l%)+")").Q.7 |
0000cb90  20 e7 74 61 73 6b 65 78  24 28 6c 25 29 3e 22 22  | .taskex$(l%)>""|
0000cba0  8c f2 66 5f 6c 69 73 74  28 22 22 2c 22 20 65 78  |..f_list(""," ex|
0000cbb0  69 74 3a 20 22 2b 74 61  73 6b 65 78 24 28 6c 25  |it: "+taskex$(l%|
0000cbc0  29 29 0d 51 22 05 cd 0d  51 2c 05 ed 0d 51 36 21  |)).Q"...Q,...Q6!|
0000cbd0  f2 77 61 72 6e 5f 74 78  74 28 a4 6d 73 67 30 28  |.warn_txt(.msg0(|
0000cbe0  22 54 61 73 6b 4c 69 73  74 32 22 29 29 0d 51 40  |"TaskList2")).Q@|
0000cbf0  10 e3 6c 25 3d 30 b8 74  77 6d 61 78 25 0d 51 4a  |..l%=0.twmax%.QJ|
0000cc00  11 e7 74 77 68 25 28 6c  25 29 3e 30 20 8c 0d 51  |..twh%(l%)>0 ..Q|
0000cc10  54 39 20 20 f2 66 5f 6c  69 73 74 28 c3 7e 74 77  |T9  .f_list(.~tw|
0000cc20  68 25 28 6c 25 29 2c 74  77 63 6f 6d 24 28 6c 25  |h%(l%),twcom$(l%|
0000cc30  29 2b 22 20 28 22 2b 74  77 6e 61 6d 65 24 28 6c  |)+" ("+twname$(l|
0000cc40  25 29 2b 22 29 22 29 0d  51 5e 37 20 20 e7 74 77  |%)+")").Q^7  .tw|
0000cc50  65 78 69 74 24 28 6c 25  29 3e 22 22 8c f2 66 5f  |exit$(l%)>""..f_|
0000cc60  6c 69 73 74 28 22 22 2c  22 20 65 78 69 74 3a 20  |list(""," exit: |
0000cc70  22 2b 74 77 65 78 69 74  24 28 6c 25 29 29 0d 51  |"+twexit$(l%)).Q|
0000cc80  68 05 cd 0d 51 72 05 ed  0d 51 7c 05 e1 0d 51 86  |h...Qr...Q|...Q.|
0000cc90  04 0d 51 90 0f dd a4 6f  73 63 6c 69 28 41 24 29  |..Q....oscli(A$)|
0000cca0  0d 51 9a 07 ea 42 24 0d  51 a4 12 f5 42 24 3d a4  |.Q...B$.Q...B$=.|
0000ccb0  70 61 72 61 6d 28 41 24  29 0d 51 ae 21 20 20 c8  |param(A$).Q.!  .|
0000ccc0  99 22 58 57 69 6d 70 5f  53 74 61 72 74 54 61 73  |."XWimp_StartTas|
0000ccd0  6b 22 2c 42 24 20 b8 3b  46 25 0d 51 b8 0a fd 41  |k",B$ .;F%.Q...A|
0000cce0  24 3d 22 22 0d 51 c2 0b  3d 28 46 25 80 31 29 0d  |$="".Q..=(F%.1).|
0000ccf0  51 cc 04 0d 51 d6 0e dd  a4 74 61 73 6b 28 41 24  |Q...Q....task(A$|
0000cd00  29 0d 51 e0 17 ea 61 25  2c 77 25 2c 68 25 2c 74  |).Q...a%,w%,h%,t|
0000cd10  73 25 2c 42 24 2c 43 24  0d 51 ea 10 77 61 69 74  |s%,B$,C$.Q..wait|
0000cd20  25 3d 30 3a 61 25 3d 30  0d 51 f4 24 f5 61 25 2b  |%=0:a%=0.Q.$.a%+|
0000cd30  3d 31 3a fd 74 61 73 6b  68 25 28 61 25 29 3d 30  |=1:.taskh%(a%)=0|
0000cd40  84 61 25 3d 74 61 73 6b  6d 61 78 25 0d 51 fe 2c  |.a%=taskmax%.Q.,|
0000cd50  e7 74 61 73 6b 68 25 28  61 25 29 3c 3e 30 20 8c  |.taskh%(a%)<>0 .|
0000cd60  f2 68 61 6c 74 28 a4 6d  73 67 30 28 22 45 74 61  |.halt(.msg0("Eta|
0000cd70  73 6b 32 22 29 29 3a e1  0d 52 08 2d 74 61 73 6b  |sk2")):..R.-task|
0000cd80  6e 24 28 61 25 29 3d 22  74 61 73 6b 22 2b c3 61  |n$(a%)="task"+.a|
0000cd90  25 3a 74 61 73 6b 65 78  24 28 61 25 29 3d 22 22  |%:taskex$(a%)=""|
0000cda0  3a 68 25 3d 30 0d 52 12  12 f5 42 24 3d a4 70 61  |:h%=0.R...B$=.pa|
0000cdb0  72 61 6d 28 41 24 29 0d  52 1c 10 e7 c0 42 24 2c  |ram(A$).R....B$,|
0000cdc0  31 29 3d 22 2f 22 8c 0d  52 26 13 20 20 43 24 3d  |1)="/"..R&.  C$=|
0000cdd0  a4 76 61 6c 75 65 28 42  24 29 0d 52 30 0f 20 20  |.value(B$).R0.  |
0000cde0  c8 8e c0 42 24 2c 32 29  ca 0d 52 3a 2f 20 20 20  |...B$,2)..R:/   |
0000cdf0  20 c9 22 6b 69 22 2c 22  64 65 22 3a 68 25 3d a4  | ."ki","de":h%=.|
0000ce00  6b 69 6c 6c 74 61 73 6b  28 43 24 29 3a 42 24 3d  |killtask(C$):B$=|
0000ce10  22 22 3a 41 24 3d 22 22  0d 52 44 20 20 20 20 20  |"":A$="".RD     |
0000ce20  c9 22 6e 61 22 2c 22 69  64 22 3a 74 61 73 6b 6e  |."na","id":taskn|
0000ce30  24 28 61 25 29 3d 43 24  0d 52 4e 1c 20 20 20 20  |$(a%)=C$.RN.    |
0000ce40  c9 22 65 78 22 3a 74 61  73 6b 65 78 24 28 61 25  |."ex":taskex$(a%|
0000ce50  29 3d 43 24 0d 52 58 15  20 20 20 20 c9 22 77 61  |)=C$.RX.    ."wa|
0000ce60  22 3a 77 61 69 74 25 3d  b9 0d 52 62 07 20 20 cb  |":wait%=..Rb.  .|
0000ce70  0d 52 6c 05 cd 0d 52 76  0a fd 41 24 3d 22 22 0d  |.Rl...Rv..A$="".|
0000ce80  52 80 0b e7 42 24 3e 22  22 8c 0d 52 8a 2a 20 20  |R...B$>""..R.*  |
0000ce90  f2 70 72 69 6e 74 28 a4  6d 73 67 31 28 22 54 61  |.print(.msg1("Ta|
0000cea0  73 6b 53 74 61 72 74 31  22 2c 42 24 29 2c 22 22  |skStart1",B$),""|
0000ceb0  2c 22 22 29 0d 52 94 21  20 20 c8 99 22 58 57 69  |,"").R.!  .."XWi|
0000cec0  6d 70 5f 53 74 61 72 74  54 61 73 6b 22 2c 42 24  |mp_StartTask",B$|
0000ced0  20 b8 3b 46 25 0d 52 9e  11 20 20 e7 28 46 25 80  | .;F%.R..  .(F%.|
0000cee0  31 29 3d 30 20 8c 0d 52  a8 1b 20 20 20 20 74 61  |1)=0 ..R..    ta|
0000cef0  73 6b 73 74 61 72 74 25  3d 61 25 3a 74 73 25 3d  |skstart%=a%:ts%=|
0000cf00  30 0d 52 b2 3a 20 20 20  20 f5 74 73 25 2b 3d 31  |0.R.:    .ts%+=1|
0000cf10  3a f2 70 6f 6c 6c 28 30  29 3a fd 74 61 73 6b 73  |:.poll(0):.tasks|
0000cf20  74 61 72 74 25 3d 30 84  74 73 25 3e 31 30 3a 74  |tart%=0.ts%>10:t|
0000cf30  61 73 6b 73 74 61 72 74  25 3d 30 0d 52 bc 07 20  |askstart%=0.R.. |
0000cf40  20 cd 0d 52 c6 1e 20 20  e7 74 61 73 6b 68 25 28  | ..R..  .taskh%(|
0000cf50  61 25 29 3c 3e 30 80 77  61 69 74 25 3c 3e 30 8c  |a%)<>0.wait%<>0.|
0000cf60  0d 52 d0 21 20 20 20 20  f5 3a f2 70 6f 6c 6c 28  |.R.!    .:.poll(|
0000cf70  35 30 29 3a fd 74 61 73  6b 68 25 28 61 25 29 3d  |50):.taskh%(a%)=|
0000cf80  30 0d 52 da 07 20 20 cd  0d 52 e4 14 20 20 68 25  |0.R..  ..R..  h%|
0000cf90  3d 2d 28 28 46 25 80 31  29 3d 30 29 0d 52 ee 05  |=-((F%.1)=0).R..|
0000cfa0  cd 0d 52 f8 07 3d 68 25  0d 53 02 04 0d 53 0c 12  |..R..=h%.S...S..|
0000cfb0  dd a4 6b 69 6c 6c 74 61  73 6b 28 41 24 29 0d 53  |..killtask(A$).S|
0000cfc0  16 0a ea 6c 25 2c 68 25  0d 53 20 0b e7 41 24 3d  |...l%,h%.S ..A$=|
0000cfd0  22 22 8c 0d 53 2a 2d 20  20 6c 25 3d 74 61 73 6b  |""..S*-  l%=task|
0000cfe0  6d 61 78 25 3a c8 95 74  61 73 6b 68 25 28 6c 25  |max%:..taskh%(l%|
0000cff0  29 3d 30 80 6c 25 3e 30  3a 6c 25 2d 3d 31 3a ce  |)=0.l%>0:l%-=1:.|
0000d000  0d 53 34 23 20 20 e7 20  74 61 73 6b 68 25 28 6c  |.S4#  . taskh%(l|
0000d010  25 29 3e 30 20 8c 68 25  3d 74 61 73 6b 68 25 28  |%)>0 .h%=taskh%(|
0000d020  6c 25 29 0d 53 3e 05 cc  0d 53 48 14 20 20 e3 6c  |l%).S>...SH.  .l|
0000d030  25 3d 30 b8 74 61 73 6b  6d 61 78 25 0d 53 52 16  |%=0.taskmax%.SR.|
0000d040  20 20 20 20 e7 74 61 73  6b 68 25 28 6c 25 29 3e  |    .taskh%(l%)>|
0000d050  30 8c 0d 53 5c 41 20 20  20 20 20 20 e7 a4 74 61  |0..S\A      ..ta|
0000d060  73 6b 6e 61 6d 65 28 74  61 73 6b 68 25 28 6c 25  |skname(taskh%(l%|
0000d070  29 29 3d 41 24 20 84 74  61 73 6b 6e 24 28 6c 25  |))=A$ .taskn$(l%|
0000d080  29 3d 41 24 20 8c 68 25  3d 74 61 73 6b 68 25 28  |)=A$ .h%=taskh%(|
0000d090  6c 25 29 0d 53 66 09 20  20 20 20 cd 0d 53 70 07  |l%).Sf.    ..Sp.|
0000d0a0  20 20 ed 0d 53 7a 05 cd  0d 53 84 0c e7 68 25 3c  |  ..Sz...S...h%<|
0000d0b0  3e 30 20 8c 0d 53 8e 1f  20 20 f2 6c 6f 67 28 22  |>0 ..S..  .log("|
0000d0c0  4b 69 6c 6c 69 6e 67 20  74 61 73 6b 3a 20 22 2b  |Killing task: "+|
0000d0d0  41 24 29 0d 53 98 44 20  20 21 71 25 3d 32 35 36  |A$).S.D  !q%=256|
0000d0e0  3a 71 25 21 31 32 3d 30  3a 71 25 21 31 36 3d 30  |:q%!12=0:q%!16=0|
0000d0f0  3a c8 99 22 57 69 6d 70  5f 53 65 6e 64 4d 65 73  |:.."Wimp_SendMes|
0000d100  73 61 67 65 22 2c 31 37  2c 71 25 2c 68 25 3a f2  |sage",17,q%,h%:.|
0000d110  70 6f 6c 6c 28 30 29 0d  53 a2 05 cd 0d 53 ac 0d  |poll(0).S....S..|
0000d120  3d 2d 28 68 25 3c 3e 30  29 0d 53 b6 04 0d 53 c0  |=-(h%<>0).S...S.|
0000d130  12 dd a4 74 65 73 74 74  61 73 6b 28 41 24 29 0d  |...testtask(A$).|
0000d140  53 ca 12 3d a4 74 61 73  6b 68 61 6e 64 28 41 24  |S..=.taskhand(A$|
0000d150  29 0d 53 d4 04 0d 53 de  12 dd a4 74 61 73 6b 6e  |).S...S....taskn|
0000d160  61 6d 65 28 68 25 29 0d  53 e8 0a ea 66 24 2c 6e  |ame(h%).S...f$,n|
0000d170  25 0d 53 f2 37 66 24 3d  22 22 3a c8 99 22 58 54  |%.S.7f$="":.."XT|
0000d180  61 73 6b 4d 61 6e 61 67  65 72 5f 54 61 73 6b 4e  |askManager_TaskN|
0000d190  61 6d 65 46 72 6f 6d 48  61 6e 64 6c 65 22 2c 68  |ameFromHandle",h|
0000d1a0  25 20 b8 68 25 3b 46 25  0d 53 fc 0f e7 28 46 25  |% .h%;F%.S...(F%|
0000d1b0  80 31 29 3d 30 20 8c 0d  54 06 2a 20 20 6e 25 3d  |.1)=0 ..T.*  n%=|
0000d1c0  30 3a c8 95 68 25 3f 6e  25 3e 33 31 3a 66 24 2b  |0:..h%?n%>31:f$+|
0000d1d0  3d bd 28 68 25 3f 6e 25  29 3a 6e 25 2b 3d 31 3a  |=.(h%?n%):n%+=1:|
0000d1e0  ce 0d 54 10 05 cd 0d 54  1a 07 3d 66 24 0d 54 24  |..T....T..=f$.T$|
0000d1f0  04 0d 54 2e 12 dd a4 74  61 73 6b 68 61 6e 64 28  |..T....taskhand(|
0000d200  41 24 29 0d 54 38 13 ea  41 25 2c 72 25 2c 6c 25  |A$).T8..A%,r%,l%|
0000d210  2c 68 25 2c 42 24 0d 54  42 1b 72 25 3d 30 3a 41  |,h%,B$.TB.r%=0:A|
0000d220  25 3d 30 3a 41 24 3d a4  6c 6f 77 65 72 28 41 24  |%=0:A$=.lower(A$|
0000d230  29 0d 54 4c 05 f5 0d 54  56 3c 20 20 c8 99 22 54  |).TL...TV<  .."T|
0000d240  61 73 6b 4d 61 6e 61 67  65 72 5f 45 6e 75 6d 65  |askManager_Enume|
0000d250  72 61 74 65 54 61 73 6b  73 22 2c 41 25 2c 62 75  |rateTasks",A%,bu|
0000d260  66 66 65 72 25 2c 26 31  30 30 20 b8 20 41 25 2c  |ffer%,&100 . A%,|
0000d270  6c 25 0d 54 60 0c 20 20  70 74 72 25 3d 30 0d 54  |l%.T`.  ptr%=0.T|
0000d280  6a 29 20 20 c8 95 28 41  25 3e 3d 30 20 80 72 25  |j)  ..(A%>=0 .r%|
0000d290  3d 30 20 80 28 70 74 72  25 2b 62 75 66 66 65 72  |=0 .(ptr%+buffer|
0000d2a0  25 29 3c 3d 6c 25 29 0d  54 74 3a 20 20 20 20 68  |%)<=l%).Tt:    h|
0000d2b0  25 3d 62 75 66 66 65 72  25 21 70 74 72 25 3a 42  |%=buffer%!ptr%:B|
0000d2c0  24 3d a4 73 74 72 28 62  75 66 66 65 72 25 21 28  |$=.str(buffer%!(|
0000d2d0  70 74 72 25 2b 34 29 29  3a 70 74 72 25 2b 3d 31  |ptr%+4)):ptr%+=1|
0000d2e0  36 0d 54 7e 1d 20 20 20  20 e7 41 24 3d a4 6c 6f  |6.T~.    .A$=.lo|
0000d2f0  77 65 72 28 42 24 29 20  8c 72 25 3d 68 25 0d 54  |wer(B$) .r%=h%.T|
0000d300  88 07 20 20 ce 0d 54 92  12 fd 20 41 25 3c 30 20  |..  ..T... A%<0 |
0000d310  84 20 72 25 3c 3e 30 0d  54 9c 07 3d 72 25 0d 54  |. r%<>0.T..=r%.T|
0000d320  a6 04 0d 54 b0 0f dd f2  73 6f 72 74 74 61 73 6b  |...T....sorttask|
0000d330  73 0d 54 ba 07 ea 6c 25  0d 54 c4 14 e3 6c 25 3d  |s.T...l%.T...l%=|
0000d340  30 b8 74 61 73 6b 6d 61  78 25 2d 31 0d 54 ce 25  |0.taskmax%-1.T.%|
0000d350  20 20 e7 74 61 73 6b 68  25 28 6c 25 29 3d 30 80  |  .taskh%(l%)=0.|
0000d360  74 61 73 6b 68 25 28 6c  25 2b 31 29 3c 3e 30 20  |taskh%(l%+1)<>0 |
0000d370  8c 0d 54 d8 21 20 20 20  20 c8 94 74 61 73 6b 68  |..T.!    ..taskh|
0000d380  25 28 6c 25 29 2c 74 61  73 6b 68 25 28 6c 25 2b  |%(l%),taskh%(l%+|
0000d390  31 29 0d 54 e2 21 20 20  20 20 c8 94 74 61 73 6b  |1).T.!    ..task|
0000d3a0  6e 24 28 6c 25 29 2c 74  61 73 6b 6e 24 28 6c 25  |n$(l%),taskn$(l%|
0000d3b0  2b 31 29 0d 54 ec 23 20  20 20 20 c8 94 74 61 73  |+1).T.#    ..tas|
0000d3c0  6b 65 78 24 28 6c 25 29  2c 74 61 73 6b 65 78 24  |kex$(l%),taskex$|
0000d3d0  28 6c 25 2b 31 29 0d 54  f6 07 20 20 cd 0d 55 00  |(l%+1).T..  ..U.|
0000d3e0  05 ed 0d 55 0a 05 e1 0d  55 14 04 0d 55 1e 0f dd  |...U....U...U...|
0000d3f0  a4 74 61 73 6b 77 28 41  24 29 0d 55 28 23 ea 74  |.taskw(A$).U(#.t|
0000d400  77 25 2c 77 25 2c 74 73  25 2c 6e 25 2c 46 25 2c  |w%,w%,ts%,n%,F%,|
0000d410  6f 75 74 25 2c 42 24 2c  43 24 2c 53 24 0d 55 32  |out%,B$,C$,S$.U2|
0000d420  1d 74 77 25 3d 30 3a 77  61 69 74 25 3d 30 3a 46  |.tw%=0:wait%=0:F|
0000d430  25 3d 30 3a 6f 75 74 25  3d b9 0d 55 3c 26 c8 95  |%=0:out%=..U<&..|
0000d440  74 77 68 25 28 74 77 25  29 3c 3e 30 80 74 77 25  |twh%(tw%)<>0.tw%|
0000d450  3c 74 77 6d 61 78 25 3a  74 77 25 2b 3d 31 3a ce  |<twmax%:tw%+=1:.|
0000d460  0d 55 46 29 e7 74 77 25  3d 74 77 6d 61 78 25 8c  |.UF).tw%=twmax%.|
0000d470  f2 68 61 6c 74 28 a4 6d  73 67 30 28 22 45 74 61  |.halt(.msg0("Eta|
0000d480  73 6b 32 22 29 29 3a 3d  30 0d 55 50 2a c8 99 22  |sk2")):=0.UP*.."|
0000d490  57 69 6d 70 5f 53 6c 6f  74 53 69 7a 65 22 2c 2d  |Wimp_SlotSize",-|
0000d4a0  31 2c 2d 31 b8 2c 6e 25  3a 6e 25 3d 6e 25 81 31  |1,-1.,n%:n%=n%.1|
0000d4b0  30 32 34 0d 55 5a 45 53  24 3d c3 6e 25 2b 22 6b  |024.UZES$=.n%+"k|
0000d4c0  22 3a 74 77 6e 61 6d 65  24 28 74 77 25 29 3d 22  |":twname$(tw%)="|
0000d4d0  53 44 74 61 73 6b 22 2b  c3 74 77 25 3a 74 77 65  |SDtask"+.tw%:twe|
0000d4e0  78 69 74 24 28 74 77 25  29 3d 22 22 3a 74 77 6b  |xit$(tw%)="":twk|
0000d4f0  25 28 74 77 25 29 3d 30  0d 55 64 12 f5 42 24 3d  |%(tw%)=0.Ud..B$=|
0000d500  a4 70 61 72 61 6d 28 41  24 29 0d 55 6e 10 e7 c0  |.param(A$).Un...|
0000d510  42 24 2c 31 29 3d 22 2f  22 8c 0d 55 78 13 20 20  |B$,1)="/"..Ux.  |
0000d520  43 24 3d a4 76 61 6c 75  65 28 42 24 29 0d 55 82  |C$=.value(B$).U.|
0000d530  0f 20 20 c8 8e c0 42 24  2c 32 29 ca 0d 55 8c 13  |.  ...B$,2)..U..|
0000d540  20 20 20 20 c9 22 73 69  22 3a 53 24 3d 43 24 0d  |    ."si":S$=C$.|
0000d550  55 96 22 20 20 20 20 c9  22 6e 61 22 2c 22 69 64  |U."    ."na","id|
0000d560  22 3a 74 77 6e 61 6d 65  24 28 74 77 25 29 3d 43  |":twname$(tw%)=C|
0000d570  24 0d 55 a0 1d 20 20 20  20 c9 22 65 78 22 3a 74  |$.U..    ."ex":t|
0000d580  77 65 78 69 74 24 28 74  77 25 29 3d 43 24 0d 55  |wexit$(tw%)=C$.U|
0000d590  aa 33 20 20 20 20 c9 22  6f 75 22 3a f2 63 66 28  |.3    ."ou":.cf(|
0000d5a0  74 77 66 25 28 74 77 25  29 29 3a 74 77 66 25 28  |twf%(tw%)):twf%(|
0000d5b0  74 77 25 29 3d a4 6f 70  65 6e 6f 75 74 28 43 24  |tw%)=.openout(C$|
0000d5c0  29 0d 55 b4 15 20 20 20  20 c9 22 77 61 22 3a 77  |).U..    ."wa":w|
0000d5d0  61 69 74 25 3d b9 0d 55  be 19 20 20 20 20 c9 22  |ait%=..U..    ."|
0000d5e0  6b 65 22 3a 74 77 6b 25  28 74 77 25 29 3d b9 0d  |ke":twk%(tw%)=..|
0000d5f0  55 c8 20 20 20 20 20 c9  22 6b 69 22 3a f2 6d 65  |U.     ."ki":.me|
0000d600  73 73 74 77 28 43 24 2c  26 38 30 38 43 34 29 0d  |sstw(C$,&808C4).|
0000d610  55 d2 20 20 20 20 20 c9  22 73 75 22 3a f2 6d 65  |U.     ."su":.me|
0000d620  73 73 74 77 28 43 24 2c  26 38 30 38 43 36 29 0d  |sstw(C$,&808C6).|
0000d630  55 dc 20 20 20 20 20 c9  22 72 65 22 3a f2 6d 65  |U.     ."re":.me|
0000d640  73 73 74 77 28 43 24 2c  26 38 30 38 43 37 29 0d  |sstw(C$,&808C7).|
0000d650  55 e6 14 20 20 20 20 c9  22 6e 6f 22 3a 6f 75 74  |U..    ."no":out|
0000d660  25 3d a3 0d 55 f0 07 20  20 cb 0d 55 fa 0b 20 20  |%=..U..  ..U..  |
0000d670  42 24 3d 22 22 0d 56 04  05 cd 0d 56 0e 0a fd 41  |B$="".V....V...A|
0000d680  24 3d 22 22 0d 56 18 0b  e7 42 24 3e 22 22 8c 0d  |$="".V...B$>""..|
0000d690  56 22 43 20 20 f2 70 72  69 6e 74 28 a4 6d 73 67  |V"C  .print(.msg|
0000d6a0  31 28 22 54 61 73 6b 53  74 61 72 74 31 22 2c 74  |1("TaskStart1",t|
0000d6b0  77 6e 61 6d 65 24 28 74  77 25 29 29 2c 22 22 2c  |wname$(tw%)),"",|
0000d6c0  22 22 29 3a 74 77 63 6f  6d 24 28 74 77 25 29 3d  |""):twcom$(tw%)=|
0000d6d0  42 24 0d 56 2c 33 20 20  e7 74 77 66 25 28 74 77  |B$.V,3  .twf%(tw|
0000d6e0  25 29 3d 30 8c f2 69 6e  69 74 5f 74 77 77 28 74  |%)=0..init_tww(t|
0000d6f0  77 25 2c 6f 75 74 25 2c  74 77 6e 61 6d 65 24 28  |w%,out%,twname$(|
0000d700  74 77 25 29 29 0d 56 36  90 20 20 c8 99 22 58 57  |tw%)).V6.  .."XW|
0000d710  69 6d 70 5f 53 74 61 72  74 54 61 73 6b 22 2c 22  |imp_StartTask","|
0000d720  54 61 73 6b 57 69 6e 64  6f 77 20 22 22 22 2b 42  |TaskWindow """+B|
0000d730  24 2b 22 22 22 20 2d 71  75 69 74 20 2d 77 69 6d  |$+""" -quit -wim|
0000d740  70 73 6c 6f 74 20 22 2b  53 24 2b 22 20 2d 6e 61  |pslot "+S$+" -na|
0000d750  6d 65 20 22 22 22 2b 74  77 6e 61 6d 65 24 28 74  |me """+twname$(t|
0000d760  77 25 29 2b 22 22 22 20  2d 74 61 73 6b 20 26 22  |w%)+""" -task &"|
0000d770  2b c3 7e 74 61 73 6b 25  2b 22 20 2d 74 78 74 20  |+.~task%+" -txt |
0000d780  26 22 2b c3 7e 28 74 61  73 6b 25 2b 74 77 25 29  |&"+.~(task%+tw%)|
0000d790  20 b8 3b 46 25 0d 56 40  31 20 20 74 73 25 3d 30  | .;F%.V@1  ts%=0|
0000d7a0  3a f5 74 73 25 2b 3d 31  3a f2 70 6f 6c 6c 28 30  |:.ts%+=1:.poll(0|
0000d7b0  29 3a fd 74 77 68 25 28  74 77 25 29 3c 3e 30 84  |):.twh%(tw%)<>0.|
0000d7c0  74 73 25 3e 31 30 0d 56  4a 44 20 20 e7 74 77 68  |ts%>10.VJD  .twh|
0000d7d0  25 28 74 77 25 29 3d 30  8c f2 63 66 28 74 77 66  |%(tw%)=0..cf(twf|
0000d7e0  25 28 74 77 25 29 29 3a  74 77 6e 61 6d 65 24 28  |%(tw%)):twname$(|
0000d7f0  74 77 25 29 3d 22 22 3a  f2 63 6c 6f 73 65 77 28  |tw%)="":.closew(|
0000d800  74 77 77 25 28 74 77 25  29 29 0d 56 54 1d 20 20  |tww%(tw%)).VT.  |
0000d810  e7 77 61 69 74 25 3c 3e  30 80 74 77 68 25 28 74  |.wait%<>0.twh%(t|
0000d820  77 25 29 3c 3e 30 8c 0d  56 5e 20 20 20 20 20 f5  |w%)<>0..V^     .|
0000d830  3a f2 70 6f 6c 6c 28 35  30 29 3a fd 74 77 68 25  |:.poll(50):.twh%|
0000d840  28 74 77 25 29 3d 30 0d  56 68 07 20 20 cd 0d 56  |(tw%)=0.Vh.  ..V|
0000d850  72 05 cd 0d 56 7c 10 3d  94 28 28 46 25 80 31 29  |r...V|.=.((F%.1)|
0000d860  3d 30 29 0d 56 86 04 0d  56 90 13 dd f2 6d 65 73  |=0).V...V....mes|
0000d870  73 74 77 28 41 24 2c 6d  25 29 0d 56 9a 11 41 24  |stw(A$,m%).V..A$|
0000d880  3d a4 6c 6f 77 65 72 28  41 24 29 0d 56 a4 16 ea  |=.lower(A$).V...|
0000d890  74 77 25 3a e3 74 77 25  3d 30 b8 74 77 6d 61 78  |tw%:.tw%=0.twmax|
0000d8a0  25 0d 56 ae 29 e7 41 24  3d a4 6c 6f 77 65 72 28  |%.V.).A$=.lower(|
0000d8b0  74 77 6e 61 6d 65 24 28  74 77 25 29 29 80 74 77  |twname$(tw%)).tw|
0000d8c0  68 25 28 74 77 25 29 3e  30 8c 0d 56 b8 2b 20 20  |h%(tw%)>0..V.+  |
0000d8d0  21 71 25 3d 32 30 3a 71  25 21 34 3d 30 3a 71 25  |!q%=20:q%!4=0:q%|
0000d8e0  21 38 3d 30 3a 71 25 21  31 32 3d 30 3a 71 25 21  |!8=0:q%!12=0:q%!|
0000d8f0  31 36 3d 6d 25 0d 56 c2  2a 20 20 c8 99 22 57 69  |16=m%.V.*  .."Wi|
0000d900  6d 70 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |mp_SendMessage",|
0000d910  31 37 2c 71 25 2c 74 77  68 25 28 74 77 25 29 0d  |17,q%,twh%(tw%).|
0000d920  56 cc 0b 20 20 c8 8e 6d  25 ca 0d 56 d6 4d 20 20  |V..  ..m%..V.M  |
0000d930  20 20 c9 26 38 30 38 43  36 3a 24 74 77 74 25 28  |  .&808C6:$twt%(|
0000d940  74 77 25 29 3d a4 6d 73  67 31 28 22 54 61 73 6b  |tw%)=.msg1("Task|
0000d950  53 75 73 70 22 2c 74 77  6e 61 6d 65 24 28 74 77  |Susp",twname$(tw|
0000d960  25 29 29 3a f2 64 6f 74  69 74 6c 65 28 74 77 77  |%)):.dotitle(tww|
0000d970  25 28 74 77 25 29 29 0d  56 e0 4c 20 20 20 20 c9  |%(tw%)).V.L    .|
0000d980  26 38 30 38 43 37 3a 24  74 77 74 25 28 74 77 25  |&808C7:$twt%(tw%|
0000d990  29 3d a4 6d 73 67 31 28  22 54 61 73 6b 52 75 6e  |)=.msg1("TaskRun|
0000d9a0  22 2c 74 77 6e 61 6d 65  24 28 74 77 25 29 29 3a  |",twname$(tw%)):|
0000d9b0  f2 64 6f 74 69 74 6c 65  28 74 77 77 25 28 74 77  |.dotitle(tww%(tw|
0000d9c0  25 29 29 0d 56 ea 07 20  20 cb 0d 56 f4 10 20 20  |%)).V..  ..V..  |
0000d9d0  74 77 25 3d 74 77 6d 61  78 25 0d 56 fe 05 cd 0d  |tw%=twmax%.V....|
0000d9e0  57 08 05 ed 0d 57 12 05  e1 0d 57 1c 04 0d 57 26  |W....W....W...W&|
0000d9f0  0e dd a4 6f 70 65 6e 28  41 24 29 0d 57 30 15 ea  |...open(A$).W0..|
0000da00  66 25 2c 72 25 2c 65 72  72 24 2c 42 24 2c 43 24  |f%,r%,err$,B$,C$|
0000da10  0d 57 3a 31 65 72 72 24  3d 22 22 3a 66 25 3d 30  |.W:1err$="":f%=0|
0000da20  3a c8 95 66 69 6c 65 68  25 28 66 25 29 3c 3e 30  |:..fileh%(f%)<>0|
0000da30  80 66 25 3c 66 6d 61 78  25 3a 66 25 2b 3d 31 3a  |.f%<fmax%:f%+=1:|
0000da40  ce 0d 57 44 2a e7 66 25  3d 66 6d 61 78 25 8c f2  |..WD*.f%=fmax%..|
0000da50  68 61 6c 74 28 a4 6d 73  67 30 28 22 45 66 75 6c  |halt(.msg0("Eful|
0000da60  6c 66 69 6c 65 22 29 29  3a 3d 30 0d 57 4e 27 66  |lfile")):=0.WN'f|
0000da70  69 6c 65 69 64 24 28 66  25 29 3d 22 22 3a 66 69  |ileid$(f%)="":fi|
0000da80  6c 65 77 72 25 28 66 25  29 3d 31 3a 72 25 3d 26  |lewr%(f%)=1:r%=&|
0000da90  34 46 0d 57 58 12 f5 42  24 3d a4 70 61 72 61 6d  |4F.WX..B$=.param|
0000daa0  28 41 24 29 0d 57 62 10  e7 c0 42 24 2c 31 29 3d  |(A$).Wb...B$,1)=|
0000dab0  22 2f 22 8c 0d 57 6c 13  20 20 43 24 3d a4 76 61  |"/"..Wl.  C$=.va|
0000dac0  6c 75 65 28 42 24 29 0d  57 76 0f 20 20 c8 8e c0  |lue(B$).Wv.  ...|
0000dad0  42 24 2c 32 29 ca 0d 57  80 21 20 20 20 20 c9 22  |B$,2)..W.!    ."|
0000dae0  6e 61 22 2c 22 69 64 22  3a 66 69 6c 65 69 64 24  |na","id":fileid$|
0000daf0  28 66 25 29 3d 43 24 0d  57 8a 22 20 20 20 20 c9  |(f%)=C$.W."    .|
0000db00  22 72 65 22 3a 66 69 6c  65 77 72 25 28 66 25 29  |"re":filewr%(f%)|
0000db10  3d 31 3a 72 25 3d 26 34  46 0d 57 94 22 20 20 20  |=1:r%=&4F.W."   |
0000db20  20 c9 22 77 72 22 3a 66  69 6c 65 77 72 25 28 66  | ."wr":filewr%(f|
0000db30  25 29 3d 32 3a 72 25 3d  26 38 46 0d 57 9e 22 20  |%)=2:r%=&8F.W." |
0000db40  20 20 20 c9 22 72 77 22  3a 66 69 6c 65 77 72 25  |   ."rw":filewr%|
0000db50  28 66 25 29 3d 33 3a 72  25 3d 26 43 46 0d 57 a8  |(f%)=3:r%=&CF.W.|
0000db60  15 20 20 20 20 c9 22 65  72 22 3a 65 72 72 24 3d  |.    ."er":err$=|
0000db70  43 24 0d 57 b2 07 20 20  cb 0d 57 bc 07 20 20 cc  |C$.W..  ..W..  .|
0000db80  0d 57 c6 13 20 20 66 69  6c 65 6e 24 28 66 25 29  |.W..  filen$(f%)|
0000db90  3d 42 24 0d 57 d0 05 cd  0d 57 da 0a fd 41 24 3d  |=B$.W....W...A$=|
0000dba0  22 22 0d 57 e4 3c e7 66  69 6c 65 69 64 24 28 66  |"".W.<.fileid$(f|
0000dbb0  25 29 3e 22 22 8c c8 99  22 58 4f 53 5f 46 69 6e  |%)>""..."XOS_Fin|
0000dbc0  64 22 2c 72 25 2c 66 69  6c 65 6e 24 28 66 25 29  |d",r%,filen$(f%)|
0000dbd0  b8 66 69 6c 65 68 25 28  66 25 29 3b 46 25 0d 57  |.fileh%(f%);F%.W|
0000dbe0  ee 0f e7 28 46 25 80 31  29 3c 3e 30 8c 0d 57 f8  |...(F%.1)<>0..W.|
0000dbf0  21 20 20 66 69 6c 65 68  25 28 66 25 29 3d 30 3a  |!  fileh%(f%)=0:|
0000dc00  66 69 6c 65 69 64 24 28  66 25 29 3d 22 22 0d 58  |fileid$(f%)="".X|
0000dc10  02 3b 20 20 e7 65 72 72  24 3d 22 22 8c f2 68 61  |.;  .err$=""..ha|
0000dc20  6c 74 28 a4 6d 73 67 30  28 22 45 66 69 6c 65 66  |lt(.msg0("Efilef|
0000dc30  61 69 6c 22 29 29 3a 8b  f2 61 64 64 65 76 65 6e  |ail")):..addeven|
0000dc40  74 28 65 72 72 24 2c 39  29 0d 58 0c 07 20 20 cc  |t(err$,9).X..  .|
0000dc50  0d 58 16 34 20 20 e7 66  69 6c 65 77 72 25 28 66  |.X.4  .filewr%(f|
0000dc60  25 29 3d 32 8c c8 99 22  58 4f 53 5f 46 69 6c 65  |%)=2..."XOS_File|
0000dc70  22 2c 31 38 2c 66 69 6c  65 6e 24 28 66 25 29 2c  |",18,filen$(f%),|
0000dc80  26 46 46 46 0d 58 20 05  cd 0d 58 2a 0f 3d 66 69  |&FFF.X ...X*.=fi|
0000dc90  6c 65 68 25 28 66 25 29  0d 58 34 04 0d 58 3e 0f  |leh%(f%).X4..X>.|
0000dca0  dd a4 63 6c 6f 73 65 28  41 24 29 0d 58 48 10 ea  |..close(A$).XH..|
0000dcb0  6e 25 2c 72 25 2c 42 24  2c 43 24 0d 58 52 08 72  |n%,r%,B$,C$.XR.r|
0000dcc0  25 3d 30 0d 58 5c 12 f5  42 24 3d a4 70 61 72 61  |%=0.X\..B$=.para|
0000dcd0  6d 28 41 24 29 0d 58 66  12 20 20 e7 c0 42 24 2c  |m(A$).Xf.  ..B$,|
0000dce0  31 29 3d 22 2f 22 8c 0d  58 70 15 20 20 20 20 43  |1)="/"..Xp.    C|
0000dcf0  24 3d a4 76 61 6c 75 65  28 42 24 29 0d 58 7a 11  |$=.value(B$).Xz.|
0000dd00  20 20 20 20 c8 8e c0 42  24 2c 32 29 ca 0d 58 84  |    ...B$,2)..X.|
0000dd10  20 20 20 20 20 20 20 c9  22 6e 61 22 2c 22 69 64  |       ."na","id|
0000dd20  22 3a e3 6e 25 3d 30 b8  66 6d 61 78 25 0d 58 8e  |":.n%=0.fmax%.X.|
0000dd30  48 20 20 20 20 20 20 20  20 e7 66 69 6c 65 69 64  |H        .fileid|
0000dd40  24 28 6e 25 29 3d 43 24  8c f2 63 66 28 66 69 6c  |$(n%)=C$..cf(fil|
0000dd50  65 68 25 28 6e 25 29 29  3a 66 69 6c 65 69 64 24  |eh%(n%)):fileid$|
0000dd60  28 6e 25 29 3d 22 22 3a  6e 25 3d 66 6d 61 78 25  |(n%)="":n%=fmax%|
0000dd70  3a 72 25 3d 31 0d 58 98  0d 20 20 20 20 20 20 20  |:r%=1.X..       |
0000dd80  20 ed 0d 58 a2 09 20 20  20 20 cb 0d 58 ac 07 20  | ..X..    ..X.. |
0000dd90  20 cd 0d 58 b6 0a fd 41  24 3d 22 22 0d 58 c0 07  | ..X...A$="".X..|
0000dda0  3d 72 25 0d 58 ca 04 0d  58 d4 0e dd a4 72 65 61  |=r%.X...X....rea|
0000ddb0  64 28 41 24 29 0d 58 de  15 ea 66 25 2c 72 25 2c  |d(A$).X...f%,r%,|
0000ddc0  65 6f 66 24 2c 42 24 2c  43 24 0d 58 e8 16 66 25  |eof$,B$,C$.X..f%|
0000ddd0  3d 2d 31 3a 72 25 3d 30  3a 65 6f 66 24 3d 22 22  |=-1:r%=0:eof$=""|
0000dde0  0d 58 f2 12 f5 42 24 3d  a4 70 61 72 61 6d 28 41  |.X...B$=.param(A|
0000ddf0  24 29 0d 58 fc 12 20 20  e7 c0 42 24 2c 31 29 3d  |$).X..  ..B$,1)=|
0000de00  22 2f 22 8c 0d 59 06 15  20 20 20 20 43 24 3d a4  |"/"..Y..    C$=.|
0000de10  76 61 6c 75 65 28 42 24  29 0d 59 10 11 20 20 20  |value(B$).Y..   |
0000de20  20 c8 8e c0 42 24 2c 32  29 ca 0d 59 1a 26 20 20  | ...B$,2)..Y.&  |
0000de30  20 20 20 20 c9 22 6e 61  22 2c 22 69 64 22 3a 66  |    ."na","id":f|
0000de40  25 3d a4 66 69 6c 65 69  64 74 6f 68 28 43 24 29  |%=.fileidtoh(C$)|
0000de50  0d 59 24 18 20 20 20 20  20 20 c9 22 65 6f 66 22  |.Y$.      ."eof"|
0000de60  3a 65 6f 66 24 3d 43 24  0d 59 2e 09 20 20 20 20  |:eof$=C$.Y..    |
0000de70  cb 0d 59 38 09 20 20 20  20 cc 0d 59 42 18 20 20  |..Y8.    ..YB.  |
0000de80  20 20 e7 66 25 3e 2d 31  80 66 25 3c 66 6d 61 78  |  .f%>-1.f%<fmax|
0000de90  25 8c 0d 59 4c 37 20 20  20 20 20 20 e7 28 66 69  |%..YL7      .(fi|
0000dea0  6c 65 77 72 25 28 66 25  29 80 31 29 3d 30 8c f2  |lewr%(f%).1)=0..|
0000deb0  68 61 6c 74 28 a4 6d 73  67 30 28 22 45 6e 6f 72  |halt(.msg0("Enor|
0000dec0  65 61 64 22 29 29 3a 3d  30 0d 59 56 34 20 20 20  |ead")):=0.YV4   |
0000ded0  20 20 20 e7 ac c5 23 66  69 6c 65 68 25 28 66 25  |   ...#fileh%(f%|
0000dee0  29 8c f2 73 65 74 76 28  42 24 2c be 23 66 69 6c  |)..setv(B$,.#fil|
0000def0  65 68 25 28 66 25 29 29  3a 72 25 3d 31 0d 59 60  |eh%(f%)):r%=1.Y`|
0000df00  31 20 20 20 20 20 20 e7  c5 23 66 69 6c 65 68 25  |1      ..#fileh%|
0000df10  28 66 25 29 80 65 6f 66  24 3e 22 22 8c f2 61 64  |(f%).eof$>""..ad|
0000df20  64 65 76 65 6e 74 28 65  6f 66 24 2c 39 29 0d 59  |devent(eof$,9).Y|
0000df30  6a 09 20 20 20 20 cd 0d  59 74 07 20 20 cd 0d 59  |j.    ..Yt.  ..Y|
0000df40  7e 0a fd 41 24 3d 22 22  0d 59 88 07 3d 72 25 0d  |~..A$="".Y..=r%.|
0000df50  59 92 04 0d 59 9c 0f dd  a4 77 72 69 74 65 28 41  |Y...Y....write(A|
0000df60  24 29 0d 59 a6 10 ea 66  25 2c 72 25 2c 42 24 2c  |$).Y...f%,r%,B$,|
0000df70  43 24 0d 59 b0 0e 66 25  3d 2d 31 3a 72 25 3d 30  |C$.Y..f%=-1:r%=0|
0000df80  0d 59 ba 12 f5 42 24 3d  a4 70 61 72 61 6d 28 41  |.Y...B$=.param(A|
0000df90  24 29 0d 59 c4 12 20 20  e7 c0 42 24 2c 31 29 3d  |$).Y..  ..B$,1)=|
0000dfa0  22 2f 22 8c 0d 59 ce 15  20 20 20 20 43 24 3d a4  |"/"..Y..    C$=.|
0000dfb0  76 61 6c 75 65 28 42 24  29 0d 59 d8 11 20 20 20  |value(B$).Y..   |
0000dfc0  20 c8 8e c0 42 24 2c 32  29 ca 0d 59 e2 26 20 20  | ...B$,2)..Y.&  |
0000dfd0  20 20 20 20 c9 22 6e 61  22 2c 22 69 64 22 3a 66  |    ."na","id":f|
0000dfe0  25 3d a4 66 69 6c 65 69  64 74 6f 68 28 43 24 29  |%=.fileidtoh(C$)|
0000dff0  0d 59 ec 09 20 20 20 20  cb 0d 59 f6 09 20 20 20  |.Y..    ..Y..   |
0000e000  20 cc 0d 5a 00 18 20 20  20 20 e7 66 25 3e 2d 31  | ..Z..    .f%>-1|
0000e010  80 66 25 3c 66 6d 61 78  25 8c 0d 5a 0a 38 20 20  |.f%<fmax%..Z.8  |
0000e020  20 20 20 20 e7 28 66 69  6c 65 77 72 25 28 66 25  |    .(filewr%(f%|
0000e030  29 80 32 29 3d 30 8c f2  68 61 6c 74 28 a4 6d 73  |).2)=0..halt(.ms|
0000e040  67 30 28 22 45 6e 6f 77  72 69 74 65 22 29 29 3a  |g0("Enowrite")):|
0000e050  3d 30 0d 5a 14 19 20 20  20 20 20 20 d5 23 66 69  |=0.Z..      .#fi|
0000e060  6c 65 68 25 28 66 25 29  2c 42 24 0d 5a 1e 09 20  |leh%(f%),B$.Z.. |
0000e070  20 20 20 cd 0d 5a 28 07  20 20 cd 0d 5a 32 0a fd  |   ..Z(.  ..Z2..|
0000e080  41 24 3d 22 22 0d 5a 3c  07 3d 72 25 0d 5a 46 04  |A$="".Z<.=r%.ZF.|
0000e090  0d 5a 50 0d dd a4 70 74  72 28 41 24 29 0d 5a 5a  |.ZP...ptr(A$).ZZ|
0000e0a0  13 ea 66 25 2c 72 25 2c  73 25 2c 42 24 2c 43 24  |..f%,r%,s%,B$,C$|
0000e0b0  0d 5a 64 0f 66 25 3d 2d  31 3a 73 25 3d 2d 31 0d  |.Zd.f%=-1:s%=-1.|
0000e0c0  5a 6e 12 f5 42 24 3d a4  70 61 72 61 6d 28 41 24  |Zn..B$=.param(A$|
0000e0d0  29 0d 5a 78 12 20 20 e7  c0 42 24 2c 31 29 3d 22  |).Zx.  ..B$,1)="|
0000e0e0  2f 22 8c 0d 5a 82 15 20  20 20 20 43 24 3d a4 76  |/"..Z..    C$=.v|
0000e0f0  61 6c 75 65 28 42 24 29  0d 5a 8c 11 20 20 20 20  |alue(B$).Z..    |
0000e100  c8 8e c0 42 24 2c 32 29  ca 0d 5a 96 26 20 20 20  |...B$,2)..Z.&   |
0000e110  20 20 20 c9 22 6e 61 22  2c 22 69 64 22 3a 66 25  |   ."na","id":f%|
0000e120  3d a4 66 69 6c 65 69 64  74 6f 68 28 43 24 29 0d  |=.fileidtoh(C$).|
0000e130  5a a0 2f 20 20 20 20 20  20 c9 22 73 65 22 3a e7  |Z./      ."se":.|
0000e140  a4 6c 6f 77 65 72 28 43  24 29 3d 22 65 6f 66 22  |.lower(C$)="eof"|
0000e150  8c 73 25 3d 2d 32 3a 8b  73 25 3d bb 43 24 0d 5a  |.s%=-2:.s%=.C$.Z|
0000e160  aa 09 20 20 20 20 cb 0d  5a b4 07 20 20 cd 0d 5a  |..    ..Z..  ..Z|
0000e170  be 0a fd 41 24 3d 22 22  0d 5a c8 08 72 25 3d 30  |...A$="".Z..r%=0|
0000e180  0d 5a d2 1a e7 66 25 3e  2d 31 80 66 69 6c 65 68  |.Z...f%>-1.fileh|
0000e190  25 28 66 25 29 3c 3e 30  20 8c 0d 5a dc 3e 20 20  |%(f%)<>0 ..Z.>  |
0000e1a0  e7 73 25 3d 2d 32 8c cf  23 66 69 6c 65 68 25 28  |.s%=-2..#fileh%(|
0000e1b0  66 25 29 3d a2 23 66 69  6c 65 68 25 28 66 25 29  |f%)=.#fileh%(f%)|
0000e1c0  3a 8b e7 73 25 3e 3d 30  8c cf 23 66 69 6c 65 68  |:..s%>=0..#fileh|
0000e1d0  25 28 66 25 29 3d 73 25  0d 5a e6 15 20 20 72 25  |%(f%)=s%.Z..  r%|
0000e1e0  3d 8f 23 66 69 6c 65 68  25 28 66 25 29 0d 5a f0  |=.#fileh%(f%).Z.|
0000e1f0  05 cd 0d 5a fa 07 3d 72  25 0d 5b 04 04 0d 5b 0e  |...Z..=r%.[...[.|
0000e200  0f dd f2 6c 69 73 74 66  69 6c 65 73 0d 5b 18 24  |...listfiles.[.$|
0000e210  f2 66 5f 6c 69 73 74 28  22 49 64 65 6e 74 69 66  |.f_list("Identif|
0000e220  69 65 72 22 2c 22 46 69  6c 65 6e 61 6d 65 22 29  |ier","Filename")|
0000e230  0d 5b 22 13 ea 66 25 3a  e3 66 25 3d 30 b8 66 6d  |.["..f%:.f%=0.fm|
0000e240  61 78 25 0d 5b 2c 31 e7  66 69 6c 65 68 25 28 66  |ax%.[,1.fileh%(f|
0000e250  25 29 3e 30 8c f2 66 5f  6c 69 73 74 28 66 69 6c  |%)>0..f_list(fil|
0000e260  65 69 64 24 28 66 25 29  2c 66 69 6c 65 6e 24 28  |eid$(f%),filen$(|
0000e270  66 25 29 29 0d 5b 36 05  ed 0d 5b 40 05 e1 0d 5b  |f%)).[6...[@...[|
0000e280  4a 04 0d 5b 54 13 dd a4  66 69 6c 65 69 64 74 6f  |J..[T...fileidto|
0000e290  68 28 41 24 29 0d 5b 5e  2f ea 66 25 3a 66 25 3d  |h(A$).[^/.f%:f%=|
0000e2a0  30 3a c8 95 66 69 6c 65  69 64 24 28 66 25 29 3c  |0:..fileid$(f%)<|
0000e2b0  3e 43 24 80 66 25 3c 66  6d 61 78 25 3a 66 25 2b  |>C$.f%<fmax%:f%+|
0000e2c0  3d 31 3a ce 0d 5b 68 28  e7 66 25 3d 66 6d 61 78  |=1:..[h(.f%=fmax|
0000e2d0  25 8c f2 68 61 6c 74 28  a4 6d 73 67 30 28 22 45  |%..halt(.msg0("E|
0000e2e0  66 69 6c 65 69 64 22 29  29 3a 3d 30 0d 5b 72 07  |fileid")):=0.[r.|
0000e2f0  3d 66 25 0d 5b 7c 04 0d  5b 86 11 dd f2 6d 65 6e  |=f%.[|..[....men|
0000e300  75 64 65 66 28 41 24 29  0d 5b 90 2e ea 6e 25 2c  |udef(A$).[...n%,|
0000e310  6c 25 2c 6d 24 2c 6e 24  2c 61 24 2c 62 24 2c 42  |l%,m$,n$,a$,b$,B|
0000e320  24 2c 43 24 3a 6e 25 3d  2d 31 3a 6d 24 3d 22 22  |$,C$:n%=-1:m$=""|
0000e330  3a 6e 24 3d 22 22 0d 5b  9a 12 f5 42 24 3d a4 70  |:n$="".[...B$=.p|
0000e340  61 72 61 6d 28 41 24 29  0d 5b a4 12 20 20 e7 c0  |aram(A$).[..  ..|
0000e350  42 24 2c 31 29 3d 22 2f  22 8c 0d 5b ae 15 20 20  |B$,1)="/"..[..  |
0000e360  20 20 43 24 3d a4 76 61  6c 75 65 28 42 24 29 0d  |  C$=.value(B$).|
0000e370  5b b8 11 20 20 20 20 c8  8e c0 42 24 2c 32 29 ca  |[..    ...B$,2).|
0000e380  0d 5b c2 15 20 20 20 20  20 20 c9 22 63 6f 22 3a  |.[..      ."co":|
0000e390  6e 25 3d 2d 32 0d 5b cc  40 20 20 20 20 20 20 c9  |n%=-2.[.@      .|
0000e3a0  22 69 63 22 3a 6e 25 3d  30 3a f5 6e 25 2b 3d 31  |"ic":n%=0:.n%+=1|
0000e3b0  3a fd 69 62 61 72 69 64  24 28 6e 25 29 3d 43 24  |:.ibarid$(n%)=C$|
0000e3c0  84 69 62 61 72 25 28 6e  25 29 3d 30 84 6e 25 3d  |.ibar%(n%)=0.n%=|
0000e3d0  69 6d 61 78 25 0d 5b d6  37 20 20 20 20 20 20 20  |imax%.[.7       |
0000e3e0  20 e7 6e 25 3d 69 6d 61  78 25 84 43 24 3d 22 22  | .n%=imax%.C$=""|
0000e3f0  8c f2 6c 6f 67 28 a4 6d  73 67 30 28 22 45 69 63  |..log(.msg0("Eic|
0000e400  6f 6e 31 22 29 29 3a 6e  25 3d 2d 35 0d 5b e0 09  |on1")):n%=-5.[..|
0000e410  20 20 20 20 cb 0d 5b ea  09 20 20 20 20 cc 0d 5b  |    ..[..    ..[|
0000e420  f4 13 20 20 20 20 6c 25  3d a7 42 24 2c 22 3a 22  |..    l%=.B$,":"|
0000e430  29 0d 5b fe 0e 20 20 20  20 e7 6c 25 3e 30 8c 0d  |).[..    .l%>0..|
0000e440  5c 08 23 20 20 20 20 20  20 61 24 3d c0 42 24 2c  |\.#      a$=.B$,|
0000e450  6c 25 2d 31 29 3a 62 24  3d c1 42 24 2c 6c 25 2b  |l%-1):b$=.B$,l%+|
0000e460  31 29 0d 5c 12 0b 20 20  20 20 20 20 cc 0d 5c 1c  |1).\..      ..\.|
0000e470  15 20 20 20 20 20 20 61  24 3d 42 24 3a 62 24 3d  |.      a$=B$:b$=|
0000e480  22 22 0d 5c 26 09 20 20  20 20 cd 0d 5c 30 33 20  |"".\&.    ..\03 |
0000e490  20 20 20 e7 61 24 3d 22  22 84 62 24 3d 22 22 8c  |   .a$="".b$="".|
0000e4a0  f2 68 61 6c 74 28 a4 6d  73 67 31 28 22 45 6d 65  |.halt(.msg1("Eme|
0000e4b0  6e 75 22 2c 42 24 29 29  3a 41 24 3d 22 22 0d 5c  |nu",B$)):A$="".\|
0000e4c0  3a 21 20 20 20 20 e7 a9  6d 24 2b a9 61 24 3c 32  |:!    ..m$+.a$<2|
0000e4d0  35 32 80 a9 6e 24 2b a9  62 24 3c 32 35 32 8c 0d  |52..n$+.b$<252..|
0000e4e0  5c 44 1d 20 20 20 20 20  20 6d 24 2b 3d 61 24 2b  |\D.      m$+=a$+|
0000e4f0  bd 30 3a 6e 24 2b 3d 62  24 2b bd 30 0d 5c 4e 0b  |.0:n$+=b$+.0.\N.|
0000e500  20 20 20 20 20 20 cc 0d  5c 58 28 20 20 20 20 20  |      ..\X(     |
0000e510  20 f2 68 61 6c 74 28 a4  6d 73 67 30 28 22 45 62  | .halt(.msg0("Eb|
0000e520  69 67 6d 65 6e 75 22 29  29 3a 41 24 3d 22 22 0d  |igmenu")):A$="".|
0000e530  5c 62 09 20 20 20 20 cd  0d 5c 6c 07 20 20 cd 0d  |\b.    ..\l.  ..|
0000e540  5c 76 0a fd 41 24 3d 22  22 0d 5c 80 1d e7 c2 6d  |\v..A$="".\....m|
0000e550  24 2c 31 29 3d 22 20 22  8c 6d 24 3d c0 6d 24 2c  |$,1)=" ".m$=.m$,|
0000e560  a9 6d 24 2d 31 29 0d 5c  8a 09 c8 8e 6e 25 ca 0d  |.m$-1).\....n%..|
0000e570  5c 94 29 20 20 c9 2d 31  3a 75 73 65 72 6d 65 6e  |\.)  .-1:usermen|
0000e580  75 24 28 30 29 3d 6d 24  3a 75 73 65 72 6d 65 6e  |u$(0)=m$:usermen|
0000e590  75 24 28 31 29 3d 6e 24  0d 5c 9e 27 20 20 c9 2d  |u$(1)=n$.\.'  .-|
0000e5a0  32 3a 6c 6f 67 6d 65 6e  75 24 28 30 29 3d 6d 24  |2:logmenu$(0)=m$|
0000e5b0  3a 6c 6f 67 6d 65 6e 75  24 28 31 29 3d 6e 24 0d  |:logmenu$(1)=n$.|
0000e5c0  5c a8 39 20 20 7f 3a e7  6e 25 3e 3d 30 80 6e 25  |\.9  .:.n%>=0.n%|
0000e5d0  3c 3d 69 6d 61 78 25 8c  69 6d 65 6e 75 24 28 6e  |<=imax%.imenu$(n|
0000e5e0  25 2c 30 29 3d 6d 24 3a  69 6d 65 6e 75 24 28 6e  |%,0)=m$:imenu$(n|
0000e5f0  25 2c 31 29 3d 6e 24 3a  0d 5c b2 05 cb 0d 5c bc  |%,1)=n$:.\....\.|
0000e600  05 e1 0d 5c c6 04 0d 5c  d0 15 dd a4 6d 61 6b 65  |...\...\....make|
0000e610  6d 65 6e 75 28 41 24 2c  42 24 29 0d 5c da 1c ea  |menu(A$,B$).\...|
0000e620  75 24 2c 61 24 2c 62 24  3a 75 6d 65 6e 75 25 3d  |u$,a$,b$:umenu%=|
0000e630  30 3a 75 24 3d 22 22 0d  5c e4 05 f5 0d 5c ee 0f  |0:u$="".\....\..|
0000e640  20 20 75 6d 65 6e 75 25  2b 3d 31 0d 5c f8 29 20  |  umenu%+=1.\.) |
0000e650  20 61 24 3d a4 67 65 74  70 61 72 28 41 24 2c bd  | a$=.getpar(A$,.|
0000e660  30 29 3a 62 24 3d a4 67  65 74 70 61 72 28 42 24  |0):b$=.getpar(B$|
0000e670  2c bd 30 29 0d 5d 02 38  20 20 75 24 2b 3d 22 2c  |,.0).].8  u$+=",|
0000e680  22 2b 61 24 3a 75 6d 65  6e 75 24 28 75 6d 65 6e  |"+a$:umenu$(umen|
0000e690  75 25 2c 30 29 3d 61 24  3a 75 6d 65 6e 75 24 28  |u%,0)=a$:umenu$(|
0000e6a0  75 6d 65 6e 75 25 2c 31  29 3d 62 24 0d 5d 0c 24  |umenu%,1)=b$.].$|
0000e6b0  fd 41 24 3d 22 22 84 75  6d 65 6e 75 25 3d 6d 65  |.A$="".umenu%=me|
0000e6c0  6e 75 6d 61 78 25 3a 75  24 3d c1 75 24 2c 32 29  |numax%:u$=.u$,2)|
0000e6d0  0d 5d 16 07 3d 75 24 0d  5d 20 04 0d 5d 2a 0e dd  |.]..=u$.] ..]*..|
0000e6e0  f2 6c 69 73 74 6d 65 6e  75 0d 5d 34 07 ea 43 24  |.listmenu.]4..C$|
0000e6f0  0d 5d 3e 4b e7 75 73 65  72 6d 65 6e 75 24 28 30  |.]>K.usermenu$(0|
0000e700  29 3e 22 22 8c 43 24 3d  a4 6d 61 6b 65 6d 65 6e  |)>"".C$=.makemen|
0000e710  75 28 75 73 65 72 6d 65  6e 75 24 28 30 29 2c 75  |u(usermenu$(0),u|
0000e720  73 65 72 6d 65 6e 75 24  28 31 29 29 3a f2 6c 6d  |sermenu$(1)):.lm|
0000e730  65 6e 75 28 22 75 73 65  72 22 29 0d 5d 48 49 e7  |enu("user").]HI.|
0000e740  6c 6f 67 6d 65 6e 75 24  28 30 29 3e 22 22 8c 43  |logmenu$(0)>"".C|
0000e750  24 3d a4 6d 61 6b 65 6d  65 6e 75 28 6c 6f 67 6d  |$=.makemenu(logm|
0000e760  65 6e 75 24 28 30 29 2c  6c 6f 67 6d 65 6e 75 24  |enu$(0),logmenu$|
0000e770  28 31 29 29 3a f2 6c 6d  65 6e 75 28 22 64 65 62  |(1)):.lmenu("deb|
0000e780  75 67 22 29 0d 5d 52 0f  e3 5a 25 3d 30 b8 69 6d  |ug").]R..Z%=0.im|
0000e790  61 78 25 0d 5d 5c 5b 20  20 e7 69 6d 65 6e 75 24  |ax%.]\[  .imenu$|
0000e7a0  28 5a 25 2c 30 29 3e 22  22 8c 43 24 3d a4 6d 61  |(Z%,0)>"".C$=.ma|
0000e7b0  6b 65 6d 65 6e 75 28 69  6d 65 6e 75 24 28 5a 25  |kemenu(imenu$(Z%|
0000e7c0  2c 30 29 2c 69 6d 65 6e  75 24 28 5a 25 2c 31 29  |,0),imenu$(Z%,1)|
0000e7d0  29 3a f2 6c 6d 65 6e 75  28 22 69 63 6f 6e 3a 20  |):.lmenu("icon: |
0000e7e0  22 2b 69 62 61 72 69 64  24 28 5a 25 29 29 0d 5d  |"+ibarid$(Z%)).]|
0000e7f0  66 05 ed 0d 5d 70 05 e1  0d 5d 7a 04 0d 5d 84 0f  |f...]p...]z..]..|
0000e800  dd f2 6c 6d 65 6e 75 28  74 24 29 0d 5d 8e 07 ea  |..lmenu(t$).]...|
0000e810  6c 25 0d 5d 98 2e f2 77  61 72 6e 5f 74 78 74 28  |l%.]...warn_txt(|
0000e820  22 4c 61 62 65 6c 20 20  20 20 20 20 20 20 20 41  |"Label         A|
0000e830  63 74 69 6f 6e 20 28 22  2b 74 24 2b 22 29 22 29  |ction ("+t$+")")|
0000e840  0d 5d a2 10 e3 6c 25 3d  31 b8 75 6d 65 6e 75 25  |.]...l%=1.umenu%|
0000e850  0d 5d ac 28 20 20 f2 66  5f 6c 69 73 74 28 75 6d  |.].(  .f_list(um|
0000e860  65 6e 75 24 28 6c 25 2c  30 29 2c 75 6d 65 6e 75  |enu$(l%,0),umenu|
0000e870  24 28 6c 25 2c 31 29 29  0d 5d b6 05 ed 0d 5d c0  |$(l%,1)).]....].|
0000e880  05 e1 0d 5d ca 04 0d 5d  d4 11 dd f2 61 6e 61 6c  |...]...]....anal|
0000e890  79 73 65 28 41 24 29 0d  5d de 0a ea 42 24 2c 43  |yse(A$).]...B$,C|
0000e8a0  24 0d 5d e8 12 f5 42 24  3d a4 70 61 72 61 6d 28  |$.]...B$=.param(|
0000e8b0  41 24 29 0d 5d f2 0f 20  20 c8 8e c0 42 24 2c 31  |A$).]..  ...B$,1|
0000e8c0  29 ca 0d 5d fc 3e 20 20  20 20 c9 22 2f 22 3a 43  |)..].>    ."/":C|
0000e8d0  24 3d a4 76 61 6c 75 65  28 42 24 29 3a f2 6c 6f  |$=.value(B$):.lo|
0000e8e0  67 28 22 51 75 61 6c 69  66 69 65 72 20 2f 22 2b  |g("Qualifier /"+|
0000e8f0  42 24 2b 22 20 76 61 6c  75 65 3d 22 2b 43 24 29  |B$+" value="+C$)|
0000e900  0d 5e 06 1f 20 20 20 20  7f 3a f2 6c 6f 67 28 22  |.^..    .:.log("|
0000e910  50 61 72 61 6d 65 74 65  72 20 22 2b 42 24 29 0d  |Parameter "+B$).|
0000e920  5e 10 07 20 20 cb 0d 5e  1a 0a fd 41 24 3d 22 22  |^..  ..^...A$=""|
0000e930  0d 5e 24 05 e1 0d 5e 2e  04 0d 5e 38 2e dd a4 6d  |.^$...^...^8...m|
0000e940  75 6c 74 69 63 6f 6d 28  f8 20 73 74 72 24 29 3a  |ulticom(. str$):|
0000e950  f4 20 73 70 6c 69 74 20  6f 6e 20 3b 20 28 41 53  |. split on ; (AS|
0000e960  43 49 49 20 35 39 29 0d  5e 42 24 ea 42 24 2c 41  |CII 59).^B$.B$,A|
0000e970  25 2c 42 25 2c 46 25 2c  71 63 25 2c 62 63 25 2c  |%,B%,F%,qc%,bc%,|
0000e980  63 63 25 2c 65 73 63 25  2c 6c 25 0d 5e 4c 35 42  |cc%,esc%,l%.^L5B|
0000e990  24 3d 22 22 3a 42 25 3d  30 3a 71 63 25 3d 30 3a  |$="":B%=0:qc%=0:|
0000e9a0  62 63 25 3d 30 3a 63 63  25 3d 30 3a 65 73 63 25  |bc%=0:cc%=0:esc%|
0000e9b0  3d 30 3a 46 25 3d 30 3a  6c 25 3d a9 73 74 72 24  |=0:F%=0:l%=.str$|
0000e9c0  0d 5e 56 10 e7 73 74 72  24 3d 22 22 8c 3d 22 22  |.^V..str$="".=""|
0000e9d0  0d 5e 60 1b f5 3a 42 25  2b 3d 31 3a 41 25 3d 97  |.^`..:B%+=1:A%=.|
0000e9e0  c1 73 74 72 24 2c 42 25  2c 31 29 0d 5e 6a 0e e7  |.str$,B%,1).^j..|
0000e9f0  65 73 63 25 3d 39 32 20  8c 0d 5e 74 14 20 20 42  |esc%=92 ..^t.  B|
0000ea00  24 2b 3d bd 41 25 3a 65  73 63 25 3d 30 0d 5e 7e  |$+=.A%:esc%=0.^~|
0000ea10  07 20 20 cc 0d 5e 88 1a  20 20 e7 41 25 3d 33 34  |.  ..^..  .A%=34|
0000ea20  80 62 63 25 3d 30 20 8c  71 63 25 2b 3d 31 0d 5e  |.bc%=0 .qc%+=1.^|
0000ea30  92 10 20 20 e7 71 63 25  83 32 3d 30 20 8c 0d 5e  |..  .qc%.2=0 ..^|
0000ea40  9c 16 20 20 20 20 e7 41  25 3d 34 30 20 8c 62 63  |..    .A%=40 .bc|
0000ea50  25 2b 3d 31 0d 5e a6 16  20 20 20 20 e7 41 25 3d  |%+=1.^..    .A%=|
0000ea60  34 31 20 8c 62 63 25 2d  3d 31 0d 5e b0 17 20 20  |41 .bc%-=1.^..  |
0000ea70  20 20 e7 41 25 3d 31 32  33 20 8c 63 63 25 2b 3d  |  .A%=123 .cc%+=|
0000ea80  31 0d 5e ba 17 20 20 20  20 e7 41 25 3d 31 32 35  |1.^..    .A%=125|
0000ea90  20 8c 63 63 25 2d 3d 31  0d 5e c4 1a 20 20 20 20  | .cc%-=1.^..    |
0000eaa0  e7 62 63 25 3d 30 80 28  71 63 25 83 32 29 3d 30  |.bc%=0.(qc%.2)=0|
0000eab0  20 8c 0d 5e ce 1b 20 20  20 20 20 20 e7 41 25 3d  | ..^..      .A%=|
0000eac0  35 39 80 42 25 3e 31 20  8c 46 25 3d b9 0d 5e d8  |59.B%>1 .F%=..^.|
0000ead0  09 20 20 20 20 cd 0d 5e  e2 07 20 20 cd 0d 5e ec  |.    ..^..  ..^.|
0000eae0  22 20 20 65 73 63 25 3d  41 25 3a e7 46 25 3d 30  |"  esc%=A%:.F%=0|
0000eaf0  80 41 25 3c 3e 39 32 8c  42 24 2b 3d bd 41 25 0d  |.A%<>92.B$+=.A%.|
0000eb00  5e f6 05 cd 0d 5f 00 1e  fd 46 25 3c 3e 30 84 42  |^...._...F%<>0.B|
0000eb10  25 3d 6c 25 3a e7 42 25  3d 6c 25 20 8c 42 25 2b  |%=l%:.B%=l% .B%+|
0000eb20  3d 31 0d 5f 0a 1b 73 74  72 24 3d a4 74 72 69 6d  |=1._..str$=.trim|
0000eb30  28 c1 73 74 72 24 2c 42  25 2b 31 29 29 0d 5f 14  |(.str$,B%+1))._.|
0000eb40  11 42 24 3d a4 73 75 62  73 74 28 42 24 29 0d 5f  |.B$=.subst(B$)._|
0000eb50  1e 0e 3d a4 74 72 69 6d  28 42 24 29 0d 5f 28 04  |..=.trim(B$)._(.|
0000eb60  0d 5f 32 0f dd a4 73 75  62 73 74 28 41 24 29 0d  |._2...subst(A$).|
0000eb70  5f 3c 1c ea 6c 25 2c 66  25 2c 63 25 2c 61 24 2c  |_<..l%,f%,c%,a$,|
0000eb80  6c 24 2c 42 24 3a 6c 24  3d 22 22 0d 5f 46 1a 63  |l$,B$:l$=""._F.c|
0000eb90  25 3d a7 41 24 2c 22 25  22 29 3a e7 63 25 3d 30  |%=.A$,"%"):.c%=0|
0000eba0  8c 3a 3d 41 24 0d 5f 50  16 63 25 3d 63 25 2d 32  |.:=A$._P.c%=c%-2|
0000ebb0  3a e7 63 25 3c 30 8c 63  25 3d 30 0d 5f 5a 0e 42  |:.c%<0.c%=0._Z.B|
0000ebc0  24 3d c0 41 24 2c 63 25  29 0d 5f 64 17 f5 63 25  |$=.A$,c%)._d..c%|
0000ebd0  2b 3d 31 3a 61 24 3d c1  41 24 2c 63 25 2c 31 29  |+=1:a$=.A$,c%,1)|
0000ebe0  0d 5f 6e 0e 20 20 e7 6c  24 3d 22 5c 22 8c 0d 5f  |._n.  .l$="\".._|
0000ebf0  78 14 20 20 20 20 42 24  2b 3d 61 24 3a 6c 24 3d  |x.    B$+=a$:l$=|
0000ec00  22 22 0d 5f 82 09 20 20  20 20 cc 0d 5f 8c 10 20  |""._..    .._.. |
0000ec10  20 20 20 e7 61 24 3d 22  25 22 8c 0d 5f 96 15 20  |   .a$="%".._.. |
0000ec20  20 20 20 20 20 e3 6c 25  3d 30 b8 76 6d 61 78 25  |     .l%=0.vmax%|
0000ec30  0d 5f a0 66 20 20 20 20  20 20 20 20 e7 76 61 72  |._.f        .var|
0000ec40  24 28 6c 25 2c 30 29 3e  22 22 80 76 61 72 24 28  |$(l%,0)>"".var$(|
0000ec50  6c 25 2c 30 29 3d c1 41  24 2c 63 25 2b 31 2c a9  |l%,0)=.A$,c%+1,.|
0000ec60  76 61 72 24 28 6c 25 2c  30 29 29 20 8c 42 24 2b  |var$(l%,0)) .B$+|
0000ec70  3d 76 61 72 24 28 6c 25  2c 31 29 3a 63 25 2b 3d  |=var$(l%,1):c%+=|
0000ec80  a9 76 61 72 24 28 6c 25  2c 30 29 3a 6c 25 3d 76  |.var$(l%,0):l%=v|
0000ec90  6d 61 78 25 2b 31 0d 5f  aa 0b 20 20 20 20 20 20  |max%+1._..      |
0000eca0  ed 0d 5f b4 1c 20 20 20  20 20 20 e7 6c 25 3d 76  |.._..      .l%=v|
0000ecb0  6d 61 78 25 20 8c 42 24  2b 3d 22 25 22 0d 5f be  |max% .B$+="%"._.|
0000ecc0  0b 20 20 20 20 20 20 cc  0d 5f c8 16 20 20 20 20  |.      .._..    |
0000ecd0  20 20 42 24 2b 3d 61 24  3a 6c 24 3d 61 24 0d 5f  |  B$+=a$:l$=a$._|
0000ece0  d2 09 20 20 20 20 cd 0d  5f dc 07 20 20 cd 0d 5f  |..    .._..  .._|
0000ecf0  e6 0c fd 63 25 3e 3d a9  41 24 0d 5f f0 07 3d 42  |...c%>=.A$._..=B|
0000ed00  24 0d 5f fa 04 0d 60 04  35 dd a4 70 61 72 61 6d  |$._...`.5..param|
0000ed10  28 f8 20 73 74 72 24 29  3a f4 20 73 70 6c 69 74  |(. str$):. split|
0000ed20  20 61 20 70 61 72 61 6d  20 6f 72 20 71 75 61 6c  | a param or qual|
0000ed30  20 66 72 6f 6d 20 6c 69  6e 65 0d 60 0e 24 ea 42  | from line.`.$.B|
0000ed40  24 2c 41 25 2c 42 25 2c  46 25 2c 71 63 25 2c 62  |$,A%,B%,F%,qc%,b|
0000ed50  63 25 2c 63 63 25 2c 65  73 63 25 2c 6c 25 0d 60  |c%,cc%,esc%,l%.`|
0000ed60  18 35 42 24 3d 22 22 3a  42 25 3d 30 3a 71 63 25  |.5B$="":B%=0:qc%|
0000ed70  3d 30 3a 62 63 25 3d 30  3a 63 63 25 3d 30 3a 65  |=0:bc%=0:cc%=0:e|
0000ed80  73 63 25 3d 30 3a 46 25  3d 30 3a 6c 25 3d a9 73  |sc%=0:F%=0:l%=.s|
0000ed90  74 72 24 0d 60 22 10 e7  73 74 72 24 3d 22 22 8c  |tr$.`"..str$="".|
0000eda0  3d 22 22 0d 60 2c 1b f5  3a 42 25 2b 3d 31 3a 41  |="".`,..:B%+=1:A|
0000edb0  25 3d 97 c1 73 74 72 24  2c 42 25 2c 31 29 0d 60  |%=..str$,B%,1).`|
0000edc0  36 0d e7 65 73 63 25 3d  39 32 8c 0d 60 40 14 20  |6..esc%=92..`@. |
0000edd0  20 42 24 2b 3d bd 41 25  3a 65 73 63 25 3d 30 0d  | B$+=.A%:esc%=0.|
0000ede0  60 4a 07 20 20 cc 0d 60  54 1a 20 20 e7 41 25 3d  |`J.  ..`T.  .A%=|
0000edf0  33 34 80 62 63 25 3d 30  20 8c 71 63 25 2b 3d 31  |34.bc%=0 .qc%+=1|
0000ee00  0d 60 5e 10 20 20 e7 71  63 25 83 32 3d 30 20 8c  |.`^.  .qc%.2=0 .|
0000ee10  0d 60 68 16 20 20 20 20  e7 41 25 3d 34 30 20 8c  |.`h.    .A%=40 .|
0000ee20  62 63 25 2b 3d 31 0d 60  72 16 20 20 20 20 e7 41  |bc%+=1.`r.    .A|
0000ee30  25 3d 34 31 20 8c 62 63  25 2d 3d 31 0d 60 7c 17  |%=41 .bc%-=1.`|.|
0000ee40  20 20 20 20 e7 41 25 3d  31 32 33 20 8c 63 63 25  |    .A%=123 .cc%|
0000ee50  2b 3d 31 0d 60 86 17 20  20 20 20 e7 41 25 3d 31  |+=1.`..    .A%=1|
0000ee60  32 35 20 8c 63 63 25 2d  3d 31 0d 60 90 16 20 20  |25 .cc%-=1.`..  |
0000ee70  20 20 e7 62 63 25 3d 30  80 63 63 25 3d 30 20 8c  |  .bc%=0.cc%=0 .|
0000ee80  0d 60 9a 23 20 20 20 20  20 20 e7 28 41 25 3d 33  |.`.#      .(A%=3|
0000ee90  32 84 41 25 3d 34 37 29  80 42 25 3e 31 20 8c 46  |2.A%=47).B%>1 .F|
0000eea0  25 3d b9 0d 60 a4 09 20  20 20 20 cd 0d 60 ae 07  |%=..`..    ..`..|
0000eeb0  20 20 cd 0d 60 b8 22 20  20 65 73 63 25 3d 41 25  |  ..`."  esc%=A%|
0000eec0  3a e7 46 25 3d 30 80 41  25 3c 3e 39 32 8c 42 24  |:.F%=0.A%<>92.B$|
0000eed0  2b 3d bd 41 25 0d 60 c2  05 cd 0d 60 cc 1e fd 46  |+=.A%.`....`...F|
0000eee0  25 3c 3e 30 84 42 25 3d  6c 25 3a e7 42 25 3d 6c  |%<>0.B%=l%:.B%=l|
0000eef0  25 20 8c 42 25 2b 3d 31  0d 60 d6 10 42 24 3d a4  |% .B%+=1.`..B$=.|
0000ef00  74 72 69 6d 28 42 24 29  0d 60 e0 21 73 74 72 24  |trim(B$).`.!str$|
0000ef10  3d a4 63 6c 69 6e 65 28  a4 74 72 69 6d 28 c1 73  |=.cline(.trim(.s|
0000ef20  74 72 24 2c 42 25 29 29  29 0d 60 ea 0d 3d a4 73  |tr$,B%))).`..=.s|
0000ef30  74 71 28 42 24 29 0d 60  f4 04 0d 60 fe 0d dd a4  |tq(B$).`...`....|
0000ef40  73 74 71 28 42 24 29 0d  61 08 0a ea 6c 25 2c 72  |stq(B$).a...l%,r|
0000ef50  25 0d 61 12 39 6c 25 3d  97 42 24 3a 72 25 3d 97  |%.a.9l%=.B$:r%=.|
0000ef60  c2 42 24 2c 31 29 3a f4  20 73 74 72 69 70 20 71  |.B$,1):. strip q|
0000ef70  75 6f 74 65 73 20 66 72  6f 6d 20 61 72 6f 75 6e  |uotes from aroun|
0000ef80  64 20 61 20 73 74 72 69  6e 67 0d 61 1c 21 e7 6c  |d a string.a.!.l|
0000ef90  25 3d 33 34 80 72 25 3d  33 34 20 8c 42 24 3d c1  |%=34.r%=34 .B$=.|
0000efa0  42 24 2c 32 2c a9 42 24  2d 32 29 0d 61 26 14 e7  |B$,2,.B$-2).a&..|
0000efb0  6c 25 3d 31 32 33 80 72  25 3d 31 32 35 20 8c 0d  |l%=123.r%=125 ..|
0000efc0  61 30 2f 72 25 3d a4 63  6f 6d 6d 61 6e 64 28 c1  |a0/r%=.command(.|
0000efd0  42 24 2c 32 2c a9 42 24  2d 32 29 29 3a 42 24 3d  |B$,2,.B$-2)):B$=|
0000efe0  a4 76 76 28 22 24 73 74  61 74 75 73 22 29 0d 61  |.vv("$status").a|
0000eff0  3a 05 cd 0d 61 44 07 3d  42 24 0d 61 4e 04 0d 61  |:...aD.=B$.aN..a|
0000f000  58 0f dd a4 75 70 70 65  72 28 41 24 29 0d 61 62  |X...upper(A$).ab|
0000f010  13 ea 42 24 2c 6c 25 2c  63 25 3a 42 24 3d 22 22  |..B$,l%,c%:B$=""|
0000f020  0d 61 6c 30 e3 6c 25 3d  31 b8 a9 41 24 3a 63 25  |.al0.l%=1..A$:c%|
0000f030  3d 97 c1 41 24 2c 6c 25  2c 31 29 3a e7 63 25 3e  |=..A$,l%,1):.c%>|
0000f040  39 36 80 63 25 3c 31 32  33 8c 63 25 2d 3d 33 32  |96.c%<123.c%-=32|
0000f050  0d 61 76 11 42 24 2b 3d  bd 63 25 3a ed 3a 3d 42  |.av.B$+=.c%:.:=B|
0000f060  24 0d 61 80 04 0d 61 8a  0f dd a4 63 6c 69 6e 65  |$.a...a....cline|
0000f070  28 41 24 29 0d 61 94 4c  e7 41 24 3d 22 2d 22 8c  |(A$).a.L.A$="-".|
0000f080  41 24 3d a4 73 75 62 73  74 28 a4 6c 69 6e 65 28  |A$=.subst(.line(|
0000f090  73 74 61 67 65 25 29 29  3a f2 6c 6f 67 28 22 43  |stage%)):.log("C|
0000f0a0  6f 6e 74 69 6e 75 61 74  69 6f 6e 20 6c 69 6e 65  |ontinuation line|
0000f0b0  3a 22 2b 41 24 29 3a 73  74 61 67 65 25 2b 3d 31  |:"+A$):stage%+=1|
0000f0c0  0d 61 9e 07 3d 41 24 0d  61 a8 04 0d 61 b2 34 dd  |.a..=A$.a...a.4.|
0000f0d0  a4 76 61 6c 75 65 28 f8  20 41 24 29 3a f4 20 73  |.value(. A$):. s|
0000f0e0  70 6c 69 74 20 76 61 6c  75 65 20 61 73 73 69 67  |plit value assig|
0000f0f0  6e 6d 65 6e 74 20 66 72  6f 6d 20 71 75 61 6c 0d  |nment from qual.|
0000f100  61 bc 26 ea 42 24 2c 41  25 2c 42 25 3a c8 95 c0  |a.&.B$,A%,B%:...|
0000f110  41 24 2c 31 29 3d 22 2f  22 3a 41 24 3d c1 41 24  |A$,1)="/":A$=.A$|
0000f120  2c 32 29 3a ce 0d 61 c6  27 41 25 3d a7 41 24 2c  |,2):..a.'A%=.A$,|
0000f130  22 3d 22 29 3a e7 41 25  3d 30 8c 41 24 3d a4 6c  |"="):.A%=0.A$=.l|
0000f140  6f 77 65 72 28 41 24 29  3a 3d 22 22 0d 61 d0 25  |ower(A$):="".a.%|
0000f150  42 24 3d c1 41 24 2c 41  25 2b 31 29 3a 41 24 3d  |B$=.A$,A%+1):A$=|
0000f160  a4 6c 6f 77 65 72 28 c0  41 24 2c 41 25 2d 31 29  |.lower(.A$,A%-1)|
0000f170  29 0d 61 da 0d 3d a4 73  74 71 28 42 24 29 0d 61  |).a..=.stq(B$).a|
0000f180  e4 04 0d 61 ee 0a dd f2  65 78 69 74 0d 61 f8 1f  |...a....exit.a..|
0000f190  f2 70 72 69 6e 74 28 22  22 2c a4 6d 73 67 30 28  |.print("",.msg0(|
0000f1a0  22 45 78 69 74 22 29 2c  22 22 29 0d 62 02 0c 72  |"Exit"),"").b..r|
0000f1b0  75 6e 25 3d a3 3a e1 0d  62 0c 04 0d 62 16 0f dd  |un%=.:..b...b...|
0000f1c0  a4 64 65 62 75 67 28 41  24 29 0d 62 20 0d e7 41  |.debug(A$).b ..A|
0000f1d0  24 3d 22 22 8c 3d 31 0d  62 2a 0a 3d bb 28 41 24  |$="".=1.b*.=.(A$|
0000f1e0  29 0d 62 34 04 0d 62 3e  14 dd a4 64 28 41 25 2c  |).b4..b>...d(A%,|
0000f1f0  42 25 2c 43 25 2c 44 25  29 0d 62 48 0e 3d ba 28  |B%,C%,D%).bH.=.(|
0000f200  64 72 69 76 65 72 29 0d  62 52 04 0d 62 5c 0c dd  |driver).bR..b\..|
0000f210  f2 67 65 74 65 6e 76 0d  62 66 0a ea 41 24 2c 42  |.getenv.bf..A$,B|
0000f220  24 0d 62 70 14 c8 99 22  4f 53 5f 47 65 74 45 6e  |$.bp..."OS_GetEn|
0000f230  76 22 b8 41 24 0d 62 7a  3b 41 24 3d c1 41 24 2c  |v".A$.bz;A$=.A$,|
0000f240  a7 a4 6c 6f 77 65 72 28  41 24 29 2c 22 21 72 75  |..lower(A$),"!ru|
0000f250  6e 69 22 29 29 3a 71 75  69 65 74 25 3d 30 3a 66  |ni")):quiet%=0:f|
0000f260  69 6c 65 24 3d 22 22 3a  73 70 61 72 24 3d 22 22  |ile$="":spar$=""|
0000f270  0d 62 84 2f 41 24 3d c1  41 24 2c a7 41 24 2c 22  |.b./A$=.A$,.A$,"|
0000f280  20 22 29 2b 31 29 3a f4  20 64 69 73 63 61 72 64  | ")+1):. discard|
0000f290  20 21 52 75 6e 69 6d 61  67 65 20 70 61 72 74 0d  | !Runimage part.|
0000f2a0  62 8e 05 f5 0d 62 98 13  20 20 42 24 3d a4 70 61  |b....b..  B$=.pa|
0000f2b0  72 61 6d 28 41 24 29 0d  62 a2 10 20 20 c8 8e c0  |ram(A$).b..  ...|
0000f2c0  42 24 2c 32 29 20 ca 0d  62 ac 1e 20 20 20 20 c9  |B$,2) ..b..    .|
0000f2d0  22 2d 66 22 3a 66 69 6c  65 24 3d a4 70 61 72 61  |"-f":file$=.para|
0000f2e0  6d 28 41 24 29 0d 62 b6  26 20 20 20 20 c9 22 2d  |m(A$).b.&    ."-|
0000f2f0  61 22 3a 66 69 6c 65 24  3d 22 53 4c 49 50 64 69  |a":file$="SLIPdi|
0000f300  61 6c 3a 64 65 66 61 75  6c 74 22 0d 62 c0 16 20  |al:default".b.. |
0000f310  20 20 20 c9 22 2d 71 22  3a 71 75 69 65 74 25 3d  |   ."-q":quiet%=|
0000f320  b9 0d 62 ca 3c 20 20 20  20 c9 22 2d 73 22 3a 73  |..b.<    ."-s":s|
0000f330  70 72 73 7a 25 3d bb a4  70 61 72 61 6d 28 41 24  |prsz%=..param(A$|
0000f340  29 3a e7 73 70 72 73 7a  25 3c 26 31 42 30 30 20  |):.sprsz%<&1B00 |
0000f350  8c 73 70 72 73 7a 25 3d  26 31 42 30 30 0d 62 d4  |.sprsz%=&1B00.b.|
0000f360  1c 20 20 20 20 7f 3a 73  70 61 72 24 3d 73 70 61  |.    .:spar$=spa|
0000f370  72 24 2b 42 24 2b 22 20  22 0d 62 de 07 20 20 cb  |r$+B$+" ".b..  .|
0000f380  0d 62 e8 0a fd 42 24 3d  22 22 0d 62 f2 05 e1 0d  |.b...B$="".b....|
0000f390  62 fc 04 0d 63 06 12 dd  a4 6e 65 78 74 73 70 28  |b...c....nextsp(|
0000f3a0  f8 20 41 24 29 0d 63 10  16 ea 42 24 2c 61 25 3a  |. A$).c...B$,a%:|
0000f3b0  61 25 3d a7 41 24 2c 22  20 22 29 0d 63 1a 0a e7  |a%=.A$," ").c...|
0000f3c0  61 25 3e 30 8c 0d 63 24  2d 20 20 42 24 3d a4 74  |a%>0..c$-  B$=.t|
0000f3d0  72 69 6d 28 c0 41 24 2c  61 25 2d 31 29 29 3a 41  |rim(.A$,a%-1)):A|
0000f3e0  24 3d a4 74 72 69 6d 28  c1 41 24 2c 61 25 2b 31  |$=.trim(.A$,a%+1|
0000f3f0  29 29 0d 63 2e 07 20 20  cc 0d 63 38 11 20 20 42  |)).c..  ..c8.  B|
0000f400  24 3d 41 24 3a 41 24 3d  22 22 0d 63 42 05 cd 0d  |$=A$:A$="".cB...|
0000f410  63 4c 07 3d 42 24 0d 63  56 04 0d 63 60 0f dd f2  |cL.=B$.cV..c`...|
0000f420  63 68 61 69 6e 28 4e 24  29 0d 63 6a 37 f2 73 65  |chain(N$).cj7.se|
0000f430  74 76 28 22 24 63 61 6c  6c 65 72 22 2c 73 63 72  |tv("$caller",scr|
0000f440  69 70 74 6e 61 6d 65 24  29 3a 72 75 6e 25 3d 30  |iptname$):run%=0|
0000f450  3a f2 69 6e 69 74 73 63  72 69 70 74 28 4e 24 29  |:.initscript(N$)|
0000f460  0d 63 74 05 e1 0d 63 7e  04 0d 63 88 14 dd f2 69  |.ct...c~..c....i|
0000f470  6e 69 74 73 63 72 69 70  74 28 4e 24 29 0d 63 92  |nitscript(N$).c.|
0000f480  20 f4 20 6d 75 73 74 20  62 65 20 73 74 6f 70 70  | . must be stopp|
0000f490  65 64 20 74 6f 20 6c 6f  61 64 2e 2e 2e 0d 63 9c  |ed to load....c.|
0000f4a0  24 e7 72 75 6e 25 3c 3e  30 8c f2 6c 6f 67 28 a4  |$.run%<>0..log(.|
0000f4b0  6d 73 67 30 28 22 45 6c  6f 61 64 31 22 29 29 3a  |msg0("Eload1")):|
0000f4c0  e1 0d 63 a6 0c f2 63 6c  65 61 6e 75 70 0d 63 b0  |..c...cleanup.c.|
0000f4d0  13 70 25 3d 30 3a e7 73  70 61 72 24 3e 22 22 8c  |.p%=0:.spar$>"".|
0000f4e0  0d 63 ba 3a 20 20 f5 3a  70 25 2b 3d 31 3a 42 24  |.c.:  .:p%+=1:B$|
0000f4f0  3d a4 70 61 72 61 6d 28  73 70 61 72 24 29 3a f2  |=.param(spar$):.|
0000f500  73 65 74 76 28 22 70 22  2b c3 70 25 2c 42 24 29  |setv("p"+.p%,B$)|
0000f510  3a fd 73 70 61 72 24 3d  22 22 0d 63 c4 05 cd 0d  |:.spar$="".c....|
0000f520  63 ce 1e e7 4e 24 3e 22  22 80 a4 6c 6f 61 64 73  |c...N$>""..loads|
0000f530  63 72 69 70 74 28 4e 24  2c 30 29 20 8c 0d 63 d8  |cript(N$,0) ..c.|
0000f540  48 20 20 f2 70 72 69 6e  74 28 a4 6d 73 67 30 28  |H  .print(.msg0(|
0000f550  22 53 6c 6f 61 64 32 22  29 2c 22 20 22 2c 22 20  |"Sload2")," "," |
0000f560  22 29 3a 73 63 72 69 70  74 6e 61 6d 65 24 3d 4e  |"):scriptname$=N|
0000f570  24 3a f2 73 65 74 76 28  22 24 73 63 72 69 70 74  |$:.setv("$script|
0000f580  22 2c 4e 24 29 0d 63 e2  1e 20 20 72 75 6e 25 3d  |",N$).c..  run%=|
0000f590  b9 3a 73 74 61 67 65 25  3d 30 3a f2 75 6e 70 61  |.:stage%=0:.unpa|
0000f5a0  75 73 65 0d 63 ec 05 cd  0d 63 f6 05 e1 0d 64 00  |use.c....c....d.|
0000f5b0  04 0d 64 0a 0d dd f2 63  6c 65 61 6e 75 70 0d 64  |..d....cleanup.d|
0000f5c0  14 2d 64 72 69 76 65 72  6e 6f 25 3d 30 3a 70 6f  |.-driverno%=0:po|
0000f5d0  72 74 25 3d 30 3a 73 70  65 65 64 25 3d 31 39 32  |rt%=0:speed%=192|
0000f5e0  30 30 3a f2 63 6c 72 5f  74 78 74 0d 64 1e 3b 72  |00:.clr_txt.d.;r|
0000f5f0  65 74 72 79 25 3d 31 3a  64 65 6c 61 79 25 3d 33  |etry%=1:delay%=3|
0000f600  30 3a 64 65 62 75 67 25  3d a3 3a 63 6f 75 6e 74  |0:debug%=.:count|
0000f610  25 3d 30 3a 73 74 6f 70  24 3d 22 22 3a 65 72 72  |%=0:stop$="":err|
0000f620  6f 72 24 3d 22 22 0d 64  28 4c 63 61 6c 6c 5f 6c  |or$="".d(Lcall_l|
0000f630  65 76 25 3d 30 3a 63 61  73 6c 65 76 25 3d 30 3a  |ev%=0:caslev%=0:|
0000f640  75 73 65 72 6d 65 6e 75  24 28 29 3d 22 22 3a 6c  |usermenu$()="":l|
0000f650  6f 67 6d 65 6e 75 24 28  29 3d 22 22 3a 75 6d 65  |ogmenu$()="":ume|
0000f660  6e 75 25 3d 30 3a 61 6c  61 72 6d 24 28 29 3d 22  |nu%=0:alarm$()="|
0000f670  22 3a 0d 64 32 32 e3 6e  25 3d 30 b8 76 6d 61 78  |":.d22.n%=0.vmax|
0000f680  25 3a e7 c0 76 61 72 24  28 6e 25 2c 30 29 2c 31  |%:..var$(n%,0),1|
0000f690  29 3c 3e 22 24 22 8c 76  61 72 24 28 6e 25 2c 30  |)<>"$".var$(n%,0|
0000f6a0  29 3d 22 22 0d 64 3c 05  ed 0d 64 46 5b e3 6e 25  |)="".d<...dF[.n%|
0000f6b0  3d 30 b8 69 6d 61 78 25  3a e7 69 62 61 72 25 28  |=0.imax%:.ibar%(|
0000f6c0  6e 25 29 3e 30 8c 21 69  63 6f 6e 73 25 3d 2d 32  |n%)>0.!icons%=-2|
0000f6d0  3a 69 63 6f 6e 73 25 21  34 3d 69 62 61 72 25 28  |:icons%!4=ibar%(|
0000f6e0  6e 25 29 3a c8 99 22 58  57 69 6d 70 5f 44 65 6c  |n%):.."XWimp_Del|
0000f6f0  65 74 65 49 63 6f 6e 22  2c 2c 69 63 6f 6e 73 25  |eteIcon",,icons%|
0000f700  b8 3b 46 25 0d 64 50 43  ed 3a 69 62 61 72 69 64  |.;F%.dPC.:ibarid|
0000f710  24 28 29 3d 22 22 3a 69  62 61 72 25 28 29 3d 30  |$()="":ibar%()=0|
0000f720  3a 69 6d 65 6e 75 24 28  29 3d 22 22 3a 61 6c 61  |:imenu$()="":ala|
0000f730  72 6d 24 28 29 3d 22 22  3a 61 6c 61 72 6d 74 69  |rm$()="":alarmti|
0000f740  6d 65 25 28 29 3d 30 0d  64 5a 3d 74 77 68 25 28  |me%()=0.dZ=twh%(|
0000f750  29 3d 30 3a 74 77 6e 61  6d 65 24 28 29 3d 22 22  |)=0:twname$()=""|
0000f760  3a 74 77 65 78 69 74 24  28 29 3d 22 22 3a 74 61  |:twexit$()="":ta|
0000f770  73 6b 68 25 28 29 3d 30  3a 74 61 73 6b 6e 24 28  |skh%()=0:taskn$(|
0000f780  29 3d 22 22 0d 64 64 28  74 61 73 6b 65 78 24 28  |)="".dd(taskex$(|
0000f790  29 3d 22 22 3a 65 76 65  6e 74 24 28 29 3d 22 22  |)="":event$()=""|
0000f7a0  3a 75 6d 65 6e 75 24 28  29 3d 22 22 0d 64 6e 1a  |:umenu$()="".dn.|
0000f7b0  61 6c 69 6e 65 24 28 29  3d 22 22 3a 61 6c 69 6e  |aline$()="":alin|
0000f7c0  65 25 28 29 3d 30 0d 64  78 05 e1 0d 64 82 04 0d  |e%()=0.dx...d...|
0000f7d0  64 8c 19 dd a4 6c 6f 61  64 73 63 72 69 70 74 28  |d....loadscript(|
0000f7e0  4e 24 2c 6c 69 62 25 29  0d 64 96 0f ea 41 24 2c  |N$,lib%).d...A$,|
0000f7f0  72 25 2c 66 68 31 25 0d  64 a0 23 c8 99 22 58 4f  |r%,fh1%.d.#.."XO|
0000f800  53 5f 46 69 6c 65 22 2c  32 33 2c 4e 24 b8 72 25  |S_File",23,N$.r%|
0000f810  3a e7 72 25 3c 3e 31 8c  3d 30 0d 64 aa 19 72 25  |:.r%<>1.=0.d..r%|
0000f820  3d 30 3a 66 68 31 25 3d  a4 6f 70 65 6e 69 6e 28  |=0:fh1%=.openin(|
0000f830  4e 24 29 0d 64 b4 2b e7  66 68 31 25 3d 30 20 8c  |N$).d.+.fh1%=0 .|
0000f840  f2 6c 6f 67 28 22 46 69  6c 65 20 6e 6f 74 20 66  |.log("File not f|
0000f850  6f 75 6e 64 3a 20 22 2b  4e 24 29 3a 3d 30 0d 64  |ound: "+N$):=0.d|
0000f860  be 1b e7 6c 69 62 25 3d  30 8c 63 6f 75 6e 74 25  |...lib%=0.count%|
0000f870  3d 30 3a 6a 74 6c 25 3d  31 0d 64 c8 0d 41 24 3d  |=0:jtl%=1.d..A$=|
0000f880  be 23 66 68 31 25 0d 64  d2 18 e7 a7 41 24 2c 22  |.#fh1%.d....A$,"|
0000f890  73 6c 69 70 64 69 61 6c  22 29 3e 30 20 8c 0d 64  |slipdial")>0 ..d|
0000f8a0  dc 10 20 20 f5 41 24 3d  be 23 66 68 31 25 0d 64  |..  .A$=.#fh1%.d|
0000f8b0  e6 1c 20 20 20 20 e7 c0  41 24 2c 31 29 3c 3e 22  |..    ..A$,1)<>"|
0000f8c0  23 22 80 41 24 3e 22 22  20 8c 0d 64 f0 1d 20 20  |#".A$>"" ..d..  |
0000f8d0  20 20 20 20 f2 61 64 64  6c 69 6e 65 28 41 24 2c  |    .addline(A$,|
0000f8e0  63 6f 75 6e 74 25 29 0d  64 fa 16 20 20 20 20 20  |count%).d..     |
0000f8f0  20 e7 c0 41 24 2c 31 29  3d 22 3a 22 8c 0d 65 04  | ..A$,1)=":"..e.|
0000f900  21 20 20 20 20 20 20 41  24 3d c1 41 24 2c 32 29  |!      A$=.A$,2)|
0000f910  3a 42 24 3d a4 70 61 72  61 6d 28 41 24 29 0d 65  |:B$=.param(A$).e|
0000f920  0e 59 20 20 20 20 20 20  20 20 e7 42 24 3d 22 61  |.Y        .B$="a|
0000f930  75 74 6f 65 78 65 63 22  8c 6a 74 25 28 30 29 3d  |utoexec".jt%(0)=|
0000f940  63 6f 75 6e 74 25 3a 6a  74 24 28 30 29 3d 42 24  |count%:jt$(0)=B$|
0000f950  20 8b 6a 74 25 28 6a 74  6c 25 29 3d 63 6f 75 6e  | .jt%(jtl%)=coun|
0000f960  74 25 3a 6a 74 24 28 6a  74 6c 25 29 3d 42 24 3a  |t%:jt$(jtl%)=B$:|
0000f970  6a 74 6c 25 2b 3d 31 0d  65 18 0b 20 20 20 20 20  |jtl%+=1.e..     |
0000f980  20 cd 0d 65 22 13 20 20  20 20 20 20 63 6f 75 6e  | ..e".      coun|
0000f990  74 25 2b 3d 31 0d 65 2c  09 20 20 20 20 cd 0d 65  |t%+=1.e,.    ..e|
0000f9a0  36 0d 20 20 fd c5 23 66  68 31 25 0d 65 40 15 20  |6.  ..#fh1%.e@. |
0000f9b0  20 e7 20 63 6f 75 6e 74  25 3e 32 30 30 30 20 8c  | . count%>2000 .|
0000f9c0  0d 65 4a 2a 20 20 20 20  f2 63 66 28 66 68 31 25  |.eJ*    .cf(fh1%|
0000f9d0  29 3a f2 68 61 6c 74 28  a4 6d 73 67 30 28 22 45  |):.halt(.msg0("E|
0000f9e0  6c 6f 6e 67 22 29 29 3a  3d 30 0d 65 54 07 20 20  |long")):=0.eT.  |
0000f9f0  cc 0d 65 5e 0a 20 20 72  25 3d 31 0d 65 68 07 20  |..e^.  r%=1.eh. |
0000fa00  20 cd 0d 65 72 05 cc 0d  65 7c 1f 20 20 f2 68 61  | ..er...e|.  .ha|
0000fa10  6c 74 28 a4 6d 73 67 30  28 22 45 6c 6f 61 64 32  |lt(.msg0("Eload2|
0000fa20  22 29 29 3a 3d 30 0d 65  86 05 cd 0d 65 90 0d f2  |")):=0.e....e...|
0000fa30  63 66 28 66 68 31 25 29  0d 65 9a 07 3d 72 25 0d  |cf(fh1%).e..=r%.|
0000fa40  65 a4 04 0d 65 ae 14 dd  f2 61 64 64 6c 69 6e 65  |e...e....addline|
0000fa50  28 41 24 2c 6e 25 29 0d  65 b8 12 e7 6e 25 3e 68  |(A$,n%).e...n%>h|
0000fa60  69 67 68 65 73 74 25 20  8c 0d 65 c2 0b 20 20 c8  |ighest% ..e..  .|
0000fa70  8e 6e 25 ca 0d 65 cc 14  20 20 c9 30 3a de 62 75  |.n%..e..  .0:.bu|
0000fa80  66 30 24 28 31 39 39 29  0d 65 d6 16 20 20 c9 32  |f0$(199).e..  .2|
0000fa90  30 30 3a de 62 75 66 31  24 28 31 39 39 29 0d 65  |00:.buf1$(199).e|
0000faa0  e0 16 20 20 c9 34 30 30  3a de 62 75 66 32 24 28  |..  .400:.buf2$(|
0000fab0  31 39 39 29 0d 65 ea 16  20 20 c9 36 30 30 3a de  |199).e..  .600:.|
0000fac0  62 75 66 33 24 28 31 39  39 29 0d 65 f4 16 20 20  |buf3$(199).e..  |
0000fad0  c9 38 30 30 3a de 62 75  66 34 24 28 31 39 39 29  |.800:.buf4$(199)|
0000fae0  0d 65 fe 17 20 20 c9 31  30 30 30 3a de 62 75 66  |.e..  .1000:.buf|
0000faf0  35 24 28 31 39 39 29 0d  66 08 17 20 20 c9 31 32  |5$(199).f..  .12|
0000fb00  30 30 3a de 62 75 66 36  24 28 31 39 39 29 0d 66  |00:.buf6$(199).f|
0000fb10  12 17 20 20 c9 31 34 30  30 3a de 62 75 66 37 24  |..  .1400:.buf7$|
0000fb20  28 31 39 39 29 0d 66 1c  17 20 20 c9 31 36 30 30  |(199).f..  .1600|
0000fb30  3a de 62 75 66 38 24 28  31 39 39 29 0d 66 26 17  |:.buf8$(199).f&.|
0000fb40  20 20 c9 31 38 30 30 3a  de 62 75 66 39 24 28 31  |  .1800:.buf9$(1|
0000fb50  39 39 29 0d 66 30 17 20  20 c9 32 30 30 30 3a de  |99).f0.  .2000:.|
0000fb60  62 75 66 41 24 28 31 39  39 29 0d 66 3a 07 20 20  |bufA$(199).f:.  |
0000fb70  cb 0d 66 44 11 20 20 68  69 67 68 65 73 74 25 3d  |..fD.  highest%=|
0000fb80  6e 25 0d 66 4e 05 cd 0d  66 58 0f c8 8e 28 6e 25  |n%.fN...fX...(n%|
0000fb90  81 32 30 30 29 ca 0d 66  62 13 c9 30 3a 62 75 66  |.200)..fb..0:buf|
0000fba0  30 24 28 6e 25 29 3d 41  24 0d 66 6c 17 c9 31 3a  |0$(n%)=A$.fl..1:|
0000fbb0  62 75 66 31 24 28 6e 25  2d 32 30 30 29 3d 41 24  |buf1$(n%-200)=A$|
0000fbc0  0d 66 76 17 c9 32 3a 62  75 66 32 24 28 6e 25 2d  |.fv..2:buf2$(n%-|
0000fbd0  34 30 30 29 3d 41 24 0d  66 80 17 c9 33 3a 62 75  |400)=A$.f...3:bu|
0000fbe0  66 33 24 28 6e 25 2d 36  30 30 29 3d 41 24 0d 66  |f3$(n%-600)=A$.f|
0000fbf0  8a 17 c9 34 3a 62 75 66  34 24 28 6e 25 2d 38 30  |...4:buf4$(n%-80|
0000fc00  30 29 3d 41 24 0d 66 94  18 c9 35 3a 62 75 66 35  |0)=A$.f...5:buf5|
0000fc10  24 28 6e 25 2d 31 30 30  30 29 3d 41 24 0d 66 9e  |$(n%-1000)=A$.f.|
0000fc20  18 c9 36 3a 62 75 66 36  24 28 6e 25 2d 31 32 30  |..6:buf6$(n%-120|
0000fc30  30 29 3d 41 24 0d 66 a8  18 c9 37 3a 62 75 66 37  |0)=A$.f...7:buf7|
0000fc40  24 28 6e 25 2d 31 34 30  30 29 3d 41 24 0d 66 b2  |$(n%-1400)=A$.f.|
0000fc50  18 c9 38 3a 62 75 66 38  24 28 6e 25 2d 31 36 30  |..8:buf8$(n%-160|
0000fc60  30 29 3d 41 24 0d 66 bc  18 c9 39 3a 62 75 66 39  |0)=A$.f...9:buf9|
0000fc70  24 28 6e 25 2d 31 38 30  30 29 3d 41 24 0d 66 c6  |$(n%-1800)=A$.f.|
0000fc80  19 c9 31 30 3a 62 75 66  41 24 28 6e 25 2d 32 30  |..10:bufA$(n%-20|
0000fc90  30 30 29 3d 41 24 0d 66  d0 05 cb 0d 66 da 05 e1  |00)=A$.f....f...|
0000fca0  0d 66 e4 04 0d 66 ee 0e  dd a4 6c 69 6e 65 28 6e  |.f...f....line(n|
0000fcb0  25 29 0d 66 f8 14 e7 6e  25 3e 68 69 67 68 65 73  |%).f...n%>highes|
0000fcc0  74 25 8c 3d 22 22 0d 67  02 13 ea 41 24 3a c8 8e  |t%.="".g...A$:..|
0000fcd0  28 6e 25 81 32 30 30 29  ca 0d 67 0c 13 c9 30 3a  |(n%.200)..g...0:|
0000fce0  41 24 3d 62 75 66 30 24  28 6e 25 29 0d 67 16 17  |A$=buf0$(n%).g..|
0000fcf0  c9 31 3a 41 24 3d 62 75  66 31 24 28 6e 25 2d 32  |.1:A$=buf1$(n%-2|
0000fd00  30 30 29 0d 67 20 17 c9  32 3a 41 24 3d 62 75 66  |00).g ..2:A$=buf|
0000fd10  32 24 28 6e 25 2d 34 30  30 29 0d 67 2a 17 c9 33  |2$(n%-400).g*..3|
0000fd20  3a 41 24 3d 62 75 66 33  24 28 6e 25 2d 36 30 30  |:A$=buf3$(n%-600|
0000fd30  29 0d 67 34 17 c9 34 3a  41 24 3d 62 75 66 34 24  |).g4..4:A$=buf4$|
0000fd40  28 6e 25 2d 38 30 30 29  0d 67 3e 18 c9 35 3a 41  |(n%-800).g>..5:A|
0000fd50  24 3d 62 75 66 35 24 28  6e 25 2d 31 30 30 30 29  |$=buf5$(n%-1000)|
0000fd60  0d 67 48 18 c9 36 3a 41  24 3d 62 75 66 36 24 28  |.gH..6:A$=buf6$(|
0000fd70  6e 25 2d 31 32 30 30 29  0d 67 52 18 c9 37 3a 41  |n%-1200).gR..7:A|
0000fd80  24 3d 62 75 66 37 24 28  6e 25 2d 31 34 30 30 29  |$=buf7$(n%-1400)|
0000fd90  0d 67 5c 18 c9 38 3a 41  24 3d 62 75 66 38 24 28  |.g\..8:A$=buf8$(|
0000fda0  6e 25 2d 31 36 30 30 29  0d 67 66 18 c9 39 3a 41  |n%-1600).gf..9:A|
0000fdb0  24 3d 62 75 66 39 24 28  6e 25 2d 31 38 30 30 29  |$=buf9$(n%-1800)|
0000fdc0  0d 67 70 19 c9 31 30 3a  41 24 3d 62 75 66 41 24  |.gp..10:A$=bufA$|
0000fdd0  28 6e 25 2d 32 30 30 30  29 0d 67 7a 0b 7f 3a 41  |(n%-2000).gz..:A|
0000fde0  24 3d 22 22 0d 67 84 05  cb 0d 67 8e 07 3d 41 24  |$="".g....g..=A$|
0000fdf0  0d 67 98 04 0d 67 a2 15  dd a4 6c 69 62 72 61 72  |.g...g....librar|
0000fe00  79 28 6c 69 62 5f 70 24  29 0d 67 ac 0e ea 72 25  |y(lib_p$).g...r%|
0000fe10  2c 61 65 25 2c 42 24 0d  67 b6 2c 42 24 3d a4 70  |,ae%,B$.g.,B$=.p|
0000fe20  61 72 61 6d 28 6c 69 62  5f 70 24 29 3a f2 6c 6f  |aram(lib_p$):.lo|
0000fe30  67 28 a4 6d 73 67 31 28  22 53 6c 69 62 22 2c 42  |g(.msg1("Slib",B|
0000fe40  24 29 29 0d 67 c0 0e 61  65 25 3d 6a 74 25 28 30  |$)).g..ae%=jt%(0|
0000fe50  29 0d 67 ca 18 72 25 3d  a4 6c 6f 61 64 73 63 72  |).g..r%=.loadscr|
0000fe60  69 70 74 28 42 24 2c 31  29 0d 67 d4 37 e7 61 65  |ipt(B$,1).g.7.ae|
0000fe70  25 3c 3e 6a 74 25 28 30  29 80 72 25 3c 3e 30 8c  |%<>jt%(0).r%<>0.|
0000fe80  f2 61 64 64 65 76 65 6e  74 28 22 63 61 6c 6c 20  |.addevent("call |
0000fe90  61 75 74 6f 20 22 2b 6c  69 62 5f 70 24 2c 30 29  |auto "+lib_p$,0)|
0000fea0  0d 67 de 07 3d 72 25 0d  67 e8 04 0d 67 f2 14 dd  |.g..=r%.g...g...|
0000feb0  f2 6c 69 73 74 73 63 72  69 70 74 28 41 24 29 0d  |.listscript(A$).|
0000fec0  67 fc 0c ea 73 74 25 2c  66 6e 25 0d 68 06 1d f2  |g...st%,fn%.h...|
0000fed0  77 61 72 6e 5f 74 78 74  28 a4 6d 73 67 30 28 22  |warn_txt(.msg0("|
0000fee0  53 6c 69 73 74 22 29 29  0d 68 10 1b 73 74 25 3d  |Slist")).h..st%=|
0000fef0  bb a4 70 61 72 61 6d 28  41 24 29 3a 66 6e 25 3d  |..param(A$):fn%=|
0000ff00  bb 41 24 0d 68 1a 11 e7  73 74 25 3c 30 20 8c 73  |.A$.h...st%<0 .s|
0000ff10  74 25 3d 30 0d 68 24 21  e7 66 6e 25 3d 30 84 66  |t%=0.h$!.fn%=0.f|
0000ff20  6e 25 3e 63 6f 75 6e 74  25 20 8c 66 6e 25 3d 63  |n%>count% .fn%=c|
0000ff30  6f 75 6e 74 25 0d 68 2e  0f e3 63 25 3d 73 74 25  |ount%.h...c%=st%|
0000ff40  b8 66 6e 25 0d 68 38 22  20 20 41 24 3d c3 63 25  |.fn%.h8"  A$=.c%|
0000ff50  3a e7 63 25 3d 73 74 61  67 65 25 20 8c 41 24 3d  |:.c%=stage% .A$=|
0000ff60  22 2a 22 2b 41 24 0d 68  42 19 20 20 41 24 3d c2  |"*"+A$.hB.  A$=.|
0000ff70  22 20 20 20 22 2b 41 24  2c 34 29 2b 22 20 22 0d  |"   "+A$,4)+" ".|
0000ff80  68 4c 1d 20 20 f2 77 61  72 6e 5f 74 78 74 28 41  |hL.  .warn_txt(A|
0000ff90  24 2b a4 6c 69 6e 65 28  63 25 29 29 0d 68 56 05  |$+.line(c%)).hV.|
0000ffa0  ed 0d 68 60 05 e1 0d 68  6a 04 0d 68 74 0c dd f2  |..h`...hj..ht...|
0000ffb0  6c 69 73 74 6a 74 0d 68  7e 1b f2 66 5f 6c 69 73  |listjt.h~..f_lis|
0000ffc0  74 28 22 4c 61 62 65 6c  22 2c 22 4c 69 6e 65 22  |t("Label","Line"|
0000ffd0  29 0d 68 88 30 ea 6e 25  3a e3 6e 25 3d 30 b8 6a  |).h.0.n%:.n%=0.j|
0000ffe0  74 6c 25 2d 31 3a f2 66  5f 6c 69 73 74 28 6a 74  |tl%-1:.f_list(jt|
0000fff0  24 28 6e 25 29 2c c3 6a  74 25 28 6e 25 29 29 3a  |$(n%),.jt%(n%)):|
00010000  ed 0d 68 92 05 e1 0d 68  9c 04 0d 68 a6 12 dd a4  |..h....h...h....|
00010010  6d 6f 64 65 6d 64 72 76  28 41 24 29 0d 68 b0 0c  |modemdrv(A$).h..|
00010020  ea 72 25 3a 72 25 3d 30  0d 68 ba 1c f2 73 65 74  |.r%:r%=0.h...set|
00010030  76 28 22 24 69 6e 69 74  22 2c 22 41 54 5a 51 30  |v("$init","ATZQ0|
00010040  56 31 22 29 0d 68 c4 19  f2 73 65 74 76 28 22 24  |V1").h...setv("$|
00010050  62 75 73 79 22 2c 22 42  55 53 59 22 29 0d 68 ce  |busy","BUSY").h.|
00010060  1c f2 73 65 74 76 28 22  24 63 6f 6e 6e 22 2c 22  |..setv("$conn","|
00010070  43 4f 4e 4e 45 43 54 22  29 0d 68 d8 21 f2 73 65  |CONNECT").h.!.se|
00010080  74 76 28 22 24 6e 6f 63  61 72 72 22 2c 22 4e 4f  |tv("$nocarr","NO|
00010090  20 43 41 52 52 49 45 52  22 29 0d 68 e2 22 f2 73  | CARRIER").h.".s|
000100a0  65 74 76 28 22 24 6e 6f  64 69 61 6c 22 2c 22 4e  |etv("$nodial","N|
000100b0  4f 20 44 49 41 4c 54 4f  4e 45 22 29 0d 68 ec 0b  |O DIALTONE").h..|
000100c0  e7 41 24 3e 22 22 8c 0d  68 f6 27 20 20 e7 a7 41  |.A$>""..h.'  ..A|
000100d0  24 2c 22 2e 22 29 3d 30  20 8c 41 24 3d 22 53 6c  |$,".")=0 .A$="Sl|
000100e0  69 70 44 69 61 6c 44 72  76 3a 22 2b 41 24 0d 69  |ipDialDrv:"+A$.i|
000100f0  00 14 20 20 72 25 3d a4  73 6f 75 72 63 65 28 41  |..  r%=.source(A|
00010100  24 29 0d 69 0a 05 cd 0d  69 14 07 3d 72 25 0d 69  |$).i....i..=r%.i|
00010110  1e 04 0d 69 28 13 dd a4  73 6f 75 72 63 65 28 66  |...i(...source(f|
00010120  69 6c 65 24 29 0d 69 32  12 ea 72 25 2c 66 68 31  |ile$).i2..r%,fh1|
00010130  25 2c 42 24 2c 43 24 0d  69 3c 08 72 25 3d 30 0d  |%,B$,C$.i<.r%=0.|
00010140  69 46 15 f5 42 24 3d a4  70 61 72 61 6d 28 66 69  |iF..B$=.param(fi|
00010150  6c 65 24 29 0d 69 50 16  20 20 66 68 31 25 3d a4  |le$).iP.  fh1%=.|
00010160  6f 70 65 6e 69 6e 28 42  24 29 0d 69 5a 0e 20 20  |openin(B$).iZ.  |
00010170  e7 66 68 31 25 3d 30 8c  0d 69 64 24 20 20 20 20  |.fh1%=0..id$    |
00010180  f2 6c 6f 67 28 a4 6d 73  67 31 28 22 46 73 6f 75  |.log(.msg1("Fsou|
00010190  72 63 65 22 2c 42 24 29  29 3a 3d 30 0d 69 6e 09  |rce",B$)):=0.in.|
000101a0  20 20 20 20 cc 0d 69 78  12 20 20 20 20 f5 43 24  |    ..ix.    .C$|
000101b0  3d be 23 66 68 31 25 0d  69 82 1e 20 20 20 20 20  |=.#fh1%.i..     |
000101c0  20 e7 c0 43 24 2c 31 29  3c 3e 22 23 22 80 43 24  | ..C$,1)<>"#".C$|
000101d0  3e 22 22 20 8c 0d 69 8c  1b 20 20 20 20 20 20 20  |>"" ..i..       |
000101e0  20 72 25 3d a4 63 6f 6d  6d 61 6e 64 28 43 24 29  | r%=.command(C$)|
000101f0  0d 69 96 0b 20 20 20 20  20 20 cd 0d 69 a0 0f 20  |.i..      ..i.. |
00010200  20 20 20 fd c5 23 66 68  31 25 0d 69 aa 11 20 20  |   ..#fh1%.i..  |
00010210  20 20 f2 63 66 28 66 68  31 25 29 0d 69 b4 07 20  |  .cf(fh1%).i.. |
00010220  20 cd 0d 69 be 0d fd 66  69 6c 65 24 3d 22 22 0d  | ..i...file$="".|
00010230  69 c8 07 3d 72 25 0d 69  d2 04 0d 69 dc 0e dd f2  |i..=r%.i...i....|
00010240  68 65 6c 70 28 41 24 29  0d 69 e6 27 ea 66 68 31  |help(A$).i.'.fh1|
00010250  25 2c 6e 25 2c 72 25 2c  42 24 2c 43 24 3a 6d 73  |%,n%,r%,B$,C$:ms|
00010260  67 63 25 3d a3 3a 6d 73  67 24 28 29 3d 22 22 0d  |gc%=.:msg$()="".|
00010270  69 f0 0b e7 41 24 3d 22  22 8c 0d 69 fa 25 20 20  |i...A$=""..i.%  |
00010280  f2 61 64 64 6d 65 73 73  61 67 65 28 a4 6d 73 67  |.addmessage(.msg|
00010290  30 28 22 48 61 6e 6e 6f  75 6e 63 65 22 29 29 0d  |0("Hannounce")).|
000102a0  6a 04 10 20 20 6e 25 3d  30 3a 43 24 3d 22 22 0d  |j..  n%=0:C$="".|
000102b0  6a 0e 0c 20 20 f5 42 24  3d 22 22 0d 6a 18 09 20  |j..  .B$="".j.. |
000102c0  20 20 20 f5 0d 6a 22 43  20 20 20 20 20 20 c8 99  |   ..j"C      ..|
000102d0  22 58 4f 53 5f 47 42 50  42 22 2c 39 2c 73 64 6c  |"XOS_GBPB",9,sdl|
000102e0  61 6e 67 24 2b 22 2e 68  65 6c 70 22 2c 74 6d 70  |ang$+".help",tmp|
000102f0  25 2c 31 2c 6e 25 2c 32  35 35 2c 22 2a 22 b8 2c  |%,1,n%,255,"*".,|
00010300  2c 2c 72 25 2c 6e 25 0d  6a 2c 2b 20 20 20 20 20  |,,r%,n%.j,+     |
00010310  20 43 24 3d a4 73 74 72  28 74 6d 70 25 29 3a 42  | C$=.str(tmp%):B|
00010320  24 2b 3d 43 24 2b c4 31  35 2d a9 43 24 2c 22 20  |$+=C$+.15-.C$," |
00010330  22 29 0d 6a 36 15 20 20  20 20 fd 6e 25 3d 2d 31  |").j6.    .n%=-1|
00010340  84 a9 42 24 3e 36 30 0d  6a 40 17 20 20 20 20 f2  |..B$>60.j@.    .|
00010350  61 64 64 6d 65 73 73 61  67 65 28 42 24 29 0d 6a  |addmessage(B$).j|
00010360  4a 1c 20 20 fd 6e 25 3d  2d 31 3a f2 61 64 64 6d  |J.  .n%=-1:.addm|
00010370  65 73 73 61 67 65 28 22  22 29 0d 6a 54 07 20 20  |essage("").jT.  |
00010380  cc 0d 6a 5e 2b 20 20 66  68 31 25 3d a4 6f 70 65  |..j^+  fh1%=.ope|
00010390  6e 69 6e 28 73 64 6c 61  6e 67 24 2b 22 2e 48 65  |nin(sdlang$+".He|
000103a0  6c 70 2e 22 2b 41 24 2b  22 2a 22 29 0d 6a 68 0e  |lp."+A$+"*").jh.|
000103b0  20 20 e7 66 68 31 25 3e  30 8c 0d 6a 72 26 20 20  |  .fh1%>0..jr&  |
000103c0  20 20 f2 61 64 64 6d 65  73 73 61 67 65 28 22 48  |  .addmessage("H|
000103d0  65 6c 70 20 6f 6e 20 22  2b 41 24 2b 22 3a 22 29  |elp on "+A$+":")|
000103e0  0d 6a 7c 0c 20 20 20 20  6e 25 3d 30 0d 6a 86 09  |.j|.    n%=0.j..|
000103f0  20 20 20 20 f5 0d 6a 90  30 20 20 20 20 20 20 42  |    ..j.0      B|
00010400  24 3d be 23 66 68 31 25  3a e7 42 24 3e 22 22 8c  |$=.#fh1%:.B$>"".|
00010410  6e 25 2b 3d 31 3a f2 61  64 64 6d 65 73 73 61 67  |n%+=1:.addmessag|
00010420  65 28 42 24 29 0d 6a 9a  1a 20 20 20 20 fd c5 23  |e(B$).j..    ..#|
00010430  66 68 31 25 84 6e 25 3e  6d 73 67 6d 61 78 25 0d  |fh1%.n%>msgmax%.|
00010440  6a a4 21 20 20 20 20 f2  61 64 64 6d 65 73 73 61  |j.!    .addmessa|
00010450  67 65 28 22 22 29 3a f2  63 66 28 66 68 31 25 29  |ge(""):.cf(fh1%)|
00010460  0d 6a ae 09 20 20 20 20  cc 0d 6a b8 11 20 20 20  |.j..    ..j..   |
00010470  20 f2 68 65 6c 70 28 22  22 29 0d 6a c2 07 20 20  | .help("").j..  |
00010480  cd 0d 6a cc 05 cd 0d 6a  d6 05 e1 0d 6a e0 04 0d  |..j....j....j...|
00010490  6a ea 11 dd f2 71 75 69  74 28 6d 65 73 73 24 29  |j....quit(mess$)|
000104a0  0d 6a f4 23 f2 70 72 69  6e 74 28 a4 6d 73 67 30  |.j.#.print(.msg0|
000104b0  28 22 51 75 69 74 32 22  29 2c 6d 65 73 73 24 2c  |("Quit2"),mess$,|
000104c0  22 22 29 0d 6a fe 0b f2  66 69 6e 69 73 68 0d 6b  |"").j...finish.k|
000104d0  08 05 e0 0d 6b 12 05 e1  0d 6b 1c 04 0d 6b 26 10  |....k....k...k&.|
000104e0  dd f2 6c 6f 61 64 63 6f  6e 66 69 67 0d 6b 30 3e  |..loadconfig.k0>|
000104f0  66 68 31 25 3d a4 6f 70  65 6e 69 6e 28 73 64 72  |fh1%=.openin(sdr|
00010500  65 73 24 2b 22 2e 21 43  6f 6e 66 69 67 22 29 3a  |es$+".!Config"):|
00010510  e7 66 68 31 25 3d 30 20  8c 85 30 2c 22 4e 6f 20  |.fh1%=0 ..0,"No |
00010520  63 6f 6e 66 69 67 21 22  3a e1 0d 6b 3a 1d f2 73  |config!":..k:..s|
00010530  65 74 69 6e 76 28 63 6f  6e 66 69 67 25 2c 31 2c  |etinv(config%,1,|
00010540  9a 23 66 68 31 25 29 0d  6b 44 1d f2 73 65 74 69  |.#fh1%).kD..seti|
00010550  6e 76 28 63 6f 6e 66 69  67 25 2c 32 2c 9a 23 66  |nv(config%,2,.#f|
00010560  68 31 25 29 0d 6b 4e 1d  f2 73 65 74 69 6e 76 28  |h1%).kN..setinv(|
00010570  63 6f 6e 66 69 67 25 2c  33 2c 9a 23 66 68 31 25  |config%,3,.#fh1%|
00010580  29 0d 6b 58 1f f2 75 70  64 5f 69 63 6f 6e 28 63  |).kX..upd_icon(c|
00010590  6f 6e 66 69 67 25 2c 34  2c be 23 66 68 31 25 29  |onfig%,4,.#fh1%)|
000105a0  0d 6b 62 28 e7 ac c5 23  66 68 31 25 8c f2 75 70  |.kb(...#fh1%..up|
000105b0  64 5f 69 63 6f 6e 28 63  6f 6e 66 69 67 25 2c 37  |d_icon(config%,7|
000105c0  2c be 23 66 68 31 25 29  0d 6b 6c 28 e7 ac c5 23  |,.#fh1%).kl(...#|
000105d0  66 68 31 25 8c f2 75 70  64 5f 69 63 6f 6e 28 63  |fh1%..upd_icon(c|
000105e0  6f 6e 66 69 67 25 2c 38  2c be 23 66 68 31 25 29  |onfig%,8,.#fh1%)|
000105f0  0d 6b 76 29 e7 ac c5 23  66 68 31 25 8c f2 75 70  |.kv)...#fh1%..up|
00010600  64 5f 69 63 6f 6e 28 63  6f 6e 66 69 67 25 2c 31  |d_icon(config%,1|
00010610  32 2c be 23 66 68 31 25  29 0d 6b 80 27 e7 ac c5  |2,.#fh1%).k.'...|
00010620  23 66 68 31 25 8c f2 73  65 74 69 6e 76 28 63 6f  |#fh1%..setinv(co|
00010630  6e 66 69 67 25 2c 31 33  2c 9a 23 66 68 31 25 29  |nfig%,13,.#fh1%)|
00010640  0d 6b 8a 27 e7 ac c5 23  66 68 31 25 8c f2 73 65  |.k.'...#fh1%..se|
00010650  74 69 6e 76 28 63 6f 6e  66 69 67 25 2c 31 34 2c  |tinv(config%,14,|
00010660  9a 23 66 68 31 25 29 0d  6b 94 0d f2 63 66 28 66  |.#fh1%).k...cf(f|
00010670  68 31 25 29 0d 6b 9e 31  74 78 74 79 25 3d bb a4  |h1%).k.1txty%=..|
00010680  69 63 5f 73 74 72 28 63  6f 6e 66 69 67 25 2c 37  |ic_str(config%,7|
00010690  29 3a e7 74 78 74 79 25  3c 32 34 20 8c 74 78 74  |):.txty%<24 .txt|
000106a0  79 25 3d 32 34 0d 6b a8  1d 74 78 74 78 25 3d bb  |y%=24.k..txtx%=.|
000106b0  a4 69 63 5f 73 74 72 28  63 6f 6e 66 69 67 25 2c  |.ic_str(config%,|
000106c0  38 29 0d 6b b2 22 61 75  74 6f 77 69 6e 70 6f 73  |8).k."autowinpos|
000106d0  25 3d a4 72 64 69 6e 76  28 63 6f 6e 66 69 67 25  |%=.rdinv(config%|
000106e0  2c 31 33 29 0d 6b bc 2e  20 20 e7 74 78 74 78 25  |,13).k..  .txtx%|
000106f0  3c 34 30 20 8c 74 78 74  78 25 3d 34 30 8b e7 74  |<40 .txtx%=40..t|
00010700  78 74 78 25 3e 32 34 30  8c 74 78 74 78 25 3d 32  |xtx%>240.txtx%=2|
00010710  34 30 0d 6b c6 20 74 77  77 6d 61 78 25 3d bb a4  |40.k. twwmax%=..|
00010720  69 63 5f 73 74 72 28 63  6f 6e 66 69 67 25 2c 31  |ic_str(config%,1|
00010730  32 29 0d 6b d0 36 20 20  e7 74 77 77 6d 61 78 25  |2).k.6  .twwmax%|
00010740  3c 31 30 20 8c 74 77 77  6d 61 78 25 3d 31 30 8b  |<10 .twwmax%=10.|
00010750  e7 74 77 77 6d 61 78 25  3e 31 30 30 8c 74 77 77  |.twwmax%>100.tww|
00010760  6d 61 78 25 3d 31 30 30  0d 6b da 1f c8 99 22 4f  |max%=100.k...."O|
00010770  53 5f 42 79 74 65 22 2c  31 32 31 2c 28 32 82 26  |S_Byte",121,(2.&|
00010780  38 30 29 b8 2c 41 25 0d  6b e4 44 e7 66 69 6c 65  |80).,A%.k.D.file|
00010790  24 3d 22 22 80 a4 72 64  69 6e 76 28 63 6f 6e 66  |$=""..rdinv(conf|
000107a0  69 67 25 2c 33 29 3d 30  20 80 41 25 3c 3e 26 46  |ig%,3)=0 .A%<>&F|
000107b0  46 20 8c 66 69 6c 65 24  3d a4 69 63 5f 73 74 72  |F .file$=.ic_str|
000107c0  28 63 6f 6e 66 69 67 25  2c 34 29 0d 6b ee 3a e7  |(config%,4).k.:.|
000107d0  71 75 69 65 74 25 3d 30  80 a4 72 64 69 6e 76 28  |quiet%=0..rdinv(|
000107e0  63 6f 6e 66 69 67 25 2c  31 29 3d 30 20 8c f2 63  |config%,1)=0 ..c|
000107f0  66 72 6f 6e 74 28 73 74  61 74 75 73 25 2c 30 2c  |front(status%,0,|
00010800  2d 32 30 30 29 0d 6b f8  05 e1 0d 6c 02 04 0d 6c  |-200).k....l...l|
00010810  0c 10 dd f2 73 61 76 65  63 6f 6e 66 69 67 0d 6c  |....saveconfig.l|
00010820  16 2f 66 68 31 25 3d a4  6f 70 65 6e 6f 75 74 28  |./fh1%=.openout(|
00010830  73 64 72 65 73 24 2b 22  2e 21 43 6f 6e 66 69 67  |sdres$+".!Config|
00010840  22 29 3a e7 66 68 31 25  3d 30 20 8c e1 0d 6c 20  |"):.fh1%=0 ...l |
00010850  1c d5 23 66 68 31 25 2c  a4 72 64 69 6e 76 28 63  |..#fh1%,.rdinv(c|
00010860  6f 6e 66 69 67 25 2c 31  29 0d 6c 2a 1c d5 23 66  |onfig%,1).l*..#f|
00010870  68 31 25 2c a4 72 64 69  6e 76 28 63 6f 6e 66 69  |h1%,.rdinv(confi|
00010880  67 25 2c 32 29 0d 6c 34  1c d5 23 66 68 31 25 2c  |g%,2).l4..#fh1%,|
00010890  a4 72 64 69 6e 76 28 63  6f 6e 66 69 67 25 2c 33  |.rdinv(config%,3|
000108a0  29 0d 6c 3e 1d d5 23 66  68 31 25 2c a4 69 63 5f  |).l>..#fh1%,.ic_|
000108b0  73 74 72 28 63 6f 6e 66  69 67 25 2c 34 29 0d 6c  |str(config%,4).l|
000108c0  48 1d d5 23 66 68 31 25  2c a4 69 63 5f 73 74 72  |H..#fh1%,.ic_str|
000108d0  28 63 6f 6e 66 69 67 25  2c 37 29 0d 6c 52 1d d5  |(config%,7).lR..|
000108e0  23 66 68 31 25 2c a4 69  63 5f 73 74 72 28 63 6f  |#fh1%,.ic_str(co|
000108f0  6e 66 69 67 25 2c 38 29  0d 6c 5c 1e d5 23 66 68  |nfig%,8).l\..#fh|
00010900  31 25 2c a4 69 63 5f 73  74 72 28 63 6f 6e 66 69  |1%,.ic_str(confi|
00010910  67 25 2c 31 32 29 0d 6c  66 3c d5 23 66 68 31 25  |g%,12).lf<.#fh1%|
00010920  2c a4 72 64 69 6e 76 28  63 6f 6e 66 69 67 25 2c  |,.rdinv(config%,|
00010930  31 33 29 3a 61 75 74 6f  77 69 6e 70 6f 73 25 3d  |13):autowinpos%=|
00010940  a4 72 64 69 6e 76 28 63  6f 6e 66 69 67 25 2c 31  |.rdinv(config%,1|
00010950  33 29 0d 6c 70 1d d5 23  66 68 31 25 2c a4 72 64  |3).lp..#fh1%,.rd|
00010960  69 6e 76 28 63 6f 6e 66  69 67 25 2c 31 34 29 0d  |inv(config%,14).|
00010970  6c 7a 0d f2 63 66 28 66  68 31 25 29 0d 6c 84 1b  |lz..cf(fh1%).l..|
00010980  e7 a4 72 64 69 6e 76 28  63 6f 6e 66 69 67 25 2c  |..rdinv(config%,|
00010990  31 34 29 3d 30 20 8c 0d  6c 8e 32 20 20 66 68 31  |14)=0 ..l.2  fh1|
000109a0  25 3d a4 6f 70 65 6e 6f  75 74 28 73 64 72 65 73  |%=.openout(sdres|
000109b0  24 2b 22 2e 21 77 69 6e  64 6f 77 73 22 29 3a e7  |$+".!windows"):.|
000109c0  66 68 31 25 3d 30 20 8c  e1 0d 6c 98 2d 20 20 21  |fh1%=0 ...l.-  !|
000109d0  71 25 3d 73 74 61 74 75  73 25 3a c8 99 22 57 69  |q%=status%:.."Wi|
000109e0  6d 70 5f 47 65 74 57 69  6e 64 6f 77 53 74 61 74  |mp_GetWindowStat|
000109f0  65 22 2c 2c 71 25 0d 6c  a2 14 20 20 d5 23 66 68  |e",,q%.l..  .#fh|
00010a00  31 25 2c c3 28 71 25 21  34 29 0d 6c ac 14 20 20  |1%,.(q%!4).l..  |
00010a10  d5 23 66 68 31 25 2c c3  28 71 25 21 38 29 0d 6c  |.#fh1%,.(q%!8).l|
00010a20  b6 0f 20 20 f2 63 66 28  66 68 31 25 29 0d 6c c0  |..  .cf(fh1%).l.|
00010a30  05 cd 0d 6c ca 05 e1 0d  6c d4 04 0d 6c de 0f dd  |...l....l...l...|
00010a40  a4 6c 6f 6d 65 6d 28 41  25 29 0d 6c e8 17 e7 93  |.lomem(A%).l....|
00010a50  2d e0 3c 28 41 25 2b 26  32 30 30 30 29 20 8c 3d  |-.<(A%+&2000) .=|
00010a60  b9 0d 6c f2 06 3d a3 0d  6c fc 04 0d 6d 06 12 dd  |..l..=..l...m...|
00010a70  a4 6e 65 77 73 72 61 74  65 28 41 24 29 0d 6d 10  |.newsrate(A$).m.|
00010a80  17 ea 66 24 2c 74 69 6d  2c 63 70 73 25 3a 63 70  |..f$,tim,cps%:cp|
00010a90  73 25 3d 30 0d 6d 1a 19  66 24 3d a4 70 61 72 61  |s%=0.m..f$=.para|
00010aa0  6d 28 41 24 29 3a e7 66  24 3e 22 22 8c 0d 6d 24  |m(A$):.f$>""..m$|
00010ab0  6e 20 20 74 69 6d 3d a4  66 69 6c 65 5f 61 67 65  |n  tim=.file_age|
00010ac0  28 22 3c 4d 61 69 6c 24  44 69 72 3e 2e 66 6f 6c  |("<Mail$Dir>.fol|
00010ad0  64 65 72 2e 22 2b 66 24  2b 22 4e 65 77 73 22 29  |der."+f$+"News")|
00010ae0  2d a4 66 69 6c 65 5f 61  67 65 28 22 3c 4d 61 69  |-.file_age("<Mai|
00010af0  6c 24 44 69 72 3e 2e 66  6f 6c 64 65 72 2e 22 2b  |l$Dir>.folder."+|
00010b00  66 24 2b 22 4e 47 22 29  3a f2 6c 6f 67 28 22 54  |f$+"NG"):.log("T|
00010b10  69 6d 65 20 22 2b c3 74  69 6d 29 0d 6d 2e 44 20  |ime "+.tim).m.D |
00010b20  20 e7 74 69 6d 3e 30 8c  63 70 73 25 3d 31 30 30  | .tim>0.cps%=100|
00010b30  2a a4 66 69 6c 65 5f 73  69 7a 65 28 22 3c 4d 61  |*.file_size("<Ma|
00010b40  69 6c 24 44 69 72 3e 2e  66 6f 6c 64 65 72 2e 22  |il$Dir>.folder."|
00010b50  2b 66 24 2b 22 4e 65 77  73 22 29 2f 74 69 6d 0d  |+f$+"News")/tim.|
00010b60  6d 38 05 cd 0d 6d 42 09  3d 63 70 73 25 0d 6d 4c  |m8...mB.=cps%.mL|
00010b70  04 0d 6d 56 12 dd a4 66  69 6c 65 5f 61 67 65 28  |..mV...file_age(|
00010b80  66 24 29 0d 6d 60 17 ea  66 6f 75 6e 64 25 2c 6c  |f$).m`..found%,l|
00010b90  6f 61 64 25 2c 65 78 65  63 25 0d 6d 6a 2d c8 99  |oad%,exec%.mj-..|
00010ba0  22 58 4f 53 5f 46 69 6c  65 22 2c 31 37 2c 66 24  |"XOS_File",17,f$|
00010bb0  b8 66 6f 75 6e 64 25 2c  2c 6c 6f 61 64 25 2c 65  |.found%,,load%,e|
00010bc0  78 65 63 25 3b 46 25 0d  6d 74 36 e7 66 6f 75 6e  |xec%;F%.mt6.foun|
00010bd0  64 25 3d 30 20 84 28 46  25 80 31 29 3c 3e 30 20  |d%=0 .(F%.1)<>0 |
00010be0  8c f2 6c 6f 67 28 a4 6d  73 67 31 28 22 45 6e 6f  |..log(.msg1("Eno|
00010bf0  66 69 6c 65 22 2c 66 24  29 29 3a 3d 30 0d 6d 7e  |file",f$)):=0.m~|
00010c00  1b 3d 28 6c 6f 61 64 25  80 26 46 46 29 2a 32 5e  |.=(load%.&FF)*2^|
00010c10  33 32 2b 65 78 65 63 25  0d 6d 88 04 0d 6d 92 13  |32+exec%.m...m..|
00010c20  dd a4 66 69 6c 65 5f 73  69 7a 65 28 66 24 29 0d  |..file_size(f$).|
00010c30  6d 9c 11 ea 73 69 7a 65  25 2c 66 6f 75 6e 64 25  |m...size%,found%|
00010c40  0d 6d a6 29 c8 99 22 58  4f 53 5f 46 69 6c 65 22  |.m.).."XOS_File"|
00010c50  2c 31 37 2c 66 24 b8 66  6f 75 6e 64 25 2c 2c 2c  |,17,f$.found%,,,|
00010c60  2c 73 69 7a 65 25 3b 46  25 0d 6d b0 36 e7 66 6f  |,size%;F%.m.6.fo|
00010c70  75 6e 64 25 3d 30 20 84  28 46 25 80 31 29 3c 3e  |und%=0 .(F%.1)<>|
00010c80  30 20 8c f2 6c 6f 67 28  a4 6d 73 67 31 28 22 45  |0 ..log(.msg1("E|
00010c90  6e 6f 66 69 6c 65 22 2c  66 24 29 29 3a 3d 30 0d  |nofile",f$)):=0.|
00010ca0  6d ba 0a 3d 73 69 7a 65  25 0d 6d c4 04 0d 6d ce  |m..=size%.m...m.|
00010cb0  0e dd a4 74 72 69 6d 28  41 24 29 0d 6d d8 26 f4  |...trim(A$).m.&.|
00010cc0  20 73 74 72 69 70 73 20  6c 65 61 64 69 6e 67 20  | strips leading |
00010cd0  26 20 74 72 61 69 6c 69  6e 67 20 73 70 61 63 65  |& trailing space|
00010ce0  73 0d 6d e2 1e ea 42 24  3a e7 41 24 3e 22 22 8c  |s.m...B$:.A$>"".|
00010cf0  d6 74 72 69 6d 73 74 72  25 2c 41 24 2c 42 24 0d  |.trimstr%,A$,B$.|
00010d00  6d ec 07 3d 42 24 0d 6d  f6 04 0d 6e 00 0f dd a4  |m..=B$.m...n....|
00010d10  6c 6f 77 65 72 28 41 24  29 0d 6e 0a 17 e7 41 24  |lower(A$).n...A$|
00010d20  3e 22 22 8c d6 6d 6b 6c  63 61 73 65 25 2c 41 24  |>""..mklcase%,A$|
00010d30  0d 6e 14 07 3d 41 24 0d  6e 1e 04 0d 6e 28 0d dd  |.n..=A$.n...n(..|
00010d40  a4 73 74 72 28 61 25 29  0d 6e 32 0e ea 64 75 6d  |.str(a%).n2..dum|
00010d50  6d 79 25 2c 42 24 0d 6e  3c 1a d6 67 65 74 6c 69  |my%,B$.n<..getli|
00010d60  6e 65 25 2c 64 75 6d 6d  79 25 2c 61 25 2c 42 24  |ne%,dummy%,a%,B$|
00010d70  0d 6e 46 07 3d 42 24 0d  6e 50 04 0d 6e 5a 0e dd  |.nF.=B$.nP..nZ..|
00010d80  f2 6c 6f 61 64 63 6f 64  65 0d 6e 64 0d ea 6f 25  |.loadcode.nd..o%|
00010d90  2c 6c 25 2c 46 25 0d 6e  6e 2e c8 99 22 58 4f 53  |,l%,F%.nn..."XOS|
00010da0  5f 46 69 6c 65 22 2c 31  37 2c 73 64 72 65 73 24  |_File",17,sdres$|
00010db0  2b 22 2e 63 6f 64 65 22  b8 6f 25 2c 2c 2c 2c 6c  |+".code".o%,,,,l|
00010dc0  25 3b 46 25 0d 6e 78 18  e7 6f 25 3d 31 80 6c 25  |%;F%.nx..o%=1.l%|
00010dd0  3e 30 80 28 46 25 80 31  29 3d 30 8c 0d 6e 82 10  |>0.(F%.1)=0..n..|
00010de0  20 20 de 6d 63 6f 64 65  25 20 6c 25 0d 6e 8c 3d  |  .mcode% l%.n.=|
00010df0  20 20 63 70 79 6c 63 61  73 65 25 3d 6d 63 6f 64  |  cpylcase%=mcod|
00010e00  65 25 2b 34 3a 67 65 74  70 61 74 68 25 3d 6d 63  |e%+4:getpath%=mc|
00010e10  6f 64 65 25 2b 38 3a 67  65 74 6c 69 6e 65 25 3d  |ode%+8:getline%=|
00010e20  6d 63 6f 64 65 25 2b 31  32 0d 6e 96 3e 20 20 67  |mcode%+12.n.>  g|
00010e30  65 74 6c 69 6e 65 7a 25  3d 6d 63 6f 64 65 25 2b  |etlinez%=mcode%+|
00010e40  31 36 3a 67 65 74 73 74  72 25 3d 6d 63 6f 64 65  |16:getstr%=mcode|
00010e50  25 2b 32 30 3a 6d 6b 6c  63 61 73 65 25 3d 6d 63  |%+20:mklcase%=mc|
00010e60  6f 64 65 25 2b 32 34 0d  6e a0 41 20 20 74 72 69  |ode%+24.n.A  tri|
00010e70  6d 73 74 72 25 3d 6d 63  6f 64 65 25 2b 32 38 3a  |mstr%=mcode%+28:|
00010e80  63 68 6b 64 65 6c 61 72  74 25 3d 6d 63 6f 64 65  |chkdelart%=mcode|
00010e90  25 2b 33 32 3a 68 65 61  64 65 72 6e 6f 25 3d 6d  |%+32:headerno%=m|
00010ea0  63 6f 64 65 25 2b 33 36  0d 6e aa 17 20 20 73 6d  |code%+36.n..  sm|
00010eb0  61 74 63 68 25 3d 6d 63  6f 64 65 25 2b 34 30 0d  |atch%=mcode%+40.|
00010ec0  6e b4 31 20 20 c8 99 22  58 4f 53 5f 46 69 6c 65  |n.1  .."XOS_File|
00010ed0  22 2c 31 36 2c 73 64 72  65 73 24 2b 22 2e 63 6f  |",16,sdres$+".co|
00010ee0  64 65 22 2c 6d 63 6f 64  65 25 2c 30 b8 3b 46 25  |de",mcode%,0.;F%|
00010ef0  0d 6e be 33 20 20 e7 28  46 25 80 31 29 8c 85 30  |.n.3  .(F%.1)..0|
00010f00  2c 22 48 65 6c 70 21 20  49 20 63 61 6e 27 74 20  |,"Help! I can't |
00010f10  66 69 6e 64 20 6d 79 20  43 6f 64 65 20 66 69 6c  |find my Code fil|
00010f20  65 21 22 0d 6e c8 07 20  20 cc 0d 6e d2 2b 20 20  |e!".n..  ..n.+  |
00010f30  85 30 2c 22 48 65 6c 70  21 20 49 20 63 61 6e 27  |.0,"Help! I can'|
00010f40  74 20 66 69 6e 64 20 6d  79 20 43 6f 64 65 20 66  |t find my Code f|
00010f50  69 6c 65 21 22 0d 6e dc  05 cd 0d 6e e6 05 e1 0d  |ile!".n....n....|
00010f60  6e f0 04 0d 6e fa 1f dd  a4 63 6c 61 69 6d 6d 65  |n...n....claimme|
00010f70  6d 28 f8 20 76 61 72 25  2c 73 69 7a 65 25 2c 41  |m(. var%,size%,A|
00010f80  24 29 0d 6f 04 0c ea 46  25 2c 72 65 74 25 0d 6f  |$).o...F%,ret%.o|
00010f90  0e 11 e7 6f 73 76 65 72  25 3c 26 41 35 20 8c 0d  |...osver%<&A5 ..|
00010fa0  6f 18 28 20 20 c8 99 22  58 4f 53 5f 4d 6f 64 75  |o.(  .."XOS_Modu|
00010fb0  6c 65 22 2c 36 2c 2c 2c  73 69 7a 65 25 b8 2c 2c  |le",6,,,size%.,,|
00010fc0  76 61 72 25 3b 46 25 0d  6f 22 14 20 20 e7 28 46  |var%;F%.o".  .(F|
00010fd0  25 80 31 29 8c 76 61 72  25 3d 30 0d 6f 2c 0f 20  |%.1).var%=0.o,. |
00010fe0  20 72 65 74 25 3d 76 61  72 25 0d 6f 36 07 20 20  | ret%=var%.o6.  |
00010ff0  cc 0d 6f 40 41 20 20 c8  99 26 32 30 30 36 36 2c  |..o@A  ..&20066,|
00011000  30 2c 2d 31 2c 73 69 7a  65 25 2c 2d 31 2c 30 2c  |0,-1,size%,-1,0,|
00011010  2d 31 2c 30 2c 30 2c 54  61 73 6b 24 2b 22 5f 22  |-1,0,0,Task$+"_"|
00011020  2b 41 24 b8 2c 72 65 74  25 2c 2c 76 61 72 25 3b  |+A$.,ret%,,var%;|
00011030  46 25 0d 6f 4a 1b 20 20  e7 28 46 25 80 31 29 8c  |F%.oJ.  .(F%.1).|
00011040  76 61 72 25 3d 30 3a 72  65 74 25 3d 30 0d 6f 54  |var%=0:ret%=0.oT|
00011050  05 cd 0d 6f 5e 09 3d 72  65 74 25 0d 6f 68 04 0d  |...o^.=ret%.oh..|
00011060  6f 72 18 dd f2 72 65 6c  65 61 73 65 6d 65 6d 28  |or...releasemem(|
00011070  f8 20 76 61 72 25 29 0d  6f 7c 07 ea 46 25 0d 6f  |. var%).o|..F%.o|
00011080  86 0c e7 76 61 72 25 3e  30 8c 0d 6f 90 13 20 20  |...var%>0..o..  |
00011090  e7 6f 73 76 65 72 25 3c  26 41 35 20 8c 0d 6f 9a  |.osver%<&A5 ..o.|
000110a0  27 20 20 c8 99 22 58 4f  53 5f 4d 6f 64 75 6c 65  |'  .."XOS_Module|
000110b0  22 2c 37 2c 2c 76 61 72  25 b8 3b 46 25 3a 76 61  |",7,,var%.;F%:va|
000110c0  72 25 3d 30 0d 6f a4 31  20 20 c8 99 22 58 4f 53  |r%=0.o.1  .."XOS|
000110d0  5f 43 68 61 6e 67 65 44  79 6e 61 6d 69 63 41 72  |_ChangeDynamicAr|
000110e0  65 61 22 2c 31 2c 28 2d  31 36 2a 31 30 32 34 2a  |ea",1,(-16*1024*|
000110f0  31 30 32 34 29 0d 6f ae  07 20 20 cc 0d 6f b8 20  |1024).o..  ..o. |
00011100  20 20 c8 99 26 32 30 30  36 36 2c 31 2c 76 61 72  |  ..&20066,1,var|
00011110  25 b8 3b 46 25 3a 76 61  72 25 3d 30 0d 6f c2 07  |%.;F%:var%=0.o..|
00011120  20 20 cd 0d 6f cc 05 cd  0d 6f d6 05 e1 0d 6f e0  |  ..o....o....o.|
00011130  04 0d 6f ea 12 dd f2 74  69 64 79 64 79 6e 61 72  |..o....tidydynar|
00011140  65 61 73 0d 6f f4 0d ea  41 25 2c 4e 25 2c 50 25  |eas.o...A%,N%,P%|
00011150  0d 6f fe 11 e7 6f 73 76  65 72 25 3e 26 41 34 20  |.o...osver%>&A4 |
00011160  8c 0d 70 08 14 20 20 c8  99 26 36 36 2c 33 2c 2d  |..p..  ..&66,3,-|
00011170  31 b8 2c 41 25 0d 70 12  0e 20 20 c8 95 41 25 3c  |1.,A%.p..  ..A%<|
00011180  3e 2d 31 0d 70 1c 1d 20  20 20 20 c8 99 26 36 36  |>-1.p..    ..&66|
00011190  2c 32 2c 41 25 b8 2c 2c  2c 2c 2c 2c 2c 2c 50 25  |,2,A%.,,,,,,,,P%|
000111a0  0d 70 26 16 20 20 20 20  c8 99 26 36 36 2c 33 2c  |.p&.    ..&66,3,|
000111b0  41 25 b8 2c 4e 25 0d 70  30 31 20 20 20 20 e7 c0  |A%.,N%.p01    ..|
000111c0  a4 73 74 72 28 50 25 29  2c 31 2b a9 54 61 73 6b  |.str(P%),1+.Task|
000111d0  24 29 3d 54 61 73 6b 24  2b 22 5f 22 8c c8 99 26  |$)=Task$+"_"...&|
000111e0  36 36 2c 31 2c 41 25 0d  70 3a 0d 20 20 20 20 41  |66,1,A%.p:.    A|
000111f0  25 3d 4e 25 0d 70 44 07  20 20 ce 0d 70 4e 05 cd  |%=N%.pD.  ..pN..|
00011200  0d 70 58 05 e1 0d 70 62  04 0d 70 6c 15 dd a4 67  |.pX...pb..pl...g|
00011210  65 74 70 61 72 28 f8 20  41 24 2c 73 24 29 0d 70  |etpar(. A$,s$).p|
00011220  76 0a ea 42 24 2c 6c 25  0d 70 80 0e 6c 25 3d a7  |v..B$,l%.p..l%=.|
00011230  41 24 2c 73 24 29 0d 70  8a 0a e7 6c 25 3e 30 8c  |A$,s$).p...l%>0.|
00011240  0d 70 94 1f 20 20 42 24  3d c0 41 24 2c 6c 25 2d  |.p..  B$=.A$,l%-|
00011250  31 29 3a 41 24 3d c1 41  24 2c 6c 25 2b 31 29 0d  |1):A$=.A$,l%+1).|
00011260  70 9e 07 20 20 cc 0d 70  a8 11 20 20 42 24 3d 41  |p..  ..p..  B$=A|
00011270  24 3a 41 24 3d 22 22 0d  70 b2 05 cd 0d 70 bc 07  |$:A$="".p....p..|
00011280  3d 42 24 0d 70 c6 04 0d  70 d0 13 dd f2 73 74 61  |=B$.p...p....sta|
00011290  72 74 6d 73 67 74 72 61  6e 73 0d 70 da 3d c8 99  |rtmsgtrans.p.=..|
000112a0  22 58 4d 65 73 73 61 67  65 54 72 61 6e 73 5f 46  |"XMessageTrans_F|
000112b0  69 6c 65 49 6e 66 6f 22  2c 2c 73 64 6c 61 6e 67  |ileInfo",,sdlang|
000112c0  24 2b 22 2e 6d 65 73 73  61 67 65 73 22 b8 2c 2c  |$+".messages".,,|
000112d0  62 75 66 25 3b 46 25 0d  70 e4 2d e7 28 46 25 80  |buf%;F%.p.-.(F%.|
000112e0  31 29 8c 85 30 2c 22 43  6f 75 6c 64 6e 27 74 20  |1)..0,"Couldn't |
000112f0  6c 6f 61 64 20 4d 65 73  73 61 67 65 73 20 66 69  |load Messages fi|
00011300  6c 65 21 22 0d 70 ee 1c  de 6d 73 67 64 65 73 63  |le!".p...msgdesc|
00011310  25 31 36 2c 6d 73 67 62  75 66 25 20 62 75 66 25  |%16,msgbuf% buf%|
00011320  0d 70 f8 42 c8 99 22 4d  65 73 73 61 67 65 54 72  |.p.B.."MessageTr|
00011330  61 6e 73 5f 4f 70 65 6e  46 69 6c 65 22 2c 6d 73  |ans_OpenFile",ms|
00011340  67 64 65 73 63 25 2c 73  64 6c 61 6e 67 24 2b 22  |gdesc%,sdlang$+"|
00011350  2e 6d 65 73 73 61 67 65  73 22 2c 6d 73 67 62 75  |.messages",msgbu|
00011360  66 25 0d 71 02 05 e1 0d  71 0c 04 0d 71 16 11 dd  |f%.q....q...q...|
00011370  f2 65 6e 64 6d 73 67 74  72 61 6e 73 0d 71 20 33  |.endmsgtrans.q 3|
00011380  e7 6d 73 67 64 65 73 63  25 3e 30 8c c8 99 22 4d  |.msgdesc%>0..."M|
00011390  65 73 73 61 67 65 54 72  61 6e 73 5f 43 6c 6f 73  |essageTrans_Clos|
000113a0  65 46 69 6c 65 22 2c 6d  73 67 64 65 73 63 25 0d  |eFile",msgdesc%.|
000113b0  71 2a 05 e1 0d 71 34 04  0d 71 3e 0e dd a4 6d 73  |q*...q4..q>...ms|
000113c0  67 30 28 74 24 29 0d 71  48 07 ea 73 25 0d 71 52  |g0(t$).qH..s%.qR|
000113d0  2c c8 99 22 4d 65 73 73  61 67 65 54 72 61 6e 73  |,.."MessageTrans|
000113e0  5f 4c 6f 6f 6b 75 70 22  2c 6d 73 67 64 65 73 63  |_Lookup",msgdesc|
000113f0  25 2c 74 24 b8 2c 2c 73  25 0d 71 5c 0d 3d a4 73  |%,t$.,,s%.q\.=.s|
00011400  74 72 28 73 25 29 0d 71  66 11 dd a4 6d 73 67 31  |tr(s%).qf...msg1|
00011410  28 74 24 2c 61 24 29 0d  71 70 07 ea 73 25 0d 71  |(t$,a$).qp..s%.q|
00011420  7a 38 c8 99 22 4d 65 73  73 61 67 65 54 72 61 6e  |z8.."MessageTran|
00011430  73 5f 4c 6f 6f 6b 75 70  22 2c 6d 73 67 64 65 73  |s_Lookup",msgdes|
00011440  63 25 2c 74 24 2c 74 6d  70 25 2c 32 35 35 2c 61  |c%,t$,tmp%,255,a|
00011450  24 b8 2c 2c 73 25 0d 71  84 0d 3d a4 73 74 72 28  |$.,,s%.q..=.str(|
00011460  73 25 29 0d 71 8e 14 dd  a4 6d 73 67 32 28 74 24  |s%).q....msg2(t$|
00011470  2c 61 24 2c 62 24 29 0d  71 98 07 ea 73 25 0d 71  |,a$,b$).q...s%.q|
00011480  a2 3b c8 99 22 4d 65 73  73 61 67 65 54 72 61 6e  |.;.."MessageTran|
00011490  73 5f 4c 6f 6f 6b 75 70  22 2c 6d 73 67 64 65 73  |s_Lookup",msgdes|
000114a0  63 25 2c 74 24 2c 74 6d  70 25 2c 32 35 35 2c 61  |c%,t$,tmp%,255,a|
000114b0  24 2c 62 24 b8 2c 2c 73  25 0d 71 ac 0d 3d a4 73  |$,b$.,,s%.q..=.s|
000114c0  74 72 28 73 25 29 0d 71  b6 17 dd a4 6d 73 67 33  |tr(s%).q....msg3|
000114d0  28 74 24 2c 61 24 2c 62  24 2c 63 24 29 0d 71 c0  |(t$,a$,b$,c$).q.|
000114e0  07 ea 73 25 0d 71 ca 3e  c8 99 22 4d 65 73 73 61  |..s%.q.>.."Messa|
000114f0  67 65 54 72 61 6e 73 5f  4c 6f 6f 6b 75 70 22 2c  |geTrans_Lookup",|
00011500  6d 73 67 64 65 73 63 25  2c 74 24 2c 74 6d 70 25  |msgdesc%,t$,tmp%|
00011510  2c 32 35 35 2c 61 24 2c  62 24 2c 63 24 b8 2c 2c  |,255,a$,b$,c$.,,|
00011520  73 25 0d 71 d4 0d 3d a4  73 74 72 28 73 25 29 0d  |s%.q..=.str(s%).|
00011530  ff                                                |.|
00011531