Home » Archimedes archive » Acorn User » AU 1996-03 B.adf » Features » DiskTree/!DiskTree/!RunImage

DiskTree/!DiskTree/!RunImage

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1996-03 B.adf » Features
Filename: DiskTree/!DiskTree/!RunImage
Read OK:
File size: 9F7E bytes
Load address: 0000
Exec address: 0000
File contents
   10ON ERROR PROCmess(REPORT$+" : at line "+STR$ERL):END
   20REM *>$.!DiskTree.!RunImage
   30REM *Main Program for !DiskTree - Directory Tree Creator
   40REM *Version 1.07 (12 Aug '95)
   50REM *Authur J. Robbins
   60maxno=150
   70DIM block &1000, menu% 2048, curbuf% 7*1024, icond 2048, mblock 256
   80DIM longdata (maxno*13)+24, longmen (maxno*24)+48
   90DIM tree(maxno),lastdir(256),buffer 63,tblk 1024
  100DIM tsize(maxno),tcount(maxno),tlen(maxno),troot$(maxno),arc$(maxno)
  110endbuf%=curbuf%+&6000
  120end%=-1:toolson=TRUE:quiting=FALSE:totallen=0:found=FALSE:upto=-1:uptot=-1:oldst=-1
  130saved=FALSE:prequitwait=FALSE:prequit=FALSE:sel=-1:tt=tblk:arclisted=FALSE
  140in=FALSE:started=0:ct=-1:arcct=-1:width=-1:itemno=-1:rc=-1:s1=-1:s2=-1:ss=-1
  150task=&4B534154
  160SYS "Wimp_Initialise",200,task,"!DiskTree" TO version%,mytask%
  170SYS "Wimp_ClaimInterface",mytask%
  180reinter=&81683
  190PROCtemplate
  200SYS"XOS_ReadVarVal","DTree$Drag",block,256,0,0 TO ,,len:block?len=13:drag$=$block
  210IF drag$="TRUE" THEN dragspr=TRUE ELSE dragspr=FALSE
  220env$=""
  230SYS "OS_GetEnv" TO env$
  240IF INSTR(env$,"-quit") THEN
  250I%=INSTR(env$,"""")
  260I%=INSTR(env$,"""",I%+1)
  270REPEAT
  280I%+=1
  290UNTIL MID$(env$,I%,1)<>" "
  300env$=MID$(env$,I%)
  310ENDIF
  320initic=FNicon
  330SYS"Wimp_SlotSize",-1,-1 TO orig
  340max=HIMEM-END:max=INT(max/1024)*1024
  350max-=&4000
  360end%=FALSE:drag%=0:drive%=0
  370SYS"Wimp_SlotSize",-1,-1 TO current
  380HIMEM=HIMEM-max:hsizeb=max:heap%=HIMEM
  390IF hsizeb<1024 THEN END
  400SYS"OS_Heap",0,heap%,,hsizeb
  410origheap=hsizeb:origappsize=current
  420ON ERROR PROCerror(REPORT$+" : at line "+STR$ERL)
  430PROCinfo(bar%,0,"None")
  440PROCadjustwin(500,-500)
  450PROCseticstate(save%,4,1<<22,1<<22)
  460PROCseticstate(find%,4,1<<22,1<<22)
  470IF env$<>"" PROCload(env$)
  480REPEAT
  490SYS"Wimp_Poll",0,block TO eventcode
  500SYS "Wimp_PollPointer",eventcode,,version%
  510CASE eventcode OF
  520WHEN 0:IF NOT saved AND prequit SYS"Wimp_ProcessKey",&1FC
  530WHEN 1:PROCredraw(block!0)
  540WHEN 2:PROCrequest2
  550WHEN 3:PROCrequest3
  560WHEN 6:PROCclick(block)
  570WHEN 7:PROCout
  580WHEN 8:PROCprocess
  590WHEN 9:PROCselect
  600WHEN 10:PROCscroll
  610WHEN 17,18:PROCmessagein
  620ENDCASE
  630UNTIL end%
  640PROCend
  650END
  660DEFPROCend
  670SYSreinter,mytask%
  680SYS"Wimp_CloseDown",task,mytask%
  690END
  700ENDPROC
  710DEFPROCrequest2
  720win=!block
  730IF win=main% THEN
  740!icond=toolbox%
  750SYS "Wimp_GetWindowState",,icond
  760tool28=icond!28
  770!icond=main%
  780SYS "Wimp_GetWindowState",,icond
  790check=0
  800IF icond!4<>block!4 THEN check=1
  810IF icond!8<>block!8 THEN check=1
  820IF icond!12<>block!12 THEN check=1
  830IF icond!16<>block!16 THEN check=1
  840IF icond!20<>block!20 THEN check=1
  850IF icond!24<>block!24 THEN check=1
  860IF block!28=-2 THEN check=1
  870IF tool28<>-1 THEN check=1
  880IF check=1 THEN SYS "Wimp_OpenWindow",,block:PROCpane
  890ELSE
  900SYS "Wimp_OpenWindow",,block
  910ENDIF
  920ENDPROC
  930DEFPROCrequest3
  940CASE !block OF
  950WHEN main%:
  960SYS "Wimp_CloseWindow",,block
  970!block=toolbox%:SYS "Wimp_CloseWindow",,block:!block=bar%:SYS"Wimp_CloseWindow",,block
  980!block=tinfo%:SYS "Wimp_CloseWindow",,block:!block=iinfo%:SYS "Wimp_CloseWindow",,block
  990!block=found%:SYS "Wimp_CloseWindow",,block:!block=find%:SYS "Wimp_CloseWindow",,block
 1000!block=notfnd%:SYS "Wimp_CloseWindow",,block
 1010WHEN saved%:IFprequit THEN prequit=FALSE
 1020WHEN toolbox%:toolson=FALSE:SYS "Wimp_CloseWindow",,block
 1030OTHERWISE :SYS "Wimp_CloseWindow",,block
 1040ENDCASE
 1050ENDPROC
 1060DEFFNicon
 1070!icond=-1
 1080icond!4=0
 1090icond!8=0:icond!12=68:icond!16=68
 1100icond!20=%11010+((2^12)*3):icond?23=112
 1110$(icond+24)="!DiskTree"+CHR$13
 1120SYS "Wimp_CreateIcon",,icond TO icon
 1130=icon
 1140DEFFNinf(handle,icon)
 1150PROCgee(handle,icon)
 1160=icond!28
 1170 DEFFNbit(a$)
 1180WHILE INSTR(a$,":")>0
 1190a$=MID$(a$,INSTR(a$,":")+1)
 1200ENDWHILE
 1210WHILE INSTR(a$,".")>0
 1220a$=MID$(a$,INSTR(a$,".")+1)
 1230ENDWHILE
 1240=a$
 1250DEFFNwool(wool%)
 1260LOCAL cot$
 1270 WHILE ?wool%>=32
 1280cot$+=CHR$(?wool%)
 1290wool%+=1
 1300ENDWHILE
 1310=cot$
 1320DEFFNgetleaf(leaf$)
 1330WHILE INSTR(leaf$,".")
 1340leaf$=MID$(leaf$,INSTR(leaf$,".")+1)
 1350ENDWHILE:=leaf$
 1360DEFFNgetdiskname(path$)
 1370REPEAT
 1380path$=RIGHT$(path$,LEN(path$)-1)
 1390UNTIL LEFT$(path$,1)=":"
 1400=RIGHT$(path$,LEN(path$)-1)
 1410DEFFNcheckit(hnd%,ic%)
 1420!icond=hnd%:icond!4=ic%
 1430SYS"Wimp_GetIconState",,icond
 1440flags%=icond!24
 1450=flags%AND&F0000
 1460DEFFNask(fn$)
 1470!icond=0:$(icond+4)=fn$+CHR$0
 1480SYS"Wimp_ReportError",icond,&13,"!DiskTree" TO ,but
 1490=but
 1500DEFFNfulls(string$,len)
 1510IF LEN(string$)<len THEN
 1520REPEAT
 1530string$=string$+CHR$0
 1540UNTIL LEN(string$)=len
 1550ENDIF
 1560=string$
 1570DEFFNlongs(string$,len)
 1580IF LEN(string$)<len THEN
 1590REPEAT
 1600string$="0"+string$
 1610UNTIL LEN(string$)=len
 1620ENDIF
 1630=string$
 1640DEFFNcheckflag(handle,icon,flag)
 1650bit=FALSE
 1660!icond=handle:icond!4=icon
 1670SYS"Wimp_GetIconState",,icond
 1680IF (icond!24AND(1<<flag))>0 bit=TRUE
 1690=bit
 1700DEFFNcaps(up$)
 1710FOR L=1 TO LEN(up$)
 1720MID$(up$,L,1)=CHR$(ASC(MID$(up$,L,1)) AND &DF)
 1730NEXT
 1740=up$
 1750DEFPROCtemplate
 1760SYS"Wimp_OpenTemplate",,"<DTree$Dir>.Templates"
 1770indir=curbuf%
 1780info%=FNtemplate("ProgInfo")
 1790save%=FNtemplate("save")
 1800saved%=FNtemplate("savetext")
 1810main%=FNtemplate("tree")
 1820toolbox%=FNtemplate("tools")
 1830query%=FNtemplate("query")
 1840quit%=FNtemplate("quitbox")
 1850bar%=FNtemplate("bar")
 1860new%=FNtemplate("new")
 1870find%=FNtemplate("Find")
 1880found%=FNtemplate("found")
 1890notfnd%=FNtemplate("notfnd")
 1900iinfo%=FNtemplate("info")
 1910finfo%=FNtemplate("finfo")
 1920tinfo%=FNtemplate("tinfo")
 1930SYS "Wimp_CloseTemplate"
 1940stex=FNinfo(save%,1)
 1950stexd=FNinfo(saved%,1)
 1960ENDPROC
 1970DEFFNtemplate(a$)
 1980SYS"Wimp_LoadTemplate",,block,indir,endbuf%,-1,a$,0 TO ,,indir,,,,c%
 1990IF c%=0 THEN PROCmess("Template "+a$+" not found."):END
 2000block!64=1
 2010SYS"Wimp_CreateWindow",,block TO handle
 2020=handle
 2030DEFFNinfo(handle,icon)
 2040PROCgee(handle,icon)
 2050=icond!28
 2060DEFPROCinfo(handle,icon,text$)
 2070!block=handle:block!4=icon:SYS"Wimp_GetIconState",,block
 2080$(block!28)=text$:block!36=LEN(text$)+1
 2090block!8=0:block!12=0
 2100SYS"Wimp_SetIconState",,block
 2110ENDPROC
 2120DEFPROCgee(handle,icon)
 2130!icond=handle:icond!4=icon
 2140SYS"Wimp_GetIconState",,icond
 2150ENDPROC
 2160DEFPROCseticstate(handle%,ic%,clear,eor):REM as in PRM (CE)
 2170!block=handle%:block!4=ic%:block!8=eor:block!12=clear
 2180SYS"Wimp_SetIconState",,block
 2190ENDPROC
 2200DEFPROCcmenus
 2210tmopt=-1
 2220menuopen=-44
 2230menuptr=menu%
 2240MOUSE x,y,b
 2250trees%=FNmenu("Trees",174,"No Trees")
 2260IF ct>-1 THEN PROCtreemens
 2270IF toolson THEN toolon$="{�}Tools":ELSE toolon$="Tools"
 2280SaveMenu%=FNmenu("Save",5*16,"{b|save%}Text,{b|saved%}Data")
 2290misc%=FNmenu("Misc",5*16,"{b|info%}Info,{b|finfo%}File")
 2300iconmenu%=FNmenu("!DiskTree",9*16,"{b|misc%}Misc,Tree,New Tree,{b|SaveMenu%}Save,Quit")
 2310mainmenu%=FNmenu("!DiskTree",10*16,"{b|misc%}Misc,{b|trees%}Trees,{b|tinfo%}Tree Info,{b|find%}Find,"+toolon$+",New Tree,{b|SaveMenu%}Save,Quit")
 2320rmen=block!12:ricon=block!16
 2330IF block!12=-2 THEN openmenu%=iconmenu%:a=x-75:b=(5+2)*48:REM No. of items+2*48
 2340IF block!12=main% THEN a=x:b=y:openmenu%=mainmenu%
 2350IF block!12=toolbox% AND block!16=0 THEN tmopt=0:openmenu%=trees%:a=x:b=y
 2360IF block!12=toolbox% AND block!16=1 THEN tmopt=1:openmenu%=trees%:a=x:b=y
 2370IF block!12=toolbox% AND block!16=2 THEN tmopt=2:openmenu%=trees%:a=x:b=y
 2380PROCseticstate(save%,3,1<<21,0<<21):PROCseticstate(save%,4,1<<21,0<<21)
 2390PROCseticstate(saved%,3,1<<21,0<<21)
 2400PROCinfo(save%,1,"TextFile")
 2410ENDIF
 2420PROCopenmenu(a,b)
 2430ENDPROC
 2440DEFPROCtreemens
 2450IF block!12<>toolbox% THEN ENDPROC
 2460CASE block!16 OF
 2470WHEN 0,2:
 2480 j=0
 2490 IF block!16=2 THEN $(longdata+(j*13))="�Clear All": j+=1
 2500 FOR m=0 TO ct
 2510 tick$=""
 2520 IF m=st THEN tick$="�"
 2530 nextit$=FNgetleaf(troot$(m))
 2540 IF nextit$="$" THEN nextit$=FNgetdiskname(LEFT$(troot$(m),LEN(troot$(m))-2))
 2550 $(longdata+(j*13))=tick$+nextit$
 2560 j+=1
 2570 NEXT m
 2580 trees%=FNlongmenu("Trees",11*16,j-1,longdata)
 2590WHEN 1:
 2600 IF NOT arclisted THEN PROCmakearclist:arclisted=TRUE
 2610 IF arcct=-1 THEN
 2620  treemen$="No Archives"
 2630  trees%=FNmenu("Trees",11*16,treemen$)
 2640 ELSE
 2650  FOR m=0 TO arcct
 2660  arcy$=arc$(m)
 2670  name$=LEFT$(arcy$,INSTR(arcy$,",")-1)
 2680  $(longdata+(m*13))=name$
 2690  NEXT
 2700  trees%=FNlongmenu("Trees",11*16,arcct,longdata)
 2710 ENDIF
 2720ENDCASE
 2730ENDPROC
 2740DEFPROCopenmenu(x,y)
 2750SYS"Wimp_CreateMenu",,openmenu%,x,y
 2760ENDPROC
 2770DEFFNmenu(tit$,wid,menu$)
 2780menu$+=","
 2790oldmenu=menuptr
 2800$menuptr=tit$
 2810menuptr?12=7
 2820menuptr?13=2
 2830menuptr?14=7
 2840menuptr?15=0
 2850menuptr!16=wid
 2860menuptr!20=48
 2870menuptr!24=0
 2880menuptr+=28
 2890REPEAT
 2900PROCthing(menu$)
 2910menu$=MID$(menu$,INSTR(menu$,",")+1)
 2920menuptr+=24
 2930UNTIL menu$=""
 2940menuptr!-24=(menuptr!-24) OR %10000000
 2950=oldmenu
 2960DEFFNlongmenu(tit$,wid,number,longdata)
 2970$longmen=tit$
 2980longmen?12=7
 2990longmen?13=2
 3000longmen?14=7
 3010longmen?15=0
 3020longmen!16=wid
 3030longmen!20=48
 3040longmen!24=0
 3050FOR i=0 TO number
 3060ptr=(24*i)+28
 3070longmen!(ptr)=0
 3080longmen!(ptr+4)=-1
 3090longmen!(ptr+8)=&07000001
 3100data$=$(longdata+(i*13))
 3110IF LEFT$(data$,1)="�" THEN longmen!(ptr)=longmen!(ptr) OR %10:data$=RIGHT$(data$,LEN(data$)-1)
 3120IF LEFT$(data$,1)="�" THEN longmen!(ptr)=longmen!(ptr) OR %1:data$=RIGHT$(data$,LEN(data$)-1)
 3130$(longmen+(ptr+12))=data$
 3140NEXT
 3150longmen!(ptr)=longmen!(ptr) OR %10000000
 3160=longmen
 3170DEFPROCthing(m$)
 3180m$=LEFT$(m$,INSTR(m$,",")-1)
 3190i$="":j$=""
 3200IF INSTR(m$,"{")>0 THEN
 3210i$=LEFT$(m$,INSTR(m$,"}")-1)
 3220m$=MID$(m$,INSTR(m$,"}")+1)
 3230j$=LEFT$(i$,INSTR(i$,"|")-1)
 3240i$=MID$(i$,INSTR(i$,"|")+1)
 3250ENDIF
 3260ijack=&07000021
 3270mjack=0
 3280submenu=-1
 3290IF INSTR(j$,"b")>0 THEN submenu=EVAL(i$)
 3300IF INSTR(j$,"_")>0 THEN mjack=mjack OR 2
 3310IF INSTR(j$,"�")>0 THEN mjack=mjack OR 1
 3320IF INSTR(j$,"u")>0 THEN mjack=mjack OR 2:submenu=EVAL(i$)
 3330!menuptr=mjack
 3340menuptr!4=submenu
 3350menuptr!8=ijack
 3360$(menuptr+12)=m$
 3370ENDIF
 3380ENDPROC
 3390DEFPROCclick(block)
 3400keepb%=block!12
 3410IF FNcheckit(block!12,block!16)=983040 THEN
 3420PROCslabin(keepb%):PROCslabout(keepb%)
 3430ENDIF
 3440IF quiting THEN quitin=FALSE:PROCclose(quit%)
 3450IF block!12=-2 AND block!8=2 PROCcmenus:ENDPROC
 3460IF block!12=-2 AND block!8=4 PROCopenwin(main%):PROCpane
 3470IF block!12=-2 AND block!8=1 PROCopenwin(new%):PROCinfo(new%,1,"")
 3480IF block!12=main% AND block!8=2 PROCcmenus:ENDPROC
 3490IF block!12=save% AND block!16=2 winsave%=block!12:filetype$="file_FFF":PROCdefsave
 3500IF block!12=saved% AND block!16=2 winsave%=block!12:filetype$="file_00D":PROCdefsave
 3510IF block!12=save% AND block!16=0 winsave%=block!12:PROCsave($FNinfo(winsave%,1))
 3520IF block!12=saved% AND block!16=0 winsave%=block!12:PROCsave($FNinfo(winsave%,1))
 3530IF block!12=save% AND block!16=3 THEN PROCradiosave
 3540IF block!12=save% AND block!16=4 THEN PROCradiosave
 3550IF block!12=new% AND block!16=2 winsave%=block!12:filetype$="new":PROCdefsave
 3560IF block!12=new% AND block!16=4 THEN PROCgo
 3570IF block!12=new% AND block!16=5 THEN PROCdrive0
 3580IF block!12=main% AND block!8=4 THEN PROCselectitem
 3590IF block!12=main% AND block!8=1 THEN PROCselection
 3600IF block!12=found% AND block!16=7 THEN found=FALSE:PROCclose(found%)
 3610IF block!12=found% AND block!16=6 THEN PROCfind
 3620IF block!12=notfnd% AND block!16=3 THEN PROCclose(notfnd%)
 3630IF block!12=toolbox% AND block!16=0 THEN PROCcmenus
 3640IF block!12=toolbox% AND block!16=1 THEN PROCcmenus
 3650IF block!12=toolbox% AND block!16=2 THEN PROCcmenus
 3660IF block!12=toolbox% AND block!16=3 AND itemno<>-1 THEN PROCopenwin(iinfo%)
 3670IF block!12=toolbox% AND block!16=4 THEN PROCopenwin(new%):PROCinfo(new%,1,"")
 3680IF block!12=toolbox% AND block!16=5 THEN PROClast
 3690IF block!12=toolbox% AND block!16=6 THEN PROCnext
 3700IF block!12=toolbox% AND block!16=7 THEN PROCopenwin(find%)
 3710IF block!12=find% AND block!16=16 THEN PROCclose(find%)
 3720IF block!12=find% AND block!16=15 THEN PROCfind
 3730IF block!12=bar% AND block!16=0 THEN PROCopenwin(tinfo%)
 3740IF block!12=query% AND block!16=0 THEN PROCclose(query%):PROCendq
 3750IF prequit THEN
 3760IF block!12=quit% AND block!16=0 THEN END:SYS"Wimp_ProcessKey",&1FC:SYSreinter,mytask%:SYS"Wimp_CloseDown",task,mytask%:END:
 3770IF block!12=quit% AND block!16=2 THEN PROCclose(quit%):prequit=FALSE
 3780IF block!12=quit% AND block!16=3 THEN PROCclose(quit%):PROCopenwin(saved%):prequitwait=TRUE
 3790IF prequit AND NOT prequitwait prequit=FALSE
 3800ELSE
 3810IF block!12=quit% AND block!16=0 THEN SYSreinter,mytask%:SYS"Wimp_CloseDown",task,mytask%:END
 3820IF block!12=quit% AND block!16=2 THEN PROCclose(quit%)
 3830IF block!12=quit% AND block!16=3 THEN PROCclose(quit%):PROCopenwin(saved%):quiting=TRUE
 3840ENDIF
 3850ENDPROC
 3860DEFPROCprocess
 3870IF !block=save% AND block!24=13 THEN winsave%=!block:PROCsave($FNinfo(winsave%,1))
 3880IF !block=saved% AND block!24=13 THEN winsave%=!block:PROCsave($FNinfo(winsave%,1))
 3890SYS"Wimp_ProcessKey",block!24
 3900ENDPROC
 3910DEFPROCselect
 3920noway=0
 3930SYS"Wimp_DecodeMenu",,openmenu%,block,icond
 3940CASE openmenu% OF
 3950WHEN mainmenu%,iconmenu%:
 3960IF $icond="Quit" THEN PROCareyousure:quiting%=TRUE
 3970IF $icond="Tools" AND toolson THEN toolson=FALSE:PROCtoolbox(-1):noway=-1
 3980IF $icond="Tools" AND NOT toolson AND noway=0 THEN toolson=TRUE:PROCtoolbox(1)
 3990IF $icond="Tree" THEN PROCopenwin(main%):PROCpane
 4000IF $icond="New Tree" THEN PROCopenwin(new%):PROCinfo(new%,1,"")
 4010IF $icond="Trees.No Tree" THEN SYS"Wimp_CreateMenu",,-1:ENDPROC
 4020IF LEFT$($icond,5)="Trees" THEN PROCopentree(block!4)
 4030WHEN trees%
 4040IF $icond="Clear All" THEN PROCclearall:SYS"Wimp_CreateMenu",,-1:ENDPROC
 4050IF $icond="No Trees" THEN SYS"Wimp_CreateMenu",,-1:ENDPROC
 4060IF tmopt=0 THEN PROCopentree(!block)
 4070IF tmopt=1 THEN PROCopenarc(!block)
 4080IF tmopt=2 THEN PROCdelete((!block)-1)
 4090ENDCASE
 4100SYS"Wimp_GetPointerInfo",,block
 4110IF block!8=1 THEN
 4120IF menuopen=-44 THEN rc=1:block!16=ricon:block!12=rmen:PROCcmenus
 4130SYS"Wimp_CreateMenu",,openmenu%
 4140ELSE
 4150SYS"Wimp_CreateMenu",,-1
 4160ENDIF
 4170ENDPROC
 4180DEFPROCradiosave
 4190done=0
 4200IF block!16=3 THEN
 4210PROCseticstate(save%,4,1<<21,0<<21)
 4220PROCinfo(save%,1,"TextFile")
 4230ENDIF
 4240IF block!16=4 THEN
 4250PROCseticstate(save%,3,1<<21,0<<21)
 4260PROCinfo(save%,1,"Selection")
 4270ENDIF
 4280ENDPROC
 4290DEFPROCmess(mess$)
 4300!icond=0:$(icond+4)=mess$+CHR$0
 4310SYS"Wimp_ReportError",icond,1,"!DiskTree"
 4320ENDPROC
 4330DEFPROCout
 4340PROCdragspr(1)
 4350IF winsave%=new% THEN stext=stex:ft=&FFF
 4360IF winsave%=save% THEN stext=stex:ft=&FFF
 4370IF winsave%=saved% THEN stext=stexd:ft=&00D
 4380IF drive%=1 THEN
 4390SYS "Wimp_GetPointerInfo",,block
 4400ToX=block!0:ToY=block!4:Window=block!12:Icon=block!16
 4410mblock!0=256:mblock!12=0:mblock!16=1:REM DataSave
 4420mblock!20=Window:mblock!24=Icon:mblock!28=ToX:mblock!32=ToY
 4430mblock!36=-1:REM No idea what the size is going to be
 4440mblock!40=ft:
 4450$stext=$FNinfo(winsave%,1)
 4460$stext=FNgetleaf($stext)
 4470FOR I=0 TO 255:IF I?stext<32 THEN I?stext=13
 4480NEXT
 4490$(mblock+44)=FNbit($stext)+CHR$0
 4500IF winsave%=new% THEN $(mblock+44)="Directory"
 4510SYS "Wimp_SendMessage",17,mblock,Window,Icon:REM DataSave
 4520drag%=0
 4530ENDIF
 4540ENDPROC
 4550DEFPROCdefsave
 4560PROCMode
 4570!block=winsave%
 4580SYS "Wimp_GetWindowState",,block
 4590ysize%=block!16-block!8
 4600x%=block!4:y%=block!8:block!4=2
 4610SYS"Wimp_GetIconState",,block
 4620block!8+=x%:block!12+=y%+ysize%
 4630block!16+=x%:block!20+=y%+ysize%
 4640block!24=0:block!28=0:block!32=xmax:block!36=ymax
 4650!block=0:block!4=5:drag%=TRUE:drive%=1
 4660IF dragspr THEN
 4670SYS "DragASprite_Start",%10000101,1,filetype$,block+8
 4680PROCdragspr(-1)
 4690ELSE
 4700SYS"Wimp_DragBox",,block
 4710ENDIF
 4720ENDPROC
 4730DEFPROCMode
 4740!block=130:block!4=131:block!8=-1:SYS"OS_ReadVduVariables",block,block+128
 4750SYS"OS_ReadModeVariable",MODE,4 TO ,,Xeig%
 4760SYS"OS_ReadModeVariable",MODE,5 TO ,,Yeig%
 4770xmax=((block!128)+1)*2^Xeig%:ymax=((block!132)+1)*2^Yeig%
 4780ENDPROC
 4790DEFPROCsave(save$)
 4800IF ct=-1 THEN PROCmess("No directory tree data to save!"):ENDPROC
 4810IF INSTR(save$,".")<1 AND INSTR(save$,":")<1 AND save$<>"<Wimp$Scrap>" THEN PROCmess("To save, drag the file icon to a directory viewer."):ENDPROC
 4820LOCAL ERROR
 4830ON ERROR LOCAL IF ERR=71622:PROCquery("Disc Full"):SYS&0D,0,fh%:SYS&406C1:RESTORE ERROR:ENDPROC:ELSE RESTORE ERROR:PROCerror(REPORT$+" : at line "+STR$ERL):SYS&0D,0,fh%:SYS&406C1:ENDPROC
 4840IF winsave%=saved% THEN
 4850SYS"Hourglass_On"
 4860byte=0
 4870SYS"OS_Find",&80,save$ TO fh%
 4880endt=tblk
 4890$endt="DiskTree Data File v�"
 4900endt+=LEN("DiskTree Data File v�")
 4910SYS"OS_GBPB",2,fh%,tblk,endt-tblk
 4920IF FNcheckflag(saved%,3,21) THEN stt=st:ett=st:ELSE stt=0:ett=ct
 4930endt=tblk
 4940CT$=FNfulls(STR$(ett-stt),3)
 4950$endt=CT$
 4960endt+=3
 4970SYS"OS_GBPB",2,fh%,tblk,endt-tblk
 4980total1%=0:total2%=0
 4990FOR k=stt TO ett:total1%+=tcount(k):NEXT k
 5000FOR k=stt TO ett
 5010total2%+=1
 5020SYS"Hourglass_Percentage",total2%/total1%*100
 5030ts$=FNfulls(STR$(tsize(k)),7)
 5040tl$=FNfulls(STR$(tlen(k)),7)
 5050tc$=FNfulls(STR$(tcount(k)),7)
 5060rootl$=FNfulls(STR$(LEN(troot$(k))),3)
 5070endt=tblk
 5080$endt=ts$+tl$+tc$+rootl$
 5090endt+=24
 5100SYS"OS_GBPB",2,fh%,tblk,24
 5110endt=tblk
 5120$endt=troot$(k)
 5130endt+=LEN(troot$(k))
 5140SYS"OS_GBPB",2,fh%,tblk,LEN(troot$(k))
 5150SYS"OS_GBPB",2,fh%,tree(k),tsize(k)
 5160NEXT k
 5170SYS&0D,0,fh%
 5180SYS"OS_File",18,save$,&00D
 5190IF save$<>"<Wimp$Scrap>" AND NOT FNcheckflag(saved%,3,21) THEN
 5200!block=main%
 5210SYS"Wimp_GetWindowInfo",,block
 5220saved=FALSE
 5230$(block!76)=save$:SYS"Wimp_ForceRedraw",-1,block!4,(block!16)-32,block!12,block!16+36
 5240PROCinfo(saved%,1,save$)
 5250PROCinfo(finfo%,3,"No")
 5260ENDIF
 5270SYS"Hourglass_Smash"
 5280IF quiting SYSreinter,mytask%:SYS"Wimp_CloseDown",task,mytask%:END
 5290ENDIF
 5300IF winsave%=save% THEN
 5310SYS"Hourglass_On"
 5320SYS"OS_Find",&80,save$ TO fh%
 5330IF FNcheckflag(save%,3,21) THEN stt=st:ett=st:ELSE stt=0:ett=ct
 5340total1%=0:total2%=0
 5350FOR I=stt TO ett:total1%+=tcount(I):NEXT I
 5360FOR I=stt TO ett
 5370total2%+=1
 5380SYS"Hourglass_Percentage",total2%/total1%*100
 5390endt=tblk
 5400$endt="            "+troot$(I)+CHR$10+CHR$10
 5410endt+=LEN("            "+troot$(I))+2
 5420SYS"OS_GBPB",2,fh%,tblk,endt-tblk
 5430IF FNcheckflag(save%,4,21) AND s1>-1 THEN stt=tt:ett=tt:stptr=s1:endptr=s2:ELSE stptr=0:endptr=tcount(I)-1
 5440 FOR J=stptr TO endptr
 5450 n=J*24
 5460 t$=""
 5470  FOR h=0 TO 2
 5480  i=n+h
 5490  t$+=CHR$(tree(I)?i)
 5500  NEXT h
 5510 endt=tblk
 5520  FOR h=1 TO VAL(t$)
 5530  $endt=" "
 5540  endt+=1
 5550  NEXT h
 5560 t$=""
 5570  FOR h=3 TO 12
 5580  i=n+h
 5590  IF tree(I)?i<>0 THEN t$+=CHR$(tree(I)?i)
 5600  NEXT h
 5610 $endt=t$+CHR$10
 5620 endt+=LEN(t$)+1
 5630 SYS"OS_GBPB",2,fh%,tblk,endt-tblk
 5640 NEXT J
 5650endt=tblk
 5660$endt=CHR$10+CHR$10
 5670endt+=2
 5680SYS"OS_GBPB",2,fh%,tblk,endt-tblk
 5690NEXT I
 5700SYS&0D,0,fh%
 5710SYS"OS_File",18,save$,&FFF
 5720CASE save$ OF
 5730WHEN "<Wimp$Scrap>"
 5740OTHERWISE
 5750!block=main%
 5760SYS"Wimp_GetWindowInfo",,block
 5770saved=FALSE
 5780$(block!76)=save$:SYS"Wimp_ForceRedraw",-1,block!4,(block!16)-32,block!12,block!16+36
 5790PROCinfo(finfo%,3,"No")
 5800ENDCASE
 5810SYS"Hourglass_Smash"
 5820IF quiting SYSreinter,mytask%:SYS"Wimp_CloseDown",task,mytask%:END
 5830ENDIF
 5840RESTORE ERROR
 5850ENDPROC
 5860DEFFNgetbs(fh%,len)
 5870string$=""
 5880FOR I=1 TO len
 5890SYS"OS_BGet",,fh% TO byte
 5900string$+=CHR$(byte)
 5910NEXT
 5920=string$
 5930DEFPROCmessagein
 5940sendm=&400E7
 5950ref=block!8:task=block!4
 5960CASE block!16 OF
 5970WHEN 0:PROCend
 5980WHEN 2:
 5990save$=FNwool(block+44)
 6000PROCdragspr(1)
 6010IF winsave%=new% THEN PROCdragnew(save$)
 6020IF drive%=1 AND winsave%<>new% THEN
 6030PROCsave(save$)
 6040mblock!0=256
 6050mblock!12=ref
 6060mblock!16=3
 6070mblock!36=-1
 6080$(mblock+44)=save$
 6090SYS &400E7,18,mblock,task:REM DataLoad
 6100ENDIF
 6110WHEN 3:
 6120IF block!40=&00d THEN
 6130load$=FNwool(block+44):PROCload(load$)
 6140ENDPROC
 6150ENDIF
 6160IF block!40<>&00D THEN
 6170load$=FNwool(block+44):PROCnewtree(load$)
 6180ENDIF
 6190WHEN 5:
 6200IF block!40=&00D THEN
 6210block!12=block!8:block!16=4
 6220SYS sendm,18,block,block!4:REM DataLoadAck
 6230PROCload(FNwool(block+44))
 6240ENDIF
 6250WHEN 8:IF NOT prequit block!12=ref:SYSsendm,19,block:prequit=TRUE:PROCareyousure
 6260ENDCASE
 6270ENDPROC
 6280DEFPROCload(load$)
 6290in=TRUE
 6300IF ct=-1 THEN PROCinfo(finfo%,0,load$)
 6310SYS"OS_Find",&40,load$ TO load%
 6320Len=LEN("DiskTree Data File v�")
 6330title$=FNgetbs(load%,Len)
 6340IF title$<>"DiskTree Data File v�" THEN PROCquery("This is not a true DiskTree Data file!"):SYS&0D,0,load%:ENDPROC
 6350LOCAL ERROR
 6360ON ERROR LOCAL IF ERR=388 PROCquery("Out Of Memory "+STR$ERL):SYS&0D,0,load%:RESTORE ERROR:ENDPROC:ELSE RESTORE ERROR:PROCerror(REPORT$+" : at line "+STR$ERL):SYS&0D,0,load%:ENDPROC
 6370nof=VAL(FNgetbs(load%,3))
 6380FOR m=0 TO nof
 6390TLen=VAL(FNgetbs(load%,7))
 6400TLen%=INT(TLen/8)*8
 6410SYS"OS_Heap",1,heap% TO ,,largest,tfree
 6420IF TLen%+1024>largest THEN
 6430SYS"Wimp_SlotSize",-1,-1 TO current
 6440SYS"Wimp_SlotSize",current+(TLen%-largest)+1024,-1
 6450SYS"Wimp_SlotSize",-1,-1 TO new
 6460change=new-current
 6470SYS"OS_Heap",5,heap%,,change
 6480hsizeb+=change
 6490ENDIF
 6500ct+=1
 6510tsize(ct)=TLen
 6520tlen(ct)=VAL(FNgetbs(load%,7))
 6530tcount(ct)=VAL(FNgetbs(load%,7))
 6540rootl=VAL(FNgetbs(load%,3))
 6550troot$(ct)=FNgetbs(load%,rootl)
 6560SYS"OS_Heap",2,heap%,,TLen TO ,,tree(ct)
 6570SYS"OS_Heap",1,heap% TO ,,,tfree
 6580SYS"OS_GBPB",4,load%,tree(ct),TLen
 6590NEXT m
 6600SYS&0D,0,load%
 6610!icond=main%
 6620SYS"Wimp_GetWindowInfo",,icond
 6630saved=FALSE:$icond!76=load$:SYS"Wimp_ForceRedraw",-1,icond!4,icond!16,icond!12,icond!16+36
 6640SYS"Wimp_CloseWindow",,icond
 6650$FNinfo(saved%,1)=load$
 6660st=ct
 6670PROCnewview:PROCopenwin(main%):PROCpane
 6680PROCinfo(finfo%,1,STR$(ct+1))
 6690PROCinfo(finfo%,2,STR$(hsizeb-tfree))
 6700arclisted=FALSE
 6710RESTORE ERROR
 6720ENDPROC
 6730DEFPROCopenwin(handle%)
 6740IF handle%=main% AND ct=-1 THEN PROCquery("No directory trees in memory!"):ENDPROC
 6750!block=handle%
 6760SYS"Wimp_GetWindowInfo",,block
 6770open=block!32 AND (1<<16)
 6780front=block!32 AND (1<<17)
 6790IF handle%=main% AND width>-1 THEN block!12=block!4+width:block!8=block!16-depth:width=-1
 6800IF open=0 THEN
 6810SYS"Wimp_OpenWindow",,block
 6820ENDIF
 6830IF front=0 THEN
 6840block!28=-1:SYS"Wimp_OpenWindow",,block
 6850ENDIF
 6860ENDPROC
 6870DEF PROCslabin(handle)
 6880!icond=handle
 6890SYS "Wimp_GetPointerInfo",,icond
 6900SYS "Wimp_BorderIcon",,icond
 6910ENDPROC
 6920DEF PROCslabout(handle)
 6930!icond=handle
 6940SYS "Wimp_GetPointerInfo",,icond
 6950icond!8=0
 6960SYS "Wimp_BorderIcon",,icond
 6970ENDPROC
 6980DEFPROCredraw(handle)
 6990setex=FALSE
 7000!block=handle
 7010LOCALmore%
 7020SYS "Wimp_RedrawWindow",,block TO more%
 7030WHILE more%
 7040 CASE handle OF
 7050 WHEN main%
 7060 PROCapplication_redraw
 7070 OTHERWISE
 7080 SYS"Wimp_BorderWindow",,block
 7090 ENDCASE
 7100 SYS "Wimp_GetRectangle",,block TO more%
 7110 ENDWHILE
 7120ENDPROC
 7130DEFPROCapplication_redraw
 7140workx%=block!4-block!20
 7150worky%=block!16-block!24
 7160max=block!32-worky%
 7170min=block!40-worky%
 7180max=(max+46)DIV36*-1
 7190min=(min+46)DIV36*-1
 7200IF max>tcount(st)-1 THEN max=tcount(st)-1
 7210IF ct=-1 THEN ENDPROC
 7220tx=workx%:ty=worky%-46-(min*36)
 7230g=&400E6
 7240n=min*24
 7250FOR I=min TO max
 7260 SYSg,7
 7270 t$=""
 7280   FOR h=0 TO 2
 7290   i=n+h
 7300   t$+=CHR$(tree(st)?i)
 7310   NEXT h
 7320 len=VAL(t$)-1
 7330 IF len=-1 THEN len=0
 7340 t$=""
 7350   FOR h=3 TO 12
 7360   i=n+h
 7370   t$+=CHR$(tree(st)?i)
 7380   NEXT h
 7390 IF itemno=I THEN SYSg,9:RECTANGLE FILL workx%+0,worky%-0-(I*36+46),tlen(st)*16,-30:SYSg,7
 7400 IF I>=s1 AND I<=s2-1 THEN SYSg,7:RECTANGLE FILL workx%+0,worky%-0-(I*36+46),tlen(st)*16,-34:SYSg,0
 7410 IF I=s2 THEN SYSg,7:RECTANGLE FILL workx%+0,worky%-0-(I*36+46),tlen(st)*16,-30:SYSg,0
 7420 IF tree(st)?(i+1)=138 THEN SYSg,8
 7430 MOVE tx,ty
 7440 PRINT TAB(len)t$
 7450 ty-=36
 7460 n+=24
 7470NEXT I
 7480tyy=worky%-ty-40
 7490ENDPROC
 7500DEFPROCpane
 7510IF ct=-1 THEN ENDPROC
 7520bar1=block!4:bar2=block!8:bar3=block!12:bar4=block!16
 7530bar5=block!52:bar6=block!20
 7540IF toolson THEN PROCall:ELSE PROCbaronly
 7550!block=found%:SYS"Wimp_GetWindowInfo",,block
 7560open=block!32 AND (1<<16)
 7570IF open THEN PROCopenwin(found%)
 7580ENDPROC
 7590DEFPROCbaronly
 7600front=block!28
 7610!icond=bar%:SYS"Wimp_GetWindowInfo",,icond
 7620icond!4=bar1:icond!8=bar2:icond!12=bar3:icond!16=bar4
 7630icond!20=bar6
 7640icond!28=front:SYS"Wimp_OpenWindow",,icond
 7650block!28=bar%:SYS"Wimp_OpenWindow",,block
 7660ENDPROC
 7670DEFPROCall
 7680front=block!28
 7690x1=block!4-94:x2=x1+248:y1=block!8:y2=block!16
 7700size=x2-x1
 7710!icond=toolbox%:SYS"Wimp_GetWindowInfo",,icond
 7720IF x1<0 THEN x1=0:x2=size
 7730icond!4=x1:icond!8=y2-570:icond!12=x2:icond!16=y2
 7740icond!28=front:SYS"Wimp_OpenWindow",,icond
 7750ENDIF
 7760!icond=bar%:SYS"Wimp_GetWindowInfo",,icond
 7770icond!4=bar1:icond!8=bar2:icond!12=bar3:icond!16=bar4
 7780icond!20=bar6
 7790icond!28=toolbox%:SYS"Wimp_OpenWindow",,icond
 7800block!28=bar%:SYS"Wimp_OpenWindow",,block
 7810ENDPROC
 7820DEFPROCadjustwin(newxmax,newymin)
 7830!icond=bar%:SYS"Wimp_GetWindowInfo",,icond
 7840icond!52=newxmax
 7850SYS"Wimp_SetExtent",bar%,icond+44
 7860!icond=main%:SYS"Wimp_GetWindowInfo",,icond
 7870icond!48=newymin:icond!52=newxmax
 7880SYS"Wimp_SetExtent",main%,icond+44
 7890!icond=bar%:icond!4=0:SYS"Wimp_GetIconState",,icond
 7900SYS"Wimp_DeleteIcon",,icond
 7910icond=icond+4:icond!12=newxmax+2:!icond=bar%
 7920SYS"Wimp_CreateIcon",0,icond TO ic%
 7930ENDPROC
 7940DEFPROCtoolbox(flag)
 7950IF flag=-1 THEN !block=toolbox%:SYS"Wimp_CloseWindow",,block
 7960IF flag=1 THEN
 7970!block=main%
 7980SYS"Wimp_GetWindowState",,block
 7990open=block!32 AND (1<<16)
 8000IF open<>0 THEN !icond=main%:PROCpane
 8010ENDIF
 8020ENDPROC
 8030DEFPROCerror(err$)
 8040!icond=0:$(icond+4)=err$+"."+" Press OK to continue or Cancel to quit"+CHR$0
 8050SYS"Wimp_ReportError",icond,3,"!DiskTree" TO ,but
 8060IF but=2 THEN SYSreinter,mytask%:SYS"Wimp_CloseDown",task,mytask%:END
 8070ENDPROC
 8080DEFPROCareyousure
 8090IF saved THEN
 8100PROCopenwin(quit%)
 8110VDU 7
 8120PROCinfo(quit%,1,"Your file has been modified.")
 8130!block=130:block!4=131:block!8=-1:SYS"OS_ReadVduVariables",block,block+128
 8140SYS"OS_ReadModeVariable",MODE,4 TO ,,x
 8150SYS"OS_ReadModeVariable",MODE,5 TO ,,y
 8160MOUSE RECTANGLE 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y
 8170ENDIF
 8180IF NOT saved SYSreinter,mytask%:SYS"Wimp_CloseDown",task,mytask%:END
 8190ENDPROC
 8200DEFPROCquery(qu$)
 8210PROCopenwin(query%)
 8220VDU 7
 8230!block=query%
 8240SYS"Wimp_GetWindowInfo",,block
 8250workx%=block!12-block!4
 8260worky%=block!16-block!8
 8270MOUSE RECTANGLE block!4,block!8,workx%,worky%
 8280PROCinfo(query%,1,qu$)
 8290ENDPROC
 8300DEFPROCendq
 8310PROCclose(query%)
 8320!block=130:block!4=131:block!8=-1:SYS"OS_ReadVduVariables",block,block+128
 8330SYS"OS_ReadModeVariable",MODE,4 TO ,,x
 8340SYS"OS_ReadModeVariable",MODE,5 TO ,,y
 8350MOUSE RECTANGLE 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y
 8360ENDPROC
 8370DEFPROCclose(!block)
 8380SYS"Wimp_CloseWindow",,block
 8390ENDPROC
 8400DEFPROCdragspr(flag)
 8410IF dragspr THEN
 8420CASE flag OF
 8430WHEN 1:
 8440!block=winsave%:block!4=2:SYS "Wimp_GetIconState",,block
 8450block!8=0:block!12=0:$(block!32)=dindir$
 8460SYS "Wimp_SetIconState",,block
 8470SYS "DragASprite_Stop"
 8480WHEN -1:
 8490!block=winsave%:block!4=2:SYS "Wimp_GetIconState",,block
 8500dindir$=$(block!32)
 8510block!8=0:block!12=0:$(block!32)=CHR$13
 8520SYS "Wimp_SetIconState",,block
 8530ENDCASE
 8540ENDIF
 8550ENDPROC
 8560DEFPROCnewtree(file$)
 8570IF block!40=4096 OR block!40=8192 THEN
 8580path$=file$+"."
 8590PROCinfo(new%,1,path$)
 8600PROCopenwin(new%)
 8610ENDPROC
 8620ENDIF
 8630path$=FNgetleaf(file$)
 8640path$=LEFT$(file$,LEN(file$)-LEN(path$))
 8650PROCinfo(new%,1,path$)
 8660ENDPROC
 8670DEFPROCdragnew(path$)
 8680block!40=4096:path$=LEFT$(path$,LEN(path$)-10)
 8690PROCnewtree(path$)
 8700ENDPROC
 8710DEFPROCdrive0
 8720SYS"OS_FSControl",37,"ADFS::0.$",tblk,0,0,1024 TO ,,,,,tlen
 8730PROCinfo(new%,1,LEFT$($tblk,1024-tlen)+".")
 8740ENDPROC
 8750DEFPROCgo
 8760IF ct=maxno THEN PROCmess("There is no me free trees available in this file"):ENDPROC
 8770arcx=0:prearcx=-1:arcs=FALSE:apps=FALSE
 8780arcs=NOT FNcheckflag(new%,0,21)
 8790apps=NOT FNcheckflag(new%,3,21)
 8800root$=$FNinfo(new%,1)
 8810IF root$="" THEN PROCmess("You have not entered a path to catalogue"):ENDPROC
 8820root$=LEFT$(root$,LEN(root$)-1)
 8830SYS"OS_File",20,root$ TO type
 8840IF type<>2 THEN PROCmess("The path to catalogue has not been found"):ENDPROC
 8850CASE arcs OF
 8860WHEN TRUE:
 8870$tblk="ArcFS"
 8880SYS"XOS_Module",18,tblk TO r0
 8890IF r0<>18 THEN
 8900IF FNask("ArcFS not present. Only able to create trees of archives if ArcFS is present. Continue without archives?")=1 THEN arcs=FALSE:ELSE PROCclose(new%):ENDPROC
 8910ENDIF
 8920ENDCASE
 8930SYS"XOS_File",13,root$ TO type
 8940IF type<2 AND type>3  THEN PROCquery("Path to create tree from is not a directory/does not exist."):ENDPROC
 8950endlisty=0:nlen=0:stop=FALSE
 8960botLED=%10:totsize=0
 8970count=0
 8980ct+=1
 8990SYS"Hourglass_On"
 9000SYS"OS_Heap",1,heap% TO ,,membuf,tfree
 9010membuf=membuf-1024
 9020IF membuf<1024 THEN
 9030SYS"Wimp_SlotSize",-1,-1 TO current
 9040SYS"Wimp_SlotSize",current+(8*1024),-1
 9050SYS"Wimp_SlotSize",-1,-1 TO new
 9060change=new-current
 9070SYS"OS_Heap",5,heap%,,change
 9080hsizeb+=change
 9090membuf+=change
 9100ENDIF
 9110SYS"OS_Heap",2,heap%,,membuf TO ,,tree(ct)
 9120object=0
 9130endtext%=tree(ct)
 9140dir$=""
 9150x=0
 9160lastdir(0)=0
 9170start=TIME
 9180REPEAT
 9190object=lastdir(x)
 9200PROCgotree
 9210IF stop THEN ENDPROC
 9220IF endlisty=1 THEN ENDPROC
 9230REPEAT
 9240dir$=LEFT$(dir$,(LENdir$)-1)
 9250UNTIL MID$(dir$,LENdir$)="."
 9260dir$=LEFT$(dir$,(LENdir$)-1)
 9270UNTIL FALSE
 9280ENDPROC
 9290DEFPROCgotree
 9300REPEAT
 9310SYS"OS_GBPB",10,root$+dir$,buffer,1,object,63 TO ,,,reader,last
 9320IF last<>-1 THEN
 9330file$=""
 9340buff=20
 9350REPEAT
 9360file$+=CHR$buffer?buff
 9370buff+=1
 9380UNTILbuffer?buff=0
 9390IF LEFT$(file$,1)=CHR$0 file$=RIGHT$(file$,LENfile$-1)
 9400length=buffer!8
 9410type=buffer!16
 9420SYS"OS_File",20,root$+dir$+"."+file$ TO type,,,,,,filetype
 9430IF filetype=4096 OR filetype=8192 AND length=-1 THEN length=2048
 9440IF type=2 ext$="�" ELSE ext$=CHR$0
 9450IF filetype=4096 AND type=3 THEN filet$="DDC":filetype=&DDC
 9460IF arcs AND filetype=&DDC ext$="�"
 9470nlent=LEN(dir$+file$)-x+1+arcx
 9480IF nlent>nlen THEN nlen=nlent
 9490predicted=endtext%-tree(ct)
 9500IF predicted>membuf-1024 THEN PROCmem
 9510IF stop THEN ENDPROC
 9520fi$=FNfulls(file$,10)
 9530di$=FNfulls(STR$((LENdir$)-x+arcx+1),3)
 9540leng$=FNfulls(STR$length,7)
 9550filet$=STR$~filetype
 9560IF filetype=4096 THEN filet$="DIR"
 9570IF filetype=8192 THEN filet$="APP"
 9580IF LEN(filet$)<3 THEN REPEAT:filet$="0"+filet$:UNTIL LEN(filet$)=3
 9590$endtext%=di$+fi$+ext$+leng$+filet$
 9600endtext%+=24
 9610totsize+=length
 9620object+=1
 9630count+=1
 9640IF botLED=%01 THEN botLED=%10 ELSE botLED=%01
 9650SYS"Hourglass_LEDs",%11,botLED
 9660IF arcs AND filetype=&DDC THEN
 9670prearcroot$=root$:prearcdir$=dir$:prearclast=object:lastdir(x)=object:prearcx=x:x+=1
 9680OSCLI("OpenArchive "+root$+dir$+"."+file$)
 9690root$="ArcFS#"+file$+":$":arcname$=file$:object=0:arcx=LEN(dir$+file$)+1:dir$=""
 9700arcct+=1:arc$(arcct)=file$+","+STR$count+","+STR$ct
 9710ENDIF
 9720IF filetype=4096 dir$=dir$+"."+file$:lastdir(x)=object:x+=1:object=0
 9730IF filetype=8192 AND apps dir$=dir$+"."+file$:lastdir(x)=object:x+=1:object=0
 9740ENDIF
 9750UNTIL reader=0
 9760x-=1
 9770IF x=-1 AND prearcx=-1 PROCendoflist
 9780IF x=prearcx AND prearcx>-1 THEN x=prearcx:root$=prearcroot$:dir$=prearcdir$:object=prearclast:lastdir(x)=object:prearcx=-1:arcx=0:OSCLI("CloseArchive "+arcname$):PROCgotree
 9790IF endlisty=1 THEN ENDPROC
 9800ENDPROC
 9810DEFPROCendoflist
 9820finish=TIME-start
 9830$endtext%=CHR$17+STR$totsize+CHR$18+STR$finish+CHR$255
 9840endtext%+=LEN(STR$totsize+STR$finish)+3
 9850tsize(ct)=endtext%-tree(ct)
 9860tcount(ct)=count:tlen(ct)=nlen:st=ct:troot$(ct)=root$
 9870SYS"OS_Heap",6,heap%,tree(ct) TO ,,,curb
 9880SYS"OS_Heap",4,heap%,tree(ct),(tsize(ct)-curb)+8 TO ,,tree(ct)
 9890SYS"Hourglass_Smash"
 9900endlisty=1
 9910!block=new%:SYS"Wimp_CloseWindow",,block
 9920!block=tinfo%:SYS"Wimp_CloseWindow",,block
 9930!block=finfo%:SYS"Wimp_CloseWindow",,block
 9940!block=iinfo%:SYS"Wimp_CloseWindow",,block
 9950PROCinfo(finfo%,1,STR$(ct+1))
 9960PROCinfo(finfo%,2,STR$(hsizeb-tfree))
 9970IF $FNinfo(finfo%,0)="None" THEN PROCinfo(finfo%,0,"<Untitled>")
 9980IF saved=FALSE THEN
 9990saved=TRUE
10000!icond=main%
10010SYS"Wimp_GetWindowInfo",,icond
10020$(icond!76)=$(icond!76)+" *"
10030SYS"Wimp_ForceRedraw",-1,block!4,(block!16)-32,block!12,block!16+36
10040PROCinfo(finfo%,3,"Yes")
10050ENDIF
10060!block=main%:SYS"Wimp_CloseWindow",,block
10070PROCnewview:PROCopenwin(main%):PROCpane
10080ENDPROC
10090DEFPROCmem
10100SYS"OS_Heap",6,heap%,tree(ct) TO ,,,ohs
10110SYS"OS_ReadMemMapInfo" TO page
10120SYS"Wimp_SlotSize",-1,-1 TO current
10130SYS"Wimp_SlotSize",current+page,-1
10140SYS"Wimp_SlotSize",-1,-1 TO new
10150change=new-current
10160IF change=0 THEN PROCquery("Out Of Memory. Free more memory and try again."):ct-=1:SYS&1D,3,heap%,tree(ct):stop=TRUE:SYS"Hourglass_Smash":ENDPROC
10170SYS"OS_Heap",5,heap%,,change
10180SYS"OS_Heap",4,heap%,tree(ct),change TO ,,tree(ct)
10190SYS"OS_Heap",6,heap%,tree(ct) TO ,,,nhs
10200hsizeb+=change
10210membuf+=nhs-ohs
10220ENDPROC
10230DEFPROCmakearclist
10240FOR j=0 TO maxno: arc$(j)="": NEXT
10250aind=0
10260FOR j=0 TO ct
10270 FOR count=0 TO tcount(j)
10280 index=count*24
10290 type$=""
10300  FOR h=21 TO 23
10310  type$+=CHR$(tree(j)?(index+h))
10320  NEXT
10330 IF type$="DDC" THEN
10340  t$=""
10350  FOR h=3 TO 12
10360  val=tree(j)?(index+h)
10370  IF val<>0 THEN t$+=CHR$val
10380  NEXT
10390  IF aind<maxno THEN arc$(aind)=t$+","+STR$(count+1)+","+STR$(j):aind+=1
10400  ENDIF
10410 NEXT count
10420NEXT j
10430arcct=aind-1
10440ENDPROC
10450DEFPROClast
10460IF st=0 THEN ENDPROC
10470st-=1
10480!block=main%:SYS"Wimp_CloseWindow",,block
10490PROCnewview
10500PROCopenwin(main%)
10510PROCclose(find%)
10520PROCclose(iinfo%)
10530PROCclose(tinfo%)
10540PROCclose(notfnd%)
10550PROCclose(found%)
10560PROCpane
10570ENDPROC
10580DEFPROCnext
10590IF st=ct THEN ENDPROC
10600st+=1
10610!block=main%:SYS"Wimp_CloseWindow",,block
10620PROCnewview
10630PROCopenwin(main%)
10640PROCclose(find%)
10650PROCclose(iinfo%)
10660PROCclose(tinfo%)
10670PROCclose(notfnd%)
10680PROCclose(found%)
10690PROCpane
10700ENDPROC
10710DEFPROCnewview
10720IF ct=-1 THEN ENDPROC
10730PROCinfo(bar%,0,troot$(st))
10740tptr=tcount(st)*24+1
10750sizeb$=""
10760REPEAT
10770sizeb$=sizeb$+CHR$(tree(st)?tptr)
10780tptr+=1
10790UNTIL tree(st)?tptr=18
10800tptr+=1
10810finishs$=""
10820REPEAT
10830finishs$=finishs$+CHR$(tree(st)?tptr)
10840tptr+=1
10850UNTIL tree(st)?tptr=255
10860PROCinfo(tinfo%,0,troot$(st))
10870PROCinfo(tinfo%,1,STR$tcount(st))
10880PROCinfo(tinfo%,2,STR$tsize(st))
10890PROCinfo(tinfo%,3,sizeb$)
10900PROCinfo(tinfo%,7,finishs$)
10910xalt=tlen(st)*16:yalt=0-(tcount(st)*36+40)
10920PROCadjustwin(xalt,yalt)
10930itemno=-1
10940PROCseticstate(find%,4,1<<22,1<<22)
10950depth=568
10960IF tcount(st)*36+40<depth THEN depth=tcount(st)*36+40
10970width=tlen(st)*16
10980IF width>500 THEN width=500
10990ENDPROC
11000DEFPROCselectitem
11010olditemno=itemno
11020ycoord=block!4
11030!block=main%:SYS"Wimp_GetWindowInfo",,block
11040workx%=block!4-block!20
11050worky%=block!16-block!24
11060ycoord=0-(block!16-ycoord)
11070ycoord=ycoord+block!24
11080itemno=INT((ycoord-40)/36)*-1-3
11090itemst=st
11100IF olditemno=itemno THEN ENDPROC
11110ycoord=0-(itemno*36+44)
11120SYS"Wimp_ForceRedraw",main%,1,ycoord-32,tlen(st)*16,ycoord
11130ycoord=0-(olditemno*36+44)
11140SYS"Wimp_ForceRedraw",main%,1,ycoord-32,tlen(st)*16,ycoord
11150PROCputinfo(itemno)
11160PROCseticstate(find%,4,1<<22,0<<22)
11170ENDPROC
11180DEFPROCputinfo(itemno)
11190n=itemno*24
11200t$=""
11210FOR h=3 TO 12:i=n+h:t$+=CHR$(tree(st)?i):NEXT h
11220PROCinfo(iinfo%,0,troot$(st)+"..."+t$)
11230t$=""
11240FOR h=14 TO 20:i=n+h:t$+=CHR$(tree(st)?i):NEXT h
11250PROCinfo(iinfo%,4,t$)
11260t$=""
11270FOR h=21 TO 23:i=n+h:t$+=CHR$(tree(st)?i):NEXT h
11280te$="&"+t$+"     ("+t$+")"
11290tblk=tt
11300SYS"XOS_FSControl",18,,FNhextodec(t$) TO r0,,r2%,r3%
11310IF r0=18 THEN
11320tblk!0=r2%:tblk!4=r3%:tblk?8=13:type$=$tblk
11330te$=type$+" ("+t$+")"
11340ENDIF
11350st$="sfile_"+t$
11360IF t$="APP" THEN te$="Application   ":st$="sapp"
11370IF t$="DIR" THEN te$="Directory     ":st$="sdir"
11380PROCindir(iinfo%,1,"","b0;"+st$)
11390PROCinfo(iinfo%,3,te$)
11400ENDPROC
11410DEFPROCselection
11420olds1=s1:olds2=s2:olditem=ss
11430ycoord=block!4
11440!block=main%:SYS"Wimp_GetWindowInfo",,block
11450workx%=block!4-block!20
11460worky%=block!16-block!24
11470ycoord=0-(block!16-ycoord)
11480ycoord=ycoord+block!24
11490ss=INT((ycoord-40)/36)*-1-3
11500PROCseticstate(save%,4,1<<22,1<<22):PROCseticstate(save%,4,1<<21,0<<21)
11510IF olditem=ss THEN
11520s1=-1:s2=-1
11530ycoord=0-(olds1*36+44)
11540SYS"Wimp_ForceRedraw",main%,1,ycoord-(olds2*36),tlen(st)*16,ycoord
11550ENDPROC
11560ENDIF
11570gap=s2-s1:gap=gap/2
11580IF s1=-1 THEN s1=ss
11590IF ss>s1+gap THEN s2=ss
11600IF ss<s1 THEN s1=ss
11610IF ss<s1+gap THEN s1=ss
11620IF ss=s1+gap THEN s2=ss
11630IF s1>s2 AND s2>-1 THEN sc=s2:s1=s2:s2=sc
11640IF s1>-1 AND s2>-1 THEN PROCseticstate(save%,4,1<<22,0<<22)
11650ycoord=0-(olds1*36+44)
11660SYS"Wimp_ForceRedraw",main%,1,ycoord-(olds2*36),tlen(st)*16,ycoord
11670ycoord=0-(s1*36+44)
11680SYS"Wimp_ForceRedraw",main%,1,ycoord-(s2*36),tlen(st)*16,ycoord
11690ENDPROC
11700DEFPROCindir(handle,icon,text$,indir$)
11710!block=handle:block!4=icon:SYS"Wimp_GetIconState",,block
11720$(block!28)=text$:$(block!32)=indir$:block!36=LEN(indir$)+1
11730block!8=0:block!12=0
11740SYS"Wimp_SetIconState",,block
11750ENDPROC
11760DEFPROCscroll
11770pagesize=INT((block!16-block!8-40)/36)
11780IF block!32=1 THEN block!20=block!20+(tlen(st)*16)/10
11790IF block!32=-1 THEN block!20=block!20-(tlen(st)*16)/10
11800IF block!36=1 THEN topno=INT(block!24/36):block!24=topno*36+36
11810IF block!36=-1 THEN ycoord=0-(block!16-block!8)+block!24:botno=INT((ycoord-40)/36)*-1-3:botno=botno*36+36+40:block!24-=ycoord+botno
11820IF block!32=2 THEN block!20=block!20+(tlen(st)*16)/5
11830IF block!32=-2 THEN block!20=block!20-(tlen(st)*16)/5
11840IF block!36=2 THEN topno=INT(block!24/36)*-1:block!24=0-(topno-pagesize)*36
11850IF block!36=-2 THEN ycoord=(0-(block!16-block!8))+block!24:botno=INT((ycoord-40)/36)*-1-3:botno=(botno+pagesize-1)*36+36+40:block!24-=ycoord+botno
11860SYS"Wimp_OpenWindow",,block
11870ENDPROC
11880DEFPROCdelete(no)
11890done=-1
11900IF no=ct THEN
11910SYS"OS_Heap",3,heap%,tree(ct)
11920SYS"OS_Heap",1,heap% TO ,,largest,tfree
11930SYS"OS_Heap",5,heap%,,0-(largest-1024)
11940hsizeb=hsizeb-(largest-1024)
11950ct-=1
11960done=1
11970ENDIF
11980IF no<>ct AND done=-1 THEN
11990FOR j=no TO ct
12000SYS"OS_Heap",3,heap%,tree(j)
12010NEXT
12020FOR j=no TO ct-1
12030SYS"OS_Heap",2,heap%,,tsize(j+1) TO ,,tree(j)
12040 FOR I=0 TO tsize(j+1) STEP 4
12050 tree(j)!I=tree(j+1)!I
12060 NEXT I
12070tsize(j)=tsize(j+1):tcount(j)=tcount(j+1)
12080tlen(j)=tlen(j+1):troot$(j)=troot$(j+1)
12090NEXT j
12100ct-=1
12110SYS"OS_Heap",1,heap% TO ,,largest,tfree
12120SYS"OS_Heap",5,heap%,,0-(largest-1024)
12130hsizeb=hsizeb-(largest-1024)
12140ENDIF
12150SYS"OS_ReadMemMapInfo" TO page
12160SYS"Wimp_SlotSize",-1,-1 TO current
12170IF largest>page THEN
12180amount=INT((largest-1024)/page)*page
12190IF current-amount<=origappsize THEN amount=current-origappsize
12200SYS"Wimp_SlotSize",current-amount,-1
12210ENDIF
12220IF ct=-1 THEN PROCclearall:ENDPROC
12230IF st>=no THEN st-=1
12240IF st=-1 THEN st=0
12250PROCinfo(finfo%,1,STR$(ct+1))
12260PROCinfo(finfo%,2,STR$(hsizeb-tfree))
12270IF saved=FALSE THEN
12280PROCinfo(finfo%,3,"Yes")
12290saved=TRUE
12300!icond=main%
12310SYS"Wimp_GetWindowInfo",,icond
12320$(icond!76)=$(icond!76)+" *"
12330SYS"Wimp_ForceRedraw",-1,block!4,(block!16)-32,block!12,block!16+36
12340ENDIF
12350!block=main%:SYS"Wimp_CloseWindow",,block
12360arclisted=FALSE
12370PROCnewview:PROCopenwin(main%):PROCpane
12380ENDPROC
12390DEFPROCclearall
12400IF ct>-1 THEN
12410FOR I=0 TO ct
12420SYS"OS_Heap",3,heap%,tree(I)
12430NEXT
12440SYS"OS_Heap",1,heap% TO ,,largest,tfree
12450SYS"OS_Heap",5,heap%,,0-(largest-1024)
12460SYS"Wimp_SlotSize",orig,-1
12470ENDIF
12480SYS"OS_Heap",1,heap% TO ,,largest,tfree
12490hsizeb=largest
12500ct=-1
12510!block=main%:SYS"Wimp_GetWindowInfo",,block
12520$(block!76)="<Untitled>"
12530SYS"Wimp_CloseWindow",,block
12540PROCinfo(finfo%,0,"None")
12550PROCinfo(finfo%,1,"0")
12560PROCinfo(finfo%,2,"0")
12570PROCinfo(finfo%,3,"No")
12580saved=FALSE
12590!block=new%:SYS"Wimp_CloseWindow",,block
12600!block=tinfo%:SYS"Wimp_CloseWindow",,block
12610!block=finfo%:SYS"Wimp_CloseWindow",,block
12620!block=iinfo%:SYS"Wimp_CloseWindow",,block
12630!block=bar%:SYS"Wimp_CloseWindow",,block
12640!block=toolbox%:SYS"Wimp_CloseWindow",,block
12650st=0
12660arclisted=FALSE
12670ENDPROC
12680DEFPROCopentree(no)
12690st=no
12700PROCnewview
12710!block=main%:SYS"Wimp_CloseWindow",,block
12720PROCopenwin(main%):PROCpane
12730ENDPROC
12740DEFPROCopenarc(no)
12750use$=arc$(no)
12760str$=LEFT$(use$,INSTR(use$,","))
12770numb$=RIGHT$(use$,LEN(use$)-INSTR(use$,","))
12780oct$=LEFT$(numb$,INSTR(numb$,",")-1)
12790x$=RIGHT$(numb$,LENnumb$-LENoct$-1)
12800oldst=st
12810st=VAL(x$)
12820PROCgoto(VAL(oct$)-1)
12830ENDPROC
12840DEFPROCgoto(ino)
12850PROCinfo(bar%,0,troot$(st))
12860tptr=tcount(st)*24+1
12870sizeb$=""
12880REPEAT
12890sizeb$=sizeb$+CHR$(tree(st)?tptr)
12900tptr+=1
12910UNTIL tree(st)?tptr=18
12920tptr+=1
12930finishs$=""
12940REPEAT
12950finishs$=finishs$+CHR$(tree(st)?tptr)
12960tptr+=1
12970UNTIL tree(st)?tptr=255
12980PROCinfo(tinfo%,0,troot$(st))
12990PROCinfo(tinfo%,1,STR$tcount(st))
13000PROCinfo(tinfo%,2,STR$tsize(st))
13010PROCinfo(tinfo%,3,sizeb$)
13020PROCinfo(tinfo%,7,finishs$)
13030IF uptot>-1 AND uptot<>origt THEN PROCnewview
13040IF oldst<>st THEN PROCnewview
13050oldst=-1
13060!block=main%:SYS"Wimp_CloseWindow",,block
13070PROCopenwin(main%):PROCpane
13080!block=main%:SYS"Wimp_GetWindowInfo",,block
13090workx%=block!4-block!20
13100worky%=block!16-block!24
13110ycoord=0-(itemno*36+44)
13120itemno=ino
13130block!24=0-((itemno-2)*36+44)
13140SYS"Wimp_OpenWindow",,block
13150SYS"Wimp_ForceRedraw",main%,1,ycoord-32,tlen(st)*16,ycoord
13160ENDPROC
13170DEFPROCfind
13180PROCclose(find%)
13190PROCclose(found%)
13200IF FNcheckflag(find%,1,21) THEN opt=1
13210IF FNcheckflag(find%,6,21) THEN opt=2
13220IF FNcheckflag(find%,9,21) THEN opt=3
13230from=0
13240IF FNcheckflag(find%,17,21) THEN sttree=st:endtree=st ELSE sttree=0:endtree=ct
13250IF FNcheckflag(find%,4,21) AND from>-1 THEN from=itemno:sttree=itemst
13260origt=st
13270IF NOT found THEN
13280nonefnd=-1
13290totalcnt=0
13300FOR n=sttree TO endtree
13310totalcnt=+tcount(n)
13320NEXT n
13330nowon=0
13340ENDIF
13350CASE opt OF
13360WHEN 1:
13370search$=$FNinfo(find%,2)
13380tex$=search$:tex2$="Name :-"
13390search$=FNfulls(search$,10)
13400case=FNcheckflag(find%,3,21)
13410IF NOT case THEN search$=FNcaps(search$)
13420IF found AND FNcheckflag(find%,18,21) THEN sttree=uptot
13430FOR ontree=sttree TO endtree
13440IF found THEN from=upto+1:found=FALSE
13450st=ontree
13460n=from*24
13470SYS"Hourglass_On"
13480FOR I=from TO tcount(st)
13490 nowon+=1
13500 t$=""
13510 FOR h=3 TO 12
13520 i=n+h
13530 t$+=CHR$(tree(st)?i)
13540 NEXT h
13550 IF NOT case THEN t$=FNcaps(t$)
13560 IF t$=search$ THEN SYS"Hourglass_Smash":nonefnd=1:upto=I:uptot=ontree:PROCgoto(I):PROCfound(I,st):ENDPROC
13570 n+=24
13580 SYS"Hourglass_Percentage",nowon/totalcnt*100
13590NEXT I
13600from=0:upto=0
13610NEXT ontree
13620SYS"Hourglass_Smash"
13630ENDIF
13640WHEN 2:
13650Search$=$FNinfo(find%,7)
13660IF LEFT$(Search$,1)="&" THEN
13670search$=Search$
13680search$=RIGHT$(search$,LEN(search$)-1)
13690IF LENsearch$>3 THEN search$=LEFT$(search$,3)
13700IF LENsearch$<3 THEN search$=FNlongs(search$,3)
13710tex$="&"+search$:tex2$="Type :-"
13720ENDIF
13730IF LEFT$(Search$,1)<>"&" THEN
13740search$=Search$
13750SYS"XOS_FSControl",31,search$ TO r0,,filetype
13760IF r0<>31 THEN PROCmess("File type not recognised; Try entering file type number"):ENDPROC
13770search$=STR$~filetype
13780IF LENsearch$<3 THEN search$=FNlongs(search$,3)
13790tex$="&"+search$:tex2$="Type :-"
13800ENDIF
13810IF found AND FNcheckflag(find%,18,21) THEN sttree=uptot
13820 FOR ontree=sttree TO endtree
13830 IF found THEN from=upto+1:found=FALSE
13840 st=ontree
13850 n=from*24
13860 SYS"Hourglass_On"
13870 FOR I=from TO tcount(st)
13880  nowon+=1
13890  t$=""
13900  FOR h=21 TO 23
13910  i=n+h
13920  t$+=CHR$(tree(st)?i)
13930  NEXT h
13940  IF t$=search$ THEN SYS"Hourglass_Smash":nonefnd=1:upto=I:uptot=ontree:PROCgoto(I):PROCfound(I,st):ENDPROC
13950  n+=24
13960  SYS"Hourglass_Percentage",nowon/totalcnt*100
13970 NEXT I
13980from=0:upto=0
13990NEXT ontree
14000SYS"Hourglass_Smash"
14010ENDIF
14020WHEN 3:
14030search$=$FNinfo(find%,11)
14040search2$=$FNinfo(find%,12)
14050search=VAL(search$)*1000
14060search2=VAL(search2$)*1000
14070tex$=STR$((search+search2)/2):tex2$="Size :-"
14080search$=FNfulls(search$,10)
14090IF found AND FNcheckflag(find%,18,21) THEN sttree=uptot
14100FOR ontree=sttree TO endtree
14110IF found THEN from=upto+1:found=FALSE
14120st=ontree
14130n=from*24
14140SYS"Hourglass_On"
14150FOR I=from TO tcount(st)
14160 nowon+=1
14170 t$=""
14180 FOR h=14 TO 20
14190 i=n+h
14200 t$+=CHR$(tree(st)?i)
14210 NEXT h
14220 t=VAL(t$)
14230 IF t>search AND t<search2 THEN SYS"Hourglass_Smash":nonefnd=1:upto=I:uptot=ontree:PROCgoto(I):PROCfound(I,st):ENDPROC
14240 n+=24
14250 SYS"Hourglass_Percentage",nowon/totalcnt*100
14260NEXT I
14270from=0:upto=0
14280NEXT ontree
14290SYS"Hourglass_Smash"
14300ENDIF
14310ENDCASE
14320st=origt
14330PROCinfo(notfnd%,1,tex$)
14340PROCinfo(notfnd%,2,tex2$)
14350PROCopenwin(notfnd%)
14360found=FALSE
14370ENDPROC
14380DEFPROCfound(item,trno)
14390n=item*24
14400t$=""
14410FOR h=3 TO 12:i=n+h:t$+=CHR$(tree(st)?i):NEXT h
14420PROCinfo(found%,3,t$)
14430t$=""
14440FOR h=14 TO 20:i=n+h:t$+=CHR$(tree(st)?i):NEXT h:size$=t$
14450t$=""
14460FOR h=21 TO 23:i=n+h:t$+=CHR$(tree(st)?i):NEXT h
14470te$="&"+t$+"     ("+t$+")"
14480tblk=tt
14490SYS"XOS_ReadVarVal","File$Type_"+t$,tblk,512 TO ,,br
14500IF br<>0 THEN
14510type$=""
14520FOR s=0 TO br-1
14530type$+=CHR$tblk?s
14540NEXT s
14550IF LEN(type$)<8 THEN
14560REPEAT
14570type$=type$+" "
14580UNTIL LEN(type$)=8
14590ENDIF
14600te$=type$+" ("+t$+")"
14610ENDIF
14620st$="sfile_"+t$
14630IF t$="APP" THEN te$="Application   ":st$="sapp"
14640IF t$="DIR" THEN te$="Directory     ":st$="sdir"
14650PROCindir(found%,1,"","b0;"+st$)
14660IF opt=1 OR opt=2 PROCinfo(found%,2,"Type"):PROCinfo(found%,4,te$):REMte$
14670IF opt=3 PROCinfo(found%,2,"Size"):PROCinfo(found%,4,size$)
14680PROCopenwin(found%)
14690found=TRUE
14700PROCputinfo(item)
14710ENDPROC
14720DEFFNhextodec(string$)
14730total=0
14740strlen=LENstring$
14750FOR I=strlen-1 TO 0 STEP -1
14760next$=LEFT$(string$,1)
14770val=-1
14780IF next$="0" THEN val=0
14790IF next$="1" THEN val=1
14800IF next$="2" THEN val=2
14810IF next$="3" THEN val=3
14820IF next$="4" THEN val=4
14830IF next$="5" THEN val=5
14840IF next$="6" THEN val=6
14850IF next$="7" THEN val=7
14860IF next$="8" THEN val=8
14870IF next$="9" THEN val=9
14880IF next$="A" OR next$="a" THEN val=10
14890IF next$="B" OR next$="b" THEN val=11
14900IF next$="C" OR next$="c" THEN val=12
14910IF next$="D" OR next$="d" THEN val=13
14920IF next$="E" OR next$="e" THEN val=14
14930IF next$="F" OR next$="f" THEN val=15
14940IF val=-1 THEN val=0
14950total+=val*16^I
14960string$=RIGHT$(string$,LEN(string$)-1)
14970NEXT
14980=total

$� � �mess(�$+" : at line "+Þ):�
� *>$.!DiskTree.!RunImage
:� *Main Program for !DiskTree - Directory Tree Creator
( � *Version 1.07 (12 Aug '95)
2� *Authur J. Robbins
<
maxno=150
FE� block &1000, menu% 2048, curbuf% 7*1024, icond 2048, mblock 256
P3� longdata (maxno*13)+24, longmen (maxno*24)+48
Z2� tree(maxno),lastdir(256),buffer 63,tblk 1024
dF� tsize(maxno),tcount(maxno),tlen(maxno),troot$(maxno),arc$(maxno)
nendbuf%=curbuf%+&6000
xLend%=-1:toolson=�:quiting=�:totallen=0:found=�:upto=-1:uptot=-1:oldst=-1
�>saved=�:prequitwait=�:prequit=�:sel=-1:tt=tblk:arclisted=�
�Lin=�:started=0:ct=-1:arcct=-1:width=-1:itemno=-1:rc=-1:s1=-1:s2=-1:ss=-1
�task=&4B534154
�@ș "Wimp_Initialise",200,task,"!DiskTree" � version%,mytask%
�$ș "Wimp_ClaimInterface",mytask%
�reinter=&81683
�
�template
�Sș"XOS_ReadVarVal","DTree$Drag",block,256,0,0 � ,,len:block?len=13:drag$=$block
�*� drag$="TRUE" � dragspr=� � dragspr=�
�env$=""
�ș "OS_GetEnv" � env$
�� �env$,"-quit") �
�I%=�env$,"""")
I%=�env$,"""",I%+1)
�
	I%+=1
"� �env$,I%,1)<>" "
,env$=�env$,I%)
6�
@initic=�icon
J"ș"Wimp_SlotSize",-1,-1 � orig
T max=�-�:max=�(max/1024)*1024
^max-=&4000
hend%=�:drag%=0:drive%=0
r%ș"Wimp_SlotSize",-1,-1 � current
|�=�-max:hsizeb=max:heap%=�
�� hsizeb<1024 � �
�ș"OS_Heap",0,heap%,,hsizeb
�'origheap=hsizeb:origappsize=current
�#� � �error(�$+" : at line "+Þ)
��info(bar%,0,"None")
��adjustwin(500,-500)
�$�seticstate(save%,4,1<<22,1<<22)
�$�seticstate(find%,4,1<<22,1<<22)
�� env$<>"" �load(env$)
��
�%ș"Wimp_Poll",0,block � eventcode
�-ș "Wimp_PollPointer",eventcode,,version%
�Ȏ eventcode �
4� 0:� � saved � prequit ș"Wimp_ProcessKey",&1FC
� 1:�redraw(block!0)
� 2:�request2
&� 3:�request3
0� 6:�click(block)
:� 7:�out
D� 8:�process
N� 9:�select
X� 10:�scroll
b� 17,18:�messagein
l�
v
� end%
��end
��
�	��end
�șreinter,mytask%
�#ș"Wimp_CloseDown",task,mytask%
��
��
���request2
�win=!block
�� win=main% �
�!icond=toolbox%
�#ș "Wimp_GetWindowState",,icond
�tool28=icond!28
!icond=main%
#ș "Wimp_GetWindowState",,icond
check=0
  � icond!4<>block!4 � check=1
* � icond!8<>block!8 � check=1
4"� icond!12<>block!12 � check=1
>"� icond!16<>block!16 � check=1
H"� icond!20<>block!20 � check=1
R"� icond!24<>block!24 � check=1
\� block!28=-2 � check=1
f� tool28<>-1 � check=1
p1� check=1 � ș "Wimp_OpenWindow",,block:�pane
z�
�ș "Wimp_OpenWindow",,block
��
��
���request3
�Ȏ !block �
�� main%:
� ș "Wimp_CloseWindow",,block
�X!block=toolbox%:ș "Wimp_CloseWindow",,block:!block=bar%:ș"Wimp_CloseWindow",,block
�Y!block=tinfo%:ș "Wimp_CloseWindow",,block:!block=iinfo%:ș "Wimp_CloseWindow",,block
�X!block=found%:ș "Wimp_CloseWindow",,block:!block=find%:ș "Wimp_CloseWindow",,block
�/!block=notfnd%:ș "Wimp_CloseWindow",,block
�!� saved%:�prequit � prequit=�
�5� toolbox%:toolson=�:ș "Wimp_CloseWindow",,block
# :ș "Wimp_CloseWindow",,block
�
�
$
ݤicon
.
!icond=-1
8
icond!4=0
B%icond!8=0:icond!12=68:icond!16=68
L+icond!20=%11010+((2^12)*3):icond?23=112
V$(icond+24)="!DiskTree"+�13
`&ș "Wimp_CreateIcon",,icond � icon
j	=icon
tݤinf(handle,icon)
~�gee(handle,icon)
�
=icond!28
� ݤbit(a$)
�ȕ �a$,":")>0
�a$=�a$,�a$,":")+1)
��
�ȕ �a$,".")>0
�a$=�a$,�a$,".")+1)
��
�=a$
�ݤwool(wool%)
�
� cot$
� ȕ ?wool%>=32
cot$+=�(?wool%)

wool%+=1
�
	=cot$
(ݤgetleaf(leaf$)
2ȕ �leaf$,".")
<leaf$=�leaf$,�leaf$,".")+1)
F�:=leaf$
Pݤgetdiskname(path$)
Z�
dpath$=�path$,�(path$)-1)
n� �path$,1)=":"
x=�path$,�(path$)-1)
�ݤcheckit(hnd%,ic%)
�!icond=hnd%:icond!4=ic%
� ș"Wimp_GetIconState",,icond
�flags%=icond!24
�=flags%�&F0000
�ݤask(fn$)
�!icond=0:$(icond+4)=fn$+�0
�5ș"Wimp_ReportError",icond,&13,"!DiskTree" � ,but
�=but
�ݤfulls(string$,len)
�� �(string$)<len �
��
�string$=string$+�0
� �(string$)=len
�
=string$
"ݤlongs(string$,len)
,� �(string$)<len �
6�
@string$="0"+string$
J� �(string$)=len
T�
^=string$
h!ݤcheckflag(handle,icon,flag)
r	bit=�
|!icond=handle:icond!4=icon
� ș"Wimp_GetIconState",,icond
�"� (icond!24�(1<<flag))>0 bit=�
�=bit
�ݤcaps(up$)
�� L=1 � �(up$)
�#�up$,L,1)=�(�(�up$,L,1)) � &DF)
��
�=up$
���template
�2ș"Wimp_OpenTemplate",,"<DTree$Dir>.Templates"
�indir=curbuf%
�info%=�template("ProgInfo")
�save%=�template("save")
 saved%=�template("savetext")
main%=�template("tree")
toolbox%=�template("tools")
&query%=�template("query")
0quit%=�template("quitbox")
:bar%=�template("bar")
Dnew%=�template("new")
Nfind%=�template("Find")
Xfound%=�template("found")
bnotfnd%=�template("notfnd")
liinfo%=�template("info")
vfinfo%=�template("finfo")
�tinfo%=�template("tinfo")
�ș "Wimp_CloseTemplate"
�stex=�info(save%,1)
�stexd=�info(saved%,1)
��
�ݤtemplate(a$)
�Fș"Wimp_LoadTemplate",,block,indir,endbuf%,-1,a$,0 � ,,indir,,,,c%
�2� c%=0 � �mess("Template "+a$+" not found."):�
�block!64=1
�)ș"Wimp_CreateWindow",,block � handle
�=handle
�ݤinfo(handle,icon)
��gee(handle,icon)

=icond!28
��info(handle,icon,text$)
;!block=handle:block!4=icon:ș"Wimp_GetIconState",,block
 )$(block!28)=text$:block!36=�(text$)+1
*block!8=0:block!12=0
4 ș"Wimp_SetIconState",,block
>�
H��gee(handle,icon)
R!icond=handle:icond!4=icon
\ ș"Wimp_GetIconState",,icond
f�
p8��seticstate(handle%,ic%,clear,eor):� as in PRM (CE)
z9!block=handle%:block!4=ic%:block!8=eor:block!12=clear
� ș"Wimp_SetIconState",,block
��
���cmenus
�tmopt=-1
�menuopen=-44
�menuptr=menu%
�ȗ x,y,b
�(trees%=�menu("Trees",174,"No Trees")
�� ct>-1 � �treemens
�4� toolson � toolon$="{�}Tools":� toolon$="Tools"
�?SaveMenu%=�menu("Save",5*16,"{b|save%}Text,{b|saved%}Data")
�;misc%=�menu("Misc",5*16,"{b|info%}Info,{b|finfo%}File")
�Ziconmenu%=�menu("!DiskTree",9*16,"{b|misc%}Misc,Tree,New Tree,{b|SaveMenu%}Save,Quit")
	�mainmenu%=�menu("!DiskTree",10*16,"{b|misc%}Misc,{b|trees%}Trees,{b|tinfo%}Tree Info,{b|find%}Find,"+toolon$+",New Tree,{b|SaveMenu%}Save,Quit")
	 rmen=block!12:ricon=block!16
	M� block!12=-2 � openmenu%=iconmenu%:a=x-75:b=(5+2)*48:� No. of items+2*48
	$2� block!12=main% � a=x:b=y:openmenu%=mainmenu%
	.G� block!12=toolbox% � block!16=0 � tmopt=0:openmenu%=trees%:a=x:b=y
	8G� block!12=toolbox% � block!16=1 � tmopt=1:openmenu%=trees%:a=x:b=y
	BG� block!12=toolbox% � block!16=2 � tmopt=2:openmenu%=trees%:a=x:b=y
	LE�seticstate(save%,3,1<<21,0<<21):�seticstate(save%,4,1<<21,0<<21)
	V%�seticstate(saved%,3,1<<21,0<<21)
	`�info(save%,1,"TextFile")
	j�
	t�openmenu(a,b)
	~�
	���treemens
	�� block!12<>toolbox% � �
	�Ȏ block!16 �
	�
� 0,2:
	� j=0
	�9 � block!16=2 � $(longdata+(j*13))="�Clear All": j+=1
	� � m=0 � ct
	�
 tick$=""
	� � m=st � tick$="�"
	�  nextit$=�getleaf(troot$(m))
	�E � nextit$="$" � nextit$=�getdiskname(�troot$(m),�(troot$(m))-2))
	�% $(longdata+(j*13))=tick$+nextit$
	 j+=1

 � m
1 trees%=�longmenu("Trees",11*16,j-1,longdata)
� 1:
(- � � arclisted � �makearclist:arclisted=�
2 � arcct=-1 �
<  treemen$="No Archives"
F*  trees%=�menu("Trees",11*16,treemen$)
P �
Z  � m=0 � arcct
d  arcy$=arc$(m)
n!  name$=�arcy$,�arcy$,",")-1)
x  $(longdata+(m*13))=name$
�  �
�4  trees%=�longmenu("Trees",11*16,arcct,longdata)
� �
��
��
���openmenu(x,y)
�&ș"Wimp_CreateMenu",,openmenu%,x,y
��
�ݤmenu(tit$,wid,menu$)
�menu$+=","
�oldmenu=menuptr
�$menuptr=tit$
�menuptr?12=7
menuptr?13=2
menuptr?14=7
menuptr?15=0
"menuptr!16=wid
,menuptr!20=48
6menuptr!24=0
@menuptr+=28
J�
T�thing(menu$)
^menu$=�menu$,�menu$,",")+1)
hmenuptr+=24
r� menu$=""
|)menuptr!-24=(menuptr!-24) � %10000000
�=oldmenu
�(ݤlongmenu(tit$,wid,number,longdata)
�$longmen=tit$
�longmen?12=7
�longmen?13=2
�longmen?14=7
�longmen?15=0
�longmen!16=wid
�longmen!20=48
�longmen!24=0
�� i=0 � number
�ptr=(24*i)+28
�longmen!(ptr)=0
longmen!(ptr+4)=-1
longmen!(ptr+8)=&07000001
data$=$(longdata+(i*13))
&P� �data$,1)="�" � longmen!(ptr)=longmen!(ptr) � %10:data$=�data$,�(data$)-1)
0O� �data$,1)="�" � longmen!(ptr)=longmen!(ptr) � %1:data$=�data$,�(data$)-1)
:$(longmen+(ptr+12))=data$
D�
N+longmen!(ptr)=longmen!(ptr) � %10000000
X=longmen
b��thing(m$)
lm$=�m$,�m$,",")-1)
vi$="":j$=""
�� �m$,"{")>0 �
�i$=�m$,�m$,"}")-1)
�m$=�m$,�m$,"}")+1)
�j$=�i$,�i$,"|")-1)
�i$=�i$,�i$,"|")+1)
��
�ijack=&07000021
�mjack=0
�submenu=-1
� � �j$,"b")>0 � submenu=�(i$)
�"� �j$,"_")>0 � mjack=mjack � 2
�"� �j$,"�")>0 � mjack=mjack � 1
�0� �j$,"u")>0 � mjack=mjack � 2:submenu=�(i$)

!menuptr=mjack

menuptr!4=submenu

menuptr!8=ijack

 $(menuptr+12)=m$

*�

4�

>��click(block)

Hkeepb%=block!12

R*� �checkit(block!12,block!16)=983040 �

\$�slabin(keepb%):�slabout(keepb%)

f�

p&� quiting � quitin=�:�close(quit%)

z'� block!12=-2 � block!8=2 �cmenus:�

�3� block!12=-2 � block!8=4 �openwin(main%):�pane

�=� block!12=-2 � block!8=1 �openwin(new%):�info(new%,1,"")

�*� block!12=main% � block!8=2 �cmenus:�

�Q� block!12=save% � block!16=2 winsave%=block!12:filetype$="file_FFF":�defsave

�R� block!12=saved% � block!16=2 winsave%=block!12:filetype$="file_00D":�defsave

�M� block!12=save% � block!16=0 winsave%=block!12:�save($�info(winsave%,1))

�N� block!12=saved% � block!16=0 winsave%=block!12:�save($�info(winsave%,1))

�.� block!12=save% � block!16=3 � �radiosave

�.� block!12=save% � block!16=4 � �radiosave

�K� block!12=new% � block!16=2 winsave%=block!12:filetype$="new":�defsave

�&� block!12=new% � block!16=4 � �go

�*� block!12=new% � block!16=5 � �drive0

�.� block!12=main% � block!8=4 � �selectitem
-� block!12=main% � block!8=1 � �selection
;� block!12=found% � block!16=7 � found=�:�close(found%)
*� block!12=found% � block!16=6 � �find
$5� block!12=notfnd% � block!16=3 � �close(notfnd%)
..� block!12=toolbox% � block!16=0 � �cmenus
8.� block!12=toolbox% � block!16=1 � �cmenus
B.� block!12=toolbox% � block!16=2 � �cmenus
LD� block!12=toolbox% � block!16=3 � itemno<>-1 � �openwin(iinfo%)
VF� block!12=toolbox% � block!16=4 � �openwin(new%):�info(new%,1,"")
`,� block!12=toolbox% � block!16=5 � �last
j,� block!12=toolbox% � block!16=6 � �next
t6� block!12=toolbox% � block!16=7 � �openwin(find%)
~2� block!12=find% � block!16=16 � �close(find%)
�*� block!12=find% � block!16=15 � �find
�3� block!12=bar% � block!16=0 � �openwin(tinfo%)
�9� block!12=query% � block!16=0 � �close(query%):�endq
�� prequit �
�s� block!12=quit% � block!16=0 � �:ș"Wimp_ProcessKey",&1FC:șreinter,mytask%:ș"Wimp_CloseDown",task,mytask%:�:
�;� block!12=quit% � block!16=2 � �close(quit%):prequit=�
�P� block!12=quit% � block!16=3 � �close(quit%):�openwin(saved%):prequitwait=�
�'� prequit � � prequitwait prequit=�
��
�W� block!12=quit% � block!16=0 � șreinter,mytask%:ș"Wimp_CloseDown",task,mytask%:�
�1� block!12=quit% � block!16=2 � �close(quit%)
�L� block!12=quit% � block!16=3 � �close(quit%):�openwin(saved%):quiting=�
�

�

��process
L� !block=save% � block!24=13 � winsave%=!block:�save($�info(winsave%,1))
(M� !block=saved% � block!24=13 � winsave%=!block:�save($�info(winsave%,1))
2 ș"Wimp_ProcessKey",block!24
<�
F��select
Pnoway=0
Z.ș"Wimp_DecodeMenu",,openmenu%,block,icond
dȎ openmenu% �
n� mainmenu%,iconmenu%:
x,� $icond="Quit" � �areyousure:quiting%=�
�@� $icond="Tools" � toolson � toolson=�:�toolbox(-1):noway=-1
�B� $icond="Tools" � � toolson � noway=0 � toolson=�:�toolbox(1)
�+� $icond="Tree" � �openwin(main%):�pane
�9� $icond="New Tree" � �openwin(new%):�info(new%,1,"")
�8� $icond="Trees.No Tree" � ș"Wimp_CreateMenu",,-1:�
�-� �$icond,5)="Trees" � �opentree(block!4)
�� trees%
�>� $icond="Clear All" � �clearall:ș"Wimp_CreateMenu",,-1:�
�3� $icond="No Trees" � ș"Wimp_CreateMenu",,-1:�
�!� tmopt=0 � �opentree(!block)
� � tmopt=1 � �openarc(!block)
�#� tmopt=2 � �delete((!block)-1)
��
"ș"Wimp_GetPointerInfo",,block
� block!8=1 �
>� menuopen=-44 � rc=1:block!16=ricon:block!12=rmen:�cmenus
""ș"Wimp_CreateMenu",,openmenu%
,�
6ș"Wimp_CreateMenu",,-1
@�
J�
T��radiosave
^
done=0
h� block!16=3 �
r$�seticstate(save%,4,1<<21,0<<21)
|�info(save%,1,"TextFile")
��
�� block!16=4 �
�$�seticstate(save%,3,1<<21,0<<21)
��info(save%,1,"Selection")
��
��
���mess(mess$)
� !icond=0:$(icond+4)=mess$+�0
�,ș"Wimp_ReportError",icond,1,"!DiskTree"
��
�	��out
��dragspr(1)
�(� winsave%=new% � stext=stex:ft=&FFF
)� winsave%=save% � stext=stex:ft=&FFF
+� winsave%=saved% � stext=stexd:ft=&00D
� drive%=1 �
&#ș "Wimp_GetPointerInfo",,block
09ToX=block!0:ToY=block!4:Window=block!12:Icon=block!16
:3mblock!0=256:mblock!12=0:mblock!16=1:� DataSave
D?mblock!20=Window:mblock!24=Icon:mblock!28=ToX:mblock!32=ToY
N7mblock!36=-1:� No idea what the size is going to be
Xmblock!40=ft:
b$stext=$�info(winsave%,1)
l$stext=�getleaf($stext)
v)� I=0 � 255:� I?stext<32 � I?stext=13
��
� $(mblock+44)=�bit($stext)+�0
�.� winsave%=new% � $(mblock+44)="Directory"
�:ș "Wimp_SendMessage",17,mblock,Window,Icon:� DataSave
�drag%=0
��
��
�
��defsave
�	�Mode
�!block=winsave%
�#ș "Wimp_GetWindowState",,block
�ysize%=block!16-block!8
�#x%=block!4:y%=block!8:block!4=2
 ș"Wimp_GetIconState",,block
#block!8+=x%:block!12+=y%+ysize%
$block!16+=x%:block!20+=y%+ysize%
 5block!24=0:block!28=0:block!32=xmax:block!36=ymax
*'!block=0:block!4=5:drag%=�:drive%=1
4� dragspr �
>8ș "DragASprite_Start",%10000101,1,filetype$,block+8
H�dragspr(-1)
R�
\ș"Wimp_DragBox",,block
f�
p�
z
��Mode
�M!block=130:block!4=131:block!8=-1:ș"OS_ReadVduVariables",block,block+128
�)ș"OS_ReadModeVariable",�,4 � ,,Xeig%
�)ș"OS_ReadModeVariable",�,5 � ,,Yeig%
�=xmax=((block!128)+1)*2^Xeig%:ymax=((block!132)+1)*2^Yeig%
��
���save(save$)
�8� ct=-1 � �mess("No directory tree data to save!"):�
�{� �save$,".")<1 � �save$,":")<1 � save$<>"<Wimp$Scrap>" � �mess("To save, drag the file icon to a directory viewer."):�
�� �
�{� � � � �=71622:�query("Disc Full"):ș&0D,0,fh%:ș&406C1:� �:�:� � �:�error(�$+" : at line "+Þ):ș&0D,0,fh%:ș&406C1:�
�� winsave%=saved% �
�ș"Hourglass_On"
�
byte=0
ș"OS_Find",&80,save$ � fh%

endt=tblk
!$endt="DiskTree Data File v�"
$$endt+=�("DiskTree Data File v�")
.$ș"OS_GBPB",2,fh%,tblk,endt-tblk
8<� �checkflag(saved%,3,21) � stt=st:ett=st:� stt=0:ett=ct
B
endt=tblk
LCT$=�fulls(�(ett-stt),3)
V
$endt=CT$
`endt+=3
j$ș"OS_GBPB",2,fh%,tblk,endt-tblk
ttotal1%=0:total2%=0
~(� k=stt � ett:total1%+=tcount(k):� k
�� k=stt � ett
�total2%+=1
�0ș"Hourglass_Percentage",total2%/total1%*100
�ts$=�fulls(�(tsize(k)),7)
�tl$=�fulls(�(tlen(k)),7)
�tc$=�fulls(�(tcount(k)),7)
�$rootl$=�fulls(�(�(troot$(k))),3)
�
endt=tblk
�$endt=ts$+tl$+tc$+rootl$
�endt+=24
�ș"OS_GBPB",2,fh%,tblk,24
�
endt=tblk
$endt=troot$(k)

endt+=�(troot$(k))
'ș"OS_GBPB",2,fh%,tblk,�(troot$(k))
&ș"OS_GBPB",2,fh%,tree(k),tsize(k)
(� k
2ș&0D,0,fh%
<ș"OS_File",18,save$,&00D
F9� save$<>"<Wimp$Scrap>" � � �checkflag(saved%,3,21) �
P!block=main%
Z!ș"Wimp_GetWindowInfo",,block
dsaved=�
nX$(block!76)=save$:ș"Wimp_ForceRedraw",-1,block!4,(block!16)-32,block!12,block!16+36
x�info(saved%,1,save$)
��info(finfo%,3,"No")
��
�ș"Hourglass_Smash"
�A� quiting șreinter,mytask%:ș"Wimp_CloseDown",task,mytask%:�
��
�� winsave%=save% �
�ș"Hourglass_On"
�ș"OS_Find",&80,save$ � fh%
�;� �checkflag(save%,3,21) � stt=st:ett=st:� stt=0:ett=ct
�total1%=0:total2%=0
�(� I=stt � ett:total1%+=tcount(I):� I
�� I=stt � ett
�total2%+=1
0ș"Hourglass_Percentage",total2%/total1%*100

endt=tblk
*$endt="            "+troot$(I)+�10+�10
"'endt+=�("            "+troot$(I))+2
,$ș"OS_GBPB",2,fh%,tblk,endt-tblk
6d� �checkflag(save%,4,21) � s1>-1 � stt=tt:ett=tt:stptr=s1:endptr=s2:� stptr=0:endptr=tcount(I)-1
@ � J=stptr � endptr
J n=J*24
T
 t$=""
^  � h=0 � 2
h  i=n+h
r  t$+=�(tree(I)?i)
|	  � h
� endt=tblk
�  � h=1 � �(t$)
�  $endt=" "
�
  endt+=1
�	  � h
�
 t$=""
�  � h=3 � 12
�  i=n+h
�'  � tree(I)?i<>0 � t$+=�(tree(I)?i)
�	  � h
� $endt=t$+�10
� endt+=�(t$)+1
�% ș"OS_GBPB",2,fh%,tblk,endt-tblk
 � J

endt=tblk
$endt=�10+�10
&endt+=2
0$ș"OS_GBPB",2,fh%,tblk,endt-tblk
:� I
Dș&0D,0,fh%
Nș"OS_File",18,save$,&FFF
XȎ save$ �
b� "<Wimp$Scrap>"
l
v!block=main%
�!ș"Wimp_GetWindowInfo",,block
�saved=�
�X$(block!76)=save$:ș"Wimp_ForceRedraw",-1,block!4,(block!16)-32,block!12,block!16+36
��info(finfo%,3,"No")
��
�ș"Hourglass_Smash"
�A� quiting șreinter,mytask%:ș"Wimp_CloseDown",task,mytask%:�
��
�� �
��
�ݤgetbs(fh%,len)
�string$=""
�� I=1 � len
ș"OS_BGet",,fh% � byte
string$+=�(byte)
�
 =string$
*��messagein
4sendm=&400E7
>ref=block!8:task=block!4
HȎ block!16 �
R� 0:�end
\� 2:
fsave$=�wool(block+44)
p�dragspr(1)
z%� winsave%=new% � �dragnew(save$)
�!� drive%=1 � winsave%<>new% �
��save(save$)
�mblock!0=256
�mblock!12=ref
�mblock!16=3
�mblock!36=-1
�$(mblock+44)=save$
�'ș &400E7,18,mblock,task:� DataLoad
��
�� 3:
�� block!40=&00d �
�&load$=�wool(block+44):�load(load$)
��
�
� block!40<>&00D �
)load$=�wool(block+44):�newtree(load$)
$�
.� 5:
8� block!40=&00D �
Bblock!12=block!8:block!16=4
L+ș sendm,18,block,block!4:� DataLoadAck
V�load(�wool(block+44))
`�
jG� 8:� � prequit block!12=ref:șsendm,19,block:prequit=�:�areyousure
t�
~�
���load(load$)
�in=�
�#� ct=-1 � �info(finfo%,0,load$)
�!ș"OS_Find",&40,load$ � load%
�"Len=�("DiskTree Data File v�")
�title$=�getbs(load%,Len)
�h� title$<>"DiskTree Data File v�" � �query("This is not a true DiskTree Data file!"):ș&0D,0,load%:�
�� �
�s� � � � �=388 �query("Out Of Memory "+Þ):ș&0D,0,load%:� �:�:� � �:�error(�$+" : at line "+Þ):ș&0D,0,load%:�
�nof=�(�getbs(load%,3))
�� m=0 � nof
�TLen=�(�getbs(load%,7))
TLen%=�(TLen/8)*8

)ș"OS_Heap",1,heap% � ,,largest,tfree
� TLen%+1024>largest �
%ș"Wimp_SlotSize",-1,-1 � current
(5ș"Wimp_SlotSize",current+(TLen%-largest)+1024,-1
2!ș"Wimp_SlotSize",-1,-1 � new
<change=new-current
Fș"OS_Heap",5,heap%,,change
Phsizeb+=change
Z�
d	ct+=1
ntsize(ct)=TLen
xtlen(ct)=�(�getbs(load%,7))
�!tcount(ct)=�(�getbs(load%,7))
�rootl=�(�getbs(load%,3))
�"troot$(ct)=�getbs(load%,rootl)
�*ș"OS_Heap",2,heap%,,TLen � ,,tree(ct)
�"ș"OS_Heap",1,heap% � ,,,tfree
�%ș"OS_GBPB",4,load%,tree(ct),TLen
�� m
�ș&0D,0,load%
�!icond=main%
�!ș"Wimp_GetWindowInfo",,icond
�Ysaved=�:$icond!76=load$:ș"Wimp_ForceRedraw",-1,icond!4,icond!16,icond!12,icond!16+36
�ș"Wimp_CloseWindow",,icond
�$�info(saved%,1)=load$
	st=ct
"�newview:�openwin(main%):�pane
�info(finfo%,1,�(ct+1))
"#�info(finfo%,2,�(hsizeb-tfree))
,arclisted=�
6� �
@�
J��openwin(handle%)
TG� handle%=main% � ct=-1 � �query("No directory trees in memory!"):�
^!block=handle%
h!ș"Wimp_GetWindowInfo",,block
ropen=block!32 � (1<<16)
|front=block!32 � (1<<17)
�W� handle%=main% � width>-1 � block!12=block!4+width:block!8=block!16-depth:width=-1
�� open=0 �
�ș"Wimp_OpenWindow",,block
��
�� front=0 �
�*block!28=-1:ș"Wimp_OpenWindow",,block
��
��
�� �slabin(handle)
�!icond=handle
�#ș "Wimp_GetPointerInfo",,icond
�ș "Wimp_BorderIcon",,icond
��
� �slabout(handle)
!icond=handle
#ș "Wimp_GetPointerInfo",,icond
&
icond!8=0
0ș "Wimp_BorderIcon",,icond
:�
D��redraw(handle)
Nsetex=�
X!block=handle
b
�more%
l)ș "Wimp_RedrawWindow",,block � more%
vȕ more%
� Ȏ handle �
� � main%
� �application_redraw
� 
�! ș"Wimp_BorderWindow",,block
� �
�* ș "Wimp_GetRectangle",,block � more%
� �
��
���application_redraw
�workx%=block!4-block!20
�worky%=block!16-block!24
�max=block!32-worky%
min=block!40-worky%
max=(max+46)�36*-1
min=(min+46)�36*-1
 )� max>tcount(st)-1 � max=tcount(st)-1
*� ct=-1 � �
4#tx=workx%:ty=worky%-46-(min*36)
>g=&400E6
Hn=min*24
R� I=min � max
\
 șg,7
f
 t$=""
p   � h=0 � 2
z   i=n+h
�   t$+=�(tree(st)?i)
�
   � h
� len=�(t$)-1
� � len=-1 � len=0
�
 t$=""
�   � h=3 � 12
�   i=n+h
�   t$+=�(tree(st)?i)
�
   � h
�O � itemno=I � șg,9:ȓ Ȑ workx%+0,worky%-0-(I*36+46),tlen(st)*16,-30:șg,7
�V � I>=s1 � I<=s2-1 � șg,7:ȓ Ȑ workx%+0,worky%-0-(I*36+46),tlen(st)*16,-34:șg,0
�K � I=s2 � șg,7:ȓ Ȑ workx%+0,worky%-0-(I*36+46),tlen(st)*16,-30:șg,0
�! � tree(st)?(i+1)=138 � șg,8
 � tx,ty
 � �len)t$
 ty-=36
$
 n+=24
.� I
8tyy=worky%-ty-40
B�
L
��pane
V� ct=-1 � �
`9bar1=block!4:bar2=block!8:bar3=block!12:bar4=block!16
jbar5=block!52:bar6=block!20
t� toolson � �all:� �baronly
~/!block=found%:ș"Wimp_GetWindowInfo",,block
�open=block!32 � (1<<16)
�� open � �openwin(found%)
��
�
��baronly
�front=block!28
�-!icond=bar%:ș"Wimp_GetWindowInfo",,icond
�9icond!4=bar1:icond!8=bar2:icond!12=bar3:icond!16=bar4
�icond!20=bar6
�-icond!28=front:ș"Wimp_OpenWindow",,icond
�,block!28=bar%:ș"Wimp_OpenWindow",,block
��
�	��all
front=block!28

2x1=block!4-94:x2=x1+248:y1=block!8:y2=block!16
size=x2-x1
1!icond=toolbox%:ș"Wimp_GetWindowInfo",,icond
(� x1<0 � x1=0:x2=size
25icond!4=x1:icond!8=y2-570:icond!12=x2:icond!16=y2
<-icond!28=front:ș"Wimp_OpenWindow",,icond
F�
P-!icond=bar%:ș"Wimp_GetWindowInfo",,icond
Z9icond!4=bar1:icond!8=bar2:icond!12=bar3:icond!16=bar4
dicond!20=bar6
n0icond!28=toolbox%:ș"Wimp_OpenWindow",,icond
x,block!28=bar%:ș"Wimp_OpenWindow",,block
��
� ��adjustwin(newxmax,newymin)
�-!icond=bar%:ș"Wimp_GetWindowInfo",,icond
�icond!52=newxmax
�$ș"Wimp_SetExtent",bar%,icond+44
�.!icond=main%:ș"Wimp_GetWindowInfo",,icond
�%icond!48=newymin:icond!52=newxmax
�%ș"Wimp_SetExtent",main%,icond+44
�6!icond=bar%:icond!4=0:ș"Wimp_GetIconState",,icond
�ș"Wimp_DeleteIcon",,icond
�0icond=icond+4:icond!12=newxmax+2:!icond=bar%
�%ș"Wimp_CreateIcon",0,icond � ic%
��
��toolbox(flag)
;� flag=-1 � !block=toolbox%:ș"Wimp_CloseWindow",,block
� flag=1 �
"!block=main%
,"ș"Wimp_GetWindowState",,block
6open=block!32 � (1<<16)
@"� open<>0 � !icond=main%:�pane
J�
T�
^��error(err$)
hM!icond=0:$(icond+4)=err$+"."+" Press OK to continue or Cancel to quit"+�0
r3ș"Wimp_ReportError",icond,3,"!DiskTree" � ,but
|A� but=2 � șreinter,mytask%:ș"Wimp_CloseDown",task,mytask%:�
��
���areyousure
�
� saved �
��openwin(quit%)
�� 7
�1�info(quit%,1,"Your file has been modified.")
�M!block=130:block!4=131:block!8=-1:ș"OS_ReadVduVariables",block,block+128
�%ș"OS_ReadModeVariable",�,4 � ,,x
�%ș"OS_ReadModeVariable",�,5 � ,,y
�9ȗ ȓ 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y
��
�A� � saved șreinter,mytask%:ș"Wimp_CloseDown",task,mytask%:�
��
 ��query(qu$)
 �openwin(query%)
 � 7
 &!block=query%
 0!ș"Wimp_GetWindowInfo",,block
 :workx%=block!12-block!4
 Dworky%=block!16-block!8
 N'ȗ ȓ block!4,block!8,workx%,worky%
 X�info(query%,1,qu$)
 b�
 l
��endq
 v�close(query%)
 �M!block=130:block!4=131:block!8=-1:ș"OS_ReadVduVariables",block,block+128
 �%ș"OS_ReadModeVariable",�,4 � ,,x
 �%ș"OS_ReadModeVariable",�,5 � ,,y
 �9ȗ ȓ 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y
 ��
 ���close(!block)
 �ș"Wimp_CloseWindow",,block
 ��
 ���dragspr(flag)
 �� dragspr �
 �
Ȏ flag �
 �� 1:
 �;!block=winsave%:block!4=2:ș "Wimp_GetIconState",,block
!,block!8=0:block!12=0:$(block!32)=dindir$
!!ș "Wimp_SetIconState",,block
!ș "DragASprite_Stop"
! 	� -1:
!*;!block=winsave%:block!4=2:ș "Wimp_GetIconState",,block
!4dindir$=$(block!32)
!>(block!8=0:block!12=0:$(block!32)=�13
!H!ș "Wimp_SetIconState",,block
!R�
!\�
!f�
!p��newtree(file$)
!z%� block!40=4096 � block!40=8192 �
!�path$=file$+"."
!��info(new%,1,path$)
!��openwin(new%)
!��
!��
!�path$=�getleaf(file$)
!�#path$=�file$,�(file$)-�(path$))
!��info(new%,1,path$)
!��
!���dragnew(path$)
!�+block!40=4096:path$=�path$,�(path$)-10)
!��newtree(path$)
!��
"��drive0
"=ș"OS_FSControl",37,"ADFS::0.$",tblk,0,0,1024 � ,,,,,tlen
"'�info(new%,1,�$tblk,1024-tlen)+".")
"$�
".��go
"8L� ct=maxno � �mess("There is no me free trees available in this file"):�
"B#arcx=0:prearcx=-1:arcs=�:apps=�
"L arcs=� �checkflag(new%,0,21)
"V apps=� �checkflag(new%,3,21)
"`root$=$�info(new%,1)
"jD� root$="" � �mess("You have not entered a path to catalogue"):�
"troot$=�root$,�(root$)-1)
"~ș"OS_File",20,root$ � type
"�C� type<>2 � �mess("The path to catalogue has not been found"):�
"�
Ȏ arcs �
"�� �:
"�$tblk="ArcFS"
"�ș"XOS_Module",18,tblk � r0
"�� r0<>18 �
"� �ask("ArcFS not present. Only able to create trees of archives if ArcFS is present. Continue without archives?")=1 � arcs=�:� �close(new%):�
"��
"��
"� ș"XOS_File",13,root$ � type
"�`� type<2 � type>3  � �query("Path to create tree from is not a directory/does not exist."):�
"�endlisty=0:nlen=0:stop=�
#botLED=%10:totsize=0
#
count=0
#	ct+=1
#ș"Hourglass_On"
#((ș"OS_Heap",1,heap% � ,,membuf,tfree
#2membuf=membuf-1024
#<� membuf<1024 �
#F%ș"Wimp_SlotSize",-1,-1 � current
#P)ș"Wimp_SlotSize",current+(8*1024),-1
#Z!ș"Wimp_SlotSize",-1,-1 � new
#dchange=new-current
#nș"OS_Heap",5,heap%,,change
#xhsizeb+=change
#�membuf+=change
#��
#�,ș"OS_Heap",2,heap%,,membuf � ,,tree(ct)
#�object=0
#�endtext%=tree(ct)
#�dir$=""
#�x=0
#�lastdir(0)=0
#�start=�
#��
#�object=lastdir(x)
#��gotree
#�� stop � �
$� endlisty=1 � �
$�
$dir$=�dir$,(�dir$)-1)
$"� �dir$,�dir$)="."
$,dir$=�dir$,(�dir$)-1)
$6� �
$@�
$J��gotree
$T�
$^Aș"OS_GBPB",10,root$+dir$,buffer,1,object,63 � ,,,reader,last
$h� last<>-1 �
$rfile$=""
$|buff=20
$��
$�file$+=�buffer?buff
$�buff+=1
$��buffer?buff=0
$�)� �file$,1)=�0 file$=�file$,�file$-1)
$�length=buffer!8
$�type=buffer!16
$�<ș"OS_File",20,root$+dir$+"."+file$ � type,,,,,,filetype
$�=� filetype=4096 � filetype=8192 � length=-1 � length=2048
$�� type=2 ext$="�" � ext$=�0
$�9� filetype=4096 � type=3 � filet$="DDC":filetype=&DDC
$�#� arcs � filetype=&DDC ext$="�"
$� nlent=�(dir$+file$)-x+1+arcx
%� nlent>nlen � nlen=nlent
%predicted=endtext%-tree(ct)
%"� predicted>membuf-1024 � �mem
%&� stop � �
%0fi$=�fulls(file$,10)
%:%di$=�fulls(�((�dir$)-x+arcx+1),3)
%Dleng$=�fulls(�length,7)
%Nfilet$=�~filetype
%X"� filetype=4096 � filet$="DIR"
%b"� filetype=8192 � filet$="APP"
%l5� �(filet$)<3 � �:filet$="0"+filet$:� �(filet$)=3
%v'$endtext%=di$+fi$+ext$+leng$+filet$
%�endtext%+=24
%�totsize+=length
%�
object+=1
%�count+=1
%�*� botLED=%01 � botLED=%10 � botLED=%01
%�!ș"Hourglass_LEDs",%11,botLED
%�� arcs � filetype=&DDC �
%�Xprearcroot$=root$:prearcdir$=dir$:prearclast=object:lastdir(x)=object:prearcx=x:x+=1
%�*�("OpenArchive "+root$+dir$+"."+file$)
%�Rroot$="ArcFS#"+file$+":$":arcname$=file$:object=0:arcx=�(dir$+file$)+1:dir$=""
%�1arcct+=1:arc$(arcct)=file$+","+�count+","+�ct
%��
%�G� filetype=4096 dir$=dir$+"."+file$:lastdir(x)=object:x+=1:object=0
&N� filetype=8192 � apps dir$=dir$+"."+file$:lastdir(x)=object:x+=1:object=0
&�
&� reader=0
& x-=1
&*"� x=-1 � prearcx=-1 �endoflist
&4�� x=prearcx � prearcx>-1 � x=prearcx:root$=prearcroot$:dir$=prearcdir$:object=prearclast:lastdir(x)=object:prearcx=-1:arcx=0:�("CloseArchive "+arcname$):�gotree
&>� endlisty=1 � �
&H�
&R��endoflist
&\finish=�-start
&f+$endtext%=�17+�totsize+�18+�finish+�255
&p#endtext%+=�(�totsize+�finish)+3
&ztsize(ct)=endtext%-tree(ct)
&�9tcount(ct)=count:tlen(ct)=nlen:st=ct:troot$(ct)=root$
&�*ș"OS_Heap",6,heap%,tree(ct) � ,,,curb
&�@ș"OS_Heap",4,heap%,tree(ct),(tsize(ct)-curb)+8 � ,,tree(ct)
&�ș"Hourglass_Smash"
&�endlisty=1
&�+!block=new%:ș"Wimp_CloseWindow",,block
&�-!block=tinfo%:ș"Wimp_CloseWindow",,block
&�-!block=finfo%:ș"Wimp_CloseWindow",,block
&�-!block=iinfo%:ș"Wimp_CloseWindow",,block
&��info(finfo%,1,�(ct+1))
&�#�info(finfo%,2,�(hsizeb-tfree))
&�<� $�info(finfo%,0)="None" � �info(finfo%,0,"<Untitled>")
&�� saved=� �
'saved=�
'!icond=main%
'!ș"Wimp_GetWindowInfo",,icond
'$ $(icond!76)=$(icond!76)+" *"
'.Fș"Wimp_ForceRedraw",-1,block!4,(block!16)-32,block!12,block!16+36
'8�info(finfo%,3,"Yes")
'B�
'L,!block=main%:ș"Wimp_CloseWindow",,block
'V"�newview:�openwin(main%):�pane
'`�
'j	��mem
't)ș"OS_Heap",6,heap%,tree(ct) � ,,,ohs
'~ ș"OS_ReadMemMapInfo" � page
'�%ș"Wimp_SlotSize",-1,-1 � current
'�%ș"Wimp_SlotSize",current+page,-1
'�!ș"Wimp_SlotSize",-1,-1 � new
'�change=new-current
'��� change=0 � �query("Out Of Memory. Free more memory and try again."):ct-=1:ș&1D,3,heap%,tree(ct):stop=�:ș"Hourglass_Smash":�
'�ș"OS_Heap",5,heap%,,change
'�4ș"OS_Heap",4,heap%,tree(ct),change � ,,tree(ct)
'�)ș"OS_Heap",6,heap%,tree(ct) � ,,,nhs
'�hsizeb+=change
'�membuf+=nhs-ohs
'��
'���makearclist
( � j=0 � maxno: arc$(j)="": �
(

aind=0
(� j=0 � ct
( � count=0 � tcount(j)
(( index=count*24
(2
 type$=""
(<  � h=21 � 23
(F!  type$+=�(tree(j)?(index+h))
(P  �
(Z � type$="DDC" �
(d  t$=""
(n  � h=3 � 12
(x  val=tree(j)?(index+h)
(�  � val<>0 � t$+=�val
(�  �
(�B  � aind<maxno � arc$(aind)=t$+","+�(count+1)+","+�(j):aind+=1
(�  �
(� � count
(�� j
(�arcct=aind-1
(��
(�
��last
(�� st=0 � �
(�	st-=1
(�,!block=main%:ș"Wimp_CloseWindow",,block
(��newview
)�openwin(main%)
)�close(find%)
)�close(iinfo%)
)"�close(tinfo%)
),�close(notfnd%)
)6�close(found%)
)@	�pane
)J�
)T
��next
)^� st=ct � �
)h	st+=1
)r,!block=main%:ș"Wimp_CloseWindow",,block
)|�newview
)��openwin(main%)
)��close(find%)
)��close(iinfo%)
)��close(tinfo%)
)��close(notfnd%)
)��close(found%)
)�	�pane
)��
)�
��newview
)�� ct=-1 � �
)��info(bar%,0,troot$(st))
)�tptr=tcount(st)*24+1
)�
sizeb$=""
*�
*"sizeb$=sizeb$+�(tree(st)?tptr)
*tptr+=1
*&� tree(st)?tptr=18
*0tptr+=1
*:finishs$=""
*D�
*N&finishs$=finishs$+�(tree(st)?tptr)
*Xtptr+=1
*b� tree(st)?tptr=255
*l�info(tinfo%,0,troot$(st))
*v�info(tinfo%,1,�tcount(st))
*��info(tinfo%,2,�tsize(st))
*��info(tinfo%,3,sizeb$)
*��info(tinfo%,7,finishs$)
*�.xalt=tlen(st)*16:yalt=0-(tcount(st)*36+40)
*��adjustwin(xalt,yalt)
*�
itemno=-1
*�$�seticstate(find%,4,1<<22,1<<22)
*�
depth=568
*�5� tcount(st)*36+40<depth � depth=tcount(st)*36+40
*�width=tlen(st)*16
*�� width>500 � width=500
*��
*���selectitem
+olditemno=itemno
+ycoord=block!4
+.!block=main%:ș"Wimp_GetWindowInfo",,block
+ workx%=block!4-block!20
+*worky%=block!16-block!24
+4ycoord=0-(block!16-ycoord)
+>ycoord=ycoord+block!24
+H!itemno=�((ycoord-40)/36)*-1-3
+R
itemst=st
+\� olditemno=itemno � �
+fycoord=0-(itemno*36+44)
+p=ș"Wimp_ForceRedraw",main%,1,ycoord-32,tlen(st)*16,ycoord
+zycoord=0-(olditemno*36+44)
+�=ș"Wimp_ForceRedraw",main%,1,ycoord-32,tlen(st)*16,ycoord
+��putinfo(itemno)
+�$�seticstate(find%,4,1<<22,0<<22)
+��
+���putinfo(itemno)
+�n=itemno*24
+�	t$=""
+�*� h=3 � 12:i=n+h:t$+=�(tree(st)?i):� h
+�'�info(iinfo%,0,troot$(st)+"..."+t$)
+�	t$=""
+�+� h=14 � 20:i=n+h:t$+=�(tree(st)?i):� h
+��info(iinfo%,4,t$)
+�	t$=""
,+� h=21 � 23:i=n+h:t$+=�(tree(st)?i):� h
,te$="&"+t$+"     ("+t$+")"
,tblk=tt
,$5ș"XOS_FSControl",18,,�hextodec(t$) � r0,,r2%,r3%
,.
� r0=18 �
,8/tblk!0=r2%:tblk!4=r3%:tblk?8=13:type$=$tblk
,Bte$=type$+" ("+t$+")"
,L�
,Vst$="sfile_"+t$
,`0� t$="APP" � te$="Application   ":st$="sapp"
,j0� t$="DIR" � te$="Directory     ":st$="sdir"
,t!�indir(iinfo%,1,"","b0;"+st$)
,~�info(iinfo%,3,te$)
,��
,���selection
,� olds1=s1:olds2=s2:olditem=ss
,�ycoord=block!4
,�.!block=main%:ș"Wimp_GetWindowInfo",,block
,�workx%=block!4-block!20
,�worky%=block!16-block!24
,�ycoord=0-(block!16-ycoord)
,�ycoord=ycoord+block!24
,�ss=�((ycoord-40)/36)*-1-3
,�E�seticstate(save%,4,1<<22,1<<22):�seticstate(save%,4,1<<21,0<<21)
,�� olditem=ss �
-s1=-1:s2=-1
-
ycoord=0-(olds1*36+44)
-Eș"Wimp_ForceRedraw",main%,1,ycoord-(olds2*36),tlen(st)*16,ycoord
-�
-(�
-2gap=s2-s1:gap=gap/2
-<� s1=-1 � s1=ss
-F� ss>s1+gap � s2=ss
-P� ss<s1 � s1=ss
-Z� ss<s1+gap � s1=ss
-d� ss=s1+gap � s2=ss
-n'� s1>s2 � s2>-1 � sc=s2:s1=s2:s2=sc
-x6� s1>-1 � s2>-1 � �seticstate(save%,4,1<<22,0<<22)
-�ycoord=0-(olds1*36+44)
-�Eș"Wimp_ForceRedraw",main%,1,ycoord-(olds2*36),tlen(st)*16,ycoord
-�ycoord=0-(s1*36+44)
-�Bș"Wimp_ForceRedraw",main%,1,ycoord-(s2*36),tlen(st)*16,ycoord
-��
-�%��indir(handle,icon,text$,indir$)
-�;!block=handle:block!4=icon:ș"Wimp_GetIconState",,block
-�=$(block!28)=text$:$(block!32)=indir$:block!36=�(indir$)+1
-�block!8=0:block!12=0
-� ș"Wimp_SetIconState",,block
-��
-���scroll
-�(pagesize=�((block!16-block!8-40)/36)
.5� block!32=1 � block!20=block!20+(tlen(st)*16)/10
.6� block!32=-1 � block!20=block!20-(tlen(st)*16)/10
.<� block!36=1 � topno=�(block!24/36):block!24=topno*36+36
."�� block!36=-1 � ycoord=0-(block!16-block!8)+block!24:botno=�((ycoord-40)/36)*-1-3:botno=botno*36+36+40:block!24-=ycoord+botno
.,4� block!32=2 � block!20=block!20+(tlen(st)*16)/5
.65� block!32=-2 � block!20=block!20-(tlen(st)*16)/5
.@I� block!36=2 � topno=�(block!24/36)*-1:block!24=0-(topno-pagesize)*36
.J�� block!36=-2 � ycoord=(0-(block!16-block!8))+block!24:botno=�((ycoord-40)/36)*-1-3:botno=(botno+pagesize-1)*36+36+40:block!24-=ycoord+botno
.Tș"Wimp_OpenWindow",,block
.^�
.h��delete(no)
.rdone=-1
.|
� no=ct �
.� ș"OS_Heap",3,heap%,tree(ct)
.�)ș"OS_Heap",1,heap% � ,,largest,tfree
.�)ș"OS_Heap",5,heap%,,0-(largest-1024)
.� hsizeb=hsizeb-(largest-1024)
.�	ct-=1
.�
done=1
.��
.�� no<>ct � done=-1 �
.�� j=no � ct
.�ș"OS_Heap",3,heap%,tree(j)
.��
.�� j=no � ct-1
.�/ș"OS_Heap",2,heap%,,tsize(j+1) � ,,tree(j)
/ � I=0 � tsize(j+1) � 4
/ tree(j)!I=tree(j+1)!I
/ � I
/&-tsize(j)=tsize(j+1):tcount(j)=tcount(j+1)
/0+tlen(j)=tlen(j+1):troot$(j)=troot$(j+1)
/:� j
/D	ct-=1
/N)ș"OS_Heap",1,heap% � ,,largest,tfree
/X)ș"OS_Heap",5,heap%,,0-(largest-1024)
/b hsizeb=hsizeb-(largest-1024)
/l�
/v ș"OS_ReadMemMapInfo" � page
/�%ș"Wimp_SlotSize",-1,-1 � current
/�� largest>page �
/�&amount=�((largest-1024)/page)*page
/�>� current-amount<=origappsize � amount=current-origappsize
/�'ș"Wimp_SlotSize",current-amount,-1
/��
/�� ct=-1 � �clearall:�
/�� st>=no � st-=1
/�� st=-1 � st=0
/��info(finfo%,1,�(ct+1))
/�#�info(finfo%,2,�(hsizeb-tfree))
/�� saved=� �
/��info(finfo%,3,"Yes")
0saved=�
0!icond=main%
0!ș"Wimp_GetWindowInfo",,icond
0  $(icond!76)=$(icond!76)+" *"
0*Fș"Wimp_ForceRedraw",-1,block!4,(block!16)-32,block!12,block!16+36
04�
0>,!block=main%:ș"Wimp_CloseWindow",,block
0Harclisted=�
0R"�newview:�openwin(main%):�pane
0\�
0f��clearall
0p
� ct>-1 �
0z� I=0 � ct
0�ș"OS_Heap",3,heap%,tree(I)
0��
0�)ș"OS_Heap",1,heap% � ,,largest,tfree
0�)ș"OS_Heap",5,heap%,,0-(largest-1024)
0�ș"Wimp_SlotSize",orig,-1
0��
0�)ș"OS_Heap",1,heap% � ,,largest,tfree
0�hsizeb=largest
0�	ct=-1
0�.!block=main%:ș"Wimp_GetWindowInfo",,block
0�$(block!76)="<Untitled>"
0�ș"Wimp_CloseWindow",,block
0��info(finfo%,0,"None")
1�info(finfo%,1,"0")
1�info(finfo%,2,"0")
1�info(finfo%,3,"No")
1$saved=�
1.+!block=new%:ș"Wimp_CloseWindow",,block
18-!block=tinfo%:ș"Wimp_CloseWindow",,block
1B-!block=finfo%:ș"Wimp_CloseWindow",,block
1L-!block=iinfo%:ș"Wimp_CloseWindow",,block
1V+!block=bar%:ș"Wimp_CloseWindow",,block
1`/!block=toolbox%:ș"Wimp_CloseWindow",,block
1jst=0
1tarclisted=�
1~�
1���opentree(no)
1�	st=no
1��newview
1�,!block=main%:ș"Wimp_CloseWindow",,block
1��openwin(main%):�pane
1��
1���openarc(no)
1�use$=arc$(no)
1�str$=�use$,�use$,","))
1�#numb$=�use$,�(use$)-�use$,","))
1�oct$=�numb$,�numb$,",")-1)
1�x$=�numb$,�numb$-�oct$-1)
2oldst=st
2
st=�(x$)
2�goto(�(oct$)-1)
2�
2(��goto(ino)
22�info(bar%,0,troot$(st))
2<tptr=tcount(st)*24+1
2F
sizeb$=""
2P�
2Z"sizeb$=sizeb$+�(tree(st)?tptr)
2dtptr+=1
2n� tree(st)?tptr=18
2xtptr+=1
2�finishs$=""
2��
2�&finishs$=finishs$+�(tree(st)?tptr)
2�tptr+=1
2�� tree(st)?tptr=255
2��info(tinfo%,0,troot$(st))
2��info(tinfo%,1,�tcount(st))
2��info(tinfo%,2,�tsize(st))
2��info(tinfo%,3,sizeb$)
2��info(tinfo%,7,finishs$)
2�(� uptot>-1 � uptot<>origt � �newview
2�� oldst<>st � �newview
2�oldst=-1
3,!block=main%:ș"Wimp_CloseWindow",,block
3�openwin(main%):�pane
3.!block=main%:ș"Wimp_GetWindowInfo",,block
3"workx%=block!4-block!20
3,worky%=block!16-block!24
36ycoord=0-(itemno*36+44)
3@itemno=ino
3J!block!24=0-((itemno-2)*36+44)
3Tș"Wimp_OpenWindow",,block
3^=ș"Wimp_ForceRedraw",main%,1,ycoord-32,tlen(st)*16,ycoord
3h�
3r
��find
3|�close(find%)
3��close(found%)
3�$� �checkflag(find%,1,21) � opt=1
3�$� �checkflag(find%,6,21) � opt=2
3�$� �checkflag(find%,9,21) � opt=3
3�
from=0
3�J� �checkflag(find%,17,21) � sttree=st:endtree=st � sttree=0:endtree=ct
3�B� �checkflag(find%,4,21) � from>-1 � from=itemno:sttree=itemst
3�origt=st
3�� � found �
3�nonefnd=-1
3�totalcnt=0
3�� n=sttree � endtree
3�totalcnt=+tcount(n)
4� n
4nowon=0
4�
4&Ȏ opt �
40� 1:
4:search$=$�info(find%,2)
4D tex$=search$:tex2$="Name :-"
4Nsearch$=�fulls(search$,10)
4Xcase=�checkflag(find%,3,21)
4b%� � case � search$=�caps(search$)
4l4� found � �checkflag(find%,18,21) � sttree=uptot
4v� ontree=sttree � endtree
4�!� found � from=upto+1:found=�
4�
st=ontree
4�
n=from*24
4�ș"Hourglass_On"
4�� I=from � tcount(st)
4�
 nowon+=1
4�
 t$=""
4� � h=3 � 12
4�
 i=n+h
4� t$+=�(tree(st)?i)
4� � h
4� � � case � t$=�caps(t$)
4�] � t$=search$ � ș"Hourglass_Smash":nonefnd=1:upto=I:uptot=ontree:�goto(I):�found(I,st):�
5
 n+=24
50 ș"Hourglass_Percentage",nowon/totalcnt*100
5� I
5 from=0:upto=0
5*� ontree
54ș"Hourglass_Smash"
5>�
5H� 2:
5RSearch$=$�info(find%,7)
5\� �Search$,1)="&" �
5fsearch$=Search$
5p"search$=�search$,�(search$)-1)
5z&� �search$>3 � search$=�search$,3)
5�,� �search$<3 � search$=�longs(search$,3)
5�$tex$="&"+search$:tex2$="Type :-"
5��
5�� �Search$,1)<>"&" �
5�search$=Search$
5�/ș"XOS_FSControl",31,search$ � r0,,filetype
5�Q� r0<>31 � �mess("File type not recognised; Try entering file type number"):�
5�search$=�~filetype
5�,� �search$<3 � search$=�longs(search$,3)
5�$tex$="&"+search$:tex2$="Type :-"
5��
5�4� found � �checkflag(find%,18,21) � sttree=uptot
5� � ontree=sttree � endtree
6" � found � from=upto+1:found=�
6 st=ontree
6 n=from*24
6$ ș"Hourglass_On"
6. � I=from � tcount(st)
68  nowon+=1
6B  t$=""
6L  � h=21 � 23
6V  i=n+h
6`  t$+=�(tree(st)?i)
6j	  � h
6t^  � t$=search$ � ș"Hourglass_Smash":nonefnd=1:upto=I:uptot=ontree:�goto(I):�found(I,st):�
6~  n+=24
6�1  ș"Hourglass_Percentage",nowon/totalcnt*100
6� � I
6�from=0:upto=0
6�� ontree
6�ș"Hourglass_Smash"
6��
6�� 3:
6�search$=$�info(find%,11)
6�search2$=$�info(find%,12)
6�search=�(search$)*1000
6�search2=�(search2$)*1000
6�.tex$=�((search+search2)/2):tex2$="Size :-"
7search$=�fulls(search$,10)
7
4� found � �checkflag(find%,18,21) � sttree=uptot
7� ontree=sttree � endtree
7!� found � from=upto+1:found=�
7(
st=ontree
72
n=from*24
7<ș"Hourglass_On"
7F� I=from � tcount(st)
7P
 nowon+=1
7Z
 t$=""
7d � h=14 � 20
7n
 i=n+h
7x t$+=�(tree(st)?i)
7� � h
7� t=�(t$)
7�g � t>search � t<search2 � ș"Hourglass_Smash":nonefnd=1:upto=I:uptot=ontree:�goto(I):�found(I,st):�
7�
 n+=24
7�0 ș"Hourglass_Percentage",nowon/totalcnt*100
7�� I
7�from=0:upto=0
7�� ontree
7�ș"Hourglass_Smash"
7��
7��
7�st=origt
7��info(notfnd%,1,tex$)
8�info(notfnd%,2,tex2$)
8�openwin(notfnd%)
8found=�
8"�
8,��found(item,trno)
86
n=item*24
8@	t$=""
8J*� h=3 � 12:i=n+h:t$+=�(tree(st)?i):� h
8T�info(found%,3,t$)
8^	t$=""
8h4� h=14 � 20:i=n+h:t$+=�(tree(st)?i):� h:size$=t$
8r	t$=""
8|+� h=21 � 23:i=n+h:t$+=�(tree(st)?i):� h
8�te$="&"+t$+"     ("+t$+")"
8�tblk=tt
8�6ș"XOS_ReadVarVal","File$Type_"+t$,tblk,512 � ,,br
8�
� br<>0 �
8�type$=""
8�� s=0 � br-1
8�type$+=�tblk?s
8�� s
8�� �(type$)<8 �
8��
8�type$=type$+" "
8�� �(type$)=8
8��
9te$=type$+" ("+t$+")"
9�
9st$="sfile_"+t$
9&0� t$="APP" � te$="Application   ":st$="sapp"
900� t$="DIR" � te$="Directory     ":st$="sdir"
9:!�indir(found%,1,"","b0;"+st$)
9DC� opt=1 � opt=2 �info(found%,2,"Type"):�info(found%,4,te$):�te$
9N8� opt=3 �info(found%,2,"Size"):�info(found%,4,size$)
9X�openwin(found%)
9bfound=�
9l�putinfo(item)
9v�
9�ݤhextodec(string$)
9�total=0
9�strlen=�string$
9�� I=strlen-1 � 0 � -1
9�next$=�string$,1)
9�
val=-1
9�� next$="0" � val=0
9�� next$="1" � val=1
9�� next$="2" � val=2
9�� next$="3" � val=3
9�� next$="4" � val=4
9�� next$="5" � val=5
9�� next$="6" � val=6
:� next$="7" � val=7
:� next$="8" � val=8
:� next$="9" � val=9
: $� next$="A" � next$="a" � val=10
:*$� next$="B" � next$="b" � val=11
:4$� next$="C" � next$="c" � val=12
:>$� next$="D" � next$="d" � val=13
:H$� next$="E" � next$="e" � val=14
:R$� next$="F" � next$="f" � val=15
:\� val=-1 � val=0
:ftotal+=val*16^I
:p"string$=�string$,�(string$)-1)
:z�
:�
=total
�
00000000  0d 00 0a 24 ee 20 85 20  f2 6d 65 73 73 28 f6 24  |...$. . .mess(.$|
00000010  2b 22 20 3a 20 61 74 20  6c 69 6e 65 20 22 2b c3  |+" : at line "+.|
00000020  9e 29 3a e0 0d 00 14 1d  f4 20 2a 3e 24 2e 21 44  |.):...... *>$.!D|
00000030  69 73 6b 54 72 65 65 2e  21 52 75 6e 49 6d 61 67  |iskTree.!RunImag|
00000040  65 0d 00 1e 3a f4 20 2a  4d 61 69 6e 20 50 72 6f  |e...:. *Main Pro|
00000050  67 72 61 6d 20 66 6f 72  20 21 44 69 73 6b 54 72  |gram for !DiskTr|
00000060  65 65 20 2d 20 44 69 72  65 63 74 6f 72 79 20 54  |ee - Directory T|
00000070  72 65 65 20 43 72 65 61  74 6f 72 0d 00 28 20 f4  |ree Creator..( .|
00000080  20 2a 56 65 72 73 69 6f  6e 20 31 2e 30 37 20 28  | *Version 1.07 (|
00000090  31 32 20 41 75 67 20 27  39 35 29 0d 00 32 18 f4  |12 Aug '95)..2..|
000000a0  20 2a 41 75 74 68 75 72  20 4a 2e 20 52 6f 62 62  | *Authur J. Robb|
000000b0  69 6e 73 0d 00 3c 0d 6d  61 78 6e 6f 3d 31 35 30  |ins..<.maxno=150|
000000c0  0d 00 46 45 de 20 62 6c  6f 63 6b 20 26 31 30 30  |..FE. block &100|
000000d0  30 2c 20 6d 65 6e 75 25  20 32 30 34 38 2c 20 63  |0, menu% 2048, c|
000000e0  75 72 62 75 66 25 20 37  2a 31 30 32 34 2c 20 69  |urbuf% 7*1024, i|
000000f0  63 6f 6e 64 20 32 30 34  38 2c 20 6d 62 6c 6f 63  |cond 2048, mbloc|
00000100  6b 20 32 35 36 0d 00 50  33 de 20 6c 6f 6e 67 64  |k 256..P3. longd|
00000110  61 74 61 20 28 6d 61 78  6e 6f 2a 31 33 29 2b 32  |ata (maxno*13)+2|
00000120  34 2c 20 6c 6f 6e 67 6d  65 6e 20 28 6d 61 78 6e  |4, longmen (maxn|
00000130  6f 2a 32 34 29 2b 34 38  0d 00 5a 32 de 20 74 72  |o*24)+48..Z2. tr|
00000140  65 65 28 6d 61 78 6e 6f  29 2c 6c 61 73 74 64 69  |ee(maxno),lastdi|
00000150  72 28 32 35 36 29 2c 62  75 66 66 65 72 20 36 33  |r(256),buffer 63|
00000160  2c 74 62 6c 6b 20 31 30  32 34 0d 00 64 46 de 20  |,tblk 1024..dF. |
00000170  74 73 69 7a 65 28 6d 61  78 6e 6f 29 2c 74 63 6f  |tsize(maxno),tco|
00000180  75 6e 74 28 6d 61 78 6e  6f 29 2c 74 6c 65 6e 28  |unt(maxno),tlen(|
00000190  6d 61 78 6e 6f 29 2c 74  72 6f 6f 74 24 28 6d 61  |maxno),troot$(ma|
000001a0  78 6e 6f 29 2c 61 72 63  24 28 6d 61 78 6e 6f 29  |xno),arc$(maxno)|
000001b0  0d 00 6e 19 65 6e 64 62  75 66 25 3d 63 75 72 62  |..n.endbuf%=curb|
000001c0  75 66 25 2b 26 36 30 30  30 0d 00 78 4c 65 6e 64  |uf%+&6000..xLend|
000001d0  25 3d 2d 31 3a 74 6f 6f  6c 73 6f 6e 3d b9 3a 71  |%=-1:toolson=.:q|
000001e0  75 69 74 69 6e 67 3d a3  3a 74 6f 74 61 6c 6c 65  |uiting=.:totalle|
000001f0  6e 3d 30 3a 66 6f 75 6e  64 3d a3 3a 75 70 74 6f  |n=0:found=.:upto|
00000200  3d 2d 31 3a 75 70 74 6f  74 3d 2d 31 3a 6f 6c 64  |=-1:uptot=-1:old|
00000210  73 74 3d 2d 31 0d 00 82  3e 73 61 76 65 64 3d a3  |st=-1...>saved=.|
00000220  3a 70 72 65 71 75 69 74  77 61 69 74 3d a3 3a 70  |:prequitwait=.:p|
00000230  72 65 71 75 69 74 3d a3  3a 73 65 6c 3d 2d 31 3a  |requit=.:sel=-1:|
00000240  74 74 3d 74 62 6c 6b 3a  61 72 63 6c 69 73 74 65  |tt=tblk:arcliste|
00000250  64 3d a3 0d 00 8c 4c 69  6e 3d a3 3a 73 74 61 72  |d=....Lin=.:star|
00000260  74 65 64 3d 30 3a 63 74  3d 2d 31 3a 61 72 63 63  |ted=0:ct=-1:arcc|
00000270  74 3d 2d 31 3a 77 69 64  74 68 3d 2d 31 3a 69 74  |t=-1:width=-1:it|
00000280  65 6d 6e 6f 3d 2d 31 3a  72 63 3d 2d 31 3a 73 31  |emno=-1:rc=-1:s1|
00000290  3d 2d 31 3a 73 32 3d 2d  31 3a 73 73 3d 2d 31 0d  |=-1:s2=-1:ss=-1.|
000002a0  00 96 12 74 61 73 6b 3d  26 34 42 35 33 34 31 35  |...task=&4B53415|
000002b0  34 0d 00 a0 40 c8 99 20  22 57 69 6d 70 5f 49 6e  |4...@.. "Wimp_In|
000002c0  69 74 69 61 6c 69 73 65  22 2c 32 30 30 2c 74 61  |itialise",200,ta|
000002d0  73 6b 2c 22 21 44 69 73  6b 54 72 65 65 22 20 b8  |sk,"!DiskTree" .|
000002e0  20 76 65 72 73 69 6f 6e  25 2c 6d 79 74 61 73 6b  | version%,mytask|
000002f0  25 0d 00 aa 24 c8 99 20  22 57 69 6d 70 5f 43 6c  |%...$.. "Wimp_Cl|
00000300  61 69 6d 49 6e 74 65 72  66 61 63 65 22 2c 6d 79  |aimInterface",my|
00000310  74 61 73 6b 25 0d 00 b4  12 72 65 69 6e 74 65 72  |task%....reinter|
00000320  3d 26 38 31 36 38 33 0d  00 be 0d f2 74 65 6d 70  |=&81683.....temp|
00000330  6c 61 74 65 0d 00 c8 53  c8 99 22 58 4f 53 5f 52  |late...S.."XOS_R|
00000340  65 61 64 56 61 72 56 61  6c 22 2c 22 44 54 72 65  |eadVarVal","DTre|
00000350  65 24 44 72 61 67 22 2c  62 6c 6f 63 6b 2c 32 35  |e$Drag",block,25|
00000360  36 2c 30 2c 30 20 b8 20  2c 2c 6c 65 6e 3a 62 6c  |6,0,0 . ,,len:bl|
00000370  6f 63 6b 3f 6c 65 6e 3d  31 33 3a 64 72 61 67 24  |ock?len=13:drag$|
00000380  3d 24 62 6c 6f 63 6b 0d  00 d2 2a e7 20 64 72 61  |=$block...*. dra|
00000390  67 24 3d 22 54 52 55 45  22 20 8c 20 64 72 61 67  |g$="TRUE" . drag|
000003a0  73 70 72 3d b9 20 8b 20  64 72 61 67 73 70 72 3d  |spr=. . dragspr=|
000003b0  a3 0d 00 dc 0b 65 6e 76  24 3d 22 22 0d 00 e6 19  |.....env$=""....|
000003c0  c8 99 20 22 4f 53 5f 47  65 74 45 6e 76 22 20 b8  |.. "OS_GetEnv" .|
000003d0  20 65 6e 76 24 0d 00 f0  16 e7 20 a7 65 6e 76 24  | env$..... .env$|
000003e0  2c 22 2d 71 75 69 74 22  29 20 8c 0d 00 fa 12 49  |,"-quit") .....I|
000003f0  25 3d a7 65 6e 76 24 2c  22 22 22 22 29 0d 01 04  |%=.env$,"""")...|
00000400  17 49 25 3d a7 65 6e 76  24 2c 22 22 22 22 2c 49  |.I%=.env$,"""",I|
00000410  25 2b 31 29 0d 01 0e 05  f5 0d 01 18 09 49 25 2b  |%+1).........I%+|
00000420  3d 31 0d 01 22 16 fd 20  c1 65 6e 76 24 2c 49 25  |=1..".. .env$,I%|
00000430  2c 31 29 3c 3e 22 20 22  0d 01 2c 12 65 6e 76 24  |,1)<>" "..,.env$|
00000440  3d c1 65 6e 76 24 2c 49  25 29 0d 01 36 05 cd 0d  |=.env$,I%)..6...|
00000450  01 40 10 69 6e 69 74 69  63 3d a4 69 63 6f 6e 0d  |.@.initic=.icon.|
00000460  01 4a 22 c8 99 22 57 69  6d 70 5f 53 6c 6f 74 53  |.J".."Wimp_SlotS|
00000470  69 7a 65 22 2c 2d 31 2c  2d 31 20 b8 20 6f 72 69  |ize",-1,-1 . ori|
00000480  67 0d 01 54 20 6d 61 78  3d 93 2d e0 3a 6d 61 78  |g..T max=.-.:max|
00000490  3d a8 28 6d 61 78 2f 31  30 32 34 29 2a 31 30 32  |=.(max/1024)*102|
000004a0  34 0d 01 5e 0e 6d 61 78  2d 3d 26 34 30 30 30 0d  |4..^.max-=&4000.|
000004b0  01 68 1b 65 6e 64 25 3d  a3 3a 64 72 61 67 25 3d  |.h.end%=.:drag%=|
000004c0  30 3a 64 72 69 76 65 25  3d 30 0d 01 72 25 c8 99  |0:drive%=0..r%..|
000004d0  22 57 69 6d 70 5f 53 6c  6f 74 53 69 7a 65 22 2c  |"Wimp_SlotSize",|
000004e0  2d 31 2c 2d 31 20 b8 20  63 75 72 72 65 6e 74 0d  |-1,-1 . current.|
000004f0  01 7c 1e d3 3d 93 2d 6d  61 78 3a 68 73 69 7a 65  |.|..=.-max:hsize|
00000500  62 3d 6d 61 78 3a 68 65  61 70 25 3d 93 0d 01 86  |b=max:heap%=....|
00000510  15 e7 20 68 73 69 7a 65  62 3c 31 30 32 34 20 8c  |.. hsizeb<1024 .|
00000520  20 e0 0d 01 90 1f c8 99  22 4f 53 5f 48 65 61 70  | ......."OS_Heap|
00000530  22 2c 30 2c 68 65 61 70  25 2c 2c 68 73 69 7a 65  |",0,heap%,,hsize|
00000540  62 0d 01 9a 27 6f 72 69  67 68 65 61 70 3d 68 73  |b...'origheap=hs|
00000550  69 7a 65 62 3a 6f 72 69  67 61 70 70 73 69 7a 65  |izeb:origappsize|
00000560  3d 63 75 72 72 65 6e 74  0d 01 a4 23 ee 20 85 20  |=current...#. . |
00000570  f2 65 72 72 6f 72 28 f6  24 2b 22 20 3a 20 61 74  |.error(.$+" : at|
00000580  20 6c 69 6e 65 20 22 2b  c3 9e 29 0d 01 ae 18 f2  | line "+..).....|
00000590  69 6e 66 6f 28 62 61 72  25 2c 30 2c 22 4e 6f 6e  |info(bar%,0,"Non|
000005a0  65 22 29 0d 01 b8 18 f2  61 64 6a 75 73 74 77 69  |e").....adjustwi|
000005b0  6e 28 35 30 30 2c 2d 35  30 30 29 0d 01 c2 24 f2  |n(500,-500)...$.|
000005c0  73 65 74 69 63 73 74 61  74 65 28 73 61 76 65 25  |seticstate(save%|
000005d0  2c 34 2c 31 3c 3c 32 32  2c 31 3c 3c 32 32 29 0d  |,4,1<<22,1<<22).|
000005e0  01 cc 24 f2 73 65 74 69  63 73 74 61 74 65 28 66  |..$.seticstate(f|
000005f0  69 6e 64 25 2c 34 2c 31  3c 3c 32 32 2c 31 3c 3c  |ind%,4,1<<22,1<<|
00000600  32 32 29 0d 01 d6 1a e7  20 65 6e 76 24 3c 3e 22  |22)..... env$<>"|
00000610  22 20 f2 6c 6f 61 64 28  65 6e 76 24 29 0d 01 e0  |" .load(env$)...|
00000620  05 f5 0d 01 ea 25 c8 99  22 57 69 6d 70 5f 50 6f  |.....%.."Wimp_Po|
00000630  6c 6c 22 2c 30 2c 62 6c  6f 63 6b 20 b8 20 65 76  |ll",0,block . ev|
00000640  65 6e 74 63 6f 64 65 0d  01 f4 2d c8 99 20 22 57  |entcode...-.. "W|
00000650  69 6d 70 5f 50 6f 6c 6c  50 6f 69 6e 74 65 72 22  |imp_PollPointer"|
00000660  2c 65 76 65 6e 74 63 6f  64 65 2c 2c 76 65 72 73  |,eventcode,,vers|
00000670  69 6f 6e 25 0d 01 fe 12  c8 8e 20 65 76 65 6e 74  |ion%...... event|
00000680  63 6f 64 65 20 ca 0d 02  08 34 c9 20 30 3a e7 20  |code ....4. 0:. |
00000690  ac 20 73 61 76 65 64 20  80 20 70 72 65 71 75 69  |. saved . prequi|
000006a0  74 20 c8 99 22 57 69 6d  70 5f 50 72 6f 63 65 73  |t .."Wimp_Proces|
000006b0  73 4b 65 79 22 2c 26 31  46 43 0d 02 12 18 c9 20  |sKey",&1FC..... |
000006c0  31 3a f2 72 65 64 72 61  77 28 62 6c 6f 63 6b 21  |1:.redraw(block!|
000006d0  30 29 0d 02 1c 11 c9 20  32 3a f2 72 65 71 75 65  |0)..... 2:.reque|
000006e0  73 74 32 0d 02 26 11 c9  20 33 3a f2 72 65 71 75  |st2..&.. 3:.requ|
000006f0  65 73 74 33 0d 02 30 15  c9 20 36 3a f2 63 6c 69  |est3..0.. 6:.cli|
00000700  63 6b 28 62 6c 6f 63 6b  29 0d 02 3a 0c c9 20 37  |ck(block)..:.. 7|
00000710  3a f2 6f 75 74 0d 02 44  10 c9 20 38 3a f2 70 72  |:.out..D.. 8:.pr|
00000720  6f 63 65 73 73 0d 02 4e  0f c9 20 39 3a f2 73 65  |ocess..N.. 9:.se|
00000730  6c 65 63 74 0d 02 58 10  c9 20 31 30 3a f2 73 63  |lect..X.. 10:.sc|
00000740  72 6f 6c 6c 0d 02 62 16  c9 20 31 37 2c 31 38 3a  |roll..b.. 17,18:|
00000750  f2 6d 65 73 73 61 67 65  69 6e 0d 02 6c 05 cb 0d  |.messagein..l...|
00000760  02 76 0a fd 20 65 6e 64  25 0d 02 80 08 f2 65 6e  |.v.. end%.....en|
00000770  64 0d 02 8a 05 e0 0d 02  94 09 dd f2 65 6e 64 0d  |d...........end.|
00000780  02 9e 15 c8 99 72 65 69  6e 74 65 72 2c 6d 79 74  |.....reinter,myt|
00000790  61 73 6b 25 0d 02 a8 23  c8 99 22 57 69 6d 70 5f  |ask%...#.."Wimp_|
000007a0  43 6c 6f 73 65 44 6f 77  6e 22 2c 74 61 73 6b 2c  |CloseDown",task,|
000007b0  6d 79 74 61 73 6b 25 0d  02 b2 05 e0 0d 02 bc 05  |mytask%.........|
000007c0  e1 0d 02 c6 0e dd f2 72  65 71 75 65 73 74 32 0d  |.......request2.|
000007d0  02 d0 0e 77 69 6e 3d 21  62 6c 6f 63 6b 0d 02 da  |...win=!block...|
000007e0  11 e7 20 77 69 6e 3d 6d  61 69 6e 25 20 8c 0d 02  |.. win=main% ...|
000007f0  e4 13 21 69 63 6f 6e 64  3d 74 6f 6f 6c 62 6f 78  |..!icond=toolbox|
00000800  25 0d 02 ee 23 c8 99 20  22 57 69 6d 70 5f 47 65  |%...#.. "Wimp_Ge|
00000810  74 57 69 6e 64 6f 77 53  74 61 74 65 22 2c 2c 69  |tWindowState",,i|
00000820  63 6f 6e 64 0d 02 f8 13  74 6f 6f 6c 32 38 3d 69  |cond....tool28=i|
00000830  63 6f 6e 64 21 32 38 0d  03 02 10 21 69 63 6f 6e  |cond!28....!icon|
00000840  64 3d 6d 61 69 6e 25 0d  03 0c 23 c8 99 20 22 57  |d=main%...#.. "W|
00000850  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 53 74 61  |imp_GetWindowSta|
00000860  74 65 22 2c 2c 69 63 6f  6e 64 0d 03 16 0b 63 68  |te",,icond....ch|
00000870  65 63 6b 3d 30 0d 03 20  20 e7 20 69 63 6f 6e 64  |eck=0..  . icond|
00000880  21 34 3c 3e 62 6c 6f 63  6b 21 34 20 8c 20 63 68  |!4<>block!4 . ch|
00000890  65 63 6b 3d 31 0d 03 2a  20 e7 20 69 63 6f 6e 64  |eck=1..* . icond|
000008a0  21 38 3c 3e 62 6c 6f 63  6b 21 38 20 8c 20 63 68  |!8<>block!8 . ch|
000008b0  65 63 6b 3d 31 0d 03 34  22 e7 20 69 63 6f 6e 64  |eck=1..4". icond|
000008c0  21 31 32 3c 3e 62 6c 6f  63 6b 21 31 32 20 8c 20  |!12<>block!12 . |
000008d0  63 68 65 63 6b 3d 31 0d  03 3e 22 e7 20 69 63 6f  |check=1..>". ico|
000008e0  6e 64 21 31 36 3c 3e 62  6c 6f 63 6b 21 31 36 20  |nd!16<>block!16 |
000008f0  8c 20 63 68 65 63 6b 3d  31 0d 03 48 22 e7 20 69  |. check=1..H". i|
00000900  63 6f 6e 64 21 32 30 3c  3e 62 6c 6f 63 6b 21 32  |cond!20<>block!2|
00000910  30 20 8c 20 63 68 65 63  6b 3d 31 0d 03 52 22 e7  |0 . check=1..R".|
00000920  20 69 63 6f 6e 64 21 32  34 3c 3e 62 6c 6f 63 6b  | icond!24<>block|
00000930  21 32 34 20 8c 20 63 68  65 63 6b 3d 31 0d 03 5c  |!24 . check=1..\|
00000940  1b e7 20 62 6c 6f 63 6b  21 32 38 3d 2d 32 20 8c  |.. block!28=-2 .|
00000950  20 63 68 65 63 6b 3d 31  0d 03 66 1a e7 20 74 6f  | check=1..f.. to|
00000960  6f 6c 32 38 3c 3e 2d 31  20 8c 20 63 68 65 63 6b  |ol28<>-1 . check|
00000970  3d 31 0d 03 70 31 e7 20  63 68 65 63 6b 3d 31 20  |=1..p1. check=1 |
00000980  8c 20 c8 99 20 22 57 69  6d 70 5f 4f 70 65 6e 57  |. .. "Wimp_OpenW|
00000990  69 6e 64 6f 77 22 2c 2c  62 6c 6f 63 6b 3a f2 70  |indow",,block:.p|
000009a0  61 6e 65 0d 03 7a 05 cc  0d 03 84 1f c8 99 20 22  |ane..z........ "|
000009b0  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 22  |Wimp_OpenWindow"|
000009c0  2c 2c 62 6c 6f 63 6b 0d  03 8e 05 cd 0d 03 98 05  |,,block.........|
000009d0  e1 0d 03 a2 0e dd f2 72  65 71 75 65 73 74 33 0d  |.......request3.|
000009e0  03 ac 0f c8 8e 20 21 62  6c 6f 63 6b 20 ca 0d 03  |..... !block ...|
000009f0  b6 0c c9 20 6d 61 69 6e  25 3a 0d 03 c0 20 c8 99  |... main%:... ..|
00000a00  20 22 57 69 6d 70 5f 43  6c 6f 73 65 57 69 6e 64  | "Wimp_CloseWind|
00000a10  6f 77 22 2c 2c 62 6c 6f  63 6b 0d 03 ca 58 21 62  |ow",,block...X!b|
00000a20  6c 6f 63 6b 3d 74 6f 6f  6c 62 6f 78 25 3a c8 99  |lock=toolbox%:..|
00000a30  20 22 57 69 6d 70 5f 43  6c 6f 73 65 57 69 6e 64  | "Wimp_CloseWind|
00000a40  6f 77 22 2c 2c 62 6c 6f  63 6b 3a 21 62 6c 6f 63  |ow",,block:!bloc|
00000a50  6b 3d 62 61 72 25 3a c8  99 22 57 69 6d 70 5f 43  |k=bar%:.."Wimp_C|
00000a60  6c 6f 73 65 57 69 6e 64  6f 77 22 2c 2c 62 6c 6f  |loseWindow",,blo|
00000a70  63 6b 0d 03 d4 59 21 62  6c 6f 63 6b 3d 74 69 6e  |ck...Y!block=tin|
00000a80  66 6f 25 3a c8 99 20 22  57 69 6d 70 5f 43 6c 6f  |fo%:.. "Wimp_Clo|
00000a90  73 65 57 69 6e 64 6f 77  22 2c 2c 62 6c 6f 63 6b  |seWindow",,block|
00000aa0  3a 21 62 6c 6f 63 6b 3d  69 69 6e 66 6f 25 3a c8  |:!block=iinfo%:.|
00000ab0  99 20 22 57 69 6d 70 5f  43 6c 6f 73 65 57 69 6e  |. "Wimp_CloseWin|
00000ac0  64 6f 77 22 2c 2c 62 6c  6f 63 6b 0d 03 de 58 21  |dow",,block...X!|
00000ad0  62 6c 6f 63 6b 3d 66 6f  75 6e 64 25 3a c8 99 20  |block=found%:.. |
00000ae0  22 57 69 6d 70 5f 43 6c  6f 73 65 57 69 6e 64 6f  |"Wimp_CloseWindo|
00000af0  77 22 2c 2c 62 6c 6f 63  6b 3a 21 62 6c 6f 63 6b  |w",,block:!block|
00000b00  3d 66 69 6e 64 25 3a c8  99 20 22 57 69 6d 70 5f  |=find%:.. "Wimp_|
00000b10  43 6c 6f 73 65 57 69 6e  64 6f 77 22 2c 2c 62 6c  |CloseWindow",,bl|
00000b20  6f 63 6b 0d 03 e8 2f 21  62 6c 6f 63 6b 3d 6e 6f  |ock.../!block=no|
00000b30  74 66 6e 64 25 3a c8 99  20 22 57 69 6d 70 5f 43  |tfnd%:.. "Wimp_C|
00000b40  6c 6f 73 65 57 69 6e 64  6f 77 22 2c 2c 62 6c 6f  |loseWindow",,blo|
00000b50  63 6b 0d 03 f2 21 c9 20  73 61 76 65 64 25 3a e7  |ck...!. saved%:.|
00000b60  70 72 65 71 75 69 74 20  8c 20 70 72 65 71 75 69  |prequit . prequi|
00000b70  74 3d a3 0d 03 fc 35 c9  20 74 6f 6f 6c 62 6f 78  |t=....5. toolbox|
00000b80  25 3a 74 6f 6f 6c 73 6f  6e 3d a3 3a c8 99 20 22  |%:toolson=.:.. "|
00000b90  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
00000ba0  22 2c 2c 62 6c 6f 63 6b  0d 04 06 23 7f 20 3a c8  |",,block...#. :.|
00000bb0  99 20 22 57 69 6d 70 5f  43 6c 6f 73 65 57 69 6e  |. "Wimp_CloseWin|
00000bc0  64 6f 77 22 2c 2c 62 6c  6f 63 6b 0d 04 10 05 cb  |dow",,block.....|
00000bd0  0d 04 1a 05 e1 0d 04 24  0a dd a4 69 63 6f 6e 0d  |.......$...icon.|
00000be0  04 2e 0d 21 69 63 6f 6e  64 3d 2d 31 0d 04 38 0d  |...!icond=-1..8.|
00000bf0  69 63 6f 6e 64 21 34 3d  30 0d 04 42 25 69 63 6f  |icond!4=0..B%ico|
00000c00  6e 64 21 38 3d 30 3a 69  63 6f 6e 64 21 31 32 3d  |nd!8=0:icond!12=|
00000c10  36 38 3a 69 63 6f 6e 64  21 31 36 3d 36 38 0d 04  |68:icond!16=68..|
00000c20  4c 2b 69 63 6f 6e 64 21  32 30 3d 25 31 31 30 31  |L+icond!20=%1101|
00000c30  30 2b 28 28 32 5e 31 32  29 2a 33 29 3a 69 63 6f  |0+((2^12)*3):ico|
00000c40  6e 64 3f 32 33 3d 31 31  32 0d 04 56 1f 24 28 69  |nd?23=112..V.$(i|
00000c50  63 6f 6e 64 2b 32 34 29  3d 22 21 44 69 73 6b 54  |cond+24)="!DiskT|
00000c60  72 65 65 22 2b bd 31 33  0d 04 60 26 c8 99 20 22  |ree"+.13..`&.. "|
00000c70  57 69 6d 70 5f 43 72 65  61 74 65 49 63 6f 6e 22  |Wimp_CreateIcon"|
00000c80  2c 2c 69 63 6f 6e 64 20  b8 20 69 63 6f 6e 0d 04  |,,icond . icon..|
00000c90  6a 09 3d 69 63 6f 6e 0d  04 74 16 dd a4 69 6e 66  |j.=icon..t...inf|
00000ca0  28 68 61 6e 64 6c 65 2c  69 63 6f 6e 29 0d 04 7e  |(handle,icon)..~|
00000cb0  15 f2 67 65 65 28 68 61  6e 64 6c 65 2c 69 63 6f  |..gee(handle,ico|
00000cc0  6e 29 0d 04 88 0d 3d 69  63 6f 6e 64 21 32 38 0d  |n)....=icond!28.|
00000cd0  04 92 0e 20 dd a4 62 69  74 28 61 24 29 0d 04 9c  |... ..bit(a$)...|
00000ce0  11 c8 95 20 a7 61 24 2c  22 3a 22 29 3e 30 0d 04  |... .a$,":")>0..|
00000cf0  a6 16 61 24 3d c1 61 24  2c a7 61 24 2c 22 3a 22  |..a$=.a$,.a$,":"|
00000d00  29 2b 31 29 0d 04 b0 05  ce 0d 04 ba 11 c8 95 20  |)+1)........... |
00000d10  a7 61 24 2c 22 2e 22 29  3e 30 0d 04 c4 16 61 24  |.a$,".")>0....a$|
00000d20  3d c1 61 24 2c a7 61 24  2c 22 2e 22 29 2b 31 29  |=.a$,.a$,".")+1)|
00000d30  0d 04 ce 05 ce 0d 04 d8  07 3d 61 24 0d 04 e2 11  |.........=a$....|
00000d40  dd a4 77 6f 6f 6c 28 77  6f 6f 6c 25 29 0d 04 ec  |..wool(wool%)...|
00000d50  0a ea 20 63 6f 74 24 0d  04 f6 12 20 c8 95 20 3f  |.. cot$.... .. ?|
00000d60  77 6f 6f 6c 25 3e 3d 33  32 0d 05 00 13 63 6f 74  |wool%>=32....cot|
00000d70  24 2b 3d bd 28 3f 77 6f  6f 6c 25 29 0d 05 0a 0c  |$+=.(?wool%)....|
00000d80  77 6f 6f 6c 25 2b 3d 31  0d 05 14 05 ce 0d 05 1e  |wool%+=1........|
00000d90  09 3d 63 6f 74 24 0d 05  28 14 dd a4 67 65 74 6c  |.=cot$..(...getl|
00000da0  65 61 66 28 6c 65 61 66  24 29 0d 05 32 12 c8 95  |eaf(leaf$)..2...|
00000db0  20 a7 6c 65 61 66 24 2c  22 2e 22 29 0d 05 3c 1f  | .leaf$,".")..<.|
00000dc0  6c 65 61 66 24 3d c1 6c  65 61 66 24 2c a7 6c 65  |leaf$=.leaf$,.le|
00000dd0  61 66 24 2c 22 2e 22 29  2b 31 29 0d 05 46 0c ce  |af$,".")+1)..F..|
00000de0  3a 3d 6c 65 61 66 24 0d  05 50 18 dd a4 67 65 74  |:=leaf$..P...get|
00000df0  64 69 73 6b 6e 61 6d 65  28 70 61 74 68 24 29 0d  |diskname(path$).|
00000e00  05 5a 05 f5 0d 05 64 1c  70 61 74 68 24 3d c2 70  |.Z....d.path$=.p|
00000e10  61 74 68 24 2c a9 28 70  61 74 68 24 29 2d 31 29  |ath$,.(path$)-1)|
00000e20  0d 05 6e 13 fd 20 c0 70  61 74 68 24 2c 31 29 3d  |..n.. .path$,1)=|
00000e30  22 3a 22 0d 05 78 17 3d  c2 70 61 74 68 24 2c a9  |":"..x.=.path$,.|
00000e40  28 70 61 74 68 24 29 2d  31 29 0d 05 82 17 dd a4  |(path$)-1)......|
00000e50  63 68 65 63 6b 69 74 28  68 6e 64 25 2c 69 63 25  |checkit(hnd%,ic%|
00000e60  29 0d 05 8c 1b 21 69 63  6f 6e 64 3d 68 6e 64 25  |)....!icond=hnd%|
00000e70  3a 69 63 6f 6e 64 21 34  3d 69 63 25 0d 05 96 20  |:icond!4=ic%... |
00000e80  c8 99 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |.."Wimp_GetIconS|
00000e90  74 61 74 65 22 2c 2c 69  63 6f 6e 64 0d 05 a0 13  |tate",,icond....|
00000ea0  66 6c 61 67 73 25 3d 69  63 6f 6e 64 21 32 34 0d  |flags%=icond!24.|
00000eb0  05 aa 12 3d 66 6c 61 67  73 25 80 26 46 30 30 30  |...=flags%.&F000|
00000ec0  30 0d 05 b4 0e dd a4 61  73 6b 28 66 6e 24 29 0d  |0......ask(fn$).|
00000ed0  05 be 1e 21 69 63 6f 6e  64 3d 30 3a 24 28 69 63  |...!icond=0:$(ic|
00000ee0  6f 6e 64 2b 34 29 3d 66  6e 24 2b bd 30 0d 05 c8  |ond+4)=fn$+.0...|
00000ef0  35 c8 99 22 57 69 6d 70  5f 52 65 70 6f 72 74 45  |5.."Wimp_ReportE|
00000f00  72 72 6f 72 22 2c 69 63  6f 6e 64 2c 26 31 33 2c  |rror",icond,&13,|
00000f10  22 21 44 69 73 6b 54 72  65 65 22 20 b8 20 2c 62  |"!DiskTree" . ,b|
00000f20  75 74 0d 05 d2 08 3d 62  75 74 0d 05 dc 18 dd a4  |ut....=but......|
00000f30  66 75 6c 6c 73 28 73 74  72 69 6e 67 24 2c 6c 65  |fulls(string$,le|
00000f40  6e 29 0d 05 e6 16 e7 20  a9 28 73 74 72 69 6e 67  |n)..... .(string|
00000f50  24 29 3c 6c 65 6e 20 8c  0d 05 f0 05 f5 0d 05 fa  |$)<len .........|
00000f60  16 73 74 72 69 6e 67 24  3d 73 74 72 69 6e 67 24  |.string$=string$|
00000f70  2b bd 30 0d 06 04 14 fd  20 a9 28 73 74 72 69 6e  |+.0..... .(strin|
00000f80  67 24 29 3d 6c 65 6e 0d  06 0e 05 cd 0d 06 18 0c  |g$)=len.........|
00000f90  3d 73 74 72 69 6e 67 24  0d 06 22 18 dd a4 6c 6f  |=string$.."...lo|
00000fa0  6e 67 73 28 73 74 72 69  6e 67 24 2c 6c 65 6e 29  |ngs(string$,len)|
00000fb0  0d 06 2c 16 e7 20 a9 28  73 74 72 69 6e 67 24 29  |..,.. .(string$)|
00000fc0  3c 6c 65 6e 20 8c 0d 06  36 05 f5 0d 06 40 17 73  |<len ...6....@.s|
00000fd0  74 72 69 6e 67 24 3d 22  30 22 2b 73 74 72 69 6e  |tring$="0"+strin|
00000fe0  67 24 0d 06 4a 14 fd 20  a9 28 73 74 72 69 6e 67  |g$..J.. .(string|
00000ff0  24 29 3d 6c 65 6e 0d 06  54 05 cd 0d 06 5e 0c 3d  |$)=len..T....^.=|
00001000  73 74 72 69 6e 67 24 0d  06 68 21 dd a4 63 68 65  |string$..h!..che|
00001010  63 6b 66 6c 61 67 28 68  61 6e 64 6c 65 2c 69 63  |ckflag(handle,ic|
00001020  6f 6e 2c 66 6c 61 67 29  0d 06 72 09 62 69 74 3d  |on,flag)..r.bit=|
00001030  a3 0d 06 7c 1e 21 69 63  6f 6e 64 3d 68 61 6e 64  |...|.!icond=hand|
00001040  6c 65 3a 69 63 6f 6e 64  21 34 3d 69 63 6f 6e 0d  |le:icond!4=icon.|
00001050  06 86 20 c8 99 22 57 69  6d 70 5f 47 65 74 49 63  |.. .."Wimp_GetIc|
00001060  6f 6e 53 74 61 74 65 22  2c 2c 69 63 6f 6e 64 0d  |onState",,icond.|
00001070  06 90 22 e7 20 28 69 63  6f 6e 64 21 32 34 80 28  |..". (icond!24.(|
00001080  31 3c 3c 66 6c 61 67 29  29 3e 30 20 62 69 74 3d  |1<<flag))>0 bit=|
00001090  b9 0d 06 9a 08 3d 62 69  74 0d 06 a4 0f dd a4 63  |.....=bit......c|
000010a0  61 70 73 28 75 70 24 29  0d 06 ae 12 e3 20 4c 3d  |aps(up$)..... L=|
000010b0  31 20 b8 20 a9 28 75 70  24 29 0d 06 b8 23 c1 75  |1 . .(up$)...#.u|
000010c0  70 24 2c 4c 2c 31 29 3d  bd 28 97 28 c1 75 70 24  |p$,L,1)=.(.(.up$|
000010d0  2c 4c 2c 31 29 29 20 80  20 26 44 46 29 0d 06 c2  |,L,1)) . &DF)...|
000010e0  05 ed 0d 06 cc 08 3d 75  70 24 0d 06 d6 0e dd f2  |......=up$......|
000010f0  74 65 6d 70 6c 61 74 65  0d 06 e0 32 c8 99 22 57  |template...2.."W|
00001100  69 6d 70 5f 4f 70 65 6e  54 65 6d 70 6c 61 74 65  |imp_OpenTemplate|
00001110  22 2c 2c 22 3c 44 54 72  65 65 24 44 69 72 3e 2e  |",,"<DTree$Dir>.|
00001120  54 65 6d 70 6c 61 74 65  73 22 0d 06 ea 11 69 6e  |Templates"....in|
00001130  64 69 72 3d 63 75 72 62  75 66 25 0d 06 f4 1f 69  |dir=curbuf%....i|
00001140  6e 66 6f 25 3d a4 74 65  6d 70 6c 61 74 65 28 22  |nfo%=.template("|
00001150  50 72 6f 67 49 6e 66 6f  22 29 0d 06 fe 1b 73 61  |ProgInfo")....sa|
00001160  76 65 25 3d a4 74 65 6d  70 6c 61 74 65 28 22 73  |ve%=.template("s|
00001170  61 76 65 22 29 0d 07 08  20 73 61 76 65 64 25 3d  |ave")... saved%=|
00001180  a4 74 65 6d 70 6c 61 74  65 28 22 73 61 76 65 74  |.template("savet|
00001190  65 78 74 22 29 0d 07 12  1b 6d 61 69 6e 25 3d a4  |ext")....main%=.|
000011a0  74 65 6d 70 6c 61 74 65  28 22 74 72 65 65 22 29  |template("tree")|
000011b0  0d 07 1c 1f 74 6f 6f 6c  62 6f 78 25 3d a4 74 65  |....toolbox%=.te|
000011c0  6d 70 6c 61 74 65 28 22  74 6f 6f 6c 73 22 29 0d  |mplate("tools").|
000011d0  07 26 1d 71 75 65 72 79  25 3d a4 74 65 6d 70 6c  |.&.query%=.templ|
000011e0  61 74 65 28 22 71 75 65  72 79 22 29 0d 07 30 1e  |ate("query")..0.|
000011f0  71 75 69 74 25 3d a4 74  65 6d 70 6c 61 74 65 28  |quit%=.template(|
00001200  22 71 75 69 74 62 6f 78  22 29 0d 07 3a 19 62 61  |"quitbox")..:.ba|
00001210  72 25 3d a4 74 65 6d 70  6c 61 74 65 28 22 62 61  |r%=.template("ba|
00001220  72 22 29 0d 07 44 19 6e  65 77 25 3d a4 74 65 6d  |r")..D.new%=.tem|
00001230  70 6c 61 74 65 28 22 6e  65 77 22 29 0d 07 4e 1b  |plate("new")..N.|
00001240  66 69 6e 64 25 3d a4 74  65 6d 70 6c 61 74 65 28  |find%=.template(|
00001250  22 46 69 6e 64 22 29 0d  07 58 1d 66 6f 75 6e 64  |"Find")..X.found|
00001260  25 3d a4 74 65 6d 70 6c  61 74 65 28 22 66 6f 75  |%=.template("fou|
00001270  6e 64 22 29 0d 07 62 1f  6e 6f 74 66 6e 64 25 3d  |nd")..b.notfnd%=|
00001280  a4 74 65 6d 70 6c 61 74  65 28 22 6e 6f 74 66 6e  |.template("notfn|
00001290  64 22 29 0d 07 6c 1c 69  69 6e 66 6f 25 3d a4 74  |d")..l.iinfo%=.t|
000012a0  65 6d 70 6c 61 74 65 28  22 69 6e 66 6f 22 29 0d  |emplate("info").|
000012b0  07 76 1d 66 69 6e 66 6f  25 3d a4 74 65 6d 70 6c  |.v.finfo%=.templ|
000012c0  61 74 65 28 22 66 69 6e  66 6f 22 29 0d 07 80 1d  |ate("finfo")....|
000012d0  74 69 6e 66 6f 25 3d a4  74 65 6d 70 6c 61 74 65  |tinfo%=.template|
000012e0  28 22 74 69 6e 66 6f 22  29 0d 07 8a 1b c8 99 20  |("tinfo")...... |
000012f0  22 57 69 6d 70 5f 43 6c  6f 73 65 54 65 6d 70 6c  |"Wimp_CloseTempl|
00001300  61 74 65 22 0d 07 94 17  73 74 65 78 3d a4 69 6e  |ate"....stex=.in|
00001310  66 6f 28 73 61 76 65 25  2c 31 29 0d 07 9e 19 73  |fo(save%,1)....s|
00001320  74 65 78 64 3d a4 69 6e  66 6f 28 73 61 76 65 64  |texd=.info(saved|
00001330  25 2c 31 29 0d 07 a8 05  e1 0d 07 b2 12 dd a4 74  |%,1)...........t|
00001340  65 6d 70 6c 61 74 65 28  61 24 29 0d 07 bc 46 c8  |emplate(a$)...F.|
00001350  99 22 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  |."Wimp_LoadTempl|
00001360  61 74 65 22 2c 2c 62 6c  6f 63 6b 2c 69 6e 64 69  |ate",,block,indi|
00001370  72 2c 65 6e 64 62 75 66  25 2c 2d 31 2c 61 24 2c  |r,endbuf%,-1,a$,|
00001380  30 20 b8 20 2c 2c 69 6e  64 69 72 2c 2c 2c 2c 63  |0 . ,,indir,,,,c|
00001390  25 0d 07 c6 32 e7 20 63  25 3d 30 20 8c 20 f2 6d  |%...2. c%=0 . .m|
000013a0  65 73 73 28 22 54 65 6d  70 6c 61 74 65 20 22 2b  |ess("Template "+|
000013b0  61 24 2b 22 20 6e 6f 74  20 66 6f 75 6e 64 2e 22  |a$+" not found."|
000013c0  29 3a e0 0d 07 d0 0e 62  6c 6f 63 6b 21 36 34 3d  |):.....block!64=|
000013d0  31 0d 07 da 29 c8 99 22  57 69 6d 70 5f 43 72 65  |1...).."Wimp_Cre|
000013e0  61 74 65 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |ateWindow",,bloc|
000013f0  6b 20 b8 20 68 61 6e 64  6c 65 0d 07 e4 0b 3d 68  |k . handle....=h|
00001400  61 6e 64 6c 65 0d 07 ee  17 dd a4 69 6e 66 6f 28  |andle......info(|
00001410  68 61 6e 64 6c 65 2c 69  63 6f 6e 29 0d 07 f8 15  |handle,icon)....|
00001420  f2 67 65 65 28 68 61 6e  64 6c 65 2c 69 63 6f 6e  |.gee(handle,icon|
00001430  29 0d 08 02 0d 3d 69 63  6f 6e 64 21 32 38 0d 08  |)....=icond!28..|
00001440  0c 1d dd f2 69 6e 66 6f  28 68 61 6e 64 6c 65 2c  |....info(handle,|
00001450  69 63 6f 6e 2c 74 65 78  74 24 29 0d 08 16 3b 21  |icon,text$)...;!|
00001460  62 6c 6f 63 6b 3d 68 61  6e 64 6c 65 3a 62 6c 6f  |block=handle:blo|
00001470  63 6b 21 34 3d 69 63 6f  6e 3a c8 99 22 57 69 6d  |ck!4=icon:.."Wim|
00001480  70 5f 47 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_GetIconState",|
00001490  2c 62 6c 6f 63 6b 0d 08  20 29 24 28 62 6c 6f 63  |,block.. )$(bloc|
000014a0  6b 21 32 38 29 3d 74 65  78 74 24 3a 62 6c 6f 63  |k!28)=text$:bloc|
000014b0  6b 21 33 36 3d a9 28 74  65 78 74 24 29 2b 31 0d  |k!36=.(text$)+1.|
000014c0  08 2a 18 62 6c 6f 63 6b  21 38 3d 30 3a 62 6c 6f  |.*.block!8=0:blo|
000014d0  63 6b 21 31 32 3d 30 0d  08 34 20 c8 99 22 57 69  |ck!12=0..4 .."Wi|
000014e0  6d 70 5f 53 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_SetIconState"|
000014f0  2c 2c 62 6c 6f 63 6b 0d  08 3e 05 e1 0d 08 48 16  |,,block..>....H.|
00001500  dd f2 67 65 65 28 68 61  6e 64 6c 65 2c 69 63 6f  |..gee(handle,ico|
00001510  6e 29 0d 08 52 1e 21 69  63 6f 6e 64 3d 68 61 6e  |n)..R.!icond=han|
00001520  64 6c 65 3a 69 63 6f 6e  64 21 34 3d 69 63 6f 6e  |dle:icond!4=icon|
00001530  0d 08 5c 20 c8 99 22 57  69 6d 70 5f 47 65 74 49  |..\ .."Wimp_GetI|
00001540  63 6f 6e 53 74 61 74 65  22 2c 2c 69 63 6f 6e 64  |conState",,icond|
00001550  0d 08 66 05 e1 0d 08 70  38 dd f2 73 65 74 69 63  |..f....p8..setic|
00001560  73 74 61 74 65 28 68 61  6e 64 6c 65 25 2c 69 63  |state(handle%,ic|
00001570  25 2c 63 6c 65 61 72 2c  65 6f 72 29 3a f4 20 61  |%,clear,eor):. a|
00001580  73 20 69 6e 20 50 52 4d  20 28 43 45 29 0d 08 7a  |s in PRM (CE)..z|
00001590  39 21 62 6c 6f 63 6b 3d  68 61 6e 64 6c 65 25 3a  |9!block=handle%:|
000015a0  62 6c 6f 63 6b 21 34 3d  69 63 25 3a 62 6c 6f 63  |block!4=ic%:bloc|
000015b0  6b 21 38 3d 65 6f 72 3a  62 6c 6f 63 6b 21 31 32  |k!8=eor:block!12|
000015c0  3d 63 6c 65 61 72 0d 08  84 20 c8 99 22 57 69 6d  |=clear... .."Wim|
000015d0  70 5f 53 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_SetIconState",|
000015e0  2c 62 6c 6f 63 6b 0d 08  8e 05 e1 0d 08 98 0c dd  |,block..........|
000015f0  f2 63 6d 65 6e 75 73 0d  08 a2 0c 74 6d 6f 70 74  |.cmenus....tmopt|
00001600  3d 2d 31 0d 08 ac 10 6d  65 6e 75 6f 70 65 6e 3d  |=-1....menuopen=|
00001610  2d 34 34 0d 08 b6 11 6d  65 6e 75 70 74 72 3d 6d  |-44....menuptr=m|
00001620  65 6e 75 25 0d 08 c0 0c  c8 97 20 78 2c 79 2c 62  |enu%...... x,y,b|
00001630  0d 08 ca 28 74 72 65 65  73 25 3d a4 6d 65 6e 75  |...(trees%=.menu|
00001640  28 22 54 72 65 65 73 22  2c 31 37 34 2c 22 4e 6f  |("Trees",174,"No|
00001650  20 54 72 65 65 73 22 29  0d 08 d4 17 e7 20 63 74  | Trees")..... ct|
00001660  3e 2d 31 20 8c 20 f2 74  72 65 65 6d 65 6e 73 0d  |>-1 . .treemens.|
00001670  08 de 34 e7 20 74 6f 6f  6c 73 6f 6e 20 8c 20 74  |..4. toolson . t|
00001680  6f 6f 6c 6f 6e 24 3d 22  7b 80 7d 54 6f 6f 6c 73  |oolon$="{.}Tools|
00001690  22 3a 8b 20 74 6f 6f 6c  6f 6e 24 3d 22 54 6f 6f  |":. toolon$="Too|
000016a0  6c 73 22 0d 08 e8 3f 53  61 76 65 4d 65 6e 75 25  |ls"...?SaveMenu%|
000016b0  3d a4 6d 65 6e 75 28 22  53 61 76 65 22 2c 35 2a  |=.menu("Save",5*|
000016c0  31 36 2c 22 7b 62 7c 73  61 76 65 25 7d 54 65 78  |16,"{b|save%}Tex|
000016d0  74 2c 7b 62 7c 73 61 76  65 64 25 7d 44 61 74 61  |t,{b|saved%}Data|
000016e0  22 29 0d 08 f2 3b 6d 69  73 63 25 3d a4 6d 65 6e  |")...;misc%=.men|
000016f0  75 28 22 4d 69 73 63 22  2c 35 2a 31 36 2c 22 7b  |u("Misc",5*16,"{|
00001700  62 7c 69 6e 66 6f 25 7d  49 6e 66 6f 2c 7b 62 7c  |b|info%}Info,{b||
00001710  66 69 6e 66 6f 25 7d 46  69 6c 65 22 29 0d 08 fc  |finfo%}File")...|
00001720  5a 69 63 6f 6e 6d 65 6e  75 25 3d a4 6d 65 6e 75  |Ziconmenu%=.menu|
00001730  28 22 21 44 69 73 6b 54  72 65 65 22 2c 39 2a 31  |("!DiskTree",9*1|
00001740  36 2c 22 7b 62 7c 6d 69  73 63 25 7d 4d 69 73 63  |6,"{b|misc%}Misc|
00001750  2c 54 72 65 65 2c 4e 65  77 20 54 72 65 65 2c 7b  |,Tree,New Tree,{|
00001760  62 7c 53 61 76 65 4d 65  6e 75 25 7d 53 61 76 65  |b|SaveMenu%}Save|
00001770  2c 51 75 69 74 22 29 0d  09 06 94 6d 61 69 6e 6d  |,Quit")....mainm|
00001780  65 6e 75 25 3d a4 6d 65  6e 75 28 22 21 44 69 73  |enu%=.menu("!Dis|
00001790  6b 54 72 65 65 22 2c 31  30 2a 31 36 2c 22 7b 62  |kTree",10*16,"{b|
000017a0  7c 6d 69 73 63 25 7d 4d  69 73 63 2c 7b 62 7c 74  ||misc%}Misc,{b|t|
000017b0  72 65 65 73 25 7d 54 72  65 65 73 2c 7b 62 7c 74  |rees%}Trees,{b|t|
000017c0  69 6e 66 6f 25 7d 54 72  65 65 20 49 6e 66 6f 2c  |info%}Tree Info,|
000017d0  7b 62 7c 66 69 6e 64 25  7d 46 69 6e 64 2c 22 2b  |{b|find%}Find,"+|
000017e0  74 6f 6f 6c 6f 6e 24 2b  22 2c 4e 65 77 20 54 72  |toolon$+",New Tr|
000017f0  65 65 2c 7b 62 7c 53 61  76 65 4d 65 6e 75 25 7d  |ee,{b|SaveMenu%}|
00001800  53 61 76 65 2c 51 75 69  74 22 29 0d 09 10 20 72  |Save,Quit")... r|
00001810  6d 65 6e 3d 62 6c 6f 63  6b 21 31 32 3a 72 69 63  |men=block!12:ric|
00001820  6f 6e 3d 62 6c 6f 63 6b  21 31 36 0d 09 1a 4d e7  |on=block!16...M.|
00001830  20 62 6c 6f 63 6b 21 31  32 3d 2d 32 20 8c 20 6f  | block!12=-2 . o|
00001840  70 65 6e 6d 65 6e 75 25  3d 69 63 6f 6e 6d 65 6e  |penmenu%=iconmen|
00001850  75 25 3a 61 3d 78 2d 37  35 3a 62 3d 28 35 2b 32  |u%:a=x-75:b=(5+2|
00001860  29 2a 34 38 3a f4 20 4e  6f 2e 20 6f 66 20 69 74  |)*48:. No. of it|
00001870  65 6d 73 2b 32 2a 34 38  0d 09 24 32 e7 20 62 6c  |ems+2*48..$2. bl|
00001880  6f 63 6b 21 31 32 3d 6d  61 69 6e 25 20 8c 20 61  |ock!12=main% . a|
00001890  3d 78 3a 62 3d 79 3a 6f  70 65 6e 6d 65 6e 75 25  |=x:b=y:openmenu%|
000018a0  3d 6d 61 69 6e 6d 65 6e  75 25 0d 09 2e 47 e7 20  |=mainmenu%...G. |
000018b0  62 6c 6f 63 6b 21 31 32  3d 74 6f 6f 6c 62 6f 78  |block!12=toolbox|
000018c0  25 20 80 20 62 6c 6f 63  6b 21 31 36 3d 30 20 8c  |% . block!16=0 .|
000018d0  20 74 6d 6f 70 74 3d 30  3a 6f 70 65 6e 6d 65 6e  | tmopt=0:openmen|
000018e0  75 25 3d 74 72 65 65 73  25 3a 61 3d 78 3a 62 3d  |u%=trees%:a=x:b=|
000018f0  79 0d 09 38 47 e7 20 62  6c 6f 63 6b 21 31 32 3d  |y..8G. block!12=|
00001900  74 6f 6f 6c 62 6f 78 25  20 80 20 62 6c 6f 63 6b  |toolbox% . block|
00001910  21 31 36 3d 31 20 8c 20  74 6d 6f 70 74 3d 31 3a  |!16=1 . tmopt=1:|
00001920  6f 70 65 6e 6d 65 6e 75  25 3d 74 72 65 65 73 25  |openmenu%=trees%|
00001930  3a 61 3d 78 3a 62 3d 79  0d 09 42 47 e7 20 62 6c  |:a=x:b=y..BG. bl|
00001940  6f 63 6b 21 31 32 3d 74  6f 6f 6c 62 6f 78 25 20  |ock!12=toolbox% |
00001950  80 20 62 6c 6f 63 6b 21  31 36 3d 32 20 8c 20 74  |. block!16=2 . t|
00001960  6d 6f 70 74 3d 32 3a 6f  70 65 6e 6d 65 6e 75 25  |mopt=2:openmenu%|
00001970  3d 74 72 65 65 73 25 3a  61 3d 78 3a 62 3d 79 0d  |=trees%:a=x:b=y.|
00001980  09 4c 45 f2 73 65 74 69  63 73 74 61 74 65 28 73  |.LE.seticstate(s|
00001990  61 76 65 25 2c 33 2c 31  3c 3c 32 31 2c 30 3c 3c  |ave%,3,1<<21,0<<|
000019a0  32 31 29 3a f2 73 65 74  69 63 73 74 61 74 65 28  |21):.seticstate(|
000019b0  73 61 76 65 25 2c 34 2c  31 3c 3c 32 31 2c 30 3c  |save%,4,1<<21,0<|
000019c0  3c 32 31 29 0d 09 56 25  f2 73 65 74 69 63 73 74  |<21)..V%.seticst|
000019d0  61 74 65 28 73 61 76 65  64 25 2c 33 2c 31 3c 3c  |ate(saved%,3,1<<|
000019e0  32 31 2c 30 3c 3c 32 31  29 0d 09 60 1d f2 69 6e  |21,0<<21)..`..in|
000019f0  66 6f 28 73 61 76 65 25  2c 31 2c 22 54 65 78 74  |fo(save%,1,"Text|
00001a00  46 69 6c 65 22 29 0d 09  6a 05 cd 0d 09 74 12 f2  |File")..j....t..|
00001a10  6f 70 65 6e 6d 65 6e 75  28 61 2c 62 29 0d 09 7e  |openmenu(a,b)..~|
00001a20  05 e1 0d 09 88 0e dd f2  74 72 65 65 6d 65 6e 73  |........treemens|
00001a30  0d 09 92 1c e7 20 62 6c  6f 63 6b 21 31 32 3c 3e  |..... block!12<>|
00001a40  74 6f 6f 6c 62 6f 78 25  20 8c 20 e1 0d 09 9c 11  |toolbox% . .....|
00001a50  c8 8e 20 62 6c 6f 63 6b  21 31 36 20 ca 0d 09 a6  |.. block!16 ....|
00001a60  0a c9 20 30 2c 32 3a 0d  09 b0 08 20 6a 3d 30 0d  |.. 0,2:.... j=0.|
00001a70  09 ba 39 20 e7 20 62 6c  6f 63 6b 21 31 36 3d 32  |..9 . block!16=2|
00001a80  20 8c 20 24 28 6c 6f 6e  67 64 61 74 61 2b 28 6a  | . $(longdata+(j|
00001a90  2a 31 33 29 29 3d 22 ac  43 6c 65 61 72 20 41 6c  |*13))=".Clear Al|
00001aa0  6c 22 3a 20 6a 2b 3d 31  0d 09 c4 0f 20 e3 20 6d  |l": j+=1.... . m|
00001ab0  3d 30 20 b8 20 63 74 0d  09 ce 0d 20 74 69 63 6b  |=0 . ct.... tick|
00001ac0  24 3d 22 22 0d 09 d8 17  20 e7 20 6d 3d 73 74 20  |$="".... . m=st |
00001ad0  8c 20 74 69 63 6b 24 3d  22 80 22 0d 09 e2 20 20  |. tick$="."...  |
00001ae0  6e 65 78 74 69 74 24 3d  a4 67 65 74 6c 65 61 66  |nextit$=.getleaf|
00001af0  28 74 72 6f 6f 74 24 28  6d 29 29 0d 09 ec 45 20  |(troot$(m))...E |
00001b00  e7 20 6e 65 78 74 69 74  24 3d 22 24 22 20 8c 20  |. nextit$="$" . |
00001b10  6e 65 78 74 69 74 24 3d  a4 67 65 74 64 69 73 6b  |nextit$=.getdisk|
00001b20  6e 61 6d 65 28 c0 74 72  6f 6f 74 24 28 6d 29 2c  |name(.troot$(m),|
00001b30  a9 28 74 72 6f 6f 74 24  28 6d 29 29 2d 32 29 29  |.(troot$(m))-2))|
00001b40  0d 09 f6 25 20 24 28 6c  6f 6e 67 64 61 74 61 2b  |...% $(longdata+|
00001b50  28 6a 2a 31 33 29 29 3d  74 69 63 6b 24 2b 6e 65  |(j*13))=tick$+ne|
00001b60  78 74 69 74 24 0d 0a 00  09 20 6a 2b 3d 31 0d 0a  |xtit$.... j+=1..|
00001b70  0a 08 20 ed 20 6d 0d 0a  14 31 20 74 72 65 65 73  |.. . m...1 trees|
00001b80  25 3d a4 6c 6f 6e 67 6d  65 6e 75 28 22 54 72 65  |%=.longmenu("Tre|
00001b90  65 73 22 2c 31 31 2a 31  36 2c 6a 2d 31 2c 6c 6f  |es",11*16,j-1,lo|
00001ba0  6e 67 64 61 74 61 29 0d  0a 1e 08 c9 20 31 3a 0d  |ngdata)..... 1:.|
00001bb0  0a 28 2d 20 e7 20 ac 20  61 72 63 6c 69 73 74 65  |.(- . . arcliste|
00001bc0  64 20 8c 20 f2 6d 61 6b  65 61 72 63 6c 69 73 74  |d . .makearclist|
00001bd0  3a 61 72 63 6c 69 73 74  65 64 3d b9 0d 0a 32 11  |:arclisted=...2.|
00001be0  20 e7 20 61 72 63 63 74  3d 2d 31 20 8c 0d 0a 3c  | . arcct=-1 ...<|
00001bf0  1c 20 20 74 72 65 65 6d  65 6e 24 3d 22 4e 6f 20  |.  treemen$="No |
00001c00  41 72 63 68 69 76 65 73  22 0d 0a 46 2a 20 20 74  |Archives"..F*  t|
00001c10  72 65 65 73 25 3d a4 6d  65 6e 75 28 22 54 72 65  |rees%=.menu("Tre|
00001c20  65 73 22 2c 31 31 2a 31  36 2c 74 72 65 65 6d 65  |es",11*16,treeme|
00001c30  6e 24 29 0d 0a 50 06 20  cc 0d 0a 5a 13 20 20 e3  |n$)..P. ...Z.  .|
00001c40  20 6d 3d 30 20 b8 20 61  72 63 63 74 0d 0a 64 13  | m=0 . arcct..d.|
00001c50  20 20 61 72 63 79 24 3d  61 72 63 24 28 6d 29 0d  |  arcy$=arc$(m).|
00001c60  0a 6e 21 20 20 6e 61 6d  65 24 3d c0 61 72 63 79  |.n!  name$=.arcy|
00001c70  24 2c a7 61 72 63 79 24  2c 22 2c 22 29 2d 31 29  |$,.arcy$,",")-1)|
00001c80  0d 0a 78 1e 20 20 24 28  6c 6f 6e 67 64 61 74 61  |..x.  $(longdata|
00001c90  2b 28 6d 2a 31 33 29 29  3d 6e 61 6d 65 24 0d 0a  |+(m*13))=name$..|
00001ca0  82 07 20 20 ed 0d 0a 8c  34 20 20 74 72 65 65 73  |..  ....4  trees|
00001cb0  25 3d a4 6c 6f 6e 67 6d  65 6e 75 28 22 54 72 65  |%=.longmenu("Tre|
00001cc0  65 73 22 2c 31 31 2a 31  36 2c 61 72 63 63 74 2c  |es",11*16,arcct,|
00001cd0  6c 6f 6e 67 64 61 74 61  29 0d 0a 96 06 20 cd 0d  |longdata).... ..|
00001ce0  0a a0 05 cb 0d 0a aa 05  e1 0d 0a b4 13 dd f2 6f  |...............o|
00001cf0  70 65 6e 6d 65 6e 75 28  78 2c 79 29 0d 0a be 26  |penmenu(x,y)...&|
00001d00  c8 99 22 57 69 6d 70 5f  43 72 65 61 74 65 4d 65  |.."Wimp_CreateMe|
00001d10  6e 75 22 2c 2c 6f 70 65  6e 6d 65 6e 75 25 2c 78  |nu",,openmenu%,x|
00001d20  2c 79 0d 0a c8 05 e1 0d  0a d2 1a dd a4 6d 65 6e  |,y...........men|
00001d30  75 28 74 69 74 24 2c 77  69 64 2c 6d 65 6e 75 24  |u(tit$,wid,menu$|
00001d40  29 0d 0a dc 0e 6d 65 6e  75 24 2b 3d 22 2c 22 0d  |)....menu$+=",".|
00001d50  0a e6 13 6f 6c 64 6d 65  6e 75 3d 6d 65 6e 75 70  |...oldmenu=menup|
00001d60  74 72 0d 0a f0 11 24 6d  65 6e 75 70 74 72 3d 74  |tr....$menuptr=t|
00001d70  69 74 24 0d 0a fa 10 6d  65 6e 75 70 74 72 3f 31  |it$....menuptr?1|
00001d80  32 3d 37 0d 0b 04 10 6d  65 6e 75 70 74 72 3f 31  |2=7....menuptr?1|
00001d90  33 3d 32 0d 0b 0e 10 6d  65 6e 75 70 74 72 3f 31  |3=2....menuptr?1|
00001da0  34 3d 37 0d 0b 18 10 6d  65 6e 75 70 74 72 3f 31  |4=7....menuptr?1|
00001db0  35 3d 30 0d 0b 22 12 6d  65 6e 75 70 74 72 21 31  |5=0..".menuptr!1|
00001dc0  36 3d 77 69 64 0d 0b 2c  11 6d 65 6e 75 70 74 72  |6=wid..,.menuptr|
00001dd0  21 32 30 3d 34 38 0d 0b  36 10 6d 65 6e 75 70 74  |!20=48..6.menupt|
00001de0  72 21 32 34 3d 30 0d 0b  40 0f 6d 65 6e 75 70 74  |r!24=0..@.menupt|
00001df0  72 2b 3d 32 38 0d 0b 4a  05 f5 0d 0b 54 11 f2 74  |r+=28..J....T..t|
00001e00  68 69 6e 67 28 6d 65 6e  75 24 29 0d 0b 5e 1f 6d  |hing(menu$)..^.m|
00001e10  65 6e 75 24 3d c1 6d 65  6e 75 24 2c a7 6d 65 6e  |enu$=.menu$,.men|
00001e20  75 24 2c 22 2c 22 29 2b  31 29 0d 0b 68 0f 6d 65  |u$,",")+1)..h.me|
00001e30  6e 75 70 74 72 2b 3d 32  34 0d 0b 72 0e fd 20 6d  |nuptr+=24..r.. m|
00001e40  65 6e 75 24 3d 22 22 0d  0b 7c 29 6d 65 6e 75 70  |enu$=""..|)menup|
00001e50  74 72 21 2d 32 34 3d 28  6d 65 6e 75 70 74 72 21  |tr!-24=(menuptr!|
00001e60  2d 32 34 29 20 84 20 25  31 30 30 30 30 30 30 30  |-24) . %10000000|
00001e70  0d 0b 86 0c 3d 6f 6c 64  6d 65 6e 75 0d 0b 90 28  |....=oldmenu...(|
00001e80  dd a4 6c 6f 6e 67 6d 65  6e 75 28 74 69 74 24 2c  |..longmenu(tit$,|
00001e90  77 69 64 2c 6e 75 6d 62  65 72 2c 6c 6f 6e 67 64  |wid,number,longd|
00001ea0  61 74 61 29 0d 0b 9a 11  24 6c 6f 6e 67 6d 65 6e  |ata)....$longmen|
00001eb0  3d 74 69 74 24 0d 0b a4  10 6c 6f 6e 67 6d 65 6e  |=tit$....longmen|
00001ec0  3f 31 32 3d 37 0d 0b ae  10 6c 6f 6e 67 6d 65 6e  |?12=7....longmen|
00001ed0  3f 31 33 3d 32 0d 0b b8  10 6c 6f 6e 67 6d 65 6e  |?13=2....longmen|
00001ee0  3f 31 34 3d 37 0d 0b c2  10 6c 6f 6e 67 6d 65 6e  |?14=7....longmen|
00001ef0  3f 31 35 3d 30 0d 0b cc  12 6c 6f 6e 67 6d 65 6e  |?15=0....longmen|
00001f00  21 31 36 3d 77 69 64 0d  0b d6 11 6c 6f 6e 67 6d  |!16=wid....longm|
00001f10  65 6e 21 32 30 3d 34 38  0d 0b e0 10 6c 6f 6e 67  |en!20=48....long|
00001f20  6d 65 6e 21 32 34 3d 30  0d 0b ea 12 e3 20 69 3d  |men!24=0..... i=|
00001f30  30 20 b8 20 6e 75 6d 62  65 72 0d 0b f4 11 70 74  |0 . number....pt|
00001f40  72 3d 28 32 34 2a 69 29  2b 32 38 0d 0b fe 13 6c  |r=(24*i)+28....l|
00001f50  6f 6e 67 6d 65 6e 21 28  70 74 72 29 3d 30 0d 0c  |ongmen!(ptr)=0..|
00001f60  08 16 6c 6f 6e 67 6d 65  6e 21 28 70 74 72 2b 34  |..longmen!(ptr+4|
00001f70  29 3d 2d 31 0d 0c 12 1d  6c 6f 6e 67 6d 65 6e 21  |)=-1....longmen!|
00001f80  28 70 74 72 2b 38 29 3d  26 30 37 30 30 30 30 30  |(ptr+8)=&0700000|
00001f90  31 0d 0c 1c 1c 64 61 74  61 24 3d 24 28 6c 6f 6e  |1....data$=$(lon|
00001fa0  67 64 61 74 61 2b 28 69  2a 31 33 29 29 0d 0c 26  |gdata+(i*13))..&|
00001fb0  50 e7 20 c0 64 61 74 61  24 2c 31 29 3d 22 ac 22  |P. .data$,1)="."|
00001fc0  20 8c 20 6c 6f 6e 67 6d  65 6e 21 28 70 74 72 29  | . longmen!(ptr)|
00001fd0  3d 6c 6f 6e 67 6d 65 6e  21 28 70 74 72 29 20 84  |=longmen!(ptr) .|
00001fe0  20 25 31 30 3a 64 61 74  61 24 3d c2 64 61 74 61  | %10:data$=.data|
00001ff0  24 2c a9 28 64 61 74 61  24 29 2d 31 29 0d 0c 30  |$,.(data$)-1)..0|
00002000  4f e7 20 c0 64 61 74 61  24 2c 31 29 3d 22 80 22  |O. .data$,1)="."|
00002010  20 8c 20 6c 6f 6e 67 6d  65 6e 21 28 70 74 72 29  | . longmen!(ptr)|
00002020  3d 6c 6f 6e 67 6d 65 6e  21 28 70 74 72 29 20 84  |=longmen!(ptr) .|
00002030  20 25 31 3a 64 61 74 61  24 3d c2 64 61 74 61 24  | %1:data$=.data$|
00002040  2c a9 28 64 61 74 61 24  29 2d 31 29 0d 0c 3a 1d  |,.(data$)-1)..:.|
00002050  24 28 6c 6f 6e 67 6d 65  6e 2b 28 70 74 72 2b 31  |$(longmen+(ptr+1|
00002060  32 29 29 3d 64 61 74 61  24 0d 0c 44 05 ed 0d 0c  |2))=data$..D....|
00002070  4e 2b 6c 6f 6e 67 6d 65  6e 21 28 70 74 72 29 3d  |N+longmen!(ptr)=|
00002080  6c 6f 6e 67 6d 65 6e 21  28 70 74 72 29 20 84 20  |longmen!(ptr) . |
00002090  25 31 30 30 30 30 30 30  30 0d 0c 58 0c 3d 6c 6f  |%10000000..X.=lo|
000020a0  6e 67 6d 65 6e 0d 0c 62  0f dd f2 74 68 69 6e 67  |ngmen..b...thing|
000020b0  28 6d 24 29 0d 0c 6c 16  6d 24 3d c0 6d 24 2c a7  |(m$)..l.m$=.m$,.|
000020c0  6d 24 2c 22 2c 22 29 2d  31 29 0d 0c 76 0f 69 24  |m$,",")-1)..v.i$|
000020d0  3d 22 22 3a 6a 24 3d 22  22 0d 0c 80 12 e7 20 a7  |="":j$=""..... .|
000020e0  6d 24 2c 22 7b 22 29 3e  30 20 8c 0d 0c 8a 16 69  |m$,"{")>0 .....i|
000020f0  24 3d c0 6d 24 2c a7 6d  24 2c 22 7d 22 29 2d 31  |$=.m$,.m$,"}")-1|
00002100  29 0d 0c 94 16 6d 24 3d  c1 6d 24 2c a7 6d 24 2c  |)....m$=.m$,.m$,|
00002110  22 7d 22 29 2b 31 29 0d  0c 9e 16 6a 24 3d c0 69  |"}")+1)....j$=.i|
00002120  24 2c a7 69 24 2c 22 7c  22 29 2d 31 29 0d 0c a8  |$,.i$,"|")-1)...|
00002130  16 69 24 3d c1 69 24 2c  a7 69 24 2c 22 7c 22 29  |.i$=.i$,.i$,"|")|
00002140  2b 31 29 0d 0c b2 05 cd  0d 0c bc 13 69 6a 61 63  |+1).........ijac|
00002150  6b 3d 26 30 37 30 30 30  30 32 31 0d 0c c6 0b 6d  |k=&07000021....m|
00002160  6a 61 63 6b 3d 30 0d 0c  d0 0e 73 75 62 6d 65 6e  |jack=0....submen|
00002170  75 3d 2d 31 0d 0c da 20  e7 20 a7 6a 24 2c 22 62  |u=-1... . .j$,"b|
00002180  22 29 3e 30 20 8c 20 73  75 62 6d 65 6e 75 3d a0  |")>0 . submenu=.|
00002190  28 69 24 29 0d 0c e4 22  e7 20 a7 6a 24 2c 22 5f  |(i$)...". .j$,"_|
000021a0  22 29 3e 30 20 8c 20 6d  6a 61 63 6b 3d 6d 6a 61  |")>0 . mjack=mja|
000021b0  63 6b 20 84 20 32 0d 0c  ee 22 e7 20 a7 6a 24 2c  |ck . 2...". .j$,|
000021c0  22 80 22 29 3e 30 20 8c  20 6d 6a 61 63 6b 3d 6d  |".")>0 . mjack=m|
000021d0  6a 61 63 6b 20 84 20 31  0d 0c f8 30 e7 20 a7 6a  |jack . 1...0. .j|
000021e0  24 2c 22 75 22 29 3e 30  20 8c 20 6d 6a 61 63 6b  |$,"u")>0 . mjack|
000021f0  3d 6d 6a 61 63 6b 20 84  20 32 3a 73 75 62 6d 65  |=mjack . 2:subme|
00002200  6e 75 3d a0 28 69 24 29  0d 0d 02 12 21 6d 65 6e  |nu=.(i$)....!men|
00002210  75 70 74 72 3d 6d 6a 61  63 6b 0d 0d 0c 15 6d 65  |uptr=mjack....me|
00002220  6e 75 70 74 72 21 34 3d  73 75 62 6d 65 6e 75 0d  |nuptr!4=submenu.|
00002230  0d 16 13 6d 65 6e 75 70  74 72 21 38 3d 69 6a 61  |...menuptr!8=ija|
00002240  63 6b 0d 0d 20 14 24 28  6d 65 6e 75 70 74 72 2b  |ck.. .$(menuptr+|
00002250  31 32 29 3d 6d 24 0d 0d  2a 05 cd 0d 0d 34 05 e1  |12)=m$..*....4..|
00002260  0d 0d 3e 12 dd f2 63 6c  69 63 6b 28 62 6c 6f 63  |..>...click(bloc|
00002270  6b 29 0d 0d 48 13 6b 65  65 70 62 25 3d 62 6c 6f  |k)..H.keepb%=blo|
00002280  63 6b 21 31 32 0d 0d 52  2a e7 20 a4 63 68 65 63  |ck!12..R*. .chec|
00002290  6b 69 74 28 62 6c 6f 63  6b 21 31 32 2c 62 6c 6f  |kit(block!12,blo|
000022a0  63 6b 21 31 36 29 3d 39  38 33 30 34 30 20 8c 0d  |ck!16)=983040 ..|
000022b0  0d 5c 24 f2 73 6c 61 62  69 6e 28 6b 65 65 70 62  |.\$.slabin(keepb|
000022c0  25 29 3a f2 73 6c 61 62  6f 75 74 28 6b 65 65 70  |%):.slabout(keep|
000022d0  62 25 29 0d 0d 66 05 cd  0d 0d 70 26 e7 20 71 75  |b%)..f....p&. qu|
000022e0  69 74 69 6e 67 20 8c 20  71 75 69 74 69 6e 3d a3  |iting . quitin=.|
000022f0  3a f2 63 6c 6f 73 65 28  71 75 69 74 25 29 0d 0d  |:.close(quit%)..|
00002300  7a 27 e7 20 62 6c 6f 63  6b 21 31 32 3d 2d 32 20  |z'. block!12=-2 |
00002310  80 20 62 6c 6f 63 6b 21  38 3d 32 20 f2 63 6d 65  |. block!8=2 .cme|
00002320  6e 75 73 3a e1 0d 0d 84  33 e7 20 62 6c 6f 63 6b  |nus:....3. block|
00002330  21 31 32 3d 2d 32 20 80  20 62 6c 6f 63 6b 21 38  |!12=-2 . block!8|
00002340  3d 34 20 f2 6f 70 65 6e  77 69 6e 28 6d 61 69 6e  |=4 .openwin(main|
00002350  25 29 3a f2 70 61 6e 65  0d 0d 8e 3d e7 20 62 6c  |%):.pane...=. bl|
00002360  6f 63 6b 21 31 32 3d 2d  32 20 80 20 62 6c 6f 63  |ock!12=-2 . bloc|
00002370  6b 21 38 3d 31 20 f2 6f  70 65 6e 77 69 6e 28 6e  |k!8=1 .openwin(n|
00002380  65 77 25 29 3a f2 69 6e  66 6f 28 6e 65 77 25 2c  |ew%):.info(new%,|
00002390  31 2c 22 22 29 0d 0d 98  2a e7 20 62 6c 6f 63 6b  |1,"")...*. block|
000023a0  21 31 32 3d 6d 61 69 6e  25 20 80 20 62 6c 6f 63  |!12=main% . bloc|
000023b0  6b 21 38 3d 32 20 f2 63  6d 65 6e 75 73 3a e1 0d  |k!8=2 .cmenus:..|
000023c0  0d a2 51 e7 20 62 6c 6f  63 6b 21 31 32 3d 73 61  |..Q. block!12=sa|
000023d0  76 65 25 20 80 20 62 6c  6f 63 6b 21 31 36 3d 32  |ve% . block!16=2|
000023e0  20 77 69 6e 73 61 76 65  25 3d 62 6c 6f 63 6b 21  | winsave%=block!|
000023f0  31 32 3a 66 69 6c 65 74  79 70 65 24 3d 22 66 69  |12:filetype$="fi|
00002400  6c 65 5f 46 46 46 22 3a  f2 64 65 66 73 61 76 65  |le_FFF":.defsave|
00002410  0d 0d ac 52 e7 20 62 6c  6f 63 6b 21 31 32 3d 73  |...R. block!12=s|
00002420  61 76 65 64 25 20 80 20  62 6c 6f 63 6b 21 31 36  |aved% . block!16|
00002430  3d 32 20 77 69 6e 73 61  76 65 25 3d 62 6c 6f 63  |=2 winsave%=bloc|
00002440  6b 21 31 32 3a 66 69 6c  65 74 79 70 65 24 3d 22  |k!12:filetype$="|
00002450  66 69 6c 65 5f 30 30 44  22 3a f2 64 65 66 73 61  |file_00D":.defsa|
00002460  76 65 0d 0d b6 4d e7 20  62 6c 6f 63 6b 21 31 32  |ve...M. block!12|
00002470  3d 73 61 76 65 25 20 80  20 62 6c 6f 63 6b 21 31  |=save% . block!1|
00002480  36 3d 30 20 77 69 6e 73  61 76 65 25 3d 62 6c 6f  |6=0 winsave%=blo|
00002490  63 6b 21 31 32 3a f2 73  61 76 65 28 24 a4 69 6e  |ck!12:.save($.in|
000024a0  66 6f 28 77 69 6e 73 61  76 65 25 2c 31 29 29 0d  |fo(winsave%,1)).|
000024b0  0d c0 4e e7 20 62 6c 6f  63 6b 21 31 32 3d 73 61  |..N. block!12=sa|
000024c0  76 65 64 25 20 80 20 62  6c 6f 63 6b 21 31 36 3d  |ved% . block!16=|
000024d0  30 20 77 69 6e 73 61 76  65 25 3d 62 6c 6f 63 6b  |0 winsave%=block|
000024e0  21 31 32 3a f2 73 61 76  65 28 24 a4 69 6e 66 6f  |!12:.save($.info|
000024f0  28 77 69 6e 73 61 76 65  25 2c 31 29 29 0d 0d ca  |(winsave%,1))...|
00002500  2e e7 20 62 6c 6f 63 6b  21 31 32 3d 73 61 76 65  |.. block!12=save|
00002510  25 20 80 20 62 6c 6f 63  6b 21 31 36 3d 33 20 8c  |% . block!16=3 .|
00002520  20 f2 72 61 64 69 6f 73  61 76 65 0d 0d d4 2e e7  | .radiosave.....|
00002530  20 62 6c 6f 63 6b 21 31  32 3d 73 61 76 65 25 20  | block!12=save% |
00002540  80 20 62 6c 6f 63 6b 21  31 36 3d 34 20 8c 20 f2  |. block!16=4 . .|
00002550  72 61 64 69 6f 73 61 76  65 0d 0d de 4b e7 20 62  |radiosave...K. b|
00002560  6c 6f 63 6b 21 31 32 3d  6e 65 77 25 20 80 20 62  |lock!12=new% . b|
00002570  6c 6f 63 6b 21 31 36 3d  32 20 77 69 6e 73 61 76  |lock!16=2 winsav|
00002580  65 25 3d 62 6c 6f 63 6b  21 31 32 3a 66 69 6c 65  |e%=block!12:file|
00002590  74 79 70 65 24 3d 22 6e  65 77 22 3a f2 64 65 66  |type$="new":.def|
000025a0  73 61 76 65 0d 0d e8 26  e7 20 62 6c 6f 63 6b 21  |save...&. block!|
000025b0  31 32 3d 6e 65 77 25 20  80 20 62 6c 6f 63 6b 21  |12=new% . block!|
000025c0  31 36 3d 34 20 8c 20 f2  67 6f 0d 0d f2 2a e7 20  |16=4 . .go...*. |
000025d0  62 6c 6f 63 6b 21 31 32  3d 6e 65 77 25 20 80 20  |block!12=new% . |
000025e0  62 6c 6f 63 6b 21 31 36  3d 35 20 8c 20 f2 64 72  |block!16=5 . .dr|
000025f0  69 76 65 30 0d 0d fc 2e  e7 20 62 6c 6f 63 6b 21  |ive0..... block!|
00002600  31 32 3d 6d 61 69 6e 25  20 80 20 62 6c 6f 63 6b  |12=main% . block|
00002610  21 38 3d 34 20 8c 20 f2  73 65 6c 65 63 74 69 74  |!8=4 . .selectit|
00002620  65 6d 0d 0e 06 2d e7 20  62 6c 6f 63 6b 21 31 32  |em...-. block!12|
00002630  3d 6d 61 69 6e 25 20 80  20 62 6c 6f 63 6b 21 38  |=main% . block!8|
00002640  3d 31 20 8c 20 f2 73 65  6c 65 63 74 69 6f 6e 0d  |=1 . .selection.|
00002650  0e 10 3b e7 20 62 6c 6f  63 6b 21 31 32 3d 66 6f  |..;. block!12=fo|
00002660  75 6e 64 25 20 80 20 62  6c 6f 63 6b 21 31 36 3d  |und% . block!16=|
00002670  37 20 8c 20 66 6f 75 6e  64 3d a3 3a f2 63 6c 6f  |7 . found=.:.clo|
00002680  73 65 28 66 6f 75 6e 64  25 29 0d 0e 1a 2a e7 20  |se(found%)...*. |
00002690  62 6c 6f 63 6b 21 31 32  3d 66 6f 75 6e 64 25 20  |block!12=found% |
000026a0  80 20 62 6c 6f 63 6b 21  31 36 3d 36 20 8c 20 f2  |. block!16=6 . .|
000026b0  66 69 6e 64 0d 0e 24 35  e7 20 62 6c 6f 63 6b 21  |find..$5. block!|
000026c0  31 32 3d 6e 6f 74 66 6e  64 25 20 80 20 62 6c 6f  |12=notfnd% . blo|
000026d0  63 6b 21 31 36 3d 33 20  8c 20 f2 63 6c 6f 73 65  |ck!16=3 . .close|
000026e0  28 6e 6f 74 66 6e 64 25  29 0d 0e 2e 2e e7 20 62  |(notfnd%)..... b|
000026f0  6c 6f 63 6b 21 31 32 3d  74 6f 6f 6c 62 6f 78 25  |lock!12=toolbox%|
00002700  20 80 20 62 6c 6f 63 6b  21 31 36 3d 30 20 8c 20  | . block!16=0 . |
00002710  f2 63 6d 65 6e 75 73 0d  0e 38 2e e7 20 62 6c 6f  |.cmenus..8.. blo|
00002720  63 6b 21 31 32 3d 74 6f  6f 6c 62 6f 78 25 20 80  |ck!12=toolbox% .|
00002730  20 62 6c 6f 63 6b 21 31  36 3d 31 20 8c 20 f2 63  | block!16=1 . .c|
00002740  6d 65 6e 75 73 0d 0e 42  2e e7 20 62 6c 6f 63 6b  |menus..B.. block|
00002750  21 31 32 3d 74 6f 6f 6c  62 6f 78 25 20 80 20 62  |!12=toolbox% . b|
00002760  6c 6f 63 6b 21 31 36 3d  32 20 8c 20 f2 63 6d 65  |lock!16=2 . .cme|
00002770  6e 75 73 0d 0e 4c 44 e7  20 62 6c 6f 63 6b 21 31  |nus..LD. block!1|
00002780  32 3d 74 6f 6f 6c 62 6f  78 25 20 80 20 62 6c 6f  |2=toolbox% . blo|
00002790  63 6b 21 31 36 3d 33 20  80 20 69 74 65 6d 6e 6f  |ck!16=3 . itemno|
000027a0  3c 3e 2d 31 20 8c 20 f2  6f 70 65 6e 77 69 6e 28  |<>-1 . .openwin(|
000027b0  69 69 6e 66 6f 25 29 0d  0e 56 46 e7 20 62 6c 6f  |iinfo%)..VF. blo|
000027c0  63 6b 21 31 32 3d 74 6f  6f 6c 62 6f 78 25 20 80  |ck!12=toolbox% .|
000027d0  20 62 6c 6f 63 6b 21 31  36 3d 34 20 8c 20 f2 6f  | block!16=4 . .o|
000027e0  70 65 6e 77 69 6e 28 6e  65 77 25 29 3a f2 69 6e  |penwin(new%):.in|
000027f0  66 6f 28 6e 65 77 25 2c  31 2c 22 22 29 0d 0e 60  |fo(new%,1,"")..`|
00002800  2c e7 20 62 6c 6f 63 6b  21 31 32 3d 74 6f 6f 6c  |,. block!12=tool|
00002810  62 6f 78 25 20 80 20 62  6c 6f 63 6b 21 31 36 3d  |box% . block!16=|
00002820  35 20 8c 20 f2 6c 61 73  74 0d 0e 6a 2c e7 20 62  |5 . .last..j,. b|
00002830  6c 6f 63 6b 21 31 32 3d  74 6f 6f 6c 62 6f 78 25  |lock!12=toolbox%|
00002840  20 80 20 62 6c 6f 63 6b  21 31 36 3d 36 20 8c 20  | . block!16=6 . |
00002850  f2 6e 65 78 74 0d 0e 74  36 e7 20 62 6c 6f 63 6b  |.next..t6. block|
00002860  21 31 32 3d 74 6f 6f 6c  62 6f 78 25 20 80 20 62  |!12=toolbox% . b|
00002870  6c 6f 63 6b 21 31 36 3d  37 20 8c 20 f2 6f 70 65  |lock!16=7 . .ope|
00002880  6e 77 69 6e 28 66 69 6e  64 25 29 0d 0e 7e 32 e7  |nwin(find%)..~2.|
00002890  20 62 6c 6f 63 6b 21 31  32 3d 66 69 6e 64 25 20  | block!12=find% |
000028a0  80 20 62 6c 6f 63 6b 21  31 36 3d 31 36 20 8c 20  |. block!16=16 . |
000028b0  f2 63 6c 6f 73 65 28 66  69 6e 64 25 29 0d 0e 88  |.close(find%)...|
000028c0  2a e7 20 62 6c 6f 63 6b  21 31 32 3d 66 69 6e 64  |*. block!12=find|
000028d0  25 20 80 20 62 6c 6f 63  6b 21 31 36 3d 31 35 20  |% . block!16=15 |
000028e0  8c 20 f2 66 69 6e 64 0d  0e 92 33 e7 20 62 6c 6f  |. .find...3. blo|
000028f0  63 6b 21 31 32 3d 62 61  72 25 20 80 20 62 6c 6f  |ck!12=bar% . blo|
00002900  63 6b 21 31 36 3d 30 20  8c 20 f2 6f 70 65 6e 77  |ck!16=0 . .openw|
00002910  69 6e 28 74 69 6e 66 6f  25 29 0d 0e 9c 39 e7 20  |in(tinfo%)...9. |
00002920  62 6c 6f 63 6b 21 31 32  3d 71 75 65 72 79 25 20  |block!12=query% |
00002930  80 20 62 6c 6f 63 6b 21  31 36 3d 30 20 8c 20 f2  |. block!16=0 . .|
00002940  63 6c 6f 73 65 28 71 75  65 72 79 25 29 3a f2 65  |close(query%):.e|
00002950  6e 64 71 0d 0e a6 0f e7  20 70 72 65 71 75 69 74  |ndq..... prequit|
00002960  20 8c 0d 0e b0 73 e7 20  62 6c 6f 63 6b 21 31 32  | ....s. block!12|
00002970  3d 71 75 69 74 25 20 80  20 62 6c 6f 63 6b 21 31  |=quit% . block!1|
00002980  36 3d 30 20 8c 20 e0 3a  c8 99 22 57 69 6d 70 5f  |6=0 . .:.."Wimp_|
00002990  50 72 6f 63 65 73 73 4b  65 79 22 2c 26 31 46 43  |ProcessKey",&1FC|
000029a0  3a c8 99 72 65 69 6e 74  65 72 2c 6d 79 74 61 73  |:..reinter,mytas|
000029b0  6b 25 3a c8 99 22 57 69  6d 70 5f 43 6c 6f 73 65  |k%:.."Wimp_Close|
000029c0  44 6f 77 6e 22 2c 74 61  73 6b 2c 6d 79 74 61 73  |Down",task,mytas|
000029d0  6b 25 3a e0 3a 0d 0e ba  3b e7 20 62 6c 6f 63 6b  |k%:.:...;. block|
000029e0  21 31 32 3d 71 75 69 74  25 20 80 20 62 6c 6f 63  |!12=quit% . bloc|
000029f0  6b 21 31 36 3d 32 20 8c  20 f2 63 6c 6f 73 65 28  |k!16=2 . .close(|
00002a00  71 75 69 74 25 29 3a 70  72 65 71 75 69 74 3d a3  |quit%):prequit=.|
00002a10  0d 0e c4 50 e7 20 62 6c  6f 63 6b 21 31 32 3d 71  |...P. block!12=q|
00002a20  75 69 74 25 20 80 20 62  6c 6f 63 6b 21 31 36 3d  |uit% . block!16=|
00002a30  33 20 8c 20 f2 63 6c 6f  73 65 28 71 75 69 74 25  |3 . .close(quit%|
00002a40  29 3a f2 6f 70 65 6e 77  69 6e 28 73 61 76 65 64  |):.openwin(saved|
00002a50  25 29 3a 70 72 65 71 75  69 74 77 61 69 74 3d b9  |%):prequitwait=.|
00002a60  0d 0e ce 27 e7 20 70 72  65 71 75 69 74 20 80 20  |...'. prequit . |
00002a70  ac 20 70 72 65 71 75 69  74 77 61 69 74 20 70 72  |. prequitwait pr|
00002a80  65 71 75 69 74 3d a3 0d  0e d8 05 cc 0d 0e e2 57  |equit=.........W|
00002a90  e7 20 62 6c 6f 63 6b 21  31 32 3d 71 75 69 74 25  |. block!12=quit%|
00002aa0  20 80 20 62 6c 6f 63 6b  21 31 36 3d 30 20 8c 20  | . block!16=0 . |
00002ab0  c8 99 72 65 69 6e 74 65  72 2c 6d 79 74 61 73 6b  |..reinter,mytask|
00002ac0  25 3a c8 99 22 57 69 6d  70 5f 43 6c 6f 73 65 44  |%:.."Wimp_CloseD|
00002ad0  6f 77 6e 22 2c 74 61 73  6b 2c 6d 79 74 61 73 6b  |own",task,mytask|
00002ae0  25 3a e0 0d 0e ec 31 e7  20 62 6c 6f 63 6b 21 31  |%:....1. block!1|
00002af0  32 3d 71 75 69 74 25 20  80 20 62 6c 6f 63 6b 21  |2=quit% . block!|
00002b00  31 36 3d 32 20 8c 20 f2  63 6c 6f 73 65 28 71 75  |16=2 . .close(qu|
00002b10  69 74 25 29 0d 0e f6 4c  e7 20 62 6c 6f 63 6b 21  |it%)...L. block!|
00002b20  31 32 3d 71 75 69 74 25  20 80 20 62 6c 6f 63 6b  |12=quit% . block|
00002b30  21 31 36 3d 33 20 8c 20  f2 63 6c 6f 73 65 28 71  |!16=3 . .close(q|
00002b40  75 69 74 25 29 3a f2 6f  70 65 6e 77 69 6e 28 73  |uit%):.openwin(s|
00002b50  61 76 65 64 25 29 3a 71  75 69 74 69 6e 67 3d b9  |aved%):quiting=.|
00002b60  0d 0f 00 05 cd 0d 0f 0a  05 e1 0d 0f 14 0d dd f2  |................|
00002b70  70 72 6f 63 65 73 73 0d  0f 1e 4c e7 20 21 62 6c  |process...L. !bl|
00002b80  6f 63 6b 3d 73 61 76 65  25 20 80 20 62 6c 6f 63  |ock=save% . bloc|
00002b90  6b 21 32 34 3d 31 33 20  8c 20 77 69 6e 73 61 76  |k!24=13 . winsav|
00002ba0  65 25 3d 21 62 6c 6f 63  6b 3a f2 73 61 76 65 28  |e%=!block:.save(|
00002bb0  24 a4 69 6e 66 6f 28 77  69 6e 73 61 76 65 25 2c  |$.info(winsave%,|
00002bc0  31 29 29 0d 0f 28 4d e7  20 21 62 6c 6f 63 6b 3d  |1))..(M. !block=|
00002bd0  73 61 76 65 64 25 20 80  20 62 6c 6f 63 6b 21 32  |saved% . block!2|
00002be0  34 3d 31 33 20 8c 20 77  69 6e 73 61 76 65 25 3d  |4=13 . winsave%=|
00002bf0  21 62 6c 6f 63 6b 3a f2  73 61 76 65 28 24 a4 69  |!block:.save($.i|
00002c00  6e 66 6f 28 77 69 6e 73  61 76 65 25 2c 31 29 29  |nfo(winsave%,1))|
00002c10  0d 0f 32 20 c8 99 22 57  69 6d 70 5f 50 72 6f 63  |..2 .."Wimp_Proc|
00002c20  65 73 73 4b 65 79 22 2c  62 6c 6f 63 6b 21 32 34  |essKey",block!24|
00002c30  0d 0f 3c 05 e1 0d 0f 46  0c dd f2 73 65 6c 65 63  |..<....F...selec|
00002c40  74 0d 0f 50 0b 6e 6f 77  61 79 3d 30 0d 0f 5a 2e  |t..P.noway=0..Z.|
00002c50  c8 99 22 57 69 6d 70 5f  44 65 63 6f 64 65 4d 65  |.."Wimp_DecodeMe|
00002c60  6e 75 22 2c 2c 6f 70 65  6e 6d 65 6e 75 25 2c 62  |nu",,openmenu%,b|
00002c70  6c 6f 63 6b 2c 69 63 6f  6e 64 0d 0f 64 12 c8 8e  |lock,icond..d...|
00002c80  20 6f 70 65 6e 6d 65 6e  75 25 20 ca 0d 0f 6e 1a  | openmenu% ...n.|
00002c90  c9 20 6d 61 69 6e 6d 65  6e 75 25 2c 69 63 6f 6e  |. mainmenu%,icon|
00002ca0  6d 65 6e 75 25 3a 0d 0f  78 2c e7 20 24 69 63 6f  |menu%:..x,. $ico|
00002cb0  6e 64 3d 22 51 75 69 74  22 20 8c 20 f2 61 72 65  |nd="Quit" . .are|
00002cc0  79 6f 75 73 75 72 65 3a  71 75 69 74 69 6e 67 25  |yousure:quiting%|
00002cd0  3d b9 0d 0f 82 40 e7 20  24 69 63 6f 6e 64 3d 22  |=....@. $icond="|
00002ce0  54 6f 6f 6c 73 22 20 80  20 74 6f 6f 6c 73 6f 6e  |Tools" . toolson|
00002cf0  20 8c 20 74 6f 6f 6c 73  6f 6e 3d a3 3a f2 74 6f  | . toolson=.:.to|
00002d00  6f 6c 62 6f 78 28 2d 31  29 3a 6e 6f 77 61 79 3d  |olbox(-1):noway=|
00002d10  2d 31 0d 0f 8c 42 e7 20  24 69 63 6f 6e 64 3d 22  |-1...B. $icond="|
00002d20  54 6f 6f 6c 73 22 20 80  20 ac 20 74 6f 6f 6c 73  |Tools" . . tools|
00002d30  6f 6e 20 80 20 6e 6f 77  61 79 3d 30 20 8c 20 74  |on . noway=0 . t|
00002d40  6f 6f 6c 73 6f 6e 3d b9  3a f2 74 6f 6f 6c 62 6f  |oolson=.:.toolbo|
00002d50  78 28 31 29 0d 0f 96 2b  e7 20 24 69 63 6f 6e 64  |x(1)...+. $icond|
00002d60  3d 22 54 72 65 65 22 20  8c 20 f2 6f 70 65 6e 77  |="Tree" . .openw|
00002d70  69 6e 28 6d 61 69 6e 25  29 3a f2 70 61 6e 65 0d  |in(main%):.pane.|
00002d80  0f a0 39 e7 20 24 69 63  6f 6e 64 3d 22 4e 65 77  |..9. $icond="New|
00002d90  20 54 72 65 65 22 20 8c  20 f2 6f 70 65 6e 77 69  | Tree" . .openwi|
00002da0  6e 28 6e 65 77 25 29 3a  f2 69 6e 66 6f 28 6e 65  |n(new%):.info(ne|
00002db0  77 25 2c 31 2c 22 22 29  0d 0f aa 38 e7 20 24 69  |w%,1,"")...8. $i|
00002dc0  63 6f 6e 64 3d 22 54 72  65 65 73 2e 4e 6f 20 54  |cond="Trees.No T|
00002dd0  72 65 65 22 20 8c 20 c8  99 22 57 69 6d 70 5f 43  |ree" . .."Wimp_C|
00002de0  72 65 61 74 65 4d 65 6e  75 22 2c 2c 2d 31 3a e1  |reateMenu",,-1:.|
00002df0  0d 0f b4 2d e7 20 c0 24  69 63 6f 6e 64 2c 35 29  |...-. .$icond,5)|
00002e00  3d 22 54 72 65 65 73 22  20 8c 20 f2 6f 70 65 6e  |="Trees" . .open|
00002e10  74 72 65 65 28 62 6c 6f  63 6b 21 34 29 0d 0f be  |tree(block!4)...|
00002e20  0c c9 20 74 72 65 65 73  25 0d 0f c8 3e e7 20 24  |.. trees%...>. $|
00002e30  69 63 6f 6e 64 3d 22 43  6c 65 61 72 20 41 6c 6c  |icond="Clear All|
00002e40  22 20 8c 20 f2 63 6c 65  61 72 61 6c 6c 3a c8 99  |" . .clearall:..|
00002e50  22 57 69 6d 70 5f 43 72  65 61 74 65 4d 65 6e 75  |"Wimp_CreateMenu|
00002e60  22 2c 2c 2d 31 3a e1 0d  0f d2 33 e7 20 24 69 63  |",,-1:....3. $ic|
00002e70  6f 6e 64 3d 22 4e 6f 20  54 72 65 65 73 22 20 8c  |ond="No Trees" .|
00002e80  20 c8 99 22 57 69 6d 70  5f 43 72 65 61 74 65 4d  | .."Wimp_CreateM|
00002e90  65 6e 75 22 2c 2c 2d 31  3a e1 0d 0f dc 21 e7 20  |enu",,-1:....!. |
00002ea0  74 6d 6f 70 74 3d 30 20  8c 20 f2 6f 70 65 6e 74  |tmopt=0 . .opent|
00002eb0  72 65 65 28 21 62 6c 6f  63 6b 29 0d 0f e6 20 e7  |ree(!block)... .|
00002ec0  20 74 6d 6f 70 74 3d 31  20 8c 20 f2 6f 70 65 6e  | tmopt=1 . .open|
00002ed0  61 72 63 28 21 62 6c 6f  63 6b 29 0d 0f f0 23 e7  |arc(!block)...#.|
00002ee0  20 74 6d 6f 70 74 3d 32  20 8c 20 f2 64 65 6c 65  | tmopt=2 . .dele|
00002ef0  74 65 28 28 21 62 6c 6f  63 6b 29 2d 31 29 0d 0f  |te((!block)-1)..|
00002f00  fa 05 cb 0d 10 04 22 c8  99 22 57 69 6d 70 5f 47  |......".."Wimp_G|
00002f10  65 74 50 6f 69 6e 74 65  72 49 6e 66 6f 22 2c 2c  |etPointerInfo",,|
00002f20  62 6c 6f 63 6b 0d 10 0e  11 e7 20 62 6c 6f 63 6b  |block..... block|
00002f30  21 38 3d 31 20 8c 0d 10  18 3e e7 20 6d 65 6e 75  |!8=1 ....>. menu|
00002f40  6f 70 65 6e 3d 2d 34 34  20 8c 20 72 63 3d 31 3a  |open=-44 . rc=1:|
00002f50  62 6c 6f 63 6b 21 31 36  3d 72 69 63 6f 6e 3a 62  |block!16=ricon:b|
00002f60  6c 6f 63 6b 21 31 32 3d  72 6d 65 6e 3a f2 63 6d  |lock!12=rmen:.cm|
00002f70  65 6e 75 73 0d 10 22 22  c8 99 22 57 69 6d 70 5f  |enus.."".."Wimp_|
00002f80  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 6f 70 65  |CreateMenu",,ope|
00002f90  6e 6d 65 6e 75 25 0d 10  2c 05 cc 0d 10 36 1b c8  |nmenu%..,....6..|
00002fa0  99 22 57 69 6d 70 5f 43  72 65 61 74 65 4d 65 6e  |."Wimp_CreateMen|
00002fb0  75 22 2c 2c 2d 31 0d 10  40 05 cd 0d 10 4a 05 e1  |u",,-1..@....J..|
00002fc0  0d 10 54 0f dd f2 72 61  64 69 6f 73 61 76 65 0d  |..T...radiosave.|
00002fd0  10 5e 0a 64 6f 6e 65 3d  30 0d 10 68 12 e7 20 62  |.^.done=0..h.. b|
00002fe0  6c 6f 63 6b 21 31 36 3d  33 20 8c 0d 10 72 24 f2  |lock!16=3 ...r$.|
00002ff0  73 65 74 69 63 73 74 61  74 65 28 73 61 76 65 25  |seticstate(save%|
00003000  2c 34 2c 31 3c 3c 32 31  2c 30 3c 3c 32 31 29 0d  |,4,1<<21,0<<21).|
00003010  10 7c 1d f2 69 6e 66 6f  28 73 61 76 65 25 2c 31  |.|..info(save%,1|
00003020  2c 22 54 65 78 74 46 69  6c 65 22 29 0d 10 86 05  |,"TextFile")....|
00003030  cd 0d 10 90 12 e7 20 62  6c 6f 63 6b 21 31 36 3d  |...... block!16=|
00003040  34 20 8c 0d 10 9a 24 f2  73 65 74 69 63 73 74 61  |4 ....$.seticsta|
00003050  74 65 28 73 61 76 65 25  2c 33 2c 31 3c 3c 32 31  |te(save%,3,1<<21|
00003060  2c 30 3c 3c 32 31 29 0d  10 a4 1e f2 69 6e 66 6f  |,0<<21).....info|
00003070  28 73 61 76 65 25 2c 31  2c 22 53 65 6c 65 63 74  |(save%,1,"Select|
00003080  69 6f 6e 22 29 0d 10 ae  05 cd 0d 10 b8 05 e1 0d  |ion")...........|
00003090  10 c2 11 dd f2 6d 65 73  73 28 6d 65 73 73 24 29  |.....mess(mess$)|
000030a0  0d 10 cc 20 21 69 63 6f  6e 64 3d 30 3a 24 28 69  |... !icond=0:$(i|
000030b0  63 6f 6e 64 2b 34 29 3d  6d 65 73 73 24 2b bd 30  |cond+4)=mess$+.0|
000030c0  0d 10 d6 2c c8 99 22 57  69 6d 70 5f 52 65 70 6f  |...,.."Wimp_Repo|
000030d0  72 74 45 72 72 6f 72 22  2c 69 63 6f 6e 64 2c 31  |rtError",icond,1|
000030e0  2c 22 21 44 69 73 6b 54  72 65 65 22 0d 10 e0 05  |,"!DiskTree"....|
000030f0  e1 0d 10 ea 09 dd f2 6f  75 74 0d 10 f4 0f f2 64  |.......out.....d|
00003100  72 61 67 73 70 72 28 31  29 0d 10 fe 28 e7 20 77  |ragspr(1)...(. w|
00003110  69 6e 73 61 76 65 25 3d  6e 65 77 25 20 8c 20 73  |insave%=new% . s|
00003120  74 65 78 74 3d 73 74 65  78 3a 66 74 3d 26 46 46  |text=stex:ft=&FF|
00003130  46 0d 11 08 29 e7 20 77  69 6e 73 61 76 65 25 3d  |F...). winsave%=|
00003140  73 61 76 65 25 20 8c 20  73 74 65 78 74 3d 73 74  |save% . stext=st|
00003150  65 78 3a 66 74 3d 26 46  46 46 0d 11 12 2b e7 20  |ex:ft=&FFF...+. |
00003160  77 69 6e 73 61 76 65 25  3d 73 61 76 65 64 25 20  |winsave%=saved% |
00003170  8c 20 73 74 65 78 74 3d  73 74 65 78 64 3a 66 74  |. stext=stexd:ft|
00003180  3d 26 30 30 44 0d 11 1c  10 e7 20 64 72 69 76 65  |=&00D..... drive|
00003190  25 3d 31 20 8c 0d 11 26  23 c8 99 20 22 57 69 6d  |%=1 ...&#.. "Wim|
000031a0  70 5f 47 65 74 50 6f 69  6e 74 65 72 49 6e 66 6f  |p_GetPointerInfo|
000031b0  22 2c 2c 62 6c 6f 63 6b  0d 11 30 39 54 6f 58 3d  |",,block..09ToX=|
000031c0  62 6c 6f 63 6b 21 30 3a  54 6f 59 3d 62 6c 6f 63  |block!0:ToY=bloc|
000031d0  6b 21 34 3a 57 69 6e 64  6f 77 3d 62 6c 6f 63 6b  |k!4:Window=block|
000031e0  21 31 32 3a 49 63 6f 6e  3d 62 6c 6f 63 6b 21 31  |!12:Icon=block!1|
000031f0  36 0d 11 3a 33 6d 62 6c  6f 63 6b 21 30 3d 32 35  |6..:3mblock!0=25|
00003200  36 3a 6d 62 6c 6f 63 6b  21 31 32 3d 30 3a 6d 62  |6:mblock!12=0:mb|
00003210  6c 6f 63 6b 21 31 36 3d  31 3a f4 20 44 61 74 61  |lock!16=1:. Data|
00003220  53 61 76 65 0d 11 44 3f  6d 62 6c 6f 63 6b 21 32  |Save..D?mblock!2|
00003230  30 3d 57 69 6e 64 6f 77  3a 6d 62 6c 6f 63 6b 21  |0=Window:mblock!|
00003240  32 34 3d 49 63 6f 6e 3a  6d 62 6c 6f 63 6b 21 32  |24=Icon:mblock!2|
00003250  38 3d 54 6f 58 3a 6d 62  6c 6f 63 6b 21 33 32 3d  |8=ToX:mblock!32=|
00003260  54 6f 59 0d 11 4e 37 6d  62 6c 6f 63 6b 21 33 36  |ToY..N7mblock!36|
00003270  3d 2d 31 3a f4 20 4e 6f  20 69 64 65 61 20 77 68  |=-1:. No idea wh|
00003280  61 74 20 74 68 65 20 73  69 7a 65 20 69 73 20 67  |at the size is g|
00003290  6f 69 6e 67 20 74 6f 20  62 65 0d 11 58 11 6d 62  |oing to be..X.mb|
000032a0  6c 6f 63 6b 21 34 30 3d  66 74 3a 0d 11 62 1d 24  |lock!40=ft:..b.$|
000032b0  73 74 65 78 74 3d 24 a4  69 6e 66 6f 28 77 69 6e  |stext=$.info(win|
000032c0  73 61 76 65 25 2c 31 29  0d 11 6c 1b 24 73 74 65  |save%,1)..l.$ste|
000032d0  78 74 3d a4 67 65 74 6c  65 61 66 28 24 73 74 65  |xt=.getleaf($ste|
000032e0  78 74 29 0d 11 76 29 e3  20 49 3d 30 20 b8 20 32  |xt)..v). I=0 . 2|
000032f0  35 35 3a e7 20 49 3f 73  74 65 78 74 3c 33 32 20  |55:. I?stext<32 |
00003300  8c 20 49 3f 73 74 65 78  74 3d 31 33 0d 11 80 05  |. I?stext=13....|
00003310  ed 0d 11 8a 20 24 28 6d  62 6c 6f 63 6b 2b 34 34  |.... $(mblock+44|
00003320  29 3d a4 62 69 74 28 24  73 74 65 78 74 29 2b bd  |)=.bit($stext)+.|
00003330  30 0d 11 94 2e e7 20 77  69 6e 73 61 76 65 25 3d  |0..... winsave%=|
00003340  6e 65 77 25 20 8c 20 24  28 6d 62 6c 6f 63 6b 2b  |new% . $(mblock+|
00003350  34 34 29 3d 22 44 69 72  65 63 74 6f 72 79 22 0d  |44)="Directory".|
00003360  11 9e 3a c8 99 20 22 57  69 6d 70 5f 53 65 6e 64  |..:.. "Wimp_Send|
00003370  4d 65 73 73 61 67 65 22  2c 31 37 2c 6d 62 6c 6f  |Message",17,mblo|
00003380  63 6b 2c 57 69 6e 64 6f  77 2c 49 63 6f 6e 3a f4  |ck,Window,Icon:.|
00003390  20 44 61 74 61 53 61 76  65 0d 11 a8 0b 64 72 61  | DataSave....dra|
000033a0  67 25 3d 30 0d 11 b2 05  cd 0d 11 bc 05 e1 0d 11  |g%=0............|
000033b0  c6 0d dd f2 64 65 66 73  61 76 65 0d 11 d0 09 f2  |....defsave.....|
000033c0  4d 6f 64 65 0d 11 da 13  21 62 6c 6f 63 6b 3d 77  |Mode....!block=w|
000033d0  69 6e 73 61 76 65 25 0d  11 e4 23 c8 99 20 22 57  |insave%...#.. "W|
000033e0  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 53 74 61  |imp_GetWindowSta|
000033f0  74 65 22 2c 2c 62 6c 6f  63 6b 0d 11 ee 1b 79 73  |te",,block....ys|
00003400  69 7a 65 25 3d 62 6c 6f  63 6b 21 31 36 2d 62 6c  |ize%=block!16-bl|
00003410  6f 63 6b 21 38 0d 11 f8  23 78 25 3d 62 6c 6f 63  |ock!8...#x%=bloc|
00003420  6b 21 34 3a 79 25 3d 62  6c 6f 63 6b 21 38 3a 62  |k!4:y%=block!8:b|
00003430  6c 6f 63 6b 21 34 3d 32  0d 12 02 20 c8 99 22 57  |lock!4=2... .."W|
00003440  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
00003450  22 2c 2c 62 6c 6f 63 6b  0d 12 0c 23 62 6c 6f 63  |",,block...#bloc|
00003460  6b 21 38 2b 3d 78 25 3a  62 6c 6f 63 6b 21 31 32  |k!8+=x%:block!12|
00003470  2b 3d 79 25 2b 79 73 69  7a 65 25 0d 12 16 24 62  |+=y%+ysize%...$b|
00003480  6c 6f 63 6b 21 31 36 2b  3d 78 25 3a 62 6c 6f 63  |lock!16+=x%:bloc|
00003490  6b 21 32 30 2b 3d 79 25  2b 79 73 69 7a 65 25 0d  |k!20+=y%+ysize%.|
000034a0  12 20 35 62 6c 6f 63 6b  21 32 34 3d 30 3a 62 6c  |. 5block!24=0:bl|
000034b0  6f 63 6b 21 32 38 3d 30  3a 62 6c 6f 63 6b 21 33  |ock!28=0:block!3|
000034c0  32 3d 78 6d 61 78 3a 62  6c 6f 63 6b 21 33 36 3d  |2=xmax:block!36=|
000034d0  79 6d 61 78 0d 12 2a 27  21 62 6c 6f 63 6b 3d 30  |ymax..*'!block=0|
000034e0  3a 62 6c 6f 63 6b 21 34  3d 35 3a 64 72 61 67 25  |:block!4=5:drag%|
000034f0  3d b9 3a 64 72 69 76 65  25 3d 31 0d 12 34 0f e7  |=.:drive%=1..4..|
00003500  20 64 72 61 67 73 70 72  20 8c 0d 12 3e 38 c8 99  | dragspr ...>8..|
00003510  20 22 44 72 61 67 41 53  70 72 69 74 65 5f 53 74  | "DragASprite_St|
00003520  61 72 74 22 2c 25 31 30  30 30 30 31 30 31 2c 31  |art",%10000101,1|
00003530  2c 66 69 6c 65 74 79 70  65 24 2c 62 6c 6f 63 6b  |,filetype$,block|
00003540  2b 38 0d 12 48 10 f2 64  72 61 67 73 70 72 28 2d  |+8..H..dragspr(-|
00003550  31 29 0d 12 52 05 cc 0d  12 5c 1b c8 99 22 57 69  |1)..R....\..."Wi|
00003560  6d 70 5f 44 72 61 67 42  6f 78 22 2c 2c 62 6c 6f  |mp_DragBox",,blo|
00003570  63 6b 0d 12 66 05 cd 0d  12 70 05 e1 0d 12 7a 0a  |ck..f....p....z.|
00003580  dd f2 4d 6f 64 65 0d 12  84 4d 21 62 6c 6f 63 6b  |..Mode...M!block|
00003590  3d 31 33 30 3a 62 6c 6f  63 6b 21 34 3d 31 33 31  |=130:block!4=131|
000035a0  3a 62 6c 6f 63 6b 21 38  3d 2d 31 3a c8 99 22 4f  |:block!8=-1:.."O|
000035b0  53 5f 52 65 61 64 56 64  75 56 61 72 69 61 62 6c  |S_ReadVduVariabl|
000035c0  65 73 22 2c 62 6c 6f 63  6b 2c 62 6c 6f 63 6b 2b  |es",block,block+|
000035d0  31 32 38 0d 12 8e 29 c8  99 22 4f 53 5f 52 65 61  |128...).."OS_Rea|
000035e0  64 4d 6f 64 65 56 61 72  69 61 62 6c 65 22 2c eb  |dModeVariable",.|
000035f0  2c 34 20 b8 20 2c 2c 58  65 69 67 25 0d 12 98 29  |,4 . ,,Xeig%...)|
00003600  c8 99 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |.."OS_ReadModeVa|
00003610  72 69 61 62 6c 65 22 2c  eb 2c 35 20 b8 20 2c 2c  |riable",.,5 . ,,|
00003620  59 65 69 67 25 0d 12 a2  3d 78 6d 61 78 3d 28 28  |Yeig%...=xmax=((|
00003630  62 6c 6f 63 6b 21 31 32  38 29 2b 31 29 2a 32 5e  |block!128)+1)*2^|
00003640  58 65 69 67 25 3a 79 6d  61 78 3d 28 28 62 6c 6f  |Xeig%:ymax=((blo|
00003650  63 6b 21 31 33 32 29 2b  31 29 2a 32 5e 59 65 69  |ck!132)+1)*2^Yei|
00003660  67 25 0d 12 ac 05 e1 0d  12 b6 11 dd f2 73 61 76  |g%...........sav|
00003670  65 28 73 61 76 65 24 29  0d 12 c0 38 e7 20 63 74  |e(save$)...8. ct|
00003680  3d 2d 31 20 8c 20 f2 6d  65 73 73 28 22 4e 6f 20  |=-1 . .mess("No |
00003690  64 69 72 65 63 74 6f 72  79 20 74 72 65 65 20 64  |directory tree d|
000036a0  61 74 61 20 74 6f 20 73  61 76 65 21 22 29 3a e1  |ata to save!"):.|
000036b0  0d 12 ca 7b e7 20 a7 73  61 76 65 24 2c 22 2e 22  |...{. .save$,"."|
000036c0  29 3c 31 20 80 20 a7 73  61 76 65 24 2c 22 3a 22  |)<1 . .save$,":"|
000036d0  29 3c 31 20 80 20 73 61  76 65 24 3c 3e 22 3c 57  |)<1 . save$<>"<W|
000036e0  69 6d 70 24 53 63 72 61  70 3e 22 20 8c 20 f2 6d  |imp$Scrap>" . .m|
000036f0  65 73 73 28 22 54 6f 20  73 61 76 65 2c 20 64 72  |ess("To save, dr|
00003700  61 67 20 74 68 65 20 66  69 6c 65 20 69 63 6f 6e  |ag the file icon|
00003710  20 74 6f 20 61 20 64 69  72 65 63 74 6f 72 79 20  | to a directory |
00003720  76 69 65 77 65 72 2e 22  29 3a e1 0d 12 d4 07 ea  |viewer."):......|
00003730  20 85 0d 12 de 7b ee 20  85 20 ea 20 e7 20 9f 3d  | ....{. . . . .=|
00003740  37 31 36 32 32 3a f2 71  75 65 72 79 28 22 44 69  |71622:.query("Di|
00003750  73 63 20 46 75 6c 6c 22  29 3a c8 99 26 30 44 2c  |sc Full"):..&0D,|
00003760  30 2c 66 68 25 3a c8 99  26 34 30 36 43 31 3a f7  |0,fh%:..&406C1:.|
00003770  20 85 3a e1 3a 8b 20 f7  20 85 3a f2 65 72 72 6f  | .:.:. . .:.erro|
00003780  72 28 f6 24 2b 22 20 3a  20 61 74 20 6c 69 6e 65  |r(.$+" : at line|
00003790  20 22 2b c3 9e 29 3a c8  99 26 30 44 2c 30 2c 66  | "+..):..&0D,0,f|
000037a0  68 25 3a c8 99 26 34 30  36 43 31 3a e1 0d 12 e8  |h%:..&406C1:....|
000037b0  17 e7 20 77 69 6e 73 61  76 65 25 3d 73 61 76 65  |.. winsave%=save|
000037c0  64 25 20 8c 0d 12 f2 14  c8 99 22 48 6f 75 72 67  |d% ......."Hourg|
000037d0  6c 61 73 73 5f 4f 6e 22  0d 12 fc 0a 62 79 74 65  |lass_On"....byte|
000037e0  3d 30 0d 13 06 1f c8 99  22 4f 53 5f 46 69 6e 64  |=0......"OS_Find|
000037f0  22 2c 26 38 30 2c 73 61  76 65 24 20 b8 20 66 68  |",&80,save$ . fh|
00003800  25 0d 13 10 0d 65 6e 64  74 3d 74 62 6c 6b 0d 13  |%....endt=tblk..|
00003810  1a 21 24 65 6e 64 74 3d  22 44 69 73 6b 54 72 65  |.!$endt="DiskTre|
00003820  65 20 44 61 74 61 20 46  69 6c 65 20 76 b9 22 0d  |e Data File v.".|
00003830  13 24 24 65 6e 64 74 2b  3d a9 28 22 44 69 73 6b  |.$$endt+=.("Disk|
00003840  54 72 65 65 20 44 61 74  61 20 46 69 6c 65 20 76  |Tree Data File v|
00003850  b9 22 29 0d 13 2e 24 c8  99 22 4f 53 5f 47 42 50  |.")...$.."OS_GBP|
00003860  42 22 2c 32 2c 66 68 25  2c 74 62 6c 6b 2c 65 6e  |B",2,fh%,tblk,en|
00003870  64 74 2d 74 62 6c 6b 0d  13 38 3c e7 20 a4 63 68  |dt-tblk..8<. .ch|
00003880  65 63 6b 66 6c 61 67 28  73 61 76 65 64 25 2c 33  |eckflag(saved%,3|
00003890  2c 32 31 29 20 8c 20 73  74 74 3d 73 74 3a 65 74  |,21) . stt=st:et|
000038a0  74 3d 73 74 3a 8b 20 73  74 74 3d 30 3a 65 74 74  |t=st:. stt=0:ett|
000038b0  3d 63 74 0d 13 42 0d 65  6e 64 74 3d 74 62 6c 6b  |=ct..B.endt=tblk|
000038c0  0d 13 4c 1c 43 54 24 3d  a4 66 75 6c 6c 73 28 c3  |..L.CT$=.fulls(.|
000038d0  28 65 74 74 2d 73 74 74  29 2c 33 29 0d 13 56 0d  |(ett-stt),3)..V.|
000038e0  24 65 6e 64 74 3d 43 54  24 0d 13 60 0b 65 6e 64  |$endt=CT$..`.end|
000038f0  74 2b 3d 33 0d 13 6a 24  c8 99 22 4f 53 5f 47 42  |t+=3..j$.."OS_GB|
00003900  50 42 22 2c 32 2c 66 68  25 2c 74 62 6c 6b 2c 65  |PB",2,fh%,tblk,e|
00003910  6e 64 74 2d 74 62 6c 6b  0d 13 74 17 74 6f 74 61  |ndt-tblk..t.tota|
00003920  6c 31 25 3d 30 3a 74 6f  74 61 6c 32 25 3d 30 0d  |l1%=0:total2%=0.|
00003930  13 7e 28 e3 20 6b 3d 73  74 74 20 b8 20 65 74 74  |.~(. k=stt . ett|
00003940  3a 74 6f 74 61 6c 31 25  2b 3d 74 63 6f 75 6e 74  |:total1%+=tcount|
00003950  28 6b 29 3a ed 20 6b 0d  13 88 11 e3 20 6b 3d 73  |(k):. k..... k=s|
00003960  74 74 20 b8 20 65 74 74  0d 13 92 0e 74 6f 74 61  |tt . ett....tota|
00003970  6c 32 25 2b 3d 31 0d 13  9c 30 c8 99 22 48 6f 75  |l2%+=1...0.."Hou|
00003980  72 67 6c 61 73 73 5f 50  65 72 63 65 6e 74 61 67  |rglass_Percentag|
00003990  65 22 2c 74 6f 74 61 6c  32 25 2f 74 6f 74 61 6c  |e",total2%/total|
000039a0  31 25 2a 31 30 30 0d 13  a6 1d 74 73 24 3d a4 66  |1%*100....ts$=.f|
000039b0  75 6c 6c 73 28 c3 28 74  73 69 7a 65 28 6b 29 29  |ulls(.(tsize(k))|
000039c0  2c 37 29 0d 13 b0 1c 74  6c 24 3d a4 66 75 6c 6c  |,7)....tl$=.full|
000039d0  73 28 c3 28 74 6c 65 6e  28 6b 29 29 2c 37 29 0d  |s(.(tlen(k)),7).|
000039e0  13 ba 1e 74 63 24 3d a4  66 75 6c 6c 73 28 c3 28  |...tc$=.fulls(.(|
000039f0  74 63 6f 75 6e 74 28 6b  29 29 2c 37 29 0d 13 c4  |tcount(k)),7)...|
00003a00  24 72 6f 6f 74 6c 24 3d  a4 66 75 6c 6c 73 28 c3  |$rootl$=.fulls(.|
00003a10  28 a9 28 74 72 6f 6f 74  24 28 6b 29 29 29 2c 33  |(.(troot$(k))),3|
00003a20  29 0d 13 ce 0d 65 6e 64  74 3d 74 62 6c 6b 0d 13  |)....endt=tblk..|
00003a30  d8 1c 24 65 6e 64 74 3d  74 73 24 2b 74 6c 24 2b  |..$endt=ts$+tl$+|
00003a40  74 63 24 2b 72 6f 6f 74  6c 24 0d 13 e2 0c 65 6e  |tc$+rootl$....en|
00003a50  64 74 2b 3d 32 34 0d 13  ec 1d c8 99 22 4f 53 5f  |dt+=24......"OS_|
00003a60  47 42 50 42 22 2c 32 2c  66 68 25 2c 74 62 6c 6b  |GBPB",2,fh%,tblk|
00003a70  2c 32 34 0d 13 f6 0d 65  6e 64 74 3d 74 62 6c 6b  |,24....endt=tblk|
00003a80  0d 14 00 13 24 65 6e 64  74 3d 74 72 6f 6f 74 24  |....$endt=troot$|
00003a90  28 6b 29 0d 14 0a 16 65  6e 64 74 2b 3d a9 28 74  |(k)....endt+=.(t|
00003aa0  72 6f 6f 74 24 28 6b 29  29 0d 14 14 27 c8 99 22  |root$(k))...'.."|
00003ab0  4f 53 5f 47 42 50 42 22  2c 32 2c 66 68 25 2c 74  |OS_GBPB",2,fh%,t|
00003ac0  62 6c 6b 2c a9 28 74 72  6f 6f 74 24 28 6b 29 29  |blk,.(troot$(k))|
00003ad0  0d 14 1e 26 c8 99 22 4f  53 5f 47 42 50 42 22 2c  |...&.."OS_GBPB",|
00003ae0  32 2c 66 68 25 2c 74 72  65 65 28 6b 29 2c 74 73  |2,fh%,tree(k),ts|
00003af0  69 7a 65 28 6b 29 0d 14  28 07 ed 20 6b 0d 14 32  |ize(k)..(.. k..2|
00003b00  0f c8 99 26 30 44 2c 30  2c 66 68 25 0d 14 3c 1d  |...&0D,0,fh%..<.|
00003b10  c8 99 22 4f 53 5f 46 69  6c 65 22 2c 31 38 2c 73  |.."OS_File",18,s|
00003b20  61 76 65 24 2c 26 30 30  44 0d 14 46 39 e7 20 73  |ave$,&00D..F9. s|
00003b30  61 76 65 24 3c 3e 22 3c  57 69 6d 70 24 53 63 72  |ave$<>"<Wimp$Scr|
00003b40  61 70 3e 22 20 80 20 ac  20 a4 63 68 65 63 6b 66  |ap>" . . .checkf|
00003b50  6c 61 67 28 73 61 76 65  64 25 2c 33 2c 32 31 29  |lag(saved%,3,21)|
00003b60  20 8c 0d 14 50 10 21 62  6c 6f 63 6b 3d 6d 61 69  | ...P.!block=mai|
00003b70  6e 25 0d 14 5a 21 c8 99  22 57 69 6d 70 5f 47 65  |n%..Z!.."Wimp_Ge|
00003b80  74 57 69 6e 64 6f 77 49  6e 66 6f 22 2c 2c 62 6c  |tWindowInfo",,bl|
00003b90  6f 63 6b 0d 14 64 0b 73  61 76 65 64 3d a3 0d 14  |ock..d.saved=...|
00003ba0  6e 58 24 28 62 6c 6f 63  6b 21 37 36 29 3d 73 61  |nX$(block!76)=sa|
00003bb0  76 65 24 3a c8 99 22 57  69 6d 70 5f 46 6f 72 63  |ve$:.."Wimp_Forc|
00003bc0  65 52 65 64 72 61 77 22  2c 2d 31 2c 62 6c 6f 63  |eRedraw",-1,bloc|
00003bd0  6b 21 34 2c 28 62 6c 6f  63 6b 21 31 36 29 2d 33  |k!4,(block!16)-3|
00003be0  32 2c 62 6c 6f 63 6b 21  31 32 2c 62 6c 6f 63 6b  |2,block!12,block|
00003bf0  21 31 36 2b 33 36 0d 14  78 19 f2 69 6e 66 6f 28  |!16+36..x..info(|
00003c00  73 61 76 65 64 25 2c 31  2c 73 61 76 65 24 29 0d  |saved%,1,save$).|
00003c10  14 82 18 f2 69 6e 66 6f  28 66 69 6e 66 6f 25 2c  |....info(finfo%,|
00003c20  33 2c 22 4e 6f 22 29 0d  14 8c 05 cd 0d 14 96 17  |3,"No").........|
00003c30  c8 99 22 48 6f 75 72 67  6c 61 73 73 5f 53 6d 61  |.."Hourglass_Sma|
00003c40  73 68 22 0d 14 a0 41 e7  20 71 75 69 74 69 6e 67  |sh"...A. quiting|
00003c50  20 c8 99 72 65 69 6e 74  65 72 2c 6d 79 74 61 73  | ..reinter,mytas|
00003c60  6b 25 3a c8 99 22 57 69  6d 70 5f 43 6c 6f 73 65  |k%:.."Wimp_Close|
00003c70  44 6f 77 6e 22 2c 74 61  73 6b 2c 6d 79 74 61 73  |Down",task,mytas|
00003c80  6b 25 3a e0 0d 14 aa 05  cd 0d 14 b4 16 e7 20 77  |k%:........... w|
00003c90  69 6e 73 61 76 65 25 3d  73 61 76 65 25 20 8c 0d  |insave%=save% ..|
00003ca0  14 be 14 c8 99 22 48 6f  75 72 67 6c 61 73 73 5f  |....."Hourglass_|
00003cb0  4f 6e 22 0d 14 c8 1f c8  99 22 4f 53 5f 46 69 6e  |On"......"OS_Fin|
00003cc0  64 22 2c 26 38 30 2c 73  61 76 65 24 20 b8 20 66  |d",&80,save$ . f|
00003cd0  68 25 0d 14 d2 3b e7 20  a4 63 68 65 63 6b 66 6c  |h%...;. .checkfl|
00003ce0  61 67 28 73 61 76 65 25  2c 33 2c 32 31 29 20 8c  |ag(save%,3,21) .|
00003cf0  20 73 74 74 3d 73 74 3a  65 74 74 3d 73 74 3a 8b  | stt=st:ett=st:.|
00003d00  20 73 74 74 3d 30 3a 65  74 74 3d 63 74 0d 14 dc  | stt=0:ett=ct...|
00003d10  17 74 6f 74 61 6c 31 25  3d 30 3a 74 6f 74 61 6c  |.total1%=0:total|
00003d20  32 25 3d 30 0d 14 e6 28  e3 20 49 3d 73 74 74 20  |2%=0...(. I=stt |
00003d30  b8 20 65 74 74 3a 74 6f  74 61 6c 31 25 2b 3d 74  |. ett:total1%+=t|
00003d40  63 6f 75 6e 74 28 49 29  3a ed 20 49 0d 14 f0 11  |count(I):. I....|
00003d50  e3 20 49 3d 73 74 74 20  b8 20 65 74 74 0d 14 fa  |. I=stt . ett...|
00003d60  0e 74 6f 74 61 6c 32 25  2b 3d 31 0d 15 04 30 c8  |.total2%+=1...0.|
00003d70  99 22 48 6f 75 72 67 6c  61 73 73 5f 50 65 72 63  |."Hourglass_Perc|
00003d80  65 6e 74 61 67 65 22 2c  74 6f 74 61 6c 32 25 2f  |entage",total2%/|
00003d90  74 6f 74 61 6c 31 25 2a  31 30 30 0d 15 0e 0d 65  |total1%*100....e|
00003da0  6e 64 74 3d 74 62 6c 6b  0d 15 18 2a 24 65 6e 64  |ndt=tblk...*$end|
00003db0  74 3d 22 20 20 20 20 20  20 20 20 20 20 20 20 22  |t="            "|
00003dc0  2b 74 72 6f 6f 74 24 28  49 29 2b bd 31 30 2b bd  |+troot$(I)+.10+.|
00003dd0  31 30 0d 15 22 27 65 6e  64 74 2b 3d a9 28 22 20  |10.."'endt+=.(" |
00003de0  20 20 20 20 20 20 20 20  20 20 20 22 2b 74 72 6f  |           "+tro|
00003df0  6f 74 24 28 49 29 29 2b  32 0d 15 2c 24 c8 99 22  |ot$(I))+2..,$.."|
00003e00  4f 53 5f 47 42 50 42 22  2c 32 2c 66 68 25 2c 74  |OS_GBPB",2,fh%,t|
00003e10  62 6c 6b 2c 65 6e 64 74  2d 74 62 6c 6b 0d 15 36  |blk,endt-tblk..6|
00003e20  64 e7 20 a4 63 68 65 63  6b 66 6c 61 67 28 73 61  |d. .checkflag(sa|
00003e30  76 65 25 2c 34 2c 32 31  29 20 80 20 73 31 3e 2d  |ve%,4,21) . s1>-|
00003e40  31 20 8c 20 73 74 74 3d  74 74 3a 65 74 74 3d 74  |1 . stt=tt:ett=t|
00003e50  74 3a 73 74 70 74 72 3d  73 31 3a 65 6e 64 70 74  |t:stptr=s1:endpt|
00003e60  72 3d 73 32 3a 8b 20 73  74 70 74 72 3d 30 3a 65  |r=s2:. stptr=0:e|
00003e70  6e 64 70 74 72 3d 74 63  6f 75 6e 74 28 49 29 2d  |ndptr=tcount(I)-|
00003e80  31 0d 15 40 17 20 e3 20  4a 3d 73 74 70 74 72 20  |1..@. . J=stptr |
00003e90  b8 20 65 6e 64 70 74 72  0d 15 4a 0b 20 6e 3d 4a  |. endptr..J. n=J|
00003ea0  2a 32 34 0d 15 54 0a 20  74 24 3d 22 22 0d 15 5e  |*24..T. t$=""..^|
00003eb0  0f 20 20 e3 20 68 3d 30  20 b8 20 32 0d 15 68 0b  |.  . h=0 . 2..h.|
00003ec0  20 20 69 3d 6e 2b 68 0d  15 72 16 20 20 74 24 2b  |  i=n+h..r.  t$+|
00003ed0  3d bd 28 74 72 65 65 28  49 29 3f 69 29 0d 15 7c  |=.(tree(I)?i)..||
00003ee0  09 20 20 ed 20 68 0d 15  86 0e 20 65 6e 64 74 3d  |.  . h.... endt=|
00003ef0  74 62 6c 6b 0d 15 90 13  20 20 e3 20 68 3d 31 20  |tblk....  . h=1 |
00003f00  b8 20 bb 28 74 24 29 0d  15 9a 0f 20 20 24 65 6e  |. .(t$)....  $en|
00003f10  64 74 3d 22 20 22 0d 15  a4 0d 20 20 65 6e 64 74  |dt=" "....  endt|
00003f20  2b 3d 31 0d 15 ae 09 20  20 ed 20 68 0d 15 b8 0a  |+=1....  . h....|
00003f30  20 74 24 3d 22 22 0d 15  c2 10 20 20 e3 20 68 3d  | t$=""....  . h=|
00003f40  33 20 b8 20 31 32 0d 15  cc 0b 20 20 69 3d 6e 2b  |3 . 12....  i=n+|
00003f50  68 0d 15 d6 27 20 20 e7  20 74 72 65 65 28 49 29  |h...'  . tree(I)|
00003f60  3f 69 3c 3e 30 20 8c 20  74 24 2b 3d bd 28 74 72  |?i<>0 . t$+=.(tr|
00003f70  65 65 28 49 29 3f 69 29  0d 15 e0 09 20 20 ed 20  |ee(I)?i)....  . |
00003f80  68 0d 15 ea 11 20 24 65  6e 64 74 3d 74 24 2b bd  |h.... $endt=t$+.|
00003f90  31 30 0d 15 f4 12 20 65  6e 64 74 2b 3d a9 28 74  |10.... endt+=.(t|
00003fa0  24 29 2b 31 0d 15 fe 25  20 c8 99 22 4f 53 5f 47  |$)+1...% .."OS_G|
00003fb0  42 50 42 22 2c 32 2c 66  68 25 2c 74 62 6c 6b 2c  |BPB",2,fh%,tblk,|
00003fc0  65 6e 64 74 2d 74 62 6c  6b 0d 16 08 08 20 ed 20  |endt-tblk.... . |
00003fd0  4a 0d 16 12 0d 65 6e 64  74 3d 74 62 6c 6b 0d 16  |J....endt=tblk..|
00003fe0  1c 11 24 65 6e 64 74 3d  bd 31 30 2b bd 31 30 0d  |..$endt=.10+.10.|
00003ff0  16 26 0b 65 6e 64 74 2b  3d 32 0d 16 30 24 c8 99  |.&.endt+=2..0$..|
00004000  22 4f 53 5f 47 42 50 42  22 2c 32 2c 66 68 25 2c  |"OS_GBPB",2,fh%,|
00004010  74 62 6c 6b 2c 65 6e 64  74 2d 74 62 6c 6b 0d 16  |tblk,endt-tblk..|
00004020  3a 07 ed 20 49 0d 16 44  0f c8 99 26 30 44 2c 30  |:.. I..D...&0D,0|
00004030  2c 66 68 25 0d 16 4e 1d  c8 99 22 4f 53 5f 46 69  |,fh%..N..."OS_Fi|
00004040  6c 65 22 2c 31 38 2c 73  61 76 65 24 2c 26 46 46  |le",18,save$,&FF|
00004050  46 0d 16 58 0e c8 8e 20  73 61 76 65 24 20 ca 0d  |F..X... save$ ..|
00004060  16 62 14 c9 20 22 3c 57  69 6d 70 24 53 63 72 61  |.b.. "<Wimp$Scra|
00004070  70 3e 22 0d 16 6c 05 7f  0d 16 76 10 21 62 6c 6f  |p>"..l....v.!blo|
00004080  63 6b 3d 6d 61 69 6e 25  0d 16 80 21 c8 99 22 57  |ck=main%...!.."W|
00004090  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 49 6e 66  |imp_GetWindowInf|
000040a0  6f 22 2c 2c 62 6c 6f 63  6b 0d 16 8a 0b 73 61 76  |o",,block....sav|
000040b0  65 64 3d a3 0d 16 94 58  24 28 62 6c 6f 63 6b 21  |ed=....X$(block!|
000040c0  37 36 29 3d 73 61 76 65  24 3a c8 99 22 57 69 6d  |76)=save$:.."Wim|
000040d0  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 2d  |p_ForceRedraw",-|
000040e0  31 2c 62 6c 6f 63 6b 21  34 2c 28 62 6c 6f 63 6b  |1,block!4,(block|
000040f0  21 31 36 29 2d 33 32 2c  62 6c 6f 63 6b 21 31 32  |!16)-32,block!12|
00004100  2c 62 6c 6f 63 6b 21 31  36 2b 33 36 0d 16 9e 18  |,block!16+36....|
00004110  f2 69 6e 66 6f 28 66 69  6e 66 6f 25 2c 33 2c 22  |.info(finfo%,3,"|
00004120  4e 6f 22 29 0d 16 a8 05  cb 0d 16 b2 17 c8 99 22  |No")..........."|
00004130  48 6f 75 72 67 6c 61 73  73 5f 53 6d 61 73 68 22  |Hourglass_Smash"|
00004140  0d 16 bc 41 e7 20 71 75  69 74 69 6e 67 20 c8 99  |...A. quiting ..|
00004150  72 65 69 6e 74 65 72 2c  6d 79 74 61 73 6b 25 3a  |reinter,mytask%:|
00004160  c8 99 22 57 69 6d 70 5f  43 6c 6f 73 65 44 6f 77  |.."Wimp_CloseDow|
00004170  6e 22 2c 74 61 73 6b 2c  6d 79 74 61 73 6b 25 3a  |n",task,mytask%:|
00004180  e0 0d 16 c6 05 cd 0d 16  d0 07 f7 20 85 0d 16 da  |........... ....|
00004190  05 e1 0d 16 e4 14 dd a4  67 65 74 62 73 28 66 68  |........getbs(fh|
000041a0  25 2c 6c 65 6e 29 0d 16  ee 0e 73 74 72 69 6e 67  |%,len)....string|
000041b0  24 3d 22 22 0d 16 f8 0f  e3 20 49 3d 31 20 b8 20  |$=""..... I=1 . |
000041c0  6c 65 6e 0d 17 02 1b c8  99 22 4f 53 5f 42 47 65  |len......"OS_BGe|
000041d0  74 22 2c 2c 66 68 25 20  b8 20 62 79 74 65 0d 17  |t",,fh% . byte..|
000041e0  0c 14 73 74 72 69 6e 67  24 2b 3d bd 28 62 79 74  |..string$+=.(byt|
000041f0  65 29 0d 17 16 05 ed 0d  17 20 0c 3d 73 74 72 69  |e)....... .=stri|
00004200  6e 67 24 0d 17 2a 0f dd  f2 6d 65 73 73 61 67 65  |ng$..*...message|
00004210  69 6e 0d 17 34 10 73 65  6e 64 6d 3d 26 34 30 30  |in..4.sendm=&400|
00004220  45 37 0d 17 3e 1c 72 65  66 3d 62 6c 6f 63 6b 21  |E7..>.ref=block!|
00004230  38 3a 74 61 73 6b 3d 62  6c 6f 63 6b 21 34 0d 17  |8:task=block!4..|
00004240  48 11 c8 8e 20 62 6c 6f  63 6b 21 31 36 20 ca 0d  |H... block!16 ..|
00004250  17 52 0c c9 20 30 3a f2  65 6e 64 0d 17 5c 08 c9  |.R.. 0:.end..\..|
00004260  20 32 3a 0d 17 66 19 73  61 76 65 24 3d a4 77 6f  | 2:..f.save$=.wo|
00004270  6f 6c 28 62 6c 6f 63 6b  2b 34 34 29 0d 17 70 0f  |ol(block+44)..p.|
00004280  f2 64 72 61 67 73 70 72  28 31 29 0d 17 7a 25 e7  |.dragspr(1)..z%.|
00004290  20 77 69 6e 73 61 76 65  25 3d 6e 65 77 25 20 8c  | winsave%=new% .|
000042a0  20 f2 64 72 61 67 6e 65  77 28 73 61 76 65 24 29  | .dragnew(save$)|
000042b0  0d 17 84 21 e7 20 64 72  69 76 65 25 3d 31 20 80  |...!. drive%=1 .|
000042c0  20 77 69 6e 73 61 76 65  25 3c 3e 6e 65 77 25 20  | winsave%<>new% |
000042d0  8c 0d 17 8e 10 f2 73 61  76 65 28 73 61 76 65 24  |......save(save$|
000042e0  29 0d 17 98 10 6d 62 6c  6f 63 6b 21 30 3d 32 35  |)....mblock!0=25|
000042f0  36 0d 17 a2 11 6d 62 6c  6f 63 6b 21 31 32 3d 72  |6....mblock!12=r|
00004300  65 66 0d 17 ac 0f 6d 62  6c 6f 63 6b 21 31 36 3d  |ef....mblock!16=|
00004310  33 0d 17 b6 10 6d 62 6c  6f 63 6b 21 33 36 3d 2d  |3....mblock!36=-|
00004320  31 0d 17 c0 16 24 28 6d  62 6c 6f 63 6b 2b 34 34  |1....$(mblock+44|
00004330  29 3d 73 61 76 65 24 0d  17 ca 27 c8 99 20 26 34  |)=save$...'.. &4|
00004340  30 30 45 37 2c 31 38 2c  6d 62 6c 6f 63 6b 2c 74  |00E7,18,mblock,t|
00004350  61 73 6b 3a f4 20 44 61  74 61 4c 6f 61 64 0d 17  |ask:. DataLoad..|
00004360  d4 05 cd 0d 17 de 08 c9  20 33 3a 0d 17 e8 15 e7  |........ 3:.....|
00004370  20 62 6c 6f 63 6b 21 34  30 3d 26 30 30 64 20 8c  | block!40=&00d .|
00004380  0d 17 f2 26 6c 6f 61 64  24 3d a4 77 6f 6f 6c 28  |...&load$=.wool(|
00004390  62 6c 6f 63 6b 2b 34 34  29 3a f2 6c 6f 61 64 28  |block+44):.load(|
000043a0  6c 6f 61 64 24 29 0d 17  fc 05 e1 0d 18 06 05 cd  |load$)..........|
000043b0  0d 18 10 16 e7 20 62 6c  6f 63 6b 21 34 30 3c 3e  |..... block!40<>|
000043c0  26 30 30 44 20 8c 0d 18  1a 29 6c 6f 61 64 24 3d  |&00D ....)load$=|
000043d0  a4 77 6f 6f 6c 28 62 6c  6f 63 6b 2b 34 34 29 3a  |.wool(block+44):|
000043e0  f2 6e 65 77 74 72 65 65  28 6c 6f 61 64 24 29 0d  |.newtree(load$).|
000043f0  18 24 05 cd 0d 18 2e 08  c9 20 35 3a 0d 18 38 15  |.$....... 5:..8.|
00004400  e7 20 62 6c 6f 63 6b 21  34 30 3d 26 30 30 44 20  |. block!40=&00D |
00004410  8c 0d 18 42 1f 62 6c 6f  63 6b 21 31 32 3d 62 6c  |...B.block!12=bl|
00004420  6f 63 6b 21 38 3a 62 6c  6f 63 6b 21 31 36 3d 34  |ock!8:block!16=4|
00004430  0d 18 4c 2b c8 99 20 73  65 6e 64 6d 2c 31 38 2c  |..L+.. sendm,18,|
00004440  62 6c 6f 63 6b 2c 62 6c  6f 63 6b 21 34 3a f4 20  |block,block!4:. |
00004450  44 61 74 61 4c 6f 61 64  41 63 6b 0d 18 56 1a f2  |DataLoadAck..V..|
00004460  6c 6f 61 64 28 a4 77 6f  6f 6c 28 62 6c 6f 63 6b  |load(.wool(block|
00004470  2b 34 34 29 29 0d 18 60  05 cd 0d 18 6a 47 c9 20  |+44))..`....jG. |
00004480  38 3a e7 20 ac 20 70 72  65 71 75 69 74 20 62 6c  |8:. . prequit bl|
00004490  6f 63 6b 21 31 32 3d 72  65 66 3a c8 99 73 65 6e  |ock!12=ref:..sen|
000044a0  64 6d 2c 31 39 2c 62 6c  6f 63 6b 3a 70 72 65 71  |dm,19,block:preq|
000044b0  75 69 74 3d b9 3a f2 61  72 65 79 6f 75 73 75 72  |uit=.:.areyousur|
000044c0  65 0d 18 74 05 cb 0d 18  7e 05 e1 0d 18 88 11 dd  |e..t....~.......|
000044d0  f2 6c 6f 61 64 28 6c 6f  61 64 24 29 0d 18 92 08  |.load(load$)....|
000044e0  69 6e 3d b9 0d 18 9c 23  e7 20 63 74 3d 2d 31 20  |in=....#. ct=-1 |
000044f0  8c 20 f2 69 6e 66 6f 28  66 69 6e 66 6f 25 2c 30  |. .info(finfo%,0|
00004500  2c 6c 6f 61 64 24 29 0d  18 a6 21 c8 99 22 4f 53  |,load$)...!.."OS|
00004510  5f 46 69 6e 64 22 2c 26  34 30 2c 6c 6f 61 64 24  |_Find",&40,load$|
00004520  20 b8 20 6c 6f 61 64 25  0d 18 b0 22 4c 65 6e 3d  | . load%..."Len=|
00004530  a9 28 22 44 69 73 6b 54  72 65 65 20 44 61 74 61  |.("DiskTree Data|
00004540  20 46 69 6c 65 20 76 b9  22 29 0d 18 ba 1c 74 69  | File v.")....ti|
00004550  74 6c 65 24 3d a4 67 65  74 62 73 28 6c 6f 61 64  |tle$=.getbs(load|
00004560  25 2c 4c 65 6e 29 0d 18  c4 68 e7 20 74 69 74 6c  |%,Len)...h. titl|
00004570  65 24 3c 3e 22 44 69 73  6b 54 72 65 65 20 44 61  |e$<>"DiskTree Da|
00004580  74 61 20 46 69 6c 65 20  76 b9 22 20 8c 20 f2 71  |ta File v." . .q|
00004590  75 65 72 79 28 22 54 68  69 73 20 69 73 20 6e 6f  |uery("This is no|
000045a0  74 20 61 20 74 72 75 65  20 44 69 73 6b 54 72 65  |t a true DiskTre|
000045b0  65 20 44 61 74 61 20 66  69 6c 65 21 22 29 3a c8  |e Data file!"):.|
000045c0  99 26 30 44 2c 30 2c 6c  6f 61 64 25 3a e1 0d 18  |.&0D,0,load%:...|
000045d0  ce 07 ea 20 85 0d 18 d8  73 ee 20 85 20 ea 20 e7  |... ....s. . . .|
000045e0  20 9f 3d 33 38 38 20 f2  71 75 65 72 79 28 22 4f  | .=388 .query("O|
000045f0  75 74 20 4f 66 20 4d 65  6d 6f 72 79 20 22 2b c3  |ut Of Memory "+.|
00004600  9e 29 3a c8 99 26 30 44  2c 30 2c 6c 6f 61 64 25  |.):..&0D,0,load%|
00004610  3a f7 20 85 3a e1 3a 8b  20 f7 20 85 3a f2 65 72  |:. .:.:. . .:.er|
00004620  72 6f 72 28 f6 24 2b 22  20 3a 20 61 74 20 6c 69  |ror(.$+" : at li|
00004630  6e 65 20 22 2b c3 9e 29  3a c8 99 26 30 44 2c 30  |ne "+..):..&0D,0|
00004640  2c 6c 6f 61 64 25 3a e1  0d 18 e2 1a 6e 6f 66 3d  |,load%:.....nof=|
00004650  bb 28 a4 67 65 74 62 73  28 6c 6f 61 64 25 2c 33  |.(.getbs(load%,3|
00004660  29 29 0d 18 ec 0f e3 20  6d 3d 30 20 b8 20 6e 6f  |))..... m=0 . no|
00004670  66 0d 18 f6 1b 54 4c 65  6e 3d bb 28 a4 67 65 74  |f....TLen=.(.get|
00004680  62 73 28 6c 6f 61 64 25  2c 37 29 29 0d 19 00 15  |bs(load%,7))....|
00004690  54 4c 65 6e 25 3d a8 28  54 4c 65 6e 2f 38 29 2a  |TLen%=.(TLen/8)*|
000046a0  38 0d 19 0a 29 c8 99 22  4f 53 5f 48 65 61 70 22  |8...).."OS_Heap"|
000046b0  2c 31 2c 68 65 61 70 25  20 b8 20 2c 2c 6c 61 72  |,1,heap% . ,,lar|
000046c0  67 65 73 74 2c 74 66 72  65 65 0d 19 14 1a e7 20  |gest,tfree..... |
000046d0  54 4c 65 6e 25 2b 31 30  32 34 3e 6c 61 72 67 65  |TLen%+1024>large|
000046e0  73 74 20 8c 0d 19 1e 25  c8 99 22 57 69 6d 70 5f  |st ....%.."Wimp_|
000046f0  53 6c 6f 74 53 69 7a 65  22 2c 2d 31 2c 2d 31 20  |SlotSize",-1,-1 |
00004700  b8 20 63 75 72 72 65 6e  74 0d 19 28 35 c8 99 22  |. current..(5.."|
00004710  57 69 6d 70 5f 53 6c 6f  74 53 69 7a 65 22 2c 63  |Wimp_SlotSize",c|
00004720  75 72 72 65 6e 74 2b 28  54 4c 65 6e 25 2d 6c 61  |urrent+(TLen%-la|
00004730  72 67 65 73 74 29 2b 31  30 32 34 2c 2d 31 0d 19  |rgest)+1024,-1..|
00004740  32 21 c8 99 22 57 69 6d  70 5f 53 6c 6f 74 53 69  |2!.."Wimp_SlotSi|
00004750  7a 65 22 2c 2d 31 2c 2d  31 20 b8 20 6e 65 77 0d  |ze",-1,-1 . new.|
00004760  19 3c 16 63 68 61 6e 67  65 3d 6e 65 77 2d 63 75  |.<.change=new-cu|
00004770  72 72 65 6e 74 0d 19 46  1f c8 99 22 4f 53 5f 48  |rrent..F..."OS_H|
00004780  65 61 70 22 2c 35 2c 68  65 61 70 25 2c 2c 63 68  |eap",5,heap%,,ch|
00004790  61 6e 67 65 0d 19 50 12  68 73 69 7a 65 62 2b 3d  |ange..P.hsizeb+=|
000047a0  63 68 61 6e 67 65 0d 19  5a 05 cd 0d 19 64 09 63  |change..Z....d.c|
000047b0  74 2b 3d 31 0d 19 6e 12  74 73 69 7a 65 28 63 74  |t+=1..n.tsize(ct|
000047c0  29 3d 54 4c 65 6e 0d 19  78 1f 74 6c 65 6e 28 63  |)=TLen..x.tlen(c|
000047d0  74 29 3d bb 28 a4 67 65  74 62 73 28 6c 6f 61 64  |t)=.(.getbs(load|
000047e0  25 2c 37 29 29 0d 19 82  21 74 63 6f 75 6e 74 28  |%,7))...!tcount(|
000047f0  63 74 29 3d bb 28 a4 67  65 74 62 73 28 6c 6f 61  |ct)=.(.getbs(loa|
00004800  64 25 2c 37 29 29 0d 19  8c 1c 72 6f 6f 74 6c 3d  |d%,7))....rootl=|
00004810  bb 28 a4 67 65 74 62 73  28 6c 6f 61 64 25 2c 33  |.(.getbs(load%,3|
00004820  29 29 0d 19 96 22 74 72  6f 6f 74 24 28 63 74 29  |))..."troot$(ct)|
00004830  3d a4 67 65 74 62 73 28  6c 6f 61 64 25 2c 72 6f  |=.getbs(load%,ro|
00004840  6f 74 6c 29 0d 19 a0 2a  c8 99 22 4f 53 5f 48 65  |otl)...*.."OS_He|
00004850  61 70 22 2c 32 2c 68 65  61 70 25 2c 2c 54 4c 65  |ap",2,heap%,,TLe|
00004860  6e 20 b8 20 2c 2c 74 72  65 65 28 63 74 29 0d 19  |n . ,,tree(ct)..|
00004870  aa 22 c8 99 22 4f 53 5f  48 65 61 70 22 2c 31 2c  |.".."OS_Heap",1,|
00004880  68 65 61 70 25 20 b8 20  2c 2c 2c 74 66 72 65 65  |heap% . ,,,tfree|
00004890  0d 19 b4 25 c8 99 22 4f  53 5f 47 42 50 42 22 2c  |...%.."OS_GBPB",|
000048a0  34 2c 6c 6f 61 64 25 2c  74 72 65 65 28 63 74 29  |4,load%,tree(ct)|
000048b0  2c 54 4c 65 6e 0d 19 be  07 ed 20 6d 0d 19 c8 11  |,TLen..... m....|
000048c0  c8 99 26 30 44 2c 30 2c  6c 6f 61 64 25 0d 19 d2  |..&0D,0,load%...|
000048d0  10 21 69 63 6f 6e 64 3d  6d 61 69 6e 25 0d 19 dc  |.!icond=main%...|
000048e0  21 c8 99 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |!.."Wimp_GetWind|
000048f0  6f 77 49 6e 66 6f 22 2c  2c 69 63 6f 6e 64 0d 19  |owInfo",,icond..|
00004900  e6 59 73 61 76 65 64 3d  a3 3a 24 69 63 6f 6e 64  |.Ysaved=.:$icond|
00004910  21 37 36 3d 6c 6f 61 64  24 3a c8 99 22 57 69 6d  |!76=load$:.."Wim|
00004920  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 2d  |p_ForceRedraw",-|
00004930  31 2c 69 63 6f 6e 64 21  34 2c 69 63 6f 6e 64 21  |1,icond!4,icond!|
00004940  31 36 2c 69 63 6f 6e 64  21 31 32 2c 69 63 6f 6e  |16,icond!12,icon|
00004950  64 21 31 36 2b 33 36 0d  19 f0 1f c8 99 22 57 69  |d!16+36......"Wi|
00004960  6d 70 5f 43 6c 6f 73 65  57 69 6e 64 6f 77 22 2c  |mp_CloseWindow",|
00004970  2c 69 63 6f 6e 64 0d 19  fa 1a 24 a4 69 6e 66 6f  |,icond....$.info|
00004980  28 73 61 76 65 64 25 2c  31 29 3d 6c 6f 61 64 24  |(saved%,1)=load$|
00004990  0d 1a 04 09 73 74 3d 63  74 0d 1a 0e 22 f2 6e 65  |....st=ct...".ne|
000049a0  77 76 69 65 77 3a f2 6f  70 65 6e 77 69 6e 28 6d  |wview:.openwin(m|
000049b0  61 69 6e 25 29 3a f2 70  61 6e 65 0d 1a 18 1b f2  |ain%):.pane.....|
000049c0  69 6e 66 6f 28 66 69 6e  66 6f 25 2c 31 2c c3 28  |info(finfo%,1,.(|
000049d0  63 74 2b 31 29 29 0d 1a  22 23 f2 69 6e 66 6f 28  |ct+1)).."#.info(|
000049e0  66 69 6e 66 6f 25 2c 32  2c c3 28 68 73 69 7a 65  |finfo%,2,.(hsize|
000049f0  62 2d 74 66 72 65 65 29  29 0d 1a 2c 0f 61 72 63  |b-tfree))..,.arc|
00004a00  6c 69 73 74 65 64 3d a3  0d 1a 36 07 f7 20 85 0d  |listed=...6.. ..|
00004a10  1a 40 05 e1 0d 1a 4a 16  dd f2 6f 70 65 6e 77 69  |.@....J...openwi|
00004a20  6e 28 68 61 6e 64 6c 65  25 29 0d 1a 54 47 e7 20  |n(handle%)..TG. |
00004a30  68 61 6e 64 6c 65 25 3d  6d 61 69 6e 25 20 80 20  |handle%=main% . |
00004a40  63 74 3d 2d 31 20 8c 20  f2 71 75 65 72 79 28 22  |ct=-1 . .query("|
00004a50  4e 6f 20 64 69 72 65 63  74 6f 72 79 20 74 72 65  |No directory tre|
00004a60  65 73 20 69 6e 20 6d 65  6d 6f 72 79 21 22 29 3a  |es in memory!"):|
00004a70  e1 0d 1a 5e 12 21 62 6c  6f 63 6b 3d 68 61 6e 64  |...^.!block=hand|
00004a80  6c 65 25 0d 1a 68 21 c8  99 22 57 69 6d 70 5f 47  |le%..h!.."Wimp_G|
00004a90  65 74 57 69 6e 64 6f 77  49 6e 66 6f 22 2c 2c 62  |etWindowInfo",,b|
00004aa0  6c 6f 63 6b 0d 1a 72 1b  6f 70 65 6e 3d 62 6c 6f  |lock..r.open=blo|
00004ab0  63 6b 21 33 32 20 80 20  28 31 3c 3c 31 36 29 0d  |ck!32 . (1<<16).|
00004ac0  1a 7c 1c 66 72 6f 6e 74  3d 62 6c 6f 63 6b 21 33  |.|.front=block!3|
00004ad0  32 20 80 20 28 31 3c 3c  31 37 29 0d 1a 86 57 e7  |2 . (1<<17)...W.|
00004ae0  20 68 61 6e 64 6c 65 25  3d 6d 61 69 6e 25 20 80  | handle%=main% .|
00004af0  20 77 69 64 74 68 3e 2d  31 20 8c 20 62 6c 6f 63  | width>-1 . bloc|
00004b00  6b 21 31 32 3d 62 6c 6f  63 6b 21 34 2b 77 69 64  |k!12=block!4+wid|
00004b10  74 68 3a 62 6c 6f 63 6b  21 38 3d 62 6c 6f 63 6b  |th:block!8=block|
00004b20  21 31 36 2d 64 65 70 74  68 3a 77 69 64 74 68 3d  |!16-depth:width=|
00004b30  2d 31 0d 1a 90 0e e7 20  6f 70 65 6e 3d 30 20 8c  |-1..... open=0 .|
00004b40  0d 1a 9a 1e c8 99 22 57  69 6d 70 5f 4f 70 65 6e  |......"Wimp_Open|
00004b50  57 69 6e 64 6f 77 22 2c  2c 62 6c 6f 63 6b 0d 1a  |Window",,block..|
00004b60  a4 05 cd 0d 1a ae 0f e7  20 66 72 6f 6e 74 3d 30  |........ front=0|
00004b70  20 8c 0d 1a b8 2a 62 6c  6f 63 6b 21 32 38 3d 2d  | ....*block!28=-|
00004b80  31 3a c8 99 22 57 69 6d  70 5f 4f 70 65 6e 57 69  |1:.."Wimp_OpenWi|
00004b90  6e 64 6f 77 22 2c 2c 62  6c 6f 63 6b 0d 1a c2 05  |ndow",,block....|
00004ba0  cd 0d 1a cc 05 e1 0d 1a  d6 15 dd 20 f2 73 6c 61  |........... .sla|
00004bb0  62 69 6e 28 68 61 6e 64  6c 65 29 0d 1a e0 11 21  |bin(handle)....!|
00004bc0  69 63 6f 6e 64 3d 68 61  6e 64 6c 65 0d 1a ea 23  |icond=handle...#|
00004bd0  c8 99 20 22 57 69 6d 70  5f 47 65 74 50 6f 69 6e  |.. "Wimp_GetPoin|
00004be0  74 65 72 49 6e 66 6f 22  2c 2c 69 63 6f 6e 64 0d  |terInfo",,icond.|
00004bf0  1a f4 1f c8 99 20 22 57  69 6d 70 5f 42 6f 72 64  |..... "Wimp_Bord|
00004c00  65 72 49 63 6f 6e 22 2c  2c 69 63 6f 6e 64 0d 1a  |erIcon",,icond..|
00004c10  fe 05 e1 0d 1b 08 16 dd  20 f2 73 6c 61 62 6f 75  |........ .slabou|
00004c20  74 28 68 61 6e 64 6c 65  29 0d 1b 12 11 21 69 63  |t(handle)....!ic|
00004c30  6f 6e 64 3d 68 61 6e 64  6c 65 0d 1b 1c 23 c8 99  |ond=handle...#..|
00004c40  20 22 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  | "Wimp_GetPointe|
00004c50  72 49 6e 66 6f 22 2c 2c  69 63 6f 6e 64 0d 1b 26  |rInfo",,icond..&|
00004c60  0d 69 63 6f 6e 64 21 38  3d 30 0d 1b 30 1f c8 99  |.icond!8=0..0...|
00004c70  20 22 57 69 6d 70 5f 42  6f 72 64 65 72 49 63 6f  | "Wimp_BorderIco|
00004c80  6e 22 2c 2c 69 63 6f 6e  64 0d 1b 3a 05 e1 0d 1b  |n",,icond..:....|
00004c90  44 14 dd f2 72 65 64 72  61 77 28 68 61 6e 64 6c  |D...redraw(handl|
00004ca0  65 29 0d 1b 4e 0b 73 65  74 65 78 3d a3 0d 1b 58  |e)..N.setex=...X|
00004cb0  11 21 62 6c 6f 63 6b 3d  68 61 6e 64 6c 65 0d 1b  |.!block=handle..|
00004cc0  62 0a ea 6d 6f 72 65 25  0d 1b 6c 29 c8 99 20 22  |b..more%..l).. "|
00004cd0  57 69 6d 70 5f 52 65 64  72 61 77 57 69 6e 64 6f  |Wimp_RedrawWindo|
00004ce0  77 22 2c 2c 62 6c 6f 63  6b 20 b8 20 6d 6f 72 65  |w",,block . more|
00004cf0  25 0d 1b 76 0c c8 95 20  6d 6f 72 65 25 0d 1b 80  |%..v... more%...|
00004d00  10 20 c8 8e 20 68 61 6e  64 6c 65 20 ca 0d 1b 8a  |. .. handle ....|
00004d10  0c 20 c9 20 6d 61 69 6e  25 0d 1b 94 18 20 f2 61  |. . main%.... .a|
00004d20  70 70 6c 69 63 61 74 69  6f 6e 5f 72 65 64 72 61  |pplication_redra|
00004d30  77 0d 1b 9e 06 20 7f 0d  1b a8 21 20 c8 99 22 57  |w.... ....! .."W|
00004d40  69 6d 70 5f 42 6f 72 64  65 72 57 69 6e 64 6f 77  |imp_BorderWindow|
00004d50  22 2c 2c 62 6c 6f 63 6b  0d 1b b2 06 20 cb 0d 1b  |",,block.... ...|
00004d60  bc 2a 20 c8 99 20 22 57  69 6d 70 5f 47 65 74 52  |.* .. "Wimp_GetR|
00004d70  65 63 74 61 6e 67 6c 65  22 2c 2c 62 6c 6f 63 6b  |ectangle",,block|
00004d80  20 b8 20 6d 6f 72 65 25  0d 1b c6 06 20 ce 0d 1b  | . more%.... ...|
00004d90  d0 05 e1 0d 1b da 18 dd  f2 61 70 70 6c 69 63 61  |.........applica|
00004da0  74 69 6f 6e 5f 72 65 64  72 61 77 0d 1b e4 1b 77  |tion_redraw....w|
00004db0  6f 72 6b 78 25 3d 62 6c  6f 63 6b 21 34 2d 62 6c  |orkx%=block!4-bl|
00004dc0  6f 63 6b 21 32 30 0d 1b  ee 1c 77 6f 72 6b 79 25  |ock!20....worky%|
00004dd0  3d 62 6c 6f 63 6b 21 31  36 2d 62 6c 6f 63 6b 21  |=block!16-block!|
00004de0  32 34 0d 1b f8 17 6d 61  78 3d 62 6c 6f 63 6b 21  |24....max=block!|
00004df0  33 32 2d 77 6f 72 6b 79  25 0d 1c 02 17 6d 69 6e  |32-worky%....min|
00004e00  3d 62 6c 6f 63 6b 21 34  30 2d 77 6f 72 6b 79 25  |=block!40-worky%|
00004e10  0d 1c 0c 16 6d 61 78 3d  28 6d 61 78 2b 34 36 29  |....max=(max+46)|
00004e20  81 33 36 2a 2d 31 0d 1c  16 16 6d 69 6e 3d 28 6d  |.36*-1....min=(m|
00004e30  69 6e 2b 34 36 29 81 33  36 2a 2d 31 0d 1c 20 29  |in+46).36*-1.. )|
00004e40  e7 20 6d 61 78 3e 74 63  6f 75 6e 74 28 73 74 29  |. max>tcount(st)|
00004e50  2d 31 20 8c 20 6d 61 78  3d 74 63 6f 75 6e 74 28  |-1 . max=tcount(|
00004e60  73 74 29 2d 31 0d 1c 2a  0f e7 20 63 74 3d 2d 31  |st)-1..*.. ct=-1|
00004e70  20 8c 20 e1 0d 1c 34 23  74 78 3d 77 6f 72 6b 78  | . ...4#tx=workx|
00004e80  25 3a 74 79 3d 77 6f 72  6b 79 25 2d 34 36 2d 28  |%:ty=worky%-46-(|
00004e90  6d 69 6e 2a 33 36 29 0d  1c 3e 0c 67 3d 26 34 30  |min*36)..>.g=&40|
00004ea0  30 45 36 0d 1c 48 0c 6e  3d 6d 69 6e 2a 32 34 0d  |0E6..H.n=min*24.|
00004eb0  1c 52 11 e3 20 49 3d 6d  69 6e 20 b8 20 6d 61 78  |.R.. I=min . max|
00004ec0  0d 1c 5c 0a 20 c8 99 67  2c 37 0d 1c 66 0a 20 74  |..\. ..g,7..f. t|
00004ed0  24 3d 22 22 0d 1c 70 10  20 20 20 e3 20 68 3d 30  |$=""..p.   . h=0|
00004ee0  20 b8 20 32 0d 1c 7a 0c  20 20 20 69 3d 6e 2b 68  | . 2..z.   i=n+h|
00004ef0  0d 1c 84 18 20 20 20 74  24 2b 3d bd 28 74 72 65  |....   t$+=.(tre|
00004f00  65 28 73 74 29 3f 69 29  0d 1c 8e 0a 20 20 20 ed  |e(st)?i)....   .|
00004f10  20 68 0d 1c 98 10 20 6c  65 6e 3d bb 28 74 24 29  | h.... len=.(t$)|
00004f20  2d 31 0d 1c a2 15 20 e7  20 6c 65 6e 3d 2d 31 20  |-1.... . len=-1 |
00004f30  8c 20 6c 65 6e 3d 30 0d  1c ac 0a 20 74 24 3d 22  |. len=0.... t$="|
00004f40  22 0d 1c b6 11 20 20 20  e3 20 68 3d 33 20 b8 20  |"....   . h=3 . |
00004f50  31 32 0d 1c c0 0c 20 20  20 69 3d 6e 2b 68 0d 1c  |12....   i=n+h..|
00004f60  ca 18 20 20 20 74 24 2b  3d bd 28 74 72 65 65 28  |..   t$+=.(tree(|
00004f70  73 74 29 3f 69 29 0d 1c  d4 0a 20 20 20 ed 20 68  |st)?i)....   . h|
00004f80  0d 1c de 4f 20 e7 20 69  74 65 6d 6e 6f 3d 49 20  |...O . itemno=I |
00004f90  8c 20 c8 99 67 2c 39 3a  c8 93 20 c8 90 20 77 6f  |. ..g,9:.. .. wo|
00004fa0  72 6b 78 25 2b 30 2c 77  6f 72 6b 79 25 2d 30 2d  |rkx%+0,worky%-0-|
00004fb0  28 49 2a 33 36 2b 34 36  29 2c 74 6c 65 6e 28 73  |(I*36+46),tlen(s|
00004fc0  74 29 2a 31 36 2c 2d 33  30 3a c8 99 67 2c 37 0d  |t)*16,-30:..g,7.|
00004fd0  1c e8 56 20 e7 20 49 3e  3d 73 31 20 80 20 49 3c  |..V . I>=s1 . I<|
00004fe0  3d 73 32 2d 31 20 8c 20  c8 99 67 2c 37 3a c8 93  |=s2-1 . ..g,7:..|
00004ff0  20 c8 90 20 77 6f 72 6b  78 25 2b 30 2c 77 6f 72  | .. workx%+0,wor|
00005000  6b 79 25 2d 30 2d 28 49  2a 33 36 2b 34 36 29 2c  |ky%-0-(I*36+46),|
00005010  74 6c 65 6e 28 73 74 29  2a 31 36 2c 2d 33 34 3a  |tlen(st)*16,-34:|
00005020  c8 99 67 2c 30 0d 1c f2  4b 20 e7 20 49 3d 73 32  |..g,0...K . I=s2|
00005030  20 8c 20 c8 99 67 2c 37  3a c8 93 20 c8 90 20 77  | . ..g,7:.. .. w|
00005040  6f 72 6b 78 25 2b 30 2c  77 6f 72 6b 79 25 2d 30  |orkx%+0,worky%-0|
00005050  2d 28 49 2a 33 36 2b 34  36 29 2c 74 6c 65 6e 28  |-(I*36+46),tlen(|
00005060  73 74 29 2a 31 36 2c 2d  33 30 3a c8 99 67 2c 30  |st)*16,-30:..g,0|
00005070  0d 1c fc 21 20 e7 20 74  72 65 65 28 73 74 29 3f  |...! . tree(st)?|
00005080  28 69 2b 31 29 3d 31 33  38 20 8c 20 c8 99 67 2c  |(i+1)=138 . ..g,|
00005090  38 0d 1d 06 0c 20 ec 20  74 78 2c 74 79 0d 1d 10  |8.... . tx,ty...|
000050a0  0e 20 f1 20 8a 6c 65 6e  29 74 24 0d 1d 1a 0b 20  |. . .len)t$.... |
000050b0  74 79 2d 3d 33 36 0d 1d  24 0a 20 6e 2b 3d 32 34  |ty-=36..$. n+=24|
000050c0  0d 1d 2e 07 ed 20 49 0d  1d 38 14 74 79 79 3d 77  |..... I..8.tyy=w|
000050d0  6f 72 6b 79 25 2d 74 79  2d 34 30 0d 1d 42 05 e1  |orky%-ty-40..B..|
000050e0  0d 1d 4c 0a dd f2 70 61  6e 65 0d 1d 56 0f e7 20  |..L...pane..V.. |
000050f0  63 74 3d 2d 31 20 8c 20  e1 0d 1d 60 39 62 61 72  |ct=-1 . ...`9bar|
00005100  31 3d 62 6c 6f 63 6b 21  34 3a 62 61 72 32 3d 62  |1=block!4:bar2=b|
00005110  6c 6f 63 6b 21 38 3a 62  61 72 33 3d 62 6c 6f 63  |lock!8:bar3=bloc|
00005120  6b 21 31 32 3a 62 61 72  34 3d 62 6c 6f 63 6b 21  |k!12:bar4=block!|
00005130  31 36 0d 1d 6a 1f 62 61  72 35 3d 62 6c 6f 63 6b  |16..j.bar5=block|
00005140  21 35 32 3a 62 61 72 36  3d 62 6c 6f 63 6b 21 32  |!52:bar6=block!2|
00005150  30 0d 1d 74 1f e7 20 74  6f 6f 6c 73 6f 6e 20 8c  |0..t.. toolson .|
00005160  20 f2 61 6c 6c 3a 8b 20  f2 62 61 72 6f 6e 6c 79  | .all:. .baronly|
00005170  0d 1d 7e 2f 21 62 6c 6f  63 6b 3d 66 6f 75 6e 64  |..~/!block=found|
00005180  25 3a c8 99 22 57 69 6d  70 5f 47 65 74 57 69 6e  |%:.."Wimp_GetWin|
00005190  64 6f 77 49 6e 66 6f 22  2c 2c 62 6c 6f 63 6b 0d  |dowInfo",,block.|
000051a0  1d 88 1b 6f 70 65 6e 3d  62 6c 6f 63 6b 21 33 32  |...open=block!32|
000051b0  20 80 20 28 31 3c 3c 31  36 29 0d 1d 92 1d e7 20  | . (1<<16)..... |
000051c0  6f 70 65 6e 20 8c 20 f2  6f 70 65 6e 77 69 6e 28  |open . .openwin(|
000051d0  66 6f 75 6e 64 25 29 0d  1d 9c 05 e1 0d 1d a6 0d  |found%).........|
000051e0  dd f2 62 61 72 6f 6e 6c  79 0d 1d b0 12 66 72 6f  |..baronly....fro|
000051f0  6e 74 3d 62 6c 6f 63 6b  21 32 38 0d 1d ba 2d 21  |nt=block!28...-!|
00005200  69 63 6f 6e 64 3d 62 61  72 25 3a c8 99 22 57 69  |icond=bar%:.."Wi|
00005210  6d 70 5f 47 65 74 57 69  6e 64 6f 77 49 6e 66 6f  |mp_GetWindowInfo|
00005220  22 2c 2c 69 63 6f 6e 64  0d 1d c4 39 69 63 6f 6e  |",,icond...9icon|
00005230  64 21 34 3d 62 61 72 31  3a 69 63 6f 6e 64 21 38  |d!4=bar1:icond!8|
00005240  3d 62 61 72 32 3a 69 63  6f 6e 64 21 31 32 3d 62  |=bar2:icond!12=b|
00005250  61 72 33 3a 69 63 6f 6e  64 21 31 36 3d 62 61 72  |ar3:icond!16=bar|
00005260  34 0d 1d ce 11 69 63 6f  6e 64 21 32 30 3d 62 61  |4....icond!20=ba|
00005270  72 36 0d 1d d8 2d 69 63  6f 6e 64 21 32 38 3d 66  |r6...-icond!28=f|
00005280  72 6f 6e 74 3a c8 99 22  57 69 6d 70 5f 4f 70 65  |ront:.."Wimp_Ope|
00005290  6e 57 69 6e 64 6f 77 22  2c 2c 69 63 6f 6e 64 0d  |nWindow",,icond.|
000052a0  1d e2 2c 62 6c 6f 63 6b  21 32 38 3d 62 61 72 25  |..,block!28=bar%|
000052b0  3a c8 99 22 57 69 6d 70  5f 4f 70 65 6e 57 69 6e  |:.."Wimp_OpenWin|
000052c0  64 6f 77 22 2c 2c 62 6c  6f 63 6b 0d 1d ec 05 e1  |dow",,block.....|
000052d0  0d 1d f6 09 dd f2 61 6c  6c 0d 1e 00 12 66 72 6f  |......all....fro|
000052e0  6e 74 3d 62 6c 6f 63 6b  21 32 38 0d 1e 0a 32 78  |nt=block!28...2x|
000052f0  31 3d 62 6c 6f 63 6b 21  34 2d 39 34 3a 78 32 3d  |1=block!4-94:x2=|
00005300  78 31 2b 32 34 38 3a 79  31 3d 62 6c 6f 63 6b 21  |x1+248:y1=block!|
00005310  38 3a 79 32 3d 62 6c 6f  63 6b 21 31 36 0d 1e 14  |8:y2=block!16...|
00005320  0e 73 69 7a 65 3d 78 32  2d 78 31 0d 1e 1e 31 21  |.size=x2-x1...1!|
00005330  69 63 6f 6e 64 3d 74 6f  6f 6c 62 6f 78 25 3a c8  |icond=toolbox%:.|
00005340  99 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  |."Wimp_GetWindow|
00005350  49 6e 66 6f 22 2c 2c 69  63 6f 6e 64 0d 1e 28 19  |Info",,icond..(.|
00005360  e7 20 78 31 3c 30 20 8c  20 78 31 3d 30 3a 78 32  |. x1<0 . x1=0:x2|
00005370  3d 73 69 7a 65 0d 1e 32  35 69 63 6f 6e 64 21 34  |=size..25icond!4|
00005380  3d 78 31 3a 69 63 6f 6e  64 21 38 3d 79 32 2d 35  |=x1:icond!8=y2-5|
00005390  37 30 3a 69 63 6f 6e 64  21 31 32 3d 78 32 3a 69  |70:icond!12=x2:i|
000053a0  63 6f 6e 64 21 31 36 3d  79 32 0d 1e 3c 2d 69 63  |cond!16=y2..<-ic|
000053b0  6f 6e 64 21 32 38 3d 66  72 6f 6e 74 3a c8 99 22  |ond!28=front:.."|
000053c0  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 22  |Wimp_OpenWindow"|
000053d0  2c 2c 69 63 6f 6e 64 0d  1e 46 05 cd 0d 1e 50 2d  |,,icond..F....P-|
000053e0  21 69 63 6f 6e 64 3d 62  61 72 25 3a c8 99 22 57  |!icond=bar%:.."W|
000053f0  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 49 6e 66  |imp_GetWindowInf|
00005400  6f 22 2c 2c 69 63 6f 6e  64 0d 1e 5a 39 69 63 6f  |o",,icond..Z9ico|
00005410  6e 64 21 34 3d 62 61 72  31 3a 69 63 6f 6e 64 21  |nd!4=bar1:icond!|
00005420  38 3d 62 61 72 32 3a 69  63 6f 6e 64 21 31 32 3d  |8=bar2:icond!12=|
00005430  62 61 72 33 3a 69 63 6f  6e 64 21 31 36 3d 62 61  |bar3:icond!16=ba|
00005440  72 34 0d 1e 64 11 69 63  6f 6e 64 21 32 30 3d 62  |r4..d.icond!20=b|
00005450  61 72 36 0d 1e 6e 30 69  63 6f 6e 64 21 32 38 3d  |ar6..n0icond!28=|
00005460  74 6f 6f 6c 62 6f 78 25  3a c8 99 22 57 69 6d 70  |toolbox%:.."Wimp|
00005470  5f 4f 70 65 6e 57 69 6e  64 6f 77 22 2c 2c 69 63  |_OpenWindow",,ic|
00005480  6f 6e 64 0d 1e 78 2c 62  6c 6f 63 6b 21 32 38 3d  |ond..x,block!28=|
00005490  62 61 72 25 3a c8 99 22  57 69 6d 70 5f 4f 70 65  |bar%:.."Wimp_Ope|
000054a0  6e 57 69 6e 64 6f 77 22  2c 2c 62 6c 6f 63 6b 0d  |nWindow",,block.|
000054b0  1e 82 05 e1 0d 1e 8c 20  dd f2 61 64 6a 75 73 74  |....... ..adjust|
000054c0  77 69 6e 28 6e 65 77 78  6d 61 78 2c 6e 65 77 79  |win(newxmax,newy|
000054d0  6d 69 6e 29 0d 1e 96 2d  21 69 63 6f 6e 64 3d 62  |min)...-!icond=b|
000054e0  61 72 25 3a c8 99 22 57  69 6d 70 5f 47 65 74 57  |ar%:.."Wimp_GetW|
000054f0  69 6e 64 6f 77 49 6e 66  6f 22 2c 2c 69 63 6f 6e  |indowInfo",,icon|
00005500  64 0d 1e a0 14 69 63 6f  6e 64 21 35 32 3d 6e 65  |d....icond!52=ne|
00005510  77 78 6d 61 78 0d 1e aa  24 c8 99 22 57 69 6d 70  |wxmax...$.."Wimp|
00005520  5f 53 65 74 45 78 74 65  6e 74 22 2c 62 61 72 25  |_SetExtent",bar%|
00005530  2c 69 63 6f 6e 64 2b 34  34 0d 1e b4 2e 21 69 63  |,icond+44....!ic|
00005540  6f 6e 64 3d 6d 61 69 6e  25 3a c8 99 22 57 69 6d  |ond=main%:.."Wim|
00005550  70 5f 47 65 74 57 69 6e  64 6f 77 49 6e 66 6f 22  |p_GetWindowInfo"|
00005560  2c 2c 69 63 6f 6e 64 0d  1e be 25 69 63 6f 6e 64  |,,icond...%icond|
00005570  21 34 38 3d 6e 65 77 79  6d 69 6e 3a 69 63 6f 6e  |!48=newymin:icon|
00005580  64 21 35 32 3d 6e 65 77  78 6d 61 78 0d 1e c8 25  |d!52=newxmax...%|
00005590  c8 99 22 57 69 6d 70 5f  53 65 74 45 78 74 65 6e  |.."Wimp_SetExten|
000055a0  74 22 2c 6d 61 69 6e 25  2c 69 63 6f 6e 64 2b 34  |t",main%,icond+4|
000055b0  34 0d 1e d2 36 21 69 63  6f 6e 64 3d 62 61 72 25  |4...6!icond=bar%|
000055c0  3a 69 63 6f 6e 64 21 34  3d 30 3a c8 99 22 57 69  |:icond!4=0:.."Wi|
000055d0  6d 70 5f 47 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_GetIconState"|
000055e0  2c 2c 69 63 6f 6e 64 0d  1e dc 1e c8 99 22 57 69  |,,icond......"Wi|
000055f0  6d 70 5f 44 65 6c 65 74  65 49 63 6f 6e 22 2c 2c  |mp_DeleteIcon",,|
00005600  69 63 6f 6e 64 0d 1e e6  30 69 63 6f 6e 64 3d 69  |icond...0icond=i|
00005610  63 6f 6e 64 2b 34 3a 69  63 6f 6e 64 21 31 32 3d  |cond+4:icond!12=|
00005620  6e 65 77 78 6d 61 78 2b  32 3a 21 69 63 6f 6e 64  |newxmax+2:!icond|
00005630  3d 62 61 72 25 0d 1e f0  25 c8 99 22 57 69 6d 70  |=bar%...%.."Wimp|
00005640  5f 43 72 65 61 74 65 49  63 6f 6e 22 2c 30 2c 69  |_CreateIcon",0,i|
00005650  63 6f 6e 64 20 b8 20 69  63 25 0d 1e fa 05 e1 0d  |cond . ic%......|
00005660  1f 04 13 dd f2 74 6f 6f  6c 62 6f 78 28 66 6c 61  |.....toolbox(fla|
00005670  67 29 0d 1f 0e 3b e7 20  66 6c 61 67 3d 2d 31 20  |g)...;. flag=-1 |
00005680  8c 20 21 62 6c 6f 63 6b  3d 74 6f 6f 6c 62 6f 78  |. !block=toolbox|
00005690  25 3a c8 99 22 57 69 6d  70 5f 43 6c 6f 73 65 57  |%:.."Wimp_CloseW|
000056a0  69 6e 64 6f 77 22 2c 2c  62 6c 6f 63 6b 0d 1f 18  |indow",,block...|
000056b0  0e e7 20 66 6c 61 67 3d  31 20 8c 0d 1f 22 10 21  |.. flag=1 ...".!|
000056c0  62 6c 6f 63 6b 3d 6d 61  69 6e 25 0d 1f 2c 22 c8  |block=main%..,".|
000056d0  99 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  |."Wimp_GetWindow|
000056e0  53 74 61 74 65 22 2c 2c  62 6c 6f 63 6b 0d 1f 36  |State",,block..6|
000056f0  1b 6f 70 65 6e 3d 62 6c  6f 63 6b 21 33 32 20 80  |.open=block!32 .|
00005700  20 28 31 3c 3c 31 36 29  0d 1f 40 22 e7 20 6f 70  | (1<<16)..@". op|
00005710  65 6e 3c 3e 30 20 8c 20  21 69 63 6f 6e 64 3d 6d  |en<>0 . !icond=m|
00005720  61 69 6e 25 3a f2 70 61  6e 65 0d 1f 4a 05 cd 0d  |ain%:.pane..J...|
00005730  1f 54 05 e1 0d 1f 5e 11  dd f2 65 72 72 6f 72 28  |.T....^...error(|
00005740  65 72 72 24 29 0d 1f 68  4d 21 69 63 6f 6e 64 3d  |err$)..hM!icond=|
00005750  30 3a 24 28 69 63 6f 6e  64 2b 34 29 3d 65 72 72  |0:$(icond+4)=err|
00005760  24 2b 22 2e 22 2b 22 20  50 72 65 73 73 20 4f 4b  |$+"."+" Press OK|
00005770  20 74 6f 20 63 6f 6e 74  69 6e 75 65 20 6f 72 20  | to continue or |
00005780  43 61 6e 63 65 6c 20 74  6f 20 71 75 69 74 22 2b  |Cancel to quit"+|
00005790  bd 30 0d 1f 72 33 c8 99  22 57 69 6d 70 5f 52 65  |.0..r3.."Wimp_Re|
000057a0  70 6f 72 74 45 72 72 6f  72 22 2c 69 63 6f 6e 64  |portError",icond|
000057b0  2c 33 2c 22 21 44 69 73  6b 54 72 65 65 22 20 b8  |,3,"!DiskTree" .|
000057c0  20 2c 62 75 74 0d 1f 7c  41 e7 20 62 75 74 3d 32  | ,but..|A. but=2|
000057d0  20 8c 20 c8 99 72 65 69  6e 74 65 72 2c 6d 79 74  | . ..reinter,myt|
000057e0  61 73 6b 25 3a c8 99 22  57 69 6d 70 5f 43 6c 6f  |ask%:.."Wimp_Clo|
000057f0  73 65 44 6f 77 6e 22 2c  74 61 73 6b 2c 6d 79 74  |seDown",task,myt|
00005800  61 73 6b 25 3a e0 0d 1f  86 05 e1 0d 1f 90 10 dd  |ask%:...........|
00005810  f2 61 72 65 79 6f 75 73  75 72 65 0d 1f 9a 0d e7  |.areyousure.....|
00005820  20 73 61 76 65 64 20 8c  0d 1f a4 13 f2 6f 70 65  | saved ......ope|
00005830  6e 77 69 6e 28 71 75 69  74 25 29 0d 1f ae 07 ef  |nwin(quit%).....|
00005840  20 37 0d 1f b8 31 f2 69  6e 66 6f 28 71 75 69 74  | 7...1.info(quit|
00005850  25 2c 31 2c 22 59 6f 75  72 20 66 69 6c 65 20 68  |%,1,"Your file h|
00005860  61 73 20 62 65 65 6e 20  6d 6f 64 69 66 69 65 64  |as been modified|
00005870  2e 22 29 0d 1f c2 4d 21  62 6c 6f 63 6b 3d 31 33  |.")...M!block=13|
00005880  30 3a 62 6c 6f 63 6b 21  34 3d 31 33 31 3a 62 6c  |0:block!4=131:bl|
00005890  6f 63 6b 21 38 3d 2d 31  3a c8 99 22 4f 53 5f 52  |ock!8=-1:.."OS_R|
000058a0  65 61 64 56 64 75 56 61  72 69 61 62 6c 65 73 22  |eadVduVariables"|
000058b0  2c 62 6c 6f 63 6b 2c 62  6c 6f 63 6b 2b 31 32 38  |,block,block+128|
000058c0  0d 1f cc 25 c8 99 22 4f  53 5f 52 65 61 64 4d 6f  |...%.."OS_ReadMo|
000058d0  64 65 56 61 72 69 61 62  6c 65 22 2c eb 2c 34 20  |deVariable",.,4 |
000058e0  b8 20 2c 2c 78 0d 1f d6  25 c8 99 22 4f 53 5f 52  |. ,,x...%.."OS_R|
000058f0  65 61 64 4d 6f 64 65 56  61 72 69 61 62 6c 65 22  |eadModeVariable"|
00005900  2c eb 2c 35 20 b8 20 2c  2c 79 0d 1f e0 39 c8 97  |,.,5 . ,,y...9..|
00005910  20 c8 93 20 30 2c 30 2c  28 28 28 62 6c 6f 63 6b  | .. 0,0,(((block|
00005920  21 31 32 38 29 2b 31 29  2a 32 5e 78 29 2d 31 2c  |!128)+1)*2^x)-1,|
00005930  28 28 62 6c 6f 63 6b 21  31 33 32 29 2b 31 29 2a  |((block!132)+1)*|
00005940  32 5e 79 0d 1f ea 05 cd  0d 1f f4 41 e7 20 ac 20  |2^y........A. . |
00005950  73 61 76 65 64 20 c8 99  72 65 69 6e 74 65 72 2c  |saved ..reinter,|
00005960  6d 79 74 61 73 6b 25 3a  c8 99 22 57 69 6d 70 5f  |mytask%:.."Wimp_|
00005970  43 6c 6f 73 65 44 6f 77  6e 22 2c 74 61 73 6b 2c  |CloseDown",task,|
00005980  6d 79 74 61 73 6b 25 3a  e0 0d 1f fe 05 e1 0d 20  |mytask%:....... |
00005990  08 10 dd f2 71 75 65 72  79 28 71 75 24 29 0d 20  |....query(qu$). |
000059a0  12 14 f2 6f 70 65 6e 77  69 6e 28 71 75 65 72 79  |...openwin(query|
000059b0  25 29 0d 20 1c 07 ef 20  37 0d 20 26 11 21 62 6c  |%). ... 7. &.!bl|
000059c0  6f 63 6b 3d 71 75 65 72  79 25 0d 20 30 21 c8 99  |ock=query%. 0!..|
000059d0  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 49  |"Wimp_GetWindowI|
000059e0  6e 66 6f 22 2c 2c 62 6c  6f 63 6b 0d 20 3a 1b 77  |nfo",,block. :.w|
000059f0  6f 72 6b 78 25 3d 62 6c  6f 63 6b 21 31 32 2d 62  |orkx%=block!12-b|
00005a00  6c 6f 63 6b 21 34 0d 20  44 1b 77 6f 72 6b 79 25  |lock!4. D.worky%|
00005a10  3d 62 6c 6f 63 6b 21 31  36 2d 62 6c 6f 63 6b 21  |=block!16-block!|
00005a20  38 0d 20 4e 27 c8 97 20  c8 93 20 62 6c 6f 63 6b  |8. N'.. .. block|
00005a30  21 34 2c 62 6c 6f 63 6b  21 38 2c 77 6f 72 6b 78  |!4,block!8,workx|
00005a40  25 2c 77 6f 72 6b 79 25  0d 20 58 17 f2 69 6e 66  |%,worky%. X..inf|
00005a50  6f 28 71 75 65 72 79 25  2c 31 2c 71 75 24 29 0d  |o(query%,1,qu$).|
00005a60  20 62 05 e1 0d 20 6c 0a  dd f2 65 6e 64 71 0d 20  | b... l...endq. |
00005a70  76 12 f2 63 6c 6f 73 65  28 71 75 65 72 79 25 29  |v..close(query%)|
00005a80  0d 20 80 4d 21 62 6c 6f  63 6b 3d 31 33 30 3a 62  |. .M!block=130:b|
00005a90  6c 6f 63 6b 21 34 3d 31  33 31 3a 62 6c 6f 63 6b  |lock!4=131:block|
00005aa0  21 38 3d 2d 31 3a c8 99  22 4f 53 5f 52 65 61 64  |!8=-1:.."OS_Read|
00005ab0  56 64 75 56 61 72 69 61  62 6c 65 73 22 2c 62 6c  |VduVariables",bl|
00005ac0  6f 63 6b 2c 62 6c 6f 63  6b 2b 31 32 38 0d 20 8a  |ock,block+128. .|
00005ad0  25 c8 99 22 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |%.."OS_ReadModeV|
00005ae0  61 72 69 61 62 6c 65 22  2c eb 2c 34 20 b8 20 2c  |ariable",.,4 . ,|
00005af0  2c 78 0d 20 94 25 c8 99  22 4f 53 5f 52 65 61 64  |,x. .%.."OS_Read|
00005b00  4d 6f 64 65 56 61 72 69  61 62 6c 65 22 2c eb 2c  |ModeVariable",.,|
00005b10  35 20 b8 20 2c 2c 79 0d  20 9e 39 c8 97 20 c8 93  |5 . ,,y. .9.. ..|
00005b20  20 30 2c 30 2c 28 28 28  62 6c 6f 63 6b 21 31 32  | 0,0,(((block!12|
00005b30  38 29 2b 31 29 2a 32 5e  78 29 2d 31 2c 28 28 62  |8)+1)*2^x)-1,((b|
00005b40  6c 6f 63 6b 21 31 33 32  29 2b 31 29 2a 32 5e 79  |lock!132)+1)*2^y|
00005b50  0d 20 a8 05 e1 0d 20 b2  13 dd f2 63 6c 6f 73 65  |. .... ....close|
00005b60  28 21 62 6c 6f 63 6b 29  0d 20 bc 1f c8 99 22 57  |(!block). ...."W|
00005b70  69 6d 70 5f 43 6c 6f 73  65 57 69 6e 64 6f 77 22  |imp_CloseWindow"|
00005b80  2c 2c 62 6c 6f 63 6b 0d  20 c6 05 e1 0d 20 d0 13  |,,block. .... ..|
00005b90  dd f2 64 72 61 67 73 70  72 28 66 6c 61 67 29 0d  |..dragspr(flag).|
00005ba0  20 da 0f e7 20 64 72 61  67 73 70 72 20 8c 0d 20  | ... dragspr .. |
00005bb0  e4 0d c8 8e 20 66 6c 61  67 20 ca 0d 20 ee 08 c9  |.... flag .. ...|
00005bc0  20 31 3a 0d 20 f8 3b 21  62 6c 6f 63 6b 3d 77 69  | 1:. .;!block=wi|
00005bd0  6e 73 61 76 65 25 3a 62  6c 6f 63 6b 21 34 3d 32  |nsave%:block!4=2|
00005be0  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 49 63 6f  |:.. "Wimp_GetIco|
00005bf0  6e 53 74 61 74 65 22 2c  2c 62 6c 6f 63 6b 0d 21  |nState",,block.!|
00005c00  02 2c 62 6c 6f 63 6b 21  38 3d 30 3a 62 6c 6f 63  |.,block!8=0:bloc|
00005c10  6b 21 31 32 3d 30 3a 24  28 62 6c 6f 63 6b 21 33  |k!12=0:$(block!3|
00005c20  32 29 3d 64 69 6e 64 69  72 24 0d 21 0c 21 c8 99  |2)=dindir$.!.!..|
00005c30  20 22 57 69 6d 70 5f 53  65 74 49 63 6f 6e 53 74  | "Wimp_SetIconSt|
00005c40  61 74 65 22 2c 2c 62 6c  6f 63 6b 0d 21 16 19 c8  |ate",,block.!...|
00005c50  99 20 22 44 72 61 67 41  53 70 72 69 74 65 5f 53  |. "DragASprite_S|
00005c60  74 6f 70 22 0d 21 20 09  c9 20 2d 31 3a 0d 21 2a  |top".! .. -1:.!*|
00005c70  3b 21 62 6c 6f 63 6b 3d  77 69 6e 73 61 76 65 25  |;!block=winsave%|
00005c80  3a 62 6c 6f 63 6b 21 34  3d 32 3a c8 99 20 22 57  |:block!4=2:.. "W|
00005c90  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
00005ca0  22 2c 2c 62 6c 6f 63 6b  0d 21 34 17 64 69 6e 64  |",,block.!4.dind|
00005cb0  69 72 24 3d 24 28 62 6c  6f 63 6b 21 33 32 29 0d  |ir$=$(block!32).|
00005cc0  21 3e 28 62 6c 6f 63 6b  21 38 3d 30 3a 62 6c 6f  |!>(block!8=0:blo|
00005cd0  63 6b 21 31 32 3d 30 3a  24 28 62 6c 6f 63 6b 21  |ck!12=0:$(block!|
00005ce0  33 32 29 3d bd 31 33 0d  21 48 21 c8 99 20 22 57  |32)=.13.!H!.. "W|
00005cf0  69 6d 70 5f 53 65 74 49  63 6f 6e 53 74 61 74 65  |imp_SetIconState|
00005d00  22 2c 2c 62 6c 6f 63 6b  0d 21 52 05 cb 0d 21 5c  |",,block.!R...!\|
00005d10  05 cd 0d 21 66 05 e1 0d  21 70 14 dd f2 6e 65 77  |...!f...!p...new|
00005d20  74 72 65 65 28 66 69 6c  65 24 29 0d 21 7a 25 e7  |tree(file$).!z%.|
00005d30  20 62 6c 6f 63 6b 21 34  30 3d 34 30 39 36 20 84  | block!40=4096 .|
00005d40  20 62 6c 6f 63 6b 21 34  30 3d 38 31 39 32 20 8c  | block!40=8192 .|
00005d50  0d 21 84 13 70 61 74 68  24 3d 66 69 6c 65 24 2b  |.!..path$=file$+|
00005d60  22 2e 22 0d 21 8e 17 f2  69 6e 66 6f 28 6e 65 77  |".".!...info(new|
00005d70  25 2c 31 2c 70 61 74 68  24 29 0d 21 98 12 f2 6f  |%,1,path$).!...o|
00005d80  70 65 6e 77 69 6e 28 6e  65 77 25 29 0d 21 a2 05  |penwin(new%).!..|
00005d90  e1 0d 21 ac 05 cd 0d 21  b6 19 70 61 74 68 24 3d  |..!....!..path$=|
00005da0  a4 67 65 74 6c 65 61 66  28 66 69 6c 65 24 29 0d  |.getleaf(file$).|
00005db0  21 c0 23 70 61 74 68 24  3d c0 66 69 6c 65 24 2c  |!.#path$=.file$,|
00005dc0  a9 28 66 69 6c 65 24 29  2d a9 28 70 61 74 68 24  |.(file$)-.(path$|
00005dd0  29 29 0d 21 ca 17 f2 69  6e 66 6f 28 6e 65 77 25  |)).!...info(new%|
00005de0  2c 31 2c 70 61 74 68 24  29 0d 21 d4 05 e1 0d 21  |,1,path$).!....!|
00005df0  de 14 dd f2 64 72 61 67  6e 65 77 28 70 61 74 68  |....dragnew(path|
00005e00  24 29 0d 21 e8 2b 62 6c  6f 63 6b 21 34 30 3d 34  |$).!.+block!40=4|
00005e10  30 39 36 3a 70 61 74 68  24 3d c0 70 61 74 68 24  |096:path$=.path$|
00005e20  2c a9 28 70 61 74 68 24  29 2d 31 30 29 0d 21 f2  |,.(path$)-10).!.|
00005e30  13 f2 6e 65 77 74 72 65  65 28 70 61 74 68 24 29  |..newtree(path$)|
00005e40  0d 21 fc 05 e1 0d 22 06  0c dd f2 64 72 69 76 65  |.!...."....drive|
00005e50  30 0d 22 10 3d c8 99 22  4f 53 5f 46 53 43 6f 6e  |0.".=.."OS_FSCon|
00005e60  74 72 6f 6c 22 2c 33 37  2c 22 41 44 46 53 3a 3a  |trol",37,"ADFS::|
00005e70  30 2e 24 22 2c 74 62 6c  6b 2c 30 2c 30 2c 31 30  |0.$",tblk,0,0,10|
00005e80  32 34 20 b8 20 2c 2c 2c  2c 2c 74 6c 65 6e 0d 22  |24 . ,,,,,tlen."|
00005e90  1a 27 f2 69 6e 66 6f 28  6e 65 77 25 2c 31 2c c0  |.'.info(new%,1,.|
00005ea0  24 74 62 6c 6b 2c 31 30  32 34 2d 74 6c 65 6e 29  |$tblk,1024-tlen)|
00005eb0  2b 22 2e 22 29 0d 22 24  05 e1 0d 22 2e 08 dd f2  |+".")."$..."....|
00005ec0  67 6f 0d 22 38 4c e7 20  63 74 3d 6d 61 78 6e 6f  |go."8L. ct=maxno|
00005ed0  20 8c 20 f2 6d 65 73 73  28 22 54 68 65 72 65 20  | . .mess("There |
00005ee0  69 73 20 6e 6f 20 6d 65  20 66 72 65 65 20 74 72  |is no me free tr|
00005ef0  65 65 73 20 61 76 61 69  6c 61 62 6c 65 20 69 6e  |ees available in|
00005f00  20 74 68 69 73 20 66 69  6c 65 22 29 3a e1 0d 22  | this file"):.."|
00005f10  42 23 61 72 63 78 3d 30  3a 70 72 65 61 72 63 78  |B#arcx=0:prearcx|
00005f20  3d 2d 31 3a 61 72 63 73  3d a3 3a 61 70 70 73 3d  |=-1:arcs=.:apps=|
00005f30  a3 0d 22 4c 20 61 72 63  73 3d ac 20 a4 63 68 65  |.."L arcs=. .che|
00005f40  63 6b 66 6c 61 67 28 6e  65 77 25 2c 30 2c 32 31  |ckflag(new%,0,21|
00005f50  29 0d 22 56 20 61 70 70  73 3d ac 20 a4 63 68 65  |)."V apps=. .che|
00005f60  63 6b 66 6c 61 67 28 6e  65 77 25 2c 33 2c 32 31  |ckflag(new%,3,21|
00005f70  29 0d 22 60 18 72 6f 6f  74 24 3d 24 a4 69 6e 66  |)."`.root$=$.inf|
00005f80  6f 28 6e 65 77 25 2c 31  29 0d 22 6a 44 e7 20 72  |o(new%,1)."jD. r|
00005f90  6f 6f 74 24 3d 22 22 20  8c 20 f2 6d 65 73 73 28  |oot$="" . .mess(|
00005fa0  22 59 6f 75 20 68 61 76  65 20 6e 6f 74 20 65 6e  |"You have not en|
00005fb0  74 65 72 65 64 20 61 20  70 61 74 68 20 74 6f 20  |tered a path to |
00005fc0  63 61 74 61 6c 6f 67 75  65 22 29 3a e1 0d 22 74  |catalogue"):.."t|
00005fd0  1c 72 6f 6f 74 24 3d c0  72 6f 6f 74 24 2c a9 28  |.root$=.root$,.(|
00005fe0  72 6f 6f 74 24 29 2d 31  29 0d 22 7e 1f c8 99 22  |root$)-1)."~..."|
00005ff0  4f 53 5f 46 69 6c 65 22  2c 32 30 2c 72 6f 6f 74  |OS_File",20,root|
00006000  24 20 b8 20 74 79 70 65  0d 22 88 43 e7 20 74 79  |$ . type.".C. ty|
00006010  70 65 3c 3e 32 20 8c 20  f2 6d 65 73 73 28 22 54  |pe<>2 . .mess("T|
00006020  68 65 20 70 61 74 68 20  74 6f 20 63 61 74 61 6c  |he path to catal|
00006030  6f 67 75 65 20 68 61 73  20 6e 6f 74 20 62 65 65  |ogue has not bee|
00006040  6e 20 66 6f 75 6e 64 22  29 3a e1 0d 22 92 0d c8  |n found"):.."...|
00006050  8e 20 61 72 63 73 20 ca  0d 22 9c 08 c9 20 b9 3a  |. arcs .."... .:|
00006060  0d 22 a6 11 24 74 62 6c  6b 3d 22 41 72 63 46 53  |."..$tblk="ArcFS|
00006070  22 0d 22 b0 1f c8 99 22  58 4f 53 5f 4d 6f 64 75  |"."...."XOS_Modu|
00006080  6c 65 22 2c 31 38 2c 74  62 6c 6b 20 b8 20 72 30  |le",18,tblk . r0|
00006090  0d 22 ba 0e e7 20 72 30  3c 3e 31 38 20 8c 0d 22  |."... r0<>18 .."|
000060a0  c4 92 e7 20 a4 61 73 6b  28 22 41 72 63 46 53 20  |... .ask("ArcFS |
000060b0  6e 6f 74 20 70 72 65 73  65 6e 74 2e 20 4f 6e 6c  |not present. Onl|
000060c0  79 20 61 62 6c 65 20 74  6f 20 63 72 65 61 74 65  |y able to create|
000060d0  20 74 72 65 65 73 20 6f  66 20 61 72 63 68 69 76  | trees of archiv|
000060e0  65 73 20 69 66 20 41 72  63 46 53 20 69 73 20 70  |es if ArcFS is p|
000060f0  72 65 73 65 6e 74 2e 20  43 6f 6e 74 69 6e 75 65  |resent. Continue|
00006100  20 77 69 74 68 6f 75 74  20 61 72 63 68 69 76 65  | without archive|
00006110  73 3f 22 29 3d 31 20 8c  20 61 72 63 73 3d a3 3a  |s?")=1 . arcs=.:|
00006120  8b 20 f2 63 6c 6f 73 65  28 6e 65 77 25 29 3a e1  |. .close(new%):.|
00006130  0d 22 ce 05 cd 0d 22 d8  05 cb 0d 22 e2 20 c8 99  |."...."....". ..|
00006140  22 58 4f 53 5f 46 69 6c  65 22 2c 31 33 2c 72 6f  |"XOS_File",13,ro|
00006150  6f 74 24 20 b8 20 74 79  70 65 0d 22 ec 60 e7 20  |ot$ . type.".`. |
00006160  74 79 70 65 3c 32 20 80  20 74 79 70 65 3e 33 20  |type<2 . type>3 |
00006170  20 8c 20 f2 71 75 65 72  79 28 22 50 61 74 68 20  | . .query("Path |
00006180  74 6f 20 63 72 65 61 74  65 20 74 72 65 65 20 66  |to create tree f|
00006190  72 6f 6d 20 69 73 20 6e  6f 74 20 61 20 64 69 72  |rom is not a dir|
000061a0  65 63 74 6f 72 79 2f 64  6f 65 73 20 6e 6f 74 20  |ectory/does not |
000061b0  65 78 69 73 74 2e 22 29  3a e1 0d 22 f6 1c 65 6e  |exist."):.."..en|
000061c0  64 6c 69 73 74 79 3d 30  3a 6e 6c 65 6e 3d 30 3a  |dlisty=0:nlen=0:|
000061d0  73 74 6f 70 3d a3 0d 23  00 18 62 6f 74 4c 45 44  |stop=..#..botLED|
000061e0  3d 25 31 30 3a 74 6f 74  73 69 7a 65 3d 30 0d 23  |=%10:totsize=0.#|
000061f0  0a 0b 63 6f 75 6e 74 3d  30 0d 23 14 09 63 74 2b  |..count=0.#..ct+|
00006200  3d 31 0d 23 1e 14 c8 99  22 48 6f 75 72 67 6c 61  |=1.#...."Hourgla|
00006210  73 73 5f 4f 6e 22 0d 23  28 28 c8 99 22 4f 53 5f  |ss_On".#((.."OS_|
00006220  48 65 61 70 22 2c 31 2c  68 65 61 70 25 20 b8 20  |Heap",1,heap% . |
00006230  2c 2c 6d 65 6d 62 75 66  2c 74 66 72 65 65 0d 23  |,,membuf,tfree.#|
00006240  32 16 6d 65 6d 62 75 66  3d 6d 65 6d 62 75 66 2d  |2.membuf=membuf-|
00006250  31 30 32 34 0d 23 3c 13  e7 20 6d 65 6d 62 75 66  |1024.#<.. membuf|
00006260  3c 31 30 32 34 20 8c 0d  23 46 25 c8 99 22 57 69  |<1024 ..#F%.."Wi|
00006270  6d 70 5f 53 6c 6f 74 53  69 7a 65 22 2c 2d 31 2c  |mp_SlotSize",-1,|
00006280  2d 31 20 b8 20 63 75 72  72 65 6e 74 0d 23 50 29  |-1 . current.#P)|
00006290  c8 99 22 57 69 6d 70 5f  53 6c 6f 74 53 69 7a 65  |.."Wimp_SlotSize|
000062a0  22 2c 63 75 72 72 65 6e  74 2b 28 38 2a 31 30 32  |",current+(8*102|
000062b0  34 29 2c 2d 31 0d 23 5a  21 c8 99 22 57 69 6d 70  |4),-1.#Z!.."Wimp|
000062c0  5f 53 6c 6f 74 53 69 7a  65 22 2c 2d 31 2c 2d 31  |_SlotSize",-1,-1|
000062d0  20 b8 20 6e 65 77 0d 23  64 16 63 68 61 6e 67 65  | . new.#d.change|
000062e0  3d 6e 65 77 2d 63 75 72  72 65 6e 74 0d 23 6e 1f  |=new-current.#n.|
000062f0  c8 99 22 4f 53 5f 48 65  61 70 22 2c 35 2c 68 65  |.."OS_Heap",5,he|
00006300  61 70 25 2c 2c 63 68 61  6e 67 65 0d 23 78 12 68  |ap%,,change.#x.h|
00006310  73 69 7a 65 62 2b 3d 63  68 61 6e 67 65 0d 23 82  |sizeb+=change.#.|
00006320  12 6d 65 6d 62 75 66 2b  3d 63 68 61 6e 67 65 0d  |.membuf+=change.|
00006330  23 8c 05 cd 0d 23 96 2c  c8 99 22 4f 53 5f 48 65  |#....#.,.."OS_He|
00006340  61 70 22 2c 32 2c 68 65  61 70 25 2c 2c 6d 65 6d  |ap",2,heap%,,mem|
00006350  62 75 66 20 b8 20 2c 2c  74 72 65 65 28 63 74 29  |buf . ,,tree(ct)|
00006360  0d 23 a0 0c 6f 62 6a 65  63 74 3d 30 0d 23 aa 15  |.#..object=0.#..|
00006370  65 6e 64 74 65 78 74 25  3d 74 72 65 65 28 63 74  |endtext%=tree(ct|
00006380  29 0d 23 b4 0b 64 69 72  24 3d 22 22 0d 23 be 07  |).#..dir$="".#..|
00006390  78 3d 30 0d 23 c8 10 6c  61 73 74 64 69 72 28 30  |x=0.#..lastdir(0|
000063a0  29 3d 30 0d 23 d2 0b 73  74 61 72 74 3d 91 0d 23  |)=0.#..start=..#|
000063b0  dc 05 f5 0d 23 e6 15 6f  62 6a 65 63 74 3d 6c 61  |....#..object=la|
000063c0  73 74 64 69 72 28 78 29  0d 23 f0 0b f2 67 6f 74  |stdir(x).#...got|
000063d0  72 65 65 0d 23 fa 0e e7  20 73 74 6f 70 20 8c 20  |ree.#... stop . |
000063e0  e1 0d 24 04 14 e7 20 65  6e 64 6c 69 73 74 79 3d  |..$... endlisty=|
000063f0  31 20 8c 20 e1 0d 24 0e  05 f5 0d 24 18 19 64 69  |1 . ..$....$..di|
00006400  72 24 3d c0 64 69 72 24  2c 28 a9 64 69 72 24 29  |r$=.dir$,(.dir$)|
00006410  2d 31 29 0d 24 22 16 fd  20 c1 64 69 72 24 2c a9  |-1).$".. .dir$,.|
00006420  64 69 72 24 29 3d 22 2e  22 0d 24 2c 19 64 69 72  |dir$)=".".$,.dir|
00006430  24 3d c0 64 69 72 24 2c  28 a9 64 69 72 24 29 2d  |$=.dir$,(.dir$)-|
00006440  31 29 0d 24 36 07 fd 20  a3 0d 24 40 05 e1 0d 24  |1).$6.. ..$@...$|
00006450  4a 0c dd f2 67 6f 74 72  65 65 0d 24 54 05 f5 0d  |J...gotree.$T...|
00006460  24 5e 41 c8 99 22 4f 53  5f 47 42 50 42 22 2c 31  |$^A.."OS_GBPB",1|
00006470  30 2c 72 6f 6f 74 24 2b  64 69 72 24 2c 62 75 66  |0,root$+dir$,buf|
00006480  66 65 72 2c 31 2c 6f 62  6a 65 63 74 2c 36 33 20  |fer,1,object,63 |
00006490  b8 20 2c 2c 2c 72 65 61  64 65 72 2c 6c 61 73 74  |. ,,,reader,last|
000064a0  0d 24 68 10 e7 20 6c 61  73 74 3c 3e 2d 31 20 8c  |.$h.. last<>-1 .|
000064b0  0d 24 72 0c 66 69 6c 65  24 3d 22 22 0d 24 7c 0b  |.$r.file$="".$|.|
000064c0  62 75 66 66 3d 32 30 0d  24 86 05 f5 0d 24 90 17  |buff=20.$....$..|
000064d0  66 69 6c 65 24 2b 3d bd  62 75 66 66 65 72 3f 62  |file$+=.buffer?b|
000064e0  75 66 66 0d 24 9a 0b 62  75 66 66 2b 3d 31 0d 24  |uff.$..buff+=1.$|
000064f0  a4 12 fd 62 75 66 66 65  72 3f 62 75 66 66 3d 30  |...buffer?buff=0|
00006500  0d 24 ae 29 e7 20 c0 66  69 6c 65 24 2c 31 29 3d  |.$.). .file$,1)=|
00006510  bd 30 20 66 69 6c 65 24  3d c2 66 69 6c 65 24 2c  |.0 file$=.file$,|
00006520  a9 66 69 6c 65 24 2d 31  29 0d 24 b8 13 6c 65 6e  |.file$-1).$..len|
00006530  67 74 68 3d 62 75 66 66  65 72 21 38 0d 24 c2 12  |gth=buffer!8.$..|
00006540  74 79 70 65 3d 62 75 66  66 65 72 21 31 36 0d 24  |type=buffer!16.$|
00006550  cc 3c c8 99 22 4f 53 5f  46 69 6c 65 22 2c 32 30  |.<.."OS_File",20|
00006560  2c 72 6f 6f 74 24 2b 64  69 72 24 2b 22 2e 22 2b  |,root$+dir$+"."+|
00006570  66 69 6c 65 24 20 b8 20  74 79 70 65 2c 2c 2c 2c  |file$ . type,,,,|
00006580  2c 2c 66 69 6c 65 74 79  70 65 0d 24 d6 3d e7 20  |,,filetype.$.=. |
00006590  66 69 6c 65 74 79 70 65  3d 34 30 39 36 20 84 20  |filetype=4096 . |
000065a0  66 69 6c 65 74 79 70 65  3d 38 31 39 32 20 80 20  |filetype=8192 . |
000065b0  6c 65 6e 67 74 68 3d 2d  31 20 8c 20 6c 65 6e 67  |length=-1 . leng|
000065c0  74 68 3d 32 30 34 38 0d  24 e0 1f e7 20 74 79 70  |th=2048.$... typ|
000065d0  65 3d 32 20 65 78 74 24  3d 22 89 22 20 8b 20 65  |e=2 ext$="." . e|
000065e0  78 74 24 3d bd 30 0d 24  ea 39 e7 20 66 69 6c 65  |xt$=.0.$.9. file|
000065f0  74 79 70 65 3d 34 30 39  36 20 80 20 74 79 70 65  |type=4096 . type|
00006600  3d 33 20 8c 20 66 69 6c  65 74 24 3d 22 44 44 43  |=3 . filet$="DDC|
00006610  22 3a 66 69 6c 65 74 79  70 65 3d 26 44 44 43 0d  |":filetype=&DDC.|
00006620  24 f4 23 e7 20 61 72 63  73 20 80 20 66 69 6c 65  |$.#. arcs . file|
00006630  74 79 70 65 3d 26 44 44  43 20 65 78 74 24 3d 22  |type=&DDC ext$="|
00006640  8a 22 0d 24 fe 20 6e 6c  65 6e 74 3d a9 28 64 69  |.".$. nlent=.(di|
00006650  72 24 2b 66 69 6c 65 24  29 2d 78 2b 31 2b 61 72  |r$+file$)-x+1+ar|
00006660  63 78 0d 25 08 1d e7 20  6e 6c 65 6e 74 3e 6e 6c  |cx.%... nlent>nl|
00006670  65 6e 20 8c 20 6e 6c 65  6e 3d 6e 6c 65 6e 74 0d  |en . nlen=nlent.|
00006680  25 12 1f 70 72 65 64 69  63 74 65 64 3d 65 6e 64  |%..predicted=end|
00006690  74 65 78 74 25 2d 74 72  65 65 28 63 74 29 0d 25  |text%-tree(ct).%|
000066a0  1c 22 e7 20 70 72 65 64  69 63 74 65 64 3e 6d 65  |.". predicted>me|
000066b0  6d 62 75 66 2d 31 30 32  34 20 8c 20 f2 6d 65 6d  |mbuf-1024 . .mem|
000066c0  0d 25 26 0e e7 20 73 74  6f 70 20 8c 20 e1 0d 25  |.%&.. stop . ..%|
000066d0  30 18 66 69 24 3d a4 66  75 6c 6c 73 28 66 69 6c  |0.fi$=.fulls(fil|
000066e0  65 24 2c 31 30 29 0d 25  3a 25 64 69 24 3d a4 66  |e$,10).%:%di$=.f|
000066f0  75 6c 6c 73 28 c3 28 28  a9 64 69 72 24 29 2d 78  |ulls(.((.dir$)-x|
00006700  2b 61 72 63 78 2b 31 29  2c 33 29 0d 25 44 1b 6c  |+arcx+1),3).%D.l|
00006710  65 6e 67 24 3d a4 66 75  6c 6c 73 28 c3 6c 65 6e  |eng$=.fulls(.len|
00006720  67 74 68 2c 37 29 0d 25  4e 15 66 69 6c 65 74 24  |gth,7).%N.filet$|
00006730  3d c3 7e 66 69 6c 65 74  79 70 65 0d 25 58 22 e7  |=.~filetype.%X".|
00006740  20 66 69 6c 65 74 79 70  65 3d 34 30 39 36 20 8c  | filetype=4096 .|
00006750  20 66 69 6c 65 74 24 3d  22 44 49 52 22 0d 25 62  | filet$="DIR".%b|
00006760  22 e7 20 66 69 6c 65 74  79 70 65 3d 38 31 39 32  |". filetype=8192|
00006770  20 8c 20 66 69 6c 65 74  24 3d 22 41 50 50 22 0d  | . filet$="APP".|
00006780  25 6c 35 e7 20 a9 28 66  69 6c 65 74 24 29 3c 33  |%l5. .(filet$)<3|
00006790  20 8c 20 f5 3a 66 69 6c  65 74 24 3d 22 30 22 2b  | . .:filet$="0"+|
000067a0  66 69 6c 65 74 24 3a fd  20 a9 28 66 69 6c 65 74  |filet$:. .(filet|
000067b0  24 29 3d 33 0d 25 76 27  24 65 6e 64 74 65 78 74  |$)=3.%v'$endtext|
000067c0  25 3d 64 69 24 2b 66 69  24 2b 65 78 74 24 2b 6c  |%=di$+fi$+ext$+l|
000067d0  65 6e 67 24 2b 66 69 6c  65 74 24 0d 25 80 10 65  |eng$+filet$.%..e|
000067e0  6e 64 74 65 78 74 25 2b  3d 32 34 0d 25 8a 13 74  |ndtext%+=24.%..t|
000067f0  6f 74 73 69 7a 65 2b 3d  6c 65 6e 67 74 68 0d 25  |otsize+=length.%|
00006800  94 0d 6f 62 6a 65 63 74  2b 3d 31 0d 25 9e 0c 63  |..object+=1.%..c|
00006810  6f 75 6e 74 2b 3d 31 0d  25 a8 2a e7 20 62 6f 74  |ount+=1.%.*. bot|
00006820  4c 45 44 3d 25 30 31 20  8c 20 62 6f 74 4c 45 44  |LED=%01 . botLED|
00006830  3d 25 31 30 20 8b 20 62  6f 74 4c 45 44 3d 25 30  |=%10 . botLED=%0|
00006840  31 0d 25 b2 21 c8 99 22  48 6f 75 72 67 6c 61 73  |1.%.!.."Hourglas|
00006850  73 5f 4c 45 44 73 22 2c  25 31 31 2c 62 6f 74 4c  |s_LEDs",%11,botL|
00006860  45 44 0d 25 bc 1c e7 20  61 72 63 73 20 80 20 66  |ED.%... arcs . f|
00006870  69 6c 65 74 79 70 65 3d  26 44 44 43 20 8c 0d 25  |iletype=&DDC ..%|
00006880  c6 58 70 72 65 61 72 63  72 6f 6f 74 24 3d 72 6f  |.Xprearcroot$=ro|
00006890  6f 74 24 3a 70 72 65 61  72 63 64 69 72 24 3d 64  |ot$:prearcdir$=d|
000068a0  69 72 24 3a 70 72 65 61  72 63 6c 61 73 74 3d 6f  |ir$:prearclast=o|
000068b0  62 6a 65 63 74 3a 6c 61  73 74 64 69 72 28 78 29  |bject:lastdir(x)|
000068c0  3d 6f 62 6a 65 63 74 3a  70 72 65 61 72 63 78 3d  |=object:prearcx=|
000068d0  78 3a 78 2b 3d 31 0d 25  d0 2a ff 28 22 4f 70 65  |x:x+=1.%.*.("Ope|
000068e0  6e 41 72 63 68 69 76 65  20 22 2b 72 6f 6f 74 24  |nArchive "+root$|
000068f0  2b 64 69 72 24 2b 22 2e  22 2b 66 69 6c 65 24 29  |+dir$+"."+file$)|
00006900  0d 25 da 52 72 6f 6f 74  24 3d 22 41 72 63 46 53  |.%.Rroot$="ArcFS|
00006910  23 22 2b 66 69 6c 65 24  2b 22 3a 24 22 3a 61 72  |#"+file$+":$":ar|
00006920  63 6e 61 6d 65 24 3d 66  69 6c 65 24 3a 6f 62 6a  |cname$=file$:obj|
00006930  65 63 74 3d 30 3a 61 72  63 78 3d a9 28 64 69 72  |ect=0:arcx=.(dir|
00006940  24 2b 66 69 6c 65 24 29  2b 31 3a 64 69 72 24 3d  |$+file$)+1:dir$=|
00006950  22 22 0d 25 e4 31 61 72  63 63 74 2b 3d 31 3a 61  |"".%.1arcct+=1:a|
00006960  72 63 24 28 61 72 63 63  74 29 3d 66 69 6c 65 24  |rc$(arcct)=file$|
00006970  2b 22 2c 22 2b c3 63 6f  75 6e 74 2b 22 2c 22 2b  |+","+.count+","+|
00006980  c3 63 74 0d 25 ee 05 cd  0d 25 f8 47 e7 20 66 69  |.ct.%....%.G. fi|
00006990  6c 65 74 79 70 65 3d 34  30 39 36 20 64 69 72 24  |letype=4096 dir$|
000069a0  3d 64 69 72 24 2b 22 2e  22 2b 66 69 6c 65 24 3a  |=dir$+"."+file$:|
000069b0  6c 61 73 74 64 69 72 28  78 29 3d 6f 62 6a 65 63  |lastdir(x)=objec|
000069c0  74 3a 78 2b 3d 31 3a 6f  62 6a 65 63 74 3d 30 0d  |t:x+=1:object=0.|
000069d0  26 02 4e e7 20 66 69 6c  65 74 79 70 65 3d 38 31  |&.N. filetype=81|
000069e0  39 32 20 80 20 61 70 70  73 20 64 69 72 24 3d 64  |92 . apps dir$=d|
000069f0  69 72 24 2b 22 2e 22 2b  66 69 6c 65 24 3a 6c 61  |ir$+"."+file$:la|
00006a00  73 74 64 69 72 28 78 29  3d 6f 62 6a 65 63 74 3a  |stdir(x)=object:|
00006a10  78 2b 3d 31 3a 6f 62 6a  65 63 74 3d 30 0d 26 0c  |x+=1:object=0.&.|
00006a20  05 cd 0d 26 16 0e fd 20  72 65 61 64 65 72 3d 30  |...&... reader=0|
00006a30  0d 26 20 08 78 2d 3d 31  0d 26 2a 22 e7 20 78 3d  |.& .x-=1.&*". x=|
00006a40  2d 31 20 80 20 70 72 65  61 72 63 78 3d 2d 31 20  |-1 . prearcx=-1 |
00006a50  f2 65 6e 64 6f 66 6c 69  73 74 0d 26 34 a4 e7 20  |.endoflist.&4.. |
00006a60  78 3d 70 72 65 61 72 63  78 20 80 20 70 72 65 61  |x=prearcx . prea|
00006a70  72 63 78 3e 2d 31 20 8c  20 78 3d 70 72 65 61 72  |rcx>-1 . x=prear|
00006a80  63 78 3a 72 6f 6f 74 24  3d 70 72 65 61 72 63 72  |cx:root$=prearcr|
00006a90  6f 6f 74 24 3a 64 69 72  24 3d 70 72 65 61 72 63  |oot$:dir$=prearc|
00006aa0  64 69 72 24 3a 6f 62 6a  65 63 74 3d 70 72 65 61  |dir$:object=prea|
00006ab0  72 63 6c 61 73 74 3a 6c  61 73 74 64 69 72 28 78  |rclast:lastdir(x|
00006ac0  29 3d 6f 62 6a 65 63 74  3a 70 72 65 61 72 63 78  |)=object:prearcx|
00006ad0  3d 2d 31 3a 61 72 63 78  3d 30 3a ff 28 22 43 6c  |=-1:arcx=0:.("Cl|
00006ae0  6f 73 65 41 72 63 68 69  76 65 20 22 2b 61 72 63  |oseArchive "+arc|
00006af0  6e 61 6d 65 24 29 3a f2  67 6f 74 72 65 65 0d 26  |name$):.gotree.&|
00006b00  3e 14 e7 20 65 6e 64 6c  69 73 74 79 3d 31 20 8c  |>.. endlisty=1 .|
00006b10  20 e1 0d 26 48 05 e1 0d  26 52 0f dd f2 65 6e 64  | ..&H...&R...end|
00006b20  6f 66 6c 69 73 74 0d 26  5c 12 66 69 6e 69 73 68  |oflist.&\.finish|
00006b30  3d 91 2d 73 74 61 72 74  0d 26 66 2b 24 65 6e 64  |=.-start.&f+$end|
00006b40  74 65 78 74 25 3d bd 31  37 2b c3 74 6f 74 73 69  |text%=.17+.totsi|
00006b50  7a 65 2b bd 31 38 2b c3  66 69 6e 69 73 68 2b bd  |ze+.18+.finish+.|
00006b60  32 35 35 0d 26 70 23 65  6e 64 74 65 78 74 25 2b  |255.&p#endtext%+|
00006b70  3d a9 28 c3 74 6f 74 73  69 7a 65 2b c3 66 69 6e  |=.(.totsize+.fin|
00006b80  69 73 68 29 2b 33 0d 26  7a 1f 74 73 69 7a 65 28  |ish)+3.&z.tsize(|
00006b90  63 74 29 3d 65 6e 64 74  65 78 74 25 2d 74 72 65  |ct)=endtext%-tre|
00006ba0  65 28 63 74 29 0d 26 84  39 74 63 6f 75 6e 74 28  |e(ct).&.9tcount(|
00006bb0  63 74 29 3d 63 6f 75 6e  74 3a 74 6c 65 6e 28 63  |ct)=count:tlen(c|
00006bc0  74 29 3d 6e 6c 65 6e 3a  73 74 3d 63 74 3a 74 72  |t)=nlen:st=ct:tr|
00006bd0  6f 6f 74 24 28 63 74 29  3d 72 6f 6f 74 24 0d 26  |oot$(ct)=root$.&|
00006be0  8e 2a c8 99 22 4f 53 5f  48 65 61 70 22 2c 36 2c  |.*.."OS_Heap",6,|
00006bf0  68 65 61 70 25 2c 74 72  65 65 28 63 74 29 20 b8  |heap%,tree(ct) .|
00006c00  20 2c 2c 2c 63 75 72 62  0d 26 98 40 c8 99 22 4f  | ,,,curb.&.@.."O|
00006c10  53 5f 48 65 61 70 22 2c  34 2c 68 65 61 70 25 2c  |S_Heap",4,heap%,|
00006c20  74 72 65 65 28 63 74 29  2c 28 74 73 69 7a 65 28  |tree(ct),(tsize(|
00006c30  63 74 29 2d 63 75 72 62  29 2b 38 20 b8 20 2c 2c  |ct)-curb)+8 . ,,|
00006c40  74 72 65 65 28 63 74 29  0d 26 a2 17 c8 99 22 48  |tree(ct).&...."H|
00006c50  6f 75 72 67 6c 61 73 73  5f 53 6d 61 73 68 22 0d  |ourglass_Smash".|
00006c60  26 ac 0e 65 6e 64 6c 69  73 74 79 3d 31 0d 26 b6  |&..endlisty=1.&.|
00006c70  2b 21 62 6c 6f 63 6b 3d  6e 65 77 25 3a c8 99 22  |+!block=new%:.."|
00006c80  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
00006c90  22 2c 2c 62 6c 6f 63 6b  0d 26 c0 2d 21 62 6c 6f  |",,block.&.-!blo|
00006ca0  63 6b 3d 74 69 6e 66 6f  25 3a c8 99 22 57 69 6d  |ck=tinfo%:.."Wim|
00006cb0  70 5f 43 6c 6f 73 65 57  69 6e 64 6f 77 22 2c 2c  |p_CloseWindow",,|
00006cc0  62 6c 6f 63 6b 0d 26 ca  2d 21 62 6c 6f 63 6b 3d  |block.&.-!block=|
00006cd0  66 69 6e 66 6f 25 3a c8  99 22 57 69 6d 70 5f 43  |finfo%:.."Wimp_C|
00006ce0  6c 6f 73 65 57 69 6e 64  6f 77 22 2c 2c 62 6c 6f  |loseWindow",,blo|
00006cf0  63 6b 0d 26 d4 2d 21 62  6c 6f 63 6b 3d 69 69 6e  |ck.&.-!block=iin|
00006d00  66 6f 25 3a c8 99 22 57  69 6d 70 5f 43 6c 6f 73  |fo%:.."Wimp_Clos|
00006d10  65 57 69 6e 64 6f 77 22  2c 2c 62 6c 6f 63 6b 0d  |eWindow",,block.|
00006d20  26 de 1b f2 69 6e 66 6f  28 66 69 6e 66 6f 25 2c  |&...info(finfo%,|
00006d30  31 2c c3 28 63 74 2b 31  29 29 0d 26 e8 23 f2 69  |1,.(ct+1)).&.#.i|
00006d40  6e 66 6f 28 66 69 6e 66  6f 25 2c 32 2c c3 28 68  |nfo(finfo%,2,.(h|
00006d50  73 69 7a 65 62 2d 74 66  72 65 65 29 29 0d 26 f2  |sizeb-tfree)).&.|
00006d60  3c e7 20 24 a4 69 6e 66  6f 28 66 69 6e 66 6f 25  |<. $.info(finfo%|
00006d70  2c 30 29 3d 22 4e 6f 6e  65 22 20 8c 20 f2 69 6e  |,0)="None" . .in|
00006d80  66 6f 28 66 69 6e 66 6f  25 2c 30 2c 22 3c 55 6e  |fo(finfo%,0,"<Un|
00006d90  74 69 74 6c 65 64 3e 22  29 0d 26 fc 0f e7 20 73  |titled>").&... s|
00006da0  61 76 65 64 3d a3 20 8c  0d 27 06 0b 73 61 76 65  |aved=. ..'..save|
00006db0  64 3d b9 0d 27 10 10 21  69 63 6f 6e 64 3d 6d 61  |d=..'..!icond=ma|
00006dc0  69 6e 25 0d 27 1a 21 c8  99 22 57 69 6d 70 5f 47  |in%.'.!.."Wimp_G|
00006dd0  65 74 57 69 6e 64 6f 77  49 6e 66 6f 22 2c 2c 69  |etWindowInfo",,i|
00006de0  63 6f 6e 64 0d 27 24 20  24 28 69 63 6f 6e 64 21  |cond.'$ $(icond!|
00006df0  37 36 29 3d 24 28 69 63  6f 6e 64 21 37 36 29 2b  |76)=$(icond!76)+|
00006e00  22 20 2a 22 0d 27 2e 46  c8 99 22 57 69 6d 70 5f  |" *".'.F.."Wimp_|
00006e10  46 6f 72 63 65 52 65 64  72 61 77 22 2c 2d 31 2c  |ForceRedraw",-1,|
00006e20  62 6c 6f 63 6b 21 34 2c  28 62 6c 6f 63 6b 21 31  |block!4,(block!1|
00006e30  36 29 2d 33 32 2c 62 6c  6f 63 6b 21 31 32 2c 62  |6)-32,block!12,b|
00006e40  6c 6f 63 6b 21 31 36 2b  33 36 0d 27 38 19 f2 69  |lock!16+36.'8..i|
00006e50  6e 66 6f 28 66 69 6e 66  6f 25 2c 33 2c 22 59 65  |nfo(finfo%,3,"Ye|
00006e60  73 22 29 0d 27 42 05 cd  0d 27 4c 2c 21 62 6c 6f  |s").'B...'L,!blo|
00006e70  63 6b 3d 6d 61 69 6e 25  3a c8 99 22 57 69 6d 70  |ck=main%:.."Wimp|
00006e80  5f 43 6c 6f 73 65 57 69  6e 64 6f 77 22 2c 2c 62  |_CloseWindow",,b|
00006e90  6c 6f 63 6b 0d 27 56 22  f2 6e 65 77 76 69 65 77  |lock.'V".newview|
00006ea0  3a f2 6f 70 65 6e 77 69  6e 28 6d 61 69 6e 25 29  |:.openwin(main%)|
00006eb0  3a f2 70 61 6e 65 0d 27  60 05 e1 0d 27 6a 09 dd  |:.pane.'`...'j..|
00006ec0  f2 6d 65 6d 0d 27 74 29  c8 99 22 4f 53 5f 48 65  |.mem.'t).."OS_He|
00006ed0  61 70 22 2c 36 2c 68 65  61 70 25 2c 74 72 65 65  |ap",6,heap%,tree|
00006ee0  28 63 74 29 20 b8 20 2c  2c 2c 6f 68 73 0d 27 7e  |(ct) . ,,,ohs.'~|
00006ef0  20 c8 99 22 4f 53 5f 52  65 61 64 4d 65 6d 4d 61  | .."OS_ReadMemMa|
00006f00  70 49 6e 66 6f 22 20 b8  20 70 61 67 65 0d 27 88  |pInfo" . page.'.|
00006f10  25 c8 99 22 57 69 6d 70  5f 53 6c 6f 74 53 69 7a  |%.."Wimp_SlotSiz|
00006f20  65 22 2c 2d 31 2c 2d 31  20 b8 20 63 75 72 72 65  |e",-1,-1 . curre|
00006f30  6e 74 0d 27 92 25 c8 99  22 57 69 6d 70 5f 53 6c  |nt.'.%.."Wimp_Sl|
00006f40  6f 74 53 69 7a 65 22 2c  63 75 72 72 65 6e 74 2b  |otSize",current+|
00006f50  70 61 67 65 2c 2d 31 0d  27 9c 21 c8 99 22 57 69  |page,-1.'.!.."Wi|
00006f60  6d 70 5f 53 6c 6f 74 53  69 7a 65 22 2c 2d 31 2c  |mp_SlotSize",-1,|
00006f70  2d 31 20 b8 20 6e 65 77  0d 27 a6 16 63 68 61 6e  |-1 . new.'..chan|
00006f80  67 65 3d 6e 65 77 2d 63  75 72 72 65 6e 74 0d 27  |ge=new-current.'|
00006f90  b0 83 e7 20 63 68 61 6e  67 65 3d 30 20 8c 20 f2  |... change=0 . .|
00006fa0  71 75 65 72 79 28 22 4f  75 74 20 4f 66 20 4d 65  |query("Out Of Me|
00006fb0  6d 6f 72 79 2e 20 46 72  65 65 20 6d 6f 72 65 20  |mory. Free more |
00006fc0  6d 65 6d 6f 72 79 20 61  6e 64 20 74 72 79 20 61  |memory and try a|
00006fd0  67 61 69 6e 2e 22 29 3a  63 74 2d 3d 31 3a c8 99  |gain."):ct-=1:..|
00006fe0  26 31 44 2c 33 2c 68 65  61 70 25 2c 74 72 65 65  |&1D,3,heap%,tree|
00006ff0  28 63 74 29 3a 73 74 6f  70 3d b9 3a c8 99 22 48  |(ct):stop=.:.."H|
00007000  6f 75 72 67 6c 61 73 73  5f 53 6d 61 73 68 22 3a  |ourglass_Smash":|
00007010  e1 0d 27 ba 1f c8 99 22  4f 53 5f 48 65 61 70 22  |..'...."OS_Heap"|
00007020  2c 35 2c 68 65 61 70 25  2c 2c 63 68 61 6e 67 65  |,5,heap%,,change|
00007030  0d 27 c4 34 c8 99 22 4f  53 5f 48 65 61 70 22 2c  |.'.4.."OS_Heap",|
00007040  34 2c 68 65 61 70 25 2c  74 72 65 65 28 63 74 29  |4,heap%,tree(ct)|
00007050  2c 63 68 61 6e 67 65 20  b8 20 2c 2c 74 72 65 65  |,change . ,,tree|
00007060  28 63 74 29 0d 27 ce 29  c8 99 22 4f 53 5f 48 65  |(ct).'.).."OS_He|
00007070  61 70 22 2c 36 2c 68 65  61 70 25 2c 74 72 65 65  |ap",6,heap%,tree|
00007080  28 63 74 29 20 b8 20 2c  2c 2c 6e 68 73 0d 27 d8  |(ct) . ,,,nhs.'.|
00007090  12 68 73 69 7a 65 62 2b  3d 63 68 61 6e 67 65 0d  |.hsizeb+=change.|
000070a0  27 e2 13 6d 65 6d 62 75  66 2b 3d 6e 68 73 2d 6f  |'..membuf+=nhs-o|
000070b0  68 73 0d 27 ec 05 e1 0d  27 f6 11 dd f2 6d 61 6b  |hs.'....'....mak|
000070c0  65 61 72 63 6c 69 73 74  0d 28 00 20 e3 20 6a 3d  |earclist.(. . j=|
000070d0  30 20 b8 20 6d 61 78 6e  6f 3a 20 61 72 63 24 28  |0 . maxno: arc$(|
000070e0  6a 29 3d 22 22 3a 20 ed  0d 28 0a 0a 61 69 6e 64  |j)="": ..(..aind|
000070f0  3d 30 0d 28 14 0e e3 20  6a 3d 30 20 b8 20 63 74  |=0.(... j=0 . ct|
00007100  0d 28 1e 1a 20 e3 20 63  6f 75 6e 74 3d 30 20 b8  |.(.. . count=0 .|
00007110  20 74 63 6f 75 6e 74 28  6a 29 0d 28 28 13 20 69  | tcount(j).((. i|
00007120  6e 64 65 78 3d 63 6f 75  6e 74 2a 32 34 0d 28 32  |ndex=count*24.(2|
00007130  0d 20 74 79 70 65 24 3d  22 22 0d 28 3c 11 20 20  |. type$="".(<.  |
00007140  e3 20 68 3d 32 31 20 b8  20 32 33 0d 28 46 21 20  |. h=21 . 23.(F! |
00007150  20 74 79 70 65 24 2b 3d  bd 28 74 72 65 65 28 6a  | type$+=.(tree(j|
00007160  29 3f 28 69 6e 64 65 78  2b 68 29 29 0d 28 50 07  |)?(index+h)).(P.|
00007170  20 20 ed 0d 28 5a 14 20  e7 20 74 79 70 65 24 3d  |  ..(Z. . type$=|
00007180  22 44 44 43 22 20 8c 0d  28 64 0b 20 20 74 24 3d  |"DDC" ..(d.  t$=|
00007190  22 22 0d 28 6e 10 20 20  e3 20 68 3d 33 20 b8 20  |"".(n.  . h=3 . |
000071a0  31 32 0d 28 78 1b 20 20  76 61 6c 3d 74 72 65 65  |12.(x.  val=tree|
000071b0  28 6a 29 3f 28 69 6e 64  65 78 2b 68 29 0d 28 82  |(j)?(index+h).(.|
000071c0  19 20 20 e7 20 76 61 6c  3c 3e 30 20 8c 20 74 24  |.  . val<>0 . t$|
000071d0  2b 3d bd 76 61 6c 0d 28  8c 07 20 20 ed 0d 28 96  |+=.val.(..  ..(.|
000071e0  42 20 20 e7 20 61 69 6e  64 3c 6d 61 78 6e 6f 20  |B  . aind<maxno |
000071f0  8c 20 61 72 63 24 28 61  69 6e 64 29 3d 74 24 2b  |. arc$(aind)=t$+|
00007200  22 2c 22 2b c3 28 63 6f  75 6e 74 2b 31 29 2b 22  |","+.(count+1)+"|
00007210  2c 22 2b c3 28 6a 29 3a  61 69 6e 64 2b 3d 31 0d  |,"+.(j):aind+=1.|
00007220  28 a0 07 20 20 cd 0d 28  aa 0c 20 ed 20 63 6f 75  |(..  ..(.. . cou|
00007230  6e 74 0d 28 b4 07 ed 20  6a 0d 28 be 10 61 72 63  |nt.(... j.(..arc|
00007240  63 74 3d 61 69 6e 64 2d  31 0d 28 c8 05 e1 0d 28  |ct=aind-1.(....(|
00007250  d2 0a dd f2 6c 61 73 74  0d 28 dc 0e e7 20 73 74  |....last.(... st|
00007260  3d 30 20 8c 20 e1 0d 28  e6 09 73 74 2d 3d 31 0d  |=0 . ..(..st-=1.|
00007270  28 f0 2c 21 62 6c 6f 63  6b 3d 6d 61 69 6e 25 3a  |(.,!block=main%:|
00007280  c8 99 22 57 69 6d 70 5f  43 6c 6f 73 65 57 69 6e  |.."Wimp_CloseWin|
00007290  64 6f 77 22 2c 2c 62 6c  6f 63 6b 0d 28 fa 0c f2  |dow",,block.(...|
000072a0  6e 65 77 76 69 65 77 0d  29 04 13 f2 6f 70 65 6e  |newview.)...open|
000072b0  77 69 6e 28 6d 61 69 6e  25 29 0d 29 0e 11 f2 63  |win(main%).)...c|
000072c0  6c 6f 73 65 28 66 69 6e  64 25 29 0d 29 18 12 f2  |lose(find%).)...|
000072d0  63 6c 6f 73 65 28 69 69  6e 66 6f 25 29 0d 29 22  |close(iinfo%).)"|
000072e0  12 f2 63 6c 6f 73 65 28  74 69 6e 66 6f 25 29 0d  |..close(tinfo%).|
000072f0  29 2c 13 f2 63 6c 6f 73  65 28 6e 6f 74 66 6e 64  |),..close(notfnd|
00007300  25 29 0d 29 36 12 f2 63  6c 6f 73 65 28 66 6f 75  |%).)6..close(fou|
00007310  6e 64 25 29 0d 29 40 09  f2 70 61 6e 65 0d 29 4a  |nd%).)@..pane.)J|
00007320  05 e1 0d 29 54 0a dd f2  6e 65 78 74 0d 29 5e 0f  |...)T...next.)^.|
00007330  e7 20 73 74 3d 63 74 20  8c 20 e1 0d 29 68 09 73  |. st=ct . ..)h.s|
00007340  74 2b 3d 31 0d 29 72 2c  21 62 6c 6f 63 6b 3d 6d  |t+=1.)r,!block=m|
00007350  61 69 6e 25 3a c8 99 22  57 69 6d 70 5f 43 6c 6f  |ain%:.."Wimp_Clo|
00007360  73 65 57 69 6e 64 6f 77  22 2c 2c 62 6c 6f 63 6b  |seWindow",,block|
00007370  0d 29 7c 0c f2 6e 65 77  76 69 65 77 0d 29 86 13  |.)|..newview.)..|
00007380  f2 6f 70 65 6e 77 69 6e  28 6d 61 69 6e 25 29 0d  |.openwin(main%).|
00007390  29 90 11 f2 63 6c 6f 73  65 28 66 69 6e 64 25 29  |)...close(find%)|
000073a0  0d 29 9a 12 f2 63 6c 6f  73 65 28 69 69 6e 66 6f  |.)...close(iinfo|
000073b0  25 29 0d 29 a4 12 f2 63  6c 6f 73 65 28 74 69 6e  |%).)...close(tin|
000073c0  66 6f 25 29 0d 29 ae 13  f2 63 6c 6f 73 65 28 6e  |fo%).)...close(n|
000073d0  6f 74 66 6e 64 25 29 0d  29 b8 12 f2 63 6c 6f 73  |otfnd%).)...clos|
000073e0  65 28 66 6f 75 6e 64 25  29 0d 29 c2 09 f2 70 61  |e(found%).)...pa|
000073f0  6e 65 0d 29 cc 05 e1 0d  29 d6 0d dd f2 6e 65 77  |ne.)....)....new|
00007400  76 69 65 77 0d 29 e0 0f  e7 20 63 74 3d 2d 31 20  |view.)... ct=-1 |
00007410  8c 20 e1 0d 29 ea 1c f2  69 6e 66 6f 28 62 61 72  |. ..)...info(bar|
00007420  25 2c 30 2c 74 72 6f 6f  74 24 28 73 74 29 29 0d  |%,0,troot$(st)).|
00007430  29 f4 18 74 70 74 72 3d  74 63 6f 75 6e 74 28 73  |)..tptr=tcount(s|
00007440  74 29 2a 32 34 2b 31 0d  29 fe 0d 73 69 7a 65 62  |t)*24+1.)..sizeb|
00007450  24 3d 22 22 0d 2a 08 05  f5 0d 2a 12 22 73 69 7a  |$="".*....*."siz|
00007460  65 62 24 3d 73 69 7a 65  62 24 2b bd 28 74 72 65  |eb$=sizeb$+.(tre|
00007470  65 28 73 74 29 3f 74 70  74 72 29 0d 2a 1c 0b 74  |e(st)?tptr).*..t|
00007480  70 74 72 2b 3d 31 0d 2a  26 16 fd 20 74 72 65 65  |ptr+=1.*&.. tree|
00007490  28 73 74 29 3f 74 70 74  72 3d 31 38 0d 2a 30 0b  |(st)?tptr=18.*0.|
000074a0  74 70 74 72 2b 3d 31 0d  2a 3a 0f 66 69 6e 69 73  |tptr+=1.*:.finis|
000074b0  68 73 24 3d 22 22 0d 2a  44 05 f5 0d 2a 4e 26 66  |hs$="".*D...*N&f|
000074c0  69 6e 69 73 68 73 24 3d  66 69 6e 69 73 68 73 24  |inishs$=finishs$|
000074d0  2b bd 28 74 72 65 65 28  73 74 29 3f 74 70 74 72  |+.(tree(st)?tptr|
000074e0  29 0d 2a 58 0b 74 70 74  72 2b 3d 31 0d 2a 62 17  |).*X.tptr+=1.*b.|
000074f0  fd 20 74 72 65 65 28 73  74 29 3f 74 70 74 72 3d  |. tree(st)?tptr=|
00007500  32 35 35 0d 2a 6c 1e f2  69 6e 66 6f 28 74 69 6e  |255.*l..info(tin|
00007510  66 6f 25 2c 30 2c 74 72  6f 6f 74 24 28 73 74 29  |fo%,0,troot$(st)|
00007520  29 0d 2a 76 1f f2 69 6e  66 6f 28 74 69 6e 66 6f  |).*v..info(tinfo|
00007530  25 2c 31 2c c3 74 63 6f  75 6e 74 28 73 74 29 29  |%,1,.tcount(st))|
00007540  0d 2a 80 1e f2 69 6e 66  6f 28 74 69 6e 66 6f 25  |.*...info(tinfo%|
00007550  2c 32 2c c3 74 73 69 7a  65 28 73 74 29 29 0d 2a  |,2,.tsize(st)).*|
00007560  8a 1a f2 69 6e 66 6f 28  74 69 6e 66 6f 25 2c 33  |...info(tinfo%,3|
00007570  2c 73 69 7a 65 62 24 29  0d 2a 94 1c f2 69 6e 66  |,sizeb$).*...inf|
00007580  6f 28 74 69 6e 66 6f 25  2c 37 2c 66 69 6e 69 73  |o(tinfo%,7,finis|
00007590  68 73 24 29 0d 2a 9e 2e  78 61 6c 74 3d 74 6c 65  |hs$).*..xalt=tle|
000075a0  6e 28 73 74 29 2a 31 36  3a 79 61 6c 74 3d 30 2d  |n(st)*16:yalt=0-|
000075b0  28 74 63 6f 75 6e 74 28  73 74 29 2a 33 36 2b 34  |(tcount(st)*36+4|
000075c0  30 29 0d 2a a8 19 f2 61  64 6a 75 73 74 77 69 6e  |0).*...adjustwin|
000075d0  28 78 61 6c 74 2c 79 61  6c 74 29 0d 2a b2 0d 69  |(xalt,yalt).*..i|
000075e0  74 65 6d 6e 6f 3d 2d 31  0d 2a bc 24 f2 73 65 74  |temno=-1.*.$.set|
000075f0  69 63 73 74 61 74 65 28  66 69 6e 64 25 2c 34 2c  |icstate(find%,4,|
00007600  31 3c 3c 32 32 2c 31 3c  3c 32 32 29 0d 2a c6 0d  |1<<22,1<<22).*..|
00007610  64 65 70 74 68 3d 35 36  38 0d 2a d0 35 e7 20 74  |depth=568.*.5. t|
00007620  63 6f 75 6e 74 28 73 74  29 2a 33 36 2b 34 30 3c  |count(st)*36+40<|
00007630  64 65 70 74 68 20 8c 20  64 65 70 74 68 3d 74 63  |depth . depth=tc|
00007640  6f 75 6e 74 28 73 74 29  2a 33 36 2b 34 30 0d 2a  |ount(st)*36+40.*|
00007650  da 15 77 69 64 74 68 3d  74 6c 65 6e 28 73 74 29  |..width=tlen(st)|
00007660  2a 31 36 0d 2a e4 1b e7  20 77 69 64 74 68 3e 35  |*16.*... width>5|
00007670  30 30 20 8c 20 77 69 64  74 68 3d 35 30 30 0d 2a  |00 . width=500.*|
00007680  ee 05 e1 0d 2a f8 10 dd  f2 73 65 6c 65 63 74 69  |....*....selecti|
00007690  74 65 6d 0d 2b 02 14 6f  6c 64 69 74 65 6d 6e 6f  |tem.+..olditemno|
000076a0  3d 69 74 65 6d 6e 6f 0d  2b 0c 12 79 63 6f 6f 72  |=itemno.+..ycoor|
000076b0  64 3d 62 6c 6f 63 6b 21  34 0d 2b 16 2e 21 62 6c  |d=block!4.+..!bl|
000076c0  6f 63 6b 3d 6d 61 69 6e  25 3a c8 99 22 57 69 6d  |ock=main%:.."Wim|
000076d0  70 5f 47 65 74 57 69 6e  64 6f 77 49 6e 66 6f 22  |p_GetWindowInfo"|
000076e0  2c 2c 62 6c 6f 63 6b 0d  2b 20 1b 77 6f 72 6b 78  |,,block.+ .workx|
000076f0  25 3d 62 6c 6f 63 6b 21  34 2d 62 6c 6f 63 6b 21  |%=block!4-block!|
00007700  32 30 0d 2b 2a 1c 77 6f  72 6b 79 25 3d 62 6c 6f  |20.+*.worky%=blo|
00007710  63 6b 21 31 36 2d 62 6c  6f 63 6b 21 32 34 0d 2b  |ck!16-block!24.+|
00007720  34 1e 79 63 6f 6f 72 64  3d 30 2d 28 62 6c 6f 63  |4.ycoord=0-(bloc|
00007730  6b 21 31 36 2d 79 63 6f  6f 72 64 29 0d 2b 3e 1a  |k!16-ycoord).+>.|
00007740  79 63 6f 6f 72 64 3d 79  63 6f 6f 72 64 2b 62 6c  |ycoord=ycoord+bl|
00007750  6f 63 6b 21 32 34 0d 2b  48 21 69 74 65 6d 6e 6f  |ock!24.+H!itemno|
00007760  3d a8 28 28 79 63 6f 6f  72 64 2d 34 30 29 2f 33  |=.((ycoord-40)/3|
00007770  36 29 2a 2d 31 2d 33 0d  2b 52 0d 69 74 65 6d 73  |6)*-1-3.+R.items|
00007780  74 3d 73 74 0d 2b 5c 1a  e7 20 6f 6c 64 69 74 65  |t=st.+\.. oldite|
00007790  6d 6e 6f 3d 69 74 65 6d  6e 6f 20 8c 20 e1 0d 2b  |mno=itemno . ..+|
000077a0  66 1b 79 63 6f 6f 72 64  3d 30 2d 28 69 74 65 6d  |f.ycoord=0-(item|
000077b0  6e 6f 2a 33 36 2b 34 34  29 0d 2b 70 3d c8 99 22  |no*36+44).+p=.."|
000077c0  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
000077d0  22 2c 6d 61 69 6e 25 2c  31 2c 79 63 6f 6f 72 64  |",main%,1,ycoord|
000077e0  2d 33 32 2c 74 6c 65 6e  28 73 74 29 2a 31 36 2c  |-32,tlen(st)*16,|
000077f0  79 63 6f 6f 72 64 0d 2b  7a 1e 79 63 6f 6f 72 64  |ycoord.+z.ycoord|
00007800  3d 30 2d 28 6f 6c 64 69  74 65 6d 6e 6f 2a 33 36  |=0-(olditemno*36|
00007810  2b 34 34 29 0d 2b 84 3d  c8 99 22 57 69 6d 70 5f  |+44).+.=.."Wimp_|
00007820  46 6f 72 63 65 52 65 64  72 61 77 22 2c 6d 61 69  |ForceRedraw",mai|
00007830  6e 25 2c 31 2c 79 63 6f  6f 72 64 2d 33 32 2c 74  |n%,1,ycoord-32,t|
00007840  6c 65 6e 28 73 74 29 2a  31 36 2c 79 63 6f 6f 72  |len(st)*16,ycoor|
00007850  64 0d 2b 8e 14 f2 70 75  74 69 6e 66 6f 28 69 74  |d.+...putinfo(it|
00007860  65 6d 6e 6f 29 0d 2b 98  24 f2 73 65 74 69 63 73  |emno).+.$.setics|
00007870  74 61 74 65 28 66 69 6e  64 25 2c 34 2c 31 3c 3c  |tate(find%,4,1<<|
00007880  32 32 2c 30 3c 3c 32 32  29 0d 2b a2 05 e1 0d 2b  |22,0<<22).+....+|
00007890  ac 15 dd f2 70 75 74 69  6e 66 6f 28 69 74 65 6d  |....putinfo(item|
000078a0  6e 6f 29 0d 2b b6 0f 6e  3d 69 74 65 6d 6e 6f 2a  |no).+..n=itemno*|
000078b0  32 34 0d 2b c0 09 74 24  3d 22 22 0d 2b ca 2a e3  |24.+..t$="".+.*.|
000078c0  20 68 3d 33 20 b8 20 31  32 3a 69 3d 6e 2b 68 3a  | h=3 . 12:i=n+h:|
000078d0  74 24 2b 3d bd 28 74 72  65 65 28 73 74 29 3f 69  |t$+=.(tree(st)?i|
000078e0  29 3a ed 20 68 0d 2b d4  27 f2 69 6e 66 6f 28 69  |):. h.+.'.info(i|
000078f0  69 6e 66 6f 25 2c 30 2c  74 72 6f 6f 74 24 28 73  |info%,0,troot$(s|
00007900  74 29 2b 22 2e 2e 2e 22  2b 74 24 29 0d 2b de 09  |t)+"..."+t$).+..|
00007910  74 24 3d 22 22 0d 2b e8  2b e3 20 68 3d 31 34 20  |t$="".+.+. h=14 |
00007920  b8 20 32 30 3a 69 3d 6e  2b 68 3a 74 24 2b 3d bd  |. 20:i=n+h:t$+=.|
00007930  28 74 72 65 65 28 73 74  29 3f 69 29 3a ed 20 68  |(tree(st)?i):. h|
00007940  0d 2b f2 16 f2 69 6e 66  6f 28 69 69 6e 66 6f 25  |.+...info(iinfo%|
00007950  2c 34 2c 74 24 29 0d 2b  fc 09 74 24 3d 22 22 0d  |,4,t$).+..t$="".|
00007960  2c 06 2b e3 20 68 3d 32  31 20 b8 20 32 33 3a 69  |,.+. h=21 . 23:i|
00007970  3d 6e 2b 68 3a 74 24 2b  3d bd 28 74 72 65 65 28  |=n+h:t$+=.(tree(|
00007980  73 74 29 3f 69 29 3a ed  20 68 0d 2c 10 1e 74 65  |st)?i):. h.,..te|
00007990  24 3d 22 26 22 2b 74 24  2b 22 20 20 20 20 20 28  |$="&"+t$+"     (|
000079a0  22 2b 74 24 2b 22 29 22  0d 2c 1a 0b 74 62 6c 6b  |"+t$+")".,..tblk|
000079b0  3d 74 74 0d 2c 24 35 c8  99 22 58 4f 53 5f 46 53  |=tt.,$5.."XOS_FS|
000079c0  43 6f 6e 74 72 6f 6c 22  2c 31 38 2c 2c a4 68 65  |Control",18,,.he|
000079d0  78 74 6f 64 65 63 28 74  24 29 20 b8 20 72 30 2c  |xtodec(t$) . r0,|
000079e0  2c 72 32 25 2c 72 33 25  0d 2c 2e 0d e7 20 72 30  |,r2%,r3%.,... r0|
000079f0  3d 31 38 20 8c 0d 2c 38  2f 74 62 6c 6b 21 30 3d  |=18 ..,8/tblk!0=|
00007a00  72 32 25 3a 74 62 6c 6b  21 34 3d 72 33 25 3a 74  |r2%:tblk!4=r3%:t|
00007a10  62 6c 6b 3f 38 3d 31 33  3a 74 79 70 65 24 3d 24  |blk?8=13:type$=$|
00007a20  74 62 6c 6b 0d 2c 42 19  74 65 24 3d 74 79 70 65  |tblk.,B.te$=type|
00007a30  24 2b 22 20 28 22 2b 74  24 2b 22 29 22 0d 2c 4c  |$+" ("+t$+")".,L|
00007a40  05 cd 0d 2c 56 13 73 74  24 3d 22 73 66 69 6c 65  |...,V.st$="sfile|
00007a50  5f 22 2b 74 24 0d 2c 60  30 e7 20 74 24 3d 22 41  |_"+t$.,`0. t$="A|
00007a60  50 50 22 20 8c 20 74 65  24 3d 22 41 70 70 6c 69  |PP" . te$="Appli|
00007a70  63 61 74 69 6f 6e 20 20  20 22 3a 73 74 24 3d 22  |cation   ":st$="|
00007a80  73 61 70 70 22 0d 2c 6a  30 e7 20 74 24 3d 22 44  |sapp".,j0. t$="D|
00007a90  49 52 22 20 8c 20 74 65  24 3d 22 44 69 72 65 63  |IR" . te$="Direc|
00007aa0  74 6f 72 79 20 20 20 20  20 22 3a 73 74 24 3d 22  |tory     ":st$="|
00007ab0  73 64 69 72 22 0d 2c 74  21 f2 69 6e 64 69 72 28  |sdir".,t!.indir(|
00007ac0  69 69 6e 66 6f 25 2c 31  2c 22 22 2c 22 62 30 3b  |iinfo%,1,"","b0;|
00007ad0  22 2b 73 74 24 29 0d 2c  7e 17 f2 69 6e 66 6f 28  |"+st$).,~..info(|
00007ae0  69 69 6e 66 6f 25 2c 33  2c 74 65 24 29 0d 2c 88  |iinfo%,3,te$).,.|
00007af0  05 e1 0d 2c 92 0f dd f2  73 65 6c 65 63 74 69 6f  |...,....selectio|
00007b00  6e 0d 2c 9c 20 6f 6c 64  73 31 3d 73 31 3a 6f 6c  |n.,. olds1=s1:ol|
00007b10  64 73 32 3d 73 32 3a 6f  6c 64 69 74 65 6d 3d 73  |ds2=s2:olditem=s|
00007b20  73 0d 2c a6 12 79 63 6f  6f 72 64 3d 62 6c 6f 63  |s.,..ycoord=bloc|
00007b30  6b 21 34 0d 2c b0 2e 21  62 6c 6f 63 6b 3d 6d 61  |k!4.,..!block=ma|
00007b40  69 6e 25 3a c8 99 22 57  69 6d 70 5f 47 65 74 57  |in%:.."Wimp_GetW|
00007b50  69 6e 64 6f 77 49 6e 66  6f 22 2c 2c 62 6c 6f 63  |indowInfo",,bloc|
00007b60  6b 0d 2c ba 1b 77 6f 72  6b 78 25 3d 62 6c 6f 63  |k.,..workx%=bloc|
00007b70  6b 21 34 2d 62 6c 6f 63  6b 21 32 30 0d 2c c4 1c  |k!4-block!20.,..|
00007b80  77 6f 72 6b 79 25 3d 62  6c 6f 63 6b 21 31 36 2d  |worky%=block!16-|
00007b90  62 6c 6f 63 6b 21 32 34  0d 2c ce 1e 79 63 6f 6f  |block!24.,..ycoo|
00007ba0  72 64 3d 30 2d 28 62 6c  6f 63 6b 21 31 36 2d 79  |rd=0-(block!16-y|
00007bb0  63 6f 6f 72 64 29 0d 2c  d8 1a 79 63 6f 6f 72 64  |coord).,..ycoord|
00007bc0  3d 79 63 6f 6f 72 64 2b  62 6c 6f 63 6b 21 32 34  |=ycoord+block!24|
00007bd0  0d 2c e2 1d 73 73 3d a8  28 28 79 63 6f 6f 72 64  |.,..ss=.((ycoord|
00007be0  2d 34 30 29 2f 33 36 29  2a 2d 31 2d 33 0d 2c ec  |-40)/36)*-1-3.,.|
00007bf0  45 f2 73 65 74 69 63 73  74 61 74 65 28 73 61 76  |E.seticstate(sav|
00007c00  65 25 2c 34 2c 31 3c 3c  32 32 2c 31 3c 3c 32 32  |e%,4,1<<22,1<<22|
00007c10  29 3a f2 73 65 74 69 63  73 74 61 74 65 28 73 61  |):.seticstate(sa|
00007c20  76 65 25 2c 34 2c 31 3c  3c 32 31 2c 30 3c 3c 32  |ve%,4,1<<21,0<<2|
00007c30  31 29 0d 2c f6 12 e7 20  6f 6c 64 69 74 65 6d 3d  |1).,... olditem=|
00007c40  73 73 20 8c 0d 2d 00 0f  73 31 3d 2d 31 3a 73 32  |ss ..-..s1=-1:s2|
00007c50  3d 2d 31 0d 2d 0a 1a 79  63 6f 6f 72 64 3d 30 2d  |=-1.-..ycoord=0-|
00007c60  28 6f 6c 64 73 31 2a 33  36 2b 34 34 29 0d 2d 14  |(olds1*36+44).-.|
00007c70  45 c8 99 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  |E.."Wimp_ForceRe|
00007c80  64 72 61 77 22 2c 6d 61  69 6e 25 2c 31 2c 79 63  |draw",main%,1,yc|
00007c90  6f 6f 72 64 2d 28 6f 6c  64 73 32 2a 33 36 29 2c  |oord-(olds2*36),|
00007ca0  74 6c 65 6e 28 73 74 29  2a 31 36 2c 79 63 6f 6f  |tlen(st)*16,ycoo|
00007cb0  72 64 0d 2d 1e 05 e1 0d  2d 28 05 cd 0d 2d 32 17  |rd.-....-(...-2.|
00007cc0  67 61 70 3d 73 32 2d 73  31 3a 67 61 70 3d 67 61  |gap=s2-s1:gap=ga|
00007cd0  70 2f 32 0d 2d 3c 13 e7  20 73 31 3d 2d 31 20 8c  |p/2.-<.. s1=-1 .|
00007ce0  20 73 31 3d 73 73 0d 2d  46 17 e7 20 73 73 3e 73  | s1=ss.-F.. ss>s|
00007cf0  31 2b 67 61 70 20 8c 20  73 32 3d 73 73 0d 2d 50  |1+gap . s2=ss.-P|
00007d00  13 e7 20 73 73 3c 73 31  20 8c 20 73 31 3d 73 73  |.. ss<s1 . s1=ss|
00007d10  0d 2d 5a 17 e7 20 73 73  3c 73 31 2b 67 61 70 20  |.-Z.. ss<s1+gap |
00007d20  8c 20 73 31 3d 73 73 0d  2d 64 17 e7 20 73 73 3d  |. s1=ss.-d.. ss=|
00007d30  73 31 2b 67 61 70 20 8c  20 73 32 3d 73 73 0d 2d  |s1+gap . s2=ss.-|
00007d40  6e 27 e7 20 73 31 3e 73  32 20 80 20 73 32 3e 2d  |n'. s1>s2 . s2>-|
00007d50  31 20 8c 20 73 63 3d 73  32 3a 73 31 3d 73 32 3a  |1 . sc=s2:s1=s2:|
00007d60  73 32 3d 73 63 0d 2d 78  36 e7 20 73 31 3e 2d 31  |s2=sc.-x6. s1>-1|
00007d70  20 80 20 73 32 3e 2d 31  20 8c 20 f2 73 65 74 69  | . s2>-1 . .seti|
00007d80  63 73 74 61 74 65 28 73  61 76 65 25 2c 34 2c 31  |cstate(save%,4,1|
00007d90  3c 3c 32 32 2c 30 3c 3c  32 32 29 0d 2d 82 1a 79  |<<22,0<<22).-..y|
00007da0  63 6f 6f 72 64 3d 30 2d  28 6f 6c 64 73 31 2a 33  |coord=0-(olds1*3|
00007db0  36 2b 34 34 29 0d 2d 8c  45 c8 99 22 57 69 6d 70  |6+44).-.E.."Wimp|
00007dc0  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 6d 61  |_ForceRedraw",ma|
00007dd0  69 6e 25 2c 31 2c 79 63  6f 6f 72 64 2d 28 6f 6c  |in%,1,ycoord-(ol|
00007de0  64 73 32 2a 33 36 29 2c  74 6c 65 6e 28 73 74 29  |ds2*36),tlen(st)|
00007df0  2a 31 36 2c 79 63 6f 6f  72 64 0d 2d 96 17 79 63  |*16,ycoord.-..yc|
00007e00  6f 6f 72 64 3d 30 2d 28  73 31 2a 33 36 2b 34 34  |oord=0-(s1*36+44|
00007e10  29 0d 2d a0 42 c8 99 22  57 69 6d 70 5f 46 6f 72  |).-.B.."Wimp_For|
00007e20  63 65 52 65 64 72 61 77  22 2c 6d 61 69 6e 25 2c  |ceRedraw",main%,|
00007e30  31 2c 79 63 6f 6f 72 64  2d 28 73 32 2a 33 36 29  |1,ycoord-(s2*36)|
00007e40  2c 74 6c 65 6e 28 73 74  29 2a 31 36 2c 79 63 6f  |,tlen(st)*16,yco|
00007e50  6f 72 64 0d 2d aa 05 e1  0d 2d b4 25 dd f2 69 6e  |ord.-....-.%..in|
00007e60  64 69 72 28 68 61 6e 64  6c 65 2c 69 63 6f 6e 2c  |dir(handle,icon,|
00007e70  74 65 78 74 24 2c 69 6e  64 69 72 24 29 0d 2d be  |text$,indir$).-.|
00007e80  3b 21 62 6c 6f 63 6b 3d  68 61 6e 64 6c 65 3a 62  |;!block=handle:b|
00007e90  6c 6f 63 6b 21 34 3d 69  63 6f 6e 3a c8 99 22 57  |lock!4=icon:.."W|
00007ea0  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
00007eb0  22 2c 2c 62 6c 6f 63 6b  0d 2d c8 3d 24 28 62 6c  |",,block.-.=$(bl|
00007ec0  6f 63 6b 21 32 38 29 3d  74 65 78 74 24 3a 24 28  |ock!28)=text$:$(|
00007ed0  62 6c 6f 63 6b 21 33 32  29 3d 69 6e 64 69 72 24  |block!32)=indir$|
00007ee0  3a 62 6c 6f 63 6b 21 33  36 3d a9 28 69 6e 64 69  |:block!36=.(indi|
00007ef0  72 24 29 2b 31 0d 2d d2  18 62 6c 6f 63 6b 21 38  |r$)+1.-..block!8|
00007f00  3d 30 3a 62 6c 6f 63 6b  21 31 32 3d 30 0d 2d dc  |=0:block!12=0.-.|
00007f10  20 c8 99 22 57 69 6d 70  5f 53 65 74 49 63 6f 6e  | .."Wimp_SetIcon|
00007f20  53 74 61 74 65 22 2c 2c  62 6c 6f 63 6b 0d 2d e6  |State",,block.-.|
00007f30  05 e1 0d 2d f0 0c dd f2  73 63 72 6f 6c 6c 0d 2d  |...-....scroll.-|
00007f40  fa 28 70 61 67 65 73 69  7a 65 3d a8 28 28 62 6c  |.(pagesize=.((bl|
00007f50  6f 63 6b 21 31 36 2d 62  6c 6f 63 6b 21 38 2d 34  |ock!16-block!8-4|
00007f60  30 29 2f 33 36 29 0d 2e  04 35 e7 20 62 6c 6f 63  |0)/36)...5. bloc|
00007f70  6b 21 33 32 3d 31 20 8c  20 62 6c 6f 63 6b 21 32  |k!32=1 . block!2|
00007f80  30 3d 62 6c 6f 63 6b 21  32 30 2b 28 74 6c 65 6e  |0=block!20+(tlen|
00007f90  28 73 74 29 2a 31 36 29  2f 31 30 0d 2e 0e 36 e7  |(st)*16)/10...6.|
00007fa0  20 62 6c 6f 63 6b 21 33  32 3d 2d 31 20 8c 20 62  | block!32=-1 . b|
00007fb0  6c 6f 63 6b 21 32 30 3d  62 6c 6f 63 6b 21 32 30  |lock!20=block!20|
00007fc0  2d 28 74 6c 65 6e 28 73  74 29 2a 31 36 29 2f 31  |-(tlen(st)*16)/1|
00007fd0  30 0d 2e 18 3c e7 20 62  6c 6f 63 6b 21 33 36 3d  |0...<. block!36=|
00007fe0  31 20 8c 20 74 6f 70 6e  6f 3d a8 28 62 6c 6f 63  |1 . topno=.(bloc|
00007ff0  6b 21 32 34 2f 33 36 29  3a 62 6c 6f 63 6b 21 32  |k!24/36):block!2|
00008000  34 3d 74 6f 70 6e 6f 2a  33 36 2b 33 36 0d 2e 22  |4=topno*36+36.."|
00008010  81 e7 20 62 6c 6f 63 6b  21 33 36 3d 2d 31 20 8c  |.. block!36=-1 .|
00008020  20 79 63 6f 6f 72 64 3d  30 2d 28 62 6c 6f 63 6b  | ycoord=0-(block|
00008030  21 31 36 2d 62 6c 6f 63  6b 21 38 29 2b 62 6c 6f  |!16-block!8)+blo|
00008040  63 6b 21 32 34 3a 62 6f  74 6e 6f 3d a8 28 28 79  |ck!24:botno=.((y|
00008050  63 6f 6f 72 64 2d 34 30  29 2f 33 36 29 2a 2d 31  |coord-40)/36)*-1|
00008060  2d 33 3a 62 6f 74 6e 6f  3d 62 6f 74 6e 6f 2a 33  |-3:botno=botno*3|
00008070  36 2b 33 36 2b 34 30 3a  62 6c 6f 63 6b 21 32 34  |6+36+40:block!24|
00008080  2d 3d 79 63 6f 6f 72 64  2b 62 6f 74 6e 6f 0d 2e  |-=ycoord+botno..|
00008090  2c 34 e7 20 62 6c 6f 63  6b 21 33 32 3d 32 20 8c  |,4. block!32=2 .|
000080a0  20 62 6c 6f 63 6b 21 32  30 3d 62 6c 6f 63 6b 21  | block!20=block!|
000080b0  32 30 2b 28 74 6c 65 6e  28 73 74 29 2a 31 36 29  |20+(tlen(st)*16)|
000080c0  2f 35 0d 2e 36 35 e7 20  62 6c 6f 63 6b 21 33 32  |/5..65. block!32|
000080d0  3d 2d 32 20 8c 20 62 6c  6f 63 6b 21 32 30 3d 62  |=-2 . block!20=b|
000080e0  6c 6f 63 6b 21 32 30 2d  28 74 6c 65 6e 28 73 74  |lock!20-(tlen(st|
000080f0  29 2a 31 36 29 2f 35 0d  2e 40 49 e7 20 62 6c 6f  |)*16)/5..@I. blo|
00008100  63 6b 21 33 36 3d 32 20  8c 20 74 6f 70 6e 6f 3d  |ck!36=2 . topno=|
00008110  a8 28 62 6c 6f 63 6b 21  32 34 2f 33 36 29 2a 2d  |.(block!24/36)*-|
00008120  31 3a 62 6c 6f 63 6b 21  32 34 3d 30 2d 28 74 6f  |1:block!24=0-(to|
00008130  70 6e 6f 2d 70 61 67 65  73 69 7a 65 29 2a 33 36  |pno-pagesize)*36|
00008140  0d 2e 4a 90 e7 20 62 6c  6f 63 6b 21 33 36 3d 2d  |..J.. block!36=-|
00008150  32 20 8c 20 79 63 6f 6f  72 64 3d 28 30 2d 28 62  |2 . ycoord=(0-(b|
00008160  6c 6f 63 6b 21 31 36 2d  62 6c 6f 63 6b 21 38 29  |lock!16-block!8)|
00008170  29 2b 62 6c 6f 63 6b 21  32 34 3a 62 6f 74 6e 6f  |)+block!24:botno|
00008180  3d a8 28 28 79 63 6f 6f  72 64 2d 34 30 29 2f 33  |=.((ycoord-40)/3|
00008190  36 29 2a 2d 31 2d 33 3a  62 6f 74 6e 6f 3d 28 62  |6)*-1-3:botno=(b|
000081a0  6f 74 6e 6f 2b 70 61 67  65 73 69 7a 65 2d 31 29  |otno+pagesize-1)|
000081b0  2a 33 36 2b 33 36 2b 34  30 3a 62 6c 6f 63 6b 21  |*36+36+40:block!|
000081c0  32 34 2d 3d 79 63 6f 6f  72 64 2b 62 6f 74 6e 6f  |24-=ycoord+botno|
000081d0  0d 2e 54 1e c8 99 22 57  69 6d 70 5f 4f 70 65 6e  |..T..."Wimp_Open|
000081e0  57 69 6e 64 6f 77 22 2c  2c 62 6c 6f 63 6b 0d 2e  |Window",,block..|
000081f0  5e 05 e1 0d 2e 68 10 dd  f2 64 65 6c 65 74 65 28  |^....h...delete(|
00008200  6e 6f 29 0d 2e 72 0b 64  6f 6e 65 3d 2d 31 0d 2e  |no)..r.done=-1..|
00008210  7c 0d e7 20 6e 6f 3d 63  74 20 8c 0d 2e 86 20 c8  ||.. no=ct .... .|
00008220  99 22 4f 53 5f 48 65 61  70 22 2c 33 2c 68 65 61  |."OS_Heap",3,hea|
00008230  70 25 2c 74 72 65 65 28  63 74 29 0d 2e 90 29 c8  |p%,tree(ct)...).|
00008240  99 22 4f 53 5f 48 65 61  70 22 2c 31 2c 68 65 61  |."OS_Heap",1,hea|
00008250  70 25 20 b8 20 2c 2c 6c  61 72 67 65 73 74 2c 74  |p% . ,,largest,t|
00008260  66 72 65 65 0d 2e 9a 29  c8 99 22 4f 53 5f 48 65  |free...).."OS_He|
00008270  61 70 22 2c 35 2c 68 65  61 70 25 2c 2c 30 2d 28  |ap",5,heap%,,0-(|
00008280  6c 61 72 67 65 73 74 2d  31 30 32 34 29 0d 2e a4  |largest-1024)...|
00008290  20 68 73 69 7a 65 62 3d  68 73 69 7a 65 62 2d 28  | hsizeb=hsizeb-(|
000082a0  6c 61 72 67 65 73 74 2d  31 30 32 34 29 0d 2e ae  |largest-1024)...|
000082b0  09 63 74 2d 3d 31 0d 2e  b8 0a 64 6f 6e 65 3d 31  |.ct-=1....done=1|
000082c0  0d 2e c2 05 cd 0d 2e cc  18 e7 20 6e 6f 3c 3e 63  |.......... no<>c|
000082d0  74 20 80 20 64 6f 6e 65  3d 2d 31 20 8c 0d 2e d6  |t . done=-1 ....|
000082e0  0f e3 20 6a 3d 6e 6f 20  b8 20 63 74 0d 2e e0 1f  |.. j=no . ct....|
000082f0  c8 99 22 4f 53 5f 48 65  61 70 22 2c 33 2c 68 65  |.."OS_Heap",3,he|
00008300  61 70 25 2c 74 72 65 65  28 6a 29 0d 2e ea 05 ed  |ap%,tree(j).....|
00008310  0d 2e f4 11 e3 20 6a 3d  6e 6f 20 b8 20 63 74 2d  |..... j=no . ct-|
00008320  31 0d 2e fe 2f c8 99 22  4f 53 5f 48 65 61 70 22  |1.../.."OS_Heap"|
00008330  2c 32 2c 68 65 61 70 25  2c 2c 74 73 69 7a 65 28  |,2,heap%,,tsize(|
00008340  6a 2b 31 29 20 b8 20 2c  2c 74 72 65 65 28 6a 29  |j+1) . ,,tree(j)|
00008350  0d 2f 08 1b 20 e3 20 49  3d 30 20 b8 20 74 73 69  |./.. . I=0 . tsi|
00008360  7a 65 28 6a 2b 31 29 20  88 20 34 0d 2f 12 1a 20  |ze(j+1) . 4./.. |
00008370  74 72 65 65 28 6a 29 21  49 3d 74 72 65 65 28 6a  |tree(j)!I=tree(j|
00008380  2b 31 29 21 49 0d 2f 1c  08 20 ed 20 49 0d 2f 26  |+1)!I./.. . I./&|
00008390  2d 74 73 69 7a 65 28 6a  29 3d 74 73 69 7a 65 28  |-tsize(j)=tsize(|
000083a0  6a 2b 31 29 3a 74 63 6f  75 6e 74 28 6a 29 3d 74  |j+1):tcount(j)=t|
000083b0  63 6f 75 6e 74 28 6a 2b  31 29 0d 2f 30 2b 74 6c  |count(j+1)./0+tl|
000083c0  65 6e 28 6a 29 3d 74 6c  65 6e 28 6a 2b 31 29 3a  |en(j)=tlen(j+1):|
000083d0  74 72 6f 6f 74 24 28 6a  29 3d 74 72 6f 6f 74 24  |troot$(j)=troot$|
000083e0  28 6a 2b 31 29 0d 2f 3a  07 ed 20 6a 0d 2f 44 09  |(j+1)./:.. j./D.|
000083f0  63 74 2d 3d 31 0d 2f 4e  29 c8 99 22 4f 53 5f 48  |ct-=1./N).."OS_H|
00008400  65 61 70 22 2c 31 2c 68  65 61 70 25 20 b8 20 2c  |eap",1,heap% . ,|
00008410  2c 6c 61 72 67 65 73 74  2c 74 66 72 65 65 0d 2f  |,largest,tfree./|
00008420  58 29 c8 99 22 4f 53 5f  48 65 61 70 22 2c 35 2c  |X).."OS_Heap",5,|
00008430  68 65 61 70 25 2c 2c 30  2d 28 6c 61 72 67 65 73  |heap%,,0-(larges|
00008440  74 2d 31 30 32 34 29 0d  2f 62 20 68 73 69 7a 65  |t-1024)./b hsize|
00008450  62 3d 68 73 69 7a 65 62  2d 28 6c 61 72 67 65 73  |b=hsizeb-(larges|
00008460  74 2d 31 30 32 34 29 0d  2f 6c 05 cd 0d 2f 76 20  |t-1024)./l.../v |
00008470  c8 99 22 4f 53 5f 52 65  61 64 4d 65 6d 4d 61 70  |.."OS_ReadMemMap|
00008480  49 6e 66 6f 22 20 b8 20  70 61 67 65 0d 2f 80 25  |Info" . page./.%|
00008490  c8 99 22 57 69 6d 70 5f  53 6c 6f 74 53 69 7a 65  |.."Wimp_SlotSize|
000084a0  22 2c 2d 31 2c 2d 31 20  b8 20 63 75 72 72 65 6e  |",-1,-1 . curren|
000084b0  74 0d 2f 8a 14 e7 20 6c  61 72 67 65 73 74 3e 70  |t./... largest>p|
000084c0  61 67 65 20 8c 0d 2f 94  26 61 6d 6f 75 6e 74 3d  |age ../.&amount=|
000084d0  a8 28 28 6c 61 72 67 65  73 74 2d 31 30 32 34 29  |.((largest-1024)|
000084e0  2f 70 61 67 65 29 2a 70  61 67 65 0d 2f 9e 3e e7  |/page)*page./.>.|
000084f0  20 63 75 72 72 65 6e 74  2d 61 6d 6f 75 6e 74 3c  | current-amount<|
00008500  3d 6f 72 69 67 61 70 70  73 69 7a 65 20 8c 20 61  |=origappsize . a|
00008510  6d 6f 75 6e 74 3d 63 75  72 72 65 6e 74 2d 6f 72  |mount=current-or|
00008520  69 67 61 70 70 73 69 7a  65 0d 2f a8 27 c8 99 22  |igappsize./.'.."|
00008530  57 69 6d 70 5f 53 6c 6f  74 53 69 7a 65 22 2c 63  |Wimp_SlotSize",c|
00008540  75 72 72 65 6e 74 2d 61  6d 6f 75 6e 74 2c 2d 31  |urrent-amount,-1|
00008550  0d 2f b2 05 cd 0d 2f bc  19 e7 20 63 74 3d 2d 31  |./..../... ct=-1|
00008560  20 8c 20 f2 63 6c 65 61  72 61 6c 6c 3a e1 0d 2f  | . .clearall:../|
00008570  c6 14 e7 20 73 74 3e 3d  6e 6f 20 8c 20 73 74 2d  |... st>=no . st-|
00008580  3d 31 0d 2f d0 12 e7 20  73 74 3d 2d 31 20 8c 20  |=1./... st=-1 . |
00008590  73 74 3d 30 0d 2f da 1b  f2 69 6e 66 6f 28 66 69  |st=0./...info(fi|
000085a0  6e 66 6f 25 2c 31 2c c3  28 63 74 2b 31 29 29 0d  |nfo%,1,.(ct+1)).|
000085b0  2f e4 23 f2 69 6e 66 6f  28 66 69 6e 66 6f 25 2c  |/.#.info(finfo%,|
000085c0  32 2c c3 28 68 73 69 7a  65 62 2d 74 66 72 65 65  |2,.(hsizeb-tfree|
000085d0  29 29 0d 2f ee 0f e7 20  73 61 76 65 64 3d a3 20  |))./... saved=. |
000085e0  8c 0d 2f f8 19 f2 69 6e  66 6f 28 66 69 6e 66 6f  |../...info(finfo|
000085f0  25 2c 33 2c 22 59 65 73  22 29 0d 30 02 0b 73 61  |%,3,"Yes").0..sa|
00008600  76 65 64 3d b9 0d 30 0c  10 21 69 63 6f 6e 64 3d  |ved=..0..!icond=|
00008610  6d 61 69 6e 25 0d 30 16  21 c8 99 22 57 69 6d 70  |main%.0.!.."Wimp|
00008620  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
00008630  2c 69 63 6f 6e 64 0d 30  20 20 24 28 69 63 6f 6e  |,icond.0  $(icon|
00008640  64 21 37 36 29 3d 24 28  69 63 6f 6e 64 21 37 36  |d!76)=$(icond!76|
00008650  29 2b 22 20 2a 22 0d 30  2a 46 c8 99 22 57 69 6d  |)+" *".0*F.."Wim|
00008660  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 2d  |p_ForceRedraw",-|
00008670  31 2c 62 6c 6f 63 6b 21  34 2c 28 62 6c 6f 63 6b  |1,block!4,(block|
00008680  21 31 36 29 2d 33 32 2c  62 6c 6f 63 6b 21 31 32  |!16)-32,block!12|
00008690  2c 62 6c 6f 63 6b 21 31  36 2b 33 36 0d 30 34 05  |,block!16+36.04.|
000086a0  cd 0d 30 3e 2c 21 62 6c  6f 63 6b 3d 6d 61 69 6e  |..0>,!block=main|
000086b0  25 3a c8 99 22 57 69 6d  70 5f 43 6c 6f 73 65 57  |%:.."Wimp_CloseW|
000086c0  69 6e 64 6f 77 22 2c 2c  62 6c 6f 63 6b 0d 30 48  |indow",,block.0H|
000086d0  0f 61 72 63 6c 69 73 74  65 64 3d a3 0d 30 52 22  |.arclisted=..0R"|
000086e0  f2 6e 65 77 76 69 65 77  3a f2 6f 70 65 6e 77 69  |.newview:.openwi|
000086f0  6e 28 6d 61 69 6e 25 29  3a f2 70 61 6e 65 0d 30  |n(main%):.pane.0|
00008700  5c 05 e1 0d 30 66 0e dd  f2 63 6c 65 61 72 61 6c  |\...0f...clearal|
00008710  6c 0d 30 70 0d e7 20 63  74 3e 2d 31 20 8c 0d 30  |l.0p.. ct>-1 ..0|
00008720  7a 0e e3 20 49 3d 30 20  b8 20 63 74 0d 30 84 1f  |z.. I=0 . ct.0..|
00008730  c8 99 22 4f 53 5f 48 65  61 70 22 2c 33 2c 68 65  |.."OS_Heap",3,he|
00008740  61 70 25 2c 74 72 65 65  28 49 29 0d 30 8e 05 ed  |ap%,tree(I).0...|
00008750  0d 30 98 29 c8 99 22 4f  53 5f 48 65 61 70 22 2c  |.0.).."OS_Heap",|
00008760  31 2c 68 65 61 70 25 20  b8 20 2c 2c 6c 61 72 67  |1,heap% . ,,larg|
00008770  65 73 74 2c 74 66 72 65  65 0d 30 a2 29 c8 99 22  |est,tfree.0.).."|
00008780  4f 53 5f 48 65 61 70 22  2c 35 2c 68 65 61 70 25  |OS_Heap",5,heap%|
00008790  2c 2c 30 2d 28 6c 61 72  67 65 73 74 2d 31 30 32  |,,0-(largest-102|
000087a0  34 29 0d 30 ac 1d c8 99  22 57 69 6d 70 5f 53 6c  |4).0...."Wimp_Sl|
000087b0  6f 74 53 69 7a 65 22 2c  6f 72 69 67 2c 2d 31 0d  |otSize",orig,-1.|
000087c0  30 b6 05 cd 0d 30 c0 29  c8 99 22 4f 53 5f 48 65  |0....0.).."OS_He|
000087d0  61 70 22 2c 31 2c 68 65  61 70 25 20 b8 20 2c 2c  |ap",1,heap% . ,,|
000087e0  6c 61 72 67 65 73 74 2c  74 66 72 65 65 0d 30 ca  |largest,tfree.0.|
000087f0  12 68 73 69 7a 65 62 3d  6c 61 72 67 65 73 74 0d  |.hsizeb=largest.|
00008800  30 d4 09 63 74 3d 2d 31  0d 30 de 2e 21 62 6c 6f  |0..ct=-1.0..!blo|
00008810  63 6b 3d 6d 61 69 6e 25  3a c8 99 22 57 69 6d 70  |ck=main%:.."Wimp|
00008820  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
00008830  2c 62 6c 6f 63 6b 0d 30  e8 1c 24 28 62 6c 6f 63  |,block.0..$(bloc|
00008840  6b 21 37 36 29 3d 22 3c  55 6e 74 69 74 6c 65 64  |k!76)="<Untitled|
00008850  3e 22 0d 30 f2 1f c8 99  22 57 69 6d 70 5f 43 6c  |>".0...."Wimp_Cl|
00008860  6f 73 65 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |oseWindow",,bloc|
00008870  6b 0d 30 fc 1a f2 69 6e  66 6f 28 66 69 6e 66 6f  |k.0...info(finfo|
00008880  25 2c 30 2c 22 4e 6f 6e  65 22 29 0d 31 06 17 f2  |%,0,"None").1...|
00008890  69 6e 66 6f 28 66 69 6e  66 6f 25 2c 31 2c 22 30  |info(finfo%,1,"0|
000088a0  22 29 0d 31 10 17 f2 69  6e 66 6f 28 66 69 6e 66  |").1...info(finf|
000088b0  6f 25 2c 32 2c 22 30 22  29 0d 31 1a 18 f2 69 6e  |o%,2,"0").1...in|
000088c0  66 6f 28 66 69 6e 66 6f  25 2c 33 2c 22 4e 6f 22  |fo(finfo%,3,"No"|
000088d0  29 0d 31 24 0b 73 61 76  65 64 3d a3 0d 31 2e 2b  |).1$.saved=..1.+|
000088e0  21 62 6c 6f 63 6b 3d 6e  65 77 25 3a c8 99 22 57  |!block=new%:.."W|
000088f0  69 6d 70 5f 43 6c 6f 73  65 57 69 6e 64 6f 77 22  |imp_CloseWindow"|
00008900  2c 2c 62 6c 6f 63 6b 0d  31 38 2d 21 62 6c 6f 63  |,,block.18-!bloc|
00008910  6b 3d 74 69 6e 66 6f 25  3a c8 99 22 57 69 6d 70  |k=tinfo%:.."Wimp|
00008920  5f 43 6c 6f 73 65 57 69  6e 64 6f 77 22 2c 2c 62  |_CloseWindow",,b|
00008930  6c 6f 63 6b 0d 31 42 2d  21 62 6c 6f 63 6b 3d 66  |lock.1B-!block=f|
00008940  69 6e 66 6f 25 3a c8 99  22 57 69 6d 70 5f 43 6c  |info%:.."Wimp_Cl|
00008950  6f 73 65 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |oseWindow",,bloc|
00008960  6b 0d 31 4c 2d 21 62 6c  6f 63 6b 3d 69 69 6e 66  |k.1L-!block=iinf|
00008970  6f 25 3a c8 99 22 57 69  6d 70 5f 43 6c 6f 73 65  |o%:.."Wimp_Close|
00008980  57 69 6e 64 6f 77 22 2c  2c 62 6c 6f 63 6b 0d 31  |Window",,block.1|
00008990  56 2b 21 62 6c 6f 63 6b  3d 62 61 72 25 3a c8 99  |V+!block=bar%:..|
000089a0  22 57 69 6d 70 5f 43 6c  6f 73 65 57 69 6e 64 6f  |"Wimp_CloseWindo|
000089b0  77 22 2c 2c 62 6c 6f 63  6b 0d 31 60 2f 21 62 6c  |w",,block.1`/!bl|
000089c0  6f 63 6b 3d 74 6f 6f 6c  62 6f 78 25 3a c8 99 22  |ock=toolbox%:.."|
000089d0  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
000089e0  22 2c 2c 62 6c 6f 63 6b  0d 31 6a 08 73 74 3d 30  |",,block.1j.st=0|
000089f0  0d 31 74 0f 61 72 63 6c  69 73 74 65 64 3d a3 0d  |.1t.arclisted=..|
00008a00  31 7e 05 e1 0d 31 88 12  dd f2 6f 70 65 6e 74 72  |1~...1....opentr|
00008a10  65 65 28 6e 6f 29 0d 31  92 09 73 74 3d 6e 6f 0d  |ee(no).1..st=no.|
00008a20  31 9c 0c f2 6e 65 77 76  69 65 77 0d 31 a6 2c 21  |1...newview.1.,!|
00008a30  62 6c 6f 63 6b 3d 6d 61  69 6e 25 3a c8 99 22 57  |block=main%:.."W|
00008a40  69 6d 70 5f 43 6c 6f 73  65 57 69 6e 64 6f 77 22  |imp_CloseWindow"|
00008a50  2c 2c 62 6c 6f 63 6b 0d  31 b0 19 f2 6f 70 65 6e  |,,block.1...open|
00008a60  77 69 6e 28 6d 61 69 6e  25 29 3a f2 70 61 6e 65  |win(main%):.pane|
00008a70  0d 31 ba 05 e1 0d 31 c4  11 dd f2 6f 70 65 6e 61  |.1....1....opena|
00008a80  72 63 28 6e 6f 29 0d 31  ce 11 75 73 65 24 3d 61  |rc(no).1..use$=a|
00008a90  72 63 24 28 6e 6f 29 0d  31 d8 1a 73 74 72 24 3d  |rc$(no).1..str$=|
00008aa0  c0 75 73 65 24 2c a7 75  73 65 24 2c 22 2c 22 29  |.use$,.use$,",")|
00008ab0  29 0d 31 e2 23 6e 75 6d  62 24 3d c2 75 73 65 24  |).1.#numb$=.use$|
00008ac0  2c a9 28 75 73 65 24 29  2d a7 75 73 65 24 2c 22  |,.(use$)-.use$,"|
00008ad0  2c 22 29 29 0d 31 ec 1e  6f 63 74 24 3d c0 6e 75  |,")).1..oct$=.nu|
00008ae0  6d 62 24 2c a7 6e 75 6d  62 24 2c 22 2c 22 29 2d  |mb$,.numb$,",")-|
00008af0  31 29 0d 31 f6 1d 78 24  3d c2 6e 75 6d 62 24 2c  |1).1..x$=.numb$,|
00008b00  a9 6e 75 6d 62 24 2d a9  6f 63 74 24 2d 31 29 0d  |.numb$-.oct$-1).|
00008b10  32 00 0c 6f 6c 64 73 74  3d 73 74 0d 32 0a 0c 73  |2..oldst=st.2..s|
00008b20  74 3d bb 28 78 24 29 0d  32 14 14 f2 67 6f 74 6f  |t=.(x$).2...goto|
00008b30  28 bb 28 6f 63 74 24 29  2d 31 29 0d 32 1e 05 e1  |(.(oct$)-1).2...|
00008b40  0d 32 28 0f dd f2 67 6f  74 6f 28 69 6e 6f 29 0d  |.2(...goto(ino).|
00008b50  32 32 1c f2 69 6e 66 6f  28 62 61 72 25 2c 30 2c  |22..info(bar%,0,|
00008b60  74 72 6f 6f 74 24 28 73  74 29 29 0d 32 3c 18 74  |troot$(st)).2<.t|
00008b70  70 74 72 3d 74 63 6f 75  6e 74 28 73 74 29 2a 32  |ptr=tcount(st)*2|
00008b80  34 2b 31 0d 32 46 0d 73  69 7a 65 62 24 3d 22 22  |4+1.2F.sizeb$=""|
00008b90  0d 32 50 05 f5 0d 32 5a  22 73 69 7a 65 62 24 3d  |.2P...2Z"sizeb$=|
00008ba0  73 69 7a 65 62 24 2b bd  28 74 72 65 65 28 73 74  |sizeb$+.(tree(st|
00008bb0  29 3f 74 70 74 72 29 0d  32 64 0b 74 70 74 72 2b  |)?tptr).2d.tptr+|
00008bc0  3d 31 0d 32 6e 16 fd 20  74 72 65 65 28 73 74 29  |=1.2n.. tree(st)|
00008bd0  3f 74 70 74 72 3d 31 38  0d 32 78 0b 74 70 74 72  |?tptr=18.2x.tptr|
00008be0  2b 3d 31 0d 32 82 0f 66  69 6e 69 73 68 73 24 3d  |+=1.2..finishs$=|
00008bf0  22 22 0d 32 8c 05 f5 0d  32 96 26 66 69 6e 69 73  |"".2....2.&finis|
00008c00  68 73 24 3d 66 69 6e 69  73 68 73 24 2b bd 28 74  |hs$=finishs$+.(t|
00008c10  72 65 65 28 73 74 29 3f  74 70 74 72 29 0d 32 a0  |ree(st)?tptr).2.|
00008c20  0b 74 70 74 72 2b 3d 31  0d 32 aa 17 fd 20 74 72  |.tptr+=1.2... tr|
00008c30  65 65 28 73 74 29 3f 74  70 74 72 3d 32 35 35 0d  |ee(st)?tptr=255.|
00008c40  32 b4 1e f2 69 6e 66 6f  28 74 69 6e 66 6f 25 2c  |2...info(tinfo%,|
00008c50  30 2c 74 72 6f 6f 74 24  28 73 74 29 29 0d 32 be  |0,troot$(st)).2.|
00008c60  1f f2 69 6e 66 6f 28 74  69 6e 66 6f 25 2c 31 2c  |..info(tinfo%,1,|
00008c70  c3 74 63 6f 75 6e 74 28  73 74 29 29 0d 32 c8 1e  |.tcount(st)).2..|
00008c80  f2 69 6e 66 6f 28 74 69  6e 66 6f 25 2c 32 2c c3  |.info(tinfo%,2,.|
00008c90  74 73 69 7a 65 28 73 74  29 29 0d 32 d2 1a f2 69  |tsize(st)).2...i|
00008ca0  6e 66 6f 28 74 69 6e 66  6f 25 2c 33 2c 73 69 7a  |nfo(tinfo%,3,siz|
00008cb0  65 62 24 29 0d 32 dc 1c  f2 69 6e 66 6f 28 74 69  |eb$).2...info(ti|
00008cc0  6e 66 6f 25 2c 37 2c 66  69 6e 69 73 68 73 24 29  |nfo%,7,finishs$)|
00008cd0  0d 32 e6 28 e7 20 75 70  74 6f 74 3e 2d 31 20 80  |.2.(. uptot>-1 .|
00008ce0  20 75 70 74 6f 74 3c 3e  6f 72 69 67 74 20 8c 20  | uptot<>origt . |
00008cf0  f2 6e 65 77 76 69 65 77  0d 32 f0 1a e7 20 6f 6c  |.newview.2... ol|
00008d00  64 73 74 3c 3e 73 74 20  8c 20 f2 6e 65 77 76 69  |dst<>st . .newvi|
00008d10  65 77 0d 32 fa 0c 6f 6c  64 73 74 3d 2d 31 0d 33  |ew.2..oldst=-1.3|
00008d20  04 2c 21 62 6c 6f 63 6b  3d 6d 61 69 6e 25 3a c8  |.,!block=main%:.|
00008d30  99 22 57 69 6d 70 5f 43  6c 6f 73 65 57 69 6e 64  |."Wimp_CloseWind|
00008d40  6f 77 22 2c 2c 62 6c 6f  63 6b 0d 33 0e 19 f2 6f  |ow",,block.3...o|
00008d50  70 65 6e 77 69 6e 28 6d  61 69 6e 25 29 3a f2 70  |penwin(main%):.p|
00008d60  61 6e 65 0d 33 18 2e 21  62 6c 6f 63 6b 3d 6d 61  |ane.3..!block=ma|
00008d70  69 6e 25 3a c8 99 22 57  69 6d 70 5f 47 65 74 57  |in%:.."Wimp_GetW|
00008d80  69 6e 64 6f 77 49 6e 66  6f 22 2c 2c 62 6c 6f 63  |indowInfo",,bloc|
00008d90  6b 0d 33 22 1b 77 6f 72  6b 78 25 3d 62 6c 6f 63  |k.3".workx%=bloc|
00008da0  6b 21 34 2d 62 6c 6f 63  6b 21 32 30 0d 33 2c 1c  |k!4-block!20.3,.|
00008db0  77 6f 72 6b 79 25 3d 62  6c 6f 63 6b 21 31 36 2d  |worky%=block!16-|
00008dc0  62 6c 6f 63 6b 21 32 34  0d 33 36 1b 79 63 6f 6f  |block!24.36.ycoo|
00008dd0  72 64 3d 30 2d 28 69 74  65 6d 6e 6f 2a 33 36 2b  |rd=0-(itemno*36+|
00008de0  34 34 29 0d 33 40 0e 69  74 65 6d 6e 6f 3d 69 6e  |44).3@.itemno=in|
00008df0  6f 0d 33 4a 21 62 6c 6f  63 6b 21 32 34 3d 30 2d  |o.3J!block!24=0-|
00008e00  28 28 69 74 65 6d 6e 6f  2d 32 29 2a 33 36 2b 34  |((itemno-2)*36+4|
00008e10  34 29 0d 33 54 1e c8 99  22 57 69 6d 70 5f 4f 70  |4).3T..."Wimp_Op|
00008e20  65 6e 57 69 6e 64 6f 77  22 2c 2c 62 6c 6f 63 6b  |enWindow",,block|
00008e30  0d 33 5e 3d c8 99 22 57  69 6d 70 5f 46 6f 72 63  |.3^=.."Wimp_Forc|
00008e40  65 52 65 64 72 61 77 22  2c 6d 61 69 6e 25 2c 31  |eRedraw",main%,1|
00008e50  2c 79 63 6f 6f 72 64 2d  33 32 2c 74 6c 65 6e 28  |,ycoord-32,tlen(|
00008e60  73 74 29 2a 31 36 2c 79  63 6f 6f 72 64 0d 33 68  |st)*16,ycoord.3h|
00008e70  05 e1 0d 33 72 0a dd f2  66 69 6e 64 0d 33 7c 11  |...3r...find.3|.|
00008e80  f2 63 6c 6f 73 65 28 66  69 6e 64 25 29 0d 33 86  |.close(find%).3.|
00008e90  12 f2 63 6c 6f 73 65 28  66 6f 75 6e 64 25 29 0d  |..close(found%).|
00008ea0  33 90 24 e7 20 a4 63 68  65 63 6b 66 6c 61 67 28  |3.$. .checkflag(|
00008eb0  66 69 6e 64 25 2c 31 2c  32 31 29 20 8c 20 6f 70  |find%,1,21) . op|
00008ec0  74 3d 31 0d 33 9a 24 e7  20 a4 63 68 65 63 6b 66  |t=1.3.$. .checkf|
00008ed0  6c 61 67 28 66 69 6e 64  25 2c 36 2c 32 31 29 20  |lag(find%,6,21) |
00008ee0  8c 20 6f 70 74 3d 32 0d  33 a4 24 e7 20 a4 63 68  |. opt=2.3.$. .ch|
00008ef0  65 63 6b 66 6c 61 67 28  66 69 6e 64 25 2c 39 2c  |eckflag(find%,9,|
00008f00  32 31 29 20 8c 20 6f 70  74 3d 33 0d 33 ae 0a 66  |21) . opt=3.3..f|
00008f10  72 6f 6d 3d 30 0d 33 b8  4a e7 20 a4 63 68 65 63  |rom=0.3.J. .chec|
00008f20  6b 66 6c 61 67 28 66 69  6e 64 25 2c 31 37 2c 32  |kflag(find%,17,2|
00008f30  31 29 20 8c 20 73 74 74  72 65 65 3d 73 74 3a 65  |1) . sttree=st:e|
00008f40  6e 64 74 72 65 65 3d 73  74 20 8b 20 73 74 74 72  |ndtree=st . sttr|
00008f50  65 65 3d 30 3a 65 6e 64  74 72 65 65 3d 63 74 0d  |ee=0:endtree=ct.|
00008f60  33 c2 42 e7 20 a4 63 68  65 63 6b 66 6c 61 67 28  |3.B. .checkflag(|
00008f70  66 69 6e 64 25 2c 34 2c  32 31 29 20 80 20 66 72  |find%,4,21) . fr|
00008f80  6f 6d 3e 2d 31 20 8c 20  66 72 6f 6d 3d 69 74 65  |om>-1 . from=ite|
00008f90  6d 6e 6f 3a 73 74 74 72  65 65 3d 69 74 65 6d 73  |mno:sttree=items|
00008fa0  74 0d 33 cc 0c 6f 72 69  67 74 3d 73 74 0d 33 d6  |t.3..origt=st.3.|
00008fb0  0f e7 20 ac 20 66 6f 75  6e 64 20 8c 0d 33 e0 0e  |.. . found ..3..|
00008fc0  6e 6f 6e 65 66 6e 64 3d  2d 31 0d 33 ea 0e 74 6f  |nonefnd=-1.3..to|
00008fd0  74 61 6c 63 6e 74 3d 30  0d 33 f4 18 e3 20 6e 3d  |talcnt=0.3... n=|
00008fe0  73 74 74 72 65 65 20 b8  20 65 6e 64 74 72 65 65  |sttree . endtree|
00008ff0  0d 33 fe 17 74 6f 74 61  6c 63 6e 74 3d 2b 74 63  |.3..totalcnt=+tc|
00009000  6f 75 6e 74 28 6e 29 0d  34 08 07 ed 20 6e 0d 34  |ount(n).4... n.4|
00009010  12 0b 6e 6f 77 6f 6e 3d  30 0d 34 1c 05 cd 0d 34  |..nowon=0.4....4|
00009020  26 0c c8 8e 20 6f 70 74  20 ca 0d 34 30 08 c9 20  |&... opt ..40.. |
00009030  31 3a 0d 34 3a 1b 73 65  61 72 63 68 24 3d 24 a4  |1:.4:.search$=$.|
00009040  69 6e 66 6f 28 66 69 6e  64 25 2c 32 29 0d 34 44  |info(find%,2).4D|
00009050  20 74 65 78 24 3d 73 65  61 72 63 68 24 3a 74 65  | tex$=search$:te|
00009060  78 32 24 3d 22 4e 61 6d  65 20 3a 2d 22 0d 34 4e  |x2$="Name :-".4N|
00009070  1e 73 65 61 72 63 68 24  3d a4 66 75 6c 6c 73 28  |.search$=.fulls(|
00009080  73 65 61 72 63 68 24 2c  31 30 29 0d 34 58 1f 63  |search$,10).4X.c|
00009090  61 73 65 3d a4 63 68 65  63 6b 66 6c 61 67 28 66  |ase=.checkflag(f|
000090a0  69 6e 64 25 2c 33 2c 32  31 29 0d 34 62 25 e7 20  |ind%,3,21).4b%. |
000090b0  ac 20 63 61 73 65 20 8c  20 73 65 61 72 63 68 24  |. case . search$|
000090c0  3d a4 63 61 70 73 28 73  65 61 72 63 68 24 29 0d  |=.caps(search$).|
000090d0  34 6c 34 e7 20 66 6f 75  6e 64 20 80 20 a4 63 68  |4l4. found . .ch|
000090e0  65 63 6b 66 6c 61 67 28  66 69 6e 64 25 2c 31 38  |eckflag(find%,18|
000090f0  2c 32 31 29 20 8c 20 73  74 74 72 65 65 3d 75 70  |,21) . sttree=up|
00009100  74 6f 74 0d 34 76 1d e3  20 6f 6e 74 72 65 65 3d  |tot.4v.. ontree=|
00009110  73 74 74 72 65 65 20 b8  20 65 6e 64 74 72 65 65  |sttree . endtree|
00009120  0d 34 80 21 e7 20 66 6f  75 6e 64 20 8c 20 66 72  |.4.!. found . fr|
00009130  6f 6d 3d 75 70 74 6f 2b  31 3a 66 6f 75 6e 64 3d  |om=upto+1:found=|
00009140  a3 0d 34 8a 0d 73 74 3d  6f 6e 74 72 65 65 0d 34  |..4..st=ontree.4|
00009150  94 0d 6e 3d 66 72 6f 6d  2a 32 34 0d 34 9e 14 c8  |..n=from*24.4...|
00009160  99 22 48 6f 75 72 67 6c  61 73 73 5f 4f 6e 22 0d  |."Hourglass_On".|
00009170  34 a8 19 e3 20 49 3d 66  72 6f 6d 20 b8 20 74 63  |4... I=from . tc|
00009180  6f 75 6e 74 28 73 74 29  0d 34 b2 0d 20 6e 6f 77  |ount(st).4.. now|
00009190  6f 6e 2b 3d 31 0d 34 bc  0a 20 74 24 3d 22 22 0d  |on+=1.4.. t$="".|
000091a0  34 c6 0f 20 e3 20 68 3d  33 20 b8 20 31 32 0d 34  |4.. . h=3 . 12.4|
000091b0  d0 0a 20 69 3d 6e 2b 68  0d 34 da 16 20 74 24 2b  |.. i=n+h.4.. t$+|
000091c0  3d bd 28 74 72 65 65 28  73 74 29 3f 69 29 0d 34  |=.(tree(st)?i).4|
000091d0  e4 08 20 ed 20 68 0d 34  ee 1c 20 e7 20 ac 20 63  |.. . h.4.. . . c|
000091e0  61 73 65 20 8c 20 74 24  3d a4 63 61 70 73 28 74  |ase . t$=.caps(t|
000091f0  24 29 0d 34 f8 5d 20 e7  20 74 24 3d 73 65 61 72  |$).4.] . t$=sear|
00009200  63 68 24 20 8c 20 c8 99  22 48 6f 75 72 67 6c 61  |ch$ . .."Hourgla|
00009210  73 73 5f 53 6d 61 73 68  22 3a 6e 6f 6e 65 66 6e  |ss_Smash":nonefn|
00009220  64 3d 31 3a 75 70 74 6f  3d 49 3a 75 70 74 6f 74  |d=1:upto=I:uptot|
00009230  3d 6f 6e 74 72 65 65 3a  f2 67 6f 74 6f 28 49 29  |=ontree:.goto(I)|
00009240  3a f2 66 6f 75 6e 64 28  49 2c 73 74 29 3a e1 0d  |:.found(I,st):..|
00009250  35 02 0a 20 6e 2b 3d 32  34 0d 35 0c 30 20 c8 99  |5.. n+=24.5.0 ..|
00009260  22 48 6f 75 72 67 6c 61  73 73 5f 50 65 72 63 65  |"Hourglass_Perce|
00009270  6e 74 61 67 65 22 2c 6e  6f 77 6f 6e 2f 74 6f 74  |ntage",nowon/tot|
00009280  61 6c 63 6e 74 2a 31 30  30 0d 35 16 07 ed 20 49  |alcnt*100.5... I|
00009290  0d 35 20 11 66 72 6f 6d  3d 30 3a 75 70 74 6f 3d  |.5 .from=0:upto=|
000092a0  30 0d 35 2a 0c ed 20 6f  6e 74 72 65 65 0d 35 34  |0.5*.. ontree.54|
000092b0  17 c8 99 22 48 6f 75 72  67 6c 61 73 73 5f 53 6d  |..."Hourglass_Sm|
000092c0  61 73 68 22 0d 35 3e 05  cd 0d 35 48 08 c9 20 32  |ash".5>...5H.. 2|
000092d0  3a 0d 35 52 1b 53 65 61  72 63 68 24 3d 24 a4 69  |:.5R.Search$=$.i|
000092e0  6e 66 6f 28 66 69 6e 64  25 2c 37 29 0d 35 5c 17  |nfo(find%,7).5\.|
000092f0  e7 20 c0 53 65 61 72 63  68 24 2c 31 29 3d 22 26  |. .Search$,1)="&|
00009300  22 20 8c 0d 35 66 13 73  65 61 72 63 68 24 3d 53  |" ..5f.search$=S|
00009310  65 61 72 63 68 24 0d 35  70 22 73 65 61 72 63 68  |earch$.5p"search|
00009320  24 3d c2 73 65 61 72 63  68 24 2c a9 28 73 65 61  |$=.search$,.(sea|
00009330  72 63 68 24 29 2d 31 29  0d 35 7a 26 e7 20 a9 73  |rch$)-1).5z&. .s|
00009340  65 61 72 63 68 24 3e 33  20 8c 20 73 65 61 72 63  |earch$>3 . searc|
00009350  68 24 3d c0 73 65 61 72  63 68 24 2c 33 29 0d 35  |h$=.search$,3).5|
00009360  84 2c e7 20 a9 73 65 61  72 63 68 24 3c 33 20 8c  |.,. .search$<3 .|
00009370  20 73 65 61 72 63 68 24  3d a4 6c 6f 6e 67 73 28  | search$=.longs(|
00009380  73 65 61 72 63 68 24 2c  33 29 0d 35 8e 24 74 65  |search$,3).5.$te|
00009390  78 24 3d 22 26 22 2b 73  65 61 72 63 68 24 3a 74  |x$="&"+search$:t|
000093a0  65 78 32 24 3d 22 54 79  70 65 20 3a 2d 22 0d 35  |ex2$="Type :-".5|
000093b0  98 05 cd 0d 35 a2 18 e7  20 c0 53 65 61 72 63 68  |....5... .Search|
000093c0  24 2c 31 29 3c 3e 22 26  22 20 8c 0d 35 ac 13 73  |$,1)<>"&" ..5..s|
000093d0  65 61 72 63 68 24 3d 53  65 61 72 63 68 24 0d 35  |earch$=Search$.5|
000093e0  b6 2f c8 99 22 58 4f 53  5f 46 53 43 6f 6e 74 72  |./.."XOS_FSContr|
000093f0  6f 6c 22 2c 33 31 2c 73  65 61 72 63 68 24 20 b8  |ol",31,search$ .|
00009400  20 72 30 2c 2c 66 69 6c  65 74 79 70 65 0d 35 c0  | r0,,filetype.5.|
00009410  51 e7 20 72 30 3c 3e 33  31 20 8c 20 f2 6d 65 73  |Q. r0<>31 . .mes|
00009420  73 28 22 46 69 6c 65 20  74 79 70 65 20 6e 6f 74  |s("File type not|
00009430  20 72 65 63 6f 67 6e 69  73 65 64 3b 20 54 72 79  | recognised; Try|
00009440  20 65 6e 74 65 72 69 6e  67 20 66 69 6c 65 20 74  | entering file t|
00009450  79 70 65 20 6e 75 6d 62  65 72 22 29 3a e1 0d 35  |ype number"):..5|
00009460  ca 16 73 65 61 72 63 68  24 3d c3 7e 66 69 6c 65  |..search$=.~file|
00009470  74 79 70 65 0d 35 d4 2c  e7 20 a9 73 65 61 72 63  |type.5.,. .searc|
00009480  68 24 3c 33 20 8c 20 73  65 61 72 63 68 24 3d a4  |h$<3 . search$=.|
00009490  6c 6f 6e 67 73 28 73 65  61 72 63 68 24 2c 33 29  |longs(search$,3)|
000094a0  0d 35 de 24 74 65 78 24  3d 22 26 22 2b 73 65 61  |.5.$tex$="&"+sea|
000094b0  72 63 68 24 3a 74 65 78  32 24 3d 22 54 79 70 65  |rch$:tex2$="Type|
000094c0  20 3a 2d 22 0d 35 e8 05  cd 0d 35 f2 34 e7 20 66  | :-".5....5.4. f|
000094d0  6f 75 6e 64 20 80 20 a4  63 68 65 63 6b 66 6c 61  |ound . .checkfla|
000094e0  67 28 66 69 6e 64 25 2c  31 38 2c 32 31 29 20 8c  |g(find%,18,21) .|
000094f0  20 73 74 74 72 65 65 3d  75 70 74 6f 74 0d 35 fc  | sttree=uptot.5.|
00009500  1e 20 e3 20 6f 6e 74 72  65 65 3d 73 74 74 72 65  |. . ontree=sttre|
00009510  65 20 b8 20 65 6e 64 74  72 65 65 0d 36 06 22 20  |e . endtree.6." |
00009520  e7 20 66 6f 75 6e 64 20  8c 20 66 72 6f 6d 3d 75  |. found . from=u|
00009530  70 74 6f 2b 31 3a 66 6f  75 6e 64 3d a3 0d 36 10  |pto+1:found=..6.|
00009540  0e 20 73 74 3d 6f 6e 74  72 65 65 0d 36 1a 0e 20  |. st=ontree.6.. |
00009550  6e 3d 66 72 6f 6d 2a 32  34 0d 36 24 15 20 c8 99  |n=from*24.6$. ..|
00009560  22 48 6f 75 72 67 6c 61  73 73 5f 4f 6e 22 0d 36  |"Hourglass_On".6|
00009570  2e 1a 20 e3 20 49 3d 66  72 6f 6d 20 b8 20 74 63  |.. . I=from . tc|
00009580  6f 75 6e 74 28 73 74 29  0d 36 38 0e 20 20 6e 6f  |ount(st).68.  no|
00009590  77 6f 6e 2b 3d 31 0d 36  42 0b 20 20 74 24 3d 22  |won+=1.6B.  t$="|
000095a0  22 0d 36 4c 11 20 20 e3  20 68 3d 32 31 20 b8 20  |".6L.  . h=21 . |
000095b0  32 33 0d 36 56 0b 20 20  69 3d 6e 2b 68 0d 36 60  |23.6V.  i=n+h.6`|
000095c0  17 20 20 74 24 2b 3d bd  28 74 72 65 65 28 73 74  |.  t$+=.(tree(st|
000095d0  29 3f 69 29 0d 36 6a 09  20 20 ed 20 68 0d 36 74  |)?i).6j.  . h.6t|
000095e0  5e 20 20 e7 20 74 24 3d  73 65 61 72 63 68 24 20  |^  . t$=search$ |
000095f0  8c 20 c8 99 22 48 6f 75  72 67 6c 61 73 73 5f 53  |. .."Hourglass_S|
00009600  6d 61 73 68 22 3a 6e 6f  6e 65 66 6e 64 3d 31 3a  |mash":nonefnd=1:|
00009610  75 70 74 6f 3d 49 3a 75  70 74 6f 74 3d 6f 6e 74  |upto=I:uptot=ont|
00009620  72 65 65 3a f2 67 6f 74  6f 28 49 29 3a f2 66 6f  |ree:.goto(I):.fo|
00009630  75 6e 64 28 49 2c 73 74  29 3a e1 0d 36 7e 0b 20  |und(I,st):..6~. |
00009640  20 6e 2b 3d 32 34 0d 36  88 31 20 20 c8 99 22 48  | n+=24.6.1  .."H|
00009650  6f 75 72 67 6c 61 73 73  5f 50 65 72 63 65 6e 74  |ourglass_Percent|
00009660  61 67 65 22 2c 6e 6f 77  6f 6e 2f 74 6f 74 61 6c  |age",nowon/total|
00009670  63 6e 74 2a 31 30 30 0d  36 92 08 20 ed 20 49 0d  |cnt*100.6.. . I.|
00009680  36 9c 11 66 72 6f 6d 3d  30 3a 75 70 74 6f 3d 30  |6..from=0:upto=0|
00009690  0d 36 a6 0c ed 20 6f 6e  74 72 65 65 0d 36 b0 17  |.6... ontree.6..|
000096a0  c8 99 22 48 6f 75 72 67  6c 61 73 73 5f 53 6d 61  |.."Hourglass_Sma|
000096b0  73 68 22 0d 36 ba 05 cd  0d 36 c4 08 c9 20 33 3a  |sh".6....6... 3:|
000096c0  0d 36 ce 1c 73 65 61 72  63 68 24 3d 24 a4 69 6e  |.6..search$=$.in|
000096d0  66 6f 28 66 69 6e 64 25  2c 31 31 29 0d 36 d8 1d  |fo(find%,11).6..|
000096e0  73 65 61 72 63 68 32 24  3d 24 a4 69 6e 66 6f 28  |search2$=$.info(|
000096f0  66 69 6e 64 25 2c 31 32  29 0d 36 e2 1a 73 65 61  |find%,12).6..sea|
00009700  72 63 68 3d bb 28 73 65  61 72 63 68 24 29 2a 31  |rch=.(search$)*1|
00009710  30 30 30 0d 36 ec 1c 73  65 61 72 63 68 32 3d bb  |000.6..search2=.|
00009720  28 73 65 61 72 63 68 32  24 29 2a 31 30 30 30 0d  |(search2$)*1000.|
00009730  36 f6 2e 74 65 78 24 3d  c3 28 28 73 65 61 72 63  |6..tex$=.((searc|
00009740  68 2b 73 65 61 72 63 68  32 29 2f 32 29 3a 74 65  |h+search2)/2):te|
00009750  78 32 24 3d 22 53 69 7a  65 20 3a 2d 22 0d 37 00  |x2$="Size :-".7.|
00009760  1e 73 65 61 72 63 68 24  3d a4 66 75 6c 6c 73 28  |.search$=.fulls(|
00009770  73 65 61 72 63 68 24 2c  31 30 29 0d 37 0a 34 e7  |search$,10).7.4.|
00009780  20 66 6f 75 6e 64 20 80  20 a4 63 68 65 63 6b 66  | found . .checkf|
00009790  6c 61 67 28 66 69 6e 64  25 2c 31 38 2c 32 31 29  |lag(find%,18,21)|
000097a0  20 8c 20 73 74 74 72 65  65 3d 75 70 74 6f 74 0d  | . sttree=uptot.|
000097b0  37 14 1d e3 20 6f 6e 74  72 65 65 3d 73 74 74 72  |7... ontree=sttr|
000097c0  65 65 20 b8 20 65 6e 64  74 72 65 65 0d 37 1e 21  |ee . endtree.7.!|
000097d0  e7 20 66 6f 75 6e 64 20  8c 20 66 72 6f 6d 3d 75  |. found . from=u|
000097e0  70 74 6f 2b 31 3a 66 6f  75 6e 64 3d a3 0d 37 28  |pto+1:found=..7(|
000097f0  0d 73 74 3d 6f 6e 74 72  65 65 0d 37 32 0d 6e 3d  |.st=ontree.72.n=|
00009800  66 72 6f 6d 2a 32 34 0d  37 3c 14 c8 99 22 48 6f  |from*24.7<..."Ho|
00009810  75 72 67 6c 61 73 73 5f  4f 6e 22 0d 37 46 19 e3  |urglass_On".7F..|
00009820  20 49 3d 66 72 6f 6d 20  b8 20 74 63 6f 75 6e 74  | I=from . tcount|
00009830  28 73 74 29 0d 37 50 0d  20 6e 6f 77 6f 6e 2b 3d  |(st).7P. nowon+=|
00009840  31 0d 37 5a 0a 20 74 24  3d 22 22 0d 37 64 10 20  |1.7Z. t$="".7d. |
00009850  e3 20 68 3d 31 34 20 b8  20 32 30 0d 37 6e 0a 20  |. h=14 . 20.7n. |
00009860  69 3d 6e 2b 68 0d 37 78  16 20 74 24 2b 3d bd 28  |i=n+h.7x. t$+=.(|
00009870  74 72 65 65 28 73 74 29  3f 69 29 0d 37 82 08 20  |tree(st)?i).7.. |
00009880  ed 20 68 0d 37 8c 0c 20  74 3d bb 28 74 24 29 0d  |. h.7.. t=.(t$).|
00009890  37 96 67 20 e7 20 74 3e  73 65 61 72 63 68 20 80  |7.g . t>search .|
000098a0  20 74 3c 73 65 61 72 63  68 32 20 8c 20 c8 99 22  | t<search2 . .."|
000098b0  48 6f 75 72 67 6c 61 73  73 5f 53 6d 61 73 68 22  |Hourglass_Smash"|
000098c0  3a 6e 6f 6e 65 66 6e 64  3d 31 3a 75 70 74 6f 3d  |:nonefnd=1:upto=|
000098d0  49 3a 75 70 74 6f 74 3d  6f 6e 74 72 65 65 3a f2  |I:uptot=ontree:.|
000098e0  67 6f 74 6f 28 49 29 3a  f2 66 6f 75 6e 64 28 49  |goto(I):.found(I|
000098f0  2c 73 74 29 3a e1 0d 37  a0 0a 20 6e 2b 3d 32 34  |,st):..7.. n+=24|
00009900  0d 37 aa 30 20 c8 99 22  48 6f 75 72 67 6c 61 73  |.7.0 .."Hourglas|
00009910  73 5f 50 65 72 63 65 6e  74 61 67 65 22 2c 6e 6f  |s_Percentage",no|
00009920  77 6f 6e 2f 74 6f 74 61  6c 63 6e 74 2a 31 30 30  |won/totalcnt*100|
00009930  0d 37 b4 07 ed 20 49 0d  37 be 11 66 72 6f 6d 3d  |.7... I.7..from=|
00009940  30 3a 75 70 74 6f 3d 30  0d 37 c8 0c ed 20 6f 6e  |0:upto=0.7... on|
00009950  74 72 65 65 0d 37 d2 17  c8 99 22 48 6f 75 72 67  |tree.7...."Hourg|
00009960  6c 61 73 73 5f 53 6d 61  73 68 22 0d 37 dc 05 cd  |lass_Smash".7...|
00009970  0d 37 e6 05 cb 0d 37 f0  0c 73 74 3d 6f 72 69 67  |.7....7..st=orig|
00009980  74 0d 37 fa 19 f2 69 6e  66 6f 28 6e 6f 74 66 6e  |t.7...info(notfn|
00009990  64 25 2c 31 2c 74 65 78  24 29 0d 38 04 1a f2 69  |d%,1,tex$).8...i|
000099a0  6e 66 6f 28 6e 6f 74 66  6e 64 25 2c 32 2c 74 65  |nfo(notfnd%,2,te|
000099b0  78 32 24 29 0d 38 0e 15  f2 6f 70 65 6e 77 69 6e  |x2$).8...openwin|
000099c0  28 6e 6f 74 66 6e 64 25  29 0d 38 18 0b 66 6f 75  |(notfnd%).8..fou|
000099d0  6e 64 3d a3 0d 38 22 05  e1 0d 38 2c 16 dd f2 66  |nd=..8"...8,...f|
000099e0  6f 75 6e 64 28 69 74 65  6d 2c 74 72 6e 6f 29 0d  |ound(item,trno).|
000099f0  38 36 0d 6e 3d 69 74 65  6d 2a 32 34 0d 38 40 09  |86.n=item*24.8@.|
00009a00  74 24 3d 22 22 0d 38 4a  2a e3 20 68 3d 33 20 b8  |t$="".8J*. h=3 .|
00009a10  20 31 32 3a 69 3d 6e 2b  68 3a 74 24 2b 3d bd 28  | 12:i=n+h:t$+=.(|
00009a20  74 72 65 65 28 73 74 29  3f 69 29 3a ed 20 68 0d  |tree(st)?i):. h.|
00009a30  38 54 16 f2 69 6e 66 6f  28 66 6f 75 6e 64 25 2c  |8T..info(found%,|
00009a40  33 2c 74 24 29 0d 38 5e  09 74 24 3d 22 22 0d 38  |3,t$).8^.t$="".8|
00009a50  68 34 e3 20 68 3d 31 34  20 b8 20 32 30 3a 69 3d  |h4. h=14 . 20:i=|
00009a60  6e 2b 68 3a 74 24 2b 3d  bd 28 74 72 65 65 28 73  |n+h:t$+=.(tree(s|
00009a70  74 29 3f 69 29 3a ed 20  68 3a 73 69 7a 65 24 3d  |t)?i):. h:size$=|
00009a80  74 24 0d 38 72 09 74 24  3d 22 22 0d 38 7c 2b e3  |t$.8r.t$="".8|+.|
00009a90  20 68 3d 32 31 20 b8 20  32 33 3a 69 3d 6e 2b 68  | h=21 . 23:i=n+h|
00009aa0  3a 74 24 2b 3d bd 28 74  72 65 65 28 73 74 29 3f  |:t$+=.(tree(st)?|
00009ab0  69 29 3a ed 20 68 0d 38  86 1e 74 65 24 3d 22 26  |i):. h.8..te$="&|
00009ac0  22 2b 74 24 2b 22 20 20  20 20 20 28 22 2b 74 24  |"+t$+"     ("+t$|
00009ad0  2b 22 29 22 0d 38 90 0b  74 62 6c 6b 3d 74 74 0d  |+")".8..tblk=tt.|
00009ae0  38 9a 36 c8 99 22 58 4f  53 5f 52 65 61 64 56 61  |8.6.."XOS_ReadVa|
00009af0  72 56 61 6c 22 2c 22 46  69 6c 65 24 54 79 70 65  |rVal","File$Type|
00009b00  5f 22 2b 74 24 2c 74 62  6c 6b 2c 35 31 32 20 b8  |_"+t$,tblk,512 .|
00009b10  20 2c 2c 62 72 0d 38 a4  0d e7 20 62 72 3c 3e 30  | ,,br.8... br<>0|
00009b20  20 8c 0d 38 ae 0c 74 79  70 65 24 3d 22 22 0d 38  | ..8..type$="".8|
00009b30  b8 10 e3 20 73 3d 30 20  b8 20 62 72 2d 31 0d 38  |... s=0 . br-1.8|
00009b40  c2 12 74 79 70 65 24 2b  3d bd 74 62 6c 6b 3f 73  |..type$+=.tblk?s|
00009b50  0d 38 cc 07 ed 20 73 0d  38 d6 12 e7 20 a9 28 74  |.8... s.8... .(t|
00009b60  79 70 65 24 29 3c 38 20  8c 0d 38 e0 05 f5 0d 38  |ype$)<8 ..8....8|
00009b70  ea 13 74 79 70 65 24 3d  74 79 70 65 24 2b 22 20  |..type$=type$+" |
00009b80  22 0d 38 f4 10 fd 20 a9  28 74 79 70 65 24 29 3d  |".8... .(type$)=|
00009b90  38 0d 38 fe 05 cd 0d 39  08 19 74 65 24 3d 74 79  |8.8....9..te$=ty|
00009ba0  70 65 24 2b 22 20 28 22  2b 74 24 2b 22 29 22 0d  |pe$+" ("+t$+")".|
00009bb0  39 12 05 cd 0d 39 1c 13  73 74 24 3d 22 73 66 69  |9....9..st$="sfi|
00009bc0  6c 65 5f 22 2b 74 24 0d  39 26 30 e7 20 74 24 3d  |le_"+t$.9&0. t$=|
00009bd0  22 41 50 50 22 20 8c 20  74 65 24 3d 22 41 70 70  |"APP" . te$="App|
00009be0  6c 69 63 61 74 69 6f 6e  20 20 20 22 3a 73 74 24  |lication   ":st$|
00009bf0  3d 22 73 61 70 70 22 0d  39 30 30 e7 20 74 24 3d  |="sapp".900. t$=|
00009c00  22 44 49 52 22 20 8c 20  74 65 24 3d 22 44 69 72  |"DIR" . te$="Dir|
00009c10  65 63 74 6f 72 79 20 20  20 20 20 22 3a 73 74 24  |ectory     ":st$|
00009c20  3d 22 73 64 69 72 22 0d  39 3a 21 f2 69 6e 64 69  |="sdir".9:!.indi|
00009c30  72 28 66 6f 75 6e 64 25  2c 31 2c 22 22 2c 22 62  |r(found%,1,"","b|
00009c40  30 3b 22 2b 73 74 24 29  0d 39 44 43 e7 20 6f 70  |0;"+st$).9DC. op|
00009c50  74 3d 31 20 84 20 6f 70  74 3d 32 20 f2 69 6e 66  |t=1 . opt=2 .inf|
00009c60  6f 28 66 6f 75 6e 64 25  2c 32 2c 22 54 79 70 65  |o(found%,2,"Type|
00009c70  22 29 3a f2 69 6e 66 6f  28 66 6f 75 6e 64 25 2c  |"):.info(found%,|
00009c80  34 2c 74 65 24 29 3a f4  74 65 24 0d 39 4e 38 e7  |4,te$):.te$.9N8.|
00009c90  20 6f 70 74 3d 33 20 f2  69 6e 66 6f 28 66 6f 75  | opt=3 .info(fou|
00009ca0  6e 64 25 2c 32 2c 22 53  69 7a 65 22 29 3a f2 69  |nd%,2,"Size"):.i|
00009cb0  6e 66 6f 28 66 6f 75 6e  64 25 2c 34 2c 73 69 7a  |nfo(found%,4,siz|
00009cc0  65 24 29 0d 39 58 14 f2  6f 70 65 6e 77 69 6e 28  |e$).9X..openwin(|
00009cd0  66 6f 75 6e 64 25 29 0d  39 62 0b 66 6f 75 6e 64  |found%).9b.found|
00009ce0  3d b9 0d 39 6c 12 f2 70  75 74 69 6e 66 6f 28 69  |=..9l..putinfo(i|
00009cf0  74 65 6d 29 0d 39 76 05  e1 0d 39 80 17 dd a4 68  |tem).9v...9....h|
00009d00  65 78 74 6f 64 65 63 28  73 74 72 69 6e 67 24 29  |extodec(string$)|
00009d10  0d 39 8a 0b 74 6f 74 61  6c 3d 30 0d 39 94 13 73  |.9..total=0.9..s|
00009d20  74 72 6c 65 6e 3d a9 73  74 72 69 6e 67 24 0d 39  |trlen=.string$.9|
00009d30  9e 19 e3 20 49 3d 73 74  72 6c 65 6e 2d 31 20 b8  |... I=strlen-1 .|
00009d40  20 30 20 88 20 2d 31 0d  39 a8 15 6e 65 78 74 24  | 0 . -1.9..next$|
00009d50  3d c0 73 74 72 69 6e 67  24 2c 31 29 0d 39 b2 0a  |=.string$,1).9..|
00009d60  76 61 6c 3d 2d 31 0d 39  bc 17 e7 20 6e 65 78 74  |val=-1.9... next|
00009d70  24 3d 22 30 22 20 8c 20  76 61 6c 3d 30 0d 39 c6  |$="0" . val=0.9.|
00009d80  17 e7 20 6e 65 78 74 24  3d 22 31 22 20 8c 20 76  |.. next$="1" . v|
00009d90  61 6c 3d 31 0d 39 d0 17  e7 20 6e 65 78 74 24 3d  |al=1.9... next$=|
00009da0  22 32 22 20 8c 20 76 61  6c 3d 32 0d 39 da 17 e7  |"2" . val=2.9...|
00009db0  20 6e 65 78 74 24 3d 22  33 22 20 8c 20 76 61 6c  | next$="3" . val|
00009dc0  3d 33 0d 39 e4 17 e7 20  6e 65 78 74 24 3d 22 34  |=3.9... next$="4|
00009dd0  22 20 8c 20 76 61 6c 3d  34 0d 39 ee 17 e7 20 6e  |" . val=4.9... n|
00009de0  65 78 74 24 3d 22 35 22  20 8c 20 76 61 6c 3d 35  |ext$="5" . val=5|
00009df0  0d 39 f8 17 e7 20 6e 65  78 74 24 3d 22 36 22 20  |.9... next$="6" |
00009e00  8c 20 76 61 6c 3d 36 0d  3a 02 17 e7 20 6e 65 78  |. val=6.:... nex|
00009e10  74 24 3d 22 37 22 20 8c  20 76 61 6c 3d 37 0d 3a  |t$="7" . val=7.:|
00009e20  0c 17 e7 20 6e 65 78 74  24 3d 22 38 22 20 8c 20  |... next$="8" . |
00009e30  76 61 6c 3d 38 0d 3a 16  17 e7 20 6e 65 78 74 24  |val=8.:... next$|
00009e40  3d 22 39 22 20 8c 20 76  61 6c 3d 39 0d 3a 20 24  |="9" . val=9.: $|
00009e50  e7 20 6e 65 78 74 24 3d  22 41 22 20 84 20 6e 65  |. next$="A" . ne|
00009e60  78 74 24 3d 22 61 22 20  8c 20 76 61 6c 3d 31 30  |xt$="a" . val=10|
00009e70  0d 3a 2a 24 e7 20 6e 65  78 74 24 3d 22 42 22 20  |.:*$. next$="B" |
00009e80  84 20 6e 65 78 74 24 3d  22 62 22 20 8c 20 76 61  |. next$="b" . va|
00009e90  6c 3d 31 31 0d 3a 34 24  e7 20 6e 65 78 74 24 3d  |l=11.:4$. next$=|
00009ea0  22 43 22 20 84 20 6e 65  78 74 24 3d 22 63 22 20  |"C" . next$="c" |
00009eb0  8c 20 76 61 6c 3d 31 32  0d 3a 3e 24 e7 20 6e 65  |. val=12.:>$. ne|
00009ec0  78 74 24 3d 22 44 22 20  84 20 6e 65 78 74 24 3d  |xt$="D" . next$=|
00009ed0  22 64 22 20 8c 20 76 61  6c 3d 31 33 0d 3a 48 24  |"d" . val=13.:H$|
00009ee0  e7 20 6e 65 78 74 24 3d  22 45 22 20 84 20 6e 65  |. next$="E" . ne|
00009ef0  78 74 24 3d 22 65 22 20  8c 20 76 61 6c 3d 31 34  |xt$="e" . val=14|
00009f00  0d 3a 52 24 e7 20 6e 65  78 74 24 3d 22 46 22 20  |.:R$. next$="F" |
00009f10  84 20 6e 65 78 74 24 3d  22 66 22 20 8c 20 76 61  |. next$="f" . va|
00009f20  6c 3d 31 35 0d 3a 5c 14  e7 20 76 61 6c 3d 2d 31  |l=15.:\.. val=-1|
00009f30  20 8c 20 76 61 6c 3d 30  0d 3a 66 13 74 6f 74 61  | . val=0.:f.tota|
00009f40  6c 2b 3d 76 61 6c 2a 31  36 5e 49 0d 3a 70 22 73  |l+=val*16^I.:p"s|
00009f50  74 72 69 6e 67 24 3d c2  73 74 72 69 6e 67 24 2c  |tring$=.string$,|
00009f60  a9 28 73 74 72 69 6e 67  24 29 2d 31 29 0d 3a 7a  |.(string$)-1).:z|
00009f70  05 ed 0d 3a 84 0a 3d 74  6f 74 61 6c 0d ff        |...:..=total..|
00009f7e