Home » Archimedes archive » Archimedes World » AW-1994-04-Disc1.adf » Disk1Apr94 » !AWApr94/Goodies/SplitCopy/!SplitCopy/Library

!AWApr94/Goodies/SplitCopy/!SplitCopy/Library

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 » Archimedes World » AW-1994-04-Disc1.adf » Disk1Apr94
Filename: !AWApr94/Goodies/SplitCopy/!SplitCopy/Library
Read OK:
File size: 3185 bytes
Load address: 0000
Exec address: 0000
File contents
   10 REM>Library
   20 REM
   30 REM This is a library of procedures for desktop program.
   40 REM
   50 :
   60 REM --------------------------- Quit Program -------------------------------
   70 :
   80 DEF PROCFinish
   90 OSCLI"SHUT"
  100 SYS "Hourglass_Smash"
  110 SYS "Wimp_CloseDown":END
  120 ENDPROC
  130 :
  140 REM --------------------------- Load In Sprites ----------------------------
  150 :
  160 DEF PROCIcon_Bar_Sprite(SPName$,SpriteFile$,LorR,Text_NoText,Text$)
  170 handle%=OPENIN(SpriteFile$):len%=EXT#handle%+16:CLOSE#handle%
  180 DIM sprites% len%
  190 !sprites%=len%:sprites%!8=1
  200 SYS "OS_SpriteOp",&109,sprites%
  210 SYS "OS_SpriteOp",&10A,sprites%,SpriteFile$
  220 DIM IconText% 50
  230 IF Text_NoText=0 THEN
  240   PROCIconBar(LorR,SPName$)
  250 ELSE
  260   iconbar%=FNIconBarText(LorR,SPName$,1)
  270   $IconText%=Text$:q%!0=-1
  280   q%!4=iconbar%:q%!8=0:q%!12=0:SYS "Wimp_SetIconState",,q%
  290 ENDIF
  300 IconSprites%=1
  310 ENDPROC
  320 :
  330 DEF FNIconBarText(LorR,spname$,spritearea%)
  340 LOCAL ic%
  350 !q%=LorR:q%!4=0:q%!8=-16:q%!12=96:q%!16=95:q%!20=&1701210B
  360 DIM isbarsp% 20
  370 $isbarsp%="s"+spname$:q%!24=IconText%:q%!28=isbarsp%:q%!32=3
  380 SYS "Wimp_CreateIcon",,q% TO ic%
  390 =ic%
  400 :
  410 DEF PROCIconBar(LorR,Sprite$)
  420 !q%=LorR:q%!4=0:q%!8=0:q%!12=68:q%!16=68
  430 q%!20=&2002:$(q%+24)=Sprite$:SYS "Wimp_CreateIcon",,q% TO iconbar%
  440 ENDPROC
  450 :
  460 REM --------------------------- Load In Templates --------------------------
  470 :
  480 DEF FNtemplate(id$)
  490 LOCAL handle,pos
  500 maxws%=&750
  510 DIM ws% maxws%
  520 SYS "Wimp_LoadTemplate",,q%,ws%,ws%+maxws%,-1,id$,0 TO ,,curws%,,,,pos
  530 IF pos=0 THEN ERROR 1,"Template '"+id$+"' not found"
  540 SYS "Wimp_CreateWindow",,q% TO handle
  550 =handle
  560 :
  570 REM --------------------------- Window Controlers -------------------------
  580 :
  590 DEF PROCOpen_Window(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%)
  600 IF handle%=-1 THEN ENDPROC
  610 q%!0=handle%:q%!28=bhandle%
  620 q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%
  630 q%!20=scx%:q%!24=scy%
  640 SYS "Wimp_OpenWindow",,q%
  650 FORS=1TOmmax
  660  IF handle%=Main%(S) THEN mopen%(S)=TRUE
  670 NEXT S
  680 ENDPROC
  690 :
  700 DEF PROCClose_Window(chandle%)
  710 !q%=chandle%
  720 SYS "Wimp_CloseWindow",,q%
  730 FORS=1TOmmax
  740  IF chandle%=Main%(S) THEN mopen%(S)=FALSE
  750 NEXT S
  760 MOUSE X,Y,Z
  770 FORS=1TOmmax
  780 IF chandle%=Main%(S) AND Z=1 AND S>1 AND mopen%(S-1)=FALSE THEN PROCOpen_Window(Main%(S-1),0+(I*20),45,1278,805,q%!20,q%!24,-1):S=mmax
  790 NEXT S
  800 ENDPROC
  810 :
  820 DEF PROCdeleteicon(dhandle%,icon%)
  830 !q%=dhandle%:q%!4=icon%:SYS "Wimp_GetIconState",,q%
  840 SYS "Wimp_DeleteIcon",,q%
  850 SYS "Wimp_ForceRedraw",!q%,q%!8,q%!12,q%!16,q%!20
  860 ENDPROC
  870 :
  880 DEFFNicon_newsprite(handle%,icon%,newname$,redraw)
  890 block%!0=handle%
  900 block%!4=icon%
  910 SYS "Wimp_GetIconState",,block%
  920 SYS "Wimp_DeleteIcon",,block%
  930 block%!4=block%!8
  940 block%!8=block%!12
  950 block%!12=block%!16
  960 block%!16=block%!20
  970 block%!20=&3002
  980 $(block%+24)=newname$
  990 SYS "Wimp_CreateIcon",,block% TO icon%
 1000 IF redraw THEN SYS "Wimp_ForceRedraw",block%!0,block%!4,block%!8,block%!12,block%!16
 1010 =icon%
 1020 :
 1030 DEF PROCfront(handle%)
 1040 !q%=handle%:SYS "Wimp_GetWindowState",,q%
 1050 q%!28=-1:SYS "Wimp_OpenWindow",,q%
 1060 ENDPROC
 1070 :
 1080 DEF PROCgetw(handle%)
 1090 !q%=handle%:SYS "Wimp_GetWindowState",,q%
 1100 PROCinfo(q%+4)
 1110 ENDPROC
 1120 :
 1130 DEF PROCgeti(h%,i%)
 1140 !q%=h%:q%!4=i%:SYS "Wimp_GetIconState",,q%
 1150 ix0%=q%!8:iy0%=q%!12:ix1%=q%!16:iy1%=q%!20
 1160 iflags%=q%!24:idata%=q%+28
 1170 ENDPROC
 1180 :
 1190 DEF PROCgetpointer
 1200 SYS "Wimp_GetPointerInfo",,q%
 1210 mousex%=!q%:mousey%=q%!4:buttons%=q%!8
 1220 handle%=q%!12:icon%=q%!16
 1230 ENDPROC
 1240 :
 1250 DEF PROCinfo(p%)
 1260 x0%=!p%:y0%=p%!4:x1%=p%!8:y1%=p%!12
 1270 scx%=p%!16:scy%=p%!20:bhandle%=p%!24:flags%=p%!28
 1280 bx%=x0%-scx%:by%=y1%-scy% : REM all drawing should be relative to bx%,by%
 1290 ENDPROC
 1300 :
 1310 REM --------------------------- Wimp Menu Procedures -----------------------
 1320 :
 1330 DEF PROCSetUpIconBarInfo
 1340 wbcol=&3:tbcol=&2:sco=&3:mbcol=&0:wfcol=&7:tfcol=&7
 1350 sci=&D:tbcol2=&C:black=&7:white=&0:cyan=9:lightgrey=1
 1360 DIM menubuf% 1000
 1370 ENDPROC
 1380 :
 1390 DEF PROCdomenu(handle%,menuptr%,menu$,menutitle$,x,y)
 1400 LOCAL dummy%,next%
 1410 next%=menuptr%+4:menuptr%!0=handle%
 1420 dummy%=FNc_m(next%,menu$,menutitle$)
 1430 SYS "Wimp_CreateMenu",,dummy%,x,y
 1440 ENDPROC
 1450 :
 1460 DEF FNc_m(menuptr%,menu$,menutitle$)
 1470 LOCAL i%,call%,item$,w,l
 1480 call%=menuptr%:w=LENmenutitle$:next%+=52
 1490 FOR i%=0TOLENmenu$
 1500   IF MID$(menu$,i%,1)="," THEN next%+=24
 1510 NEXT
 1520 i%=0:menuptr%!20=40:$menuptr%=menutitle$
 1530 menuptr%?12=tfcol:menuptr%?13=2:menuptr%?14=wfcol:menuptr%?15=mbcol
 1540 menuptr%!24=0:menuptr%+=28
 1550 REPEAT
 1560   item$=FNpar(menu$,",",i%):menuptr%=FNmenuitem(menuptr%,item$,l)
 1570   w=FNmax(l,w)
 1580 UNTIL item$=""
 1590 call%!16=16*w+12
 1600 menuptr%!-24=(menuptr%!-24)OR&80
 1610 =call%
 1620 :
 1630 DEF FNmenuitem(ptr%,text$,RETURN l)
 1640 IF text$="" =ptr%
 1650 LOCAL a,t$,text
 1660 text=TRUE
 1670 pad$="   ":a=0:!ptr%=0:ptr%!8=&07000021:ptr%!4=-1
 1680 IF LEFT$(text$,1)=":"!ptr%=!ptr% OR 2:text$=MID$(text$,2)
 1690 IF LEFT$(text$,1)="<"ptr%!8=ptr%!8 OR 2^22:text$=MID$(text$,2)
 1700 IF LEFT$(text$,1)="@"!ptr%=!menuptr% OR 1:text$=MID$(text$,2)
 1710 IF LEFT$(text$,1)="`" THEN
 1720   text$=MID$(text$,2):ptr%!8=&07000121
 1730   !ptr%=!ptr% OR 4:t$=FNpar(text$,"\",a)
 1740   ptr%!12=EVAL(t$):t$=FNpar(text$,"\",a)
 1750   ptr%!16=EVAL(t$):t$=FNpar(text$,"\",a)
 1760   ptr%!20=EVAL(t$):text=FALSE:text$=""
 1770 ENDIF
 1780 IF LEFT$(text$,1)=">" THEN
 1790   text$=MID$(text$,2):t$=FNpar(text$,".",a)
 1800   ptr%!4=EVAL(FNpar(text$,".",a)):text$=t$
 1810 ENDIF
 1820 IF LEFT$(text$,1)="~" THEN
 1830   text$=MID$(text$,2):t$=FNpar(text$,"\",a)
 1840   ptr%!4=EVAL("FNc_m(next%,"+FNpar(text$,"\",a)+","+CHR$34+FNpar(text$,"\",a)+CHR$34+")")
 1850   text$=t$
 1860 ENDIF
 1870 IF text THEN $(ptr%+12)=text$
 1880 l=LENtext$
 1890 =ptr%+24
 1900 :
 1910 DEF FNmemtostr(ptr,ml)
 1920 LOCAL f$,max:max=ptr+ml
 1930 WHILE ?ptr AND ptr<=max f$+=CHR$?ptr:ptr+=1
 1940 ENDWHILE
 1950 =f$
 1960 :
 1970 DEF FNpar(a$,s$,RETURN i%)
 1980 LOCAL i1%
 1990 i1%=i%+1:i%=INSTR(a$+s$,s$,i1%)
 2000 =MID$(a$,i1%,i%-i1%)
 2010 :
 2020 DEF FNmax(a,b):IFa>b=a ELSE=b
 2030 :
 2040 DEF FNmin(a,b):IFa<b=a ELSE=b
 2050 :
 2060 DEF FNiconstate(wh%,ih%)
 2070 q%!0=wh%:q%!4=ih%
 2080 SYS "Wimp_GetIconState",,q%
 2090 iflg%=q%!24:iflg$="&"+STR$~iflg%
 2100 =iflg$
 2110 :
 2120 DEFPROCput_icon_text(q%,whandle%,ihandle%,data$,redraw)
 2130 q%!0=whandle%
 2140 q%!4=ihandle%
 2150 SYS "Wimp_GetIconState",,q%
 2160 $(q%!28)=data$
 2170 IF redraw THEN
 2180   SYS "Wimp_ForceRedraw",whandle%,q%!8,q%!12,q%!16,q%!20
 2190 ENDIF
 2200 ENDPROC
 2210 :
 2220 DEF FNGetStr(s%) : REM get string
 2230 LOCAL n$
 2240 WHILE?s%:n$+=CHR$?s%:s%+=1:ENDWHILE
 2250 =n$
 2260 :
 2270 DEFPROCreport(line1$,line2$,line3$,line4$,line5$)
 2280 VDU6:OSCLI"SHUT"
 2290 REM IF ERR=67798 THEN line5$="Please check your save file path."
 2300 IF ERR=20 THEN line5$="I'm not Einstein you now. Use small lines"
 2310 SYS "Hourglass_Smash"
 2320 PROCput_icon_text(q%,Report%,4,line1$,-1)
 2330 PROCput_icon_text(q%,Report%,5,line2$,-1)
 2340 PROCput_icon_text(q%,Report%,6,line3$,-1)
 2350 PROCput_icon_text(q%,Report%,7,line4$,-1)
 2360 PROCput_icon_text(q%,Report%,8,line5$,-1)
 2370 PROCOpen_Window(Report%,250,0,9000,600,q%!20,q%!24,-1)
 2380 error%=TRUE
 2390 ENDPROC
 2400 :
 2410 DEF FN_ReadIconText(ih%,wh%)
 2420 LOCAL Result$
 2430 q%!0=wh%
 2440 q%!4=ih%
 2450 SYS "Wimp_GetIconState",,q%
 2460 IF (q%!24 AND (1<<8))<>0 THEN Result$=$(q%!28) ELSE Result$=$(q%+28)
 2470 =Result$
 2480 :
 2490 REM --------------------------- Drag Box Proc's ----------------------------
 2500 :
 2510 DEF PROCdrag_it(whandle%,ih%)
 2520 !q%=whandle%
 2530 q%!4=ih%
 2540 SYS"Wimp_GetIconState",,q%
 2550 dbminx%=q%!8
 2560 dbminy%=q%!12
 2570 dbmaxx%=q%!16
 2580 dbmaxy%=q%!20
 2590 !q%=whandle%
 2600 SYS "Wimp_GetWindowInfo",,q%
 2610 wx0%=q%!4
 2620 wy0%=q%!8
 2630 wx1%=q%!12
 2640 wy1%=q%!16
 2650 !q%=whandle%
 2660 q%!4=5
 2670 q%!8=wx0%+dbminx%
 2680 q%!12=wy1%+dbminy%
 2690 q%!16=wx0%+dbmaxx%
 2700 q%!20=wy1%+dbmaxy%
 2710 q%!24=0
 2720 q%!28=0
 2730 SYS "Wimp_DragBox",,q%
 2740 ENDPROC
 2750 :
 2760 DEF PROCdrag_end(whandle%,ih%)
 2770 SYS "Wimp_GetPointerInfo",,q%
 2780 dbmx%=!q%
 2790 dbmy%=q%!4
 2800 dbw%=q%!12
 2810 dbi%=q%!16
 2820 !q%=whandle%
 2830 REM q%!4=6
 2840 SYS "Wimp_GetIconState",,q%
 2850 savename$=$(q%+24)
 2860 PROCsend(savename$)
 2870 ENDIF
 2880 ENDPROC
 2890 :
 2900 DEF PROCsend(leafname$)
 2910 IF INSTR(leafname$,".")<>0 THEN leafname$=FNleaf(leafname$)
 2920 !q%=52+(LEN(leafname$) DIV 4)*4
 2930 q%!12=0
 2940 q%!16=1
 2950 q%!20=dbw%
 2960 q%!24=dbi%
 2970 q%!28=dbmx%
 2980 q%!32=dbmy%
 2990 q%!36=1
 3000 q%!40=&FFF
 3010 $(q%+44)=leafname$+CHR$0
 3020 SYS "Wimp_SendMessage",17,q%,dbw%
 3030 ENDPROC
 3040 :
 3050 DEFFNstring(a%)
 3060 LOCALb$:b$=""
 3070 WHILE?a%<>0
 3080 b$+=CHR$?a%
 3090 a%+=1
 3100 ENDWHILE
 3110 =b$
 3120 :
 3130 DEFFNleaf(path$)
 3140 WHILE INSTR(path$,".")
 3150 path$=MID$(path$,INSTR(path$,".")+1)
 3160 ENDWHILE
 3170 =path$
 3180 :
 3190 REM --------------------------- Text Window Proc's -------------------------
 3200 :
 3210 DEF PROCload_text(file$,whandle%)
 3220 maxchr%=0:read%=OPENIN file$
 3230 REPEAT
 3240 maxchr%+=1
 3250 ste%=BGET#read%
 3260 UNTIL EOF#read%
 3270 CLOSE#read%
 3280 SYS "OS_File",5,file$ TO ,,,,size2%
 3290 DIM buffer size2%+32
 3300 SYS "OS_File",&FF,file$,buffer,0
 3310 PROCsort_text
 3320 ENDPROC
 3330 :
 3340 DEF PROCsort_text
 3350 PROCclearicons(0,counter,whandle%)
 3360 counter=0:old_offset=0:offset=0:addr=buffer:counter%=0
 3370 SYS "Hourglass_On"
 3380 REPEAT
 3390 counter%+=1
 3400 char%=addr?offset
 3410 IF char%=&A THEN
 3420 addr?offset=0
 3430 PROCput_item(addr+old_offset,counter,offset-old_offset)
 3440 counter+=1
 3450 offset+=1
 3460 old_offset=offset
 3470 ELSE
 3480 offset+=1
 3490 ENDIF
 3500 SYS "Hourglass_Percentage",(counter%/maxchr%)*100
 3510 UNTIL counter%=maxchr%
 3520 SYS "Hourglass_Smash"
 3530 q%!0=0
 3540 q%!4=-((counter-1)*32+32)
 3550 q%!8=FNlongest*16+16
 3560 q%!12=0
 3570 SYS "Wimp_SetExtent",whandle%,q%
 3580 ENDPROC
 3590 :
 3600 DEF PROCput_item(start_addr,icon_num,length)
 3610 long?icon_num=length
 3620 q%!0=whandle%
 3630 q%!4=0
 3640 q%!8=-(icon_num*32)-32
 3650 q%!12=1280
 3660 q%!16=q%!8+32
 3670 q%!20=&7006111
 3680 q%!24=start_addr
 3690 q%!28=valid%
 3700 q%!32=80
 3710 start_addr?(length)=0
 3720 SYS "XWimp_CreateIcon",,q% TO lasticon%
 3730 ENDPROC
 3740 :
 3750 DEF FNlongest
 3760 len%=0
 3770 FOR loop%=0 TO counter-1
 3780 IF long?loop%>len% THEN len%=long?loop%
 3790 NEXT
 3800 =len%
 3810 :
 3820 DEFPROCclearicons(fromicon%,toicon%,window%)
 3830 FOR I = fromicon% TO toicon%
 3840 PROCdeleteicon(window%,I)
 3850 NEXT I
 3860 ENDPROC
 3870 :
 3880 REM ------------------------------------------------------------------------
 3890 :
 3900 DEF FNchopstr(n$,chr$)
 3910 time%=TIME+100
 3920 REPEAT
 3930  n$=LEFT$(n$,LEN(n$)-1)
 3940  IF TIME>time% THEN =n$
 3950 UNTIL RIGHT$(n$,1)=chr$
 3960 n$=LEFT$(n$,LEN(n$)-1)
 3970 =n$
 3980 :
 3990 DEF FNchopdir(n$,chr$)
 4000 dir2$=n$:count%=0:time%=TIME+100
 4010 REPEAT
 4020 count%+=1
 4030  dir2$=LEFT$(dir2$,LEN(dir2$)-1)
 4040  IF TIME>time% THEN =n$
 4050 UNTIL RIGHT$(dir2$,1)=chr$
 4060 dir2$=RIGHT$(n$,count%)
 4070 =dir2$
 4080 :
 4090 DEF FNchopdir2(n$,chr$)
 4100 dir=1
 4110 FORdir2=1TOLEN(n$)
 4120  IF MID$(n$,dir2,LEN(chr$))=chr$ THEN dir2=LEN(n$) ELSE dir+=1
 4130 NEXT dir2
 4140 n$=MID$(n$,dir+1,LEN(n$))
 4150 =n$
 4160 :
 4170 DEF FNlowcase(string$)
 4180 str$=""
 4190 FORI=1TOLEN(string$)
 4200  FORS=65TO90
 4210   IF MID$(string$,I,1)=CHR$(S) THEN str$+=CHR$(S+32)
 4220   IF MID$(string$,I,1)=CHR$(S+32) THEN str$+=CHR$(S+32)
 4230  NEXTS
 4240  FORB=32TO64
 4250   IF MID$(string$,I,1)=CHR$(B) THEN str$+=CHR$(B)
 4260  NEXTB
 4270  FORB=123TO255
 4280   IF MID$(string$,I,1)=CHR$(B) THEN str$+=CHR$(B)
 4290  NEXTB
 4300 NEXTI
 4310 =str$
 4320 :
 4330 DEF FNpadout(pad$,padlen%)
 4340 padlen%=padlen%-LEN(pad$)
 4350 padlen2%=padlen%/2
 4360 pad$=STRING$(padlen2%," ")+pad$+STRING$(padlen%-padlen2%," ")
 4370 =pad$
 4380 :
 4390 DEFPROCfinfo(fileinfo$)
 4400 file$="":filetype$="":filename$="":load$="":exec$="":size$="":filedate$=""
 4410 dir%=FALSE:file$=fileinfo$
 4420 SYS "OS_File",5,file$ TO type%,,load%,exec%,size%
 4430 IF type%=2 THEN dir%=TRUE:ENDPROC
 4440 SYS "OS_FSControl",18,,(&FFF AND load%>>>8) TO ,,b%,c%
 4450 filename$=CHR$(b% AND &FF)+CHR$((b%>>8) AND &FF)+CHR$((b%>>16) AND &FF)+CHR$((b%>>24)AND &FF)
 4460 filename$+=CHR$(c% AND &FF)+CHR$((c%>>8) AND &FF)+CHR$((c%>>16) AND &FF)+CHR$((c%>>24)AND &FF)
 4470 filetype$="&"+STR$~(&FFF AND load%>>>8)
 4480 date=block%
 4490 date?4=load% AND &FF
 4500 date?3=exec%>>24 AND &FF
 4510 date?2=exec%>>16 AND &FF
 4520 date?1=exec%>>8 AND &FF
 4530 date?0=exec% AND &FF
 4540 SYS "OS_ConvertStandardDateAndTime",date,block%,28
 4550 filedate$=LEFT$($block%,20)
 4560    CASE TRUE OF
 4570       WHEN size%>=1024 : size$=STR$size%
 4580       REM size$=STR$(size%DIV1024)+"."+STR$(size%MOD1024)+"K"
 4590       OTHERWISE
 4600       size$=STR$size%
 4610    ENDCASE
 4620 load$="&"+STR$~(load%)
 4630 exec$="&"+STR$~(exec%)
 4640 filetype$=RIGHT$(filetype$,LEN(filetype$)-1)
 4650 REM file$:filetype$:filename$:load$:exec$:size$:filedate$
 4660 ENDPROC
 4670 :
 4680 DEF PROCcat(root$)
 4690 REM DIM prog$(max,1),w%(max),dir2$(max)
 4700 n%=0:length%=LEN(root$):maxn%=0:maxn2%=0:last%=0:I=0:dirs%=0
 4710 stephen%=FNbranch(root$,root$,0)
 4720 n%-=1
 4730 ENDPROC
 4740 :
 4750 DEF FNbranch(f$,leaf$,y%)
 4760 LOCAL i%,l%
 4770 l%=n%
 4780 n%+=1
 4790 REM Just File Names
 4800 n2$=STR$(y%)+"."+leaf$
 4810 SYS "XOS_File",5,f$ TO type%
 4820 REM Full File Path
 4830 n$=f$
 4840 n$=FNchopstr(n$,".")
 4850 IF RIGHT$(n$,1)<>"$" THEN dir2$(l%)=FNchopdir(n$,".")
 4860 IF LEN(n$)>length% THEN n2$=""+n2$
 4870 IF y%>maxn% THEN maxn%=y%
 4880 IF y%=0 THEN maxn2%+=1
 4890 IF type%=2 THEN
 4900  i%=0
 4910  prog$(n%-1,2)="dir"
 4920  REPEAT
 4930   SYS "XOS_GBPB",9,f$,q%,1,i%,&100,"*" TO ,,,r%,i%
 4940   IF r%>0 THEN
 4950    VDU21
 4960    REM PRINTSPC12;CHR$13;
 4970    SYS "OS_Write0",q% TO j%
 4980    VDU6
 4990    prog$(n%-1,0)=n$
 5000    prog$(n%-1,1)=FNchopdir(n2$,".")
 5010    j%?-1=13
 5020    w%(l%)+=FNbranch(f$+"."+$q%,$q%,y%+1)
 5030   ENDIF
 5040  UNTIL i%=-1
 5050  prog$(n%-1,0)=n$:prog$(n%-1,1)=FNchopdir(n2$,".")
 5060 ELSE
 5070  dirs%+=1:prog$(n%-1,2)="file"
 5080 ENDIF
 5090 IF w%(l%)<LEN(leaf$)+2 w%(l%)=LEN(leaf$)+2
 5100 =w%(l%)
 5110 :
 5120 DEF FNcountchr(n$,chr$)
 5130 no%=0
 5140 FORc=1TOLEN(n$)
 5150 IF MID$(n$,c,1)=chr$ THEN no%+=1
 5160 NEXT c
 5170 =no%

 �>Library
 �
; � This is a library of procedures for desktop program.
( �
2 :
<O � --------------------------- Quit Program -------------------------------
F :
P � �Finish
Z �"SHUT"
d ș "Hourglass_Smash"
n ș "Wimp_CloseDown":�
x �
� :
�O � --------------------------- Load In Sprites ----------------------------
� :
�C � �Icon_Bar_Sprite(SPName$,SpriteFile$,LorR,Text_NoText,Text$)
�7 handle%=�(SpriteFile$):len%=�#handle%+16:�#handle%
� � sprites% len%
�  !sprites%=len%:sprites%!8=1
�# ș "OS_SpriteOp",&109,sprites%
�/ ș "OS_SpriteOp",&10A,sprites%,SpriteFile$
� � IconText% 50
� � Text_NoText=0 �
�   �IconBar(LorR,SPName$)
� �
,   iconbar%=�IconBarText(LorR,SPName$,1)
   $IconText%=Text$:q%!0=-1
>   q%!4=iconbar%:q%!8=0:q%!12=0:ș "Wimp_SetIconState",,q%
" �
, IconSprites%=1
6 �
@ :
J- � �IconBarText(LorR,spname$,spritearea%)
T
 � ic%
^? !q%=LorR:q%!4=0:q%!8=-16:q%!12=96:q%!16=95:q%!20=&1701210B
h � isbarsp% 20
rA $isbarsp%="s"+spname$:q%!24=IconText%:q%!28=isbarsp%:q%!32=3
|# ș "Wimp_CreateIcon",,q% � ic%
�	 =ic%
� :
� � �IconBar(LorR,Sprite$)
�- !q%=LorR:q%!4=0:q%!8=0:q%!12=68:q%!16=68
�E q%!20=&2002:$(q%+24)=Sprite$:ș "Wimp_CreateIcon",,q% � iconbar%
� �
� :
�O � --------------------------- Load In Templates --------------------------
� :
� � �template(id$)
� � handle,pos
� maxws%=&750
� � ws% maxws%
I ș "Wimp_LoadTemplate",,q%,ws%,ws%+maxws%,-1,id$,0 � ,,curws%,,,,pos
1 � pos=0 � � 1,"Template '"+id$+"' not found"
( ș "Wimp_CreateWindow",,q% � handle
& =handle
0 :
:N � --------------------------- Window Controlers -------------------------
D :
N? � �Open_Window(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%)
X � handle%=-1 � �
b  q%!0=handle%:q%!28=bhandle%
l* q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%
v q%!20=scx%:q%!24=scy%
� ș "Wimp_OpenWindow",,q%
� �S=1�mmax
�&  � handle%=Main%(S) � mopen%(S)=�
� � S
� �
� :
� � �Close_Window(chandle%)
� !q%=chandle%
� ș "Wimp_CloseWindow",,q%
� �S=1�mmax
�'  � chandle%=Main%(S) � mopen%(S)=�
� � S
�
 ȗ X,Y,Z
 �S=1�mmax
z � chandle%=Main%(S) � Z=1 � S>1 � mopen%(S-1)=� � �Open_Window(Main%(S-1),0+(I*20),45,1278,805,q%!20,q%!24,-1):S=mmax
 � S
  �
* :
4" � �deleteicon(dhandle%,icon%)
>7 !q%=dhandle%:q%!4=icon%:ș "Wimp_GetIconState",,q%
H ș "Wimp_DeleteIcon",,q%
R5 ș "Wimp_ForceRedraw",!q%,q%!8,q%!12,q%!16,q%!20
\ �
f :
p4 ݤicon_newsprite(handle%,icon%,newname$,redraw)
z block%!0=handle%
� block%!4=icon%
�# ș "Wimp_GetIconState",,block%
�! ș "Wimp_DeleteIcon",,block%
� block%!4=block%!8
� block%!8=block%!12
� block%!12=block%!16
� block%!16=block%!20
� block%!20=&3002
� $(block%+24)=newname$
�) ș "Wimp_CreateIcon",,block% � icon%
�T � redraw � ș "Wimp_ForceRedraw",block%!0,block%!4,block%!8,block%!12,block%!16
� =icon%
� :
 � �front(handle%)
- !q%=handle%:ș "Wimp_GetWindowState",,q%
& q%!28=-1:ș "Wimp_OpenWindow",,q%
$ �
. :
8 � �getw(handle%)
B- !q%=handle%:ș "Wimp_GetWindowState",,q%
L �info(q%+4)
V �
` :
j � �geti(h%,i%)
t. !q%=h%:q%!4=i%:ș "Wimp_GetIconState",,q%
~/ ix0%=q%!8:iy0%=q%!12:ix1%=q%!16:iy1%=q%!20
� iflags%=q%!24:idata%=q%+28
� �
� :
� � �getpointer
�! ș "Wimp_GetPointerInfo",,q%
�+ mousex%=!q%:mousey%=q%!4:buttons%=q%!8
� handle%=q%!12:icon%=q%!16
� �
� :
� � �info(p%)
�( x0%=!p%:y0%=p%!4:x1%=p%!8:y1%=p%!12
�6 scx%=p%!16:scy%=p%!20:bhandle%=p%!24:flags%=p%!28
L bx%=x0%-scx%:by%=y1%-scy% : � all drawing should be relative to bx%,by%

 �
 :
O � --------------------------- Wimp Menu Procedures -----------------------
( :
2 � �SetUpIconBarInfo
<8 wbcol=&3:tbcol=&2:sco=&3:mbcol=&0:wfcol=&7:tfcol=&7
F: sci=&D:tbcol2=&C:black=&7:white=&0:cyan=9:lightgrey=1
P � menubuf% 1000
Z �
d :
n5 � �domenu(handle%,menuptr%,menu$,menutitle$,x,y)
x � dummy%,next%
�( next%=menuptr%+4:menuptr%!0=handle%
�( dummy%=�c_m(next%,menu$,menutitle$)
�% ș "Wimp_CreateMenu",,dummy%,x,y
� �
� :
�& � �c_m(menuptr%,menu$,menutitle$)
� � i%,call%,item$,w,l
�+ call%=menuptr%:w=�menutitle$:next%+=52
� � i%=0��menu$
�%   � �menu$,i%,1)="," � next%+=24
� �
�- i%=0:menuptr%!20=40:$menuptr%=menutitle$
�H menuptr%?12=tfcol:menuptr%?13=2:menuptr%?14=wfcol:menuptr%?15=mbcol
 menuptr%!24=0:menuptr%+=28
 �
D   item$=�par(menu$,",",i%):menuptr%=�menuitem(menuptr%,item$,l)
"   w=�max(l,w)
, � item$=""
6 call%!16=16*w+12
@$ menuptr%!-24=(menuptr%!-24)�&80
J =call%
T :
^  � �menuitem(ptr%,text$,� l)
h � text$="" =ptr%
r � a,t$,text
| text=�
�6 pad$="   ":a=0:!ptr%=0:ptr%!8=&07000021:ptr%!4=-1
�3 � �text$,1)=":"!ptr%=!ptr% � 2:text$=�text$,2)
�8 � �text$,1)="<"ptr%!8=ptr%!8 � 2^22:text$=�text$,2)
�7 � �text$,1)="@"!ptr%=!menuptr% � 1:text$=�text$,2)
� � �text$,1)="`" �
�'   text$=�text$,2):ptr%!8=&07000121
�+   !ptr%=!ptr% � 4:t$=�par(text$,"\",a)
�)   ptr%!12=�(t$):t$=�par(text$,"\",a)
�)   ptr%!16=�(t$):t$=�par(text$,"\",a)
�$   ptr%!20=�(t$):text=�:text$=""
� �
� � �text$,1)=">" �
�+   text$=�text$,2):t$=�par(text$,".",a)
+   ptr%!4=�(�par(text$,".",a)):text$=t$
 �
 � �text$,1)="~" �
&+   text$=�text$,2):t$=�par(text$,"\",a)
0S   ptr%!4=�("FNc_m(next%,"+�par(text$,"\",a)+","+�34+�par(text$,"\",a)+�34+")")
:   text$=t$
D �
N � text � $(ptr%+12)=text$
X
 l=�text$
b
 =ptr%+24
l :
v � �memtostr(ptr,ml)
� � f$,max:max=ptr+ml
�( ȕ ?ptr � ptr<=max f$+=�?ptr:ptr+=1
� �
� =f$
� :
� � �par(a$,s$,� i%)
�
 � i1%
� i1%=i%+1:i%=�a$+s$,s$,i1%)
� =�a$,i1%,i%-i1%)
� :
� � �max(a,b):�a>b=a �=b
� :
� � �min(a,b):�a<b=a �=b
 :
 � �iconstate(wh%,ih%)
 q%!0=wh%:q%!4=ih%
  ș "Wimp_GetIconState",,q%
*" iflg%=q%!24:iflg$="&"+�~iflg%
4 =iflg$
> :
H7 ��put_icon_text(q%,whandle%,ihandle%,data$,redraw)
R q%!0=whandle%
\ q%!4=ihandle%
f ș "Wimp_GetIconState",,q%
p $(q%!28)=data$
z � redraw �
�<   ș "Wimp_ForceRedraw",whandle%,q%!8,q%!12,q%!16,q%!20
� �
� �
� :
�! � �GetStr(s%) : � get string
�	 � n$
� ȕ?s%:n$+=�?s%:s%+=1:�
� =n$
� :
�1 ��report(line1$,line2$,line3$,line4$,line5$)
� �6:�"SHUT"
�C � IF ERR=67798 THEN line5$="Please check your save file path."
�@ � �=20 � line5$="I'm not Einstein you now. Use small lines"
	 ș "Hourglass_Smash"
	+ �put_icon_text(q%,Report%,4,line1$,-1)
	+ �put_icon_text(q%,Report%,5,line2$,-1)
	$+ �put_icon_text(q%,Report%,6,line3$,-1)
	.+ �put_icon_text(q%,Report%,7,line4$,-1)
	8+ �put_icon_text(q%,Report%,8,line5$,-1)
	B8 �Open_Window(Report%,250,0,9000,600,q%!20,q%!24,-1)
	L
 error%=�
	V �
	` :
	j � �_ReadIconText(ih%,wh%)
	t � Result$
	~
 q%!0=wh%
	�
 q%!4=ih%
	� ș "Wimp_GetIconState",,q%
	�@ � (q%!24 � (1<<8))<>0 � Result$=$(q%!28) � Result$=$(q%+28)
	�
 =Result$
	� :
	�O � --------------------------- Drag Box Proc's ----------------------------
	� :
	� � �drag_it(whandle%,ih%)
	� !q%=whandle%
	�
 q%!4=ih%
	� ș"Wimp_GetIconState",,q%
	� dbminx%=q%!8
 dbminy%=q%!12

 dbmaxx%=q%!16
 dbmaxy%=q%!20
 !q%=whandle%
(  ș "Wimp_GetWindowInfo",,q%
2 wx0%=q%!4
< wy0%=q%!8
F wx1%=q%!12
P wy1%=q%!16
Z !q%=whandle%
d q%!4=5
n q%!8=wx0%+dbminx%
x q%!12=wy1%+dbminy%
� q%!16=wx0%+dbmaxx%
� q%!20=wy1%+dbmaxy%
� q%!24=0
� q%!28=0
� ș "Wimp_DragBox",,q%
� �
� :
� � �drag_end(whandle%,ih%)
�! ș "Wimp_GetPointerInfo",,q%
� dbmx%=!q%
� dbmy%=q%!4
� dbw%=q%!12
� dbi%=q%!16
 !q%=whandle%

 � q%!4=6
 ș "Wimp_GetIconState",,q%
" savename$=$(q%+24)
, �send(savename$)
6 �
@ �
J :
T � �send(leafname$)
^6 � �leafname$,".")<>0 � leafname$=�leaf(leafname$)
h  !q%=52+(�(leafname$) � 4)*4
r q%!12=0
| q%!16=1
� q%!20=dbw%
� q%!24=dbi%
� q%!28=dbmx%
� q%!32=dbmy%
� q%!36=1
� q%!40=&FFF
� $(q%+44)=leafname$+�0
�% ș "Wimp_SendMessage",17,q%,dbw%
� �
� :
� ݤstring(a%)
� �b$:b$=""
�
 ȕ?a%<>0

 b$+=�?a%

 a%+=1
 �
& =b$
0 :
: ݤleaf(path$)
D ȕ �path$,".")
N  path$=�path$,�path$,".")+1)
X �
b =path$
l :
vO � --------------------------- Text Window Proc's -------------------------
� :
�! � �load_text(file$,whandle%)
� maxchr%=0:read%=� file$
� �
� maxchr%+=1
� ste%=�#read%
� � �#read%
� �#read%
�& ș "OS_File",5,file$ � ,,,,size2%
� � buffer size2%+32
�$ ș "OS_File",&FF,file$,buffer,0
� �sort_text
� �

 :

 � �sort_text

$ �clearicons(0,counter,whandle%)

 ; counter=0:old_offset=0:offset=0:addr=buffer:counter%=0

* ș "Hourglass_On"

4 �

> counter%+=1

H char%=addr?offset

R � char%=&A �

\ addr?offset=0

f9 �put_item(addr+old_offset,counter,offset-old_offset)

p counter+=1

z offset+=1

� old_offset=offset

� �

� offset+=1

� �

�5 ș "Hourglass_Percentage",(counter%/maxchr%)*100

� � counter%=maxchr%

� ș "Hourglass_Smash"

� q%!0=0

� q%!4=-((counter-1)*32+32)

� q%!8=�longest*16+16

� q%!12=0

�$ ș "Wimp_SetExtent",whandle%,q%

� �
 :
, � �put_item(start_addr,icon_num,length)
 long?icon_num=length
$ q%!0=whandle%
. q%!4=0
8 q%!8=-(icon_num*32)-32
B q%!12=1280
L q%!16=q%!8+32
V q%!20=&7006111
` q%!24=start_addr
j q%!28=valid%
t
 q%!32=80
~ start_addr?(length)=0
�* ș "XWimp_CreateIcon",,q% � lasticon%
� �
� :
� � �longest
� len%=0
� � loop%=0 � counter-1
�( � long?loop%>len% � len%=long?loop%
� �
�
 =len%
� :
�, ��clearicons(fromicon%,toicon%,window%)
� � I = fromicon% � toicon%
 �deleteicon(window%,I)

 � I
 �
 :
(O � ------------------------------------------------------------------------
2 :
< � �chopstr(n$,chr$)
F time%=�+100
P �
Z  n$=�n$,�(n$)-1)
d  � �>time% � =n$
n � �n$,1)=chr$
x n$=�n$,�(n$)-1)
� =n$
� :
� � �chopdir(n$,chr$)
�" dir2$=n$:count%=0:time%=�+100
� �
� count%+=1
�  dir2$=�dir2$,�(dir2$)-1)
�  � �>time% � =n$
� � �dir2$,1)=chr$
� dir2$=�n$,count%)
� =dir2$
� :
� � �chopdir2(n$,chr$)

 dir=1
 �dir2=1��(n$)
4  � �n$,dir2,�(chr$))=chr$ � dir2=�(n$) � dir+=1
" � dir2
, n$=�n$,dir+1,�(n$))
6 =n$
@ :
J � �lowcase(string$)
T str$=""
^ �I=1��(string$)
h  �S=65�90
r+   � �string$,I,1)=�(S) � str$+=�(S+32)
|.   � �string$,I,1)=�(S+32) � str$+=�(S+32)
�  �S
�  �B=32�64
�(   � �string$,I,1)=�(B) � str$+=�(B)
�  �B
�  �B=123�255
�(   � �string$,I,1)=�(B) � str$+=�(B)
�  �B
� �I
�
 =str$
� :
� � �padout(pad$,padlen%)
� padlen%=padlen%-�(pad$)
� padlen2%=padlen%/2
4 pad$=�padlen2%," ")+pad$+�padlen%-padlen2%," ")

 =pad$
 :
& ��finfo(fileinfo$)
0O file$="":filetype$="":filename$="":load$="":exec$="":size$="":filedate$=""
: dir%=�:file$=fileinfo$
D4 ș "OS_File",5,file$ � type%,,load%,exec%,size%
N � type%=2 � dir%=�:�
X7 ș "OS_FSControl",18,,(&FFF � load%>>>8) � ,,b%,c%
bN filename$=�(b% � &FF)+�((b%>>8) � &FF)+�((b%>>16) � &FF)+�((b%>>24)� &FF)
lO filename$+=�(c% � &FF)+�((c%>>8) � &FF)+�((c%>>16) � &FF)+�((c%>>24)� &FF)
v' filetype$="&"+�~(&FFF � load%>>>8)
� date=block%
� date?4=load% � &FF
� date?3=exec%>>24 � &FF
� date?2=exec%>>16 � &FF
� date?1=exec%>>8 � &FF
� date?0=exec% � &FF
�6 ș "OS_ConvertStandardDateAndTime",date,block%,28
� filedate$=�$block%,20)
�    Ȏ � �
�'       � size%>=1024 : size$=�size%
�@       � size$=STR$(size%DIV1024)+"."+STR$(size%MOD1024)+"K"
�       
�       size$=�size%
	    �
 load$="&"+�~(load%)
 exec$="&"+�~(exec%)
 ) filetype$=�filetype$,�(filetype$)-1)
*< � file$:filetype$:filename$:load$:exec$:size$:filedate$
4 �
> :
H � �cat(root$)
R* � DIM prog$(max,1),w%(max),dir2$(max)
\? n%=0:length%=�(root$):maxn%=0:maxn2%=0:last%=0:I=0:dirs%=0
f$ stephen%=�branch(root$,root$,0)
p
 n%-=1
z �
� :
� � �branch(f$,leaf$,y%)
� � i%,l%
�
 l%=n%
�
 n%+=1
� � Just File Names
� n2$=�(y%)+"."+leaf$
� ș "XOS_File",5,f$ � type%
� � Full File Path
�
 n$=f$
� n$=�chopstr(n$,".")
�/ � �n$,1)<>"$" � dir2$(l%)=�chopdir(n$,".")
�! � �(n$)>length% � n2$=""+n2$
 � y%>maxn% � maxn%=y%
 � y%=0 � maxn2%+=1
 � type%=2 �
$
  i%=0
.  prog$(n%-1,2)="dir"
8  �
B5   ș "XOS_GBPB",9,f$,q%,1,i%,&100,"*" � ,,,r%,i%
L   � r%>0 �
V    �21
`    � PRINTSPC12;CHR$13;
j    ș "OS_Write0",q% � j%
t
    �6
~    prog$(n%-1,0)=n$
�'    prog$(n%-1,1)=�chopdir(n2$,".")
�    j%?-1=13
�,    w%(l%)+=�branch(f$+"."+$q%,$q%,y%+1)
�   �
�
  � i%=-1
�6  prog$(n%-1,0)=n$:prog$(n%-1,1)=�chopdir(n2$,".")
� �
�#  dirs%+=1:prog$(n%-1,2)="file"
� �
�* � w%(l%)<�(leaf$)+2 w%(l%)=�(leaf$)+2
� =w%(l%)
� :
 � �countchr(n$,chr$)


 no%=0
 �c=1��(n$)
 � �n$,c,1)=chr$ � no%+=1
( � c
2	 =no%
�
00000000  0d 00 0a 0e 20 f4 3e 4c  69 62 72 61 72 79 0d 00  |.... .>Library..|
00000010  14 06 20 f4 0d 00 1e 3b  20 f4 20 54 68 69 73 20  |.. ....; . This |
00000020  69 73 20 61 20 6c 69 62  72 61 72 79 20 6f 66 20  |is a library of |
00000030  70 72 6f 63 65 64 75 72  65 73 20 66 6f 72 20 64  |procedures for d|
00000040  65 73 6b 74 6f 70 20 70  72 6f 67 72 61 6d 2e 0d  |esktop program..|
00000050  00 28 06 20 f4 0d 00 32  06 20 3a 0d 00 3c 4f 20  |.(. ...2. :..<O |
00000060  f4 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |. --------------|
00000070  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 20 51 75  |------------- Qu|
00000080  69 74 20 50 72 6f 67 72  61 6d 20 2d 2d 2d 2d 2d  |it Program -----|
00000090  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000000a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 00 46 06 20 3a  |----------..F. :|
000000b0  0d 00 50 0e 20 dd 20 f2  46 69 6e 69 73 68 0d 00  |..P. . .Finish..|
000000c0  5a 0c 20 ff 22 53 48 55  54 22 0d 00 64 19 20 c8  |Z. ."SHUT"..d. .|
000000d0  99 20 22 48 6f 75 72 67  6c 61 73 73 5f 53 6d 61  |. "Hourglass_Sma|
000000e0  73 68 22 0d 00 6e 1a 20  c8 99 20 22 57 69 6d 70  |sh"..n. .. "Wimp|
000000f0  5f 43 6c 6f 73 65 44 6f  77 6e 22 3a e0 0d 00 78  |_CloseDown":...x|
00000100  06 20 e1 0d 00 82 06 20  3a 0d 00 8c 4f 20 f4 20  |. ..... :...O . |
00000110  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000120  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 20 4c 6f 61 64  |----------- Load|
00000130  20 49 6e 20 53 70 72 69  74 65 73 20 2d 2d 2d 2d  | In Sprites ----|
00000140  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000150  2d 2d 2d 2d 2d 2d 2d 2d  0d 00 96 06 20 3a 0d 00  |--------.... :..|
00000160  a0 43 20 dd 20 f2 49 63  6f 6e 5f 42 61 72 5f 53  |.C . .Icon_Bar_S|
00000170  70 72 69 74 65 28 53 50  4e 61 6d 65 24 2c 53 70  |prite(SPName$,Sp|
00000180  72 69 74 65 46 69 6c 65  24 2c 4c 6f 72 52 2c 54  |riteFile$,LorR,T|
00000190  65 78 74 5f 4e 6f 54 65  78 74 2c 54 65 78 74 24  |ext_NoText,Text$|
000001a0  29 0d 00 aa 37 20 68 61  6e 64 6c 65 25 3d 8e 28  |)...7 handle%=.(|
000001b0  53 70 72 69 74 65 46 69  6c 65 24 29 3a 6c 65 6e  |SpriteFile$):len|
000001c0  25 3d a2 23 68 61 6e 64  6c 65 25 2b 31 36 3a d9  |%=.#handle%+16:.|
000001d0  23 68 61 6e 64 6c 65 25  0d 00 b4 14 20 de 20 73  |#handle%.... . s|
000001e0  70 72 69 74 65 73 25 20  6c 65 6e 25 0d 00 be 20  |prites% len%... |
000001f0  20 21 73 70 72 69 74 65  73 25 3d 6c 65 6e 25 3a  | !sprites%=len%:|
00000200  73 70 72 69 74 65 73 25  21 38 3d 31 0d 00 c8 23  |sprites%!8=1...#|
00000210  20 c8 99 20 22 4f 53 5f  53 70 72 69 74 65 4f 70  | .. "OS_SpriteOp|
00000220  22 2c 26 31 30 39 2c 73  70 72 69 74 65 73 25 0d  |",&109,sprites%.|
00000230  00 d2 2f 20 c8 99 20 22  4f 53 5f 53 70 72 69 74  |../ .. "OS_Sprit|
00000240  65 4f 70 22 2c 26 31 30  41 2c 73 70 72 69 74 65  |eOp",&10A,sprite|
00000250  73 25 2c 53 70 72 69 74  65 46 69 6c 65 24 0d 00  |s%,SpriteFile$..|
00000260  dc 13 20 de 20 49 63 6f  6e 54 65 78 74 25 20 35  |.. . IconText% 5|
00000270  30 0d 00 e6 16 20 e7 20  54 65 78 74 5f 4e 6f 54  |0.... . Text_NoT|
00000280  65 78 74 3d 30 20 8c 0d  00 f0 1d 20 20 20 f2 49  |ext=0 .....   .I|
00000290  63 6f 6e 42 61 72 28 4c  6f 72 52 2c 53 50 4e 61  |conBar(LorR,SPNa|
000002a0  6d 65 24 29 0d 00 fa 06  20 cc 0d 01 04 2c 20 20  |me$).... ....,  |
000002b0  20 69 63 6f 6e 62 61 72  25 3d a4 49 63 6f 6e 42  | iconbar%=.IconB|
000002c0  61 72 54 65 78 74 28 4c  6f 72 52 2c 53 50 4e 61  |arText(LorR,SPNa|
000002d0  6d 65 24 2c 31 29 0d 01  0e 1f 20 20 20 24 49 63  |me$,1)....   $Ic|
000002e0  6f 6e 54 65 78 74 25 3d  54 65 78 74 24 3a 71 25  |onText%=Text$:q%|
000002f0  21 30 3d 2d 31 0d 01 18  3e 20 20 20 71 25 21 34  |!0=-1...>   q%!4|
00000300  3d 69 63 6f 6e 62 61 72  25 3a 71 25 21 38 3d 30  |=iconbar%:q%!8=0|
00000310  3a 71 25 21 31 32 3d 30  3a c8 99 20 22 57 69 6d  |:q%!12=0:.. "Wim|
00000320  70 5f 53 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_SetIconState",|
00000330  2c 71 25 0d 01 22 06 20  cd 0d 01 2c 13 20 49 63  |,q%..". ...,. Ic|
00000340  6f 6e 53 70 72 69 74 65  73 25 3d 31 0d 01 36 06  |onSprites%=1..6.|
00000350  20 e1 0d 01 40 06 20 3a  0d 01 4a 2d 20 dd 20 a4  | ...@. :..J- . .|
00000360  49 63 6f 6e 42 61 72 54  65 78 74 28 4c 6f 72 52  |IconBarText(LorR|
00000370  2c 73 70 6e 61 6d 65 24  2c 73 70 72 69 74 65 61  |,spname$,spritea|
00000380  72 65 61 25 29 0d 01 54  0a 20 ea 20 69 63 25 0d  |rea%)..T. . ic%.|
00000390  01 5e 3f 20 21 71 25 3d  4c 6f 72 52 3a 71 25 21  |.^? !q%=LorR:q%!|
000003a0  34 3d 30 3a 71 25 21 38  3d 2d 31 36 3a 71 25 21  |4=0:q%!8=-16:q%!|
000003b0  31 32 3d 39 36 3a 71 25  21 31 36 3d 39 35 3a 71  |12=96:q%!16=95:q|
000003c0  25 21 32 30 3d 26 31 37  30 31 32 31 30 42 0d 01  |%!20=&1701210B..|
000003d0  68 12 20 de 20 69 73 62  61 72 73 70 25 20 32 30  |h. . isbarsp% 20|
000003e0  0d 01 72 41 20 24 69 73  62 61 72 73 70 25 3d 22  |..rA $isbarsp%="|
000003f0  73 22 2b 73 70 6e 61 6d  65 24 3a 71 25 21 32 34  |s"+spname$:q%!24|
00000400  3d 49 63 6f 6e 54 65 78  74 25 3a 71 25 21 32 38  |=IconText%:q%!28|
00000410  3d 69 73 62 61 72 73 70  25 3a 71 25 21 33 32 3d  |=isbarsp%:q%!32=|
00000420  33 0d 01 7c 23 20 c8 99  20 22 57 69 6d 70 5f 43  |3..|# .. "Wimp_C|
00000430  72 65 61 74 65 49 63 6f  6e 22 2c 2c 71 25 20 b8  |reateIcon",,q% .|
00000440  20 69 63 25 0d 01 86 09  20 3d 69 63 25 0d 01 90  | ic%.... =ic%...|
00000450  06 20 3a 0d 01 9a 1d 20  dd 20 f2 49 63 6f 6e 42  |. :.... . .IconB|
00000460  61 72 28 4c 6f 72 52 2c  53 70 72 69 74 65 24 29  |ar(LorR,Sprite$)|
00000470  0d 01 a4 2d 20 21 71 25  3d 4c 6f 72 52 3a 71 25  |...- !q%=LorR:q%|
00000480  21 34 3d 30 3a 71 25 21  38 3d 30 3a 71 25 21 31  |!4=0:q%!8=0:q%!1|
00000490  32 3d 36 38 3a 71 25 21  31 36 3d 36 38 0d 01 ae  |2=68:q%!16=68...|
000004a0  45 20 71 25 21 32 30 3d  26 32 30 30 32 3a 24 28  |E q%!20=&2002:$(|
000004b0  71 25 2b 32 34 29 3d 53  70 72 69 74 65 24 3a c8  |q%+24)=Sprite$:.|
000004c0  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 49 63  |. "Wimp_CreateIc|
000004d0  6f 6e 22 2c 2c 71 25 20  b8 20 69 63 6f 6e 62 61  |on",,q% . iconba|
000004e0  72 25 0d 01 b8 06 20 e1  0d 01 c2 06 20 3a 0d 01  |r%.... ..... :..|
000004f0  cc 4f 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.O . -----------|
00000500  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000510  20 4c 6f 61 64 20 49 6e  20 54 65 6d 70 6c 61 74  | Load In Templat|
00000520  65 73 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |es -------------|
00000530  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 01 d6  |-------------...|
00000540  06 20 3a 0d 01 e0 15 20  dd 20 a4 74 65 6d 70 6c  |. :.... . .templ|
00000550  61 74 65 28 69 64 24 29  0d 01 ea 11 20 ea 20 68  |ate(id$).... . h|
00000560  61 6e 64 6c 65 2c 70 6f  73 0d 01 f4 10 20 6d 61  |andle,pos.... ma|
00000570  78 77 73 25 3d 26 37 35  30 0d 01 fe 11 20 de 20  |xws%=&750.... . |
00000580  77 73 25 20 6d 61 78 77  73 25 0d 02 08 49 20 c8  |ws% maxws%...I .|
00000590  99 20 22 57 69 6d 70 5f  4c 6f 61 64 54 65 6d 70  |. "Wimp_LoadTemp|
000005a0  6c 61 74 65 22 2c 2c 71  25 2c 77 73 25 2c 77 73  |late",,q%,ws%,ws|
000005b0  25 2b 6d 61 78 77 73 25  2c 2d 31 2c 69 64 24 2c  |%+maxws%,-1,id$,|
000005c0  30 20 b8 20 2c 2c 63 75  72 77 73 25 2c 2c 2c 2c  |0 . ,,curws%,,,,|
000005d0  70 6f 73 0d 02 12 31 20  e7 20 70 6f 73 3d 30 20  |pos...1 . pos=0 |
000005e0  8c 20 85 20 31 2c 22 54  65 6d 70 6c 61 74 65 20  |. . 1,"Template |
000005f0  27 22 2b 69 64 24 2b 22  27 20 6e 6f 74 20 66 6f  |'"+id$+"' not fo|
00000600  75 6e 64 22 0d 02 1c 28  20 c8 99 20 22 57 69 6d  |und"...( .. "Wim|
00000610  70 5f 43 72 65 61 74 65  57 69 6e 64 6f 77 22 2c  |p_CreateWindow",|
00000620  2c 71 25 20 b8 20 68 61  6e 64 6c 65 0d 02 26 0c  |,q% . handle..&.|
00000630  20 3d 68 61 6e 64 6c 65  0d 02 30 06 20 3a 0d 02  | =handle..0. :..|
00000640  3a 4e 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |:N . -----------|
00000650  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000660  20 57 69 6e 64 6f 77 20  43 6f 6e 74 72 6f 6c 65  | Window Controle|
00000670  72 73 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |rs -------------|
00000680  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 02 44 06  |------------..D.|
00000690  20 3a 0d 02 4e 3f 20 dd  20 f2 4f 70 65 6e 5f 57  | :..N? . .Open_W|
000006a0  69 6e 64 6f 77 28 68 61  6e 64 6c 65 25 2c 78 30  |indow(handle%,x0|
000006b0  25 2c 79 30 25 2c 78 31  25 2c 79 31 25 2c 73 63  |%,y0%,x1%,y1%,sc|
000006c0  78 25 2c 73 63 79 25 2c  62 68 61 6e 64 6c 65 25  |x%,scy%,bhandle%|
000006d0  29 0d 02 58 15 20 e7 20  68 61 6e 64 6c 65 25 3d  |)..X. . handle%=|
000006e0  2d 31 20 8c 20 e1 0d 02  62 20 20 71 25 21 30 3d  |-1 . ...b  q%!0=|
000006f0  68 61 6e 64 6c 65 25 3a  71 25 21 32 38 3d 62 68  |handle%:q%!28=bh|
00000700  61 6e 64 6c 65 25 0d 02  6c 2a 20 71 25 21 34 3d  |andle%..l* q%!4=|
00000710  78 30 25 3a 71 25 21 38  3d 79 30 25 3a 71 25 21  |x0%:q%!8=y0%:q%!|
00000720  31 32 3d 78 31 25 3a 71  25 21 31 36 3d 79 31 25  |12=x1%:q%!16=y1%|
00000730  0d 02 76 1a 20 71 25 21  32 30 3d 73 63 78 25 3a  |..v. q%!20=scx%:|
00000740  71 25 21 32 34 3d 73 63  79 25 0d 02 80 1d 20 c8  |q%!24=scy%.... .|
00000750  99 20 22 57 69 6d 70 5f  4f 70 65 6e 57 69 6e 64  |. "Wimp_OpenWind|
00000760  6f 77 22 2c 2c 71 25 0d  02 8a 0e 20 e3 53 3d 31  |ow",,q%.... .S=1|
00000770  b8 6d 6d 61 78 0d 02 94  26 20 20 e7 20 68 61 6e  |.mmax...&  . han|
00000780  64 6c 65 25 3d 4d 61 69  6e 25 28 53 29 20 8c 20  |dle%=Main%(S) . |
00000790  6d 6f 70 65 6e 25 28 53  29 3d b9 0d 02 9e 08 20  |mopen%(S)=..... |
000007a0  ed 20 53 0d 02 a8 06 20  e1 0d 02 b2 06 20 3a 0d  |. S.... ..... :.|
000007b0  02 bc 1e 20 dd 20 f2 43  6c 6f 73 65 5f 57 69 6e  |... . .Close_Win|
000007c0  64 6f 77 28 63 68 61 6e  64 6c 65 25 29 0d 02 c6  |dow(chandle%)...|
000007d0  11 20 21 71 25 3d 63 68  61 6e 64 6c 65 25 0d 02  |. !q%=chandle%..|
000007e0  d0 1e 20 c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  |.. .. "Wimp_Clos|
000007f0  65 57 69 6e 64 6f 77 22  2c 2c 71 25 0d 02 da 0e  |eWindow",,q%....|
00000800  20 e3 53 3d 31 b8 6d 6d  61 78 0d 02 e4 27 20 20  | .S=1.mmax...'  |
00000810  e7 20 63 68 61 6e 64 6c  65 25 3d 4d 61 69 6e 25  |. chandle%=Main%|
00000820  28 53 29 20 8c 20 6d 6f  70 65 6e 25 28 53 29 3d  |(S) . mopen%(S)=|
00000830  a3 0d 02 ee 08 20 ed 20  53 0d 02 f8 0d 20 c8 97  |..... . S.... ..|
00000840  20 58 2c 59 2c 5a 0d 03  02 0e 20 e3 53 3d 31 b8  | X,Y,Z.... .S=1.|
00000850  6d 6d 61 78 0d 03 0c 7a  20 e7 20 63 68 61 6e 64  |mmax...z . chand|
00000860  6c 65 25 3d 4d 61 69 6e  25 28 53 29 20 80 20 5a  |le%=Main%(S) . Z|
00000870  3d 31 20 80 20 53 3e 31  20 80 20 6d 6f 70 65 6e  |=1 . S>1 . mopen|
00000880  25 28 53 2d 31 29 3d a3  20 8c 20 f2 4f 70 65 6e  |%(S-1)=. . .Open|
00000890  5f 57 69 6e 64 6f 77 28  4d 61 69 6e 25 28 53 2d  |_Window(Main%(S-|
000008a0  31 29 2c 30 2b 28 49 2a  32 30 29 2c 34 35 2c 31  |1),0+(I*20),45,1|
000008b0  32 37 38 2c 38 30 35 2c  71 25 21 32 30 2c 71 25  |278,805,q%!20,q%|
000008c0  21 32 34 2c 2d 31 29 3a  53 3d 6d 6d 61 78 0d 03  |!24,-1):S=mmax..|
000008d0  16 08 20 ed 20 53 0d 03  20 06 20 e1 0d 03 2a 06  |.. . S.. . ...*.|
000008e0  20 3a 0d 03 34 22 20 dd  20 f2 64 65 6c 65 74 65  | :..4" . .delete|
000008f0  69 63 6f 6e 28 64 68 61  6e 64 6c 65 25 2c 69 63  |icon(dhandle%,ic|
00000900  6f 6e 25 29 0d 03 3e 37  20 21 71 25 3d 64 68 61  |on%)..>7 !q%=dha|
00000910  6e 64 6c 65 25 3a 71 25  21 34 3d 69 63 6f 6e 25  |ndle%:q%!4=icon%|
00000920  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 49 63 6f  |:.. "Wimp_GetIco|
00000930  6e 53 74 61 74 65 22 2c  2c 71 25 0d 03 48 1d 20  |nState",,q%..H. |
00000940  c8 99 20 22 57 69 6d 70  5f 44 65 6c 65 74 65 49  |.. "Wimp_DeleteI|
00000950  63 6f 6e 22 2c 2c 71 25  0d 03 52 35 20 c8 99 20  |con",,q%..R5 .. |
00000960  22 57 69 6d 70 5f 46 6f  72 63 65 52 65 64 72 61  |"Wimp_ForceRedra|
00000970  77 22 2c 21 71 25 2c 71  25 21 38 2c 71 25 21 31  |w",!q%,q%!8,q%!1|
00000980  32 2c 71 25 21 31 36 2c  71 25 21 32 30 0d 03 5c  |2,q%!16,q%!20..\|
00000990  06 20 e1 0d 03 66 06 20  3a 0d 03 70 34 20 dd a4  |. ...f. :..p4 ..|
000009a0  69 63 6f 6e 5f 6e 65 77  73 70 72 69 74 65 28 68  |icon_newsprite(h|
000009b0  61 6e 64 6c 65 25 2c 69  63 6f 6e 25 2c 6e 65 77  |andle%,icon%,new|
000009c0  6e 61 6d 65 24 2c 72 65  64 72 61 77 29 0d 03 7a  |name$,redraw)..z|
000009d0  15 20 62 6c 6f 63 6b 25  21 30 3d 68 61 6e 64 6c  |. block%!0=handl|
000009e0  65 25 0d 03 84 13 20 62  6c 6f 63 6b 25 21 34 3d  |e%.... block%!4=|
000009f0  69 63 6f 6e 25 0d 03 8e  23 20 c8 99 20 22 57 69  |icon%...# .. "Wi|
00000a00  6d 70 5f 47 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_GetIconState"|
00000a10  2c 2c 62 6c 6f 63 6b 25  0d 03 98 21 20 c8 99 20  |,,block%...! .. |
00000a20  22 57 69 6d 70 5f 44 65  6c 65 74 65 49 63 6f 6e  |"Wimp_DeleteIcon|
00000a30  22 2c 2c 62 6c 6f 63 6b  25 0d 03 a2 16 20 62 6c  |",,block%.... bl|
00000a40  6f 63 6b 25 21 34 3d 62  6c 6f 63 6b 25 21 38 0d  |ock%!4=block%!8.|
00000a50  03 ac 17 20 62 6c 6f 63  6b 25 21 38 3d 62 6c 6f  |... block%!8=blo|
00000a60  63 6b 25 21 31 32 0d 03  b6 18 20 62 6c 6f 63 6b  |ck%!12.... block|
00000a70  25 21 31 32 3d 62 6c 6f  63 6b 25 21 31 36 0d 03  |%!12=block%!16..|
00000a80  c0 18 20 62 6c 6f 63 6b  25 21 31 36 3d 62 6c 6f  |.. block%!16=blo|
00000a90  63 6b 25 21 32 30 0d 03  ca 14 20 62 6c 6f 63 6b  |ck%!20.... block|
00000aa0  25 21 32 30 3d 26 33 30  30 32 0d 03 d4 1a 20 24  |%!20=&3002.... $|
00000ab0  28 62 6c 6f 63 6b 25 2b  32 34 29 3d 6e 65 77 6e  |(block%+24)=newn|
00000ac0  61 6d 65 24 0d 03 de 29  20 c8 99 20 22 57 69 6d  |ame$...) .. "Wim|
00000ad0  70 5f 43 72 65 61 74 65  49 63 6f 6e 22 2c 2c 62  |p_CreateIcon",,b|
00000ae0  6c 6f 63 6b 25 20 b8 20  69 63 6f 6e 25 0d 03 e8  |lock% . icon%...|
00000af0  54 20 e7 20 72 65 64 72  61 77 20 8c 20 c8 99 20  |T . redraw . .. |
00000b00  22 57 69 6d 70 5f 46 6f  72 63 65 52 65 64 72 61  |"Wimp_ForceRedra|
00000b10  77 22 2c 62 6c 6f 63 6b  25 21 30 2c 62 6c 6f 63  |w",block%!0,bloc|
00000b20  6b 25 21 34 2c 62 6c 6f  63 6b 25 21 38 2c 62 6c  |k%!4,block%!8,bl|
00000b30  6f 63 6b 25 21 31 32 2c  62 6c 6f 63 6b 25 21 31  |ock%!12,block%!1|
00000b40  36 0d 03 f2 0b 20 3d 69  63 6f 6e 25 0d 03 fc 06  |6.... =icon%....|
00000b50  20 3a 0d 04 06 16 20 dd  20 f2 66 72 6f 6e 74 28  | :.... . .front(|
00000b60  68 61 6e 64 6c 65 25 29  0d 04 10 2d 20 21 71 25  |handle%)...- !q%|
00000b70  3d 68 61 6e 64 6c 65 25  3a c8 99 20 22 57 69 6d  |=handle%:.. "Wim|
00000b80  70 5f 47 65 74 57 69 6e  64 6f 77 53 74 61 74 65  |p_GetWindowState|
00000b90  22 2c 2c 71 25 0d 04 1a  26 20 71 25 21 32 38 3d  |",,q%...& q%!28=|
00000ba0  2d 31 3a c8 99 20 22 57  69 6d 70 5f 4f 70 65 6e  |-1:.. "Wimp_Open|
00000bb0  57 69 6e 64 6f 77 22 2c  2c 71 25 0d 04 24 06 20  |Window",,q%..$. |
00000bc0  e1 0d 04 2e 06 20 3a 0d  04 38 15 20 dd 20 f2 67  |..... :..8. . .g|
00000bd0  65 74 77 28 68 61 6e 64  6c 65 25 29 0d 04 42 2d  |etw(handle%)..B-|
00000be0  20 21 71 25 3d 68 61 6e  64 6c 65 25 3a c8 99 20  | !q%=handle%:.. |
00000bf0  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 53  |"Wimp_GetWindowS|
00000c00  74 61 74 65 22 2c 2c 71  25 0d 04 4c 10 20 f2 69  |tate",,q%..L. .i|
00000c10  6e 66 6f 28 71 25 2b 34  29 0d 04 56 06 20 e1 0d  |nfo(q%+4)..V. ..|
00000c20  04 60 06 20 3a 0d 04 6a  13 20 dd 20 f2 67 65 74  |.`. :..j. . .get|
00000c30  69 28 68 25 2c 69 25 29  0d 04 74 2e 20 21 71 25  |i(h%,i%)..t. !q%|
00000c40  3d 68 25 3a 71 25 21 34  3d 69 25 3a c8 99 20 22  |=h%:q%!4=i%:.. "|
00000c50  57 69 6d 70 5f 47 65 74  49 63 6f 6e 53 74 61 74  |Wimp_GetIconStat|
00000c60  65 22 2c 2c 71 25 0d 04  7e 2f 20 69 78 30 25 3d  |e",,q%..~/ ix0%=|
00000c70  71 25 21 38 3a 69 79 30  25 3d 71 25 21 31 32 3a  |q%!8:iy0%=q%!12:|
00000c80  69 78 31 25 3d 71 25 21  31 36 3a 69 79 31 25 3d  |ix1%=q%!16:iy1%=|
00000c90  71 25 21 32 30 0d 04 88  1f 20 69 66 6c 61 67 73  |q%!20.... iflags|
00000ca0  25 3d 71 25 21 32 34 3a  69 64 61 74 61 25 3d 71  |%=q%!24:idata%=q|
00000cb0  25 2b 32 38 0d 04 92 06  20 e1 0d 04 9c 06 20 3a  |%+28.... ..... :|
00000cc0  0d 04 a6 12 20 dd 20 f2  67 65 74 70 6f 69 6e 74  |.... . .getpoint|
00000cd0  65 72 0d 04 b0 21 20 c8  99 20 22 57 69 6d 70 5f  |er...! .. "Wimp_|
00000ce0  47 65 74 50 6f 69 6e 74  65 72 49 6e 66 6f 22 2c  |GetPointerInfo",|
00000cf0  2c 71 25 0d 04 ba 2b 20  6d 6f 75 73 65 78 25 3d  |,q%...+ mousex%=|
00000d00  21 71 25 3a 6d 6f 75 73  65 79 25 3d 71 25 21 34  |!q%:mousey%=q%!4|
00000d10  3a 62 75 74 74 6f 6e 73  25 3d 71 25 21 38 0d 04  |:buttons%=q%!8..|
00000d20  c4 1e 20 68 61 6e 64 6c  65 25 3d 71 25 21 31 32  |.. handle%=q%!12|
00000d30  3a 69 63 6f 6e 25 3d 71  25 21 31 36 0d 04 ce 06  |:icon%=q%!16....|
00000d40  20 e1 0d 04 d8 06 20 3a  0d 04 e2 10 20 dd 20 f2  | ..... :.... . .|
00000d50  69 6e 66 6f 28 70 25 29  0d 04 ec 28 20 78 30 25  |info(p%)...( x0%|
00000d60  3d 21 70 25 3a 79 30 25  3d 70 25 21 34 3a 78 31  |=!p%:y0%=p%!4:x1|
00000d70  25 3d 70 25 21 38 3a 79  31 25 3d 70 25 21 31 32  |%=p%!8:y1%=p%!12|
00000d80  0d 04 f6 36 20 73 63 78  25 3d 70 25 21 31 36 3a  |...6 scx%=p%!16:|
00000d90  73 63 79 25 3d 70 25 21  32 30 3a 62 68 61 6e 64  |scy%=p%!20:bhand|
00000da0  6c 65 25 3d 70 25 21 32  34 3a 66 6c 61 67 73 25  |le%=p%!24:flags%|
00000db0  3d 70 25 21 32 38 0d 05  00 4c 20 62 78 25 3d 78  |=p%!28...L bx%=x|
00000dc0  30 25 2d 73 63 78 25 3a  62 79 25 3d 79 31 25 2d  |0%-scx%:by%=y1%-|
00000dd0  73 63 79 25 20 3a 20 f4  20 61 6c 6c 20 64 72 61  |scy% : . all dra|
00000de0  77 69 6e 67 20 73 68 6f  75 6c 64 20 62 65 20 72  |wing should be r|
00000df0  65 6c 61 74 69 76 65 20  74 6f 20 62 78 25 2c 62  |elative to bx%,b|
00000e00  79 25 0d 05 0a 06 20 e1  0d 05 14 06 20 3a 0d 05  |y%.... ..... :..|
00000e10  1e 4f 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.O . -----------|
00000e20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000e30  20 57 69 6d 70 20 4d 65  6e 75 20 50 72 6f 63 65  | Wimp Menu Proce|
00000e40  64 75 72 65 73 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |dures ----------|
00000e50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 05 28  |-------------..(|
00000e60  06 20 3a 0d 05 32 18 20  dd 20 f2 53 65 74 55 70  |. :..2. . .SetUp|
00000e70  49 63 6f 6e 42 61 72 49  6e 66 6f 0d 05 3c 38 20  |IconBarInfo..<8 |
00000e80  77 62 63 6f 6c 3d 26 33  3a 74 62 63 6f 6c 3d 26  |wbcol=&3:tbcol=&|
00000e90  32 3a 73 63 6f 3d 26 33  3a 6d 62 63 6f 6c 3d 26  |2:sco=&3:mbcol=&|
00000ea0  30 3a 77 66 63 6f 6c 3d  26 37 3a 74 66 63 6f 6c  |0:wfcol=&7:tfcol|
00000eb0  3d 26 37 0d 05 46 3a 20  73 63 69 3d 26 44 3a 74  |=&7..F: sci=&D:t|
00000ec0  62 63 6f 6c 32 3d 26 43  3a 62 6c 61 63 6b 3d 26  |bcol2=&C:black=&|
00000ed0  37 3a 77 68 69 74 65 3d  26 30 3a 63 79 61 6e 3d  |7:white=&0:cyan=|
00000ee0  39 3a 6c 69 67 68 74 67  72 65 79 3d 31 0d 05 50  |9:lightgrey=1..P|
00000ef0  14 20 de 20 6d 65 6e 75  62 75 66 25 20 31 30 30  |. . menubuf% 100|
00000f00  30 0d 05 5a 06 20 e1 0d  05 64 06 20 3a 0d 05 6e  |0..Z. ...d. :..n|
00000f10  35 20 dd 20 f2 64 6f 6d  65 6e 75 28 68 61 6e 64  |5 . .domenu(hand|
00000f20  6c 65 25 2c 6d 65 6e 75  70 74 72 25 2c 6d 65 6e  |le%,menuptr%,men|
00000f30  75 24 2c 6d 65 6e 75 74  69 74 6c 65 24 2c 78 2c  |u$,menutitle$,x,|
00000f40  79 29 0d 05 78 13 20 ea  20 64 75 6d 6d 79 25 2c  |y)..x. . dummy%,|
00000f50  6e 65 78 74 25 0d 05 82  28 20 6e 65 78 74 25 3d  |next%...( next%=|
00000f60  6d 65 6e 75 70 74 72 25  2b 34 3a 6d 65 6e 75 70  |menuptr%+4:menup|
00000f70  74 72 25 21 30 3d 68 61  6e 64 6c 65 25 0d 05 8c  |tr%!0=handle%...|
00000f80  28 20 64 75 6d 6d 79 25  3d a4 63 5f 6d 28 6e 65  |( dummy%=.c_m(ne|
00000f90  78 74 25 2c 6d 65 6e 75  24 2c 6d 65 6e 75 74 69  |xt%,menu$,menuti|
00000fa0  74 6c 65 24 29 0d 05 96  25 20 c8 99 20 22 57 69  |tle$)...% .. "Wi|
00000fb0  6d 70 5f 43 72 65 61 74  65 4d 65 6e 75 22 2c 2c  |mp_CreateMenu",,|
00000fc0  64 75 6d 6d 79 25 2c 78  2c 79 0d 05 a0 06 20 e1  |dummy%,x,y.... .|
00000fd0  0d 05 aa 06 20 3a 0d 05  b4 26 20 dd 20 a4 63 5f  |.... :...& . .c_|
00000fe0  6d 28 6d 65 6e 75 70 74  72 25 2c 6d 65 6e 75 24  |m(menuptr%,menu$|
00000ff0  2c 6d 65 6e 75 74 69 74  6c 65 24 29 0d 05 be 19  |,menutitle$)....|
00001000  20 ea 20 69 25 2c 63 61  6c 6c 25 2c 69 74 65 6d  | . i%,call%,item|
00001010  24 2c 77 2c 6c 0d 05 c8  2b 20 63 61 6c 6c 25 3d  |$,w,l...+ call%=|
00001020  6d 65 6e 75 70 74 72 25  3a 77 3d a9 6d 65 6e 75  |menuptr%:w=.menu|
00001030  74 69 74 6c 65 24 3a 6e  65 78 74 25 2b 3d 35 32  |title$:next%+=52|
00001040  0d 05 d2 12 20 e3 20 69  25 3d 30 b8 a9 6d 65 6e  |.... . i%=0..men|
00001050  75 24 0d 05 dc 25 20 20  20 e7 20 c1 6d 65 6e 75  |u$...%   . .menu|
00001060  24 2c 69 25 2c 31 29 3d  22 2c 22 20 8c 20 6e 65  |$,i%,1)="," . ne|
00001070  78 74 25 2b 3d 32 34 0d  05 e6 06 20 ed 0d 05 f0  |xt%+=24.... ....|
00001080  2d 20 69 25 3d 30 3a 6d  65 6e 75 70 74 72 25 21  |- i%=0:menuptr%!|
00001090  32 30 3d 34 30 3a 24 6d  65 6e 75 70 74 72 25 3d  |20=40:$menuptr%=|
000010a0  6d 65 6e 75 74 69 74 6c  65 24 0d 05 fa 48 20 6d  |menutitle$...H m|
000010b0  65 6e 75 70 74 72 25 3f  31 32 3d 74 66 63 6f 6c  |enuptr%?12=tfcol|
000010c0  3a 6d 65 6e 75 70 74 72  25 3f 31 33 3d 32 3a 6d  |:menuptr%?13=2:m|
000010d0  65 6e 75 70 74 72 25 3f  31 34 3d 77 66 63 6f 6c  |enuptr%?14=wfcol|
000010e0  3a 6d 65 6e 75 70 74 72  25 3f 31 35 3d 6d 62 63  |:menuptr%?15=mbc|
000010f0  6f 6c 0d 06 04 1f 20 6d  65 6e 75 70 74 72 25 21  |ol.... menuptr%!|
00001100  32 34 3d 30 3a 6d 65 6e  75 70 74 72 25 2b 3d 32  |24=0:menuptr%+=2|
00001110  38 0d 06 0e 06 20 f5 0d  06 18 44 20 20 20 69 74  |8.... ....D   it|
00001120  65 6d 24 3d a4 70 61 72  28 6d 65 6e 75 24 2c 22  |em$=.par(menu$,"|
00001130  2c 22 2c 69 25 29 3a 6d  65 6e 75 70 74 72 25 3d  |,",i%):menuptr%=|
00001140  a4 6d 65 6e 75 69 74 65  6d 28 6d 65 6e 75 70 74  |.menuitem(menupt|
00001150  72 25 2c 69 74 65 6d 24  2c 6c 29 0d 06 22 12 20  |r%,item$,l)..". |
00001160  20 20 77 3d a4 6d 61 78  28 6c 2c 77 29 0d 06 2c  |  w=.max(l,w)..,|
00001170  0f 20 fd 20 69 74 65 6d  24 3d 22 22 0d 06 36 15  |. . item$=""..6.|
00001180  20 63 61 6c 6c 25 21 31  36 3d 31 36 2a 77 2b 31  | call%!16=16*w+1|
00001190  32 0d 06 40 24 20 6d 65  6e 75 70 74 72 25 21 2d  |2..@$ menuptr%!-|
000011a0  32 34 3d 28 6d 65 6e 75  70 74 72 25 21 2d 32 34  |24=(menuptr%!-24|
000011b0  29 84 26 38 30 0d 06 4a  0b 20 3d 63 61 6c 6c 25  |).&80..J. =call%|
000011c0  0d 06 54 06 20 3a 0d 06  5e 20 20 dd 20 a4 6d 65  |..T. :..^  . .me|
000011d0  6e 75 69 74 65 6d 28 70  74 72 25 2c 74 65 78 74  |nuitem(ptr%,text|
000011e0  24 2c f8 20 6c 29 0d 06  68 15 20 e7 20 74 65 78  |$,. l)..h. . tex|
000011f0  74 24 3d 22 22 20 3d 70  74 72 25 0d 06 72 10 20  |t$="" =ptr%..r. |
00001200  ea 20 61 2c 74 24 2c 74  65 78 74 0d 06 7c 0b 20  |. a,t$,text..|. |
00001210  74 65 78 74 3d b9 0d 06  86 36 20 70 61 64 24 3d  |text=....6 pad$=|
00001220  22 20 20 20 22 3a 61 3d  30 3a 21 70 74 72 25 3d  |"   ":a=0:!ptr%=|
00001230  30 3a 70 74 72 25 21 38  3d 26 30 37 30 30 30 30  |0:ptr%!8=&070000|
00001240  32 31 3a 70 74 72 25 21  34 3d 2d 31 0d 06 90 33  |21:ptr%!4=-1...3|
00001250  20 e7 20 c0 74 65 78 74  24 2c 31 29 3d 22 3a 22  | . .text$,1)=":"|
00001260  21 70 74 72 25 3d 21 70  74 72 25 20 84 20 32 3a  |!ptr%=!ptr% . 2:|
00001270  74 65 78 74 24 3d c1 74  65 78 74 24 2c 32 29 0d  |text$=.text$,2).|
00001280  06 9a 38 20 e7 20 c0 74  65 78 74 24 2c 31 29 3d  |..8 . .text$,1)=|
00001290  22 3c 22 70 74 72 25 21  38 3d 70 74 72 25 21 38  |"<"ptr%!8=ptr%!8|
000012a0  20 84 20 32 5e 32 32 3a  74 65 78 74 24 3d c1 74  | . 2^22:text$=.t|
000012b0  65 78 74 24 2c 32 29 0d  06 a4 37 20 e7 20 c0 74  |ext$,2)...7 . .t|
000012c0  65 78 74 24 2c 31 29 3d  22 40 22 21 70 74 72 25  |ext$,1)="@"!ptr%|
000012d0  3d 21 6d 65 6e 75 70 74  72 25 20 84 20 31 3a 74  |=!menuptr% . 1:t|
000012e0  65 78 74 24 3d c1 74 65  78 74 24 2c 32 29 0d 06  |ext$=.text$,2)..|
000012f0  ae 16 20 e7 20 c0 74 65  78 74 24 2c 31 29 3d 22  |.. . .text$,1)="|
00001300  60 22 20 8c 0d 06 b8 27  20 20 20 74 65 78 74 24  |`" ....'   text$|
00001310  3d c1 74 65 78 74 24 2c  32 29 3a 70 74 72 25 21  |=.text$,2):ptr%!|
00001320  38 3d 26 30 37 30 30 30  31 32 31 0d 06 c2 2b 20  |8=&07000121...+ |
00001330  20 20 21 70 74 72 25 3d  21 70 74 72 25 20 84 20  |  !ptr%=!ptr% . |
00001340  34 3a 74 24 3d a4 70 61  72 28 74 65 78 74 24 2c  |4:t$=.par(text$,|
00001350  22 5c 22 2c 61 29 0d 06  cc 29 20 20 20 70 74 72  |"\",a)...)   ptr|
00001360  25 21 31 32 3d a0 28 74  24 29 3a 74 24 3d a4 70  |%!12=.(t$):t$=.p|
00001370  61 72 28 74 65 78 74 24  2c 22 5c 22 2c 61 29 0d  |ar(text$,"\",a).|
00001380  06 d6 29 20 20 20 70 74  72 25 21 31 36 3d a0 28  |..)   ptr%!16=.(|
00001390  74 24 29 3a 74 24 3d a4  70 61 72 28 74 65 78 74  |t$):t$=.par(text|
000013a0  24 2c 22 5c 22 2c 61 29  0d 06 e0 24 20 20 20 70  |$,"\",a)...$   p|
000013b0  74 72 25 21 32 30 3d a0  28 74 24 29 3a 74 65 78  |tr%!20=.(t$):tex|
000013c0  74 3d a3 3a 74 65 78 74  24 3d 22 22 0d 06 ea 06  |t=.:text$=""....|
000013d0  20 cd 0d 06 f4 16 20 e7  20 c0 74 65 78 74 24 2c  | ..... . .text$,|
000013e0  31 29 3d 22 3e 22 20 8c  0d 06 fe 2b 20 20 20 74  |1)=">" ....+   t|
000013f0  65 78 74 24 3d c1 74 65  78 74 24 2c 32 29 3a 74  |ext$=.text$,2):t|
00001400  24 3d a4 70 61 72 28 74  65 78 74 24 2c 22 2e 22  |$=.par(text$,"."|
00001410  2c 61 29 0d 07 08 2b 20  20 20 70 74 72 25 21 34  |,a)...+   ptr%!4|
00001420  3d a0 28 a4 70 61 72 28  74 65 78 74 24 2c 22 2e  |=.(.par(text$,".|
00001430  22 2c 61 29 29 3a 74 65  78 74 24 3d 74 24 0d 07  |",a)):text$=t$..|
00001440  12 06 20 cd 0d 07 1c 16  20 e7 20 c0 74 65 78 74  |.. ..... . .text|
00001450  24 2c 31 29 3d 22 7e 22  20 8c 0d 07 26 2b 20 20  |$,1)="~" ...&+  |
00001460  20 74 65 78 74 24 3d c1  74 65 78 74 24 2c 32 29  | text$=.text$,2)|
00001470  3a 74 24 3d a4 70 61 72  28 74 65 78 74 24 2c 22  |:t$=.par(text$,"|
00001480  5c 22 2c 61 29 0d 07 30  53 20 20 20 70 74 72 25  |\",a)..0S   ptr%|
00001490  21 34 3d a0 28 22 46 4e  63 5f 6d 28 6e 65 78 74  |!4=.("FNc_m(next|
000014a0  25 2c 22 2b a4 70 61 72  28 74 65 78 74 24 2c 22  |%,"+.par(text$,"|
000014b0  5c 22 2c 61 29 2b 22 2c  22 2b bd 33 34 2b a4 70  |\",a)+","+.34+.p|
000014c0  61 72 28 74 65 78 74 24  2c 22 5c 22 2c 61 29 2b  |ar(text$,"\",a)+|
000014d0  bd 33 34 2b 22 29 22 29  0d 07 3a 0f 20 20 20 74  |.34+")")..:.   t|
000014e0  65 78 74 24 3d 74 24 0d  07 44 06 20 cd 0d 07 4e  |ext$=t$..D. ...N|
000014f0  1e 20 e7 20 74 65 78 74  20 8c 20 24 28 70 74 72  |. . text . $(ptr|
00001500  25 2b 31 32 29 3d 74 65  78 74 24 0d 07 58 0d 20  |%+12)=text$..X. |
00001510  6c 3d a9 74 65 78 74 24  0d 07 62 0d 20 3d 70 74  |l=.text$..b. =pt|
00001520  72 25 2b 32 34 0d 07 6c  06 20 3a 0d 07 76 18 20  |r%+24..l. :..v. |
00001530  dd 20 a4 6d 65 6d 74 6f  73 74 72 28 70 74 72 2c  |. .memtostr(ptr,|
00001540  6d 6c 29 0d 07 80 18 20  ea 20 66 24 2c 6d 61 78  |ml).... . f$,max|
00001550  3a 6d 61 78 3d 70 74 72  2b 6d 6c 0d 07 8a 28 20  |:max=ptr+ml...( |
00001560  c8 95 20 3f 70 74 72 20  80 20 70 74 72 3c 3d 6d  |.. ?ptr . ptr<=m|
00001570  61 78 20 66 24 2b 3d bd  3f 70 74 72 3a 70 74 72  |ax f$+=.?ptr:ptr|
00001580  2b 3d 31 0d 07 94 06 20  ce 0d 07 9e 08 20 3d 66  |+=1.... ..... =f|
00001590  24 0d 07 a8 06 20 3a 0d  07 b2 17 20 dd 20 a4 70  |$.... :.... . .p|
000015a0  61 72 28 61 24 2c 73 24  2c f8 20 69 25 29 0d 07  |ar(a$,s$,. i%)..|
000015b0  bc 0a 20 ea 20 69 31 25  0d 07 c6 1f 20 69 31 25  |.. . i1%.... i1%|
000015c0  3d 69 25 2b 31 3a 69 25  3d a7 61 24 2b 73 24 2c  |=i%+1:i%=.a$+s$,|
000015d0  73 24 2c 69 31 25 29 0d  07 d0 15 20 3d c1 61 24  |s$,i1%).... =.a$|
000015e0  2c 69 31 25 2c 69 25 2d  69 31 25 29 0d 07 da 06  |,i1%,i%-i1%)....|
000015f0  20 3a 0d 07 e4 1b 20 dd  20 a4 6d 61 78 28 61 2c  | :.... . .max(a,|
00001600  62 29 3a e7 61 3e 62 3d  61 20 8b 3d 62 0d 07 ee  |b):.a>b=a .=b...|
00001610  06 20 3a 0d 07 f8 1b 20  dd 20 a4 6d 69 6e 28 61  |. :.... . .min(a|
00001620  2c 62 29 3a e7 61 3c 62  3d 61 20 8b 3d 62 0d 08  |,b):.a<b=a .=b..|
00001630  02 06 20 3a 0d 08 0c 1a  20 dd 20 a4 69 63 6f 6e  |.. :.... . .icon|
00001640  73 74 61 74 65 28 77 68  25 2c 69 68 25 29 0d 08  |state(wh%,ih%)..|
00001650  16 16 20 71 25 21 30 3d  77 68 25 3a 71 25 21 34  |.. q%!0=wh%:q%!4|
00001660  3d 69 68 25 0d 08 20 1f  20 c8 99 20 22 57 69 6d  |=ih%.. . .. "Wim|
00001670  70 5f 47 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_GetIconState",|
00001680  2c 71 25 0d 08 2a 22 20  69 66 6c 67 25 3d 71 25  |,q%..*" iflg%=q%|
00001690  21 32 34 3a 69 66 6c 67  24 3d 22 26 22 2b c3 7e  |!24:iflg$="&"+.~|
000016a0  69 66 6c 67 25 0d 08 34  0b 20 3d 69 66 6c 67 24  |iflg%..4. =iflg$|
000016b0  0d 08 3e 06 20 3a 0d 08  48 37 20 dd f2 70 75 74  |..>. :..H7 ..put|
000016c0  5f 69 63 6f 6e 5f 74 65  78 74 28 71 25 2c 77 68  |_icon_text(q%,wh|
000016d0  61 6e 64 6c 65 25 2c 69  68 61 6e 64 6c 65 25 2c  |andle%,ihandle%,|
000016e0  64 61 74 61 24 2c 72 65  64 72 61 77 29 0d 08 52  |data$,redraw)..R|
000016f0  12 20 71 25 21 30 3d 77  68 61 6e 64 6c 65 25 0d  |. q%!0=whandle%.|
00001700  08 5c 12 20 71 25 21 34  3d 69 68 61 6e 64 6c 65  |.\. q%!4=ihandle|
00001710  25 0d 08 66 1f 20 c8 99  20 22 57 69 6d 70 5f 47  |%..f. .. "Wimp_G|
00001720  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 71 25  |etIconState",,q%|
00001730  0d 08 70 13 20 24 28 71  25 21 32 38 29 3d 64 61  |..p. $(q%!28)=da|
00001740  74 61 24 0d 08 7a 0f 20  e7 20 72 65 64 72 61 77  |ta$..z. . redraw|
00001750  20 8c 0d 08 84 3c 20 20  20 c8 99 20 22 57 69 6d  | ....<   .. "Wim|
00001760  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 77  |p_ForceRedraw",w|
00001770  68 61 6e 64 6c 65 25 2c  71 25 21 38 2c 71 25 21  |handle%,q%!8,q%!|
00001780  31 32 2c 71 25 21 31 36  2c 71 25 21 32 30 0d 08  |12,q%!16,q%!20..|
00001790  8e 06 20 cd 0d 08 98 06  20 e1 0d 08 a2 06 20 3a  |.. ..... ..... :|
000017a0  0d 08 ac 21 20 dd 20 a4  47 65 74 53 74 72 28 73  |...! . .GetStr(s|
000017b0  25 29 20 3a 20 f4 20 67  65 74 20 73 74 72 69 6e  |%) : . get strin|
000017c0  67 0d 08 b6 09 20 ea 20  6e 24 0d 08 c0 1b 20 c8  |g.... . n$.... .|
000017d0  95 3f 73 25 3a 6e 24 2b  3d bd 3f 73 25 3a 73 25  |.?s%:n$+=.?s%:s%|
000017e0  2b 3d 31 3a ce 0d 08 ca  08 20 3d 6e 24 0d 08 d4  |+=1:..... =n$...|
000017f0  06 20 3a 0d 08 de 31 20  dd f2 72 65 70 6f 72 74  |. :...1 ..report|
00001800  28 6c 69 6e 65 31 24 2c  6c 69 6e 65 32 24 2c 6c  |(line1$,line2$,l|
00001810  69 6e 65 33 24 2c 6c 69  6e 65 34 24 2c 6c 69 6e  |ine3$,line4$,lin|
00001820  65 35 24 29 0d 08 e8 0f  20 ef 36 3a ff 22 53 48  |e5$).... .6:."SH|
00001830  55 54 22 0d 08 f2 43 20  f4 20 49 46 20 45 52 52  |UT"...C . IF ERR|
00001840  3d 36 37 37 39 38 20 54  48 45 4e 20 6c 69 6e 65  |=67798 THEN line|
00001850  35 24 3d 22 50 6c 65 61  73 65 20 63 68 65 63 6b  |5$="Please check|
00001860  20 79 6f 75 72 20 73 61  76 65 20 66 69 6c 65 20  | your save file |
00001870  70 61 74 68 2e 22 0d 08  fc 40 20 e7 20 9f 3d 32  |path."...@ . .=2|
00001880  30 20 8c 20 6c 69 6e 65  35 24 3d 22 49 27 6d 20  |0 . line5$="I'm |
00001890  6e 6f 74 20 45 69 6e 73  74 65 69 6e 20 79 6f 75  |not Einstein you|
000018a0  20 6e 6f 77 2e 20 55 73  65 20 73 6d 61 6c 6c 20  | now. Use small |
000018b0  6c 69 6e 65 73 22 0d 09  06 19 20 c8 99 20 22 48  |lines".... .. "H|
000018c0  6f 75 72 67 6c 61 73 73  5f 53 6d 61 73 68 22 0d  |ourglass_Smash".|
000018d0  09 10 2b 20 f2 70 75 74  5f 69 63 6f 6e 5f 74 65  |..+ .put_icon_te|
000018e0  78 74 28 71 25 2c 52 65  70 6f 72 74 25 2c 34 2c  |xt(q%,Report%,4,|
000018f0  6c 69 6e 65 31 24 2c 2d  31 29 0d 09 1a 2b 20 f2  |line1$,-1)...+ .|
00001900  70 75 74 5f 69 63 6f 6e  5f 74 65 78 74 28 71 25  |put_icon_text(q%|
00001910  2c 52 65 70 6f 72 74 25  2c 35 2c 6c 69 6e 65 32  |,Report%,5,line2|
00001920  24 2c 2d 31 29 0d 09 24  2b 20 f2 70 75 74 5f 69  |$,-1)..$+ .put_i|
00001930  63 6f 6e 5f 74 65 78 74  28 71 25 2c 52 65 70 6f  |con_text(q%,Repo|
00001940  72 74 25 2c 36 2c 6c 69  6e 65 33 24 2c 2d 31 29  |rt%,6,line3$,-1)|
00001950  0d 09 2e 2b 20 f2 70 75  74 5f 69 63 6f 6e 5f 74  |...+ .put_icon_t|
00001960  65 78 74 28 71 25 2c 52  65 70 6f 72 74 25 2c 37  |ext(q%,Report%,7|
00001970  2c 6c 69 6e 65 34 24 2c  2d 31 29 0d 09 38 2b 20  |,line4$,-1)..8+ |
00001980  f2 70 75 74 5f 69 63 6f  6e 5f 74 65 78 74 28 71  |.put_icon_text(q|
00001990  25 2c 52 65 70 6f 72 74  25 2c 38 2c 6c 69 6e 65  |%,Report%,8,line|
000019a0  35 24 2c 2d 31 29 0d 09  42 38 20 f2 4f 70 65 6e  |5$,-1)..B8 .Open|
000019b0  5f 57 69 6e 64 6f 77 28  52 65 70 6f 72 74 25 2c  |_Window(Report%,|
000019c0  32 35 30 2c 30 2c 39 30  30 30 2c 36 30 30 2c 71  |250,0,9000,600,q|
000019d0  25 21 32 30 2c 71 25 21  32 34 2c 2d 31 29 0d 09  |%!20,q%!24,-1)..|
000019e0  4c 0d 20 65 72 72 6f 72  25 3d b9 0d 09 56 06 20  |L. error%=...V. |
000019f0  e1 0d 09 60 06 20 3a 0d  09 6a 1e 20 dd 20 a4 5f  |...`. :..j. . ._|
00001a00  52 65 61 64 49 63 6f 6e  54 65 78 74 28 69 68 25  |ReadIconText(ih%|
00001a10  2c 77 68 25 29 0d 09 74  0e 20 ea 20 52 65 73 75  |,wh%)..t. . Resu|
00001a20  6c 74 24 0d 09 7e 0d 20  71 25 21 30 3d 77 68 25  |lt$..~. q%!0=wh%|
00001a30  0d 09 88 0d 20 71 25 21  34 3d 69 68 25 0d 09 92  |.... q%!4=ih%...|
00001a40  1f 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 49 63  |. .. "Wimp_GetIc|
00001a50  6f 6e 53 74 61 74 65 22  2c 2c 71 25 0d 09 9c 40  |onState",,q%...@|
00001a60  20 e7 20 28 71 25 21 32  34 20 80 20 28 31 3c 3c  | . (q%!24 . (1<<|
00001a70  38 29 29 3c 3e 30 20 8c  20 52 65 73 75 6c 74 24  |8))<>0 . Result$|
00001a80  3d 24 28 71 25 21 32 38  29 20 8b 20 52 65 73 75  |=$(q%!28) . Resu|
00001a90  6c 74 24 3d 24 28 71 25  2b 32 38 29 0d 09 a6 0d  |lt$=$(q%+28)....|
00001aa0  20 3d 52 65 73 75 6c 74  24 0d 09 b0 06 20 3a 0d  | =Result$.... :.|
00001ab0  09 ba 4f 20 f4 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..O . ----------|
00001ac0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001ad0  2d 20 44 72 61 67 20 42  6f 78 20 50 72 6f 63 27  |- Drag Box Proc'|
00001ae0  73 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |s --------------|
00001af0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 09  |--------------..|
00001b00  c4 06 20 3a 0d 09 ce 1d  20 dd 20 f2 64 72 61 67  |.. :.... . .drag|
00001b10  5f 69 74 28 77 68 61 6e  64 6c 65 25 2c 69 68 25  |_it(whandle%,ih%|
00001b20  29 0d 09 d8 11 20 21 71  25 3d 77 68 61 6e 64 6c  |).... !q%=whandl|
00001b30  65 25 0d 09 e2 0d 20 71  25 21 34 3d 69 68 25 0d  |e%.... q%!4=ih%.|
00001b40  09 ec 1e 20 c8 99 22 57  69 6d 70 5f 47 65 74 49  |... .."Wimp_GetI|
00001b50  63 6f 6e 53 74 61 74 65  22 2c 2c 71 25 0d 09 f6  |conState",,q%...|
00001b60  11 20 64 62 6d 69 6e 78  25 3d 71 25 21 38 0d 0a  |. dbminx%=q%!8..|
00001b70  00 12 20 64 62 6d 69 6e  79 25 3d 71 25 21 31 32  |.. dbminy%=q%!12|
00001b80  0d 0a 0a 12 20 64 62 6d  61 78 78 25 3d 71 25 21  |.... dbmaxx%=q%!|
00001b90  31 36 0d 0a 14 12 20 64  62 6d 61 78 79 25 3d 71  |16.... dbmaxy%=q|
00001ba0  25 21 32 30 0d 0a 1e 11  20 21 71 25 3d 77 68 61  |%!20.... !q%=wha|
00001bb0  6e 64 6c 65 25 0d 0a 28  20 20 c8 99 20 22 57 69  |ndle%..(  .. "Wi|
00001bc0  6d 70 5f 47 65 74 57 69  6e 64 6f 77 49 6e 66 6f  |mp_GetWindowInfo|
00001bd0  22 2c 2c 71 25 0d 0a 32  0e 20 77 78 30 25 3d 71  |",,q%..2. wx0%=q|
00001be0  25 21 34 0d 0a 3c 0e 20  77 79 30 25 3d 71 25 21  |%!4..<. wy0%=q%!|
00001bf0  38 0d 0a 46 0f 20 77 78  31 25 3d 71 25 21 31 32  |8..F. wx1%=q%!12|
00001c00  0d 0a 50 0f 20 77 79 31  25 3d 71 25 21 31 36 0d  |..P. wy1%=q%!16.|
00001c10  0a 5a 11 20 21 71 25 3d  77 68 61 6e 64 6c 65 25  |.Z. !q%=whandle%|
00001c20  0d 0a 64 0b 20 71 25 21  34 3d 35 0d 0a 6e 16 20  |..d. q%!4=5..n. |
00001c30  71 25 21 38 3d 77 78 30  25 2b 64 62 6d 69 6e 78  |q%!8=wx0%+dbminx|
00001c40  25 0d 0a 78 17 20 71 25  21 31 32 3d 77 79 31 25  |%..x. q%!12=wy1%|
00001c50  2b 64 62 6d 69 6e 79 25  0d 0a 82 17 20 71 25 21  |+dbminy%.... q%!|
00001c60  31 36 3d 77 78 30 25 2b  64 62 6d 61 78 78 25 0d  |16=wx0%+dbmaxx%.|
00001c70  0a 8c 17 20 71 25 21 32  30 3d 77 79 31 25 2b 64  |... q%!20=wy1%+d|
00001c80  62 6d 61 78 79 25 0d 0a  96 0c 20 71 25 21 32 34  |bmaxy%.... q%!24|
00001c90  3d 30 0d 0a a0 0c 20 71  25 21 32 38 3d 30 0d 0a  |=0.... q%!28=0..|
00001ca0  aa 1a 20 c8 99 20 22 57  69 6d 70 5f 44 72 61 67  |.. .. "Wimp_Drag|
00001cb0  42 6f 78 22 2c 2c 71 25  0d 0a b4 06 20 e1 0d 0a  |Box",,q%.... ...|
00001cc0  be 06 20 3a 0d 0a c8 1e  20 dd 20 f2 64 72 61 67  |.. :.... . .drag|
00001cd0  5f 65 6e 64 28 77 68 61  6e 64 6c 65 25 2c 69 68  |_end(whandle%,ih|
00001ce0  25 29 0d 0a d2 21 20 c8  99 20 22 57 69 6d 70 5f  |%)...! .. "Wimp_|
00001cf0  47 65 74 50 6f 69 6e 74  65 72 49 6e 66 6f 22 2c  |GetPointerInfo",|
00001d00  2c 71 25 0d 0a dc 0e 20  64 62 6d 78 25 3d 21 71  |,q%.... dbmx%=!q|
00001d10  25 0d 0a e6 0f 20 64 62  6d 79 25 3d 71 25 21 34  |%.... dbmy%=q%!4|
00001d20  0d 0a f0 0f 20 64 62 77  25 3d 71 25 21 31 32 0d  |.... dbw%=q%!12.|
00001d30  0a fa 0f 20 64 62 69 25  3d 71 25 21 31 36 0d 0b  |... dbi%=q%!16..|
00001d40  04 11 20 21 71 25 3d 77  68 61 6e 64 6c 65 25 0d  |.. !q%=whandle%.|
00001d50  0b 0e 0d 20 f4 20 71 25  21 34 3d 36 0d 0b 18 1f  |... . q%!4=6....|
00001d60  20 c8 99 20 22 57 69 6d  70 5f 47 65 74 49 63 6f  | .. "Wimp_GetIco|
00001d70  6e 53 74 61 74 65 22 2c  2c 71 25 0d 0b 22 17 20  |nState",,q%..". |
00001d80  73 61 76 65 6e 61 6d 65  24 3d 24 28 71 25 2b 32  |savename$=$(q%+2|
00001d90  34 29 0d 0b 2c 15 20 f2  73 65 6e 64 28 73 61 76  |4)..,. .send(sav|
00001da0  65 6e 61 6d 65 24 29 0d  0b 36 06 20 cd 0d 0b 40  |ename$)..6. ...@|
00001db0  06 20 e1 0d 0b 4a 06 20  3a 0d 0b 54 17 20 dd 20  |. ...J. :..T. . |
00001dc0  f2 73 65 6e 64 28 6c 65  61 66 6e 61 6d 65 24 29  |.send(leafname$)|
00001dd0  0d 0b 5e 36 20 e7 20 a7  6c 65 61 66 6e 61 6d 65  |..^6 . .leafname|
00001de0  24 2c 22 2e 22 29 3c 3e  30 20 8c 20 6c 65 61 66  |$,".")<>0 . leaf|
00001df0  6e 61 6d 65 24 3d a4 6c  65 61 66 28 6c 65 61 66  |name$=.leaf(leaf|
00001e00  6e 61 6d 65 24 29 0d 0b  68 20 20 21 71 25 3d 35  |name$)..h  !q%=5|
00001e10  32 2b 28 a9 28 6c 65 61  66 6e 61 6d 65 24 29 20  |2+(.(leafname$) |
00001e20  81 20 34 29 2a 34 0d 0b  72 0c 20 71 25 21 31 32  |. 4)*4..r. q%!12|
00001e30  3d 30 0d 0b 7c 0c 20 71  25 21 31 36 3d 31 0d 0b  |=0..|. q%!16=1..|
00001e40  86 0f 20 71 25 21 32 30  3d 64 62 77 25 0d 0b 90  |.. q%!20=dbw%...|
00001e50  0f 20 71 25 21 32 34 3d  64 62 69 25 0d 0b 9a 10  |. q%!24=dbi%....|
00001e60  20 71 25 21 32 38 3d 64  62 6d 78 25 0d 0b a4 10  | q%!28=dbmx%....|
00001e70  20 71 25 21 33 32 3d 64  62 6d 79 25 0d 0b ae 0c  | q%!32=dbmy%....|
00001e80  20 71 25 21 33 36 3d 31  0d 0b b8 0f 20 71 25 21  | q%!36=1.... q%!|
00001e90  34 30 3d 26 46 46 46 0d  0b c2 1a 20 24 28 71 25  |40=&FFF.... $(q%|
00001ea0  2b 34 34 29 3d 6c 65 61  66 6e 61 6d 65 24 2b bd  |+44)=leafname$+.|
00001eb0  30 0d 0b cc 25 20 c8 99  20 22 57 69 6d 70 5f 53  |0...% .. "Wimp_S|
00001ec0  65 6e 64 4d 65 73 73 61  67 65 22 2c 31 37 2c 71  |endMessage",17,q|
00001ed0  25 2c 64 62 77 25 0d 0b  d6 06 20 e1 0d 0b e0 06  |%,dbw%.... .....|
00001ee0  20 3a 0d 0b ea 11 20 dd  a4 73 74 72 69 6e 67 28  | :.... ..string(|
00001ef0  61 25 29 0d 0b f4 0e 20  ea 62 24 3a 62 24 3d 22  |a%).... .b$:b$="|
00001f00  22 0d 0b fe 0d 20 c8 95  3f 61 25 3c 3e 30 0d 0c  |".... ..?a%<>0..|
00001f10  08 0d 20 62 24 2b 3d bd  3f 61 25 0d 0c 12 0a 20  |.. b$+=.?a%.... |
00001f20  61 25 2b 3d 31 0d 0c 1c  06 20 ce 0d 0c 26 08 20  |a%+=1.... ...&. |
00001f30  3d 62 24 0d 0c 30 06 20  3a 0d 0c 3a 12 20 dd a4  |=b$..0. :..:. ..|
00001f40  6c 65 61 66 28 70 61 74  68 24 29 0d 0c 44 13 20  |leaf(path$)..D. |
00001f50  c8 95 20 a7 70 61 74 68  24 2c 22 2e 22 29 0d 0c  |.. .path$,".")..|
00001f60  4e 20 20 70 61 74 68 24  3d c1 70 61 74 68 24 2c  |N  path$=.path$,|
00001f70  a7 70 61 74 68 24 2c 22  2e 22 29 2b 31 29 0d 0c  |.path$,".")+1)..|
00001f80  58 06 20 ce 0d 0c 62 0b  20 3d 70 61 74 68 24 0d  |X. ...b. =path$.|
00001f90  0c 6c 06 20 3a 0d 0c 76  4f 20 f4 20 2d 2d 2d 2d  |.l. :..vO . ----|
00001fa0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001fb0  2d 2d 2d 2d 2d 2d 2d 20  54 65 78 74 20 57 69 6e  |------- Text Win|
00001fc0  64 6f 77 20 50 72 6f 63  27 73 20 2d 2d 2d 2d 2d  |dow Proc's -----|
00001fd0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001fe0  2d 2d 2d 2d 0d 0c 80 06  20 3a 0d 0c 8a 21 20 dd  |----.... :...! .|
00001ff0  20 f2 6c 6f 61 64 5f 74  65 78 74 28 66 69 6c 65  | .load_text(file|
00002000  24 2c 77 68 61 6e 64 6c  65 25 29 0d 0c 94 1c 20  |$,whandle%).... |
00002010  6d 61 78 63 68 72 25 3d  30 3a 72 65 61 64 25 3d  |maxchr%=0:read%=|
00002020  8e 20 66 69 6c 65 24 0d  0c 9e 06 20 f5 0d 0c a8  |. file$.... ....|
00002030  0f 20 6d 61 78 63 68 72  25 2b 3d 31 0d 0c b2 11  |. maxchr%+=1....|
00002040  20 73 74 65 25 3d 9a 23  72 65 61 64 25 0d 0c bc  | ste%=.#read%...|
00002050  0e 20 fd 20 c5 23 72 65  61 64 25 0d 0c c6 0c 20  |. . .#read%.... |
00002060  d9 23 72 65 61 64 25 0d  0c d0 26 20 c8 99 20 22  |.#read%...& .. "|
00002070  4f 53 5f 46 69 6c 65 22  2c 35 2c 66 69 6c 65 24  |OS_File",5,file$|
00002080  20 b8 20 2c 2c 2c 2c 73  69 7a 65 32 25 0d 0c da  | . ,,,,size2%...|
00002090  17 20 de 20 62 75 66 66  65 72 20 73 69 7a 65 32  |. . buffer size2|
000020a0  25 2b 33 32 0d 0c e4 24  20 c8 99 20 22 4f 53 5f  |%+32...$ .. "OS_|
000020b0  46 69 6c 65 22 2c 26 46  46 2c 66 69 6c 65 24 2c  |File",&FF,file$,|
000020c0  62 75 66 66 65 72 2c 30  0d 0c ee 0f 20 f2 73 6f  |buffer,0.... .so|
000020d0  72 74 5f 74 65 78 74 0d  0c f8 06 20 e1 0d 0d 02  |rt_text.... ....|
000020e0  06 20 3a 0d 0d 0c 11 20  dd 20 f2 73 6f 72 74 5f  |. :.... . .sort_|
000020f0  74 65 78 74 0d 0d 16 24  20 f2 63 6c 65 61 72 69  |text...$ .cleari|
00002100  63 6f 6e 73 28 30 2c 63  6f 75 6e 74 65 72 2c 77  |cons(0,counter,w|
00002110  68 61 6e 64 6c 65 25 29  0d 0d 20 3b 20 63 6f 75  |handle%).. ; cou|
00002120  6e 74 65 72 3d 30 3a 6f  6c 64 5f 6f 66 66 73 65  |nter=0:old_offse|
00002130  74 3d 30 3a 6f 66 66 73  65 74 3d 30 3a 61 64 64  |t=0:offset=0:add|
00002140  72 3d 62 75 66 66 65 72  3a 63 6f 75 6e 74 65 72  |r=buffer:counter|
00002150  25 3d 30 0d 0d 2a 16 20  c8 99 20 22 48 6f 75 72  |%=0..*. .. "Hour|
00002160  67 6c 61 73 73 5f 4f 6e  22 0d 0d 34 06 20 f5 0d  |glass_On"..4. ..|
00002170  0d 3e 10 20 63 6f 75 6e  74 65 72 25 2b 3d 31 0d  |.>. counter%+=1.|
00002180  0d 48 16 20 63 68 61 72  25 3d 61 64 64 72 3f 6f  |.H. char%=addr?o|
00002190  66 66 73 65 74 0d 0d 52  11 20 e7 20 63 68 61 72  |ffset..R. . char|
000021a0  25 3d 26 41 20 8c 0d 0d  5c 12 20 61 64 64 72 3f  |%=&A ...\. addr?|
000021b0  6f 66 66 73 65 74 3d 30  0d 0d 66 39 20 f2 70 75  |offset=0..f9 .pu|
000021c0  74 5f 69 74 65 6d 28 61  64 64 72 2b 6f 6c 64 5f  |t_item(addr+old_|
000021d0  6f 66 66 73 65 74 2c 63  6f 75 6e 74 65 72 2c 6f  |offset,counter,o|
000021e0  66 66 73 65 74 2d 6f 6c  64 5f 6f 66 66 73 65 74  |ffset-old_offset|
000021f0  29 0d 0d 70 0f 20 63 6f  75 6e 74 65 72 2b 3d 31  |)..p. counter+=1|
00002200  0d 0d 7a 0e 20 6f 66 66  73 65 74 2b 3d 31 0d 0d  |..z. offset+=1..|
00002210  84 16 20 6f 6c 64 5f 6f  66 66 73 65 74 3d 6f 66  |.. old_offset=of|
00002220  66 73 65 74 0d 0d 8e 06  20 cc 0d 0d 98 0e 20 6f  |fset.... ..... o|
00002230  66 66 73 65 74 2b 3d 31  0d 0d a2 06 20 cd 0d 0d  |ffset+=1.... ...|
00002240  ac 35 20 c8 99 20 22 48  6f 75 72 67 6c 61 73 73  |.5 .. "Hourglass|
00002250  5f 50 65 72 63 65 6e 74  61 67 65 22 2c 28 63 6f  |_Percentage",(co|
00002260  75 6e 74 65 72 25 2f 6d  61 78 63 68 72 25 29 2a  |unter%/maxchr%)*|
00002270  31 30 30 0d 0d b6 17 20  fd 20 63 6f 75 6e 74 65  |100.... . counte|
00002280  72 25 3d 6d 61 78 63 68  72 25 0d 0d c0 19 20 c8  |r%=maxchr%.... .|
00002290  99 20 22 48 6f 75 72 67  6c 61 73 73 5f 53 6d 61  |. "Hourglass_Sma|
000022a0  73 68 22 0d 0d ca 0b 20  71 25 21 30 3d 30 0d 0d  |sh".... q%!0=0..|
000022b0  d4 1e 20 71 25 21 34 3d  2d 28 28 63 6f 75 6e 74  |.. q%!4=-((count|
000022c0  65 72 2d 31 29 2a 33 32  2b 33 32 29 0d 0d de 18  |er-1)*32+32)....|
000022d0  20 71 25 21 38 3d a4 6c  6f 6e 67 65 73 74 2a 31  | q%!8=.longest*1|
000022e0  36 2b 31 36 0d 0d e8 0c  20 71 25 21 31 32 3d 30  |6+16.... q%!12=0|
000022f0  0d 0d f2 24 20 c8 99 20  22 57 69 6d 70 5f 53 65  |...$ .. "Wimp_Se|
00002300  74 45 78 74 65 6e 74 22  2c 77 68 61 6e 64 6c 65  |tExtent",whandle|
00002310  25 2c 71 25 0d 0d fc 06  20 e1 0d 0e 06 06 20 3a  |%,q%.... ..... :|
00002320  0d 0e 10 2c 20 dd 20 f2  70 75 74 5f 69 74 65 6d  |..., . .put_item|
00002330  28 73 74 61 72 74 5f 61  64 64 72 2c 69 63 6f 6e  |(start_addr,icon|
00002340  5f 6e 75 6d 2c 6c 65 6e  67 74 68 29 0d 0e 1a 19  |_num,length)....|
00002350  20 6c 6f 6e 67 3f 69 63  6f 6e 5f 6e 75 6d 3d 6c  | long?icon_num=l|
00002360  65 6e 67 74 68 0d 0e 24  12 20 71 25 21 30 3d 77  |ength..$. q%!0=w|
00002370  68 61 6e 64 6c 65 25 0d  0e 2e 0b 20 71 25 21 34  |handle%.... q%!4|
00002380  3d 30 0d 0e 38 1b 20 71  25 21 38 3d 2d 28 69 63  |=0..8. q%!8=-(ic|
00002390  6f 6e 5f 6e 75 6d 2a 33  32 29 2d 33 32 0d 0e 42  |on_num*32)-32..B|
000023a0  0f 20 71 25 21 31 32 3d  31 32 38 30 0d 0e 4c 12  |. q%!12=1280..L.|
000023b0  20 71 25 21 31 36 3d 71  25 21 38 2b 33 32 0d 0e  | q%!16=q%!8+32..|
000023c0  56 13 20 71 25 21 32 30  3d 26 37 30 30 36 31 31  |V. q%!20=&700611|
000023d0  31 0d 0e 60 15 20 71 25  21 32 34 3d 73 74 61 72  |1..`. q%!24=star|
000023e0  74 5f 61 64 64 72 0d 0e  6a 11 20 71 25 21 32 38  |t_addr..j. q%!28|
000023f0  3d 76 61 6c 69 64 25 0d  0e 74 0d 20 71 25 21 33  |=valid%..t. q%!3|
00002400  32 3d 38 30 0d 0e 7e 1a  20 73 74 61 72 74 5f 61  |2=80..~. start_a|
00002410  64 64 72 3f 28 6c 65 6e  67 74 68 29 3d 30 0d 0e  |ddr?(length)=0..|
00002420  88 2a 20 c8 99 20 22 58  57 69 6d 70 5f 43 72 65  |.* .. "XWimp_Cre|
00002430  61 74 65 49 63 6f 6e 22  2c 2c 71 25 20 b8 20 6c  |ateIcon",,q% . l|
00002440  61 73 74 69 63 6f 6e 25  0d 0e 92 06 20 e1 0d 0e  |asticon%.... ...|
00002450  9c 06 20 3a 0d 0e a6 0f  20 dd 20 a4 6c 6f 6e 67  |.. :.... . .long|
00002460  65 73 74 0d 0e b0 0b 20  6c 65 6e 25 3d 30 0d 0e  |est.... len%=0..|
00002470  ba 1a 20 e3 20 6c 6f 6f  70 25 3d 30 20 b8 20 63  |.. . loop%=0 . c|
00002480  6f 75 6e 74 65 72 2d 31  0d 0e c4 28 20 e7 20 6c  |ounter-1...( . l|
00002490  6f 6e 67 3f 6c 6f 6f 70  25 3e 6c 65 6e 25 20 8c  |ong?loop%>len% .|
000024a0  20 6c 65 6e 25 3d 6c 6f  6e 67 3f 6c 6f 6f 70 25  | len%=long?loop%|
000024b0  0d 0e ce 06 20 ed 0d 0e  d8 0a 20 3d 6c 65 6e 25  |.... ..... =len%|
000024c0  0d 0e e2 06 20 3a 0d 0e  ec 2c 20 dd f2 63 6c 65  |.... :..., ..cle|
000024d0  61 72 69 63 6f 6e 73 28  66 72 6f 6d 69 63 6f 6e  |aricons(fromicon|
000024e0  25 2c 74 6f 69 63 6f 6e  25 2c 77 69 6e 64 6f 77  |%,toicon%,window|
000024f0  25 29 0d 0e f6 1e 20 e3  20 49 20 3d 20 66 72 6f  |%).... . I = fro|
00002500  6d 69 63 6f 6e 25 20 b8  20 74 6f 69 63 6f 6e 25  |micon% . toicon%|
00002510  0d 0f 00 1b 20 f2 64 65  6c 65 74 65 69 63 6f 6e  |.... .deleteicon|
00002520  28 77 69 6e 64 6f 77 25  2c 49 29 0d 0f 0a 08 20  |(window%,I).... |
00002530  ed 20 49 0d 0f 14 06 20  e1 0d 0f 1e 06 20 3a 0d  |. I.... ..... :.|
00002540  0f 28 4f 20 f4 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.(O . ----------|
00002550  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002580  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 0f  |--------------..|
00002590  32 06 20 3a 0d 0f 3c 18  20 dd 20 a4 63 68 6f 70  |2. :..<. . .chop|
000025a0  73 74 72 28 6e 24 2c 63  68 72 24 29 0d 0f 46 10  |str(n$,chr$)..F.|
000025b0  20 74 69 6d 65 25 3d 91  2b 31 30 30 0d 0f 50 06  | time%=.+100..P.|
000025c0  20 f5 0d 0f 5a 15 20 20  6e 24 3d c0 6e 24 2c a9  | ...Z.  n$=.n$,.|
000025d0  28 6e 24 29 2d 31 29 0d  0f 64 15 20 20 e7 20 91  |(n$)-1)..d.  . .|
000025e0  3e 74 69 6d 65 25 20 8c  20 3d 6e 24 0d 0f 6e 12  |>time% . =n$..n.|
000025f0  20 fd 20 c2 6e 24 2c 31  29 3d 63 68 72 24 0d 0f  | . .n$,1)=chr$..|
00002600  78 14 20 6e 24 3d c0 6e  24 2c a9 28 6e 24 29 2d  |x. n$=.n$,.(n$)-|
00002610  31 29 0d 0f 82 08 20 3d  6e 24 0d 0f 8c 06 20 3a  |1).... =n$.... :|
00002620  0d 0f 96 18 20 dd 20 a4  63 68 6f 70 64 69 72 28  |.... . .chopdir(|
00002630  6e 24 2c 63 68 72 24 29  0d 0f a0 22 20 64 69 72  |n$,chr$)..." dir|
00002640  32 24 3d 6e 24 3a 63 6f  75 6e 74 25 3d 30 3a 74  |2$=n$:count%=0:t|
00002650  69 6d 65 25 3d 91 2b 31  30 30 0d 0f aa 06 20 f5  |ime%=.+100.... .|
00002660  0d 0f b4 0e 20 63 6f 75  6e 74 25 2b 3d 31 0d 0f  |.... count%+=1..|
00002670  be 1e 20 20 64 69 72 32  24 3d c0 64 69 72 32 24  |..  dir2$=.dir2$|
00002680  2c a9 28 64 69 72 32 24  29 2d 31 29 0d 0f c8 15  |,.(dir2$)-1)....|
00002690  20 20 e7 20 91 3e 74 69  6d 65 25 20 8c 20 3d 6e  |  . .>time% . =n|
000026a0  24 0d 0f d2 15 20 fd 20  c2 64 69 72 32 24 2c 31  |$.... . .dir2$,1|
000026b0  29 3d 63 68 72 24 0d 0f  dc 16 20 64 69 72 32 24  |)=chr$.... dir2$|
000026c0  3d c2 6e 24 2c 63 6f 75  6e 74 25 29 0d 0f e6 0b  |=.n$,count%)....|
000026d0  20 3d 64 69 72 32 24 0d  0f f0 06 20 3a 0d 0f fa  | =dir2$.... :...|
000026e0  19 20 dd 20 a4 63 68 6f  70 64 69 72 32 28 6e 24  |. . .chopdir2(n$|
000026f0  2c 63 68 72 24 29 0d 10  04 0a 20 64 69 72 3d 31  |,chr$).... dir=1|
00002700  0d 10 0e 12 20 e3 64 69  72 32 3d 31 b8 a9 28 6e  |.... .dir2=1..(n|
00002710  24 29 0d 10 18 34 20 20  e7 20 c1 6e 24 2c 64 69  |$)...4  . .n$,di|
00002720  72 32 2c a9 28 63 68 72  24 29 29 3d 63 68 72 24  |r2,.(chr$))=chr$|
00002730  20 8c 20 64 69 72 32 3d  a9 28 6e 24 29 20 8b 20  | . dir2=.(n$) . |
00002740  64 69 72 2b 3d 31 0d 10  22 0b 20 ed 20 64 69 72  |dir+=1..". . dir|
00002750  32 0d 10 2c 18 20 6e 24  3d c1 6e 24 2c 64 69 72  |2..,. n$=.n$,dir|
00002760  2b 31 2c a9 28 6e 24 29  29 0d 10 36 08 20 3d 6e  |+1,.(n$))..6. =n|
00002770  24 0d 10 40 06 20 3a 0d  10 4a 18 20 dd 20 a4 6c  |$..@. :..J. . .l|
00002780  6f 77 63 61 73 65 28 73  74 72 69 6e 67 24 29 0d  |owcase(string$).|
00002790  10 54 0c 20 73 74 72 24  3d 22 22 0d 10 5e 14 20  |.T. str$=""..^. |
000027a0  e3 49 3d 31 b8 a9 28 73  74 72 69 6e 67 24 29 0d  |.I=1..(string$).|
000027b0  10 68 0e 20 20 e3 53 3d  36 35 b8 39 30 0d 10 72  |.h.  .S=65.90..r|
000027c0  2b 20 20 20 e7 20 c1 73  74 72 69 6e 67 24 2c 49  |+   . .string$,I|
000027d0  2c 31 29 3d bd 28 53 29  20 8c 20 73 74 72 24 2b  |,1)=.(S) . str$+|
000027e0  3d bd 28 53 2b 33 32 29  0d 10 7c 2e 20 20 20 e7  |=.(S+32)..|.   .|
000027f0  20 c1 73 74 72 69 6e 67  24 2c 49 2c 31 29 3d bd  | .string$,I,1)=.|
00002800  28 53 2b 33 32 29 20 8c  20 73 74 72 24 2b 3d bd  |(S+32) . str$+=.|
00002810  28 53 2b 33 32 29 0d 10  86 08 20 20 ed 53 0d 10  |(S+32)....  .S..|
00002820  90 0e 20 20 e3 42 3d 33  32 b8 36 34 0d 10 9a 28  |..  .B=32.64...(|
00002830  20 20 20 e7 20 c1 73 74  72 69 6e 67 24 2c 49 2c  |   . .string$,I,|
00002840  31 29 3d bd 28 42 29 20  8c 20 73 74 72 24 2b 3d  |1)=.(B) . str$+=|
00002850  bd 28 42 29 0d 10 a4 08  20 20 ed 42 0d 10 ae 10  |.(B)....  .B....|
00002860  20 20 e3 42 3d 31 32 33  b8 32 35 35 0d 10 b8 28  |  .B=123.255...(|
00002870  20 20 20 e7 20 c1 73 74  72 69 6e 67 24 2c 49 2c  |   . .string$,I,|
00002880  31 29 3d bd 28 42 29 20  8c 20 73 74 72 24 2b 3d  |1)=.(B) . str$+=|
00002890  bd 28 42 29 0d 10 c2 08  20 20 ed 42 0d 10 cc 07  |.(B)....  .B....|
000028a0  20 ed 49 0d 10 d6 0a 20  3d 73 74 72 24 0d 10 e0  | .I.... =str$...|
000028b0  06 20 3a 0d 10 ea 1c 20  dd 20 a4 70 61 64 6f 75  |. :.... . .padou|
000028c0  74 28 70 61 64 24 2c 70  61 64 6c 65 6e 25 29 0d  |t(pad$,padlen%).|
000028d0  10 f4 1c 20 70 61 64 6c  65 6e 25 3d 70 61 64 6c  |... padlen%=padl|
000028e0  65 6e 25 2d a9 28 70 61  64 24 29 0d 10 fe 17 20  |en%-.(pad$).... |
000028f0  70 61 64 6c 65 6e 32 25  3d 70 61 64 6c 65 6e 25  |padlen2%=padlen%|
00002900  2f 32 0d 11 08 34 20 70  61 64 24 3d c4 70 61 64  |/2...4 pad$=.pad|
00002910  6c 65 6e 32 25 2c 22 20  22 29 2b 70 61 64 24 2b  |len2%," ")+pad$+|
00002920  c4 70 61 64 6c 65 6e 25  2d 70 61 64 6c 65 6e 32  |.padlen%-padlen2|
00002930  25 2c 22 20 22 29 0d 11  12 0a 20 3d 70 61 64 24  |%," ").... =pad$|
00002940  0d 11 1c 06 20 3a 0d 11  26 17 20 dd f2 66 69 6e  |.... :..&. ..fin|
00002950  66 6f 28 66 69 6c 65 69  6e 66 6f 24 29 0d 11 30  |fo(fileinfo$)..0|
00002960  4f 20 66 69 6c 65 24 3d  22 22 3a 66 69 6c 65 74  |O file$="":filet|
00002970  79 70 65 24 3d 22 22 3a  66 69 6c 65 6e 61 6d 65  |ype$="":filename|
00002980  24 3d 22 22 3a 6c 6f 61  64 24 3d 22 22 3a 65 78  |$="":load$="":ex|
00002990  65 63 24 3d 22 22 3a 73  69 7a 65 24 3d 22 22 3a  |ec$="":size$="":|
000029a0  66 69 6c 65 64 61 74 65  24 3d 22 22 0d 11 3a 1b  |filedate$=""..:.|
000029b0  20 64 69 72 25 3d a3 3a  66 69 6c 65 24 3d 66 69  | dir%=.:file$=fi|
000029c0  6c 65 69 6e 66 6f 24 0d  11 44 34 20 c8 99 20 22  |leinfo$..D4 .. "|
000029d0  4f 53 5f 46 69 6c 65 22  2c 35 2c 66 69 6c 65 24  |OS_File",5,file$|
000029e0  20 b8 20 74 79 70 65 25  2c 2c 6c 6f 61 64 25 2c  | . type%,,load%,|
000029f0  65 78 65 63 25 2c 73 69  7a 65 25 0d 11 4e 19 20  |exec%,size%..N. |
00002a00  e7 20 74 79 70 65 25 3d  32 20 8c 20 64 69 72 25  |. type%=2 . dir%|
00002a10  3d b9 3a e1 0d 11 58 37  20 c8 99 20 22 4f 53 5f  |=.:...X7 .. "OS_|
00002a20  46 53 43 6f 6e 74 72 6f  6c 22 2c 31 38 2c 2c 28  |FSControl",18,,(|
00002a30  26 46 46 46 20 80 20 6c  6f 61 64 25 3e 3e 3e 38  |&FFF . load%>>>8|
00002a40  29 20 b8 20 2c 2c 62 25  2c 63 25 0d 11 62 4e 20  |) . ,,b%,c%..bN |
00002a50  66 69 6c 65 6e 61 6d 65  24 3d bd 28 62 25 20 80  |filename$=.(b% .|
00002a60  20 26 46 46 29 2b bd 28  28 62 25 3e 3e 38 29 20  | &FF)+.((b%>>8) |
00002a70  80 20 26 46 46 29 2b bd  28 28 62 25 3e 3e 31 36  |. &FF)+.((b%>>16|
00002a80  29 20 80 20 26 46 46 29  2b bd 28 28 62 25 3e 3e  |) . &FF)+.((b%>>|
00002a90  32 34 29 80 20 26 46 46  29 0d 11 6c 4f 20 66 69  |24). &FF)..lO fi|
00002aa0  6c 65 6e 61 6d 65 24 2b  3d bd 28 63 25 20 80 20  |lename$+=.(c% . |
00002ab0  26 46 46 29 2b bd 28 28  63 25 3e 3e 38 29 20 80  |&FF)+.((c%>>8) .|
00002ac0  20 26 46 46 29 2b bd 28  28 63 25 3e 3e 31 36 29  | &FF)+.((c%>>16)|
00002ad0  20 80 20 26 46 46 29 2b  bd 28 28 63 25 3e 3e 32  | . &FF)+.((c%>>2|
00002ae0  34 29 80 20 26 46 46 29  0d 11 76 27 20 66 69 6c  |4). &FF)..v' fil|
00002af0  65 74 79 70 65 24 3d 22  26 22 2b c3 7e 28 26 46  |etype$="&"+.~(&F|
00002b00  46 46 20 80 20 6c 6f 61  64 25 3e 3e 3e 38 29 0d  |FF . load%>>>8).|
00002b10  11 80 10 20 64 61 74 65  3d 62 6c 6f 63 6b 25 0d  |... date=block%.|
00002b20  11 8a 17 20 64 61 74 65  3f 34 3d 6c 6f 61 64 25  |... date?4=load%|
00002b30  20 80 20 26 46 46 0d 11  94 1b 20 64 61 74 65 3f  | . &FF.... date?|
00002b40  33 3d 65 78 65 63 25 3e  3e 32 34 20 80 20 26 46  |3=exec%>>24 . &F|
00002b50  46 0d 11 9e 1b 20 64 61  74 65 3f 32 3d 65 78 65  |F.... date?2=exe|
00002b60  63 25 3e 3e 31 36 20 80  20 26 46 46 0d 11 a8 1a  |c%>>16 . &FF....|
00002b70  20 64 61 74 65 3f 31 3d  65 78 65 63 25 3e 3e 38  | date?1=exec%>>8|
00002b80  20 80 20 26 46 46 0d 11  b2 17 20 64 61 74 65 3f  | . &FF.... date?|
00002b90  30 3d 65 78 65 63 25 20  80 20 26 46 46 0d 11 bc  |0=exec% . &FF...|
00002ba0  36 20 c8 99 20 22 4f 53  5f 43 6f 6e 76 65 72 74  |6 .. "OS_Convert|
00002bb0  53 74 61 6e 64 61 72 64  44 61 74 65 41 6e 64 54  |StandardDateAndT|
00002bc0  69 6d 65 22 2c 64 61 74  65 2c 62 6c 6f 63 6b 25  |ime",date,block%|
00002bd0  2c 32 38 0d 11 c6 1b 20  66 69 6c 65 64 61 74 65  |,28.... filedate|
00002be0  24 3d c0 24 62 6c 6f 63  6b 25 2c 32 30 29 0d 11  |$=.$block%,20)..|
00002bf0  d0 0e 20 20 20 20 c8 8e  20 b9 20 ca 0d 11 da 27  |..    .. . ....'|
00002c00  20 20 20 20 20 20 20 c9  20 73 69 7a 65 25 3e 3d  |       . size%>=|
00002c10  31 30 32 34 20 3a 20 73  69 7a 65 24 3d c3 73 69  |1024 : size$=.si|
00002c20  7a 65 25 0d 11 e4 40 20  20 20 20 20 20 20 f4 20  |ze%...@       . |
00002c30  73 69 7a 65 24 3d 53 54  52 24 28 73 69 7a 65 25  |size$=STR$(size%|
00002c40  44 49 56 31 30 32 34 29  2b 22 2e 22 2b 53 54 52  |DIV1024)+"."+STR|
00002c50  24 28 73 69 7a 65 25 4d  4f 44 31 30 32 34 29 2b  |$(size%MOD1024)+|
00002c60  22 4b 22 0d 11 ee 0c 20  20 20 20 20 20 20 7f 0d  |"K"....       ..|
00002c70  11 f8 17 20 20 20 20 20  20 20 73 69 7a 65 24 3d  |...       size$=|
00002c80  c3 73 69 7a 65 25 0d 12  02 09 20 20 20 20 cb 0d  |.size%....    ..|
00002c90  12 0c 18 20 6c 6f 61 64  24 3d 22 26 22 2b c3 7e  |... load$="&"+.~|
00002ca0  28 6c 6f 61 64 25 29 0d  12 16 18 20 65 78 65 63  |(load%).... exec|
00002cb0  24 3d 22 26 22 2b c3 7e  28 65 78 65 63 25 29 0d  |$="&"+.~(exec%).|
00002cc0  12 20 29 20 66 69 6c 65  74 79 70 65 24 3d c2 66  |. ) filetype$=.f|
00002cd0  69 6c 65 74 79 70 65 24  2c a9 28 66 69 6c 65 74  |iletype$,.(filet|
00002ce0  79 70 65 24 29 2d 31 29  0d 12 2a 3c 20 f4 20 66  |ype$)-1)..*< . f|
00002cf0  69 6c 65 24 3a 66 69 6c  65 74 79 70 65 24 3a 66  |ile$:filetype$:f|
00002d00  69 6c 65 6e 61 6d 65 24  3a 6c 6f 61 64 24 3a 65  |ilename$:load$:e|
00002d10  78 65 63 24 3a 73 69 7a  65 24 3a 66 69 6c 65 64  |xec$:size$:filed|
00002d20  61 74 65 24 0d 12 34 06  20 e1 0d 12 3e 06 20 3a  |ate$..4. ...>. :|
00002d30  0d 12 48 12 20 dd 20 f2  63 61 74 28 72 6f 6f 74  |..H. . .cat(root|
00002d40  24 29 0d 12 52 2a 20 f4  20 44 49 4d 20 70 72 6f  |$)..R* . DIM pro|
00002d50  67 24 28 6d 61 78 2c 31  29 2c 77 25 28 6d 61 78  |g$(max,1),w%(max|
00002d60  29 2c 64 69 72 32 24 28  6d 61 78 29 0d 12 5c 3f  |),dir2$(max)..\?|
00002d70  20 6e 25 3d 30 3a 6c 65  6e 67 74 68 25 3d a9 28  | n%=0:length%=.(|
00002d80  72 6f 6f 74 24 29 3a 6d  61 78 6e 25 3d 30 3a 6d  |root$):maxn%=0:m|
00002d90  61 78 6e 32 25 3d 30 3a  6c 61 73 74 25 3d 30 3a  |axn2%=0:last%=0:|
00002da0  49 3d 30 3a 64 69 72 73  25 3d 30 0d 12 66 24 20  |I=0:dirs%=0..f$ |
00002db0  73 74 65 70 68 65 6e 25  3d a4 62 72 61 6e 63 68  |stephen%=.branch|
00002dc0  28 72 6f 6f 74 24 2c 72  6f 6f 74 24 2c 30 29 0d  |(root$,root$,0).|
00002dd0  12 70 0a 20 6e 25 2d 3d  31 0d 12 7a 06 20 e1 0d  |.p. n%-=1..z. ..|
00002de0  12 84 06 20 3a 0d 12 8e  1b 20 dd 20 a4 62 72 61  |... :.... . .bra|
00002df0  6e 63 68 28 66 24 2c 6c  65 61 66 24 2c 79 25 29  |nch(f$,leaf$,y%)|
00002e00  0d 12 98 0c 20 ea 20 69  25 2c 6c 25 0d 12 a2 0a  |.... . i%,l%....|
00002e10  20 6c 25 3d 6e 25 0d 12  ac 0a 20 6e 25 2b 3d 31  | l%=n%.... n%+=1|
00002e20  0d 12 b6 16 20 f4 20 4a  75 73 74 20 46 69 6c 65  |.... . Just File|
00002e30  20 4e 61 6d 65 73 0d 12  c0 18 20 6e 32 24 3d c3  | Names.... n2$=.|
00002e40  28 79 25 29 2b 22 2e 22  2b 6c 65 61 66 24 0d 12  |(y%)+"."+leaf$..|
00002e50  ca 1f 20 c8 99 20 22 58  4f 53 5f 46 69 6c 65 22  |.. .. "XOS_File"|
00002e60  2c 35 2c 66 24 20 b8 20  74 79 70 65 25 0d 12 d4  |,5,f$ . type%...|
00002e70  15 20 f4 20 46 75 6c 6c  20 46 69 6c 65 20 50 61  |. . Full File Pa|
00002e80  74 68 0d 12 de 0a 20 6e  24 3d 66 24 0d 12 e8 18  |th.... n$=f$....|
00002e90  20 6e 24 3d a4 63 68 6f  70 73 74 72 28 6e 24 2c  | n$=.chopstr(n$,|
00002ea0  22 2e 22 29 0d 12 f2 2f  20 e7 20 c2 6e 24 2c 31  |".").../ . .n$,1|
00002eb0  29 3c 3e 22 24 22 20 8c  20 64 69 72 32 24 28 6c  |)<>"$" . dir2$(l|
00002ec0  25 29 3d a4 63 68 6f 70  64 69 72 28 6e 24 2c 22  |%)=.chopdir(n$,"|
00002ed0  2e 22 29 0d 12 fc 21 20  e7 20 a9 28 6e 24 29 3e  |.")...! . .(n$)>|
00002ee0  6c 65 6e 67 74 68 25 20  8c 20 6e 32 24 3d 22 22  |length% . n2$=""|
00002ef0  2b 6e 32 24 0d 13 06 1a  20 e7 20 79 25 3e 6d 61  |+n2$.... . y%>ma|
00002f00  78 6e 25 20 8c 20 6d 61  78 6e 25 3d 79 25 0d 13  |xn% . maxn%=y%..|
00002f10  10 17 20 e7 20 79 25 3d  30 20 8c 20 6d 61 78 6e  |.. . y%=0 . maxn|
00002f20  32 25 2b 3d 31 0d 13 1a  10 20 e7 20 74 79 70 65  |2%+=1.... . type|
00002f30  25 3d 32 20 8c 0d 13 24  0a 20 20 69 25 3d 30 0d  |%=2 ...$.  i%=0.|
00002f40  13 2e 19 20 20 70 72 6f  67 24 28 6e 25 2d 31 2c  |...  prog$(n%-1,|
00002f50  32 29 3d 22 64 69 72 22  0d 13 38 07 20 20 f5 0d  |2)="dir"..8.  ..|
00002f60  13 42 35 20 20 20 c8 99  20 22 58 4f 53 5f 47 42  |.B5   .. "XOS_GB|
00002f70  50 42 22 2c 39 2c 66 24  2c 71 25 2c 31 2c 69 25  |PB",9,f$,q%,1,i%|
00002f80  2c 26 31 30 30 2c 22 2a  22 20 b8 20 2c 2c 2c 72  |,&100,"*" . ,,,r|
00002f90  25 2c 69 25 0d 13 4c 0f  20 20 20 e7 20 72 25 3e  |%,i%..L.   . r%>|
00002fa0  30 20 8c 0d 13 56 0b 20  20 20 20 ef 32 31 0d 13  |0 ...V.    .21..|
00002fb0  60 1c 20 20 20 20 f4 20  50 52 49 4e 54 53 50 43  |`.    . PRINTSPC|
00002fc0  31 32 3b 43 48 52 24 31  33 3b 0d 13 6a 1e 20 20  |12;CHR$13;..j.  |
00002fd0  20 20 c8 99 20 22 4f 53  5f 57 72 69 74 65 30 22  |  .. "OS_Write0"|
00002fe0  2c 71 25 20 b8 20 6a 25  0d 13 74 0a 20 20 20 20  |,q% . j%..t.    |
00002ff0  ef 36 0d 13 7e 18 20 20  20 20 70 72 6f 67 24 28  |.6..~.    prog$(|
00003000  6e 25 2d 31 2c 30 29 3d  6e 24 0d 13 88 27 20 20  |n%-1,0)=n$...'  |
00003010  20 20 70 72 6f 67 24 28  6e 25 2d 31 2c 31 29 3d  |  prog$(n%-1,1)=|
00003020  a4 63 68 6f 70 64 69 72  28 6e 32 24 2c 22 2e 22  |.chopdir(n2$,"."|
00003030  29 0d 13 92 10 20 20 20  20 6a 25 3f 2d 31 3d 31  |)....    j%?-1=1|
00003040  33 0d 13 9c 2c 20 20 20  20 77 25 28 6c 25 29 2b  |3...,    w%(l%)+|
00003050  3d a4 62 72 61 6e 63 68  28 66 24 2b 22 2e 22 2b  |=.branch(f$+"."+|
00003060  24 71 25 2c 24 71 25 2c  79 25 2b 31 29 0d 13 a6  |$q%,$q%,y%+1)...|
00003070  08 20 20 20 cd 0d 13 b0  0d 20 20 fd 20 69 25 3d  |.   .....  . i%=|
00003080  2d 31 0d 13 ba 36 20 20  70 72 6f 67 24 28 6e 25  |-1...6  prog$(n%|
00003090  2d 31 2c 30 29 3d 6e 24  3a 70 72 6f 67 24 28 6e  |-1,0)=n$:prog$(n|
000030a0  25 2d 31 2c 31 29 3d a4  63 68 6f 70 64 69 72 28  |%-1,1)=.chopdir(|
000030b0  6e 32 24 2c 22 2e 22 29  0d 13 c4 06 20 cc 0d 13  |n2$,".").... ...|
000030c0  ce 23 20 20 64 69 72 73  25 2b 3d 31 3a 70 72 6f  |.#  dirs%+=1:pro|
000030d0  67 24 28 6e 25 2d 31 2c  32 29 3d 22 66 69 6c 65  |g$(n%-1,2)="file|
000030e0  22 0d 13 d8 06 20 cd 0d  13 e2 2a 20 e7 20 77 25  |".... ....* . w%|
000030f0  28 6c 25 29 3c a9 28 6c  65 61 66 24 29 2b 32 20  |(l%)<.(leaf$)+2 |
00003100  77 25 28 6c 25 29 3d a9  28 6c 65 61 66 24 29 2b  |w%(l%)=.(leaf$)+|
00003110  32 0d 13 ec 0c 20 3d 77  25 28 6c 25 29 0d 13 f6  |2.... =w%(l%)...|
00003120  06 20 3a 0d 14 00 19 20  dd 20 a4 63 6f 75 6e 74  |. :.... . .count|
00003130  63 68 72 28 6e 24 2c 63  68 72 24 29 0d 14 0a 0a  |chr(n$,chr$)....|
00003140  20 6e 6f 25 3d 30 0d 14  14 0f 20 e3 63 3d 31 b8  | no%=0.... .c=1.|
00003150  a9 28 6e 24 29 0d 14 1e  1d 20 e7 20 c1 6e 24 2c  |.(n$).... . .n$,|
00003160  63 2c 31 29 3d 63 68 72  24 20 8c 20 6e 6f 25 2b  |c,1)=chr$ . no%+|
00003170  3d 31 0d 14 28 08 20 ed  20 63 0d 14 32 09 20 3d  |=1..(. . c..2. =|
00003180  6e 6f 25 0d ff                                    |no%..|
00003185