Home » Archimedes archive » Acorn User » AU 1994-08.adf » !Tiger_Tiger » !Tiger/!RunImage

!Tiger/!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 1994-08.adf » !Tiger_Tiger
Filename: !Tiger/!RunImage
Read OK:
File size: 11AE5 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > <Tiger$Dir>.!RunImage
   20:
   30task$="Tiger"
   40purpose$="Editable object descriptions"
   50author$="(c) Graham Crow 1992,'93,'94"
   60version$="4.00 (31 May 1994)"
   70:
   80ON ERROR PROCerror:END
   90PROCinit:PROCwimpinit
  100PROCloadtemplates:PROCloadchoices
  110PROCbaricon:PROCiniticons:PROCcreateicons
  120PROCinstall
  130:
  140ON ERROR PROCwimperror
  150quit%=FALSE
  160REPEAT:PROCpoll:UNTIL quit%
  170PROCclosewimp
  180END
  190:
  200REM-----------
  210REM. WIMP POLL
  220REM-----------
  230:
  240DEFPROCpoll
  250SYS "Wimp_Poll",,q% TO reason%
  260REM prevent dragging on a selection
  270IF reason%<17 OR reason%>19 z%=0
  280CASE reason% OF
  290 WHEN 0
  300  IF textflag% PROCgettext
  310  c%=FNchanged
  320  IF c% undo%=TRUE:redo%=FALSE ELSE undo%=FALSE
  330  IF c%:IF NOT star% PROCstar:ELSE IF NOT c%:IF star% PROCnostar
  340  IF refresh% THEN
  350   PROCshowTiger(1):refresh%=FALSE
  360  ENDIF
  370  IF NOT pristine%:IF FNobjs(dir$)<>items%:IF FNopen(main%) refresh%=TRUE
  380  PROCiconscroll
  390 WHEN 2:PROCow2(q%!0)
  400 WHEN 3
  410  wh%=q%!0:SYS "Wimp_GetPointerInfo",,q%
  420  IF q%!12=main% AND q%!8=1 PROCviewer(dir$)
  430  PROCcw(wh%)
  440 WHEN 6:PROCmouse(q%)
  450 WHEN 7:PROCenddrag(q%,swh%,remb%,solid%)
  460 WHEN 8:PROCkeypress(q%)
  470 WHEN 9:PROCmenuselect(q%)
  480 WHEN 17,18:PROCreceive(q%)
  490 WHEN 19:
  500  CASE q%!16 OF
  510   WHEN 5:SYS "Wimp_StartTask","Run "+job$
  520   OTHERWISE:PROCbuzz
  530  ENDCASE
  540ENDCASE
  550ENDPROC
  560:
  570REM----------
  580REM. MESSAGES
  590REM----------
  600:
  610DEFPROCreceive(q%)
  620sender%=q%!4
  630CASE q%!16 OF
  640 WHEN 0:quit%=FNquit
  650 WHEN 1:PROCloadsel(q%) :REM DataSave
  660 WHEN 2:PROCdatasave(q%):REM DataSaveAck
  670 WHEN 3:PROCdataload(q%):REM DataLoad
  680 WHEN 4:REM DataLoadAck
  690 WHEN 5:IF q%!40=&4FF PROCdataload(q%) :REM DataOpen
  700 WHEN 6:REM RAMFetch
  710 WHEN 7:REM RAMTransmit
  720 WHEN 8:PROCprequit(q%) :REM PreQuit
  730 WHEN &400C0:PROCsubmenu(q%):REM pointer over SaveText/Copy submenu
  740 WHEN &400C1:windowstate%=0:IF FNopen(main%) windowstate%=1
  750 PROCmodechange(q%,windowstate%)
  760 WHEN &400C7:tsk$=FNtaskname(q%)
  770ENDCASE
  780ENDPROC
  790:
  800DEFPROCprequit(q%)
  810REM PreQuit message received from Task Manager
  820sender%=q%!4:quit%=TRUE
  830REM acknowledge message
  840q%!12=q%!8
  850SYS "Wimp_SendMessage",19,q%,sender%
  860IF FNquit THEN
  870 SYS "Wimp_GetCaretPosition",,q%
  880 q%!24=&1FC:REM Ctrl+Shift+F12
  890 SYS "Wimp_SendMessage",8,q%,sender%
  900ENDIF
  910ENDPROC
  920:
  930DEFPROCmodechange(q%,windowstate%)
  940REM adjusts window width and icon width to suit mode
  950IF pristine% OR (NOT FNcheckobj(dir$,FALSE)) THEN ENDPROC
  960IF FNpromptsave THEN
  970 SYS "OS_ReadModeVariable",-1,1 TO ,,columns%
  980 width%=(columns%-2)*16
  990 PROCdi(main%,0,155):PROCcreateicons
 1000 PROCshowTiger(windowstate%)
 1010ENDIF
 1020ENDPROC
 1030:
 1040DEFFNtaskhandle(wh%,ih%)
 1050LOCAL task%
 1060q%!0=256:q%!12=0
 1070SYS "Wimp_SendMessage",19,q%,wh%,ih% TO ,,task%
 1080=task%
 1090:
 1100DEFFNtaskname(q%)
 1110LOCAL s$,o%:s$="":o%=28
 1120taskhandle%=q%!20:tasksize%=q%!24
 1130WHILE q%?o%<>0:s$+=CHR$(q%?o%):o%+=1:ENDWHILE
 1140=s$
 1150:
 1160REM------
 1170REM. INIT
 1180REM------
 1190:
 1200DEFPROCinit
 1210SYS "Hourglass_On"
 1220blocksize%=&4000
 1230buffersize%=&1000
 1240DIM q% blocksize%
 1250DIM buffer% buffersize%
 1260DIM C% &100:REM w/s
 1270DIM mb1%&200,mb2%&200,mb3%&100,mb4%&100,mb5%&200,mb6%&100
 1280s%=18
 1290DIM mi0%s%,mi1%s%,mi2%s%,mi3%s%,mi4%s%,mi5%s%,mi6%s%
 1300DIM mi7%s%,mi8%s%,mi9%s%,mi10%s%,mi11%s%
 1310DIM tick%(15),grey%(15)
 1320:
 1330REM for msg window
 1340DIM icm$(3),ict$(4)
 1350DIM icm%(3):FOR J%=1 TO 3:DIM a% 50:icm%(J%)=a%:NEXT
 1360DIM icn%(4):FOR J%=1 TO 4:DIM a% 15:icn%(J%)=a%:NEXT
 1370DIM icv%(4):FOR J%=1 TO 4:DIM a% 10:icv%(J%)=a%:NEXT
 1380DIM icx%(4),icy%(4),icw%(4),ich%(4)
 1390reply%=0:esc%=FALSE:ret%=FALSE
 1400:
 1410DIM spritad% 20:$spritad%="stigbar"
 1420DIM barbuf% 8:$barbuf%=task$
 1430:
 1440REM text indirection
 1450DIM newname% 13:$newname%=""
 1460DIM valname% 20:$valname%="A~.:*#$&@^%\"+CHR$34
 1470DIM valid% 5:$valid%="A":REM validation string for icon 78
 1480:
 1490maxo%=77
 1500DIM undo$(maxo%):REM copy of descriptions for undo
 1510DIM redo$(maxo%):REM copy of descriptions for redo
 1520DIM leaf$(maxo%):REM unformatted leafname
 1530DIM name$(maxo%):REM leafnames from TigerData
 1540DIM desc$(maxo%):REM descriptions from TigerData
 1550DIM len%(maxo%) :REM length of object (bytes)
 1560DIM sel%(maxo%) :REM list of selected objs
 1570:
 1580maxdesclen%=110
 1590REM data blocks and addresses for icon text indirection
 1600DIM name%(maxo%):FOR J%=0 TO maxo%:DIM a% 13:name%(J%)=a%:NEXT
 1610DIM val%(maxo%):FOR J%=0 TO maxo%:DIM a% 20:val%(J%)=a%:NEXT
 1620DIM desc%(maxo%):FOR J%=0 TO maxo%:DIM a% maxdesclen%+1:desc%(J%)=a%:NEXT
 1630:
 1640sprsize%=&1000:DIM spr% sprsize%:!spr%=sprsize%:spr%!8=16
 1650SYS "OS_SpriteOp",&100+9,spr%
 1660:
 1670REM get initial slot size (set in !Run)
 1680remslotsize%=FNgetslotsize
 1690A%=&8000+remslotsize%:REM load address for TigerData file
 1700:
 1710SYS "OS_ReadModeVariable",-1,1 TO ,,columns%:width%=(columns%-2)*16
 1720:
 1730solid%=FNsoliddrag:remb%=4
 1740dragicon%=1:fnicon%=2:okicon%=3:clicon%=4:REM Save window
 1750:
 1760taskdir$=FNosvar("Tiger$Dir")
 1770tigstr$="Tiger description files"
 1780items%=0:find$="":cdir$=""
 1790z%=0:REM flag to prevent dragging a selection
 1800pristine%=TRUE:REM no files dragged onto Tiger yet
 1810star%=FALSE:REM asterisk in window title for changed data
 1820display%=1 :REM 1=descs, 2=obj info, 3=nested size
 1830oldi%=0:oldp%=0:REM icon, position in icon (for horiz scroll)
 1840recursing%=FALSE:counting%=FALSE:refresh%=FALSE:textflag%=FALSE
 1850pos%=0:insert%=FALSE:undo%=FALSE:redo%=FALSE
 1860F%=0:X%=0:REM file handles
 1870user$="Demonstration":demo%=TRUE
 1880ENDPROC
 1890:
 1900DEFPROCwimpinit
 1910$q%="TASK":SYS "Wimp_Initialise",200,!q%,task$ TO version%,task%
 1920ENDPROC
 1930:
 1940DEFPROCclosewimp
 1950$q%="TASK":SYS "Wimp_CloseDown",task%,!q%
 1960ENDPROC
 1970:
 1980DEFPROCiniticons
 1990LOCAL J%,wh%:wh%=info%
 2000PROCit(wh%,1,purpose$):PROCit(wh%,2,author$)
 2010PROCit(wh%,3,version$):PROCit(wh%,4,user$)
 2020wh%=buffwind%
 2030FOR J%=1 TO 3:PROCui(wh%,J%):NEXT
 2040ENDPROC
 2050:
 2060DEFPROCinstall
 2070REM install Tiger complete with data?
 2080path$=FNenv:dir$=FNparent(path$)
 2090IF dir$="" AND startdir$<>"" dir$=startdir$
 2100IF dir$<>"" THEN
 2110 windowstate%=0:IF openTiger% windowstate%=2:REM centre
 2120 pristine%=FALSE
 2130 PROCshowTiger(windowstate%)
 2140ENDIF
 2150SYS "Hourglass_Smash"
 2160IF openbuff% PROCow(buffwind%)
 2170ENDPROC
 2180:
 2190REM---------------
 2200REM. DATA TRANSFER
 2210REM---------------
 2220:
 2230DEFPROCdrop(swh%,sih%,smb%)
 2240REM drag ends on Filer/App/Pinboard/Iconbar/Tiger
 2250REM find out where drop occurred
 2260SYS "Wimp_GetPointerInfo",,q%
 2270mx%=q%!0:my%=q%!4:dwh%=q%!12:dih%=q%!16
 2280:
 2290REM invalid drops
 2300IF swh%=dwh% AND dwh%<>main% ENDPROC
 2310IF swh%=buffwind% AND dwh%<>main% ENDPROC
 2320IF swh%=main% THEN
 2330 IF sih%<79 AND dwh%=main% ENDPROC
 2340 IF sih%>78 AND dwh%<>main% AND dwh%<>buffwind% ENDPROC
 2350ENDIF
 2360:
 2370IF swh%=main% AND sih%<79 AND dwh%=buffwind% THEN
 2380 path$=dir$+"."+leaf$(chosen%)
 2390 PROCdragfiletobuff(path$,FNfiletype(path$)):ENDPROC
 2400ENDIF
 2410:
 2420IF (swh%=main% OR swh%=buffwind%) AND (dwh%=main% OR dwh%=buffwind%) THEN
 2430 PROCshiftdesc(swh%,sih%,dwh%,dih%,smb%):ENDPROC
 2440ENDIF
 2450:
 2460IF dwh%=-2 AND dih%=-1 THEN
 2470 dtsk$="IconBar"
 2480ELSE
 2490 q%!0=20:q%!12=0:q%!16=0
 2500 SYS "Wimp_SendMessage",19,q%,dwh%,dih% TO ,,dtsk%
 2510 IF dtsk%=0 PROCclosemenu:ENDPROC
 2520 SYS "TaskManager_TaskNameFromHandle",dtsk% TO dtsk$
 2530ENDIF
 2540IF swh%=savebox% THEN
 2550 PROCsavetextfile(swh%,dwh%,dih%,mx%,my%,dtsk$)
 2560ELSE
 2570 filersave%=FALSE
 2580 CASE dtsk$ OF
 2590  WHEN "IconBar" :PROCiconbar(smb%,sih%)
 2600  WHEN "Filer"   :PROCfiler(swh%,dwh%,dih%,mx%,my%)
 2610  WHEN "Pinboard":PROCpinboard(mx%,my%)
 2620  OTHERWISE      :PROCapp(swh%,dwh%,dih%,mx%,my%)
 2630 ENDCASE
 2640ENDIF
 2650ENDPROC
 2660:
 2670DEFPROCdatasave(q%)
 2680REM response by Wimp (No.2 - DataSaveAck)
 2690REM to drag of file(s) onto Filer/App
 2700IF filersave% PROCfilersave(q%,swh%)
 2710ENDPROC
 2720:
 2730REM------------------------------
 2740REM. DRAG TEXT FILE TO FILER, APP
 2750REM------------------------------
 2760:
 2770DEFPROCsavetextfile(swh%,dwh%,dih%,mx%,my%,dtsk$)
 2780REM send DataSave
 2790LOCAL fsp$,leaf$,filelen%,type%
 2800IF dtsk$="IconBar" OR dtsk$="Pinboard" THEN
 2810 PROCclosemenu:PROCbuzz:ENDPROC
 2820ENDIF
 2830fsp$=FNit(swh%,fnicon%):leaf$=FNleaf(fsp$)
 2840IF NOT FNoktosave(swh%,fnicon%) ENDPROC
 2850filelen%=100:type%=&FFF:filersave%=TRUE
 2860q%!0=(48+LENfsp$) AND NOT 3:REM block length
 2870q%!4=0:q%!8=0:q%!12=0:q%!16=1:REM DataSave
 2880q%!20=dwh%:q%!24=dih%:q%!28=mx%:q%!32=my%
 2890q%!36=filelen%:q%!40=type%:$(q%+44)=leaf$+CHR$0
 2900SYS "Wimp_SendMessage",18,q%,q%!20,q%!24
 2910ENDPROC
 2920:
 2930DEFPROCtextsave(q%,newpath$)
 2940REM DataSaveAck received - send DataLoad
 2950IF FNdemo("Text save") ENDPROC
 2960IF NOT FNcheckobj(dir$,TRUE) ENDPROC
 2970PROCstartsave(newpath$)
 2980PROCsavedir(dir$)
 2990IF FNis(savebox%,12) PROCrecursivesave
 3000PROCendsave(newpath$)
 3010REM only update filename if secure
 3020IF q%!36>-1 THEN PROCit(savebox%,fnicon%,newpath$)
 3030q%!0=64:q%!12=q%!8:q%!16=3:REM DataLoad
 3040q%!40=&FFF:$(q%+44)=newpath$+CHR$0
 3050SYS "Wimp_SendMessage",18,q%,q%!20,q%!24
 3060ENDPROC
 3070:
 3080REM-------------
 3090REM. DRAG TO APP
 3100REM-------------
 3110:
 3120DEFPROCapp(swh%,dwh%,dih%,mx%,my%)
 3130q%!12=0:q%!20=dwh%:q%!24=dih%:q%!28=mx%:q%!32=my%
 3140sel%=FNsel:IF swh%=copybox% sel%=1:sel%(1)=chosen%
 3150FOR J%=1 TO sel%
 3160 sfsp$=dir$+"."+$name%(sel%(J%))
 3170 type%=FNfiletype(sfsp$):q%!40=type%
 3180 q%!0=((48+LENsfsp$)DIV 4)*4
 3190 $(q%+44)=sfsp$+CHR$0:q%!16=3:REM DataLoad
 3200 SYS "Wimp_SendMessage",17,q%,dwh%,dih%
 3210NEXT
 3220PROCclearall
 3230ENDPROC
 3240:
 3250REM---------------
 3260REM. DRAG TO FILER
 3270REM---------------
 3280:
 3290DEFPROCfiler(swh%,dwh%,dih%,mx%,my%)
 3300REM drag ends on Filer - send DataSave
 3310LOCAL fsp$,leaf$,filelen%,type%
 3320filersave%=TRUE
 3330CASE swh% OF
 3340 WHEN copybox%:
 3350 fsp$=FNit(swh%,fnicon%)
 3360 leaf$=FNleaf(fsp$)
 3370 filelen%=FNfilelen(fsp$)
 3380 type%=FNfiletype(fsp$)
 3390 WHEN savebox%:
 3400 fsp$=FNit(swh%,fnicon%)
 3410 leaf$=FNleaf(fsp$)
 3420 filelen%=100:type%=&FFF
 3430 OTHERWISE:
 3440 leaf$=leaf$(chosen%)
 3450 fsp$=dir$+"."+leaf$
 3460 filelen%=FNfilelen(fsp$)
 3470 type%=FNfiletype(fsp$)
 3480ENDCASE
 3490q%!0=(48+LENfsp$) AND NOT 3:REM block length
 3500q%!4=0:q%!8=0:q%!12=0:q%!16=1:REM DataSave
 3510q%!20=dwh%:q%!24=dih%:q%!28=mx%:q%!32=my%
 3520q%!36=filelen%:q%!40=type%:$(q%+44)=leaf$+CHR$0
 3530SYS "Wimp_SendMessage",18,q%,q%!20,q%!24
 3540ENDPROC
 3550:
 3560DEFPROCfilersave(q%,swh%)
 3570REM response to DataSaveAck
 3580LOCAL J%,K%,sel%,dpath$,ddir$,leaf$,sfsp$,dfsp$
 3590FilerAction%=FNfileraction:opts%=FNreadopts
 3600sel%=FNsel
 3610dpath$=FNname(q%+44)
 3620ddir$=FNparent(dpath$)
 3630CASE swh% OF
 3640 WHEN copybox%:PROCcopy(ddir$,remb%)
 3650 WHEN savebox%:PROCtextsave(q%,dpath$)
 3660 OTHERWISE:
 3670 PROCclearall
 3680 :
 3690 REM does ddir$ have a TigerData file?
 3700 fsp$=ddir$+".TigerData":present%=FNcheckobj(fsp$,FALSE)
 3710 IF NOT present% THEN
 3720  descs%=0
 3730 ELSE
 3740  descs%=FNloadTigerData(fsp$)
 3750 ENDIF
 3760 :
 3770 IF FilerAction% SYS &400DE,"Filer_Action" TO taskh%
 3780 :
 3790 FOR J%=1 TO sel%
 3800  leaf$=leaf$(sel%(J%))
 3810  sfsp$=dir$+"."+leaf$
 3820  dfsp$=ddir$+"."+leaf$
 3830  IF FNcheckobj(sfsp$,TRUE) AND NOT (present% AND leaf$="TigerData") THEN
 3840   IF FilerAction% THEN
 3850    SYS &40F80,taskh%,dir$
 3860    SYS &40F81,taskh%,leaf$
 3870   ELSE
 3880    IF INKEY-1 delete%=TRUE ELSE delete%=FALSE
 3890    opt$=FNcopyopts(delete%)
 3900    IF INKEY-1 t$="Move" ELSE t$="Copy"
 3910    PROCcommand(t$+" files","Copy "+sfsp$+" "+dfsp$+" "+opt$)
 3920   ENDIF
 3930  ENDIF
 3940 NEXT
 3950 :
 3960 IF FilerAction% THEN
 3970  IF INKEY-1 n%=6 ELSE n%=0
 3980  SYS &40F82,taskh%,n%,opts%,ddir$,LENddir$+1
 3990 ENDIF
 4000 q%!0=64:q%!12=q%!8:q%!16=3:REM DataLoad
 4010 SYS "Wimp_SendMessage",18,q%,q%!20,q%!24
 4020 IF remb%=1 PROCcw(swh%)
 4030 :
 4040 REM transfer incoming descriptions to arrays
 4050 FOR J%=1 TO sel%
 4060  name$=leaf$(sel%(J%))
 4070  desc$=$desc%(sel%(J%)):IF desc$=tigstr$ desc$=""
 4080  :
 4090  IF desc$<>"" THEN
 4100   found%=FALSE
 4110   FOR K%=1 TO descs%
 4120    IF name$(K%)=name$ desc$(K%)=desc$:found%=TRUE:K%=descs%
 4130   NEXT
 4140   IF NOT found% THEN
 4150    descs%+=1:name$(descs%)=name$:desc$(descs%)=desc$
 4160   ENDIF
 4170  ENDIF
 4180  :
 4190 NEXT
 4200 PROCwriteTigerData(descs%)
 4210ENDCASE
 4220ENDPROC
 4230:
 4240REM---------------------------
 4250REM. DRAG TO PINBOARD, ICONBAR
 4260REM---------------------------
 4270:
 4280DEFPROCpinboard(mx%,my%)
 4290LOCAL J%,n$,fsp$,x%,y%
 4300x%=mx%:y%=my%
 4310sel%=FNsel:IF swh%=copybox% sel%=1:sel%(1)=chosen%
 4320FOR J%=1 TO sel%
 4330 n$=leaf$(sel%(J%))
 4340 x$=STR$x%:IF x%<0 x$="0"+x$
 4350 y$=STR$y%:IF y%<0 y$="0"+y$
 4360 OSCLI("Pin "+dir$+"."+n$+" "+x$+" "+y$)
 4370 IF J% MOD 4=0 y%-=116:x%=mx% ELSE x%+=188
 4380NEXT
 4390PROCclosemenu
 4400IF remb%=1 PROCcw(main%):REM Adj
 4410ENDPROC
 4420:
 4430DEFPROCiconbar(smb%,sih%)
 4440LOCAL J%
 4450sel%=FNsel:IF swh%=copybox% sel%=1:sel%(1)=chosen%
 4460FOR J%=1 TO sel%
 4470 PROCdoubleclick(smb%,sel%(J%))
 4480NEXT
 4490ENDPROC
 4500:
 4510REM-------------
 4520REM. COPY OBJECT
 4530REM-------------
 4540:
 4550DEFPROCprepcopybox
 4560LOCAL wh%:wh%=copybox%
 4570leaf$=leaf$(chosen%)
 4580PROCit(wh%,2,leaf$)
 4590q%!0=wh%:q%!4=1:SYS "Wimp_GetIconState",,q%
 4600$(q%!28)=FNspr(wh%,dragicon%)
 4610ENDPROC
 4620:
 4630DEFPROCcopy(ddir$,remb%)
 4640REM copybox
 4650FilerAction%=FNfileraction:opts%=FNreadopts
 4660leaf$=leaf$(chosen%)
 4670sfsp$=dir$+"."+leaf$
 4680IF FNcheckobj(sfsp$,TRUE) THEN
 4690 fsp$=FNit(copybox%,fnicon%)
 4700 IF ddir$="" THEN
 4710  REM OK/Ret
 4720  ddir$=FNparent(fsp$):IF ddir$="" ddir$=dir$
 4730 ENDIF
 4740 newleaf$=LEFT$(FNleaf(fsp$),10)
 4750 dfsp$=ddir$+"."+newleaf$
 4760 IF FilerAction% THEN
 4770  PROCfileraction(0)
 4780 ELSE
 4790  opt$=FNcopyopts(FALSE)
 4800  PROCcommand("Copy files","Copy "+sfsp$+" "+dfsp$+" "+opt$)
 4810 ENDIF
 4820 :
 4830 REM copy description. if any
 4840 REM does ddir$ have a TigerData file?
 4850 fsp$=ddir$+".TigerData":present%=FNcheckobj(fsp$,FALSE)
 4860 :
 4870 IF NOT present% THEN
 4880  descs%=0
 4890 ELSE
 4900  descs%=FNloadTigerData(fsp$)
 4910 ENDIF
 4920 :
 4930 REM transfer incoming descriptions to arrays
 4940 name$=leaf$(chosen%)
 4950 desc$=$desc%(chosen%)
 4960 IF desc$=tigstr$ desc$=""
 4970 IF desc$<>"" THEN
 4980  found%=FALSE
 4990  FOR K%=1 TO descs%
 5000   IF name$(K%)=name$ desc$(K%)=desc$:found%=TRUE:K%=descs%
 5010  NEXT
 5020  IF NOT found% THEN
 5030   descs%+=1:name$(descs%)=name$:desc$(descs%)=desc$
 5040  ENDIF
 5050 ENDIF
 5060 PROCwriteTigerData(descs%)
 5070 IF ddir$=dir$ AND newleaf$<>leaf$ PROCshowTiger(1)
 5080 IF remb%<>1 PROCclosemenu
 5090ENDIF
 5100ENDPROC
 5110:
 5120DEFPROCcommand(title$,command$)
 5130REM perform task with output in command window
 5140$C%=title$
 5150SYS "Wimp_CommandWindow",C%
 5160OSCLI command$
 5170SYS "Wimp_CommandWindow",0
 5180ENDPROC
 5190:
 5200REM---------------
 5210REM. FILER ACTIONS
 5220REM---------------
 5230:
 5240DEFPROCaccess(n%)
 5250LOCAL access%,recurse%,wh%:wh%=accesswind%
 5260CASE n% OF
 5270WHEN 1:REM menu choice
 5280 CASE level2% OF
 5290  WHEN 0:access%=10
 5300  WHEN 1:access%=2
 5310  WHEN 2:access%=16
 5320  WHEN 3:access%=3
 5330 ENDCASE
 5340 IF stay% PROCredomenu(n%)
 5350WHEN 2:REM window click
 5360 access%=0
 5370 IF FNis(wh%,1) access%+=8
 5380 IF FNis(wh%,2) access%+=1
 5390 IF FNis(wh%,3) access%+=2
 5400 IF FNis(wh%,4) access%+=16
 5410 IF FNis(wh%,5) access%+=8
 5420 IF stay% PROCredomenu(n%):PROCmainmenu(remx%,remy%,chosen%)
 5430ENDCASE
 5440recurse%=FNis(wh%,11)
 5450PROCfileraction(3)
 5460ENDPROC
 5470:
 5480DEFPROCredomenu(n%)
 5490REM re-do ticks in mb5% and icons in accesswind%
 5500PROCaccessmenu(TRUE,n%)
 5510SYS "Wimp_GetPointerInfo",,q%:wh%=q%!12
 5520q%!0=wh%:SYS "Wimp_GetWindowState",,q%
 5530SYS "Wimp_CreateSubMenu",,mb5%,q%!4,q%!16
 5540ENDPROC
 5550:
 5560DEFPROCaccessmenu(more%,n%)
 5570SYS "Wimp_GetPointerInfo",,q%:wh%=q%!12
 5580LOCAL J%,leaf$,obj%,wh%:wh%=accesswind%
 5590b%=&7000021:g%=&7400021:REM flags=black,grey
 5600a%=mb5%:p%=a%+28:$a%="Access":f%=b%:wid%=15*16
 5610a%!12=&70207:a%!16=wid%:a%!20=44:a%!24=0
 5620:
 5630IF n%=1 FOR J%=1 TO 10:PROCui(wh%,J%):NEXT
 5640tick%()=0
 5650sel%=FNsel:IF sel%=0 sel%=1:sel%(1)=chosen%
 5660leaf$=$name%(chosen%)
 5670obj%=FNobjtype(dir$+"."+leaf$)
 5680PROCcleariconbit(wh%,11,22)
 5690:
 5700IF sel%=1 AND obj%=1 THEN
 5710 REM one file chosen
 5720 PROCseticonbit(wh%,11,22)
 5730 SYS "OS_File",5,dir$+"."+leaf$ TO ,,,,,attr%
 5740 IF more% attr%=access%
 5750 locked%=(attr% AND 8)=8
 5760 oread% =(attr% AND 1)=1
 5770 owrite%=(attr% AND 2)=2
 5780 pread% =(attr% AND 16)=16
 5790 pwrite%=(attr% AND 32)=32
 5800 IF n%=1 THEN
 5810  IF locked% PROCsi(wh%,1) ELSE PROCsi(wh%,6)
 5820  IF oread%  PROCsi(wh%,2) ELSE PROCsi(wh%,7)
 5830  IF owrite% PROCsi(wh%,3) ELSE PROCsi(wh%,8)
 5840  IF pread%  PROCsi(wh%,4) ELSE PROCsi(wh%,9)
 5850  IF pwrite% PROCsi(wh%,5) ELSE PROCsi(wh%,10)
 5860 ENDIF
 5870 protected%=locked%
 5880 public%=pread%
 5890 IF protected% tick%(0)=TRUE ELSE tick%(1)=TRUE
 5900 IF public% tick%(2)=TRUE ELSE tick%(3)=TRUE
 5910ENDIF
 5920:
 5930IF tick%(0) t%=1 ELSE t%=0
 5940s$="Protected":p%!0=t%:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
 5950IF tick%(1) t%=1 ELSE t%=0
 5960s$="Unprotected":p%!0=t%+2:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
 5970IF tick%(2) t%=1 ELSE t%=0
 5980s$="Public":p%!0=t%:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
 5990IF tick%(3) t%=1 ELSE t%=0
 6000s$="Private":p%!0=t%+2:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
 6010b%=&7000121:g%=&7400121:REM flags=black,grey (indirected)
 6020$mi11%="Access details"
 6030p%!0=&80:p%!4=wh%:p%!8=b%:p%!12=mi11%:p%!16=-1:p%!20=16
 6040ENDPROC
 6050:
 6060DEFPROCsettype
 6070LOCAL J%,settype%,str$,str2$,num%,len%,more%
 6080str$=FNlc(FNstrip($newname%))
 6090IF str$="":PROCbadtype:ENDPROC
 6100IF LEFT$(str$,1)="&" str$=MID$(str$,2)
 6110settype%=-1:num%=TRUE
 6120FOR J%=1 TO LEN str$
 6130 IF INSTR("0123456789ABCDEFabcdef",MID$(str$,J%,1))<1 num%=FALSE
 6140NEXT
 6150IF num% THEN
 6160 settype%=EVAL("&"+str$)
 6170ELSE
 6180 more%=0
 6190 REPEAT
 6200  SYS "XOS_ReadVarVal","File$Type_*",C%,18,more%,3 TO ,,len%,more%
 6210  C%?len%=&D:str2$=FNlc(FNstrip($C%))
 6220 UNTIL more%<=0 OR str$=str2$
 6230 IF more%>0 THEN
 6240  settype%=EVAL("&"+MID$(FNname(more%),11,3))
 6250 ENDIF
 6260ENDIF
 6270IF settype%>-1 THEN
 6280 PROCfileraction(4)
 6290 refresh%=TRUE
 6300ELSE
 6310 PROCbadtype
 6320ENDIF
 6330ENDPROC
 6340:
 6350DEFPROCbadtype
 6360ans%=FNmsg("Bad file type","Cancel")
 6370ENDPROC
 6380:
 6390DEFPROChelp
 6400LOCAL app$
 6410sel%=FNsel:IF sel%=0 sel%(1)=chosen%:sel%=1
 6420IF sel%=1 THEN
 6430 app$=leaf$(sel%(1))
 6440 OSCLI("WimpTask Filer_Run "+dir$+"."+app$+".!Help")
 6450ENDIF
 6460ENDPROC
 6470:
 6480DEFPROCcount
 6490PROCfileraction(5)
 6500ENDPROC
 6510:
 6520DEFPROCfind($newname%)
 6530find$=$newname%:PROCfileraction(9)
 6540ENDPROC
 6550:
 6560DEFPROCstamp
 6570PROCfileraction(8):refresh%=TRUE
 6580ENDPROC
 6590:
 6600DEFPROCfileraction(n%)
 6610LOCAL J%,taskh%,leaf$
 6620FilerAction%=FNfileraction:opts%=FNreadopts
 6630sel%=FNsel:IF sel%=0 sel%(1)=chosen%:sel%=1
 6640SYS &400DE,"Filer_Action" TO taskh%
 6650FOR J%=1 TO sel%
 6660 leaf$=leaf$(sel%(J%))
 6670 SYS &40F80,taskh%,dir$
 6680 SYS &40F81,taskh%,leaf$
 6690NEXT
 6700CASE n% OF
 6710 WHEN 0:REM Copy
 6720 SYS &40F82,taskh%,0,opts%,ddir$,LENddir$+1
 6730 WHEN 1:REM move/rename
 6740 WHEN 2:REM Delete
 6750 WHEN 3:REM Set access
 6760 !q%=access% :SYS &40F82,taskh%,3,opts%+(recurse%<<4),q%,4
 6770 WHEN 4:REM Set type
 6780 !q%=settype%:SYS &40F82,taskh%,4,opts%,q%,4
 6790 WHEN 5:REM Count
 6800 SYS &40F82,taskh%,5,opts%,1
 6810 WHEN 6:REM Move
 6820 SYS &40F82,taskh%,6,opts%,ddir$,LENddir$+1
 6830 WHEN 7:REM Copy local (within dir)
 6840 WHEN 8:REM Stamp files
 6850 SYS &40F82,taskh%,8,opts%,0
 6860 WHEN 9:REM Find file
 6870 SYS &40F82,taskh%,9,opts%,find$,LENfind$+1
 6880ENDCASE
 6890ENDPROC
 6900:
 6910REM---------------
 6920REM. FILER OPTIONS
 6930REM---------------
 6940:
 6950DEFFNreadopts
 6960force%=(FNreadcmos(198)AND&10)DIV &10
 6970confirm%=(FNreadcmos(198)AND&20)DIV&20
 6980verbose%=(FNreadcmos(198)AND&40)DIV&40
 6990newer%=(FNreadcmos(198)AND&80)DIV&80
 7000o%=verbose%+(confirm%<<1)+(force%<<2)+(newer%<<3)
 7010=o%
 7020:
 7030DEFPROCsetopts
 7040LOCAL newer%,force%,verbose%,confirm%
 7050verbose%=opts% AND 1
 7060confirm%=(opts% AND 2)DIV2
 7070force%=(opts% AND 4)DIV4
 7080newer%=(opts% AND 8)DIV8
 7090PROCsetcmos(198,force%<<4,&10)
 7100PROCsetcmos(198,confirm%<<5,&20)
 7110PROCsetcmos(198,verbose%<<6,&40)
 7120PROCsetcmos(198,newer%<<7,&80)
 7130ENDPROC
 7140:
 7150DEFFNreadcmos(ad%)
 7160LOCAL byte%
 7170SYS "OS_Byte",161,ad% TO ,,byte%
 7180=byte%
 7190:
 7200DEFPROCsetcmos(ad%,byte%,mask%)
 7210LOCAL byte2%
 7220SYS "OS_Byte",161,ad% TO ,,byte2%
 7230byte2%=(byte2% AND NOT mask%) OR byte%
 7240SYS "OS_Byte",162,ad%,byte2%
 7250ENDPROC
 7260:
 7270DEFFNcopyopts(delete%)
 7280LOCAL o$,o%:o%=FNreadopts
 7290o$="A"
 7300IF confirm% o$+="C" ELSE o$+="~C"
 7310IF delete% o$+="D" ELSE o$+="~D"
 7320IF force% o$+="F" ELSE o$+="~F"
 7330o$+="~L"
 7340IF newer% o$+="N" ELSE o$+="~N"
 7350o$+="~P~QR~S~T"
 7360IF verbose% o$+="V" ELSE o$+="~V"
 7370=o$
 7380:
 7390DEFFNwipeopts
 7400LOCAL o$,o%:o%=FNreadopts:o$=""
 7410IF confirm% o$+="C" ELSE o$+="~C"
 7420IF force% o$+="F" ELSE o$+="~F"
 7430o$+="R"
 7440IF verbose% o$+="V" ELSE o$+="~V"
 7450=o$
 7460:
 7470REM-------------
 7480REM. TEXT BUFFER
 7490REM-------------
 7500:
 7510DEFPROCgettext
 7520REM get text from any text icon and place in buffer
 7530REM continuously called from Poll if textflag%=TRUE
 7540IF NOT textflag% ENDPROC
 7550LOCAL dwh%,dih%,flag%,data%,text%,ind%,tsk%,text$
 7560dwh%=buffwind%:dih%=0
 7570SYS "Wimp_GetCaretPosition",,C%:IF C%!0=dwh% dpos%=C%!20
 7580SYS "Wimp_GetPointerInfo",,q%
 7590smb%=q%!8:swh%=q%!12:sih%=q%!16
 7600IF swh%=-2 OR swh%=dwh% OR smb%<>1 ENDPROC
 7610IF FNdemo("Text buffer operations") THEN
 7620 textflag%=FALSE:PROCui(buffwind%,1):ENDPROC
 7630ENDIF
 7640IF sih%=-4 THEN
 7650 REM title bar
 7660 !q%=swh%:SYS "Wimp_GetWindowInfo",,q%
 7670 flag%=q%!60:data%=76
 7680ELSE
 7690 !q%=swh%:q%!4=sih%
 7700 SYS "Wimp_GetIconState",,q%
 7710 flag%=q%!24:data%=28
 7720ENDIF
 7730text%=FNbitset(flag%,0):ind%=FNbitset(flag%,8)
 7740IF text% THEN
 7750 text$=""
 7760 tsk%=FNtaskhandle(swh%,sih%)
 7770 IF ind% THEN
 7780  SYS "Wimp_TransferBlock",tsk%,q%!data%,task%,C%,255
 7790  text$=FNname(C%)
 7800 ELSE
 7810  text$=FNname(q%+data%)
 7820 ENDIF
 7830 PROCmovetext(text$,dwh%,dih%,dpos%)
 7840ENDIF
 7850textflag%=FALSE:PROCui(buffwind%,1)
 7860ENDPROC
 7870:
 7880DEFPROCdragfiletobuff(path$,type%)
 7890LOCAL n%,c%,s$
 7900IF FNdemo("Text buffer operations") ENDPROC
 7910IF type%<>&FFF AND type%<>&FEB PROCbuzz:ENDPROC
 7920F%=OPENUP(path$)
 7930s$="":n%=0
 7940WHILE (NOT EOF#F%) AND (n%<maxdesclen%-10)
 7950 c%=BGET#F%:IF c%>31 s$+=CHR$c%:n%+=1
 7960ENDWHILE
 7970CLOSE#F%:F%=0
 7980PROCmovetext(s$,buffwind%,0,0)
 7990ENDPROC
 8000:
 8010DEFPROCloadsel(q%)
 8020REM DataSave received from another task
 8030IF FNdemo("Text buffer operations") ENDPROC
 8040dwh%=q%!20:dih%=q%!24:type%=q%!40
 8050IF dwh%<>buffwind% OR dih%<>0 ENDPROC
 8060IF type%<>&FFF AND type%<>&FEB PROCbuzz:ENDPROC
 8070REM send DataSaveAck
 8080q%!36=-1:$(q%+44)="<Wimp$Scrap>"+CHR$0
 8090q%!0=64:q%!12=q%!8:q%!16=2:REM DataSaveAck
 8100SYS "Wimp_SendMessage",18,q%,q%!4
 8110ENDPROC
 8120:
 8130DEFPROCputtext
 8140REM transfer text from buffer to caret
 8150IF FNdemo("Text buffer operations") ENDPROC
 8160text$=FNit(buffwind%,0)
 8170SYS "Wimp_GetCaretPosition",,C%
 8180dwh%=C%!0:dih%=C%!4:dpos%=C%!20
 8190IF dwh%=main% AND dih%>78 AND dih%<79+items% THEN
 8200 PROCmovetext(text$,dwh%,dih%,dpos%)
 8210ENDIF
 8220ENDPROC
 8230:
 8240DEFPROCshiftdesc(swh%,sih%,dwh%,dih%,smb%)
 8250REM dragged desc to buffer or other desc
 8260IF dwh%=buffwind% AND dih%<>0 ENDPROC
 8270IF (dwh%=buffwind% OR swh%=buffwind%) AND demo% THEN
 8280 IF FNdemo("Text buffer operations") ENDPROC
 8290ENDIF
 8300IF dwh%=main% AND (dih%<79 OR dih%>157 OR dih%=sih%) ENDPROC
 8310insert%=FNis(buffwind%,3)
 8320IF insert% dpos%=FNdpos(dwh%,dih%) ELSE dpos%=0
 8330text$=FNit(swh%,sih%)
 8340PROCmovetext(text$,dwh%,dih%,dpos%)
 8350IF INKEY-1 OR smb%=16 PROCit(swh%,sih%,""):PROCcaret(swh%,sih%)
 8360ENDPROC
 8370:
 8380DEFFNdpos(dwh%,dih%)
 8390REM chr pos of pointer in icon after drag
 8400LOCAL mx%
 8410SYS "Wimp_GetPointerInfo",,q%:mx%=q%!0
 8420q%!0=dwh%:q%!4=dih%:SYS "Wimp_GetIconState",,q%
 8430=(mx%-FNvax(dwh%,q%!8)) DIV 16
 8440:
 8450DEFPROCmovetext(ss$,dwh%,dih%,dpos%)
 8460insert%=FNis(buffwind%,3)
 8470ds$=FNit(dwh%,dih%)
 8480e$=""
 8490IF insert% THEN
 8500 IF LENds$+LENss$>maxdesclen% e$="Too long to insert"
 8510 IF LENds$=maxdesclen% e$="Destination buffer full"
 8520 IF e$<>"" THEN
 8530  ans%=FNmsg(e$,"Cancel")
 8540 ELSE
 8550  ss$=FNinsert(ss$,ds$,dpos%)
 8560 ENDIF
 8570ENDIF
 8580IF e$="" THEN
 8590 PROCit(dwh%,dih%,ss$):PROCcaret(dwh%,dih%):PROCbeep
 8600 REPEAT:MOUSE x%,y%,b%:UNTIL b%=0
 8610ENDIF
 8620ENDPROC
 8630:
 8640DEFFNinsert(s$,d$,p%)
 8650REM places s$ in d$ at pos p%
 8660LOCAL l$,r$,maxl%:maxl%=255
 8670IF p%<0 p%=0 ELSE IF p%>LENd$ p%=LENd$
 8680IF LENd$+LENs$>maxl% THEN=d$
 8690l$=LEFT$(d$,p%):r$=RIGHT$(d$,LENd$-p%)
 8700=l$+s$+r$
 8710:
 8720REM---------
 8730REM. CHOICES
 8740REM---------
 8750:
 8760DEFPROCloadchoices
 8770LOCAL J%,fsp$,d$,s$,n%,wh%:wh%=choicewind%
 8780fsp$=taskdir$+".Choices"
 8790IF FNcheckobj(fsp$,TRUE) THEN
 8800 H%=OPENUP(fsp$)
 8810 s$=GET$#H%:REM taskdir$+".Choices"
 8820 user$=GET$#H%
 8830 n%=BGET#H%
 8840 IF n%=0 demo%=TRUE ELSE demo%=FALSE
 8850 FOR J%=6 TO 16
 8860  n%=BGET#H%
 8870  IF n%=1 PROCsi(wh%,J%) ELSE PROCui(wh%,J%)
 8880 NEXT
 8890 startdir$=GET$#H%
 8900 CLOSE#H%:H%=0
 8910 PROCsetchoices
 8920ELSE
 8930 PROCsetdefaults
 8940ENDIF
 8950ENDPROC
 8960:
 8970DEFPROCsetchoices
 8980LOCAL J%,s%,wh%:wh%=choicewind%
 8990openTiger%=FALSE:openbuff%=FALSE
 9000promptsave%=FALSE:IconSprites%=FALSE:dragdesc%=FALSE
 9010s%=FALSE
 9020FOR J%=6 TO 8
 9030 IF FNis(wh%,J%) s%=TRUE
 9040NEXT
 9050IF s%=FALSE PROCsi(wh%,6):REM default
 9060IF FNis(wh%,6) startdir$=FNstrip(FNosvar("Root$Dir"))
 9070IF FNis(wh%,7) THEN
 9080 IF NOT FNcheckobj(startdir$,FALSE) PROCsi(wh%,6):PROCui(wh%,7)
 9090 REM default to root if can't find user's startdir
 9100ENDIF
 9110IF FNis(wh%,8) startdir$=""
 9120IF FNis(wh%,9) display%=1
 9130IF FNis(wh%,10) display%=2
 9140IF FNis(wh%,11) display%=3
 9150IF FNis(wh%,12) openTiger%=TRUE
 9160IF FNis(wh%,13) openbuff%=TRUE
 9170IF FNis(wh%,14) promptsave%=TRUE
 9180IF FNis(wh%,15) IconSprites%=TRUE
 9190IF FNis(wh%,16) dragdesc%=TRUE
 9200ENDPROC
 9210:
 9220DEFPROCprepchoicewind
 9230LOCAL J%,wh%:wh%=choicewind%
 9240FOR J%=6 TO 8:PROCui(wh%,J%):NEXT
 9250CASE startdir$ OF
 9260 WHEN FNstrip(FNosvar("Root$Dir")):PROCsi(wh%,6)
 9270 WHEN dir$:PROCsi(wh%,7)
 9280 WHEN "":PROCsi(wh%,8)
 9290 OTHERWISE:PROCsi(wh%,6)
 9300ENDCASE
 9310CASE display% OF
 9320 WHEN 1:PROCsi(wh%,9)
 9330 WHEN 2:PROCsi(wh%,10)
 9340 WHEN 3:PROCsi(wh%,11)
 9350ENDCASE
 9360IF openTiger% PROCsi(wh%,12)
 9370IF openbuff% PROCsi(wh%,13)
 9380IF promptsave% PROCsi(wh%,14)
 9390IF IconSprites% PROCsi(wh%,15)
 9400IF dragdesc% PROCsi(wh%,16)
 9410ENDPROC
 9420:
 9430DEFPROCsetdefaults
 9440LOCAL J%,wh%:wh%=choicewind%
 9450FOR J%=6 TO 16:PROCui(wh%,J%):NEXT
 9460PROCsi(wh%,6):PROCsi(wh%,9):PROCsi(wh%,12)
 9470PROCsi(wh%,14):PROCsi(wh%,15):PROCsi(wh%,16)
 9480PROCsetchoices
 9490ENDPROC
 9500:
 9510DEFPROCsavechoices
 9520LOCAL J%,fsp$,d$,n%,wh%:wh%=choicewind%
 9530fsp$=taskdir$+".Choices"
 9540H%=OPENOUT(fsp$)
 9550BPUT#H%,task$+" choices"
 9560BPUT#H%,user$
 9570IF demo% n%=0 ELSE n%=1
 9580BPUT#H%,n%
 9590FOR J%=6 TO 16
 9600 IF FNis(wh%,J%) n%=1 ELSE n%=0
 9610 BPUT#H%,n%
 9620NEXT
 9630IF FNis(wh%,7) d$=dir$ ELSE d$=""
 9640BPUT#H%,d$
 9650OSCLI("SetType "+fsp$+" &FFF")
 9660CLOSE#H%:H%=0
 9670ENDPROC
 9680:
 9690REM----------
 9700REM. DRAGGING
 9710REM----------
 9720:
 9730DEFFNsoliddrag
 9740REM modules present? (RISC OSEVAL3)
 9750IF FNswi("DragASprite_Start")=-1 THEN=FALSE
 9760IF FNswi("DragASprite_Stop") =-1 THEN=FALSE
 9770REM bit 1 of byte 28 set?
 9780SYS "OS_Byte",161,28 TO ,,cmos%
 9790IF (cmos% AND 2)=0 THEN=FALSE
 9800=TRUE
 9810:
 9820DEFFNfileraction
 9830REM bit 2 of byte 28 set?
 9840SYS "OS_Byte",161,28 TO ,,cmos%
 9850IF (cmos% AND 4)=0 THEN=TRUE
 9860=FALSE
 9870:
 9880DEFFNswi(swi$)
 9890LOCAL swi%,flags%
 9900SYS "XOS_SWINumberFromString",,swi$ TO swi%;flags%
 9910IF (flags% AND 1) swi%=-1
 9920=swi%
 9930:
 9940DEFPROCstartdrag(wh%,ih%,mb%,sol%)
 9950swh%=wh%:sih%=ih%:smb%=mb%:REM source
 9960REM get coords
 9970q%!0=wh%:SYS "Wimp_GetWindowState",,q%
 9980wminx%=q%!4:wminy%=q%!8:wmaxx%=q%!12:wmaxy%=q%!16:scrolly%=q%!24
 9990ox%=q%!4-q%!20:oy%=q%!16-q%!24
10000SYS "Wimp_GetPointerInfo",,q%:mx%=q%!0:my%=q%!4:remb%=q%!8
10010q%!0=wh%:q%!4=ih%:SYS "Wimp_GetIconState",,q%
10020REM initial position of drag box
10030CASE swh% OF
10040 :
10050 WHEN messwind%
10060 sol%=FALSE
10070 q%!4=wh%:SYS "Wimp_GetWindowOutline",,q%+4
10080 q%!0=wh%:q%!4=5:REM drag type
10090 xos%=FNosxmax:yos%=FNosymax
10100 q%!24=0:q%!28=0:q%!32=xos%:q%!36=yos%
10110 :
10120 WHEN savebox%,copybox%
10130 q%!0=wh%:q%!4=5:sprad%=1
10140 q%!8=q%!8+ox%:q%!12=q%!12+oy%:q%!16=q%!16+ox%:q%!20=q%!20+oy%
10150 q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
10160 :
10170 WHEN main%
10180 IF ih%=-1 THEN
10190  REM background - rubber band
10200  IF mx%-wminx%<244 THEN
10210   q%!0=wh%:SYS "Wimp_GetWindowState",,q%
10220   minx%=q%!4:miny%=q%!8:maxx%=q%!12:maxy%=q%!16
10230   IF maxx%>minx%+228 maxx%=minx%+228
10240   q%!0=wh%:q%!4=6:REM drag type
10250   q%!8=mx%:q%!12=my%:q%!16=mx%+4:q%!20=my%+4
10260   REM restrict parent box to visible area
10270   q%!24=minx%:q%!28=miny%:q%!32=maxx%:q%!36=maxy%
10280  ENDIF
10290 ENDIF
10300 :
10310 IF ih%>-1 AND ih%<79 THEN
10320  PROCsi(main%,ih%)
10330  sel%=FNsel
10340  q%!0=wh%:q%!4=5:sprad%=1:sol%=solid%
10350  q%!8=mx%:q%!12=my%:q%!16=mx%:q%!20=my%
10360  q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
10370 ENDIF
10380 :
10390 IF ih%>78 AND display%=1 THEN
10400  REM descr
10410  IF NOT dragdesc% ENDPROC
10420  iminx%=FNvax(wh%,q%!8):iminy%=FNvay(wh%,q%!12)
10430  imaxx%=FNvax(wh%,q%!16):imaxy%=FNvay(wh%,q%!20)
10440  IF iminx%<wminx% iminx%=wminx%
10450  IF imaxx%>wmaxx% imaxx%=wmaxx%
10460  w%=(imaxx%-iminx%) DIV 2:h%=10:mode%=12
10470  PROCspritecreate("grab",w%,h%,mode%)
10480  REM write to sprite
10490  SYS "OS_SpriteOp",&100+60,spr%,"grab",0 TO r0%,r1%,r2%,r3%
10500  MOVE 6,32:VDU 5:PRINT FNit(wh%,ih%)
10510  SYS "OS_SpriteOp",r0%,r1%,r2%,r3%
10520  q%!0=wh%:q%!4=5:sprad%=spr%:sol%=solid%
10530  q%!8=iminx%:q%!12=iminy%+4:q%!16=imaxx%:q%!20=imaxy%
10540  q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
10550 ENDIF
10560 :
10570 WHEN buffwind%
10580 iminx%=FNvax(wh%,q%!8):iminy%=FNvay(wh%,q%!12)
10590 imaxx%=FNvax(wh%,q%!16):imaxy%=FNvay(wh%,q%!20)
10600 w%=(imaxx%-iminx%) DIV 2:h%=10:mode%=12
10610 w%-=12
10620 PROCspritecreate("grab",w%,h%,mode%)
10630 REM write to sprite
10640 SYS "OS_SpriteOp",&100+60,spr%,"grab",0 TO r0%,r1%,r2%,r3%
10650 MOVE 4,32:VDU 5:PRINT FNit(wh%,0)
10660 SYS "OS_SpriteOp",r0%,r1%,r2%,r3%
10670 q%!0=wh%:q%!4=5:sprad%=spr%:sol%=solid%
10680 q%!8=iminx%:q%!12=iminy%+4:q%!16=imaxx%:q%!20=imaxy%
10690 q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
10700 :
10710ENDCASE
10720:
10730IF sol% THEN
10740 spr$=FNspr(swh%,sih%):flags%=FNflags(spr$)
10750 SYS "DragASprite_Start",flags%,sprad%,spr$,q%+8
10760ELSE
10770 SYS "Wimp_DragBox",,q%
10780ENDIF
10790ENDPROC
10800:
10810DEFPROCspritecreate(spr$,w%,h%,mode%)
10820SYS "OS_SpriteOp",&100+15,spr%,spr$,0,w%,h%,mode%
10830ENDPROC
10840:
10850DEFFNspr(swh%,sih%)
10860LOCAL leaf$,type%,obj%,spr$:spr$=""
10870IF swh%=savebox% THEN="file_FFF"
10880IF swh%=main% AND sih%>78 AND sih%<79+items% THEN="grab"
10890IF swh%=buffwind% AND sih%=0 THEN="grab"
10900leaf$=leaf$(chosen%)
10910type%=FNfiletype(dir$+"."+leaf$)
10920obj%=FNobjtype(dir$+"."+leaf$)
10930IF sel%>1 obj%=4
10940CASE obj% OF
10950 WHEN 0:spr$="tigx"
10960 WHEN 1:spr$=FNfile(type%,1)
10970 WHEN 2:spr$=FNdir(leaf$,1)
10980 WHEN 3:spr$="file_"+STR$~type%:REM 'image' file
10990 WHEN 4:spr$="selection"
11000 OTHERWISE:spr$="file_xxx"
11010ENDCASE
11020=spr$
11030:
11040DEFFNflags(spr$)
11050LOCAL f%
11060CASE spr$ OF
11070 WHEN "selection":f%=%01000101:REM no drop shadow
11080 OTHERWISE:f%=%11000101
11090ENDCASE
11100=f%
11110:
11120DEFPROCenddrag(q%,swh%,remb%,solid%)
11130REM reason code 7 from polling loop
11140REM q% contains final pos of drag box
11150bminx%=q%!0:bminy%=q%!4:bmaxx%=q%!8:bmaxy%=q%!12
11160CASE swh% OF
11170 WHEN main%
11180 CASE sih% OF
11190  WHEN -1  :PROCselect(bminy%,bmaxy%,remb%):REM rubber band
11200  OTHERWISE:PROCdrop(swh%,sih%,smb%):REM Filer/App/Pinboard/Iconbar/Tiger
11210 ENDCASE
11220 WHEN copybox%,savebox%,buffwind%:PROCdrop(swh%,sih%,smb%)
11230 WHEN messwind%
11240  q%!0=swh%:q%!4=bminx%:q%!8=bminy%-40:q%!12=bmaxx%:q%!16=bmaxy%-40
11250  q%!28=-1:SYS "Wimp_OpenWindow",,q%:SYS "Wimp_GetWindowState",,q%
11260  MOUSE RECTANGLE q%!4+8,q%!8+8,q%!12-q%!4-16,q%!16-q%!8-16
11270ENDCASE
11280ENDPROC
11290:
11300REM-----------
11310REM. SELECTION
11320REM-----------
11330:
11340DEFFNsel
11350REM how many items selected?
11360REM put items into array
11370LOCAL J%,n%:n%=0
11380FOR J%=1 TO items%
11390 IF FNis(main%,J%) n%+=1:sel%(n%)=J%
11400NEXT
11410=n%
11420:
11430DEFPROCselect(bminy%,bmaxy%,remb%)
11440IF bminy%>bmaxy% THEN SWAP bminy%,bmaxy%
11450REM rubber band dragged
11460REM which icons are in box? - get lo and hi
11470LOCAL J%
11480ih%=1
11490REPEAT
11500 !q%=main%:q%!4=ih%:SYS"Wimp_GetIconState",,q%
11510 iminy%=q%!12:iminy%=FNvay(main%,iminy%):ih%+=1
11520UNTIL iminy%<bmaxy%
11530lo%=ih%-1:ih%-=1
11540IF lo%>items% lo%=items%
11550REPEAT
11560 !q%=main%:q%!4=ih%:SYS"Wimp_GetIconState",,q%
11570 iminy%=q%!12:iminy%=FNvay(main%,iminy%):ih%+=1
11580UNTIL iminy%<bminy%
11590hi%=ih%-1
11600IF hi%>items% hi%=items%
11610REM treat according to remb%
11620IF lo%>0 THEN
11630 FOR J%=lo% TO hi%
11640  CASE remb% OF
11650   WHEN 4:PROCsi(main%,J%)
11660   WHEN 1:PROCti(main%,J%)
11670  ENDCASE
11680 NEXT
11690ENDIF
11700ENDPROC
11710:
11720DEFPROCselectall
11730sel%=FNsel
11740IF sel%<items% THEN
11750 FOR J%=1 TO items%:PROCsi(main%,J%):NEXT
11760ENDIF
11770ENDPROC
11780:
11790DEFPROCclearall
11800FOR J%=1 TO items%
11810 IF FNis(main%,J%) PROCui(main%,J%)
11820NEXT
11830ENDPROC
11840:
11850REM------
11860REM. KEYS
11870REM------
11880:
11890DEFPROCkeypress(q%)
11900wh%=q%!0:ih%=q%!4:xo%=q%!8:chr%=q%!24
11910CASE chr% OF
11920 WHEN  30:IF display%=1 PROChome
11930 WHEN  13:PROCreturn
11940 WHEN  27:PROCescape(wh%)
11950 WHEN 398:IF display%=1 PROCdown
11960 WHEN 399:IF display%=1 PROCup
11970 WHEN 385:PROCviewer(dir$):REM F1
11980 WHEN 386:PROCparent(dir$):REM F2
11990 WHEN 387:IF display%=1 PROCsavedata:REM F3
12000 WHEN 403:PROCow(savebox%):REM Shift F3
12010 WHEN 388:PROCtest:REM F4
12020 WHEN 389:PROCow(buffwind%):REM F5
12030 WHEN 392:PROCundo:REM F8
12040 WHEN 393:PROCredo:REM F9
12050 WHEN 394:PROCsize:REM Tab adjusts size
12060 OTHERWISE SYS "Wimp_ProcessKey",chr%
12070ENDCASE
12080ENDPROC
12090:
12100DEFPROCescape(wh%)
12110esc%=TRUE:IF wh%=messwind% PROCcw(wh%)
12120ENDPROC
12130:
12140DEFPROCtest
12150REM F4
12160ENDPROC
12170:
12180REM-------
12190REM. CARET
12200REM-------
12210:
12220DEFPROChome
12230IF wh%=main% THEN
12240 !C%=main%:SYS "Wimp_GetWindowState",,C%
12250 C%!20=0:C%!24=0:SYS "Wimp_OpenWindow",,C%
12260 PROCcaretx(wh%,79,0)
12270ENDIF
12280ENDPROC
12290:
12300DEFPROCreturn
12310ret%=TRUE
12320CASE wh% OF
12330 WHEN main%
12340 IF display%=1 THEN
12350  IF ih%=156 PROChome:ENDPROC
12360  IF ih%=79+items%-1 ENDPROC
12370  PROCscrolldown(wh%,ih%)
12380  PROCcaretx(wh%,ih%+1,0)
12390 ENDIF
12400 WHEN savebox%
12410 IF ih%=fnicon% PROCquicksave(wh%,ih%,&FFF)
12420 WHEN copybox%:PROCcopy("",remb%)
12430ENDCASE
12440ENDPROC
12450:
12460DEFPROCdown
12470IF wh%=main% THEN
12480 IF ih%=156 PROChome:ENDPROC
12490 IF ih%=79+items%-1 ENDPROC
12500 PROCscrolldown(wh%,ih%)
12510 PROCcaretx(wh%,ih%+1,xo%)
12520ENDIF
12530ENDPROC
12540:
12550DEFPROCup
12560IF wh%=main% THEN
12570 IF ih%=78 ENDPROC
12580 IF ih%=79 OR ih%=156 PROChome:ENDPROC
12590 PROCscrollup(wh%,ih%)
12600 PROCcaretx(wh%,ih%-1,xo%)
12610ENDIF
12620ENDPROC
12630:
12640DEFPROCscrolldown(wh%,ih%)
12650REM scroll va up?
12660LOCAL w%,i%,n%
12670REM get extreme window edge relative to wao
12680C%!0=wh%:SYS "Wimp_GetWindowState",,C%:w%=C%!24-(C%!16-C%!8)
12690REM get extreme edge of next icon relative to wao
12700C%!0=wh%:C%!4=ih%+1:SYS "Wimp_GetIconState",,C%:i%=C%!12
12710IF i%<w% THEN
12720 n%=ABS(i%)-ABS(w%):IF n%>44 n%=44:REM align with edge of window
12730 !C%=wh%:SYS "Wimp_GetWindowState",,C%:C%!24-=n%
12740 SYS "Wimp_OpenWindow",,C%:OSCLI("FX15")
12750ENDIF
12760ENDPROC
12770:
12780DEFPROCscrollup(wh%,ih%)
12790REM scroll va down?
12800LOCAL w%,i%,n%
12810REM get extreme window edge relative to wao
12820C%!0=wh%:SYS "Wimp_GetWindowState",,C%:w%=C%!24
12830REM get extreme edge of prev icon relative to wao
12840C%!0=wh%:C%!4=ih%-1:SYS "Wimp_GetIconState",,C%:i%=C%!20
12850IF i%>w% THEN
12860 n%=ABS(w%)-ABS(i%):IF n%>44 n%=44:REM align with edge of window
12870 !C%=main%:SYS "Wimp_GetWindowState",,C%:C%!24+=n%
12880 SYS "Wimp_OpenWindow",,C%:OSCLI("FX15")
12890ENDIF
12900ENDPROC
12910:
12920DEFPROCiconscroll
12930REM horizontal scroll of writable icons
12940SYS "Wimp_GetCaretPosition",,C%:IF C%!0<>main% ENDPROC
12950newi%=C%!4:newp%=C%!20
12960REM get window edges as chrs into icon
12970C%!0=main%:SYS "Wimp_GetWindowState",,C%
12980wl%=(C%!20-228)DIV16
12990wr%=(C%!20+(C%!12-C%!4)-228)DIV16
13000IF newp%>oldp% AND newp%>(wr%-1) THEN
13010 SYS "Wimp_GetCaretPosition",,C%:ix%=C%!20
13020 !C%=main%:SYS "Wimp_GetWindowState",,C%
13030 C%!20+=(ix%-oldp%)*16:SYS "Wimp_OpenWindow",,C%
13040ENDIF
13050IF newp%<oldp% AND (newp%<(wl%+1) OR newp%=0) THEN
13060 SYS "Wimp_GetCaretPosition",,C%:ix%=C%!20
13070 !C%=main%:SYS "Wimp_GetWindowState",,C%
13080 IF ix%=0 C%!20=0 ELSE C%!20-=(oldp%-ix%)*16
13090 SYS "Wimp_OpenWindow",,C%
13100ENDIF
13110oldi%=newi%:oldp%=newp%
13120ENDPROC
13130:
13140DEFPROCcaret(wh%,ih%)
13150LOCAL s$:s$=FNit(wh%,ih%)
13160SYS "Wimp_SetCaretPosition",wh%,ih%,,,-1,LENs$
13170ENDPROC
13180:
13190DEFPROCcaretx(wh%,ih%,xo%)
13200SYS "Wimp_SetCaretPosition",wh%,ih%,xo%,,-1,-1
13210ENDPROC
13220:
13230REM-------
13240REM. MOUSE
13250REM-------
13260:
13270DEFPROCmouse(q%)
13280LOCAL m$,mx%,my%,mb%,wh%,ih%
13290mx%=q%!0:my%=q%!4:mb%=q%!8:wh%=q%!12:ih%=q%!16:icon%=ih%
13300remb%=mb%
13310IF mb% AND 2 PROCmenu(wh%,ih%,mx%,my%):ENDPROC
13320CASE wh% OF
13330 WHEN-2:REM icon bar
13340 IF ih%=baricon% THEN
13350  CASE mb% OF
13360   WHEN 1:SYS "Wimp_SetCaretPosition",-1
13370   REM Adj removes input focus
13380   WHEN 4:
13390   IF pristine% THEN
13400    ans%=FNmsg("Drag object from Filer window to Tiger icon","OK")
13410   ELSE
13420    PROCow(main%)
13430    IF NOT FNfocus(main%) THEN
13440     PROCcaretx(main%,156,0)
13450     IF display%=1 AND items%>0 PROCcaretx(main%,79,0)
13460    ENDIF
13470   ENDIF
13480  ENDCASE
13490 ENDIF
13500 :
13510 WHEN main%
13520 IF ih%=-1 THEN
13530  CASE mb% OF
13540   WHEN 4:PROCclearall:REM click with Sel
13550   WHEN 16,64:PROCstartdrag(wh%,ih%,mb%,FALSE)
13560  ENDCASE
13570 ENDIF
13580 IF ih%=0 THEN
13590  IF INKEY-1 PROCroot(dir$) ELSE PROCparent(dir$)
13600 ENDIF
13610 IF ih%>0 AND ih%<=items% THEN
13620  chosen%=ih%
13630  CASE mb% OF
13640   WHEN 1,4:PROCdoubleclick(mb%,ih%)
13650   WHEN 16,64:PROCstartdrag(wh%,ih%,mb%,solid%)
13660   WHEN 256,1024:PROCclick(mb%,ih%)
13670  ENDCASE
13680 ENDIF
13690 IF ih%>78 AND ih%<79+items% THEN
13700  CASE mb% OF
13710   WHEN 1,4
13720    PROCscrolldown(wh%,ih%-1):PROCscrollup(wh%,ih%+1)
13730   WHEN 16,64:PROCstartdrag(wh%,ih%,mb%,FALSE)
13740  ENDCASE
13750 ENDIF
13760 :
13770 WHEN savebox%
13780 CASE ih% OF
13790  WHEN dragicon%
13800   CASE mb% OF
13810    WHEN 16,64:PROCstartdrag(wh%,ih%,mb%,solid%)
13820   ENDCASE
13830  WHEN okicon%:PROCquicksave(wh%,ih%,&FFF)
13840  IF mb%<>1 PROCcw(wh%):PROCclosemenu
13850  WHEN clicon%:PROCcw(wh%):PROCclosemenu
13860  WHEN 13:IF mb%=1 AND NOT FNis(wh%,13):PROCsi(wh%,13)
13870  WHEN 14:IF mb%=1 AND NOT FNis(wh%,14):PROCsi(wh%,14)
13880  WHEN 15:IF mb%=1 AND NOT FNis(wh%,15):PROCsi(wh%,15)
13890 ENDCASE
13900 :
13910 WHEN copybox%
13920 CASE ih% OF
13930  WHEN dragicon%
13940   CASE mb% OF
13950    WHEN 16,64:PROCstartdrag(wh%,ih%,mb%,solid%)
13960   ENDCASE
13970  WHEN okicon%:PROCcopy("",remb%)
13980  WHEN clicon%:PROCclosemenu
13990 ENDCASE
14000 :
14010 WHEN choicewind%
14020 CASE ih% OF
14030  WHEN 2:PROCsetdefaults:IF mb%<>1 PROCcw(wh%):PROCclosemenu
14040  WHEN 3:PROCcw(wh%):PROCclosemenu
14050  WHEN 4:PROCsavechoices:IF mb%<>1 PROCcw(wh%):PROCclosemenu
14060  WHEN 5:PROCsetchoices:IF mb%<>1 PROCcw(wh%):PROCclosemenu
14070  WHEN12:IF NOT FNis(wh%,12) AND FNis(wh%,13) PROCui(wh%,13)
14080  WHEN13:IF FNis(wh%,13) AND NOT FNis(wh%,12) PROCui(wh%,13)
14090 ENDCASE
14100 :
14110 WHEN accesswind%
14120 IF ih%=0 THEN
14130  IF mb%=1 stay%=TRUE ELSE stay%=FALSE
14140  PROCaccess(2):IF mb%<>1 PROCclosemenu
14150 ENDIF
14160 :
14170 WHEN messwind%:reply%=ih%
14180 CASE mb% OF
14190  WHEN 16,64:PROCstartdrag(wh%,ih%,mb%,FALSE)
14200 ENDCASE
14210 :
14220 WHEN buffwind%
14230 CASE ih% OF
14240  WHEN 0:IF mb%=16 OR mb%=64 PROCstartdrag(wh%,ih%,mb%,FALSE)
14250  SYS "Wimp_GetCaretPosition",,C%:pos%=C%!20
14260  WHEN 1:IF FNis(wh%,1) textflag%=TRUE ELSE textflag%=FALSE
14270  WHEN 2:PROCputtext
14280  WHEN 3:IF mb%=1 AND NOT FNis(wh%,3):PROCsi(wh%,3)
14290  WHEN 4:IF mb%=1 AND NOT FNis(wh%,4):PROCsi(wh%,4)
14300  WHEN 5:PROCit(wh%,0,""):PROCcaret(wh%,0)
14310 ENDCASE
14320ENDCASE
14330ENDPROC
14340:
14350DEFPROCclick(mb%,ih%)
14360CASE mb% OF
14370 WHEN 1024:REM Sel
14380 IF NOT FNis(main%,ih%) PROCclearall:PROCsi(main%,ih%)
14390 WHEN 256:PROCti(main%,ih%):REM Adj
14400ENDCASE
14410ENDPROC
14420:
14430REM------
14440REM. MENU
14450REM------
14460:
14470DEFPROCmenu(wh%,ih%,mx%,my%)
14480REM middle button clicked
14490CASE wh% OF
14500 WHEN main%
14510 SYS "Wimp_GetPointerInfo",,q%:ih%=q%!16
14520 chosen%=0:IF ih%>0 AND ih%<=items% chosen%=ih%
14530 sel%=FNsel:IF sel%=1 chosen%=sel%(1)
14540 PROCmainmenu(mx%,my%,chosen%)
14550 WHEN -2:PROCbarmenu(mx%,my%)
14560ENDCASE
14570ENDPROC
14580:
14590DEFPROCmainmenu(mx%,my%,chosen%)
14600LOCAL J%,f%,b%,g%,n$,n2$,n3$,wid%,wh%,ih%,name$
14610remx%=mx%:remy%=my%:present%=TRUE:n3$=""
14620name$="":n$="File ''":obj%=1:$newname%=""
14630IF chosen% THEN
14640 name$=leaf$(chosen%)
14650 REM is obj in Filer?
14660 present%=FNcheckobj(dir$+"."+name$,FALSE)=TRUE
14670 obj%=FNobjtype(dir$+"."+name$)
14680ENDIF
14690:
14700sel%=FNsel
14710IF sel%=1 OR chosen% THEN
14720 n2$="File ":n3$="File"
14730 IF obj%=2 n2$="Dir. ":n3$="Directory"
14740 IF obj%=2 AND LEFT$(name$,1)="!" n2$="App. ":n3$="Application"
14750 n$=n2$+"'"+name$+"'"
14760ENDIF
14770IF sel%>1 n$="Selection":n3$=n$:name$=n$
14780:
14790$mi0%="Display":$mi1%=n$:$mi2%="Select all":$mi3%="Clear selection"
14800$mi4%="Options":$mi5%="New directory":$mi6%="Open filer   F1"
14810$mi7%="Goto parent  F2":$mi8%="Save data    F3"
14820$mi9%="Save text   "+CHR$139+"F3":$mi10%="Open buffer  F5"
14830$mi11%="Undo changes F8":IF redo% $mi11%="Redo changes F9"
14840:
14850wid%=(LENn$+1)*16:IF wid%<256 wid%=256
14860a%=mb1%:!a%=main%:p%=a%+32:$(a%+4)=task$
14870a%!16=&70207:a%!20=wid%:a%!24=44:a%!28=0
14880b%=&7000121:g%=&7400121:REM flags=black,grey (indirected)
14890:
14900p%!0=0:p%!4=mb4%:p%!8=b%:p%!12=mi0%:p%!16=-1:p%!20=16:p%+=24
14910IF name$="" OR NOT present% f%=g% ELSE f%=b%
14920p%!0=0:p%!4=mb2%:p%!8=f%:p%!12=mi1%:p%!16=-1:p%!20=16:p%+=24
14930IF items%=0 f%=g% ELSE f%=b%
14940p%!0=0:p%!4=0:p%!8=f%:p%!12=mi2%:p%!16=-1:p%!20=16:p%+=24
14950IF sel%=0 f%=g% ELSE f%=b%
14960p%!0=0:p%!4=0:p%!8=f%:p%!12=mi3%:p%!16=-1:p%!20=16:p%+=24
14970p%!0=0:p%!4=mb6%:p%!8=b%:p%!12=mi4%:p%!16=-1:p%!20=16:p%+=24
14980p%!0=10:p%!4=mb3%:p%!8=b%:p%!12=mi5%:p%!16=-1:p%!20=16:p%+=24
14990p%!0=0:p%!4=0:p%!8=b%:p%!12=mi6%:p%!16=-1:p%!20=16:p%+=24
15000IF FNisroot(dir$) f%=g% ELSE f%=b%
15010p%!0=0:p%!4=0:p%!8=f%:p%!12=mi7%:p%!16=-1:p%!20=16:p%+=24
15020IF display%=1 AND items%>0 f%=b% ELSE f%=g%
15030p%!0=0:p%!4=0:p%!8=f%:p%!12=mi8%:p%!16=-1:p%!20=16:p%+=24
15040IF items%>0 f%=b% ELSE f%=g%
15050p%!0=8:p%!4=savebox%:p%!8=f%:p%!12=mi9%:p%!16=-1:p%!20=16:p%+=24
15060p%!0=8:p%!4=0:p%!8=f%:p%!12=mi10%:p%!16=-1:p%!20=16:p%+=24
15070IF undo% OR redo% f%=b% ELSE f%=g%
15080p%!0=&80:p%!4=0:p%!8=f%:p%!12=mi11%:p%!16=-1:p%!20=16
15090:
15100b%=&7000021:g%=&7400021:REM flags=black,grey
15110a%=mb2%:p%=a%+28:$a%=n3$:f%=b%
15120a%!12=&70207:a%!16=168:a%!20=44:a%!24=0
15130IF sel%>1 OR name$="TigerData" f%=g% ELSE f%=b%
15140s$="Copy":p%!0=8:p%!4=copybox%:p%!8=f%:$(p%+12)=s$:p%+=24
15150IF name$="TigerData" OR sel%>1 f%=g% ELSE f%=b%
15160s$="Rename":p%!0=8:p%!4=mb3%:p%!8=f%:$(p%+12)=s$:p%+=24
15170IF name$="TigerData" f%=g% ELSE f%=b%
15180s$="Delete":p%!0=0:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
15190s$="Access":p%!0=8:p%!4=mb5%:p%!8=b%:$(p%+12)=s$:p%+=24
15200s$="Count":p%!0=0:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
15210IF FNhelp(name$,obj%) f%=b% ELSE f%=g%
15220s$="Help":p%!0=0:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
15230IF sel%>1 f%=g% ELSE f%=b%
15240s$="Info":p%!0=8:p%!4=objinfo%:p%!8=f%:$(p%+12)=s$:p%+=24
15250s$="Find":p%!0=8:p%!4=mb3%:p%!8=b%:$(p%+12)=s$:p%+=24
15260IF name$="TigerData" f%=g% ELSE f%=b%
15270s$="Set type":p%!0=8:p%!4=mb3%:p%!8=f%:$(p%+12)=s$:p%+=24
15280s$="Stamp":p%!0=0:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
15290IF name$="!TigerData" AND obj%=2 v%=0 ELSE v%=&80
15300IF obj%=1 f%=g% ELSE f%=b%
15310s$="Open filer":p%!0=v%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
15320IF v%=0 s$="Convert":p%!0=&80:p%!4=0:p%!8=b%:$(p%+12)=s$
15330:
15340a%=mb4%:p%=a%+28:$a%="Display":f%=b%:wid%=12*16+12
15350a%!12=&70207:a%!16=wid%:a%!20=44:a%!24=0
15360IF display%=1 t%=1 ELSE t%=0
15370s$="Descriptions":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
15380IF display%=2 t%=1 ELSE t%=0
15390s$="Object info":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
15400IF display%=3 t%=1 ELSE t%=0
15410s$="Nested size":p%!0=&80+t%:p%!4=0:p%!8=f%:$(p%+12)=s$
15420:
15430a%=mb6%:p%=a%+28:$a%="Options":f%=b%:wid%=7*16+12
15440a%!12=&70207:a%!16=wid%:a%!20=44:a%!24=0
15450opts%=FNreadopts
15460t%=(opts% AND 2) DIV 2
15470s$="Confirm":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
15480t%=(opts% AND 1)
15490s$="Verbose":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
15500t%=(opts% AND 4) DIV 4
15510s$="Force":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
15520t%=(opts% AND 8) DIV 8
15530s$="Newer":p%!0=&80+t%:p%!4=0:p%!8=f%:$(p%+12)=s$
15540SYS "Wimp_CreateMenu",,mb1%+4,mx%-64,my%+4
15550ENDPROC
15560:
15570DEFFNhelp(name$,obj%)
15580IF obj%=2 AND LEFT$(name$,1)="!" THEN
15590 IF FNcheckobj(dir$+"."+name$+"."+"!Help",FALSE) THEN=TRUE
15600ENDIF
15610=FALSE
15620:
15630DEFPROCsubmenu(q%)
15640LOCAL sub%,x%,y%:sub%=q%!20:x%=q%!24:y%=q%!28
15650CASE sub% OF
15660 WHEN mb3%:PROCnamemenu
15670 WHEN mb5%:PROCaccessmenu(FALSE,1)
15680 WHEN savebox%:PROCprepsavebox
15690 WHEN objinfo%:PROCprepobjinfo
15700 WHEN copybox%:PROCprepcopybox
15710 WHEN choicewind%:PROCprepchoicewind
15720ENDCASE
15730SYS "Wimp_CreateSubMenu",,sub%,x%,y%
15740ENDPROC
15750:
15760DEFPROCnamemenu
15770LOCAL J%,x%,y%,item%,name$,type%,type$
15780item0%=q%!32:item1%=q%!36
15790a%=mb3%:p%=a%+28:wid%=12*16+16
15800name$=leaf$(chosen%)
15810oldname$=name$
15820CASE item1% OF
15830 WHEN-1:IF item0%=5 $a%="Name:"
15840 WHEN 1:$a%="Name:":$newname%=name$
15850 WHEN 7:$a%="Find file:"
15860 WHEN 8
15870 sel%=FNsel
15880 IF sel%>1 name$=$name%(sel%(1))
15890 obj%=FNobjtype(dir$+"."+name$)
15900 IF obj%=1 THEN
15910  type%=FNfiletype(dir$+"."+name$)
15920  type$=FNstrip(FNfiletypename(type%))
15930 ELSE
15940  type$=""
15950 ENDIF
15960 $a%="Set type":$newname%=type$
15970ENDCASE
15980a%!12=&70207:a%!16=176:a%!20=44:a%!24=0:f%=&7000121
15990p%!0=&84:p%!4=0:p%!8=f%:p%!12=newname%:p%!16=valname%:p%!20=11
16000ENDPROC
16010:
16020DEFPROCbarmenu(mx%,my%)
16030LOCAL f%,b%,g%:b%=&7000021:g%=&7400021:REM flags=black,grey
16040remx%=mx%:remy%=my%:i%=0
16050a%=mb1%:!a%=baricon%:p%=a%+32:$(a%+4)=task$
16060a%!16=&70207:a%!20=128:a%!24=44:a%!28=0
16070s$="Info":p%!0=0:p%!4=info%:p%!8=b%:$(p%+12)=s$:p%+=24:i%+=1
16080IF pristine% f%=g% ELSE f%=b%
16090s$="Choices":p%!0=8:p%!4=choicewind%:p%!8=f%:$(p%+12)=s$:p%+=24:i%+=1
16100s$="Quit":p%!0=&80:p%!4=0:p%!8=b%:$(p%+12)=s$:i%+=1
16110SYS "Wimp_CreateMenu",,mb1%+4,mx%-64,96+i%*44
16120ENDPROC
16130:
16140DEFPROCclosemenu
16150SYS "Wimp_CreateMenu",,-1
16160ENDPROC
16170:
16180DEFPROCmenuselect(q%)
16190REM click on menu from polling loop
16200level0%=q%!0:level1%=q%!4:level2%=q%!8:wh%=!mb1%
16210SYS "Wimp_GetPointerInfo",,q%:stay%=q%!8=1
16220CASE wh% OF
16230 WHEN main%:PROCmainchoice
16240 OTHERWISE :PROCbarchoice
16250ENDCASE
16260ENDPROC
16270:
16280DEFPROCmainchoice
16290REM click on main menu
16300CASE level0% OF
16310 WHEN 0:
16320 CASE level1% OF
16330  WHEN -1:PROCrefresh
16340  WHEN  0:display%=1:PROCrefresh
16350  WHEN  1:display%=2:PROCrefresh
16360  WHEN  2:display%=3:PROCrefresh
16370 ENDCASE
16380 WHEN 1:
16390 CASE level1% OF
16400  WHEN 0:REM Copy (drag/click)
16410  WHEN 1
16420  IF level2%>=0 PROCrename(oldname$,$newname%)
16430  WHEN 2:PROCdelete
16440  WHEN 3:IF level2%>=0 PROCaccess(1)
16450  WHEN 4:PROCcount
16460  WHEN 5:PROChelp
16470  WHEN 6:REM Info
16480  WHEN 7:IF level2%>=0 PROCfind($newname%)
16490  WHEN 8:IF level2%>=0 PROCsettype
16500  WHEN 9:PROCstamp
16510  WHEN10:OSCLI("Filer_OpenDir "+dir$+"."+$name%(chosen%))
16520  WHEN11:PROCconvert
16530 ENDCASE
16540 WHEN 2:PROCselectall
16550 WHEN 3:PROCclearall
16560 WHEN 4
16570 CASE level1% OF
16580  WHEN 0:opts%=opts% EOR 2
16590  WHEN 1:opts%=opts% EOR 1
16600  WHEN 2:opts%=opts% EOR 4
16610  WHEN 3:opts%=opts% EOR 8
16620 ENDCASE
16630 PROCsetopts
16640 WHEN 5:IF level1%=0 PROCnewdir($newname%)
16650 WHEN 6:PROCviewer(dir$)
16660 WHEN 7:PROCparent(dir$)
16670 WHEN 8:PROCsavedata
16680 WHEN 9:PROCprepsavebox:PROCow(savebox%):PROCclosemenu
16690        PROCcaret(savebox%,fnicon%)
16700 WHEN10:PROCow(buffwind%)
16710 WHEN11:IF undo% PROCundo ELSE IF redo% PROCredo
16720ENDCASE
16730IF stay% PROCmainmenu(remx%,remy%,chosen%)
16740ENDPROC
16750:
16760DEFPROCnewdir(d$)
16770OSCLI("CDir "+dir$+"."+d$)
16780ENDPROC
16790:
16800DEFPROCbarchoice
16810CASE level0% OF
16820 WHEN 1:PROCprepchoicewind:PROCow(choicewind%)
16830 WHEN 2:quit%=FNquit
16840ENDCASE
16850IF stay% PROCbarmenu(remx%,remy%)
16860ENDPROC
16870:
16880REM------
16890REM. LOAD
16900REM------
16910:
16920DEFPROCdataload(q%)
16930LOCAL wh%:wh%=q%!20
16940REM send DataLoadAck
16950q%!12=q%!8:q%!16=4:q%!0=64:SYS "Wimp_SendMessage",17,q%,q%!4
16960z%+=1:IF z%>1 ENDPROC:REM don't want selection
16970path$=FNname(q%+44):type%=q%!40:dir%=type%=&1000 OR type%=&2000
16980IF wh%=buffwind% PROCdragfiletobuff(path$,type%):ENDPROC
16990IF FNpromptsave THEN
17000 IF sender%=task% AND wh%=main% THEN
17010  PROCcopy(FNparent(path$),remb%)
17020 ENDIF
17030 IF (sender%=task% AND wh%=-2) OR (sender%<>task%) THEN
17040  IF INKEY-1 AND dir% THEN dir$=path$ ELSE dir$=FNparent(path$)
17050  windowstate%=1:IF pristine% windowstate%=2:REM centre
17060  pristine%=FALSE
17070  PROCshowTiger(windowstate%)
17080 ENDIF
17090ENDIF
17100ENDPROC
17110:
17120DEFPROCshowTiger(windowstate%)
17130LOCAL ERROR
17140ON ERROR LOCAL ans%=FNlocalerror(dir$,REPORT$,ERR):ENDPROC
17150PROCcw(main%)
17160SYS "Hourglass_On"
17170PROCreadfiles(dir$,display%,1)
17180PROCnostar
17190PROCit(savebox%,fnicon%,dir$+"."+"TigerText")
17200IF display%=2 extent%=1120 ELSE extent%=width%
17210PROCsetextent(main%,-((items%+1)*44)-8,extent%)
17220PROCsetbuttontypes(items%)
17230CASE windowstate% OF
17240 WHEN 0:ENDPROC
17250 WHEN 1:PROCow(main%)
17260 WHEN 2:PROCowc(main%):REM in centre
17270ENDCASE
17280PROCcaretx(main%,156,0)
17290IF display%=1 AND items%>0 PROCcaretx(main%,79,0)
17300SYS "Hourglass_Smash"
17310ENDPROC
17320:
17330DEFFNloadTigerData(fsp$)
17340REM loads TigerData file into memory at A%
17350REM places name and desc in arrays
17360REM returns number of items in TigerData
17370:
17380LOCAL J%,s$,filelen%,ok%,s%,descs%,p%
17390REM get length of file and increase slot size
17400SYS "OS_File",5,fsp$ TO ,,,,filelen%
17410ok%=FNsetslotsize(remslotsize%+filelen%)
17420IF NOT ok% ans%=FNmsg("No memory to load TigerData","Cancel")
17430IF filelen%=0 OR NOT ok% THEN
17440 descs%=0
17450ELSE
17460 REM load file into memory at A%
17470 SYS "OS_File",&FF,fsp$,A%,0
17480 REM get data into arrays
17490 name$()="":desc$()=""
17500 J%=1:p%=A%
17510 REPEAT
17520  s$=FNname(p%):s%=INSTR(s$," ")
17530  name$(J%)=LEFT$(s$,s%-1)
17540  desc$(J%)=RIGHT$(s$,LENs$-s%)
17550  J%+=1:p%+=LENs$+1
17560 UNTIL p%>=A%+filelen%
17570 descs%=J%-1
17580 REM restore slot size
17590 slotsize%=FNsetslotsize(remslotsize%)
17600ENDIF
17610=descs%
17620:
17630DEFPROCwriteTigerData(descs%)
17640REM takes data from arrays and creates TigerData file
17650LOCAL J%
17660F%=OPENOUT(fsp$):OSCLI("SetType "+fsp$+" &4FF")
17670FOR J%=1 TO descs%
17680 IF name$(J%)<>"" BPUT#F%,name$(J%)+" "+desc$(J%)
17690NEXT
17700CLOSE #F%:F%=0
17710ENDPROC
17720:
17730DEFFNdirdesc(dir$)
17740REM look for description of this dir in its parent
17750REM is there a TigerData file?
17760LOCAL leaf$,fsp$,desc$
17770leaf$=FNleaf(dir$)
17780IF leaf$="$" THEN=" (root directory)"
17790IF leaf$="&" THEN=" (user root directory)"
17800fsp$=FNparent(dir$)+".TigerData"
17810desc$=""
17820SYS "OS_File",5,fsp$ TO o%
17830IF o%=1 THEN
17840 descs%=FNloadTigerData(fsp$)
17850 desc$=FNdesc(leaf$,descs%)
17860ENDIF
17870IF desc$<>"" desc$=" - "+desc$
17880=desc$
17890:
17900DEFFNdesc(leaf$,descs%)
17910REM search arrays for description for leaf$
17920LOCAL J%,desc$:desc$=""
17930FOR J%=1 TO descs%
17940 IF name$(J%)=leaf$ desc$=desc$(J%):J%=descs%
17950NEXT
17960=desc$
17970:
17980DEFPROCreadfiles(d$,display%,n%)
17990LOCAL J%,more%,next%,max%,tot%,s$,f$,fl%,f%,name$,type%,obj%
18000:
18010IF n%=1 THEN
18020 PROCsis(main%,0,&1B003135)
18030 name$=FNstrip(FNleaf(FNparent(d$)))
18040 name$=CHR$139+STRING$(11-LENname$," ")+name$
18050 IF FNisroot(d$) name$=""
18060 $name%(0)=name$:$val%(0)="R5,2"
18070 fl%=&07000131:REM make descr icons non-writable
18080 PROCsis(main%,156,&BB00E134):REM can gain input focus
18090ENDIF
18100:
18110s$=FNleaf(d$)
18120CASE display% OF
18130 WHEN 1:s$+=FNdirdesc(d$):fl%=&0700E131:REM writable
18140 WHEN 2:s$+=" - object information"
18150 WHEN 3:s$+=" - nested size: total bytes="
18160ENDCASE
18170$desc%(0)=s$
18180:
18190REM is there a TigerData file?
18200fsp$=dir$+".TigerData"
18210SYS "OS_File",5,fsp$ TO o%:descs%=0
18220IF o%=1 descs%=FNloadTigerData(fsp$)
18230:
18240J%=1:next%=0:max%=0:tot%=0:undo$()=""
18250REPEAT
18260 SYS "OS_GBPB",10,d$,q%,1,next%,100,"*" TO ,,,more%,next%
18270 IF more% THEN
18280  name$=FNname(q%+20)
18290  type%=FNfiletype(d$+"."+name$)
18300  obj%=q%!16
18310  leaf$(J%)=name$
18320  $name%(J%)=LEFT$(name$,10)+STRING$(10-LENname$," ")
18330  :
18340  IF n%=1 THEN
18350   IF IconSprites% THEN
18360    IF obj%=2 AND LEFT$(name$,1)="!" THEN
18370     REM is there a !Sprites file?
18380     f$=d$+"."+name$+".!Sprites"
18390     SYS "OS_File",5,f$ TO o%
18400     IF o%=1 OSCLI("IconSprites "+f$)
18410    ENDIF
18420   ENDIF
18430   hs%=FALSE
18440   CASE obj% OF
18450    WHEN 1,3:ft$=FNfile(type%,0)
18460    WHEN 2:ft$=FNdir(name$,0)
18470    OTHERWISE:ft$="small_xxx"
18480   ENDCASE
18490   IF hs% f%=&1700AB3B ELSE f%=&1700A33B
18500   PROCsis(main%,J%,f%):PROCsis(main%,J%+78,fl%)
18510   $val%(J%)="S"+ft$
18520  ENDIF
18530  :
18540  CASE display% OF
18550   WHEN 1:
18560    s$=FNdesc(name$,descs%)
18570    IF name$="TigerData" s$=tigstr$
18580    $desc%(J%)=s$:undo$(J%)=s$
18590   WHEN 2:
18600    o%=FNgetobjinfo(d$+"."+name$)
18610    s$=""
18620    s$+=type$+STRING$(13-LENtype$," ")
18630    s$+=STRING$(9-LENfilelen$," ")+filelen$
18640    s$+="  "+access$+STRING$(6-LENaccess$," ")
18650    s$+="  "+date$+"  "+time$
18660    $desc%(J%)=s$:undo$(J%)=s$
18670   WHEN 3:
18680    recursing%=TRUE:counting%=TRUE
18690    SYS "OS_Byte",229,0,0 :REM enable Esc
18700    SYS "OS_FSControl",28,d$+"."+name$,0,1 TO ,,bytes%
18710    len%(J%)=bytes%:tot%+=bytes%:IF bytes%>max% max%=bytes%
18720    SYS "OS_Byte",229,1,0 :REM disable Esc
18730    recursing%=FALSE:counting%=FALSE
18740  ENDCASE
18750  J%+=1
18760 ENDIF
18770UNTIL next%=-1
18780items%=J%-1
18790:
18800IF display%=3 THEN
18810 $desc%(0)+=STR$tot%
18820 IF max%>0 THEN
18830  FOR J%=1 TO items%
18840   c%=len%(J%)/max%*84
18850   sp%=LEN(STR$max%)
18860   s$=RIGHT$(STRING$(sp%," ")+STR$len%(J%),sp%)
18870   s$+=" "+STRING$(c%,"+")
18880   $desc%(J%)=s$:undo$(J%)=s$
18890  NEXT
18900 ENDIF
18910ENDIF
18920:
18930IF n%=1 THEN
18940 IF items%>0 PROCsis(main%,156,&BB006134):REM can't gain input focus
18950 REM set flags for top line - only writable if too long to see
18960 IF LEN($desc%(0))>columns%-17 f%=&1B00E131 ELSE f%=&1B000131
18970 PROCsis(main%,78,f%)
18980ENDIF
18990ENDPROC
19000:
19010DEFFNfile(type%,size%)
19020REM sprite name for file type
19030REM size%=0 is small, 1 is full size
19040REM hs% is TRUE if needs to be displayed half size
19050LOCAL f$,f%
19060hs%=FALSE
19070CASE size% OF
19080 WHEN 0:f$="small_"+STR$~type%
19090 WHEN 1:f$="file_"+STR$~type%
19100ENDCASE
19110SYS "XWimp_SpriteOp",24,,f$ TO ;f%
19120IF (f% AND 1)=0 THEN=f$
19130IF size%=1 THEN="file_xxx"
19140f$="file_"+STR$~type%
19150SYS "XWimp_SpriteOp",24,,f$ TO ;f%
19160IF (f% AND 1)=0 hs%=TRUE:=f$
19170="small_xxx"
19180:
19190DEFFNdir(name$,size%)
19200REM sprite name for dir
19210REM size%=0 is small, 1 is full size
19220REM hs% is TRUE if needs to be displayed half size
19230LOCAL f$,f%
19240hs%=FALSE
19250IF LEFT$(name$,1)<>"!" THEN
19260 CASE size% OF
19270  WHEN 0:="small_dir"
19280  WHEN 1:="directory"
19290 ENDCASE
19300ENDIF
19310REM it's an App
19320CASE size% OF
19330 WHEN 0:f$="sm"+name$
19340 WHEN 1:f$=name$
19350ENDCASE
19360SYS "XWimp_SpriteOp",24,,f$ TO ;f%
19370IF (f% AND 1)=0 THEN=f$
19380f$=name$
19390IF size%=0 THEN
19400 SYS "XWimp_SpriteOp",24,,f$ TO ;f%
19410 IF (f% AND 1)=0 hs%=TRUE:=f$
19420ENDIF
19430CASE size% OF
19440 WHEN 0:="small_app"
19450 WHEN 1:="application"
19460ENDIF
19470=""
19480:
19490DEFPROCsetbuttontypes(items%)
19500LOCAL f1%,f2%,f3%
19510f1%=&11000000:REM background,non-writable
19520IF display%=1  f2%=&0700E131:REM writable
19530IF display%<>1 f2%=&07000131:REM non-writable
19540CASE items% OF
19550 WHEN 0   :PROCsis(main%,01,f1%):PROCsis(main%,02,f1%)
19560           PROCsis(main%,79,f1%):PROCsis(main%,80,f1%)
19570 WHEN 1   :PROCsis(main%,02,f1%):PROCsis(main%,79,f2%)
19580           PROCsis(main%,80,f1%)
19590 OTHERWISE:PROCsis(main%,79,f2%):PROCsis(main%,80,f2%)
19600ENDCASE
19610ENDPROC
19620:
19630REM---------
19640REM. EXECUTE
19650REM---------
19660:
19670DEFPROCdoubleclick(mb%,ih%)
19680LOCAL name$,obj%:REM job$ is global
19690IF ih%<0 ENDPROC
19700PROCui(main%,ih%)
19710name$=leaf$(chosen%)
19720REM is obj in Filer?
19730IF NOT FNcheckobj(dir$+"."+name$,TRUE) ENDPROC
19740IF mb%=1 OR mb%=16 PROCcw(main%):REM Adj
19750job$=dir$+"."+name$
19760obj%=FNobjtype(job$)
19770CASE obj% OF
19780 WHEN 1,3:REM File,Image
19790  filetype%=FNfiletype(job$)
19800  PROCrun(job$,obj%)
19810 WHEN 2:REM Dir
19820  IF LEFT$(name$,1)="!" THEN
19830   IF INKEY-1 THEN
19840    PROCsubdir(dir$,name$)
19850   ELSE
19860    PROCrun(job$,obj%)
19870   ENDIF
19880  ELSE
19890   PROCsubdir(dir$,name$)
19900  ENDIF
19910ENDCASE
19920ENDPROC
19930:
19940DEFPROCrun(job$,obj%)
19950LOCAL filetype%
19960IF obj%=0 ENDPROC
19970CASE obj% OF
19980 WHEN 1,3:REM File,Image
19990  filetype%=FNfiletype(job$)
20000  q%!0=(48+LENjob$) AND NOT 3
20010  q%!12=0:q%!16=5:REM DataOpen
20020  q%!20=0:q%!28=0:q%!32=0:q%!36=0
20030  q%!40=filetype%:$(q%+44)=job$+CHR$0
20040  REM broadcast message - sent to all tasks
20050  SYS"Wimp_SendMessage",18,q%,0
20060 WHEN 2:REM App
20070  SYS "Wimp_StartTask","Run "+job$
20080 ENDCASE
20090ENDIF
20100ENDPROC
20110:
20120DEFPROCsubdir(RETURN dir$,name$)
20130IF name$="!TigerData" ENDPROC
20140rem$=dir$+"."+name$
20150IF FNpromptsave THEN
20160 dir$=rem$:PROCshowTiger(1)
20170ENDIF
20180ENDPROC
20190:
20200DEFPROCrefresh
20210LOCAL J%
20220REM refresh Tiger display
20230IF FNcheckobj(dir$,TRUE) THEN
20240 IF FNpromptsave PROCshowTiger(1)
20250ELSE
20260 IF star% FOR J%=1 TO items%:$desc%(J%)=undo$(J%):NEXT
20270 PROCnostar:PROCcw(main%):ENDPROC
20280ENDIF
20290PROCcw(savebox%)
20300ENDPROC
20310:
20320DEFPROCundo:REM F8
20330LOCAL J%,wh%,ih%:IF NOT undo% ENDPROC
20340FOR J%=1 TO items%
20350 redo$(J%)=$desc%(J%)
20360 $desc%(J%)=undo$(J%)
20370NEXT
20380C%!0=main%:SYS "Wimp_GetWindowOutline",,C%
20390SYS "Wimp_ForceRedraw",-1,C%!4,C%!8,C%!12,C%!16
20400SYS "Wimp_GetCaretPosition",,C%
20410wh%=C%!0:ih%=C%!4
20420IF wh%=main% AND ih%>78 PROCcaretx(wh%,ih%,0)
20430PROCnostar:redo%=TRUE:undo%=FALSE
20440ENDPROC
20450:
20460DEFPROCredo:REM F9
20470LOCAL J%,wh%,ih%:IF NOT redo% ENDPROC
20480FOR J%=1 TO items%
20490 undo$(J%)=$desc%(J%)
20500 $desc%(J%)=redo$(J%)
20510NEXT
20520C%!0=main%:SYS "Wimp_GetWindowOutline",,C%
20530SYS "Wimp_ForceRedraw",-1,C%!4,C%!8,C%!12,C%!16
20540SYS "Wimp_GetCaretPosition",,C%
20550wh%=C%!0:ih%=C%!4
20560IF wh%=main% AND ih%>78 PROCcaretx(wh%,ih%,0)
20570PROCstar:undo%=TRUE:redo%=FALSE
20580ENDPROC
20590:
20600DEFPROCparent(RETURN dir$)
20610LOCAL J%,parent$
20620parent$=FNparent(dir$)
20630IF FNisroot(dir$) ENDPROC
20640IF FNcheckobj(parent$,TRUE) THEN
20650 IF FNpromptsave dir$=parent$:PROCshowTiger(1)
20660ELSE
20670 IF star% FOR J%=1 TO items%:$desc%(J%)=undo$(J%):NEXT
20680 PROCnostar:PROCcw(main%):ENDPROC
20690ENDIF
20700ENDPROC
20710:
20720DEFPROCroot(fsp$)
20730IF FNisroot(fsp$) ENDPROC
20740dir$=FNroot(fsp$):PROCshowTiger(1)
20750ENDPROC
20760:
20770DEFFNisroot(path$)
20780LOCAL leaf$
20790leaf$=FNleaf(path$)
20800=leaf$="$" OR leaf$="&"
20810:
20820DEFFNroot(fsp$)
20830LOCAL i%
20840i%=INSTR(fsp$,"$")
20850IF i%>0 THEN=LEFT$(fsp$,i%)
20860=""
20870:
20880DEFPROCviewer(dir$)
20890IF FNcheckobj(dir$,TRUE) THEN OSCLI("Filer_OpenDir "+dir$)
20900ENDPROC
20910:
20920REM------------
20930REM. CHECK-SAVE
20940REM------------
20950:
20960DEFFNquit
20970esc%=TRUE
20980IF FNpromptsave THEN OSCLI("Unset Tiger$Running"):=TRUE
20990=FALSE
21000:
21010DEFFNchanged
21020LOCAL J%,ch%:J%=1:ch%=FALSE
21030REPEAT
21040 IF $desc%(J%)<>undo$(J%) ch%=TRUE
21050 J%+=1
21060UNTIL J%>items% OR ch%
21070=ch%
21080:
21090DEFFNpromptsave
21100IF NOT star% THEN=TRUE
21110IF NOT promptsave% PROCsavedata:=TRUE
21120ans%=FNmsg("Save edited descriptions?","Discard,Cancel,Save")
21130IF ans%=1 THEN=TRUE
21140IF ans%=3 PROCsavedata:=TRUE
21150=FALSE:REM Cancel operation
21160:
21170REM-----------
21180REM. SAVE DATA
21190REM-----------
21200:
21210DEFPROCsavedata
21220LOCAL J%,fsp$
21230IF NOT FNcheckobj(dir$,TRUE) THEN ENDPROC
21240SYS "Hourglass_On"
21250fsp$=dir$+".TigerData"
21260F%=OPENOUT(fsp$)
21270OSCLI("SetType "+fsp$+" &4FF")
21280FOR J%=1 TO items%
21290 name$=leaf$(J%)
21300 desc$=FNit(main%,J%+78):olddesc$=undo$(J%):undo$(J%)=desc$
21310 IF desc$<>"" AND name$<>"TigerData" BPUT#F%,name$+" "+desc$
21320NEXT
21330CLOSE #F%:F%=0
21340PROCnostar
21350SYS "Hourglass_Smash":PROCbeep
21360ENDPROC
21370:
21380REM--------------
21390REM. CONVERT DATA
21400REM--------------
21410:
21420DEFPROCconvert
21430REM transfer descriptions from !TigerData
21440REM and merge with any in TigerData
21450REM optionally delete !TigerData afterwards
21460LOCAL J%,d$,name$
21470 :
21480REM does dir$ have a TigerData file?
21490REM If so place in memory and load arrays
21500descs%=0
21510d$=dir$+".TigerData":present%=FNcheckobj(d$,FALSE)
21520IF present% descs%=FNloadTigerData(d$)
21530:
21540REM read files in Data dir
21550d$=dir$+".!TigerData.Data"
21560present%=FNcheckobj(d$,TRUE):IF NOT present% ENDPROC
21570SYS "Hourglass_On"
21580next%=0
21590REPEAT
21600 SYS "OS_GBPB",10,d$,q%,1,next%,100,"*" TO ,,,more%,next%
21610 IF more% THEN
21620  name$=FNname(q%+20)
21630  type%=FNfiletype(d$+"."+name$)
21640  IF type%=&2FF THEN
21650   REM extract name,desc and add to arrays
21660   F%=OPENUP(d$+"."+name$)
21670   found%=FALSE
21680   FOR J%=1 TO descs%
21690    IF name$(J%)=name$ found%=TRUE:J%=descs%
21700   NEXT
21710   IF NOT found% THEN
21720    descs%+=1
21730    name$(descs%)=name$:desc$(descs%)=GET$#F%
21740   ENDIF
21750   CLOSE #F%:F%=0
21760  ENDIF
21770 ENDIF
21780UNTIL next%=-1
21790PROCwriteTigerData(descs%)
21800:
21810ans%=FNmsg("!TigerData is now redundant,OK to delete it?","Retain,Delete")
21820IF ans%=2 THEN
21830 REM delete !TigerData
21840 SYS "Hourglass_On"
21850 FilerAction%=FNfileraction:opts%=FNreadopts
21860 IF FilerAction% THEN
21870  SYS &400DE,"Filer_Action" TO taskh%
21880 ELSE
21890  $C%="Delete files":SYS "Wimp_CommandWindow",C%
21900 ENDIF
21910 s$=dir$+".!TigerData"
21920 PROCwipe(s$,FilerAction%)
21930 IF FilerAction% THEN
21940  SYS &40F82,taskh%,2,opts%
21950 ELSE
21960  SYS "Wimp_CommandWindow",0
21970 ENDIF
21980ENDIF
21990:
22000PROCshowTiger(1)
22010PROCsavedata
22020SYS "Hourglass_Smash"
22030ENDPROC
22040:
22050REM-----------
22060REM. SAVE TEXT
22070REM-----------
22080:
22090DEFPROCprepsavebox
22100LOCAL J%,wh%:wh%=savebox%
22110FOR J%=5 TO 10:PROCsis(wh%,J%,&1720B133):NEXT
22120CASE display% OF
22130 WHEN 1:PROCit(wh%,10,"Description")
22140 WHEN 2:PROCit(wh%,10,"Object info")
22150  FOR J%=5 TO 10:PROCsis(wh%,J%,&1760B133):NEXT
22160 WHEN 3:PROCit(wh%,10,"Nested size")
22170ENDCASE
22180ENDPROC
22190:
22200DEFPROCquicksave(swh%,sih%,savetype%)
22210REM OK or Ret in save panel
22220IF FNdemo("Text save") ENDPROC
22230IF NOT FNcheckobj(dir$,TRUE) ENDPROC
22240IF NOT FNoktosave(swh%,fnicon%) ENDPROC
22250CASE sih% OF
22260 WHEN dragicon%,fnicon%,okicon%:fsp$=FNit(swh%,fnicon%)
22270ENDCASE
22280IF INSTR(fsp$,".") THEN
22290 PROCstartsave(fsp$)
22300 PROCsavedir(FNparent(fsp$))
22310 IF FNis(savebox%,12) PROCrecursivesave
22320 PROCendsave(fsp$)
22330ELSE
22340 ans%=FNmsg("To save - drag icon to Filer","OK")
22350ENDIF
22360ENDPROC
22370:
22380DEFFNoktosave(wh%,ih%)
22390LOCAL path$:path$=FNit(wh%,ih%)
22400IF path$="" ans%=FNmsg("Enter filename before saving","OK"):=FALSE
22410=TRUE
22420:
22430DEFFNdemo(s$)
22440IF demo% ans%=FNmsg(s$+",not available in demo version","OK"):=TRUE
22450=FALSE
22460:
22470DEFPROCstartsave(fsp$)
22480LOCAL next%,number%
22490PROCclosemenu
22500SYS "Hourglass_On"
22510sep$=CHR$&A:REM LF
22520F%=OPENOUT(fsp$)
22530OSCLI("SetType "+fsp$+" &FFF")
22540s$=FNtoday+sep$:BPUT#F%,s$
22550ENDPROC
22560:
22570DEFPROCendsave(fsp$)
22580CLOSE #F%:F%=0
22590SYS "Hourglass_Smash"
22600ENDPROC
22610:
22620DEFPROCsavedir(d$)
22630LOCAL more%,next%
22640LOCAL wh%:wh%=savebox%
22650sp%=2:line$=STRING$(FNmaxlen(d$,sp%),"=")
22660BPUT#F%,d$
22670IF FNis(wh%,10) THEN
22680 s%=INSTR($desc%(0),"- ")
22690 IF s%>0 s$=RIGHT$(s$,LENs$-s%-1):BPUT#F%,s$
22700ENDIF
22710BPUT#F%,line$
22720REM dirs then files
22730next%=0
22740WHILE next%<>-1
22750 SYS "OS_GBPB",10,d$,C%,1,next%,100,"*" TO ,,,more%,next%
22760 IF more%>0 AND C%?16=2 PROCdoline(d$,C%)
22770ENDWHILE
22780next%=0
22790WHILE next%<>-1
22800 SYS "OS_GBPB",10,d$,C%,1,next%,100,"*" TO ,,,more%,next%
22810 IF more%>0 AND C%?16=1 PROCdoline(d$,C%)
22820ENDWHILE
22830BPUT#F%,line$+sep$
22840ENDPROC
22850:
22860DEFPROCdoline(d$,C%)
22870IF FNgetobjinfo(d$+"."+FNname(C%+20)) THEN
22880 desc$=$desc%(next%)
22890 BPUT#F%,FNmakeline(name$)
22900ENDIF
22910ENDPROC
22920:
22930DEFFNmakeline(name$)
22940LOCAL s$,sp$,wh%:wh%=savebox%
22950sp$=STRING$(sp%," ")
22960s$=name$+STRING$(10-LENname$," ")
22970IF FNis(wh%,6) s$+=sp$+type$+STRING$(13-LENtype$," ")
22980IF FNis(wh%,7) s$+=sp$+STRING$(7-LENfilelen$," ")+filelen$
22990IF FNis(wh%,8) s$+=sp$+access$+STRING$(6-LENaccess$," ")
23000IF FNis(wh%,9) s$+=sp$+date$+sp$+time$
23010IF FNis(wh%,10) s$+=sp$+LEFT$(desc$,253-LENs$)
23020REM avoid string too long
23030=s$
23040:
23050DEFFNmaxlen(d$,sp%)
23060LOCAL J%,L1%,L2%,L3%,L4%,wh%,maxlen%,s%
23070wh%=savebox%:maxlen%=0
23080s$=$desc%(0):s%=INSTR(s$,"-")-1
23090L1%=LENd$:L2%=s%:L3%=10
23100IF FNis(wh%,6) L3%+=(sp%+14)
23110IF FNis(wh%,7) L3%+=(sp%+7)
23120IF FNis(wh%,8) L3%+=(sp%+6)
23130IF FNis(wh%,9) L3%+=(sp%+sp%+19)
23140IF FNis(wh%,10) THEN
23150 L4%=0
23160 FOR J%=1 TO items%
23170  desc$=$desc%(J%)
23180  IF LENdesc$>L4% THEN L4%=LENdesc$
23190 NEXT
23200 IF L4%>0 L3%+=(sp%+L4%)
23210ENDIF
23220IF L1%>maxlen% maxlen%=L1%
23230IF L2%>maxlen% AND FNis(wh%,10) maxlen%=L2%
23240IF L3%>maxlen% AND items%>0 maxlen%=L3%
23250=maxlen%
23260:
23270REM---------------------
23280REM. RECURSIVE TEXT SAVE
23290REM---------------------
23300:
23310DEFPROCrecursivesave
23320recursing%=TRUE:abort%=FALSE
23330SYS "OS_Byte",229,0,0 :REM enable Esc
23340d$=dir$:deepest%=1:dirs%=1
23350prompt%=0
23360IF FNis(savebox%,14) prompt%=1
23370IF FNis(savebox%,15) prompt%=2
23380PROCsavelevels(d$,1)
23390s$="dirs: "+STR$dirs%+"  levels: "+STR$deepest%+sep$
23400BPUT#F%,s$
23410SYS "OS_Byte",229,1,0 :REM disable Esc
23420recursing%=FALSE
23430PROCrefresh
23440ENDPROC
23450:
23460DEFPROCsavelevels(d$,level%)
23470LOCAL more%,next%,dy$:next%=0
23480SYS "Hourglass_On"
23490WHILE next%<>-1
23500 SYS "OS_GBPB",10,d$,C%,1,next%,blocksize%,"*" TO ,,,more%,next%
23510 IF more%>0 THEN
23520  IF C%?16=2 THEN
23530   REM a dir
23540   dy$=d$+"."+FNname(C%+20)
23550   IF FNleaf(dy$)<>"!TigerData" THEN
23560    save%=FNsave:IF abort% ENDPROC
23570    IF save% THEN
23580     PROCreadfiles(dy$,display%,0)
23590     PROCsavedir(dy$)
23600     dirs%+=1:IF level%>deepest% deepest%=level%
23610     REM repeat recursively
23620     PROCsavelevels(dy$,level%+1)
23630    ENDIF
23640   ENDIF
23650  ENDIF
23660 ENDIF
23670ENDWHILE
23680ENDPROC
23690:
23700DEFFNsave
23710IF prompt%=0 THEN=TRUE
23720IF prompt%=1 AND level%>1 THEN=TRUE
23730LOCAL x%,y%,b%,wh%:wh%=savebox%
23740ans%=FNmsg(dy$,"Don't save,No prompt,Abort,Save")
23750CASE ans% OF
23760 WHEN 2:PROCcw(messwind%)
23770 PROCui(wh%,14):PROCui(wh%,15):PROCsi(wh%,13):prompt%=0
23780 WHEN 3:abort%=TRUE
23790 WHEN 4:=TRUE
23800ENDCASE
23810=FALSE
23820:
23830REM---------------
23840REM. RENAME/DELETE
23850REM---------------
23860:
23870DEFPROCrename(oldleaf$,newleaf$)
23880REM menu choice
23890LOCAL J%,s$,d$
23900IF oldleaf$="!TigerData" ENDPROC
23910IF newleaf$=oldleaf$ ENDPROC
23920IF newleaf$="" PROCbuzz:ENDPROC
23930IF FNpromptsave THEN
23940 s$=dir$+"."+oldleaf$:d$=dir$+"."+newleaf$
23950 OSCLI("Rename "+s$+" "+d$)
23960ENDIF
23970IF $desc%(chosen%)<>"" THEN
23980 REM change TigerData
23990 descs%=FNloadTigerData(dir$+".TigerData")
24000 found%=FALSE
24010 FOR J%=1 TO descs%
24020  IF name$(J%)=oldleaf$ name$(J%)=newleaf$:found%=TRUE:J%=descs%
24030 NEXT
24040ENDIF
24050PROCwriteTigerData(descs%)
24060PROCshowTiger(1)
24070ENDPROC
24080:
24090DEFPROCdelete
24100REM menu choice
24110LOCAL J%,K%,leaf$,s$
24120FilerAction%=FNfileraction:opts%=FNreadopts
24130sel%=FNsel
24140IF FNpromptsave THEN
24150 IF sel%=0 sel%(1)=chosen%:sel%=1
24160 IF FilerAction% THEN
24170  SYS &400DE,"Filer_Action" TO taskh%
24180 ELSE
24190  $C%="Delete files":SYS "Wimp_CommandWindow",C%
24200 ENDIF
24210 FOR J%=1 TO sel%
24220  leaf$=leaf$(sel%(J%))
24230  s$=dir$+"."+leaf$
24240  IF FNcheckobj(s$,TRUE) AND leaf$<>"TigerData" THEN
24250   PROCwipe(s$,FilerAction%)
24260  ENDIF
24270 NEXT
24280 IF FilerAction% THEN
24290  SYS &40F82,taskh%,2,opts%
24300 ELSE
24310  SYS "Wimp_CommandWindow",0
24320 ENDIF
24330ENDIF
24340ENDPROC
24350:
24360DEFPROCwipe(fsp$,FilerAction%)
24370LOCAL path$,leaf$
24380IF FilerAction% THEN
24390 path$=FNparent(fsp$):leaf$=FNleaf(fsp$)
24400 SYS &40F80,taskh%,path$
24410 SYS &40F81,taskh%,leaf$
24420ELSE
24430 OSCLI("Wipe "+fsp$+" "+FNwipeopts)
24440ENDIF
24450ENDPROC
24460:
24470REM----------
24480REM. OBJ INFO
24490REM----------
24500:
24510DEFPROCprepobjinfo
24520LOCAL name$,obj%,o%,wh%:wh%=objinfo%
24530name$=leaf$(chosen%)
24540o%=FNgetobjinfo(dir$+"."+name$)
24550SYS "OS_File",5,dir$+"."+name$ TO ,,,,,access%
24560PROCit(wh%,1,name$):PROCit(wh%,2,FNstrip(type$))
24570PROCit(wh%,3,filelen$):PROCit(wh%,4,access$)
24580PROCit(wh%,5,time$+" "+date$)
24590C%!0=wh%:C%!4=0:SYS "Wimp_GetIconState",,C%
24600$(C%!28)=FNspr(wh%,0)
24610ENDPROC
24620:
24630DEFFNgetobjinfo(fsp$)
24640SYS "OS_File",5,fsp$ TO o%:IF o%=0 THEN=FALSE:REM not found
24650LOCAL obj%,load%,exec%,filelen%,access%
24660SYS "OS_File",5,fsp$ TO obj%,,load%,exec%,filelen%,access%
24670filetype%=(load% AND &FFF00) DIV &100
24680name$=FNleaf(fsp$)
24690type$=FNtype(filetype%,obj%,name$)
24700access$=FNaccess(access%)
24710filelen$=STR$filelen%
24720date$=RIGHT$(FNdatestamp(load%,exec%),11)
24730time$=LEFT$(FNdatestamp(load%,exec%),8)
24740=TRUE
24750:
24760DEFFNtype(type%,obj%,name$)
24770LOCAL type$,
24780IF obj%=2 AND LEFT$(name$,1)="!" THEN="Application   "
24790IF obj%=2 THEN="Directory     "
24800type$=LEFT$(FNosvar("File$Type_"+STR$~type%),8)
24810IF type$="" type$="&"+STR$~type%
24820=type$+STRING$(9-LENtype$," ")+"("+FNlc(STR$~type%)+")"
24830:
24840DEFFNfiletype(path$)
24850LOCAL load%
24860SYS "OS_File",5,path$ TO ,,load%
24870=(load% AND &FFF00) DIV &100
24880:
24890DEFFNfiletypename(type%)
24900LOCAL r2%,r3%
24910SYS "OS_FSControl",18,,type% TO,,r2%,r3%
24920C%!0=r2%:C%!4=r3%:C%?8=&D
24930=$C%
24940:
24950DEFFNaccess(b%)
24960REM file attributes
24970LOCAL s$:s$=""
24980IF (b% AND 8)=8 s$+="L"
24990IF (b% AND 2)=2 s$+="W"
25000IF (b% AND 1)=1 s$+="R"
25010s$+="/"
25020IF (b% AND 16)=16 s$+="r"
25030IF (b% AND 32)=32 s$+="w"
25040=s$
25050:
25060DEFFNdatestamp(load%,exec%)
25070REM read 5 byte number of centiseconds
25080REM since 00:00:00 on 1 Jan 1900 as a time/date string
25090IF LEFT$(STR$~(load%),3)<>"FFF" THEN="":REM machine code
25100C%!0=exec%:C%!4=load%
25110SYS "OS_ConvertStandardDateAndTime",C%,C%+8,21
25120?(C%+28)=&D
25130=$(C%+8)
25140:
25150REM------
25160REM. MISC
25170REM------
25180:
25190DEFPROCsetextent(wh%,miny%,maxx%)
25200C%!0=0:C%!4=miny%:C%!8=maxx%:C%!12=0
25210SYS "Wimp_SetExtent",wh%,C%
25220ENDPROC
25230:
25240DEFFNobjtype(path$)
25250LOCAL objtype%
25260REM 0=not found, 1=file, 2=dir, 3=combination
25270SYS "OS_File",13,path$ TO objtype%
25280=objtype%
25290:
25300DEFFNfilelen(path$)
25310LOCAL len%
25320SYS "OS_File",5,path$ TO ,,,,len%
25330=len%
25340:
25350DEFFNobjs(dir$)
25360LOCAL objs%:objs%=items%
25370IF FNcheckobj(dir$,FALSE) THEN
25380 IF FNobjtype(dir$)<>2 THEN=items%
25390 SYS "OS_GBPB",9,dir$,q%,maxo%,0,blocksize%,0 TO ,,,objs%
25400ENDIF
25410=objs%
25420:
25430DEFFNname(ptr%)
25440LOCAL s$:s$=""
25450WHILE ?ptr%>31:s$+=CHR$?ptr%:ptr%+=1:ENDWHILE
25460=s$
25470:
25480DEFFNleaf(f$)
25490LOCAL c$,s$,c%:s$="":c%=LENf$:c$=MID$(f$,c%,1)
25500WHILE c$<>"." AND c$<>":" AND c%<>0
25510 s$=c$+s$:c%-=1
25520 c$=MID$(f$,c%,1)
25530ENDWHILE
25540=s$
25550:
25560DEFFNparent(f$)
25570IF INSTR(f$,".")=0 THEN=""
25580l$=FNleaf(f$)
25590=LEFT$(f$,LENf$-LENl$-1)
25600:
25610DEFFNtoday:REM system date. Eg "22 Aug 1988"
25620=MID$(TIME$,5,2)+" "+MID$(TIME$,8,3)+" "+MID$(TIME$,14,2)
25630:
25640DEFFNosvar(osvar$)
25650LOCAL len%
25660REM If not found don't report error
25670SYS "XOS_ReadVarVal",osvar$,C%,200,0,3 TO,,len%
25680?(C%+len%)=&D
25690=$C%
25700:
25710DEFFNenv
25720REM get command string
25730SYS "OS_GetEnv" TO env$
25740p=INSTR(env$,"""",INSTR(env$,"""")+1):env$=MID$(env$,p+1)
25750WHILE LEFT$(env$,1)=" ":env$=MID$(env$,2):ENDWHILE
25760=env$
25770:
25780DEFFNstrip(s$)
25790REM strip leading/trailing spaces
25800LOCAL J%,o$,c$,c%,n%:o$=s$
25810IF LEFT$(s$,1)=" "THEN
25820 c%=1:REPEAT:c%+=1:UNTIL MID$(o$,c%,1)<>" ":o$=RIGHT$(o$,LENo$-c%+1)
25830ENDIF
25840IF RIGHT$(s$,1)=" "THEN
25850 c%=LENo$:n%=1:REPEAT:c%-=1:n%+=1:UNTIL MID$(o$,c%,1)<>" "
25860 o$=LEFT$(o$,LENo$-n%+1)
25870ENDIF
25880=o$
25890:
25900DEFFNlc(str$)
25910LOCAL J%,c$,c%,s$:s$=""
25920FOR J%=1 TO LENstr$
25930 c$=MID$(str$,J%,1):c%=ASCc$
25940 IF c%>64 AND c%<91 c%+=32
25950 c$=CHR$c%:s$+=c$
25960NEXT
25970=s$
25980:
25990DEFFNosxmax
26000REM screen x OS units for current mode
26010SYS "OS_ReadModeVariable",-1,11 TO ,,xlimit%
26020SYS "OS_ReadModeVariable",-1,4 TO ,,xeig%
26030=(xlimit%+1)<<xeig%
26040:
26050DEFFNosymax
26060REM screen y OS units for current mode
26070SYS "OS_ReadModeVariable",-1,12 TO ,,ylimit%
26080SYS "OS_ReadModeVariable",-1,5 TO ,,yeig%
26090=(ylimit%+1)<<yeig%
26100:
26110DEFPROCbeep:SOUND 1,-10,200,1:ENDPROC
26120DEFPROCbuzz:SOUND 1,-15,50,4:ENDPROC
26130:
26140REM--------
26150REM. MEMORY
26160REM--------
26170:
26180DEFFNgetslotsize
26190LOCAL slotsize%
26200SYS "Wimp_SlotSize",-1,-1 TO slotsize%
26210=slotsize%
26220:
26230DEFFNsetslotsize(bytes%)
26240LOCAL size%,ok%:ok%=TRUE
26250SYS "Wimp_SlotSize",bytes%,-1 TO size%
26260IF size%<bytes% THEN ok%=FALSE
26270=ok%
26280:
26290REM---------
26300REM. WINDOWS
26310REM---------
26320:
26330DEFPROCloadtemplates
26340SYS "Wimp_OpenTemplate",,taskdir$+".Templates"
26350main%=FNtw("Main"):maintit%=q%!72
26360info%=FNtw("Info")
26370objinfo%=FNtw("ObjInfo")
26380savebox%=FNtw("Save")
26390copybox%=FNtw("Copy")
26400messwind%=FNtw("Message")
26410choicewind%=FNtw("Choices")
26420accesswind%=FNtw("Access")
26430buffwind%=FNtw("Buffer")
26440SYS "Wimp_CloseTemplate"
26450ENDPROC
26460:
26470DEFFNtw(a$)
26480LOCAL c%,end%:end%=buffer%+buffersize%
26490SYS "Wimp_LoadTemplate",,q%,buffer%,end%,-1,a$ TO ,,buffer%
26500SYS "Wimp_CreateWindow",,q% TO c%
26510=c%
26520:
26530DEFPROCow(wh%)
26540REM at my behest - on top
26550C%!0=wh%:SYS "Wimp_GetWindowState",,C%
26560C%!28=-1:SYS "Wimp_OpenWindow",,C%
26570ENDPROC
26580:
26590DEFPROCow2(wh%)
26600REM from Wimp Poll
26610SYS "Wimp_OpenWindow",,q%
26620ENDPROC
26630:
26640DEFPROCowc(wh%)
26650REM at my behest - on top and in centre
26660C%!0=wh%:SYS "Wimp_GetWindowState",,C%
26670SYS "OS_ReadModeVariable",-1,11 TO ,,xwindlimit%
26680SYS "OS_ReadModeVariable",-1,4  TO ,,xeigfactor%
26690SYS "OS_ReadModeVariable",-1,12 TO ,,ywindlimit%
26700SYS "OS_ReadModeVariable",-1,5  TO ,,yeigfactor%
26710xwindlimit%=xwindlimit%<<xeigfactor%
26720ywindlimit%=ywindlimit%<<yeigfactor%
26730xeigfactor%=C%!12-C%!4
26740yeigfactor%=C%!16-C%!8
26750C%!4 = (xwindlimit%-xeigfactor%)>>1
26760C%!8 = (ywindlimit%-yeigfactor%)>>1
26770C%!12= C%!4+xeigfactor%
26780C%!16= C%!8+yeigfactor%
26790C%!28=-1:SYS "Wimp_OpenWindow",,C%
26800ENDPROC
26810:
26820DEFPROCcw(wh%)
26830C%!0=wh%:SYS "Wimp_CloseWindow",,C%
26840IF wh%=main% open%=FALSE:PROCcw(buffwind%)
26850ENDPROC
26860:
26870DEFPROCstar
26880PROCtit(main%,maintit%,"Tiger:"+dir$+" *"):star%=TRUE
26890ENDPROC
26900:
26910DEFPROCnostar
26920PROCtit(main%,maintit%,"Tiger:"+dir$):star%=FALSE
26930ENDPROC
26940:
26950DEFPROCtit(wh%,ad%,str$)
26960REM force change of window title
26970$ad%=str$:!C%=wh%:SYS "Wimp_GetWindowOutline",,C%
26980minx%=C%!4:miny%=C%!8:maxx%=C%!12:maxy%=C%!16
26990SYS "Wimp_ForceRedraw",-1,minx%+84,maxy%-40,maxx%-44,maxy%-4
27000ENDPROC
27010:
27020DEFPROCsize
27030REM Tab adjusts size to obj names only
27040C%!0=main%:SYS "Wimp_GetWindowState",,C%
27050IF C%!12<>C%!4+244 OR C%!8>-1500 THEN
27060 C%!12=C%!4+244:C%!8=C%!16-1500
27070ENDIF
27080C%!28=-1:SYS "Wimp_OpenWindow",,C%
27090ENDPROC
27100:
27110DEFFNopen(wh%)
27120!C%=wh%:SYS "Wimp_GetWindowState",,C%
27130=FNbitset(C%!32,16)
27140:
27150DEFFNfocus(wh%)
27160!C%=wh%:SYS "Wimp_GetWindowState",,C%
27170=FNbitset(C%!32,20)
27180:
27190DEFFNbitset(i%,b%)
27200REM is bit b% in integer i% set?
27210LOCAL n%,d%:d%=1<<b%
27220n%=(i% AND d%) DIV d%
27230IF n%=0 THEN=FALSE
27240=TRUE
27250:
27260REM-------
27270REM. ICONS
27280REM-------
27290:
27300DEFPROCbaricon
27310C%!0=-2:C%!4=0:C%!8=-16:C%!12=112:C%!16=68
27320C%!20=&1700310B:C%!24=barbuf%:C%!28=spritad%:C%!32=8
27330SYS "Wimp_CreateIcon",,C% TO baricon%
27340ENDPROC
27350:
27360DEFPROCcreateicons
27370REM icons for names
27380minx%=12:miny%=-54:maxx%=230:maxy%=-4
27390FOR J%=0 TO maxo%
27400 $name%(J%)="":$val%(J%)="":d1%=name%(J%):d2%=val%(J%):d3%=13
27410 i%=FNicon(main%,minx%,maxy%-44,maxx%,maxy%,&1B00E131,"",d1%,d2%,d3%)
27420 miny%-=44:maxy%-=44
27430NEXT
27440:
27450REM icons for descriptions
27460miny%=-58:maxy%=-8:maxx%=width%:REM varies with mode
27470buflen%=maxdesclen%+1:REM fits on 132 chr screen; fits on listing paper in cond.
27480FOR J%=0 TO maxo%
27490 IF J%=0 THEN
27500  f%=&1B00E131:v%=valid%:minx%=240
27510 ELSE
27520  f%=&0700E131:v%=-1:minx%=244
27530 ENDIF
27540 $desc%(J%)=""
27550 i%=FNicon(main%,minx%,maxy%-40,maxx%,maxy%,f%,"",desc%(J%),v%,buflen%)
27560 miny%-=44:maxy%-=44
27570NEXT
27580:
27590REM icon for gaining input focus (#156)
27600i%=FNicon(main%,240,-40,228+8,-40+8,&BB00E134,"",0,0,0)
27610ENDPROC
27620:
27630DEFFNicon(wh%,minx%,miny%,maxx%,maxy%,flags%,text$,d1%,d2%,d3%)
27640C%!0=wh%:C%!4=minx%:C%!8=miny%:C%!12=maxx%:C%!16=maxy%:C%!20=flags%
27650IF d1%=0 THEN
27660 $(C%+24)=text$
27670ELSE
27680 C%!24=d1%:C%!28=d2%:C%!32=d3%
27690ENDIF
27700SYS "Wimp_CreateIcon",,C% TO ih%
27710=ih%
27720:
27730DEFPROCsi(wh%,ih%)
27740C%!0=wh%:C%!4=ih%:C%!8=1<<21:C%!12=1<<21
27750SYS"Wimp_SetIconState",,C%
27760ENDPROC
27770:
27780DEFPROCui(wh%,ih%)
27790C%!0=wh%:C%!4=ih%:C%!8=0:C%!12=1<<21
27800SYS"Wimp_SetIconState",,C%
27810ENDPROC
27820:
27830DEFPROCti(wh%,ih%)
27840IF FNis(main%,ih%) PROCui(main%,ih%) ELSE PROCsi(main%,ih%)
27850ENDPROC
27860:
27870DEFFNis(wh%,ih%)
27880LOCAL n%
27890!C%=wh%:C%!4=ih%:SYS"Wimp_GetIconState",,C%
27900n%=((C%!24)>>21) AND 1
27910IF n%=0 THEN=FALSE
27920=TRUE
27930:
27940DEFPROCit(wh%,ih%,s$)
27950C%!0=wh%:C%!4=ih%:SYS "Wimp_GetIconState",,C%
27960$(C%!28)=s$
27970C%!8=0:C%!12=0:SYS "Wimp_SetIconState",,C%
27980ENDPROC
27990:
28000DEFFNit(wh%,ih%)
28010C%!0=wh%:C%!4=ih%:SYS "Wimp_GetIconState",,C%
28020=$(C%!28)
28030:
28040DEFPROCsis(wh%,ih%,newflags%)
28050REM set icon state
28060LOCAL clear%,eor%
28070clear%=&FFFFFFFF:eor%=newflags%
28080C%!0=wh%:C%!4=ih%:C%!8=eor%:C%!12=clear%
28090SYS "Wimp_SetIconState",,C%
28100ENDPROC
28110:
28120DEFPROCseticonbit(wh%,ih%,b%)
28130C%!0=wh%:C%!4=ih%
28140C%!8=1<<b%:C%!12=1<<b%
28150SYS"Wimp_SetIconState",,C%
28160ENDPROC
28170:
28180DEFPROCcleariconbit(wh%,ih%,b%)
28190C%!0=wh%:C%!4=ih%
28200C%!8=0:C%!12=1<<b%
28210SYS"Wimp_SetIconState",,C%
28220ENDPROC
28230:
28240DEFPROCdi(wh%,from%,to%)
28250LOCAL J%:C%!0=wh%
28260FOR J%=from% TO to%:C%!4=J%:SYS "Wimp_DeleteIcon",,C%:NEXT
28270C%!0=wh%:SYS "Wimp_GetWindowOutline",,C%
28280minx%=C%!4:miny%=C%!8:maxx%=C%!12:maxy%=C%!16
28290SYS "Wimp_ForceRedraw",-1,minx%,miny%,maxx%,maxy%
28300ENDPROC
28310:
28320DEFFNvax(wh%,wax%)
28330!C%=wh%:SYS "Wimp_GetWindowState",,C%
28340=wax%-(C%!20-C%!4)
28350:
28360DEFFNvay(wh%,way%)
28370!C%=wh%:SYS "Wimp_GetWindowState",,C%
28380=way%-(C%!24-C%!16)
28390:
28400REM--------
28410REM. ERRORS
28420REM--------
28430:
28440DEFFNcheckobj(obj$,error%)
28450REM is object present?
28460LOCAL n%,type%
28470LOCAL ERROR
28480ON ERROR LOCAL ans%=FNlocalerror(obj$,REPORT$,ERR):=FALSE
28490SYS "OS_File",13,obj$ TO type%
28500obj$=FNstrip(FNleaf(obj$))
28510IF type%=0 n%=FALSE ELSE n%=TRUE
28520IF n%=FALSE AND error% THEN
28530 ans%=FNmsg("Can't find '"+obj$+"' in Filer","OK")
28540ENDIF
28550=n%
28560:
28570DEFFNlocalerror(obj$,err$,err%)
28580LOCAL s$,i%:s$=err$
28590CASE err% OF
28600 WHEN 248
28610  i%=INSTR(obj$,":")
28620  s$="Filing system or path "+LEFT$(obj$,i%)+" not present,"
28630  s$+="Closing Tiger window"
28640  ans%=FNmsg(s$,"OK")
28650  pristine%=TRUE:items%=0:PROCcw(main%)
28660 WHEN 67797
28670  s$="Disc not present,Closing Tiger window"
28680  ans%=FNmsg(s$,"OK")
28690  pristine%=TRUE:items%=0:PROCcw(main%)
28700 WHEN 204
28710  s$="Bad file name,"+obj$
28720  ans%=FNmsg(s$,"OK")
28730 OTHERWISE
28740  PROCwimperror
28750ENDCASE
28760=ans%
28770:
28780DEFPROCwimperror
28790SYS "Wimp_DragBox",,-1:SYS "Hourglass_Smash"
28800IF F%>0 CLOSE#F%:F%=0
28810IF X%>0 CLOSE#X%:X%=0
28820IF recursing% THEN
28830 recursing%=FALSE:PROCcw(main%)
28840 SYS "OS_Byte",229,1,0:REM disable Esc
28850 s$="Escape pressed - operation aborted"
28860 ans%=FNmsg(s$,"OK"):IF counting% display%=1:counting%=FALSE
28870 PROCshowTiger(1)
28880 ENDPROC
28890ENDIF
28900s$=REPORT$+",(Error "+STR$ERR+": line "+STR$ERL+")"
28910ans%=FNmsg(s$,"OK,Kill Tiger")
28920IF ans%=2 quit%=TRUE:OSCLI("Unset Tiger$Running"):PROCclosewimp:END
28930ENDPROC
28940:
28950DEFPROCerror
28960SYS "Hourglass_Smash"
28970IF H%>0 CLOSE#H%:H%=0
28980VDU4:PRINT REPORT$+" at line "+STR$ERL:VDU5
28990ENDPROC
29000:
29010DEFFNmsg(s1$,s2$)
29020LOCAL J%,c%,p%,g%,f%,r%,x%,y%,w%,h%,n%,s$,wh%
29030wh%=messwind%:PROCbuzz
29040SYS "Wimp_DragBox",,-1:SYS "Hourglass_Smash"
29050PROCdi(wh%,1,7)
29060:
29070REM do choices...
29080c%=0:s$=s2$
29090REPEAT
29100 c%+=1:p%=INSTR(s$,",")
29110 IF p%=0 ict$(c%)=s$
29120 IF p%>0 ict$(c%)=LEFT$(s$,p%-1):s$=RIGHT$(s$,LENs$-p%)
29130UNTIL p%=0:IF c%>4 c%=4
29140maxi%=c%
29150CASE c% OF
29160 WHEN 1:x%=312
29170 WHEN 2:x%=222
29180 WHEN 3:x%=128
29190 WHEN 4:x%=28
29200ENDCASE
29210y%=-228:w%=178:h%=52:v$="R5,2":f%=&1701313D
29220FOR J%=1 TO c%
29230 IF J%=c% y%-=6:w%+=32:h%+=12:v$="R6,2"
29240 $icn%(J%)=ict$(J%):$icv%(J%)=v$:n%=icn%(J%):v%=icv%(J%)
29250 i%=FNicon(wh%,x%,y%,x%+w%,y%+h%,f%,"",n%,v%,20)
29260 x%+=w%+12
29270NEXT
29280:
29290REM do messages...
29300c%=0:s$=s1$
29310REPEAT
29320 c%+=1:p%=INSTR(s$,",")
29330 IF p%=0 ict$(c%)=s$
29340 IF p%>0 ict$(c%)=LEFT$(s$,p%-1):s$=RIGHT$(s$,LENs$-p%)
29350UNTIL p%=0:IF c%>3 c%=3
29360CASE c% OF
29370 WHEN 1:g%=48:y%=-120
29380 WHEN 2:g%=54:y%=-84
29390 WHEN 3:g%=48:y%=-68
29400ENDCASE
29410x%=30:w%=774:h%=40:f%=&17006139:REM draggable
29420FOR J%=1 TO c%
29430 $icm%(J%)=RIGHT$(ict$(J%),48):n%=icm%(J%)
29440 i%=FNicon(wh%,x%,y%,x%+w%,y%+h%,f%,"",n%,-1,50)
29450 y%-=g%
29460NEXT
29470:
29480PROCow(wh%):PROCcaretx(wh%,8,0)
29490SYS "Wimp_GetPointerInfo",,C%:w%=C%!12
29500C%!0=wh%:SYS "Wimp_GetWindowState",,C%
29510MOUSE RECTANGLE C%!4+8,C%!8+8,C%!12-C%!4-16,C%!16-C%!8-16
29520IF w%<>wh% MOUSE TO C%!12-48,C%!8+48
29530REM wait for click on reply icon, or Esc pressed
29540reply%=0:esc%=FALSE:ret%=FALSE
29550REPEAT
29560 SYS "Wimp_Poll",,C% TO r%
29570 CASE r% OF
29580  WHEN 6:PROCmouse(C%)
29590  WHEN 7:PROCenddrag(C%,swh%,remb%,solid%)
29600  WHEN 8:PROCkeypress(C%)
29610 ENDCASE
29620UNTIL (reply%>0 AND reply%<maxi%+1) OR esc% OR ret%
29630IF ret% reply%=maxi%:REM default
29640PROCcw(wh%):OSCLI("Pointer")
29650=reply%
29660:
29670REM----------
29680REM. DEBUGGER
29690REM----------
29700:
29710DEFPROCdl(list$)
29720REM debug list
29730LOCAL ccc%,ttt%,mmm%,sss$,ccc$,var$():DIM var$(20)
29740LOCAL ERROR
29750ON ERROR LOCAL VDU4:PRINTTAB(0,ttt%+2)"ERROR!":VDU5:ENDPROC
29760FOR ttt%=1 TO LEN(list$)
29770 ccc$=MID$(list$,ttt%,1)
29780 IF ccc$<>"," sss$+=ccc$
29790 IF ccc$="," OR ttt%=LEN(list$) THEN
29800  IF LENsss$>mmm% mmm%=LENsss$
29810  var$(ccc%)=sss$:sss$="":ccc%+=1
29820 ENDIF
29830NEXT:VDU4
29840FOR ttt%=0 TO ccc%-1
29850 sss$=var$(ttt%)
29860 PRINTTAB(0,ttt%)STRING$(50," ")
29870 IF LEFT$(sss$,1)="~" THEN
29880  sss$=RIGHT$(sss$,LENsss$-1)
29890  ccc$=STRING$(mmm%-LENsss$," ")
29900  PRINTTAB(0,ttt%) sss$+ccc$+" =&";STR$~(EVALsss$)
29910 ELSE
29920  ccc$=STRING$(mmm%-LENsss$," ")
29930  PRINTTAB(0,ttt%) sss$+ccc$+" = ";EVAL(sss$)
29940 ENDIF
29950NEXT:VDU5
29960ENDPROC
29970:
29980DEFPROCda(a$,f%,t%)
29990REM debug array
30000LOCAL ccc%,nnn$,xxx%,ttt%
30010LOCAL ERROR
30020ON ERROR LOCAL VDU4:PRINTTAB(0,ttt%+2)"ERROR!":VDU5:ENDPROC
30030IF LEFT$(a$,1)="~" a$=RIGHT$(a$,LENa$-1):xxx%=TRUE
30040COLOUR 0:COLOUR 132:VDU4:PRINTTAB(0,0)a$+"()"
30050FOR ccc%=f% TO t%
30060 nnn$=RIGHT$("  "+STR$ccc%,2)+" ":ttt%+=1
30070 IF xxx% THEN
30080  PRINTTAB(0,ttt%)nnn$+"&";STR$~+EVAL(a$+"("+STR$ccc%+")")
30090 ELSE
30100  PRINTTAB(0,ttt%)nnn$;EVAL(a$+"("+STR$ccc%+")")
30110 ENDIF
30120NEXT:VDU5
30130ENDPROC

� > <Tiger$Dir>.!RunImage
:
task$="Tiger"
(+purpose$="Editable object descriptions"
2*author$="(c) Graham Crow 1992,'93,'94"
<!version$="4.00 (31 May 1994)"
F:
P� � �error:�
Z�init:�wimpinit
d�loadtemplates:�loadchoices
n$�baricon:�initicons:�createicons
x�install
�:
�� � �wimperror
�quit%=�
��:�poll:� quit%
��closewimp
��
�:
��-----------
��. WIMP POLL
��-----------
�:
�
��poll
� ș "Wimp_Poll",,q% � reason%
%� prevent dragging on a selection
"� reason%<17 � reason%>19 z%=0
Ȏ reason% �
" � 0
,  � textflag% �gettext
6  c%=�changed
@$  � c% undo%=�:redo%=� � undo%=�
J3  � c%:� � star% �star:� � � c%:� star% �nostar
T  � refresh% �
^   �showTiger(1):refresh%=�
h  �
rC  � � pristine%:� �objs(dir$)<>items%:� �open(main%) refresh%=�
|  �iconscroll
� � 2:�ow2(q%!0)
� � 3
�+  wh%=q%!0:ș "Wimp_GetPointerInfo",,q%
�*  � q%!12=main% � q%!8=1 �viewer(dir$)
�  �cw(wh%)
� � 6:�mouse(q%)
�' � 7:�enddrag(q%,swh%,remb%,solid%)
� � 8:�keypress(q%)
� � 9:�menuselect(q%)
� � 17,18:�receive(q%)
�
 � 19:
�  Ȏ q%!16 �
�*   � 5:ș "Wimp_StartTask","Run "+job$
   :�buzz
  �
�
&�
0:
:�----------
D�. MESSAGES
N�----------
X:
b��receive(q%)
lsender%=q%!4
vȎ q%!16 �
� � 0:quit%=�quit
�! � 1:�loadsel(q%) :� DataSave
�$ � 2:�datasave(q%):� DataSaveAck
�! � 3:�dataload(q%):� DataLoad
� � 4:� DataLoadAck
�/ � 5:� q%!40=&4FF �dataload(q%) :� DataOpen
� � 6:� RAMFetch
� � 7:� RAMTransmit
�  � 8:�prequit(q%) :� PreQuit
�? � &400C0:�submenu(q%):� pointer over SaveText/Copy submenu
�: � &400C1:windowstate%=0:� �open(main%) windowstate%=1
�! �modechange(q%,windowstate%)
�  � &400C7:tsk$=�taskname(q%)
�
�
:
 ��prequit(q%)
*0� PreQuit message received from Task Manager
4sender%=q%!4:quit%=�
>� acknowledge message
Hq%!12=q%!8
R'È™ "Wimp_SendMessage",19,q%,sender%
\
� �quit �
f# È™ "Wimp_GetCaretPosition",,q%
p  q%!24=&1FC:� Ctrl+Shift+F12
z' È™ "Wimp_SendMessage",8,q%,sender%
��
��
�:
�!��modechange(q%,windowstate%)
�6� adjusts window width and icon width to suit mode
�+� pristine% � (� �checkobj(dir$,�)) � �
�� �promptsave �
�/ ș "OS_ReadModeVariable",-1,1 � ,,columns%
� width%=(columns%-2)*16
�" �di(main%,0,155):�createicons
� �showTiger(windowstate%)
��
��
:
ݤtaskhandle(wh%,ih%)
� task%
$q%!0=256:q%!12=0
.1ș "Wimp_SendMessage",19,q%,wh%,ih% � ,,task%
8
=task%
B:
Lݤtaskname(q%)
V� s$,o%:s$="":o%=28
`%taskhandle%=q%!20:tasksize%=q%!24
j$ȕ q%?o%<>0:s$+=�(q%?o%):o%+=1:�
t=s$
~:
��------
��. INIT
��------
�:
�
��init
�ș "Hourglass_On"
�blocksize%=&4000
�buffersize%=&1000
�� q% blocksize%
�� buffer% buffersize%
�� C% &100:� w/s
�;� mb1%&200,mb2%&200,mb3%&100,mb4%&100,mb5%&200,mb6%&100
	s%=18

6� mi0%s%,mi1%s%,mi2%s%,mi3%s%,mi4%s%,mi5%s%,mi6%s%
*� mi7%s%,mi8%s%,mi9%s%,mi10%s%,mi11%s%
� tick%(15),grey%(15)
(:
2� for msg window
<� icm$(3),ict$(4)
F.� icm%(3):� J%=1 � 3:� a% 50:icm%(J%)=a%:�
P.� icn%(4):� J%=1 � 4:� a% 15:icn%(J%)=a%:�
Z.� icv%(4):� J%=1 � 4:� a% 10:icv%(J%)=a%:�
d%� icx%(4),icy%(4),icw%(4),ich%(4)
nreply%=0:esc%=�:ret%=�
x:
�%� spritad% 20:$spritad%="stigbar"
�� barbuf% 8:$barbuf%=task$
�:
�� text indirection
�� newname% 13:$newname%=""
�.� valname% 20:$valname%="A~.:*#$&@^%\"+�34
�:� valid% 5:$valid%="A":� validation string for icon 78
�:
�maxo%=77
�2� undo$(maxo%):� copy of descriptions for undo
�2� redo$(maxo%):� copy of descriptions for redo
�)� leaf$(maxo%):� unformatted leafname
�-� name$(maxo%):� leafnames from TigerData
0� desc$(maxo%):� descriptions from TigerData
-� len%(maxo%) :� length of object (bytes)
*� sel%(maxo%) :� list of selected objs
":
,maxdesclen%=110
69� data blocks and addresses for icon text indirection
@8� name%(maxo%):� J%=0 � maxo%:� a% 13:name%(J%)=a%:�
J6� val%(maxo%):� J%=0 � maxo%:� a% 20:val%(J%)=a%:�
TC� desc%(maxo%):� J%=0 � maxo%:� a% maxdesclen%+1:desc%(J%)=a%:�
^:
h;sprsize%=&1000:� spr% sprsize%:!spr%=sprsize%:spr%!8=16
r È™ "OS_SpriteOp",&100+9,spr%
|:
�)� get initial slot size (set in !Run)
�remslotsize%=�getslotsize
�;A%=&8000+remslotsize%:� load address for TigerData file
�:
�Eș "OS_ReadModeVariable",-1,1 � ,,columns%:width%=(columns%-2)*16
�:
�solid%=�soliddrag:remb%=4
�;dragicon%=1:fnicon%=2:okicon%=3:clicon%=4:� Save window
�:
� taskdir$=�osvar("Tiger$Dir")
�%tigstr$="Tiger description files"
�items%=0:find$="":cdir$=""
�/z%=0:� flag to prevent dragging a selection
1pristine%=�:� no files dragged onto Tiger yet
7star%=�:� asterisk in window title for changed data
4display%=1 :� 1=descs, 2=obj info, 3=nested size
&?oldi%=0:oldp%=0:� icon, position in icon (for horiz scroll)
03recursing%=�:counting%=�:refresh%=�:textflag%=�
:$pos%=0:insert%=�:undo%=�:redo%=�
DF%=0:X%=0:� file handles
N!user$="Demonstration":demo%=�
X�
b:
l��wimpinit
vB$q%="TASK":ș "Wimp_Initialise",200,!q%,task$ � version%,task%
��
�:
���closewimp
�,$q%="TASK":ș "Wimp_CloseDown",task%,!q%
��
�:
���initicons
�� J%,wh%:wh%=info%
�*�it(wh%,1,purpose$):�it(wh%,2,author$)
�(�it(wh%,3,version$):�it(wh%,4,user$)
�wh%=buffwind%
�� J%=1 � 3:�ui(wh%,J%):�
��
:

��install
'� install Tiger complete with data?
 "path$=�env:dir$=�parent(path$)
*,� dir$="" � startdir$<>"" dir$=startdir$
4� dir$<>"" �
>8 windowstate%=0:� openTiger% windowstate%=2:� centre
H pristine%=�
R �showTiger(windowstate%)
\�
fÈ™ "Hourglass_Smash"
p� openbuff% �ow(buffwind%)
z�
�:
��---------------
��. DATA TRANSFER
��---------------
�:
���drop(swh%,sih%,smb%)
�3� drag ends on Filer/App/Pinboard/Iconbar/Tiger
�"� find out where drop occurred
� ș "Wimp_GetPointerInfo",,q%
�+mx%=q%!0:my%=q%!4:dwh%=q%!12:dih%=q%!16
�:
�� invalid drops
�� swh%=dwh% � dwh%<>main% �
	$� swh%=buffwind% � dwh%<>main% �
	� swh%=main% �
	 � sih%<79 � dwh%=main% �
	$0 � sih%>78 � dwh%<>main% � dwh%<>buffwind% �
	.�
	8:
	B-� swh%=main% � sih%<79 � dwh%=buffwind% �
	L" path$=dir$+"."+leaf$(chosen%)
	V. �dragfiletobuff(path$,�filetype(path$)):�
	`�
	j:
	tE� (swh%=main% � swh%=buffwind%) � (dwh%=main% � dwh%=buffwind%) �
	~+ �shiftdesc(swh%,sih%,dwh%,dih%,smb%):�
	��
	�:
	�� dwh%=-2 � dih%=-1 �
	� dtsk$="IconBar"
	��
	� q%!0=20:q%!12=0:q%!16=0
	�4 ș "Wimp_SendMessage",19,q%,dwh%,dih% � ,,dtsk%
	� � dtsk%=0 �closemenu:�
	�6 ș "TaskManager_TaskNameFromHandle",dtsk% � dtsk$
	��
	�� swh%=savebox% �
	�0 �savetextfile(swh%,dwh%,dih%,mx%,my%,dtsk$)
�

 filersave%=�
 Ȏ dtsk$ �
&  � "IconBar" :�iconbar(smb%,sih%)
(1  � "Filer"   :�filer(swh%,dwh%,dih%,mx%,my%)
2%  � "Pinboard":�pinboard(mx%,my%)
<*        :�app(swh%,dwh%,dih%,mx%,my%)
F �
P�
Z�
d:
n��datasave(q%)
x+� response by Wimp (No.2 - DataSaveAck)
�'� to drag of file(s) onto Filer/App
�$� filersave% �filersave(q%,swh%)
��
�:
�#�------------------------------
�#�. DRAG TEXT FILE TO FILER, APP
�#�------------------------------
�:
�0��savetextfile(swh%,dwh%,dih%,mx%,my%,dtsk$)
�� send DataSave
�� fsp$,leaf$,filelen%,type%
�*� dtsk$="IconBar" � dtsk$="Pinboard" �
� �closemenu:�buzz:�
�
,fsp$=�it(swh%,fnicon%):leaf$=�leaf(fsp$)
!� � �oktosave(swh%,fnicon%) �
"(filelen%=100:type%=&FFF:filersave%=�
,(q%!0=(48+�fsp$) � � 3:� block length
6,q%!4=0:q%!8=0:q%!12=0:q%!16=1:� DataSave
@-q%!20=dwh%:q%!24=dih%:q%!28=mx%:q%!32=my%
J0q%!36=filelen%:q%!40=type%:$(q%+44)=leaf$+�0
T+È™ "Wimp_SendMessage",18,q%,q%!20,q%!24
^�
h:
r��textsave(q%,newpath$)
|*� DataSaveAck received - send DataLoad
�� �demo("Text save") �
�� � �checkobj(dir$,�) �
��startsave(newpath$)
��savedir(dir$)
�%� �is(savebox%,12) �recursivesave
��endsave(newpath$)
�$� only update filename if secure
�/� q%!36>-1 � �it(savebox%,fnicon%,newpath$)
�)q%!0=64:q%!12=q%!8:q%!16=3:� DataLoad
�#q%!40=&FFF:$(q%+44)=newpath$+�0
�+ș "Wimp_SendMessage",18,q%,q%!20,q%!24
��
�:
�-------------
�. DRAG TO APP
�-------------
&:
0!��app(swh%,dwh%,dih%,mx%,my%)
:5q%!12=0:q%!20=dwh%:q%!24=dih%:q%!28=mx%:q%!32=my%
D4sel%=�sel:� swh%=copybox% sel%=1:sel%(1)=chosen%
N� J%=1 � sel%
X$ sfsp$=dir$+"."+$name%(sel%(J%))
b' type%=�filetype(sfsp$):q%!40=type%
l q%!0=((48+�sfsp$)� 4)*4
v) $(q%+44)=sfsp$+�0:q%!16=3:� DataLoad
�* ș "Wimp_SendMessage",17,q%,dwh%,dih%
��
�
�clearall
��
�:
��---------------
��. DRAG TO FILER
��---------------
�:
�#��filer(swh%,dwh%,dih%,mx%,my%)
�(� drag ends on Filer - send DataSave
�� fsp$,leaf$,filelen%,type%
�filersave%=�


Ȏ swh% �

 � copybox%:

 fsp$=�it(swh%,fnicon%)

  leaf$=�leaf(fsp$)

* filelen%=�filelen(fsp$)

4 type%=�filetype(fsp$)

> � savebox%:

H fsp$=�it(swh%,fnicon%)

R leaf$=�leaf(fsp$)

\ filelen%=100:type%=&FFF

f :

p leaf$=leaf$(chosen%)

z fsp$=dir$+"."+leaf$

� filelen%=�filelen(fsp$)

� type%=�filetype(fsp$)

��

�(q%!0=(48+�fsp$) � � 3:� block length

�,q%!4=0:q%!8=0:q%!12=0:q%!16=1:� DataSave

�-q%!20=dwh%:q%!24=dih%:q%!28=mx%:q%!32=my%

�0q%!36=filelen%:q%!40=type%:$(q%+44)=leaf$+�0

�+ș "Wimp_SendMessage",18,q%,q%!20,q%!24

��

�:

���filersave(q%,swh%)

�� response to DataSaveAck

�/� J%,K%,sel%,dpath$,ddir$,leaf$,sfsp$,dfsp$
-FilerAction%=�fileraction:opts%=�readopts

sel%=�sel
dpath$=�name(q%+44)
$ddir$=�parent(dpath$)
.
Ȏ swh% �
8" � copybox%:�copy(ddir$,remb%)
B$ � savebox%:�textsave(q%,dpath$)
L :
V �clearall
` :
j( � does ddir$ have a TigerData file?
t7 fsp$=ddir$+".TigerData":present%=�checkobj(fsp$,�)
~ � � present% �
�  descs%=0
� �
�!  descs%=�loadTigerData(fsp$)
� �
� :
�5 � FilerAction% ș &400DE,"Filer_Action" � taskh%
� :
� � J%=1 � sel%
�  leaf$=leaf$(sel%(J%))
�  sfsp$=dir$+"."+leaf$
�  dfsp$=ddir$+"."+leaf$
�?  � �checkobj(sfsp$,�) � � (present% � leaf$="TigerData") �
   � FilerAction% �

    È™ &40F80,taskh%,dir$
    È™ &40F81,taskh%,leaf$
   �
(#    � �-1 delete%=� � delete%=�
2    opt$=�copyopts(delete%)
<#    � �-1 t$="Move" � t$="Copy"
F>    �command(t$+" files","Copy "+sfsp$+" "+dfsp$+" "+opt$)
P   �
Z  �
d �
n :
x � FilerAction% �
�  � �-1 n%=6 � n%=0
�.  ș &40F82,taskh%,n%,opts%,ddir$,�ddir$+1
� �
�* q%!0=64:q%!12=q%!8:q%!16=3:� DataLoad
�, ș "Wimp_SendMessage",18,q%,q%!20,q%!24
� � remb%=1 �cw(swh%)
� :
�/ � transfer incoming descriptions to arrays
� � J%=1 � sel%
�  name$=leaf$(sel%(J%))
�5  desc$=$desc%(sel%(J%)):� desc$=tigstr$ desc$=""
�  :
�  � desc$<>"" �
   found%=�
   � K%=1 � descs%
<    � name$(K%)=name$ desc$(K%)=desc$:found%=�:K%=descs%
"   �
,   � � found% �
69    descs%+=1:name$(descs%)=name$:desc$(descs%)=desc$
@   �
J  �
T  :
^ �
h �writeTigerData(descs%)
r�
|�
�:
� �---------------------------
� �. DRAG TO PINBOARD, ICONBAR
� �---------------------------
�:
���pinboard(mx%,my%)
�� J%,n$,fsp$,x%,y%
�x%=mx%:y%=my%
�4sel%=�sel:� swh%=copybox% sel%=1:sel%(1)=chosen%
�� J%=1 � sel%
� n$=leaf$(sel%(J%))
� x$=�x%:� x%<0 x$="0"+x$
� y$=�y%:� y%<0 y$="0"+y$
( �("Pin "+dir$+"."+n$+" "+x$+" "+y$)
( � J% � 4=0 y%-=116:x%=mx% � x%+=188
�
&�closemenu
0� remb%=1 �cw(main%):� Adj
:�
D:
N��iconbar(smb%,sih%)
X� J%
b4sel%=�sel:� swh%=copybox% sel%=1:sel%(1)=chosen%
l� J%=1 � sel%
v  �doubleclick(smb%,sel%(J%))
��
��
�:
��-------------
��. COPY OBJECT
��-------------
�:
���prepcopybox
�� wh%:wh%=copybox%
�leaf$=leaf$(chosen%)
��it(wh%,2,leaf$)
�.q%!0=wh%:q%!4=1:ș "Wimp_GetIconState",,q%
� $(q%!28)=�spr(wh%,dragicon%)
�
:
��copy(ddir$,remb%)
 
� copybox
*-FilerAction%=�fileraction:opts%=�readopts
4leaf$=leaf$(chosen%)
>sfsp$=dir$+"."+leaf$
H� �checkobj(sfsp$,�) �
R fsp$=�it(copybox%,fnicon%)
\ � ddir$="" �
f  � OK/Ret
p/  ddir$=�parent(fsp$):� ddir$="" ddir$=dir$
z �
� newleaf$=��leaf(fsp$),10)
� dfsp$=ddir$+"."+newleaf$
� � FilerAction% �
�  �fileraction(0)
� �
�  opt$=�copyopts(�)
�=  �command("Copy files","Copy "+sfsp$+" "+dfsp$+" "+opt$)
� �
� :
� � copy description. if any
�( � does ddir$ have a TigerData file?
�7 fsp$=ddir$+".TigerData":present%=�checkobj(fsp$,�)
� :
 � � present% �
  descs%=0
 �
$!  descs%=�loadTigerData(fsp$)
. �
8 :
B/ � transfer incoming descriptions to arrays
L name$=leaf$(chosen%)
V desc$=$desc%(chosen%)
` � desc$=tigstr$ desc$=""
j � desc$<>"" �
t  found%=�
~  � K%=1 � descs%
�;   � name$(K%)=name$ desc$(K%)=desc$:found%=�:K%=descs%
�  �
�  � � found% �
�8   descs%+=1:name$(descs%)=name$:desc$(descs%)=desc$
�  �
� �
� �writeTigerData(descs%)
�1 � ddir$=dir$ � newleaf$<>leaf$ �showTiger(1)
� � remb%<>1 �closemenu
��
��
�:
��command(title$,command$)

0� perform task with output in command window
$C%=title$
È™ "Wimp_CommandWindow",C%
(� command$
2È™ "Wimp_CommandWindow",0
<�
F:
P�---------------
Z�. FILER ACTIONS
d�---------------
n:
x��access(n%)
�*� access%,recurse%,wh%:wh%=accesswind%
�Ȏ n% �
�� 1:� menu choice
� Ȏ level2% �
�  � 0:access%=10
�  � 1:access%=2
�  � 2:access%=16
�  � 3:access%=3
� �
� � stay% �redomenu(n%)
�� 2:� window click
� access%=0
� � �is(wh%,1) access%+=8
 � �is(wh%,2) access%+=1
 � �is(wh%,3) access%+=2
 � �is(wh%,4) access%+=16
" � �is(wh%,5) access%+=8
,9 � stay% �redomenu(n%):�mainmenu(remx%,remy%,chosen%)
6�
@recurse%=�is(wh%,11)
J�fileraction(3)
T�
^:
h��redomenu(n%)
r2� re-do ticks in mb5% and icons in accesswind%
|�accessmenu(�,n%)
�*ș "Wimp_GetPointerInfo",,q%:wh%=q%!12
�)q%!0=wh%:ș "Wimp_GetWindowState",,q%
�,ș "Wimp_CreateSubMenu",,mb5%,q%!4,q%!16
��
�:
���accessmenu(more%,n%)
�*ș "Wimp_GetPointerInfo",,q%:wh%=q%!12
�'� J%,leaf$,obj%,wh%:wh%=accesswind%
�.b%=&7000021:g%=&7400021:� flags=black,grey
�2a%=mb5%:p%=a%+28:$a%="Access":f%=b%:wid%=15*16
�,a%!12=&70207:a%!16=wid%:a%!20=44:a%!24=0
�:
�$� n%=1 � J%=1 � 10:�ui(wh%,J%):�

tick%()=0
-sel%=�sel:� sel%=0 sel%=1:sel%(1)=chosen%
leaf$=$name%(chosen%)
&!obj%=�objtype(dir$+"."+leaf$)
0�cleariconbit(wh%,11,22)
::
D� sel%=1 � obj%=1 �
N � one file chosen
X �seticonbit(wh%,11,22)
b/ ș "OS_File",5,dir$+"."+leaf$ � ,,,,,attr%
l � more% attr%=access%
v locked%=(attr% � 8)=8
� oread% =(attr% � 1)=1
� owrite%=(attr% � 2)=2
� pread% =(attr% � 16)=16
� pwrite%=(attr% � 32)=32
�
 � n%=1 �
�'  � locked% �si(wh%,1) � �si(wh%,6)
�'  � oread%  �si(wh%,2) � �si(wh%,7)
�'  � owrite% �si(wh%,3) � �si(wh%,8)
�'  � pread%  �si(wh%,4) � �si(wh%,9)
�(  � pwrite% �si(wh%,5) � �si(wh%,10)
� �
� protected%=locked%
� public%=pread%
) � protected% tick%(0)=� � tick%(1)=�
& � public% tick%(2)=� � tick%(3)=�
�
 :
*� tick%(0) t%=1 � t%=0
4<s$="Protected":p%!0=t%:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
>� tick%(1) t%=1 � t%=0
H@s$="Unprotected":p%!0=t%+2:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
R� tick%(2) t%=1 � t%=0
\9s$="Public":p%!0=t%:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
f� tick%(3) t%=1 � t%=0
p<s$="Private":p%!0=t%+2:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
z;b%=&7000121:g%=&7400121:� flags=black,grey (indirected)
�$mi11%="Access details"
�;p%!0=&80:p%!4=wh%:p%!8=b%:p%!12=mi11%:p%!16=-1:p%!20=16
��
�:
�
��settype
�,� J%,settype%,str$,str2$,num%,len%,more%
�str$=�lc(�strip($newname%))
�� str$="":�badtype:�
� � �str$,1)="&" str$=�str$,2)
�settype%=-1:num%=�
�� J%=1 � � str$
�6 � �"0123456789ABCDEFabcdef",�str$,J%,1))<1 num%=�
��
� num% �
 settype%=�("&"+str$)
�
$ more%=0
. �
8D  ș "XOS_ReadVarVal","File$Type_*",C%,18,more%,3 � ,,len%,more%
B'  C%?len%=&D:str2$=�lc(�strip($C%))
L � more%<=0 � str$=str2$
V � more%>0 �
`)  settype%=�("&"+��name(more%),11,3))
j �
t�
~� settype%>-1 �
� �fileraction(4)
� refresh%=�
��
�
 �badtype
��
��
�:
�
��badtype
�'ans%=�msg("Bad file type","Cancel")
��
�:
�
��help

� app$

-sel%=�sel:� sel%=0 sel%(1)=chosen%:sel%=1
� sel%=1 �
 app$=leaf$(sel%(1))
(4 �("WimpTask Filer_Run "+dir$+"."+app$+".!Help")
2�
<�
F:
P��count
Z�fileraction(5)
d�
n:
x��find($newname%)
�#find$=$newname%:�fileraction(9)
��
�:
���stamp
��fileraction(8):refresh%=�
��
�:
���fileraction(n%)
�� J%,taskh%,leaf$
�-FilerAction%=�fileraction:opts%=�readopts
�-sel%=�sel:� sel%=0 sel%(1)=chosen%:sel%=1
�%ș &400DE,"Filer_Action" � taskh%
�� J%=1 � sel%
 leaf$=leaf$(sel%(J%))
 È™ &40F80,taskh%,dir$
 È™ &40F81,taskh%,leaf$
"�
,ÈŽ n% �
6 � 0:� Copy
@, È™ &40F82,taskh%,0,opts%,ddir$,�ddir$+1
J � 1:� move/rename
T � 2:� Delete
^ � 3:� Set access
h= !q%=access% :È™ &40F82,taskh%,3,opts%+(recurse%<<4),q%,4
r � 4:� Set type
|/ !q%=settype%:È™ &40F82,taskh%,4,opts%,q%,4
� � 5:� Count
� È™ &40F82,taskh%,5,opts%,1
� � 6:� Move
�, È™ &40F82,taskh%,6,opts%,ddir$,�ddir$+1
�" � 7:� Copy local (within dir)
� � 8:� Stamp files
� È™ &40F82,taskh%,8,opts%,0
� � 9:� Find file
�, È™ &40F82,taskh%,9,opts%,find$,�find$+1
��
��
�:
��---------------
�. FILER OPTIONS
�---------------
:
&ݤreadopts
0$force%=(�readcmos(198)�&10)� &10
:%confirm%=(�readcmos(198)�&20)�&20
D%verbose%=(�readcmos(198)�&40)�&40
N#newer%=(�readcmos(198)�&80)�&80
X5o%=verbose%+(confirm%<<1)+(force%<<2)+(newer%<<3)
b=o%
l:
v
��setopts
�%� newer%,force%,verbose%,confirm%
�verbose%=opts% � 1
�confirm%=(opts% � 2)�2
�force%=(opts% � 4)�4
�newer%=(opts% � 8)�8
��setcmos(198,force%<<4,&10)
�!�setcmos(198,confirm%<<5,&20)
�!�setcmos(198,verbose%<<6,&40)
��setcmos(198,newer%<<7,&80)
��
�:
�ݤreadcmos(ad%)
�� byte%
"ș "OS_Byte",161,ad% � ,,byte%

=byte%
:
 ��setcmos(ad%,byte%,mask%)
*� byte2%
4#ș "OS_Byte",161,ad% � ,,byte2%
>%byte2%=(byte2% � � mask%) � byte%
HÈ™ "OS_Byte",162,ad%,byte2%
R�
\:
fݤcopyopts(delete%)
p� o$,o%:o%=�readopts
z
o$="A"
�!� confirm% o$+="C" � o$+="~C"
� � delete% o$+="D" � o$+="~D"
�� force% o$+="F" � o$+="~F"
�o$+="~L"
�� newer% o$+="N" � o$+="~N"
�o$+="~P~QR~S~T"
�!� verbose% o$+="V" � o$+="~V"
�=o$
�:
�ݤwipeopts
�� o$,o%:o%=�readopts:o$=""
�!� confirm% o$+="C" � o$+="~C"
�� force% o$+="F" � o$+="~F"
o$+="R"
!� verbose% o$+="V" � o$+="~V"
=o$
$:
.�-------------
8�. TEXT BUFFER
B�-------------
L:
V
��gettext
`5� get text from any text icon and place in buffer
j5� continuously called from Poll if textflag%=TRUE
t� � textflag% �
~1� dwh%,dih%,flag%,data%,text%,ind%,tsk%,text$
�dwh%=buffwind%:dih%=0
�:ș "Wimp_GetCaretPosition",,C%:� C%!0=dwh% dpos%=C%!20
� ș "Wimp_GetPointerInfo",,q%
�#smb%=q%!8:swh%=q%!12:sih%=q%!16
�%� swh%=-2 � swh%=dwh% � smb%<>1 �
�'� �demo("Text buffer operations") �
�# textflag%=�:�ui(buffwind%,1):�
��
�� sih%=-4 �
� � title bar
�) !q%=swh%:ș "Wimp_GetWindowInfo",,q%
� flag%=q%!60:data%=76
�

 !q%=swh%:q%!4=sih%
 È™ "Wimp_GetIconState",,q%
 flag%=q%!24:data%=28
(�
20text%=�bitset(flag%,0):ind%=�bitset(flag%,8)
<
� text% �
F
 text$=""
P  tsk%=�taskhandle(swh%,sih%)
Z
 � ind% �
d8  È™ "Wimp_TransferBlock",tsk%,q%!data%,task%,C%,255
n  text$=�name(C%)
x �
�  text$=�name(q%+data%)
� �
�% �movetext(text$,dwh%,dih%,dpos%)
��
� textflag%=�:�ui(buffwind%,1)
��
�:
�!��dragfiletobuff(path$,type%)
�� n%,c%,s$
�'� �demo("Text buffer operations") �
�'� type%<>&FFF � type%<>&FEB �buzz:�
�F%=�(path$)
�s$="":n%=0
%ȕ (� �#F%) � (n%<maxdesclen%-10)
" c%=�#F%:� c%>31 s$+=�c%:n%+=1
�
"
�#F%:F%=0
,�movetext(s$,buffwind%,0,0)
6�
@:
J��loadsel(q%)
T)� DataSave received from another task
^'� �demo("Text buffer operations") �
h%dwh%=q%!20:dih%=q%!24:type%=q%!40
r!� dwh%<>buffwind% � dih%<>0 �
|'� type%<>&FFF � type%<>&FEB �buzz:�
�� send DataSaveAck
�'q%!36=-1:$(q%+44)="<Wimp$Scrap>"+�0
�,q%!0=64:q%!12=q%!8:q%!16=2:� DataSaveAck
�$ș "Wimp_SendMessage",18,q%,q%!4
��
�:
�
��puttext
�(� transfer text from buffer to caret
�'� �demo("Text buffer operations") �
�text$=�it(buffwind%,0)
�"ș "Wimp_GetCaretPosition",,C%
�#dwh%=C%!0:dih%=C%!4:dpos%=C%!20
�-� dwh%=main% � dih%>78 � dih%<79+items% �
 % �movetext(text$,dwh%,dih%,dpos%)
 �
 �
 &:
 0)��shiftdesc(swh%,sih%,dwh%,dih%,smb%)
 :*� dragged desc to buffer or other desc
 D � dwh%=buffwind% � dih%<>0 �
 N1� (dwh%=buffwind% � swh%=buffwind%) � demo% �
 X( � �demo("Text buffer operations") �
 b�
 l5� dwh%=main% � (dih%<79 � dih%>157 � dih%=sih%) �
 vinsert%=�is(buffwind%,3)
 �.� insert% dpos%=�dpos(dwh%,dih%) � dpos%=0
 �text$=�it(swh%,sih%)
 �$�movetext(text$,dwh%,dih%,dpos%)
 �7� �-1 � smb%=16 �it(swh%,sih%,""):�caret(swh%,sih%)
 ��
 �:
 �ݤdpos(dwh%,dih%)
 �+� chr pos of pointer in icon after drag
 �	� mx%
 �)ș "Wimp_GetPointerInfo",,q%:mx%=q%!0
 �2q%!0=dwh%:q%!4=dih%:ș "Wimp_GetIconState",,q%
 �=(mx%-�vax(dwh%,q%!8)) � 16
 �:
!#��movetext(ss$,dwh%,dih%,dpos%)
!insert%=�is(buffwind%,3)
!ds$=�it(dwh%,dih%)
! 	e$=""
!*� insert% �
!44 � �ds$+�ss$>maxdesclen% e$="Too long to insert"
!>4 � �ds$=maxdesclen% e$="Destination buffer full"
!H � e$<>"" �
!R  ans%=�msg(e$,"Cancel")
!\ �
!f   ss$=�insert(ss$,ds$,dpos%)
!p �
!z�
!�
� e$="" �
!�/ �it(dwh%,dih%,ss$):�caret(dwh%,dih%):�beep
!� �:ȗ x%,y%,b%:� b%=0
!��
!��
!�:
!�ݤinsert(s$,d$,p%)
!�� places s$ in d$ at pos p%
!�� l$,r$,maxl%:maxl%=255
!�!� p%<0 p%=0 � � p%>�d$ p%=�d$
!�� �d$+�s$>maxl% �=d$
!�l$=�d$,p%):r$=�d$,�d$-p%)
!�
=l$+s$+r$
":
"�---------
"�. CHOICES
"$�---------
".:
"8��loadchoices
"B*� J%,fsp$,d$,s$,n%,wh%:wh%=choicewind%
"Lfsp$=taskdir$+".Choices"
"V� �checkobj(fsp$,�) �
"` H%=�(fsp$)
"j" s$=�#H%:� taskdir$+".Choices"
"t user$=�#H%
"~ n%=�#H%
"� � n%=0 demo%=� � demo%=�
"� � J%=6 � 16
"�
  n%=�#H%
"�&  � n%=1 �si(wh%,J%) � �ui(wh%,J%)
"� �
"� startdir$=�#H%
"� �#H%:H%=0
"� �setchoices
"��
"� �setdefaults
"��
"��
#:
#
��setchoices
#� J%,s%,wh%:wh%=choicewind%
#openTiger%=�:openbuff%=�
#(,promptsave%=�:IconSprites%=�:dragdesc%=�
#2s%=�
#<� J%=6 � 8
#F � �is(wh%,J%) s%=�
#P�
#Z� s%=� �si(wh%,6):� default
#d5� �is(wh%,6) startdir$=�strip(�osvar("Root$Dir"))
#n� �is(wh%,7) �
#x5 � � �checkobj(startdir$,�) �si(wh%,6):�ui(wh%,7)
#�4 � default to root if can't find user's startdir
#��
#�� �is(wh%,8) startdir$=""
#�� �is(wh%,9) display%=1
#�� �is(wh%,10) display%=2
#�� �is(wh%,11) display%=3
#�� �is(wh%,12) openTiger%=�
#�� �is(wh%,13) openbuff%=�
#�� �is(wh%,14) promptsave%=�
#� � �is(wh%,15) IconSprites%=�
#�� �is(wh%,16) dragdesc%=�
#��
#�:
$��prepchoicewind
$� J%,wh%:wh%=choicewind%
$� J%=6 � 8:�ui(wh%,J%):�
$"Ȏ startdir$ �
$,, � �strip(�osvar("Root$Dir")):�si(wh%,6)
$6 � dir$:�si(wh%,7)
$@ � "":�si(wh%,8)
$J :�si(wh%,6)
$T�
$^Ȏ display% �
$h � 1:�si(wh%,9)
$r � 2:�si(wh%,10)
$| � 3:�si(wh%,11)
$��
$�� openTiger% �si(wh%,12)
$�� openbuff% �si(wh%,13)
$�� promptsave% �si(wh%,14)
$�� IconSprites% �si(wh%,15)
$�� dragdesc% �si(wh%,16)
$��
$�:
$���setdefaults
$�� J%,wh%:wh%=choicewind%
$�� J%=6 � 16:�ui(wh%,J%):�
$�%�si(wh%,6):�si(wh%,9):�si(wh%,12)
$�'�si(wh%,14):�si(wh%,15):�si(wh%,16)
%�setchoices
%�
%:
%&��savechoices
%0'� J%,fsp$,d$,n%,wh%:wh%=choicewind%
%:fsp$=taskdir$+".Choices"
%DH%=�(fsp$)
%N�#H%,task$+" choices"
%X�#H%,user$
%b� demo% n%=0 � n%=1
%l�#H%,n%
%v� J%=6 � 16
%� � �is(wh%,J%) n%=1 � n%=0
%� �#H%,n%
%��
%� � �is(wh%,7) d$=dir$ � d$=""
%��#H%,d$
%��("SetType "+fsp$+" &FFF")
%�
�#H%:H%=0
%��
%�:
%��----------
%��. DRAGGING
%��----------
%�:
&ݤsoliddrag
&"� modules present? (RISC OS�3)
&&� �swi("DragASprite_Start")=-1 �=�
& &� �swi("DragASprite_Stop") =-1 �=�
&*� bit 1 of byte 28 set?
&4!ș "OS_Byte",161,28 � ,,cmos%
&>� (cmos% � 2)=0 �=�
&H=�
&R:
&\ݤfileraction
&f� bit 2 of byte 28 set?
&p!ș "OS_Byte",161,28 � ,,cmos%
&z� (cmos% � 4)=0 �=�
&�=�
&�:
&�ݤswi(swi$)
&�� swi%,flags%
&�4ș "XOS_SWINumberFromString",,swi$ � swi%;flags%
&�� (flags% � 1) swi%=-1
&�	=swi%
&�:
&�!��startdrag(wh%,ih%,mb%,sol%)
&�'swh%=wh%:sih%=ih%:smb%=mb%:� source
&�� get coords
&�)q%!0=wh%:ș "Wimp_GetWindowState",,q%
&�Dwminx%=q%!4:wminy%=q%!8:wmaxx%=q%!12:wmaxy%=q%!16:scrolly%=q%!24
'"ox%=q%!4-q%!20:oy%=q%!16-q%!24
'=È™ "Wimp_GetPointerInfo",,q%:mx%=q%!0:my%=q%!4:remb%=q%!8
'0q%!0=wh%:q%!4=ih%:È™ "Wimp_GetIconState",,q%
'$"� initial position of drag box
'.
Ȏ swh% �
'8 :
'B � messwind%
'L sol%=�
'V. q%!4=wh%:È™ "Wimp_GetWindowOutline",,q%+4
'`  q%!0=wh%:q%!4=5:� drag type
'j xos%=�osxmax:yos%=�osymax
't* q%!24=0:q%!28=0:q%!32=xos%:q%!36=yos%
'~ :
'� � savebox%,copybox%
'� q%!0=wh%:q%!4=5:sprad%=1
'�B q%!8=q%!8+ox%:q%!12=q%!12+oy%:q%!16=q%!16+ox%:q%!20=q%!20+oy%
'�4 q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
'� :
'� � main%
'� � ih%=-1 �
'�   � background - rubber band
'�  � mx%-wminx%<244 �
'�,   q%!0=wh%:ș "Wimp_GetWindowState",,q%
'�4   minx%=q%!4:miny%=q%!8:maxx%=q%!12:maxy%=q%!16
'�(   � maxx%>minx%+228 maxx%=minx%+228
("   q%!0=wh%:q%!4=6:� drag type
(
1   q%!8=mx%:q%!12=my%:q%!16=mx%+4:q%!20=my%+4
(,   � restrict parent box to visible area
(6   q%!24=minx%:q%!28=miny%:q%!32=maxx%:q%!36=maxy%
((  �
(2 �
(< :
(F � ih%>-1 � ih%<79 �
(P  �si(main%,ih%)
(Z  sel%=�sel
(d*  q%!0=wh%:q%!4=5:sprad%=1:sol%=solid%
(n,  q%!8=mx%:q%!12=my%:q%!16=mx%:q%!20=my%
(x5  q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
(� �
(� :
(� � ih%>78 � display%=1 �
(�
  � descr
(�  � � dragdesc% �
(�2  iminx%=�vax(wh%,q%!8):iminy%=�vay(wh%,q%!12)
(�3  imaxx%=�vax(wh%,q%!16):imaxy%=�vay(wh%,q%!20)
(�#  � iminx%<wminx% iminx%=wminx%
(�#  � imaxx%>wmaxx% imaxx%=wmaxx%
(�+  w%=(imaxx%-iminx%) � 2:h%=10:mode%=12
(�'  �spritecreate("grab",w%,h%,mode%)
(�  � write to sprite
(�>  ș "OS_SpriteOp",&100+60,spr%,"grab",0 � r0%,r1%,r2%,r3%
)  � 6,32:� 5:� �it(wh%,ih%)
)&  È™ "OS_SpriteOp",r0%,r1%,r2%,r3%
)-  q%!0=wh%:q%!4=5:sprad%=spr%:sol%=solid%
)":  q%!8=iminx%:q%!12=iminy%+4:q%!16=imaxx%:q%!20=imaxy%
),5  q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
)6 �
)@ :
)J � buffwind%
)T1 iminx%=�vax(wh%,q%!8):iminy%=�vay(wh%,q%!12)
)^2 imaxx%=�vax(wh%,q%!16):imaxy%=�vay(wh%,q%!20)
)h* w%=(imaxx%-iminx%) � 2:h%=10:mode%=12
)r w%-=12
)|& �spritecreate("grab",w%,h%,mode%)
)� � write to sprite
)�= ș "OS_SpriteOp",&100+60,spr%,"grab",0 � r0%,r1%,r2%,r3%
)� � 4,32:� 5:� �it(wh%,0)
)�% ș "OS_SpriteOp",r0%,r1%,r2%,r3%
)�, q%!0=wh%:q%!4=5:sprad%=spr%:sol%=solid%
)�9 q%!8=iminx%:q%!12=iminy%+4:q%!16=imaxx%:q%!20=imaxy%
)�4 q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
)� :
)��
)�:
)�� sol% �
)�- spr$=�spr(swh%,sih%):flags%=�flags(spr$)
)�3 ș "DragASprite_Start",flags%,sprad%,spr$,q%+8
*�
* È™ "Wimp_DragBox",,q%
*�
*&�
*0:
*:$��spritecreate(spr$,w%,h%,mode%)
*D4È™ "OS_SpriteOp",&100+15,spr%,spr$,0,w%,h%,mode%
*N�
*X:
*bݤspr(swh%,sih%)
*l#� leaf$,type%,obj%,spr$:spr$=""
*v � swh%=savebox% �="file_FFF"
*�4� swh%=main% � sih%>78 � sih%<79+items% �="grab"
*�&� swh%=buffwind% � sih%=0 �="grab"
*�leaf$=leaf$(chosen%)
*�#type%=�filetype(dir$+"."+leaf$)
*�!obj%=�objtype(dir$+"."+leaf$)
*�� sel%>1 obj%=4
*�
Ȏ obj% �
*� � 0:spr$="tigx"
*� � 1:spr$=�file(type%,1)
*� � 2:spr$=�dir(leaf$,1)
*�, � 3:spr$="file_"+�~type%:� 'image' file
*� � 4:spr$="selection"
*� :spr$="file_xxx"
+�
+	=spr$
+:
+ ݤflags(spr$)
+*� f%
+4
Ȏ spr$ �
+>0 � "selection":f%=%01000101:� no drop shadow
+H :f%=%11000101
+R�
+\=f%
+f:
+p#��enddrag(q%,swh%,remb%,solid%)
+z%� reason code 7 from polling loop
+�'� q% contains final pos of drag box
+�4bminx%=q%!0:bminy%=q%!4:bmaxx%=q%!8:bmaxy%=q%!12
+�
Ȏ swh% �
+� � main%
+� Ȏ sih% �
+�7  � -1  :�select(bminy%,bmaxy%,remb%):� rubber band
+�@  :�drop(swh%,sih%,smb%):� Filer/App/Pinboard/Iconbar/Tiger
+� �
+�8 � copybox%,savebox%,buffwind%:�drop(swh%,sih%,smb%)
+� � messwind%
+�G  q%!0=swh%:q%!4=bminx%:q%!8=bminy%-40:q%!12=bmaxx%:q%!16=bmaxy%-40
+�D  q%!28=-1:ș "Wimp_OpenWindow",,q%:ș "Wimp_GetWindowState",,q%
+�5  ȗ ȓ q%!4+8,q%!8+8,q%!12-q%!4-16,q%!16-q%!8-16
,�
,�
,:
,$�-----------
,.�. SELECTION
,8�-----------
,B:
,L	ݤsel
,V� how many items selected?
,`� put items into array
,j� J%,n%:n%=0
,t� J%=1 � items%
,~& � �is(main%,J%) n%+=1:sel%(n%)=J%
,��
,�=n%
,�:
,�!��select(bminy%,bmaxy%,remb%)
,�&� bminy%>bmaxy% � Ȕ bminy%,bmaxy%
,�� rubber band dragged
,�-� which icons are in box? - get lo and hi
,�� J%
,�	ih%=1
,��
,�1 !q%=main%:q%!4=ih%:ș"Wimp_GetIconState",,q%
,�2 iminy%=q%!12:iminy%=�vay(main%,iminy%):ih%+=1
-� iminy%<bmaxy%
-
lo%=ih%-1:ih%-=1
-� lo%>items% lo%=items%
-�
-(1 !q%=main%:q%!4=ih%:È™"Wimp_GetIconState",,q%
-22 iminy%=q%!12:iminy%=�vay(main%,iminy%):ih%+=1
-<� iminy%<bminy%
-F
hi%=ih%-1
-P� hi%>items% hi%=items%
-Z� treat according to remb%
-d
� lo%>0 �
-n � J%=lo% � hi%
-x  Ȏ remb% �
-�   � 4:�si(main%,J%)
-�   � 1:�ti(main%,J%)
-�  �
-� �
-��
-��
-�:
-���selectall
-�
sel%=�sel
-�� sel%<items% �
-�$ � J%=1 � items%:�si(main%,J%):�
-��
-��
.:
.��clearall
.� J%=1 � items%
."" � �is(main%,J%) �ui(main%,J%)
.,�
.6�
.@:
.J�------
.T�. KEYS
.^�------
.h:
.r��keypress(q%)
.|)wh%=q%!0:ih%=q%!4:xo%=q%!8:chr%=q%!24
.�
Ȏ chr% �
.� �  30:� display%=1 �home
.� �  13:�return
.� �  27:�escape(wh%)
.� � 398:� display%=1 �down
.� � 399:� display%=1 �up
.� � 385:�viewer(dir$):� F1
.� � 386:�parent(dir$):� F2
.�& � 387:� display%=1 �savedata:� F3
.�# � 403:�ow(savebox%):� Shift F3
.� � 388:�test:� F4
.� � 389:�ow(buffwind%):� F5
.� � 392:�undo:� F8
/ � 393:�redo:� F9
/# � 394:�size:� Tab adjusts size
/   È™ "Wimp_ProcessKey",chr%
/&�
/0�
/::
/D��escape(wh%)
/N#esc%=�:� wh%=messwind% �cw(wh%)
/X�
/b:
/l
��test
/v� F4
/��
/�:
/��-------
/��. CARET
/��-------
/�:
/�
��home
/�� wh%=main% �
/�+ !C%=main%:ș "Wimp_GetWindowState",,C%
/�- C%!20=0:C%!24=0:ș "Wimp_OpenWindow",,C%
/� �caretx(wh%,79,0)
/��
/��
0:
0��return
0
ret%=�
0 Ȏ wh% �
0* � main%
04 � display%=1 �
0>  � ih%=156 �home:�
0H  � ih%=79+items%-1 �
0R  �scrolldown(wh%,ih%)
0\  �caretx(wh%,ih%+1,0)
0f �
0p � savebox%
0z+ � ih%=fnicon% �quicksave(wh%,ih%,&FFF)
0� � copybox%:�copy("",remb%)
0��
0��
0�:
0�
��down
0�� wh%=main% �
0� � ih%=156 �home:�
0� � ih%=79+items%-1 �
0� �scrolldown(wh%,ih%)
0� �caretx(wh%,ih%+1,xo%)
0��
0��
0�:
1��up
1� wh%=main% �
1 � ih%=78 �
1$ � ih%=79 � ih%=156 �home:�
1. �scrollup(wh%,ih%)
18 �caretx(wh%,ih%-1,xo%)
1B�
1L�
1V:
1`��scrolldown(wh%,ih%)
1j� scroll va up?
1t� w%,i%,n%
1~-� get extreme window edge relative to wao
1�?C%!0=wh%:ș "Wimp_GetWindowState",,C%:w%=C%!24-(C%!16-C%!8)
1�3� get extreme edge of next icon relative to wao
1�;C%!0=wh%:C%!4=ih%+1:ș "Wimp_GetIconState",,C%:i%=C%!12
1�
� i%<w% �
1�= n%=�(i%)-�(w%):� n%>44 n%=44:� align with edge of window
1�3 !C%=wh%:ș "Wimp_GetWindowState",,C%:C%!24-=n%
1�' ș "Wimp_OpenWindow",,C%:�("FX15")
1��
1��
1�:
1���scrollup(wh%,ih%)
1�� scroll va down?
2� w%,i%,n%
2
-� get extreme window edge relative to wao
22C%!0=wh%:È™ "Wimp_GetWindowState",,C%:w%=C%!24
23� get extreme edge of prev icon relative to wao
2(;C%!0=wh%:C%!4=ih%-1:È™ "Wimp_GetIconState",,C%:i%=C%!20
22
� i%>w% �
2<= n%=�(w%)-�(i%):� n%>44 n%=44:� align with edge of window
2F5 !C%=main%:È™ "Wimp_GetWindowState",,C%:C%!24+=n%
2P' ș "Wimp_OpenWindow",,C%:�("FX15")
2Z�
2d�
2n:
2x��iconscroll
2�)� horizontal scroll of writable icons
2�2ș "Wimp_GetCaretPosition",,C%:� C%!0<>main% �
2�newi%=C%!4:newp%=C%!20
2�(� get window edges as chrs into icon
2�+C%!0=main%:ș "Wimp_GetWindowState",,C%
2�wl%=(C%!20-228)�16
2�#wr%=(C%!20+(C%!12-C%!4)-228)�16
2�#� newp%>oldp% � newp%>(wr%-1) �
2�- ș "Wimp_GetCaretPosition",,C%:ix%=C%!20
2�+ !C%=main%:ș "Wimp_GetWindowState",,C%
2�3 C%!20+=(ix%-oldp%)*16:ș "Wimp_OpenWindow",,C%
2��
2�/� newp%<oldp% � (newp%<(wl%+1) � newp%=0) �
3- È™ "Wimp_GetCaretPosition",,C%:ix%=C%!20
3+ !C%=main%:È™ "Wimp_GetWindowState",,C%
3, � ix%=0 C%!20=0 � C%!20-=(oldp%-ix%)*16
3" È™ "Wimp_OpenWindow",,C%
3,�
36oldi%=newi%:oldp%=newp%
3@�
3J:
3T��caret(wh%,ih%)
3^� s$:s$=�it(wh%,ih%)
3h/ș "Wimp_SetCaretPosition",wh%,ih%,,,-1,�s$
3r�
3|:
3���caretx(wh%,ih%,xo%)
3�1ș "Wimp_SetCaretPosition",wh%,ih%,xo%,,-1,-1
3��
3�:
3��-------
3��. MOUSE
3��-------
3�:
3���mouse(q%)
3�� m$,mx%,my%,mb%,wh%,ih%
3�<mx%=q%!0:my%=q%!4:mb%=q%!8:wh%=q%!12:ih%=q%!16:icon%=ih%
3�
remb%=mb%
3�&� mb% � 2 �menu(wh%,ih%,mx%,my%):�
4Ȏ wh% �
4 �-2:� icon bar
4 � ih%=baricon% �
4&  Ȏ mb% �
40(   � 1:ș "Wimp_SetCaretPosition",-1
4:    � Adj removes input focus
4D   � 4:
4N   � pristine% �
4XE    ans%=�msg("Drag object from Filer window to Tiger icon","OK")
4b   �
4l    �ow(main%)
4v    � � �focus(main%) �
4�     �caretx(main%,156,0)
4�4     � display%=1 � items%>0 �caretx(main%,79,0)
4�	    �
4�   �
4�  �
4� �
4� :
4� � main%
4� � ih%=-1 �
4�  Ȏ mb% �
4�%   � 4:�clearall:� click with Sel
4�(   � 16,64:�startdrag(wh%,ih%,mb%,�)
4�  �
5 �
5 � ih%=0 �
5'  � �-1 �root(dir$) � �parent(dir$)
5  �
5* � ih%>0 � ih%<=items% �
54  chosen%=ih%
5>  Ȏ mb% �
5H"   � 1,4:�doubleclick(mb%,ih%)
5R-   � 16,64:�startdrag(wh%,ih%,mb%,solid%)
5\!   � 256,1024:�click(mb%,ih%)
5f  �
5p �
5z � ih%>78 � ih%<79+items% �
5�  Ȏ mb% �
5�   � 1,4
5�3    �scrolldown(wh%,ih%-1):�scrollup(wh%,ih%+1)
5�(   � 16,64:�startdrag(wh%,ih%,mb%,�)
5�  �
5� �
5� :
5� � savebox%
5�
 Ȏ ih% �
5�  � dragicon%
5�   Ȏ mb% �
5�.    � 16,64:�startdrag(wh%,ih%,mb%,solid%)
5�   �
6(  � okicon%:�quicksave(wh%,ih%,&FFF)
6"  � mb%<>1 �cw(wh%):�closemenu
6#  � clicon%:�cw(wh%):�closemenu
6$.  � 13:� mb%=1 � � �is(wh%,13):�si(wh%,13)
6..  � 14:� mb%=1 � � �is(wh%,14):�si(wh%,14)
68.  � 15:� mb%=1 � � �is(wh%,15):�si(wh%,15)
6B �
6L :
6V � copybox%
6`
 Ȏ ih% �
6j  � dragicon%
6t   Ȏ mb% �
6~.    � 16,64:�startdrag(wh%,ih%,mb%,solid%)
6�   �
6�  � okicon%:�copy("",remb%)
6�  � clicon%:�closemenu
6� �
6� :
6� � choicewind%
6�
 Ȏ ih% �
6�3  � 2:�setdefaults:� mb%<>1 �cw(wh%):�closemenu
6�  � 3:�cw(wh%):�closemenu
6�3  � 4:�savechoices:� mb%<>1 �cw(wh%):�closemenu
6�2  � 5:�setchoices:� mb%<>1 �cw(wh%):�closemenu
6�3  �12:� � �is(wh%,12) � �is(wh%,13) �ui(wh%,13)
73  �13:� �is(wh%,13) � � �is(wh%,12) �ui(wh%,13)
7
 �
7 :
7 � accesswind%
7( � ih%=0 �
72  � mb%=1 stay%=� � stay%=�
7<$  �access(2):� mb%<>1 �closemenu
7F �
7P :
7Z � messwind%:reply%=ih%
7d
 Ȏ mb% �
7n'  � 16,64:�startdrag(wh%,ih%,mb%,�)
7x �
7� :
7� � buffwind%
7�
 Ȏ ih% �
7�5  � 0:� mb%=16 � mb%=64 �startdrag(wh%,ih%,mb%,�)
7�/  ș "Wimp_GetCaretPosition",,C%:pos%=C%!20
7�0  � 1:� �is(wh%,1) textflag%=� � textflag%=�
7�  � 2:�puttext
7�+  � 3:� mb%=1 � � �is(wh%,3):�si(wh%,3)
7�+  � 4:� mb%=1 � � �is(wh%,4):�si(wh%,4)
7�%  � 5:�it(wh%,0,""):�caret(wh%,0)
7� �
7��
7��
8:
8��click(mb%,ih%)
8Ȏ mb% �
8" � 1024:� Sel
8,0 � � �is(main%,ih%) �clearall:�si(main%,ih%)
86 � 256:�ti(main%,ih%):� Adj
8@�
8J�
8T:
8^�------
8h�. MENU
8r�------
8|:
8���menu(wh%,ih%,mx%,my%)
8�� middle button clicked
8�Ȏ wh% �
8� � main%
8�+ ș "Wimp_GetPointerInfo",,q%:ih%=q%!16
8�0 chosen%=0:� ih%>0 � ih%<=items% chosen%=ih%
8�' sel%=�sel:� sel%=1 chosen%=sel%(1)
8� �mainmenu(mx%,my%,chosen%)
8� � -2:�barmenu(mx%,my%)
8��
8��
8�:
8���mainmenu(mx%,my%,chosen%)
9/� J%,f%,b%,g%,n$,n2$,n3$,wid%,wh%,ih%,name$
9)remx%=mx%:remy%=my%:present%=�:n3$=""
9-name$="":n$="File ''":obj%=1:$newname%=""
9&� chosen% �
90 name$=leaf$(chosen%)
9: � is obj in Filer?
9D+ present%=�checkobj(dir$+"."+name$,�)=�
9N" obj%=�objtype(dir$+"."+name$)
9X�
9b:
9l
sel%=�sel
9v� sel%=1 � chosen% �
9� n2$="File ":n3$="File"
9�) � obj%=2 n2$="Dir. ":n3$="Directory"
9�; � obj%=2 � �name$,1)="!" n2$="App. ":n3$="Application"
9� n$=n2$+"'"+name$+"'"
9��
9�+� sel%>1 n$="Selection":n3$=n$:name$=n$
9�:
9�G$mi0%="Display":$mi1%=n$:$mi2%="Select all":$mi3%="Clear selection"
9�A$mi4%="Options":$mi5%="New directory":$mi6%="Open filer   F1"
9�3$mi7%="Goto parent  F2":$mi8%="Save data    F3"
9�;$mi9%="Save text   "+�139+"F3":$mi10%="Open buffer  F5"
9�=$mi11%="Undo changes F8":� redo% $mi11%="Redo changes F9"
9�:
:'wid%=(�n$+1)*16:� wid%<256 wid%=256
:,a%=mb1%:!a%=main%:p%=a%+32:$(a%+4)=task$
:,a%!16=&70207:a%!20=wid%:a%!24=44:a%!28=0
: ;b%=&7000121:g%=&7400121:� flags=black,grey (indirected)
:*:
:4@p%!0=0:p%!4=mb4%:p%!8=b%:p%!12=mi0%:p%!16=-1:p%!20=16:p%+=24
:>)� name$="" � � present% f%=g% � f%=b%
:H@p%!0=0:p%!4=mb2%:p%!8=f%:p%!12=mi1%:p%!16=-1:p%!20=16:p%+=24
:R� items%=0 f%=g% � f%=b%
:\=p%!0=0:p%!4=0:p%!8=f%:p%!12=mi2%:p%!16=-1:p%!20=16:p%+=24
:f� sel%=0 f%=g% � f%=b%
:p=p%!0=0:p%!4=0:p%!8=f%:p%!12=mi3%:p%!16=-1:p%!20=16:p%+=24
:z@p%!0=0:p%!4=mb6%:p%!8=b%:p%!12=mi4%:p%!16=-1:p%!20=16:p%+=24
:�Ap%!0=10:p%!4=mb3%:p%!8=b%:p%!12=mi5%:p%!16=-1:p%!20=16:p%+=24
:�=p%!0=0:p%!4=0:p%!8=b%:p%!12=mi6%:p%!16=-1:p%!20=16:p%+=24
:�!� �isroot(dir$) f%=g% � f%=b%
:�=p%!0=0:p%!4=0:p%!8=f%:p%!12=mi7%:p%!16=-1:p%!20=16:p%+=24
:�)� display%=1 � items%>0 f%=b% � f%=g%
:�=p%!0=0:p%!4=0:p%!8=f%:p%!12=mi8%:p%!16=-1:p%!20=16:p%+=24
:�� items%>0 f%=b% � f%=g%
:�Dp%!0=8:p%!4=savebox%:p%!8=f%:p%!12=mi9%:p%!16=-1:p%!20=16:p%+=24
:�>p%!0=8:p%!4=0:p%!8=f%:p%!12=mi10%:p%!16=-1:p%!20=16:p%+=24
:�!� undo% � redo% f%=b% � f%=g%
:�9p%!0=&80:p%!4=0:p%!8=f%:p%!12=mi11%:p%!16=-1:p%!20=16
:�:
:�.b%=&7000021:g%=&7400021:� flags=black,grey
;"a%=mb2%:p%=a%+28:$a%=n3$:f%=b%
;+a%!12=&70207:a%!16=168:a%!20=44:a%!24=0
;.� sel%>1 � name$="TigerData" f%=g% � f%=b%
;$=s$="Copy":p%!0=8:p%!4=copybox%:p%!8=f%:$(p%+12)=s$:p%+=24
;..� name$="TigerData" � sel%>1 f%=g% � f%=b%
;8;s$="Rename":p%!0=8:p%!4=mb3%:p%!8=f%:$(p%+12)=s$:p%+=24
;B%� name$="TigerData" f%=g% � f%=b%
;L8s$="Delete":p%!0=0:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
;V;s$="Access":p%!0=8:p%!4=mb5%:p%!8=b%:$(p%+12)=s$:p%+=24
;`7s$="Count":p%!0=0:p%!4=0:p%!8=b%:$(p%+12)=s$:p%+=24
;j%� �help(name$,obj%) f%=b% � f%=g%
;t6s$="Help":p%!0=0:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
;~� sel%>1 f%=g% � f%=b%
;�=s$="Info":p%!0=8:p%!4=objinfo%:p%!8=f%:$(p%+12)=s$:p%+=24
;�9s$="Find":p%!0=8:p%!4=mb3%:p%!8=b%:$(p%+12)=s$:p%+=24
;�%� name$="TigerData" f%=g% � f%=b%
;�=s$="Set type":p%!0=8:p%!4=mb3%:p%!8=f%:$(p%+12)=s$:p%+=24
;�7s$="Stamp":p%!0=0:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
;�/� name$="!TigerData" � obj%=2 v%=0 � v%=&80
;�� obj%=1 f%=g% � f%=b%
;�=s$="Open filer":p%!0=v%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
;�;� v%=0 s$="Convert":p%!0=&80:p%!4=0:p%!8=b%:$(p%+12)=s$
;�:
;�6a%=mb4%:p%=a%+28:$a%="Display":f%=b%:wid%=12*16+12
;�,a%!12=&70207:a%!16=wid%:a%!20=44:a%!24=0
<� display%=1 t%=1 � t%=0
<
?s$="Descriptions":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
<� display%=2 t%=1 � t%=0
<>s$="Object info":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
<(� display%=3 t%=1 � t%=0
<2;s$="Nested size":p%!0=&80+t%:p%!4=0:p%!8=f%:$(p%+12)=s$
<<:
<F5a%=mb6%:p%=a%+28:$a%="Options":f%=b%:wid%=7*16+12
<P,a%!12=&70207:a%!16=wid%:a%!20=44:a%!24=0
<Zopts%=�readopts
<dt%=(opts% � 2) � 2
<n:s$="Confirm":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
<xt%=(opts% � 1)
<�:s$="Verbose":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
<�t%=(opts% � 4) � 4
<�8s$="Force":p%!0=t%:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
<�t%=(opts% � 8) � 8
<�5s$="Newer":p%!0=&80+t%:p%!4=0:p%!8=f%:$(p%+12)=s$
<�-ș "Wimp_CreateMenu",,mb1%+4,mx%-64,my%+4
<��
<�:
<�ݤhelp(name$,obj%)
<�� obj%=2 � �name$,1)="!" �
<�2 � �checkobj(dir$+"."+name$+"."+"!Help",�) �=�
<��
<�=�
=:
=��submenu(q%)
=-� sub%,x%,y%:sub%=q%!20:x%=q%!24:y%=q%!28
="
Ȏ sub% �
=, � mb3%:�namemenu
=6 � mb5%:�accessmenu(�,1)
=@ � savebox%:�prepsavebox
=J � objinfo%:�prepobjinfo
=T � copybox%:�prepcopybox
=^" � choicewind%:�prepchoicewind
=h�
=r'È™ "Wimp_CreateSubMenu",,sub%,x%,y%
=|�
=�:
=���namemenu
=�&� J%,x%,y%,item%,name$,type%,type$
=�item0%=q%!32:item1%=q%!36
=�"a%=mb3%:p%=a%+28:wid%=12*16+16
=�name$=leaf$(chosen%)
=�oldname$=name$
=�Ȏ item1% �
=� �-1:� item0%=5 $a%="Name:"
=�$ � 1:$a%="Name:":$newname%=name$
=� � 7:$a%="Find file:"
=� � 8
=� sel%=�sel
># � sel%>1 name$=$name%(sel%(1))
>" obj%=�objtype(dir$+"."+name$)
> � obj%=1 �
>&%  type%=�filetype(dir$+"."+name$)
>0(  type$=�strip(�filetypename(type%))
>: �
>D  type$=""
>N �
>X# $a%="Set type":$newname%=type$
>b�
>l7a%!12=&70207:a%!16=176:a%!20=44:a%!24=0:f%=&7000121
>vBp%!0=&84:p%!4=0:p%!8=f%:p%!12=newname%:p%!16=valname%:p%!20=11
>��
>�:
>���barmenu(mx%,my%)
>�9� f%,b%,g%:b%=&7000021:g%=&7400021:� flags=black,grey
>�remx%=mx%:remy%=my%:i%=0
>�/a%=mb1%:!a%=baricon%:p%=a%+32:$(a%+4)=task$
>�+a%!16=&70207:a%!20=128:a%!24=44:a%!28=0
>�@s$="Info":p%!0=0:p%!4=info%:p%!8=b%:$(p%+12)=s$:p%+=24:i%+=1
>�� pristine% f%=g% � f%=b%
>�Is$="Choices":p%!0=8:p%!4=choicewind%:p%!8=f%:$(p%+12)=s$:p%+=24:i%+=1
>�7s$="Quit":p%!0=&80:p%!4=0:p%!8=b%:$(p%+12)=s$:i%+=1
>�0ș "Wimp_CreateMenu",,mb1%+4,mx%-64,96+i%*44
>��
?:
?��closemenu
?È™ "Wimp_CreateMenu",,-1
? �
?*:
?4��menuselect(q%)
?>%� click on menu from polling loop
?H4level0%=q%!0:level1%=q%!4:level2%=q%!8:wh%=!mb1%
?R-È™ "Wimp_GetPointerInfo",,q%:stay%=q%!8=1
?\Ȏ wh% �
?f � main%:�mainchoice
?p  :�barchoice
?z�
?��
?�:
?���mainchoice
?�� click on main menu
?�Ȏ level0% �
?�	 � 0:
?� Ȏ level1% �
?�  � -1:�refresh
?�  �  0:display%=1:�refresh
?�  �  1:display%=2:�refresh
?�  �  2:display%=3:�refresh
?� �
?�	 � 1:
@ Ȏ level1% �
@  � 0:� Copy (drag/click)
@	  � 1
@$.  � level2%>=0 �rename(oldname$,$newname%)
@.  � 2:�delete
@8!  � 3:� level2%>=0 �access(1)
@B  � 4:�count
@L  � 5:�help
@V  � 6:� Info
@`'  � 7:� level2%>=0 �find($newname%)
@j  � 8:� level2%>=0 �settype
@t  � 9:�stamp
@~6  �10:�("Filer_OpenDir "+dir$+"."+$name%(chosen%))
@�  �11:�convert
@� �
@� � 2:�selectall
@� � 3:�clearall
@� � 4
@� Ȏ level1% �
@�  � 0:opts%=opts% � 2
@�  � 1:opts%=opts% � 1
@�  � 2:opts%=opts% � 4
@�  � 3:opts%=opts% � 8
@� �
@�
 �setopts
A' � 5:� level1%=0 �newdir($newname%)
A
 � 6:�viewer(dir$)
A � 7:�parent(dir$)
A � 8:�savedata
A(. � 9:�prepsavebox:�ow(savebox%):�closemenu
A2$        �caret(savebox%,fnicon%)
A< �10:�ow(buffwind%)
AF& �11:� undo% �undo � � redo% �redo
AP�
AZ*� stay% �mainmenu(remx%,remy%,chosen%)
Ad�
An:
Ax��newdir(d$)
A��("CDir "+dir$+"."+d$)
A��
A�:
A���barchoice
A�Ȏ level0% �
A�) � 1:�prepchoicewind:�ow(choicewind%)
A� � 2:quit%=�quit
A��
A�!� stay% �barmenu(remx%,remy%)
A��
A�:
A��------
A��. LOAD
B�------
B:
B��dataload(q%)
B"� wh%:wh%=q%!20
B,� send DataLoadAck
B6?q%!12=q%!8:q%!16=4:q%!0=64:È™ "Wimp_SendMessage",17,q%,q%!4
B@)z%+=1:� z%>1 �:� don't want selection
BJApath$=�name(q%+44):type%=q%!40:dir%=type%=&1000 � type%=&2000
BT2� wh%=buffwind% �dragfiletobuff(path$,type%):�
B^� �promptsave �
Bh" � sender%=task% � wh%=main% �
Br!  �copy(�parent(path$),remb%)
B| �
B�4 � (sender%=task% � wh%=-2) � (sender%<>task%) �
B�5  � �-1 � dir% � dir$=path$ � dir$=�parent(path$)
B�8  windowstate%=1:� pristine% windowstate%=2:� centre
B�  pristine%=�
B�  �showTiger(windowstate%)
B� �
B��
B��
B�:
B���showTiger(windowstate%)
B�� �
B�'� � � ans%=�localerror(dir$,�$,�):�
B��cw(main%)
CÈ™ "Hourglass_On"
C�readfiles(dir$,display%,1)
C�nostar
C&.�it(savebox%,fnicon%,dir$+"."+"TigerText")
C0.� display%=2 extent%=1120 � extent%=width%
C:0�setextent(main%,-((items%+1)*44)-8,extent%)
CD�setbuttontypes(items%)
CNȎ windowstate% �
CX
 � 0:�
Cb � 1:�ow(main%)
Cl  � 2:�owc(main%):� in centre
Cv�
C��caretx(main%,156,0)
C�/� display%=1 � items%>0 �caretx(main%,79,0)
C�ș "Hourglass_Smash"
C��
C�:
C�ݤloadTigerData(fsp$)
C�,� loads TigerData file into memory at A%
C�$� places name and desc in arrays
C�*� returns number of items in TigerData
C�:
C�%� J%,s$,filelen%,ok%,s%,descs%,p%
C�/� get length of file and increase slot size
C�&ș "OS_File",5,fsp$ � ,,,,filelen%
D+ok%=�setslotsize(remslotsize%+filelen%)
D=� � ok% ans%=�msg("No memory to load TigerData","Cancel")
D� filelen%=0 � � ok% �
D 
 descs%=0
D*�
D4" � load file into memory at A%
D> È™ "OS_File",&FF,fsp$,A%,0
DH � get data into arrays
DR name$()="":desc$()=""
D\ J%=1:p%=A%
Df �
Dp  s$=�name(p%):s%=�s$," ")
Dz  name$(J%)=�s$,s%-1)
D�  desc$(J%)=�s$,�s$-s%)
D�  J%+=1:p%+=�s$+1
D� � p%>=A%+filelen%
D� descs%=J%-1
D� � restore slot size
D�) slotsize%=�setslotsize(remslotsize%)
D��
D�=descs%
D�:
D���writeTigerData(descs%)
D�7� takes data from arrays and creates TigerData file
D�� J%
D�)F%=�(fsp$):�("SetType "+fsp$+" &4FF")
E� J%=1 � descs%
E1 � name$(J%)<>"" �#F%,name$(J%)+" "+desc$(J%)
E�
E$� #F%:F%=0
E.�
E8:
EBݤdirdesc(dir$)
EL4� look for description of this dir in its parent
EV � is there a TigerData file?
E`� leaf$,fsp$,desc$
Ejleaf$=�leaf(dir$)
Et%� leaf$="$" �=" (root directory)"
E~*� leaf$="&" �=" (user root directory)"
E�#fsp$=�parent(dir$)+".TigerData"
E�desc$=""
E�ș "OS_File",5,fsp$ � o%
E�� o%=1 �
E�  descs%=�loadTigerData(fsp$)
E� desc$=�desc(leaf$,descs%)
E��
E�!� desc$<>"" desc$=" - "+desc$
E�
=desc$
E�:
E�ݤdesc(leaf$,descs%)
E�-� search arrays for description for leaf$
F� J%,desc$:desc$=""
F
� J%=1 � descs%
F0 � name$(J%)=leaf$ desc$=desc$(J%):J%=descs%
F�
F(
=desc$
F2:
F<��readfiles(d$,display%,n%)
FF<� J%,more%,next%,max%,tot%,s$,f$,fl%,f%,name$,type%,obj%
FP:
FZ� n%=1 �
Fd �sis(main%,0,&1B003135)
Fn% name$=�strip(�leaf(�parent(d$)))
Fx% name$=�139+�11-�name$," ")+name$
F� � �isroot(d$) name$=""
F�$ $name%(0)=name$:$val%(0)="R5,2"
F�2 fl%=&07000131:� make descr icons non-writable
F�5 �sis(main%,156,&BB00E134):� can gain input focus
F��
F�:
F�s$=�leaf(d$)
F�Ȏ display% �
F�2 � 1:s$+=�dirdesc(d$):fl%=&0700E131:� writable
F�$ � 2:s$+=" - object information"
F�+ � 3:s$+=" - nested size: total bytes="
F��
F�$desc%(0)=s$
G:
G � is there a TigerData file?
Gfsp$=dir$+".TigerData"
G"%ș "OS_File",5,fsp$ � o%:descs%=0
G,&� o%=1 descs%=�loadTigerData(fsp$)
G6:
G@)J%=1:next%=0:max%=0:tot%=0:undo$()=""
GJ�
GT; ș "OS_GBPB",10,d$,q%,1,next%,100,"*" � ,,,more%,next%
G^ � more% �
Gh  name$=�name(q%+20)
Gr#  type%=�filetype(d$+"."+name$)
G|  obj%=q%!16
G�  leaf$(J%)=name$
G�+  $name%(J%)=�name$,10)+�10-�name$," ")
G�  :
G�  � n%=1 �
G�   � IconSprites% �
G�"    � obj%=2 � �name$,1)="!" �
G�$     � is there a !Sprites file?
G�$     f$=d$+"."+name$+".!Sprites"
G�     ș "OS_File",5,f$ � o%
G�$     � o%=1 �("IconSprites "+f$)
G�	    �
G�   �
G�   hs%=�
H   Ȏ obj% �
H     � 1,3:ft$=�file(type%,0)
H    � 2:ft$=�dir(name$,0)
H&    :ft$="small_xxx"
H0   �
H:(   � hs% f%=&1700AB3B � f%=&1700A33B
HD.   �sis(main%,J%,f%):�sis(main%,J%+78,fl%)
HN   $val%(J%)="S"+ft$
HX  �
Hb  :
Hl  Ȏ display% �
Hv   � 1:
H�    s$=�desc(name$,descs%)
H�&    � name$="TigerData" s$=tigstr$
H�"    $desc%(J%)=s$:undo$(J%)=s$
H�   � 2:
H�$    o%=�getobjinfo(d$+"."+name$)
H�
    s$=""
H�!    s$+=type$+�13-�type$," ")
H�&    s$+=�9-�filelen$," ")+filelen$
H�)    s$+="  "+access$+�6-�access$," ")
H�!    s$+="  "+date$+"  "+time$
H�"    $desc%(J%)=s$:undo$(J%)=s$
H�   � 3:
H�     recursing%=�:counting%=�
I*    ș "OS_Byte",229,0,0 :� enable Esc
I8    ș "OS_FSControl",28,d$+"."+name$,0,1 � ,,bytes%
I>    len%(J%)=bytes%:tot%+=bytes%:� bytes%>max% max%=bytes%
I +    ș "OS_Byte",229,1,0 :� disable Esc
I*     recursing%=�:counting%=�
I4  �
I>  J%+=1
IH �
IR� next%=-1
I\items%=J%-1
If:
Ip� display%=3 �
Iz $desc%(0)+=�tot%
I� � max%>0 �
I�  � J%=1 � items%
I�   c%=len%(J%)/max%*84
I�   sp%=�(�max%)
I�#   s$=��sp%," ")+�len%(J%),sp%)
I�   s$+=" "+�c%,"+")
I�!   $desc%(J%)=s$:undo$(J%)=s$
I�  �
I� �
I��
I�:
I�� n%=1 �
I�B � items%>0 �sis(main%,156,&BB006134):� can't gain input focus
J@ � set flags for top line - only writable if too long to see
J; � �($desc%(0))>columns%-17 f%=&1B00E131 � f%=&1B000131
J �sis(main%,78,f%)
J$�
J.�
J8:
JBݤfile(type%,size%)
JL� sprite name for file type
JV&� size%=0 is small, 1 is full size
J`4� hs% is TRUE if needs to be displayed half size
Jj� f$,f%
Jt	hs%=�
J~Ȏ size% �
J� � 0:f$="small_"+�~type%
J� � 1:f$="file_"+�~type%
J��
J�$ș "XWimp_SpriteOp",24,,f$ � ;f%
J�� (f% � 1)=0 �=f$
J�� size%=1 �="file_xxx"
J�f$="file_"+�~type%
J�$ș "XWimp_SpriteOp",24,,f$ � ;f%
J�� (f% � 1)=0 hs%=�:=f$
J�="small_xxx"
J�:
J�ݤdir(name$,size%)
K� sprite name for dir
K
&� size%=0 is small, 1 is full size
K4� hs% is TRUE if needs to be displayed half size
K� f$,f%
K(	hs%=�
K2� �name$,1)<>"!" �
K< Ȏ size% �
KF  � 0:="small_dir"
KP  � 1:="directory"
KZ �
Kd�
Kn� it's an App
KxȎ size% �
K� � 0:f$="sm"+name$
K� � 1:f$=name$
K��
K�$ș "XWimp_SpriteOp",24,,f$ � ;f%
K�� (f% � 1)=0 �=f$
K�f$=name$
K�� size%=0 �
K�% ș "XWimp_SpriteOp",24,,f$ � ;f%
K� � (f% � 1)=0 hs%=�:=f$
K��
K�Ȏ size% �
K� � 0:="small_app"
K� � 1:="application"
L�
L=""
L:
L"��setbuttontypes(items%)
L,� f1%,f2%,f3%
L6+f1%=&11000000:� background,non-writable
L@*� display%=1  f2%=&0700E131:� writable
LJ.� display%<>1 f2%=&07000131:� non-writable
LTȎ items% �
L^1 � 0   :�sis(main%,01,f1%):�sis(main%,02,f1%)
Lh4           �sis(main%,79,f1%):�sis(main%,80,f1%)
Lr1 � 1   :�sis(main%,02,f1%):�sis(main%,79,f2%)
L|!           �sis(main%,80,f1%)
L�, :�sis(main%,79,f2%):�sis(main%,80,f2%)
L��
L��
L�:
L��---------
L��. EXECUTE
L��---------
L�:
L���doubleclick(mb%,ih%)
L�!� name$,obj%:� job$ is global
L�
� ih%<0 �
L��ui(main%,ih%)
L�name$=leaf$(chosen%)
M� is obj in Filer?
M%� � �checkobj(dir$+"."+name$,�) �
M%� mb%=1 � mb%=16 �cw(main%):� Adj
M&job$=dir$+"."+name$
M0obj%=�objtype(job$)
M:
Ȏ obj% �
MD � 1,3:� File,Image
MN  filetype%=�filetype(job$)
MX  �run(job$,obj%)
Mb � 2:� Dir
Ml  � �name$,1)="!" �
Mv   � �-1 �
M�    �subdir(dir$,name$)
M�   �
M�    �run(job$,obj%)
M�   �
M�  �
M�   �subdir(dir$,name$)
M�  �
M��
M��
M�:
M���run(job$,obj%)
M�� filetype%
M�� obj%=0 �
N
Ȏ obj% �
N � 1,3:� File,Image
N  filetype%=�filetype(job$)
N   q%!0=(48+�job$) � � 3
N*   q%!12=0:q%!16=5:� DataOpen
N4%  q%!20=0:q%!28=0:q%!32=0:q%!36=0
N>&  q%!40=filetype%:$(q%+44)=job$+�0
NH-  � broadcast message - sent to all tasks
NR"  È™"Wimp_SendMessage",18,q%,0
N\ � 2:� App
Nf%  È™ "Wimp_StartTask","Run "+job$
Np �
Nz�
N��
N�:
N���subdir(� dir$,name$)
N�� name$="!TigerData" �
N�rem$=dir$+"."+name$
N�� �promptsave �
N� dir$=rem$:�showTiger(1)
N��
N��
N�:
N�
��refresh
N�� J%
N�� refresh Tiger display
O� �checkobj(dir$,�) �
O  � �promptsave �showTiger(1)
O�
O$3 � star% � J%=1 � items%:$desc%(J%)=undo$(J%):�
O. �nostar:�cw(main%):�
O8�
OB�cw(savebox%)
OL�
OV:
O`��undo:� F8
Oj� J%,wh%,ih%:� � undo% �
Ot� J%=1 � items%
O~ redo$(J%)=$desc%(J%)
O� $desc%(J%)=undo$(J%)
O��
O�-C%!0=main%:ș "Wimp_GetWindowOutline",,C%
O�2ș "Wimp_ForceRedraw",-1,C%!4,C%!8,C%!12,C%!16
O�"ș "Wimp_GetCaretPosition",,C%
O�wh%=C%!0:ih%=C%!4
O�+� wh%=main% � ih%>78 �caretx(wh%,ih%,0)
O��nostar:redo%=�:undo%=�
O��
O�:
O���redo:� F9
O�� J%,wh%,ih%:� � redo% �
P� J%=1 � items%
P
 undo$(J%)=$desc%(J%)
P $desc%(J%)=redo$(J%)
P�
P(-C%!0=main%:È™ "Wimp_GetWindowOutline",,C%
P22È™ "Wimp_ForceRedraw",-1,C%!4,C%!8,C%!12,C%!16
P<"È™ "Wimp_GetCaretPosition",,C%
PFwh%=C%!0:ih%=C%!4
PP+� wh%=main% � ih%>78 �caretx(wh%,ih%,0)
PZ�star:undo%=�:redo%=�
Pd�
Pn:
Px��parent(� dir$)
P�� J%,parent$
P�parent$=�parent(dir$)
P�� �isroot(dir$) �
P�� �checkobj(parent$,�) �
P�- � �promptsave dir$=parent$:�showTiger(1)
P��
P�3 � star% � J%=1 � items%:$desc%(J%)=undo$(J%):�
P� �nostar:�cw(main%):�
P��
P��
P�:
P���root(fsp$)
P�� �isroot(fsp$) �
Q"dir$=�root(fsp$):�showTiger(1)
Q�
Q:
Q"ݤisroot(path$)
Q,� leaf$
Q6leaf$=�leaf(path$)
Q@=leaf$="$" � leaf$="&"
QJ:
QTݤroot(fsp$)
Q^� i%
Qhi%=�fsp$,"$")
Qr� i%>0 �=�fsp$,i%)
Q|=""
Q�:
Q���viewer(dir$)
Q�2� �checkobj(dir$,�) � �("Filer_OpenDir "+dir$)
Q��
Q�:
Q��------------
Q��. CHECK-SAVE
Q��------------
Q�:
Q�
ݤquit
Q�
esc%=�
Q�/� �promptsave � �("Unset Tiger$Running"):=�
Q�=�
R:
R
ݤchanged
R� J%,ch%:J%=1:ch%=�
R&�
R0" � $desc%(J%)<>undo$(J%) ch%=�
R:
 J%+=1
RD� J%>items% � ch%
RN=ch%
RX:
Rbݤpromptsave
Rl� � star% �=�
Rv � � promptsave% �savedata:=�
R�@ans%=�msg("Save edited descriptions?","Discard,Cancel,Save")
R�� ans%=1 �=�
R�� ans%=3 �savedata:=�
R�=�:� Cancel operation
R�:
R��-----------
R��. SAVE DATA
R��-----------
R�:
R���savedata
R�
� J%,fsp$
R�� � �checkobj(dir$,�) � �
R�ș "Hourglass_On"
Sfsp$=dir$+".TigerData"
SF%=�(fsp$)
S�("SetType "+fsp$+" &4FF")
S � J%=1 � items%
S* name$=leaf$(J%)
S4> desc$=�it(main%,J%+78):olddesc$=undo$(J%):undo$(J%)=desc$
S>: � desc$<>"" � name$<>"TigerData" �#F%,name$+" "+desc$
SH�
SR� #F%:F%=0
S\�nostar
Sfș "Hourglass_Smash":�beep
Sp�
Sz:
S��--------------
S��. CONVERT DATA
S��--------------
S�:
S�
��convert
S�+� transfer descriptions from !TigerData
S�%� and merge with any in TigerData
S�-� optionally delete !TigerData afterwards
S�� J%,d$,name$
S� :
S�&� does dir$ have a TigerData file?
S�+� If so place in memory and load arrays
S�descs%=0
T1d$=dir$+".TigerData":present%=�checkobj(d$,�)
T(� present% descs%=�loadTigerData(d$)
T:
T$� read files in Data dir
T.d$=dir$+".!TigerData.Data"
T8+present%=�checkobj(d$,�):� � present% �
TBÈ™ "Hourglass_On"
TLnext%=0
TV�
T`; ș "OS_GBPB",10,d$,q%,1,next%,100,"*" � ,,,more%,next%
Tj � more% �
Tt  name$=�name(q%+20)
T~#  type%=�filetype(d$+"."+name$)
T�  � type%=&2FF �
T�,   � extract name,desc and add to arrays
T�   F%=�(d$+"."+name$)
T�   found%=�
T�   � J%=1 � descs%
T�,    � name$(J%)=name$ found%=�:J%=descs%
T�   �
T�   � � found% �
T�    descs%+=1
T�.    name$(descs%)=name$:desc$(descs%)=�#F%
T�   �
T�   � #F%:F%=0
U  �
U
 �
U� next%=-1
U�writeTigerData(descs%)
U(:
U2Mans%=�msg("!TigerData is now redundant,OK to delete it?","Retain,Delete")
U<� ans%=2 �
UF � delete !TigerData
UP È™ "Hourglass_On"
UZ. FilerAction%=�fileraction:opts%=�readopts
Ud � FilerAction% �
Un'  ș &400DE,"Filer_Action" � taskh%
Ux �
U�3  $C%="Delete files":ș "Wimp_CommandWindow",C%
U� �
U� s$=dir$+".!TigerData"
U� �wipe(s$,FilerAction%)
U� � FilerAction% �
U�  ș &40F82,taskh%,2,opts%
U� �
U�  ș "Wimp_CommandWindow",0
U� �
U��
U�:
U��showTiger(1)
U�
�savedata
VÈ™ "Hourglass_Smash"
V�
V:
V"�-----------
V,�. SAVE TEXT
V6�-----------
V@:
VJ��prepsavebox
VT� J%,wh%:wh%=savebox%
V^(� J%=5 � 10:�sis(wh%,J%,&1720B133):�
VhȎ display% �
Vr" � 1:�it(wh%,10,"Description")
V|" � 2:�it(wh%,10,"Object info")
V�*  � J%=5 � 10:�sis(wh%,J%,&1760B133):�
V�" � 3:�it(wh%,10,"Nested size")
V��
V��
V�:
V�$��quicksave(swh%,sih%,savetype%)
V�� OK or Ret in save panel
V�� �demo("Text save") �
V�� � �checkobj(dir$,�) �
V�!� � �oktosave(swh%,fnicon%) �
V�
Ȏ sih% �
V�7 � dragicon%,fnicon%,okicon%:fsp$=�it(swh%,fnicon%)
V��
W� �fsp$,".") �
W �startsave(fsp$)
W �savedir(�parent(fsp$))
W&& � �is(savebox%,12) �recursivesave
W0 �endsave(fsp$)
W:�
WD3 ans%=�msg("To save - drag icon to Filer","OK")
WN�
WX�
Wb:
Wlݤoktosave(wh%,ih%)
Wv� path$:path$=�it(wh%,ih%)
W�@� path$="" ans%=�msg("Enter filename before saving","OK"):=�
W�=�
W�:
W�ݤdemo(s$)
W�B� demo% ans%=�msg(s$+",not available in demo version","OK"):=�
W�=�
W�:
W���startsave(fsp$)
W�� next%,number%
W��closemenu
W�ș "Hourglass_On"
W�sep$=�&A:� LF
W�F%=�(fsp$)
X�("SetType "+fsp$+" &FFF")
Xs$=�today+sep$:�#F%,s$
X�
X :
X*��endsave(fsp$)
X4� #F%:F%=0
X>È™ "Hourglass_Smash"
XH�
XR:
X\��savedir(d$)
Xf� more%,next%
Xp� wh%:wh%=savebox%
Xz%sp%=2:line$=Ĥmaxlen(d$,sp%),"=")
X��#F%,d$
X�� �is(wh%,10) �
X� s%=�$desc%(0),"- ")
X�$ � s%>0 s$=�s$,�s$-s%-1):�#F%,s$
X��
X��#F%,line$
X�� dirs then files
X�next%=0
X�ȕ next%<>-1
X�; ș "OS_GBPB",10,d$,C%,1,next%,100,"*" � ,,,more%,next%
X�' � more%>0 � C%?16=2 �doline(d$,C%)
X��
X�next%=0
YÈ• next%<>-1
Y; ș "OS_GBPB",10,d$,C%,1,next%,100,"*" � ,,,more%,next%
Y' � more%>0 � C%?16=1 �doline(d$,C%)
Y$�
Y.�#F%,line$+sep$
Y8�
YB:
YL��doline(d$,C%)
YV(� �getobjinfo(d$+"."+�name(C%+20)) �
Y` desc$=$desc%(next%)
Yj �#F%,�makeline(name$)
Yt�
Y~�
Y�:
Y�ݤmakeline(name$)
Y�� s$,sp$,wh%:wh%=savebox%
Y�sp$=�sp%," ")
Y�s$=name$+�10-�name$," ")
Y�.� �is(wh%,6) s$+=sp$+type$+�13-�type$," ")
Y�3� �is(wh%,7) s$+=sp$+�7-�filelen$," ")+filelen$
Y�1� �is(wh%,8) s$+=sp$+access$+�6-�access$," ")
Y�(� �is(wh%,9) s$+=sp$+date$+sp$+time$
Y�)� �is(wh%,10) s$+=sp$+�desc$,253-�s$)
Y�� avoid string too long
Y�=s$
Z:
Z
ݤmaxlen(d$,sp%)
Z'� J%,L1%,L2%,L3%,L4%,wh%,maxlen%,s%
Zwh%=savebox%:maxlen%=0
Z(s$=$desc%(0):s%=�s$,"-")-1
Z2L1%=�d$:L2%=s%:L3%=10
Z<� �is(wh%,6) L3%+=(sp%+14)
ZF� �is(wh%,7) L3%+=(sp%+7)
ZP� �is(wh%,8) L3%+=(sp%+6)
ZZ"� �is(wh%,9) L3%+=(sp%+sp%+19)
Zd� �is(wh%,10) �
Zn
 L4%=0
Zx � J%=1 � items%
Z�  desc$=$desc%(J%)
Z�  � �desc$>L4% � L4%=�desc$
Z� �
Z� � L4%>0 L3%+=(sp%+L4%)
Z��
Z�� L1%>maxlen% maxlen%=L1%
Z�+� L2%>maxlen% � �is(wh%,10) maxlen%=L2%
Z�(� L3%>maxlen% � items%>0 maxlen%=L3%
Z�=maxlen%
Z�:
Z��---------------------
Z��. RECURSIVE TEXT SAVE
Z��---------------------
[:
[��recursivesave
[recursing%=�:abort%=�
["&ș "OS_Byte",229,0,0 :� enable Esc
[,d$=dir$:deepest%=1:dirs%=1
[6
prompt%=0
[@ � �is(savebox%,14) prompt%=1
[J � �is(savebox%,15) prompt%=2
[T�savelevels(d$,1)
[^2s$="dirs: "+�dirs%+"  levels: "+�deepest%+sep$
[h�#F%,s$
[r'ș "OS_Byte",229,1,0 :� disable Esc
[|recursing%=�
[��refresh
[��
[�:
[���savelevels(d$,level%)
[�� more%,next%,dy$:next%=0
[�ș "Hourglass_On"
[�ȕ next%<>-1
[�B ș "OS_GBPB",10,d$,C%,1,next%,blocksize%,"*" � ,,,more%,next%
[� � more%>0 �
[�  � C%?16=2 �
[�   � a dir
[�   dy$=d$+"."+�name(C%+20)
[�#   � �leaf(dy$)<>"!TigerData" �
\    save%=�save:� abort% �
\    � save% �
\#     �readfiles(dy$,display%,0)
\&     �savedir(dy$)
\03     dirs%+=1:� level%>deepest% deepest%=level%
\:     � repeat recursively
\D"     �savelevels(dy$,level%+1)
\N	    �
\X   �
\b  �
\l �
\v�
\��
\�:
\�
ݤsave
\�� prompt%=0 �=�
\�� prompt%=1 � level%>1 �=�
\�� x%,y%,b%,wh%:wh%=savebox%
\�4ans%=�msg(dy$,"Don't save,No prompt,Abort,Save")
\�
Ȏ ans% �
\� � 2:�cw(messwind%)
\�2 �ui(wh%,14):�ui(wh%,15):�si(wh%,13):prompt%=0
\� � 3:abort%=�
\� � 4:=�
\��
]=�
]:
]�---------------
] �. RENAME/DELETE
]*�---------------
]4:
]>��rename(oldleaf$,newleaf$)
]H� menu choice
]R� J%,s$,d$
]\� oldleaf$="!TigerData" �
]f� newleaf$=oldleaf$ �
]p� newleaf$="" �buzz:�
]z� �promptsave �
]�. s$=dir$+"."+oldleaf$:d$=dir$+"."+newleaf$
]� �("Rename "+s$+" "+d$)
]��
]�� $desc%(chosen%)<>"" �
]� � change TigerData
]�- descs%=�loadTigerData(dir$+".TigerData")
]�
 found%=�
]� � J%=1 � descs%
]�@  � name$(J%)=oldleaf$ name$(J%)=newleaf$:found%=�:J%=descs%
]� �
]��
]��writeTigerData(descs%)
]��showTiger(1)
^�
^:
^��delete
^$� menu choice
^.� J%,K%,leaf$,s$
^8-FilerAction%=�fileraction:opts%=�readopts
^B
sel%=�sel
^L� �promptsave �
^V$ � sel%=0 sel%(1)=chosen%:sel%=1
^` � FilerAction% �
^j'  ș &400DE,"Filer_Action" � taskh%
^t �
^~3  $C%="Delete files":È™ "Wimp_CommandWindow",C%
^� �
^� � J%=1 � sel%
^�  leaf$=leaf$(sel%(J%))
^�  s$=dir$+"."+leaf$
^�.  � �checkobj(s$,�) � leaf$<>"TigerData" �
^�   �wipe(s$,FilerAction%)
^�  �
^� �
^� � FilerAction% �
^�  ș &40F82,taskh%,2,opts%
^� �
^�  ș "Wimp_CommandWindow",0
_ �
_
�
_�
_:
_(��wipe(fsp$,FilerAction%)
_2� path$,leaf$
_<� FilerAction% �
_F* path$=�parent(fsp$):leaf$=�leaf(fsp$)
_P È™ &40F80,taskh%,path$
_Z È™ &40F81,taskh%,leaf$
_d�
_n" �("Wipe "+fsp$+" "+�wipeopts)
_x�
_��
_�:
_��----------
_��. OBJ INFO
_��----------
_�:
_���prepobjinfo
_�$� name$,obj%,o%,wh%:wh%=objinfo%
_�name$=leaf$(chosen%)
_�"o%=�getobjinfo(dir$+"."+name$)
_�0ș "OS_File",5,dir$+"."+name$ � ,,,,,access%
_�-�it(wh%,1,name$):�it(wh%,2,�strip(type$))
_�*�it(wh%,3,filelen$):�it(wh%,4,access$)
`�it(wh%,5,time$+" "+date$)
`.C%!0=wh%:C%!4=0:È™ "Wimp_GetIconState",,C%
`$(C%!28)=�spr(wh%,0)
`"�
`,:
`6ݤgetobjinfo(fsp$)
`@3ș "OS_File",5,fsp$ � o%:� o%=0 �=�:� not found
`J'� obj%,load%,exec%,filelen%,access%
`T<ș "OS_File",5,fsp$ � obj%,,load%,exec%,filelen%,access%
`^%filetype%=(load% � &FFF00) � &100
`hname$=�leaf(fsp$)
`r%type$=�type(filetype%,obj%,name$)
`|access$=�access(access%)
`�filelen$=�filelen%
`�&date$=¤datestamp(load%,exec%),11)
`�%time$=��datestamp(load%,exec%),8)
`�=�
`�:
`�ݤtype(type%,obj%,name$)
`�� type$,
`�/� obj%=2 � �name$,1)="!" �="Application   "
`�� obj%=2 �="Directory     "
`�*type$=��osvar("File$Type_"+�~type%),8)
`� � type$="" type$="&"+�~type%
`�.=type$+�9-�type$," ")+"("+�lc(�~type%)+")"
`�:
aݤfiletype(path$)
a� load%
a"ș "OS_File",5,path$ � ,,load%
a&=(load% � &FFF00) � &100
a0:
a:ݤfiletypename(type%)
aD
� r2%,r3%
aN*ș "OS_FSControl",18,,type% �,,r2%,r3%
aXC%!0=r2%:C%!4=r3%:C%?8=&D
ab=$C%
al:
avݤaccess(b%)
a�� file attributes
a�� s$:s$=""
a�� (b% � 8)=8 s$+="L"
a�� (b% � 2)=2 s$+="W"
a�� (b% � 1)=1 s$+="R"
a�s$+="/"
a�� (b% � 16)=16 s$+="r"
a�� (b% � 32)=32 s$+="w"
a�=s$
a�:
a�ݤdatestamp(load%,exec%)
a�(� read 5 byte number of centiseconds
a�8� since 00:00:00 on 1 Jan 1900 as a time/date string
b.� ��~(load%),3)<>"FFF" �="":� machine code
bC%!0=exec%:C%!4=load%
b1È™ "OS_ConvertStandardDateAndTime",C%,C%+8,21
b ?(C%+28)=&D
b*=$(C%+8)
b4:
b>�------
bH�. MISC
bR�------
b\:
bf ��setextent(wh%,miny%,maxx%)
bp(C%!0=0:C%!4=miny%:C%!8=maxx%:C%!12=0
bzÈ™ "Wimp_SetExtent",wh%,C%
b��
b�:
b�ݤobjtype(path$)
b�� objtype%
b�/� 0=not found, 1=file, 2=dir, 3=combination
b�$ș "OS_File",13,path$ � objtype%
b�
=objtype%
b�:
b�ݤfilelen(path$)
b�
� len%
b�#ș "OS_File",5,path$ � ,,,,len%
b�	=len%
b�:
cݤobjs(dir$)
c� objs%:objs%=items%
c� �checkobj(dir$,�) �
c$! � �objtype(dir$)<>2 �=items%
c.; ș "OS_GBPB",9,dir$,q%,maxo%,0,blocksize%,0 � ,,,objs%
c8�
cB
=objs%
cL:
cVݤname(ptr%)
c`� s$:s$=""
cj$ȕ ?ptr%>31:s$+=�?ptr%:ptr%+=1:�
ct=s$
c~:
c�ݤleaf(f$)
c�(� c$,s$,c%:s$="":c%=�f$:c$=�f$,c%,1)
c� ȕ c$<>"." � c$<>":" � c%<>0
c� s$=c$+s$:c%-=1
c� c$=�f$,c%,1)
c��
c�=s$
c�:
c�ݤparent(f$)
c�� �f$,".")=0 �=""
c�l$=�leaf(f$)
c�=�f$,�f$-�l$-1)
d:
d
+ݤtoday:� system date. Eg "22 Aug 1988"
d(=��$,5,2)+" "+��$,8,3)+" "+��$,14,2)
d:
d(ݤosvar(osvar$)
d2
� len%
d<%� If not found don't report error
dF1ș "XOS_ReadVarVal",osvar$,C%,200,0,3 �,,len%
dP?(C%+len%)=&D
dZ=$C%
dd:
dn	ݤenv
dx� get command string
d�ș "OS_GetEnv" � env$
d�/p=�env$,"""",�env$,"""")+1):env$=�env$,p+1)
d�#ȕ �env$,1)=" ":env$=�env$,2):�
d�	=env$
d�:
d�ݤstrip(s$)
d�#� strip leading/trailing spaces
d�� J%,o$,c$,c%,n%:o$=s$
d�� �s$,1)=" "�
d�3 c%=1:�:c%+=1:� �o$,c%,1)<>" ":o$=�o$,�o$-c%+1)
d��
d�� �s$,1)=" "�
d�/ c%=�o$:n%=1:�:c%-=1:n%+=1:� �o$,c%,1)<>" "
e o$=�o$,�o$-n%+1)
e�
e=o$
e":
e,ݤlc(str$)
e6� J%,c$,c%,s$:s$=""
e@� J%=1 � �str$
eJ c$=�str$,J%,1):c%=�c$
eT � c%>64 � c%<91 c%+=32
e^ c$=�c%:s$+=c$
eh�
er=s$
e|:
e�ݤosxmax
e�(� screen x OS units for current mode
e�.ș "OS_ReadModeVariable",-1,11 � ,,xlimit%
e�+ș "OS_ReadModeVariable",-1,4 � ,,xeig%
e�=(xlimit%+1)<<xeig%
e�:
e�ݤosymax
e�(� screen y OS units for current mode
e�.ș "OS_ReadModeVariable",-1,12 � ,,ylimit%
e�+ș "OS_ReadModeVariable",-1,5 � ,,yeig%
e�=(ylimit%+1)<<yeig%
e�:
e���beep:� 1,-10,200,1:�
f��buzz:� 1,-15,50,4:�
f:
f
�--------
f&
�. MEMORY
f0
�--------
f::
fDݤgetslotsize
fN� slotsize%
fX(ș "Wimp_SlotSize",-1,-1 � slotsize%
fb=slotsize%
fl:
fvݤsetslotsize(bytes%)
f�� size%,ok%:ok%=�
f�(ș "Wimp_SlotSize",bytes%,-1 � size%
f�� size%<bytes% � ok%=�
f�=ok%
f�:
f��---------
f��. WINDOWS
f��---------
f�:
f���loadtemplates
f�1ș "Wimp_OpenTemplate",,taskdir$+".Templates"
f�$main%=�tw("Main"):maintit%=q%!72
f�info%=�tw("Info")
gobjinfo%=�tw("ObjInfo")
gsavebox%=�tw("Save")
gcopybox%=�tw("Copy")
g messwind%=�tw("Message")
g*choicewind%=�tw("Choices")
g4accesswind%=�tw("Access")
g>buffwind%=�tw("Buffer")
gHÈ™ "Wimp_CloseTemplate"
gR�
g\:
gfݤtw(a$)
gp&� c%,end%:end%=buffer%+buffersize%
gz=ș "Wimp_LoadTemplate",,q%,buffer%,end%,-1,a$ � ,,buffer%
g�#ș "Wimp_CreateWindow",,q% � c%
g�=c%
g�:
g�
��ow(wh%)
g�� at my behest - on top
g�)C%!0=wh%:ș "Wimp_GetWindowState",,C%
g�%C%!28=-1:ș "Wimp_OpenWindow",,C%
g��
g�:
g���ow2(wh%)
g�� from Wimp Poll
g�ș "Wimp_OpenWindow",,q%
g��
h:
h��owc(wh%)
h)� at my behest - on top and in centre
h$)C%!0=wh%:È™ "Wimp_GetWindowState",,C%
h.2ș "OS_ReadModeVariable",-1,11 � ,,xwindlimit%
h82ș "OS_ReadModeVariable",-1,4  � ,,xeigfactor%
hB2ș "OS_ReadModeVariable",-1,12 � ,,ywindlimit%
hL2ș "OS_ReadModeVariable",-1,5  � ,,yeigfactor%
hV(xwindlimit%=xwindlimit%<<xeigfactor%
h`(ywindlimit%=ywindlimit%<<yeigfactor%
hjxeigfactor%=C%!12-C%!4
htyeigfactor%=C%!16-C%!8
h~'C%!4 = (xwindlimit%-xeigfactor%)>>1
h�'C%!8 = (ywindlimit%-yeigfactor%)>>1
h�C%!12= C%!4+xeigfactor%
h�C%!16= C%!8+yeigfactor%
h�%C%!28=-1:ș "Wimp_OpenWindow",,C%
h��
h�:
h�
��cw(wh%)
h�&C%!0=wh%:ș "Wimp_CloseWindow",,C%
h�&� wh%=main% open%=�:�cw(buffwind%)
h��
h�:
h�
��star
i3�tit(main%,maintit%,"Tiger:"+dir$+" *"):star%=�
i
�
i:
i��nostar
i(.�tit(main%,maintit%,"Tiger:"+dir$):star%=�
i2�
i<:
iF��tit(wh%,ad%,str$)
iP"� force change of window title
iZ4$ad%=str$:!C%=wh%:È™ "Wimp_GetWindowOutline",,C%
id1minx%=C%!4:miny%=C%!8:maxx%=C%!12:maxy%=C%!16
in?È™ "Wimp_ForceRedraw",-1,minx%+84,maxy%-40,maxx%-44,maxy%-4
ix�
i�:
i�
��size
i�(� Tab adjusts size to obj names only
i�+C%!0=main%:ș "Wimp_GetWindowState",,C%
i�$� C%!12<>C%!4+244 � C%!8>-1500 �
i�# C%!12=C%!4+244:C%!8=C%!16-1500
i��
i�%C%!28=-1:ș "Wimp_OpenWindow",,C%
i��
i�:
i�ݤopen(wh%)
i�(!C%=wh%:ș "Wimp_GetWindowState",,C%
i�=�bitset(C%!32,16)
j:
jݤfocus(wh%)
j(!C%=wh%:È™ "Wimp_GetWindowState",,C%
j"=�bitset(C%!32,20)
j,:
j6ݤbitset(i%,b%)
j@"� is bit b% in integer i% set?
jJ� n%,d%:d%=1<<b%
jTn%=(i% � d%) � d%
j^� n%=0 �=�
jh=�
jr:
j|�-------
j��. ICONS
j��-------
j�:
j�
��baricon
j�.C%!0=-2:C%!4=0:C%!8=-16:C%!12=112:C%!16=68
j�8C%!20=&1700310B:C%!24=barbuf%:C%!28=spritad%:C%!32=8
j�'ș "Wimp_CreateIcon",,C% � baricon%
j��
j�:
j���createicons
j�� icons for names
j�)minx%=12:miny%=-54:maxx%=230:maxy%=-4
j�� J%=0 � maxo%
kA $name%(J%)="":$val%(J%)="":d1%=name%(J%):d2%=val%(J%):d3%=13
kH i%=�icon(main%,minx%,maxy%-44,maxx%,maxy%,&1B00E131,"",d1%,d2%,d3%)
k miny%-=44:maxy%-=44
k&�
k0:
k:� icons for descriptions
kD6miny%=-58:maxy%=-8:maxx%=width%:� varies with mode
kNRbuflen%=maxdesclen%+1:� fits on 132 chr screen; fits on listing paper in cond.
kX� J%=0 � maxo%
kb
 � J%=0 �
kl&  f%=&1B00E131:v%=valid%:minx%=240
kv �
k�"  f%=&0700E131:v%=-1:minx%=244
k� �
k� $desc%(J%)=""
k�J i%=�icon(main%,minx%,maxy%-40,maxx%,maxy%,f%,"",desc%(J%),v%,buflen%)
k� miny%-=44:maxy%-=44
k��
k�:
k�)� icon for gaining input focus (#156)
k�:i%=�icon(main%,240,-40,228+8,-40+8,&BB00E134,"",0,0,0)
k��
k�:
k�@ݤicon(wh%,minx%,miny%,maxx%,maxy%,flags%,text$,d1%,d2%,d3%)
k�GC%!0=wh%:C%!4=minx%:C%!8=miny%:C%!12=maxx%:C%!16=maxy%:C%!20=flags%
l
� d1%=0 �
l $(C%+24)=text$
l�
l " C%!24=d1%:C%!28=d2%:C%!32=d3%
l*�
l4"ș "Wimp_CreateIcon",,C% � ih%
l>=ih%
lH:
lR��si(wh%,ih%)
l\,C%!0=wh%:C%!4=ih%:C%!8=1<<21:C%!12=1<<21
lfÈ™"Wimp_SetIconState",,C%
lp�
lz:
l���ui(wh%,ih%)
l�(C%!0=wh%:C%!4=ih%:C%!8=0:C%!12=1<<21
l�ș"Wimp_SetIconState",,C%
l��
l�:
l���ti(wh%,ih%)
l�4� �is(main%,ih%) �ui(main%,ih%) � �si(main%,ih%)
l��
l�:
l�ݤis(wh%,ih%)
l�� n%
l�.!C%=wh%:C%!4=ih%:ș"Wimp_GetIconState",,C%
l�n%=((C%!24)>>21) � 1
m� n%=0 �=�
m=�
m:
m$��it(wh%,ih%,s$)
m.0C%!0=wh%:C%!4=ih%:È™ "Wimp_GetIconState",,C%
m8$(C%!28)=s$
mB-C%!8=0:C%!12=0:È™ "Wimp_SetIconState",,C%
mL�
mV:
m`ݤit(wh%,ih%)
mj0C%!0=wh%:C%!4=ih%:È™ "Wimp_GetIconState",,C%
mt
=$(C%!28)
m~:
m���sis(wh%,ih%,newflags%)
m�� set icon state
m�� clear%,eor%
m�#clear%=&FFFFFFFF:eor%=newflags%
m�,C%!0=wh%:C%!4=ih%:C%!8=eor%:C%!12=clear%
m�ș "Wimp_SetIconState",,C%
m��
m�:
m���seticonbit(wh%,ih%,b%)
m�C%!0=wh%:C%!4=ih%
m�C%!8=1<<b%:C%!12=1<<b%
m�ș"Wimp_SetIconState",,C%
n�
n
:
n��cleariconbit(wh%,ih%,b%)
nC%!0=wh%:C%!4=ih%
n(C%!8=0:C%!12=1<<b%
n2È™"Wimp_SetIconState",,C%
n<�
nF:
nP��di(wh%,from%,to%)
nZ� J%:C%!0=wh%
nd7� J%=from% � to%:C%!4=J%:ș "Wimp_DeleteIcon",,C%:�
nn+C%!0=wh%:È™ "Wimp_GetWindowOutline",,C%
nx1minx%=C%!4:miny%=C%!8:maxx%=C%!12:maxy%=C%!16
n�4ș "Wimp_ForceRedraw",-1,minx%,miny%,maxx%,maxy%
n��
n�:
n�ݤvax(wh%,wax%)
n�(!C%=wh%:ș "Wimp_GetWindowState",,C%
n�=wax%-(C%!20-C%!4)
n�:
n�ݤvay(wh%,way%)
n�(!C%=wh%:ș "Wimp_GetWindowState",,C%
n�=way%-(C%!24-C%!16)
n�:
n�
�--------
n�
�. ERRORS
o
�--------
o:
oݤcheckobj(obj$,error%)
o"� is object present?
o,� n%,type%
o6� �
o@(� � � ans%=�localerror(obj$,�$,�):=�
oJ ș "OS_File",13,obj$ � type%
oTobj$=�strip(�leaf(obj$))
o^� type%=0 n%=� � n%=�
oh� n%=� � error% �
or5 ans%=�msg("Can't find '"+obj$+"' in Filer","OK")
o|�
o�=n%
o�:
o� ݤlocalerror(obj$,err$,err%)
o�� s$,i%:s$=err$
o�
Ȏ err% �
o�
 � 248
o�  i%=�obj$,":")
o�;  s$="Filing system or path "+�obj$,i%)+" not present,"
o�   s$+="Closing Tiger window"
o�  ans%=�msg(s$,"OK")
o�%  pristine%=�:items%=0:�cw(main%)
o� � 67797
o�0  s$="Disc not present,Closing Tiger window"
p  ans%=�msg(s$,"OK")
p%  pristine%=�:items%=0:�cw(main%)
p
 � 204
p&  s$="Bad file name,"+obj$
p0  ans%=�msg(s$,"OK")
p: 
pD  �wimperror
pN�
pX	=ans%
pb:
pl��wimperror
pv.È™ "Wimp_DragBox",,-1:È™ "Hourglass_Smash"
p�� F%>0 �#F%:F%=0
p�� X%>0 �#X%:X%=0
p�� recursing% �
p� recursing%=�:�cw(main%)
p�' ș "OS_Byte",229,1,0:� disable Esc
p�, s$="Escape pressed - operation aborted"
p�: ans%=�msg(s$,"OK"):� counting% display%=1:counting%=�
p� �showTiger(1)
p� �
p��
p�(s$=�$+",(Error "+ß+": line "+Þ+")"
p�!ans%=�msg(s$,"OK,Kill Tiger")
p�:� ans%=2 quit%=�:�("Unset Tiger$Running"):�closewimp:�
q�
q:
q��error
q È™ "Hourglass_Smash"
q*� H%>0 �#H%:H%=0
q4�4:� �$+" at line "+Þ:�5
q>�
qH:
qRݤmsg(s1$,s2$)
q\-� J%,c%,p%,g%,f%,r%,x%,y%,w%,h%,n%,s$,wh%
qfwh%=messwind%:�buzz
qp.È™ "Wimp_DragBox",,-1:È™ "Hourglass_Smash"
qz�di(wh%,1,7)
q�:
q�� do choices...
q�c%=0:s$=s2$
q��
q� c%+=1:p%=�s$,",")
q� � p%=0 ict$(c%)=s$
q�- � p%>0 ict$(c%)=�s$,p%-1):s$=�s$,�s$-p%)
q�� p%=0:� c%>4 c%=4
q�maxi%=c%
q�Ȏ c% �
q� � 1:x%=312
q� � 2:x%=222
q� � 3:x%=128
r � 4:x%=28
r�
r/y%=-228:w%=178:h%=52:v$="R5,2":f%=&1701313D
r$� J%=1 � c%
r.* � J%=c% y%-=6:w%+=32:h%+=12:v$="R6,2"
r8< $icn%(J%)=ict$(J%):$icv%(J%)=v$:n%=icn%(J%):v%=icv%(J%)
rB3 i%=�icon(wh%,x%,y%,x%+w%,y%+h%,f%,"",n%,v%,20)
rL x%+=w%+12
rV�
r`:
rj� do messages...
rtc%=0:s$=s1$
r~�
r� c%+=1:p%=�s$,",")
r� � p%=0 ict$(c%)=s$
r�- � p%>0 ict$(c%)=�s$,p%-1):s$=�s$,�s$-p%)
r�� p%=0:� c%>3 c%=3
r�Ȏ c% �
r� � 1:g%=48:y%=-120
r� � 2:g%=54:y%=-84
r� � 3:g%=48:y%=-68
r��
r�/x%=30:w%=774:h%=40:f%=&17006139:� draggable
r�� J%=1 � c%
r�( $icm%(J%)=�ict$(J%),48):n%=icm%(J%)
s3 i%=�icon(wh%,x%,y%,x%+w%,y%+h%,f%,"",n%,-1,50)
s
 y%-=g%
s�
s:
s(�ow(wh%):�caretx(wh%,8,0)
s2)È™ "Wimp_GetPointerInfo",,C%:w%=C%!12
s<)C%!0=wh%:È™ "Wimp_GetWindowState",,C%
sF3È— È“ C%!4+8,C%!8+8,C%!12-C%!4-16,C%!16-C%!8-16
sP#� w%<>wh% ȗ � C%!12-48,C%!8+48
sZ2� wait for click on reply icon, or Esc pressed
sdreply%=0:esc%=�:ret%=�
sn�
sx ș "Wimp_Poll",,C% � r%
s� Ȏ r% �
s�  � 6:�mouse(C%)
s�(  � 7:�enddrag(C%,swh%,remb%,solid%)
s�  � 8:�keypress(C%)
s� �
s�/� (reply%>0 � reply%<maxi%+1) � esc% � ret%
s�!� ret% reply%=maxi%:� default
s��cw(wh%):�("Pointer")
s�=reply%
s�:
s��----------
s��. DEBUGGER
s��----------
t:
t��dl(list$)
t� debug list
t"0� ccc%,ttt%,mmm%,sss$,ccc$,var$():� var$(20)
t,� �
t6%� � � �4:�0,ttt%+2)"ERROR!":�5:�
t@� ttt%=1 � �(list$)
tJ ccc$=�list$,ttt%,1)
tT � ccc$<>"," sss$+=ccc$
t^! � ccc$="," � ttt%=�(list$) �
th  � �sss$>mmm% mmm%=�sss$
tr%  var$(ccc%)=sss$:sss$="":ccc%+=1
t| �
t��:�4
t�� ttt%=0 � ccc%-1
t� sss$=var$(ttt%)
t� �0,ttt%)�50," ")
t� � �sss$,1)="~" �
t�  sss$=�sss$,�sss$-1)
t�  ccc$=�mmm%-�sss$," ")
t�)  �0,ttt%) sss$+ccc$+" =&";�~(�sss$)
t� �
t�  ccc$=�mmm%-�sss$," ")
t�'  �0,ttt%) sss$+ccc$+" = ";�(sss$)
t� �
t��:�5
u�
u:
u��da(a$,f%,t%)
u&� debug array
u0� ccc%,nnn$,xxx%,ttt%
u:� �
uD%� � � �4:�0,ttt%+2)"ERROR!":�5:�
uN%� �a$,1)="~" a$=�a$,�a$-1):xxx%=�
uX� 0:� 132:�4:�0,0)a$+"()"
ub� ccc%=f% � t%
ul$ nnn$=�"  "+�ccc%,2)+" ":ttt%+=1
uv
 � xxx% �
u�.  �0,ttt%)nnn$+"&";�~+�(a$+"("+�ccc%+")")
u� �
u�'  �0,ttt%)nnn$;�(a$+"("+�ccc%+")")
u� �
u��:�5
u��
�
00000000  0d 00 0a 1d f4 20 3e 20  3c 54 69 67 65 72 24 44  |..... > <Tiger$D|
00000010  69 72 3e 2e 21 52 75 6e  49 6d 61 67 65 0d 00 14  |ir>.!RunImage...|
00000020  05 3a 0d 00 1e 11 74 61  73 6b 24 3d 22 54 69 67  |.:....task$="Tig|
00000030  65 72 22 0d 00 28 2b 70  75 72 70 6f 73 65 24 3d  |er"..(+purpose$=|
00000040  22 45 64 69 74 61 62 6c  65 20 6f 62 6a 65 63 74  |"Editable object|
00000050  20 64 65 73 63 72 69 70  74 69 6f 6e 73 22 0d 00  | descriptions"..|
00000060  32 2a 61 75 74 68 6f 72  24 3d 22 28 63 29 20 47  |2*author$="(c) G|
00000070  72 61 68 61 6d 20 43 72  6f 77 20 31 39 39 32 2c  |raham Crow 1992,|
00000080  27 39 33 2c 27 39 34 22  0d 00 3c 21 76 65 72 73  |'93,'94"..<!vers|
00000090  69 6f 6e 24 3d 22 34 2e  30 30 20 28 33 31 20 4d  |ion$="4.00 (31 M|
000000a0  61 79 20 31 39 39 34 29  22 0d 00 46 05 3a 0d 00  |ay 1994)"..F.:..|
000000b0  50 10 ee 20 85 20 f2 65  72 72 6f 72 3a e0 0d 00  |P.. . .error:...|
000000c0  5a 13 f2 69 6e 69 74 3a  f2 77 69 6d 70 69 6e 69  |Z..init:.wimpini|
000000d0  74 0d 00 64 1f f2 6c 6f  61 64 74 65 6d 70 6c 61  |t..d..loadtempla|
000000e0  74 65 73 3a f2 6c 6f 61  64 63 68 6f 69 63 65 73  |tes:.loadchoices|
000000f0  0d 00 6e 24 f2 62 61 72  69 63 6f 6e 3a f2 69 6e  |..n$.baricon:.in|
00000100  69 74 69 63 6f 6e 73 3a  f2 63 72 65 61 74 65 69  |iticons:.createi|
00000110  63 6f 6e 73 0d 00 78 0c  f2 69 6e 73 74 61 6c 6c  |cons..x..install|
00000120  0d 00 82 05 3a 0d 00 8c  12 ee 20 85 20 f2 77 69  |....:..... . .wi|
00000130  6d 70 65 72 72 6f 72 0d  00 96 0b 71 75 69 74 25  |mperror....quit%|
00000140  3d a3 0d 00 a0 13 f5 3a  f2 70 6f 6c 6c 3a fd 20  |=......:.poll:. |
00000150  71 75 69 74 25 0d 00 aa  0e f2 63 6c 6f 73 65 77  |quit%.....closew|
00000160  69 6d 70 0d 00 b4 05 e0  0d 00 be 05 3a 0d 00 c8  |imp.........:...|
00000170  10 f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 00 d2  |..-----------...|
00000180  10 f4 2e 20 57 49 4d 50  20 50 4f 4c 4c 0d 00 dc  |... WIMP POLL...|
00000190  10 f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 00 e6  |..-----------...|
000001a0  05 3a 0d 00 f0 0a dd f2  70 6f 6c 6c 0d 00 fa 20  |.:......poll... |
000001b0  c8 99 20 22 57 69 6d 70  5f 50 6f 6c 6c 22 2c 2c  |.. "Wimp_Poll",,|
000001c0  71 25 20 b8 20 72 65 61  73 6f 6e 25 0d 01 04 25  |q% . reason%...%|
000001d0  f4 20 70 72 65 76 65 6e  74 20 64 72 61 67 67 69  |. prevent draggi|
000001e0  6e 67 20 6f 6e 20 61 20  73 65 6c 65 63 74 69 6f  |ng on a selectio|
000001f0  6e 0d 01 0e 22 e7 20 72  65 61 73 6f 6e 25 3c 31  |n...". reason%<1|
00000200  37 20 84 20 72 65 61 73  6f 6e 25 3e 31 39 20 7a  |7 . reason%>19 z|
00000210  25 3d 30 0d 01 18 10 c8  8e 20 72 65 61 73 6f 6e  |%=0...... reason|
00000220  25 20 ca 0d 01 22 08 20  c9 20 30 0d 01 2c 1a 20  |% ...". . 0..,. |
00000230  20 e7 20 74 65 78 74 66  6c 61 67 25 20 f2 67 65  | . textflag% .ge|
00000240  74 74 65 78 74 0d 01 36  11 20 20 63 25 3d a4 63  |ttext..6.  c%=.c|
00000250  68 61 6e 67 65 64 0d 01  40 24 20 20 e7 20 63 25  |hanged..@$  . c%|
00000260  20 75 6e 64 6f 25 3d b9  3a 72 65 64 6f 25 3d a3  | undo%=.:redo%=.|
00000270  20 8b 20 75 6e 64 6f 25  3d a3 0d 01 4a 33 20 20  | . undo%=...J3  |
00000280  e7 20 63 25 3a e7 20 ac  20 73 74 61 72 25 20 f2  |. c%:. . star% .|
00000290  73 74 61 72 3a 8b 20 e7  20 ac 20 63 25 3a e7 20  |star:. . . c%:. |
000002a0  73 74 61 72 25 20 f2 6e  6f 73 74 61 72 0d 01 54  |star% .nostar..T|
000002b0  12 20 20 e7 20 72 65 66  72 65 73 68 25 20 8c 0d  |.  . refresh% ..|
000002c0  01 5e 1f 20 20 20 f2 73  68 6f 77 54 69 67 65 72  |.^.   .showTiger|
000002d0  28 31 29 3a 72 65 66 72  65 73 68 25 3d a3 0d 01  |(1):refresh%=...|
000002e0  68 07 20 20 cd 0d 01 72  43 20 20 e7 20 ac 20 70  |h.  ...rC  . . p|
000002f0  72 69 73 74 69 6e 65 25  3a e7 20 a4 6f 62 6a 73  |ristine%:. .objs|
00000300  28 64 69 72 24 29 3c 3e  69 74 65 6d 73 25 3a e7  |(dir$)<>items%:.|
00000310  20 a4 6f 70 65 6e 28 6d  61 69 6e 25 29 20 72 65  | .open(main%) re|
00000320  66 72 65 73 68 25 3d b9  0d 01 7c 11 20 20 f2 69  |fresh%=...|.  .i|
00000330  63 6f 6e 73 63 72 6f 6c  6c 0d 01 86 13 20 c9 20  |conscroll.... . |
00000340  32 3a f2 6f 77 32 28 71  25 21 30 29 0d 01 90 08  |2:.ow2(q%!0)....|
00000350  20 c9 20 33 0d 01 9a 2b  20 20 77 68 25 3d 71 25  | . 3...+  wh%=q%|
00000360  21 30 3a c8 99 20 22 57  69 6d 70 5f 47 65 74 50  |!0:.. "Wimp_GetP|
00000370  6f 69 6e 74 65 72 49 6e  66 6f 22 2c 2c 71 25 0d  |ointerInfo",,q%.|
00000380  01 a4 2a 20 20 e7 20 71  25 21 31 32 3d 6d 61 69  |..*  . q%!12=mai|
00000390  6e 25 20 80 20 71 25 21  38 3d 31 20 f2 76 69 65  |n% . q%!8=1 .vie|
000003a0  77 65 72 28 64 69 72 24  29 0d 01 ae 0e 20 20 f2  |wer(dir$)....  .|
000003b0  63 77 28 77 68 25 29 0d  01 b8 13 20 c9 20 36 3a  |cw(wh%).... . 6:|
000003c0  f2 6d 6f 75 73 65 28 71  25 29 0d 01 c2 27 20 c9  |.mouse(q%)...' .|
000003d0  20 37 3a f2 65 6e 64 64  72 61 67 28 71 25 2c 73  | 7:.enddrag(q%,s|
000003e0  77 68 25 2c 72 65 6d 62  25 2c 73 6f 6c 69 64 25  |wh%,remb%,solid%|
000003f0  29 0d 01 cc 16 20 c9 20  38 3a f2 6b 65 79 70 72  |).... . 8:.keypr|
00000400  65 73 73 28 71 25 29 0d  01 d6 18 20 c9 20 39 3a  |ess(q%).... . 9:|
00000410  f2 6d 65 6e 75 73 65 6c  65 63 74 28 71 25 29 0d  |.menuselect(q%).|
00000420  01 e0 19 20 c9 20 31 37  2c 31 38 3a f2 72 65 63  |... . 17,18:.rec|
00000430  65 69 76 65 28 71 25 29  0d 01 ea 0a 20 c9 20 31  |eive(q%).... . 1|
00000440  39 3a 0d 01 f4 10 20 20  c8 8e 20 71 25 21 31 36  |9:....  .. q%!16|
00000450  20 ca 0d 01 fe 2a 20 20  20 c9 20 35 3a c8 99 20  | ....*   . 5:.. |
00000460  22 57 69 6d 70 5f 53 74  61 72 74 54 61 73 6b 22  |"Wimp_StartTask"|
00000470  2c 22 52 75 6e 20 22 2b  6a 6f 62 24 0d 02 08 0e  |,"Run "+job$....|
00000480  20 20 20 7f 3a f2 62 75  7a 7a 0d 02 12 07 20 20  |   .:.buzz....  |
00000490  cb 0d 02 1c 05 cb 0d 02  26 05 e1 0d 02 30 05 3a  |........&....0.:|
000004a0  0d 02 3a 0f f4 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |..:..----------.|
000004b0  02 44 0f f4 2e 20 4d 45  53 53 41 47 45 53 0d 02  |.D... MESSAGES..|
000004c0  4e 0f f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 02 58  |N..----------..X|
000004d0  05 3a 0d 02 62 11 dd f2  72 65 63 65 69 76 65 28  |.:..b...receive(|
000004e0  71 25 29 0d 02 6c 10 73  65 6e 64 65 72 25 3d 71  |q%)..l.sender%=q|
000004f0  25 21 34 0d 02 76 0e c8  8e 20 71 25 21 31 36 20  |%!4..v... q%!16 |
00000500  ca 0d 02 80 14 20 c9 20  30 3a 71 75 69 74 25 3d  |..... . 0:quit%=|
00000510  a4 71 75 69 74 0d 02 8a  21 20 c9 20 31 3a f2 6c  |.quit...! . 1:.l|
00000520  6f 61 64 73 65 6c 28 71  25 29 20 3a f4 20 44 61  |oadsel(q%) :. Da|
00000530  74 61 53 61 76 65 0d 02  94 24 20 c9 20 32 3a f2  |taSave...$ . 2:.|
00000540  64 61 74 61 73 61 76 65  28 71 25 29 3a f4 20 44  |datasave(q%):. D|
00000550  61 74 61 53 61 76 65 41  63 6b 0d 02 9e 21 20 c9  |ataSaveAck...! .|
00000560  20 33 3a f2 64 61 74 61  6c 6f 61 64 28 71 25 29  | 3:.dataload(q%)|
00000570  3a f4 20 44 61 74 61 4c  6f 61 64 0d 02 a8 16 20  |:. DataLoad.... |
00000580  c9 20 34 3a f4 20 44 61  74 61 4c 6f 61 64 41 63  |. 4:. DataLoadAc|
00000590  6b 0d 02 b2 2f 20 c9 20  35 3a e7 20 71 25 21 34  |k.../ . 5:. q%!4|
000005a0  30 3d 26 34 46 46 20 f2  64 61 74 61 6c 6f 61 64  |0=&4FF .dataload|
000005b0  28 71 25 29 20 3a f4 20  44 61 74 61 4f 70 65 6e  |(q%) :. DataOpen|
000005c0  0d 02 bc 13 20 c9 20 36  3a f4 20 52 41 4d 46 65  |.... . 6:. RAMFe|
000005d0  74 63 68 0d 02 c6 16 20  c9 20 37 3a f4 20 52 41  |tch.... . 7:. RA|
000005e0  4d 54 72 61 6e 73 6d 69  74 0d 02 d0 20 20 c9 20  |MTransmit...  . |
000005f0  38 3a f2 70 72 65 71 75  69 74 28 71 25 29 20 3a  |8:.prequit(q%) :|
00000600  f4 20 50 72 65 51 75 69  74 0d 02 da 3f 20 c9 20  |. PreQuit...? . |
00000610  26 34 30 30 43 30 3a f2  73 75 62 6d 65 6e 75 28  |&400C0:.submenu(|
00000620  71 25 29 3a f4 20 70 6f  69 6e 74 65 72 20 6f 76  |q%):. pointer ov|
00000630  65 72 20 53 61 76 65 54  65 78 74 2f 43 6f 70 79  |er SaveText/Copy|
00000640  20 73 75 62 6d 65 6e 75  0d 02 e4 3a 20 c9 20 26  | submenu...: . &|
00000650  34 30 30 43 31 3a 77 69  6e 64 6f 77 73 74 61 74  |400C1:windowstat|
00000660  65 25 3d 30 3a e7 20 a4  6f 70 65 6e 28 6d 61 69  |e%=0:. .open(mai|
00000670  6e 25 29 20 77 69 6e 64  6f 77 73 74 61 74 65 25  |n%) windowstate%|
00000680  3d 31 0d 02 ee 21 20 f2  6d 6f 64 65 63 68 61 6e  |=1...! .modechan|
00000690  67 65 28 71 25 2c 77 69  6e 64 6f 77 73 74 61 74  |ge(q%,windowstat|
000006a0  65 25 29 0d 02 f8 20 20  c9 20 26 34 30 30 43 37  |e%)...  . &400C7|
000006b0  3a 74 73 6b 24 3d a4 74  61 73 6b 6e 61 6d 65 28  |:tsk$=.taskname(|
000006c0  71 25 29 0d 03 02 05 cb  0d 03 0c 05 e1 0d 03 16  |q%).............|
000006d0  05 3a 0d 03 20 11 dd f2  70 72 65 71 75 69 74 28  |.:.. ...prequit(|
000006e0  71 25 29 0d 03 2a 30 f4  20 50 72 65 51 75 69 74  |q%)..*0. PreQuit|
000006f0  20 6d 65 73 73 61 67 65  20 72 65 63 65 69 76 65  | message receive|
00000700  64 20 66 72 6f 6d 20 54  61 73 6b 20 4d 61 6e 61  |d from Task Mana|
00000710  67 65 72 0d 03 34 18 73  65 6e 64 65 72 25 3d 71  |ger..4.sender%=q|
00000720  25 21 34 3a 71 75 69 74  25 3d b9 0d 03 3e 19 f4  |%!4:quit%=...>..|
00000730  20 61 63 6b 6e 6f 77 6c  65 64 67 65 20 6d 65 73  | acknowledge mes|
00000740  73 61 67 65 0d 03 48 0e  71 25 21 31 32 3d 71 25  |sage..H.q%!12=q%|
00000750  21 38 0d 03 52 27 c8 99  20 22 57 69 6d 70 5f 53  |!8..R'.. "Wimp_S|
00000760  65 6e 64 4d 65 73 73 61  67 65 22 2c 31 39 2c 71  |endMessage",19,q|
00000770  25 2c 73 65 6e 64 65 72  25 0d 03 5c 0d e7 20 a4  |%,sender%..\.. .|
00000780  71 75 69 74 20 8c 0d 03  66 23 20 c8 99 20 22 57  |quit ...f# .. "W|
00000790  69 6d 70 5f 47 65 74 43  61 72 65 74 50 6f 73 69  |imp_GetCaretPosi|
000007a0  74 69 6f 6e 22 2c 2c 71  25 0d 03 70 20 20 71 25  |tion",,q%..p  q%|
000007b0  21 32 34 3d 26 31 46 43  3a f4 20 43 74 72 6c 2b  |!24=&1FC:. Ctrl+|
000007c0  53 68 69 66 74 2b 46 31  32 0d 03 7a 27 20 c8 99  |Shift+F12..z' ..|
000007d0  20 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  | "Wimp_SendMessa|
000007e0  67 65 22 2c 38 2c 71 25  2c 73 65 6e 64 65 72 25  |ge",8,q%,sender%|
000007f0  0d 03 84 05 cd 0d 03 8e  05 e1 0d 03 98 05 3a 0d  |..............:.|
00000800  03 a2 21 dd f2 6d 6f 64  65 63 68 61 6e 67 65 28  |..!..modechange(|
00000810  71 25 2c 77 69 6e 64 6f  77 73 74 61 74 65 25 29  |q%,windowstate%)|
00000820  0d 03 ac 36 f4 20 61 64  6a 75 73 74 73 20 77 69  |...6. adjusts wi|
00000830  6e 64 6f 77 20 77 69 64  74 68 20 61 6e 64 20 69  |ndow width and i|
00000840  63 6f 6e 20 77 69 64 74  68 20 74 6f 20 73 75 69  |con width to sui|
00000850  74 20 6d 6f 64 65 0d 03  b6 2b e7 20 70 72 69 73  |t mode...+. pris|
00000860  74 69 6e 65 25 20 84 20  28 ac 20 a4 63 68 65 63  |tine% . (. .chec|
00000870  6b 6f 62 6a 28 64 69 72  24 2c a3 29 29 20 8c 20  |kobj(dir$,.)) . |
00000880  e1 0d 03 c0 13 e7 20 a4  70 72 6f 6d 70 74 73 61  |...... .promptsa|
00000890  76 65 20 8c 0d 03 ca 2f  20 c8 99 20 22 4f 53 5f  |ve ..../ .. "OS_|
000008a0  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
000008b0  22 2c 2d 31 2c 31 20 b8  20 2c 2c 63 6f 6c 75 6d  |",-1,1 . ,,colum|
000008c0  6e 73 25 0d 03 d4 1b 20  77 69 64 74 68 25 3d 28  |ns%.... width%=(|
000008d0  63 6f 6c 75 6d 6e 73 25  2d 32 29 2a 31 36 0d 03  |columns%-2)*16..|
000008e0  de 22 20 f2 64 69 28 6d  61 69 6e 25 2c 30 2c 31  |." .di(main%,0,1|
000008f0  35 35 29 3a f2 63 72 65  61 74 65 69 63 6f 6e 73  |55):.createicons|
00000900  0d 03 e8 1d 20 f2 73 68  6f 77 54 69 67 65 72 28  |.... .showTiger(|
00000910  77 69 6e 64 6f 77 73 74  61 74 65 25 29 0d 03 f2  |windowstate%)...|
00000920  05 cd 0d 03 fc 05 e1 0d  04 06 05 3a 0d 04 10 19  |...........:....|
00000930  dd a4 74 61 73 6b 68 61  6e 64 6c 65 28 77 68 25  |..taskhandle(wh%|
00000940  2c 69 68 25 29 0d 04 1a  0b ea 20 74 61 73 6b 25  |,ih%)..... task%|
00000950  0d 04 24 14 71 25 21 30  3d 32 35 36 3a 71 25 21  |..$.q%!0=256:q%!|
00000960  31 32 3d 30 0d 04 2e 31  c8 99 20 22 57 69 6d 70  |12=0...1.. "Wimp|
00000970  5f 53 65 6e 64 4d 65 73  73 61 67 65 22 2c 31 39  |_SendMessage",19|
00000980  2c 71 25 2c 77 68 25 2c  69 68 25 20 b8 20 2c 2c  |,q%,wh%,ih% . ,,|
00000990  74 61 73 6b 25 0d 04 38  0a 3d 74 61 73 6b 25 0d  |task%..8.=task%.|
000009a0  04 42 05 3a 0d 04 4c 12  dd a4 74 61 73 6b 6e 61  |.B.:..L...taskna|
000009b0  6d 65 28 71 25 29 0d 04  56 17 ea 20 73 24 2c 6f  |me(q%)..V.. s$,o|
000009c0  25 3a 73 24 3d 22 22 3a  6f 25 3d 32 38 0d 04 60  |%:s$="":o%=28..`|
000009d0  25 74 61 73 6b 68 61 6e  64 6c 65 25 3d 71 25 21  |%taskhandle%=q%!|
000009e0  32 30 3a 74 61 73 6b 73  69 7a 65 25 3d 71 25 21  |20:tasksize%=q%!|
000009f0  32 34 0d 04 6a 24 c8 95  20 71 25 3f 6f 25 3c 3e  |24..j$.. q%?o%<>|
00000a00  30 3a 73 24 2b 3d bd 28  71 25 3f 6f 25 29 3a 6f  |0:s$+=.(q%?o%):o|
00000a10  25 2b 3d 31 3a ce 0d 04  74 07 3d 73 24 0d 04 7e  |%+=1:...t.=s$..~|
00000a20  05 3a 0d 04 88 0b f4 2d  2d 2d 2d 2d 2d 0d 04 92  |.:.....------...|
00000a30  0b f4 2e 20 49 4e 49 54  0d 04 9c 0b f4 2d 2d 2d  |... INIT.....---|
00000a40  2d 2d 2d 0d 04 a6 05 3a  0d 04 b0 0a dd f2 69 6e  |---....:......in|
00000a50  69 74 0d 04 ba 15 c8 99  20 22 48 6f 75 72 67 6c  |it...... "Hourgl|
00000a60  61 73 73 5f 4f 6e 22 0d  04 c4 14 62 6c 6f 63 6b  |ass_On"....block|
00000a70  73 69 7a 65 25 3d 26 34  30 30 30 0d 04 ce 15 62  |size%=&4000....b|
00000a80  75 66 66 65 72 73 69 7a  65 25 3d 26 31 30 30 30  |uffersize%=&1000|
00000a90  0d 04 d8 13 de 20 71 25  20 62 6c 6f 63 6b 73 69  |..... q% blocksi|
00000aa0  7a 65 25 0d 04 e2 19 de  20 62 75 66 66 65 72 25  |ze%..... buffer%|
00000ab0  20 62 75 66 66 65 72 73  69 7a 65 25 0d 04 ec 13  | buffersize%....|
00000ac0  de 20 43 25 20 26 31 30  30 3a f4 20 77 2f 73 0d  |. C% &100:. w/s.|
00000ad0  04 f6 3b de 20 6d 62 31  25 26 32 30 30 2c 6d 62  |..;. mb1%&200,mb|
00000ae0  32 25 26 32 30 30 2c 6d  62 33 25 26 31 30 30 2c  |2%&200,mb3%&100,|
00000af0  6d 62 34 25 26 31 30 30  2c 6d 62 35 25 26 32 30  |mb4%&100,mb5%&20|
00000b00  30 2c 6d 62 36 25 26 31  30 30 0d 05 00 09 73 25  |0,mb6%&100....s%|
00000b10  3d 31 38 0d 05 0a 36 de  20 6d 69 30 25 73 25 2c  |=18...6. mi0%s%,|
00000b20  6d 69 31 25 73 25 2c 6d  69 32 25 73 25 2c 6d 69  |mi1%s%,mi2%s%,mi|
00000b30  33 25 73 25 2c 6d 69 34  25 73 25 2c 6d 69 35 25  |3%s%,mi4%s%,mi5%|
00000b40  73 25 2c 6d 69 36 25 73  25 0d 05 14 2a de 20 6d  |s%,mi6%s%...*. m|
00000b50  69 37 25 73 25 2c 6d 69  38 25 73 25 2c 6d 69 39  |i7%s%,mi8%s%,mi9|
00000b60  25 73 25 2c 6d 69 31 30  25 73 25 2c 6d 69 31 31  |%s%,mi10%s%,mi11|
00000b70  25 73 25 0d 05 1e 19 de  20 74 69 63 6b 25 28 31  |%s%..... tick%(1|
00000b80  35 29 2c 67 72 65 79 25  28 31 35 29 0d 05 28 05  |5),grey%(15)..(.|
00000b90  3a 0d 05 32 14 f4 20 66  6f 72 20 6d 73 67 20 77  |:..2.. for msg w|
00000ba0  69 6e 64 6f 77 0d 05 3c  15 de 20 69 63 6d 24 28  |indow..<.. icm$(|
00000bb0  33 29 2c 69 63 74 24 28  34 29 0d 05 46 2e de 20  |3),ict$(4)..F.. |
00000bc0  69 63 6d 25 28 33 29 3a  e3 20 4a 25 3d 31 20 b8  |icm%(3):. J%=1 .|
00000bd0  20 33 3a de 20 61 25 20  35 30 3a 69 63 6d 25 28  | 3:. a% 50:icm%(|
00000be0  4a 25 29 3d 61 25 3a ed  0d 05 50 2e de 20 69 63  |J%)=a%:...P.. ic|
00000bf0  6e 25 28 34 29 3a e3 20  4a 25 3d 31 20 b8 20 34  |n%(4):. J%=1 . 4|
00000c00  3a de 20 61 25 20 31 35  3a 69 63 6e 25 28 4a 25  |:. a% 15:icn%(J%|
00000c10  29 3d 61 25 3a ed 0d 05  5a 2e de 20 69 63 76 25  |)=a%:...Z.. icv%|
00000c20  28 34 29 3a e3 20 4a 25  3d 31 20 b8 20 34 3a de  |(4):. J%=1 . 4:.|
00000c30  20 61 25 20 31 30 3a 69  63 76 25 28 4a 25 29 3d  | a% 10:icv%(J%)=|
00000c40  61 25 3a ed 0d 05 64 25  de 20 69 63 78 25 28 34  |a%:...d%. icx%(4|
00000c50  29 2c 69 63 79 25 28 34  29 2c 69 63 77 25 28 34  |),icy%(4),icw%(4|
00000c60  29 2c 69 63 68 25 28 34  29 0d 05 6e 1a 72 65 70  |),ich%(4)..n.rep|
00000c70  6c 79 25 3d 30 3a 65 73  63 25 3d a3 3a 72 65 74  |ly%=0:esc%=.:ret|
00000c80  25 3d a3 0d 05 78 05 3a  0d 05 82 25 de 20 73 70  |%=...x.:...%. sp|
00000c90  72 69 74 61 64 25 20 32  30 3a 24 73 70 72 69 74  |ritad% 20:$sprit|
00000ca0  61 64 25 3d 22 73 74 69  67 62 61 72 22 0d 05 8c  |ad%="stigbar"...|
00000cb0  1e de 20 62 61 72 62 75  66 25 20 38 3a 24 62 61  |.. barbuf% 8:$ba|
00000cc0  72 62 75 66 25 3d 74 61  73 6b 24 0d 05 96 05 3a  |rbuf%=task$....:|
00000cd0  0d 05 a0 16 f4 20 74 65  78 74 20 69 6e 64 69 72  |..... text indir|
00000ce0  65 63 74 69 6f 6e 0d 05  aa 1e de 20 6e 65 77 6e  |ection..... newn|
00000cf0  61 6d 65 25 20 31 33 3a  24 6e 65 77 6e 61 6d 65  |ame% 13:$newname|
00000d00  25 3d 22 22 0d 05 b4 2e  de 20 76 61 6c 6e 61 6d  |%=""..... valnam|
00000d10  65 25 20 32 30 3a 24 76  61 6c 6e 61 6d 65 25 3d  |e% 20:$valname%=|
00000d20  22 41 7e 2e 3a 2a 23 24  26 40 5e 25 5c 22 2b bd  |"A~.:*#$&@^%\"+.|
00000d30  33 34 0d 05 be 3a de 20  76 61 6c 69 64 25 20 35  |34...:. valid% 5|
00000d40  3a 24 76 61 6c 69 64 25  3d 22 41 22 3a f4 20 76  |:$valid%="A":. v|
00000d50  61 6c 69 64 61 74 69 6f  6e 20 73 74 72 69 6e 67  |alidation string|
00000d60  20 66 6f 72 20 69 63 6f  6e 20 37 38 0d 05 c8 05  | for icon 78....|
00000d70  3a 0d 05 d2 0c 6d 61 78  6f 25 3d 37 37 0d 05 dc  |:....maxo%=77...|
00000d80  32 de 20 75 6e 64 6f 24  28 6d 61 78 6f 25 29 3a  |2. undo$(maxo%):|
00000d90  f4 20 63 6f 70 79 20 6f  66 20 64 65 73 63 72 69  |. copy of descri|
00000da0  70 74 69 6f 6e 73 20 66  6f 72 20 75 6e 64 6f 0d  |ptions for undo.|
00000db0  05 e6 32 de 20 72 65 64  6f 24 28 6d 61 78 6f 25  |..2. redo$(maxo%|
00000dc0  29 3a f4 20 63 6f 70 79  20 6f 66 20 64 65 73 63  |):. copy of desc|
00000dd0  72 69 70 74 69 6f 6e 73  20 66 6f 72 20 72 65 64  |riptions for red|
00000de0  6f 0d 05 f0 29 de 20 6c  65 61 66 24 28 6d 61 78  |o...). leaf$(max|
00000df0  6f 25 29 3a f4 20 75 6e  66 6f 72 6d 61 74 74 65  |o%):. unformatte|
00000e00  64 20 6c 65 61 66 6e 61  6d 65 0d 05 fa 2d de 20  |d leafname...-. |
00000e10  6e 61 6d 65 24 28 6d 61  78 6f 25 29 3a f4 20 6c  |name$(maxo%):. l|
00000e20  65 61 66 6e 61 6d 65 73  20 66 72 6f 6d 20 54 69  |eafnames from Ti|
00000e30  67 65 72 44 61 74 61 0d  06 04 30 de 20 64 65 73  |gerData...0. des|
00000e40  63 24 28 6d 61 78 6f 25  29 3a f4 20 64 65 73 63  |c$(maxo%):. desc|
00000e50  72 69 70 74 69 6f 6e 73  20 66 72 6f 6d 20 54 69  |riptions from Ti|
00000e60  67 65 72 44 61 74 61 0d  06 0e 2d de 20 6c 65 6e  |gerData...-. len|
00000e70  25 28 6d 61 78 6f 25 29  20 3a f4 20 6c 65 6e 67  |%(maxo%) :. leng|
00000e80  74 68 20 6f 66 20 6f 62  6a 65 63 74 20 28 62 79  |th of object (by|
00000e90  74 65 73 29 0d 06 18 2a  de 20 73 65 6c 25 28 6d  |tes)...*. sel%(m|
00000ea0  61 78 6f 25 29 20 3a f4  20 6c 69 73 74 20 6f 66  |axo%) :. list of|
00000eb0  20 73 65 6c 65 63 74 65  64 20 6f 62 6a 73 0d 06  | selected objs..|
00000ec0  22 05 3a 0d 06 2c 13 6d  61 78 64 65 73 63 6c 65  |".:..,.maxdescle|
00000ed0  6e 25 3d 31 31 30 0d 06  36 39 f4 20 64 61 74 61  |n%=110..69. data|
00000ee0  20 62 6c 6f 63 6b 73 20  61 6e 64 20 61 64 64 72  | blocks and addr|
00000ef0  65 73 73 65 73 20 66 6f  72 20 69 63 6f 6e 20 74  |esses for icon t|
00000f00  65 78 74 20 69 6e 64 69  72 65 63 74 69 6f 6e 0d  |ext indirection.|
00000f10  06 40 38 de 20 6e 61 6d  65 25 28 6d 61 78 6f 25  |.@8. name%(maxo%|
00000f20  29 3a e3 20 4a 25 3d 30  20 b8 20 6d 61 78 6f 25  |):. J%=0 . maxo%|
00000f30  3a de 20 61 25 20 31 33  3a 6e 61 6d 65 25 28 4a  |:. a% 13:name%(J|
00000f40  25 29 3d 61 25 3a ed 0d  06 4a 36 de 20 76 61 6c  |%)=a%:...J6. val|
00000f50  25 28 6d 61 78 6f 25 29  3a e3 20 4a 25 3d 30 20  |%(maxo%):. J%=0 |
00000f60  b8 20 6d 61 78 6f 25 3a  de 20 61 25 20 32 30 3a  |. maxo%:. a% 20:|
00000f70  76 61 6c 25 28 4a 25 29  3d 61 25 3a ed 0d 06 54  |val%(J%)=a%:...T|
00000f80  43 de 20 64 65 73 63 25  28 6d 61 78 6f 25 29 3a  |C. desc%(maxo%):|
00000f90  e3 20 4a 25 3d 30 20 b8  20 6d 61 78 6f 25 3a de  |. J%=0 . maxo%:.|
00000fa0  20 61 25 20 6d 61 78 64  65 73 63 6c 65 6e 25 2b  | a% maxdesclen%+|
00000fb0  31 3a 64 65 73 63 25 28  4a 25 29 3d 61 25 3a ed  |1:desc%(J%)=a%:.|
00000fc0  0d 06 5e 05 3a 0d 06 68  3b 73 70 72 73 69 7a 65  |..^.:..h;sprsize|
00000fd0  25 3d 26 31 30 30 30 3a  de 20 73 70 72 25 20 73  |%=&1000:. spr% s|
00000fe0  70 72 73 69 7a 65 25 3a  21 73 70 72 25 3d 73 70  |prsize%:!spr%=sp|
00000ff0  72 73 69 7a 65 25 3a 73  70 72 25 21 38 3d 31 36  |rsize%:spr%!8=16|
00001000  0d 06 72 20 c8 99 20 22  4f 53 5f 53 70 72 69 74  |..r .. "OS_Sprit|
00001010  65 4f 70 22 2c 26 31 30  30 2b 39 2c 73 70 72 25  |eOp",&100+9,spr%|
00001020  0d 06 7c 05 3a 0d 06 86  29 f4 20 67 65 74 20 69  |..|.:...). get i|
00001030  6e 69 74 69 61 6c 20 73  6c 6f 74 20 73 69 7a 65  |nitial slot size|
00001040  20 28 73 65 74 20 69 6e  20 21 52 75 6e 29 0d 06  | (set in !Run)..|
00001050  90 1d 72 65 6d 73 6c 6f  74 73 69 7a 65 25 3d a4  |..remslotsize%=.|
00001060  67 65 74 73 6c 6f 74 73  69 7a 65 0d 06 9a 3b 41  |getslotsize...;A|
00001070  25 3d 26 38 30 30 30 2b  72 65 6d 73 6c 6f 74 73  |%=&8000+remslots|
00001080  69 7a 65 25 3a f4 20 6c  6f 61 64 20 61 64 64 72  |ize%:. load addr|
00001090  65 73 73 20 66 6f 72 20  54 69 67 65 72 44 61 74  |ess for TigerDat|
000010a0  61 20 66 69 6c 65 0d 06  a4 05 3a 0d 06 ae 45 c8  |a file....:...E.|
000010b0  99 20 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |. "OS_ReadModeVa|
000010c0  72 69 61 62 6c 65 22 2c  2d 31 2c 31 20 b8 20 2c  |riable",-1,1 . ,|
000010d0  2c 63 6f 6c 75 6d 6e 73  25 3a 77 69 64 74 68 25  |,columns%:width%|
000010e0  3d 28 63 6f 6c 75 6d 6e  73 25 2d 32 29 2a 31 36  |=(columns%-2)*16|
000010f0  0d 06 b8 05 3a 0d 06 c2  1d 73 6f 6c 69 64 25 3d  |....:....solid%=|
00001100  a4 73 6f 6c 69 64 64 72  61 67 3a 72 65 6d 62 25  |.soliddrag:remb%|
00001110  3d 34 0d 06 cc 3b 64 72  61 67 69 63 6f 6e 25 3d  |=4...;dragicon%=|
00001120  31 3a 66 6e 69 63 6f 6e  25 3d 32 3a 6f 6b 69 63  |1:fnicon%=2:okic|
00001130  6f 6e 25 3d 33 3a 63 6c  69 63 6f 6e 25 3d 34 3a  |on%=3:clicon%=4:|
00001140  f4 20 53 61 76 65 20 77  69 6e 64 6f 77 0d 06 d6  |. Save window...|
00001150  05 3a 0d 06 e0 20 74 61  73 6b 64 69 72 24 3d a4  |.:... taskdir$=.|
00001160  6f 73 76 61 72 28 22 54  69 67 65 72 24 44 69 72  |osvar("Tiger$Dir|
00001170  22 29 0d 06 ea 25 74 69  67 73 74 72 24 3d 22 54  |")...%tigstr$="T|
00001180  69 67 65 72 20 64 65 73  63 72 69 70 74 69 6f 6e  |iger description|
00001190  20 66 69 6c 65 73 22 0d  06 f4 1e 69 74 65 6d 73  | files"....items|
000011a0  25 3d 30 3a 66 69 6e 64  24 3d 22 22 3a 63 64 69  |%=0:find$="":cdi|
000011b0  72 24 3d 22 22 0d 06 fe  2f 7a 25 3d 30 3a f4 20  |r$="".../z%=0:. |
000011c0  66 6c 61 67 20 74 6f 20  70 72 65 76 65 6e 74 20  |flag to prevent |
000011d0  64 72 61 67 67 69 6e 67  20 61 20 73 65 6c 65 63  |dragging a selec|
000011e0  74 69 6f 6e 0d 07 08 31  70 72 69 73 74 69 6e 65  |tion...1pristine|
000011f0  25 3d b9 3a f4 20 6e 6f  20 66 69 6c 65 73 20 64  |%=.:. no files d|
00001200  72 61 67 67 65 64 20 6f  6e 74 6f 20 54 69 67 65  |ragged onto Tige|
00001210  72 20 79 65 74 0d 07 12  37 73 74 61 72 25 3d a3  |r yet...7star%=.|
00001220  3a f4 20 61 73 74 65 72  69 73 6b 20 69 6e 20 77  |:. asterisk in w|
00001230  69 6e 64 6f 77 20 74 69  74 6c 65 20 66 6f 72 20  |indow title for |
00001240  63 68 61 6e 67 65 64 20  64 61 74 61 0d 07 1c 34  |changed data...4|
00001250  64 69 73 70 6c 61 79 25  3d 31 20 3a f4 20 31 3d  |display%=1 :. 1=|
00001260  64 65 73 63 73 2c 20 32  3d 6f 62 6a 20 69 6e 66  |descs, 2=obj inf|
00001270  6f 2c 20 33 3d 6e 65 73  74 65 64 20 73 69 7a 65  |o, 3=nested size|
00001280  0d 07 26 3f 6f 6c 64 69  25 3d 30 3a 6f 6c 64 70  |..&?oldi%=0:oldp|
00001290  25 3d 30 3a f4 20 69 63  6f 6e 2c 20 70 6f 73 69  |%=0:. icon, posi|
000012a0  74 69 6f 6e 20 69 6e 20  69 63 6f 6e 20 28 66 6f  |tion in icon (fo|
000012b0  72 20 68 6f 72 69 7a 20  73 63 72 6f 6c 6c 29 0d  |r horiz scroll).|
000012c0  07 30 33 72 65 63 75 72  73 69 6e 67 25 3d a3 3a  |.03recursing%=.:|
000012d0  63 6f 75 6e 74 69 6e 67  25 3d a3 3a 72 65 66 72  |counting%=.:refr|
000012e0  65 73 68 25 3d a3 3a 74  65 78 74 66 6c 61 67 25  |esh%=.:textflag%|
000012f0  3d a3 0d 07 3a 24 70 6f  73 25 3d 30 3a 69 6e 73  |=...:$pos%=0:ins|
00001300  65 72 74 25 3d a3 3a 75  6e 64 6f 25 3d a3 3a 72  |ert%=.:undo%=.:r|
00001310  65 64 6f 25 3d a3 0d 07  44 1c 46 25 3d 30 3a 58  |edo%=...D.F%=0:X|
00001320  25 3d 30 3a f4 20 66 69  6c 65 20 68 61 6e 64 6c  |%=0:. file handl|
00001330  65 73 0d 07 4e 21 75 73  65 72 24 3d 22 44 65 6d  |es..N!user$="Dem|
00001340  6f 6e 73 74 72 61 74 69  6f 6e 22 3a 64 65 6d 6f  |onstration":demo|
00001350  25 3d b9 0d 07 58 05 e1  0d 07 62 05 3a 0d 07 6c  |%=...X....b.:..l|
00001360  0e dd f2 77 69 6d 70 69  6e 69 74 0d 07 76 42 24  |...wimpinit..vB$|
00001370  71 25 3d 22 54 41 53 4b  22 3a c8 99 20 22 57 69  |q%="TASK":.. "Wi|
00001380  6d 70 5f 49 6e 69 74 69  61 6c 69 73 65 22 2c 32  |mp_Initialise",2|
00001390  30 30 2c 21 71 25 2c 74  61 73 6b 24 20 b8 20 76  |00,!q%,task$ . v|
000013a0  65 72 73 69 6f 6e 25 2c  74 61 73 6b 25 0d 07 80  |ersion%,task%...|
000013b0  05 e1 0d 07 8a 05 3a 0d  07 94 0f dd f2 63 6c 6f  |......:......clo|
000013c0  73 65 77 69 6d 70 0d 07  9e 2c 24 71 25 3d 22 54  |sewimp...,$q%="T|
000013d0  41 53 4b 22 3a c8 99 20  22 57 69 6d 70 5f 43 6c  |ASK":.. "Wimp_Cl|
000013e0  6f 73 65 44 6f 77 6e 22  2c 74 61 73 6b 25 2c 21  |oseDown",task%,!|
000013f0  71 25 0d 07 a8 05 e1 0d  07 b2 05 3a 0d 07 bc 0f  |q%.........:....|
00001400  dd f2 69 6e 69 74 69 63  6f 6e 73 0d 07 c6 16 ea  |..initicons.....|
00001410  20 4a 25 2c 77 68 25 3a  77 68 25 3d 69 6e 66 6f  | J%,wh%:wh%=info|
00001420  25 0d 07 d0 2a f2 69 74  28 77 68 25 2c 31 2c 70  |%...*.it(wh%,1,p|
00001430  75 72 70 6f 73 65 24 29  3a f2 69 74 28 77 68 25  |urpose$):.it(wh%|
00001440  2c 32 2c 61 75 74 68 6f  72 24 29 0d 07 da 28 f2  |,2,author$)...(.|
00001450  69 74 28 77 68 25 2c 33  2c 76 65 72 73 69 6f 6e  |it(wh%,3,version|
00001460  24 29 3a f2 69 74 28 77  68 25 2c 34 2c 75 73 65  |$):.it(wh%,4,use|
00001470  72 24 29 0d 07 e4 11 77  68 25 3d 62 75 66 66 77  |r$)....wh%=buffw|
00001480  69 6e 64 25 0d 07 ee 1c  e3 20 4a 25 3d 31 20 b8  |ind%..... J%=1 .|
00001490  20 33 3a f2 75 69 28 77  68 25 2c 4a 25 29 3a ed  | 3:.ui(wh%,J%):.|
000014a0  0d 07 f8 05 e1 0d 08 02  05 3a 0d 08 0c 0d dd f2  |.........:......|
000014b0  69 6e 73 74 61 6c 6c 0d  08 16 27 f4 20 69 6e 73  |install...'. ins|
000014c0  74 61 6c 6c 20 54 69 67  65 72 20 63 6f 6d 70 6c  |tall Tiger compl|
000014d0  65 74 65 20 77 69 74 68  20 64 61 74 61 3f 0d 08  |ete with data?..|
000014e0  20 22 70 61 74 68 24 3d  a4 65 6e 76 3a 64 69 72  | "path$=.env:dir|
000014f0  24 3d a4 70 61 72 65 6e  74 28 70 61 74 68 24 29  |$=.parent(path$)|
00001500  0d 08 2a 2c e7 20 64 69  72 24 3d 22 22 20 80 20  |..*,. dir$="" . |
00001510  73 74 61 72 74 64 69 72  24 3c 3e 22 22 20 64 69  |startdir$<>"" di|
00001520  72 24 3d 73 74 61 72 74  64 69 72 24 0d 08 34 10  |r$=startdir$..4.|
00001530  e7 20 64 69 72 24 3c 3e  22 22 20 8c 0d 08 3e 38  |. dir$<>"" ...>8|
00001540  20 77 69 6e 64 6f 77 73  74 61 74 65 25 3d 30 3a  | windowstate%=0:|
00001550  e7 20 6f 70 65 6e 54 69  67 65 72 25 20 77 69 6e  |. openTiger% win|
00001560  64 6f 77 73 74 61 74 65  25 3d 32 3a f4 20 63 65  |dowstate%=2:. ce|
00001570  6e 74 72 65 0d 08 48 10  20 70 72 69 73 74 69 6e  |ntre..H. pristin|
00001580  65 25 3d a3 0d 08 52 1d  20 f2 73 68 6f 77 54 69  |e%=...R. .showTi|
00001590  67 65 72 28 77 69 6e 64  6f 77 73 74 61 74 65 25  |ger(windowstate%|
000015a0  29 0d 08 5c 05 cd 0d 08  66 18 c8 99 20 22 48 6f  |)..\....f... "Ho|
000015b0  75 72 67 6c 61 73 73 5f  53 6d 61 73 68 22 0d 08  |urglass_Smash"..|
000015c0  70 1e e7 20 6f 70 65 6e  62 75 66 66 25 20 f2 6f  |p.. openbuff% .o|
000015d0  77 28 62 75 66 66 77 69  6e 64 25 29 0d 08 7a 05  |w(buffwind%)..z.|
000015e0  e1 0d 08 84 05 3a 0d 08  8e 14 f4 2d 2d 2d 2d 2d  |.....:.....-----|
000015f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 08 98 14 f4 2e  |----------......|
00001600  20 44 41 54 41 20 54 52  41 4e 53 46 45 52 0d 08  | DATA TRANSFER..|
00001610  a2 14 f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...-------------|
00001620  2d 2d 0d 08 ac 05 3a 0d  08 b6 1a dd f2 64 72 6f  |--....:......dro|
00001630  70 28 73 77 68 25 2c 73  69 68 25 2c 73 6d 62 25  |p(swh%,sih%,smb%|
00001640  29 0d 08 c0 33 f4 20 64  72 61 67 20 65 6e 64 73  |)...3. drag ends|
00001650  20 6f 6e 20 46 69 6c 65  72 2f 41 70 70 2f 50 69  | on Filer/App/Pi|
00001660  6e 62 6f 61 72 64 2f 49  63 6f 6e 62 61 72 2f 54  |nboard/Iconbar/T|
00001670  69 67 65 72 0d 08 ca 22  f4 20 66 69 6e 64 20 6f  |iger...". find o|
00001680  75 74 20 77 68 65 72 65  20 64 72 6f 70 20 6f 63  |ut where drop oc|
00001690  63 75 72 72 65 64 0d 08  d4 20 c8 99 20 22 57 69  |curred... .. "Wi|
000016a0  6d 70 5f 47 65 74 50 6f  69 6e 74 65 72 49 6e 66  |mp_GetPointerInf|
000016b0  6f 22 2c 2c 71 25 0d 08  de 2b 6d 78 25 3d 71 25  |o",,q%...+mx%=q%|
000016c0  21 30 3a 6d 79 25 3d 71  25 21 34 3a 64 77 68 25  |!0:my%=q%!4:dwh%|
000016d0  3d 71 25 21 31 32 3a 64  69 68 25 3d 71 25 21 31  |=q%!12:dih%=q%!1|
000016e0  36 0d 08 e8 05 3a 0d 08  f2 13 f4 20 69 6e 76 61  |6....:..... inva|
000016f0  6c 69 64 20 64 72 6f 70  73 0d 08 fc 1f e7 20 73  |lid drops..... s|
00001700  77 68 25 3d 64 77 68 25  20 80 20 64 77 68 25 3c  |wh%=dwh% . dwh%<|
00001710  3e 6d 61 69 6e 25 20 e1  0d 09 06 24 e7 20 73 77  |>main% ....$. sw|
00001720  68 25 3d 62 75 66 66 77  69 6e 64 25 20 80 20 64  |h%=buffwind% . d|
00001730  77 68 25 3c 3e 6d 61 69  6e 25 20 e1 0d 09 10 12  |wh%<>main% .....|
00001740  e7 20 73 77 68 25 3d 6d  61 69 6e 25 20 8c 0d 09  |. swh%=main% ...|
00001750  1a 1d 20 e7 20 73 69 68  25 3c 37 39 20 80 20 64  |.. . sih%<79 . d|
00001760  77 68 25 3d 6d 61 69 6e  25 20 e1 0d 09 24 30 20  |wh%=main% ...$0 |
00001770  e7 20 73 69 68 25 3e 37  38 20 80 20 64 77 68 25  |. sih%>78 . dwh%|
00001780  3c 3e 6d 61 69 6e 25 20  80 20 64 77 68 25 3c 3e  |<>main% . dwh%<>|
00001790  62 75 66 66 77 69 6e 64  25 20 e1 0d 09 2e 05 cd  |buffwind% ......|
000017a0  0d 09 38 05 3a 0d 09 42  2d e7 20 73 77 68 25 3d  |..8.:..B-. swh%=|
000017b0  6d 61 69 6e 25 20 80 20  73 69 68 25 3c 37 39 20  |main% . sih%<79 |
000017c0  80 20 64 77 68 25 3d 62  75 66 66 77 69 6e 64 25  |. dwh%=buffwind%|
000017d0  20 8c 0d 09 4c 22 20 70  61 74 68 24 3d 64 69 72  | ...L" path$=dir|
000017e0  24 2b 22 2e 22 2b 6c 65  61 66 24 28 63 68 6f 73  |$+"."+leaf$(chos|
000017f0  65 6e 25 29 0d 09 56 2e  20 f2 64 72 61 67 66 69  |en%)..V. .dragfi|
00001800  6c 65 74 6f 62 75 66 66  28 70 61 74 68 24 2c a4  |letobuff(path$,.|
00001810  66 69 6c 65 74 79 70 65  28 70 61 74 68 24 29 29  |filetype(path$))|
00001820  3a e1 0d 09 60 05 cd 0d  09 6a 05 3a 0d 09 74 45  |:...`....j.:..tE|
00001830  e7 20 28 73 77 68 25 3d  6d 61 69 6e 25 20 84 20  |. (swh%=main% . |
00001840  73 77 68 25 3d 62 75 66  66 77 69 6e 64 25 29 20  |swh%=buffwind%) |
00001850  80 20 28 64 77 68 25 3d  6d 61 69 6e 25 20 84 20  |. (dwh%=main% . |
00001860  64 77 68 25 3d 62 75 66  66 77 69 6e 64 25 29 20  |dwh%=buffwind%) |
00001870  8c 0d 09 7e 2b 20 f2 73  68 69 66 74 64 65 73 63  |...~+ .shiftdesc|
00001880  28 73 77 68 25 2c 73 69  68 25 2c 64 77 68 25 2c  |(swh%,sih%,dwh%,|
00001890  64 69 68 25 2c 73 6d 62  25 29 3a e1 0d 09 88 05  |dih%,smb%):.....|
000018a0  cd 0d 09 92 05 3a 0d 09  9c 19 e7 20 64 77 68 25  |.....:..... dwh%|
000018b0  3d 2d 32 20 80 20 64 69  68 25 3d 2d 31 20 8c 0d  |=-2 . dih%=-1 ..|
000018c0  09 a6 14 20 64 74 73 6b  24 3d 22 49 63 6f 6e 42  |... dtsk$="IconB|
000018d0  61 72 22 0d 09 b0 05 cc  0d 09 ba 1c 20 71 25 21  |ar"......... q%!|
000018e0  30 3d 32 30 3a 71 25 21  31 32 3d 30 3a 71 25 21  |0=20:q%!12=0:q%!|
000018f0  31 36 3d 30 0d 09 c4 34  20 c8 99 20 22 57 69 6d  |16=0...4 .. "Wim|
00001900  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 22 2c 31  |p_SendMessage",1|
00001910  39 2c 71 25 2c 64 77 68  25 2c 64 69 68 25 20 b8  |9,q%,dwh%,dih% .|
00001920  20 2c 2c 64 74 73 6b 25  0d 09 ce 1b 20 e7 20 64  | ,,dtsk%.... . d|
00001930  74 73 6b 25 3d 30 20 f2  63 6c 6f 73 65 6d 65 6e  |tsk%=0 .closemen|
00001940  75 3a e1 0d 09 d8 36 20  c8 99 20 22 54 61 73 6b  |u:....6 .. "Task|
00001950  4d 61 6e 61 67 65 72 5f  54 61 73 6b 4e 61 6d 65  |Manager_TaskName|
00001960  46 72 6f 6d 48 61 6e 64  6c 65 22 2c 64 74 73 6b  |FromHandle",dtsk|
00001970  25 20 b8 20 64 74 73 6b  24 0d 09 e2 05 cd 0d 09  |% . dtsk$.......|
00001980  ec 15 e7 20 73 77 68 25  3d 73 61 76 65 62 6f 78  |... swh%=savebox|
00001990  25 20 8c 0d 09 f6 30 20  f2 73 61 76 65 74 65 78  |% ....0 .savetex|
000019a0  74 66 69 6c 65 28 73 77  68 25 2c 64 77 68 25 2c  |tfile(swh%,dwh%,|
000019b0  64 69 68 25 2c 6d 78 25  2c 6d 79 25 2c 64 74 73  |dih%,mx%,my%,dts|
000019c0  6b 24 29 0d 0a 00 05 cc  0d 0a 0a 11 20 66 69 6c  |k$)......... fil|
000019d0  65 72 73 61 76 65 25 3d  a3 0d 0a 14 0f 20 c8 8e  |ersave%=..... ..|
000019e0  20 64 74 73 6b 24 20 ca  0d 0a 1e 26 20 20 c9 20  | dtsk$ ....&  . |
000019f0  22 49 63 6f 6e 42 61 72  22 20 3a f2 69 63 6f 6e  |"IconBar" :.icon|
00001a00  62 61 72 28 73 6d 62 25  2c 73 69 68 25 29 0d 0a  |bar(smb%,sih%)..|
00001a10  28 31 20 20 c9 20 22 46  69 6c 65 72 22 20 20 20  |(1  . "Filer"   |
00001a20  3a f2 66 69 6c 65 72 28  73 77 68 25 2c 64 77 68  |:.filer(swh%,dwh|
00001a30  25 2c 64 69 68 25 2c 6d  78 25 2c 6d 79 25 29 0d  |%,dih%,mx%,my%).|
00001a40  0a 32 25 20 20 c9 20 22  50 69 6e 62 6f 61 72 64  |.2%  . "Pinboard|
00001a50  22 3a f2 70 69 6e 62 6f  61 72 64 28 6d 78 25 2c  |":.pinboard(mx%,|
00001a60  6d 79 25 29 0d 0a 3c 2a  20 20 7f 20 20 20 20 20  |my%)..<*  .     |
00001a70  20 3a f2 61 70 70 28 73  77 68 25 2c 64 77 68 25  | :.app(swh%,dwh%|
00001a80  2c 64 69 68 25 2c 6d 78  25 2c 6d 79 25 29 0d 0a  |,dih%,mx%,my%)..|
00001a90  46 06 20 cb 0d 0a 50 05  cd 0d 0a 5a 05 e1 0d 0a  |F. ...P....Z....|
00001aa0  64 05 3a 0d 0a 6e 12 dd  f2 64 61 74 61 73 61 76  |d.:..n...datasav|
00001ab0  65 28 71 25 29 0d 0a 78  2b f4 20 72 65 73 70 6f  |e(q%)..x+. respo|
00001ac0  6e 73 65 20 62 79 20 57  69 6d 70 20 28 4e 6f 2e  |nse by Wimp (No.|
00001ad0  32 20 2d 20 44 61 74 61  53 61 76 65 41 63 6b 29  |2 - DataSaveAck)|
00001ae0  0d 0a 82 27 f4 20 74 6f  20 64 72 61 67 20 6f 66  |...'. to drag of|
00001af0  20 66 69 6c 65 28 73 29  20 6f 6e 74 6f 20 46 69  | file(s) onto Fi|
00001b00  6c 65 72 2f 41 70 70 0d  0a 8c 24 e7 20 66 69 6c  |ler/App...$. fil|
00001b10  65 72 73 61 76 65 25 20  f2 66 69 6c 65 72 73 61  |ersave% .filersa|
00001b20  76 65 28 71 25 2c 73 77  68 25 29 0d 0a 96 05 e1  |ve(q%,swh%).....|
00001b30  0d 0a a0 05 3a 0d 0a aa  23 f4 2d 2d 2d 2d 2d 2d  |....:...#.------|
00001b40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001b50  2d 2d 2d 2d 2d 2d 2d 2d  0d 0a b4 23 f4 2e 20 44  |--------...#.. D|
00001b60  52 41 47 20 54 45 58 54  20 46 49 4c 45 20 54 4f  |RAG TEXT FILE TO|
00001b70  20 46 49 4c 45 52 2c 20  41 50 50 0d 0a be 23 f4  | FILER, APP...#.|
00001b80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001b90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 0a  |--------------..|
00001ba0  c8 05 3a 0d 0a d2 30 dd  f2 73 61 76 65 74 65 78  |..:...0..savetex|
00001bb0  74 66 69 6c 65 28 73 77  68 25 2c 64 77 68 25 2c  |tfile(swh%,dwh%,|
00001bc0  64 69 68 25 2c 6d 78 25  2c 6d 79 25 2c 64 74 73  |dih%,mx%,my%,dts|
00001bd0  6b 24 29 0d 0a dc 13 f4  20 73 65 6e 64 20 44 61  |k$)..... send Da|
00001be0  74 61 53 61 76 65 0d 0a  e6 1f ea 20 66 73 70 24  |taSave..... fsp$|
00001bf0  2c 6c 65 61 66 24 2c 66  69 6c 65 6c 65 6e 25 2c  |,leaf$,filelen%,|
00001c00  74 79 70 65 25 0d 0a f0  2a e7 20 64 74 73 6b 24  |type%...*. dtsk$|
00001c10  3d 22 49 63 6f 6e 42 61  72 22 20 84 20 64 74 73  |="IconBar" . dts|
00001c20  6b 24 3d 22 50 69 6e 62  6f 61 72 64 22 20 8c 0d  |k$="Pinboard" ..|
00001c30  0a fa 17 20 f2 63 6c 6f  73 65 6d 65 6e 75 3a f2  |... .closemenu:.|
00001c40  62 75 7a 7a 3a e1 0d 0b  04 05 cd 0d 0b 0e 2c 66  |buzz:.........,f|
00001c50  73 70 24 3d a4 69 74 28  73 77 68 25 2c 66 6e 69  |sp$=.it(swh%,fni|
00001c60  63 6f 6e 25 29 3a 6c 65  61 66 24 3d a4 6c 65 61  |con%):leaf$=.lea|
00001c70  66 28 66 73 70 24 29 0d  0b 18 21 e7 20 ac 20 a4  |f(fsp$)...!. . .|
00001c80  6f 6b 74 6f 73 61 76 65  28 73 77 68 25 2c 66 6e  |oktosave(swh%,fn|
00001c90  69 63 6f 6e 25 29 20 e1  0d 0b 22 28 66 69 6c 65  |icon%) ..."(file|
00001ca0  6c 65 6e 25 3d 31 30 30  3a 74 79 70 65 25 3d 26  |len%=100:type%=&|
00001cb0  46 46 46 3a 66 69 6c 65  72 73 61 76 65 25 3d b9  |FFF:filersave%=.|
00001cc0  0d 0b 2c 28 71 25 21 30  3d 28 34 38 2b a9 66 73  |..,(q%!0=(48+.fs|
00001cd0  70 24 29 20 80 20 ac 20  33 3a f4 20 62 6c 6f 63  |p$) . . 3:. bloc|
00001ce0  6b 20 6c 65 6e 67 74 68  0d 0b 36 2c 71 25 21 34  |k length..6,q%!4|
00001cf0  3d 30 3a 71 25 21 38 3d  30 3a 71 25 21 31 32 3d  |=0:q%!8=0:q%!12=|
00001d00  30 3a 71 25 21 31 36 3d  31 3a f4 20 44 61 74 61  |0:q%!16=1:. Data|
00001d10  53 61 76 65 0d 0b 40 2d  71 25 21 32 30 3d 64 77  |Save..@-q%!20=dw|
00001d20  68 25 3a 71 25 21 32 34  3d 64 69 68 25 3a 71 25  |h%:q%!24=dih%:q%|
00001d30  21 32 38 3d 6d 78 25 3a  71 25 21 33 32 3d 6d 79  |!28=mx%:q%!32=my|
00001d40  25 0d 0b 4a 30 71 25 21  33 36 3d 66 69 6c 65 6c  |%..J0q%!36=filel|
00001d50  65 6e 25 3a 71 25 21 34  30 3d 74 79 70 65 25 3a  |en%:q%!40=type%:|
00001d60  24 28 71 25 2b 34 34 29  3d 6c 65 61 66 24 2b bd  |$(q%+44)=leaf$+.|
00001d70  30 0d 0b 54 2b c8 99 20  22 57 69 6d 70 5f 53 65  |0..T+.. "Wimp_Se|
00001d80  6e 64 4d 65 73 73 61 67  65 22 2c 31 38 2c 71 25  |ndMessage",18,q%|
00001d90  2c 71 25 21 32 30 2c 71  25 21 32 34 0d 0b 5e 05  |,q%!20,q%!24..^.|
00001da0  e1 0d 0b 68 05 3a 0d 0b  72 1b dd f2 74 65 78 74  |...h.:..r...text|
00001db0  73 61 76 65 28 71 25 2c  6e 65 77 70 61 74 68 24  |save(q%,newpath$|
00001dc0  29 0d 0b 7c 2a f4 20 44  61 74 61 53 61 76 65 41  |)..|*. DataSaveA|
00001dd0  63 6b 20 72 65 63 65 69  76 65 64 20 2d 20 73 65  |ck received - se|
00001de0  6e 64 20 44 61 74 61 4c  6f 61 64 0d 0b 86 1a e7  |nd DataLoad.....|
00001df0  20 a4 64 65 6d 6f 28 22  54 65 78 74 20 73 61 76  | .demo("Text sav|
00001e00  65 22 29 20 e1 0d 0b 90  1b e7 20 ac 20 a4 63 68  |e") ...... . .ch|
00001e10  65 63 6b 6f 62 6a 28 64  69 72 24 2c b9 29 20 e1  |eckobj(dir$,.) .|
00001e20  0d 0b 9a 18 f2 73 74 61  72 74 73 61 76 65 28 6e  |.....startsave(n|
00001e30  65 77 70 61 74 68 24 29  0d 0b a4 12 f2 73 61 76  |ewpath$).....sav|
00001e40  65 64 69 72 28 64 69 72  24 29 0d 0b ae 25 e7 20  |edir(dir$)...%. |
00001e50  a4 69 73 28 73 61 76 65  62 6f 78 25 2c 31 32 29  |.is(savebox%,12)|
00001e60  20 f2 72 65 63 75 72 73  69 76 65 73 61 76 65 0d  | .recursivesave.|
00001e70  0b b8 16 f2 65 6e 64 73  61 76 65 28 6e 65 77 70  |....endsave(newp|
00001e80  61 74 68 24 29 0d 0b c2  24 f4 20 6f 6e 6c 79 20  |ath$)...$. only |
00001e90  75 70 64 61 74 65 20 66  69 6c 65 6e 61 6d 65 20  |update filename |
00001ea0  69 66 20 73 65 63 75 72  65 0d 0b cc 2f e7 20 71  |if secure.../. q|
00001eb0  25 21 33 36 3e 2d 31 20  8c 20 f2 69 74 28 73 61  |%!36>-1 . .it(sa|
00001ec0  76 65 62 6f 78 25 2c 66  6e 69 63 6f 6e 25 2c 6e  |vebox%,fnicon%,n|
00001ed0  65 77 70 61 74 68 24 29  0d 0b d6 29 71 25 21 30  |ewpath$)...)q%!0|
00001ee0  3d 36 34 3a 71 25 21 31  32 3d 71 25 21 38 3a 71  |=64:q%!12=q%!8:q|
00001ef0  25 21 31 36 3d 33 3a f4  20 44 61 74 61 4c 6f 61  |%!16=3:. DataLoa|
00001f00  64 0d 0b e0 23 71 25 21  34 30 3d 26 46 46 46 3a  |d...#q%!40=&FFF:|
00001f10  24 28 71 25 2b 34 34 29  3d 6e 65 77 70 61 74 68  |$(q%+44)=newpath|
00001f20  24 2b bd 30 0d 0b ea 2b  c8 99 20 22 57 69 6d 70  |$+.0...+.. "Wimp|
00001f30  5f 53 65 6e 64 4d 65 73  73 61 67 65 22 2c 31 38  |_SendMessage",18|
00001f40  2c 71 25 2c 71 25 21 32  30 2c 71 25 21 32 34 0d  |,q%,q%!20,q%!24.|
00001f50  0b f4 05 e1 0d 0b fe 05  3a 0d 0c 08 12 f4 2d 2d  |........:.....--|
00001f60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 0c 12 12 f4  |-----------.....|
00001f70  2e 20 44 52 41 47 20 54  4f 20 41 50 50 0d 0c 1c  |. DRAG TO APP...|
00001f80  12 f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |..-------------.|
00001f90  0c 26 05 3a 0d 0c 30 21  dd f2 61 70 70 28 73 77  |.&.:..0!..app(sw|
00001fa0  68 25 2c 64 77 68 25 2c  64 69 68 25 2c 6d 78 25  |h%,dwh%,dih%,mx%|
00001fb0  2c 6d 79 25 29 0d 0c 3a  35 71 25 21 31 32 3d 30  |,my%)..:5q%!12=0|
00001fc0  3a 71 25 21 32 30 3d 64  77 68 25 3a 71 25 21 32  |:q%!20=dwh%:q%!2|
00001fd0  34 3d 64 69 68 25 3a 71  25 21 32 38 3d 6d 78 25  |4=dih%:q%!28=mx%|
00001fe0  3a 71 25 21 33 32 3d 6d  79 25 0d 0c 44 34 73 65  |:q%!32=my%..D4se|
00001ff0  6c 25 3d a4 73 65 6c 3a  e7 20 73 77 68 25 3d 63  |l%=.sel:. swh%=c|
00002000  6f 70 79 62 6f 78 25 20  73 65 6c 25 3d 31 3a 73  |opybox% sel%=1:s|
00002010  65 6c 25 28 31 29 3d 63  68 6f 73 65 6e 25 0d 0c  |el%(1)=chosen%..|
00002020  4e 11 e3 20 4a 25 3d 31  20 b8 20 73 65 6c 25 0d  |N.. J%=1 . sel%.|
00002030  0c 58 24 20 73 66 73 70  24 3d 64 69 72 24 2b 22  |.X$ sfsp$=dir$+"|
00002040  2e 22 2b 24 6e 61 6d 65  25 28 73 65 6c 25 28 4a  |."+$name%(sel%(J|
00002050  25 29 29 0d 0c 62 27 20  74 79 70 65 25 3d a4 66  |%))..b' type%=.f|
00002060  69 6c 65 74 79 70 65 28  73 66 73 70 24 29 3a 71  |iletype(sfsp$):q|
00002070  25 21 34 30 3d 74 79 70  65 25 0d 0c 6c 1c 20 71  |%!40=type%..l. q|
00002080  25 21 30 3d 28 28 34 38  2b a9 73 66 73 70 24 29  |%!0=((48+.sfsp$)|
00002090  81 20 34 29 2a 34 0d 0c  76 29 20 24 28 71 25 2b  |. 4)*4..v) $(q%+|
000020a0  34 34 29 3d 73 66 73 70  24 2b bd 30 3a 71 25 21  |44)=sfsp$+.0:q%!|
000020b0  31 36 3d 33 3a f4 20 44  61 74 61 4c 6f 61 64 0d  |16=3:. DataLoad.|
000020c0  0c 80 2a 20 c8 99 20 22  57 69 6d 70 5f 53 65 6e  |..* .. "Wimp_Sen|
000020d0  64 4d 65 73 73 61 67 65  22 2c 31 37 2c 71 25 2c  |dMessage",17,q%,|
000020e0  64 77 68 25 2c 64 69 68  25 0d 0c 8a 05 ed 0d 0c  |dwh%,dih%.......|
000020f0  94 0d f2 63 6c 65 61 72  61 6c 6c 0d 0c 9e 05 e1  |...clearall.....|
00002100  0d 0c a8 05 3a 0d 0c b2  14 f4 2d 2d 2d 2d 2d 2d  |....:.....------|
00002110  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 0c bc 14 f4 2e 20  |---------...... |
00002120  44 52 41 47 20 54 4f 20  46 49 4c 45 52 0d 0c c6  |DRAG TO FILER...|
00002130  14 f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..--------------|
00002140  2d 0d 0c d0 05 3a 0d 0c  da 23 dd f2 66 69 6c 65  |-....:...#..file|
00002150  72 28 73 77 68 25 2c 64  77 68 25 2c 64 69 68 25  |r(swh%,dwh%,dih%|
00002160  2c 6d 78 25 2c 6d 79 25  29 0d 0c e4 28 f4 20 64  |,mx%,my%)...(. d|
00002170  72 61 67 20 65 6e 64 73  20 6f 6e 20 46 69 6c 65  |rag ends on File|
00002180  72 20 2d 20 73 65 6e 64  20 44 61 74 61 53 61 76  |r - send DataSav|
00002190  65 0d 0c ee 1f ea 20 66  73 70 24 2c 6c 65 61 66  |e..... fsp$,leaf|
000021a0  24 2c 66 69 6c 65 6c 65  6e 25 2c 74 79 70 65 25  |$,filelen%,type%|
000021b0  0d 0c f8 10 66 69 6c 65  72 73 61 76 65 25 3d b9  |....filersave%=.|
000021c0  0d 0d 02 0d c8 8e 20 73  77 68 25 20 ca 0d 0d 0c  |...... swh% ....|
000021d0  10 20 c9 20 63 6f 70 79  62 6f 78 25 3a 0d 0d 16  |. . copybox%:...|
000021e0  1b 20 66 73 70 24 3d a4  69 74 28 73 77 68 25 2c  |. fsp$=.it(swh%,|
000021f0  66 6e 69 63 6f 6e 25 29  0d 0d 20 16 20 6c 65 61  |fnicon%).. . lea|
00002200  66 24 3d a4 6c 65 61 66  28 66 73 70 24 29 0d 0d  |f$=.leaf(fsp$)..|
00002210  2a 1c 20 66 69 6c 65 6c  65 6e 25 3d a4 66 69 6c  |*. filelen%=.fil|
00002220  65 6c 65 6e 28 66 73 70  24 29 0d 0d 34 1a 20 74  |elen(fsp$)..4. t|
00002230  79 70 65 25 3d a4 66 69  6c 65 74 79 70 65 28 66  |ype%=.filetype(f|
00002240  73 70 24 29 0d 0d 3e 10  20 c9 20 73 61 76 65 62  |sp$)..>. . saveb|
00002250  6f 78 25 3a 0d 0d 48 1b  20 66 73 70 24 3d a4 69  |ox%:..H. fsp$=.i|
00002260  74 28 73 77 68 25 2c 66  6e 69 63 6f 6e 25 29 0d  |t(swh%,fnicon%).|
00002270  0d 52 16 20 6c 65 61 66  24 3d a4 6c 65 61 66 28  |.R. leaf$=.leaf(|
00002280  66 73 70 24 29 0d 0d 5c  1c 20 66 69 6c 65 6c 65  |fsp$)..\. filele|
00002290  6e 25 3d 31 30 30 3a 74  79 70 65 25 3d 26 46 46  |n%=100:type%=&FF|
000022a0  46 0d 0d 66 07 20 7f 3a  0d 0d 70 19 20 6c 65 61  |F..f. .:..p. lea|
000022b0  66 24 3d 6c 65 61 66 24  28 63 68 6f 73 65 6e 25  |f$=leaf$(chosen%|
000022c0  29 0d 0d 7a 18 20 66 73  70 24 3d 64 69 72 24 2b  |)..z. fsp$=dir$+|
000022d0  22 2e 22 2b 6c 65 61 66  24 0d 0d 84 1c 20 66 69  |"."+leaf$.... fi|
000022e0  6c 65 6c 65 6e 25 3d a4  66 69 6c 65 6c 65 6e 28  |lelen%=.filelen(|
000022f0  66 73 70 24 29 0d 0d 8e  1a 20 74 79 70 65 25 3d  |fsp$).... type%=|
00002300  a4 66 69 6c 65 74 79 70  65 28 66 73 70 24 29 0d  |.filetype(fsp$).|
00002310  0d 98 05 cb 0d 0d a2 28  71 25 21 30 3d 28 34 38  |.......(q%!0=(48|
00002320  2b a9 66 73 70 24 29 20  80 20 ac 20 33 3a f4 20  |+.fsp$) . . 3:. |
00002330  62 6c 6f 63 6b 20 6c 65  6e 67 74 68 0d 0d ac 2c  |block length...,|
00002340  71 25 21 34 3d 30 3a 71  25 21 38 3d 30 3a 71 25  |q%!4=0:q%!8=0:q%|
00002350  21 31 32 3d 30 3a 71 25  21 31 36 3d 31 3a f4 20  |!12=0:q%!16=1:. |
00002360  44 61 74 61 53 61 76 65  0d 0d b6 2d 71 25 21 32  |DataSave...-q%!2|
00002370  30 3d 64 77 68 25 3a 71  25 21 32 34 3d 64 69 68  |0=dwh%:q%!24=dih|
00002380  25 3a 71 25 21 32 38 3d  6d 78 25 3a 71 25 21 33  |%:q%!28=mx%:q%!3|
00002390  32 3d 6d 79 25 0d 0d c0  30 71 25 21 33 36 3d 66  |2=my%...0q%!36=f|
000023a0  69 6c 65 6c 65 6e 25 3a  71 25 21 34 30 3d 74 79  |ilelen%:q%!40=ty|
000023b0  70 65 25 3a 24 28 71 25  2b 34 34 29 3d 6c 65 61  |pe%:$(q%+44)=lea|
000023c0  66 24 2b bd 30 0d 0d ca  2b c8 99 20 22 57 69 6d  |f$+.0...+.. "Wim|
000023d0  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 22 2c 31  |p_SendMessage",1|
000023e0  38 2c 71 25 2c 71 25 21  32 30 2c 71 25 21 32 34  |8,q%,q%!20,q%!24|
000023f0  0d 0d d4 05 e1 0d 0d de  05 3a 0d 0d e8 18 dd f2  |.........:......|
00002400  66 69 6c 65 72 73 61 76  65 28 71 25 2c 73 77 68  |filersave(q%,swh|
00002410  25 29 0d 0d f2 1d f4 20  72 65 73 70 6f 6e 73 65  |%)..... response|
00002420  20 74 6f 20 44 61 74 61  53 61 76 65 41 63 6b 0d  | to DataSaveAck.|
00002430  0d fc 2f ea 20 4a 25 2c  4b 25 2c 73 65 6c 25 2c  |../. J%,K%,sel%,|
00002440  64 70 61 74 68 24 2c 64  64 69 72 24 2c 6c 65 61  |dpath$,ddir$,lea|
00002450  66 24 2c 73 66 73 70 24  2c 64 66 73 70 24 0d 0e  |f$,sfsp$,dfsp$..|
00002460  06 2d 46 69 6c 65 72 41  63 74 69 6f 6e 25 3d a4  |.-FilerAction%=.|
00002470  66 69 6c 65 72 61 63 74  69 6f 6e 3a 6f 70 74 73  |fileraction:opts|
00002480  25 3d a4 72 65 61 64 6f  70 74 73 0d 0e 10 0d 73  |%=.readopts....s|
00002490  65 6c 25 3d a4 73 65 6c  0d 0e 1a 17 64 70 61 74  |el%=.sel....dpat|
000024a0  68 24 3d a4 6e 61 6d 65  28 71 25 2b 34 34 29 0d  |h$=.name(q%+44).|
000024b0  0e 24 19 64 64 69 72 24  3d a4 70 61 72 65 6e 74  |.$.ddir$=.parent|
000024c0  28 64 70 61 74 68 24 29  0d 0e 2e 0d c8 8e 20 73  |(dpath$)...... s|
000024d0  77 68 25 20 ca 0d 0e 38  22 20 c9 20 63 6f 70 79  |wh% ...8" . copy|
000024e0  62 6f 78 25 3a f2 63 6f  70 79 28 64 64 69 72 24  |box%:.copy(ddir$|
000024f0  2c 72 65 6d 62 25 29 0d  0e 42 24 20 c9 20 73 61  |,remb%)..B$ . sa|
00002500  76 65 62 6f 78 25 3a f2  74 65 78 74 73 61 76 65  |vebox%:.textsave|
00002510  28 71 25 2c 64 70 61 74  68 24 29 0d 0e 4c 07 20  |(q%,dpath$)..L. |
00002520  7f 3a 0d 0e 56 0e 20 f2  63 6c 65 61 72 61 6c 6c  |.:..V. .clearall|
00002530  0d 0e 60 06 20 3a 0d 0e  6a 28 20 f4 20 64 6f 65  |..`. :..j( . doe|
00002540  73 20 64 64 69 72 24 20  68 61 76 65 20 61 20 54  |s ddir$ have a T|
00002550  69 67 65 72 44 61 74 61  20 66 69 6c 65 3f 0d 0e  |igerData file?..|
00002560  74 37 20 66 73 70 24 3d  64 64 69 72 24 2b 22 2e  |t7 fsp$=ddir$+".|
00002570  54 69 67 65 72 44 61 74  61 22 3a 70 72 65 73 65  |TigerData":prese|
00002580  6e 74 25 3d a4 63 68 65  63 6b 6f 62 6a 28 66 73  |nt%=.checkobj(fs|
00002590  70 24 2c a3 29 0d 0e 7e  13 20 e7 20 ac 20 70 72  |p$,.)..~. . . pr|
000025a0  65 73 65 6e 74 25 20 8c  0d 0e 88 0e 20 20 64 65  |esent% .....  de|
000025b0  73 63 73 25 3d 30 0d 0e  92 06 20 cc 0d 0e 9c 21  |scs%=0.... ....!|
000025c0  20 20 64 65 73 63 73 25  3d a4 6c 6f 61 64 54 69  |  descs%=.loadTi|
000025d0  67 65 72 44 61 74 61 28  66 73 70 24 29 0d 0e a6  |gerData(fsp$)...|
000025e0  06 20 cd 0d 0e b0 06 20  3a 0d 0e ba 35 20 e7 20  |. ..... :...5 . |
000025f0  46 69 6c 65 72 41 63 74  69 6f 6e 25 20 c8 99 20  |FilerAction% .. |
00002600  26 34 30 30 44 45 2c 22  46 69 6c 65 72 5f 41 63  |&400DE,"Filer_Ac|
00002610  74 69 6f 6e 22 20 b8 20  74 61 73 6b 68 25 0d 0e  |tion" . taskh%..|
00002620  c4 06 20 3a 0d 0e ce 12  20 e3 20 4a 25 3d 31 20  |.. :.... . J%=1 |
00002630  b8 20 73 65 6c 25 0d 0e  d8 1b 20 20 6c 65 61 66  |. sel%....  leaf|
00002640  24 3d 6c 65 61 66 24 28  73 65 6c 25 28 4a 25 29  |$=leaf$(sel%(J%)|
00002650  29 0d 0e e2 1a 20 20 73  66 73 70 24 3d 64 69 72  |)....  sfsp$=dir|
00002660  24 2b 22 2e 22 2b 6c 65  61 66 24 0d 0e ec 1b 20  |$+"."+leaf$.... |
00002670  20 64 66 73 70 24 3d 64  64 69 72 24 2b 22 2e 22  | dfsp$=ddir$+"."|
00002680  2b 6c 65 61 66 24 0d 0e  f6 3f 20 20 e7 20 a4 63  |+leaf$...?  . .c|
00002690  68 65 63 6b 6f 62 6a 28  73 66 73 70 24 2c b9 29  |heckobj(sfsp$,.)|
000026a0  20 80 20 ac 20 28 70 72  65 73 65 6e 74 25 20 80  | . . (present% .|
000026b0  20 6c 65 61 66 24 3d 22  54 69 67 65 72 44 61 74  | leaf$="TigerDat|
000026c0  61 22 29 20 8c 0d 0f 00  17 20 20 20 e7 20 46 69  |a") .....   . Fi|
000026d0  6c 65 72 41 63 74 69 6f  6e 25 20 8c 0d 0f 0a 1d  |lerAction% .....|
000026e0  20 20 20 20 c8 99 20 26  34 30 46 38 30 2c 74 61  |    .. &40F80,ta|
000026f0  73 6b 68 25 2c 64 69 72  24 0d 0f 14 1e 20 20 20  |skh%,dir$....   |
00002700  20 c8 99 20 26 34 30 46  38 31 2c 74 61 73 6b 68  | .. &40F81,taskh|
00002710  25 2c 6c 65 61 66 24 0d  0f 1e 08 20 20 20 cc 0d  |%,leaf$....   ..|
00002720  0f 28 23 20 20 20 20 e7  20 a6 2d 31 20 64 65 6c  |.(#    . .-1 del|
00002730  65 74 65 25 3d b9 20 8b  20 64 65 6c 65 74 65 25  |ete%=. . delete%|
00002740  3d a3 0d 0f 32 1f 20 20  20 20 6f 70 74 24 3d a4  |=...2.    opt$=.|
00002750  63 6f 70 79 6f 70 74 73  28 64 65 6c 65 74 65 25  |copyopts(delete%|
00002760  29 0d 0f 3c 23 20 20 20  20 e7 20 a6 2d 31 20 74  |)..<#    . .-1 t|
00002770  24 3d 22 4d 6f 76 65 22  20 8b 20 74 24 3d 22 43  |$="Move" . t$="C|
00002780  6f 70 79 22 0d 0f 46 3e  20 20 20 20 f2 63 6f 6d  |opy"..F>    .com|
00002790  6d 61 6e 64 28 74 24 2b  22 20 66 69 6c 65 73 22  |mand(t$+" files"|
000027a0  2c 22 43 6f 70 79 20 22  2b 73 66 73 70 24 2b 22  |,"Copy "+sfsp$+"|
000027b0  20 22 2b 64 66 73 70 24  2b 22 20 22 2b 6f 70 74  | "+dfsp$+" "+opt|
000027c0  24 29 0d 0f 50 08 20 20  20 cd 0d 0f 5a 07 20 20  |$)..P.   ...Z.  |
000027d0  cd 0d 0f 64 06 20 ed 0d  0f 6e 06 20 3a 0d 0f 78  |...d. ...n. :..x|
000027e0  15 20 e7 20 46 69 6c 65  72 41 63 74 69 6f 6e 25  |. . FilerAction%|
000027f0  20 8c 0d 0f 82 17 20 20  e7 20 a6 2d 31 20 6e 25  | .....  . .-1 n%|
00002800  3d 36 20 8b 20 6e 25 3d  30 0d 0f 8c 2e 20 20 c8  |=6 . n%=0....  .|
00002810  99 20 26 34 30 46 38 32  2c 74 61 73 6b 68 25 2c  |. &40F82,taskh%,|
00002820  6e 25 2c 6f 70 74 73 25  2c 64 64 69 72 24 2c a9  |n%,opts%,ddir$,.|
00002830  64 64 69 72 24 2b 31 0d  0f 96 06 20 cd 0d 0f a0  |ddir$+1.... ....|
00002840  2a 20 71 25 21 30 3d 36  34 3a 71 25 21 31 32 3d  |* q%!0=64:q%!12=|
00002850  71 25 21 38 3a 71 25 21  31 36 3d 33 3a f4 20 44  |q%!8:q%!16=3:. D|
00002860  61 74 61 4c 6f 61 64 0d  0f aa 2c 20 c8 99 20 22  |ataLoad..., .. "|
00002870  57 69 6d 70 5f 53 65 6e  64 4d 65 73 73 61 67 65  |Wimp_SendMessage|
00002880  22 2c 31 38 2c 71 25 2c  71 25 21 32 30 2c 71 25  |",18,q%,q%!20,q%|
00002890  21 32 34 0d 0f b4 18 20  e7 20 72 65 6d 62 25 3d  |!24.... . remb%=|
000028a0  31 20 f2 63 77 28 73 77  68 25 29 0d 0f be 06 20  |1 .cw(swh%).... |
000028b0  3a 0d 0f c8 2f 20 f4 20  74 72 61 6e 73 66 65 72  |:.../ . transfer|
000028c0  20 69 6e 63 6f 6d 69 6e  67 20 64 65 73 63 72 69  | incoming descri|
000028d0  70 74 69 6f 6e 73 20 74  6f 20 61 72 72 61 79 73  |ptions to arrays|
000028e0  0d 0f d2 12 20 e3 20 4a  25 3d 31 20 b8 20 73 65  |.... . J%=1 . se|
000028f0  6c 25 0d 0f dc 1b 20 20  6e 61 6d 65 24 3d 6c 65  |l%....  name$=le|
00002900  61 66 24 28 73 65 6c 25  28 4a 25 29 29 0d 0f e6  |af$(sel%(J%))...|
00002910  35 20 20 64 65 73 63 24  3d 24 64 65 73 63 25 28  |5  desc$=$desc%(|
00002920  73 65 6c 25 28 4a 25 29  29 3a e7 20 64 65 73 63  |sel%(J%)):. desc|
00002930  24 3d 74 69 67 73 74 72  24 20 64 65 73 63 24 3d  |$=tigstr$ desc$=|
00002940  22 22 0d 0f f0 07 20 20  3a 0d 0f fa 13 20 20 e7  |""....  :....  .|
00002950  20 64 65 73 63 24 3c 3e  22 22 20 8c 0d 10 04 0f  | desc$<>"" .....|
00002960  20 20 20 66 6f 75 6e 64  25 3d a3 0d 10 0e 16 20  |   found%=..... |
00002970  20 20 e3 20 4b 25 3d 31  20 b8 20 64 65 73 63 73  |  . K%=1 . descs|
00002980  25 0d 10 18 3c 20 20 20  20 e7 20 6e 61 6d 65 24  |%...<    . name$|
00002990  28 4b 25 29 3d 6e 61 6d  65 24 20 64 65 73 63 24  |(K%)=name$ desc$|
000029a0  28 4b 25 29 3d 64 65 73  63 24 3a 66 6f 75 6e 64  |(K%)=desc$:found|
000029b0  25 3d b9 3a 4b 25 3d 64  65 73 63 73 25 0d 10 22  |%=.:K%=descs%.."|
000029c0  08 20 20 20 ed 0d 10 2c  13 20 20 20 e7 20 ac 20  |.   ...,.   . . |
000029d0  66 6f 75 6e 64 25 20 8c  0d 10 36 39 20 20 20 20  |found% ...69    |
000029e0  64 65 73 63 73 25 2b 3d  31 3a 6e 61 6d 65 24 28  |descs%+=1:name$(|
000029f0  64 65 73 63 73 25 29 3d  6e 61 6d 65 24 3a 64 65  |descs%)=name$:de|
00002a00  73 63 24 28 64 65 73 63  73 25 29 3d 64 65 73 63  |sc$(descs%)=desc|
00002a10  24 0d 10 40 08 20 20 20  cd 0d 10 4a 07 20 20 cd  |$..@.   ...J.  .|
00002a20  0d 10 54 07 20 20 3a 0d  10 5e 06 20 ed 0d 10 68  |..T.  :..^. ...h|
00002a30  1c 20 f2 77 72 69 74 65  54 69 67 65 72 44 61 74  |. .writeTigerDat|
00002a40  61 28 64 65 73 63 73 25  29 0d 10 72 05 cb 0d 10  |a(descs%)..r....|
00002a50  7c 05 e1 0d 10 86 05 3a  0d 10 90 20 f4 2d 2d 2d  ||......:... .---|
00002a60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002a70  2d 2d 2d 2d 2d 2d 2d 2d  0d 10 9a 20 f4 2e 20 44  |--------... .. D|
00002a80  52 41 47 20 54 4f 20 50  49 4e 42 4f 41 52 44 2c  |RAG TO PINBOARD,|
00002a90  20 49 43 4f 4e 42 41 52  0d 10 a4 20 f4 2d 2d 2d  | ICONBAR... .---|
00002aa0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002ab0  2d 2d 2d 2d 2d 2d 2d 2d  0d 10 ae 05 3a 0d 10 b8  |--------....:...|
00002ac0  17 dd f2 70 69 6e 62 6f  61 72 64 28 6d 78 25 2c  |...pinboard(mx%,|
00002ad0  6d 79 25 29 0d 10 c2 16  ea 20 4a 25 2c 6e 24 2c  |my%)..... J%,n$,|
00002ae0  66 73 70 24 2c 78 25 2c  79 25 0d 10 cc 11 78 25  |fsp$,x%,y%....x%|
00002af0  3d 6d 78 25 3a 79 25 3d  6d 79 25 0d 10 d6 34 73  |=mx%:y%=my%...4s|
00002b00  65 6c 25 3d a4 73 65 6c  3a e7 20 73 77 68 25 3d  |el%=.sel:. swh%=|
00002b10  63 6f 70 79 62 6f 78 25  20 73 65 6c 25 3d 31 3a  |copybox% sel%=1:|
00002b20  73 65 6c 25 28 31 29 3d  63 68 6f 73 65 6e 25 0d  |sel%(1)=chosen%.|
00002b30  10 e0 11 e3 20 4a 25 3d  31 20 b8 20 73 65 6c 25  |.... J%=1 . sel%|
00002b40  0d 10 ea 17 20 6e 24 3d  6c 65 61 66 24 28 73 65  |.... n$=leaf$(se|
00002b50  6c 25 28 4a 25 29 29 0d  10 f4 1c 20 78 24 3d c3  |l%(J%)).... x$=.|
00002b60  78 25 3a e7 20 78 25 3c  30 20 78 24 3d 22 30 22  |x%:. x%<0 x$="0"|
00002b70  2b 78 24 0d 10 fe 1c 20  79 24 3d c3 79 25 3a e7  |+x$.... y$=.y%:.|
00002b80  20 79 25 3c 30 20 79 24  3d 22 30 22 2b 79 24 0d  | y%<0 y$="0"+y$.|
00002b90  11 08 28 20 ff 28 22 50  69 6e 20 22 2b 64 69 72  |..( .("Pin "+dir|
00002ba0  24 2b 22 2e 22 2b 6e 24  2b 22 20 22 2b 78 24 2b  |$+"."+n$+" "+x$+|
00002bb0  22 20 22 2b 79 24 29 0d  11 12 28 20 e7 20 4a 25  |" "+y$)...( . J%|
00002bc0  20 83 20 34 3d 30 20 79  25 2d 3d 31 31 36 3a 78  | . 4=0 y%-=116:x|
00002bd0  25 3d 6d 78 25 20 8b 20  78 25 2b 3d 31 38 38 0d  |%=mx% . x%+=188.|
00002be0  11 1c 05 ed 0d 11 26 0e  f2 63 6c 6f 73 65 6d 65  |......&..closeme|
00002bf0  6e 75 0d 11 30 1e e7 20  72 65 6d 62 25 3d 31 20  |nu..0.. remb%=1 |
00002c00  f2 63 77 28 6d 61 69 6e  25 29 3a f4 20 41 64 6a  |.cw(main%):. Adj|
00002c10  0d 11 3a 05 e1 0d 11 44  05 3a 0d 11 4e 18 dd f2  |..:....D.:..N...|
00002c20  69 63 6f 6e 62 61 72 28  73 6d 62 25 2c 73 69 68  |iconbar(smb%,sih|
00002c30  25 29 0d 11 58 08 ea 20  4a 25 0d 11 62 34 73 65  |%)..X.. J%..b4se|
00002c40  6c 25 3d a4 73 65 6c 3a  e7 20 73 77 68 25 3d 63  |l%=.sel:. swh%=c|
00002c50  6f 70 79 62 6f 78 25 20  73 65 6c 25 3d 31 3a 73  |opybox% sel%=1:s|
00002c60  65 6c 25 28 31 29 3d 63  68 6f 73 65 6e 25 0d 11  |el%(1)=chosen%..|
00002c70  6c 11 e3 20 4a 25 3d 31  20 b8 20 73 65 6c 25 0d  |l.. J%=1 . sel%.|
00002c80  11 76 20 20 f2 64 6f 75  62 6c 65 63 6c 69 63 6b  |.v  .doubleclick|
00002c90  28 73 6d 62 25 2c 73 65  6c 25 28 4a 25 29 29 0d  |(smb%,sel%(J%)).|
00002ca0  11 80 05 ed 0d 11 8a 05  e1 0d 11 94 05 3a 0d 11  |.............:..|
00002cb0  9e 12 f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...-------------|
00002cc0  0d 11 a8 12 f4 2e 20 43  4f 50 59 20 4f 42 4a 45  |...... COPY OBJE|
00002cd0  43 54 0d 11 b2 12 f4 2d  2d 2d 2d 2d 2d 2d 2d 2d  |CT.....---------|
00002ce0  2d 2d 2d 2d 0d 11 bc 05  3a 0d 11 c6 11 dd f2 70  |----....:......p|
00002cf0  72 65 70 63 6f 70 79 62  6f 78 0d 11 d0 16 ea 20  |repcopybox..... |
00002d00  77 68 25 3a 77 68 25 3d  63 6f 70 79 62 6f 78 25  |wh%:wh%=copybox%|
00002d10  0d 11 da 18 6c 65 61 66  24 3d 6c 65 61 66 24 28  |....leaf$=leaf$(|
00002d20  63 68 6f 73 65 6e 25 29  0d 11 e4 14 f2 69 74 28  |chosen%).....it(|
00002d30  77 68 25 2c 32 2c 6c 65  61 66 24 29 0d 11 ee 2e  |wh%,2,leaf$)....|
00002d40  71 25 21 30 3d 77 68 25  3a 71 25 21 34 3d 31 3a  |q%!0=wh%:q%!4=1:|
00002d50  c8 99 20 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |.. "Wimp_GetIcon|
00002d60  53 74 61 74 65 22 2c 2c  71 25 0d 11 f8 20 24 28  |State",,q%... $(|
00002d70  71 25 21 32 38 29 3d a4  73 70 72 28 77 68 25 2c  |q%!28)=.spr(wh%,|
00002d80  64 72 61 67 69 63 6f 6e  25 29 0d 12 02 05 e1 0d  |dragicon%)......|
00002d90  12 0c 05 3a 0d 12 16 17  dd f2 63 6f 70 79 28 64  |...:......copy(d|
00002da0  64 69 72 24 2c 72 65 6d  62 25 29 0d 12 20 0d f4  |dir$,remb%).. ..|
00002db0  20 63 6f 70 79 62 6f 78  0d 12 2a 2d 46 69 6c 65  | copybox..*-File|
00002dc0  72 41 63 74 69 6f 6e 25  3d a4 66 69 6c 65 72 61  |rAction%=.filera|
00002dd0  63 74 69 6f 6e 3a 6f 70  74 73 25 3d a4 72 65 61  |ction:opts%=.rea|
00002de0  64 6f 70 74 73 0d 12 34  18 6c 65 61 66 24 3d 6c  |dopts..4.leaf$=l|
00002df0  65 61 66 24 28 63 68 6f  73 65 6e 25 29 0d 12 3e  |eaf$(chosen%)..>|
00002e00  18 73 66 73 70 24 3d 64  69 72 24 2b 22 2e 22 2b  |.sfsp$=dir$+"."+|
00002e10  6c 65 61 66 24 0d 12 48  1a e7 20 a4 63 68 65 63  |leaf$..H.. .chec|
00002e20  6b 6f 62 6a 28 73 66 73  70 24 2c b9 29 20 8c 0d  |kobj(sfsp$,.) ..|
00002e30  12 52 1f 20 66 73 70 24  3d a4 69 74 28 63 6f 70  |.R. fsp$=.it(cop|
00002e40  79 62 6f 78 25 2c 66 6e  69 63 6f 6e 25 29 0d 12  |ybox%,fnicon%)..|
00002e50  5c 11 20 e7 20 64 64 69  72 24 3d 22 22 20 8c 0d  |\. . ddir$="" ..|
00002e60  12 66 0e 20 20 f4 20 4f  4b 2f 52 65 74 0d 12 70  |.f.  . OK/Ret..p|
00002e70  2f 20 20 64 64 69 72 24  3d a4 70 61 72 65 6e 74  |/  ddir$=.parent|
00002e80  28 66 73 70 24 29 3a e7  20 64 64 69 72 24 3d 22  |(fsp$):. ddir$="|
00002e90  22 20 64 64 69 72 24 3d  64 69 72 24 0d 12 7a 06  |" ddir$=dir$..z.|
00002ea0  20 cd 0d 12 84 1e 20 6e  65 77 6c 65 61 66 24 3d  | ..... newleaf$=|
00002eb0  c0 a4 6c 65 61 66 28 66  73 70 24 29 2c 31 30 29  |..leaf(fsp$),10)|
00002ec0  0d 12 8e 1d 20 64 66 73  70 24 3d 64 64 69 72 24  |.... dfsp$=ddir$|
00002ed0  2b 22 2e 22 2b 6e 65 77  6c 65 61 66 24 0d 12 98  |+"."+newleaf$...|
00002ee0  15 20 e7 20 46 69 6c 65  72 41 63 74 69 6f 6e 25  |. . FilerAction%|
00002ef0  20 8c 0d 12 a2 15 20 20  f2 66 69 6c 65 72 61 63  | .....  .filerac|
00002f00  74 69 6f 6e 28 30 29 0d  12 ac 06 20 cc 0d 12 b6  |tion(0).... ....|
00002f10  17 20 20 6f 70 74 24 3d  a4 63 6f 70 79 6f 70 74  |.  opt$=.copyopt|
00002f20  73 28 a3 29 0d 12 c0 3d  20 20 f2 63 6f 6d 6d 61  |s(.)...=  .comma|
00002f30  6e 64 28 22 43 6f 70 79  20 66 69 6c 65 73 22 2c  |nd("Copy files",|
00002f40  22 43 6f 70 79 20 22 2b  73 66 73 70 24 2b 22 20  |"Copy "+sfsp$+" |
00002f50  22 2b 64 66 73 70 24 2b  22 20 22 2b 6f 70 74 24  |"+dfsp$+" "+opt$|
00002f60  29 0d 12 ca 06 20 cd 0d  12 d4 06 20 3a 0d 12 de  |).... ..... :...|
00002f70  1f 20 f4 20 63 6f 70 79  20 64 65 73 63 72 69 70  |. . copy descrip|
00002f80  74 69 6f 6e 2e 20 69 66  20 61 6e 79 0d 12 e8 28  |tion. if any...(|
00002f90  20 f4 20 64 6f 65 73 20  64 64 69 72 24 20 68 61  | . does ddir$ ha|
00002fa0  76 65 20 61 20 54 69 67  65 72 44 61 74 61 20 66  |ve a TigerData f|
00002fb0  69 6c 65 3f 0d 12 f2 37  20 66 73 70 24 3d 64 64  |ile?...7 fsp$=dd|
00002fc0  69 72 24 2b 22 2e 54 69  67 65 72 44 61 74 61 22  |ir$+".TigerData"|
00002fd0  3a 70 72 65 73 65 6e 74  25 3d a4 63 68 65 63 6b  |:present%=.check|
00002fe0  6f 62 6a 28 66 73 70 24  2c a3 29 0d 12 fc 06 20  |obj(fsp$,.).... |
00002ff0  3a 0d 13 06 13 20 e7 20  ac 20 70 72 65 73 65 6e  |:.... . . presen|
00003000  74 25 20 8c 0d 13 10 0e  20 20 64 65 73 63 73 25  |t% .....  descs%|
00003010  3d 30 0d 13 1a 06 20 cc  0d 13 24 21 20 20 64 65  |=0.... ...$!  de|
00003020  73 63 73 25 3d a4 6c 6f  61 64 54 69 67 65 72 44  |scs%=.loadTigerD|
00003030  61 74 61 28 66 73 70 24  29 0d 13 2e 06 20 cd 0d  |ata(fsp$).... ..|
00003040  13 38 06 20 3a 0d 13 42  2f 20 f4 20 74 72 61 6e  |.8. :..B/ . tran|
00003050  73 66 65 72 20 69 6e 63  6f 6d 69 6e 67 20 64 65  |sfer incoming de|
00003060  73 63 72 69 70 74 69 6f  6e 73 20 74 6f 20 61 72  |scriptions to ar|
00003070  72 61 79 73 0d 13 4c 19  20 6e 61 6d 65 24 3d 6c  |rays..L. name$=l|
00003080  65 61 66 24 28 63 68 6f  73 65 6e 25 29 0d 13 56  |eaf$(chosen%)..V|
00003090  1a 20 64 65 73 63 24 3d  24 64 65 73 63 25 28 63  |. desc$=$desc%(c|
000030a0  68 6f 73 65 6e 25 29 0d  13 60 1d 20 e7 20 64 65  |hosen%)..`. . de|
000030b0  73 63 24 3d 74 69 67 73  74 72 24 20 64 65 73 63  |sc$=tigstr$ desc|
000030c0  24 3d 22 22 0d 13 6a 12  20 e7 20 64 65 73 63 24  |$=""..j. . desc$|
000030d0  3c 3e 22 22 20 8c 0d 13  74 0e 20 20 66 6f 75 6e  |<>"" ...t.  foun|
000030e0  64 25 3d a3 0d 13 7e 15  20 20 e3 20 4b 25 3d 31  |d%=...~.  . K%=1|
000030f0  20 b8 20 64 65 73 63 73  25 0d 13 88 3b 20 20 20  | . descs%...;   |
00003100  e7 20 6e 61 6d 65 24 28  4b 25 29 3d 6e 61 6d 65  |. name$(K%)=name|
00003110  24 20 64 65 73 63 24 28  4b 25 29 3d 64 65 73 63  |$ desc$(K%)=desc|
00003120  24 3a 66 6f 75 6e 64 25  3d b9 3a 4b 25 3d 64 65  |$:found%=.:K%=de|
00003130  73 63 73 25 0d 13 92 07  20 20 ed 0d 13 9c 12 20  |scs%....  ..... |
00003140  20 e7 20 ac 20 66 6f 75  6e 64 25 20 8c 0d 13 a6  | . . found% ....|
00003150  38 20 20 20 64 65 73 63  73 25 2b 3d 31 3a 6e 61  |8   descs%+=1:na|
00003160  6d 65 24 28 64 65 73 63  73 25 29 3d 6e 61 6d 65  |me$(descs%)=name|
00003170  24 3a 64 65 73 63 24 28  64 65 73 63 73 25 29 3d  |$:desc$(descs%)=|
00003180  64 65 73 63 24 0d 13 b0  07 20 20 cd 0d 13 ba 06  |desc$....  .....|
00003190  20 cd 0d 13 c4 1c 20 f2  77 72 69 74 65 54 69 67  | ..... .writeTig|
000031a0  65 72 44 61 74 61 28 64  65 73 63 73 25 29 0d 13  |erData(descs%)..|
000031b0  ce 31 20 e7 20 64 64 69  72 24 3d 64 69 72 24 20  |.1 . ddir$=dir$ |
000031c0  80 20 6e 65 77 6c 65 61  66 24 3c 3e 6c 65 61 66  |. newleaf$<>leaf|
000031d0  24 20 f2 73 68 6f 77 54  69 67 65 72 28 31 29 0d  |$ .showTiger(1).|
000031e0  13 d8 1a 20 e7 20 72 65  6d 62 25 3c 3e 31 20 f2  |... . remb%<>1 .|
000031f0  63 6c 6f 73 65 6d 65 6e  75 0d 13 e2 05 cd 0d 13  |closemenu.......|
00003200  ec 05 e1 0d 13 f6 05 3a  0d 14 00 1e dd f2 63 6f  |.......:......co|
00003210  6d 6d 61 6e 64 28 74 69  74 6c 65 24 2c 63 6f 6d  |mmand(title$,com|
00003220  6d 61 6e 64 24 29 0d 14  0a 30 f4 20 70 65 72 66  |mand$)...0. perf|
00003230  6f 72 6d 20 74 61 73 6b  20 77 69 74 68 20 6f 75  |orm task with ou|
00003240  74 70 75 74 20 69 6e 20  63 6f 6d 6d 61 6e 64 20  |tput in command |
00003250  77 69 6e 64 6f 77 0d 14  14 0e 24 43 25 3d 74 69  |window....$C%=ti|
00003260  74 6c 65 24 0d 14 1e 1e  c8 99 20 22 57 69 6d 70  |tle$...... "Wimp|
00003270  5f 43 6f 6d 6d 61 6e 64  57 69 6e 64 6f 77 22 2c  |_CommandWindow",|
00003280  43 25 0d 14 28 0e ff 20  63 6f 6d 6d 61 6e 64 24  |C%..(.. command$|
00003290  0d 14 32 1d c8 99 20 22  57 69 6d 70 5f 43 6f 6d  |..2... "Wimp_Com|
000032a0  6d 61 6e 64 57 69 6e 64  6f 77 22 2c 30 0d 14 3c  |mandWindow",0..<|
000032b0  05 e1 0d 14 46 05 3a 0d  14 50 14 f4 2d 2d 2d 2d  |....F.:..P..----|
000032c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 14 5a 14 f4  |-----------..Z..|
000032d0  2e 20 46 49 4c 45 52 20  41 43 54 49 4f 4e 53 0d  |. FILER ACTIONS.|
000032e0  14 64 14 f4 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.d..------------|
000032f0  2d 2d 2d 0d 14 6e 05 3a  0d 14 78 10 dd f2 61 63  |---..n.:..x...ac|
00003300  63 65 73 73 28 6e 25 29  0d 14 82 2a ea 20 61 63  |cess(n%)...*. ac|
00003310  63 65 73 73 25 2c 72 65  63 75 72 73 65 25 2c 77  |cess%,recurse%,w|
00003320  68 25 3a 77 68 25 3d 61  63 63 65 73 73 77 69 6e  |h%:wh%=accesswin|
00003330  64 25 0d 14 8c 0b c8 8e  20 6e 25 20 ca 0d 14 96  |d%...... n% ....|
00003340  15 c9 20 31 3a f4 20 6d  65 6e 75 20 63 68 6f 69  |.. 1:. menu choi|
00003350  63 65 0d 14 a0 11 20 c8  8e 20 6c 65 76 65 6c 32  |ce.... .. level2|
00003360  25 20 ca 0d 14 aa 14 20  20 c9 20 30 3a 61 63 63  |% .....  . 0:acc|
00003370  65 73 73 25 3d 31 30 0d  14 b4 13 20 20 c9 20 31  |ess%=10....  . 1|
00003380  3a 61 63 63 65 73 73 25  3d 32 0d 14 be 14 20 20  |:access%=2....  |
00003390  c9 20 32 3a 61 63 63 65  73 73 25 3d 31 36 0d 14  |. 2:access%=16..|
000033a0  c8 13 20 20 c9 20 33 3a  61 63 63 65 73 73 25 3d  |..  . 3:access%=|
000033b0  33 0d 14 d2 06 20 cb 0d  14 dc 1a 20 e7 20 73 74  |3.... ..... . st|
000033c0  61 79 25 20 f2 72 65 64  6f 6d 65 6e 75 28 6e 25  |ay% .redomenu(n%|
000033d0  29 0d 14 e6 16 c9 20 32  3a f4 20 77 69 6e 64 6f  |)..... 2:. windo|
000033e0  77 20 63 6c 69 63 6b 0d  14 f0 0e 20 61 63 63 65  |w click.... acce|
000033f0  73 73 25 3d 30 0d 14 fa  1c 20 e7 20 a4 69 73 28  |ss%=0.... . .is(|
00003400  77 68 25 2c 31 29 20 61  63 63 65 73 73 25 2b 3d  |wh%,1) access%+=|
00003410  38 0d 15 04 1c 20 e7 20  a4 69 73 28 77 68 25 2c  |8.... . .is(wh%,|
00003420  32 29 20 61 63 63 65 73  73 25 2b 3d 31 0d 15 0e  |2) access%+=1...|
00003430  1c 20 e7 20 a4 69 73 28  77 68 25 2c 33 29 20 61  |. . .is(wh%,3) a|
00003440  63 63 65 73 73 25 2b 3d  32 0d 15 18 1d 20 e7 20  |ccess%+=2.... . |
00003450  a4 69 73 28 77 68 25 2c  34 29 20 61 63 63 65 73  |.is(wh%,4) acces|
00003460  73 25 2b 3d 31 36 0d 15  22 1c 20 e7 20 a4 69 73  |s%+=16..". . .is|
00003470  28 77 68 25 2c 35 29 20  61 63 63 65 73 73 25 2b  |(wh%,5) access%+|
00003480  3d 38 0d 15 2c 39 20 e7  20 73 74 61 79 25 20 f2  |=8..,9 . stay% .|
00003490  72 65 64 6f 6d 65 6e 75  28 6e 25 29 3a f2 6d 61  |redomenu(n%):.ma|
000034a0  69 6e 6d 65 6e 75 28 72  65 6d 78 25 2c 72 65 6d  |inmenu(remx%,rem|
000034b0  79 25 2c 63 68 6f 73 65  6e 25 29 0d 15 36 05 cb  |y%,chosen%)..6..|
000034c0  0d 15 40 18 72 65 63 75  72 73 65 25 3d a4 69 73  |..@.recurse%=.is|
000034d0  28 77 68 25 2c 31 31 29  0d 15 4a 13 f2 66 69 6c  |(wh%,11)..J..fil|
000034e0  65 72 61 63 74 69 6f 6e  28 33 29 0d 15 54 05 e1  |eraction(3)..T..|
000034f0  0d 15 5e 05 3a 0d 15 68  12 dd f2 72 65 64 6f 6d  |..^.:..h...redom|
00003500  65 6e 75 28 6e 25 29 0d  15 72 32 f4 20 72 65 2d  |enu(n%)..r2. re-|
00003510  64 6f 20 74 69 63 6b 73  20 69 6e 20 6d 62 35 25  |do ticks in mb5%|
00003520  20 61 6e 64 20 69 63 6f  6e 73 20 69 6e 20 61 63  | and icons in ac|
00003530  63 65 73 73 77 69 6e 64  25 0d 15 7c 15 f2 61 63  |cesswind%..|..ac|
00003540  63 65 73 73 6d 65 6e 75  28 b9 2c 6e 25 29 0d 15  |cessmenu(.,n%)..|
00003550  86 2a c8 99 20 22 57 69  6d 70 5f 47 65 74 50 6f  |.*.. "Wimp_GetPo|
00003560  69 6e 74 65 72 49 6e 66  6f 22 2c 2c 71 25 3a 77  |interInfo",,q%:w|
00003570  68 25 3d 71 25 21 31 32  0d 15 90 29 71 25 21 30  |h%=q%!12...)q%!0|
00003580  3d 77 68 25 3a c8 99 20  22 57 69 6d 70 5f 47 65  |=wh%:.. "Wimp_Ge|
00003590  74 57 69 6e 64 6f 77 53  74 61 74 65 22 2c 2c 71  |tWindowState",,q|
000035a0  25 0d 15 9a 2c c8 99 20  22 57 69 6d 70 5f 43 72  |%...,.. "Wimp_Cr|
000035b0  65 61 74 65 53 75 62 4d  65 6e 75 22 2c 2c 6d 62  |eateSubMenu",,mb|
000035c0  35 25 2c 71 25 21 34 2c  71 25 21 31 36 0d 15 a4  |5%,q%!4,q%!16...|
000035d0  05 e1 0d 15 ae 05 3a 0d  15 b8 1a dd f2 61 63 63  |......:......acc|
000035e0  65 73 73 6d 65 6e 75 28  6d 6f 72 65 25 2c 6e 25  |essmenu(more%,n%|
000035f0  29 0d 15 c2 2a c8 99 20  22 57 69 6d 70 5f 47 65  |)...*.. "Wimp_Ge|
00003600  74 50 6f 69 6e 74 65 72  49 6e 66 6f 22 2c 2c 71  |tPointerInfo",,q|
00003610  25 3a 77 68 25 3d 71 25  21 31 32 0d 15 cc 27 ea  |%:wh%=q%!12...'.|
00003620  20 4a 25 2c 6c 65 61 66  24 2c 6f 62 6a 25 2c 77  | J%,leaf$,obj%,w|
00003630  68 25 3a 77 68 25 3d 61  63 63 65 73 73 77 69 6e  |h%:wh%=accesswin|
00003640  64 25 0d 15 d6 2e 62 25  3d 26 37 30 30 30 30 32  |d%....b%=&700002|
00003650  31 3a 67 25 3d 26 37 34  30 30 30 32 31 3a f4 20  |1:g%=&7400021:. |
00003660  66 6c 61 67 73 3d 62 6c  61 63 6b 2c 67 72 65 79  |flags=black,grey|
00003670  0d 15 e0 32 61 25 3d 6d  62 35 25 3a 70 25 3d 61  |...2a%=mb5%:p%=a|
00003680  25 2b 32 38 3a 24 61 25  3d 22 41 63 63 65 73 73  |%+28:$a%="Access|
00003690  22 3a 66 25 3d 62 25 3a  77 69 64 25 3d 31 35 2a  |":f%=b%:wid%=15*|
000036a0  31 36 0d 15 ea 2c 61 25  21 31 32 3d 26 37 30 32  |16...,a%!12=&702|
000036b0  30 37 3a 61 25 21 31 36  3d 77 69 64 25 3a 61 25  |07:a%!16=wid%:a%|
000036c0  21 32 30 3d 34 34 3a 61  25 21 32 34 3d 30 0d 15  |!20=44:a%!24=0..|
000036d0  f4 05 3a 0d 15 fe 24 e7  20 6e 25 3d 31 20 e3 20  |..:...$. n%=1 . |
000036e0  4a 25 3d 31 20 b8 20 31  30 3a f2 75 69 28 77 68  |J%=1 . 10:.ui(wh|
000036f0  25 2c 4a 25 29 3a ed 0d  16 08 0d 74 69 63 6b 25  |%,J%):.....tick%|
00003700  28 29 3d 30 0d 16 12 2d  73 65 6c 25 3d a4 73 65  |()=0...-sel%=.se|
00003710  6c 3a e7 20 73 65 6c 25  3d 30 20 73 65 6c 25 3d  |l:. sel%=0 sel%=|
00003720  31 3a 73 65 6c 25 28 31  29 3d 63 68 6f 73 65 6e  |1:sel%(1)=chosen|
00003730  25 0d 16 1c 19 6c 65 61  66 24 3d 24 6e 61 6d 65  |%....leaf$=$name|
00003740  25 28 63 68 6f 73 65 6e  25 29 0d 16 26 21 6f 62  |%(chosen%)..&!ob|
00003750  6a 25 3d a4 6f 62 6a 74  79 70 65 28 64 69 72 24  |j%=.objtype(dir$|
00003760  2b 22 2e 22 2b 6c 65 61  66 24 29 0d 16 30 1c f2  |+"."+leaf$)..0..|
00003770  63 6c 65 61 72 69 63 6f  6e 62 69 74 28 77 68 25  |cleariconbit(wh%|
00003780  2c 31 31 2c 32 32 29 0d  16 3a 05 3a 0d 16 44 17  |,11,22)..:.:..D.|
00003790  e7 20 73 65 6c 25 3d 31  20 80 20 6f 62 6a 25 3d  |. sel%=1 . obj%=|
000037a0  31 20 8c 0d 16 4e 16 20  f4 20 6f 6e 65 20 66 69  |1 ...N. . one fi|
000037b0  6c 65 20 63 68 6f 73 65  6e 0d 16 58 1b 20 f2 73  |le chosen..X. .s|
000037c0  65 74 69 63 6f 6e 62 69  74 28 77 68 25 2c 31 31  |eticonbit(wh%,11|
000037d0  2c 32 32 29 0d 16 62 2f  20 c8 99 20 22 4f 53 5f  |,22)..b/ .. "OS_|
000037e0  46 69 6c 65 22 2c 35 2c  64 69 72 24 2b 22 2e 22  |File",5,dir$+"."|
000037f0  2b 6c 65 61 66 24 20 b8  20 2c 2c 2c 2c 2c 61 74  |+leaf$ . ,,,,,at|
00003800  74 72 25 0d 16 6c 1a 20  e7 20 6d 6f 72 65 25 20  |tr%..l. . more% |
00003810  61 74 74 72 25 3d 61 63  63 65 73 73 25 0d 16 76  |attr%=access%..v|
00003820  1a 20 6c 6f 63 6b 65 64  25 3d 28 61 74 74 72 25  |. locked%=(attr%|
00003830  20 80 20 38 29 3d 38 0d  16 80 1a 20 6f 72 65 61  | . 8)=8.... orea|
00003840  64 25 20 3d 28 61 74 74  72 25 20 80 20 31 29 3d  |d% =(attr% . 1)=|
00003850  31 0d 16 8a 1a 20 6f 77  72 69 74 65 25 3d 28 61  |1.... owrite%=(a|
00003860  74 74 72 25 20 80 20 32  29 3d 32 0d 16 94 1c 20  |ttr% . 2)=2.... |
00003870  70 72 65 61 64 25 20 3d  28 61 74 74 72 25 20 80  |pread% =(attr% .|
00003880  20 31 36 29 3d 31 36 0d  16 9e 1c 20 70 77 72 69  | 16)=16.... pwri|
00003890  74 65 25 3d 28 61 74 74  72 25 20 80 20 33 32 29  |te%=(attr% . 32)|
000038a0  3d 33 32 0d 16 a8 0d 20  e7 20 6e 25 3d 31 20 8c  |=32.... . n%=1 .|
000038b0  0d 16 b2 27 20 20 e7 20  6c 6f 63 6b 65 64 25 20  |...'  . locked% |
000038c0  f2 73 69 28 77 68 25 2c  31 29 20 8b 20 f2 73 69  |.si(wh%,1) . .si|
000038d0  28 77 68 25 2c 36 29 0d  16 bc 27 20 20 e7 20 6f  |(wh%,6)...'  . o|
000038e0  72 65 61 64 25 20 20 f2  73 69 28 77 68 25 2c 32  |read%  .si(wh%,2|
000038f0  29 20 8b 20 f2 73 69 28  77 68 25 2c 37 29 0d 16  |) . .si(wh%,7)..|
00003900  c6 27 20 20 e7 20 6f 77  72 69 74 65 25 20 f2 73  |.'  . owrite% .s|
00003910  69 28 77 68 25 2c 33 29  20 8b 20 f2 73 69 28 77  |i(wh%,3) . .si(w|
00003920  68 25 2c 38 29 0d 16 d0  27 20 20 e7 20 70 72 65  |h%,8)...'  . pre|
00003930  61 64 25 20 20 f2 73 69  28 77 68 25 2c 34 29 20  |ad%  .si(wh%,4) |
00003940  8b 20 f2 73 69 28 77 68  25 2c 39 29 0d 16 da 28  |. .si(wh%,9)...(|
00003950  20 20 e7 20 70 77 72 69  74 65 25 20 f2 73 69 28  |  . pwrite% .si(|
00003960  77 68 25 2c 35 29 20 8b  20 f2 73 69 28 77 68 25  |wh%,5) . .si(wh%|
00003970  2c 31 30 29 0d 16 e4 06  20 cd 0d 16 ee 17 20 70  |,10).... ..... p|
00003980  72 6f 74 65 63 74 65 64  25 3d 6c 6f 63 6b 65 64  |rotected%=locked|
00003990  25 0d 16 f8 13 20 70 75  62 6c 69 63 25 3d 70 72  |%.... public%=pr|
000039a0  65 61 64 25 0d 17 02 29  20 e7 20 70 72 6f 74 65  |ead%...) . prote|
000039b0  63 74 65 64 25 20 74 69  63 6b 25 28 30 29 3d b9  |cted% tick%(0)=.|
000039c0  20 8b 20 74 69 63 6b 25  28 31 29 3d b9 0d 17 0c  | . tick%(1)=....|
000039d0  26 20 e7 20 70 75 62 6c  69 63 25 20 74 69 63 6b  |& . public% tick|
000039e0  25 28 32 29 3d b9 20 8b  20 74 69 63 6b 25 28 33  |%(2)=. . tick%(3|
000039f0  29 3d b9 0d 17 16 05 cd  0d 17 20 05 3a 0d 17 2a  |)=........ .:..*|
00003a00  1a e7 20 74 69 63 6b 25  28 30 29 20 74 25 3d 31  |.. tick%(0) t%=1|
00003a10  20 8b 20 74 25 3d 30 0d  17 34 3c 73 24 3d 22 50  | . t%=0..4<s$="P|
00003a20  72 6f 74 65 63 74 65 64  22 3a 70 25 21 30 3d 74  |rotected":p%!0=t|
00003a30  25 3a 70 25 21 34 3d 30  3a 70 25 21 38 3d 62 25  |%:p%!4=0:p%!8=b%|
00003a40  3a 24 28 70 25 2b 31 32  29 3d 73 24 3a 70 25 2b  |:$(p%+12)=s$:p%+|
00003a50  3d 32 34 0d 17 3e 1a e7  20 74 69 63 6b 25 28 31  |=24..>.. tick%(1|
00003a60  29 20 74 25 3d 31 20 8b  20 74 25 3d 30 0d 17 48  |) t%=1 . t%=0..H|
00003a70  40 73 24 3d 22 55 6e 70  72 6f 74 65 63 74 65 64  |@s$="Unprotected|
00003a80  22 3a 70 25 21 30 3d 74  25 2b 32 3a 70 25 21 34  |":p%!0=t%+2:p%!4|
00003a90  3d 30 3a 70 25 21 38 3d  62 25 3a 24 28 70 25 2b  |=0:p%!8=b%:$(p%+|
00003aa0  31 32 29 3d 73 24 3a 70  25 2b 3d 32 34 0d 17 52  |12)=s$:p%+=24..R|
00003ab0  1a e7 20 74 69 63 6b 25  28 32 29 20 74 25 3d 31  |.. tick%(2) t%=1|
00003ac0  20 8b 20 74 25 3d 30 0d  17 5c 39 73 24 3d 22 50  | . t%=0..\9s$="P|
00003ad0  75 62 6c 69 63 22 3a 70  25 21 30 3d 74 25 3a 70  |ublic":p%!0=t%:p|
00003ae0  25 21 34 3d 30 3a 70 25  21 38 3d 62 25 3a 24 28  |%!4=0:p%!8=b%:$(|
00003af0  70 25 2b 31 32 29 3d 73  24 3a 70 25 2b 3d 32 34  |p%+12)=s$:p%+=24|
00003b00  0d 17 66 1a e7 20 74 69  63 6b 25 28 33 29 20 74  |..f.. tick%(3) t|
00003b10  25 3d 31 20 8b 20 74 25  3d 30 0d 17 70 3c 73 24  |%=1 . t%=0..p<s$|
00003b20  3d 22 50 72 69 76 61 74  65 22 3a 70 25 21 30 3d  |="Private":p%!0=|
00003b30  74 25 2b 32 3a 70 25 21  34 3d 30 3a 70 25 21 38  |t%+2:p%!4=0:p%!8|
00003b40  3d 62 25 3a 24 28 70 25  2b 31 32 29 3d 73 24 3a  |=b%:$(p%+12)=s$:|
00003b50  70 25 2b 3d 32 34 0d 17  7a 3b 62 25 3d 26 37 30  |p%+=24..z;b%=&70|
00003b60  30 30 31 32 31 3a 67 25  3d 26 37 34 30 30 31 32  |00121:g%=&740012|
00003b70  31 3a f4 20 66 6c 61 67  73 3d 62 6c 61 63 6b 2c  |1:. flags=black,|
00003b80  67 72 65 79 20 28 69 6e  64 69 72 65 63 74 65 64  |grey (indirected|
00003b90  29 0d 17 84 1b 24 6d 69  31 31 25 3d 22 41 63 63  |)....$mi11%="Acc|
00003ba0  65 73 73 20 64 65 74 61  69 6c 73 22 0d 17 8e 3b  |ess details"...;|
00003bb0  70 25 21 30 3d 26 38 30  3a 70 25 21 34 3d 77 68  |p%!0=&80:p%!4=wh|
00003bc0  25 3a 70 25 21 38 3d 62  25 3a 70 25 21 31 32 3d  |%:p%!8=b%:p%!12=|
00003bd0  6d 69 31 31 25 3a 70 25  21 31 36 3d 2d 31 3a 70  |mi11%:p%!16=-1:p|
00003be0  25 21 32 30 3d 31 36 0d  17 98 05 e1 0d 17 a2 05  |%!20=16.........|
00003bf0  3a 0d 17 ac 0d dd f2 73  65 74 74 79 70 65 0d 17  |:......settype..|
00003c00  b6 2c ea 20 4a 25 2c 73  65 74 74 79 70 65 25 2c  |.,. J%,settype%,|
00003c10  73 74 72 24 2c 73 74 72  32 24 2c 6e 75 6d 25 2c  |str$,str2$,num%,|
00003c20  6c 65 6e 25 2c 6d 6f 72  65 25 0d 17 c0 1f 73 74  |len%,more%....st|
00003c30  72 24 3d a4 6c 63 28 a4  73 74 72 69 70 28 24 6e  |r$=.lc(.strip($n|
00003c40  65 77 6e 61 6d 65 25 29  29 0d 17 ca 18 e7 20 73  |ewname%))..... s|
00003c50  74 72 24 3d 22 22 3a f2  62 61 64 74 79 70 65 3a  |tr$="":.badtype:|
00003c60  e1 0d 17 d4 20 e7 20 c0  73 74 72 24 2c 31 29 3d  |.... . .str$,1)=|
00003c70  22 26 22 20 73 74 72 24  3d c1 73 74 72 24 2c 32  |"&" str$=.str$,2|
00003c80  29 0d 17 de 16 73 65 74  74 79 70 65 25 3d 2d 31  |)....settype%=-1|
00003c90  3a 6e 75 6d 25 3d b9 0d  17 e8 13 e3 20 4a 25 3d  |:num%=...... J%=|
00003ca0  31 20 b8 20 a9 20 73 74  72 24 0d 17 f2 36 20 e7  |1 . . str$...6 .|
00003cb0  20 a7 22 30 31 32 33 34  35 36 37 38 39 41 42 43  | ."0123456789ABC|
00003cc0  44 45 46 61 62 63 64 65  66 22 2c c1 73 74 72 24  |DEFabcdef",.str$|
00003cd0  2c 4a 25 2c 31 29 29 3c  31 20 6e 75 6d 25 3d a3  |,J%,1))<1 num%=.|
00003ce0  0d 17 fc 05 ed 0d 18 06  0c e7 20 6e 75 6d 25 20  |.......... num% |
00003cf0  8c 0d 18 10 19 20 73 65  74 74 79 70 65 25 3d a0  |..... settype%=.|
00003d00  28 22 26 22 2b 73 74 72  24 29 0d 18 1a 05 cc 0d  |("&"+str$)......|
00003d10  18 24 0c 20 6d 6f 72 65  25 3d 30 0d 18 2e 06 20  |.$. more%=0.... |
00003d20  f5 0d 18 38 44 20 20 c8  99 20 22 58 4f 53 5f 52  |...8D  .. "XOS_R|
00003d30  65 61 64 56 61 72 56 61  6c 22 2c 22 46 69 6c 65  |eadVarVal","File|
00003d40  24 54 79 70 65 5f 2a 22  2c 43 25 2c 31 38 2c 6d  |$Type_*",C%,18,m|
00003d50  6f 72 65 25 2c 33 20 b8  20 2c 2c 6c 65 6e 25 2c  |ore%,3 . ,,len%,|
00003d60  6d 6f 72 65 25 0d 18 42  27 20 20 43 25 3f 6c 65  |more%..B'  C%?le|
00003d70  6e 25 3d 26 44 3a 73 74  72 32 24 3d a4 6c 63 28  |n%=&D:str2$=.lc(|
00003d80  a4 73 74 72 69 70 28 24  43 25 29 29 0d 18 4c 1c  |.strip($C%))..L.|
00003d90  20 fd 20 6d 6f 72 65 25  3c 3d 30 20 84 20 73 74  | . more%<=0 . st|
00003da0  72 24 3d 73 74 72 32 24  0d 18 56 10 20 e7 20 6d  |r$=str2$..V. . m|
00003db0  6f 72 65 25 3e 30 20 8c  0d 18 60 29 20 20 73 65  |ore%>0 ...`)  se|
00003dc0  74 74 79 70 65 25 3d a0  28 22 26 22 2b c1 a4 6e  |ttype%=.("&"+..n|
00003dd0  61 6d 65 28 6d 6f 72 65  25 29 2c 31 31 2c 33 29  |ame(more%),11,3)|
00003de0  29 0d 18 6a 06 20 cd 0d  18 74 05 cd 0d 18 7e 13  |)..j. ...t....~.|
00003df0  e7 20 73 65 74 74 79 70  65 25 3e 2d 31 20 8c 0d  |. settype%>-1 ..|
00003e00  18 88 14 20 f2 66 69 6c  65 72 61 63 74 69 6f 6e  |... .fileraction|
00003e10  28 34 29 0d 18 92 0f 20  72 65 66 72 65 73 68 25  |(4).... refresh%|
00003e20  3d b9 0d 18 9c 05 cc 0d  18 a6 0d 20 f2 62 61 64  |=.......... .bad|
00003e30  74 79 70 65 0d 18 b0 05  cd 0d 18 ba 05 e1 0d 18  |type............|
00003e40  c4 05 3a 0d 18 ce 0d dd  f2 62 61 64 74 79 70 65  |..:......badtype|
00003e50  0d 18 d8 27 61 6e 73 25  3d a4 6d 73 67 28 22 42  |...'ans%=.msg("B|
00003e60  61 64 20 66 69 6c 65 20  74 79 70 65 22 2c 22 43  |ad file type","C|
00003e70  61 6e 63 65 6c 22 29 0d  18 e2 05 e1 0d 18 ec 05  |ancel").........|
00003e80  3a 0d 18 f6 0a dd f2 68  65 6c 70 0d 19 00 0a ea  |:......help.....|
00003e90  20 61 70 70 24 0d 19 0a  2d 73 65 6c 25 3d a4 73  | app$...-sel%=.s|
00003ea0  65 6c 3a e7 20 73 65 6c  25 3d 30 20 73 65 6c 25  |el:. sel%=0 sel%|
00003eb0  28 31 29 3d 63 68 6f 73  65 6e 25 3a 73 65 6c 25  |(1)=chosen%:sel%|
00003ec0  3d 31 0d 19 14 0e e7 20  73 65 6c 25 3d 31 20 8c  |=1..... sel%=1 .|
00003ed0  0d 19 1e 18 20 61 70 70  24 3d 6c 65 61 66 24 28  |.... app$=leaf$(|
00003ee0  73 65 6c 25 28 31 29 29  0d 19 28 34 20 ff 28 22  |sel%(1))..(4 .("|
00003ef0  57 69 6d 70 54 61 73 6b  20 46 69 6c 65 72 5f 52  |WimpTask Filer_R|
00003f00  75 6e 20 22 2b 64 69 72  24 2b 22 2e 22 2b 61 70  |un "+dir$+"."+ap|
00003f10  70 24 2b 22 2e 21 48 65  6c 70 22 29 0d 19 32 05  |p$+".!Help")..2.|
00003f20  cd 0d 19 3c 05 e1 0d 19  46 05 3a 0d 19 50 0b dd  |...<....F.:..P..|
00003f30  f2 63 6f 75 6e 74 0d 19  5a 13 f2 66 69 6c 65 72  |.count..Z..filer|
00003f40  61 63 74 69 6f 6e 28 35  29 0d 19 64 05 e1 0d 19  |action(5)..d....|
00003f50  6e 05 3a 0d 19 78 15 dd  f2 66 69 6e 64 28 24 6e  |n.:..x...find($n|
00003f60  65 77 6e 61 6d 65 25 29  0d 19 82 23 66 69 6e 64  |ewname%)...#find|
00003f70  24 3d 24 6e 65 77 6e 61  6d 65 25 3a f2 66 69 6c  |$=$newname%:.fil|
00003f80  65 72 61 63 74 69 6f 6e  28 39 29 0d 19 8c 05 e1  |eraction(9).....|
00003f90  0d 19 96 05 3a 0d 19 a0  0b dd f2 73 74 61 6d 70  |....:......stamp|
00003fa0  0d 19 aa 1e f2 66 69 6c  65 72 61 63 74 69 6f 6e  |.....fileraction|
00003fb0  28 38 29 3a 72 65 66 72  65 73 68 25 3d b9 0d 19  |(8):refresh%=...|
00003fc0  b4 05 e1 0d 19 be 05 3a  0d 19 c8 15 dd f2 66 69  |.......:......fi|
00003fd0  6c 65 72 61 63 74 69 6f  6e 28 6e 25 29 0d 19 d2  |leraction(n%)...|
00003fe0  15 ea 20 4a 25 2c 74 61  73 6b 68 25 2c 6c 65 61  |.. J%,taskh%,lea|
00003ff0  66 24 0d 19 dc 2d 46 69  6c 65 72 41 63 74 69 6f  |f$...-FilerActio|
00004000  6e 25 3d a4 66 69 6c 65  72 61 63 74 69 6f 6e 3a  |n%=.fileraction:|
00004010  6f 70 74 73 25 3d a4 72  65 61 64 6f 70 74 73 0d  |opts%=.readopts.|
00004020  19 e6 2d 73 65 6c 25 3d  a4 73 65 6c 3a e7 20 73  |..-sel%=.sel:. s|
00004030  65 6c 25 3d 30 20 73 65  6c 25 28 31 29 3d 63 68  |el%=0 sel%(1)=ch|
00004040  6f 73 65 6e 25 3a 73 65  6c 25 3d 31 0d 19 f0 25  |osen%:sel%=1...%|
00004050  c8 99 20 26 34 30 30 44  45 2c 22 46 69 6c 65 72  |.. &400DE,"Filer|
00004060  5f 41 63 74 69 6f 6e 22  20 b8 20 74 61 73 6b 68  |_Action" . taskh|
00004070  25 0d 19 fa 11 e3 20 4a  25 3d 31 20 b8 20 73 65  |%..... J%=1 . se|
00004080  6c 25 0d 1a 04 1a 20 6c  65 61 66 24 3d 6c 65 61  |l%.... leaf$=lea|
00004090  66 24 28 73 65 6c 25 28  4a 25 29 29 0d 1a 0e 1a  |f$(sel%(J%))....|
000040a0  20 c8 99 20 26 34 30 46  38 30 2c 74 61 73 6b 68  | .. &40F80,taskh|
000040b0  25 2c 64 69 72 24 0d 1a  18 1b 20 c8 99 20 26 34  |%,dir$.... .. &4|
000040c0  30 46 38 31 2c 74 61 73  6b 68 25 2c 6c 65 61 66  |0F81,taskh%,leaf|
000040d0  24 0d 1a 22 05 ed 0d 1a  2c 0b c8 8e 20 6e 25 20  |$.."....,... n% |
000040e0  ca 0d 1a 36 0f 20 c9 20  30 3a f4 20 43 6f 70 79  |...6. . 0:. Copy|
000040f0  0d 1a 40 2c 20 c8 99 20  26 34 30 46 38 32 2c 74  |..@, .. &40F82,t|
00004100  61 73 6b 68 25 2c 30 2c  6f 70 74 73 25 2c 64 64  |askh%,0,opts%,dd|
00004110  69 72 24 2c a9 64 64 69  72 24 2b 31 0d 1a 4a 16  |ir$,.ddir$+1..J.|
00004120  20 c9 20 31 3a f4 20 6d  6f 76 65 2f 72 65 6e 61  | . 1:. move/rena|
00004130  6d 65 0d 1a 54 11 20 c9  20 32 3a f4 20 44 65 6c  |me..T. . 2:. Del|
00004140  65 74 65 0d 1a 5e 15 20  c9 20 33 3a f4 20 53 65  |ete..^. . 3:. Se|
00004150  74 20 61 63 63 65 73 73  0d 1a 68 3d 20 21 71 25  |t access..h= !q%|
00004160  3d 61 63 63 65 73 73 25  20 3a c8 99 20 26 34 30  |=access% :.. &40|
00004170  46 38 32 2c 74 61 73 6b  68 25 2c 33 2c 6f 70 74  |F82,taskh%,3,opt|
00004180  73 25 2b 28 72 65 63 75  72 73 65 25 3c 3c 34 29  |s%+(recurse%<<4)|
00004190  2c 71 25 2c 34 0d 1a 72  13 20 c9 20 34 3a f4 20  |,q%,4..r. . 4:. |
000041a0  53 65 74 20 74 79 70 65  0d 1a 7c 2f 20 21 71 25  |Set type..|/ !q%|
000041b0  3d 73 65 74 74 79 70 65  25 3a c8 99 20 26 34 30  |=settype%:.. &40|
000041c0  46 38 32 2c 74 61 73 6b  68 25 2c 34 2c 6f 70 74  |F82,taskh%,4,opt|
000041d0  73 25 2c 71 25 2c 34 0d  1a 86 10 20 c9 20 35 3a  |s%,q%,4.... . 5:|
000041e0  f4 20 43 6f 75 6e 74 0d  1a 90 1f 20 c8 99 20 26  |. Count.... .. &|
000041f0  34 30 46 38 32 2c 74 61  73 6b 68 25 2c 35 2c 6f  |40F82,taskh%,5,o|
00004200  70 74 73 25 2c 31 0d 1a  9a 0f 20 c9 20 36 3a f4  |pts%,1.... . 6:.|
00004210  20 4d 6f 76 65 0d 1a a4  2c 20 c8 99 20 26 34 30  | Move..., .. &40|
00004220  46 38 32 2c 74 61 73 6b  68 25 2c 36 2c 6f 70 74  |F82,taskh%,6,opt|
00004230  73 25 2c 64 64 69 72 24  2c a9 64 64 69 72 24 2b  |s%,ddir$,.ddir$+|
00004240  31 0d 1a ae 22 20 c9 20  37 3a f4 20 43 6f 70 79  |1..." . 7:. Copy|
00004250  20 6c 6f 63 61 6c 20 28  77 69 74 68 69 6e 20 64  | local (within d|
00004260  69 72 29 0d 1a b8 16 20  c9 20 38 3a f4 20 53 74  |ir).... . 8:. St|
00004270  61 6d 70 20 66 69 6c 65  73 0d 1a c2 1f 20 c8 99  |amp files.... ..|
00004280  20 26 34 30 46 38 32 2c  74 61 73 6b 68 25 2c 38  | &40F82,taskh%,8|
00004290  2c 6f 70 74 73 25 2c 30  0d 1a cc 14 20 c9 20 39  |,opts%,0.... . 9|
000042a0  3a f4 20 46 69 6e 64 20  66 69 6c 65 0d 1a d6 2c  |:. Find file...,|
000042b0  20 c8 99 20 26 34 30 46  38 32 2c 74 61 73 6b 68  | .. &40F82,taskh|
000042c0  25 2c 39 2c 6f 70 74 73  25 2c 66 69 6e 64 24 2c  |%,9,opts%,find$,|
000042d0  a9 66 69 6e 64 24 2b 31  0d 1a e0 05 cb 0d 1a ea  |.find$+1........|
000042e0  05 e1 0d 1a f4 05 3a 0d  1a fe 14 f4 2d 2d 2d 2d  |......:.....----|
000042f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 1b 08 14 f4  |-----------.....|
00004300  2e 20 46 49 4c 45 52 20  4f 50 54 49 4f 4e 53 0d  |. FILER OPTIONS.|
00004310  1b 12 14 f4 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |....------------|
00004320  2d 2d 2d 0d 1b 1c 05 3a  0d 1b 26 0e dd a4 72 65  |---....:..&...re|
00004330  61 64 6f 70 74 73 0d 1b  30 24 66 6f 72 63 65 25  |adopts..0$force%|
00004340  3d 28 a4 72 65 61 64 63  6d 6f 73 28 31 39 38 29  |=(.readcmos(198)|
00004350  80 26 31 30 29 81 20 26  31 30 0d 1b 3a 25 63 6f  |.&10). &10..:%co|
00004360  6e 66 69 72 6d 25 3d 28  a4 72 65 61 64 63 6d 6f  |nfirm%=(.readcmo|
00004370  73 28 31 39 38 29 80 26  32 30 29 81 26 32 30 0d  |s(198).&20).&20.|
00004380  1b 44 25 76 65 72 62 6f  73 65 25 3d 28 a4 72 65  |.D%verbose%=(.re|
00004390  61 64 63 6d 6f 73 28 31  39 38 29 80 26 34 30 29  |adcmos(198).&40)|
000043a0  81 26 34 30 0d 1b 4e 23  6e 65 77 65 72 25 3d 28  |.&40..N#newer%=(|
000043b0  a4 72 65 61 64 63 6d 6f  73 28 31 39 38 29 80 26  |.readcmos(198).&|
000043c0  38 30 29 81 26 38 30 0d  1b 58 35 6f 25 3d 76 65  |80).&80..X5o%=ve|
000043d0  72 62 6f 73 65 25 2b 28  63 6f 6e 66 69 72 6d 25  |rbose%+(confirm%|
000043e0  3c 3c 31 29 2b 28 66 6f  72 63 65 25 3c 3c 32 29  |<<1)+(force%<<2)|
000043f0  2b 28 6e 65 77 65 72 25  3c 3c 33 29 0d 1b 62 07  |+(newer%<<3)..b.|
00004400  3d 6f 25 0d 1b 6c 05 3a  0d 1b 76 0d dd f2 73 65  |=o%..l.:..v...se|
00004410  74 6f 70 74 73 0d 1b 80  25 ea 20 6e 65 77 65 72  |topts...%. newer|
00004420  25 2c 66 6f 72 63 65 25  2c 76 65 72 62 6f 73 65  |%,force%,verbose|
00004430  25 2c 63 6f 6e 66 69 72  6d 25 0d 1b 8a 16 76 65  |%,confirm%....ve|
00004440  72 62 6f 73 65 25 3d 6f  70 74 73 25 20 80 20 31  |rbose%=opts% . 1|
00004450  0d 1b 94 1a 63 6f 6e 66  69 72 6d 25 3d 28 6f 70  |....confirm%=(op|
00004460  74 73 25 20 80 20 32 29  81 32 0d 1b 9e 18 66 6f  |ts% . 2).2....fo|
00004470  72 63 65 25 3d 28 6f 70  74 73 25 20 80 20 34 29  |rce%=(opts% . 4)|
00004480  81 34 0d 1b a8 18 6e 65  77 65 72 25 3d 28 6f 70  |.4....newer%=(op|
00004490  74 73 25 20 80 20 38 29  81 38 0d 1b b2 1f f2 73  |ts% . 8).8.....s|
000044a0  65 74 63 6d 6f 73 28 31  39 38 2c 66 6f 72 63 65  |etcmos(198,force|
000044b0  25 3c 3c 34 2c 26 31 30  29 0d 1b bc 21 f2 73 65  |%<<4,&10)...!.se|
000044c0  74 63 6d 6f 73 28 31 39  38 2c 63 6f 6e 66 69 72  |tcmos(198,confir|
000044d0  6d 25 3c 3c 35 2c 26 32  30 29 0d 1b c6 21 f2 73  |m%<<5,&20)...!.s|
000044e0  65 74 63 6d 6f 73 28 31  39 38 2c 76 65 72 62 6f  |etcmos(198,verbo|
000044f0  73 65 25 3c 3c 36 2c 26  34 30 29 0d 1b d0 1f f2  |se%<<6,&40).....|
00004500  73 65 74 63 6d 6f 73 28  31 39 38 2c 6e 65 77 65  |setcmos(198,newe|
00004510  72 25 3c 3c 37 2c 26 38  30 29 0d 1b da 05 e1 0d  |r%<<7,&80)......|
00004520  1b e4 05 3a 0d 1b ee 13  dd a4 72 65 61 64 63 6d  |...:......readcm|
00004530  6f 73 28 61 64 25 29 0d  1b f8 0b ea 20 62 79 74  |os(ad%)..... byt|
00004540  65 25 0d 1c 02 22 c8 99  20 22 4f 53 5f 42 79 74  |e%...".. "OS_Byt|
00004550  65 22 2c 31 36 31 2c 61  64 25 20 b8 20 2c 2c 62  |e",161,ad% . ,,b|
00004560  79 74 65 25 0d 1c 0c 0a  3d 62 79 74 65 25 0d 1c  |yte%....=byte%..|
00004570  16 05 3a 0d 1c 20 1e dd  f2 73 65 74 63 6d 6f 73  |..:.. ...setcmos|
00004580  28 61 64 25 2c 62 79 74  65 25 2c 6d 61 73 6b 25  |(ad%,byte%,mask%|
00004590  29 0d 1c 2a 0c ea 20 62  79 74 65 32 25 0d 1c 34  |)..*.. byte2%..4|
000045a0  23 c8 99 20 22 4f 53 5f  42 79 74 65 22 2c 31 36  |#.. "OS_Byte",16|
000045b0  31 2c 61 64 25 20 b8 20  2c 2c 62 79 74 65 32 25  |1,ad% . ,,byte2%|
000045c0  0d 1c 3e 25 62 79 74 65  32 25 3d 28 62 79 74 65  |..>%byte2%=(byte|
000045d0  32 25 20 80 20 ac 20 6d  61 73 6b 25 29 20 84 20  |2% . . mask%) . |
000045e0  62 79 74 65 25 0d 1c 48  1f c8 99 20 22 4f 53 5f  |byte%..H... "OS_|
000045f0  42 79 74 65 22 2c 31 36  32 2c 61 64 25 2c 62 79  |Byte",162,ad%,by|
00004600  74 65 32 25 0d 1c 52 05  e1 0d 1c 5c 05 3a 0d 1c  |te2%..R....\.:..|
00004610  66 17 dd a4 63 6f 70 79  6f 70 74 73 28 64 65 6c  |f...copyopts(del|
00004620  65 74 65 25 29 0d 1c 70  18 ea 20 6f 24 2c 6f 25  |ete%)..p.. o$,o%|
00004630  3a 6f 25 3d a4 72 65 61  64 6f 70 74 73 0d 1c 7a  |:o%=.readopts..z|
00004640  0a 6f 24 3d 22 41 22 0d  1c 84 21 e7 20 63 6f 6e  |.o$="A"...!. con|
00004650  66 69 72 6d 25 20 6f 24  2b 3d 22 43 22 20 8b 20  |firm% o$+="C" . |
00004660  6f 24 2b 3d 22 7e 43 22  0d 1c 8e 20 e7 20 64 65  |o$+="~C"... . de|
00004670  6c 65 74 65 25 20 6f 24  2b 3d 22 44 22 20 8b 20  |lete% o$+="D" . |
00004680  6f 24 2b 3d 22 7e 44 22  0d 1c 98 1f e7 20 66 6f  |o$+="~D"..... fo|
00004690  72 63 65 25 20 6f 24 2b  3d 22 46 22 20 8b 20 6f  |rce% o$+="F" . o|
000046a0  24 2b 3d 22 7e 46 22 0d  1c a2 0c 6f 24 2b 3d 22  |$+="~F"....o$+="|
000046b0  7e 4c 22 0d 1c ac 1f e7  20 6e 65 77 65 72 25 20  |~L"..... newer% |
000046c0  6f 24 2b 3d 22 4e 22 20  8b 20 6f 24 2b 3d 22 7e  |o$+="N" . o$+="~|
000046d0  4e 22 0d 1c b6 13 6f 24  2b 3d 22 7e 50 7e 51 52  |N"....o$+="~P~QR|
000046e0  7e 53 7e 54 22 0d 1c c0  21 e7 20 76 65 72 62 6f  |~S~T"...!. verbo|
000046f0  73 65 25 20 6f 24 2b 3d  22 56 22 20 8b 20 6f 24  |se% o$+="V" . o$|
00004700  2b 3d 22 7e 56 22 0d 1c  ca 07 3d 6f 24 0d 1c d4  |+="~V"....=o$...|
00004710  05 3a 0d 1c de 0e dd a4  77 69 70 65 6f 70 74 73  |.:......wipeopts|
00004720  0d 1c e8 1e ea 20 6f 24  2c 6f 25 3a 6f 25 3d a4  |..... o$,o%:o%=.|
00004730  72 65 61 64 6f 70 74 73  3a 6f 24 3d 22 22 0d 1c  |readopts:o$=""..|
00004740  f2 21 e7 20 63 6f 6e 66  69 72 6d 25 20 6f 24 2b  |.!. confirm% o$+|
00004750  3d 22 43 22 20 8b 20 6f  24 2b 3d 22 7e 43 22 0d  |="C" . o$+="~C".|
00004760  1c fc 1f e7 20 66 6f 72  63 65 25 20 6f 24 2b 3d  |.... force% o$+=|
00004770  22 46 22 20 8b 20 6f 24  2b 3d 22 7e 46 22 0d 1d  |"F" . o$+="~F"..|
00004780  06 0b 6f 24 2b 3d 22 52  22 0d 1d 10 21 e7 20 76  |..o$+="R"...!. v|
00004790  65 72 62 6f 73 65 25 20  6f 24 2b 3d 22 56 22 20  |erbose% o$+="V" |
000047a0  8b 20 6f 24 2b 3d 22 7e  56 22 0d 1d 1a 07 3d 6f  |. o$+="~V"....=o|
000047b0  24 0d 1d 24 05 3a 0d 1d  2e 12 f4 2d 2d 2d 2d 2d  |$..$.:.....-----|
000047c0  2d 2d 2d 2d 2d 2d 2d 2d  0d 1d 38 12 f4 2e 20 54  |--------..8... T|
000047d0  45 58 54 20 42 55 46 46  45 52 0d 1d 42 12 f4 2d  |EXT BUFFER..B..-|
000047e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 1d 4c 05  |------------..L.|
000047f0  3a 0d 1d 56 0d dd f2 67  65 74 74 65 78 74 0d 1d  |:..V...gettext..|
00004800  60 35 f4 20 67 65 74 20  74 65 78 74 20 66 72 6f  |`5. get text fro|
00004810  6d 20 61 6e 79 20 74 65  78 74 20 69 63 6f 6e 20  |m any text icon |
00004820  61 6e 64 20 70 6c 61 63  65 20 69 6e 20 62 75 66  |and place in buf|
00004830  66 65 72 0d 1d 6a 35 f4  20 63 6f 6e 74 69 6e 75  |fer..j5. continu|
00004840  6f 75 73 6c 79 20 63 61  6c 6c 65 64 20 66 72 6f  |ously called fro|
00004850  6d 20 50 6f 6c 6c 20 69  66 20 74 65 78 74 66 6c  |m Poll if textfl|
00004860  61 67 25 3d 54 52 55 45  0d 1d 74 13 e7 20 ac 20  |ag%=TRUE..t.. . |
00004870  74 65 78 74 66 6c 61 67  25 20 e1 0d 1d 7e 31 ea  |textflag% ...~1.|
00004880  20 64 77 68 25 2c 64 69  68 25 2c 66 6c 61 67 25  | dwh%,dih%,flag%|
00004890  2c 64 61 74 61 25 2c 74  65 78 74 25 2c 69 6e 64  |,data%,text%,ind|
000048a0  25 2c 74 73 6b 25 2c 74  65 78 74 24 0d 1d 88 19  |%,tsk%,text$....|
000048b0  64 77 68 25 3d 62 75 66  66 77 69 6e 64 25 3a 64  |dwh%=buffwind%:d|
000048c0  69 68 25 3d 30 0d 1d 92  3a c8 99 20 22 57 69 6d  |ih%=0...:.. "Wim|
000048d0  70 5f 47 65 74 43 61 72  65 74 50 6f 73 69 74 69  |p_GetCaretPositi|
000048e0  6f 6e 22 2c 2c 43 25 3a  e7 20 43 25 21 30 3d 64  |on",,C%:. C%!0=d|
000048f0  77 68 25 20 64 70 6f 73  25 3d 43 25 21 32 30 0d  |wh% dpos%=C%!20.|
00004900  1d 9c 20 c8 99 20 22 57  69 6d 70 5f 47 65 74 50  |.. .. "Wimp_GetP|
00004910  6f 69 6e 74 65 72 49 6e  66 6f 22 2c 2c 71 25 0d  |ointerInfo",,q%.|
00004920  1d a6 23 73 6d 62 25 3d  71 25 21 38 3a 73 77 68  |..#smb%=q%!8:swh|
00004930  25 3d 71 25 21 31 32 3a  73 69 68 25 3d 71 25 21  |%=q%!12:sih%=q%!|
00004940  31 36 0d 1d b0 25 e7 20  73 77 68 25 3d 2d 32 20  |16...%. swh%=-2 |
00004950  84 20 73 77 68 25 3d 64  77 68 25 20 84 20 73 6d  |. swh%=dwh% . sm|
00004960  62 25 3c 3e 31 20 e1 0d  1d ba 27 e7 20 a4 64 65  |b%<>1 ....'. .de|
00004970  6d 6f 28 22 54 65 78 74  20 62 75 66 66 65 72 20  |mo("Text buffer |
00004980  6f 70 65 72 61 74 69 6f  6e 73 22 29 20 8c 0d 1d  |operations") ...|
00004990  c4 23 20 74 65 78 74 66  6c 61 67 25 3d a3 3a f2  |.# textflag%=.:.|
000049a0  75 69 28 62 75 66 66 77  69 6e 64 25 2c 31 29 3a  |ui(buffwind%,1):|
000049b0  e1 0d 1d ce 05 cd 0d 1d  d8 0f e7 20 73 69 68 25  |........... sih%|
000049c0  3d 2d 34 20 8c 0d 1d e2  10 20 f4 20 74 69 74 6c  |=-4 ..... . titl|
000049d0  65 20 62 61 72 0d 1d ec  29 20 21 71 25 3d 73 77  |e bar...) !q%=sw|
000049e0  68 25 3a c8 99 20 22 57  69 6d 70 5f 47 65 74 57  |h%:.. "Wimp_GetW|
000049f0  69 6e 64 6f 77 49 6e 66  6f 22 2c 2c 71 25 0d 1d  |indowInfo",,q%..|
00004a00  f6 19 20 66 6c 61 67 25  3d 71 25 21 36 30 3a 64  |.. flag%=q%!60:d|
00004a10  61 74 61 25 3d 37 36 0d  1e 00 05 cc 0d 1e 0a 17  |ata%=76.........|
00004a20  20 21 71 25 3d 73 77 68  25 3a 71 25 21 34 3d 73  | !q%=swh%:q%!4=s|
00004a30  69 68 25 0d 1e 14 1f 20  c8 99 20 22 57 69 6d 70  |ih%.... .. "Wimp|
00004a40  5f 47 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_GetIconState",,|
00004a50  71 25 0d 1e 1e 19 20 66  6c 61 67 25 3d 71 25 21  |q%.... flag%=q%!|
00004a60  32 34 3a 64 61 74 61 25  3d 32 38 0d 1e 28 05 cd  |24:data%=28..(..|
00004a70  0d 1e 32 30 74 65 78 74  25 3d a4 62 69 74 73 65  |..20text%=.bitse|
00004a80  74 28 66 6c 61 67 25 2c  30 29 3a 69 6e 64 25 3d  |t(flag%,0):ind%=|
00004a90  a4 62 69 74 73 65 74 28  66 6c 61 67 25 2c 38 29  |.bitset(flag%,8)|
00004aa0  0d 1e 3c 0d e7 20 74 65  78 74 25 20 8c 0d 1e 46  |..<.. text% ...F|
00004ab0  0d 20 74 65 78 74 24 3d  22 22 0d 1e 50 20 20 74  |. text$=""..P  t|
00004ac0  73 6b 25 3d a4 74 61 73  6b 68 61 6e 64 6c 65 28  |sk%=.taskhandle(|
00004ad0  73 77 68 25 2c 73 69 68  25 29 0d 1e 5a 0d 20 e7  |swh%,sih%)..Z. .|
00004ae0  20 69 6e 64 25 20 8c 0d  1e 64 38 20 20 c8 99 20  | ind% ...d8  .. |
00004af0  22 57 69 6d 70 5f 54 72  61 6e 73 66 65 72 42 6c  |"Wimp_TransferBl|
00004b00  6f 63 6b 22 2c 74 73 6b  25 2c 71 25 21 64 61 74  |ock",tsk%,q%!dat|
00004b10  61 25 2c 74 61 73 6b 25  2c 43 25 2c 32 35 35 0d  |a%,task%,C%,255.|
00004b20  1e 6e 15 20 20 74 65 78  74 24 3d a4 6e 61 6d 65  |.n.  text$=.name|
00004b30  28 43 25 29 0d 1e 78 06  20 cc 0d 1e 82 1b 20 20  |(C%)..x. .....  |
00004b40  74 65 78 74 24 3d a4 6e  61 6d 65 28 71 25 2b 64  |text$=.name(q%+d|
00004b50  61 74 61 25 29 0d 1e 8c  06 20 cd 0d 1e 96 25 20  |ata%).... ....% |
00004b60  f2 6d 6f 76 65 74 65 78  74 28 74 65 78 74 24 2c  |.movetext(text$,|
00004b70  64 77 68 25 2c 64 69 68  25 2c 64 70 6f 73 25 29  |dwh%,dih%,dpos%)|
00004b80  0d 1e a0 05 cd 0d 1e aa  20 74 65 78 74 66 6c 61  |........ textfla|
00004b90  67 25 3d a3 3a f2 75 69  28 62 75 66 66 77 69 6e  |g%=.:.ui(buffwin|
00004ba0  64 25 2c 31 29 0d 1e b4  05 e1 0d 1e be 05 3a 0d  |d%,1).........:.|
00004bb0  1e c8 21 dd f2 64 72 61  67 66 69 6c 65 74 6f 62  |..!..dragfiletob|
00004bc0  75 66 66 28 70 61 74 68  24 2c 74 79 70 65 25 29  |uff(path$,type%)|
00004bd0  0d 1e d2 0e ea 20 6e 25  2c 63 25 2c 73 24 0d 1e  |..... n%,c%,s$..|
00004be0  dc 27 e7 20 a4 64 65 6d  6f 28 22 54 65 78 74 20  |.'. .demo("Text |
00004bf0  62 75 66 66 65 72 20 6f  70 65 72 61 74 69 6f 6e  |buffer operation|
00004c00  73 22 29 20 e1 0d 1e e6  27 e7 20 74 79 70 65 25  |s") ....'. type%|
00004c10  3c 3e 26 46 46 46 20 80  20 74 79 70 65 25 3c 3e  |<>&FFF . type%<>|
00004c20  26 46 45 42 20 f2 62 75  7a 7a 3a e1 0d 1e f0 0f  |&FEB .buzz:.....|
00004c30  46 25 3d ad 28 70 61 74  68 24 29 0d 1e fa 0e 73  |F%=.(path$)....s|
00004c40  24 3d 22 22 3a 6e 25 3d  30 0d 1f 04 25 c8 95 20  |$="":n%=0...%.. |
00004c50  28 ac 20 c5 23 46 25 29  20 80 20 28 6e 25 3c 6d  |(. .#F%) . (n%<m|
00004c60  61 78 64 65 73 63 6c 65  6e 25 2d 31 30 29 0d 1f  |axdesclen%-10)..|
00004c70  0e 22 20 63 25 3d 9a 23  46 25 3a e7 20 63 25 3e  |." c%=.#F%:. c%>|
00004c80  33 31 20 73 24 2b 3d bd  63 25 3a 6e 25 2b 3d 31  |31 s$+=.c%:n%+=1|
00004c90  0d 1f 18 05 ce 0d 1f 22  0d d9 23 46 25 3a 46 25  |......."..#F%:F%|
00004ca0  3d 30 0d 1f 2c 1f f2 6d  6f 76 65 74 65 78 74 28  |=0..,..movetext(|
00004cb0  73 24 2c 62 75 66 66 77  69 6e 64 25 2c 30 2c 30  |s$,buffwind%,0,0|
00004cc0  29 0d 1f 36 05 e1 0d 1f  40 05 3a 0d 1f 4a 11 dd  |)..6....@.:..J..|
00004cd0  f2 6c 6f 61 64 73 65 6c  28 71 25 29 0d 1f 54 29  |.loadsel(q%)..T)|
00004ce0  f4 20 44 61 74 61 53 61  76 65 20 72 65 63 65 69  |. DataSave recei|
00004cf0  76 65 64 20 66 72 6f 6d  20 61 6e 6f 74 68 65 72  |ved from another|
00004d00  20 74 61 73 6b 0d 1f 5e  27 e7 20 a4 64 65 6d 6f  | task..^'. .demo|
00004d10  28 22 54 65 78 74 20 62  75 66 66 65 72 20 6f 70  |("Text buffer op|
00004d20  65 72 61 74 69 6f 6e 73  22 29 20 e1 0d 1f 68 25  |erations") ...h%|
00004d30  64 77 68 25 3d 71 25 21  32 30 3a 64 69 68 25 3d  |dwh%=q%!20:dih%=|
00004d40  71 25 21 32 34 3a 74 79  70 65 25 3d 71 25 21 34  |q%!24:type%=q%!4|
00004d50  30 0d 1f 72 21 e7 20 64  77 68 25 3c 3e 62 75 66  |0..r!. dwh%<>buf|
00004d60  66 77 69 6e 64 25 20 84  20 64 69 68 25 3c 3e 30  |fwind% . dih%<>0|
00004d70  20 e1 0d 1f 7c 27 e7 20  74 79 70 65 25 3c 3e 26  | ...|'. type%<>&|
00004d80  46 46 46 20 80 20 74 79  70 65 25 3c 3e 26 46 45  |FFF . type%<>&FE|
00004d90  42 20 f2 62 75 7a 7a 3a  e1 0d 1f 86 16 f4 20 73  |B .buzz:...... s|
00004da0  65 6e 64 20 44 61 74 61  53 61 76 65 41 63 6b 0d  |end DataSaveAck.|
00004db0  1f 90 27 71 25 21 33 36  3d 2d 31 3a 24 28 71 25  |..'q%!36=-1:$(q%|
00004dc0  2b 34 34 29 3d 22 3c 57  69 6d 70 24 53 63 72 61  |+44)="<Wimp$Scra|
00004dd0  70 3e 22 2b bd 30 0d 1f  9a 2c 71 25 21 30 3d 36  |p>"+.0...,q%!0=6|
00004de0  34 3a 71 25 21 31 32 3d  71 25 21 38 3a 71 25 21  |4:q%!12=q%!8:q%!|
00004df0  31 36 3d 32 3a f4 20 44  61 74 61 53 61 76 65 41  |16=2:. DataSaveA|
00004e00  63 6b 0d 1f a4 24 c8 99  20 22 57 69 6d 70 5f 53  |ck...$.. "Wimp_S|
00004e10  65 6e 64 4d 65 73 73 61  67 65 22 2c 31 38 2c 71  |endMessage",18,q|
00004e20  25 2c 71 25 21 34 0d 1f  ae 05 e1 0d 1f b8 05 3a  |%,q%!4.........:|
00004e30  0d 1f c2 0d dd f2 70 75  74 74 65 78 74 0d 1f cc  |......puttext...|
00004e40  28 f4 20 74 72 61 6e 73  66 65 72 20 74 65 78 74  |(. transfer text|
00004e50  20 66 72 6f 6d 20 62 75  66 66 65 72 20 74 6f 20  | from buffer to |
00004e60  63 61 72 65 74 0d 1f d6  27 e7 20 a4 64 65 6d 6f  |caret...'. .demo|
00004e70  28 22 54 65 78 74 20 62  75 66 66 65 72 20 6f 70  |("Text buffer op|
00004e80  65 72 61 74 69 6f 6e 73  22 29 20 e1 0d 1f e0 1a  |erations") .....|
00004e90  74 65 78 74 24 3d a4 69  74 28 62 75 66 66 77 69  |text$=.it(buffwi|
00004ea0  6e 64 25 2c 30 29 0d 1f  ea 22 c8 99 20 22 57 69  |nd%,0)...".. "Wi|
00004eb0  6d 70 5f 47 65 74 43 61  72 65 74 50 6f 73 69 74  |mp_GetCaretPosit|
00004ec0  69 6f 6e 22 2c 2c 43 25  0d 1f f4 23 64 77 68 25  |ion",,C%...#dwh%|
00004ed0  3d 43 25 21 30 3a 64 69  68 25 3d 43 25 21 34 3a  |=C%!0:dih%=C%!4:|
00004ee0  64 70 6f 73 25 3d 43 25  21 32 30 0d 1f fe 2d e7  |dpos%=C%!20...-.|
00004ef0  20 64 77 68 25 3d 6d 61  69 6e 25 20 80 20 64 69  | dwh%=main% . di|
00004f00  68 25 3e 37 38 20 80 20  64 69 68 25 3c 37 39 2b  |h%>78 . dih%<79+|
00004f10  69 74 65 6d 73 25 20 8c  0d 20 08 25 20 f2 6d 6f  |items% .. .% .mo|
00004f20  76 65 74 65 78 74 28 74  65 78 74 24 2c 64 77 68  |vetext(text$,dwh|
00004f30  25 2c 64 69 68 25 2c 64  70 6f 73 25 29 0d 20 12  |%,dih%,dpos%). .|
00004f40  05 cd 0d 20 1c 05 e1 0d  20 26 05 3a 0d 20 30 29  |... .... &.:. 0)|
00004f50  dd f2 73 68 69 66 74 64  65 73 63 28 73 77 68 25  |..shiftdesc(swh%|
00004f60  2c 73 69 68 25 2c 64 77  68 25 2c 64 69 68 25 2c  |,sih%,dwh%,dih%,|
00004f70  73 6d 62 25 29 0d 20 3a  2a f4 20 64 72 61 67 67  |smb%). :*. dragg|
00004f80  65 64 20 64 65 73 63 20  74 6f 20 62 75 66 66 65  |ed desc to buffe|
00004f90  72 20 6f 72 20 6f 74 68  65 72 20 64 65 73 63 0d  |r or other desc.|
00004fa0  20 44 20 e7 20 64 77 68  25 3d 62 75 66 66 77 69  | D . dwh%=buffwi|
00004fb0  6e 64 25 20 80 20 64 69  68 25 3c 3e 30 20 e1 0d  |nd% . dih%<>0 ..|
00004fc0  20 4e 31 e7 20 28 64 77  68 25 3d 62 75 66 66 77  | N1. (dwh%=buffw|
00004fd0  69 6e 64 25 20 84 20 73  77 68 25 3d 62 75 66 66  |ind% . swh%=buff|
00004fe0  77 69 6e 64 25 29 20 80  20 64 65 6d 6f 25 20 8c  |wind%) . demo% .|
00004ff0  0d 20 58 28 20 e7 20 a4  64 65 6d 6f 28 22 54 65  |. X( . .demo("Te|
00005000  78 74 20 62 75 66 66 65  72 20 6f 70 65 72 61 74  |xt buffer operat|
00005010  69 6f 6e 73 22 29 20 e1  0d 20 62 05 cd 0d 20 6c  |ions") .. b... l|
00005020  35 e7 20 64 77 68 25 3d  6d 61 69 6e 25 20 80 20  |5. dwh%=main% . |
00005030  28 64 69 68 25 3c 37 39  20 84 20 64 69 68 25 3e  |(dih%<79 . dih%>|
00005040  31 35 37 20 84 20 64 69  68 25 3d 73 69 68 25 29  |157 . dih%=sih%)|
00005050  20 e1 0d 20 76 1c 69 6e  73 65 72 74 25 3d a4 69  | .. v.insert%=.i|
00005060  73 28 62 75 66 66 77 69  6e 64 25 2c 33 29 0d 20  |s(buffwind%,3). |
00005070  80 2e e7 20 69 6e 73 65  72 74 25 20 64 70 6f 73  |... insert% dpos|
00005080  25 3d a4 64 70 6f 73 28  64 77 68 25 2c 64 69 68  |%=.dpos(dwh%,dih|
00005090  25 29 20 8b 20 64 70 6f  73 25 3d 30 0d 20 8a 18  |%) . dpos%=0. ..|
000050a0  74 65 78 74 24 3d a4 69  74 28 73 77 68 25 2c 73  |text$=.it(swh%,s|
000050b0  69 68 25 29 0d 20 94 24  f2 6d 6f 76 65 74 65 78  |ih%). .$.movetex|
000050c0  74 28 74 65 78 74 24 2c  64 77 68 25 2c 64 69 68  |t(text$,dwh%,dih|
000050d0  25 2c 64 70 6f 73 25 29  0d 20 9e 37 e7 20 a6 2d  |%,dpos%). .7. .-|
000050e0  31 20 84 20 73 6d 62 25  3d 31 36 20 f2 69 74 28  |1 . smb%=16 .it(|
000050f0  73 77 68 25 2c 73 69 68  25 2c 22 22 29 3a f2 63  |swh%,sih%,""):.c|
00005100  61 72 65 74 28 73 77 68  25 2c 73 69 68 25 29 0d  |aret(swh%,sih%).|
00005110  20 a8 05 e1 0d 20 b2 05  3a 0d 20 bc 15 dd a4 64  | .... ..:. ....d|
00005120  70 6f 73 28 64 77 68 25  2c 64 69 68 25 29 0d 20  |pos(dwh%,dih%). |
00005130  c6 2b f4 20 63 68 72 20  70 6f 73 20 6f 66 20 70  |.+. chr pos of p|
00005140  6f 69 6e 74 65 72 20 69  6e 20 69 63 6f 6e 20 61  |ointer in icon a|
00005150  66 74 65 72 20 64 72 61  67 0d 20 d0 09 ea 20 6d  |fter drag. ... m|
00005160  78 25 0d 20 da 29 c8 99  20 22 57 69 6d 70 5f 47  |x%. .).. "Wimp_G|
00005170  65 74 50 6f 69 6e 74 65  72 49 6e 66 6f 22 2c 2c  |etPointerInfo",,|
00005180  71 25 3a 6d 78 25 3d 71  25 21 30 0d 20 e4 32 71  |q%:mx%=q%!0. .2q|
00005190  25 21 30 3d 64 77 68 25  3a 71 25 21 34 3d 64 69  |%!0=dwh%:q%!4=di|
000051a0  68 25 3a c8 99 20 22 57  69 6d 70 5f 47 65 74 49  |h%:.. "Wimp_GetI|
000051b0  63 6f 6e 53 74 61 74 65  22 2c 2c 71 25 0d 20 ee  |conState",,q%. .|
000051c0  1f 3d 28 6d 78 25 2d a4  76 61 78 28 64 77 68 25  |.=(mx%-.vax(dwh%|
000051d0  2c 71 25 21 38 29 29 20  81 20 31 36 0d 20 f8 05  |,q%!8)) . 16. ..|
000051e0  3a 0d 21 02 23 dd f2 6d  6f 76 65 74 65 78 74 28  |:.!.#..movetext(|
000051f0  73 73 24 2c 64 77 68 25  2c 64 69 68 25 2c 64 70  |ss$,dwh%,dih%,dp|
00005200  6f 73 25 29 0d 21 0c 1c  69 6e 73 65 72 74 25 3d  |os%).!..insert%=|
00005210  a4 69 73 28 62 75 66 66  77 69 6e 64 25 2c 33 29  |.is(buffwind%,3)|
00005220  0d 21 16 16 64 73 24 3d  a4 69 74 28 64 77 68 25  |.!..ds$=.it(dwh%|
00005230  2c 64 69 68 25 29 0d 21  20 09 65 24 3d 22 22 0d  |,dih%).! .e$="".|
00005240  21 2a 0f e7 20 69 6e 73  65 72 74 25 20 8c 0d 21  |!*.. insert% ..!|
00005250  34 34 20 e7 20 a9 64 73  24 2b a9 73 73 24 3e 6d  |44 . .ds$+.ss$>m|
00005260  61 78 64 65 73 63 6c 65  6e 25 20 65 24 3d 22 54  |axdesclen% e$="T|
00005270  6f 6f 20 6c 6f 6e 67 20  74 6f 20 69 6e 73 65 72  |oo long to inser|
00005280  74 22 0d 21 3e 34 20 e7  20 a9 64 73 24 3d 6d 61  |t".!>4 . .ds$=ma|
00005290  78 64 65 73 63 6c 65 6e  25 20 65 24 3d 22 44 65  |xdesclen% e$="De|
000052a0  73 74 69 6e 61 74 69 6f  6e 20 62 75 66 66 65 72  |stination buffer|
000052b0  20 66 75 6c 6c 22 0d 21  48 0f 20 e7 20 65 24 3c  | full".!H. . e$<|
000052c0  3e 22 22 20 8c 0d 21 52  1c 20 20 61 6e 73 25 3d  |>"" ..!R.  ans%=|
000052d0  a4 6d 73 67 28 65 24 2c  22 43 61 6e 63 65 6c 22  |.msg(e$,"Cancel"|
000052e0  29 0d 21 5c 06 20 cc 0d  21 66 20 20 20 73 73 24  |).!\. ..!f   ss$|
000052f0  3d a4 69 6e 73 65 72 74  28 73 73 24 2c 64 73 24  |=.insert(ss$,ds$|
00005300  2c 64 70 6f 73 25 29 0d  21 70 06 20 cd 0d 21 7a  |,dpos%).!p. ..!z|
00005310  05 cd 0d 21 84 0d e7 20  65 24 3d 22 22 20 8c 0d  |...!... e$="" ..|
00005320  21 8e 2f 20 f2 69 74 28  64 77 68 25 2c 64 69 68  |!./ .it(dwh%,dih|
00005330  25 2c 73 73 24 29 3a f2  63 61 72 65 74 28 64 77  |%,ss$):.caret(dw|
00005340  68 25 2c 64 69 68 25 29  3a f2 62 65 65 70 0d 21  |h%,dih%):.beep.!|
00005350  98 19 20 f5 3a c8 97 20  78 25 2c 79 25 2c 62 25  |.. .:.. x%,y%,b%|
00005360  3a fd 20 62 25 3d 30 0d  21 a2 05 cd 0d 21 ac 05  |:. b%=0.!....!..|
00005370  e1 0d 21 b6 05 3a 0d 21  c0 16 dd a4 69 6e 73 65  |..!..:.!....inse|
00005380  72 74 28 73 24 2c 64 24  2c 70 25 29 0d 21 ca 1f  |rt(s$,d$,p%).!..|
00005390  f4 20 70 6c 61 63 65 73  20 73 24 20 69 6e 20 64  |. places s$ in d|
000053a0  24 20 61 74 20 70 6f 73  20 70 25 0d 21 d4 1b ea  |$ at pos p%.!...|
000053b0  20 6c 24 2c 72 24 2c 6d  61 78 6c 25 3a 6d 61 78  | l$,r$,maxl%:max|
000053c0  6c 25 3d 32 35 35 0d 21  de 21 e7 20 70 25 3c 30  |l%=255.!.!. p%<0|
000053d0  20 70 25 3d 30 20 8b 20  e7 20 70 25 3e a9 64 24  | p%=0 . . p%>.d$|
000053e0  20 70 25 3d a9 64 24 0d  21 e8 18 e7 20 a9 64 24  | p%=.d$.!... .d$|
000053f0  2b a9 73 24 3e 6d 61 78  6c 25 20 8c 3d 64 24 0d  |+.s$>maxl% .=d$.|
00005400  21 f2 1d 6c 24 3d c0 64  24 2c 70 25 29 3a 72 24  |!..l$=.d$,p%):r$|
00005410  3d c2 64 24 2c a9 64 24  2d 70 25 29 0d 21 fc 0d  |=.d$,.d$-p%).!..|
00005420  3d 6c 24 2b 73 24 2b 72  24 0d 22 06 05 3a 0d 22  |=l$+s$+r$."..:."|
00005430  10 0e f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 22 1a 0e  |...---------."..|
00005440  f4 2e 20 43 48 4f 49 43  45 53 0d 22 24 0e f4 2d  |.. CHOICES."$..-|
00005450  2d 2d 2d 2d 2d 2d 2d 2d  0d 22 2e 05 3a 0d 22 38  |--------."..:."8|
00005460  11 dd f2 6c 6f 61 64 63  68 6f 69 63 65 73 0d 22  |...loadchoices."|
00005470  42 2a ea 20 4a 25 2c 66  73 70 24 2c 64 24 2c 73  |B*. J%,fsp$,d$,s|
00005480  24 2c 6e 25 2c 77 68 25  3a 77 68 25 3d 63 68 6f  |$,n%,wh%:wh%=cho|
00005490  69 63 65 77 69 6e 64 25  0d 22 4c 1c 66 73 70 24  |icewind%."L.fsp$|
000054a0  3d 74 61 73 6b 64 69 72  24 2b 22 2e 43 68 6f 69  |=taskdir$+".Choi|
000054b0  63 65 73 22 0d 22 56 19  e7 20 a4 63 68 65 63 6b  |ces"."V.. .check|
000054c0  6f 62 6a 28 66 73 70 24  2c b9 29 20 8c 0d 22 60  |obj(fsp$,.) .."`|
000054d0  0f 20 48 25 3d ad 28 66  73 70 24 29 0d 22 6a 22  |. H%=.(fsp$)."j"|
000054e0  20 73 24 3d be 23 48 25  3a f4 20 74 61 73 6b 64  | s$=.#H%:. taskd|
000054f0  69 72 24 2b 22 2e 43 68  6f 69 63 65 73 22 0d 22  |ir$+".Choices"."|
00005500  74 0f 20 75 73 65 72 24  3d be 23 48 25 0d 22 7e  |t. user$=.#H%."~|
00005510  0c 20 6e 25 3d 9a 23 48  25 0d 22 88 1d 20 e7 20  |. n%=.#H%.".. . |
00005520  6e 25 3d 30 20 64 65 6d  6f 25 3d b9 20 8b 20 64  |n%=0 demo%=. . d|
00005530  65 6d 6f 25 3d a3 0d 22  92 10 20 e3 20 4a 25 3d  |emo%=..".. . J%=|
00005540  36 20 b8 20 31 36 0d 22  9c 0d 20 20 6e 25 3d 9a  |6 . 16."..  n%=.|
00005550  23 48 25 0d 22 a6 26 20  20 e7 20 6e 25 3d 31 20  |#H%.".&  . n%=1 |
00005560  f2 73 69 28 77 68 25 2c  4a 25 29 20 8b 20 f2 75  |.si(wh%,J%) . .u|
00005570  69 28 77 68 25 2c 4a 25  29 0d 22 b0 06 20 ed 0d  |i(wh%,J%).".. ..|
00005580  22 ba 13 20 73 74 61 72  74 64 69 72 24 3d be 23  |".. startdir$=.#|
00005590  48 25 0d 22 c4 0e 20 d9  23 48 25 3a 48 25 3d 30  |H%.".. .#H%:H%=0|
000055a0  0d 22 ce 10 20 f2 73 65  74 63 68 6f 69 63 65 73  |.".. .setchoices|
000055b0  0d 22 d8 05 cc 0d 22 e2  11 20 f2 73 65 74 64 65  |."....".. .setde|
000055c0  66 61 75 6c 74 73 0d 22  ec 05 cd 0d 22 f6 05 e1  |faults."...."...|
000055d0  0d 23 00 05 3a 0d 23 0a  10 dd f2 73 65 74 63 68  |.#..:.#....setch|
000055e0  6f 69 63 65 73 0d 23 14  1f ea 20 4a 25 2c 73 25  |oices.#... J%,s%|
000055f0  2c 77 68 25 3a 77 68 25  3d 63 68 6f 69 63 65 77  |,wh%:wh%=choicew|
00005600  69 6e 64 25 0d 23 1e 1c  6f 70 65 6e 54 69 67 65  |ind%.#..openTige|
00005610  72 25 3d a3 3a 6f 70 65  6e 62 75 66 66 25 3d a3  |r%=.:openbuff%=.|
00005620  0d 23 28 2c 70 72 6f 6d  70 74 73 61 76 65 25 3d  |.#(,promptsave%=|
00005630  a3 3a 49 63 6f 6e 53 70  72 69 74 65 73 25 3d a3  |.:IconSprites%=.|
00005640  3a 64 72 61 67 64 65 73  63 25 3d a3 0d 23 32 08  |:dragdesc%=..#2.|
00005650  73 25 3d a3 0d 23 3c 0e  e3 20 4a 25 3d 36 20 b8  |s%=..#<.. J%=6 .|
00005660  20 38 0d 23 46 17 20 e7  20 a4 69 73 28 77 68 25  | 8.#F. . .is(wh%|
00005670  2c 4a 25 29 20 73 25 3d  b9 0d 23 50 05 ed 0d 23  |,J%) s%=..#P...#|
00005680  5a 1f e7 20 73 25 3d a3  20 f2 73 69 28 77 68 25  |Z.. s%=. .si(wh%|
00005690  2c 36 29 3a f4 20 64 65  66 61 75 6c 74 0d 23 64  |,6):. default.#d|
000056a0  35 e7 20 a4 69 73 28 77  68 25 2c 36 29 20 73 74  |5. .is(wh%,6) st|
000056b0  61 72 74 64 69 72 24 3d  a4 73 74 72 69 70 28 a4  |artdir$=.strip(.|
000056c0  6f 73 76 61 72 28 22 52  6f 6f 74 24 44 69 72 22  |osvar("Root$Dir"|
000056d0  29 29 0d 23 6e 12 e7 20  a4 69 73 28 77 68 25 2c  |)).#n.. .is(wh%,|
000056e0  37 29 20 8c 0d 23 78 35  20 e7 20 ac 20 a4 63 68  |7) ..#x5 . . .ch|
000056f0  65 63 6b 6f 62 6a 28 73  74 61 72 74 64 69 72 24  |eckobj(startdir$|
00005700  2c a3 29 20 f2 73 69 28  77 68 25 2c 36 29 3a f2  |,.) .si(wh%,6):.|
00005710  75 69 28 77 68 25 2c 37  29 0d 23 82 34 20 f4 20  |ui(wh%,7).#.4 . |
00005720  64 65 66 61 75 6c 74 20  74 6f 20 72 6f 6f 74 20  |default to root |
00005730  69 66 20 63 61 6e 27 74  20 66 69 6e 64 20 75 73  |if can't find us|
00005740  65 72 27 73 20 73 74 61  72 74 64 69 72 0d 23 8c  |er's startdir.#.|
00005750  05 cd 0d 23 96 1d e7 20  a4 69 73 28 77 68 25 2c  |...#... .is(wh%,|
00005760  38 29 20 73 74 61 72 74  64 69 72 24 3d 22 22 0d  |8) startdir$="".|
00005770  23 a0 1b e7 20 a4 69 73  28 77 68 25 2c 39 29 20  |#... .is(wh%,9) |
00005780  64 69 73 70 6c 61 79 25  3d 31 0d 23 aa 1c e7 20  |display%=1.#... |
00005790  a4 69 73 28 77 68 25 2c  31 30 29 20 64 69 73 70  |.is(wh%,10) disp|
000057a0  6c 61 79 25 3d 32 0d 23  b4 1c e7 20 a4 69 73 28  |lay%=2.#... .is(|
000057b0  77 68 25 2c 31 31 29 20  64 69 73 70 6c 61 79 25  |wh%,11) display%|
000057c0  3d 33 0d 23 be 1e e7 20  a4 69 73 28 77 68 25 2c  |=3.#... .is(wh%,|
000057d0  31 32 29 20 6f 70 65 6e  54 69 67 65 72 25 3d b9  |12) openTiger%=.|
000057e0  0d 23 c8 1d e7 20 a4 69  73 28 77 68 25 2c 31 33  |.#... .is(wh%,13|
000057f0  29 20 6f 70 65 6e 62 75  66 66 25 3d b9 0d 23 d2  |) openbuff%=..#.|
00005800  1f e7 20 a4 69 73 28 77  68 25 2c 31 34 29 20 70  |.. .is(wh%,14) p|
00005810  72 6f 6d 70 74 73 61 76  65 25 3d b9 0d 23 dc 20  |romptsave%=..#. |
00005820  e7 20 a4 69 73 28 77 68  25 2c 31 35 29 20 49 63  |. .is(wh%,15) Ic|
00005830  6f 6e 53 70 72 69 74 65  73 25 3d b9 0d 23 e6 1d  |onSprites%=..#..|
00005840  e7 20 a4 69 73 28 77 68  25 2c 31 36 29 20 64 72  |. .is(wh%,16) dr|
00005850  61 67 64 65 73 63 25 3d  b9 0d 23 f0 05 e1 0d 23  |agdesc%=..#....#|
00005860  fa 05 3a 0d 24 04 14 dd  f2 70 72 65 70 63 68 6f  |..:.$....prepcho|
00005870  69 63 65 77 69 6e 64 0d  24 0e 1c ea 20 4a 25 2c  |icewind.$... J%,|
00005880  77 68 25 3a 77 68 25 3d  63 68 6f 69 63 65 77 69  |wh%:wh%=choicewi|
00005890  6e 64 25 0d 24 18 1c e3  20 4a 25 3d 36 20 b8 20  |nd%.$... J%=6 . |
000058a0  38 3a f2 75 69 28 77 68  25 2c 4a 25 29 3a ed 0d  |8:.ui(wh%,J%):..|
000058b0  24 22 12 c8 8e 20 73 74  61 72 74 64 69 72 24 20  |$"... startdir$ |
000058c0  ca 0d 24 2c 2c 20 c9 20  a4 73 74 72 69 70 28 a4  |..$,, . .strip(.|
000058d0  6f 73 76 61 72 28 22 52  6f 6f 74 24 44 69 72 22  |osvar("Root$Dir"|
000058e0  29 29 3a f2 73 69 28 77  68 25 2c 36 29 0d 24 36  |)):.si(wh%,6).$6|
000058f0  16 20 c9 20 64 69 72 24  3a f2 73 69 28 77 68 25  |. . dir$:.si(wh%|
00005900  2c 37 29 0d 24 40 14 20  c9 20 22 22 3a f2 73 69  |,7).$@. . "":.si|
00005910  28 77 68 25 2c 38 29 0d  24 4a 11 20 7f 3a f2 73  |(wh%,8).$J. .:.s|
00005920  69 28 77 68 25 2c 36 29  0d 24 54 05 cb 0d 24 5e  |i(wh%,6).$T...$^|
00005930  11 c8 8e 20 64 69 73 70  6c 61 79 25 20 ca 0d 24  |... display% ..$|
00005940  68 13 20 c9 20 31 3a f2  73 69 28 77 68 25 2c 39  |h. . 1:.si(wh%,9|
00005950  29 0d 24 72 14 20 c9 20  32 3a f2 73 69 28 77 68  |).$r. . 2:.si(wh|
00005960  25 2c 31 30 29 0d 24 7c  14 20 c9 20 33 3a f2 73  |%,10).$|. . 3:.s|
00005970  69 28 77 68 25 2c 31 31  29 0d 24 86 05 cb 0d 24  |i(wh%,11).$....$|
00005980  90 1c e7 20 6f 70 65 6e  54 69 67 65 72 25 20 f2  |... openTiger% .|
00005990  73 69 28 77 68 25 2c 31  32 29 0d 24 9a 1b e7 20  |si(wh%,12).$... |
000059a0  6f 70 65 6e 62 75 66 66  25 20 f2 73 69 28 77 68  |openbuff% .si(wh|
000059b0  25 2c 31 33 29 0d 24 a4  1d e7 20 70 72 6f 6d 70  |%,13).$... promp|
000059c0  74 73 61 76 65 25 20 f2  73 69 28 77 68 25 2c 31  |tsave% .si(wh%,1|
000059d0  34 29 0d 24 ae 1e e7 20  49 63 6f 6e 53 70 72 69  |4).$... IconSpri|
000059e0  74 65 73 25 20 f2 73 69  28 77 68 25 2c 31 35 29  |tes% .si(wh%,15)|
000059f0  0d 24 b8 1b e7 20 64 72  61 67 64 65 73 63 25 20  |.$... dragdesc% |
00005a00  f2 73 69 28 77 68 25 2c  31 36 29 0d 24 c2 05 e1  |.si(wh%,16).$...|
00005a10  0d 24 cc 05 3a 0d 24 d6  11 dd f2 73 65 74 64 65  |.$..:.$....setde|
00005a20  66 61 75 6c 74 73 0d 24  e0 1c ea 20 4a 25 2c 77  |faults.$... J%,w|
00005a30  68 25 3a 77 68 25 3d 63  68 6f 69 63 65 77 69 6e  |h%:wh%=choicewin|
00005a40  64 25 0d 24 ea 1d e3 20  4a 25 3d 36 20 b8 20 31  |d%.$... J%=6 . 1|
00005a50  36 3a f2 75 69 28 77 68  25 2c 4a 25 29 3a ed 0d  |6:.ui(wh%,J%):..|
00005a60  24 f4 25 f2 73 69 28 77  68 25 2c 36 29 3a f2 73  |$.%.si(wh%,6):.s|
00005a70  69 28 77 68 25 2c 39 29  3a f2 73 69 28 77 68 25  |i(wh%,9):.si(wh%|
00005a80  2c 31 32 29 0d 24 fe 27  f2 73 69 28 77 68 25 2c  |,12).$.'.si(wh%,|
00005a90  31 34 29 3a f2 73 69 28  77 68 25 2c 31 35 29 3a  |14):.si(wh%,15):|
00005aa0  f2 73 69 28 77 68 25 2c  31 36 29 0d 25 08 0f f2  |.si(wh%,16).%...|
00005ab0  73 65 74 63 68 6f 69 63  65 73 0d 25 12 05 e1 0d  |setchoices.%....|
00005ac0  25 1c 05 3a 0d 25 26 11  dd f2 73 61 76 65 63 68  |%..:.%&...savech|
00005ad0  6f 69 63 65 73 0d 25 30  27 ea 20 4a 25 2c 66 73  |oices.%0'. J%,fs|
00005ae0  70 24 2c 64 24 2c 6e 25  2c 77 68 25 3a 77 68 25  |p$,d$,n%,wh%:wh%|
00005af0  3d 63 68 6f 69 63 65 77  69 6e 64 25 0d 25 3a 1c  |=choicewind%.%:.|
00005b00  66 73 70 24 3d 74 61 73  6b 64 69 72 24 2b 22 2e  |fsp$=taskdir$+".|
00005b10  43 68 6f 69 63 65 73 22  0d 25 44 0e 48 25 3d ae  |Choices".%D.H%=.|
00005b20  28 66 73 70 24 29 0d 25  4e 19 d5 23 48 25 2c 74  |(fsp$).%N..#H%,t|
00005b30  61 73 6b 24 2b 22 20 63  68 6f 69 63 65 73 22 0d  |ask$+" choices".|
00005b40  25 58 0e d5 23 48 25 2c  75 73 65 72 24 0d 25 62  |%X..#H%,user$.%b|
00005b50  17 e7 20 64 65 6d 6f 25  20 6e 25 3d 30 20 8b 20  |.. demo% n%=0 . |
00005b60  6e 25 3d 31 0d 25 6c 0b  d5 23 48 25 2c 6e 25 0d  |n%=1.%l..#H%,n%.|
00005b70  25 76 0f e3 20 4a 25 3d  36 20 b8 20 31 36 0d 25  |%v.. J%=6 . 16.%|
00005b80  80 1e 20 e7 20 a4 69 73  28 77 68 25 2c 4a 25 29  |.. . .is(wh%,J%)|
00005b90  20 6e 25 3d 31 20 8b 20  6e 25 3d 30 0d 25 8a 0c  | n%=1 . n%=0.%..|
00005ba0  20 d5 23 48 25 2c 6e 25  0d 25 94 05 ed 0d 25 9e  | .#H%,n%.%....%.|
00005bb0  20 e7 20 a4 69 73 28 77  68 25 2c 37 29 20 64 24  | . .is(wh%,7) d$|
00005bc0  3d 64 69 72 24 20 8b 20  64 24 3d 22 22 0d 25 a8  |=dir$ . d$="".%.|
00005bd0  0b d5 23 48 25 2c 64 24  0d 25 b2 1e ff 28 22 53  |..#H%,d$.%...("S|
00005be0  65 74 54 79 70 65 20 22  2b 66 73 70 24 2b 22 20  |etType "+fsp$+" |
00005bf0  26 46 46 46 22 29 0d 25  bc 0d d9 23 48 25 3a 48  |&FFF").%...#H%:H|
00005c00  25 3d 30 0d 25 c6 05 e1  0d 25 d0 05 3a 0d 25 da  |%=0.%....%..:.%.|
00005c10  0f f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 25 e4 0f  |..----------.%..|
00005c20  f4 2e 20 44 52 41 47 47  49 4e 47 0d 25 ee 0f f4  |.. DRAGGING.%...|
00005c30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 25 f8 05 3a 0d  |----------.%..:.|
00005c40  26 02 0f dd a4 73 6f 6c  69 64 64 72 61 67 0d 26  |&....soliddrag.&|
00005c50  0c 22 f4 20 6d 6f 64 75  6c 65 73 20 70 72 65 73  |.". modules pres|
00005c60  65 6e 74 3f 20 28 52 49  53 43 20 4f 53 a0 33 29  |ent? (RISC OS.3)|
00005c70  0d 26 16 26 e7 20 a4 73  77 69 28 22 44 72 61 67  |.&.&. .swi("Drag|
00005c80  41 53 70 72 69 74 65 5f  53 74 61 72 74 22 29 3d  |ASprite_Start")=|
00005c90  2d 31 20 8c 3d a3 0d 26  20 26 e7 20 a4 73 77 69  |-1 .=..& &. .swi|
00005ca0  28 22 44 72 61 67 41 53  70 72 69 74 65 5f 53 74  |("DragASprite_St|
00005cb0  6f 70 22 29 20 3d 2d 31  20 8c 3d a3 0d 26 2a 1b  |op") =-1 .=..&*.|
00005cc0  f4 20 62 69 74 20 31 20  6f 66 20 62 79 74 65 20  |. bit 1 of byte |
00005cd0  32 38 20 73 65 74 3f 0d  26 34 21 c8 99 20 22 4f  |28 set?.&4!.. "O|
00005ce0  53 5f 42 79 74 65 22 2c  31 36 31 2c 32 38 20 b8  |S_Byte",161,28 .|
00005cf0  20 2c 2c 63 6d 6f 73 25  0d 26 3e 17 e7 20 28 63  | ,,cmos%.&>.. (c|
00005d00  6d 6f 73 25 20 80 20 32  29 3d 30 20 8c 3d a3 0d  |mos% . 2)=0 .=..|
00005d10  26 48 06 3d b9 0d 26 52  05 3a 0d 26 5c 11 dd a4  |&H.=..&R.:.&\...|
00005d20  66 69 6c 65 72 61 63 74  69 6f 6e 0d 26 66 1b f4  |fileraction.&f..|
00005d30  20 62 69 74 20 32 20 6f  66 20 62 79 74 65 20 32  | bit 2 of byte 2|
00005d40  38 20 73 65 74 3f 0d 26  70 21 c8 99 20 22 4f 53  |8 set?.&p!.. "OS|
00005d50  5f 42 79 74 65 22 2c 31  36 31 2c 32 38 20 b8 20  |_Byte",161,28 . |
00005d60  2c 2c 63 6d 6f 73 25 0d  26 7a 17 e7 20 28 63 6d  |,,cmos%.&z.. (cm|
00005d70  6f 73 25 20 80 20 34 29  3d 30 20 8c 3d b9 0d 26  |os% . 4)=0 .=..&|
00005d80  84 06 3d a3 0d 26 8e 05  3a 0d 26 98 0f dd a4 73  |..=..&..:.&....s|
00005d90  77 69 28 73 77 69 24 29  0d 26 a2 11 ea 20 73 77  |wi(swi$).&... sw|
00005da0  69 25 2c 66 6c 61 67 73  25 0d 26 ac 34 c8 99 20  |i%,flags%.&.4.. |
00005db0  22 58 4f 53 5f 53 57 49  4e 75 6d 62 65 72 46 72  |"XOS_SWINumberFr|
00005dc0  6f 6d 53 74 72 69 6e 67  22 2c 2c 73 77 69 24 20  |omString",,swi$ |
00005dd0  b8 20 73 77 69 25 3b 66  6c 61 67 73 25 0d 26 b6  |. swi%;flags%.&.|
00005de0  1a e7 20 28 66 6c 61 67  73 25 20 80 20 31 29 20  |.. (flags% . 1) |
00005df0  73 77 69 25 3d 2d 31 0d  26 c0 09 3d 73 77 69 25  |swi%=-1.&..=swi%|
00005e00  0d 26 ca 05 3a 0d 26 d4  21 dd f2 73 74 61 72 74  |.&..:.&.!..start|
00005e10  64 72 61 67 28 77 68 25  2c 69 68 25 2c 6d 62 25  |drag(wh%,ih%,mb%|
00005e20  2c 73 6f 6c 25 29 0d 26  de 27 73 77 68 25 3d 77  |,sol%).&.'swh%=w|
00005e30  68 25 3a 73 69 68 25 3d  69 68 25 3a 73 6d 62 25  |h%:sih%=ih%:smb%|
00005e40  3d 6d 62 25 3a f4 20 73  6f 75 72 63 65 0d 26 e8  |=mb%:. source.&.|
00005e50  10 f4 20 67 65 74 20 63  6f 6f 72 64 73 0d 26 f2  |.. get coords.&.|
00005e60  29 71 25 21 30 3d 77 68  25 3a c8 99 20 22 57 69  |)q%!0=wh%:.. "Wi|
00005e70  6d 70 5f 47 65 74 57 69  6e 64 6f 77 53 74 61 74  |mp_GetWindowStat|
00005e80  65 22 2c 2c 71 25 0d 26  fc 44 77 6d 69 6e 78 25  |e",,q%.&.Dwminx%|
00005e90  3d 71 25 21 34 3a 77 6d  69 6e 79 25 3d 71 25 21  |=q%!4:wminy%=q%!|
00005ea0  38 3a 77 6d 61 78 78 25  3d 71 25 21 31 32 3a 77  |8:wmaxx%=q%!12:w|
00005eb0  6d 61 78 79 25 3d 71 25  21 31 36 3a 73 63 72 6f  |maxy%=q%!16:scro|
00005ec0  6c 6c 79 25 3d 71 25 21  32 34 0d 27 06 22 6f 78  |lly%=q%!24.'."ox|
00005ed0  25 3d 71 25 21 34 2d 71  25 21 32 30 3a 6f 79 25  |%=q%!4-q%!20:oy%|
00005ee0  3d 71 25 21 31 36 2d 71  25 21 32 34 0d 27 10 3d  |=q%!16-q%!24.'.=|
00005ef0  c8 99 20 22 57 69 6d 70  5f 47 65 74 50 6f 69 6e  |.. "Wimp_GetPoin|
00005f00  74 65 72 49 6e 66 6f 22  2c 2c 71 25 3a 6d 78 25  |terInfo",,q%:mx%|
00005f10  3d 71 25 21 30 3a 6d 79  25 3d 71 25 21 34 3a 72  |=q%!0:my%=q%!4:r|
00005f20  65 6d 62 25 3d 71 25 21  38 0d 27 1a 30 71 25 21  |emb%=q%!8.'.0q%!|
00005f30  30 3d 77 68 25 3a 71 25  21 34 3d 69 68 25 3a c8  |0=wh%:q%!4=ih%:.|
00005f40  99 20 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |. "Wimp_GetIconS|
00005f50  74 61 74 65 22 2c 2c 71  25 0d 27 24 22 f4 20 69  |tate",,q%.'$". i|
00005f60  6e 69 74 69 61 6c 20 70  6f 73 69 74 69 6f 6e 20  |nitial position |
00005f70  6f 66 20 64 72 61 67 20  62 6f 78 0d 27 2e 0d c8  |of drag box.'...|
00005f80  8e 20 73 77 68 25 20 ca  0d 27 38 06 20 3a 0d 27  |. swh% ..'8. :.'|
00005f90  42 10 20 c9 20 6d 65 73  73 77 69 6e 64 25 0d 27  |B. . messwind%.'|
00005fa0  4c 0b 20 73 6f 6c 25 3d  a3 0d 27 56 2e 20 71 25  |L. sol%=..'V. q%|
00005fb0  21 34 3d 77 68 25 3a c8  99 20 22 57 69 6d 70 5f  |!4=wh%:.. "Wimp_|
00005fc0  47 65 74 57 69 6e 64 6f  77 4f 75 74 6c 69 6e 65  |GetWindowOutline|
00005fd0  22 2c 2c 71 25 2b 34 0d  27 60 20 20 71 25 21 30  |",,q%+4.'`  q%!0|
00005fe0  3d 77 68 25 3a 71 25 21  34 3d 35 3a f4 20 64 72  |=wh%:q%!4=5:. dr|
00005ff0  61 67 20 74 79 70 65 0d  27 6a 1e 20 78 6f 73 25  |ag type.'j. xos%|
00006000  3d a4 6f 73 78 6d 61 78  3a 79 6f 73 25 3d a4 6f  |=.osxmax:yos%=.o|
00006010  73 79 6d 61 78 0d 27 74  2a 20 71 25 21 32 34 3d  |symax.'t* q%!24=|
00006020  30 3a 71 25 21 32 38 3d  30 3a 71 25 21 33 32 3d  |0:q%!28=0:q%!32=|
00006030  78 6f 73 25 3a 71 25 21  33 36 3d 79 6f 73 25 0d  |xos%:q%!36=yos%.|
00006040  27 7e 06 20 3a 0d 27 88  18 20 c9 20 73 61 76 65  |'~. :.'.. . save|
00006050  62 6f 78 25 2c 63 6f 70  79 62 6f 78 25 0d 27 92  |box%,copybox%.'.|
00006060  1d 20 71 25 21 30 3d 77  68 25 3a 71 25 21 34 3d  |. q%!0=wh%:q%!4=|
00006070  35 3a 73 70 72 61 64 25  3d 31 0d 27 9c 42 20 71  |5:sprad%=1.'.B q|
00006080  25 21 38 3d 71 25 21 38  2b 6f 78 25 3a 71 25 21  |%!8=q%!8+ox%:q%!|
00006090  31 32 3d 71 25 21 31 32  2b 6f 79 25 3a 71 25 21  |12=q%!12+oy%:q%!|
000060a0  31 36 3d 71 25 21 31 36  2b 6f 78 25 3a 71 25 21  |16=q%!16+ox%:q%!|
000060b0  32 30 3d 71 25 21 32 30  2b 6f 79 25 0d 27 a6 34  |20=q%!20+oy%.'.4|
000060c0  20 71 25 21 32 34 3d 30  3a 71 25 21 32 38 3d 30  | q%!24=0:q%!28=0|
000060d0  3a 71 25 21 33 32 3d 26  37 46 46 46 46 46 46 46  |:q%!32=&7FFFFFFF|
000060e0  3a 71 25 21 33 36 3d 26  37 46 46 46 46 46 46 46  |:q%!36=&7FFFFFFF|
000060f0  0d 27 b0 06 20 3a 0d 27  ba 0c 20 c9 20 6d 61 69  |.'.. :.'.. . mai|
00006100  6e 25 0d 27 c4 0f 20 e7  20 69 68 25 3d 2d 31 20  |n%.'.. . ih%=-1 |
00006110  8c 0d 27 ce 20 20 20 f4  20 62 61 63 6b 67 72 6f  |..'.   . backgro|
00006120  75 6e 64 20 2d 20 72 75  62 62 65 72 20 62 61 6e  |und - rubber ban|
00006130  64 0d 27 d8 18 20 20 e7  20 6d 78 25 2d 77 6d 69  |d.'..  . mx%-wmi|
00006140  6e 78 25 3c 32 34 34 20  8c 0d 27 e2 2c 20 20 20  |nx%<244 ..'.,   |
00006150  71 25 21 30 3d 77 68 25  3a c8 99 20 22 57 69 6d  |q%!0=wh%:.. "Wim|
00006160  70 5f 47 65 74 57 69 6e  64 6f 77 53 74 61 74 65  |p_GetWindowState|
00006170  22 2c 2c 71 25 0d 27 ec  34 20 20 20 6d 69 6e 78  |",,q%.'.4   minx|
00006180  25 3d 71 25 21 34 3a 6d  69 6e 79 25 3d 71 25 21  |%=q%!4:miny%=q%!|
00006190  38 3a 6d 61 78 78 25 3d  71 25 21 31 32 3a 6d 61  |8:maxx%=q%!12:ma|
000061a0  78 79 25 3d 71 25 21 31  36 0d 27 f6 28 20 20 20  |xy%=q%!16.'.(   |
000061b0  e7 20 6d 61 78 78 25 3e  6d 69 6e 78 25 2b 32 32  |. maxx%>minx%+22|
000061c0  38 20 6d 61 78 78 25 3d  6d 69 6e 78 25 2b 32 32  |8 maxx%=minx%+22|
000061d0  38 0d 28 00 22 20 20 20  71 25 21 30 3d 77 68 25  |8.(."   q%!0=wh%|
000061e0  3a 71 25 21 34 3d 36 3a  f4 20 64 72 61 67 20 74  |:q%!4=6:. drag t|
000061f0  79 70 65 0d 28 0a 31 20  20 20 71 25 21 38 3d 6d  |ype.(.1   q%!8=m|
00006200  78 25 3a 71 25 21 31 32  3d 6d 79 25 3a 71 25 21  |x%:q%!12=my%:q%!|
00006210  31 36 3d 6d 78 25 2b 34  3a 71 25 21 32 30 3d 6d  |16=mx%+4:q%!20=m|
00006220  79 25 2b 34 0d 28 14 2c  20 20 20 f4 20 72 65 73  |y%+4.(.,   . res|
00006230  74 72 69 63 74 20 70 61  72 65 6e 74 20 62 6f 78  |trict parent box|
00006240  20 74 6f 20 76 69 73 69  62 6c 65 20 61 72 65 61  | to visible area|
00006250  0d 28 1e 36 20 20 20 71  25 21 32 34 3d 6d 69 6e  |.(.6   q%!24=min|
00006260  78 25 3a 71 25 21 32 38  3d 6d 69 6e 79 25 3a 71  |x%:q%!28=miny%:q|
00006270  25 21 33 32 3d 6d 61 78  78 25 3a 71 25 21 33 36  |%!32=maxx%:q%!36|
00006280  3d 6d 61 78 79 25 0d 28  28 07 20 20 cd 0d 28 32  |=maxy%.((.  ..(2|
00006290  06 20 cd 0d 28 3c 06 20  3a 0d 28 46 18 20 e7 20  |. ..(<. :.(F. . |
000062a0  69 68 25 3e 2d 31 20 80  20 69 68 25 3c 37 39 20  |ih%>-1 . ih%<79 |
000062b0  8c 0d 28 50 14 20 20 f2  73 69 28 6d 61 69 6e 25  |..(P.  .si(main%|
000062c0  2c 69 68 25 29 0d 28 5a  0f 20 20 73 65 6c 25 3d  |,ih%).(Z.  sel%=|
000062d0  a4 73 65 6c 0d 28 64 2a  20 20 71 25 21 30 3d 77  |.sel.(d*  q%!0=w|
000062e0  68 25 3a 71 25 21 34 3d  35 3a 73 70 72 61 64 25  |h%:q%!4=5:sprad%|
000062f0  3d 31 3a 73 6f 6c 25 3d  73 6f 6c 69 64 25 0d 28  |=1:sol%=solid%.(|
00006300  6e 2c 20 20 71 25 21 38  3d 6d 78 25 3a 71 25 21  |n,  q%!8=mx%:q%!|
00006310  31 32 3d 6d 79 25 3a 71  25 21 31 36 3d 6d 78 25  |12=my%:q%!16=mx%|
00006320  3a 71 25 21 32 30 3d 6d  79 25 0d 28 78 35 20 20  |:q%!20=my%.(x5  |
00006330  71 25 21 32 34 3d 30 3a  71 25 21 32 38 3d 30 3a  |q%!24=0:q%!28=0:|
00006340  71 25 21 33 32 3d 26 37  46 46 46 46 46 46 46 3a  |q%!32=&7FFFFFFF:|
00006350  71 25 21 33 36 3d 26 37  46 46 46 46 46 46 46 0d  |q%!36=&7FFFFFFF.|
00006360  28 82 06 20 cd 0d 28 8c  06 20 3a 0d 28 96 1c 20  |(.. ..(.. :.(.. |
00006370  e7 20 69 68 25 3e 37 38  20 80 20 64 69 73 70 6c  |. ih%>78 . displ|
00006380  61 79 25 3d 31 20 8c 0d  28 a0 0d 20 20 f4 20 64  |ay%=1 ..(..  . d|
00006390  65 73 63 72 0d 28 aa 15  20 20 e7 20 ac 20 64 72  |escr.(..  . . dr|
000063a0  61 67 64 65 73 63 25 20  e1 0d 28 b4 32 20 20 69  |agdesc% ..(.2  i|
000063b0  6d 69 6e 78 25 3d a4 76  61 78 28 77 68 25 2c 71  |minx%=.vax(wh%,q|
000063c0  25 21 38 29 3a 69 6d 69  6e 79 25 3d a4 76 61 79  |%!8):iminy%=.vay|
000063d0  28 77 68 25 2c 71 25 21  31 32 29 0d 28 be 33 20  |(wh%,q%!12).(.3 |
000063e0  20 69 6d 61 78 78 25 3d  a4 76 61 78 28 77 68 25  | imaxx%=.vax(wh%|
000063f0  2c 71 25 21 31 36 29 3a  69 6d 61 78 79 25 3d a4  |,q%!16):imaxy%=.|
00006400  76 61 79 28 77 68 25 2c  71 25 21 32 30 29 0d 28  |vay(wh%,q%!20).(|
00006410  c8 23 20 20 e7 20 69 6d  69 6e 78 25 3c 77 6d 69  |.#  . iminx%<wmi|
00006420  6e 78 25 20 69 6d 69 6e  78 25 3d 77 6d 69 6e 78  |nx% iminx%=wminx|
00006430  25 0d 28 d2 23 20 20 e7  20 69 6d 61 78 78 25 3e  |%.(.#  . imaxx%>|
00006440  77 6d 61 78 78 25 20 69  6d 61 78 78 25 3d 77 6d  |wmaxx% imaxx%=wm|
00006450  61 78 78 25 0d 28 dc 2b  20 20 77 25 3d 28 69 6d  |axx%.(.+  w%=(im|
00006460  61 78 78 25 2d 69 6d 69  6e 78 25 29 20 81 20 32  |axx%-iminx%) . 2|
00006470  3a 68 25 3d 31 30 3a 6d  6f 64 65 25 3d 31 32 0d  |:h%=10:mode%=12.|
00006480  28 e6 27 20 20 f2 73 70  72 69 74 65 63 72 65 61  |(.'  .spritecrea|
00006490  74 65 28 22 67 72 61 62  22 2c 77 25 2c 68 25 2c  |te("grab",w%,h%,|
000064a0  6d 6f 64 65 25 29 0d 28  f0 17 20 20 f4 20 77 72  |mode%).(..  . wr|
000064b0  69 74 65 20 74 6f 20 73  70 72 69 74 65 0d 28 fa  |ite to sprite.(.|
000064c0  3e 20 20 c8 99 20 22 4f  53 5f 53 70 72 69 74 65  |>  .. "OS_Sprite|
000064d0  4f 70 22 2c 26 31 30 30  2b 36 30 2c 73 70 72 25  |Op",&100+60,spr%|
000064e0  2c 22 67 72 61 62 22 2c  30 20 b8 20 72 30 25 2c  |,"grab",0 . r0%,|
000064f0  72 31 25 2c 72 32 25 2c  72 33 25 0d 29 04 1f 20  |r1%,r2%,r3%.).. |
00006500  20 ec 20 36 2c 33 32 3a  ef 20 35 3a f1 20 a4 69  | . 6,32:. 5:. .i|
00006510  74 28 77 68 25 2c 69 68  25 29 0d 29 0e 26 20 20  |t(wh%,ih%).).&  |
00006520  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
00006530  2c 72 30 25 2c 72 31 25  2c 72 32 25 2c 72 33 25  |,r0%,r1%,r2%,r3%|
00006540  0d 29 18 2d 20 20 71 25  21 30 3d 77 68 25 3a 71  |.).-  q%!0=wh%:q|
00006550  25 21 34 3d 35 3a 73 70  72 61 64 25 3d 73 70 72  |%!4=5:sprad%=spr|
00006560  25 3a 73 6f 6c 25 3d 73  6f 6c 69 64 25 0d 29 22  |%:sol%=solid%.)"|
00006570  3a 20 20 71 25 21 38 3d  69 6d 69 6e 78 25 3a 71  |:  q%!8=iminx%:q|
00006580  25 21 31 32 3d 69 6d 69  6e 79 25 2b 34 3a 71 25  |%!12=iminy%+4:q%|
00006590  21 31 36 3d 69 6d 61 78  78 25 3a 71 25 21 32 30  |!16=imaxx%:q%!20|
000065a0  3d 69 6d 61 78 79 25 0d  29 2c 35 20 20 71 25 21  |=imaxy%.),5  q%!|
000065b0  32 34 3d 30 3a 71 25 21  32 38 3d 30 3a 71 25 21  |24=0:q%!28=0:q%!|
000065c0  33 32 3d 26 37 46 46 46  46 46 46 46 3a 71 25 21  |32=&7FFFFFFF:q%!|
000065d0  33 36 3d 26 37 46 46 46  46 46 46 46 0d 29 36 06  |36=&7FFFFFFF.)6.|
000065e0  20 cd 0d 29 40 06 20 3a  0d 29 4a 10 20 c9 20 62  | ..)@. :.)J. . b|
000065f0  75 66 66 77 69 6e 64 25  0d 29 54 31 20 69 6d 69  |uffwind%.)T1 imi|
00006600  6e 78 25 3d a4 76 61 78  28 77 68 25 2c 71 25 21  |nx%=.vax(wh%,q%!|
00006610  38 29 3a 69 6d 69 6e 79  25 3d a4 76 61 79 28 77  |8):iminy%=.vay(w|
00006620  68 25 2c 71 25 21 31 32  29 0d 29 5e 32 20 69 6d  |h%,q%!12).)^2 im|
00006630  61 78 78 25 3d a4 76 61  78 28 77 68 25 2c 71 25  |axx%=.vax(wh%,q%|
00006640  21 31 36 29 3a 69 6d 61  78 79 25 3d a4 76 61 79  |!16):imaxy%=.vay|
00006650  28 77 68 25 2c 71 25 21  32 30 29 0d 29 68 2a 20  |(wh%,q%!20).)h* |
00006660  77 25 3d 28 69 6d 61 78  78 25 2d 69 6d 69 6e 78  |w%=(imaxx%-iminx|
00006670  25 29 20 81 20 32 3a 68  25 3d 31 30 3a 6d 6f 64  |%) . 2:h%=10:mod|
00006680  65 25 3d 31 32 0d 29 72  0b 20 77 25 2d 3d 31 32  |e%=12.)r. w%-=12|
00006690  0d 29 7c 26 20 f2 73 70  72 69 74 65 63 72 65 61  |.)|& .spritecrea|
000066a0  74 65 28 22 67 72 61 62  22 2c 77 25 2c 68 25 2c  |te("grab",w%,h%,|
000066b0  6d 6f 64 65 25 29 0d 29  86 16 20 f4 20 77 72 69  |mode%).).. . wri|
000066c0  74 65 20 74 6f 20 73 70  72 69 74 65 0d 29 90 3d  |te to sprite.).=|
000066d0  20 c8 99 20 22 4f 53 5f  53 70 72 69 74 65 4f 70  | .. "OS_SpriteOp|
000066e0  22 2c 26 31 30 30 2b 36  30 2c 73 70 72 25 2c 22  |",&100+60,spr%,"|
000066f0  67 72 61 62 22 2c 30 20  b8 20 72 30 25 2c 72 31  |grab",0 . r0%,r1|
00006700  25 2c 72 32 25 2c 72 33  25 0d 29 9a 1c 20 ec 20  |%,r2%,r3%.).. . |
00006710  34 2c 33 32 3a ef 20 35  3a f1 20 a4 69 74 28 77  |4,32:. 5:. .it(w|
00006720  68 25 2c 30 29 0d 29 a4  25 20 c8 99 20 22 4f 53  |h%,0).).% .. "OS|
00006730  5f 53 70 72 69 74 65 4f  70 22 2c 72 30 25 2c 72  |_SpriteOp",r0%,r|
00006740  31 25 2c 72 32 25 2c 72  33 25 0d 29 ae 2c 20 71  |1%,r2%,r3%.)., q|
00006750  25 21 30 3d 77 68 25 3a  71 25 21 34 3d 35 3a 73  |%!0=wh%:q%!4=5:s|
00006760  70 72 61 64 25 3d 73 70  72 25 3a 73 6f 6c 25 3d  |prad%=spr%:sol%=|
00006770  73 6f 6c 69 64 25 0d 29  b8 39 20 71 25 21 38 3d  |solid%.).9 q%!8=|
00006780  69 6d 69 6e 78 25 3a 71  25 21 31 32 3d 69 6d 69  |iminx%:q%!12=imi|
00006790  6e 79 25 2b 34 3a 71 25  21 31 36 3d 69 6d 61 78  |ny%+4:q%!16=imax|
000067a0  78 25 3a 71 25 21 32 30  3d 69 6d 61 78 79 25 0d  |x%:q%!20=imaxy%.|
000067b0  29 c2 34 20 71 25 21 32  34 3d 30 3a 71 25 21 32  |).4 q%!24=0:q%!2|
000067c0  38 3d 30 3a 71 25 21 33  32 3d 26 37 46 46 46 46  |8=0:q%!32=&7FFFF|
000067d0  46 46 46 3a 71 25 21 33  36 3d 26 37 46 46 46 46  |FFF:q%!36=&7FFFF|
000067e0  46 46 46 0d 29 cc 06 20  3a 0d 29 d6 05 cb 0d 29  |FFF.).. :.)....)|
000067f0  e0 05 3a 0d 29 ea 0c e7  20 73 6f 6c 25 20 8c 0d  |..:.)... sol% ..|
00006800  29 f4 2d 20 73 70 72 24  3d a4 73 70 72 28 73 77  |).- spr$=.spr(sw|
00006810  68 25 2c 73 69 68 25 29  3a 66 6c 61 67 73 25 3d  |h%,sih%):flags%=|
00006820  a4 66 6c 61 67 73 28 73  70 72 24 29 0d 29 fe 33  |.flags(spr$).).3|
00006830  20 c8 99 20 22 44 72 61  67 41 53 70 72 69 74 65  | .. "DragASprite|
00006840  5f 53 74 61 72 74 22 2c  66 6c 61 67 73 25 2c 73  |_Start",flags%,s|
00006850  70 72 61 64 25 2c 73 70  72 24 2c 71 25 2b 38 0d  |prad%,spr$,q%+8.|
00006860  2a 08 05 cc 0d 2a 12 1a  20 c8 99 20 22 57 69 6d  |*....*.. .. "Wim|
00006870  70 5f 44 72 61 67 42 6f  78 22 2c 2c 71 25 0d 2a  |p_DragBox",,q%.*|
00006880  1c 05 cd 0d 2a 26 05 e1  0d 2a 30 05 3a 0d 2a 3a  |....*&...*0.:.*:|
00006890  24 dd f2 73 70 72 69 74  65 63 72 65 61 74 65 28  |$..spritecreate(|
000068a0  73 70 72 24 2c 77 25 2c  68 25 2c 6d 6f 64 65 25  |spr$,w%,h%,mode%|
000068b0  29 0d 2a 44 34 c8 99 20  22 4f 53 5f 53 70 72 69  |).*D4.. "OS_Spri|
000068c0  74 65 4f 70 22 2c 26 31  30 30 2b 31 35 2c 73 70  |teOp",&100+15,sp|
000068d0  72 25 2c 73 70 72 24 2c  30 2c 77 25 2c 68 25 2c  |r%,spr$,0,w%,h%,|
000068e0  6d 6f 64 65 25 0d 2a 4e  05 e1 0d 2a 58 05 3a 0d  |mode%.*N...*X.:.|
000068f0  2a 62 14 dd a4 73 70 72  28 73 77 68 25 2c 73 69  |*b...spr(swh%,si|
00006900  68 25 29 0d 2a 6c 23 ea  20 6c 65 61 66 24 2c 74  |h%).*l#. leaf$,t|
00006910  79 70 65 25 2c 6f 62 6a  25 2c 73 70 72 24 3a 73  |ype%,obj%,spr$:s|
00006920  70 72 24 3d 22 22 0d 2a  76 20 e7 20 73 77 68 25  |pr$="".*v . swh%|
00006930  3d 73 61 76 65 62 6f 78  25 20 8c 3d 22 66 69 6c  |=savebox% .="fil|
00006940  65 5f 46 46 46 22 0d 2a  80 34 e7 20 73 77 68 25  |e_FFF".*.4. swh%|
00006950  3d 6d 61 69 6e 25 20 80  20 73 69 68 25 3e 37 38  |=main% . sih%>78|
00006960  20 80 20 73 69 68 25 3c  37 39 2b 69 74 65 6d 73  | . sih%<79+items|
00006970  25 20 8c 3d 22 67 72 61  62 22 0d 2a 8a 26 e7 20  |% .="grab".*.&. |
00006980  73 77 68 25 3d 62 75 66  66 77 69 6e 64 25 20 80  |swh%=buffwind% .|
00006990  20 73 69 68 25 3d 30 20  8c 3d 22 67 72 61 62 22  | sih%=0 .="grab"|
000069a0  0d 2a 94 18 6c 65 61 66  24 3d 6c 65 61 66 24 28  |.*..leaf$=leaf$(|
000069b0  63 68 6f 73 65 6e 25 29  0d 2a 9e 23 74 79 70 65  |chosen%).*.#type|
000069c0  25 3d a4 66 69 6c 65 74  79 70 65 28 64 69 72 24  |%=.filetype(dir$|
000069d0  2b 22 2e 22 2b 6c 65 61  66 24 29 0d 2a a8 21 6f  |+"."+leaf$).*.!o|
000069e0  62 6a 25 3d a4 6f 62 6a  74 79 70 65 28 64 69 72  |bj%=.objtype(dir|
000069f0  24 2b 22 2e 22 2b 6c 65  61 66 24 29 0d 2a b2 13  |$+"."+leaf$).*..|
00006a00  e7 20 73 65 6c 25 3e 31  20 6f 62 6a 25 3d 34 0d  |. sel%>1 obj%=4.|
00006a10  2a bc 0d c8 8e 20 6f 62  6a 25 20 ca 0d 2a c6 14  |*.... obj% ..*..|
00006a20  20 c9 20 30 3a 73 70 72  24 3d 22 74 69 67 78 22  | . 0:spr$="tigx"|
00006a30  0d 2a d0 1c 20 c9 20 31  3a 73 70 72 24 3d a4 66  |.*.. . 1:spr$=.f|
00006a40  69 6c 65 28 74 79 70 65  25 2c 31 29 0d 2a da 1b  |ile(type%,1).*..|
00006a50  20 c9 20 32 3a 73 70 72  24 3d a4 64 69 72 28 6c  | . 2:spr$=.dir(l|
00006a60  65 61 66 24 2c 31 29 0d  2a e4 2c 20 c9 20 33 3a  |eaf$,1).*., . 3:|
00006a70  73 70 72 24 3d 22 66 69  6c 65 5f 22 2b c3 7e 74  |spr$="file_"+.~t|
00006a80  79 70 65 25 3a f4 20 27  69 6d 61 67 65 27 20 66  |ype%:. 'image' f|
00006a90  69 6c 65 0d 2a ee 19 20  c9 20 34 3a 73 70 72 24  |ile.*.. . 4:spr$|
00006aa0  3d 22 73 65 6c 65 63 74  69 6f 6e 22 0d 2a f8 16  |="selection".*..|
00006ab0  20 7f 3a 73 70 72 24 3d  22 66 69 6c 65 5f 78 78  | .:spr$="file_xx|
00006ac0  78 22 0d 2b 02 05 cb 0d  2b 0c 09 3d 73 70 72 24  |x".+....+..=spr$|
00006ad0  0d 2b 16 05 3a 0d 2b 20  11 dd a4 66 6c 61 67 73  |.+..:.+ ...flags|
00006ae0  28 73 70 72 24 29 0d 2b  2a 08 ea 20 66 25 0d 2b  |(spr$).+*.. f%.+|
00006af0  34 0d c8 8e 20 73 70 72  24 20 ca 0d 2b 3e 30 20  |4... spr$ ..+>0 |
00006b00  c9 20 22 73 65 6c 65 63  74 69 6f 6e 22 3a 66 25  |. "selection":f%|
00006b10  3d 25 30 31 30 30 30 31  30 31 3a f4 20 6e 6f 20  |=%01000101:. no |
00006b20  64 72 6f 70 20 73 68 61  64 6f 77 0d 2b 48 13 20  |drop shadow.+H. |
00006b30  7f 3a 66 25 3d 25 31 31  30 30 30 31 30 31 0d 2b  |.:f%=%11000101.+|
00006b40  52 05 cb 0d 2b 5c 07 3d  66 25 0d 2b 66 05 3a 0d  |R...+\.=f%.+f.:.|
00006b50  2b 70 23 dd f2 65 6e 64  64 72 61 67 28 71 25 2c  |+p#..enddrag(q%,|
00006b60  73 77 68 25 2c 72 65 6d  62 25 2c 73 6f 6c 69 64  |swh%,remb%,solid|
00006b70  25 29 0d 2b 7a 25 f4 20  72 65 61 73 6f 6e 20 63  |%).+z%. reason c|
00006b80  6f 64 65 20 37 20 66 72  6f 6d 20 70 6f 6c 6c 69  |ode 7 from polli|
00006b90  6e 67 20 6c 6f 6f 70 0d  2b 84 27 f4 20 71 25 20  |ng loop.+.'. q% |
00006ba0  63 6f 6e 74 61 69 6e 73  20 66 69 6e 61 6c 20 70  |contains final p|
00006bb0  6f 73 20 6f 66 20 64 72  61 67 20 62 6f 78 0d 2b  |os of drag box.+|
00006bc0  8e 34 62 6d 69 6e 78 25  3d 71 25 21 30 3a 62 6d  |.4bminx%=q%!0:bm|
00006bd0  69 6e 79 25 3d 71 25 21  34 3a 62 6d 61 78 78 25  |iny%=q%!4:bmaxx%|
00006be0  3d 71 25 21 38 3a 62 6d  61 78 79 25 3d 71 25 21  |=q%!8:bmaxy%=q%!|
00006bf0  31 32 0d 2b 98 0d c8 8e  20 73 77 68 25 20 ca 0d  |12.+.... swh% ..|
00006c00  2b a2 0c 20 c9 20 6d 61  69 6e 25 0d 2b ac 0e 20  |+.. . main%.+.. |
00006c10  c8 8e 20 73 69 68 25 20  ca 0d 2b b6 37 20 20 c9  |.. sih% ..+.7  .|
00006c20  20 2d 31 20 20 3a f2 73  65 6c 65 63 74 28 62 6d  | -1  :.select(bm|
00006c30  69 6e 79 25 2c 62 6d 61  78 79 25 2c 72 65 6d 62  |iny%,bmaxy%,remb|
00006c40  25 29 3a f4 20 72 75 62  62 65 72 20 62 61 6e 64  |%):. rubber band|
00006c50  0d 2b c0 40 20 20 7f 3a  f2 64 72 6f 70 28 73 77  |.+.@  .:.drop(sw|
00006c60  68 25 2c 73 69 68 25 2c  73 6d 62 25 29 3a f4 20  |h%,sih%,smb%):. |
00006c70  46 69 6c 65 72 2f 41 70  70 2f 50 69 6e 62 6f 61  |Filer/App/Pinboa|
00006c80  72 64 2f 49 63 6f 6e 62  61 72 2f 54 69 67 65 72  |rd/Iconbar/Tiger|
00006c90  0d 2b ca 06 20 cb 0d 2b  d4 38 20 c9 20 63 6f 70  |.+.. ..+.8 . cop|
00006ca0  79 62 6f 78 25 2c 73 61  76 65 62 6f 78 25 2c 62  |ybox%,savebox%,b|
00006cb0  75 66 66 77 69 6e 64 25  3a f2 64 72 6f 70 28 73  |uffwind%:.drop(s|
00006cc0  77 68 25 2c 73 69 68 25  2c 73 6d 62 25 29 0d 2b  |wh%,sih%,smb%).+|
00006cd0  de 10 20 c9 20 6d 65 73  73 77 69 6e 64 25 0d 2b  |.. . messwind%.+|
00006ce0  e8 47 20 20 71 25 21 30  3d 73 77 68 25 3a 71 25  |.G  q%!0=swh%:q%|
00006cf0  21 34 3d 62 6d 69 6e 78  25 3a 71 25 21 38 3d 62  |!4=bminx%:q%!8=b|
00006d00  6d 69 6e 79 25 2d 34 30  3a 71 25 21 31 32 3d 62  |miny%-40:q%!12=b|
00006d10  6d 61 78 78 25 3a 71 25  21 31 36 3d 62 6d 61 78  |maxx%:q%!16=bmax|
00006d20  79 25 2d 34 30 0d 2b f2  44 20 20 71 25 21 32 38  |y%-40.+.D  q%!28|
00006d30  3d 2d 31 3a c8 99 20 22  57 69 6d 70 5f 4f 70 65  |=-1:.. "Wimp_Ope|
00006d40  6e 57 69 6e 64 6f 77 22  2c 2c 71 25 3a c8 99 20  |nWindow",,q%:.. |
00006d50  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 53  |"Wimp_GetWindowS|
00006d60  74 61 74 65 22 2c 2c 71  25 0d 2b fc 35 20 20 c8  |tate",,q%.+.5  .|
00006d70  97 20 c8 93 20 71 25 21  34 2b 38 2c 71 25 21 38  |. .. q%!4+8,q%!8|
00006d80  2b 38 2c 71 25 21 31 32  2d 71 25 21 34 2d 31 36  |+8,q%!12-q%!4-16|
00006d90  2c 71 25 21 31 36 2d 71  25 21 38 2d 31 36 0d 2c  |,q%!16-q%!8-16.,|
00006da0  06 05 cb 0d 2c 10 05 e1  0d 2c 1a 05 3a 0d 2c 24  |....,....,..:.,$|
00006db0  10 f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 2c 2e  |..-----------.,.|
00006dc0  10 f4 2e 20 53 45 4c 45  43 54 49 4f 4e 0d 2c 38  |... SELECTION.,8|
00006dd0  10 f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 2c 42  |..-----------.,B|
00006de0  05 3a 0d 2c 4c 09 dd a4  73 65 6c 0d 2c 56 1e f4  |.:.,L...sel.,V..|
00006df0  20 68 6f 77 20 6d 61 6e  79 20 69 74 65 6d 73 20  | how many items |
00006e00  73 65 6c 65 63 74 65 64  3f 0d 2c 60 1a f4 20 70  |selected?.,`.. p|
00006e10  75 74 20 69 74 65 6d 73  20 69 6e 74 6f 20 61 72  |ut items into ar|
00006e20  72 61 79 0d 2c 6a 10 ea  20 4a 25 2c 6e 25 3a 6e  |ray.,j.. J%,n%:n|
00006e30  25 3d 30 0d 2c 74 13 e3  20 4a 25 3d 31 20 b8 20  |%=0.,t.. J%=1 . |
00006e40  69 74 65 6d 73 25 0d 2c  7e 26 20 e7 20 a4 69 73  |items%.,~& . .is|
00006e50  28 6d 61 69 6e 25 2c 4a  25 29 20 6e 25 2b 3d 31  |(main%,J%) n%+=1|
00006e60  3a 73 65 6c 25 28 6e 25  29 3d 4a 25 0d 2c 88 05  |:sel%(n%)=J%.,..|
00006e70  ed 0d 2c 92 07 3d 6e 25  0d 2c 9c 05 3a 0d 2c a6  |..,..=n%.,..:.,.|
00006e80  21 dd f2 73 65 6c 65 63  74 28 62 6d 69 6e 79 25  |!..select(bminy%|
00006e90  2c 62 6d 61 78 79 25 2c  72 65 6d 62 25 29 0d 2c  |,bmaxy%,remb%).,|
00006ea0  b0 26 e7 20 62 6d 69 6e  79 25 3e 62 6d 61 78 79  |.&. bminy%>bmaxy|
00006eb0  25 20 8c 20 c8 94 20 62  6d 69 6e 79 25 2c 62 6d  |% . .. bminy%,bm|
00006ec0  61 78 79 25 0d 2c ba 19  f4 20 72 75 62 62 65 72  |axy%.,... rubber|
00006ed0  20 62 61 6e 64 20 64 72  61 67 67 65 64 0d 2c c4  | band dragged.,.|
00006ee0  2d f4 20 77 68 69 63 68  20 69 63 6f 6e 73 20 61  |-. which icons a|
00006ef0  72 65 20 69 6e 20 62 6f  78 3f 20 2d 20 67 65 74  |re in box? - get|
00006f00  20 6c 6f 20 61 6e 64 20  68 69 0d 2c ce 08 ea 20  | lo and hi.,... |
00006f10  4a 25 0d 2c d8 09 69 68  25 3d 31 0d 2c e2 05 f5  |J%.,..ih%=1.,...|
00006f20  0d 2c ec 31 20 21 71 25  3d 6d 61 69 6e 25 3a 71  |.,.1 !q%=main%:q|
00006f30  25 21 34 3d 69 68 25 3a  c8 99 22 57 69 6d 70 5f  |%!4=ih%:.."Wimp_|
00006f40  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 71  |GetIconState",,q|
00006f50  25 0d 2c f6 32 20 69 6d  69 6e 79 25 3d 71 25 21  |%.,.2 iminy%=q%!|
00006f60  31 32 3a 69 6d 69 6e 79  25 3d a4 76 61 79 28 6d  |12:iminy%=.vay(m|
00006f70  61 69 6e 25 2c 69 6d 69  6e 79 25 29 3a 69 68 25  |ain%,iminy%):ih%|
00006f80  2b 3d 31 0d 2d 00 13 fd  20 69 6d 69 6e 79 25 3c  |+=1.-... iminy%<|
00006f90  62 6d 61 78 79 25 0d 2d  0a 14 6c 6f 25 3d 69 68  |bmaxy%.-..lo%=ih|
00006fa0  25 2d 31 3a 69 68 25 2d  3d 31 0d 2d 14 1b e7 20  |%-1:ih%-=1.-... |
00006fb0  6c 6f 25 3e 69 74 65 6d  73 25 20 6c 6f 25 3d 69  |lo%>items% lo%=i|
00006fc0  74 65 6d 73 25 0d 2d 1e  05 f5 0d 2d 28 31 20 21  |tems%.-....-(1 !|
00006fd0  71 25 3d 6d 61 69 6e 25  3a 71 25 21 34 3d 69 68  |q%=main%:q%!4=ih|
00006fe0  25 3a c8 99 22 57 69 6d  70 5f 47 65 74 49 63 6f  |%:.."Wimp_GetIco|
00006ff0  6e 53 74 61 74 65 22 2c  2c 71 25 0d 2d 32 32 20  |nState",,q%.-22 |
00007000  69 6d 69 6e 79 25 3d 71  25 21 31 32 3a 69 6d 69  |iminy%=q%!12:imi|
00007010  6e 79 25 3d a4 76 61 79  28 6d 61 69 6e 25 2c 69  |ny%=.vay(main%,i|
00007020  6d 69 6e 79 25 29 3a 69  68 25 2b 3d 31 0d 2d 3c  |miny%):ih%+=1.-<|
00007030  13 fd 20 69 6d 69 6e 79  25 3c 62 6d 69 6e 79 25  |.. iminy%<bminy%|
00007040  0d 2d 46 0d 68 69 25 3d  69 68 25 2d 31 0d 2d 50  |.-F.hi%=ih%-1.-P|
00007050  1b e7 20 68 69 25 3e 69  74 65 6d 73 25 20 68 69  |.. hi%>items% hi|
00007060  25 3d 69 74 65 6d 73 25  0d 2d 5a 1e f4 20 74 72  |%=items%.-Z.. tr|
00007070  65 61 74 20 61 63 63 6f  72 64 69 6e 67 20 74 6f  |eat according to|
00007080  20 72 65 6d 62 25 0d 2d  64 0d e7 20 6c 6f 25 3e  | remb%.-d.. lo%>|
00007090  30 20 8c 0d 2d 6e 13 20  e3 20 4a 25 3d 6c 6f 25  |0 ..-n. . J%=lo%|
000070a0  20 b8 20 68 69 25 0d 2d  78 10 20 20 c8 8e 20 72  | . hi%.-x.  .. r|
000070b0  65 6d 62 25 20 ca 0d 2d  82 18 20 20 20 c9 20 34  |emb% ..-..   . 4|
000070c0  3a f2 73 69 28 6d 61 69  6e 25 2c 4a 25 29 0d 2d  |:.si(main%,J%).-|
000070d0  8c 18 20 20 20 c9 20 31  3a f2 74 69 28 6d 61 69  |..   . 1:.ti(mai|
000070e0  6e 25 2c 4a 25 29 0d 2d  96 07 20 20 cb 0d 2d a0  |n%,J%).-..  ..-.|
000070f0  06 20 ed 0d 2d aa 05 cd  0d 2d b4 05 e1 0d 2d be  |. ..-....-....-.|
00007100  05 3a 0d 2d c8 0f dd f2  73 65 6c 65 63 74 61 6c  |.:.-....selectal|
00007110  6c 0d 2d d2 0d 73 65 6c  25 3d a4 73 65 6c 0d 2d  |l.-..sel%=.sel.-|
00007120  dc 13 e7 20 73 65 6c 25  3c 69 74 65 6d 73 25 20  |... sel%<items% |
00007130  8c 0d 2d e6 24 20 e3 20  4a 25 3d 31 20 b8 20 69  |..-.$ . J%=1 . i|
00007140  74 65 6d 73 25 3a f2 73  69 28 6d 61 69 6e 25 2c  |tems%:.si(main%,|
00007150  4a 25 29 3a ed 0d 2d f0  05 cd 0d 2d fa 05 e1 0d  |J%):..-....-....|
00007160  2e 04 05 3a 0d 2e 0e 0e  dd f2 63 6c 65 61 72 61  |...:......cleara|
00007170  6c 6c 0d 2e 18 13 e3 20  4a 25 3d 31 20 b8 20 69  |ll..... J%=1 . i|
00007180  74 65 6d 73 25 0d 2e 22  22 20 e7 20 a4 69 73 28  |tems%.."" . .is(|
00007190  6d 61 69 6e 25 2c 4a 25  29 20 f2 75 69 28 6d 61  |main%,J%) .ui(ma|
000071a0  69 6e 25 2c 4a 25 29 0d  2e 2c 05 ed 0d 2e 36 05  |in%,J%)..,....6.|
000071b0  e1 0d 2e 40 05 3a 0d 2e  4a 0b f4 2d 2d 2d 2d 2d  |...@.:..J..-----|
000071c0  2d 0d 2e 54 0b f4 2e 20  4b 45 59 53 0d 2e 5e 0b  |-..T... KEYS..^.|
000071d0  f4 2d 2d 2d 2d 2d 2d 0d  2e 68 05 3a 0d 2e 72 12  |.------..h.:..r.|
000071e0  dd f2 6b 65 79 70 72 65  73 73 28 71 25 29 0d 2e  |..keypress(q%)..|
000071f0  7c 29 77 68 25 3d 71 25  21 30 3a 69 68 25 3d 71  ||)wh%=q%!0:ih%=q|
00007200  25 21 34 3a 78 6f 25 3d  71 25 21 38 3a 63 68 72  |%!4:xo%=q%!8:chr|
00007210  25 3d 71 25 21 32 34 0d  2e 86 0d c8 8e 20 63 68  |%=q%!24...... ch|
00007220  72 25 20 ca 0d 2e 90 1d  20 c9 20 20 33 30 3a e7  |r% ..... .  30:.|
00007230  20 64 69 73 70 6c 61 79  25 3d 31 20 f2 68 6f 6d  | display%=1 .hom|
00007240  65 0d 2e 9a 12 20 c9 20  20 31 33 3a f2 72 65 74  |e.... .  13:.ret|
00007250  75 72 6e 0d 2e a4 17 20  c9 20 20 32 37 3a f2 65  |urn.... .  27:.e|
00007260  73 63 61 70 65 28 77 68  25 29 0d 2e ae 1d 20 c9  |scape(wh%).... .|
00007270  20 33 39 38 3a e7 20 64  69 73 70 6c 61 79 25 3d  | 398:. display%=|
00007280  31 20 f2 64 6f 77 6e 0d  2e b8 1b 20 c9 20 33 39  |1 .down.... . 39|
00007290  39 3a e7 20 64 69 73 70  6c 61 79 25 3d 31 20 f2  |9:. display%=1 .|
000072a0  75 70 0d 2e c2 1d 20 c9  20 33 38 35 3a f2 76 69  |up.... . 385:.vi|
000072b0  65 77 65 72 28 64 69 72  24 29 3a f4 20 46 31 0d  |ewer(dir$):. F1.|
000072c0  2e cc 1d 20 c9 20 33 38  36 3a f2 70 61 72 65 6e  |... . 386:.paren|
000072d0  74 28 64 69 72 24 29 3a  f4 20 46 32 0d 2e d6 26  |t(dir$):. F2...&|
000072e0  20 c9 20 33 38 37 3a e7  20 64 69 73 70 6c 61 79  | . 387:. display|
000072f0  25 3d 31 20 f2 73 61 76  65 64 61 74 61 3a f4 20  |%=1 .savedata:. |
00007300  46 33 0d 2e e0 23 20 c9  20 34 30 33 3a f2 6f 77  |F3...# . 403:.ow|
00007310  28 73 61 76 65 62 6f 78  25 29 3a f4 20 53 68 69  |(savebox%):. Shi|
00007320  66 74 20 46 33 0d 2e ea  15 20 c9 20 33 38 38 3a  |ft F3.... . 388:|
00007330  f2 74 65 73 74 3a f4 20  46 34 0d 2e f4 1e 20 c9  |.test:. F4.... .|
00007340  20 33 38 39 3a f2 6f 77  28 62 75 66 66 77 69 6e  | 389:.ow(buffwin|
00007350  64 25 29 3a f4 20 46 35  0d 2e fe 15 20 c9 20 33  |d%):. F5.... . 3|
00007360  39 32 3a f2 75 6e 64 6f  3a f4 20 46 38 0d 2f 08  |92:.undo:. F8./.|
00007370  15 20 c9 20 33 39 33 3a  f2 72 65 64 6f 3a f4 20  |. . 393:.redo:. |
00007380  46 39 0d 2f 12 23 20 c9  20 33 39 34 3a f2 73 69  |F9./.# . 394:.si|
00007390  7a 65 3a f4 20 54 61 62  20 61 64 6a 75 73 74 73  |ze:. Tab adjusts|
000073a0  20 73 69 7a 65 0d 2f 1c  20 20 7f 20 c8 99 20 22  | size./.  . .. "|
000073b0  57 69 6d 70 5f 50 72 6f  63 65 73 73 4b 65 79 22  |Wimp_ProcessKey"|
000073c0  2c 63 68 72 25 0d 2f 26  05 cb 0d 2f 30 05 e1 0d  |,chr%./&.../0...|
000073d0  2f 3a 05 3a 0d 2f 44 11  dd f2 65 73 63 61 70 65  |/:.:./D...escape|
000073e0  28 77 68 25 29 0d 2f 4e  23 65 73 63 25 3d b9 3a  |(wh%)./N#esc%=.:|
000073f0  e7 20 77 68 25 3d 6d 65  73 73 77 69 6e 64 25 20  |. wh%=messwind% |
00007400  f2 63 77 28 77 68 25 29  0d 2f 58 05 e1 0d 2f 62  |.cw(wh%)./X.../b|
00007410  05 3a 0d 2f 6c 0a dd f2  74 65 73 74 0d 2f 76 08  |.:./l...test./v.|
00007420  f4 20 46 34 0d 2f 80 05  e1 0d 2f 8a 05 3a 0d 2f  |. F4./..../..:./|
00007430  94 0c f4 2d 2d 2d 2d 2d  2d 2d 0d 2f 9e 0c f4 2e  |...-------./....|
00007440  20 43 41 52 45 54 0d 2f  a8 0c f4 2d 2d 2d 2d 2d  | CARET./...-----|
00007450  2d 2d 0d 2f b2 05 3a 0d  2f bc 0a dd f2 68 6f 6d  |--./..:./....hom|
00007460  65 0d 2f c6 11 e7 20 77  68 25 3d 6d 61 69 6e 25  |e./... wh%=main%|
00007470  20 8c 0d 2f d0 2b 20 21  43 25 3d 6d 61 69 6e 25  | ../.+ !C%=main%|
00007480  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 57 69 6e  |:.. "Wimp_GetWin|
00007490  64 6f 77 53 74 61 74 65  22 2c 2c 43 25 0d 2f da  |dowState",,C%./.|
000074a0  2d 20 43 25 21 32 30 3d  30 3a 43 25 21 32 34 3d  |- C%!20=0:C%!24=|
000074b0  30 3a c8 99 20 22 57 69  6d 70 5f 4f 70 65 6e 57  |0:.. "Wimp_OpenW|
000074c0  69 6e 64 6f 77 22 2c 2c  43 25 0d 2f e4 16 20 f2  |indow",,C%./.. .|
000074d0  63 61 72 65 74 78 28 77  68 25 2c 37 39 2c 30 29  |caretx(wh%,79,0)|
000074e0  0d 2f ee 05 cd 0d 2f f8  05 e1 0d 30 02 05 3a 0d  |./..../....0..:.|
000074f0  30 0c 0c dd f2 72 65 74  75 72 6e 0d 30 16 0a 72  |0....return.0..r|
00007500  65 74 25 3d b9 0d 30 20  0c c8 8e 20 77 68 25 20  |et%=..0 ... wh% |
00007510  ca 0d 30 2a 0c 20 c9 20  6d 61 69 6e 25 0d 30 34  |..0*. . main%.04|
00007520  13 20 e7 20 64 69 73 70  6c 61 79 25 3d 31 20 8c  |. . display%=1 .|
00007530  0d 30 3e 17 20 20 e7 20  69 68 25 3d 31 35 36 20  |.0>.  . ih%=156 |
00007540  f2 68 6f 6d 65 3a e1 0d  30 48 19 20 20 e7 20 69  |.home:..0H.  . i|
00007550  68 25 3d 37 39 2b 69 74  65 6d 73 25 2d 31 20 e1  |h%=79+items%-1 .|
00007560  0d 30 52 1a 20 20 f2 73  63 72 6f 6c 6c 64 6f 77  |.0R.  .scrolldow|
00007570  6e 28 77 68 25 2c 69 68  25 29 0d 30 5c 1a 20 20  |n(wh%,ih%).0\.  |
00007580  f2 63 61 72 65 74 78 28  77 68 25 2c 69 68 25 2b  |.caretx(wh%,ih%+|
00007590  31 2c 30 29 0d 30 66 06  20 cd 0d 30 70 0f 20 c9  |1,0).0f. ..0p. .|
000075a0  20 73 61 76 65 62 6f 78  25 0d 30 7a 2b 20 e7 20  | savebox%.0z+ . |
000075b0  69 68 25 3d 66 6e 69 63  6f 6e 25 20 f2 71 75 69  |ih%=fnicon% .qui|
000075c0  63 6b 73 61 76 65 28 77  68 25 2c 69 68 25 2c 26  |cksave(wh%,ih%,&|
000075d0  46 46 46 29 0d 30 84 1f  20 c9 20 63 6f 70 79 62  |FFF).0.. . copyb|
000075e0  6f 78 25 3a f2 63 6f 70  79 28 22 22 2c 72 65 6d  |ox%:.copy("",rem|
000075f0  62 25 29 0d 30 8e 05 cb  0d 30 98 05 e1 0d 30 a2  |b%).0....0....0.|
00007600  05 3a 0d 30 ac 0a dd f2  64 6f 77 6e 0d 30 b6 11  |.:.0....down.0..|
00007610  e7 20 77 68 25 3d 6d 61  69 6e 25 20 8c 0d 30 c0  |. wh%=main% ..0.|
00007620  16 20 e7 20 69 68 25 3d  31 35 36 20 f2 68 6f 6d  |. . ih%=156 .hom|
00007630  65 3a e1 0d 30 ca 18 20  e7 20 69 68 25 3d 37 39  |e:..0.. . ih%=79|
00007640  2b 69 74 65 6d 73 25 2d  31 20 e1 0d 30 d4 19 20  |+items%-1 ..0.. |
00007650  f2 73 63 72 6f 6c 6c 64  6f 77 6e 28 77 68 25 2c  |.scrolldown(wh%,|
00007660  69 68 25 29 0d 30 de 1b  20 f2 63 61 72 65 74 78  |ih%).0.. .caretx|
00007670  28 77 68 25 2c 69 68 25  2b 31 2c 78 6f 25 29 0d  |(wh%,ih%+1,xo%).|
00007680  30 e8 05 cd 0d 30 f2 05  e1 0d 30 fc 05 3a 0d 31  |0....0....0..:.1|
00007690  06 08 dd f2 75 70 0d 31  10 11 e7 20 77 68 25 3d  |....up.1... wh%=|
000076a0  6d 61 69 6e 25 20 8c 0d  31 1a 0f 20 e7 20 69 68  |main% ..1.. . ih|
000076b0  25 3d 37 38 20 e1 0d 31  24 1f 20 e7 20 69 68 25  |%=78 ..1$. . ih%|
000076c0  3d 37 39 20 84 20 69 68  25 3d 31 35 36 20 f2 68  |=79 . ih%=156 .h|
000076d0  6f 6d 65 3a e1 0d 31 2e  17 20 f2 73 63 72 6f 6c  |ome:..1.. .scrol|
000076e0  6c 75 70 28 77 68 25 2c  69 68 25 29 0d 31 38 1b  |lup(wh%,ih%).18.|
000076f0  20 f2 63 61 72 65 74 78  28 77 68 25 2c 69 68 25  | .caretx(wh%,ih%|
00007700  2d 31 2c 78 6f 25 29 0d  31 42 05 cd 0d 31 4c 05  |-1,xo%).1B...1L.|
00007710  e1 0d 31 56 05 3a 0d 31  60 19 dd f2 73 63 72 6f  |..1V.:.1`...scro|
00007720  6c 6c 64 6f 77 6e 28 77  68 25 2c 69 68 25 29 0d  |lldown(wh%,ih%).|
00007730  31 6a 13 f4 20 73 63 72  6f 6c 6c 20 76 61 20 75  |1j.. scroll va u|
00007740  70 3f 0d 31 74 0e ea 20  77 25 2c 69 25 2c 6e 25  |p?.1t.. w%,i%,n%|
00007750  0d 31 7e 2d f4 20 67 65  74 20 65 78 74 72 65 6d  |.1~-. get extrem|
00007760  65 20 77 69 6e 64 6f 77  20 65 64 67 65 20 72 65  |e window edge re|
00007770  6c 61 74 69 76 65 20 74  6f 20 77 61 6f 0d 31 88  |lative to wao.1.|
00007780  3f 43 25 21 30 3d 77 68  25 3a c8 99 20 22 57 69  |?C%!0=wh%:.. "Wi|
00007790  6d 70 5f 47 65 74 57 69  6e 64 6f 77 53 74 61 74  |mp_GetWindowStat|
000077a0  65 22 2c 2c 43 25 3a 77  25 3d 43 25 21 32 34 2d  |e",,C%:w%=C%!24-|
000077b0  28 43 25 21 31 36 2d 43  25 21 38 29 0d 31 92 33  |(C%!16-C%!8).1.3|
000077c0  f4 20 67 65 74 20 65 78  74 72 65 6d 65 20 65 64  |. get extreme ed|
000077d0  67 65 20 6f 66 20 6e 65  78 74 20 69 63 6f 6e 20  |ge of next icon |
000077e0  72 65 6c 61 74 69 76 65  20 74 6f 20 77 61 6f 0d  |relative to wao.|
000077f0  31 9c 3b 43 25 21 30 3d  77 68 25 3a 43 25 21 34  |1.;C%!0=wh%:C%!4|
00007800  3d 69 68 25 2b 31 3a c8  99 20 22 57 69 6d 70 5f  |=ih%+1:.. "Wimp_|
00007810  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 43  |GetIconState",,C|
00007820  25 3a 69 25 3d 43 25 21  31 32 0d 31 a6 0d e7 20  |%:i%=C%!12.1... |
00007830  69 25 3c 77 25 20 8c 0d  31 b0 3d 20 6e 25 3d 94  |i%<w% ..1.= n%=.|
00007840  28 69 25 29 2d 94 28 77  25 29 3a e7 20 6e 25 3e  |(i%)-.(w%):. n%>|
00007850  34 34 20 6e 25 3d 34 34  3a f4 20 61 6c 69 67 6e  |44 n%=44:. align|
00007860  20 77 69 74 68 20 65 64  67 65 20 6f 66 20 77 69  | with edge of wi|
00007870  6e 64 6f 77 0d 31 ba 33  20 21 43 25 3d 77 68 25  |ndow.1.3 !C%=wh%|
00007880  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 57 69 6e  |:.. "Wimp_GetWin|
00007890  64 6f 77 53 74 61 74 65  22 2c 2c 43 25 3a 43 25  |dowState",,C%:C%|
000078a0  21 32 34 2d 3d 6e 25 0d  31 c4 27 20 c8 99 20 22  |!24-=n%.1.' .. "|
000078b0  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 22  |Wimp_OpenWindow"|
000078c0  2c 2c 43 25 3a ff 28 22  46 58 31 35 22 29 0d 31  |,,C%:.("FX15").1|
000078d0  ce 05 cd 0d 31 d8 05 e1  0d 31 e2 05 3a 0d 31 ec  |....1....1..:.1.|
000078e0  17 dd f2 73 63 72 6f 6c  6c 75 70 28 77 68 25 2c  |...scrollup(wh%,|
000078f0  69 68 25 29 0d 31 f6 15  f4 20 73 63 72 6f 6c 6c  |ih%).1... scroll|
00007900  20 76 61 20 64 6f 77 6e  3f 0d 32 00 0e ea 20 77  | va down?.2... w|
00007910  25 2c 69 25 2c 6e 25 0d  32 0a 2d f4 20 67 65 74  |%,i%,n%.2.-. get|
00007920  20 65 78 74 72 65 6d 65  20 77 69 6e 64 6f 77 20  | extreme window |
00007930  65 64 67 65 20 72 65 6c  61 74 69 76 65 20 74 6f  |edge relative to|
00007940  20 77 61 6f 0d 32 14 32  43 25 21 30 3d 77 68 25  | wao.2.2C%!0=wh%|
00007950  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 57 69 6e  |:.. "Wimp_GetWin|
00007960  64 6f 77 53 74 61 74 65  22 2c 2c 43 25 3a 77 25  |dowState",,C%:w%|
00007970  3d 43 25 21 32 34 0d 32  1e 33 f4 20 67 65 74 20  |=C%!24.2.3. get |
00007980  65 78 74 72 65 6d 65 20  65 64 67 65 20 6f 66 20  |extreme edge of |
00007990  70 72 65 76 20 69 63 6f  6e 20 72 65 6c 61 74 69  |prev icon relati|
000079a0  76 65 20 74 6f 20 77 61  6f 0d 32 28 3b 43 25 21  |ve to wao.2(;C%!|
000079b0  30 3d 77 68 25 3a 43 25  21 34 3d 69 68 25 2d 31  |0=wh%:C%!4=ih%-1|
000079c0  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 49 63 6f  |:.. "Wimp_GetIco|
000079d0  6e 53 74 61 74 65 22 2c  2c 43 25 3a 69 25 3d 43  |nState",,C%:i%=C|
000079e0  25 21 32 30 0d 32 32 0d  e7 20 69 25 3e 77 25 20  |%!20.22.. i%>w% |
000079f0  8c 0d 32 3c 3d 20 6e 25  3d 94 28 77 25 29 2d 94  |..2<= n%=.(w%)-.|
00007a00  28 69 25 29 3a e7 20 6e  25 3e 34 34 20 6e 25 3d  |(i%):. n%>44 n%=|
00007a10  34 34 3a f4 20 61 6c 69  67 6e 20 77 69 74 68 20  |44:. align with |
00007a20  65 64 67 65 20 6f 66 20  77 69 6e 64 6f 77 0d 32  |edge of window.2|
00007a30  46 35 20 21 43 25 3d 6d  61 69 6e 25 3a c8 99 20  |F5 !C%=main%:.. |
00007a40  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 53  |"Wimp_GetWindowS|
00007a50  74 61 74 65 22 2c 2c 43  25 3a 43 25 21 32 34 2b  |tate",,C%:C%!24+|
00007a60  3d 6e 25 0d 32 50 27 20  c8 99 20 22 57 69 6d 70  |=n%.2P' .. "Wimp|
00007a70  5f 4f 70 65 6e 57 69 6e  64 6f 77 22 2c 2c 43 25  |_OpenWindow",,C%|
00007a80  3a ff 28 22 46 58 31 35  22 29 0d 32 5a 05 cd 0d  |:.("FX15").2Z...|
00007a90  32 64 05 e1 0d 32 6e 05  3a 0d 32 78 10 dd f2 69  |2d...2n.:.2x...i|
00007aa0  63 6f 6e 73 63 72 6f 6c  6c 0d 32 82 29 f4 20 68  |conscroll.2.). h|
00007ab0  6f 72 69 7a 6f 6e 74 61  6c 20 73 63 72 6f 6c 6c  |orizontal scroll|
00007ac0  20 6f 66 20 77 72 69 74  61 62 6c 65 20 69 63 6f  | of writable ico|
00007ad0  6e 73 0d 32 8c 32 c8 99  20 22 57 69 6d 70 5f 47  |ns.2.2.. "Wimp_G|
00007ae0  65 74 43 61 72 65 74 50  6f 73 69 74 69 6f 6e 22  |etCaretPosition"|
00007af0  2c 2c 43 25 3a e7 20 43  25 21 30 3c 3e 6d 61 69  |,,C%:. C%!0<>mai|
00007b00  6e 25 20 e1 0d 32 96 1a  6e 65 77 69 25 3d 43 25  |n% ..2..newi%=C%|
00007b10  21 34 3a 6e 65 77 70 25  3d 43 25 21 32 30 0d 32  |!4:newp%=C%!20.2|
00007b20  a0 28 f4 20 67 65 74 20  77 69 6e 64 6f 77 20 65  |.(. get window e|
00007b30  64 67 65 73 20 61 73 20  63 68 72 73 20 69 6e 74  |dges as chrs int|
00007b40  6f 20 69 63 6f 6e 0d 32  aa 2b 43 25 21 30 3d 6d  |o icon.2.+C%!0=m|
00007b50  61 69 6e 25 3a c8 99 20  22 57 69 6d 70 5f 47 65  |ain%:.. "Wimp_Ge|
00007b60  74 57 69 6e 64 6f 77 53  74 61 74 65 22 2c 2c 43  |tWindowState",,C|
00007b70  25 0d 32 b4 16 77 6c 25  3d 28 43 25 21 32 30 2d  |%.2..wl%=(C%!20-|
00007b80  32 32 38 29 81 31 36 0d  32 be 23 77 72 25 3d 28  |228).16.2.#wr%=(|
00007b90  43 25 21 32 30 2b 28 43  25 21 31 32 2d 43 25 21  |C%!20+(C%!12-C%!|
00007ba0  34 29 2d 32 32 38 29 81  31 36 0d 32 c8 23 e7 20  |4)-228).16.2.#. |
00007bb0  6e 65 77 70 25 3e 6f 6c  64 70 25 20 80 20 6e 65  |newp%>oldp% . ne|
00007bc0  77 70 25 3e 28 77 72 25  2d 31 29 20 8c 0d 32 d2  |wp%>(wr%-1) ..2.|
00007bd0  2d 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 43 61  |- .. "Wimp_GetCa|
00007be0  72 65 74 50 6f 73 69 74  69 6f 6e 22 2c 2c 43 25  |retPosition",,C%|
00007bf0  3a 69 78 25 3d 43 25 21  32 30 0d 32 dc 2b 20 21  |:ix%=C%!20.2.+ !|
00007c00  43 25 3d 6d 61 69 6e 25  3a c8 99 20 22 57 69 6d  |C%=main%:.. "Wim|
00007c10  70 5f 47 65 74 57 69 6e  64 6f 77 53 74 61 74 65  |p_GetWindowState|
00007c20  22 2c 2c 43 25 0d 32 e6  33 20 43 25 21 32 30 2b  |",,C%.2.3 C%!20+|
00007c30  3d 28 69 78 25 2d 6f 6c  64 70 25 29 2a 31 36 3a  |=(ix%-oldp%)*16:|
00007c40  c8 99 20 22 57 69 6d 70  5f 4f 70 65 6e 57 69 6e  |.. "Wimp_OpenWin|
00007c50  64 6f 77 22 2c 2c 43 25  0d 32 f0 05 cd 0d 32 fa  |dow",,C%.2....2.|
00007c60  2f e7 20 6e 65 77 70 25  3c 6f 6c 64 70 25 20 80  |/. newp%<oldp% .|
00007c70  20 28 6e 65 77 70 25 3c  28 77 6c 25 2b 31 29 20  | (newp%<(wl%+1) |
00007c80  84 20 6e 65 77 70 25 3d  30 29 20 8c 0d 33 04 2d  |. newp%=0) ..3.-|
00007c90  20 c8 99 20 22 57 69 6d  70 5f 47 65 74 43 61 72  | .. "Wimp_GetCar|
00007ca0  65 74 50 6f 73 69 74 69  6f 6e 22 2c 2c 43 25 3a  |etPosition",,C%:|
00007cb0  69 78 25 3d 43 25 21 32  30 0d 33 0e 2b 20 21 43  |ix%=C%!20.3.+ !C|
00007cc0  25 3d 6d 61 69 6e 25 3a  c8 99 20 22 57 69 6d 70  |%=main%:.. "Wimp|
00007cd0  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 22  |_GetWindowState"|
00007ce0  2c 2c 43 25 0d 33 18 2c  20 e7 20 69 78 25 3d 30  |,,C%.3., . ix%=0|
00007cf0  20 43 25 21 32 30 3d 30  20 8b 20 43 25 21 32 30  | C%!20=0 . C%!20|
00007d00  2d 3d 28 6f 6c 64 70 25  2d 69 78 25 29 2a 31 36  |-=(oldp%-ix%)*16|
00007d10  0d 33 22 1d 20 c8 99 20  22 57 69 6d 70 5f 4f 70  |.3". .. "Wimp_Op|
00007d20  65 6e 57 69 6e 64 6f 77  22 2c 2c 43 25 0d 33 2c  |enWindow",,C%.3,|
00007d30  05 cd 0d 33 36 1b 6f 6c  64 69 25 3d 6e 65 77 69  |...36.oldi%=newi|
00007d40  25 3a 6f 6c 64 70 25 3d  6e 65 77 70 25 0d 33 40  |%:oldp%=newp%.3@|
00007d50  05 e1 0d 33 4a 05 3a 0d  33 54 14 dd f2 63 61 72  |...3J.:.3T...car|
00007d60  65 74 28 77 68 25 2c 69  68 25 29 0d 33 5e 18 ea  |et(wh%,ih%).3^..|
00007d70  20 73 24 3a 73 24 3d a4  69 74 28 77 68 25 2c 69  | s$:s$=.it(wh%,i|
00007d80  68 25 29 0d 33 68 2f c8  99 20 22 57 69 6d 70 5f  |h%).3h/.. "Wimp_|
00007d90  53 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |SetCaretPosition|
00007da0  22 2c 77 68 25 2c 69 68  25 2c 2c 2c 2d 31 2c a9  |",wh%,ih%,,,-1,.|
00007db0  73 24 0d 33 72 05 e1 0d  33 7c 05 3a 0d 33 86 19  |s$.3r...3|.:.3..|
00007dc0  dd f2 63 61 72 65 74 78  28 77 68 25 2c 69 68 25  |..caretx(wh%,ih%|
00007dd0  2c 78 6f 25 29 0d 33 90  31 c8 99 20 22 57 69 6d  |,xo%).3.1.. "Wim|
00007de0  70 5f 53 65 74 43 61 72  65 74 50 6f 73 69 74 69  |p_SetCaretPositi|
00007df0  6f 6e 22 2c 77 68 25 2c  69 68 25 2c 78 6f 25 2c  |on",wh%,ih%,xo%,|
00007e00  2c 2d 31 2c 2d 31 0d 33  9a 05 e1 0d 33 a4 05 3a  |,-1,-1.3....3..:|
00007e10  0d 33 ae 0c f4 2d 2d 2d  2d 2d 2d 2d 0d 33 b8 0c  |.3...-------.3..|
00007e20  f4 2e 20 4d 4f 55 53 45  0d 33 c2 0c f4 2d 2d 2d  |.. MOUSE.3...---|
00007e30  2d 2d 2d 2d 0d 33 cc 05  3a 0d 33 d6 0f dd f2 6d  |----.3..:.3....m|
00007e40  6f 75 73 65 28 71 25 29  0d 33 e0 1c ea 20 6d 24  |ouse(q%).3... m$|
00007e50  2c 6d 78 25 2c 6d 79 25  2c 6d 62 25 2c 77 68 25  |,mx%,my%,mb%,wh%|
00007e60  2c 69 68 25 0d 33 ea 3c  6d 78 25 3d 71 25 21 30  |,ih%.3.<mx%=q%!0|
00007e70  3a 6d 79 25 3d 71 25 21  34 3a 6d 62 25 3d 71 25  |:my%=q%!4:mb%=q%|
00007e80  21 38 3a 77 68 25 3d 71  25 21 31 32 3a 69 68 25  |!8:wh%=q%!12:ih%|
00007e90  3d 71 25 21 31 36 3a 69  63 6f 6e 25 3d 69 68 25  |=q%!16:icon%=ih%|
00007ea0  0d 33 f4 0d 72 65 6d 62  25 3d 6d 62 25 0d 33 fe  |.3..remb%=mb%.3.|
00007eb0  26 e7 20 6d 62 25 20 80  20 32 20 f2 6d 65 6e 75  |&. mb% . 2 .menu|
00007ec0  28 77 68 25 2c 69 68 25  2c 6d 78 25 2c 6d 79 25  |(wh%,ih%,mx%,my%|
00007ed0  29 3a e1 0d 34 08 0c c8  8e 20 77 68 25 20 ca 0d  |):..4.... wh% ..|
00007ee0  34 12 13 20 c9 2d 32 3a  f4 20 69 63 6f 6e 20 62  |4.. .-2:. icon b|
00007ef0  61 72 0d 34 1c 15 20 e7  20 69 68 25 3d 62 61 72  |ar.4.. . ih%=bar|
00007f00  69 63 6f 6e 25 20 8c 0d  34 26 0e 20 20 c8 8e 20  |icon% ..4&.  .. |
00007f10  6d 62 25 20 ca 0d 34 30  28 20 20 20 c9 20 31 3a  |mb% ..40(   . 1:|
00007f20  c8 99 20 22 57 69 6d 70  5f 53 65 74 43 61 72 65  |.. "Wimp_SetCare|
00007f30  74 50 6f 73 69 74 69 6f  6e 22 2c 2d 31 0d 34 3a  |tPosition",-1.4:|
00007f40  20 20 20 20 f4 20 41 64  6a 20 72 65 6d 6f 76 65  |    . Adj remove|
00007f50  73 20 69 6e 70 75 74 20  66 6f 63 75 73 0d 34 44  |s input focus.4D|
00007f60  0b 20 20 20 c9 20 34 3a  0d 34 4e 14 20 20 20 e7  |.   . 4:.4N.   .|
00007f70  20 70 72 69 73 74 69 6e  65 25 20 8c 0d 34 58 45  | pristine% ..4XE|
00007f80  20 20 20 20 61 6e 73 25  3d a4 6d 73 67 28 22 44  |    ans%=.msg("D|
00007f90  72 61 67 20 6f 62 6a 65  63 74 20 66 72 6f 6d 20  |rag object from |
00007fa0  46 69 6c 65 72 20 77 69  6e 64 6f 77 20 74 6f 20  |Filer window to |
00007fb0  54 69 67 65 72 20 69 63  6f 6e 22 2c 22 4f 4b 22  |Tiger icon","OK"|
00007fc0  29 0d 34 62 08 20 20 20  cc 0d 34 6c 12 20 20 20  |).4b.   ..4l.   |
00007fd0  20 f2 6f 77 28 6d 61 69  6e 25 29 0d 34 76 1b 20  | .ow(main%).4v. |
00007fe0  20 20 20 e7 20 ac 20 a4  66 6f 63 75 73 28 6d 61  |   . . .focus(ma|
00007ff0  69 6e 25 29 20 8c 0d 34  80 1d 20 20 20 20 20 f2  |in%) ..4..     .|
00008000  63 61 72 65 74 78 28 6d  61 69 6e 25 2c 31 35 36  |caretx(main%,156|
00008010  2c 30 29 0d 34 8a 34 20  20 20 20 20 e7 20 64 69  |,0).4.4     . di|
00008020  73 70 6c 61 79 25 3d 31  20 80 20 69 74 65 6d 73  |splay%=1 . items|
00008030  25 3e 30 20 f2 63 61 72  65 74 78 28 6d 61 69 6e  |%>0 .caretx(main|
00008040  25 2c 37 39 2c 30 29 0d  34 94 09 20 20 20 20 cd  |%,79,0).4..    .|
00008050  0d 34 9e 08 20 20 20 cd  0d 34 a8 07 20 20 cb 0d  |.4..   ..4..  ..|
00008060  34 b2 06 20 cd 0d 34 bc  06 20 3a 0d 34 c6 0c 20  |4.. ..4.. :.4.. |
00008070  c9 20 6d 61 69 6e 25 0d  34 d0 0f 20 e7 20 69 68  |. main%.4.. . ih|
00008080  25 3d 2d 31 20 8c 0d 34  da 0e 20 20 c8 8e 20 6d  |%=-1 ..4..  .. m|
00008090  62 25 20 ca 0d 34 e4 25  20 20 20 c9 20 34 3a f2  |b% ..4.%   . 4:.|
000080a0  63 6c 65 61 72 61 6c 6c  3a f4 20 63 6c 69 63 6b  |clearall:. click|
000080b0  20 77 69 74 68 20 53 65  6c 0d 34 ee 28 20 20 20  | with Sel.4.(   |
000080c0  c9 20 31 36 2c 36 34 3a  f2 73 74 61 72 74 64 72  |. 16,64:.startdr|
000080d0  61 67 28 77 68 25 2c 69  68 25 2c 6d 62 25 2c a3  |ag(wh%,ih%,mb%,.|
000080e0  29 0d 34 f8 07 20 20 cb  0d 35 02 06 20 cd 0d 35  |).4..  ..5.. ..5|
000080f0  0c 0e 20 e7 20 69 68 25  3d 30 20 8c 0d 35 16 27  |.. . ih%=0 ..5.'|
00008100  20 20 e7 20 a6 2d 31 20  f2 72 6f 6f 74 28 64 69  |  . .-1 .root(di|
00008110  72 24 29 20 8b 20 f2 70  61 72 65 6e 74 28 64 69  |r$) . .parent(di|
00008120  72 24 29 0d 35 20 06 20  cd 0d 35 2a 1c 20 e7 20  |r$).5 . ..5*. . |
00008130  69 68 25 3e 30 20 80 20  69 68 25 3c 3d 69 74 65  |ih%>0 . ih%<=ite|
00008140  6d 73 25 20 8c 0d 35 34  11 20 20 63 68 6f 73 65  |ms% ..54.  chose|
00008150  6e 25 3d 69 68 25 0d 35  3e 0e 20 20 c8 8e 20 6d  |n%=ih%.5>.  .. m|
00008160  62 25 20 ca 0d 35 48 22  20 20 20 c9 20 31 2c 34  |b% ..5H"   . 1,4|
00008170  3a f2 64 6f 75 62 6c 65  63 6c 69 63 6b 28 6d 62  |:.doubleclick(mb|
00008180  25 2c 69 68 25 29 0d 35  52 2d 20 20 20 c9 20 31  |%,ih%).5R-   . 1|
00008190  36 2c 36 34 3a f2 73 74  61 72 74 64 72 61 67 28  |6,64:.startdrag(|
000081a0  77 68 25 2c 69 68 25 2c  6d 62 25 2c 73 6f 6c 69  |wh%,ih%,mb%,soli|
000081b0  64 25 29 0d 35 5c 21 20  20 20 c9 20 32 35 36 2c  |d%).5\!   . 256,|
000081c0  31 30 32 34 3a f2 63 6c  69 63 6b 28 6d 62 25 2c  |1024:.click(mb%,|
000081d0  69 68 25 29 0d 35 66 07  20 20 cb 0d 35 70 06 20  |ih%).5f.  ..5p. |
000081e0  cd 0d 35 7a 1f 20 e7 20  69 68 25 3e 37 38 20 80  |..5z. . ih%>78 .|
000081f0  20 69 68 25 3c 37 39 2b  69 74 65 6d 73 25 20 8c  | ih%<79+items% .|
00008200  0d 35 84 0e 20 20 c8 8e  20 6d 62 25 20 ca 0d 35  |.5..  .. mb% ..5|
00008210  8e 0c 20 20 20 c9 20 31  2c 34 0d 35 98 33 20 20  |..   . 1,4.5.3  |
00008220  20 20 f2 73 63 72 6f 6c  6c 64 6f 77 6e 28 77 68  |  .scrolldown(wh|
00008230  25 2c 69 68 25 2d 31 29  3a f2 73 63 72 6f 6c 6c  |%,ih%-1):.scroll|
00008240  75 70 28 77 68 25 2c 69  68 25 2b 31 29 0d 35 a2  |up(wh%,ih%+1).5.|
00008250  28 20 20 20 c9 20 31 36  2c 36 34 3a f2 73 74 61  |(   . 16,64:.sta|
00008260  72 74 64 72 61 67 28 77  68 25 2c 69 68 25 2c 6d  |rtdrag(wh%,ih%,m|
00008270  62 25 2c a3 29 0d 35 ac  07 20 20 cb 0d 35 b6 06  |b%,.).5..  ..5..|
00008280  20 cd 0d 35 c0 06 20 3a  0d 35 ca 0f 20 c9 20 73  | ..5.. :.5.. . s|
00008290  61 76 65 62 6f 78 25 0d  35 d4 0d 20 c8 8e 20 69  |avebox%.5.. .. i|
000082a0  68 25 20 ca 0d 35 de 11  20 20 c9 20 64 72 61 67  |h% ..5..  . drag|
000082b0  69 63 6f 6e 25 0d 35 e8  0f 20 20 20 c8 8e 20 6d  |icon%.5..   .. m|
000082c0  62 25 20 ca 0d 35 f2 2e  20 20 20 20 c9 20 31 36  |b% ..5..    . 16|
000082d0  2c 36 34 3a f2 73 74 61  72 74 64 72 61 67 28 77  |,64:.startdrag(w|
000082e0  68 25 2c 69 68 25 2c 6d  62 25 2c 73 6f 6c 69 64  |h%,ih%,mb%,solid|
000082f0  25 29 0d 35 fc 08 20 20  20 cb 0d 36 06 28 20 20  |%).5..   ..6.(  |
00008300  c9 20 6f 6b 69 63 6f 6e  25 3a f2 71 75 69 63 6b  |. okicon%:.quick|
00008310  73 61 76 65 28 77 68 25  2c 69 68 25 2c 26 46 46  |save(wh%,ih%,&FF|
00008320  46 29 0d 36 10 22 20 20  e7 20 6d 62 25 3c 3e 31  |F).6."  . mb%<>1|
00008330  20 f2 63 77 28 77 68 25  29 3a f2 63 6c 6f 73 65  | .cw(wh%):.close|
00008340  6d 65 6e 75 0d 36 1a 23  20 20 c9 20 63 6c 69 63  |menu.6.#  . clic|
00008350  6f 6e 25 3a f2 63 77 28  77 68 25 29 3a f2 63 6c  |on%:.cw(wh%):.cl|
00008360  6f 73 65 6d 65 6e 75 0d  36 24 2e 20 20 c9 20 31  |osemenu.6$.  . 1|
00008370  33 3a e7 20 6d 62 25 3d  31 20 80 20 ac 20 a4 69  |3:. mb%=1 . . .i|
00008380  73 28 77 68 25 2c 31 33  29 3a f2 73 69 28 77 68  |s(wh%,13):.si(wh|
00008390  25 2c 31 33 29 0d 36 2e  2e 20 20 c9 20 31 34 3a  |%,13).6..  . 14:|
000083a0  e7 20 6d 62 25 3d 31 20  80 20 ac 20 a4 69 73 28  |. mb%=1 . . .is(|
000083b0  77 68 25 2c 31 34 29 3a  f2 73 69 28 77 68 25 2c  |wh%,14):.si(wh%,|
000083c0  31 34 29 0d 36 38 2e 20  20 c9 20 31 35 3a e7 20  |14).68.  . 15:. |
000083d0  6d 62 25 3d 31 20 80 20  ac 20 a4 69 73 28 77 68  |mb%=1 . . .is(wh|
000083e0  25 2c 31 35 29 3a f2 73  69 28 77 68 25 2c 31 35  |%,15):.si(wh%,15|
000083f0  29 0d 36 42 06 20 cb 0d  36 4c 06 20 3a 0d 36 56  |).6B. ..6L. :.6V|
00008400  0f 20 c9 20 63 6f 70 79  62 6f 78 25 0d 36 60 0d  |. . copybox%.6`.|
00008410  20 c8 8e 20 69 68 25 20  ca 0d 36 6a 11 20 20 c9  | .. ih% ..6j.  .|
00008420  20 64 72 61 67 69 63 6f  6e 25 0d 36 74 0f 20 20  | dragicon%.6t.  |
00008430  20 c8 8e 20 6d 62 25 20  ca 0d 36 7e 2e 20 20 20  | .. mb% ..6~.   |
00008440  20 c9 20 31 36 2c 36 34  3a f2 73 74 61 72 74 64  | . 16,64:.startd|
00008450  72 61 67 28 77 68 25 2c  69 68 25 2c 6d 62 25 2c  |rag(wh%,ih%,mb%,|
00008460  73 6f 6c 69 64 25 29 0d  36 88 08 20 20 20 cb 0d  |solid%).6..   ..|
00008470  36 92 1f 20 20 c9 20 6f  6b 69 63 6f 6e 25 3a f2  |6..  . okicon%:.|
00008480  63 6f 70 79 28 22 22 2c  72 65 6d 62 25 29 0d 36  |copy("",remb%).6|
00008490  9c 1a 20 20 c9 20 63 6c  69 63 6f 6e 25 3a f2 63  |..  . clicon%:.c|
000084a0  6c 6f 73 65 6d 65 6e 75  0d 36 a6 06 20 cb 0d 36  |losemenu.6.. ..6|
000084b0  b0 06 20 3a 0d 36 ba 12  20 c9 20 63 68 6f 69 63  |.. :.6.. . choic|
000084c0  65 77 69 6e 64 25 0d 36  c4 0d 20 c8 8e 20 69 68  |ewind%.6.. .. ih|
000084d0  25 20 ca 0d 36 ce 33 20  20 c9 20 32 3a f2 73 65  |% ..6.3  . 2:.se|
000084e0  74 64 65 66 61 75 6c 74  73 3a e7 20 6d 62 25 3c  |tdefaults:. mb%<|
000084f0  3e 31 20 f2 63 77 28 77  68 25 29 3a f2 63 6c 6f  |>1 .cw(wh%):.clo|
00008500  73 65 6d 65 6e 75 0d 36  d8 1d 20 20 c9 20 33 3a  |semenu.6..  . 3:|
00008510  f2 63 77 28 77 68 25 29  3a f2 63 6c 6f 73 65 6d  |.cw(wh%):.closem|
00008520  65 6e 75 0d 36 e2 33 20  20 c9 20 34 3a f2 73 61  |enu.6.3  . 4:.sa|
00008530  76 65 63 68 6f 69 63 65  73 3a e7 20 6d 62 25 3c  |vechoices:. mb%<|
00008540  3e 31 20 f2 63 77 28 77  68 25 29 3a f2 63 6c 6f  |>1 .cw(wh%):.clo|
00008550  73 65 6d 65 6e 75 0d 36  ec 32 20 20 c9 20 35 3a  |semenu.6.2  . 5:|
00008560  f2 73 65 74 63 68 6f 69  63 65 73 3a e7 20 6d 62  |.setchoices:. mb|
00008570  25 3c 3e 31 20 f2 63 77  28 77 68 25 29 3a f2 63  |%<>1 .cw(wh%):.c|
00008580  6c 6f 73 65 6d 65 6e 75  0d 36 f6 33 20 20 c9 31  |losemenu.6.3  .1|
00008590  32 3a e7 20 ac 20 a4 69  73 28 77 68 25 2c 31 32  |2:. . .is(wh%,12|
000085a0  29 20 80 20 a4 69 73 28  77 68 25 2c 31 33 29 20  |) . .is(wh%,13) |
000085b0  f2 75 69 28 77 68 25 2c  31 33 29 0d 37 00 33 20  |.ui(wh%,13).7.3 |
000085c0  20 c9 31 33 3a e7 20 a4  69 73 28 77 68 25 2c 31  | .13:. .is(wh%,1|
000085d0  33 29 20 80 20 ac 20 a4  69 73 28 77 68 25 2c 31  |3) . . .is(wh%,1|
000085e0  32 29 20 f2 75 69 28 77  68 25 2c 31 33 29 0d 37  |2) .ui(wh%,13).7|
000085f0  0a 06 20 cb 0d 37 14 06  20 3a 0d 37 1e 12 20 c9  |.. ..7.. :.7.. .|
00008600  20 61 63 63 65 73 73 77  69 6e 64 25 0d 37 28 0e  | accesswind%.7(.|
00008610  20 e7 20 69 68 25 3d 30  20 8c 0d 37 32 1f 20 20  | . ih%=0 ..72.  |
00008620  e7 20 6d 62 25 3d 31 20  73 74 61 79 25 3d b9 20  |. mb%=1 stay%=. |
00008630  8b 20 73 74 61 79 25 3d  a3 0d 37 3c 24 20 20 f2  |. stay%=..7<$  .|
00008640  61 63 63 65 73 73 28 32  29 3a e7 20 6d 62 25 3c  |access(2):. mb%<|
00008650  3e 31 20 f2 63 6c 6f 73  65 6d 65 6e 75 0d 37 46  |>1 .closemenu.7F|
00008660  06 20 cd 0d 37 50 06 20  3a 0d 37 5a 1b 20 c9 20  |. ..7P. :.7Z. . |
00008670  6d 65 73 73 77 69 6e 64  25 3a 72 65 70 6c 79 25  |messwind%:reply%|
00008680  3d 69 68 25 0d 37 64 0d  20 c8 8e 20 6d 62 25 20  |=ih%.7d. .. mb% |
00008690  ca 0d 37 6e 27 20 20 c9  20 31 36 2c 36 34 3a f2  |..7n'  . 16,64:.|
000086a0  73 74 61 72 74 64 72 61  67 28 77 68 25 2c 69 68  |startdrag(wh%,ih|
000086b0  25 2c 6d 62 25 2c a3 29  0d 37 78 06 20 cb 0d 37  |%,mb%,.).7x. ..7|
000086c0  82 06 20 3a 0d 37 8c 10  20 c9 20 62 75 66 66 77  |.. :.7.. . buffw|
000086d0  69 6e 64 25 0d 37 96 0d  20 c8 8e 20 69 68 25 20  |ind%.7.. .. ih% |
000086e0  ca 0d 37 a0 35 20 20 c9  20 30 3a e7 20 6d 62 25  |..7.5  . 0:. mb%|
000086f0  3d 31 36 20 84 20 6d 62  25 3d 36 34 20 f2 73 74  |=16 . mb%=64 .st|
00008700  61 72 74 64 72 61 67 28  77 68 25 2c 69 68 25 2c  |artdrag(wh%,ih%,|
00008710  6d 62 25 2c a3 29 0d 37  aa 2f 20 20 c8 99 20 22  |mb%,.).7./  .. "|
00008720  57 69 6d 70 5f 47 65 74  43 61 72 65 74 50 6f 73  |Wimp_GetCaretPos|
00008730  69 74 69 6f 6e 22 2c 2c  43 25 3a 70 6f 73 25 3d  |ition",,C%:pos%=|
00008740  43 25 21 32 30 0d 37 b4  30 20 20 c9 20 31 3a e7  |C%!20.7.0  . 1:.|
00008750  20 a4 69 73 28 77 68 25  2c 31 29 20 74 65 78 74  | .is(wh%,1) text|
00008760  66 6c 61 67 25 3d b9 20  8b 20 74 65 78 74 66 6c  |flag%=. . textfl|
00008770  61 67 25 3d a3 0d 37 be  12 20 20 c9 20 32 3a f2  |ag%=..7..  . 2:.|
00008780  70 75 74 74 65 78 74 0d  37 c8 2b 20 20 c9 20 33  |puttext.7.+  . 3|
00008790  3a e7 20 6d 62 25 3d 31  20 80 20 ac 20 a4 69 73  |:. mb%=1 . . .is|
000087a0  28 77 68 25 2c 33 29 3a  f2 73 69 28 77 68 25 2c  |(wh%,3):.si(wh%,|
000087b0  33 29 0d 37 d2 2b 20 20  c9 20 34 3a e7 20 6d 62  |3).7.+  . 4:. mb|
000087c0  25 3d 31 20 80 20 ac 20  a4 69 73 28 77 68 25 2c  |%=1 . . .is(wh%,|
000087d0  34 29 3a f2 73 69 28 77  68 25 2c 34 29 0d 37 dc  |4):.si(wh%,4).7.|
000087e0  25 20 20 c9 20 35 3a f2  69 74 28 77 68 25 2c 30  |%  . 5:.it(wh%,0|
000087f0  2c 22 22 29 3a f2 63 61  72 65 74 28 77 68 25 2c  |,""):.caret(wh%,|
00008800  30 29 0d 37 e6 06 20 cb  0d 37 f0 05 cb 0d 37 fa  |0).7.. ..7....7.|
00008810  05 e1 0d 38 04 05 3a 0d  38 0e 14 dd f2 63 6c 69  |...8..:.8....cli|
00008820  63 6b 28 6d 62 25 2c 69  68 25 29 0d 38 18 0c c8  |ck(mb%,ih%).8...|
00008830  8e 20 6d 62 25 20 ca 0d  38 22 11 20 c9 20 31 30  |. mb% ..8". . 10|
00008840  32 34 3a f4 20 53 65 6c  0d 38 2c 30 20 e7 20 ac  |24:. Sel.8,0 . .|
00008850  20 a4 69 73 28 6d 61 69  6e 25 2c 69 68 25 29 20  | .is(main%,ih%) |
00008860  f2 63 6c 65 61 72 61 6c  6c 3a f2 73 69 28 6d 61  |.clearall:.si(ma|
00008870  69 6e 25 2c 69 68 25 29  0d 38 36 1f 20 c9 20 32  |in%,ih%).86. . 2|
00008880  35 36 3a f2 74 69 28 6d  61 69 6e 25 2c 69 68 25  |56:.ti(main%,ih%|
00008890  29 3a f4 20 41 64 6a 0d  38 40 05 cb 0d 38 4a 05  |):. Adj.8@...8J.|
000088a0  e1 0d 38 54 05 3a 0d 38  5e 0b f4 2d 2d 2d 2d 2d  |..8T.:.8^..-----|
000088b0  2d 0d 38 68 0b f4 2e 20  4d 45 4e 55 0d 38 72 0b  |-.8h... MENU.8r.|
000088c0  f4 2d 2d 2d 2d 2d 2d 0d  38 7c 05 3a 0d 38 86 1b  |.------.8|.:.8..|
000088d0  dd f2 6d 65 6e 75 28 77  68 25 2c 69 68 25 2c 6d  |..menu(wh%,ih%,m|
000088e0  78 25 2c 6d 79 25 29 0d  38 90 1b f4 20 6d 69 64  |x%,my%).8... mid|
000088f0  64 6c 65 20 62 75 74 74  6f 6e 20 63 6c 69 63 6b  |dle button click|
00008900  65 64 0d 38 9a 0c c8 8e  20 77 68 25 20 ca 0d 38  |ed.8.... wh% ..8|
00008910  a4 0c 20 c9 20 6d 61 69  6e 25 0d 38 ae 2b 20 c8  |.. . main%.8.+ .|
00008920  99 20 22 57 69 6d 70 5f  47 65 74 50 6f 69 6e 74  |. "Wimp_GetPoint|
00008930  65 72 49 6e 66 6f 22 2c  2c 71 25 3a 69 68 25 3d  |erInfo",,q%:ih%=|
00008940  71 25 21 31 36 0d 38 b8  30 20 63 68 6f 73 65 6e  |q%!16.8.0 chosen|
00008950  25 3d 30 3a e7 20 69 68  25 3e 30 20 80 20 69 68  |%=0:. ih%>0 . ih|
00008960  25 3c 3d 69 74 65 6d 73  25 20 63 68 6f 73 65 6e  |%<=items% chosen|
00008970  25 3d 69 68 25 0d 38 c2  27 20 73 65 6c 25 3d a4  |%=ih%.8.' sel%=.|
00008980  73 65 6c 3a e7 20 73 65  6c 25 3d 31 20 63 68 6f  |sel:. sel%=1 cho|
00008990  73 65 6e 25 3d 73 65 6c  25 28 31 29 0d 38 cc 1f  |sen%=sel%(1).8..|
000089a0  20 f2 6d 61 69 6e 6d 65  6e 75 28 6d 78 25 2c 6d  | .mainmenu(mx%,m|
000089b0  79 25 2c 63 68 6f 73 65  6e 25 29 0d 38 d6 1b 20  |y%,chosen%).8.. |
000089c0  c9 20 2d 32 3a f2 62 61  72 6d 65 6e 75 28 6d 78  |. -2:.barmenu(mx|
000089d0  25 2c 6d 79 25 29 0d 38  e0 05 cb 0d 38 ea 05 e1  |%,my%).8....8...|
000089e0  0d 38 f4 05 3a 0d 38 fe  1f dd f2 6d 61 69 6e 6d  |.8..:.8....mainm|
000089f0  65 6e 75 28 6d 78 25 2c  6d 79 25 2c 63 68 6f 73  |enu(mx%,my%,chos|
00008a00  65 6e 25 29 0d 39 08 2f  ea 20 4a 25 2c 66 25 2c  |en%).9./. J%,f%,|
00008a10  62 25 2c 67 25 2c 6e 24  2c 6e 32 24 2c 6e 33 24  |b%,g%,n$,n2$,n3$|
00008a20  2c 77 69 64 25 2c 77 68  25 2c 69 68 25 2c 6e 61  |,wid%,wh%,ih%,na|
00008a30  6d 65 24 0d 39 12 29 72  65 6d 78 25 3d 6d 78 25  |me$.9.)remx%=mx%|
00008a40  3a 72 65 6d 79 25 3d 6d  79 25 3a 70 72 65 73 65  |:remy%=my%:prese|
00008a50  6e 74 25 3d b9 3a 6e 33  24 3d 22 22 0d 39 1c 2d  |nt%=.:n3$="".9.-|
00008a60  6e 61 6d 65 24 3d 22 22  3a 6e 24 3d 22 46 69 6c  |name$="":n$="Fil|
00008a70  65 20 27 27 22 3a 6f 62  6a 25 3d 31 3a 24 6e 65  |e ''":obj%=1:$ne|
00008a80  77 6e 61 6d 65 25 3d 22  22 0d 39 26 0f e7 20 63  |wname%="".9&.. c|
00008a90  68 6f 73 65 6e 25 20 8c  0d 39 30 19 20 6e 61 6d  |hosen% ..90. nam|
00008aa0  65 24 3d 6c 65 61 66 24  28 63 68 6f 73 65 6e 25  |e$=leaf$(chosen%|
00008ab0  29 0d 39 3a 17 20 f4 20  69 73 20 6f 62 6a 20 69  |).9:. . is obj i|
00008ac0  6e 20 46 69 6c 65 72 3f  0d 39 44 2b 20 70 72 65  |n Filer?.9D+ pre|
00008ad0  73 65 6e 74 25 3d a4 63  68 65 63 6b 6f 62 6a 28  |sent%=.checkobj(|
00008ae0  64 69 72 24 2b 22 2e 22  2b 6e 61 6d 65 24 2c a3  |dir$+"."+name$,.|
00008af0  29 3d b9 0d 39 4e 22 20  6f 62 6a 25 3d a4 6f 62  |)=..9N" obj%=.ob|
00008b00  6a 74 79 70 65 28 64 69  72 24 2b 22 2e 22 2b 6e  |jtype(dir$+"."+n|
00008b10  61 6d 65 24 29 0d 39 58  05 cd 0d 39 62 05 3a 0d  |ame$).9X...9b.:.|
00008b20  39 6c 0d 73 65 6c 25 3d  a4 73 65 6c 0d 39 76 18  |9l.sel%=.sel.9v.|
00008b30  e7 20 73 65 6c 25 3d 31  20 84 20 63 68 6f 73 65  |. sel%=1 . chose|
00008b40  6e 25 20 8c 0d 39 80 1b  20 6e 32 24 3d 22 46 69  |n% ..9.. n2$="Fi|
00008b50  6c 65 20 22 3a 6e 33 24  3d 22 46 69 6c 65 22 0d  |le ":n3$="File".|
00008b60  39 8a 29 20 e7 20 6f 62  6a 25 3d 32 20 6e 32 24  |9.) . obj%=2 n2$|
00008b70  3d 22 44 69 72 2e 20 22  3a 6e 33 24 3d 22 44 69  |="Dir. ":n3$="Di|
00008b80  72 65 63 74 6f 72 79 22  0d 39 94 3b 20 e7 20 6f  |rectory".9.; . o|
00008b90  62 6a 25 3d 32 20 80 20  c0 6e 61 6d 65 24 2c 31  |bj%=2 . .name$,1|
00008ba0  29 3d 22 21 22 20 6e 32  24 3d 22 41 70 70 2e 20  |)="!" n2$="App. |
00008bb0  22 3a 6e 33 24 3d 22 41  70 70 6c 69 63 61 74 69  |":n3$="Applicati|
00008bc0  6f 6e 22 0d 39 9e 19 20  6e 24 3d 6e 32 24 2b 22  |on".9.. n$=n2$+"|
00008bd0  27 22 2b 6e 61 6d 65 24  2b 22 27 22 0d 39 a8 05  |'"+name$+"'".9..|
00008be0  cd 0d 39 b2 2b e7 20 73  65 6c 25 3e 31 20 6e 24  |..9.+. sel%>1 n$|
00008bf0  3d 22 53 65 6c 65 63 74  69 6f 6e 22 3a 6e 33 24  |="Selection":n3$|
00008c00  3d 6e 24 3a 6e 61 6d 65  24 3d 6e 24 0d 39 bc 05  |=n$:name$=n$.9..|
00008c10  3a 0d 39 c6 47 24 6d 69  30 25 3d 22 44 69 73 70  |:.9.G$mi0%="Disp|
00008c20  6c 61 79 22 3a 24 6d 69  31 25 3d 6e 24 3a 24 6d  |lay":$mi1%=n$:$m|
00008c30  69 32 25 3d 22 53 65 6c  65 63 74 20 61 6c 6c 22  |i2%="Select all"|
00008c40  3a 24 6d 69 33 25 3d 22  43 6c 65 61 72 20 73 65  |:$mi3%="Clear se|
00008c50  6c 65 63 74 69 6f 6e 22  0d 39 d0 41 24 6d 69 34  |lection".9.A$mi4|
00008c60  25 3d 22 4f 70 74 69 6f  6e 73 22 3a 24 6d 69 35  |%="Options":$mi5|
00008c70  25 3d 22 4e 65 77 20 64  69 72 65 63 74 6f 72 79  |%="New directory|
00008c80  22 3a 24 6d 69 36 25 3d  22 4f 70 65 6e 20 66 69  |":$mi6%="Open fi|
00008c90  6c 65 72 20 20 20 46 31  22 0d 39 da 33 24 6d 69  |ler   F1".9.3$mi|
00008ca0  37 25 3d 22 47 6f 74 6f  20 70 61 72 65 6e 74 20  |7%="Goto parent |
00008cb0  20 46 32 22 3a 24 6d 69  38 25 3d 22 53 61 76 65  | F2":$mi8%="Save|
00008cc0  20 64 61 74 61 20 20 20  20 46 33 22 0d 39 e4 3b  | data    F3".9.;|
00008cd0  24 6d 69 39 25 3d 22 53  61 76 65 20 74 65 78 74  |$mi9%="Save text|
00008ce0  20 20 20 22 2b bd 31 33  39 2b 22 46 33 22 3a 24  |   "+.139+"F3":$|
00008cf0  6d 69 31 30 25 3d 22 4f  70 65 6e 20 62 75 66 66  |mi10%="Open buff|
00008d00  65 72 20 20 46 35 22 0d  39 ee 3d 24 6d 69 31 31  |er  F5".9.=$mi11|
00008d10  25 3d 22 55 6e 64 6f 20  63 68 61 6e 67 65 73 20  |%="Undo changes |
00008d20  46 38 22 3a e7 20 72 65  64 6f 25 20 24 6d 69 31  |F8":. redo% $mi1|
00008d30  31 25 3d 22 52 65 64 6f  20 63 68 61 6e 67 65 73  |1%="Redo changes|
00008d40  20 46 39 22 0d 39 f8 05  3a 0d 3a 02 27 77 69 64  | F9".9..:.:.'wid|
00008d50  25 3d 28 a9 6e 24 2b 31  29 2a 31 36 3a e7 20 77  |%=(.n$+1)*16:. w|
00008d60  69 64 25 3c 32 35 36 20  77 69 64 25 3d 32 35 36  |id%<256 wid%=256|
00008d70  0d 3a 0c 2c 61 25 3d 6d  62 31 25 3a 21 61 25 3d  |.:.,a%=mb1%:!a%=|
00008d80  6d 61 69 6e 25 3a 70 25  3d 61 25 2b 33 32 3a 24  |main%:p%=a%+32:$|
00008d90  28 61 25 2b 34 29 3d 74  61 73 6b 24 0d 3a 16 2c  |(a%+4)=task$.:.,|
00008da0  61 25 21 31 36 3d 26 37  30 32 30 37 3a 61 25 21  |a%!16=&70207:a%!|
00008db0  32 30 3d 77 69 64 25 3a  61 25 21 32 34 3d 34 34  |20=wid%:a%!24=44|
00008dc0  3a 61 25 21 32 38 3d 30  0d 3a 20 3b 62 25 3d 26  |:a%!28=0.: ;b%=&|
00008dd0  37 30 30 30 31 32 31 3a  67 25 3d 26 37 34 30 30  |7000121:g%=&7400|
00008de0  31 32 31 3a f4 20 66 6c  61 67 73 3d 62 6c 61 63  |121:. flags=blac|
00008df0  6b 2c 67 72 65 79 20 28  69 6e 64 69 72 65 63 74  |k,grey (indirect|
00008e00  65 64 29 0d 3a 2a 05 3a  0d 3a 34 40 70 25 21 30  |ed).:*.:.:4@p%!0|
00008e10  3d 30 3a 70 25 21 34 3d  6d 62 34 25 3a 70 25 21  |=0:p%!4=mb4%:p%!|
00008e20  38 3d 62 25 3a 70 25 21  31 32 3d 6d 69 30 25 3a  |8=b%:p%!12=mi0%:|
00008e30  70 25 21 31 36 3d 2d 31  3a 70 25 21 32 30 3d 31  |p%!16=-1:p%!20=1|
00008e40  36 3a 70 25 2b 3d 32 34  0d 3a 3e 29 e7 20 6e 61  |6:p%+=24.:>). na|
00008e50  6d 65 24 3d 22 22 20 84  20 ac 20 70 72 65 73 65  |me$="" . . prese|
00008e60  6e 74 25 20 66 25 3d 67  25 20 8b 20 66 25 3d 62  |nt% f%=g% . f%=b|
00008e70  25 0d 3a 48 40 70 25 21  30 3d 30 3a 70 25 21 34  |%.:H@p%!0=0:p%!4|
00008e80  3d 6d 62 32 25 3a 70 25  21 38 3d 66 25 3a 70 25  |=mb2%:p%!8=f%:p%|
00008e90  21 31 32 3d 6d 69 31 25  3a 70 25 21 31 36 3d 2d  |!12=mi1%:p%!16=-|
00008ea0  31 3a 70 25 21 32 30 3d  31 36 3a 70 25 2b 3d 32  |1:p%!20=16:p%+=2|
00008eb0  34 0d 3a 52 1c e7 20 69  74 65 6d 73 25 3d 30 20  |4.:R.. items%=0 |
00008ec0  66 25 3d 67 25 20 8b 20  66 25 3d 62 25 0d 3a 5c  |f%=g% . f%=b%.:\|
00008ed0  3d 70 25 21 30 3d 30 3a  70 25 21 34 3d 30 3a 70  |=p%!0=0:p%!4=0:p|
00008ee0  25 21 38 3d 66 25 3a 70  25 21 31 32 3d 6d 69 32  |%!8=f%:p%!12=mi2|
00008ef0  25 3a 70 25 21 31 36 3d  2d 31 3a 70 25 21 32 30  |%:p%!16=-1:p%!20|
00008f00  3d 31 36 3a 70 25 2b 3d  32 34 0d 3a 66 1a e7 20  |=16:p%+=24.:f.. |
00008f10  73 65 6c 25 3d 30 20 66  25 3d 67 25 20 8b 20 66  |sel%=0 f%=g% . f|
00008f20  25 3d 62 25 0d 3a 70 3d  70 25 21 30 3d 30 3a 70  |%=b%.:p=p%!0=0:p|
00008f30  25 21 34 3d 30 3a 70 25  21 38 3d 66 25 3a 70 25  |%!4=0:p%!8=f%:p%|
00008f40  21 31 32 3d 6d 69 33 25  3a 70 25 21 31 36 3d 2d  |!12=mi3%:p%!16=-|
00008f50  31 3a 70 25 21 32 30 3d  31 36 3a 70 25 2b 3d 32  |1:p%!20=16:p%+=2|
00008f60  34 0d 3a 7a 40 70 25 21  30 3d 30 3a 70 25 21 34  |4.:z@p%!0=0:p%!4|
00008f70  3d 6d 62 36 25 3a 70 25  21 38 3d 62 25 3a 70 25  |=mb6%:p%!8=b%:p%|
00008f80  21 31 32 3d 6d 69 34 25  3a 70 25 21 31 36 3d 2d  |!12=mi4%:p%!16=-|
00008f90  31 3a 70 25 21 32 30 3d  31 36 3a 70 25 2b 3d 32  |1:p%!20=16:p%+=2|
00008fa0  34 0d 3a 84 41 70 25 21  30 3d 31 30 3a 70 25 21  |4.:.Ap%!0=10:p%!|
00008fb0  34 3d 6d 62 33 25 3a 70  25 21 38 3d 62 25 3a 70  |4=mb3%:p%!8=b%:p|
00008fc0  25 21 31 32 3d 6d 69 35  25 3a 70 25 21 31 36 3d  |%!12=mi5%:p%!16=|
00008fd0  2d 31 3a 70 25 21 32 30  3d 31 36 3a 70 25 2b 3d  |-1:p%!20=16:p%+=|
00008fe0  32 34 0d 3a 8e 3d 70 25  21 30 3d 30 3a 70 25 21  |24.:.=p%!0=0:p%!|
00008ff0  34 3d 30 3a 70 25 21 38  3d 62 25 3a 70 25 21 31  |4=0:p%!8=b%:p%!1|
00009000  32 3d 6d 69 36 25 3a 70  25 21 31 36 3d 2d 31 3a  |2=mi6%:p%!16=-1:|
00009010  70 25 21 32 30 3d 31 36  3a 70 25 2b 3d 32 34 0d  |p%!20=16:p%+=24.|
00009020  3a 98 21 e7 20 a4 69 73  72 6f 6f 74 28 64 69 72  |:.!. .isroot(dir|
00009030  24 29 20 66 25 3d 67 25  20 8b 20 66 25 3d 62 25  |$) f%=g% . f%=b%|
00009040  0d 3a a2 3d 70 25 21 30  3d 30 3a 70 25 21 34 3d  |.:.=p%!0=0:p%!4=|
00009050  30 3a 70 25 21 38 3d 66  25 3a 70 25 21 31 32 3d  |0:p%!8=f%:p%!12=|
00009060  6d 69 37 25 3a 70 25 21  31 36 3d 2d 31 3a 70 25  |mi7%:p%!16=-1:p%|
00009070  21 32 30 3d 31 36 3a 70  25 2b 3d 32 34 0d 3a ac  |!20=16:p%+=24.:.|
00009080  29 e7 20 64 69 73 70 6c  61 79 25 3d 31 20 80 20  |). display%=1 . |
00009090  69 74 65 6d 73 25 3e 30  20 66 25 3d 62 25 20 8b  |items%>0 f%=b% .|
000090a0  20 66 25 3d 67 25 0d 3a  b6 3d 70 25 21 30 3d 30  | f%=g%.:.=p%!0=0|
000090b0  3a 70 25 21 34 3d 30 3a  70 25 21 38 3d 66 25 3a  |:p%!4=0:p%!8=f%:|
000090c0  70 25 21 31 32 3d 6d 69  38 25 3a 70 25 21 31 36  |p%!12=mi8%:p%!16|
000090d0  3d 2d 31 3a 70 25 21 32  30 3d 31 36 3a 70 25 2b  |=-1:p%!20=16:p%+|
000090e0  3d 32 34 0d 3a c0 1c e7  20 69 74 65 6d 73 25 3e  |=24.:... items%>|
000090f0  30 20 66 25 3d 62 25 20  8b 20 66 25 3d 67 25 0d  |0 f%=b% . f%=g%.|
00009100  3a ca 44 70 25 21 30 3d  38 3a 70 25 21 34 3d 73  |:.Dp%!0=8:p%!4=s|
00009110  61 76 65 62 6f 78 25 3a  70 25 21 38 3d 66 25 3a  |avebox%:p%!8=f%:|
00009120  70 25 21 31 32 3d 6d 69  39 25 3a 70 25 21 31 36  |p%!12=mi9%:p%!16|
00009130  3d 2d 31 3a 70 25 21 32  30 3d 31 36 3a 70 25 2b  |=-1:p%!20=16:p%+|
00009140  3d 32 34 0d 3a d4 3e 70  25 21 30 3d 38 3a 70 25  |=24.:.>p%!0=8:p%|
00009150  21 34 3d 30 3a 70 25 21  38 3d 66 25 3a 70 25 21  |!4=0:p%!8=f%:p%!|
00009160  31 32 3d 6d 69 31 30 25  3a 70 25 21 31 36 3d 2d  |12=mi10%:p%!16=-|
00009170  31 3a 70 25 21 32 30 3d  31 36 3a 70 25 2b 3d 32  |1:p%!20=16:p%+=2|
00009180  34 0d 3a de 21 e7 20 75  6e 64 6f 25 20 84 20 72  |4.:.!. undo% . r|
00009190  65 64 6f 25 20 66 25 3d  62 25 20 8b 20 66 25 3d  |edo% f%=b% . f%=|
000091a0  67 25 0d 3a e8 39 70 25  21 30 3d 26 38 30 3a 70  |g%.:.9p%!0=&80:p|
000091b0  25 21 34 3d 30 3a 70 25  21 38 3d 66 25 3a 70 25  |%!4=0:p%!8=f%:p%|
000091c0  21 31 32 3d 6d 69 31 31  25 3a 70 25 21 31 36 3d  |!12=mi11%:p%!16=|
000091d0  2d 31 3a 70 25 21 32 30  3d 31 36 0d 3a f2 05 3a  |-1:p%!20=16.:..:|
000091e0  0d 3a fc 2e 62 25 3d 26  37 30 30 30 30 32 31 3a  |.:..b%=&7000021:|
000091f0  67 25 3d 26 37 34 30 30  30 32 31 3a f4 20 66 6c  |g%=&7400021:. fl|
00009200  61 67 73 3d 62 6c 61 63  6b 2c 67 72 65 79 0d 3b  |ags=black,grey.;|
00009210  06 22 61 25 3d 6d 62 32  25 3a 70 25 3d 61 25 2b  |."a%=mb2%:p%=a%+|
00009220  32 38 3a 24 61 25 3d 6e  33 24 3a 66 25 3d 62 25  |28:$a%=n3$:f%=b%|
00009230  0d 3b 10 2b 61 25 21 31  32 3d 26 37 30 32 30 37  |.;.+a%!12=&70207|
00009240  3a 61 25 21 31 36 3d 31  36 38 3a 61 25 21 32 30  |:a%!16=168:a%!20|
00009250  3d 34 34 3a 61 25 21 32  34 3d 30 0d 3b 1a 2e e7  |=44:a%!24=0.;...|
00009260  20 73 65 6c 25 3e 31 20  84 20 6e 61 6d 65 24 3d  | sel%>1 . name$=|
00009270  22 54 69 67 65 72 44 61  74 61 22 20 66 25 3d 67  |"TigerData" f%=g|
00009280  25 20 8b 20 66 25 3d 62  25 0d 3b 24 3d 73 24 3d  |% . f%=b%.;$=s$=|
00009290  22 43 6f 70 79 22 3a 70  25 21 30 3d 38 3a 70 25  |"Copy":p%!0=8:p%|
000092a0  21 34 3d 63 6f 70 79 62  6f 78 25 3a 70 25 21 38  |!4=copybox%:p%!8|
000092b0  3d 66 25 3a 24 28 70 25  2b 31 32 29 3d 73 24 3a  |=f%:$(p%+12)=s$:|
000092c0  70 25 2b 3d 32 34 0d 3b  2e 2e e7 20 6e 61 6d 65  |p%+=24.;... name|
000092d0  24 3d 22 54 69 67 65 72  44 61 74 61 22 20 84 20  |$="TigerData" . |
000092e0  73 65 6c 25 3e 31 20 66  25 3d 67 25 20 8b 20 66  |sel%>1 f%=g% . f|
000092f0  25 3d 62 25 0d 3b 38 3b  73 24 3d 22 52 65 6e 61  |%=b%.;8;s$="Rena|
00009300  6d 65 22 3a 70 25 21 30  3d 38 3a 70 25 21 34 3d  |me":p%!0=8:p%!4=|
00009310  6d 62 33 25 3a 70 25 21  38 3d 66 25 3a 24 28 70  |mb3%:p%!8=f%:$(p|
00009320  25 2b 31 32 29 3d 73 24  3a 70 25 2b 3d 32 34 0d  |%+12)=s$:p%+=24.|
00009330  3b 42 25 e7 20 6e 61 6d  65 24 3d 22 54 69 67 65  |;B%. name$="Tige|
00009340  72 44 61 74 61 22 20 66  25 3d 67 25 20 8b 20 66  |rData" f%=g% . f|
00009350  25 3d 62 25 0d 3b 4c 38  73 24 3d 22 44 65 6c 65  |%=b%.;L8s$="Dele|
00009360  74 65 22 3a 70 25 21 30  3d 30 3a 70 25 21 34 3d  |te":p%!0=0:p%!4=|
00009370  30 3a 70 25 21 38 3d 66  25 3a 24 28 70 25 2b 31  |0:p%!8=f%:$(p%+1|
00009380  32 29 3d 73 24 3a 70 25  2b 3d 32 34 0d 3b 56 3b  |2)=s$:p%+=24.;V;|
00009390  73 24 3d 22 41 63 63 65  73 73 22 3a 70 25 21 30  |s$="Access":p%!0|
000093a0  3d 38 3a 70 25 21 34 3d  6d 62 35 25 3a 70 25 21  |=8:p%!4=mb5%:p%!|
000093b0  38 3d 62 25 3a 24 28 70  25 2b 31 32 29 3d 73 24  |8=b%:$(p%+12)=s$|
000093c0  3a 70 25 2b 3d 32 34 0d  3b 60 37 73 24 3d 22 43  |:p%+=24.;`7s$="C|
000093d0  6f 75 6e 74 22 3a 70 25  21 30 3d 30 3a 70 25 21  |ount":p%!0=0:p%!|
000093e0  34 3d 30 3a 70 25 21 38  3d 62 25 3a 24 28 70 25  |4=0:p%!8=b%:$(p%|
000093f0  2b 31 32 29 3d 73 24 3a  70 25 2b 3d 32 34 0d 3b  |+12)=s$:p%+=24.;|
00009400  6a 25 e7 20 a4 68 65 6c  70 28 6e 61 6d 65 24 2c  |j%. .help(name$,|
00009410  6f 62 6a 25 29 20 66 25  3d 62 25 20 8b 20 66 25  |obj%) f%=b% . f%|
00009420  3d 67 25 0d 3b 74 36 73  24 3d 22 48 65 6c 70 22  |=g%.;t6s$="Help"|
00009430  3a 70 25 21 30 3d 30 3a  70 25 21 34 3d 30 3a 70  |:p%!0=0:p%!4=0:p|
00009440  25 21 38 3d 66 25 3a 24  28 70 25 2b 31 32 29 3d  |%!8=f%:$(p%+12)=|
00009450  73 24 3a 70 25 2b 3d 32  34 0d 3b 7e 1a e7 20 73  |s$:p%+=24.;~.. s|
00009460  65 6c 25 3e 31 20 66 25  3d 67 25 20 8b 20 66 25  |el%>1 f%=g% . f%|
00009470  3d 62 25 0d 3b 88 3d 73  24 3d 22 49 6e 66 6f 22  |=b%.;.=s$="Info"|
00009480  3a 70 25 21 30 3d 38 3a  70 25 21 34 3d 6f 62 6a  |:p%!0=8:p%!4=obj|
00009490  69 6e 66 6f 25 3a 70 25  21 38 3d 66 25 3a 24 28  |info%:p%!8=f%:$(|
000094a0  70 25 2b 31 32 29 3d 73  24 3a 70 25 2b 3d 32 34  |p%+12)=s$:p%+=24|
000094b0  0d 3b 92 39 73 24 3d 22  46 69 6e 64 22 3a 70 25  |.;.9s$="Find":p%|
000094c0  21 30 3d 38 3a 70 25 21  34 3d 6d 62 33 25 3a 70  |!0=8:p%!4=mb3%:p|
000094d0  25 21 38 3d 62 25 3a 24  28 70 25 2b 31 32 29 3d  |%!8=b%:$(p%+12)=|
000094e0  73 24 3a 70 25 2b 3d 32  34 0d 3b 9c 25 e7 20 6e  |s$:p%+=24.;.%. n|
000094f0  61 6d 65 24 3d 22 54 69  67 65 72 44 61 74 61 22  |ame$="TigerData"|
00009500  20 66 25 3d 67 25 20 8b  20 66 25 3d 62 25 0d 3b  | f%=g% . f%=b%.;|
00009510  a6 3d 73 24 3d 22 53 65  74 20 74 79 70 65 22 3a  |.=s$="Set type":|
00009520  70 25 21 30 3d 38 3a 70  25 21 34 3d 6d 62 33 25  |p%!0=8:p%!4=mb3%|
00009530  3a 70 25 21 38 3d 66 25  3a 24 28 70 25 2b 31 32  |:p%!8=f%:$(p%+12|
00009540  29 3d 73 24 3a 70 25 2b  3d 32 34 0d 3b b0 37 73  |)=s$:p%+=24.;.7s|
00009550  24 3d 22 53 74 61 6d 70  22 3a 70 25 21 30 3d 30  |$="Stamp":p%!0=0|
00009560  3a 70 25 21 34 3d 30 3a  70 25 21 38 3d 66 25 3a  |:p%!4=0:p%!8=f%:|
00009570  24 28 70 25 2b 31 32 29  3d 73 24 3a 70 25 2b 3d  |$(p%+12)=s$:p%+=|
00009580  32 34 0d 3b ba 2f e7 20  6e 61 6d 65 24 3d 22 21  |24.;./. name$="!|
00009590  54 69 67 65 72 44 61 74  61 22 20 80 20 6f 62 6a  |TigerData" . obj|
000095a0  25 3d 32 20 76 25 3d 30  20 8b 20 76 25 3d 26 38  |%=2 v%=0 . v%=&8|
000095b0  30 0d 3b c4 1a e7 20 6f  62 6a 25 3d 31 20 66 25  |0.;... obj%=1 f%|
000095c0  3d 67 25 20 8b 20 66 25  3d 62 25 0d 3b ce 3d 73  |=g% . f%=b%.;.=s|
000095d0  24 3d 22 4f 70 65 6e 20  66 69 6c 65 72 22 3a 70  |$="Open filer":p|
000095e0  25 21 30 3d 76 25 3a 70  25 21 34 3d 30 3a 70 25  |%!0=v%:p%!4=0:p%|
000095f0  21 38 3d 66 25 3a 24 28  70 25 2b 31 32 29 3d 73  |!8=f%:$(p%+12)=s|
00009600  24 3a 70 25 2b 3d 32 34  0d 3b d8 3b e7 20 76 25  |$:p%+=24.;.;. v%|
00009610  3d 30 20 73 24 3d 22 43  6f 6e 76 65 72 74 22 3a  |=0 s$="Convert":|
00009620  70 25 21 30 3d 26 38 30  3a 70 25 21 34 3d 30 3a  |p%!0=&80:p%!4=0:|
00009630  70 25 21 38 3d 62 25 3a  24 28 70 25 2b 31 32 29  |p%!8=b%:$(p%+12)|
00009640  3d 73 24 0d 3b e2 05 3a  0d 3b ec 36 61 25 3d 6d  |=s$.;..:.;.6a%=m|
00009650  62 34 25 3a 70 25 3d 61  25 2b 32 38 3a 24 61 25  |b4%:p%=a%+28:$a%|
00009660  3d 22 44 69 73 70 6c 61  79 22 3a 66 25 3d 62 25  |="Display":f%=b%|
00009670  3a 77 69 64 25 3d 31 32  2a 31 36 2b 31 32 0d 3b  |:wid%=12*16+12.;|
00009680  f6 2c 61 25 21 31 32 3d  26 37 30 32 30 37 3a 61  |.,a%!12=&70207:a|
00009690  25 21 31 36 3d 77 69 64  25 3a 61 25 21 32 30 3d  |%!16=wid%:a%!20=|
000096a0  34 34 3a 61 25 21 32 34  3d 30 0d 3c 00 1c e7 20  |44:a%!24=0.<... |
000096b0  64 69 73 70 6c 61 79 25  3d 31 20 74 25 3d 31 20  |display%=1 t%=1 |
000096c0  8b 20 74 25 3d 30 0d 3c  0a 3f 73 24 3d 22 44 65  |. t%=0.<.?s$="De|
000096d0  73 63 72 69 70 74 69 6f  6e 73 22 3a 70 25 21 30  |scriptions":p%!0|
000096e0  3d 74 25 3a 70 25 21 34  3d 30 3a 70 25 21 38 3d  |=t%:p%!4=0:p%!8=|
000096f0  66 25 3a 24 28 70 25 2b  31 32 29 3d 73 24 3a 70  |f%:$(p%+12)=s$:p|
00009700  25 2b 3d 32 34 0d 3c 14  1c e7 20 64 69 73 70 6c  |%+=24.<... displ|
00009710  61 79 25 3d 32 20 74 25  3d 31 20 8b 20 74 25 3d  |ay%=2 t%=1 . t%=|
00009720  30 0d 3c 1e 3e 73 24 3d  22 4f 62 6a 65 63 74 20  |0.<.>s$="Object |
00009730  69 6e 66 6f 22 3a 70 25  21 30 3d 74 25 3a 70 25  |info":p%!0=t%:p%|
00009740  21 34 3d 30 3a 70 25 21  38 3d 66 25 3a 24 28 70  |!4=0:p%!8=f%:$(p|
00009750  25 2b 31 32 29 3d 73 24  3a 70 25 2b 3d 32 34 0d  |%+12)=s$:p%+=24.|
00009760  3c 28 1c e7 20 64 69 73  70 6c 61 79 25 3d 33 20  |<(.. display%=3 |
00009770  74 25 3d 31 20 8b 20 74  25 3d 30 0d 3c 32 3b 73  |t%=1 . t%=0.<2;s|
00009780  24 3d 22 4e 65 73 74 65  64 20 73 69 7a 65 22 3a  |$="Nested size":|
00009790  70 25 21 30 3d 26 38 30  2b 74 25 3a 70 25 21 34  |p%!0=&80+t%:p%!4|
000097a0  3d 30 3a 70 25 21 38 3d  66 25 3a 24 28 70 25 2b  |=0:p%!8=f%:$(p%+|
000097b0  31 32 29 3d 73 24 0d 3c  3c 05 3a 0d 3c 46 35 61  |12)=s$.<<.:.<F5a|
000097c0  25 3d 6d 62 36 25 3a 70  25 3d 61 25 2b 32 38 3a  |%=mb6%:p%=a%+28:|
000097d0  24 61 25 3d 22 4f 70 74  69 6f 6e 73 22 3a 66 25  |$a%="Options":f%|
000097e0  3d 62 25 3a 77 69 64 25  3d 37 2a 31 36 2b 31 32  |=b%:wid%=7*16+12|
000097f0  0d 3c 50 2c 61 25 21 31  32 3d 26 37 30 32 30 37  |.<P,a%!12=&70207|
00009800  3a 61 25 21 31 36 3d 77  69 64 25 3a 61 25 21 32  |:a%!16=wid%:a%!2|
00009810  30 3d 34 34 3a 61 25 21  32 34 3d 30 0d 3c 5a 13  |0=44:a%!24=0.<Z.|
00009820  6f 70 74 73 25 3d a4 72  65 61 64 6f 70 74 73 0d  |opts%=.readopts.|
00009830  3c 64 16 74 25 3d 28 6f  70 74 73 25 20 80 20 32  |<d.t%=(opts% . 2|
00009840  29 20 81 20 32 0d 3c 6e  3a 73 24 3d 22 43 6f 6e  |) . 2.<n:s$="Con|
00009850  66 69 72 6d 22 3a 70 25  21 30 3d 74 25 3a 70 25  |firm":p%!0=t%:p%|
00009860  21 34 3d 30 3a 70 25 21  38 3d 66 25 3a 24 28 70  |!4=0:p%!8=f%:$(p|
00009870  25 2b 31 32 29 3d 73 24  3a 70 25 2b 3d 32 34 0d  |%+12)=s$:p%+=24.|
00009880  3c 78 12 74 25 3d 28 6f  70 74 73 25 20 80 20 31  |<x.t%=(opts% . 1|
00009890  29 0d 3c 82 3a 73 24 3d  22 56 65 72 62 6f 73 65  |).<.:s$="Verbose|
000098a0  22 3a 70 25 21 30 3d 74  25 3a 70 25 21 34 3d 30  |":p%!0=t%:p%!4=0|
000098b0  3a 70 25 21 38 3d 66 25  3a 24 28 70 25 2b 31 32  |:p%!8=f%:$(p%+12|
000098c0  29 3d 73 24 3a 70 25 2b  3d 32 34 0d 3c 8c 16 74  |)=s$:p%+=24.<..t|
000098d0  25 3d 28 6f 70 74 73 25  20 80 20 34 29 20 81 20  |%=(opts% . 4) . |
000098e0  34 0d 3c 96 38 73 24 3d  22 46 6f 72 63 65 22 3a  |4.<.8s$="Force":|
000098f0  70 25 21 30 3d 74 25 3a  70 25 21 34 3d 30 3a 70  |p%!0=t%:p%!4=0:p|
00009900  25 21 38 3d 66 25 3a 24  28 70 25 2b 31 32 29 3d  |%!8=f%:$(p%+12)=|
00009910  73 24 3a 70 25 2b 3d 32  34 0d 3c a0 16 74 25 3d  |s$:p%+=24.<..t%=|
00009920  28 6f 70 74 73 25 20 80  20 38 29 20 81 20 38 0d  |(opts% . 8) . 8.|
00009930  3c aa 35 73 24 3d 22 4e  65 77 65 72 22 3a 70 25  |<.5s$="Newer":p%|
00009940  21 30 3d 26 38 30 2b 74  25 3a 70 25 21 34 3d 30  |!0=&80+t%:p%!4=0|
00009950  3a 70 25 21 38 3d 66 25  3a 24 28 70 25 2b 31 32  |:p%!8=f%:$(p%+12|
00009960  29 3d 73 24 0d 3c b4 2d  c8 99 20 22 57 69 6d 70  |)=s$.<.-.. "Wimp|
00009970  5f 43 72 65 61 74 65 4d  65 6e 75 22 2c 2c 6d 62  |_CreateMenu",,mb|
00009980  31 25 2b 34 2c 6d 78 25  2d 36 34 2c 6d 79 25 2b  |1%+4,mx%-64,my%+|
00009990  34 0d 3c be 05 e1 0d 3c  c8 05 3a 0d 3c d2 16 dd  |4.<....<..:.<...|
000099a0  a4 68 65 6c 70 28 6e 61  6d 65 24 2c 6f 62 6a 25  |.help(name$,obj%|
000099b0  29 0d 3c dc 1e e7 20 6f  62 6a 25 3d 32 20 80 20  |).<... obj%=2 . |
000099c0  c0 6e 61 6d 65 24 2c 31  29 3d 22 21 22 20 8c 0d  |.name$,1)="!" ..|
000099d0  3c e6 32 20 e7 20 a4 63  68 65 63 6b 6f 62 6a 28  |<.2 . .checkobj(|
000099e0  64 69 72 24 2b 22 2e 22  2b 6e 61 6d 65 24 2b 22  |dir$+"."+name$+"|
000099f0  2e 22 2b 22 21 48 65 6c  70 22 2c a3 29 20 8c 3d  |."+"!Help",.) .=|
00009a00  b9 0d 3c f0 05 cd 0d 3c  fa 06 3d a3 0d 3d 04 05  |..<....<..=..=..|
00009a10  3a 0d 3d 0e 11 dd f2 73  75 62 6d 65 6e 75 28 71  |:.=....submenu(q|
00009a20  25 29 0d 3d 18 2d ea 20  73 75 62 25 2c 78 25 2c  |%).=.-. sub%,x%,|
00009a30  79 25 3a 73 75 62 25 3d  71 25 21 32 30 3a 78 25  |y%:sub%=q%!20:x%|
00009a40  3d 71 25 21 32 34 3a 79  25 3d 71 25 21 32 38 0d  |=q%!24:y%=q%!28.|
00009a50  3d 22 0d c8 8e 20 73 75  62 25 20 ca 0d 3d 2c 15  |="... sub% ..=,.|
00009a60  20 c9 20 6d 62 33 25 3a  f2 6e 61 6d 65 6d 65 6e  | . mb3%:.namemen|
00009a70  75 0d 3d 36 1c 20 c9 20  6d 62 35 25 3a f2 61 63  |u.=6. . mb5%:.ac|
00009a80  63 65 73 73 6d 65 6e 75  28 a3 2c 31 29 0d 3d 40  |cessmenu(.,1).=@|
00009a90  1c 20 c9 20 73 61 76 65  62 6f 78 25 3a f2 70 72  |. . savebox%:.pr|
00009aa0  65 70 73 61 76 65 62 6f  78 0d 3d 4a 1c 20 c9 20  |epsavebox.=J. . |
00009ab0  6f 62 6a 69 6e 66 6f 25  3a f2 70 72 65 70 6f 62  |objinfo%:.prepob|
00009ac0  6a 69 6e 66 6f 0d 3d 54  1c 20 c9 20 63 6f 70 79  |jinfo.=T. . copy|
00009ad0  62 6f 78 25 3a f2 70 72  65 70 63 6f 70 79 62 6f  |box%:.prepcopybo|
00009ae0  78 0d 3d 5e 22 20 c9 20  63 68 6f 69 63 65 77 69  |x.=^" . choicewi|
00009af0  6e 64 25 3a f2 70 72 65  70 63 68 6f 69 63 65 77  |nd%:.prepchoicew|
00009b00  69 6e 64 0d 3d 68 05 cb  0d 3d 72 27 c8 99 20 22  |ind.=h...=r'.. "|
00009b10  57 69 6d 70 5f 43 72 65  61 74 65 53 75 62 4d 65  |Wimp_CreateSubMe|
00009b20  6e 75 22 2c 2c 73 75 62  25 2c 78 25 2c 79 25 0d  |nu",,sub%,x%,y%.|
00009b30  3d 7c 05 e1 0d 3d 86 05  3a 0d 3d 90 0e dd f2 6e  |=|...=..:.=....n|
00009b40  61 6d 65 6d 65 6e 75 0d  3d 9a 26 ea 20 4a 25 2c  |amemenu.=.&. J%,|
00009b50  78 25 2c 79 25 2c 69 74  65 6d 25 2c 6e 61 6d 65  |x%,y%,item%,name|
00009b60  24 2c 74 79 70 65 25 2c  74 79 70 65 24 0d 3d a4  |$,type%,type$.=.|
00009b70  1d 69 74 65 6d 30 25 3d  71 25 21 33 32 3a 69 74  |.item0%=q%!32:it|
00009b80  65 6d 31 25 3d 71 25 21  33 36 0d 3d ae 22 61 25  |em1%=q%!36.=."a%|
00009b90  3d 6d 62 33 25 3a 70 25  3d 61 25 2b 32 38 3a 77  |=mb3%:p%=a%+28:w|
00009ba0  69 64 25 3d 31 32 2a 31  36 2b 31 36 0d 3d b8 18  |id%=12*16+16.=..|
00009bb0  6e 61 6d 65 24 3d 6c 65  61 66 24 28 63 68 6f 73  |name$=leaf$(chos|
00009bc0  65 6e 25 29 0d 3d c2 12  6f 6c 64 6e 61 6d 65 24  |en%).=..oldname$|
00009bd0  3d 6e 61 6d 65 24 0d 3d  cc 0f c8 8e 20 69 74 65  |=name$.=.... ite|
00009be0  6d 31 25 20 ca 0d 3d d6  1f 20 c9 2d 31 3a e7 20  |m1% ..=.. .-1:. |
00009bf0  69 74 65 6d 30 25 3d 35  20 24 61 25 3d 22 4e 61  |item0%=5 $a%="Na|
00009c00  6d 65 3a 22 0d 3d e0 24  20 c9 20 31 3a 24 61 25  |me:".=.$ . 1:$a%|
00009c10  3d 22 4e 61 6d 65 3a 22  3a 24 6e 65 77 6e 61 6d  |="Name:":$newnam|
00009c20  65 25 3d 6e 61 6d 65 24  0d 3d ea 19 20 c9 20 37  |e%=name$.=.. . 7|
00009c30  3a 24 61 25 3d 22 46 69  6e 64 20 66 69 6c 65 3a  |:$a%="Find file:|
00009c40  22 0d 3d f4 08 20 c9 20  38 0d 3d fe 0e 20 73 65  |".=.. . 8.=.. se|
00009c50  6c 25 3d a4 73 65 6c 0d  3e 08 23 20 e7 20 73 65  |l%=.sel.>.# . se|
00009c60  6c 25 3e 31 20 6e 61 6d  65 24 3d 24 6e 61 6d 65  |l%>1 name$=$name|
00009c70  25 28 73 65 6c 25 28 31  29 29 0d 3e 12 22 20 6f  |%(sel%(1)).>." o|
00009c80  62 6a 25 3d a4 6f 62 6a  74 79 70 65 28 64 69 72  |bj%=.objtype(dir|
00009c90  24 2b 22 2e 22 2b 6e 61  6d 65 24 29 0d 3e 1c 0f  |$+"."+name$).>..|
00009ca0  20 e7 20 6f 62 6a 25 3d  31 20 8c 0d 3e 26 25 20  | . obj%=1 ..>&% |
00009cb0  20 74 79 70 65 25 3d a4  66 69 6c 65 74 79 70 65  | type%=.filetype|
00009cc0  28 64 69 72 24 2b 22 2e  22 2b 6e 61 6d 65 24 29  |(dir$+"."+name$)|
00009cd0  0d 3e 30 28 20 20 74 79  70 65 24 3d a4 73 74 72  |.>0(  type$=.str|
00009ce0  69 70 28 a4 66 69 6c 65  74 79 70 65 6e 61 6d 65  |ip(.filetypename|
00009cf0  28 74 79 70 65 25 29 29  0d 3e 3a 06 20 cc 0d 3e  |(type%)).>:. ..>|
00009d00  44 0e 20 20 74 79 70 65  24 3d 22 22 0d 3e 4e 06  |D.  type$="".>N.|
00009d10  20 cd 0d 3e 58 23 20 24  61 25 3d 22 53 65 74 20  | ..>X# $a%="Set |
00009d20  74 79 70 65 22 3a 24 6e  65 77 6e 61 6d 65 25 3d  |type":$newname%=|
00009d30  74 79 70 65 24 0d 3e 62  05 cb 0d 3e 6c 37 61 25  |type$.>b...>l7a%|
00009d40  21 31 32 3d 26 37 30 32  30 37 3a 61 25 21 31 36  |!12=&70207:a%!16|
00009d50  3d 31 37 36 3a 61 25 21  32 30 3d 34 34 3a 61 25  |=176:a%!20=44:a%|
00009d60  21 32 34 3d 30 3a 66 25  3d 26 37 30 30 30 31 32  |!24=0:f%=&700012|
00009d70  31 0d 3e 76 42 70 25 21  30 3d 26 38 34 3a 70 25  |1.>vBp%!0=&84:p%|
00009d80  21 34 3d 30 3a 70 25 21  38 3d 66 25 3a 70 25 21  |!4=0:p%!8=f%:p%!|
00009d90  31 32 3d 6e 65 77 6e 61  6d 65 25 3a 70 25 21 31  |12=newname%:p%!1|
00009da0  36 3d 76 61 6c 6e 61 6d  65 25 3a 70 25 21 32 30  |6=valname%:p%!20|
00009db0  3d 31 31 0d 3e 80 05 e1  0d 3e 8a 05 3a 0d 3e 94  |=11.>....>..:.>.|
00009dc0  16 dd f2 62 61 72 6d 65  6e 75 28 6d 78 25 2c 6d  |...barmenu(mx%,m|
00009dd0  79 25 29 0d 3e 9e 39 ea  20 66 25 2c 62 25 2c 67  |y%).>.9. f%,b%,g|
00009de0  25 3a 62 25 3d 26 37 30  30 30 30 32 31 3a 67 25  |%:b%=&7000021:g%|
00009df0  3d 26 37 34 30 30 30 32  31 3a f4 20 66 6c 61 67  |=&7400021:. flag|
00009e00  73 3d 62 6c 61 63 6b 2c  67 72 65 79 0d 3e a8 1c  |s=black,grey.>..|
00009e10  72 65 6d 78 25 3d 6d 78  25 3a 72 65 6d 79 25 3d  |remx%=mx%:remy%=|
00009e20  6d 79 25 3a 69 25 3d 30  0d 3e b2 2f 61 25 3d 6d  |my%:i%=0.>./a%=m|
00009e30  62 31 25 3a 21 61 25 3d  62 61 72 69 63 6f 6e 25  |b1%:!a%=baricon%|
00009e40  3a 70 25 3d 61 25 2b 33  32 3a 24 28 61 25 2b 34  |:p%=a%+32:$(a%+4|
00009e50  29 3d 74 61 73 6b 24 0d  3e bc 2b 61 25 21 31 36  |)=task$.>.+a%!16|
00009e60  3d 26 37 30 32 30 37 3a  61 25 21 32 30 3d 31 32  |=&70207:a%!20=12|
00009e70  38 3a 61 25 21 32 34 3d  34 34 3a 61 25 21 32 38  |8:a%!24=44:a%!28|
00009e80  3d 30 0d 3e c6 40 73 24  3d 22 49 6e 66 6f 22 3a  |=0.>.@s$="Info":|
00009e90  70 25 21 30 3d 30 3a 70  25 21 34 3d 69 6e 66 6f  |p%!0=0:p%!4=info|
00009ea0  25 3a 70 25 21 38 3d 62  25 3a 24 28 70 25 2b 31  |%:p%!8=b%:$(p%+1|
00009eb0  32 29 3d 73 24 3a 70 25  2b 3d 32 34 3a 69 25 2b  |2)=s$:p%+=24:i%+|
00009ec0  3d 31 0d 3e d0 1d e7 20  70 72 69 73 74 69 6e 65  |=1.>... pristine|
00009ed0  25 20 66 25 3d 67 25 20  8b 20 66 25 3d 62 25 0d  |% f%=g% . f%=b%.|
00009ee0  3e da 49 73 24 3d 22 43  68 6f 69 63 65 73 22 3a  |>.Is$="Choices":|
00009ef0  70 25 21 30 3d 38 3a 70  25 21 34 3d 63 68 6f 69  |p%!0=8:p%!4=choi|
00009f00  63 65 77 69 6e 64 25 3a  70 25 21 38 3d 66 25 3a  |cewind%:p%!8=f%:|
00009f10  24 28 70 25 2b 31 32 29  3d 73 24 3a 70 25 2b 3d  |$(p%+12)=s$:p%+=|
00009f20  32 34 3a 69 25 2b 3d 31  0d 3e e4 37 73 24 3d 22  |24:i%+=1.>.7s$="|
00009f30  51 75 69 74 22 3a 70 25  21 30 3d 26 38 30 3a 70  |Quit":p%!0=&80:p|
00009f40  25 21 34 3d 30 3a 70 25  21 38 3d 62 25 3a 24 28  |%!4=0:p%!8=b%:$(|
00009f50  70 25 2b 31 32 29 3d 73  24 3a 69 25 2b 3d 31 0d  |p%+12)=s$:i%+=1.|
00009f60  3e ee 30 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |>.0.. "Wimp_Crea|
00009f70  74 65 4d 65 6e 75 22 2c  2c 6d 62 31 25 2b 34 2c  |teMenu",,mb1%+4,|
00009f80  6d 78 25 2d 36 34 2c 39  36 2b 69 25 2a 34 34 0d  |mx%-64,96+i%*44.|
00009f90  3e f8 05 e1 0d 3f 02 05  3a 0d 3f 0c 0f dd f2 63  |>....?..:.?....c|
00009fa0  6c 6f 73 65 6d 65 6e 75  0d 3f 16 1c c8 99 20 22  |losemenu.?.... "|
00009fb0  57 69 6d 70 5f 43 72 65  61 74 65 4d 65 6e 75 22  |Wimp_CreateMenu"|
00009fc0  2c 2c 2d 31 0d 3f 20 05  e1 0d 3f 2a 05 3a 0d 3f  |,,-1.? ...?*.:.?|
00009fd0  34 14 dd f2 6d 65 6e 75  73 65 6c 65 63 74 28 71  |4...menuselect(q|
00009fe0  25 29 0d 3f 3e 25 f4 20  63 6c 69 63 6b 20 6f 6e  |%).?>%. click on|
00009ff0  20 6d 65 6e 75 20 66 72  6f 6d 20 70 6f 6c 6c 69  | menu from polli|
0000a000  6e 67 20 6c 6f 6f 70 0d  3f 48 34 6c 65 76 65 6c  |ng loop.?H4level|
0000a010  30 25 3d 71 25 21 30 3a  6c 65 76 65 6c 31 25 3d  |0%=q%!0:level1%=|
0000a020  71 25 21 34 3a 6c 65 76  65 6c 32 25 3d 71 25 21  |q%!4:level2%=q%!|
0000a030  38 3a 77 68 25 3d 21 6d  62 31 25 0d 3f 52 2d c8  |8:wh%=!mb1%.?R-.|
0000a040  99 20 22 57 69 6d 70 5f  47 65 74 50 6f 69 6e 74  |. "Wimp_GetPoint|
0000a050  65 72 49 6e 66 6f 22 2c  2c 71 25 3a 73 74 61 79  |erInfo",,q%:stay|
0000a060  25 3d 71 25 21 38 3d 31  0d 3f 5c 0c c8 8e 20 77  |%=q%!8=1.?\... w|
0000a070  68 25 20 ca 0d 3f 66 18  20 c9 20 6d 61 69 6e 25  |h% ..?f. . main%|
0000a080  3a f2 6d 61 69 6e 63 68  6f 69 63 65 0d 3f 70 12  |:.mainchoice.?p.|
0000a090  20 7f 20 3a f2 62 61 72  63 68 6f 69 63 65 0d 3f  | . :.barchoice.?|
0000a0a0  7a 05 cb 0d 3f 84 05 e1  0d 3f 8e 05 3a 0d 3f 98  |z...?....?..:.?.|
0000a0b0  10 dd f2 6d 61 69 6e 63  68 6f 69 63 65 0d 3f a2  |...mainchoice.?.|
0000a0c0  18 f4 20 63 6c 69 63 6b  20 6f 6e 20 6d 61 69 6e  |.. click on main|
0000a0d0  20 6d 65 6e 75 0d 3f ac  10 c8 8e 20 6c 65 76 65  | menu.?.... leve|
0000a0e0  6c 30 25 20 ca 0d 3f b6  09 20 c9 20 30 3a 0d 3f  |l0% ..?.. . 0:.?|
0000a0f0  c0 11 20 c8 8e 20 6c 65  76 65 6c 31 25 20 ca 0d  |.. .. level1% ..|
0000a100  3f ca 13 20 20 c9 20 2d  31 3a f2 72 65 66 72 65  |?..  . -1:.refre|
0000a110  73 68 0d 3f d4 1e 20 20  c9 20 20 30 3a 64 69 73  |sh.?..  .  0:dis|
0000a120  70 6c 61 79 25 3d 31 3a  f2 72 65 66 72 65 73 68  |play%=1:.refresh|
0000a130  0d 3f de 1e 20 20 c9 20  20 31 3a 64 69 73 70 6c  |.?..  .  1:displ|
0000a140  61 79 25 3d 32 3a f2 72  65 66 72 65 73 68 0d 3f  |ay%=2:.refresh.?|
0000a150  e8 1e 20 20 c9 20 20 32  3a 64 69 73 70 6c 61 79  |..  .  2:display|
0000a160  25 3d 33 3a f2 72 65 66  72 65 73 68 0d 3f f2 06  |%=3:.refresh.?..|
0000a170  20 cb 0d 3f fc 09 20 c9  20 31 3a 0d 40 06 11 20  | ..?.. . 1:.@.. |
0000a180  c8 8e 20 6c 65 76 65 6c  31 25 20 ca 0d 40 10 1d  |.. level1% ..@..|
0000a190  20 20 c9 20 30 3a f4 20  43 6f 70 79 20 28 64 72  |  . 0:. Copy (dr|
0000a1a0  61 67 2f 63 6c 69 63 6b  29 0d 40 1a 09 20 20 c9  |ag/click).@..  .|
0000a1b0  20 31 0d 40 24 2e 20 20  e7 20 6c 65 76 65 6c 32  | 1.@$.  . level2|
0000a1c0  25 3e 3d 30 20 f2 72 65  6e 61 6d 65 28 6f 6c 64  |%>=0 .rename(old|
0000a1d0  6e 61 6d 65 24 2c 24 6e  65 77 6e 61 6d 65 25 29  |name$,$newname%)|
0000a1e0  0d 40 2e 11 20 20 c9 20  32 3a f2 64 65 6c 65 74  |.@..  . 2:.delet|
0000a1f0  65 0d 40 38 21 20 20 c9  20 33 3a e7 20 6c 65 76  |e.@8!  . 3:. lev|
0000a200  65 6c 32 25 3e 3d 30 20  f2 61 63 63 65 73 73 28  |el2%>=0 .access(|
0000a210  31 29 0d 40 42 10 20 20  c9 20 34 3a f2 63 6f 75  |1).@B.  . 4:.cou|
0000a220  6e 74 0d 40 4c 0f 20 20  c9 20 35 3a f2 68 65 6c  |nt.@L.  . 5:.hel|
0000a230  70 0d 40 56 10 20 20 c9  20 36 3a f4 20 49 6e 66  |p.@V.  . 6:. Inf|
0000a240  6f 0d 40 60 27 20 20 c9  20 37 3a e7 20 6c 65 76  |o.@`'  . 7:. lev|
0000a250  65 6c 32 25 3e 3d 30 20  f2 66 69 6e 64 28 24 6e  |el2%>=0 .find($n|
0000a260  65 77 6e 61 6d 65 25 29  0d 40 6a 1f 20 20 c9 20  |ewname%).@j.  . |
0000a270  38 3a e7 20 6c 65 76 65  6c 32 25 3e 3d 30 20 f2  |8:. level2%>=0 .|
0000a280  73 65 74 74 79 70 65 0d  40 74 10 20 20 c9 20 39  |settype.@t.  . 9|
0000a290  3a f2 73 74 61 6d 70 0d  40 7e 36 20 20 c9 31 30  |:.stamp.@~6  .10|
0000a2a0  3a ff 28 22 46 69 6c 65  72 5f 4f 70 65 6e 44 69  |:.("Filer_OpenDi|
0000a2b0  72 20 22 2b 64 69 72 24  2b 22 2e 22 2b 24 6e 61  |r "+dir$+"."+$na|
0000a2c0  6d 65 25 28 63 68 6f 73  65 6e 25 29 29 0d 40 88  |me%(chosen%)).@.|
0000a2d0  12 20 20 c9 31 31 3a f2  63 6f 6e 76 65 72 74 0d  |.  .11:.convert.|
0000a2e0  40 92 06 20 cb 0d 40 9c  13 20 c9 20 32 3a f2 73  |@.. ..@.. . 2:.s|
0000a2f0  65 6c 65 63 74 61 6c 6c  0d 40 a6 12 20 c9 20 33  |electall.@.. . 3|
0000a300  3a f2 63 6c 65 61 72 61  6c 6c 0d 40 b0 08 20 c9  |:.clearall.@.. .|
0000a310  20 34 0d 40 ba 11 20 c8  8e 20 6c 65 76 65 6c 31  | 4.@.. .. level1|
0000a320  25 20 ca 0d 40 c4 19 20  20 c9 20 30 3a 6f 70 74  |% ..@..  . 0:opt|
0000a330  73 25 3d 6f 70 74 73 25  20 82 20 32 0d 40 ce 19  |s%=opts% . 2.@..|
0000a340  20 20 c9 20 31 3a 6f 70  74 73 25 3d 6f 70 74 73  |  . 1:opts%=opts|
0000a350  25 20 82 20 31 0d 40 d8  19 20 20 c9 20 32 3a 6f  |% . 1.@..  . 2:o|
0000a360  70 74 73 25 3d 6f 70 74  73 25 20 82 20 34 0d 40  |pts%=opts% . 4.@|
0000a370  e2 19 20 20 c9 20 33 3a  6f 70 74 73 25 3d 6f 70  |..  . 3:opts%=op|
0000a380  74 73 25 20 82 20 38 0d  40 ec 06 20 cb 0d 40 f6  |ts% . 8.@.. ..@.|
0000a390  0d 20 f2 73 65 74 6f 70  74 73 0d 41 00 27 20 c9  |. .setopts.A.' .|
0000a3a0  20 35 3a e7 20 6c 65 76  65 6c 31 25 3d 30 20 f2  | 5:. level1%=0 .|
0000a3b0  6e 65 77 64 69 72 28 24  6e 65 77 6e 61 6d 65 25  |newdir($newname%|
0000a3c0  29 0d 41 0a 16 20 c9 20  36 3a f2 76 69 65 77 65  |).A.. . 6:.viewe|
0000a3d0  72 28 64 69 72 24 29 0d  41 14 16 20 c9 20 37 3a  |r(dir$).A.. . 7:|
0000a3e0  f2 70 61 72 65 6e 74 28  64 69 72 24 29 0d 41 1e  |.parent(dir$).A.|
0000a3f0  12 20 c9 20 38 3a f2 73  61 76 65 64 61 74 61 0d  |. . 8:.savedata.|
0000a400  41 28 2e 20 c9 20 39 3a  f2 70 72 65 70 73 61 76  |A(. . 9:.prepsav|
0000a410  65 62 6f 78 3a f2 6f 77  28 73 61 76 65 62 6f 78  |ebox:.ow(savebox|
0000a420  25 29 3a f2 63 6c 6f 73  65 6d 65 6e 75 0d 41 32  |%):.closemenu.A2|
0000a430  24 20 20 20 20 20 20 20  20 f2 63 61 72 65 74 28  |$        .caret(|
0000a440  73 61 76 65 62 6f 78 25  2c 66 6e 69 63 6f 6e 25  |savebox%,fnicon%|
0000a450  29 0d 41 3c 17 20 c9 31  30 3a f2 6f 77 28 62 75  |).A<. .10:.ow(bu|
0000a460  66 66 77 69 6e 64 25 29  0d 41 46 26 20 c9 31 31  |ffwind%).AF& .11|
0000a470  3a e7 20 75 6e 64 6f 25  20 f2 75 6e 64 6f 20 8b  |:. undo% .undo .|
0000a480  20 e7 20 72 65 64 6f 25  20 f2 72 65 64 6f 0d 41  | . redo% .redo.A|
0000a490  50 05 cb 0d 41 5a 2a e7  20 73 74 61 79 25 20 f2  |P...AZ*. stay% .|
0000a4a0  6d 61 69 6e 6d 65 6e 75  28 72 65 6d 78 25 2c 72  |mainmenu(remx%,r|
0000a4b0  65 6d 79 25 2c 63 68 6f  73 65 6e 25 29 0d 41 64  |emy%,chosen%).Ad|
0000a4c0  05 e1 0d 41 6e 05 3a 0d  41 78 10 dd f2 6e 65 77  |...An.:.Ax...new|
0000a4d0  64 69 72 28 64 24 29 0d  41 82 1a ff 28 22 43 44  |dir(d$).A...("CD|
0000a4e0  69 72 20 22 2b 64 69 72  24 2b 22 2e 22 2b 64 24  |ir "+dir$+"."+d$|
0000a4f0  29 0d 41 8c 05 e1 0d 41  96 05 3a 0d 41 a0 0f dd  |).A....A..:.A...|
0000a500  f2 62 61 72 63 68 6f 69  63 65 0d 41 aa 10 c8 8e  |.barchoice.A....|
0000a510  20 6c 65 76 65 6c 30 25  20 ca 0d 41 b4 29 20 c9  | level0% ..A.) .|
0000a520  20 31 3a f2 70 72 65 70  63 68 6f 69 63 65 77 69  | 1:.prepchoicewi|
0000a530  6e 64 3a f2 6f 77 28 63  68 6f 69 63 65 77 69 6e  |nd:.ow(choicewin|
0000a540  64 25 29 0d 41 be 14 20  c9 20 32 3a 71 75 69 74  |d%).A.. . 2:quit|
0000a550  25 3d a4 71 75 69 74 0d  41 c8 05 cb 0d 41 d2 21  |%=.quit.A....A.!|
0000a560  e7 20 73 74 61 79 25 20  f2 62 61 72 6d 65 6e 75  |. stay% .barmenu|
0000a570  28 72 65 6d 78 25 2c 72  65 6d 79 25 29 0d 41 dc  |(remx%,remy%).A.|
0000a580  05 e1 0d 41 e6 05 3a 0d  41 f0 0b f4 2d 2d 2d 2d  |...A..:.A...----|
0000a590  2d 2d 0d 41 fa 0b f4 2e  20 4c 4f 41 44 0d 42 04  |--.A.... LOAD.B.|
0000a5a0  0b f4 2d 2d 2d 2d 2d 2d  0d 42 0e 05 3a 0d 42 18  |..------.B..:.B.|
0000a5b0  12 dd f2 64 61 74 61 6c  6f 61 64 28 71 25 29 0d  |...dataload(q%).|
0000a5c0  42 22 13 ea 20 77 68 25  3a 77 68 25 3d 71 25 21  |B".. wh%:wh%=q%!|
0000a5d0  32 30 0d 42 2c 16 f4 20  73 65 6e 64 20 44 61 74  |20.B,.. send Dat|
0000a5e0  61 4c 6f 61 64 41 63 6b  0d 42 36 3f 71 25 21 31  |aLoadAck.B6?q%!1|
0000a5f0  32 3d 71 25 21 38 3a 71  25 21 31 36 3d 34 3a 71  |2=q%!8:q%!16=4:q|
0000a600  25 21 30 3d 36 34 3a c8  99 20 22 57 69 6d 70 5f  |%!0=64:.. "Wimp_|
0000a610  53 65 6e 64 4d 65 73 73  61 67 65 22 2c 31 37 2c  |SendMessage",17,|
0000a620  71 25 2c 71 25 21 34 0d  42 40 29 7a 25 2b 3d 31  |q%,q%!4.B@)z%+=1|
0000a630  3a e7 20 7a 25 3e 31 20  e1 3a f4 20 64 6f 6e 27  |:. z%>1 .:. don'|
0000a640  74 20 77 61 6e 74 20 73  65 6c 65 63 74 69 6f 6e  |t want selection|
0000a650  0d 42 4a 41 70 61 74 68  24 3d a4 6e 61 6d 65 28  |.BJApath$=.name(|
0000a660  71 25 2b 34 34 29 3a 74  79 70 65 25 3d 71 25 21  |q%+44):type%=q%!|
0000a670  34 30 3a 64 69 72 25 3d  74 79 70 65 25 3d 26 31  |40:dir%=type%=&1|
0000a680  30 30 30 20 84 20 74 79  70 65 25 3d 26 32 30 30  |000 . type%=&200|
0000a690  30 0d 42 54 32 e7 20 77  68 25 3d 62 75 66 66 77  |0.BT2. wh%=buffw|
0000a6a0  69 6e 64 25 20 f2 64 72  61 67 66 69 6c 65 74 6f  |ind% .dragfileto|
0000a6b0  62 75 66 66 28 70 61 74  68 24 2c 74 79 70 65 25  |buff(path$,type%|
0000a6c0  29 3a e1 0d 42 5e 13 e7  20 a4 70 72 6f 6d 70 74  |):..B^.. .prompt|
0000a6d0  73 61 76 65 20 8c 0d 42  68 22 20 e7 20 73 65 6e  |save ..Bh" . sen|
0000a6e0  64 65 72 25 3d 74 61 73  6b 25 20 80 20 77 68 25  |der%=task% . wh%|
0000a6f0  3d 6d 61 69 6e 25 20 8c  0d 42 72 21 20 20 f2 63  |=main% ..Br!  .c|
0000a700  6f 70 79 28 a4 70 61 72  65 6e 74 28 70 61 74 68  |opy(.parent(path|
0000a710  24 29 2c 72 65 6d 62 25  29 0d 42 7c 06 20 cd 0d  |$),remb%).B|. ..|
0000a720  42 86 34 20 e7 20 28 73  65 6e 64 65 72 25 3d 74  |B.4 . (sender%=t|
0000a730  61 73 6b 25 20 80 20 77  68 25 3d 2d 32 29 20 84  |ask% . wh%=-2) .|
0000a740  20 28 73 65 6e 64 65 72  25 3c 3e 74 61 73 6b 25  | (sender%<>task%|
0000a750  29 20 8c 0d 42 90 35 20  20 e7 20 a6 2d 31 20 80  |) ..B.5  . .-1 .|
0000a760  20 64 69 72 25 20 8c 20  64 69 72 24 3d 70 61 74  | dir% . dir$=pat|
0000a770  68 24 20 8b 20 64 69 72  24 3d a4 70 61 72 65 6e  |h$ . dir$=.paren|
0000a780  74 28 70 61 74 68 24 29  0d 42 9a 38 20 20 77 69  |t(path$).B.8  wi|
0000a790  6e 64 6f 77 73 74 61 74  65 25 3d 31 3a e7 20 70  |ndowstate%=1:. p|
0000a7a0  72 69 73 74 69 6e 65 25  20 77 69 6e 64 6f 77 73  |ristine% windows|
0000a7b0  74 61 74 65 25 3d 32 3a  f4 20 63 65 6e 74 72 65  |tate%=2:. centre|
0000a7c0  0d 42 a4 11 20 20 70 72  69 73 74 69 6e 65 25 3d  |.B..  pristine%=|
0000a7d0  a3 0d 42 ae 1e 20 20 f2  73 68 6f 77 54 69 67 65  |..B..  .showTige|
0000a7e0  72 28 77 69 6e 64 6f 77  73 74 61 74 65 25 29 0d  |r(windowstate%).|
0000a7f0  42 b8 06 20 cd 0d 42 c2  05 cd 0d 42 cc 05 e1 0d  |B.. ..B....B....|
0000a800  42 d6 05 3a 0d 42 e0 1d  dd f2 73 68 6f 77 54 69  |B..:.B....showTi|
0000a810  67 65 72 28 77 69 6e 64  6f 77 73 74 61 74 65 25  |ger(windowstate%|
0000a820  29 0d 42 ea 07 ea 20 85  0d 42 f4 27 ee 20 85 20  |).B... ..B.'. . |
0000a830  ea 20 61 6e 73 25 3d a4  6c 6f 63 61 6c 65 72 72  |. ans%=.localerr|
0000a840  6f 72 28 64 69 72 24 2c  f6 24 2c 9f 29 3a e1 0d  |or(dir$,.$,.):..|
0000a850  42 fe 0e f2 63 77 28 6d  61 69 6e 25 29 0d 43 08  |B...cw(main%).C.|
0000a860  15 c8 99 20 22 48 6f 75  72 67 6c 61 73 73 5f 4f  |... "Hourglass_O|
0000a870  6e 22 0d 43 12 1f f2 72  65 61 64 66 69 6c 65 73  |n".C...readfiles|
0000a880  28 64 69 72 24 2c 64 69  73 70 6c 61 79 25 2c 31  |(dir$,display%,1|
0000a890  29 0d 43 1c 0b f2 6e 6f  73 74 61 72 0d 43 26 2e  |).C...nostar.C&.|
0000a8a0  f2 69 74 28 73 61 76 65  62 6f 78 25 2c 66 6e 69  |.it(savebox%,fni|
0000a8b0  63 6f 6e 25 2c 64 69 72  24 2b 22 2e 22 2b 22 54  |con%,dir$+"."+"T|
0000a8c0  69 67 65 72 54 65 78 74  22 29 0d 43 30 2e e7 20  |igerText").C0.. |
0000a8d0  64 69 73 70 6c 61 79 25  3d 32 20 65 78 74 65 6e  |display%=2 exten|
0000a8e0  74 25 3d 31 31 32 30 20  8b 20 65 78 74 65 6e 74  |t%=1120 . extent|
0000a8f0  25 3d 77 69 64 74 68 25  0d 43 3a 30 f2 73 65 74  |%=width%.C:0.set|
0000a900  65 78 74 65 6e 74 28 6d  61 69 6e 25 2c 2d 28 28  |extent(main%,-((|
0000a910  69 74 65 6d 73 25 2b 31  29 2a 34 34 29 2d 38 2c  |items%+1)*44)-8,|
0000a920  65 78 74 65 6e 74 25 29  0d 43 44 1b f2 73 65 74  |extent%).CD..set|
0000a930  62 75 74 74 6f 6e 74 79  70 65 73 28 69 74 65 6d  |buttontypes(item|
0000a940  73 25 29 0d 43 4e 15 c8  8e 20 77 69 6e 64 6f 77  |s%).CN... window|
0000a950  73 74 61 74 65 25 20 ca  0d 43 58 0a 20 c9 20 30  |state% ..CX. . 0|
0000a960  3a e1 0d 43 62 13 20 c9  20 31 3a f2 6f 77 28 6d  |:..Cb. . 1:.ow(m|
0000a970  61 69 6e 25 29 0d 43 6c  20 20 c9 20 32 3a f2 6f  |ain%).Cl  . 2:.o|
0000a980  77 63 28 6d 61 69 6e 25  29 3a f4 20 69 6e 20 63  |wc(main%):. in c|
0000a990  65 6e 74 72 65 0d 43 76  05 cb 0d 43 80 18 f2 63  |entre.Cv...C...c|
0000a9a0  61 72 65 74 78 28 6d 61  69 6e 25 2c 31 35 36 2c  |aretx(main%,156,|
0000a9b0  30 29 0d 43 8a 2f e7 20  64 69 73 70 6c 61 79 25  |0).C./. display%|
0000a9c0  3d 31 20 80 20 69 74 65  6d 73 25 3e 30 20 f2 63  |=1 . items%>0 .c|
0000a9d0  61 72 65 74 78 28 6d 61  69 6e 25 2c 37 39 2c 30  |aretx(main%,79,0|
0000a9e0  29 0d 43 94 18 c8 99 20  22 48 6f 75 72 67 6c 61  |).C.... "Hourgla|
0000a9f0  73 73 5f 53 6d 61 73 68  22 0d 43 9e 05 e1 0d 43  |ss_Smash".C....C|
0000aa00  a8 05 3a 0d 43 b2 19 dd  a4 6c 6f 61 64 54 69 67  |..:.C....loadTig|
0000aa10  65 72 44 61 74 61 28 66  73 70 24 29 0d 43 bc 2c  |erData(fsp$).C.,|
0000aa20  f4 20 6c 6f 61 64 73 20  54 69 67 65 72 44 61 74  |. loads TigerDat|
0000aa30  61 20 66 69 6c 65 20 69  6e 74 6f 20 6d 65 6d 6f  |a file into memo|
0000aa40  72 79 20 61 74 20 41 25  0d 43 c6 24 f4 20 70 6c  |ry at A%.C.$. pl|
0000aa50  61 63 65 73 20 6e 61 6d  65 20 61 6e 64 20 64 65  |aces name and de|
0000aa60  73 63 20 69 6e 20 61 72  72 61 79 73 0d 43 d0 2a  |sc in arrays.C.*|
0000aa70  f4 20 72 65 74 75 72 6e  73 20 6e 75 6d 62 65 72  |. returns number|
0000aa80  20 6f 66 20 69 74 65 6d  73 20 69 6e 20 54 69 67  | of items in Tig|
0000aa90  65 72 44 61 74 61 0d 43  da 05 3a 0d 43 e4 25 ea  |erData.C..:.C.%.|
0000aaa0  20 4a 25 2c 73 24 2c 66  69 6c 65 6c 65 6e 25 2c  | J%,s$,filelen%,|
0000aab0  6f 6b 25 2c 73 25 2c 64  65 73 63 73 25 2c 70 25  |ok%,s%,descs%,p%|
0000aac0  0d 43 ee 2f f4 20 67 65  74 20 6c 65 6e 67 74 68  |.C./. get length|
0000aad0  20 6f 66 20 66 69 6c 65  20 61 6e 64 20 69 6e 63  | of file and inc|
0000aae0  72 65 61 73 65 20 73 6c  6f 74 20 73 69 7a 65 0d  |rease slot size.|
0000aaf0  43 f8 26 c8 99 20 22 4f  53 5f 46 69 6c 65 22 2c  |C.&.. "OS_File",|
0000ab00  35 2c 66 73 70 24 20 b8  20 2c 2c 2c 2c 66 69 6c  |5,fsp$ . ,,,,fil|
0000ab10  65 6c 65 6e 25 0d 44 02  2b 6f 6b 25 3d a4 73 65  |elen%.D.+ok%=.se|
0000ab20  74 73 6c 6f 74 73 69 7a  65 28 72 65 6d 73 6c 6f  |tslotsize(remslo|
0000ab30  74 73 69 7a 65 25 2b 66  69 6c 65 6c 65 6e 25 29  |tsize%+filelen%)|
0000ab40  0d 44 0c 3d e7 20 ac 20  6f 6b 25 20 61 6e 73 25  |.D.=. . ok% ans%|
0000ab50  3d a4 6d 73 67 28 22 4e  6f 20 6d 65 6d 6f 72 79  |=.msg("No memory|
0000ab60  20 74 6f 20 6c 6f 61 64  20 54 69 67 65 72 44 61  | to load TigerDa|
0000ab70  74 61 22 2c 22 43 61 6e  63 65 6c 22 29 0d 44 16  |ta","Cancel").D.|
0000ab80  1a e7 20 66 69 6c 65 6c  65 6e 25 3d 30 20 84 20  |.. filelen%=0 . |
0000ab90  ac 20 6f 6b 25 20 8c 0d  44 20 0d 20 64 65 73 63  |. ok% ..D . desc|
0000aba0  73 25 3d 30 0d 44 2a 05  cc 0d 44 34 22 20 f4 20  |s%=0.D*...D4" . |
0000abb0  6c 6f 61 64 20 66 69 6c  65 20 69 6e 74 6f 20 6d  |load file into m|
0000abc0  65 6d 6f 72 79 20 61 74  20 41 25 0d 44 3e 1f 20  |emory at A%.D>. |
0000abd0  c8 99 20 22 4f 53 5f 46  69 6c 65 22 2c 26 46 46  |.. "OS_File",&FF|
0000abe0  2c 66 73 70 24 2c 41 25  2c 30 0d 44 48 1b 20 f4  |,fsp$,A%,0.DH. .|
0000abf0  20 67 65 74 20 64 61 74  61 20 69 6e 74 6f 20 61  | get data into a|
0000ac00  72 72 61 79 73 0d 44 52  1a 20 6e 61 6d 65 24 28  |rrays.DR. name$(|
0000ac10  29 3d 22 22 3a 64 65 73  63 24 28 29 3d 22 22 0d  |)="":desc$()="".|
0000ac20  44 5c 0f 20 4a 25 3d 31  3a 70 25 3d 41 25 0d 44  |D\. J%=1:p%=A%.D|
0000ac30  66 06 20 f5 0d 44 70 1e  20 20 73 24 3d a4 6e 61  |f. ..Dp.  s$=.na|
0000ac40  6d 65 28 70 25 29 3a 73  25 3d a7 73 24 2c 22 20  |me(p%):s%=.s$," |
0000ac50  22 29 0d 44 7a 19 20 20  6e 61 6d 65 24 28 4a 25  |").Dz.  name$(J%|
0000ac60  29 3d c0 73 24 2c 73 25  2d 31 29 0d 44 84 1b 20  |)=.s$,s%-1).D.. |
0000ac70  20 64 65 73 63 24 28 4a  25 29 3d c2 73 24 2c a9  | desc$(J%)=.s$,.|
0000ac80  73 24 2d 73 25 29 0d 44  8e 15 20 20 4a 25 2b 3d  |s$-s%).D..  J%+=|
0000ac90  31 3a 70 25 2b 3d a9 73  24 2b 31 0d 44 98 16 20  |1:p%+=.s$+1.D.. |
0000aca0  fd 20 70 25 3e 3d 41 25  2b 66 69 6c 65 6c 65 6e  |. p%>=A%+filelen|
0000acb0  25 0d 44 a2 10 20 64 65  73 63 73 25 3d 4a 25 2d  |%.D.. descs%=J%-|
0000acc0  31 0d 44 ac 18 20 f4 20  72 65 73 74 6f 72 65 20  |1.D.. . restore |
0000acd0  73 6c 6f 74 20 73 69 7a  65 0d 44 b6 29 20 73 6c  |slot size.D.) sl|
0000ace0  6f 74 73 69 7a 65 25 3d  a4 73 65 74 73 6c 6f 74  |otsize%=.setslot|
0000acf0  73 69 7a 65 28 72 65 6d  73 6c 6f 74 73 69 7a 65  |size(remslotsize|
0000ad00  25 29 0d 44 c0 05 cd 0d  44 ca 0b 3d 64 65 73 63  |%).D....D..=desc|
0000ad10  73 25 0d 44 d4 05 3a 0d  44 de 1c dd f2 77 72 69  |s%.D..:.D....wri|
0000ad20  74 65 54 69 67 65 72 44  61 74 61 28 64 65 73 63  |teTigerData(desc|
0000ad30  73 25 29 0d 44 e8 37 f4  20 74 61 6b 65 73 20 64  |s%).D.7. takes d|
0000ad40  61 74 61 20 66 72 6f 6d  20 61 72 72 61 79 73 20  |ata from arrays |
0000ad50  61 6e 64 20 63 72 65 61  74 65 73 20 54 69 67 65  |and creates Tige|
0000ad60  72 44 61 74 61 20 66 69  6c 65 0d 44 f2 08 ea 20  |rData file.D... |
0000ad70  4a 25 0d 44 fc 29 46 25  3d ae 28 66 73 70 24 29  |J%.D.)F%=.(fsp$)|
0000ad80  3a ff 28 22 53 65 74 54  79 70 65 20 22 2b 66 73  |:.("SetType "+fs|
0000ad90  70 24 2b 22 20 26 34 46  46 22 29 0d 45 06 13 e3  |p$+" &4FF").E...|
0000ada0  20 4a 25 3d 31 20 b8 20  64 65 73 63 73 25 0d 45  | J%=1 . descs%.E|
0000adb0  10 31 20 e7 20 6e 61 6d  65 24 28 4a 25 29 3c 3e  |.1 . name$(J%)<>|
0000adc0  22 22 20 d5 23 46 25 2c  6e 61 6d 65 24 28 4a 25  |"" .#F%,name$(J%|
0000add0  29 2b 22 20 22 2b 64 65  73 63 24 28 4a 25 29 0d  |)+" "+desc$(J%).|
0000ade0  45 1a 05 ed 0d 45 24 0e  d9 20 23 46 25 3a 46 25  |E....E$.. #F%:F%|
0000adf0  3d 30 0d 45 2e 05 e1 0d  45 38 05 3a 0d 45 42 13  |=0.E....E8.:.EB.|
0000ae00  dd a4 64 69 72 64 65 73  63 28 64 69 72 24 29 0d  |..dirdesc(dir$).|
0000ae10  45 4c 34 f4 20 6c 6f 6f  6b 20 66 6f 72 20 64 65  |EL4. look for de|
0000ae20  73 63 72 69 70 74 69 6f  6e 20 6f 66 20 74 68 69  |scription of thi|
0000ae30  73 20 64 69 72 20 69 6e  20 69 74 73 20 70 61 72  |s dir in its par|
0000ae40  65 6e 74 0d 45 56 20 f4  20 69 73 20 74 68 65 72  |ent.EV . is ther|
0000ae50  65 20 61 20 54 69 67 65  72 44 61 74 61 20 66 69  |e a TigerData fi|
0000ae60  6c 65 3f 0d 45 60 16 ea  20 6c 65 61 66 24 2c 66  |le?.E`.. leaf$,f|
0000ae70  73 70 24 2c 64 65 73 63  24 0d 45 6a 15 6c 65 61  |sp$,desc$.Ej.lea|
0000ae80  66 24 3d a4 6c 65 61 66  28 64 69 72 24 29 0d 45  |f$=.leaf(dir$).E|
0000ae90  74 25 e7 20 6c 65 61 66  24 3d 22 24 22 20 8c 3d  |t%. leaf$="$" .=|
0000aea0  22 20 28 72 6f 6f 74 20  64 69 72 65 63 74 6f 72  |" (root director|
0000aeb0  79 29 22 0d 45 7e 2a e7  20 6c 65 61 66 24 3d 22  |y)".E~*. leaf$="|
0000aec0  26 22 20 8c 3d 22 20 28  75 73 65 72 20 72 6f 6f  |&" .=" (user roo|
0000aed0  74 20 64 69 72 65 63 74  6f 72 79 29 22 0d 45 88  |t directory)".E.|
0000aee0  23 66 73 70 24 3d a4 70  61 72 65 6e 74 28 64 69  |#fsp$=.parent(di|
0000aef0  72 24 29 2b 22 2e 54 69  67 65 72 44 61 74 61 22  |r$)+".TigerData"|
0000af00  0d 45 92 0c 64 65 73 63  24 3d 22 22 0d 45 9c 1c  |.E..desc$="".E..|
0000af10  c8 99 20 22 4f 53 5f 46  69 6c 65 22 2c 35 2c 66  |.. "OS_File",5,f|
0000af20  73 70 24 20 b8 20 6f 25  0d 45 a6 0c e7 20 6f 25  |sp$ . o%.E... o%|
0000af30  3d 31 20 8c 0d 45 b0 20  20 64 65 73 63 73 25 3d  |=1 ..E.  descs%=|
0000af40  a4 6c 6f 61 64 54 69 67  65 72 44 61 74 61 28 66  |.loadTigerData(f|
0000af50  73 70 24 29 0d 45 ba 1e  20 64 65 73 63 24 3d a4  |sp$).E.. desc$=.|
0000af60  64 65 73 63 28 6c 65 61  66 24 2c 64 65 73 63 73  |desc(leaf$,descs|
0000af70  25 29 0d 45 c4 05 cd 0d  45 ce 21 e7 20 64 65 73  |%).E....E.!. des|
0000af80  63 24 3c 3e 22 22 20 64  65 73 63 24 3d 22 20 2d  |c$<>"" desc$=" -|
0000af90  20 22 2b 64 65 73 63 24  0d 45 d8 0a 3d 64 65 73  | "+desc$.E..=des|
0000afa0  63 24 0d 45 e2 05 3a 0d  45 ec 18 dd a4 64 65 73  |c$.E..:.E....des|
0000afb0  63 28 6c 65 61 66 24 2c  64 65 73 63 73 25 29 0d  |c(leaf$,descs%).|
0000afc0  45 f6 2d f4 20 73 65 61  72 63 68 20 61 72 72 61  |E.-. search arra|
0000afd0  79 73 20 66 6f 72 20 64  65 73 63 72 69 70 74 69  |ys for descripti|
0000afe0  6f 6e 20 66 6f 72 20 6c  65 61 66 24 0d 46 00 17  |on for leaf$.F..|
0000aff0  ea 20 4a 25 2c 64 65 73  63 24 3a 64 65 73 63 24  |. J%,desc$:desc$|
0000b000  3d 22 22 0d 46 0a 13 e3  20 4a 25 3d 31 20 b8 20  |="".F... J%=1 . |
0000b010  64 65 73 63 73 25 0d 46  14 30 20 e7 20 6e 61 6d  |descs%.F.0 . nam|
0000b020  65 24 28 4a 25 29 3d 6c  65 61 66 24 20 64 65 73  |e$(J%)=leaf$ des|
0000b030  63 24 3d 64 65 73 63 24  28 4a 25 29 3a 4a 25 3d  |c$=desc$(J%):J%=|
0000b040  64 65 73 63 73 25 0d 46  1e 05 ed 0d 46 28 0a 3d  |descs%.F....F(.=|
0000b050  64 65 73 63 24 0d 46 32  05 3a 0d 46 3c 1f dd f2  |desc$.F2.:.F<...|
0000b060  72 65 61 64 66 69 6c 65  73 28 64 24 2c 64 69 73  |readfiles(d$,dis|
0000b070  70 6c 61 79 25 2c 6e 25  29 0d 46 46 3c ea 20 4a  |play%,n%).FF<. J|
0000b080  25 2c 6d 6f 72 65 25 2c  6e 65 78 74 25 2c 6d 61  |%,more%,next%,ma|
0000b090  78 25 2c 74 6f 74 25 2c  73 24 2c 66 24 2c 66 6c  |x%,tot%,s$,f$,fl|
0000b0a0  25 2c 66 25 2c 6e 61 6d  65 24 2c 74 79 70 65 25  |%,f%,name$,type%|
0000b0b0  2c 6f 62 6a 25 0d 46 50  05 3a 0d 46 5a 0c e7 20  |,obj%.FP.:.FZ.. |
0000b0c0  6e 25 3d 31 20 8c 0d 46  64 1c 20 f2 73 69 73 28  |n%=1 ..Fd. .sis(|
0000b0d0  6d 61 69 6e 25 2c 30 2c  26 31 42 30 30 33 31 33  |main%,0,&1B00313|
0000b0e0  35 29 0d 46 6e 25 20 6e  61 6d 65 24 3d a4 73 74  |5).Fn% name$=.st|
0000b0f0  72 69 70 28 a4 6c 65 61  66 28 a4 70 61 72 65 6e  |rip(.leaf(.paren|
0000b100  74 28 64 24 29 29 29 0d  46 78 25 20 6e 61 6d 65  |t(d$))).Fx% name|
0000b110  24 3d bd 31 33 39 2b c4  31 31 2d a9 6e 61 6d 65  |$=.139+.11-.name|
0000b120  24 2c 22 20 22 29 2b 6e  61 6d 65 24 0d 46 82 1b  |$," ")+name$.F..|
0000b130  20 e7 20 a4 69 73 72 6f  6f 74 28 64 24 29 20 6e  | . .isroot(d$) n|
0000b140  61 6d 65 24 3d 22 22 0d  46 8c 24 20 24 6e 61 6d  |ame$="".F.$ $nam|
0000b150  65 25 28 30 29 3d 6e 61  6d 65 24 3a 24 76 61 6c  |e%(0)=name$:$val|
0000b160  25 28 30 29 3d 22 52 35  2c 32 22 0d 46 96 32 20  |%(0)="R5,2".F.2 |
0000b170  66 6c 25 3d 26 30 37 30  30 30 31 33 31 3a f4 20  |fl%=&07000131:. |
0000b180  6d 61 6b 65 20 64 65 73  63 72 20 69 63 6f 6e 73  |make descr icons|
0000b190  20 6e 6f 6e 2d 77 72 69  74 61 62 6c 65 0d 46 a0  | non-writable.F.|
0000b1a0  35 20 f2 73 69 73 28 6d  61 69 6e 25 2c 31 35 36  |5 .sis(main%,156|
0000b1b0  2c 26 42 42 30 30 45 31  33 34 29 3a f4 20 63 61  |,&BB00E134):. ca|
0000b1c0  6e 20 67 61 69 6e 20 69  6e 70 75 74 20 66 6f 63  |n gain input foc|
0000b1d0  75 73 0d 46 aa 05 cd 0d  46 b4 05 3a 0d 46 be 10  |us.F....F..:.F..|
0000b1e0  73 24 3d a4 6c 65 61 66  28 64 24 29 0d 46 c8 11  |s$=.leaf(d$).F..|
0000b1f0  c8 8e 20 64 69 73 70 6c  61 79 25 20 ca 0d 46 d2  |.. display% ..F.|
0000b200  32 20 c9 20 31 3a 73 24  2b 3d a4 64 69 72 64 65  |2 . 1:s$+=.dirde|
0000b210  73 63 28 64 24 29 3a 66  6c 25 3d 26 30 37 30 30  |sc(d$):fl%=&0700|
0000b220  45 31 33 31 3a f4 20 77  72 69 74 61 62 6c 65 0d  |E131:. writable.|
0000b230  46 dc 24 20 c9 20 32 3a  73 24 2b 3d 22 20 2d 20  |F.$ . 2:s$+=" - |
0000b240  6f 62 6a 65 63 74 20 69  6e 66 6f 72 6d 61 74 69  |object informati|
0000b250  6f 6e 22 0d 46 e6 2b 20  c9 20 33 3a 73 24 2b 3d  |on".F.+ . 3:s$+=|
0000b260  22 20 2d 20 6e 65 73 74  65 64 20 73 69 7a 65 3a  |" - nested size:|
0000b270  20 74 6f 74 61 6c 20 62  79 74 65 73 3d 22 0d 46  | total bytes=".F|
0000b280  f0 05 cb 0d 46 fa 10 24  64 65 73 63 25 28 30 29  |....F..$desc%(0)|
0000b290  3d 73 24 0d 47 04 05 3a  0d 47 0e 20 f4 20 69 73  |=s$.G..:.G. . is|
0000b2a0  20 74 68 65 72 65 20 61  20 54 69 67 65 72 44 61  | there a TigerDa|
0000b2b0  74 61 20 66 69 6c 65 3f  0d 47 18 1a 66 73 70 24  |ta file?.G..fsp$|
0000b2c0  3d 64 69 72 24 2b 22 2e  54 69 67 65 72 44 61 74  |=dir$+".TigerDat|
0000b2d0  61 22 0d 47 22 25 c8 99  20 22 4f 53 5f 46 69 6c  |a".G"%.. "OS_Fil|
0000b2e0  65 22 2c 35 2c 66 73 70  24 20 b8 20 6f 25 3a 64  |e",5,fsp$ . o%:d|
0000b2f0  65 73 63 73 25 3d 30 0d  47 2c 26 e7 20 6f 25 3d  |escs%=0.G,&. o%=|
0000b300  31 20 64 65 73 63 73 25  3d a4 6c 6f 61 64 54 69  |1 descs%=.loadTi|
0000b310  67 65 72 44 61 74 61 28  66 73 70 24 29 0d 47 36  |gerData(fsp$).G6|
0000b320  05 3a 0d 47 40 29 4a 25  3d 31 3a 6e 65 78 74 25  |.:.G@)J%=1:next%|
0000b330  3d 30 3a 6d 61 78 25 3d  30 3a 74 6f 74 25 3d 30  |=0:max%=0:tot%=0|
0000b340  3a 75 6e 64 6f 24 28 29  3d 22 22 0d 47 4a 05 f5  |:undo$()="".GJ..|
0000b350  0d 47 54 3b 20 c8 99 20  22 4f 53 5f 47 42 50 42  |.GT; .. "OS_GBPB|
0000b360  22 2c 31 30 2c 64 24 2c  71 25 2c 31 2c 6e 65 78  |",10,d$,q%,1,nex|
0000b370  74 25 2c 31 30 30 2c 22  2a 22 20 b8 20 2c 2c 2c  |t%,100,"*" . ,,,|
0000b380  6d 6f 72 65 25 2c 6e 65  78 74 25 0d 47 5e 0e 20  |more%,next%.G^. |
0000b390  e7 20 6d 6f 72 65 25 20  8c 0d 47 68 18 20 20 6e  |. more% ..Gh.  n|
0000b3a0  61 6d 65 24 3d a4 6e 61  6d 65 28 71 25 2b 32 30  |ame$=.name(q%+20|
0000b3b0  29 0d 47 72 23 20 20 74  79 70 65 25 3d a4 66 69  |).Gr#  type%=.fi|
0000b3c0  6c 65 74 79 70 65 28 64  24 2b 22 2e 22 2b 6e 61  |letype(d$+"."+na|
0000b3d0  6d 65 24 29 0d 47 7c 10  20 20 6f 62 6a 25 3d 71  |me$).G|.  obj%=q|
0000b3e0  25 21 31 36 0d 47 86 15  20 20 6c 65 61 66 24 28  |%!16.G..  leaf$(|
0000b3f0  4a 25 29 3d 6e 61 6d 65  24 0d 47 90 2b 20 20 24  |J%)=name$.G.+  $|
0000b400  6e 61 6d 65 25 28 4a 25  29 3d c0 6e 61 6d 65 24  |name%(J%)=.name$|
0000b410  2c 31 30 29 2b c4 31 30  2d a9 6e 61 6d 65 24 2c  |,10)+.10-.name$,|
0000b420  22 20 22 29 0d 47 9a 07  20 20 3a 0d 47 a4 0e 20  |" ").G..  :.G.. |
0000b430  20 e7 20 6e 25 3d 31 20  8c 0d 47 ae 17 20 20 20  | . n%=1 ..G..   |
0000b440  e7 20 49 63 6f 6e 53 70  72 69 74 65 73 25 20 8c  |. IconSprites% .|
0000b450  0d 47 b8 22 20 20 20 20  e7 20 6f 62 6a 25 3d 32  |.G."    . obj%=2|
0000b460  20 80 20 c0 6e 61 6d 65  24 2c 31 29 3d 22 21 22  | . .name$,1)="!"|
0000b470  20 8c 0d 47 c2 24 20 20  20 20 20 f4 20 69 73 20  | ..G.$     . is |
0000b480  74 68 65 72 65 20 61 20  21 53 70 72 69 74 65 73  |there a !Sprites|
0000b490  20 66 69 6c 65 3f 0d 47  cc 24 20 20 20 20 20 66  | file?.G.$     f|
0000b4a0  24 3d 64 24 2b 22 2e 22  2b 6e 61 6d 65 24 2b 22  |$=d$+"."+name$+"|
0000b4b0  2e 21 53 70 72 69 74 65  73 22 0d 47 d6 1f 20 20  |.!Sprites".G..  |
0000b4c0  20 20 20 c8 99 20 22 4f  53 5f 46 69 6c 65 22 2c  |   .. "OS_File",|
0000b4d0  35 2c 66 24 20 b8 20 6f  25 0d 47 e0 24 20 20 20  |5,f$ . o%.G.$   |
0000b4e0  20 20 e7 20 6f 25 3d 31  20 ff 28 22 49 63 6f 6e  |  . o%=1 .("Icon|
0000b4f0  53 70 72 69 74 65 73 20  22 2b 66 24 29 0d 47 ea  |Sprites "+f$).G.|
0000b500  09 20 20 20 20 cd 0d 47  f4 08 20 20 20 cd 0d 47  |.    ..G..   ..G|
0000b510  fe 0c 20 20 20 68 73 25  3d a3 0d 48 08 10 20 20  |..   hs%=..H..  |
0000b520  20 c8 8e 20 6f 62 6a 25  20 ca 0d 48 12 20 20 20  | .. obj% ..H.   |
0000b530  20 20 c9 20 31 2c 33 3a  66 74 24 3d a4 66 69 6c  |  . 1,3:ft$=.fil|
0000b540  65 28 74 79 70 65 25 2c  30 29 0d 48 1c 1d 20 20  |e(type%,0).H..  |
0000b550  20 20 c9 20 32 3a 66 74  24 3d a4 64 69 72 28 6e  |  . 2:ft$=.dir(n|
0000b560  61 6d 65 24 2c 30 29 0d  48 26 19 20 20 20 20 7f  |ame$,0).H&.    .|
0000b570  3a 66 74 24 3d 22 73 6d  61 6c 6c 5f 78 78 78 22  |:ft$="small_xxx"|
0000b580  0d 48 30 08 20 20 20 cb  0d 48 3a 28 20 20 20 e7  |.H0.   ..H:(   .|
0000b590  20 68 73 25 20 66 25 3d  26 31 37 30 30 41 42 33  | hs% f%=&1700AB3|
0000b5a0  42 20 8b 20 66 25 3d 26  31 37 30 30 41 33 33 42  |B . f%=&1700A33B|
0000b5b0  0d 48 44 2e 20 20 20 f2  73 69 73 28 6d 61 69 6e  |.HD.   .sis(main|
0000b5c0  25 2c 4a 25 2c 66 25 29  3a f2 73 69 73 28 6d 61  |%,J%,f%):.sis(ma|
0000b5d0  69 6e 25 2c 4a 25 2b 37  38 2c 66 6c 25 29 0d 48  |in%,J%+78,fl%).H|
0000b5e0  4e 18 20 20 20 24 76 61  6c 25 28 4a 25 29 3d 22  |N.   $val%(J%)="|
0000b5f0  53 22 2b 66 74 24 0d 48  58 07 20 20 cd 0d 48 62  |S"+ft$.HX.  ..Hb|
0000b600  07 20 20 3a 0d 48 6c 13  20 20 c8 8e 20 64 69 73  |.  :.Hl.  .. dis|
0000b610  70 6c 61 79 25 20 ca 0d  48 76 0b 20 20 20 c9 20  |play% ..Hv.   . |
0000b620  31 3a 0d 48 80 1e 20 20  20 20 73 24 3d a4 64 65  |1:.H..    s$=.de|
0000b630  73 63 28 6e 61 6d 65 24  2c 64 65 73 63 73 25 29  |sc(name$,descs%)|
0000b640  0d 48 8a 26 20 20 20 20  e7 20 6e 61 6d 65 24 3d  |.H.&    . name$=|
0000b650  22 54 69 67 65 72 44 61  74 61 22 20 73 24 3d 74  |"TigerData" s$=t|
0000b660  69 67 73 74 72 24 0d 48  94 22 20 20 20 20 24 64  |igstr$.H."    $d|
0000b670  65 73 63 25 28 4a 25 29  3d 73 24 3a 75 6e 64 6f  |esc%(J%)=s$:undo|
0000b680  24 28 4a 25 29 3d 73 24  0d 48 9e 0b 20 20 20 c9  |$(J%)=s$.H..   .|
0000b690  20 32 3a 0d 48 a8 24 20  20 20 20 6f 25 3d a4 67  | 2:.H.$    o%=.g|
0000b6a0  65 74 6f 62 6a 69 6e 66  6f 28 64 24 2b 22 2e 22  |etobjinfo(d$+"."|
0000b6b0  2b 6e 61 6d 65 24 29 0d  48 b2 0d 20 20 20 20 73  |+name$).H..    s|
0000b6c0  24 3d 22 22 0d 48 bc 21  20 20 20 20 73 24 2b 3d  |$="".H.!    s$+=|
0000b6d0  74 79 70 65 24 2b c4 31  33 2d a9 74 79 70 65 24  |type$+.13-.type$|
0000b6e0  2c 22 20 22 29 0d 48 c6  26 20 20 20 20 73 24 2b  |," ").H.&    s$+|
0000b6f0  3d c4 39 2d a9 66 69 6c  65 6c 65 6e 24 2c 22 20  |=.9-.filelen$," |
0000b700  22 29 2b 66 69 6c 65 6c  65 6e 24 0d 48 d0 29 20  |")+filelen$.H.) |
0000b710  20 20 20 73 24 2b 3d 22  20 20 22 2b 61 63 63 65  |   s$+="  "+acce|
0000b720  73 73 24 2b c4 36 2d a9  61 63 63 65 73 73 24 2c  |ss$+.6-.access$,|
0000b730  22 20 22 29 0d 48 da 21  20 20 20 20 73 24 2b 3d  |" ").H.!    s$+=|
0000b740  22 20 20 22 2b 64 61 74  65 24 2b 22 20 20 22 2b  |"  "+date$+"  "+|
0000b750  74 69 6d 65 24 0d 48 e4  22 20 20 20 20 24 64 65  |time$.H."    $de|
0000b760  73 63 25 28 4a 25 29 3d  73 24 3a 75 6e 64 6f 24  |sc%(J%)=s$:undo$|
0000b770  28 4a 25 29 3d 73 24 0d  48 ee 0b 20 20 20 c9 20  |(J%)=s$.H..   . |
0000b780  33 3a 0d 48 f8 20 20 20  20 20 72 65 63 75 72 73  |3:.H.     recurs|
0000b790  69 6e 67 25 3d b9 3a 63  6f 75 6e 74 69 6e 67 25  |ing%=.:counting%|
0000b7a0  3d b9 0d 49 02 2a 20 20  20 20 c8 99 20 22 4f 53  |=..I.*    .. "OS|
0000b7b0  5f 42 79 74 65 22 2c 32  32 39 2c 30 2c 30 20 3a  |_Byte",229,0,0 :|
0000b7c0  f4 20 65 6e 61 62 6c 65  20 45 73 63 0d 49 0c 38  |. enable Esc.I.8|
0000b7d0  20 20 20 20 c8 99 20 22  4f 53 5f 46 53 43 6f 6e  |    .. "OS_FSCon|
0000b7e0  74 72 6f 6c 22 2c 32 38  2c 64 24 2b 22 2e 22 2b  |trol",28,d$+"."+|
0000b7f0  6e 61 6d 65 24 2c 30 2c  31 20 b8 20 2c 2c 62 79  |name$,0,1 . ,,by|
0000b800  74 65 73 25 0d 49 16 3e  20 20 20 20 6c 65 6e 25  |tes%.I.>    len%|
0000b810  28 4a 25 29 3d 62 79 74  65 73 25 3a 74 6f 74 25  |(J%)=bytes%:tot%|
0000b820  2b 3d 62 79 74 65 73 25  3a e7 20 62 79 74 65 73  |+=bytes%:. bytes|
0000b830  25 3e 6d 61 78 25 20 6d  61 78 25 3d 62 79 74 65  |%>max% max%=byte|
0000b840  73 25 0d 49 20 2b 20 20  20 20 c8 99 20 22 4f 53  |s%.I +    .. "OS|
0000b850  5f 42 79 74 65 22 2c 32  32 39 2c 31 2c 30 20 3a  |_Byte",229,1,0 :|
0000b860  f4 20 64 69 73 61 62 6c  65 20 45 73 63 0d 49 2a  |. disable Esc.I*|
0000b870  20 20 20 20 20 72 65 63  75 72 73 69 6e 67 25 3d  |     recursing%=|
0000b880  a3 3a 63 6f 75 6e 74 69  6e 67 25 3d a3 0d 49 34  |.:counting%=..I4|
0000b890  07 20 20 cb 0d 49 3e 0b  20 20 4a 25 2b 3d 31 0d  |.  ..I>.  J%+=1.|
0000b8a0  49 48 06 20 cd 0d 49 52  0e fd 20 6e 65 78 74 25  |IH. ..IR.. next%|
0000b8b0  3d 2d 31 0d 49 5c 0f 69  74 65 6d 73 25 3d 4a 25  |=-1.I\.items%=J%|
0000b8c0  2d 31 0d 49 66 05 3a 0d  49 70 12 e7 20 64 69 73  |-1.If.:.Ip.. dis|
0000b8d0  70 6c 61 79 25 3d 33 20  8c 0d 49 7a 15 20 24 64  |play%=3 ..Iz. $d|
0000b8e0  65 73 63 25 28 30 29 2b  3d c3 74 6f 74 25 0d 49  |esc%(0)+=.tot%.I|
0000b8f0  84 0f 20 e7 20 6d 61 78  25 3e 30 20 8c 0d 49 8e  |.. . max%>0 ..I.|
0000b900  15 20 20 e3 20 4a 25 3d  31 20 b8 20 69 74 65 6d  |.  . J%=1 . item|
0000b910  73 25 0d 49 98 1a 20 20  20 63 25 3d 6c 65 6e 25  |s%.I..   c%=len%|
0000b920  28 4a 25 29 2f 6d 61 78  25 2a 38 34 0d 49 a2 13  |(J%)/max%*84.I..|
0000b930  20 20 20 73 70 25 3d a9  28 c3 6d 61 78 25 29 0d  |   sp%=.(.max%).|
0000b940  49 ac 23 20 20 20 73 24  3d c2 c4 73 70 25 2c 22  |I.#   s$=..sp%,"|
0000b950  20 22 29 2b c3 6c 65 6e  25 28 4a 25 29 2c 73 70  | ")+.len%(J%),sp|
0000b960  25 29 0d 49 b6 17 20 20  20 73 24 2b 3d 22 20 22  |%).I..   s$+=" "|
0000b970  2b c4 63 25 2c 22 2b 22  29 0d 49 c0 21 20 20 20  |+.c%,"+").I.!   |
0000b980  24 64 65 73 63 25 28 4a  25 29 3d 73 24 3a 75 6e  |$desc%(J%)=s$:un|
0000b990  64 6f 24 28 4a 25 29 3d  73 24 0d 49 ca 07 20 20  |do$(J%)=s$.I..  |
0000b9a0  ed 0d 49 d4 06 20 cd 0d  49 de 05 cd 0d 49 e8 05  |..I.. ..I....I..|
0000b9b0  3a 0d 49 f2 0c e7 20 6e  25 3d 31 20 8c 0d 49 fc  |:.I... n%=1 ..I.|
0000b9c0  42 20 e7 20 69 74 65 6d  73 25 3e 30 20 f2 73 69  |B . items%>0 .si|
0000b9d0  73 28 6d 61 69 6e 25 2c  31 35 36 2c 26 42 42 30  |s(main%,156,&BB0|
0000b9e0  30 36 31 33 34 29 3a f4  20 63 61 6e 27 74 20 67  |06134):. can't g|
0000b9f0  61 69 6e 20 69 6e 70 75  74 20 66 6f 63 75 73 0d  |ain input focus.|
0000ba00  4a 06 40 20 f4 20 73 65  74 20 66 6c 61 67 73 20  |J.@ . set flags |
0000ba10  66 6f 72 20 74 6f 70 20  6c 69 6e 65 20 2d 20 6f  |for top line - o|
0000ba20  6e 6c 79 20 77 72 69 74  61 62 6c 65 20 69 66 20  |nly writable if |
0000ba30  74 6f 6f 20 6c 6f 6e 67  20 74 6f 20 73 65 65 0d  |too long to see.|
0000ba40  4a 10 3b 20 e7 20 a9 28  24 64 65 73 63 25 28 30  |J.; . .($desc%(0|
0000ba50  29 29 3e 63 6f 6c 75 6d  6e 73 25 2d 31 37 20 66  |))>columns%-17 f|
0000ba60  25 3d 26 31 42 30 30 45  31 33 31 20 8b 20 66 25  |%=&1B00E131 . f%|
0000ba70  3d 26 31 42 30 30 30 31  33 31 0d 4a 1a 16 20 f2  |=&1B000131.J.. .|
0000ba80  73 69 73 28 6d 61 69 6e  25 2c 37 38 2c 66 25 29  |sis(main%,78,f%)|
0000ba90  0d 4a 24 05 cd 0d 4a 2e  05 e1 0d 4a 38 05 3a 0d  |.J$...J....J8.:.|
0000baa0  4a 42 17 dd a4 66 69 6c  65 28 74 79 70 65 25 2c  |JB...file(type%,|
0000bab0  73 69 7a 65 25 29 0d 4a  4c 1f f4 20 73 70 72 69  |size%).JL.. spri|
0000bac0  74 65 20 6e 61 6d 65 20  66 6f 72 20 66 69 6c 65  |te name for file|
0000bad0  20 74 79 70 65 0d 4a 56  26 f4 20 73 69 7a 65 25  | type.JV&. size%|
0000bae0  3d 30 20 69 73 20 73 6d  61 6c 6c 2c 20 31 20 69  |=0 is small, 1 i|
0000baf0  73 20 66 75 6c 6c 20 73  69 7a 65 0d 4a 60 34 f4  |s full size.J`4.|
0000bb00  20 68 73 25 20 69 73 20  54 52 55 45 20 69 66 20  | hs% is TRUE if |
0000bb10  6e 65 65 64 73 20 74 6f  20 62 65 20 64 69 73 70  |needs to be disp|
0000bb20  6c 61 79 65 64 20 68 61  6c 66 20 73 69 7a 65 0d  |layed half size.|
0000bb30  4a 6a 0b ea 20 66 24 2c  66 25 0d 4a 74 09 68 73  |Jj.. f$,f%.Jt.hs|
0000bb40  25 3d a3 0d 4a 7e 0e c8  8e 20 73 69 7a 65 25 20  |%=..J~... size% |
0000bb50  ca 0d 4a 88 1c 20 c9 20  30 3a 66 24 3d 22 73 6d  |..J.. . 0:f$="sm|
0000bb60  61 6c 6c 5f 22 2b c3 7e  74 79 70 65 25 0d 4a 92  |all_"+.~type%.J.|
0000bb70  1b 20 c9 20 31 3a 66 24  3d 22 66 69 6c 65 5f 22  |. . 1:f$="file_"|
0000bb80  2b c3 7e 74 79 70 65 25  0d 4a 9c 05 cb 0d 4a a6  |+.~type%.J....J.|
0000bb90  24 c8 99 20 22 58 57 69  6d 70 5f 53 70 72 69 74  |$.. "XWimp_Sprit|
0000bba0  65 4f 70 22 2c 32 34 2c  2c 66 24 20 b8 20 3b 66  |eOp",24,,f$ . ;f|
0000bbb0  25 0d 4a b0 15 e7 20 28  66 25 20 80 20 31 29 3d  |%.J... (f% . 1)=|
0000bbc0  30 20 8c 3d 66 24 0d 4a  ba 1a e7 20 73 69 7a 65  |0 .=f$.J... size|
0000bbd0  25 3d 31 20 8c 3d 22 66  69 6c 65 5f 78 78 78 22  |%=1 .="file_xxx"|
0000bbe0  0d 4a c4 16 66 24 3d 22  66 69 6c 65 5f 22 2b c3  |.J..f$="file_"+.|
0000bbf0  7e 74 79 70 65 25 0d 4a  ce 24 c8 99 20 22 58 57  |~type%.J.$.. "XW|
0000bc00  69 6d 70 5f 53 70 72 69  74 65 4f 70 22 2c 32 34  |imp_SpriteOp",24|
0000bc10  2c 2c 66 24 20 b8 20 3b  66 25 0d 4a d8 1a e7 20  |,,f$ . ;f%.J... |
0000bc20  28 66 25 20 80 20 31 29  3d 30 20 68 73 25 3d b9  |(f% . 1)=0 hs%=.|
0000bc30  3a 3d 66 24 0d 4a e2 10  3d 22 73 6d 61 6c 6c 5f  |:=f$.J..="small_|
0000bc40  78 78 78 22 0d 4a ec 05  3a 0d 4a f6 16 dd a4 64  |xxx".J..:.J....d|
0000bc50  69 72 28 6e 61 6d 65 24  2c 73 69 7a 65 25 29 0d  |ir(name$,size%).|
0000bc60  4b 00 19 f4 20 73 70 72  69 74 65 20 6e 61 6d 65  |K... sprite name|
0000bc70  20 66 6f 72 20 64 69 72  0d 4b 0a 26 f4 20 73 69  | for dir.K.&. si|
0000bc80  7a 65 25 3d 30 20 69 73  20 73 6d 61 6c 6c 2c 20  |ze%=0 is small, |
0000bc90  31 20 69 73 20 66 75 6c  6c 20 73 69 7a 65 0d 4b  |1 is full size.K|
0000bca0  14 34 f4 20 68 73 25 20  69 73 20 54 52 55 45 20  |.4. hs% is TRUE |
0000bcb0  69 66 20 6e 65 65 64 73  20 74 6f 20 62 65 20 64  |if needs to be d|
0000bcc0  69 73 70 6c 61 79 65 64  20 68 61 6c 66 20 73 69  |isplayed half si|
0000bcd0  7a 65 0d 4b 1e 0b ea 20  66 24 2c 66 25 0d 4b 28  |ze.K... f$,f%.K(|
0000bce0  09 68 73 25 3d a3 0d 4b  32 16 e7 20 c0 6e 61 6d  |.hs%=..K2.. .nam|
0000bcf0  65 24 2c 31 29 3c 3e 22  21 22 20 8c 0d 4b 3c 0f  |e$,1)<>"!" ..K<.|
0000bd00  20 c8 8e 20 73 69 7a 65  25 20 ca 0d 4b 46 16 20  | .. size% ..KF. |
0000bd10  20 c9 20 30 3a 3d 22 73  6d 61 6c 6c 5f 64 69 72  | . 0:="small_dir|
0000bd20  22 0d 4b 50 16 20 20 c9  20 31 3a 3d 22 64 69 72  |".KP.  . 1:="dir|
0000bd30  65 63 74 6f 72 79 22 0d  4b 5a 06 20 cb 0d 4b 64  |ectory".KZ. ..Kd|
0000bd40  05 cd 0d 4b 6e 11 f4 20  69 74 27 73 20 61 6e 20  |...Kn.. it's an |
0000bd50  41 70 70 0d 4b 78 0e c8  8e 20 73 69 7a 65 25 20  |App.Kx... size% |
0000bd60  ca 0d 4b 82 16 20 c9 20  30 3a 66 24 3d 22 73 6d  |..K.. . 0:f$="sm|
0000bd70  22 2b 6e 61 6d 65 24 0d  4b 8c 11 20 c9 20 31 3a  |"+name$.K.. . 1:|
0000bd80  66 24 3d 6e 61 6d 65 24  0d 4b 96 05 cb 0d 4b a0  |f$=name$.K....K.|
0000bd90  24 c8 99 20 22 58 57 69  6d 70 5f 53 70 72 69 74  |$.. "XWimp_Sprit|
0000bda0  65 4f 70 22 2c 32 34 2c  2c 66 24 20 b8 20 3b 66  |eOp",24,,f$ . ;f|
0000bdb0  25 0d 4b aa 15 e7 20 28  66 25 20 80 20 31 29 3d  |%.K... (f% . 1)=|
0000bdc0  30 20 8c 3d 66 24 0d 4b  b4 0c 66 24 3d 6e 61 6d  |0 .=f$.K..f$=nam|
0000bdd0  65 24 0d 4b be 0f e7 20  73 69 7a 65 25 3d 30 20  |e$.K... size%=0 |
0000bde0  8c 0d 4b c8 25 20 c8 99  20 22 58 57 69 6d 70 5f  |..K.% .. "XWimp_|
0000bdf0  53 70 72 69 74 65 4f 70  22 2c 32 34 2c 2c 66 24  |SpriteOp",24,,f$|
0000be00  20 b8 20 3b 66 25 0d 4b  d2 1b 20 e7 20 28 66 25  | . ;f%.K.. . (f%|
0000be10  20 80 20 31 29 3d 30 20  68 73 25 3d b9 3a 3d 66  | . 1)=0 hs%=.:=f|
0000be20  24 0d 4b dc 05 cd 0d 4b  e6 0e c8 8e 20 73 69 7a  |$.K....K.... siz|
0000be30  65 25 20 ca 0d 4b f0 15  20 c9 20 30 3a 3d 22 73  |e% ..K.. . 0:="s|
0000be40  6d 61 6c 6c 5f 61 70 70  22 0d 4b fa 17 20 c9 20  |mall_app".K.. . |
0000be50  31 3a 3d 22 61 70 70 6c  69 63 61 74 69 6f 6e 22  |1:="application"|
0000be60  0d 4c 04 05 cd 0d 4c 0e  07 3d 22 22 0d 4c 18 05  |.L....L..="".L..|
0000be70  3a 0d 4c 22 1c dd f2 73  65 74 62 75 74 74 6f 6e  |:.L"...setbutton|
0000be80  74 79 70 65 73 28 69 74  65 6d 73 25 29 0d 4c 2c  |types(items%).L,|
0000be90  11 ea 20 66 31 25 2c 66  32 25 2c 66 33 25 0d 4c  |.. f1%,f2%,f3%.L|
0000bea0  36 2b 66 31 25 3d 26 31  31 30 30 30 30 30 30 3a  |6+f1%=&11000000:|
0000beb0  f4 20 62 61 63 6b 67 72  6f 75 6e 64 2c 6e 6f 6e  |. background,non|
0000bec0  2d 77 72 69 74 61 62 6c  65 0d 4c 40 2a e7 20 64  |-writable.L@*. d|
0000bed0  69 73 70 6c 61 79 25 3d  31 20 20 66 32 25 3d 26  |isplay%=1  f2%=&|
0000bee0  30 37 30 30 45 31 33 31  3a f4 20 77 72 69 74 61  |0700E131:. writa|
0000bef0  62 6c 65 0d 4c 4a 2e e7  20 64 69 73 70 6c 61 79  |ble.LJ.. display|
0000bf00  25 3c 3e 31 20 66 32 25  3d 26 30 37 30 30 30 31  |%<>1 f2%=&070001|
0000bf10  33 31 3a f4 20 6e 6f 6e  2d 77 72 69 74 61 62 6c  |31:. non-writabl|
0000bf20  65 0d 4c 54 0f c8 8e 20  69 74 65 6d 73 25 20 ca  |e.LT... items% .|
0000bf30  0d 4c 5e 31 20 c9 20 30  20 20 20 3a f2 73 69 73  |.L^1 . 0   :.sis|
0000bf40  28 6d 61 69 6e 25 2c 30  31 2c 66 31 25 29 3a f2  |(main%,01,f1%):.|
0000bf50  73 69 73 28 6d 61 69 6e  25 2c 30 32 2c 66 31 25  |sis(main%,02,f1%|
0000bf60  29 0d 4c 68 34 20 20 20  20 20 20 20 20 20 20 20  |).Lh4           |
0000bf70  f2 73 69 73 28 6d 61 69  6e 25 2c 37 39 2c 66 31  |.sis(main%,79,f1|
0000bf80  25 29 3a f2 73 69 73 28  6d 61 69 6e 25 2c 38 30  |%):.sis(main%,80|
0000bf90  2c 66 31 25 29 0d 4c 72  31 20 c9 20 31 20 20 20  |,f1%).Lr1 . 1   |
0000bfa0  3a f2 73 69 73 28 6d 61  69 6e 25 2c 30 32 2c 66  |:.sis(main%,02,f|
0000bfb0  31 25 29 3a f2 73 69 73  28 6d 61 69 6e 25 2c 37  |1%):.sis(main%,7|
0000bfc0  39 2c 66 32 25 29 0d 4c  7c 21 20 20 20 20 20 20  |9,f2%).L|!      |
0000bfd0  20 20 20 20 20 f2 73 69  73 28 6d 61 69 6e 25 2c  |     .sis(main%,|
0000bfe0  38 30 2c 66 31 25 29 0d  4c 86 2c 20 7f 3a f2 73  |80,f1%).L., .:.s|
0000bff0  69 73 28 6d 61 69 6e 25  2c 37 39 2c 66 32 25 29  |is(main%,79,f2%)|
0000c000  3a f2 73 69 73 28 6d 61  69 6e 25 2c 38 30 2c 66  |:.sis(main%,80,f|
0000c010  32 25 29 0d 4c 90 05 cb  0d 4c 9a 05 e1 0d 4c a4  |2%).L....L....L.|
0000c020  05 3a 0d 4c ae 0e f4 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.:.L...---------|
0000c030  0d 4c b8 0e f4 2e 20 45  58 45 43 55 54 45 0d 4c  |.L.... EXECUTE.L|
0000c040  c2 0e f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 4c cc 05  |...---------.L..|
0000c050  3a 0d 4c d6 1a dd f2 64  6f 75 62 6c 65 63 6c 69  |:.L....doublecli|
0000c060  63 6b 28 6d 62 25 2c 69  68 25 29 0d 4c e0 21 ea  |ck(mb%,ih%).L.!.|
0000c070  20 6e 61 6d 65 24 2c 6f  62 6a 25 3a f4 20 6a 6f  | name$,obj%:. jo|
0000c080  62 24 20 69 73 20 67 6c  6f 62 61 6c 0d 4c ea 0d  |b$ is global.L..|
0000c090  e7 20 69 68 25 3c 30 20  e1 0d 4c f4 12 f2 75 69  |. ih%<0 ..L...ui|
0000c0a0  28 6d 61 69 6e 25 2c 69  68 25 29 0d 4c fe 18 6e  |(main%,ih%).L..n|
0000c0b0  61 6d 65 24 3d 6c 65 61  66 24 28 63 68 6f 73 65  |ame$=leaf$(chose|
0000c0c0  6e 25 29 0d 4d 08 16 f4  20 69 73 20 6f 62 6a 20  |n%).M... is obj |
0000c0d0  69 6e 20 46 69 6c 65 72  3f 0d 4d 12 25 e7 20 ac  |in Filer?.M.%. .|
0000c0e0  20 a4 63 68 65 63 6b 6f  62 6a 28 64 69 72 24 2b  | .checkobj(dir$+|
0000c0f0  22 2e 22 2b 6e 61 6d 65  24 2c b9 29 20 e1 0d 4d  |"."+name$,.) ..M|
0000c100  1c 25 e7 20 6d 62 25 3d  31 20 84 20 6d 62 25 3d  |.%. mb%=1 . mb%=|
0000c110  31 36 20 f2 63 77 28 6d  61 69 6e 25 29 3a f4 20  |16 .cw(main%):. |
0000c120  41 64 6a 0d 4d 26 17 6a  6f 62 24 3d 64 69 72 24  |Adj.M&.job$=dir$|
0000c130  2b 22 2e 22 2b 6e 61 6d  65 24 0d 4d 30 17 6f 62  |+"."+name$.M0.ob|
0000c140  6a 25 3d a4 6f 62 6a 74  79 70 65 28 6a 6f 62 24  |j%=.objtype(job$|
0000c150  29 0d 4d 3a 0d c8 8e 20  6f 62 6a 25 20 ca 0d 4d  |).M:... obj% ..M|
0000c160  44 17 20 c9 20 31 2c 33  3a f4 20 46 69 6c 65 2c  |D. . 1,3:. File,|
0000c170  49 6d 61 67 65 0d 4d 4e  1f 20 20 66 69 6c 65 74  |Image.MN.  filet|
0000c180  79 70 65 25 3d a4 66 69  6c 65 74 79 70 65 28 6a  |ype%=.filetype(j|
0000c190  6f 62 24 29 0d 4d 58 15  20 20 f2 72 75 6e 28 6a  |ob$).MX.  .run(j|
0000c1a0  6f 62 24 2c 6f 62 6a 25  29 0d 4d 62 0e 20 c9 20  |ob$,obj%).Mb. . |
0000c1b0  32 3a f4 20 44 69 72 0d  4d 6c 17 20 20 e7 20 c0  |2:. Dir.Ml.  . .|
0000c1c0  6e 61 6d 65 24 2c 31 29  3d 22 21 22 20 8c 0d 4d  |name$,1)="!" ..M|
0000c1d0  76 0e 20 20 20 e7 20 a6  2d 31 20 8c 0d 4d 80 1b  |v.   . .-1 ..M..|
0000c1e0  20 20 20 20 f2 73 75 62  64 69 72 28 64 69 72 24  |    .subdir(dir$|
0000c1f0  2c 6e 61 6d 65 24 29 0d  4d 8a 08 20 20 20 cc 0d  |,name$).M..   ..|
0000c200  4d 94 17 20 20 20 20 f2  72 75 6e 28 6a 6f 62 24  |M..    .run(job$|
0000c210  2c 6f 62 6a 25 29 0d 4d  9e 08 20 20 20 cd 0d 4d  |,obj%).M..   ..M|
0000c220  a8 07 20 20 cc 0d 4d b2  1a 20 20 20 f2 73 75 62  |..  ..M..   .sub|
0000c230  64 69 72 28 64 69 72 24  2c 6e 61 6d 65 24 29 0d  |dir(dir$,name$).|
0000c240  4d bc 07 20 20 cd 0d 4d  c6 05 cb 0d 4d d0 05 e1  |M..  ..M....M...|
0000c250  0d 4d da 05 3a 0d 4d e4  14 dd f2 72 75 6e 28 6a  |.M..:.M....run(j|
0000c260  6f 62 24 2c 6f 62 6a 25  29 0d 4d ee 0f ea 20 66  |ob$,obj%).M... f|
0000c270  69 6c 65 74 79 70 65 25  0d 4d f8 0e e7 20 6f 62  |iletype%.M... ob|
0000c280  6a 25 3d 30 20 e1 0d 4e  02 0d c8 8e 20 6f 62 6a  |j%=0 ..N.... obj|
0000c290  25 20 ca 0d 4e 0c 17 20  c9 20 31 2c 33 3a f4 20  |% ..N.. . 1,3:. |
0000c2a0  46 69 6c 65 2c 49 6d 61  67 65 0d 4e 16 1f 20 20  |File,Image.N..  |
0000c2b0  66 69 6c 65 74 79 70 65  25 3d a4 66 69 6c 65 74  |filetype%=.filet|
0000c2c0  79 70 65 28 6a 6f 62 24  29 0d 4e 20 1b 20 20 71  |ype(job$).N .  q|
0000c2d0  25 21 30 3d 28 34 38 2b  a9 6a 6f 62 24 29 20 80  |%!0=(48+.job$) .|
0000c2e0  20 ac 20 33 0d 4e 2a 20  20 20 71 25 21 31 32 3d  | . 3.N*   q%!12=|
0000c2f0  30 3a 71 25 21 31 36 3d  35 3a f4 20 44 61 74 61  |0:q%!16=5:. Data|
0000c300  4f 70 65 6e 0d 4e 34 25  20 20 71 25 21 32 30 3d  |Open.N4%  q%!20=|
0000c310  30 3a 71 25 21 32 38 3d  30 3a 71 25 21 33 32 3d  |0:q%!28=0:q%!32=|
0000c320  30 3a 71 25 21 33 36 3d  30 0d 4e 3e 26 20 20 71  |0:q%!36=0.N>&  q|
0000c330  25 21 34 30 3d 66 69 6c  65 74 79 70 65 25 3a 24  |%!40=filetype%:$|
0000c340  28 71 25 2b 34 34 29 3d  6a 6f 62 24 2b bd 30 0d  |(q%+44)=job$+.0.|
0000c350  4e 48 2d 20 20 f4 20 62  72 6f 61 64 63 61 73 74  |NH-  . broadcast|
0000c360  20 6d 65 73 73 61 67 65  20 2d 20 73 65 6e 74 20  | message - sent |
0000c370  74 6f 20 61 6c 6c 20 74  61 73 6b 73 0d 4e 52 22  |to all tasks.NR"|
0000c380  20 20 c8 99 22 57 69 6d  70 5f 53 65 6e 64 4d 65  |  .."Wimp_SendMe|
0000c390  73 73 61 67 65 22 2c 31  38 2c 71 25 2c 30 0d 4e  |ssage",18,q%,0.N|
0000c3a0  5c 0e 20 c9 20 32 3a f4  20 41 70 70 0d 4e 66 25  |\. . 2:. App.Nf%|
0000c3b0  20 20 c8 99 20 22 57 69  6d 70 5f 53 74 61 72 74  |  .. "Wimp_Start|
0000c3c0  54 61 73 6b 22 2c 22 52  75 6e 20 22 2b 6a 6f 62  |Task","Run "+job|
0000c3d0  24 0d 4e 70 06 20 cb 0d  4e 7a 05 cd 0d 4e 84 05  |$.Np. ..Nz...N..|
0000c3e0  e1 0d 4e 8e 05 3a 0d 4e  98 1a dd f2 73 75 62 64  |..N..:.N....subd|
0000c3f0  69 72 28 f8 20 64 69 72  24 2c 6e 61 6d 65 24 29  |ir(. dir$,name$)|
0000c400  0d 4e a2 1a e7 20 6e 61  6d 65 24 3d 22 21 54 69  |.N... name$="!Ti|
0000c410  67 65 72 44 61 74 61 22  20 e1 0d 4e ac 17 72 65  |gerData" ..N..re|
0000c420  6d 24 3d 64 69 72 24 2b  22 2e 22 2b 6e 61 6d 65  |m$=dir$+"."+name|
0000c430  24 0d 4e b6 13 e7 20 a4  70 72 6f 6d 70 74 73 61  |$.N... .promptsa|
0000c440  76 65 20 8c 0d 4e c0 1c  20 64 69 72 24 3d 72 65  |ve ..N.. dir$=re|
0000c450  6d 24 3a f2 73 68 6f 77  54 69 67 65 72 28 31 29  |m$:.showTiger(1)|
0000c460  0d 4e ca 05 cd 0d 4e d4  05 e1 0d 4e de 05 3a 0d  |.N....N....N..:.|
0000c470  4e e8 0d dd f2 72 65 66  72 65 73 68 0d 4e f2 08  |N....refresh.N..|
0000c480  ea 20 4a 25 0d 4e fc 1b  f4 20 72 65 66 72 65 73  |. J%.N... refres|
0000c490  68 20 54 69 67 65 72 20  64 69 73 70 6c 61 79 0d  |h Tiger display.|
0000c4a0  4f 06 19 e7 20 a4 63 68  65 63 6b 6f 62 6a 28 64  |O... .checkobj(d|
0000c4b0  69 72 24 2c b9 29 20 8c  0d 4f 10 20 20 e7 20 a4  |ir$,.) ..O.  . .|
0000c4c0  70 72 6f 6d 70 74 73 61  76 65 20 f2 73 68 6f 77  |promptsave .show|
0000c4d0  54 69 67 65 72 28 31 29  0d 4f 1a 05 cc 0d 4f 24  |Tiger(1).O....O$|
0000c4e0  33 20 e7 20 73 74 61 72  25 20 e3 20 4a 25 3d 31  |3 . star% . J%=1|
0000c4f0  20 b8 20 69 74 65 6d 73  25 3a 24 64 65 73 63 25  | . items%:$desc%|
0000c500  28 4a 25 29 3d 75 6e 64  6f 24 28 4a 25 29 3a ed  |(J%)=undo$(J%):.|
0000c510  0d 4f 2e 19 20 f2 6e 6f  73 74 61 72 3a f2 63 77  |.O.. .nostar:.cw|
0000c520  28 6d 61 69 6e 25 29 3a  e1 0d 4f 38 05 cd 0d 4f  |(main%):..O8...O|
0000c530  42 11 f2 63 77 28 73 61  76 65 62 6f 78 25 29 0d  |B..cw(savebox%).|
0000c540  4f 4c 05 e1 0d 4f 56 05  3a 0d 4f 60 0f dd f2 75  |OL...OV.:.O`...u|
0000c550  6e 64 6f 3a f4 20 46 38  0d 4f 6a 1c ea 20 4a 25  |ndo:. F8.Oj.. J%|
0000c560  2c 77 68 25 2c 69 68 25  3a e7 20 ac 20 75 6e 64  |,wh%,ih%:. . und|
0000c570  6f 25 20 e1 0d 4f 74 13  e3 20 4a 25 3d 31 20 b8  |o% ..Ot.. J%=1 .|
0000c580  20 69 74 65 6d 73 25 0d  4f 7e 19 20 72 65 64 6f  | items%.O~. redo|
0000c590  24 28 4a 25 29 3d 24 64  65 73 63 25 28 4a 25 29  |$(J%)=$desc%(J%)|
0000c5a0  0d 4f 88 19 20 24 64 65  73 63 25 28 4a 25 29 3d  |.O.. $desc%(J%)=|
0000c5b0  75 6e 64 6f 24 28 4a 25  29 0d 4f 92 05 ed 0d 4f  |undo$(J%).O....O|
0000c5c0  9c 2d 43 25 21 30 3d 6d  61 69 6e 25 3a c8 99 20  |.-C%!0=main%:.. |
0000c5d0  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 4f  |"Wimp_GetWindowO|
0000c5e0  75 74 6c 69 6e 65 22 2c  2c 43 25 0d 4f a6 32 c8  |utline",,C%.O.2.|
0000c5f0  99 20 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |. "Wimp_ForceRed|
0000c600  72 61 77 22 2c 2d 31 2c  43 25 21 34 2c 43 25 21  |raw",-1,C%!4,C%!|
0000c610  38 2c 43 25 21 31 32 2c  43 25 21 31 36 0d 4f b0  |8,C%!12,C%!16.O.|
0000c620  22 c8 99 20 22 57 69 6d  70 5f 47 65 74 43 61 72  |".. "Wimp_GetCar|
0000c630  65 74 50 6f 73 69 74 69  6f 6e 22 2c 2c 43 25 0d  |etPosition",,C%.|
0000c640  4f ba 15 77 68 25 3d 43  25 21 30 3a 69 68 25 3d  |O..wh%=C%!0:ih%=|
0000c650  43 25 21 34 0d 4f c4 2b  e7 20 77 68 25 3d 6d 61  |C%!4.O.+. wh%=ma|
0000c660  69 6e 25 20 80 20 69 68  25 3e 37 38 20 f2 63 61  |in% . ih%>78 .ca|
0000c670  72 65 74 78 28 77 68 25  2c 69 68 25 2c 30 29 0d  |retx(wh%,ih%,0).|
0000c680  4f ce 1b f2 6e 6f 73 74  61 72 3a 72 65 64 6f 25  |O...nostar:redo%|
0000c690  3d b9 3a 75 6e 64 6f 25  3d a3 0d 4f d8 05 e1 0d  |=.:undo%=..O....|
0000c6a0  4f e2 05 3a 0d 4f ec 0f  dd f2 72 65 64 6f 3a f4  |O..:.O....redo:.|
0000c6b0  20 46 39 0d 4f f6 1c ea  20 4a 25 2c 77 68 25 2c  | F9.O... J%,wh%,|
0000c6c0  69 68 25 3a e7 20 ac 20  72 65 64 6f 25 20 e1 0d  |ih%:. . redo% ..|
0000c6d0  50 00 13 e3 20 4a 25 3d  31 20 b8 20 69 74 65 6d  |P... J%=1 . item|
0000c6e0  73 25 0d 50 0a 19 20 75  6e 64 6f 24 28 4a 25 29  |s%.P.. undo$(J%)|
0000c6f0  3d 24 64 65 73 63 25 28  4a 25 29 0d 50 14 19 20  |=$desc%(J%).P.. |
0000c700  24 64 65 73 63 25 28 4a  25 29 3d 72 65 64 6f 24  |$desc%(J%)=redo$|
0000c710  28 4a 25 29 0d 50 1e 05  ed 0d 50 28 2d 43 25 21  |(J%).P....P(-C%!|
0000c720  30 3d 6d 61 69 6e 25 3a  c8 99 20 22 57 69 6d 70  |0=main%:.. "Wimp|
0000c730  5f 47 65 74 57 69 6e 64  6f 77 4f 75 74 6c 69 6e  |_GetWindowOutlin|
0000c740  65 22 2c 2c 43 25 0d 50  32 32 c8 99 20 22 57 69  |e",,C%.P22.. "Wi|
0000c750  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
0000c760  2d 31 2c 43 25 21 34 2c  43 25 21 38 2c 43 25 21  |-1,C%!4,C%!8,C%!|
0000c770  31 32 2c 43 25 21 31 36  0d 50 3c 22 c8 99 20 22  |12,C%!16.P<".. "|
0000c780  57 69 6d 70 5f 47 65 74  43 61 72 65 74 50 6f 73  |Wimp_GetCaretPos|
0000c790  69 74 69 6f 6e 22 2c 2c  43 25 0d 50 46 15 77 68  |ition",,C%.PF.wh|
0000c7a0  25 3d 43 25 21 30 3a 69  68 25 3d 43 25 21 34 0d  |%=C%!0:ih%=C%!4.|
0000c7b0  50 50 2b e7 20 77 68 25  3d 6d 61 69 6e 25 20 80  |PP+. wh%=main% .|
0000c7c0  20 69 68 25 3e 37 38 20  f2 63 61 72 65 74 78 28  | ih%>78 .caretx(|
0000c7d0  77 68 25 2c 69 68 25 2c  30 29 0d 50 5a 19 f2 73  |wh%,ih%,0).PZ..s|
0000c7e0  74 61 72 3a 75 6e 64 6f  25 3d b9 3a 72 65 64 6f  |tar:undo%=.:redo|
0000c7f0  25 3d a3 0d 50 64 05 e1  0d 50 6e 05 3a 0d 50 78  |%=..Pd...Pn.:.Px|
0000c800  14 dd f2 70 61 72 65 6e  74 28 f8 20 64 69 72 24  |...parent(. dir$|
0000c810  29 0d 50 82 10 ea 20 4a  25 2c 70 61 72 65 6e 74  |).P... J%,parent|
0000c820  24 0d 50 8c 19 70 61 72  65 6e 74 24 3d a4 70 61  |$.P..parent$=.pa|
0000c830  72 65 6e 74 28 64 69 72  24 29 0d 50 96 15 e7 20  |rent(dir$).P... |
0000c840  a4 69 73 72 6f 6f 74 28  64 69 72 24 29 20 e1 0d  |.isroot(dir$) ..|
0000c850  50 a0 1c e7 20 a4 63 68  65 63 6b 6f 62 6a 28 70  |P... .checkobj(p|
0000c860  61 72 65 6e 74 24 2c b9  29 20 8c 0d 50 aa 2d 20  |arent$,.) ..P.- |
0000c870  e7 20 a4 70 72 6f 6d 70  74 73 61 76 65 20 64 69  |. .promptsave di|
0000c880  72 24 3d 70 61 72 65 6e  74 24 3a f2 73 68 6f 77  |r$=parent$:.show|
0000c890  54 69 67 65 72 28 31 29  0d 50 b4 05 cc 0d 50 be  |Tiger(1).P....P.|
0000c8a0  33 20 e7 20 73 74 61 72  25 20 e3 20 4a 25 3d 31  |3 . star% . J%=1|
0000c8b0  20 b8 20 69 74 65 6d 73  25 3a 24 64 65 73 63 25  | . items%:$desc%|
0000c8c0  28 4a 25 29 3d 75 6e 64  6f 24 28 4a 25 29 3a ed  |(J%)=undo$(J%):.|
0000c8d0  0d 50 c8 19 20 f2 6e 6f  73 74 61 72 3a f2 63 77  |.P.. .nostar:.cw|
0000c8e0  28 6d 61 69 6e 25 29 3a  e1 0d 50 d2 05 cd 0d 50  |(main%):..P....P|
0000c8f0  dc 05 e1 0d 50 e6 05 3a  0d 50 f0 10 dd f2 72 6f  |....P..:.P....ro|
0000c900  6f 74 28 66 73 70 24 29  0d 50 fa 15 e7 20 a4 69  |ot(fsp$).P... .i|
0000c910  73 72 6f 6f 74 28 66 73  70 24 29 20 e1 0d 51 04  |sroot(fsp$) ..Q.|
0000c920  22 64 69 72 24 3d a4 72  6f 6f 74 28 66 73 70 24  |"dir$=.root(fsp$|
0000c930  29 3a f2 73 68 6f 77 54  69 67 65 72 28 31 29 0d  |):.showTiger(1).|
0000c940  51 0e 05 e1 0d 51 18 05  3a 0d 51 22 13 dd a4 69  |Q....Q..:.Q"...i|
0000c950  73 72 6f 6f 74 28 70 61  74 68 24 29 0d 51 2c 0b  |sroot(path$).Q,.|
0000c960  ea 20 6c 65 61 66 24 0d  51 36 16 6c 65 61 66 24  |. leaf$.Q6.leaf$|
0000c970  3d a4 6c 65 61 66 28 70  61 74 68 24 29 0d 51 40  |=.leaf(path$).Q@|
0000c980  1a 3d 6c 65 61 66 24 3d  22 24 22 20 84 20 6c 65  |.=leaf$="$" . le|
0000c990  61 66 24 3d 22 26 22 0d  51 4a 05 3a 0d 51 54 10  |af$="&".QJ.:.QT.|
0000c9a0  dd a4 72 6f 6f 74 28 66  73 70 24 29 0d 51 5e 08  |..root(fsp$).Q^.|
0000c9b0  ea 20 69 25 0d 51 68 11  69 25 3d a7 66 73 70 24  |. i%.Qh.i%=.fsp$|
0000c9c0  2c 22 24 22 29 0d 51 72  16 e7 20 69 25 3e 30 20  |,"$").Qr.. i%>0 |
0000c9d0  8c 3d c0 66 73 70 24 2c  69 25 29 0d 51 7c 07 3d  |.=.fsp$,i%).Q|.=|
0000c9e0  22 22 0d 51 86 05 3a 0d  51 90 12 dd f2 76 69 65  |"".Q..:.Q....vie|
0000c9f0  77 65 72 28 64 69 72 24  29 0d 51 9a 32 e7 20 a4  |wer(dir$).Q.2. .|
0000ca00  63 68 65 63 6b 6f 62 6a  28 64 69 72 24 2c b9 29  |checkobj(dir$,.)|
0000ca10  20 8c 20 ff 28 22 46 69  6c 65 72 5f 4f 70 65 6e  | . .("Filer_Open|
0000ca20  44 69 72 20 22 2b 64 69  72 24 29 0d 51 a4 05 e1  |Dir "+dir$).Q...|
0000ca30  0d 51 ae 05 3a 0d 51 b8  11 f4 2d 2d 2d 2d 2d 2d  |.Q..:.Q...------|
0000ca40  2d 2d 2d 2d 2d 2d 0d 51  c2 11 f4 2e 20 43 48 45  |------.Q.... CHE|
0000ca50  43 4b 2d 53 41 56 45 0d  51 cc 11 f4 2d 2d 2d 2d  |CK-SAVE.Q...----|
0000ca60  2d 2d 2d 2d 2d 2d 2d 2d  0d 51 d6 05 3a 0d 51 e0  |--------.Q..:.Q.|
0000ca70  0a dd a4 71 75 69 74 0d  51 ea 0a 65 73 63 25 3d  |...quit.Q..esc%=|
0000ca80  b9 0d 51 f4 2f e7 20 a4  70 72 6f 6d 70 74 73 61  |..Q./. .promptsa|
0000ca90  76 65 20 8c 20 ff 28 22  55 6e 73 65 74 20 54 69  |ve . .("Unset Ti|
0000caa0  67 65 72 24 52 75 6e 6e  69 6e 67 22 29 3a 3d b9  |ger$Running"):=.|
0000cab0  0d 51 fe 06 3d a3 0d 52  08 05 3a 0d 52 12 0d dd  |.Q..=..R..:.R...|
0000cac0  a4 63 68 61 6e 67 65 64  0d 52 1c 17 ea 20 4a 25  |.changed.R... J%|
0000cad0  2c 63 68 25 3a 4a 25 3d  31 3a 63 68 25 3d a3 0d  |,ch%:J%=1:ch%=..|
0000cae0  52 26 05 f5 0d 52 30 22  20 e7 20 24 64 65 73 63  |R&...R0" . $desc|
0000caf0  25 28 4a 25 29 3c 3e 75  6e 64 6f 24 28 4a 25 29  |%(J%)<>undo$(J%)|
0000cb00  20 63 68 25 3d b9 0d 52  3a 0a 20 4a 25 2b 3d 31  | ch%=..R:. J%+=1|
0000cb10  0d 52 44 15 fd 20 4a 25  3e 69 74 65 6d 73 25 20  |.RD.. J%>items% |
0000cb20  84 20 63 68 25 0d 52 4e  08 3d 63 68 25 0d 52 58  |. ch%.RN.=ch%.RX|
0000cb30  05 3a 0d 52 62 10 dd a4  70 72 6f 6d 70 74 73 61  |.:.Rb...promptsa|
0000cb40  76 65 0d 52 6c 11 e7 20  ac 20 73 74 61 72 25 20  |ve.Rl.. . star% |
0000cb50  8c 3d b9 0d 52 76 20 e7  20 ac 20 70 72 6f 6d 70  |.=..Rv . . promp|
0000cb60  74 73 61 76 65 25 20 f2  73 61 76 65 64 61 74 61  |tsave% .savedata|
0000cb70  3a 3d b9 0d 52 80 40 61  6e 73 25 3d a4 6d 73 67  |:=..R.@ans%=.msg|
0000cb80  28 22 53 61 76 65 20 65  64 69 74 65 64 20 64 65  |("Save edited de|
0000cb90  73 63 72 69 70 74 69 6f  6e 73 3f 22 2c 22 44 69  |scriptions?","Di|
0000cba0  73 63 61 72 64 2c 43 61  6e 63 65 6c 2c 53 61 76  |scard,Cancel,Sav|
0000cbb0  65 22 29 0d 52 8a 10 e7  20 61 6e 73 25 3d 31 20  |e").R... ans%=1 |
0000cbc0  8c 3d b9 0d 52 94 19 e7  20 61 6e 73 25 3d 33 20  |.=..R... ans%=3 |
0000cbd0  f2 73 61 76 65 64 61 74  61 3a 3d b9 0d 52 9e 19  |.savedata:=..R..|
0000cbe0  3d a3 3a f4 20 43 61 6e  63 65 6c 20 6f 70 65 72  |=.:. Cancel oper|
0000cbf0  61 74 69 6f 6e 0d 52 a8  05 3a 0d 52 b2 10 f4 2d  |ation.R..:.R...-|
0000cc00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 52 bc 10 f4 2e  |----------.R....|
0000cc10  20 53 41 56 45 20 44 41  54 41 0d 52 c6 10 f4 2d  | SAVE DATA.R...-|
0000cc20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 52 d0 05 3a 0d  |----------.R..:.|
0000cc30  52 da 0e dd f2 73 61 76  65 64 61 74 61 0d 52 e4  |R....savedata.R.|
0000cc40  0d ea 20 4a 25 2c 66 73  70 24 0d 52 ee 1d e7 20  |.. J%,fsp$.R... |
0000cc50  ac 20 a4 63 68 65 63 6b  6f 62 6a 28 64 69 72 24  |. .checkobj(dir$|
0000cc60  2c b9 29 20 8c 20 e1 0d  52 f8 15 c8 99 20 22 48  |,.) . ..R.... "H|
0000cc70  6f 75 72 67 6c 61 73 73  5f 4f 6e 22 0d 53 02 1a  |ourglass_On".S..|
0000cc80  66 73 70 24 3d 64 69 72  24 2b 22 2e 54 69 67 65  |fsp$=dir$+".Tige|
0000cc90  72 44 61 74 61 22 0d 53  0c 0e 46 25 3d ae 28 66  |rData".S..F%=.(f|
0000cca0  73 70 24 29 0d 53 16 1e  ff 28 22 53 65 74 54 79  |sp$).S...("SetTy|
0000ccb0  70 65 20 22 2b 66 73 70  24 2b 22 20 26 34 46 46  |pe "+fsp$+" &4FF|
0000ccc0  22 29 0d 53 20 13 e3 20  4a 25 3d 31 20 b8 20 69  |").S .. J%=1 . i|
0000ccd0  74 65 6d 73 25 0d 53 2a  14 20 6e 61 6d 65 24 3d  |tems%.S*. name$=|
0000cce0  6c 65 61 66 24 28 4a 25  29 0d 53 34 3e 20 64 65  |leaf$(J%).S4> de|
0000ccf0  73 63 24 3d a4 69 74 28  6d 61 69 6e 25 2c 4a 25  |sc$=.it(main%,J%|
0000cd00  2b 37 38 29 3a 6f 6c 64  64 65 73 63 24 3d 75 6e  |+78):olddesc$=un|
0000cd10  64 6f 24 28 4a 25 29 3a  75 6e 64 6f 24 28 4a 25  |do$(J%):undo$(J%|
0000cd20  29 3d 64 65 73 63 24 0d  53 3e 3a 20 e7 20 64 65  |)=desc$.S>: . de|
0000cd30  73 63 24 3c 3e 22 22 20  80 20 6e 61 6d 65 24 3c  |sc$<>"" . name$<|
0000cd40  3e 22 54 69 67 65 72 44  61 74 61 22 20 d5 23 46  |>"TigerData" .#F|
0000cd50  25 2c 6e 61 6d 65 24 2b  22 20 22 2b 64 65 73 63  |%,name$+" "+desc|
0000cd60  24 0d 53 48 05 ed 0d 53  52 0e d9 20 23 46 25 3a  |$.SH...SR.. #F%:|
0000cd70  46 25 3d 30 0d 53 5c 0b  f2 6e 6f 73 74 61 72 0d  |F%=0.S\..nostar.|
0000cd80  53 66 1e c8 99 20 22 48  6f 75 72 67 6c 61 73 73  |Sf... "Hourglass|
0000cd90  5f 53 6d 61 73 68 22 3a  f2 62 65 65 70 0d 53 70  |_Smash":.beep.Sp|
0000cda0  05 e1 0d 53 7a 05 3a 0d  53 84 13 f4 2d 2d 2d 2d  |...Sz.:.S...----|
0000cdb0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 53 8e 13 f4 2e  |----------.S....|
0000cdc0  20 43 4f 4e 56 45 52 54  20 44 41 54 41 0d 53 98  | CONVERT DATA.S.|
0000cdd0  13 f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..--------------|
0000cde0  0d 53 a2 05 3a 0d 53 ac  0d dd f2 63 6f 6e 76 65  |.S..:.S....conve|
0000cdf0  72 74 0d 53 b6 2b f4 20  74 72 61 6e 73 66 65 72  |rt.S.+. transfer|
0000ce00  20 64 65 73 63 72 69 70  74 69 6f 6e 73 20 66 72  | descriptions fr|
0000ce10  6f 6d 20 21 54 69 67 65  72 44 61 74 61 0d 53 c0  |om !TigerData.S.|
0000ce20  25 f4 20 61 6e 64 20 6d  65 72 67 65 20 77 69 74  |%. and merge wit|
0000ce30  68 20 61 6e 79 20 69 6e  20 54 69 67 65 72 44 61  |h any in TigerDa|
0000ce40  74 61 0d 53 ca 2d f4 20  6f 70 74 69 6f 6e 61 6c  |ta.S.-. optional|
0000ce50  6c 79 20 64 65 6c 65 74  65 20 21 54 69 67 65 72  |ly delete !Tiger|
0000ce60  44 61 74 61 20 61 66 74  65 72 77 61 72 64 73 0d  |Data afterwards.|
0000ce70  53 d4 11 ea 20 4a 25 2c  64 24 2c 6e 61 6d 65 24  |S... J%,d$,name$|
0000ce80  0d 53 de 06 20 3a 0d 53  e8 26 f4 20 64 6f 65 73  |.S.. :.S.&. does|
0000ce90  20 64 69 72 24 20 68 61  76 65 20 61 20 54 69 67  | dir$ have a Tig|
0000cea0  65 72 44 61 74 61 20 66  69 6c 65 3f 0d 53 f2 2b  |erData file?.S.+|
0000ceb0  f4 20 49 66 20 73 6f 20  70 6c 61 63 65 20 69 6e  |. If so place in|
0000cec0  20 6d 65 6d 6f 72 79 20  61 6e 64 20 6c 6f 61 64  | memory and load|
0000ced0  20 61 72 72 61 79 73 0d  53 fc 0c 64 65 73 63 73  | arrays.S..descs|
0000cee0  25 3d 30 0d 54 06 31 64  24 3d 64 69 72 24 2b 22  |%=0.T.1d$=dir$+"|
0000cef0  2e 54 69 67 65 72 44 61  74 61 22 3a 70 72 65 73  |.TigerData":pres|
0000cf00  65 6e 74 25 3d a4 63 68  65 63 6b 6f 62 6a 28 64  |ent%=.checkobj(d|
0000cf10  24 2c a3 29 0d 54 10 28  e7 20 70 72 65 73 65 6e  |$,.).T.(. presen|
0000cf20  74 25 20 64 65 73 63 73  25 3d a4 6c 6f 61 64 54  |t% descs%=.loadT|
0000cf30  69 67 65 72 44 61 74 61  28 64 24 29 0d 54 1a 05  |igerData(d$).T..|
0000cf40  3a 0d 54 24 1c f4 20 72  65 61 64 20 66 69 6c 65  |:.T$.. read file|
0000cf50  73 20 69 6e 20 44 61 74  61 20 64 69 72 0d 54 2e  |s in Data dir.T.|
0000cf60  1e 64 24 3d 64 69 72 24  2b 22 2e 21 54 69 67 65  |.d$=dir$+".!Tige|
0000cf70  72 44 61 74 61 2e 44 61  74 61 22 0d 54 38 2b 70  |rData.Data".T8+p|
0000cf80  72 65 73 65 6e 74 25 3d  a4 63 68 65 63 6b 6f 62  |resent%=.checkob|
0000cf90  6a 28 64 24 2c b9 29 3a  e7 20 ac 20 70 72 65 73  |j(d$,.):. . pres|
0000cfa0  65 6e 74 25 20 e1 0d 54  42 15 c8 99 20 22 48 6f  |ent% ..TB... "Ho|
0000cfb0  75 72 67 6c 61 73 73 5f  4f 6e 22 0d 54 4c 0b 6e  |urglass_On".TL.n|
0000cfc0  65 78 74 25 3d 30 0d 54  56 05 f5 0d 54 60 3b 20  |ext%=0.TV...T`; |
0000cfd0  c8 99 20 22 4f 53 5f 47  42 50 42 22 2c 31 30 2c  |.. "OS_GBPB",10,|
0000cfe0  64 24 2c 71 25 2c 31 2c  6e 65 78 74 25 2c 31 30  |d$,q%,1,next%,10|
0000cff0  30 2c 22 2a 22 20 b8 20  2c 2c 2c 6d 6f 72 65 25  |0,"*" . ,,,more%|
0000d000  2c 6e 65 78 74 25 0d 54  6a 0e 20 e7 20 6d 6f 72  |,next%.Tj. . mor|
0000d010  65 25 20 8c 0d 54 74 18  20 20 6e 61 6d 65 24 3d  |e% ..Tt.  name$=|
0000d020  a4 6e 61 6d 65 28 71 25  2b 32 30 29 0d 54 7e 23  |.name(q%+20).T~#|
0000d030  20 20 74 79 70 65 25 3d  a4 66 69 6c 65 74 79 70  |  type%=.filetyp|
0000d040  65 28 64 24 2b 22 2e 22  2b 6e 61 6d 65 24 29 0d  |e(d$+"."+name$).|
0000d050  54 88 14 20 20 e7 20 74  79 70 65 25 3d 26 32 46  |T..  . type%=&2F|
0000d060  46 20 8c 0d 54 92 2c 20  20 20 f4 20 65 78 74 72  |F ..T.,   . extr|
0000d070  61 63 74 20 6e 61 6d 65  2c 64 65 73 63 20 61 6e  |act name,desc an|
0000d080  64 20 61 64 64 20 74 6f  20 61 72 72 61 79 73 0d  |d add to arrays.|
0000d090  54 9c 19 20 20 20 46 25  3d ad 28 64 24 2b 22 2e  |T..   F%=.(d$+".|
0000d0a0  22 2b 6e 61 6d 65 24 29  0d 54 a6 0f 20 20 20 66  |"+name$).T..   f|
0000d0b0  6f 75 6e 64 25 3d a3 0d  54 b0 16 20 20 20 e3 20  |ound%=..T..   . |
0000d0c0  4a 25 3d 31 20 b8 20 64  65 73 63 73 25 0d 54 ba  |J%=1 . descs%.T.|
0000d0d0  2c 20 20 20 20 e7 20 6e  61 6d 65 24 28 4a 25 29  |,    . name$(J%)|
0000d0e0  3d 6e 61 6d 65 24 20 66  6f 75 6e 64 25 3d b9 3a  |=name$ found%=.:|
0000d0f0  4a 25 3d 64 65 73 63 73  25 0d 54 c4 08 20 20 20  |J%=descs%.T..   |
0000d100  ed 0d 54 ce 13 20 20 20  e7 20 ac 20 66 6f 75 6e  |..T..   . . foun|
0000d110  64 25 20 8c 0d 54 d8 11  20 20 20 20 64 65 73 63  |d% ..T..    desc|
0000d120  73 25 2b 3d 31 0d 54 e2  2e 20 20 20 20 6e 61 6d  |s%+=1.T..    nam|
0000d130  65 24 28 64 65 73 63 73  25 29 3d 6e 61 6d 65 24  |e$(descs%)=name$|
0000d140  3a 64 65 73 63 24 28 64  65 73 63 73 25 29 3d be  |:desc$(descs%)=.|
0000d150  23 46 25 0d 54 ec 08 20  20 20 cd 0d 54 f6 11 20  |#F%.T..   ..T.. |
0000d160  20 20 d9 20 23 46 25 3a  46 25 3d 30 0d 55 00 07  |  . #F%:F%=0.U..|
0000d170  20 20 cd 0d 55 0a 06 20  cd 0d 55 14 0e fd 20 6e  |  ..U.. ..U... n|
0000d180  65 78 74 25 3d 2d 31 0d  55 1e 1b f2 77 72 69 74  |ext%=-1.U...writ|
0000d190  65 54 69 67 65 72 44 61  74 61 28 64 65 73 63 73  |eTigerData(descs|
0000d1a0  25 29 0d 55 28 05 3a 0d  55 32 4d 61 6e 73 25 3d  |%).U(.:.U2Mans%=|
0000d1b0  a4 6d 73 67 28 22 21 54  69 67 65 72 44 61 74 61  |.msg("!TigerData|
0000d1c0  20 69 73 20 6e 6f 77 20  72 65 64 75 6e 64 61 6e  | is now redundan|
0000d1d0  74 2c 4f 4b 20 74 6f 20  64 65 6c 65 74 65 20 69  |t,OK to delete i|
0000d1e0  74 3f 22 2c 22 52 65 74  61 69 6e 2c 44 65 6c 65  |t?","Retain,Dele|
0000d1f0  74 65 22 29 0d 55 3c 0e  e7 20 61 6e 73 25 3d 32  |te").U<.. ans%=2|
0000d200  20 8c 0d 55 46 18 20 f4  20 64 65 6c 65 74 65 20  | ..UF. . delete |
0000d210  21 54 69 67 65 72 44 61  74 61 0d 55 50 16 20 c8  |!TigerData.UP. .|
0000d220  99 20 22 48 6f 75 72 67  6c 61 73 73 5f 4f 6e 22  |. "Hourglass_On"|
0000d230  0d 55 5a 2e 20 46 69 6c  65 72 41 63 74 69 6f 6e  |.UZ. FilerAction|
0000d240  25 3d a4 66 69 6c 65 72  61 63 74 69 6f 6e 3a 6f  |%=.fileraction:o|
0000d250  70 74 73 25 3d a4 72 65  61 64 6f 70 74 73 0d 55  |pts%=.readopts.U|
0000d260  64 15 20 e7 20 46 69 6c  65 72 41 63 74 69 6f 6e  |d. . FilerAction|
0000d270  25 20 8c 0d 55 6e 27 20  20 c8 99 20 26 34 30 30  |% ..Un'  .. &400|
0000d280  44 45 2c 22 46 69 6c 65  72 5f 41 63 74 69 6f 6e  |DE,"Filer_Action|
0000d290  22 20 b8 20 74 61 73 6b  68 25 0d 55 78 06 20 cc  |" . taskh%.Ux. .|
0000d2a0  0d 55 82 33 20 20 24 43  25 3d 22 44 65 6c 65 74  |.U.3  $C%="Delet|
0000d2b0  65 20 66 69 6c 65 73 22  3a c8 99 20 22 57 69 6d  |e files":.. "Wim|
0000d2c0  70 5f 43 6f 6d 6d 61 6e  64 57 69 6e 64 6f 77 22  |p_CommandWindow"|
0000d2d0  2c 43 25 0d 55 8c 06 20  cd 0d 55 96 1a 20 73 24  |,C%.U.. ..U.. s$|
0000d2e0  3d 64 69 72 24 2b 22 2e  21 54 69 67 65 72 44 61  |=dir$+".!TigerDa|
0000d2f0  74 61 22 0d 55 a0 1b 20  f2 77 69 70 65 28 73 24  |ta".U.. .wipe(s$|
0000d300  2c 46 69 6c 65 72 41 63  74 69 6f 6e 25 29 0d 55  |,FilerAction%).U|
0000d310  aa 15 20 e7 20 46 69 6c  65 72 41 63 74 69 6f 6e  |.. . FilerAction|
0000d320  25 20 8c 0d 55 b4 1e 20  20 c8 99 20 26 34 30 46  |% ..U..  .. &40F|
0000d330  38 32 2c 74 61 73 6b 68  25 2c 32 2c 6f 70 74 73  |82,taskh%,2,opts|
0000d340  25 0d 55 be 06 20 cc 0d  55 c8 1f 20 20 c8 99 20  |%.U.. ..U..  .. |
0000d350  22 57 69 6d 70 5f 43 6f  6d 6d 61 6e 64 57 69 6e  |"Wimp_CommandWin|
0000d360  64 6f 77 22 2c 30 0d 55  d2 06 20 cd 0d 55 dc 05  |dow",0.U.. ..U..|
0000d370  cd 0d 55 e6 05 3a 0d 55  f0 11 f2 73 68 6f 77 54  |..U..:.U...showT|
0000d380  69 67 65 72 28 31 29 0d  55 fa 0d f2 73 61 76 65  |iger(1).U...save|
0000d390  64 61 74 61 0d 56 04 18  c8 99 20 22 48 6f 75 72  |data.V.... "Hour|
0000d3a0  67 6c 61 73 73 5f 53 6d  61 73 68 22 0d 56 0e 05  |glass_Smash".V..|
0000d3b0  e1 0d 56 18 05 3a 0d 56  22 10 f4 2d 2d 2d 2d 2d  |..V..:.V"..-----|
0000d3c0  2d 2d 2d 2d 2d 2d 0d 56  2c 10 f4 2e 20 53 41 56  |------.V,... SAV|
0000d3d0  45 20 54 45 58 54 0d 56  36 10 f4 2d 2d 2d 2d 2d  |E TEXT.V6..-----|
0000d3e0  2d 2d 2d 2d 2d 2d 0d 56  40 05 3a 0d 56 4a 11 dd  |------.V@.:.VJ..|
0000d3f0  f2 70 72 65 70 73 61 76  65 62 6f 78 0d 56 54 19  |.prepsavebox.VT.|
0000d400  ea 20 4a 25 2c 77 68 25  3a 77 68 25 3d 73 61 76  |. J%,wh%:wh%=sav|
0000d410  65 62 6f 78 25 0d 56 5e  28 e3 20 4a 25 3d 35 20  |ebox%.V^(. J%=5 |
0000d420  b8 20 31 30 3a f2 73 69  73 28 77 68 25 2c 4a 25  |. 10:.sis(wh%,J%|
0000d430  2c 26 31 37 32 30 42 31  33 33 29 3a ed 0d 56 68  |,&1720B133):..Vh|
0000d440  11 c8 8e 20 64 69 73 70  6c 61 79 25 20 ca 0d 56  |... display% ..V|
0000d450  72 22 20 c9 20 31 3a f2  69 74 28 77 68 25 2c 31  |r" . 1:.it(wh%,1|
0000d460  30 2c 22 44 65 73 63 72  69 70 74 69 6f 6e 22 29  |0,"Description")|
0000d470  0d 56 7c 22 20 c9 20 32  3a f2 69 74 28 77 68 25  |.V|" . 2:.it(wh%|
0000d480  2c 31 30 2c 22 4f 62 6a  65 63 74 20 69 6e 66 6f  |,10,"Object info|
0000d490  22 29 0d 56 86 2a 20 20  e3 20 4a 25 3d 35 20 b8  |").V.*  . J%=5 .|
0000d4a0  20 31 30 3a f2 73 69 73  28 77 68 25 2c 4a 25 2c  | 10:.sis(wh%,J%,|
0000d4b0  26 31 37 36 30 42 31 33  33 29 3a ed 0d 56 90 22  |&1760B133):..V."|
0000d4c0  20 c9 20 33 3a f2 69 74  28 77 68 25 2c 31 30 2c  | . 3:.it(wh%,10,|
0000d4d0  22 4e 65 73 74 65 64 20  73 69 7a 65 22 29 0d 56  |"Nested size").V|
0000d4e0  9a 05 cb 0d 56 a4 05 e1  0d 56 ae 05 3a 0d 56 b8  |....V....V..:.V.|
0000d4f0  24 dd f2 71 75 69 63 6b  73 61 76 65 28 73 77 68  |$..quicksave(swh|
0000d500  25 2c 73 69 68 25 2c 73  61 76 65 74 79 70 65 25  |%,sih%,savetype%|
0000d510  29 0d 56 c2 1d f4 20 4f  4b 20 6f 72 20 52 65 74  |).V... OK or Ret|
0000d520  20 69 6e 20 73 61 76 65  20 70 61 6e 65 6c 0d 56  | in save panel.V|
0000d530  cc 1a e7 20 a4 64 65 6d  6f 28 22 54 65 78 74 20  |... .demo("Text |
0000d540  73 61 76 65 22 29 20 e1  0d 56 d6 1b e7 20 ac 20  |save") ..V... . |
0000d550  a4 63 68 65 63 6b 6f 62  6a 28 64 69 72 24 2c b9  |.checkobj(dir$,.|
0000d560  29 20 e1 0d 56 e0 21 e7  20 ac 20 a4 6f 6b 74 6f  |) ..V.!. . .okto|
0000d570  73 61 76 65 28 73 77 68  25 2c 66 6e 69 63 6f 6e  |save(swh%,fnicon|
0000d580  25 29 20 e1 0d 56 ea 0d  c8 8e 20 73 69 68 25 20  |%) ..V.... sih% |
0000d590  ca 0d 56 f4 37 20 c9 20  64 72 61 67 69 63 6f 6e  |..V.7 . dragicon|
0000d5a0  25 2c 66 6e 69 63 6f 6e  25 2c 6f 6b 69 63 6f 6e  |%,fnicon%,okicon|
0000d5b0  25 3a 66 73 70 24 3d a4  69 74 28 73 77 68 25 2c  |%:fsp$=.it(swh%,|
0000d5c0  66 6e 69 63 6f 6e 25 29  0d 56 fe 05 cb 0d 57 08  |fnicon%).V....W.|
0000d5d0  12 e7 20 a7 66 73 70 24  2c 22 2e 22 29 20 8c 0d  |.. .fsp$,".") ..|
0000d5e0  57 12 15 20 f2 73 74 61  72 74 73 61 76 65 28 66  |W.. .startsave(f|
0000d5f0  73 70 24 29 0d 57 1c 1c  20 f2 73 61 76 65 64 69  |sp$).W.. .savedi|
0000d600  72 28 a4 70 61 72 65 6e  74 28 66 73 70 24 29 29  |r(.parent(fsp$))|
0000d610  0d 57 26 26 20 e7 20 a4  69 73 28 73 61 76 65 62  |.W&& . .is(saveb|
0000d620  6f 78 25 2c 31 32 29 20  f2 72 65 63 75 72 73 69  |ox%,12) .recursi|
0000d630  76 65 73 61 76 65 0d 57  30 13 20 f2 65 6e 64 73  |vesave.W0. .ends|
0000d640  61 76 65 28 66 73 70 24  29 0d 57 3a 05 cc 0d 57  |ave(fsp$).W:...W|
0000d650  44 33 20 61 6e 73 25 3d  a4 6d 73 67 28 22 54 6f  |D3 ans%=.msg("To|
0000d660  20 73 61 76 65 20 2d 20  64 72 61 67 20 69 63 6f  | save - drag ico|
0000d670  6e 20 74 6f 20 46 69 6c  65 72 22 2c 22 4f 4b 22  |n to Filer","OK"|
0000d680  29 0d 57 4e 05 cd 0d 57  58 05 e1 0d 57 62 05 3a  |).WN...WX...Wb.:|
0000d690  0d 57 6c 17 dd a4 6f 6b  74 6f 73 61 76 65 28 77  |.Wl...oktosave(w|
0000d6a0  68 25 2c 69 68 25 29 0d  57 76 1e ea 20 70 61 74  |h%,ih%).Wv.. pat|
0000d6b0  68 24 3a 70 61 74 68 24  3d a4 69 74 28 77 68 25  |h$:path$=.it(wh%|
0000d6c0  2c 69 68 25 29 0d 57 80  40 e7 20 70 61 74 68 24  |,ih%).W.@. path$|
0000d6d0  3d 22 22 20 61 6e 73 25  3d a4 6d 73 67 28 22 45  |="" ans%=.msg("E|
0000d6e0  6e 74 65 72 20 66 69 6c  65 6e 61 6d 65 20 62 65  |nter filename be|
0000d6f0  66 6f 72 65 20 73 61 76  69 6e 67 22 2c 22 4f 4b  |fore saving","OK|
0000d700  22 29 3a 3d a3 0d 57 8a  06 3d b9 0d 57 94 05 3a  |"):=..W..=..W..:|
0000d710  0d 57 9e 0e dd a4 64 65  6d 6f 28 73 24 29 0d 57  |.W....demo(s$).W|
0000d720  a8 42 e7 20 64 65 6d 6f  25 20 61 6e 73 25 3d a4  |.B. demo% ans%=.|
0000d730  6d 73 67 28 73 24 2b 22  2c 6e 6f 74 20 61 76 61  |msg(s$+",not ava|
0000d740  69 6c 61 62 6c 65 20 69  6e 20 64 65 6d 6f 20 76  |ilable in demo v|
0000d750  65 72 73 69 6f 6e 22 2c  22 4f 4b 22 29 3a 3d b9  |ersion","OK"):=.|
0000d760  0d 57 b2 06 3d a3 0d 57  bc 05 3a 0d 57 c6 15 dd  |.W..=..W..:.W...|
0000d770  f2 73 74 61 72 74 73 61  76 65 28 66 73 70 24 29  |.startsave(fsp$)|
0000d780  0d 57 d0 13 ea 20 6e 65  78 74 25 2c 6e 75 6d 62  |.W... next%,numb|
0000d790  65 72 25 0d 57 da 0e f2  63 6c 6f 73 65 6d 65 6e  |er%.W...closemen|
0000d7a0  75 0d 57 e4 15 c8 99 20  22 48 6f 75 72 67 6c 61  |u.W.... "Hourgla|
0000d7b0  73 73 5f 4f 6e 22 0d 57  ee 11 73 65 70 24 3d bd  |ss_On".W..sep$=.|
0000d7c0  26 41 3a f4 20 4c 46 0d  57 f8 0e 46 25 3d ae 28  |&A:. LF.W..F%=.(|
0000d7d0  66 73 70 24 29 0d 58 02  1e ff 28 22 53 65 74 54  |fsp$).X...("SetT|
0000d7e0  79 70 65 20 22 2b 66 73  70 24 2b 22 20 26 46 46  |ype "+fsp$+" &FF|
0000d7f0  46 22 29 0d 58 0c 1a 73  24 3d a4 74 6f 64 61 79  |F").X..s$=.today|
0000d800  2b 73 65 70 24 3a d5 23  46 25 2c 73 24 0d 58 16  |+sep$:.#F%,s$.X.|
0000d810  05 e1 0d 58 20 05 3a 0d  58 2a 13 dd f2 65 6e 64  |...X .:.X*...end|
0000d820  73 61 76 65 28 66 73 70  24 29 0d 58 34 0e d9 20  |save(fsp$).X4.. |
0000d830  23 46 25 3a 46 25 3d 30  0d 58 3e 18 c8 99 20 22  |#F%:F%=0.X>... "|
0000d840  48 6f 75 72 67 6c 61 73  73 5f 53 6d 61 73 68 22  |Hourglass_Smash"|
0000d850  0d 58 48 05 e1 0d 58 52  05 3a 0d 58 5c 11 dd f2  |.XH...XR.:.X\...|
0000d860  73 61 76 65 64 69 72 28  64 24 29 0d 58 66 11 ea  |savedir(d$).Xf..|
0000d870  20 6d 6f 72 65 25 2c 6e  65 78 74 25 0d 58 70 16  | more%,next%.Xp.|
0000d880  ea 20 77 68 25 3a 77 68  25 3d 73 61 76 65 62 6f  |. wh%:wh%=savebo|
0000d890  78 25 0d 58 7a 25 73 70  25 3d 32 3a 6c 69 6e 65  |x%.Xz%sp%=2:line|
0000d8a0  24 3d c4 a4 6d 61 78 6c  65 6e 28 64 24 2c 73 70  |$=..maxlen(d$,sp|
0000d8b0  25 29 2c 22 3d 22 29 0d  58 84 0b d5 23 46 25 2c  |%),"=").X...#F%,|
0000d8c0  64 24 0d 58 8e 13 e7 20  a4 69 73 28 77 68 25 2c  |d$.X... .is(wh%,|
0000d8d0  31 30 29 20 8c 0d 58 98  18 20 73 25 3d a7 24 64  |10) ..X.. s%=.$d|
0000d8e0  65 73 63 25 28 30 29 2c  22 2d 20 22 29 0d 58 a2  |esc%(0),"- ").X.|
0000d8f0  24 20 e7 20 73 25 3e 30  20 73 24 3d c2 73 24 2c  |$ . s%>0 s$=.s$,|
0000d900  a9 73 24 2d 73 25 2d 31  29 3a d5 23 46 25 2c 73  |.s$-s%-1):.#F%,s|
0000d910  24 0d 58 ac 05 cd 0d 58  b6 0e d5 23 46 25 2c 6c  |$.X....X...#F%,l|
0000d920  69 6e 65 24 0d 58 c0 15  f4 20 64 69 72 73 20 74  |ine$.X... dirs t|
0000d930  68 65 6e 20 66 69 6c 65  73 0d 58 ca 0b 6e 65 78  |hen files.X..nex|
0000d940  74 25 3d 30 0d 58 d4 10  c8 95 20 6e 65 78 74 25  |t%=0.X.... next%|
0000d950  3c 3e 2d 31 0d 58 de 3b  20 c8 99 20 22 4f 53 5f  |<>-1.X.; .. "OS_|
0000d960  47 42 50 42 22 2c 31 30  2c 64 24 2c 43 25 2c 31  |GBPB",10,d$,C%,1|
0000d970  2c 6e 65 78 74 25 2c 31  30 30 2c 22 2a 22 20 b8  |,next%,100,"*" .|
0000d980  20 2c 2c 2c 6d 6f 72 65  25 2c 6e 65 78 74 25 0d  | ,,,more%,next%.|
0000d990  58 e8 27 20 e7 20 6d 6f  72 65 25 3e 30 20 80 20  |X.' . more%>0 . |
0000d9a0  43 25 3f 31 36 3d 32 20  f2 64 6f 6c 69 6e 65 28  |C%?16=2 .doline(|
0000d9b0  64 24 2c 43 25 29 0d 58  f2 05 ce 0d 58 fc 0b 6e  |d$,C%).X....X..n|
0000d9c0  65 78 74 25 3d 30 0d 59  06 10 c8 95 20 6e 65 78  |ext%=0.Y.... nex|
0000d9d0  74 25 3c 3e 2d 31 0d 59  10 3b 20 c8 99 20 22 4f  |t%<>-1.Y.; .. "O|
0000d9e0  53 5f 47 42 50 42 22 2c  31 30 2c 64 24 2c 43 25  |S_GBPB",10,d$,C%|
0000d9f0  2c 31 2c 6e 65 78 74 25  2c 31 30 30 2c 22 2a 22  |,1,next%,100,"*"|
0000da00  20 b8 20 2c 2c 2c 6d 6f  72 65 25 2c 6e 65 78 74  | . ,,,more%,next|
0000da10  25 0d 59 1a 27 20 e7 20  6d 6f 72 65 25 3e 30 20  |%.Y.' . more%>0 |
0000da20  80 20 43 25 3f 31 36 3d  31 20 f2 64 6f 6c 69 6e  |. C%?16=1 .dolin|
0000da30  65 28 64 24 2c 43 25 29  0d 59 24 05 ce 0d 59 2e  |e(d$,C%).Y$...Y.|
0000da40  13 d5 23 46 25 2c 6c 69  6e 65 24 2b 73 65 70 24  |..#F%,line$+sep$|
0000da50  0d 59 38 05 e1 0d 59 42  05 3a 0d 59 4c 13 dd f2  |.Y8...YB.:.YL...|
0000da60  64 6f 6c 69 6e 65 28 64  24 2c 43 25 29 0d 59 56  |doline(d$,C%).YV|
0000da70  28 e7 20 a4 67 65 74 6f  62 6a 69 6e 66 6f 28 64  |(. .getobjinfo(d|
0000da80  24 2b 22 2e 22 2b a4 6e  61 6d 65 28 43 25 2b 32  |$+"."+.name(C%+2|
0000da90  30 29 29 20 8c 0d 59 60  18 20 64 65 73 63 24 3d  |0)) ..Y`. desc$=|
0000daa0  24 64 65 73 63 25 28 6e  65 78 74 25 29 0d 59 6a  |$desc%(next%).Yj|
0000dab0  1a 20 d5 23 46 25 2c a4  6d 61 6b 65 6c 69 6e 65  |. .#F%,.makeline|
0000dac0  28 6e 61 6d 65 24 29 0d  59 74 05 cd 0d 59 7e 05  |(name$).Yt...Y~.|
0000dad0  e1 0d 59 88 05 3a 0d 59  92 15 dd a4 6d 61 6b 65  |..Y..:.Y....make|
0000dae0  6c 69 6e 65 28 6e 61 6d  65 24 29 0d 59 9c 1d ea  |line(name$).Y...|
0000daf0  20 73 24 2c 73 70 24 2c  77 68 25 3a 77 68 25 3d  | s$,sp$,wh%:wh%=|
0000db00  73 61 76 65 62 6f 78 25  0d 59 a6 11 73 70 24 3d  |savebox%.Y..sp$=|
0000db10  c4 73 70 25 2c 22 20 22  29 0d 59 b0 1c 73 24 3d  |.sp%," ").Y..s$=|
0000db20  6e 61 6d 65 24 2b c4 31  30 2d a9 6e 61 6d 65 24  |name$+.10-.name$|
0000db30  2c 22 20 22 29 0d 59 ba  2e e7 20 a4 69 73 28 77  |," ").Y... .is(w|
0000db40  68 25 2c 36 29 20 73 24  2b 3d 73 70 24 2b 74 79  |h%,6) s$+=sp$+ty|
0000db50  70 65 24 2b c4 31 33 2d  a9 74 79 70 65 24 2c 22  |pe$+.13-.type$,"|
0000db60  20 22 29 0d 59 c4 33 e7  20 a4 69 73 28 77 68 25  | ").Y.3. .is(wh%|
0000db70  2c 37 29 20 73 24 2b 3d  73 70 24 2b c4 37 2d a9  |,7) s$+=sp$+.7-.|
0000db80  66 69 6c 65 6c 65 6e 24  2c 22 20 22 29 2b 66 69  |filelen$," ")+fi|
0000db90  6c 65 6c 65 6e 24 0d 59  ce 31 e7 20 a4 69 73 28  |lelen$.Y.1. .is(|
0000dba0  77 68 25 2c 38 29 20 73  24 2b 3d 73 70 24 2b 61  |wh%,8) s$+=sp$+a|
0000dbb0  63 63 65 73 73 24 2b c4  36 2d a9 61 63 63 65 73  |ccess$+.6-.acces|
0000dbc0  73 24 2c 22 20 22 29 0d  59 d8 28 e7 20 a4 69 73  |s$," ").Y.(. .is|
0000dbd0  28 77 68 25 2c 39 29 20  73 24 2b 3d 73 70 24 2b  |(wh%,9) s$+=sp$+|
0000dbe0  64 61 74 65 24 2b 73 70  24 2b 74 69 6d 65 24 0d  |date$+sp$+time$.|
0000dbf0  59 e2 29 e7 20 a4 69 73  28 77 68 25 2c 31 30 29  |Y.). .is(wh%,10)|
0000dc00  20 73 24 2b 3d 73 70 24  2b c0 64 65 73 63 24 2c  | s$+=sp$+.desc$,|
0000dc10  32 35 33 2d a9 73 24 29  0d 59 ec 1b f4 20 61 76  |253-.s$).Y... av|
0000dc20  6f 69 64 20 73 74 72 69  6e 67 20 74 6f 6f 20 6c  |oid string too l|
0000dc30  6f 6e 67 0d 59 f6 07 3d  73 24 0d 5a 00 05 3a 0d  |ong.Y..=s$.Z..:.|
0000dc40  5a 0a 14 dd a4 6d 61 78  6c 65 6e 28 64 24 2c 73  |Z....maxlen(d$,s|
0000dc50  70 25 29 0d 5a 14 27 ea  20 4a 25 2c 4c 31 25 2c  |p%).Z.'. J%,L1%,|
0000dc60  4c 32 25 2c 4c 33 25 2c  4c 34 25 2c 77 68 25 2c  |L2%,L3%,L4%,wh%,|
0000dc70  6d 61 78 6c 65 6e 25 2c  73 25 0d 5a 1e 1a 77 68  |maxlen%,s%.Z..wh|
0000dc80  25 3d 73 61 76 65 62 6f  78 25 3a 6d 61 78 6c 65  |%=savebox%:maxle|
0000dc90  6e 25 3d 30 0d 5a 28 1e  73 24 3d 24 64 65 73 63  |n%=0.Z(.s$=$desc|
0000dca0  25 28 30 29 3a 73 25 3d  a7 73 24 2c 22 2d 22 29  |%(0):s%=.s$,"-")|
0000dcb0  2d 31 0d 5a 32 19 4c 31  25 3d a9 64 24 3a 4c 32  |-1.Z2.L1%=.d$:L2|
0000dcc0  25 3d 73 25 3a 4c 33 25  3d 31 30 0d 5a 3c 1e e7  |%=s%:L3%=10.Z<..|
0000dcd0  20 a4 69 73 28 77 68 25  2c 36 29 20 4c 33 25 2b  | .is(wh%,6) L3%+|
0000dce0  3d 28 73 70 25 2b 31 34  29 0d 5a 46 1d e7 20 a4  |=(sp%+14).ZF.. .|
0000dcf0  69 73 28 77 68 25 2c 37  29 20 4c 33 25 2b 3d 28  |is(wh%,7) L3%+=(|
0000dd00  73 70 25 2b 37 29 0d 5a  50 1d e7 20 a4 69 73 28  |sp%+7).ZP.. .is(|
0000dd10  77 68 25 2c 38 29 20 4c  33 25 2b 3d 28 73 70 25  |wh%,8) L3%+=(sp%|
0000dd20  2b 36 29 0d 5a 5a 22 e7  20 a4 69 73 28 77 68 25  |+6).ZZ". .is(wh%|
0000dd30  2c 39 29 20 4c 33 25 2b  3d 28 73 70 25 2b 73 70  |,9) L3%+=(sp%+sp|
0000dd40  25 2b 31 39 29 0d 5a 64  13 e7 20 a4 69 73 28 77  |%+19).Zd.. .is(w|
0000dd50  68 25 2c 31 30 29 20 8c  0d 5a 6e 0a 20 4c 34 25  |h%,10) ..Zn. L4%|
0000dd60  3d 30 0d 5a 78 14 20 e3  20 4a 25 3d 31 20 b8 20  |=0.Zx. . J%=1 . |
0000dd70  69 74 65 6d 73 25 0d 5a  82 16 20 20 64 65 73 63  |items%.Z..  desc|
0000dd80  24 3d 24 64 65 73 63 25  28 4a 25 29 0d 5a 8c 1f  |$=$desc%(J%).Z..|
0000dd90  20 20 e7 20 a9 64 65 73  63 24 3e 4c 34 25 20 8c  |  . .desc$>L4% .|
0000dda0  20 4c 34 25 3d a9 64 65  73 63 24 0d 5a 96 06 20  | L4%=.desc$.Z.. |
0000ddb0  ed 0d 5a a0 1b 20 e7 20  4c 34 25 3e 30 20 4c 33  |..Z.. . L4%>0 L3|
0000ddc0  25 2b 3d 28 73 70 25 2b  4c 34 25 29 0d 5a aa 05  |%+=(sp%+L4%).Z..|
0000ddd0  cd 0d 5a b4 1d e7 20 4c  31 25 3e 6d 61 78 6c 65  |..Z... L1%>maxle|
0000dde0  6e 25 20 6d 61 78 6c 65  6e 25 3d 4c 31 25 0d 5a  |n% maxlen%=L1%.Z|
0000ddf0  be 2b e7 20 4c 32 25 3e  6d 61 78 6c 65 6e 25 20  |.+. L2%>maxlen% |
0000de00  80 20 a4 69 73 28 77 68  25 2c 31 30 29 20 6d 61  |. .is(wh%,10) ma|
0000de10  78 6c 65 6e 25 3d 4c 32  25 0d 5a c8 28 e7 20 4c  |xlen%=L2%.Z.(. L|
0000de20  33 25 3e 6d 61 78 6c 65  6e 25 20 80 20 69 74 65  |3%>maxlen% . ite|
0000de30  6d 73 25 3e 30 20 6d 61  78 6c 65 6e 25 3d 4c 33  |ms%>0 maxlen%=L3|
0000de40  25 0d 5a d2 0c 3d 6d 61  78 6c 65 6e 25 0d 5a dc  |%.Z..=maxlen%.Z.|
0000de50  05 3a 0d 5a e6 1a f4 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.:.Z...---------|
0000de60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 5a f0 1a  |------------.Z..|
0000de70  f4 2e 20 52 45 43 55 52  53 49 56 45 20 54 45 58  |.. RECURSIVE TEX|
0000de80  54 20 53 41 56 45 0d 5a  fa 1a f4 2d 2d 2d 2d 2d  |T SAVE.Z...-----|
0000de90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000dea0  0d 5b 04 05 3a 0d 5b 0e  13 dd f2 72 65 63 75 72  |.[..:.[....recur|
0000deb0  73 69 76 65 73 61 76 65  0d 5b 18 19 72 65 63 75  |sivesave.[..recu|
0000dec0  72 73 69 6e 67 25 3d b9  3a 61 62 6f 72 74 25 3d  |rsing%=.:abort%=|
0000ded0  a3 0d 5b 22 26 c8 99 20  22 4f 53 5f 42 79 74 65  |..["&.. "OS_Byte|
0000dee0  22 2c 32 32 39 2c 30 2c  30 20 3a f4 20 65 6e 61  |",229,0,0 :. ena|
0000def0  62 6c 65 20 45 73 63 0d  5b 2c 1e 64 24 3d 64 69  |ble Esc.[,.d$=di|
0000df00  72 24 3a 64 65 65 70 65  73 74 25 3d 31 3a 64 69  |r$:deepest%=1:di|
0000df10  72 73 25 3d 31 0d 5b 36  0d 70 72 6f 6d 70 74 25  |rs%=1.[6.prompt%|
0000df20  3d 30 0d 5b 40 20 e7 20  a4 69 73 28 73 61 76 65  |=0.[@ . .is(save|
0000df30  62 6f 78 25 2c 31 34 29  20 70 72 6f 6d 70 74 25  |box%,14) prompt%|
0000df40  3d 31 0d 5b 4a 20 e7 20  a4 69 73 28 73 61 76 65  |=1.[J . .is(save|
0000df50  62 6f 78 25 2c 31 35 29  20 70 72 6f 6d 70 74 25  |box%,15) prompt%|
0000df60  3d 32 0d 5b 54 15 f2 73  61 76 65 6c 65 76 65 6c  |=2.[T..savelevel|
0000df70  73 28 64 24 2c 31 29 0d  5b 5e 32 73 24 3d 22 64  |s(d$,1).[^2s$="d|
0000df80  69 72 73 3a 20 22 2b c3  64 69 72 73 25 2b 22 20  |irs: "+.dirs%+" |
0000df90  20 6c 65 76 65 6c 73 3a  20 22 2b c3 64 65 65 70  | levels: "+.deep|
0000dfa0  65 73 74 25 2b 73 65 70  24 0d 5b 68 0b d5 23 46  |est%+sep$.[h..#F|
0000dfb0  25 2c 73 24 0d 5b 72 27  c8 99 20 22 4f 53 5f 42  |%,s$.[r'.. "OS_B|
0000dfc0  79 74 65 22 2c 32 32 39  2c 31 2c 30 20 3a f4 20  |yte",229,1,0 :. |
0000dfd0  64 69 73 61 62 6c 65 20  45 73 63 0d 5b 7c 10 72  |disable Esc.[|.r|
0000dfe0  65 63 75 72 73 69 6e 67  25 3d a3 0d 5b 86 0c f2  |ecursing%=..[...|
0000dff0  72 65 66 72 65 73 68 0d  5b 90 05 e1 0d 5b 9a 05  |refresh.[....[..|
0000e000  3a 0d 5b a4 1b dd f2 73  61 76 65 6c 65 76 65 6c  |:.[....savelevel|
0000e010  73 28 64 24 2c 6c 65 76  65 6c 25 29 0d 5b ae 1d  |s(d$,level%).[..|
0000e020  ea 20 6d 6f 72 65 25 2c  6e 65 78 74 25 2c 64 79  |. more%,next%,dy|
0000e030  24 3a 6e 65 78 74 25 3d  30 0d 5b b8 15 c8 99 20  |$:next%=0.[.... |
0000e040  22 48 6f 75 72 67 6c 61  73 73 5f 4f 6e 22 0d 5b  |"Hourglass_On".[|
0000e050  c2 10 c8 95 20 6e 65 78  74 25 3c 3e 2d 31 0d 5b  |.... next%<>-1.[|
0000e060  cc 42 20 c8 99 20 22 4f  53 5f 47 42 50 42 22 2c  |.B .. "OS_GBPB",|
0000e070  31 30 2c 64 24 2c 43 25  2c 31 2c 6e 65 78 74 25  |10,d$,C%,1,next%|
0000e080  2c 62 6c 6f 63 6b 73 69  7a 65 25 2c 22 2a 22 20  |,blocksize%,"*" |
0000e090  b8 20 2c 2c 2c 6d 6f 72  65 25 2c 6e 65 78 74 25  |. ,,,more%,next%|
0000e0a0  0d 5b d6 10 20 e7 20 6d  6f 72 65 25 3e 30 20 8c  |.[.. . more%>0 .|
0000e0b0  0d 5b e0 11 20 20 e7 20  43 25 3f 31 36 3d 32 20  |.[..  . C%?16=2 |
0000e0c0  8c 0d 5b ea 0e 20 20 20  f4 20 61 20 64 69 72 0d  |..[..   . a dir.|
0000e0d0  5b f4 1e 20 20 20 64 79  24 3d 64 24 2b 22 2e 22  |[..   dy$=d$+"."|
0000e0e0  2b a4 6e 61 6d 65 28 43  25 2b 32 30 29 0d 5b fe  |+.name(C%+20).[.|
0000e0f0  23 20 20 20 e7 20 a4 6c  65 61 66 28 64 79 24 29  |#   . .leaf(dy$)|
0000e100  3c 3e 22 21 54 69 67 65  72 44 61 74 61 22 20 8c  |<>"!TigerData" .|
0000e110  0d 5c 08 1e 20 20 20 20  73 61 76 65 25 3d a4 73  |.\..    save%=.s|
0000e120  61 76 65 3a e7 20 61 62  6f 72 74 25 20 e1 0d 5c  |ave:. abort% ..\|
0000e130  12 11 20 20 20 20 e7 20  73 61 76 65 25 20 8c 0d  |..    . save% ..|
0000e140  5c 1c 23 20 20 20 20 20  f2 72 65 61 64 66 69 6c  |\.#     .readfil|
0000e150  65 73 28 64 79 24 2c 64  69 73 70 6c 61 79 25 2c  |es(dy$,display%,|
0000e160  30 29 0d 5c 26 16 20 20  20 20 20 f2 73 61 76 65  |0).\&.     .save|
0000e170  64 69 72 28 64 79 24 29  0d 5c 30 33 20 20 20 20  |dir(dy$).\03    |
0000e180  20 64 69 72 73 25 2b 3d  31 3a e7 20 6c 65 76 65  | dirs%+=1:. leve|
0000e190  6c 25 3e 64 65 65 70 65  73 74 25 20 64 65 65 70  |l%>deepest% deep|
0000e1a0  65 73 74 25 3d 6c 65 76  65 6c 25 0d 5c 3a 1d 20  |est%=level%.\:. |
0000e1b0  20 20 20 20 f4 20 72 65  70 65 61 74 20 72 65 63  |    . repeat rec|
0000e1c0  75 72 73 69 76 65 6c 79  0d 5c 44 22 20 20 20 20  |ursively.\D"    |
0000e1d0  20 f2 73 61 76 65 6c 65  76 65 6c 73 28 64 79 24  | .savelevels(dy$|
0000e1e0  2c 6c 65 76 65 6c 25 2b  31 29 0d 5c 4e 09 20 20  |,level%+1).\N.  |
0000e1f0  20 20 cd 0d 5c 58 08 20  20 20 cd 0d 5c 62 07 20  |  ..\X.   ..\b. |
0000e200  20 cd 0d 5c 6c 06 20 cd  0d 5c 76 05 ce 0d 5c 80  | ..\l. ..\v...\.|
0000e210  05 e1 0d 5c 8a 05 3a 0d  5c 94 0a dd a4 73 61 76  |...\..:.\....sav|
0000e220  65 0d 5c 9e 13 e7 20 70  72 6f 6d 70 74 25 3d 30  |e.\... prompt%=0|
0000e230  20 8c 3d b9 0d 5c a8 1e  e7 20 70 72 6f 6d 70 74  | .=..\... prompt|
0000e240  25 3d 31 20 80 20 6c 65  76 65 6c 25 3e 31 20 8c  |%=1 . level%>1 .|
0000e250  3d b9 0d 5c b2 1f ea 20  78 25 2c 79 25 2c 62 25  |=..\... x%,y%,b%|
0000e260  2c 77 68 25 3a 77 68 25  3d 73 61 76 65 62 6f 78  |,wh%:wh%=savebox|
0000e270  25 0d 5c bc 34 61 6e 73  25 3d a4 6d 73 67 28 64  |%.\.4ans%=.msg(d|
0000e280  79 24 2c 22 44 6f 6e 27  74 20 73 61 76 65 2c 4e  |y$,"Don't save,N|
0000e290  6f 20 70 72 6f 6d 70 74  2c 41 62 6f 72 74 2c 53  |o prompt,Abort,S|
0000e2a0  61 76 65 22 29 0d 5c c6  0d c8 8e 20 61 6e 73 25  |ave").\.... ans%|
0000e2b0  20 ca 0d 5c d0 17 20 c9  20 32 3a f2 63 77 28 6d  | ..\.. . 2:.cw(m|
0000e2c0  65 73 73 77 69 6e 64 25  29 0d 5c da 32 20 f2 75  |esswind%).\.2 .u|
0000e2d0  69 28 77 68 25 2c 31 34  29 3a f2 75 69 28 77 68  |i(wh%,14):.ui(wh|
0000e2e0  25 2c 31 35 29 3a f2 73  69 28 77 68 25 2c 31 33  |%,15):.si(wh%,13|
0000e2f0  29 3a 70 72 6f 6d 70 74  25 3d 30 0d 5c e4 11 20  |):prompt%=0.\.. |
0000e300  c9 20 33 3a 61 62 6f 72  74 25 3d b9 0d 5c ee 0b  |. 3:abort%=..\..|
0000e310  20 c9 20 34 3a 3d b9 0d  5c f8 05 cb 0d 5d 02 06  | . 4:=..\....]..|
0000e320  3d a3 0d 5d 0c 05 3a 0d  5d 16 14 f4 2d 2d 2d 2d  |=..]..:.]...----|
0000e330  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 5d 20 14 f4  |-----------.] ..|
0000e340  2e 20 52 45 4e 41 4d 45  2f 44 45 4c 45 54 45 0d  |. RENAME/DELETE.|
0000e350  5d 2a 14 f4 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |]*..------------|
0000e360  2d 2d 2d 0d 5d 34 05 3a  0d 5d 3e 1f dd f2 72 65  |---.]4.:.]>...re|
0000e370  6e 61 6d 65 28 6f 6c 64  6c 65 61 66 24 2c 6e 65  |name(oldleaf$,ne|
0000e380  77 6c 65 61 66 24 29 0d  5d 48 11 f4 20 6d 65 6e  |wleaf$).]H.. men|
0000e390  75 20 63 68 6f 69 63 65  0d 5d 52 0e ea 20 4a 25  |u choice.]R.. J%|
0000e3a0  2c 73 24 2c 64 24 0d 5d  5c 1d e7 20 6f 6c 64 6c  |,s$,d$.]\.. oldl|
0000e3b0  65 61 66 24 3d 22 21 54  69 67 65 72 44 61 74 61  |eaf$="!TigerData|
0000e3c0  22 20 e1 0d 5d 66 19 e7  20 6e 65 77 6c 65 61 66  |" ..]f.. newleaf|
0000e3d0  24 3d 6f 6c 64 6c 65 61  66 24 20 e1 0d 5d 70 19  |$=oldleaf$ ..]p.|
0000e3e0  e7 20 6e 65 77 6c 65 61  66 24 3d 22 22 20 f2 62  |. newleaf$="" .b|
0000e3f0  75 7a 7a 3a e1 0d 5d 7a  13 e7 20 a4 70 72 6f 6d  |uzz:..]z.. .prom|
0000e400  70 74 73 61 76 65 20 8c  0d 5d 84 2e 20 73 24 3d  |ptsave ..].. s$=|
0000e410  64 69 72 24 2b 22 2e 22  2b 6f 6c 64 6c 65 61 66  |dir$+"."+oldleaf|
0000e420  24 3a 64 24 3d 64 69 72  24 2b 22 2e 22 2b 6e 65  |$:d$=dir$+"."+ne|
0000e430  77 6c 65 61 66 24 0d 5d  8e 1b 20 ff 28 22 52 65  |wleaf$.].. .("Re|
0000e440  6e 61 6d 65 20 22 2b 73  24 2b 22 20 22 2b 64 24  |name "+s$+" "+d$|
0000e450  29 0d 5d 98 05 cd 0d 5d  a2 1b e7 20 24 64 65 73  |).]....]... $des|
0000e460  63 25 28 63 68 6f 73 65  6e 25 29 3c 3e 22 22 20  |c%(chosen%)<>"" |
0000e470  8c 0d 5d ac 17 20 f4 20  63 68 61 6e 67 65 20 54  |..].. . change T|
0000e480  69 67 65 72 44 61 74 61  0d 5d b6 2d 20 64 65 73  |igerData.].- des|
0000e490  63 73 25 3d a4 6c 6f 61  64 54 69 67 65 72 44 61  |cs%=.loadTigerDa|
0000e4a0  74 61 28 64 69 72 24 2b  22 2e 54 69 67 65 72 44  |ta(dir$+".TigerD|
0000e4b0  61 74 61 22 29 0d 5d c0  0d 20 66 6f 75 6e 64 25  |ata").].. found%|
0000e4c0  3d a3 0d 5d ca 14 20 e3  20 4a 25 3d 31 20 b8 20  |=..].. . J%=1 . |
0000e4d0  64 65 73 63 73 25 0d 5d  d4 40 20 20 e7 20 6e 61  |descs%.].@  . na|
0000e4e0  6d 65 24 28 4a 25 29 3d  6f 6c 64 6c 65 61 66 24  |me$(J%)=oldleaf$|
0000e4f0  20 6e 61 6d 65 24 28 4a  25 29 3d 6e 65 77 6c 65  | name$(J%)=newle|
0000e500  61 66 24 3a 66 6f 75 6e  64 25 3d b9 3a 4a 25 3d  |af$:found%=.:J%=|
0000e510  64 65 73 63 73 25 0d 5d  de 06 20 ed 0d 5d e8 05  |descs%.].. ..]..|
0000e520  cd 0d 5d f2 1b f2 77 72  69 74 65 54 69 67 65 72  |..]...writeTiger|
0000e530  44 61 74 61 28 64 65 73  63 73 25 29 0d 5d fc 11  |Data(descs%).]..|
0000e540  f2 73 68 6f 77 54 69 67  65 72 28 31 29 0d 5e 06  |.showTiger(1).^.|
0000e550  05 e1 0d 5e 10 05 3a 0d  5e 1a 0c dd f2 64 65 6c  |...^..:.^....del|
0000e560  65 74 65 0d 5e 24 11 f4  20 6d 65 6e 75 20 63 68  |ete.^$.. menu ch|
0000e570  6f 69 63 65 0d 5e 2e 14  ea 20 4a 25 2c 4b 25 2c  |oice.^... J%,K%,|
0000e580  6c 65 61 66 24 2c 73 24  0d 5e 38 2d 46 69 6c 65  |leaf$,s$.^8-File|
0000e590  72 41 63 74 69 6f 6e 25  3d a4 66 69 6c 65 72 61  |rAction%=.filera|
0000e5a0  63 74 69 6f 6e 3a 6f 70  74 73 25 3d a4 72 65 61  |ction:opts%=.rea|
0000e5b0  64 6f 70 74 73 0d 5e 42  0d 73 65 6c 25 3d a4 73  |dopts.^B.sel%=.s|
0000e5c0  65 6c 0d 5e 4c 13 e7 20  a4 70 72 6f 6d 70 74 73  |el.^L.. .prompts|
0000e5d0  61 76 65 20 8c 0d 5e 56  24 20 e7 20 73 65 6c 25  |ave ..^V$ . sel%|
0000e5e0  3d 30 20 73 65 6c 25 28  31 29 3d 63 68 6f 73 65  |=0 sel%(1)=chose|
0000e5f0  6e 25 3a 73 65 6c 25 3d  31 0d 5e 60 15 20 e7 20  |n%:sel%=1.^`. . |
0000e600  46 69 6c 65 72 41 63 74  69 6f 6e 25 20 8c 0d 5e  |FilerAction% ..^|
0000e610  6a 27 20 20 c8 99 20 26  34 30 30 44 45 2c 22 46  |j'  .. &400DE,"F|
0000e620  69 6c 65 72 5f 41 63 74  69 6f 6e 22 20 b8 20 74  |iler_Action" . t|
0000e630  61 73 6b 68 25 0d 5e 74  06 20 cc 0d 5e 7e 33 20  |askh%.^t. ..^~3 |
0000e640  20 24 43 25 3d 22 44 65  6c 65 74 65 20 66 69 6c  | $C%="Delete fil|
0000e650  65 73 22 3a c8 99 20 22  57 69 6d 70 5f 43 6f 6d  |es":.. "Wimp_Com|
0000e660  6d 61 6e 64 57 69 6e 64  6f 77 22 2c 43 25 0d 5e  |mandWindow",C%.^|
0000e670  88 06 20 cd 0d 5e 92 12  20 e3 20 4a 25 3d 31 20  |.. ..^.. . J%=1 |
0000e680  b8 20 73 65 6c 25 0d 5e  9c 1b 20 20 6c 65 61 66  |. sel%.^..  leaf|
0000e690  24 3d 6c 65 61 66 24 28  73 65 6c 25 28 4a 25 29  |$=leaf$(sel%(J%)|
0000e6a0  29 0d 5e a6 17 20 20 73  24 3d 64 69 72 24 2b 22  |).^..  s$=dir$+"|
0000e6b0  2e 22 2b 6c 65 61 66 24  0d 5e b0 2e 20 20 e7 20  |."+leaf$.^..  . |
0000e6c0  a4 63 68 65 63 6b 6f 62  6a 28 73 24 2c b9 29 20  |.checkobj(s$,.) |
0000e6d0  80 20 6c 65 61 66 24 3c  3e 22 54 69 67 65 72 44  |. leaf$<>"TigerD|
0000e6e0  61 74 61 22 20 8c 0d 5e  ba 1d 20 20 20 f2 77 69  |ata" ..^..   .wi|
0000e6f0  70 65 28 73 24 2c 46 69  6c 65 72 41 63 74 69 6f  |pe(s$,FilerActio|
0000e700  6e 25 29 0d 5e c4 07 20  20 cd 0d 5e ce 06 20 ed  |n%).^..  ..^.. .|
0000e710  0d 5e d8 15 20 e7 20 46  69 6c 65 72 41 63 74 69  |.^.. . FilerActi|
0000e720  6f 6e 25 20 8c 0d 5e e2  1e 20 20 c8 99 20 26 34  |on% ..^..  .. &4|
0000e730  30 46 38 32 2c 74 61 73  6b 68 25 2c 32 2c 6f 70  |0F82,taskh%,2,op|
0000e740  74 73 25 0d 5e ec 06 20  cc 0d 5e f6 1f 20 20 c8  |ts%.^.. ..^..  .|
0000e750  99 20 22 57 69 6d 70 5f  43 6f 6d 6d 61 6e 64 57  |. "Wimp_CommandW|
0000e760  69 6e 64 6f 77 22 2c 30  0d 5f 00 06 20 cd 0d 5f  |indow",0._.. .._|
0000e770  0a 05 cd 0d 5f 14 05 e1  0d 5f 1e 05 3a 0d 5f 28  |...._...._..:._(|
0000e780  1d dd f2 77 69 70 65 28  66 73 70 24 2c 46 69 6c  |...wipe(fsp$,Fil|
0000e790  65 72 41 63 74 69 6f 6e  25 29 0d 5f 32 11 ea 20  |erAction%)._2.. |
0000e7a0  70 61 74 68 24 2c 6c 65  61 66 24 0d 5f 3c 14 e7  |path$,leaf$._<..|
0000e7b0  20 46 69 6c 65 72 41 63  74 69 6f 6e 25 20 8c 0d  | FilerAction% ..|
0000e7c0  5f 46 2a 20 70 61 74 68  24 3d a4 70 61 72 65 6e  |_F* path$=.paren|
0000e7d0  74 28 66 73 70 24 29 3a  6c 65 61 66 24 3d a4 6c  |t(fsp$):leaf$=.l|
0000e7e0  65 61 66 28 66 73 70 24  29 0d 5f 50 1b 20 c8 99  |eaf(fsp$)._P. ..|
0000e7f0  20 26 34 30 46 38 30 2c  74 61 73 6b 68 25 2c 70  | &40F80,taskh%,p|
0000e800  61 74 68 24 0d 5f 5a 1b  20 c8 99 20 26 34 30 46  |ath$._Z. .. &40F|
0000e810  38 31 2c 74 61 73 6b 68  25 2c 6c 65 61 66 24 0d  |81,taskh%,leaf$.|
0000e820  5f 64 05 cc 0d 5f 6e 22  20 ff 28 22 57 69 70 65  |_d..._n" .("Wipe|
0000e830  20 22 2b 66 73 70 24 2b  22 20 22 2b a4 77 69 70  | "+fsp$+" "+.wip|
0000e840  65 6f 70 74 73 29 0d 5f  78 05 cd 0d 5f 82 05 e1  |eopts)._x..._...|
0000e850  0d 5f 8c 05 3a 0d 5f 96  0f f4 2d 2d 2d 2d 2d 2d  |._..:._...------|
0000e860  2d 2d 2d 2d 0d 5f a0 0f  f4 2e 20 4f 42 4a 20 49  |----._.... OBJ I|
0000e870  4e 46 4f 0d 5f aa 0f f4  2d 2d 2d 2d 2d 2d 2d 2d  |NFO._...--------|
0000e880  2d 2d 0d 5f b4 05 3a 0d  5f be 11 dd f2 70 72 65  |--._..:._....pre|
0000e890  70 6f 62 6a 69 6e 66 6f  0d 5f c8 24 ea 20 6e 61  |pobjinfo._.$. na|
0000e8a0  6d 65 24 2c 6f 62 6a 25  2c 6f 25 2c 77 68 25 3a  |me$,obj%,o%,wh%:|
0000e8b0  77 68 25 3d 6f 62 6a 69  6e 66 6f 25 0d 5f d2 18  |wh%=objinfo%._..|
0000e8c0  6e 61 6d 65 24 3d 6c 65  61 66 24 28 63 68 6f 73  |name$=leaf$(chos|
0000e8d0  65 6e 25 29 0d 5f dc 22  6f 25 3d a4 67 65 74 6f  |en%)._."o%=.geto|
0000e8e0  62 6a 69 6e 66 6f 28 64  69 72 24 2b 22 2e 22 2b  |bjinfo(dir$+"."+|
0000e8f0  6e 61 6d 65 24 29 0d 5f  e6 30 c8 99 20 22 4f 53  |name$)._.0.. "OS|
0000e900  5f 46 69 6c 65 22 2c 35  2c 64 69 72 24 2b 22 2e  |_File",5,dir$+".|
0000e910  22 2b 6e 61 6d 65 24 20  b8 20 2c 2c 2c 2c 2c 61  |"+name$ . ,,,,,a|
0000e920  63 63 65 73 73 25 0d 5f  f0 2d f2 69 74 28 77 68  |ccess%._.-.it(wh|
0000e930  25 2c 31 2c 6e 61 6d 65  24 29 3a f2 69 74 28 77  |%,1,name$):.it(w|
0000e940  68 25 2c 32 2c a4 73 74  72 69 70 28 74 79 70 65  |h%,2,.strip(type|
0000e950  24 29 29 0d 5f fa 2a f2  69 74 28 77 68 25 2c 33  |$))._.*.it(wh%,3|
0000e960  2c 66 69 6c 65 6c 65 6e  24 29 3a f2 69 74 28 77  |,filelen$):.it(w|
0000e970  68 25 2c 34 2c 61 63 63  65 73 73 24 29 0d 60 04  |h%,4,access$).`.|
0000e980  1e f2 69 74 28 77 68 25  2c 35 2c 74 69 6d 65 24  |..it(wh%,5,time$|
0000e990  2b 22 20 22 2b 64 61 74  65 24 29 0d 60 0e 2e 43  |+" "+date$).`..C|
0000e9a0  25 21 30 3d 77 68 25 3a  43 25 21 34 3d 30 3a c8  |%!0=wh%:C%!4=0:.|
0000e9b0  99 20 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |. "Wimp_GetIconS|
0000e9c0  74 61 74 65 22 2c 2c 43  25 0d 60 18 18 24 28 43  |tate",,C%.`..$(C|
0000e9d0  25 21 32 38 29 3d a4 73  70 72 28 77 68 25 2c 30  |%!28)=.spr(wh%,0|
0000e9e0  29 0d 60 22 05 e1 0d 60  2c 05 3a 0d 60 36 16 dd  |).`"...`,.:.`6..|
0000e9f0  a4 67 65 74 6f 62 6a 69  6e 66 6f 28 66 73 70 24  |.getobjinfo(fsp$|
0000ea00  29 0d 60 40 33 c8 99 20  22 4f 53 5f 46 69 6c 65  |).`@3.. "OS_File|
0000ea10  22 2c 35 2c 66 73 70 24  20 b8 20 6f 25 3a e7 20  |",5,fsp$ . o%:. |
0000ea20  6f 25 3d 30 20 8c 3d a3  3a f4 20 6e 6f 74 20 66  |o%=0 .=.:. not f|
0000ea30  6f 75 6e 64 0d 60 4a 27  ea 20 6f 62 6a 25 2c 6c  |ound.`J'. obj%,l|
0000ea40  6f 61 64 25 2c 65 78 65  63 25 2c 66 69 6c 65 6c  |oad%,exec%,filel|
0000ea50  65 6e 25 2c 61 63 63 65  73 73 25 0d 60 54 3c c8  |en%,access%.`T<.|
0000ea60  99 20 22 4f 53 5f 46 69  6c 65 22 2c 35 2c 66 73  |. "OS_File",5,fs|
0000ea70  70 24 20 b8 20 6f 62 6a  25 2c 2c 6c 6f 61 64 25  |p$ . obj%,,load%|
0000ea80  2c 65 78 65 63 25 2c 66  69 6c 65 6c 65 6e 25 2c  |,exec%,filelen%,|
0000ea90  61 63 63 65 73 73 25 0d  60 5e 25 66 69 6c 65 74  |access%.`^%filet|
0000eaa0  79 70 65 25 3d 28 6c 6f  61 64 25 20 80 20 26 46  |ype%=(load% . &F|
0000eab0  46 46 30 30 29 20 81 20  26 31 30 30 0d 60 68 15  |FF00) . &100.`h.|
0000eac0  6e 61 6d 65 24 3d a4 6c  65 61 66 28 66 73 70 24  |name$=.leaf(fsp$|
0000ead0  29 0d 60 72 25 74 79 70  65 24 3d a4 74 79 70 65  |).`r%type$=.type|
0000eae0  28 66 69 6c 65 74 79 70  65 25 2c 6f 62 6a 25 2c  |(filetype%,obj%,|
0000eaf0  6e 61 6d 65 24 29 0d 60  7c 1c 61 63 63 65 73 73  |name$).`|.access|
0000eb00  24 3d a4 61 63 63 65 73  73 28 61 63 63 65 73 73  |$=.access(access|
0000eb10  25 29 0d 60 86 16 66 69  6c 65 6c 65 6e 24 3d c3  |%).`..filelen$=.|
0000eb20  66 69 6c 65 6c 65 6e 25  0d 60 90 26 64 61 74 65  |filelen%.`.&date|
0000eb30  24 3d c2 a4 64 61 74 65  73 74 61 6d 70 28 6c 6f  |$=..datestamp(lo|
0000eb40  61 64 25 2c 65 78 65 63  25 29 2c 31 31 29 0d 60  |ad%,exec%),11).`|
0000eb50  9a 25 74 69 6d 65 24 3d  c0 a4 64 61 74 65 73 74  |.%time$=..datest|
0000eb60  61 6d 70 28 6c 6f 61 64  25 2c 65 78 65 63 25 29  |amp(load%,exec%)|
0000eb70  2c 38 29 0d 60 a4 06 3d  b9 0d 60 ae 05 3a 0d 60  |,8).`..=..`..:.`|
0000eb80  b8 1c dd a4 74 79 70 65  28 74 79 70 65 25 2c 6f  |....type(type%,o|
0000eb90  62 6a 25 2c 6e 61 6d 65  24 29 0d 60 c2 0c ea 20  |bj%,name$).`... |
0000eba0  74 79 70 65 24 2c 0d 60  cc 2f e7 20 6f 62 6a 25  |type$,.`./. obj%|
0000ebb0  3d 32 20 80 20 c0 6e 61  6d 65 24 2c 31 29 3d 22  |=2 . .name$,1)="|
0000ebc0  21 22 20 8c 3d 22 41 70  70 6c 69 63 61 74 69 6f  |!" .="Applicatio|
0000ebd0  6e 20 20 20 22 0d 60 d6  1f e7 20 6f 62 6a 25 3d  |n   ".`... obj%=|
0000ebe0  32 20 8c 3d 22 44 69 72  65 63 74 6f 72 79 20 20  |2 .="Directory  |
0000ebf0  20 20 20 22 0d 60 e0 2a  74 79 70 65 24 3d c0 a4  |   ".`.*type$=..|
0000ec00  6f 73 76 61 72 28 22 46  69 6c 65 24 54 79 70 65  |osvar("File$Type|
0000ec10  5f 22 2b c3 7e 74 79 70  65 25 29 2c 38 29 0d 60  |_"+.~type%),8).`|
0000ec20  ea 20 e7 20 74 79 70 65  24 3d 22 22 20 74 79 70  |. . type$="" typ|
0000ec30  65 24 3d 22 26 22 2b c3  7e 74 79 70 65 25 0d 60  |e$="&"+.~type%.`|
0000ec40  f4 2e 3d 74 79 70 65 24  2b c4 39 2d a9 74 79 70  |..=type$+.9-.typ|
0000ec50  65 24 2c 22 20 22 29 2b  22 28 22 2b a4 6c 63 28  |e$," ")+"("+.lc(|
0000ec60  c3 7e 74 79 70 65 25 29  2b 22 29 22 0d 60 fe 05  |.~type%)+")".`..|
0000ec70  3a 0d 61 08 15 dd a4 66  69 6c 65 74 79 70 65 28  |:.a....filetype(|
0000ec80  70 61 74 68 24 29 0d 61  12 0b ea 20 6c 6f 61 64  |path$).a... load|
0000ec90  25 0d 61 1c 22 c8 99 20  22 4f 53 5f 46 69 6c 65  |%.a.".. "OS_File|
0000eca0  22 2c 35 2c 70 61 74 68  24 20 b8 20 2c 2c 6c 6f  |",5,path$ . ,,lo|
0000ecb0  61 64 25 0d 61 26 1c 3d  28 6c 6f 61 64 25 20 80  |ad%.a&.=(load% .|
0000ecc0  20 26 46 46 46 30 30 29  20 81 20 26 31 30 30 0d  | &FFF00) . &100.|
0000ecd0  61 30 05 3a 0d 61 3a 19  dd a4 66 69 6c 65 74 79  |a0.:.a:...filety|
0000ece0  70 65 6e 61 6d 65 28 74  79 70 65 25 29 0d 61 44  |pename(type%).aD|
0000ecf0  0d ea 20 72 32 25 2c 72  33 25 0d 61 4e 2a c8 99  |.. r2%,r3%.aN*..|
0000ed00  20 22 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 22 2c  | "OS_FSControl",|
0000ed10  31 38 2c 2c 74 79 70 65  25 20 b8 2c 2c 72 32 25  |18,,type% .,,r2%|
0000ed20  2c 72 33 25 0d 61 58 1d  43 25 21 30 3d 72 32 25  |,r3%.aX.C%!0=r2%|
0000ed30  3a 43 25 21 34 3d 72 33  25 3a 43 25 3f 38 3d 26  |:C%!4=r3%:C%?8=&|
0000ed40  44 0d 61 62 08 3d 24 43  25 0d 61 6c 05 3a 0d 61  |D.ab.=$C%.al.:.a|
0000ed50  76 10 dd a4 61 63 63 65  73 73 28 62 25 29 0d 61  |v...access(b%).a|
0000ed60  80 15 f4 20 66 69 6c 65  20 61 74 74 72 69 62 75  |... file attribu|
0000ed70  74 65 73 0d 61 8a 0e ea  20 73 24 3a 73 24 3d 22  |tes.a... s$:s$="|
0000ed80  22 0d 61 94 18 e7 20 28  62 25 20 80 20 38 29 3d  |".a... (b% . 8)=|
0000ed90  38 20 73 24 2b 3d 22 4c  22 0d 61 9e 18 e7 20 28  |8 s$+="L".a... (|
0000eda0  62 25 20 80 20 32 29 3d  32 20 73 24 2b 3d 22 57  |b% . 2)=2 s$+="W|
0000edb0  22 0d 61 a8 18 e7 20 28  62 25 20 80 20 31 29 3d  |".a... (b% . 1)=|
0000edc0  31 20 73 24 2b 3d 22 52  22 0d 61 b2 0b 73 24 2b  |1 s$+="R".a..s$+|
0000edd0  3d 22 2f 22 0d 61 bc 1a  e7 20 28 62 25 20 80 20  |="/".a... (b% . |
0000ede0  31 36 29 3d 31 36 20 73  24 2b 3d 22 72 22 0d 61  |16)=16 s$+="r".a|
0000edf0  c6 1a e7 20 28 62 25 20  80 20 33 32 29 3d 33 32  |... (b% . 32)=32|
0000ee00  20 73 24 2b 3d 22 77 22  0d 61 d0 07 3d 73 24 0d  | s$+="w".a..=s$.|
0000ee10  61 da 05 3a 0d 61 e4 1c  dd a4 64 61 74 65 73 74  |a..:.a....datest|
0000ee20  61 6d 70 28 6c 6f 61 64  25 2c 65 78 65 63 25 29  |amp(load%,exec%)|
0000ee30  0d 61 ee 28 f4 20 72 65  61 64 20 35 20 62 79 74  |.a.(. read 5 byt|
0000ee40  65 20 6e 75 6d 62 65 72  20 6f 66 20 63 65 6e 74  |e number of cent|
0000ee50  69 73 65 63 6f 6e 64 73  0d 61 f8 38 f4 20 73 69  |iseconds.a.8. si|
0000ee60  6e 63 65 20 30 30 3a 30  30 3a 30 30 20 6f 6e 20  |nce 00:00:00 on |
0000ee70  31 20 4a 61 6e 20 31 39  30 30 20 61 73 20 61 20  |1 Jan 1900 as a |
0000ee80  74 69 6d 65 2f 64 61 74  65 20 73 74 72 69 6e 67  |time/date string|
0000ee90  0d 62 02 2e e7 20 c0 c3  7e 28 6c 6f 61 64 25 29  |.b... ..~(load%)|
0000eea0  2c 33 29 3c 3e 22 46 46  46 22 20 8c 3d 22 22 3a  |,3)<>"FFF" .="":|
0000eeb0  f4 20 6d 61 63 68 69 6e  65 20 63 6f 64 65 0d 62  |. machine code.b|
0000eec0  0c 19 43 25 21 30 3d 65  78 65 63 25 3a 43 25 21  |..C%!0=exec%:C%!|
0000eed0  34 3d 6c 6f 61 64 25 0d  62 16 31 c8 99 20 22 4f  |4=load%.b.1.. "O|
0000eee0  53 5f 43 6f 6e 76 65 72  74 53 74 61 6e 64 61 72  |S_ConvertStandar|
0000eef0  64 44 61 74 65 41 6e 64  54 69 6d 65 22 2c 43 25  |dDateAndTime",C%|
0000ef00  2c 43 25 2b 38 2c 32 31  0d 62 20 0f 3f 28 43 25  |,C%+8,21.b .?(C%|
0000ef10  2b 32 38 29 3d 26 44 0d  62 2a 0c 3d 24 28 43 25  |+28)=&D.b*.=$(C%|
0000ef20  2b 38 29 0d 62 34 05 3a  0d 62 3e 0b f4 2d 2d 2d  |+8).b4.:.b>..---|
0000ef30  2d 2d 2d 0d 62 48 0b f4  2e 20 4d 49 53 43 0d 62  |---.bH... MISC.b|
0000ef40  52 0b f4 2d 2d 2d 2d 2d  2d 0d 62 5c 05 3a 0d 62  |R..------.b\.:.b|
0000ef50  66 20 dd f2 73 65 74 65  78 74 65 6e 74 28 77 68  |f ..setextent(wh|
0000ef60  25 2c 6d 69 6e 79 25 2c  6d 61 78 78 25 29 0d 62  |%,miny%,maxx%).b|
0000ef70  70 28 43 25 21 30 3d 30  3a 43 25 21 34 3d 6d 69  |p(C%!0=0:C%!4=mi|
0000ef80  6e 79 25 3a 43 25 21 38  3d 6d 61 78 78 25 3a 43  |ny%:C%!8=maxx%:C|
0000ef90  25 21 31 32 3d 30 0d 62  7a 1e c8 99 20 22 57 69  |%!12=0.bz... "Wi|
0000efa0  6d 70 5f 53 65 74 45 78  74 65 6e 74 22 2c 77 68  |mp_SetExtent",wh|
0000efb0  25 2c 43 25 0d 62 84 05  e1 0d 62 8e 05 3a 0d 62  |%,C%.b....b..:.b|
0000efc0  98 14 dd a4 6f 62 6a 74  79 70 65 28 70 61 74 68  |....objtype(path|
0000efd0  24 29 0d 62 a2 0e ea 20  6f 62 6a 74 79 70 65 25  |$).b... objtype%|
0000efe0  0d 62 ac 2f f4 20 30 3d  6e 6f 74 20 66 6f 75 6e  |.b./. 0=not foun|
0000eff0  64 2c 20 31 3d 66 69 6c  65 2c 20 32 3d 64 69 72  |d, 1=file, 2=dir|
0000f000  2c 20 33 3d 63 6f 6d 62  69 6e 61 74 69 6f 6e 0d  |, 3=combination.|
0000f010  62 b6 24 c8 99 20 22 4f  53 5f 46 69 6c 65 22 2c  |b.$.. "OS_File",|
0000f020  31 33 2c 70 61 74 68 24  20 b8 20 6f 62 6a 74 79  |13,path$ . objty|
0000f030  70 65 25 0d 62 c0 0d 3d  6f 62 6a 74 79 70 65 25  |pe%.b..=objtype%|
0000f040  0d 62 ca 05 3a 0d 62 d4  14 dd a4 66 69 6c 65 6c  |.b..:.b....filel|
0000f050  65 6e 28 70 61 74 68 24  29 0d 62 de 0a ea 20 6c  |en(path$).b... l|
0000f060  65 6e 25 0d 62 e8 23 c8  99 20 22 4f 53 5f 46 69  |en%.b.#.. "OS_Fi|
0000f070  6c 65 22 2c 35 2c 70 61  74 68 24 20 b8 20 2c 2c  |le",5,path$ . ,,|
0000f080  2c 2c 6c 65 6e 25 0d 62  f2 09 3d 6c 65 6e 25 0d  |,,len%.b..=len%.|
0000f090  62 fc 05 3a 0d 63 06 10  dd a4 6f 62 6a 73 28 64  |b..:.c....objs(d|
0000f0a0  69 72 24 29 0d 63 10 18  ea 20 6f 62 6a 73 25 3a  |ir$).c... objs%:|
0000f0b0  6f 62 6a 73 25 3d 69 74  65 6d 73 25 0d 63 1a 19  |objs%=items%.c..|
0000f0c0  e7 20 a4 63 68 65 63 6b  6f 62 6a 28 64 69 72 24  |. .checkobj(dir$|
0000f0d0  2c a3 29 20 8c 0d 63 24  21 20 e7 20 a4 6f 62 6a  |,.) ..c$! . .obj|
0000f0e0  74 79 70 65 28 64 69 72  24 29 3c 3e 32 20 8c 3d  |type(dir$)<>2 .=|
0000f0f0  69 74 65 6d 73 25 0d 63  2e 3b 20 c8 99 20 22 4f  |items%.c.; .. "O|
0000f100  53 5f 47 42 50 42 22 2c  39 2c 64 69 72 24 2c 71  |S_GBPB",9,dir$,q|
0000f110  25 2c 6d 61 78 6f 25 2c  30 2c 62 6c 6f 63 6b 73  |%,maxo%,0,blocks|
0000f120  69 7a 65 25 2c 30 20 b8  20 2c 2c 2c 6f 62 6a 73  |ize%,0 . ,,,objs|
0000f130  25 0d 63 38 05 cd 0d 63  42 0a 3d 6f 62 6a 73 25  |%.c8...cB.=objs%|
0000f140  0d 63 4c 05 3a 0d 63 56  10 dd a4 6e 61 6d 65 28  |.cL.:.cV...name(|
0000f150  70 74 72 25 29 0d 63 60  0e ea 20 73 24 3a 73 24  |ptr%).c`.. s$:s$|
0000f160  3d 22 22 0d 63 6a 24 c8  95 20 3f 70 74 72 25 3e  |="".cj$.. ?ptr%>|
0000f170  33 31 3a 73 24 2b 3d bd  3f 70 74 72 25 3a 70 74  |31:s$+=.?ptr%:pt|
0000f180  72 25 2b 3d 31 3a ce 0d  63 74 07 3d 73 24 0d 63  |r%+=1:..ct.=s$.c|
0000f190  7e 05 3a 0d 63 88 0e dd  a4 6c 65 61 66 28 66 24  |~.:.c....leaf(f$|
0000f1a0  29 0d 63 92 28 ea 20 63  24 2c 73 24 2c 63 25 3a  |).c.(. c$,s$,c%:|
0000f1b0  73 24 3d 22 22 3a 63 25  3d a9 66 24 3a 63 24 3d  |s$="":c%=.f$:c$=|
0000f1c0  c1 66 24 2c 63 25 2c 31  29 0d 63 9c 20 c8 95 20  |.f$,c%,1).c. .. |
0000f1d0  63 24 3c 3e 22 2e 22 20  80 20 63 24 3c 3e 22 3a  |c$<>"." . c$<>":|
0000f1e0  22 20 80 20 63 25 3c 3e  30 0d 63 a6 13 20 73 24  |" . c%<>0.c.. s$|
0000f1f0  3d 63 24 2b 73 24 3a 63  25 2d 3d 31 0d 63 b0 11  |=c$+s$:c%-=1.c..|
0000f200  20 63 24 3d c1 66 24 2c  63 25 2c 31 29 0d 63 ba  | c$=.f$,c%,1).c.|
0000f210  05 ce 0d 63 c4 07 3d 73  24 0d 63 ce 05 3a 0d 63  |...c..=s$.c..:.c|
0000f220  d8 10 dd a4 70 61 72 65  6e 74 28 66 24 29 0d 63  |....parent(f$).c|
0000f230  e2 15 e7 20 a7 66 24 2c  22 2e 22 29 3d 30 20 8c  |... .f$,".")=0 .|
0000f240  3d 22 22 0d 63 ec 10 6c  24 3d a4 6c 65 61 66 28  |="".c..l$=.leaf(|
0000f250  66 24 29 0d 63 f6 13 3d  c0 66 24 2c a9 66 24 2d  |f$).c..=.f$,.f$-|
0000f260  a9 6c 24 2d 31 29 0d 64  00 05 3a 0d 64 0a 2b dd  |.l$-1).d..:.d.+.|
0000f270  a4 74 6f 64 61 79 3a f4  20 73 79 73 74 65 6d 20  |.today:. system |
0000f280  64 61 74 65 2e 20 45 67  20 22 32 32 20 41 75 67  |date. Eg "22 Aug|
0000f290  20 31 39 38 38 22 0d 64  14 28 3d c1 91 24 2c 35  | 1988".d.(=..$,5|
0000f2a0  2c 32 29 2b 22 20 22 2b  c1 91 24 2c 38 2c 33 29  |,2)+" "+..$,8,3)|
0000f2b0  2b 22 20 22 2b c1 91 24  2c 31 34 2c 32 29 0d 64  |+" "+..$,14,2).d|
0000f2c0  1e 05 3a 0d 64 28 13 dd  a4 6f 73 76 61 72 28 6f  |..:.d(...osvar(o|
0000f2d0  73 76 61 72 24 29 0d 64  32 0a ea 20 6c 65 6e 25  |svar$).d2.. len%|
0000f2e0  0d 64 3c 25 f4 20 49 66  20 6e 6f 74 20 66 6f 75  |.d<%. If not fou|
0000f2f0  6e 64 20 64 6f 6e 27 74  20 72 65 70 6f 72 74 20  |nd don't report |
0000f300  65 72 72 6f 72 0d 64 46  31 c8 99 20 22 58 4f 53  |error.dF1.. "XOS|
0000f310  5f 52 65 61 64 56 61 72  56 61 6c 22 2c 6f 73 76  |_ReadVarVal",osv|
0000f320  61 72 24 2c 43 25 2c 32  30 30 2c 30 2c 33 20 b8  |ar$,C%,200,0,3 .|
0000f330  2c 2c 6c 65 6e 25 0d 64  50 11 3f 28 43 25 2b 6c  |,,len%.dP.?(C%+l|
0000f340  65 6e 25 29 3d 26 44 0d  64 5a 08 3d 24 43 25 0d  |en%)=&D.dZ.=$C%.|
0000f350  64 64 05 3a 0d 64 6e 09  dd a4 65 6e 76 0d 64 78  |dd.:.dn...env.dx|
0000f360  18 f4 20 67 65 74 20 63  6f 6d 6d 61 6e 64 20 73  |.. get command s|
0000f370  74 72 69 6e 67 0d 64 82  19 c8 99 20 22 4f 53 5f  |tring.d.... "OS_|
0000f380  47 65 74 45 6e 76 22 20  b8 20 65 6e 76 24 0d 64  |GetEnv" . env$.d|
0000f390  8c 2f 70 3d a7 65 6e 76  24 2c 22 22 22 22 2c a7  |./p=.env$,"""",.|
0000f3a0  65 6e 76 24 2c 22 22 22  22 29 2b 31 29 3a 65 6e  |env$,"""")+1):en|
0000f3b0  76 24 3d c1 65 6e 76 24  2c 70 2b 31 29 0d 64 96  |v$=.env$,p+1).d.|
0000f3c0  23 c8 95 20 c0 65 6e 76  24 2c 31 29 3d 22 20 22  |#.. .env$,1)=" "|
0000f3d0  3a 65 6e 76 24 3d c1 65  6e 76 24 2c 32 29 3a ce  |:env$=.env$,2):.|
0000f3e0  0d 64 a0 09 3d 65 6e 76  24 0d 64 aa 05 3a 0d 64  |.d..=env$.d..:.d|
0000f3f0  b4 0f dd a4 73 74 72 69  70 28 73 24 29 0d 64 be  |....strip(s$).d.|
0000f400  23 f4 20 73 74 72 69 70  20 6c 65 61 64 69 6e 67  |#. strip leading|
0000f410  2f 74 72 61 69 6c 69 6e  67 20 73 70 61 63 65 73  |/trailing spaces|
0000f420  0d 64 c8 1a ea 20 4a 25  2c 6f 24 2c 63 24 2c 63  |.d... J%,o$,c$,c|
0000f430  25 2c 6e 25 3a 6f 24 3d  73 24 0d 64 d2 11 e7 20  |%,n%:o$=s$.d... |
0000f440  c0 73 24 2c 31 29 3d 22  20 22 8c 0d 64 dc 33 20  |.s$,1)=" "..d.3 |
0000f450  63 25 3d 31 3a f5 3a 63  25 2b 3d 31 3a fd 20 c1  |c%=1:.:c%+=1:. .|
0000f460  6f 24 2c 63 25 2c 31 29  3c 3e 22 20 22 3a 6f 24  |o$,c%,1)<>" ":o$|
0000f470  3d c2 6f 24 2c a9 6f 24  2d 63 25 2b 31 29 0d 64  |=.o$,.o$-c%+1).d|
0000f480  e6 05 cd 0d 64 f0 11 e7  20 c2 73 24 2c 31 29 3d  |....d... .s$,1)=|
0000f490  22 20 22 8c 0d 64 fa 2f  20 63 25 3d a9 6f 24 3a  |" "..d./ c%=.o$:|
0000f4a0  6e 25 3d 31 3a f5 3a 63  25 2d 3d 31 3a 6e 25 2b  |n%=1:.:c%-=1:n%+|
0000f4b0  3d 31 3a fd 20 c1 6f 24  2c 63 25 2c 31 29 3c 3e  |=1:. .o$,c%,1)<>|
0000f4c0  22 20 22 0d 65 04 15 20  6f 24 3d c0 6f 24 2c a9  |" ".e.. o$=.o$,.|
0000f4d0  6f 24 2d 6e 25 2b 31 29  0d 65 0e 05 cd 0d 65 18  |o$-n%+1).e....e.|
0000f4e0  07 3d 6f 24 0d 65 22 05  3a 0d 65 2c 0e dd a4 6c  |.=o$.e".:.e,...l|
0000f4f0  63 28 73 74 72 24 29 0d  65 36 17 ea 20 4a 25 2c  |c(str$).e6.. J%,|
0000f500  63 24 2c 63 25 2c 73 24  3a 73 24 3d 22 22 0d 65  |c$,c%,s$:s$="".e|
0000f510  40 12 e3 20 4a 25 3d 31  20 b8 20 a9 73 74 72 24  |@.. J%=1 . .str$|
0000f520  0d 65 4a 1a 20 63 24 3d  c1 73 74 72 24 2c 4a 25  |.eJ. c$=.str$,J%|
0000f530  2c 31 29 3a 63 25 3d 97  63 24 0d 65 54 1b 20 e7  |,1):c%=.c$.eT. .|
0000f540  20 63 25 3e 36 34 20 80  20 63 25 3c 39 31 20 63  | c%>64 . c%<91 c|
0000f550  25 2b 3d 33 32 0d 65 5e  12 20 63 24 3d bd 63 25  |%+=32.e^. c$=.c%|
0000f560  3a 73 24 2b 3d 63 24 0d  65 68 05 ed 0d 65 72 07  |:s$+=c$.eh...er.|
0000f570  3d 73 24 0d 65 7c 05 3a  0d 65 86 0c dd a4 6f 73  |=s$.e|.:.e....os|
0000f580  78 6d 61 78 0d 65 90 28  f4 20 73 63 72 65 65 6e  |xmax.e.(. screen|
0000f590  20 78 20 4f 53 20 75 6e  69 74 73 20 66 6f 72 20  | x OS units for |
0000f5a0  63 75 72 72 65 6e 74 20  6d 6f 64 65 0d 65 9a 2e  |current mode.e..|
0000f5b0  c8 99 20 22 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |.. "OS_ReadModeV|
0000f5c0  61 72 69 61 62 6c 65 22  2c 2d 31 2c 31 31 20 b8  |ariable",-1,11 .|
0000f5d0  20 2c 2c 78 6c 69 6d 69  74 25 0d 65 a4 2b c8 99  | ,,xlimit%.e.+..|
0000f5e0  20 22 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  | "OS_ReadModeVar|
0000f5f0  69 61 62 6c 65 22 2c 2d  31 2c 34 20 b8 20 2c 2c  |iable",-1,4 . ,,|
0000f600  78 65 69 67 25 0d 65 ae  17 3d 28 78 6c 69 6d 69  |xeig%.e..=(xlimi|
0000f610  74 25 2b 31 29 3c 3c 78  65 69 67 25 0d 65 b8 05  |t%+1)<<xeig%.e..|
0000f620  3a 0d 65 c2 0c dd a4 6f  73 79 6d 61 78 0d 65 cc  |:.e....osymax.e.|
0000f630  28 f4 20 73 63 72 65 65  6e 20 79 20 4f 53 20 75  |(. screen y OS u|
0000f640  6e 69 74 73 20 66 6f 72  20 63 75 72 72 65 6e 74  |nits for current|
0000f650  20 6d 6f 64 65 0d 65 d6  2e c8 99 20 22 4f 53 5f  | mode.e.... "OS_|
0000f660  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
0000f670  22 2c 2d 31 2c 31 32 20  b8 20 2c 2c 79 6c 69 6d  |",-1,12 . ,,ylim|
0000f680  69 74 25 0d 65 e0 2b c8  99 20 22 4f 53 5f 52 65  |it%.e.+.. "OS_Re|
0000f690  61 64 4d 6f 64 65 56 61  72 69 61 62 6c 65 22 2c  |adModeVariable",|
0000f6a0  2d 31 2c 35 20 b8 20 2c  2c 79 65 69 67 25 0d 65  |-1,5 . ,,yeig%.e|
0000f6b0  ea 17 3d 28 79 6c 69 6d  69 74 25 2b 31 29 3c 3c  |..=(ylimit%+1)<<|
0000f6c0  79 65 69 67 25 0d 65 f4  05 3a 0d 65 fe 1a dd f2  |yeig%.e..:.e....|
0000f6d0  62 65 65 70 3a d4 20 31  2c 2d 31 30 2c 32 30 30  |beep:. 1,-10,200|
0000f6e0  2c 31 3a e1 0d 66 08 19  dd f2 62 75 7a 7a 3a d4  |,1:..f....buzz:.|
0000f6f0  20 31 2c 2d 31 35 2c 35  30 2c 34 3a e1 0d 66 12  | 1,-15,50,4:..f.|
0000f700  05 3a 0d 66 1c 0d f4 2d  2d 2d 2d 2d 2d 2d 2d 0d  |.:.f...--------.|
0000f710  66 26 0d f4 2e 20 4d 45  4d 4f 52 59 0d 66 30 0d  |f&... MEMORY.f0.|
0000f720  f4 2d 2d 2d 2d 2d 2d 2d  2d 0d 66 3a 05 3a 0d 66  |.--------.f:.:.f|
0000f730  44 11 dd a4 67 65 74 73  6c 6f 74 73 69 7a 65 0d  |D...getslotsize.|
0000f740  66 4e 0f ea 20 73 6c 6f  74 73 69 7a 65 25 0d 66  |fN.. slotsize%.f|
0000f750  58 28 c8 99 20 22 57 69  6d 70 5f 53 6c 6f 74 53  |X(.. "Wimp_SlotS|
0000f760  69 7a 65 22 2c 2d 31 2c  2d 31 20 b8 20 73 6c 6f  |ize",-1,-1 . slo|
0000f770  74 73 69 7a 65 25 0d 66  62 0e 3d 73 6c 6f 74 73  |tsize%.fb.=slots|
0000f780  69 7a 65 25 0d 66 6c 05  3a 0d 66 76 19 dd a4 73  |ize%.fl.:.fv...s|
0000f790  65 74 73 6c 6f 74 73 69  7a 65 28 62 79 74 65 73  |etslotsize(bytes|
0000f7a0  25 29 0d 66 80 15 ea 20  73 69 7a 65 25 2c 6f 6b  |%).f... size%,ok|
0000f7b0  25 3a 6f 6b 25 3d b9 0d  66 8a 28 c8 99 20 22 57  |%:ok%=..f.(.. "W|
0000f7c0  69 6d 70 5f 53 6c 6f 74  53 69 7a 65 22 2c 62 79  |imp_SlotSize",by|
0000f7d0  74 65 73 25 2c 2d 31 20  b8 20 73 69 7a 65 25 0d  |tes%,-1 . size%.|
0000f7e0  66 94 1a e7 20 73 69 7a  65 25 3c 62 79 74 65 73  |f... size%<bytes|
0000f7f0  25 20 8c 20 6f 6b 25 3d  a3 0d 66 9e 08 3d 6f 6b  |% . ok%=..f..=ok|
0000f800  25 0d 66 a8 05 3a 0d 66  b2 0e f4 2d 2d 2d 2d 2d  |%.f..:.f...-----|
0000f810  2d 2d 2d 2d 0d 66 bc 0e  f4 2e 20 57 49 4e 44 4f  |----.f.... WINDO|
0000f820  57 53 0d 66 c6 0e f4 2d  2d 2d 2d 2d 2d 2d 2d 2d  |WS.f...---------|
0000f830  0d 66 d0 05 3a 0d 66 da  13 dd f2 6c 6f 61 64 74  |.f..:.f....loadt|
0000f840  65 6d 70 6c 61 74 65 73  0d 66 e4 31 c8 99 20 22  |emplates.f.1.. "|
0000f850  57 69 6d 70 5f 4f 70 65  6e 54 65 6d 70 6c 61 74  |Wimp_OpenTemplat|
0000f860  65 22 2c 2c 74 61 73 6b  64 69 72 24 2b 22 2e 54  |e",,taskdir$+".T|
0000f870  65 6d 70 6c 61 74 65 73  22 0d 66 ee 24 6d 61 69  |emplates".f.$mai|
0000f880  6e 25 3d a4 74 77 28 22  4d 61 69 6e 22 29 3a 6d  |n%=.tw("Main"):m|
0000f890  61 69 6e 74 69 74 25 3d  71 25 21 37 32 0d 66 f8  |aintit%=q%!72.f.|
0000f8a0  15 69 6e 66 6f 25 3d a4  74 77 28 22 49 6e 66 6f  |.info%=.tw("Info|
0000f8b0  22 29 0d 67 02 1b 6f 62  6a 69 6e 66 6f 25 3d a4  |").g..objinfo%=.|
0000f8c0  74 77 28 22 4f 62 6a 49  6e 66 6f 22 29 0d 67 0c  |tw("ObjInfo").g.|
0000f8d0  18 73 61 76 65 62 6f 78  25 3d a4 74 77 28 22 53  |.savebox%=.tw("S|
0000f8e0  61 76 65 22 29 0d 67 16  18 63 6f 70 79 62 6f 78  |ave").g..copybox|
0000f8f0  25 3d a4 74 77 28 22 43  6f 70 79 22 29 0d 67 20  |%=.tw("Copy").g |
0000f900  1c 6d 65 73 73 77 69 6e  64 25 3d a4 74 77 28 22  |.messwind%=.tw("|
0000f910  4d 65 73 73 61 67 65 22  29 0d 67 2a 1e 63 68 6f  |Message").g*.cho|
0000f920  69 63 65 77 69 6e 64 25  3d a4 74 77 28 22 43 68  |icewind%=.tw("Ch|
0000f930  6f 69 63 65 73 22 29 0d  67 34 1d 61 63 63 65 73  |oices").g4.acces|
0000f940  73 77 69 6e 64 25 3d a4  74 77 28 22 41 63 63 65  |swind%=.tw("Acce|
0000f950  73 73 22 29 0d 67 3e 1b  62 75 66 66 77 69 6e 64  |ss").g>.buffwind|
0000f960  25 3d a4 74 77 28 22 42  75 66 66 65 72 22 29 0d  |%=.tw("Buffer").|
0000f970  67 48 1b c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  |gH... "Wimp_Clos|
0000f980  65 54 65 6d 70 6c 61 74  65 22 0d 67 52 05 e1 0d  |eTemplate".gR...|
0000f990  67 5c 05 3a 0d 67 66 0c  dd a4 74 77 28 61 24 29  |g\.:.gf...tw(a$)|
0000f9a0  0d 67 70 26 ea 20 63 25  2c 65 6e 64 25 3a 65 6e  |.gp&. c%,end%:en|
0000f9b0  64 25 3d 62 75 66 66 65  72 25 2b 62 75 66 66 65  |d%=buffer%+buffe|
0000f9c0  72 73 69 7a 65 25 0d 67  7a 3d c8 99 20 22 57 69  |rsize%.gz=.. "Wi|
0000f9d0  6d 70 5f 4c 6f 61 64 54  65 6d 70 6c 61 74 65 22  |mp_LoadTemplate"|
0000f9e0  2c 2c 71 25 2c 62 75 66  66 65 72 25 2c 65 6e 64  |,,q%,buffer%,end|
0000f9f0  25 2c 2d 31 2c 61 24 20  b8 20 2c 2c 62 75 66 66  |%,-1,a$ . ,,buff|
0000fa00  65 72 25 0d 67 84 23 c8  99 20 22 57 69 6d 70 5f  |er%.g.#.. "Wimp_|
0000fa10  43 72 65 61 74 65 57 69  6e 64 6f 77 22 2c 2c 71  |CreateWindow",,q|
0000fa20  25 20 b8 20 63 25 0d 67  8e 07 3d 63 25 0d 67 98  |% . c%.g..=c%.g.|
0000fa30  05 3a 0d 67 a2 0d dd f2  6f 77 28 77 68 25 29 0d  |.:.g....ow(wh%).|
0000fa40  67 ac 1b f4 20 61 74 20  6d 79 20 62 65 68 65 73  |g... at my behes|
0000fa50  74 20 2d 20 6f 6e 20 74  6f 70 0d 67 b6 29 43 25  |t - on top.g.)C%|
0000fa60  21 30 3d 77 68 25 3a c8  99 20 22 57 69 6d 70 5f  |!0=wh%:.. "Wimp_|
0000fa70  47 65 74 57 69 6e 64 6f  77 53 74 61 74 65 22 2c  |GetWindowState",|
0000fa80  2c 43 25 0d 67 c0 25 43  25 21 32 38 3d 2d 31 3a  |,C%.g.%C%!28=-1:|
0000fa90  c8 99 20 22 57 69 6d 70  5f 4f 70 65 6e 57 69 6e  |.. "Wimp_OpenWin|
0000faa0  64 6f 77 22 2c 2c 43 25  0d 67 ca 05 e1 0d 67 d4  |dow",,C%.g....g.|
0000fab0  05 3a 0d 67 de 0e dd f2  6f 77 32 28 77 68 25 29  |.:.g....ow2(wh%)|
0000fac0  0d 67 e8 14 f4 20 66 72  6f 6d 20 57 69 6d 70 20  |.g... from Wimp |
0000fad0  50 6f 6c 6c 0d 67 f2 1c  c8 99 20 22 57 69 6d 70  |Poll.g.... "Wimp|
0000fae0  5f 4f 70 65 6e 57 69 6e  64 6f 77 22 2c 2c 71 25  |_OpenWindow",,q%|
0000faf0  0d 67 fc 05 e1 0d 68 06  05 3a 0d 68 10 0e dd f2  |.g....h..:.h....|
0000fb00  6f 77 63 28 77 68 25 29  0d 68 1a 29 f4 20 61 74  |owc(wh%).h.). at|
0000fb10  20 6d 79 20 62 65 68 65  73 74 20 2d 20 6f 6e 20  | my behest - on |
0000fb20  74 6f 70 20 61 6e 64 20  69 6e 20 63 65 6e 74 72  |top and in centr|
0000fb30  65 0d 68 24 29 43 25 21  30 3d 77 68 25 3a c8 99  |e.h$)C%!0=wh%:..|
0000fb40  20 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  | "Wimp_GetWindow|
0000fb50  53 74 61 74 65 22 2c 2c  43 25 0d 68 2e 32 c8 99  |State",,C%.h.2..|
0000fb60  20 22 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  | "OS_ReadModeVar|
0000fb70  69 61 62 6c 65 22 2c 2d  31 2c 31 31 20 b8 20 2c  |iable",-1,11 . ,|
0000fb80  2c 78 77 69 6e 64 6c 69  6d 69 74 25 0d 68 38 32  |,xwindlimit%.h82|
0000fb90  c8 99 20 22 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |.. "OS_ReadModeV|
0000fba0  61 72 69 61 62 6c 65 22  2c 2d 31 2c 34 20 20 b8  |ariable",-1,4  .|
0000fbb0  20 2c 2c 78 65 69 67 66  61 63 74 6f 72 25 0d 68  | ,,xeigfactor%.h|
0000fbc0  42 32 c8 99 20 22 4f 53  5f 52 65 61 64 4d 6f 64  |B2.. "OS_ReadMod|
0000fbd0  65 56 61 72 69 61 62 6c  65 22 2c 2d 31 2c 31 32  |eVariable",-1,12|
0000fbe0  20 b8 20 2c 2c 79 77 69  6e 64 6c 69 6d 69 74 25  | . ,,ywindlimit%|
0000fbf0  0d 68 4c 32 c8 99 20 22  4f 53 5f 52 65 61 64 4d  |.hL2.. "OS_ReadM|
0000fc00  6f 64 65 56 61 72 69 61  62 6c 65 22 2c 2d 31 2c  |odeVariable",-1,|
0000fc10  35 20 20 b8 20 2c 2c 79  65 69 67 66 61 63 74 6f  |5  . ,,yeigfacto|
0000fc20  72 25 0d 68 56 28 78 77  69 6e 64 6c 69 6d 69 74  |r%.hV(xwindlimit|
0000fc30  25 3d 78 77 69 6e 64 6c  69 6d 69 74 25 3c 3c 78  |%=xwindlimit%<<x|
0000fc40  65 69 67 66 61 63 74 6f  72 25 0d 68 60 28 79 77  |eigfactor%.h`(yw|
0000fc50  69 6e 64 6c 69 6d 69 74  25 3d 79 77 69 6e 64 6c  |indlimit%=ywindl|
0000fc60  69 6d 69 74 25 3c 3c 79  65 69 67 66 61 63 74 6f  |imit%<<yeigfacto|
0000fc70  72 25 0d 68 6a 1a 78 65  69 67 66 61 63 74 6f 72  |r%.hj.xeigfactor|
0000fc80  25 3d 43 25 21 31 32 2d  43 25 21 34 0d 68 74 1a  |%=C%!12-C%!4.ht.|
0000fc90  79 65 69 67 66 61 63 74  6f 72 25 3d 43 25 21 31  |yeigfactor%=C%!1|
0000fca0  36 2d 43 25 21 38 0d 68  7e 27 43 25 21 34 20 3d  |6-C%!8.h~'C%!4 =|
0000fcb0  20 28 78 77 69 6e 64 6c  69 6d 69 74 25 2d 78 65  | (xwindlimit%-xe|
0000fcc0  69 67 66 61 63 74 6f 72  25 29 3e 3e 31 0d 68 88  |igfactor%)>>1.h.|
0000fcd0  27 43 25 21 38 20 3d 20  28 79 77 69 6e 64 6c 69  |'C%!8 = (ywindli|
0000fce0  6d 69 74 25 2d 79 65 69  67 66 61 63 74 6f 72 25  |mit%-yeigfactor%|
0000fcf0  29 3e 3e 31 0d 68 92 1b  43 25 21 31 32 3d 20 43  |)>>1.h..C%!12= C|
0000fd00  25 21 34 2b 78 65 69 67  66 61 63 74 6f 72 25 0d  |%!4+xeigfactor%.|
0000fd10  68 9c 1b 43 25 21 31 36  3d 20 43 25 21 38 2b 79  |h..C%!16= C%!8+y|
0000fd20  65 69 67 66 61 63 74 6f  72 25 0d 68 a6 25 43 25  |eigfactor%.h.%C%|
0000fd30  21 32 38 3d 2d 31 3a c8  99 20 22 57 69 6d 70 5f  |!28=-1:.. "Wimp_|
0000fd40  4f 70 65 6e 57 69 6e 64  6f 77 22 2c 2c 43 25 0d  |OpenWindow",,C%.|
0000fd50  68 b0 05 e1 0d 68 ba 05  3a 0d 68 c4 0d dd f2 63  |h....h..:.h....c|
0000fd60  77 28 77 68 25 29 0d 68  ce 26 43 25 21 30 3d 77  |w(wh%).h.&C%!0=w|
0000fd70  68 25 3a c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  |h%:.. "Wimp_Clos|
0000fd80  65 57 69 6e 64 6f 77 22  2c 2c 43 25 0d 68 d8 26  |eWindow",,C%.h.&|
0000fd90  e7 20 77 68 25 3d 6d 61  69 6e 25 20 6f 70 65 6e  |. wh%=main% open|
0000fda0  25 3d a3 3a f2 63 77 28  62 75 66 66 77 69 6e 64  |%=.:.cw(buffwind|
0000fdb0  25 29 0d 68 e2 05 e1 0d  68 ec 05 3a 0d 68 f6 0a  |%).h....h..:.h..|
0000fdc0  dd f2 73 74 61 72 0d 69  00 33 f2 74 69 74 28 6d  |..star.i.3.tit(m|
0000fdd0  61 69 6e 25 2c 6d 61 69  6e 74 69 74 25 2c 22 54  |ain%,maintit%,"T|
0000fde0  69 67 65 72 3a 22 2b 64  69 72 24 2b 22 20 2a 22  |iger:"+dir$+" *"|
0000fdf0  29 3a 73 74 61 72 25 3d  b9 0d 69 0a 05 e1 0d 69  |):star%=..i....i|
0000fe00  14 05 3a 0d 69 1e 0c dd  f2 6e 6f 73 74 61 72 0d  |..:.i....nostar.|
0000fe10  69 28 2e f2 74 69 74 28  6d 61 69 6e 25 2c 6d 61  |i(..tit(main%,ma|
0000fe20  69 6e 74 69 74 25 2c 22  54 69 67 65 72 3a 22 2b  |intit%,"Tiger:"+|
0000fe30  64 69 72 24 29 3a 73 74  61 72 25 3d a3 0d 69 32  |dir$):star%=..i2|
0000fe40  05 e1 0d 69 3c 05 3a 0d  69 46 17 dd f2 74 69 74  |...i<.:.iF...tit|
0000fe50  28 77 68 25 2c 61 64 25  2c 73 74 72 24 29 0d 69  |(wh%,ad%,str$).i|
0000fe60  50 22 f4 20 66 6f 72 63  65 20 63 68 61 6e 67 65  |P". force change|
0000fe70  20 6f 66 20 77 69 6e 64  6f 77 20 74 69 74 6c 65  | of window title|
0000fe80  0d 69 5a 34 24 61 64 25  3d 73 74 72 24 3a 21 43  |.iZ4$ad%=str$:!C|
0000fe90  25 3d 77 68 25 3a c8 99  20 22 57 69 6d 70 5f 47  |%=wh%:.. "Wimp_G|
0000fea0  65 74 57 69 6e 64 6f 77  4f 75 74 6c 69 6e 65 22  |etWindowOutline"|
0000feb0  2c 2c 43 25 0d 69 64 31  6d 69 6e 78 25 3d 43 25  |,,C%.id1minx%=C%|
0000fec0  21 34 3a 6d 69 6e 79 25  3d 43 25 21 38 3a 6d 61  |!4:miny%=C%!8:ma|
0000fed0  78 78 25 3d 43 25 21 31  32 3a 6d 61 78 79 25 3d  |xx%=C%!12:maxy%=|
0000fee0  43 25 21 31 36 0d 69 6e  3f c8 99 20 22 57 69 6d  |C%!16.in?.. "Wim|
0000fef0  70 5f 46 6f 72 63 65 52  65 64 72 61 77 22 2c 2d  |p_ForceRedraw",-|
0000ff00  31 2c 6d 69 6e 78 25 2b  38 34 2c 6d 61 78 79 25  |1,minx%+84,maxy%|
0000ff10  2d 34 30 2c 6d 61 78 78  25 2d 34 34 2c 6d 61 78  |-40,maxx%-44,max|
0000ff20  79 25 2d 34 0d 69 78 05  e1 0d 69 82 05 3a 0d 69  |y%-4.ix...i..:.i|
0000ff30  8c 0a dd f2 73 69 7a 65  0d 69 96 28 f4 20 54 61  |....size.i.(. Ta|
0000ff40  62 20 61 64 6a 75 73 74  73 20 73 69 7a 65 20 74  |b adjusts size t|
0000ff50  6f 20 6f 62 6a 20 6e 61  6d 65 73 20 6f 6e 6c 79  |o obj names only|
0000ff60  0d 69 a0 2b 43 25 21 30  3d 6d 61 69 6e 25 3a c8  |.i.+C%!0=main%:.|
0000ff70  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
0000ff80  77 53 74 61 74 65 22 2c  2c 43 25 0d 69 aa 24 e7  |wState",,C%.i.$.|
0000ff90  20 43 25 21 31 32 3c 3e  43 25 21 34 2b 32 34 34  | C%!12<>C%!4+244|
0000ffa0  20 84 20 43 25 21 38 3e  2d 31 35 30 30 20 8c 0d  | . C%!8>-1500 ..|
0000ffb0  69 b4 23 20 43 25 21 31  32 3d 43 25 21 34 2b 32  |i.# C%!12=C%!4+2|
0000ffc0  34 34 3a 43 25 21 38 3d  43 25 21 31 36 2d 31 35  |44:C%!8=C%!16-15|
0000ffd0  30 30 0d 69 be 05 cd 0d  69 c8 25 43 25 21 32 38  |00.i....i.%C%!28|
0000ffe0  3d 2d 31 3a c8 99 20 22  57 69 6d 70 5f 4f 70 65  |=-1:.. "Wimp_Ope|
0000fff0  6e 57 69 6e 64 6f 77 22  2c 2c 43 25 0d 69 d2 05  |nWindow",,C%.i..|
00010000  e1 0d 69 dc 05 3a 0d 69  e6 0f dd a4 6f 70 65 6e  |..i..:.i....open|
00010010  28 77 68 25 29 0d 69 f0  28 21 43 25 3d 77 68 25  |(wh%).i.(!C%=wh%|
00010020  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 57 69 6e  |:.. "Wimp_GetWin|
00010030  64 6f 77 53 74 61 74 65  22 2c 2c 43 25 0d 69 fa  |dowState",,C%.i.|
00010040  16 3d a4 62 69 74 73 65  74 28 43 25 21 33 32 2c  |.=.bitset(C%!32,|
00010050  31 36 29 0d 6a 04 05 3a  0d 6a 0e 10 dd a4 66 6f  |16).j..:.j....fo|
00010060  63 75 73 28 77 68 25 29  0d 6a 18 28 21 43 25 3d  |cus(wh%).j.(!C%=|
00010070  77 68 25 3a c8 99 20 22  57 69 6d 70 5f 47 65 74  |wh%:.. "Wimp_Get|
00010080  57 69 6e 64 6f 77 53 74  61 74 65 22 2c 2c 43 25  |WindowState",,C%|
00010090  0d 6a 22 16 3d a4 62 69  74 73 65 74 28 43 25 21  |.j".=.bitset(C%!|
000100a0  33 32 2c 32 30 29 0d 6a  2c 05 3a 0d 6a 36 13 dd  |32,20).j,.:.j6..|
000100b0  a4 62 69 74 73 65 74 28  69 25 2c 62 25 29 0d 6a  |.bitset(i%,b%).j|
000100c0  40 22 f4 20 69 73 20 62  69 74 20 62 25 20 69 6e  |@". is bit b% in|
000100d0  20 69 6e 74 65 67 65 72  20 69 25 20 73 65 74 3f  | integer i% set?|
000100e0  0d 6a 4a 14 ea 20 6e 25  2c 64 25 3a 64 25 3d 31  |.jJ.. n%,d%:d%=1|
000100f0  3c 3c 62 25 0d 6a 54 15  6e 25 3d 28 69 25 20 80  |<<b%.jT.n%=(i% .|
00010100  20 64 25 29 20 81 20 64  25 0d 6a 5e 0e e7 20 6e  | d%) . d%.j^.. n|
00010110  25 3d 30 20 8c 3d a3 0d  6a 68 06 3d b9 0d 6a 72  |%=0 .=..jh.=..jr|
00010120  05 3a 0d 6a 7c 0c f4 2d  2d 2d 2d 2d 2d 2d 0d 6a  |.:.j|..-------.j|
00010130  86 0c f4 2e 20 49 43 4f  4e 53 0d 6a 90 0c f4 2d  |.... ICONS.j...-|
00010140  2d 2d 2d 2d 2d 2d 0d 6a  9a 05 3a 0d 6a a4 0d dd  |------.j..:.j...|
00010150  f2 62 61 72 69 63 6f 6e  0d 6a ae 2e 43 25 21 30  |.baricon.j..C%!0|
00010160  3d 2d 32 3a 43 25 21 34  3d 30 3a 43 25 21 38 3d  |=-2:C%!4=0:C%!8=|
00010170  2d 31 36 3a 43 25 21 31  32 3d 31 31 32 3a 43 25  |-16:C%!12=112:C%|
00010180  21 31 36 3d 36 38 0d 6a  b8 38 43 25 21 32 30 3d  |!16=68.j.8C%!20=|
00010190  26 31 37 30 30 33 31 30  42 3a 43 25 21 32 34 3d  |&1700310B:C%!24=|
000101a0  62 61 72 62 75 66 25 3a  43 25 21 32 38 3d 73 70  |barbuf%:C%!28=sp|
000101b0  72 69 74 61 64 25 3a 43  25 21 33 32 3d 38 0d 6a  |ritad%:C%!32=8.j|
000101c0  c2 27 c8 99 20 22 57 69  6d 70 5f 43 72 65 61 74  |.'.. "Wimp_Creat|
000101d0  65 49 63 6f 6e 22 2c 2c  43 25 20 b8 20 62 61 72  |eIcon",,C% . bar|
000101e0  69 63 6f 6e 25 0d 6a cc  05 e1 0d 6a d6 05 3a 0d  |icon%.j....j..:.|
000101f0  6a e0 11 dd f2 63 72 65  61 74 65 69 63 6f 6e 73  |j....createicons|
00010200  0d 6a ea 15 f4 20 69 63  6f 6e 73 20 66 6f 72 20  |.j... icons for |
00010210  6e 61 6d 65 73 0d 6a f4  29 6d 69 6e 78 25 3d 31  |names.j.)minx%=1|
00010220  32 3a 6d 69 6e 79 25 3d  2d 35 34 3a 6d 61 78 78  |2:miny%=-54:maxx|
00010230  25 3d 32 33 30 3a 6d 61  78 79 25 3d 2d 34 0d 6a  |%=230:maxy%=-4.j|
00010240  fe 12 e3 20 4a 25 3d 30  20 b8 20 6d 61 78 6f 25  |... J%=0 . maxo%|
00010250  0d 6b 08 41 20 24 6e 61  6d 65 25 28 4a 25 29 3d  |.k.A $name%(J%)=|
00010260  22 22 3a 24 76 61 6c 25  28 4a 25 29 3d 22 22 3a  |"":$val%(J%)="":|
00010270  64 31 25 3d 6e 61 6d 65  25 28 4a 25 29 3a 64 32  |d1%=name%(J%):d2|
00010280  25 3d 76 61 6c 25 28 4a  25 29 3a 64 33 25 3d 31  |%=val%(J%):d3%=1|
00010290  33 0d 6b 12 48 20 69 25  3d a4 69 63 6f 6e 28 6d  |3.k.H i%=.icon(m|
000102a0  61 69 6e 25 2c 6d 69 6e  78 25 2c 6d 61 78 79 25  |ain%,minx%,maxy%|
000102b0  2d 34 34 2c 6d 61 78 78  25 2c 6d 61 78 79 25 2c  |-44,maxx%,maxy%,|
000102c0  26 31 42 30 30 45 31 33  31 2c 22 22 2c 64 31 25  |&1B00E131,"",d1%|
000102d0  2c 64 32 25 2c 64 33 25  29 0d 6b 1c 18 20 6d 69  |,d2%,d3%).k.. mi|
000102e0  6e 79 25 2d 3d 34 34 3a  6d 61 78 79 25 2d 3d 34  |ny%-=44:maxy%-=4|
000102f0  34 0d 6b 26 05 ed 0d 6b  30 05 3a 0d 6b 3a 1c f4  |4.k&...k0.:.k:..|
00010300  20 69 63 6f 6e 73 20 66  6f 72 20 64 65 73 63 72  | icons for descr|
00010310  69 70 74 69 6f 6e 73 0d  6b 44 36 6d 69 6e 79 25  |iptions.kD6miny%|
00010320  3d 2d 35 38 3a 6d 61 78  79 25 3d 2d 38 3a 6d 61  |=-58:maxy%=-8:ma|
00010330  78 78 25 3d 77 69 64 74  68 25 3a f4 20 76 61 72  |xx%=width%:. var|
00010340  69 65 73 20 77 69 74 68  20 6d 6f 64 65 0d 6b 4e  |ies with mode.kN|
00010350  52 62 75 66 6c 65 6e 25  3d 6d 61 78 64 65 73 63  |Rbuflen%=maxdesc|
00010360  6c 65 6e 25 2b 31 3a f4  20 66 69 74 73 20 6f 6e  |len%+1:. fits on|
00010370  20 31 33 32 20 63 68 72  20 73 63 72 65 65 6e 3b  | 132 chr screen;|
00010380  20 66 69 74 73 20 6f 6e  20 6c 69 73 74 69 6e 67  | fits on listing|
00010390  20 70 61 70 65 72 20 69  6e 20 63 6f 6e 64 2e 0d  | paper in cond..|
000103a0  6b 58 12 e3 20 4a 25 3d  30 20 b8 20 6d 61 78 6f  |kX.. J%=0 . maxo|
000103b0  25 0d 6b 62 0d 20 e7 20  4a 25 3d 30 20 8c 0d 6b  |%.kb. . J%=0 ..k|
000103c0  6c 26 20 20 66 25 3d 26  31 42 30 30 45 31 33 31  |l&  f%=&1B00E131|
000103d0  3a 76 25 3d 76 61 6c 69  64 25 3a 6d 69 6e 78 25  |:v%=valid%:minx%|
000103e0  3d 32 34 30 0d 6b 76 06  20 cc 0d 6b 80 22 20 20  |=240.kv. ..k."  |
000103f0  66 25 3d 26 30 37 30 30  45 31 33 31 3a 76 25 3d  |f%=&0700E131:v%=|
00010400  2d 31 3a 6d 69 6e 78 25  3d 32 34 34 0d 6b 8a 06  |-1:minx%=244.k..|
00010410  20 cd 0d 6b 94 12 20 24  64 65 73 63 25 28 4a 25  | ..k.. $desc%(J%|
00010420  29 3d 22 22 0d 6b 9e 4a  20 69 25 3d a4 69 63 6f  |)="".k.J i%=.ico|
00010430  6e 28 6d 61 69 6e 25 2c  6d 69 6e 78 25 2c 6d 61  |n(main%,minx%,ma|
00010440  78 79 25 2d 34 30 2c 6d  61 78 78 25 2c 6d 61 78  |xy%-40,maxx%,max|
00010450  79 25 2c 66 25 2c 22 22  2c 64 65 73 63 25 28 4a  |y%,f%,"",desc%(J|
00010460  25 29 2c 76 25 2c 62 75  66 6c 65 6e 25 29 0d 6b  |%),v%,buflen%).k|
00010470  a8 18 20 6d 69 6e 79 25  2d 3d 34 34 3a 6d 61 78  |.. miny%-=44:max|
00010480  79 25 2d 3d 34 34 0d 6b  b2 05 ed 0d 6b bc 05 3a  |y%-=44.k....k..:|
00010490  0d 6b c6 29 f4 20 69 63  6f 6e 20 66 6f 72 20 67  |.k.). icon for g|
000104a0  61 69 6e 69 6e 67 20 69  6e 70 75 74 20 66 6f 63  |aining input foc|
000104b0  75 73 20 28 23 31 35 36  29 0d 6b d0 3a 69 25 3d  |us (#156).k.:i%=|
000104c0  a4 69 63 6f 6e 28 6d 61  69 6e 25 2c 32 34 30 2c  |.icon(main%,240,|
000104d0  2d 34 30 2c 32 32 38 2b  38 2c 2d 34 30 2b 38 2c  |-40,228+8,-40+8,|
000104e0  26 42 42 30 30 45 31 33  34 2c 22 22 2c 30 2c 30  |&BB00E134,"",0,0|
000104f0  2c 30 29 0d 6b da 05 e1  0d 6b e4 05 3a 0d 6b ee  |,0).k....k..:.k.|
00010500  40 dd a4 69 63 6f 6e 28  77 68 25 2c 6d 69 6e 78  |@..icon(wh%,minx|
00010510  25 2c 6d 69 6e 79 25 2c  6d 61 78 78 25 2c 6d 61  |%,miny%,maxx%,ma|
00010520  78 79 25 2c 66 6c 61 67  73 25 2c 74 65 78 74 24  |xy%,flags%,text$|
00010530  2c 64 31 25 2c 64 32 25  2c 64 33 25 29 0d 6b f8  |,d1%,d2%,d3%).k.|
00010540  47 43 25 21 30 3d 77 68  25 3a 43 25 21 34 3d 6d  |GC%!0=wh%:C%!4=m|
00010550  69 6e 78 25 3a 43 25 21  38 3d 6d 69 6e 79 25 3a  |inx%:C%!8=miny%:|
00010560  43 25 21 31 32 3d 6d 61  78 78 25 3a 43 25 21 31  |C%!12=maxx%:C%!1|
00010570  36 3d 6d 61 78 79 25 3a  43 25 21 32 30 3d 66 6c  |6=maxy%:C%!20=fl|
00010580  61 67 73 25 0d 6c 02 0d  e7 20 64 31 25 3d 30 20  |ags%.l... d1%=0 |
00010590  8c 0d 6c 0c 13 20 24 28  43 25 2b 32 34 29 3d 74  |..l.. $(C%+24)=t|
000105a0  65 78 74 24 0d 6c 16 05  cc 0d 6c 20 22 20 43 25  |ext$.l....l " C%|
000105b0  21 32 34 3d 64 31 25 3a  43 25 21 32 38 3d 64 32  |!24=d1%:C%!28=d2|
000105c0  25 3a 43 25 21 33 32 3d  64 33 25 0d 6c 2a 05 cd  |%:C%!32=d3%.l*..|
000105d0  0d 6c 34 22 c8 99 20 22  57 69 6d 70 5f 43 72 65  |.l4".. "Wimp_Cre|
000105e0  61 74 65 49 63 6f 6e 22  2c 2c 43 25 20 b8 20 69  |ateIcon",,C% . i|
000105f0  68 25 0d 6c 3e 08 3d 69  68 25 0d 6c 48 05 3a 0d  |h%.l>.=ih%.lH.:.|
00010600  6c 52 11 dd f2 73 69 28  77 68 25 2c 69 68 25 29  |lR...si(wh%,ih%)|
00010610  0d 6c 5c 2c 43 25 21 30  3d 77 68 25 3a 43 25 21  |.l\,C%!0=wh%:C%!|
00010620  34 3d 69 68 25 3a 43 25  21 38 3d 31 3c 3c 32 31  |4=ih%:C%!8=1<<21|
00010630  3a 43 25 21 31 32 3d 31  3c 3c 32 31 0d 6c 66 1d  |:C%!12=1<<21.lf.|
00010640  c8 99 22 57 69 6d 70 5f  53 65 74 49 63 6f 6e 53  |.."Wimp_SetIconS|
00010650  74 61 74 65 22 2c 2c 43  25 0d 6c 70 05 e1 0d 6c  |tate",,C%.lp...l|
00010660  7a 05 3a 0d 6c 84 11 dd  f2 75 69 28 77 68 25 2c  |z.:.l....ui(wh%,|
00010670  69 68 25 29 0d 6c 8e 28  43 25 21 30 3d 77 68 25  |ih%).l.(C%!0=wh%|
00010680  3a 43 25 21 34 3d 69 68  25 3a 43 25 21 38 3d 30  |:C%!4=ih%:C%!8=0|
00010690  3a 43 25 21 31 32 3d 31  3c 3c 32 31 0d 6c 98 1d  |:C%!12=1<<21.l..|
000106a0  c8 99 22 57 69 6d 70 5f  53 65 74 49 63 6f 6e 53  |.."Wimp_SetIconS|
000106b0  74 61 74 65 22 2c 2c 43  25 0d 6c a2 05 e1 0d 6c  |tate",,C%.l....l|
000106c0  ac 05 3a 0d 6c b6 11 dd  f2 74 69 28 77 68 25 2c  |..:.l....ti(wh%,|
000106d0  69 68 25 29 0d 6c c0 34  e7 20 a4 69 73 28 6d 61  |ih%).l.4. .is(ma|
000106e0  69 6e 25 2c 69 68 25 29  20 f2 75 69 28 6d 61 69  |in%,ih%) .ui(mai|
000106f0  6e 25 2c 69 68 25 29 20  8b 20 f2 73 69 28 6d 61  |n%,ih%) . .si(ma|
00010700  69 6e 25 2c 69 68 25 29  0d 6c ca 05 e1 0d 6c d4  |in%,ih%).l....l.|
00010710  05 3a 0d 6c de 11 dd a4  69 73 28 77 68 25 2c 69  |.:.l....is(wh%,i|
00010720  68 25 29 0d 6c e8 08 ea  20 6e 25 0d 6c f2 2e 21  |h%).l... n%.l..!|
00010730  43 25 3d 77 68 25 3a 43  25 21 34 3d 69 68 25 3a  |C%=wh%:C%!4=ih%:|
00010740  c8 99 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |.."Wimp_GetIconS|
00010750  74 61 74 65 22 2c 2c 43  25 0d 6c fc 18 6e 25 3d  |tate",,C%.l..n%=|
00010760  28 28 43 25 21 32 34 29  3e 3e 32 31 29 20 80 20  |((C%!24)>>21) . |
00010770  31 0d 6d 06 0e e7 20 6e  25 3d 30 20 8c 3d a3 0d  |1.m... n%=0 .=..|
00010780  6d 10 06 3d b9 0d 6d 1a  05 3a 0d 6d 24 14 dd f2  |m..=..m..:.m$...|
00010790  69 74 28 77 68 25 2c 69  68 25 2c 73 24 29 0d 6d  |it(wh%,ih%,s$).m|
000107a0  2e 30 43 25 21 30 3d 77  68 25 3a 43 25 21 34 3d  |.0C%!0=wh%:C%!4=|
000107b0  69 68 25 3a c8 99 20 22  57 69 6d 70 5f 47 65 74  |ih%:.. "Wimp_Get|
000107c0  49 63 6f 6e 53 74 61 74  65 22 2c 2c 43 25 0d 6d  |IconState",,C%.m|
000107d0  38 0f 24 28 43 25 21 32  38 29 3d 73 24 0d 6d 42  |8.$(C%!28)=s$.mB|
000107e0  2d 43 25 21 38 3d 30 3a  43 25 21 31 32 3d 30 3a  |-C%!8=0:C%!12=0:|
000107f0  c8 99 20 22 57 69 6d 70  5f 53 65 74 49 63 6f 6e  |.. "Wimp_SetIcon|
00010800  53 74 61 74 65 22 2c 2c  43 25 0d 6d 4c 05 e1 0d  |State",,C%.mL...|
00010810  6d 56 05 3a 0d 6d 60 11  dd a4 69 74 28 77 68 25  |mV.:.m`...it(wh%|
00010820  2c 69 68 25 29 0d 6d 6a  30 43 25 21 30 3d 77 68  |,ih%).mj0C%!0=wh|
00010830  25 3a 43 25 21 34 3d 69  68 25 3a c8 99 20 22 57  |%:C%!4=ih%:.. "W|
00010840  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
00010850  22 2c 2c 43 25 0d 6d 74  0d 3d 24 28 43 25 21 32  |",,C%.mt.=$(C%!2|
00010860  38 29 0d 6d 7e 05 3a 0d  6d 88 1c dd f2 73 69 73  |8).m~.:.m....sis|
00010870  28 77 68 25 2c 69 68 25  2c 6e 65 77 66 6c 61 67  |(wh%,ih%,newflag|
00010880  73 25 29 0d 6d 92 14 f4  20 73 65 74 20 69 63 6f  |s%).m... set ico|
00010890  6e 20 73 74 61 74 65 0d  6d 9c 11 ea 20 63 6c 65  |n state.m... cle|
000108a0  61 72 25 2c 65 6f 72 25  0d 6d a6 23 63 6c 65 61  |ar%,eor%.m.#clea|
000108b0  72 25 3d 26 46 46 46 46  46 46 46 46 3a 65 6f 72  |r%=&FFFFFFFF:eor|
000108c0  25 3d 6e 65 77 66 6c 61  67 73 25 0d 6d b0 2c 43  |%=newflags%.m.,C|
000108d0  25 21 30 3d 77 68 25 3a  43 25 21 34 3d 69 68 25  |%!0=wh%:C%!4=ih%|
000108e0  3a 43 25 21 38 3d 65 6f  72 25 3a 43 25 21 31 32  |:C%!8=eor%:C%!12|
000108f0  3d 63 6c 65 61 72 25 0d  6d ba 1e c8 99 20 22 57  |=clear%.m.... "W|
00010900  69 6d 70 5f 53 65 74 49  63 6f 6e 53 74 61 74 65  |imp_SetIconState|
00010910  22 2c 2c 43 25 0d 6d c4  05 e1 0d 6d ce 05 3a 0d  |",,C%.m....m..:.|
00010920  6d d8 1c dd f2 73 65 74  69 63 6f 6e 62 69 74 28  |m....seticonbit(|
00010930  77 68 25 2c 69 68 25 2c  62 25 29 0d 6d e2 15 43  |wh%,ih%,b%).m..C|
00010940  25 21 30 3d 77 68 25 3a  43 25 21 34 3d 69 68 25  |%!0=wh%:C%!4=ih%|
00010950  0d 6d ec 1a 43 25 21 38  3d 31 3c 3c 62 25 3a 43  |.m..C%!8=1<<b%:C|
00010960  25 21 31 32 3d 31 3c 3c  62 25 0d 6d f6 1d c8 99  |%!12=1<<b%.m....|
00010970  22 57 69 6d 70 5f 53 65  74 49 63 6f 6e 53 74 61  |"Wimp_SetIconSta|
00010980  74 65 22 2c 2c 43 25 0d  6e 00 05 e1 0d 6e 0a 05  |te",,C%.n....n..|
00010990  3a 0d 6e 14 1e dd f2 63  6c 65 61 72 69 63 6f 6e  |:.n....clearicon|
000109a0  62 69 74 28 77 68 25 2c  69 68 25 2c 62 25 29 0d  |bit(wh%,ih%,b%).|
000109b0  6e 1e 15 43 25 21 30 3d  77 68 25 3a 43 25 21 34  |n..C%!0=wh%:C%!4|
000109c0  3d 69 68 25 0d 6e 28 16  43 25 21 38 3d 30 3a 43  |=ih%.n(.C%!8=0:C|
000109d0  25 21 31 32 3d 31 3c 3c  62 25 0d 6e 32 1d c8 99  |%!12=1<<b%.n2...|
000109e0  22 57 69 6d 70 5f 53 65  74 49 63 6f 6e 53 74 61  |"Wimp_SetIconSta|
000109f0  74 65 22 2c 2c 43 25 0d  6e 3c 05 e1 0d 6e 46 05  |te",,C%.n<...nF.|
00010a00  3a 0d 6e 50 17 dd f2 64  69 28 77 68 25 2c 66 72  |:.nP...di(wh%,fr|
00010a10  6f 6d 25 2c 74 6f 25 29  0d 6e 5a 11 ea 20 4a 25  |om%,to%).nZ.. J%|
00010a20  3a 43 25 21 30 3d 77 68  25 0d 6e 64 37 e3 20 4a  |:C%!0=wh%.nd7. J|
00010a30  25 3d 66 72 6f 6d 25 20  b8 20 74 6f 25 3a 43 25  |%=from% . to%:C%|
00010a40  21 34 3d 4a 25 3a c8 99  20 22 57 69 6d 70 5f 44  |!4=J%:.. "Wimp_D|
00010a50  65 6c 65 74 65 49 63 6f  6e 22 2c 2c 43 25 3a ed  |eleteIcon",,C%:.|
00010a60  0d 6e 6e 2b 43 25 21 30  3d 77 68 25 3a c8 99 20  |.nn+C%!0=wh%:.. |
00010a70  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 4f  |"Wimp_GetWindowO|
00010a80  75 74 6c 69 6e 65 22 2c  2c 43 25 0d 6e 78 31 6d  |utline",,C%.nx1m|
00010a90  69 6e 78 25 3d 43 25 21  34 3a 6d 69 6e 79 25 3d  |inx%=C%!4:miny%=|
00010aa0  43 25 21 38 3a 6d 61 78  78 25 3d 43 25 21 31 32  |C%!8:maxx%=C%!12|
00010ab0  3a 6d 61 78 79 25 3d 43  25 21 31 36 0d 6e 82 34  |:maxy%=C%!16.n.4|
00010ac0  c8 99 20 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  |.. "Wimp_ForceRe|
00010ad0  64 72 61 77 22 2c 2d 31  2c 6d 69 6e 78 25 2c 6d  |draw",-1,minx%,m|
00010ae0  69 6e 79 25 2c 6d 61 78  78 25 2c 6d 61 78 79 25  |iny%,maxx%,maxy%|
00010af0  0d 6e 8c 05 e1 0d 6e 96  05 3a 0d 6e a0 13 dd a4  |.n....n..:.n....|
00010b00  76 61 78 28 77 68 25 2c  77 61 78 25 29 0d 6e aa  |vax(wh%,wax%).n.|
00010b10  28 21 43 25 3d 77 68 25  3a c8 99 20 22 57 69 6d  |(!C%=wh%:.. "Wim|
00010b20  70 5f 47 65 74 57 69 6e  64 6f 77 53 74 61 74 65  |p_GetWindowState|
00010b30  22 2c 2c 43 25 0d 6e b4  16 3d 77 61 78 25 2d 28  |",,C%.n..=wax%-(|
00010b40  43 25 21 32 30 2d 43 25  21 34 29 0d 6e be 05 3a  |C%!20-C%!4).n..:|
00010b50  0d 6e c8 13 dd a4 76 61  79 28 77 68 25 2c 77 61  |.n....vay(wh%,wa|
00010b60  79 25 29 0d 6e d2 28 21  43 25 3d 77 68 25 3a c8  |y%).n.(!C%=wh%:.|
00010b70  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
00010b80  77 53 74 61 74 65 22 2c  2c 43 25 0d 6e dc 17 3d  |wState",,C%.n..=|
00010b90  77 61 79 25 2d 28 43 25  21 32 34 2d 43 25 21 31  |way%-(C%!24-C%!1|
00010ba0  36 29 0d 6e e6 05 3a 0d  6e f0 0d f4 2d 2d 2d 2d  |6).n..:.n...----|
00010bb0  2d 2d 2d 2d 0d 6e fa 0d  f4 2e 20 45 52 52 4f 52  |----.n.... ERROR|
00010bc0  53 0d 6f 04 0d f4 2d 2d  2d 2d 2d 2d 2d 2d 0d 6f  |S.o...--------.o|
00010bd0  0e 05 3a 0d 6f 18 1b dd  a4 63 68 65 63 6b 6f 62  |..:.o....checkob|
00010be0  6a 28 6f 62 6a 24 2c 65  72 72 6f 72 25 29 0d 6f  |j(obj$,error%).o|
00010bf0  22 18 f4 20 69 73 20 6f  62 6a 65 63 74 20 70 72  |".. is object pr|
00010c00  65 73 65 6e 74 3f 0d 6f  2c 0e ea 20 6e 25 2c 74  |esent?.o,.. n%,t|
00010c10  79 70 65 25 0d 6f 36 07  ea 20 85 0d 6f 40 28 ee  |ype%.o6.. ..o@(.|
00010c20  20 85 20 ea 20 61 6e 73  25 3d a4 6c 6f 63 61 6c  | . . ans%=.local|
00010c30  65 72 72 6f 72 28 6f 62  6a 24 2c f6 24 2c 9f 29  |error(obj$,.$,.)|
00010c40  3a 3d a3 0d 6f 4a 20 c8  99 20 22 4f 53 5f 46 69  |:=..oJ .. "OS_Fi|
00010c50  6c 65 22 2c 31 33 2c 6f  62 6a 24 20 b8 20 74 79  |le",13,obj$ . ty|
00010c60  70 65 25 0d 6f 54 1c 6f  62 6a 24 3d a4 73 74 72  |pe%.oT.obj$=.str|
00010c70  69 70 28 a4 6c 65 61 66  28 6f 62 6a 24 29 29 0d  |ip(.leaf(obj$)).|
00010c80  6f 5e 19 e7 20 74 79 70  65 25 3d 30 20 6e 25 3d  |o^.. type%=0 n%=|
00010c90  a3 20 8b 20 6e 25 3d b9  0d 6f 68 15 e7 20 6e 25  |. . n%=..oh.. n%|
00010ca0  3d a3 20 80 20 65 72 72  6f 72 25 20 8c 0d 6f 72  |=. . error% ..or|
00010cb0  35 20 61 6e 73 25 3d a4  6d 73 67 28 22 43 61 6e  |5 ans%=.msg("Can|
00010cc0  27 74 20 66 69 6e 64 20  27 22 2b 6f 62 6a 24 2b  |'t find '"+obj$+|
00010cd0  22 27 20 69 6e 20 46 69  6c 65 72 22 2c 22 4f 4b  |"' in Filer","OK|
00010ce0  22 29 0d 6f 7c 05 cd 0d  6f 86 07 3d 6e 25 0d 6f  |").o|...o..=n%.o|
00010cf0  90 05 3a 0d 6f 9a 20 dd  a4 6c 6f 63 61 6c 65 72  |..:.o. ..localer|
00010d00  72 6f 72 28 6f 62 6a 24  2c 65 72 72 24 2c 65 72  |ror(obj$,err$,er|
00010d10  72 25 29 0d 6f a4 13 ea  20 73 24 2c 69 25 3a 73  |r%).o... s$,i%:s|
00010d20  24 3d 65 72 72 24 0d 6f  ae 0d c8 8e 20 65 72 72  |$=err$.o.... err|
00010d30  25 20 ca 0d 6f b8 0a 20  c9 20 32 34 38 0d 6f c2  |% ..o.. . 248.o.|
00010d40  13 20 20 69 25 3d a7 6f  62 6a 24 2c 22 3a 22 29  |.  i%=.obj$,":")|
00010d50  0d 6f cc 3b 20 20 73 24  3d 22 46 69 6c 69 6e 67  |.o.;  s$="Filing|
00010d60  20 73 79 73 74 65 6d 20  6f 72 20 70 61 74 68 20  | system or path |
00010d70  22 2b c0 6f 62 6a 24 2c  69 25 29 2b 22 20 6e 6f  |"+.obj$,i%)+" no|
00010d80  74 20 70 72 65 73 65 6e  74 2c 22 0d 6f d6 20 20  |t present,".o.  |
00010d90  20 73 24 2b 3d 22 43 6c  6f 73 69 6e 67 20 54 69  | s$+="Closing Ti|
00010da0  67 65 72 20 77 69 6e 64  6f 77 22 0d 6f e0 18 20  |ger window".o.. |
00010db0  20 61 6e 73 25 3d a4 6d  73 67 28 73 24 2c 22 4f  | ans%=.msg(s$,"O|
00010dc0  4b 22 29 0d 6f ea 25 20  20 70 72 69 73 74 69 6e  |K").o.%  pristin|
00010dd0  65 25 3d b9 3a 69 74 65  6d 73 25 3d 30 3a f2 63  |e%=.:items%=0:.c|
00010de0  77 28 6d 61 69 6e 25 29  0d 6f f4 0c 20 c9 20 36  |w(main%).o.. . 6|
00010df0  37 37 39 37 0d 6f fe 30  20 20 73 24 3d 22 44 69  |7797.o.0  s$="Di|
00010e00  73 63 20 6e 6f 74 20 70  72 65 73 65 6e 74 2c 43  |sc not present,C|
00010e10  6c 6f 73 69 6e 67 20 54  69 67 65 72 20 77 69 6e  |losing Tiger win|
00010e20  64 6f 77 22 0d 70 08 18  20 20 61 6e 73 25 3d a4  |dow".p..  ans%=.|
00010e30  6d 73 67 28 73 24 2c 22  4f 4b 22 29 0d 70 12 25  |msg(s$,"OK").p.%|
00010e40  20 20 70 72 69 73 74 69  6e 65 25 3d b9 3a 69 74  |  pristine%=.:it|
00010e50  65 6d 73 25 3d 30 3a f2  63 77 28 6d 61 69 6e 25  |ems%=0:.cw(main%|
00010e60  29 0d 70 1c 0a 20 c9 20  32 30 34 0d 70 26 1e 20  |).p.. . 204.p&. |
00010e70  20 73 24 3d 22 42 61 64  20 66 69 6c 65 20 6e 61  | s$="Bad file na|
00010e80  6d 65 2c 22 2b 6f 62 6a  24 0d 70 30 18 20 20 61  |me,"+obj$.p0.  a|
00010e90  6e 73 25 3d a4 6d 73 67  28 73 24 2c 22 4f 4b 22  |ns%=.msg(s$,"OK"|
00010ea0  29 0d 70 3a 06 20 7f 0d  70 44 10 20 20 f2 77 69  |).p:. ..pD.  .wi|
00010eb0  6d 70 65 72 72 6f 72 0d  70 4e 05 cb 0d 70 58 09  |mperror.pN...pX.|
00010ec0  3d 61 6e 73 25 0d 70 62  05 3a 0d 70 6c 0f dd f2  |=ans%.pb.:.pl...|
00010ed0  77 69 6d 70 65 72 72 6f  72 0d 70 76 2e c8 99 20  |wimperror.pv... |
00010ee0  22 57 69 6d 70 5f 44 72  61 67 42 6f 78 22 2c 2c  |"Wimp_DragBox",,|
00010ef0  2d 31 3a c8 99 20 22 48  6f 75 72 67 6c 61 73 73  |-1:.. "Hourglass|
00010f00  5f 53 6d 61 73 68 22 0d  70 80 14 e7 20 46 25 3e  |_Smash".p... F%>|
00010f10  30 20 d9 23 46 25 3a 46  25 3d 30 0d 70 8a 14 e7  |0 .#F%:F%=0.p...|
00010f20  20 58 25 3e 30 20 d9 23  58 25 3a 58 25 3d 30 0d  | X%>0 .#X%:X%=0.|
00010f30  70 94 12 e7 20 72 65 63  75 72 73 69 6e 67 25 20  |p... recursing% |
00010f40  8c 0d 70 9e 1c 20 72 65  63 75 72 73 69 6e 67 25  |..p.. recursing%|
00010f50  3d a3 3a f2 63 77 28 6d  61 69 6e 25 29 0d 70 a8  |=.:.cw(main%).p.|
00010f60  27 20 c8 99 20 22 4f 53  5f 42 79 74 65 22 2c 32  |' .. "OS_Byte",2|
00010f70  32 39 2c 31 2c 30 3a f4  20 64 69 73 61 62 6c 65  |29,1,0:. disable|
00010f80  20 45 73 63 0d 70 b2 2c  20 73 24 3d 22 45 73 63  | Esc.p., s$="Esc|
00010f90  61 70 65 20 70 72 65 73  73 65 64 20 2d 20 6f 70  |ape pressed - op|
00010fa0  65 72 61 74 69 6f 6e 20  61 62 6f 72 74 65 64 22  |eration aborted"|
00010fb0  0d 70 bc 3a 20 61 6e 73  25 3d a4 6d 73 67 28 73  |.p.: ans%=.msg(s|
00010fc0  24 2c 22 4f 4b 22 29 3a  e7 20 63 6f 75 6e 74 69  |$,"OK"):. counti|
00010fd0  6e 67 25 20 64 69 73 70  6c 61 79 25 3d 31 3a 63  |ng% display%=1:c|
00010fe0  6f 75 6e 74 69 6e 67 25  3d a3 0d 70 c6 12 20 f2  |ounting%=..p.. .|
00010ff0  73 68 6f 77 54 69 67 65  72 28 31 29 0d 70 d0 06  |showTiger(1).p..|
00011000  20 e1 0d 70 da 05 cd 0d  70 e4 28 73 24 3d f6 24  | ..p....p.(s$=.$|
00011010  2b 22 2c 28 45 72 72 6f  72 20 22 2b c3 9f 2b 22  |+",(Error "+..+"|
00011020  3a 20 6c 69 6e 65 20 22  2b c3 9e 2b 22 29 22 0d  |: line "+..+")".|
00011030  70 ee 21 61 6e 73 25 3d  a4 6d 73 67 28 73 24 2c  |p.!ans%=.msg(s$,|
00011040  22 4f 4b 2c 4b 69 6c 6c  20 54 69 67 65 72 22 29  |"OK,Kill Tiger")|
00011050  0d 70 f8 3a e7 20 61 6e  73 25 3d 32 20 71 75 69  |.p.:. ans%=2 qui|
00011060  74 25 3d b9 3a ff 28 22  55 6e 73 65 74 20 54 69  |t%=.:.("Unset Ti|
00011070  67 65 72 24 52 75 6e 6e  69 6e 67 22 29 3a f2 63  |ger$Running"):.c|
00011080  6c 6f 73 65 77 69 6d 70  3a e0 0d 71 02 05 e1 0d  |losewimp:..q....|
00011090  71 0c 05 3a 0d 71 16 0b  dd f2 65 72 72 6f 72 0d  |q..:.q....error.|
000110a0  71 20 18 c8 99 20 22 48  6f 75 72 67 6c 61 73 73  |q ... "Hourglass|
000110b0  5f 53 6d 61 73 68 22 0d  71 2a 14 e7 20 48 25 3e  |_Smash".q*.. H%>|
000110c0  30 20 d9 23 48 25 3a 48  25 3d 30 0d 71 34 1d ef  |0 .#H%:H%=0.q4..|
000110d0  34 3a f1 20 f6 24 2b 22  20 61 74 20 6c 69 6e 65  |4:. .$+" at line|
000110e0  20 22 2b c3 9e 3a ef 35  0d 71 3e 05 e1 0d 71 48  | "+..:.5.q>...qH|
000110f0  05 3a 0d 71 52 12 dd a4  6d 73 67 28 73 31 24 2c  |.:.qR...msg(s1$,|
00011100  73 32 24 29 0d 71 5c 2d  ea 20 4a 25 2c 63 25 2c  |s2$).q\-. J%,c%,|
00011110  70 25 2c 67 25 2c 66 25  2c 72 25 2c 78 25 2c 79  |p%,g%,f%,r%,x%,y|
00011120  25 2c 77 25 2c 68 25 2c  6e 25 2c 73 24 2c 77 68  |%,w%,h%,n%,s$,wh|
00011130  25 0d 71 66 17 77 68 25  3d 6d 65 73 73 77 69 6e  |%.qf.wh%=messwin|
00011140  64 25 3a f2 62 75 7a 7a  0d 71 70 2e c8 99 20 22  |d%:.buzz.qp... "|
00011150  57 69 6d 70 5f 44 72 61  67 42 6f 78 22 2c 2c 2d  |Wimp_DragBox",,-|
00011160  31 3a c8 99 20 22 48 6f  75 72 67 6c 61 73 73 5f  |1:.. "Hourglass_|
00011170  53 6d 61 73 68 22 0d 71  7a 10 f2 64 69 28 77 68  |Smash".qz..di(wh|
00011180  25 2c 31 2c 37 29 0d 71  84 05 3a 0d 71 8e 13 f4  |%,1,7).q..:.q...|
00011190  20 64 6f 20 63 68 6f 69  63 65 73 2e 2e 2e 0d 71  | do choices....q|
000111a0  98 0f 63 25 3d 30 3a 73  24 3d 73 32 24 0d 71 a2  |..c%=0:s$=s2$.q.|
000111b0  05 f5 0d 71 ac 16 20 63  25 2b 3d 31 3a 70 25 3d  |...q.. c%+=1:p%=|
000111c0  a7 73 24 2c 22 2c 22 29  0d 71 b6 17 20 e7 20 70  |.s$,",").q.. . p|
000111d0  25 3d 30 20 69 63 74 24  28 63 25 29 3d 73 24 0d  |%=0 ict$(c%)=s$.|
000111e0  71 c0 2d 20 e7 20 70 25  3e 30 20 69 63 74 24 28  |q.- . p%>0 ict$(|
000111f0  63 25 29 3d c0 73 24 2c  70 25 2d 31 29 3a 73 24  |c%)=.s$,p%-1):s$|
00011200  3d c2 73 24 2c a9 73 24  2d 70 25 29 0d 71 ca 16  |=.s$,.s$-p%).q..|
00011210  fd 20 70 25 3d 30 3a e7  20 63 25 3e 34 20 63 25  |. p%=0:. c%>4 c%|
00011220  3d 34 0d 71 d4 0c 6d 61  78 69 25 3d 63 25 0d 71  |=4.q..maxi%=c%.q|
00011230  de 0b c8 8e 20 63 25 20  ca 0d 71 e8 0f 20 c9 20  |.... c% ..q.. . |
00011240  31 3a 78 25 3d 33 31 32  0d 71 f2 0f 20 c9 20 32  |1:x%=312.q.. . 2|
00011250  3a 78 25 3d 32 32 32 0d  71 fc 0f 20 c9 20 33 3a  |:x%=222.q.. . 3:|
00011260  78 25 3d 31 32 38 0d 72  06 0e 20 c9 20 34 3a 78  |x%=128.r.. . 4:x|
00011270  25 3d 32 38 0d 72 10 05  cb 0d 72 1a 2f 79 25 3d  |%=28.r....r./y%=|
00011280  2d 32 32 38 3a 77 25 3d  31 37 38 3a 68 25 3d 35  |-228:w%=178:h%=5|
00011290  32 3a 76 24 3d 22 52 35  2c 32 22 3a 66 25 3d 26  |2:v$="R5,2":f%=&|
000112a0  31 37 30 31 33 31 33 44  0d 72 24 0f e3 20 4a 25  |1701313D.r$.. J%|
000112b0  3d 31 20 b8 20 63 25 0d  72 2e 2a 20 e7 20 4a 25  |=1 . c%.r.* . J%|
000112c0  3d 63 25 20 79 25 2d 3d  36 3a 77 25 2b 3d 33 32  |=c% y%-=6:w%+=32|
000112d0  3a 68 25 2b 3d 31 32 3a  76 24 3d 22 52 36 2c 32  |:h%+=12:v$="R6,2|
000112e0  22 0d 72 38 3c 20 24 69  63 6e 25 28 4a 25 29 3d  |".r8< $icn%(J%)=|
000112f0  69 63 74 24 28 4a 25 29  3a 24 69 63 76 25 28 4a  |ict$(J%):$icv%(J|
00011300  25 29 3d 76 24 3a 6e 25  3d 69 63 6e 25 28 4a 25  |%)=v$:n%=icn%(J%|
00011310  29 3a 76 25 3d 69 63 76  25 28 4a 25 29 0d 72 42  |):v%=icv%(J%).rB|
00011320  33 20 69 25 3d a4 69 63  6f 6e 28 77 68 25 2c 78  |3 i%=.icon(wh%,x|
00011330  25 2c 79 25 2c 78 25 2b  77 25 2c 79 25 2b 68 25  |%,y%,x%+w%,y%+h%|
00011340  2c 66 25 2c 22 22 2c 6e  25 2c 76 25 2c 32 30 29  |,f%,"",n%,v%,20)|
00011350  0d 72 4c 0e 20 78 25 2b  3d 77 25 2b 31 32 0d 72  |.rL. x%+=w%+12.r|
00011360  56 05 ed 0d 72 60 05 3a  0d 72 6a 14 f4 20 64 6f  |V...r`.:.rj.. do|
00011370  20 6d 65 73 73 61 67 65  73 2e 2e 2e 0d 72 74 0f  | messages....rt.|
00011380  63 25 3d 30 3a 73 24 3d  73 31 24 0d 72 7e 05 f5  |c%=0:s$=s1$.r~..|
00011390  0d 72 88 16 20 63 25 2b  3d 31 3a 70 25 3d a7 73  |.r.. c%+=1:p%=.s|
000113a0  24 2c 22 2c 22 29 0d 72  92 17 20 e7 20 70 25 3d  |$,",").r.. . p%=|
000113b0  30 20 69 63 74 24 28 63  25 29 3d 73 24 0d 72 9c  |0 ict$(c%)=s$.r.|
000113c0  2d 20 e7 20 70 25 3e 30  20 69 63 74 24 28 63 25  |- . p%>0 ict$(c%|
000113d0  29 3d c0 73 24 2c 70 25  2d 31 29 3a 73 24 3d c2  |)=.s$,p%-1):s$=.|
000113e0  73 24 2c a9 73 24 2d 70  25 29 0d 72 a6 16 fd 20  |s$,.s$-p%).r... |
000113f0  70 25 3d 30 3a e7 20 63  25 3e 33 20 63 25 3d 33  |p%=0:. c%>3 c%=3|
00011400  0d 72 b0 0b c8 8e 20 63  25 20 ca 0d 72 ba 16 20  |.r.... c% ..r.. |
00011410  c9 20 31 3a 67 25 3d 34  38 3a 79 25 3d 2d 31 32  |. 1:g%=48:y%=-12|
00011420  30 0d 72 c4 15 20 c9 20  32 3a 67 25 3d 35 34 3a  |0.r.. . 2:g%=54:|
00011430  79 25 3d 2d 38 34 0d 72  ce 15 20 c9 20 33 3a 67  |y%=-84.r.. . 3:g|
00011440  25 3d 34 38 3a 79 25 3d  2d 36 38 0d 72 d8 05 cb  |%=48:y%=-68.r...|
00011450  0d 72 e2 2f 78 25 3d 33  30 3a 77 25 3d 37 37 34  |.r./x%=30:w%=774|
00011460  3a 68 25 3d 34 30 3a 66  25 3d 26 31 37 30 30 36  |:h%=40:f%=&17006|
00011470  31 33 39 3a f4 20 64 72  61 67 67 61 62 6c 65 0d  |139:. draggable.|
00011480  72 ec 0f e3 20 4a 25 3d  31 20 b8 20 63 25 0d 72  |r... J%=1 . c%.r|
00011490  f6 28 20 24 69 63 6d 25  28 4a 25 29 3d c2 69 63  |.( $icm%(J%)=.ic|
000114a0  74 24 28 4a 25 29 2c 34  38 29 3a 6e 25 3d 69 63  |t$(J%),48):n%=ic|
000114b0  6d 25 28 4a 25 29 0d 73  00 33 20 69 25 3d a4 69  |m%(J%).s.3 i%=.i|
000114c0  63 6f 6e 28 77 68 25 2c  78 25 2c 79 25 2c 78 25  |con(wh%,x%,y%,x%|
000114d0  2b 77 25 2c 79 25 2b 68  25 2c 66 25 2c 22 22 2c  |+w%,y%+h%,f%,"",|
000114e0  6e 25 2c 2d 31 2c 35 30  29 0d 73 0a 0b 20 79 25  |n%,-1,50).s.. y%|
000114f0  2d 3d 67 25 0d 73 14 05  ed 0d 73 1e 05 3a 0d 73  |-=g%.s....s..:.s|
00011500  28 1d f2 6f 77 28 77 68  25 29 3a f2 63 61 72 65  |(..ow(wh%):.care|
00011510  74 78 28 77 68 25 2c 38  2c 30 29 0d 73 32 29 c8  |tx(wh%,8,0).s2).|
00011520  99 20 22 57 69 6d 70 5f  47 65 74 50 6f 69 6e 74  |. "Wimp_GetPoint|
00011530  65 72 49 6e 66 6f 22 2c  2c 43 25 3a 77 25 3d 43  |erInfo",,C%:w%=C|
00011540  25 21 31 32 0d 73 3c 29  43 25 21 30 3d 77 68 25  |%!12.s<)C%!0=wh%|
00011550  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 57 69 6e  |:.. "Wimp_GetWin|
00011560  64 6f 77 53 74 61 74 65  22 2c 2c 43 25 0d 73 46  |dowState",,C%.sF|
00011570  33 c8 97 20 c8 93 20 43  25 21 34 2b 38 2c 43 25  |3.. .. C%!4+8,C%|
00011580  21 38 2b 38 2c 43 25 21  31 32 2d 43 25 21 34 2d  |!8+8,C%!12-C%!4-|
00011590  31 36 2c 43 25 21 31 36  2d 43 25 21 38 2d 31 36  |16,C%!16-C%!8-16|
000115a0  0d 73 50 23 e7 20 77 25  3c 3e 77 68 25 20 c8 97  |.sP#. w%<>wh% ..|
000115b0  20 b8 20 43 25 21 31 32  2d 34 38 2c 43 25 21 38  | . C%!12-48,C%!8|
000115c0  2b 34 38 0d 73 5a 32 f4  20 77 61 69 74 20 66 6f  |+48.sZ2. wait fo|
000115d0  72 20 63 6c 69 63 6b 20  6f 6e 20 72 65 70 6c 79  |r click on reply|
000115e0  20 69 63 6f 6e 2c 20 6f  72 20 45 73 63 20 70 72  | icon, or Esc pr|
000115f0  65 73 73 65 64 0d 73 64  1a 72 65 70 6c 79 25 3d  |essed.sd.reply%=|
00011600  30 3a 65 73 63 25 3d a3  3a 72 65 74 25 3d a3 0d  |0:esc%=.:ret%=..|
00011610  73 6e 05 f5 0d 73 78 1c  20 c8 99 20 22 57 69 6d  |sn...sx. .. "Wim|
00011620  70 5f 50 6f 6c 6c 22 2c  2c 43 25 20 b8 20 72 25  |p_Poll",,C% . r%|
00011630  0d 73 82 0c 20 c8 8e 20  72 25 20 ca 0d 73 8c 14  |.s.. .. r% ..s..|
00011640  20 20 c9 20 36 3a f2 6d  6f 75 73 65 28 43 25 29  |  . 6:.mouse(C%)|
00011650  0d 73 96 28 20 20 c9 20  37 3a f2 65 6e 64 64 72  |.s.(  . 7:.enddr|
00011660  61 67 28 43 25 2c 73 77  68 25 2c 72 65 6d 62 25  |ag(C%,swh%,remb%|
00011670  2c 73 6f 6c 69 64 25 29  0d 73 a0 17 20 20 c9 20  |,solid%).s..  . |
00011680  38 3a f2 6b 65 79 70 72  65 73 73 28 43 25 29 0d  |8:.keypress(C%).|
00011690  73 aa 06 20 cb 0d 73 b4  2f fd 20 28 72 65 70 6c  |s.. ..s./. (repl|
000116a0  79 25 3e 30 20 80 20 72  65 70 6c 79 25 3c 6d 61  |y%>0 . reply%<ma|
000116b0  78 69 25 2b 31 29 20 84  20 65 73 63 25 20 84 20  |xi%+1) . esc% . |
000116c0  72 65 74 25 0d 73 be 21  e7 20 72 65 74 25 20 72  |ret%.s.!. ret% r|
000116d0  65 70 6c 79 25 3d 6d 61  78 69 25 3a f4 20 64 65  |eply%=maxi%:. de|
000116e0  66 61 75 6c 74 0d 73 c8  19 f2 63 77 28 77 68 25  |fault.s...cw(wh%|
000116f0  29 3a ff 28 22 50 6f 69  6e 74 65 72 22 29 0d 73  |):.("Pointer").s|
00011700  d2 0b 3d 72 65 70 6c 79  25 0d 73 dc 05 3a 0d 73  |..=reply%.s..:.s|
00011710  e6 0f f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 73 f0  |...----------.s.|
00011720  0f f4 2e 20 44 45 42 55  47 47 45 52 0d 73 fa 0f  |... DEBUGGER.s..|
00011730  f4 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 74 04 05 3a  |.----------.t..:|
00011740  0d 74 0e 0f dd f2 64 6c  28 6c 69 73 74 24 29 0d  |.t....dl(list$).|
00011750  74 18 10 f4 20 64 65 62  75 67 20 6c 69 73 74 0d  |t... debug list.|
00011760  74 22 30 ea 20 63 63 63  25 2c 74 74 74 25 2c 6d  |t"0. ccc%,ttt%,m|
00011770  6d 6d 25 2c 73 73 73 24  2c 63 63 63 24 2c 76 61  |mm%,sss$,ccc$,va|
00011780  72 24 28 29 3a de 20 76  61 72 24 28 32 30 29 0d  |r$():. var$(20).|
00011790  74 2c 07 ea 20 85 0d 74  36 25 ee 20 85 20 ea 20  |t,.. ..t6%. . . |
000117a0  ef 34 3a f1 8a 30 2c 74  74 74 25 2b 32 29 22 45  |.4:..0,ttt%+2)"E|
000117b0  52 52 4f 52 21 22 3a ef  35 3a e1 0d 74 40 17 e3  |RROR!":.5:..t@..|
000117c0  20 74 74 74 25 3d 31 20  b8 20 a9 28 6c 69 73 74  | ttt%=1 . .(list|
000117d0  24 29 0d 74 4a 18 20 63  63 63 24 3d c1 6c 69 73  |$).tJ. ccc$=.lis|
000117e0  74 24 2c 74 74 74 25 2c  31 29 0d 74 54 1b 20 e7  |t$,ttt%,1).tT. .|
000117f0  20 63 63 63 24 3c 3e 22  2c 22 20 73 73 73 24 2b  | ccc$<>"," sss$+|
00011800  3d 63 63 63 24 0d 74 5e  21 20 e7 20 63 63 63 24  |=ccc$.t^! . ccc$|
00011810  3d 22 2c 22 20 84 20 74  74 74 25 3d a9 28 6c 69  |="," . ttt%=.(li|
00011820  73 74 24 29 20 8c 0d 74  68 1d 20 20 e7 20 a9 73  |st$) ..th.  . .s|
00011830  73 73 24 3e 6d 6d 6d 25  20 6d 6d 6d 25 3d a9 73  |ss$>mmm% mmm%=.s|
00011840  73 73 24 0d 74 72 25 20  20 76 61 72 24 28 63 63  |ss$.tr%  var$(cc|
00011850  63 25 29 3d 73 73 73 24  3a 73 73 73 24 3d 22 22  |c%)=sss$:sss$=""|
00011860  3a 63 63 63 25 2b 3d 31  0d 74 7c 06 20 cd 0d 74  |:ccc%+=1.t|. ..t|
00011870  86 08 ed 3a ef 34 0d 74  90 15 e3 20 74 74 74 25  |...:.4.t... ttt%|
00011880  3d 30 20 b8 20 63 63 63  25 2d 31 0d 74 9a 14 20  |=0 . ccc%-1.t.. |
00011890  73 73 73 24 3d 76 61 72  24 28 74 74 74 25 29 0d  |sss$=var$(ttt%).|
000118a0  74 a4 16 20 f1 8a 30 2c  74 74 74 25 29 c4 35 30  |t.. ..0,ttt%).50|
000118b0  2c 22 20 22 29 0d 74 ae  15 20 e7 20 c0 73 73 73  |," ").t.. . .sss|
000118c0  24 2c 31 29 3d 22 7e 22  20 8c 0d 74 b8 19 20 20  |$,1)="~" ..t..  |
000118d0  73 73 73 24 3d c2 73 73  73 24 2c a9 73 73 73 24  |sss$=.sss$,.sss$|
000118e0  2d 31 29 0d 74 c2 1b 20  20 63 63 63 24 3d c4 6d  |-1).t..  ccc$=.m|
000118f0  6d 6d 25 2d a9 73 73 73  24 2c 22 20 22 29 0d 74  |mm%-.sss$," ").t|
00011900  cc 29 20 20 f1 8a 30 2c  74 74 74 25 29 20 73 73  |.)  ..0,ttt%) ss|
00011910  73 24 2b 63 63 63 24 2b  22 20 3d 26 22 3b c3 7e  |s$+ccc$+" =&";.~|
00011920  28 a0 73 73 73 24 29 0d  74 d6 06 20 cc 0d 74 e0  |(.sss$).t.. ..t.|
00011930  1b 20 20 63 63 63 24 3d  c4 6d 6d 6d 25 2d a9 73  |.  ccc$=.mmm%-.s|
00011940  73 73 24 2c 22 20 22 29  0d 74 ea 27 20 20 f1 8a  |ss$," ").t.'  ..|
00011950  30 2c 74 74 74 25 29 20  73 73 73 24 2b 63 63 63  |0,ttt%) sss$+ccc|
00011960  24 2b 22 20 3d 20 22 3b  a0 28 73 73 73 24 29 0d  |$+" = ";.(sss$).|
00011970  74 f4 06 20 cd 0d 74 fe  08 ed 3a ef 35 0d 75 08  |t.. ..t...:.5.u.|
00011980  05 e1 0d 75 12 05 3a 0d  75 1c 12 dd f2 64 61 28  |...u..:.u....da(|
00011990  61 24 2c 66 25 2c 74 25  29 0d 75 26 11 f4 20 64  |a$,f%,t%).u&.. d|
000119a0  65 62 75 67 20 61 72 72  61 79 0d 75 30 19 ea 20  |ebug array.u0.. |
000119b0  63 63 63 25 2c 6e 6e 6e  24 2c 78 78 78 25 2c 74  |ccc%,nnn$,xxx%,t|
000119c0  74 74 25 0d 75 3a 07 ea  20 85 0d 75 44 25 ee 20  |tt%.u:.. ..uD%. |
000119d0  85 20 ea 20 ef 34 3a f1  8a 30 2c 74 74 74 25 2b  |. . .4:..0,ttt%+|
000119e0  32 29 22 45 52 52 4f 52  21 22 3a ef 35 3a e1 0d  |2)"ERROR!":.5:..|
000119f0  75 4e 25 e7 20 c0 61 24  2c 31 29 3d 22 7e 22 20  |uN%. .a$,1)="~" |
00011a00  61 24 3d c2 61 24 2c a9  61 24 2d 31 29 3a 78 78  |a$=.a$,.a$-1):xx|
00011a10  78 25 3d b9 0d 75 58 1e  fb 20 30 3a fb 20 31 33  |x%=..uX.. 0:. 13|
00011a20  32 3a ef 34 3a f1 8a 30  2c 30 29 61 24 2b 22 28  |2:.4:..0,0)a$+"(|
00011a30  29 22 0d 75 62 12 e3 20  63 63 63 25 3d 66 25 20  |)".ub.. ccc%=f% |
00011a40  b8 20 74 25 0d 75 6c 24  20 6e 6e 6e 24 3d c2 22  |. t%.ul$ nnn$=."|
00011a50  20 20 22 2b c3 63 63 63  25 2c 32 29 2b 22 20 22  |  "+.ccc%,2)+" "|
00011a60  3a 74 74 74 25 2b 3d 31  0d 75 76 0d 20 e7 20 78  |:ttt%+=1.uv. . x|
00011a70  78 78 25 20 8c 0d 75 80  2e 20 20 f1 8a 30 2c 74  |xx% ..u..  ..0,t|
00011a80  74 74 25 29 6e 6e 6e 24  2b 22 26 22 3b c3 7e 2b  |tt%)nnn$+"&";.~+|
00011a90  a0 28 61 24 2b 22 28 22  2b c3 63 63 63 25 2b 22  |.(a$+"("+.ccc%+"|
00011aa0  29 22 29 0d 75 8a 06 20  cc 0d 75 94 27 20 20 f1  |)").u.. ..u.'  .|
00011ab0  8a 30 2c 74 74 74 25 29  6e 6e 6e 24 3b a0 28 61  |.0,ttt%)nnn$;.(a|
00011ac0  24 2b 22 28 22 2b c3 63  63 63 25 2b 22 29 22 29  |$+"("+.ccc%+")")|
00011ad0  0d 75 9e 06 20 cd 0d 75  a8 08 ed 3a ef 35 0d 75  |.u.. ..u...:.5.u|
00011ae0  b2 05 e1 0d ff                                    |.....|
00011ae5