Home » Archimedes archive » Acorn User » AU 1997-04 A.adf » Extras1 » MenuBar2/!MenuBar/Utils/!Password/!RunImage

MenuBar2/!MenuBar/Utils/!Password/!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 1997-04 A.adf » Extras1
Filename: MenuBar2/!MenuBar/Utils/!Password/!RunImage
Read OK:
File size: 396E bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > <Password$Dir>.!RunImage
   20:
   30ON ERROR PROCerror:END
   40:
   50task$="Password"
   60purpose$="Edit MenuBar's passwords"
   70version$="1.00 (3 Apr 1996)"
   80author$="(c) Graham Crow 1996"
   90:
  100PROCinit
  110PROCloadtemplates
  120PROCbaricon
  130PROCiniticons
  140PROCcreateicons
  150PROCowc(main%)
  160:
  170ON ERROR PROCwimperror
  180quit%=FALSE
  190REPEAT:PROCpoll:UNTIL quit%
  200$q%="TASK":SYS "Wimp_CloseDown",task%,!q%
  210END
  220:
  230REM------
  240REM. POLL
  250REM------
  260:
  270DEFPROCpoll
  280SYS "Wimp_Poll",,q% TO reason%
  290CASE reason% OF
  300 WHEN 2:PROCow2(q%!0)
  310 WHEN 3:PROCcw(q%!0)
  320 WHEN 6:PROCmouse(q%)
  330 WHEN 8:PROCkeypress(q%)
  340 WHEN 9:PROCmenuselect(q%)
  350 WHEN 17,18:PROCreceive(q%)
  360ENDCASE
  370ENDPROC
  380:
  390REM------
  400REM. INIT
  410REM------
  420:
  430DEFPROCinit
  440qsize%=&200
  450DIM q% qsize%
  460bufsize%=&300
  470DIM buffer% bufsize%
  480panesize%=36
  490DIM pq% panesize%
  500DIM mb1% 100
  510maxbars%=30:bars%=0
  520m%=maxbars%
  530DIM barname%(m%) :FOR J%=0 TO m%:DIM a% 11:barname%(J%)=a% :NEXT
  540DIM password%(m%):FOR J%=0 TO m%:DIM a% 11:password%(J%)=a%:NEXT
  550DIM passval%(m%) :FOR J%=0 TO m%:DIM a%  4:passval%(J%)=a% :NEXT
  560DIM active%(m%)
  570DIM rembarname$(m%)
  580DIM rempassword$(m%)
  590DIM remactive%(m%)
  600DIM optval%  14:$optval%="Soptoff,opton"
  610DIM null%     2:$null%=""
  620taskdir$=FNosvar(task$+"$Dir")
  630F%=0:REM file handle
  640datadir$=""
  650REM position of pane in parent
  660pot%=168:pol%=20:panewid%=768:panehgt%=484
  670PROCwimpinit(q%)
  680ENDPROC
  690:
  700DEFPROCwimpinit(q%)
  710$q%="TASK"
  711SYS "Wimp_Initialise",200,!q%,task$ TO version%,task%
  720IF version%<310 THEN
  730 ERROR 0, task$+" needs OS 3.1 or greater":END
  740ENDIF
  750IF FNth(task$)>0 THEN
  760 ERROR 0, task$+" is already running":END
  770ENDIF
  790ENDPROC
  800:
  810DEFPROCiniticons
  820LOCAL wh%:wh%=info%
  830PROCit(wh%,0,task$)
  840PROCit(wh%,1,purpose$)
  850PROCit(wh%,2,author$)
  860PROCit(wh%,3,version$)
  870ENDPROC
  880:
  890REM----------
  900REM. MESSAGES
  910REM----------
  920:
  930DEFPROCreceive(q%)
  940sender%=q%!4
  950CASE q%!16 OF
  960 REM action code
  970 WHEN 0:quit%=TRUE
  980 WHEN 3:PROCdataload(q%)
  990 WHEN 9:PROCmenuselect(q%)
 1000ENDCASE
 1010ENDPROC
 1020:
 1030REM------
 1040REM. LOAD
 1050REM------
 1060:
 1070DEFPROCdataload(q%)
 1080REM object dragged onto us
 1090filetype%=q%!40
 1100path$=FNname(q%+44)
 1110q%!12=q%!8:q%!16=4
 1120SYS "Wimp_SendMessage",17,q%,q%!4:REM ack
 1130IF FNoktoload(path$,filetype%) THEN
 1140 PROCloadfile(path$,filetype%)
 1150ENDIF
 1160ENDPROC
 1170:
 1180DEFFNoktoload(path$,filetype%)
 1190LOCAL f$,n%:n%=TRUE
 1200f$="Library.Data"
 1210IF filetype%<>&1000 OR RIGHT$(path$,LENf$)<>f$ THEN
 1220 s$="Drag MenuBar's '.."+f$+"' directory"
 1230 ans%=FNreport(s$,1):n%=FALSE
 1240ENDIF
 1250IF n% THEN datadir$=path$
 1260=n%
 1270:
 1280DEFPROCloadfile(path$,filetype%)
 1290REM read bar names and place in array
 1300LOCAL J%,more%,next%,name$,type%,s$,m$,f%
 1310PROCcw(main%)
 1320REM flush arrays
 1330FOR J%=1 TO maxbars%
 1340 $barname%(J%)=""
 1350 $password%(J%)=""
 1360 $passval%(J%)="A":REM unwritable
 1370 PROCui(pane%,maxbars%*3+J%-1)
 1380NEXT
 1390rembarname$()=""
 1400rempassword$()=""
 1410active%()=FALSE
 1420remactive%()=FALSE
 1430J%=1:next%=0
 1440REPEAT
 1450 SYS "OS_GBPB",10,path$,q%,1,next%,100,"*" TO ,,,more%,next%
 1460 IF more% THEN
 1470  name$=FNname(q%+20)
 1480  obj%=FNobjtype(path$+"."+name$)
 1490  type%=((!q%)>>>8) AND &FFF
 1500  IF obj%=1 AND type%=&FFD THEN
 1510   $barname%(J%)=name$
 1520   rembarname$(J%)=name$
 1530   password$=FNgetpassword(path$,name$)
 1540   rempassword$(J%)=password$
 1550   IF active% THEN active%(J%)=TRUE:remactive%(J%)=TRUE
 1560   $passval%(J%)="A~ "
 1570   $password%(J%)=password$
 1580   J%+=1
 1590  ENDIF
 1600 ENDIF
 1610UNTIL next%=-1 OR J%>maxbars%
 1620bars%=J%-1
 1630PROCit(main%,0,path$)
 1640IF bars%>0 THEN
 1650 FOR J%=1 TO bars%
 1660  f%=&1400B133:PROCsis(pane%,maxbars%*3+J%-1,f%)
 1670  IF active%(J%) THEN PROCsi(pane%,maxbars%*3+J%-1)
 1680 NEXT
 1690 IF bars%<maxbars% THEN
 1700  FOR J%=bars%+1 TO maxbars%
 1710   f%=&1440B133:REM greyed
 1720   PROCsis(pane%,maxbars%*3+J%-1,f%)
 1730  NEXT
 1740 ENDIF
 1750ENDIF
 1760PROCow(main%)
 1770PROChome(pane%)
 1780PROCbeep
 1790ENDPROC
 1800:
 1810REM----------
 1820REM. PASSWORD
 1830REM----------
 1840:
 1850DEFFNgetpassword(fsp$,bar$)
 1860LOCAL J%,factor%,c%,s$:s$=""
 1870F%=OPENUP(fsp$+"."+bar$)
 1880PTR#F%=32
 1890active%=BGET#F%
 1900factor%=BGET#F%
 1910REPEAT
 1920 c%=BGET#F%
 1930 IF c%>31 THEN c%-=factor%:s$+=CHR$c%
 1940UNTIL c%<32 OR LENs$>9
 1950CLOSE#F%:F%=0
 1960=s$
 1970:
 1980REM------
 1990REM. SAVE
 2000REM------
 2010:
 2020DEFPROCsave(fsp$)
 2030REM Save button clicked
 2040LOCAL J%,K%,n%,c$,c%
 2050IF bars%=0 OR fsp$="" THEN
 2060 PROCbuzz
 2070ELSE
 2080 FOR J%=1 TO bars%
 2090  bar$=$barname%(J%)
 2100  F%=OPENUP(fsp$+"."+bar$)
 2110  REM poke all zeros
 2120  PTR#F%=32:FOR K%=0 TO 15:BPUT#F%,0:NEXT
 2130  :
 2140  PTR#F%=32
 2150  active%=FNis(pane%,maxbars%*3+J%-1)
 2160  IF active% THEN active%=RND(254)+1 ELSE active%=0
 2170  BPUT#F%,active%
 2180  :
 2190  password$=$password%(J%)
 2200  IF password$<>"" THEN factor%=58+RND(75) ELSE factor%=0
 2210  BPUT#F%,factor%
 2220  :
 2230  IF password$<>"" THEN
 2240   FOR K%=1 TO LEN(password$)
 2250    c$=MID$(password$,K%,1)
 2260    c%=ASCc$+factor%
 2270    BPUT#F%,c%
 2280   NEXT 
 2290  ENDIF
 2300  CLOSE#F%:F%=0
 2310 NEXT
 2320 PROCbeep
 2330ENDIF
 2340ENDPROC
 2350:
 2360REM-------
 2370REM. MOUSE
 2380REM-------
 2390:
 2400DEFPROCmouse(q%)
 2410LOCAL mx%,my%,mb%,wh%,ih%
 2420mx%=q%!0:my%=q%!4:mb%=q%!8:wh%=q%!12:ih%=q%!16
 2430CASE wh% OF
 2440 WHEN -2
 2450 CASE mb% OF
 2460  WHEN 2:PROCmenu(wh%,ih%,mx%,my%)
 2470  OTHERWISE:PROCow(main%)
 2480 ENDCASE
 2490 :
 2500 WHEN pane%
 2510 CASE mb% OF
 2520  IF mb%=2 THEN PROCmenu(wh%,ih%,mx%,my%)
 2530 ENDCASE
 2540 :
 2550 WHEN main%
 2560 CASE mb% OF
 2570  WHEN 2:PROCmenu(wh%,ih%,mx%,my%)
 2580  WHEN 1,4:
 2590  CASE ih% OF
 2600   WHEN 3:PROCcancel(wh%,mb%)
 2610   WHEN 4:PROCsave(datadir$)
 2620  ENDCASE
 2630 ENDCASE
 2640ENDCASE
 2650ENDPROC
 2660:
 2670DEFPROCcancel(wh%,mb%)
 2680REM restore values
 2690LOCAL J%
 2700IF bars%>0 THEN
 2710 FOR J%=1 TO bars%
 2720  $barname%(J%)=rembarname$(J%)
 2730  $password%(J%)=rempassword$(J%)
 2740  IF remactive%(J%) THEN
 2750   PROCsi(pane%,maxbars%*3+J%-1)
 2760  ELSE
 2770   PROCui(pane%,maxbars%*3+J%-1)
 2780  ENDIF
 2790 NEXT
 2800 IF mb%=1 THEN
 2810  PROChome(pane%)
 2820  PROCforce(pane%)
 2830 ELSE
 2840  PROCcw(main%)
 2850 ENDIF
 2860 PROCbeep
 2870ELSE
 2880 IF mb%<>1 THEN PROCcw(main%)
 2890ENDIF
 2900ENDPROC
 2910:
 2920REM------
 2930REM. KEYS
 2940REM------
 2950:
 2960DEFPROCkeypress(q%)
 2970LOCAL wh%,ih%,c%
 2980wh%=q%!0:ih%=q%!4:c%=q%!24
 2990CASE c% OF
 3000 WHEN  13:PROCreturn(wh%,ih%)
 3010 WHEN  30:PROChome(wh%)
 3020 WHEN 388:PROCtest:REM F4
 3030 WHEN 398:PROCdown(wh%,ih%)
 3040 WHEN 399:PROCup(wh%,ih%)
 3050ENDCASE
 3060ENDPROC
 3070:
 3080DEFPROChome(wh%)
 3090IF wh%=pane% THEN
 3100 !q%=wh%:SYS "Wimp_GetWindowState",,q%
 3110 q%!20=0:q%!24=0:SYS "Wimp_OpenWindow",,q%
 3120 PROCcaret(wh%,maxbars%*2)
 3130ENDIF
 3140ENDPROC
 3150:
 3160DEFPROCreturn(wh%,ih%)
 3170ret%=TRUE
 3180IF wh%=pane% AND ih%<maxbars%*3-1 THEN
 3190 PROCscroll(wh%,ih%,0,4)
 3200 PROCcaret(wh%,ih%+1)
 3210ENDIF
 3220ENDPROC
 3230:
 3240DEFPROCdown(wh%,ih%)
 3250IF wh%=pane% AND ih%<maxbars%*3-1 THEN
 3260 PROCscroll(wh%,ih%,0,4)
 3270 PROCcaret(wh%,ih%+1)
 3280ENDIF
 3290ENDPROC
 3300:
 3310DEFPROCup(wh%,ih%)
 3320IF wh%=pane% AND ih%>maxbars%*2 THEN
 3330 PROCscroll(wh%,ih%,1,4)
 3340 PROCcaret(wh%,ih%-1)
 3350ENDIF
 3360ENDPROC
 3370:
 3380DEFPROCscroll(wh%,ih%,way%,gap%)
 3390REM way%: 0=down, 1=up
 3400LOCAL w%,i%,n%,s%:s%=FALSE
 3410REM get window edge (wa coords)
 3420q%!0=wh%:SYS "Wimp_GetWindowState",,q%
 3430IF way%=0 THEN w%=q%!24-(q%!16-q%!8) ELSE w%=q%!24
 3440REM get icon edge (wa coords)
 3450IF way%=0 THEN q%!4=ih%+1 ELSE q%!4=ih%-1
 3460q%!0=wh%:SYS "Wimp_GetIconState",,q%
 3470CASE way% OF
 3480 WHEN 0:i%=q%!12:IF i%<w% THEN s%=TRUE
 3490 WHEN 1:i%=q%!20:IF i%>w% THEN s%=TRUE
 3500ENDCASE
 3510IF s% THEN
 3520 CASE way% OF
 3530  WHEN 0:n%=ABS(i%)-ABS(w%)+gap%
 3540  WHEN 1:n%=ABS(w%)-ABS(i%)+gap%
 3550 ENDCASE
 3560 !q%=wh%:SYS "Wimp_GetWindowState",,q%
 3570 IF way%=0 THEN q%!24-=n% ELSE q%!24+=n%
 3580 SYS "Wimp_OpenWindow",,q%
 3590ENDIF
 3600ENDPROC
 3610:
 3620DEFPROCcaret(wh%,ih%)
 3630LOCAL s$:s$=FNit(wh%,ih%)
 3640SYS "Wimp_SetCaretPosition",wh%,ih%,,,-1,LENs$
 3650ENDPROC
 3660:
 3670DEFPROCtest
 3680ENDPROC
 3690:
 3700REM------
 3710REM. MENU
 3720REM------
 3730:
 3740DEFPROCmenu(wh%,ih%,mx%,my%)
 3750REM middle button clicked
 3760CASE wh% OF
 3770 WHEN main%,pane%:IF bars%>0 THEN PROCmainmenu(wh%,ih%,mx%,my%)
 3780 WHEN -2:PROCbarmenu(wh%,mx%,my%)
 3790ENDCASE
 3800ENDPROC
 3810:
 3820DEFPROCbarmenu(wh%,mx%,my%)
 3830LOCAL f%,b%,g%:b%=&7000021:g%=&7400021:REM flags=black,grey
 3840remwh%=wh%:remx%=mx%:remy%=my%:i%=0
 3850a%=mb1%:!a%=baricon%:p%=a%+32:$(a%+4)=task$
 3860a%!16=&70207:a%!20=128:a%!24=44:a%!28=0
 3870s$="Info":p%!0=0:p%!4=info%:p%!8=b%:$(p%+12)=s$:p%+=24:i%+=1
 3880s$="Quit":p%!0=&80:p%!4=0:p%!8=b%:$(p%+12)=s$:i%+=1
 3890SYS "Wimp_CreateMenu",,mb1%+4,mx%-64,96+i%*44
 3900ENDPROC
 3910:
 3920DEFPROCmainmenu(wh%,ih%,mx%,my%)
 3930LOCAL f%,b%,g%,m$,n$,n2$,n3$,path$,leaf$,w1%,w2%,wid%,t%
 3940remx%=mx%:remy%=my%:remwh%=wh%
 3950b%=&7000021:g%=&7400021:f%=b%
 3960:
 3970a%=mb1%:p%=a%+28:$a%="Main"
 3980a%!12=&70207:a%!16=5*16:a%!20=44:a%!24=0
 3990s$="All active":p%!0=0:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
 4000s$="None active":p%!0=&80:p%!4=0:p%!8=f%:$(p%+12)=s$
 4010:
 4020SYS "Wimp_CreateMenu",,mb1%,mx%-64,my%
 4030ENDPROC
 4040:
 4050DEFPROCmenuselect(q%)
 4060CASE remwh% OF
 4070 WHEN main%,pane%:PROCmainchoice(q%)
 4080 OTHERWISE:IF q%!0=1 THEN quit%=TRUE
 4090ENDCASE
 4100ENDPROC
 4110:
 4120DEFPROCmainchoice(q%)
 4130REM click on menu from polling loop
 4140LOCAL n%:n%=q%!0
 4150SYS "Wimp_GetPointerInfo",,q%:mb%=q%!8:stay%=mb%=1
 4160CASE n% OF
 4170 WHEN 0:FOR J%=1 TO bars%:PROCsi(pane%,maxbars%*3+J%-1):NEXT
 4180 WHEN 1:FOR J%=1 TO bars%:PROCui(pane%,maxbars%*3+J%-1):NEXT
 4190ENDCASE
 4200IF stay% THEN PROCmainmenu(remx%,remy%,remwh%)
 4210ENDPROC
 4220:
 4230REM------
 4240REM. MISC
 4250REM------
 4260:
 4270DEFFNth(task$)
 4280REM look for task handle of named task
 4290REM if task not loaded, returns zero
 4300LOCAL a%,f%,t$,th%
 4310SYS "TaskManager_EnumerateTasks",,q%,qsize% TO ,r1%
 4320a%=q%
 4330REPEAT
 4340 f%=a%!12
 4350 IF (f% AND 1)=0 THEN th%=a%!0:t$=FNname(a%!4)
 4360 a%+=16
 4370UNTIL a%>=r1% OR t$=task$
 4380IF t$=task$ THEN=th%
 4390=0
 4400:
 4410DEFFNname(ptr%)
 4420LOCAL s$:s$=""
 4430WHILE ?ptr%<>0:s$+=CHR$?ptr%:ptr%+=1:ENDWHILE
 4440=s$
 4450:
 4460DEFFNobjtype(path$)
 4470LOCAL type%
 4480REM 0=Not found, 1-File, 2=Dir
 4490SYS "XOS_File",5,path$ TO type%
 4500=type%
 4510:
 4520DEFFNosvar(osvar$)
 4530LOCAL len%
 4540REM If not found don't report error
 4550SYS "XOS_ReadVarVal",osvar$,q%,200,0,3 TO,,len%
 4560?(q%+len%)=&D
 4570=$q%
 4580:
 4590DEFPROCbeep:SOUND 1,-10,200,1:ENDPROC
 4600DEFPROCbuzz:SOUND 1,-15,50,4:ENDPROC
 4610:
 4620REM---------
 4630REM. WINDOWS
 4640REM---------
 4650:
 4660DEFPROCloadtemplates
 4670LOCAL tbuff%,end%
 4680tbuff%=buffer%:end%=buffer%+bufsize%
 4690SYS "Wimp_OpenTemplate",,taskdir$+".Templates"
 4700main%=FNtwindow("Main",end%,tbuff%)
 4710pane%=FNtwindow("Pane",end%,tbuff%)
 4720info%=FNtwindow("Info",end%,tbuff%)
 4730SYS "Wimp_CloseTemplate"
 4740ENDPROC
 4750:
 4760DEFFNtwindow(t$,end%,RETURN tbuff%)
 4770LOCAL wh%
 4780SYS "Wimp_LoadTemplate",,q%,tbuff%,end%,-1,t$,0 TO ,,tbuff%
 4790SYS "Wimp_CreateWindow",,q% TO wh%
 4800=wh%
 4810:
 4820DEFPROCow(wh%)
 4830REM at my behest - on top
 4840q%!0=wh%:SYS "Wimp_GetWindowState",,q%:q%!28=-1
 4850IF wh%=main% THEN PROCpane(wh%)
 4860SYS "Wimp_OpenWindow",,q%
 4870ENDPROC
 4880:
 4890DEFPROCow2(wh%)
 4900REM from Wimp Poll
 4910IF wh%=main% THEN PROCpane(wh%)
 4920SYS "Wimp_OpenWindow",,q%
 4930ENDPROC
 4940:
 4950DEFPROCcw(wh%)
 4960!q%=wh%:SYS "Wimp_CloseWindow",,q%
 4970IF wh%=main% THEN PROCcw(pane%)
 4980ENDPROC
 4990:
 5000DEFPROCowc(wh%)
 5010REM at my behest - on top and in centre
 5020q%!0=wh%:SYS "Wimp_GetWindowState",,q%
 5030SYS "OS_ReadModeVariable",-1,11 TO ,,xwindlimit%
 5040SYS "OS_ReadModeVariable",-1,4  TO ,,xeigfactor%
 5050SYS "OS_ReadModeVariable",-1,12 TO ,,ywindlimit%
 5060SYS "OS_ReadModeVariable",-1,5  TO ,,yeigfactor%
 5070xwindlimit%=xwindlimit%<<xeigfactor%
 5080ywindlimit%=ywindlimit%<<yeigfactor%
 5090xeigfactor%=q%!12-q%!4
 5100yeigfactor%=q%!16-q%!8
 5110q%!4 =(xwindlimit%-xeigfactor%)>>1
 5120q%!8 =(ywindlimit%-yeigfactor%)>>1
 5130q%!12=q%!4+xeigfactor%
 5140q%!16=q%!8+yeigfactor%
 5150q%!28=-1
 5160IF wh%=main% THEN PROCpane(wh%)
 5170SYS "Wimp_OpenWindow",,q%
 5180ENDPROC
 5190:
 5200DEFPROCforce(wh%)
 5210!q%=wh%:SYS "Wimp_GetWindowState",,q%
 5220SYS "Wimp_ForceRedraw",-1,q%!4,q%!8,q%!12,q%!16
 5230ENDPROC
 5240:
 5250DEFPROCsetextent(wh%,miny%,maxx%)
 5260q%!0=0:q%!4=miny%:q%!8=maxx%:q%!12=0
 5270SYS "Wimp_SetExtent",wh%,q%
 5280ENDPROC
 5290:
 5300REM------
 5310REM. PANE
 5320REM------
 5330:
 5340DEFPROCpane(parent%)
 5350LOCAL x%,y%,b%
 5360REM parent is in q%
 5370x%=q%!4:y%=q%!16:b%=q%!28
 5380REM get pane state in pq%
 5390pq%!0=pane%
 5400SYS "Wimp_GetWindowState",,pq%
 5410REM determine position for pane
 5420pq%!4=x%+pol%
 5430pq%!12=x%+pol%+panewid%
 5440pq%!8=y%-pot%-panehgt%
 5450pq%!16=y%-pot%
 5460REM and open it at correct point in stack
 5470pq%!28=b%:SYS "Wimp_OpenWindow",,pq%
 5480REM open parent behind pane
 5490q%!28=pane%
 5500ENDPROC
 5510:
 5520REM-------
 5530REM. ICONS
 5540REM-------
 5550:
 5560DEFPROCbaricon
 5570q%!0=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=68:q%!20=&3002
 5580$(q%+24)="!password"
 5590SYS "Wimp_CreateIcon",,q% TO baricon%
 5600ENDPROC
 5610:
 5620DEFPROCcreateicons
 5630REM icons for pane
 5640LOCAL wh%,ih%,vg%,ix%,iy%,iw%,f%,i%,w%,h%,m%
 5650wh%=pane%:ih%=44:vg%=4:iy%=-(ih%+vg%)
 5660:
 5670REM number
 5680ix%=6:iw%=36:f%=&27006039
 5690FOR J%=1 TO maxbars%
 5700 s$=RIGHT$("  "+STR$J%,2)
 5710 i%=FNicon(wh%,ix%,iy%,iw%,ih%,f%,s$,0,0,0)
 5720 iy%-=(ih%+vg%)
 5730NEXT
 5740:
 5750REM bar names
 5760ix%=48:iw%=234:iy%=-(ih%+vg%):f%=&17000135
 5770FOR J%=1 TO maxbars%
 5780 $barname%(J%)=""
 5790 i%=FNicon(wh%,ix%,iy%,iw%,ih%,f%,"",barname%(J%),-1,11)
 5800 iy%-=(ih%+vg%)
 5810NEXT
 5820:
 5830REM passwords
 5840ix%=290:iw%=234:iy%=-(ih%+vg%):f%=&0700E135
 5850FOR J%=1 TO maxbars%
 5860 $password%(J%)=""
 5870 $passval%(J%)="A":REM no chrs allowed
 5880 i%=FNicon(wh%,ix%,iy%,iw%,ih%,f%,"",password%(J%),passval%(J%),11)
 5890 iy%-=(ih%+vg%)
 5900NEXT
 5910:
 5920REM opt buttons
 5930ix%=532:iw%=44:iy%=-(ih%+vg%):f%=&1440B133
 5940FOR J%=1 TO maxbars%
 5950 i%=FNicon(wh%,ix%,iy%,iw%,ih%,f%,"",null%,optval%,2)
 5960 iy%-=(ih%+vg%)
 5970NEXT
 5980:
 5990REM set window wa extent
 6000h%=maxbars%*(ih%+vg%)+vg%
 6010PROCsetextent(wh%,-h%,592)
 6020ENDPROC
 6030:
 6040DEFFNicon(wh%,ix%,iy%,iw%,ih%,flag%,text$,d1%,d2%,d3%)
 6050q%!0=wh%:q%!4=ix%:q%!8=iy%:q%!12=ix%+iw%:q%!16=iy%+ih%:q%!20=flag%
 6060IF d1%=0 THEN
 6070  $(q%+24)=text$
 6080ELSE
 6090  q%!24=d1%:q%!28=d2%:q%!32=d3%
 6100ENDIF
 6110SYS "Wimp_CreateIcon",,q% TO ih%
 6120=ih%
 6130:
 6140DEFPROCit(wh%,ih%,text$)
 6150q%!0=wh%:q%!4=ih%
 6160SYS "Wimp_GetIconState",,q%
 6170$(q%!28)=text$
 6180q%!0=wh%:q%!4=ih%:q%!8=0:q%!12=0
 6190SYS "Wimp_SetIconState",,q%
 6200ENDPROC
 6210:
 6220DEFFNit(wh%,ih%)
 6230q%!0=wh%:q%!4=ih%
 6240SYS "Wimp_GetIconState",,q%
 6250=$(q%!28)
 6260:
 6270DEFFNis(wh%,ih%)
 6280LOCAL n%
 6290!q%=wh%:q%!4=ih%
 6300SYS "Wimp_GetIconState",,q%
 6310n%=((q%!24)>>21) AND 1
 6320IF n%=0 THEN=FALSE
 6330=TRUE
 6340:
 6350DEFPROCsi(wh%,ih%)
 6360q%!0=wh%:q%!4=ih%
 6370q%!8=1<<21:q%!12=1<<21
 6380SYS "Wimp_SetIconState",,q%
 6390ENDPROC
 6400:
 6410DEFPROCui(wh%,ih%)
 6420q%!0=wh%:q%!4=ih%
 6430q%!8=0:q%!12=1<<21
 6440SYS "Wimp_SetIconState",,q%
 6450ENDPROC
 6460:
 6470DEFPROCsis(wh%,ih%,newflags%)
 6480REM set icon state
 6490LOCAL clear%,eor%
 6500clear%=&FFFFFFFF:eor%=newflags%
 6510q%!0=wh%:q%!4=ih%:q%!8=eor%:q%!12=clear%
 6520SYS "Wimp_SetIconState",,q%
 6530ENDPROC
 6540:
 6550REM-----------------
 6560REM. ERRORS/MESSAGES
 6570REM-----------------
 6580:
 6590DEFPROCerror
 6600REM before entering polling loop
 6610SYS "Hourglass_Smash"
 6620IF F%>0 THEN CLOSE#F%:F%=0
 6630ERROR EXT ERR,REPORT$+" at line "+STR$ERL
 6640ENDPROC
 6650:
 6660DEFPROCwimperror
 6670LOCAL ans%
 6680SYS "Wimp_DragBox",,-1:SYS "Hourglass_Smash"
 6690IF F%>0 THEN CLOSE#F%:F%=0
 6700!q%=ERR:s$="OK to continue, CANCEL to kill "+task$
 6710$(q%+4)=REPORT$+" (Internal error "+STR$ERL+") "+s$+CHR$0
 6720SYS "Wimp_ReportError",q%,3,task$ TO ,ans%
 6730IF ans%=2 THEN $q%="TASK":SYS "Wimp_CloseDown",task%,!q%:END
 6740ENDPROC
 6750:
 6760DEFFNreport(err$,flag%)
 6770LOCAL ans%
 6780REM flag%=01 (OK)
 6790REM flag%=02 (CANCEL)
 6800REM flag%=03 (OK,CANCEL)
 6810REM flag%+16 (no 'Error' in title)
 6820!q%=1:$(q%+4)=err$+CHR$0
 6830SYS "Wimp_ReportError",q%,flag%,task$ TO ,ans%
 6840=ans%
 6850:
 6860DEFPROCdl(list$)
 6870REM debug list
 6880LOCAL ccc%,ttt%,mmm%,ggg%,sss$,ccc$,var$():DIM var$(20)
 6890ggg%=4:REM omit lines at top of screen
 6900LOCAL ERROR
 6910ON ERROR LOCAL VDU4:PRINTTAB(0,ttt%+ggg%+2)"ERROR!":VDU5:ENDPROC
 6920FOR ttt%=1 TO LEN(list$)
 6930 ccc$=MID$(list$,ttt%,1)
 6940 IF ccc$<>"," THEN sss$+=ccc$
 6950 IF ccc$="," OR ttt%=LEN(list$) THEN
 6960  IF LENsss$>mmm% THEN mmm%=LENsss$
 6970  var$(ccc%)=sss$:sss$="":ccc%+=1
 6980 ENDIF
 6990NEXT
 7000VDU4
 7010FOR ttt%=0 TO ccc%-1
 7020 sss$=var$(ttt%)
 7030 PRINTTAB(0,ttt%+ggg%)STRING$(30," ")
 7040 IF LEFT$(sss$,1)="~" THEN
 7050  sss$=RIGHT$(sss$,LENsss$-1)
 7060  ccc$=STRING$(mmm%-LENsss$," ")
 7070  PRINTTAB(0,ttt%+ggg%)sss$+ccc$+" =&";STR$~(EVALsss$)
 7080  ELSE
 7090  ccc$=STRING$(mmm%-LENsss$," ")
 7100  PRINTTAB(0,ttt%+ggg%) sss$+ccc$+" = ";EVAL(sss$)
 7110 ENDIF
 7120NEXT:VDU5
 7130ENDPROC

 � > <Password$Dir>.!RunImage
:
� � �error:�
(:
2task$="Password"
<'purpose$="Edit MenuBar's passwords"
F version$="1.00 (3 Apr 1996)"
P"author$="(c) Graham Crow 1996"
Z:
d	�init
n�loadtemplates
x�baricon
��initicons
��createicons
��owc(main%)
�:
�� � �wimperror
�quit%=�
��:�poll:� quit%
�,$q%="TASK":ș "Wimp_CloseDown",task%,!q%
��
�:
��------
��. POLL
��------
:

��poll
 ș "Wimp_Poll",,q% � reason%
"Ȏ reason% �
, � 2:�ow2(q%!0)
6 � 3:�cw(q%!0)
@ � 6:�mouse(q%)
J � 8:�keypress(q%)
T � 9:�menuselect(q%)
^ � 17,18:�receive(q%)
h�
r�
|:
��------
��. INIT
��------
�:
�
��init
�qsize%=&200
�� q% qsize%
�bufsize%=&300
�� buffer% bufsize%
�panesize%=36
�� pq% panesize%
�� mb1% 100
�maxbars%=30:bars%=0
m%=maxbars%
:� barname%(m%) :� J%=0 � m%:� a% 11:barname%(J%)=a% :�
:� password%(m%):� J%=0 � m%:� a% 11:password%(J%)=a%:�
&:� passval%(m%) :� J%=0 � m%:� a%  4:passval%(J%)=a% :�
0� active%(m%)
:� rembarname$(m%)
D� rempassword$(m%)
N� remactive%(m%)
X*� optval%  14:$optval%="Soptoff,opton"
b� null%     2:$null%=""
l!taskdir$=�osvar(task$+"$Dir")
vF%=0:� file handle
�datadir$=""
� � position of pane in parent
�.pot%=168:pol%=20:panewid%=768:panehgt%=484
��wimpinit(q%)
��
�:
���wimpinit(q%)
�$q%="TASK"
�7ș "Wimp_Initialise",200,!q%,task$ � version%,task%
�� version%<310 �
�, � 0, task$+" needs OS 3.1 or greater":�
��
�� �th(task$)>0 �
�' � 0, task$+" is already running":�
�
�
 :
*��initicons
4� wh%:wh%=info%
>�it(wh%,0,task$)
H�it(wh%,1,purpose$)
R�it(wh%,2,author$)
\�it(wh%,3,version$)
f�
p:
z�----------
��. MESSAGES
��----------
�:
���receive(q%)
�sender%=q%!4
�Ȏ q%!16 �
� � action code
� � 0:quit%=�
� � 3:�dataload(q%)
� � 9:�menuselect(q%)
��
��
�:
�------
�. LOAD
�------
$:
.��dataload(q%)
8� object dragged onto us
Bfiletype%=q%!40
Lpath$=�name(q%+44)
Vq%!12=q%!8:q%!16=4
`*ș "Wimp_SendMessage",17,q%,q%!4:� ack
j"� �oktoload(path$,filetype%) �
t �loadfile(path$,filetype%)
~�
��
�:
�ݤoktoload(path$,filetype%)
�� f$,n%:n%=�
�f$="Library.Data"
�*� filetype%<>&1000 � �path$,�f$)<>f$ �
�- s$="Drag MenuBar's '.."+f$+"' directory"
� ans%=�report(s$,1):n%=�
��
�� n% � datadir$=path$
�=n%
�:
��loadfile(path$,filetype%)

'� read bar names and place in array
)� J%,more%,next%,name$,type%,s$,m$,f%
�cw(main%)
(� flush arrays
2� J%=1 � maxbars%
< $barname%(J%)=""
F $password%(J%)=""
P# $passval%(J%)="A":� unwritable
Z �ui(pane%,maxbars%*3+J%-1)
d�
nrembarname$()=""
xrempassword$()=""
�active%()=�
�remactive%()=�
�J%=1:next%=0
��
�> ș "OS_GBPB",10,path$,q%,1,next%,100,"*" � ,,,more%,next%
� � more% �
�  name$=�name(q%+20)
�$  obj%=�objtype(path$+"."+name$)
�  type%=((!q%)>>>8) � &FFF
�  � obj%=1 � type%=&FFD �
�   $barname%(J%)=name$
�   rembarname$(J%)=name$
�*   password$=�getpassword(path$,name$)
!   rempassword$(J%)=password$
1   � active% � active%(J%)=�:remactive%(J%)=�
   $passval%(J%)="A~ "
"   $password%(J%)=password$
,   J%+=1
6  �
@ �
J� next%=-1 � J%>maxbars%
Tbars%=J%-1
^�it(main%,0,path$)
h� bars%>0 �
r � J%=1 � bars%
|1  f%=&1400B133:�sis(pane%,maxbars%*3+J%-1,f%)
�0  � active%(J%) � �si(pane%,maxbars%*3+J%-1)
� �
� � bars%<maxbars% �
�  � J%=bars%+1 � maxbars%
�   f%=&1440B133:� greyed
�%   �sis(pane%,maxbars%*3+J%-1,f%)
�  �
� �
��
��ow(main%)
��home(pane%)
�	�beep
��
:
�----------
�. PASSWORD
&�----------
0:
:ݤgetpassword(fsp$,bar$)
D� J%,factor%,c%,s$:s$=""
NF%=�(fsp$+"."+bar$)
X�#F%=32
bactive%=�#F%
lfactor%=�#F%
v�
� c%=�#F%
�" � c%>31 � c%-=factor%:s$+=�c%
�� c%<32 � �s$>9
�
�#F%:F%=0
�=s$
�:
��------
��. SAVE
��------
�:
���save(fsp$)
�� Save button clicked
�� J%,K%,n%,c$,c%
� bars%=0 � fsp$="" �

 �buzz
�
  � J%=1 � bars%
*  bar$=$barname%(J%)
4  F%=�(fsp$+"."+bar$)
>  � poke all zeros
H"  �#F%=32:� K%=0 � 15:�#F%,0:�
R  :
\
  �#F%=32
f(  active%=�is(pane%,maxbars%*3+J%-1)
p.  � active% � active%=�(254)+1 � active%=0
z  �#F%,active%
�  :
�  password$=$password%(J%)
�4  � password$<>"" � factor%=58+�(75) � factor%=0
�  �#F%,factor%
�  :
�  � password$<>"" �
�   � K%=1 � �(password$)
�    c$=�password$,K%,1)
�    c%=�c$+factor%
�    �#F%,c%
�	   � 
�  �
�  �#F%:F%=0
	 �
	
 �beep
	�
	$�
	.:
	8�-------
	B�. MOUSE
	L�-------
	V:
	`��mouse(q%)
	j� mx%,my%,mb%,wh%,ih%
	t2mx%=q%!0:my%=q%!4:mb%=q%!8:wh%=q%!12:ih%=q%!16
	~Ȏ wh% �
	�	 � -2
	�
 Ȏ mb% �
	�   � 2:�menu(wh%,ih%,mx%,my%)
	�  :�ow(main%)
	� �
	� :
	� � pane%
	�
 Ȏ mb% �
	�&  � mb%=2 � �menu(wh%,ih%,mx%,my%)
	� �
	� :
	� � main%

 Ȏ mb% �

   � 2:�menu(wh%,ih%,mx%,my%)
  � 1,4:
  Ȏ ih% �
(   � 3:�cancel(wh%,mb%)
2   � 4:�save(datadir$)
<  �
F �
P�
Z�
d:
n��cancel(wh%,mb%)
x� restore values
�� J%
�� bars%>0 �
� � J%=1 � bars%
�#  $barname%(J%)=rembarname$(J%)
�%  $password%(J%)=rempassword$(J%)
�  � remactive%(J%) �
�!   �si(pane%,maxbars%*3+J%-1)
�  �
�!   �ui(pane%,maxbars%*3+J%-1)
�  �
� �
� � mb%=1 �
�  �home(pane%)
  �force(pane%)
 �
  �cw(main%)
" �
,
 �beep
6�
@ � mb%<>1 � �cw(main%)
J�
T�
^:
h�------
r�. KEYS
|�------
�:
���keypress(q%)
�� wh%,ih%,c%
�wh%=q%!0:ih%=q%!4:c%=q%!24
�Ȏ c% �
� �  13:�return(wh%,ih%)
� �  30:�home(wh%)
� � 388:�test:� F4
� � 398:�down(wh%,ih%)
� � 399:�up(wh%,ih%)
��
��
�:
��home(wh%)
� wh%=pane% �
) !q%=wh%:ș "Wimp_GetWindowState",,q%
&- q%!20=0:q%!24=0:ș "Wimp_OpenWindow",,q%
0 �caret(wh%,maxbars%*2)
:�
D�
N:
X��return(wh%,ih%)
b
ret%=�
l$� wh%=pane% � ih%<maxbars%*3-1 �
v �scroll(wh%,ih%,0,4)
� �caret(wh%,ih%+1)
��
��
�:
���down(wh%,ih%)
�$� wh%=pane% � ih%<maxbars%*3-1 �
� �scroll(wh%,ih%,0,4)
� �caret(wh%,ih%+1)
��
��
�:
���up(wh%,ih%)
�"� wh%=pane% � ih%>maxbars%*2 �

 �scroll(wh%,ih%,1,4)

 �caret(wh%,ih%-1)

�

 �

*:

4��scroll(wh%,ih%,way%,gap%)

>� way%: 0=down, 1=up

H� w%,i%,n%,s%:s%=�

R!� get window edge (wa coords)

\)q%!0=wh%:ș "Wimp_GetWindowState",,q%

f/� way%=0 � w%=q%!24-(q%!16-q%!8) � w%=q%!24

p� get icon edge (wa coords)

z&� way%=0 � q%!4=ih%+1 � q%!4=ih%-1

�'q%!0=wh%:ș "Wimp_GetIconState",,q%

�
Ȏ way% �

�  � 0:i%=q%!12:� i%<w% � s%=�

�  � 1:i%=q%!20:� i%>w% � s%=�

��

�
� s% �

� Ȏ way% �

�  � 0:n%=�(i%)-�(w%)+gap%

�  � 1:n%=�(w%)-�(i%)+gap%

� �

�) !q%=wh%:ș "Wimp_GetWindowState",,q%

�% � way%=0 � q%!24-=n% � q%!24+=n%

� ș "Wimp_OpenWindow",,q%
�
�
:
$��caret(wh%,ih%)
.� s$:s$=�it(wh%,ih%)
8/ș "Wimp_SetCaretPosition",wh%,ih%,,,-1,�s$
B�
L:
V
��test
`�
j:
t�------
~�. MENU
��------
�:
���menu(wh%,ih%,mx%,my%)
�� middle button clicked
�Ȏ wh% �
�9 � main%,pane%:� bars%>0 � �mainmenu(wh%,ih%,mx%,my%)
� � -2:�barmenu(wh%,mx%,my%)
��
��
�:
���barmenu(wh%,mx%,my%)
�9� f%,b%,g%:b%=&7000021:g%=&7400021:� flags=black,grey
'remwh%=wh%: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
(7s$="Quit":p%!0=&80:p%!4=0:p%!8=b%:$(p%+12)=s$:i%+=1
20ș "Wimp_CreateMenu",,mb1%+4,mx%-64,96+i%*44
<�
F:
P��mainmenu(wh%,ih%,mx%,my%)
Z8� f%,b%,g%,m$,n$,n2$,n3$,path$,leaf$,w1%,w2%,wid%,t%
d"remx%=mx%:remy%=my%:remwh%=wh%
n!b%=&7000021:g%=&7400021:f%=b%
x:
�a%=mb1%:p%=a%+28:$a%="Main"
�,a%!12=&70207:a%!16=5*16:a%!20=44:a%!24=0
�<s$="All active":p%!0=0:p%!4=0:p%!8=f%:$(p%+12)=s$:p%+=24
�8s$="None active":p%!0=&80:p%!4=0:p%!8=f%:$(p%+12)=s$
�:
�)ș "Wimp_CreateMenu",,mb1%,mx%-64,my%
��
�:
���menuselect(q%)
�Ȏ remwh% �
�" � main%,pane%:�mainchoice(q%)
� :� q%!0=1 � quit%=�
��
�
:
��mainchoice(q%)
"%� click on menu from polling loop
,� n%:n%=q%!0
65ș "Wimp_GetPointerInfo",,q%:mb%=q%!8:stay%=mb%=1
@Ȏ n% �
J4 � 0:� J%=1 � bars%:�si(pane%,maxbars%*3+J%-1):�
T4 � 1:� J%=1 � bars%:�ui(pane%,maxbars%*3+J%-1):�
^�
h+� stay% � �mainmenu(remx%,remy%,remwh%)
r�
|:
��------
��. MISC
��------
�:
�ݤth(task$)
�(� look for task handle of named task
�&� if task not loaded, returns zero
�� a%,f%,t$,th%
�5ș "TaskManager_EnumerateTasks",,q%,qsize% � ,r1%
�	a%=q%
��
�
 f%=a%!12
�+ � (f% � 1)=0 � th%=a%!0:t$=�name(a%!4)
 a%+=16
� a%>=r1% � t$=task$
� t$=task$ �=th%
&=0
0:
:ݤname(ptr%)
D� s$:s$=""
N$ȕ ?ptr%<>0:s$+=�?ptr%:ptr%+=1:�
X=s$
b:
lݤobjtype(path$)
v� type%
� � 0=Not found, 1-File, 2=Dir
�!ș "XOS_File",5,path$ � type%
�
=type%
�:
�ݤosvar(osvar$)
�
� len%
�%� If not found don't report error
�1ș "XOS_ReadVarVal",osvar$,q%,200,0,3 �,,len%
�?(q%+len%)=&D
�=$q%
�:
���beep:� 1,-10,200,1:�
���buzz:� 1,-15,50,4:�
:
�---------
�. WINDOWS
 �---------
*:
4��loadtemplates
>� tbuff%,end%
H(tbuff%=buffer%:end%=buffer%+bufsize%
R1ș "Wimp_OpenTemplate",,taskdir$+".Templates"
\&main%=�twindow("Main",end%,tbuff%)
f&pane%=�twindow("Pane",end%,tbuff%)
p&info%=�twindow("Info",end%,tbuff%)
zș "Wimp_CloseTemplate"
��
�:
�ݤtwindow(t$,end%,� tbuff%)
�	� wh%
�=ș "Wimp_LoadTemplate",,q%,tbuff%,end%,-1,t$,0 � ,,tbuff%
�$ș "Wimp_CreateWindow",,q% � wh%
�=wh%
�:
�
��ow(wh%)
�� at my behest - on top
�2q%!0=wh%:ș "Wimp_GetWindowState",,q%:q%!28=-1
�� wh%=main% � �pane(wh%)
�ș "Wimp_OpenWindow",,q%
�
:
��ow2(wh%)
$� from Wimp Poll
.� wh%=main% � �pane(wh%)
8ș "Wimp_OpenWindow",,q%
B�
L:
V
��cw(wh%)
`%!q%=wh%:ș "Wimp_CloseWindow",,q%
j� wh%=main% � �cw(pane%)
t�
~:
���owc(wh%)
�)� at my behest - on top and in centre
�)q%!0=wh%:ș "Wimp_GetWindowState",,q%
�2ș "OS_ReadModeVariable",-1,11 � ,,xwindlimit%
�2ș "OS_ReadModeVariable",-1,4  � ,,xeigfactor%
�2ș "OS_ReadModeVariable",-1,12 � ,,ywindlimit%
�2ș "OS_ReadModeVariable",-1,5  � ,,yeigfactor%
�(xwindlimit%=xwindlimit%<<xeigfactor%
�(ywindlimit%=ywindlimit%<<yeigfactor%
�xeigfactor%=q%!12-q%!4
�yeigfactor%=q%!16-q%!8
�&q%!4 =(xwindlimit%-xeigfactor%)>>1
&q%!8 =(ywindlimit%-yeigfactor%)>>1

q%!12=q%!4+xeigfactor%
q%!16=q%!8+yeigfactor%
q%!28=-1
(� wh%=main% � �pane(wh%)
2ș "Wimp_OpenWindow",,q%
<�
F:
P��force(wh%)
Z(!q%=wh%:ș "Wimp_GetWindowState",,q%
d2ș "Wimp_ForceRedraw",-1,q%!4,q%!8,q%!12,q%!16
n�
x:
� ��setextent(wh%,miny%,maxx%)
�(q%!0=0:q%!4=miny%:q%!8=maxx%:q%!12=0
�ș "Wimp_SetExtent",wh%,q%
��
�:
��------
��. PANE
��------
�:
���pane(parent%)
�� x%,y%,b%
�� parent is in q%
�x%=q%!4:y%=q%!16:b%=q%!28
� get pane state in pq%
pq%!0=pane%
!ș "Wimp_GetWindowState",,pq%
"!� determine position for pane
,pq%!4=x%+pol%
6pq%!12=x%+pol%+panewid%
@pq%!8=y%-pot%-panehgt%
Jpq%!16=y%-pot%
T+� and open it at correct point in stack
^'pq%!28=b%:ș "Wimp_OpenWindow",,pq%
h� open parent behind pane
rq%!28=pane%
|�
�:
��-------
��. ICONS
��-------
�:
�
��baricon
�7q%!0=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=68:q%!20=&3002
�$(q%+24)="!password"
�'ș "Wimp_CreateIcon",,q% � baricon%
��
�:
���createicons
�� icons for pane
,� wh%,ih%,vg%,ix%,iy%,iw%,f%,i%,w%,h%,m%
)wh%=pane%:ih%=44:vg%=4:iy%=-(ih%+vg%)
:
&� number
0ix%=6:iw%=36:f%=&27006039
:� J%=1 � maxbars%
D s$=�"  "+�J%,2)
N. i%=�icon(wh%,ix%,iy%,iw%,ih%,f%,s$,0,0,0)
X iy%-=(ih%+vg%)
b�
l:
v� bar names
�.ix%=48:iw%=234:iy%=-(ih%+vg%):f%=&17000135
�� J%=1 � maxbars%
� $barname%(J%)=""
�; i%=�icon(wh%,ix%,iy%,iw%,ih%,f%,"",barname%(J%),-1,11)
� iy%-=(ih%+vg%)
��
�:
�� passwords
�/ix%=290:iw%=234:iy%=-(ih%+vg%):f%=&0700E135
�� J%=1 � maxbars%
� $password%(J%)=""
�( $passval%(J%)="A":� no chrs allowed
�F i%=�icon(wh%,ix%,iy%,iw%,ih%,f%,"",password%(J%),passval%(J%),11)
 iy%-=(ih%+vg%)
�
:
 � opt buttons
*.ix%=532:iw%=44:iy%=-(ih%+vg%):f%=&1440B133
4� J%=1 � maxbars%
>8 i%=�icon(wh%,ix%,iy%,iw%,ih%,f%,"",null%,optval%,2)
H iy%-=(ih%+vg%)
R�
\:
f� set window wa extent
ph%=maxbars%*(ih%+vg%)+vg%
z�setextent(wh%,-h%,592)
��
�:
�7ݤicon(wh%,ix%,iy%,iw%,ih%,flag%,text$,d1%,d2%,d3%)
�Fq%!0=wh%:q%!4=ix%:q%!8=iy%:q%!12=ix%+iw%:q%!16=iy%+ih%:q%!20=flag%
�
� d1%=0 �
�  $(q%+24)=text$
��
�#  q%!24=d1%:q%!28=d2%:q%!32=d3%
��
�"ș "Wimp_CreateIcon",,q% � ih%
�=ih%
�:
���it(wh%,ih%,text$)
q%!0=wh%:q%!4=ih%
ș "Wimp_GetIconState",,q%
$(q%!28)=text$
$$q%!0=wh%:q%!4=ih%:q%!8=0:q%!12=0
.ș "Wimp_SetIconState",,q%
8�
B:
Lݤit(wh%,ih%)
Vq%!0=wh%:q%!4=ih%
`ș "Wimp_GetIconState",,q%
j
=$(q%!28)
t:
~ݤis(wh%,ih%)
�� n%
�!q%=wh%:q%!4=ih%
�ș "Wimp_GetIconState",,q%
�n%=((q%!24)>>21) � 1
�� n%=0 �=�
�=�
�:
���si(wh%,ih%)
�q%!0=wh%:q%!4=ih%
�q%!8=1<<21:q%!12=1<<21
�ș "Wimp_SetIconState",,q%
��
:

��ui(wh%,ih%)
q%!0=wh%:q%!4=ih%
q%!8=0:q%!12=1<<21
(ș "Wimp_SetIconState",,q%
2�
<:
F��sis(wh%,ih%,newflags%)
P� set icon state
Z� clear%,eor%
d#clear%=&FFFFFFFF:eor%=newflags%
n,q%!0=wh%:q%!4=ih%:q%!8=eor%:q%!12=clear%
xș "Wimp_SetIconState",,q%
��
�:
��-----------------
��. ERRORS/MESSAGES
��-----------------
�:
���error
�"� before entering polling loop
�ș "Hourglass_Smash"
�� F%>0 � �#F%:F%=0
�� � �,�$+" at line "+Þ
��
�:
��wimperror

� ans%
.ș "Wimp_DragBox",,-1:ș "Hourglass_Smash"
"� F%>0 � �#F%:F%=0
,4!q%=�:s$="OK to continue, CANCEL to kill "+task$
60$(q%+4)=�$+" (Internal error "+Þ+") "+s$+�0
@,ș "Wimp_ReportError",q%,3,task$ � ,ans%
J9� ans%=2 � $q%="TASK":ș "Wimp_CloseDown",task%,!q%:�
T�
^:
hݤreport(err$,flag%)
r
� ans%
|� flag%=01 (OK)
�� flag%=02 (CANCEL)
�� flag%=03 (OK,CANCEL)
�$� flag%+16 (no 'Error' in title)
�!q%=1:$(q%+4)=err$+�0
�0ș "Wimp_ReportError",q%,flag%,task$ � ,ans%
�	=ans%
�:
���dl(list$)
�� debug list
�5� ccc%,ttt%,mmm%,ggg%,sss$,ccc$,var$():� var$(20)
�(ggg%=4:� omit lines at top of screen
�� �
�*� � � �4:�0,ttt%+ggg%+2)"ERROR!":�5:�
� ttt%=1 � �(list$)
 ccc$=�list$,ttt%,1)
 � ccc$<>"," � sss$+=ccc$
&! � ccc$="," � ttt%=�(list$) �
0  � �sss$>mmm% � mmm%=�sss$
:%  var$(ccc%)=sss$:sss$="":ccc%+=1
D �
N�
X�4
b� ttt%=0 � ccc%-1
l sss$=var$(ttt%)
v �0,ttt%+ggg%)�30," ")
� � �sss$,1)="~" �
�  sss$=�sss$,�sss$-1)
�  ccc$=�mmm%-�sss$," ")
�-  �0,ttt%+ggg%)sss$+ccc$+" =&";�~(�sss$)
�  �
�  ccc$=�mmm%-�sss$," ")
�,  �0,ttt%+ggg%) sss$+ccc$+" = ";�(sss$)
� �
��:�5
��
�
00000000  0d 00 0a 20 f4 20 3e 20  3c 50 61 73 73 77 6f 72  |... . > <Passwor|
00000010  64 24 44 69 72 3e 2e 21  52 75 6e 49 6d 61 67 65  |d$Dir>.!RunImage|
00000020  0d 00 14 05 3a 0d 00 1e  10 ee 20 85 20 f2 65 72  |....:..... . .er|
00000030  72 6f 72 3a e0 0d 00 28  05 3a 0d 00 32 14 74 61  |ror:...(.:..2.ta|
00000040  73 6b 24 3d 22 50 61 73  73 77 6f 72 64 22 0d 00  |sk$="Password"..|
00000050  3c 27 70 75 72 70 6f 73  65 24 3d 22 45 64 69 74  |<'purpose$="Edit|
00000060  20 4d 65 6e 75 42 61 72  27 73 20 70 61 73 73 77  | MenuBar's passw|
00000070  6f 72 64 73 22 0d 00 46  20 76 65 72 73 69 6f 6e  |ords"..F version|
00000080  24 3d 22 31 2e 30 30 20  28 33 20 41 70 72 20 31  |$="1.00 (3 Apr 1|
00000090  39 39 36 29 22 0d 00 50  22 61 75 74 68 6f 72 24  |996)"..P"author$|
000000a0  3d 22 28 63 29 20 47 72  61 68 61 6d 20 43 72 6f  |="(c) Graham Cro|
000000b0  77 20 31 39 39 36 22 0d  00 5a 05 3a 0d 00 64 09  |w 1996"..Z.:..d.|
000000c0  f2 69 6e 69 74 0d 00 6e  12 f2 6c 6f 61 64 74 65  |.init..n..loadte|
000000d0  6d 70 6c 61 74 65 73 0d  00 78 0c f2 62 61 72 69  |mplates..x..bari|
000000e0  63 6f 6e 0d 00 82 0e f2  69 6e 69 74 69 63 6f 6e  |con.....initicon|
000000f0  73 0d 00 8c 10 f2 63 72  65 61 74 65 69 63 6f 6e  |s.....createicon|
00000100  73 0d 00 96 0f f2 6f 77  63 28 6d 61 69 6e 25 29  |s.....owc(main%)|
00000110  0d 00 a0 05 3a 0d 00 aa  12 ee 20 85 20 f2 77 69  |....:..... . .wi|
00000120  6d 70 65 72 72 6f 72 0d  00 b4 0b 71 75 69 74 25  |mperror....quit%|
00000130  3d a3 0d 00 be 13 f5 3a  f2 70 6f 6c 6c 3a fd 20  |=......:.poll:. |
00000140  71 75 69 74 25 0d 00 c8  2c 24 71 25 3d 22 54 41  |quit%...,$q%="TA|
00000150  53 4b 22 3a c8 99 20 22  57 69 6d 70 5f 43 6c 6f  |SK":.. "Wimp_Clo|
00000160  73 65 44 6f 77 6e 22 2c  74 61 73 6b 25 2c 21 71  |seDown",task%,!q|
00000170  25 0d 00 d2 05 e0 0d 00  dc 05 3a 0d 00 e6 0b f4  |%.........:.....|
00000180  2d 2d 2d 2d 2d 2d 0d 00  f0 0b f4 2e 20 50 4f 4c  |------...... POL|
00000190  4c 0d 00 fa 0b f4 2d 2d  2d 2d 2d 2d 0d 01 04 05  |L.....------....|
000001a0  3a 0d 01 0e 0a dd f2 70  6f 6c 6c 0d 01 18 20 c8  |:......poll... .|
000001b0  99 20 22 57 69 6d 70 5f  50 6f 6c 6c 22 2c 2c 71  |. "Wimp_Poll",,q|
000001c0  25 20 b8 20 72 65 61 73  6f 6e 25 0d 01 22 10 c8  |% . reason%.."..|
000001d0  8e 20 72 65 61 73 6f 6e  25 20 ca 0d 01 2c 13 20  |. reason% ...,. |
000001e0  c9 20 32 3a f2 6f 77 32  28 71 25 21 30 29 0d 01  |. 2:.ow2(q%!0)..|
000001f0  36 12 20 c9 20 33 3a f2  63 77 28 71 25 21 30 29  |6. . 3:.cw(q%!0)|
00000200  0d 01 40 13 20 c9 20 36  3a f2 6d 6f 75 73 65 28  |..@. . 6:.mouse(|
00000210  71 25 29 0d 01 4a 16 20  c9 20 38 3a f2 6b 65 79  |q%)..J. . 8:.key|
00000220  70 72 65 73 73 28 71 25  29 0d 01 54 18 20 c9 20  |press(q%)..T. . |
00000230  39 3a f2 6d 65 6e 75 73  65 6c 65 63 74 28 71 25  |9:.menuselect(q%|
00000240  29 0d 01 5e 19 20 c9 20  31 37 2c 31 38 3a f2 72  |)..^. . 17,18:.r|
00000250  65 63 65 69 76 65 28 71  25 29 0d 01 68 05 cb 0d  |eceive(q%)..h...|
00000260  01 72 05 e1 0d 01 7c 05  3a 0d 01 86 0b f4 2d 2d  |.r....|.:.....--|
00000270  2d 2d 2d 2d 0d 01 90 0b  f4 2e 20 49 4e 49 54 0d  |----...... INIT.|
00000280  01 9a 0b f4 2d 2d 2d 2d  2d 2d 0d 01 a4 05 3a 0d  |....------....:.|
00000290  01 ae 0a dd f2 69 6e 69  74 0d 01 b8 0f 71 73 69  |.....init....qsi|
000002a0  7a 65 25 3d 26 32 30 30  0d 01 c2 0f de 20 71 25  |ze%=&200..... q%|
000002b0  20 71 73 69 7a 65 25 0d  01 cc 11 62 75 66 73 69  | qsize%....bufsi|
000002c0  7a 65 25 3d 26 33 30 30  0d 01 d6 16 de 20 62 75  |ze%=&300..... bu|
000002d0  66 66 65 72 25 20 62 75  66 73 69 7a 65 25 0d 01  |ffer% bufsize%..|
000002e0  e0 10 70 61 6e 65 73 69  7a 65 25 3d 33 36 0d 01  |..panesize%=36..|
000002f0  ea 13 de 20 70 71 25 20  70 61 6e 65 73 69 7a 65  |... pq% panesize|
00000300  25 0d 01 f4 0e de 20 6d  62 31 25 20 31 30 30 0d  |%..... mb1% 100.|
00000310  01 fe 17 6d 61 78 62 61  72 73 25 3d 33 30 3a 62  |...maxbars%=30:b|
00000320  61 72 73 25 3d 30 0d 02  08 0f 6d 25 3d 6d 61 78  |ars%=0....m%=max|
00000330  62 61 72 73 25 0d 02 12  3a de 20 62 61 72 6e 61  |bars%...:. barna|
00000340  6d 65 25 28 6d 25 29 20  3a e3 20 4a 25 3d 30 20  |me%(m%) :. J%=0 |
00000350  b8 20 6d 25 3a de 20 61  25 20 31 31 3a 62 61 72  |. m%:. a% 11:bar|
00000360  6e 61 6d 65 25 28 4a 25  29 3d 61 25 20 3a ed 0d  |name%(J%)=a% :..|
00000370  02 1c 3a de 20 70 61 73  73 77 6f 72 64 25 28 6d  |..:. password%(m|
00000380  25 29 3a e3 20 4a 25 3d  30 20 b8 20 6d 25 3a de  |%):. J%=0 . m%:.|
00000390  20 61 25 20 31 31 3a 70  61 73 73 77 6f 72 64 25  | a% 11:password%|
000003a0  28 4a 25 29 3d 61 25 3a  ed 0d 02 26 3a de 20 70  |(J%)=a%:...&:. p|
000003b0  61 73 73 76 61 6c 25 28  6d 25 29 20 3a e3 20 4a  |assval%(m%) :. J|
000003c0  25 3d 30 20 b8 20 6d 25  3a de 20 61 25 20 20 34  |%=0 . m%:. a%  4|
000003d0  3a 70 61 73 73 76 61 6c  25 28 4a 25 29 3d 61 25  |:passval%(J%)=a%|
000003e0  20 3a ed 0d 02 30 11 de  20 61 63 74 69 76 65 25  | :...0.. active%|
000003f0  28 6d 25 29 0d 02 3a 15  de 20 72 65 6d 62 61 72  |(m%)..:.. rembar|
00000400  6e 61 6d 65 24 28 6d 25  29 0d 02 44 16 de 20 72  |name$(m%)..D.. r|
00000410  65 6d 70 61 73 73 77 6f  72 64 24 28 6d 25 29 0d  |empassword$(m%).|
00000420  02 4e 14 de 20 72 65 6d  61 63 74 69 76 65 25 28  |.N.. remactive%(|
00000430  6d 25 29 0d 02 58 2a de  20 6f 70 74 76 61 6c 25  |m%)..X*. optval%|
00000440  20 20 31 34 3a 24 6f 70  74 76 61 6c 25 3d 22 53  |  14:$optval%="S|
00000450  6f 70 74 6f 66 66 2c 6f  70 74 6f 6e 22 0d 02 62  |optoff,opton"..b|
00000460  1b de 20 6e 75 6c 6c 25  20 20 20 20 20 32 3a 24  |.. null%     2:$|
00000470  6e 75 6c 6c 25 3d 22 22  0d 02 6c 21 74 61 73 6b  |null%=""..l!task|
00000480  64 69 72 24 3d a4 6f 73  76 61 72 28 74 61 73 6b  |dir$=.osvar(task|
00000490  24 2b 22 24 44 69 72 22  29 0d 02 76 16 46 25 3d  |$+"$Dir")..v.F%=|
000004a0  30 3a f4 20 66 69 6c 65  20 68 61 6e 64 6c 65 0d  |0:. file handle.|
000004b0  02 80 0f 64 61 74 61 64  69 72 24 3d 22 22 0d 02  |...datadir$=""..|
000004c0  8a 20 f4 20 70 6f 73 69  74 69 6f 6e 20 6f 66 20  |. . position of |
000004d0  70 61 6e 65 20 69 6e 20  70 61 72 65 6e 74 0d 02  |pane in parent..|
000004e0  94 2e 70 6f 74 25 3d 31  36 38 3a 70 6f 6c 25 3d  |..pot%=168:pol%=|
000004f0  32 30 3a 70 61 6e 65 77  69 64 25 3d 37 36 38 3a  |20:panewid%=768:|
00000500  70 61 6e 65 68 67 74 25  3d 34 38 34 0d 02 9e 11  |panehgt%=484....|
00000510  f2 77 69 6d 70 69 6e 69  74 28 71 25 29 0d 02 a8  |.wimpinit(q%)...|
00000520  05 e1 0d 02 b2 05 3a 0d  02 bc 12 dd f2 77 69 6d  |......:......wim|
00000530  70 69 6e 69 74 28 71 25  29 0d 02 c6 0e 24 71 25  |pinit(q%)....$q%|
00000540  3d 22 54 41 53 4b 22 0d  02 c7 37 c8 99 20 22 57  |="TASK"...7.. "W|
00000550  69 6d 70 5f 49 6e 69 74  69 61 6c 69 73 65 22 2c  |imp_Initialise",|
00000560  32 30 30 2c 21 71 25 2c  74 61 73 6b 24 20 b8 20  |200,!q%,task$ . |
00000570  76 65 72 73 69 6f 6e 25  2c 74 61 73 6b 25 0d 02  |version%,task%..|
00000580  d0 14 e7 20 76 65 72 73  69 6f 6e 25 3c 33 31 30  |... version%<310|
00000590  20 8c 0d 02 da 2c 20 85  20 30 2c 20 74 61 73 6b  | ...., . 0, task|
000005a0  24 2b 22 20 6e 65 65 64  73 20 4f 53 20 33 2e 31  |$+" needs OS 3.1|
000005b0  20 6f 72 20 67 72 65 61  74 65 72 22 3a e0 0d 02  | or greater":...|
000005c0  e4 05 cd 0d 02 ee 14 e7  20 a4 74 68 28 74 61 73  |........ .th(tas|
000005d0  6b 24 29 3e 30 20 8c 0d  02 f8 27 20 85 20 30 2c  |k$)>0 ....' . 0,|
000005e0  20 74 61 73 6b 24 2b 22  20 69 73 20 61 6c 72 65  | task$+" is alre|
000005f0  61 64 79 20 72 75 6e 6e  69 6e 67 22 3a e0 0d 03  |ady running":...|
00000600  02 05 cd 0d 03 16 05 e1  0d 03 20 05 3a 0d 03 2a  |.......... .:..*|
00000610  0f dd f2 69 6e 69 74 69  63 6f 6e 73 0d 03 34 13  |...initicons..4.|
00000620  ea 20 77 68 25 3a 77 68  25 3d 69 6e 66 6f 25 0d  |. wh%:wh%=info%.|
00000630  03 3e 14 f2 69 74 28 77  68 25 2c 30 2c 74 61 73  |.>..it(wh%,0,tas|
00000640  6b 24 29 0d 03 48 17 f2  69 74 28 77 68 25 2c 31  |k$)..H..it(wh%,1|
00000650  2c 70 75 72 70 6f 73 65  24 29 0d 03 52 16 f2 69  |,purpose$)..R..i|
00000660  74 28 77 68 25 2c 32 2c  61 75 74 68 6f 72 24 29  |t(wh%,2,author$)|
00000670  0d 03 5c 17 f2 69 74 28  77 68 25 2c 33 2c 76 65  |..\..it(wh%,3,ve|
00000680  72 73 69 6f 6e 24 29 0d  03 66 05 e1 0d 03 70 05  |rsion$)..f....p.|
00000690  3a 0d 03 7a 0f f4 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |:..z..----------|
000006a0  0d 03 84 0f f4 2e 20 4d  45 53 53 41 47 45 53 0d  |...... MESSAGES.|
000006b0  03 8e 0f f4 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 03  |....----------..|
000006c0  98 05 3a 0d 03 a2 11 dd  f2 72 65 63 65 69 76 65  |..:......receive|
000006d0  28 71 25 29 0d 03 ac 10  73 65 6e 64 65 72 25 3d  |(q%)....sender%=|
000006e0  71 25 21 34 0d 03 b6 0e  c8 8e 20 71 25 21 31 36  |q%!4...... q%!16|
000006f0  20 ca 0d 03 c0 12 20 f4  20 61 63 74 69 6f 6e 20  | ..... . action |
00000700  63 6f 64 65 0d 03 ca 10  20 c9 20 30 3a 71 75 69  |code.... . 0:qui|
00000710  74 25 3d b9 0d 03 d4 16  20 c9 20 33 3a f2 64 61  |t%=..... . 3:.da|
00000720  74 61 6c 6f 61 64 28 71  25 29 0d 03 de 18 20 c9  |taload(q%).... .|
00000730  20 39 3a f2 6d 65 6e 75  73 65 6c 65 63 74 28 71  | 9:.menuselect(q|
00000740  25 29 0d 03 e8 05 cb 0d  03 f2 05 e1 0d 03 fc 05  |%)..............|
00000750  3a 0d 04 06 0b f4 2d 2d  2d 2d 2d 2d 0d 04 10 0b  |:.....------....|
00000760  f4 2e 20 4c 4f 41 44 0d  04 1a 0b f4 2d 2d 2d 2d  |.. LOAD.....----|
00000770  2d 2d 0d 04 24 05 3a 0d  04 2e 12 dd f2 64 61 74  |--..$.:......dat|
00000780  61 6c 6f 61 64 28 71 25  29 0d 04 38 1c f4 20 6f  |aload(q%)..8.. o|
00000790  62 6a 65 63 74 20 64 72  61 67 67 65 64 20 6f 6e  |bject dragged on|
000007a0  74 6f 20 75 73 0d 04 42  13 66 69 6c 65 74 79 70  |to us..B.filetyp|
000007b0  65 25 3d 71 25 21 34 30  0d 04 4c 16 70 61 74 68  |e%=q%!40..L.path|
000007c0  24 3d a4 6e 61 6d 65 28  71 25 2b 34 34 29 0d 04  |$=.name(q%+44)..|
000007d0  56 16 71 25 21 31 32 3d  71 25 21 38 3a 71 25 21  |V.q%!12=q%!8:q%!|
000007e0  31 36 3d 34 0d 04 60 2a  c8 99 20 22 57 69 6d 70  |16=4..`*.. "Wimp|
000007f0  5f 53 65 6e 64 4d 65 73  73 61 67 65 22 2c 31 37  |_SendMessage",17|
00000800  2c 71 25 2c 71 25 21 34  3a f4 20 61 63 6b 0d 04  |,q%,q%!4:. ack..|
00000810  6a 22 e7 20 a4 6f 6b 74  6f 6c 6f 61 64 28 70 61  |j". .oktoload(pa|
00000820  74 68 24 2c 66 69 6c 65  74 79 70 65 25 29 20 8c  |th$,filetype%) .|
00000830  0d 04 74 1f 20 f2 6c 6f  61 64 66 69 6c 65 28 70  |..t. .loadfile(p|
00000840  61 74 68 24 2c 66 69 6c  65 74 79 70 65 25 29 0d  |ath$,filetype%).|
00000850  04 7e 05 cd 0d 04 88 05  e1 0d 04 92 05 3a 0d 04  |.~...........:..|
00000860  9c 1f dd a4 6f 6b 74 6f  6c 6f 61 64 28 70 61 74  |....oktoload(pat|
00000870  68 24 2c 66 69 6c 65 74  79 70 65 25 29 0d 04 a6  |h$,filetype%)...|
00000880  10 ea 20 66 24 2c 6e 25  3a 6e 25 3d b9 0d 04 b0  |.. f$,n%:n%=....|
00000890  15 66 24 3d 22 4c 69 62  72 61 72 79 2e 44 61 74  |.f$="Library.Dat|
000008a0  61 22 0d 04 ba 2a e7 20  66 69 6c 65 74 79 70 65  |a"...*. filetype|
000008b0  25 3c 3e 26 31 30 30 30  20 84 20 c2 70 61 74 68  |%<>&1000 . .path|
000008c0  24 2c a9 66 24 29 3c 3e  66 24 20 8c 0d 04 c4 2d  |$,.f$)<>f$ ....-|
000008d0  20 73 24 3d 22 44 72 61  67 20 4d 65 6e 75 42 61  | s$="Drag MenuBa|
000008e0  72 27 73 20 27 2e 2e 22  2b 66 24 2b 22 27 20 64  |r's '.."+f$+"' d|
000008f0  69 72 65 63 74 6f 72 79  22 0d 04 ce 1c 20 61 6e  |irectory".... an|
00000900  73 25 3d a4 72 65 70 6f  72 74 28 73 24 2c 31 29  |s%=.report(s$,1)|
00000910  3a 6e 25 3d a3 0d 04 d8  05 cd 0d 04 e2 19 e7 20  |:n%=........... |
00000920  6e 25 20 8c 20 64 61 74  61 64 69 72 24 3d 70 61  |n% . datadir$=pa|
00000930  74 68 24 0d 04 ec 07 3d  6e 25 0d 04 f6 05 3a 0d  |th$....=n%....:.|
00000940  05 00 1f dd f2 6c 6f 61  64 66 69 6c 65 28 70 61  |.....loadfile(pa|
00000950  74 68 24 2c 66 69 6c 65  74 79 70 65 25 29 0d 05  |th$,filetype%)..|
00000960  0a 27 f4 20 72 65 61 64  20 62 61 72 20 6e 61 6d  |.'. read bar nam|
00000970  65 73 20 61 6e 64 20 70  6c 61 63 65 20 69 6e 20  |es and place in |
00000980  61 72 72 61 79 0d 05 14  29 ea 20 4a 25 2c 6d 6f  |array...). J%,mo|
00000990  72 65 25 2c 6e 65 78 74  25 2c 6e 61 6d 65 24 2c  |re%,next%,name$,|
000009a0  74 79 70 65 25 2c 73 24  2c 6d 24 2c 66 25 0d 05  |type%,s$,m$,f%..|
000009b0  1e 0e f2 63 77 28 6d 61  69 6e 25 29 0d 05 28 12  |...cw(main%)..(.|
000009c0  f4 20 66 6c 75 73 68 20  61 72 72 61 79 73 0d 05  |. flush arrays..|
000009d0  32 15 e3 20 4a 25 3d 31  20 b8 20 6d 61 78 62 61  |2.. J%=1 . maxba|
000009e0  72 73 25 0d 05 3c 15 20  24 62 61 72 6e 61 6d 65  |rs%..<. $barname|
000009f0  25 28 4a 25 29 3d 22 22  0d 05 46 16 20 24 70 61  |%(J%)=""..F. $pa|
00000a00  73 73 77 6f 72 64 25 28  4a 25 29 3d 22 22 0d 05  |ssword%(J%)=""..|
00000a10  50 23 20 24 70 61 73 73  76 61 6c 25 28 4a 25 29  |P# $passval%(J%)|
00000a20  3d 22 41 22 3a f4 20 75  6e 77 72 69 74 61 62 6c  |="A":. unwritabl|
00000a30  65 0d 05 5a 1f 20 f2 75  69 28 70 61 6e 65 25 2c  |e..Z. .ui(pane%,|
00000a40  6d 61 78 62 61 72 73 25  2a 33 2b 4a 25 2d 31 29  |maxbars%*3+J%-1)|
00000a50  0d 05 64 05 ed 0d 05 6e  14 72 65 6d 62 61 72 6e  |..d....n.rembarn|
00000a60  61 6d 65 24 28 29 3d 22  22 0d 05 78 15 72 65 6d  |ame$()=""..x.rem|
00000a70  70 61 73 73 77 6f 72 64  24 28 29 3d 22 22 0d 05  |password$()=""..|
00000a80  82 0f 61 63 74 69 76 65  25 28 29 3d a3 0d 05 8c  |..active%()=....|
00000a90  12 72 65 6d 61 63 74 69  76 65 25 28 29 3d a3 0d  |.remactive%()=..|
00000aa0  05 96 10 4a 25 3d 31 3a  6e 65 78 74 25 3d 30 0d  |...J%=1:next%=0.|
00000ab0  05 a0 05 f5 0d 05 aa 3e  20 c8 99 20 22 4f 53 5f  |.......> .. "OS_|
00000ac0  47 42 50 42 22 2c 31 30  2c 70 61 74 68 24 2c 71  |GBPB",10,path$,q|
00000ad0  25 2c 31 2c 6e 65 78 74  25 2c 31 30 30 2c 22 2a  |%,1,next%,100,"*|
00000ae0  22 20 b8 20 2c 2c 2c 6d  6f 72 65 25 2c 6e 65 78  |" . ,,,more%,nex|
00000af0  74 25 0d 05 b4 0e 20 e7  20 6d 6f 72 65 25 20 8c  |t%.... . more% .|
00000b00  0d 05 be 18 20 20 6e 61  6d 65 24 3d a4 6e 61 6d  |....  name$=.nam|
00000b10  65 28 71 25 2b 32 30 29  0d 05 c8 24 20 20 6f 62  |e(q%+20)...$  ob|
00000b20  6a 25 3d a4 6f 62 6a 74  79 70 65 28 70 61 74 68  |j%=.objtype(path|
00000b30  24 2b 22 2e 22 2b 6e 61  6d 65 24 29 0d 05 d2 1e  |$+"."+name$)....|
00000b40  20 20 74 79 70 65 25 3d  28 28 21 71 25 29 3e 3e  |  type%=((!q%)>>|
00000b50  3e 38 29 20 80 20 26 46  46 46 0d 05 dc 1d 20 20  |>8) . &FFF....  |
00000b60  e7 20 6f 62 6a 25 3d 31  20 80 20 74 79 70 65 25  |. obj%=1 . type%|
00000b70  3d 26 46 46 44 20 8c 0d  05 e6 1a 20 20 20 24 62  |=&FFD .....   $b|
00000b80  61 72 6e 61 6d 65 25 28  4a 25 29 3d 6e 61 6d 65  |arname%(J%)=name|
00000b90  24 0d 05 f0 1c 20 20 20  72 65 6d 62 61 72 6e 61  |$....   rembarna|
00000ba0  6d 65 24 28 4a 25 29 3d  6e 61 6d 65 24 0d 05 fa  |me$(J%)=name$...|
00000bb0  2a 20 20 20 70 61 73 73  77 6f 72 64 24 3d a4 67  |*   password$=.g|
00000bc0  65 74 70 61 73 73 77 6f  72 64 28 70 61 74 68 24  |etpassword(path$|
00000bd0  2c 6e 61 6d 65 24 29 0d  06 04 21 20 20 20 72 65  |,name$)...!   re|
00000be0  6d 70 61 73 73 77 6f 72  64 24 28 4a 25 29 3d 70  |mpassword$(J%)=p|
00000bf0  61 73 73 77 6f 72 64 24  0d 06 0e 31 20 20 20 e7  |assword$...1   .|
00000c00  20 61 63 74 69 76 65 25  20 8c 20 61 63 74 69 76  | active% . activ|
00000c10  65 25 28 4a 25 29 3d b9  3a 72 65 6d 61 63 74 69  |e%(J%)=.:remacti|
00000c20  76 65 25 28 4a 25 29 3d  b9 0d 06 18 1a 20 20 20  |ve%(J%)=.....   |
00000c30  24 70 61 73 73 76 61 6c  25 28 4a 25 29 3d 22 41  |$passval%(J%)="A|
00000c40  7e 20 22 0d 06 22 1f 20  20 20 24 70 61 73 73 77  |~ "..".   $passw|
00000c50  6f 72 64 25 28 4a 25 29  3d 70 61 73 73 77 6f 72  |ord%(J%)=passwor|
00000c60  64 24 0d 06 2c 0c 20 20  20 4a 25 2b 3d 31 0d 06  |d$..,.   J%+=1..|
00000c70  36 07 20 20 cd 0d 06 40  06 20 cd 0d 06 4a 1c fd  |6.  ...@. ...J..|
00000c80  20 6e 65 78 74 25 3d 2d  31 20 84 20 4a 25 3e 6d  | next%=-1 . J%>m|
00000c90  61 78 62 61 72 73 25 0d  06 54 0e 62 61 72 73 25  |axbars%..T.bars%|
00000ca0  3d 4a 25 2d 31 0d 06 5e  16 f2 69 74 28 6d 61 69  |=J%-1..^..it(mai|
00000cb0  6e 25 2c 30 2c 70 61 74  68 24 29 0d 06 68 0f e7  |n%,0,path$)..h..|
00000cc0  20 62 61 72 73 25 3e 30  20 8c 0d 06 72 13 20 e3  | bars%>0 ...r. .|
00000cd0  20 4a 25 3d 31 20 b8 20  62 61 72 73 25 0d 06 7c  | J%=1 . bars%..||
00000ce0  31 20 20 66 25 3d 26 31  34 30 30 42 31 33 33 3a  |1  f%=&1400B133:|
00000cf0  f2 73 69 73 28 70 61 6e  65 25 2c 6d 61 78 62 61  |.sis(pane%,maxba|
00000d00  72 73 25 2a 33 2b 4a 25  2d 31 2c 66 25 29 0d 06  |rs%*3+J%-1,f%)..|
00000d10  86 30 20 20 e7 20 61 63  74 69 76 65 25 28 4a 25  |.0  . active%(J%|
00000d20  29 20 8c 20 f2 73 69 28  70 61 6e 65 25 2c 6d 61  |) . .si(pane%,ma|
00000d30  78 62 61 72 73 25 2a 33  2b 4a 25 2d 31 29 0d 06  |xbars%*3+J%-1)..|
00000d40  90 06 20 ed 0d 06 9a 17  20 e7 20 62 61 72 73 25  |.. ..... . bars%|
00000d50  3c 6d 61 78 62 61 72 73  25 20 8c 0d 06 a4 1d 20  |<maxbars% ..... |
00000d60  20 e3 20 4a 25 3d 62 61  72 73 25 2b 31 20 b8 20  | . J%=bars%+1 . |
00000d70  6d 61 78 62 61 72 73 25  0d 06 ae 1c 20 20 20 66  |maxbars%....   f|
00000d80  25 3d 26 31 34 34 30 42  31 33 33 3a f4 20 67 72  |%=&1440B133:. gr|
00000d90  65 79 65 64 0d 06 b8 25  20 20 20 f2 73 69 73 28  |eyed...%   .sis(|
00000da0  70 61 6e 65 25 2c 6d 61  78 62 61 72 73 25 2a 33  |pane%,maxbars%*3|
00000db0  2b 4a 25 2d 31 2c 66 25  29 0d 06 c2 07 20 20 ed  |+J%-1,f%)....  .|
00000dc0  0d 06 cc 06 20 cd 0d 06  d6 05 cd 0d 06 e0 0e f2  |.... ...........|
00000dd0  6f 77 28 6d 61 69 6e 25  29 0d 06 ea 10 f2 68 6f  |ow(main%).....ho|
00000de0  6d 65 28 70 61 6e 65 25  29 0d 06 f4 09 f2 62 65  |me(pane%).....be|
00000df0  65 70 0d 06 fe 05 e1 0d  07 08 05 3a 0d 07 12 0f  |ep.........:....|
00000e00  f4 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 07 1c 0f f4  |.----------.....|
00000e10  2e 20 50 41 53 53 57 4f  52 44 0d 07 26 0f f4 2d  |. PASSWORD..&..-|
00000e20  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 07 30 05 3a 0d 07  |---------..0.:..|
00000e30  3a 1c dd a4 67 65 74 70  61 73 73 77 6f 72 64 28  |:...getpassword(|
00000e40  66 73 70 24 2c 62 61 72  24 29 0d 07 44 1c ea 20  |fsp$,bar$)..D.. |
00000e50  4a 25 2c 66 61 63 74 6f  72 25 2c 63 25 2c 73 24  |J%,factor%,c%,s$|
00000e60  3a 73 24 3d 22 22 0d 07  4e 17 46 25 3d ad 28 66  |:s$=""..N.F%=.(f|
00000e70  73 70 24 2b 22 2e 22 2b  62 61 72 24 29 0d 07 58  |sp$+"."+bar$)..X|
00000e80  0b cf 23 46 25 3d 33 32  0d 07 62 10 61 63 74 69  |..#F%=32..b.acti|
00000e90  76 65 25 3d 9a 23 46 25  0d 07 6c 10 66 61 63 74  |ve%=.#F%..l.fact|
00000ea0  6f 72 25 3d 9a 23 46 25  0d 07 76 05 f5 0d 07 80  |or%=.#F%..v.....|
00000eb0  0c 20 63 25 3d 9a 23 46  25 0d 07 8a 22 20 e7 20  |. c%=.#F%..." . |
00000ec0  63 25 3e 33 31 20 8c 20  63 25 2d 3d 66 61 63 74  |c%>31 . c%-=fact|
00000ed0  6f 72 25 3a 73 24 2b 3d  bd 63 25 0d 07 94 13 fd  |or%:s$+=.c%.....|
00000ee0  20 63 25 3c 33 32 20 84  20 a9 73 24 3e 39 0d 07  | c%<32 . .s$>9..|
00000ef0  9e 0d d9 23 46 25 3a 46  25 3d 30 0d 07 a8 07 3d  |...#F%:F%=0....=|
00000f00  73 24 0d 07 b2 05 3a 0d  07 bc 0b f4 2d 2d 2d 2d  |s$....:.....----|
00000f10  2d 2d 0d 07 c6 0b f4 2e  20 53 41 56 45 0d 07 d0  |--...... SAVE...|
00000f20  0b f4 2d 2d 2d 2d 2d 2d  0d 07 da 05 3a 0d 07 e4  |..------....:...|
00000f30  10 dd f2 73 61 76 65 28  66 73 70 24 29 0d 07 ee  |...save(fsp$)...|
00000f40  19 f4 20 53 61 76 65 20  62 75 74 74 6f 6e 20 63  |.. Save button c|
00000f50  6c 69 63 6b 65 64 0d 07  f8 14 ea 20 4a 25 2c 4b  |licked..... J%,K|
00000f60  25 2c 6e 25 2c 63 24 2c  63 25 0d 08 02 19 e7 20  |%,n%,c$,c%..... |
00000f70  62 61 72 73 25 3d 30 20  84 20 66 73 70 24 3d 22  |bars%=0 . fsp$="|
00000f80  22 20 8c 0d 08 0c 0a 20  f2 62 75 7a 7a 0d 08 16  |" ..... .buzz...|
00000f90  05 cc 0d 08 20 13 20 e3  20 4a 25 3d 31 20 b8 20  |.... . . J%=1 . |
00000fa0  62 61 72 73 25 0d 08 2a  18 20 20 62 61 72 24 3d  |bars%..*.  bar$=|
00000fb0  24 62 61 72 6e 61 6d 65  25 28 4a 25 29 0d 08 34  |$barname%(J%)..4|
00000fc0  19 20 20 46 25 3d ad 28  66 73 70 24 2b 22 2e 22  |.  F%=.(fsp$+"."|
00000fd0  2b 62 61 72 24 29 0d 08  3e 16 20 20 f4 20 70 6f  |+bar$)..>.  . po|
00000fe0  6b 65 20 61 6c 6c 20 7a  65 72 6f 73 0d 08 48 22  |ke all zeros..H"|
00000ff0  20 20 cf 23 46 25 3d 33  32 3a e3 20 4b 25 3d 30  |  .#F%=32:. K%=0|
00001000  20 b8 20 31 35 3a d5 23  46 25 2c 30 3a ed 0d 08  | . 15:.#F%,0:...|
00001010  52 07 20 20 3a 0d 08 5c  0d 20 20 cf 23 46 25 3d  |R.  :..\.  .#F%=|
00001020  33 32 0d 08 66 28 20 20  61 63 74 69 76 65 25 3d  |32..f(  active%=|
00001030  a4 69 73 28 70 61 6e 65  25 2c 6d 61 78 62 61 72  |.is(pane%,maxbar|
00001040  73 25 2a 33 2b 4a 25 2d  31 29 0d 08 70 2e 20 20  |s%*3+J%-1)..p.  |
00001050  e7 20 61 63 74 69 76 65  25 20 8c 20 61 63 74 69  |. active% . acti|
00001060  76 65 25 3d b3 28 32 35  34 29 2b 31 20 8b 20 61  |ve%=.(254)+1 . a|
00001070  63 74 69 76 65 25 3d 30  0d 08 7a 12 20 20 d5 23  |ctive%=0..z.  .#|
00001080  46 25 2c 61 63 74 69 76  65 25 0d 08 84 07 20 20  |F%,active%....  |
00001090  3a 0d 08 8e 1e 20 20 70  61 73 73 77 6f 72 64 24  |:....  password$|
000010a0  3d 24 70 61 73 73 77 6f  72 64 25 28 4a 25 29 0d  |=$password%(J%).|
000010b0  08 98 34 20 20 e7 20 70  61 73 73 77 6f 72 64 24  |..4  . password$|
000010c0  3c 3e 22 22 20 8c 20 66  61 63 74 6f 72 25 3d 35  |<>"" . factor%=5|
000010d0  38 2b b3 28 37 35 29 20  8b 20 66 61 63 74 6f 72  |8+.(75) . factor|
000010e0  25 3d 30 0d 08 a2 12 20  20 d5 23 46 25 2c 66 61  |%=0....  .#F%,fa|
000010f0  63 74 6f 72 25 0d 08 ac  07 20 20 3a 0d 08 b6 17  |ctor%....  :....|
00001100  20 20 e7 20 70 61 73 73  77 6f 72 64 24 3c 3e 22  |  . password$<>"|
00001110  22 20 8c 0d 08 c0 1c 20  20 20 e3 20 4b 25 3d 31  |" .....   . K%=1|
00001120  20 b8 20 a9 28 70 61 73  73 77 6f 72 64 24 29 0d  | . .(password$).|
00001130  08 ca 1b 20 20 20 20 63  24 3d c1 70 61 73 73 77  |...    c$=.passw|
00001140  6f 72 64 24 2c 4b 25 2c  31 29 0d 08 d4 16 20 20  |ord$,K%,1)....  |
00001150  20 20 63 25 3d 97 63 24  2b 66 61 63 74 6f 72 25  |  c%=.c$+factor%|
00001160  0d 08 de 0f 20 20 20 20  d5 23 46 25 2c 63 25 0d  |....    .#F%,c%.|
00001170  08 e8 09 20 20 20 ed 20  0d 08 f2 07 20 20 cd 0d  |...   . ....  ..|
00001180  08 fc 0f 20 20 d9 23 46  25 3a 46 25 3d 30 0d 09  |...  .#F%:F%=0..|
00001190  06 06 20 ed 0d 09 10 0a  20 f2 62 65 65 70 0d 09  |.. ..... .beep..|
000011a0  1a 05 cd 0d 09 24 05 e1  0d 09 2e 05 3a 0d 09 38  |.....$......:..8|
000011b0  0c f4 2d 2d 2d 2d 2d 2d  2d 0d 09 42 0c f4 2e 20  |..-------..B... |
000011c0  4d 4f 55 53 45 0d 09 4c  0c f4 2d 2d 2d 2d 2d 2d  |MOUSE..L..------|
000011d0  2d 0d 09 56 05 3a 0d 09  60 0f dd f2 6d 6f 75 73  |-..V.:..`...mous|
000011e0  65 28 71 25 29 0d 09 6a  19 ea 20 6d 78 25 2c 6d  |e(q%)..j.. mx%,m|
000011f0  79 25 2c 6d 62 25 2c 77  68 25 2c 69 68 25 0d 09  |y%,mb%,wh%,ih%..|
00001200  74 32 6d 78 25 3d 71 25  21 30 3a 6d 79 25 3d 71  |t2mx%=q%!0:my%=q|
00001210  25 21 34 3a 6d 62 25 3d  71 25 21 38 3a 77 68 25  |%!4:mb%=q%!8:wh%|
00001220  3d 71 25 21 31 32 3a 69  68 25 3d 71 25 21 31 36  |=q%!12:ih%=q%!16|
00001230  0d 09 7e 0c c8 8e 20 77  68 25 20 ca 0d 09 88 09  |..~... wh% .....|
00001240  20 c9 20 2d 32 0d 09 92  0d 20 c8 8e 20 6d 62 25  | . -2.... .. mb%|
00001250  20 ca 0d 09 9c 20 20 20  c9 20 32 3a f2 6d 65 6e  | ....   . 2:.men|
00001260  75 28 77 68 25 2c 69 68  25 2c 6d 78 25 2c 6d 79  |u(wh%,ih%,mx%,my|
00001270  25 29 0d 09 a6 12 20 20  7f 3a f2 6f 77 28 6d 61  |%)....  .:.ow(ma|
00001280  69 6e 25 29 0d 09 b0 06  20 cb 0d 09 ba 06 20 3a  |in%).... ..... :|
00001290  0d 09 c4 0c 20 c9 20 70  61 6e 65 25 0d 09 ce 0d  |.... . pane%....|
000012a0  20 c8 8e 20 6d 62 25 20  ca 0d 09 d8 26 20 20 e7  | .. mb% ....&  .|
000012b0  20 6d 62 25 3d 32 20 8c  20 f2 6d 65 6e 75 28 77  | mb%=2 . .menu(w|
000012c0  68 25 2c 69 68 25 2c 6d  78 25 2c 6d 79 25 29 0d  |h%,ih%,mx%,my%).|
000012d0  09 e2 06 20 cb 0d 09 ec  06 20 3a 0d 09 f6 0c 20  |... ..... :.... |
000012e0  c9 20 6d 61 69 6e 25 0d  0a 00 0d 20 c8 8e 20 6d  |. main%.... .. m|
000012f0  62 25 20 ca 0d 0a 0a 20  20 20 c9 20 32 3a f2 6d  |b% ....   . 2:.m|
00001300  65 6e 75 28 77 68 25 2c  69 68 25 2c 6d 78 25 2c  |enu(wh%,ih%,mx%,|
00001310  6d 79 25 29 0d 0a 14 0c  20 20 c9 20 31 2c 34 3a  |my%)....  . 1,4:|
00001320  0d 0a 1e 0e 20 20 c8 8e  20 69 68 25 20 ca 0d 0a  |....  .. ih% ...|
00001330  28 1b 20 20 20 c9 20 33  3a f2 63 61 6e 63 65 6c  |(.   . 3:.cancel|
00001340  28 77 68 25 2c 6d 62 25  29 0d 0a 32 1a 20 20 20  |(wh%,mb%)..2.   |
00001350  c9 20 34 3a f2 73 61 76  65 28 64 61 74 61 64 69  |. 4:.save(datadi|
00001360  72 24 29 0d 0a 3c 07 20  20 cb 0d 0a 46 06 20 cb  |r$)..<.  ...F. .|
00001370  0d 0a 50 05 cb 0d 0a 5a  05 e1 0d 0a 64 05 3a 0d  |..P....Z....d.:.|
00001380  0a 6e 15 dd f2 63 61 6e  63 65 6c 28 77 68 25 2c  |.n...cancel(wh%,|
00001390  6d 62 25 29 0d 0a 78 14  f4 20 72 65 73 74 6f 72  |mb%)..x.. restor|
000013a0  65 20 76 61 6c 75 65 73  0d 0a 82 08 ea 20 4a 25  |e values..... J%|
000013b0  0d 0a 8c 0f e7 20 62 61  72 73 25 3e 30 20 8c 0d  |..... bars%>0 ..|
000013c0  0a 96 13 20 e3 20 4a 25  3d 31 20 b8 20 62 61 72  |... . J%=1 . bar|
000013d0  73 25 0d 0a a0 23 20 20  24 62 61 72 6e 61 6d 65  |s%...#  $barname|
000013e0  25 28 4a 25 29 3d 72 65  6d 62 61 72 6e 61 6d 65  |%(J%)=rembarname|
000013f0  24 28 4a 25 29 0d 0a aa  25 20 20 24 70 61 73 73  |$(J%)...%  $pass|
00001400  77 6f 72 64 25 28 4a 25  29 3d 72 65 6d 70 61 73  |word%(J%)=rempas|
00001410  73 77 6f 72 64 24 28 4a  25 29 0d 0a b4 18 20 20  |sword$(J%)....  |
00001420  e7 20 72 65 6d 61 63 74  69 76 65 25 28 4a 25 29  |. remactive%(J%)|
00001430  20 8c 0d 0a be 21 20 20  20 f2 73 69 28 70 61 6e  | ....!   .si(pan|
00001440  65 25 2c 6d 61 78 62 61  72 73 25 2a 33 2b 4a 25  |e%,maxbars%*3+J%|
00001450  2d 31 29 0d 0a c8 07 20  20 cc 0d 0a d2 21 20 20  |-1)....  ....!  |
00001460  20 f2 75 69 28 70 61 6e  65 25 2c 6d 61 78 62 61  | .ui(pane%,maxba|
00001470  72 73 25 2a 33 2b 4a 25  2d 31 29 0d 0a dc 07 20  |rs%*3+J%-1).... |
00001480  20 cd 0d 0a e6 06 20 ed  0d 0a f0 0e 20 e7 20 6d  | ..... ..... . m|
00001490  62 25 3d 31 20 8c 0d 0a  fa 12 20 20 f2 68 6f 6d  |b%=1 .....  .hom|
000014a0  65 28 70 61 6e 65 25 29  0d 0b 04 13 20 20 f2 66  |e(pane%)....  .f|
000014b0  6f 72 63 65 28 70 61 6e  65 25 29 0d 0b 0e 06 20  |orce(pane%).... |
000014c0  cc 0d 0b 18 10 20 20 f2  63 77 28 6d 61 69 6e 25  |.....  .cw(main%|
000014d0  29 0d 0b 22 06 20 cd 0d  0b 2c 0a 20 f2 62 65 65  |)..". ...,. .bee|
000014e0  70 0d 0b 36 05 cc 0d 0b  40 1a 20 e7 20 6d 62 25  |p..6....@. . mb%|
000014f0  3c 3e 31 20 8c 20 f2 63  77 28 6d 61 69 6e 25 29  |<>1 . .cw(main%)|
00001500  0d 0b 4a 05 cd 0d 0b 54  05 e1 0d 0b 5e 05 3a 0d  |..J....T....^.:.|
00001510  0b 68 0b f4 2d 2d 2d 2d  2d 2d 0d 0b 72 0b f4 2e  |.h..------..r...|
00001520  20 4b 45 59 53 0d 0b 7c  0b f4 2d 2d 2d 2d 2d 2d  | KEYS..|..------|
00001530  0d 0b 86 05 3a 0d 0b 90  12 dd f2 6b 65 79 70 72  |....:......keypr|
00001540  65 73 73 28 71 25 29 0d  0b 9a 10 ea 20 77 68 25  |ess(q%)..... wh%|
00001550  2c 69 68 25 2c 63 25 0d  0b a4 1e 77 68 25 3d 71  |,ih%,c%....wh%=q|
00001560  25 21 30 3a 69 68 25 3d  71 25 21 34 3a 63 25 3d  |%!0:ih%=q%!4:c%=|
00001570  71 25 21 32 34 0d 0b ae  0b c8 8e 20 63 25 20 ca  |q%!24...... c% .|
00001580  0d 0b b8 1b 20 c9 20 20  31 33 3a f2 72 65 74 75  |.... .  13:.retu|
00001590  72 6e 28 77 68 25 2c 69  68 25 29 0d 0b c2 15 20  |rn(wh%,ih%).... |
000015a0  c9 20 20 33 30 3a f2 68  6f 6d 65 28 77 68 25 29  |.  30:.home(wh%)|
000015b0  0d 0b cc 15 20 c9 20 33  38 38 3a f2 74 65 73 74  |.... . 388:.test|
000015c0  3a f4 20 46 34 0d 0b d6  19 20 c9 20 33 39 38 3a  |:. F4.... . 398:|
000015d0  f2 64 6f 77 6e 28 77 68  25 2c 69 68 25 29 0d 0b  |.down(wh%,ih%)..|
000015e0  e0 17 20 c9 20 33 39 39  3a f2 75 70 28 77 68 25  |.. . 399:.up(wh%|
000015f0  2c 69 68 25 29 0d 0b ea  05 cb 0d 0b f4 05 e1 0d  |,ih%)...........|
00001600  0b fe 05 3a 0d 0c 08 0f  dd f2 68 6f 6d 65 28 77  |...:......home(w|
00001610  68 25 29 0d 0c 12 11 e7  20 77 68 25 3d 70 61 6e  |h%)..... wh%=pan|
00001620  65 25 20 8c 0d 0c 1c 29  20 21 71 25 3d 77 68 25  |e% ....) !q%=wh%|
00001630  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 57 69 6e  |:.. "Wimp_GetWin|
00001640  64 6f 77 53 74 61 74 65  22 2c 2c 71 25 0d 0c 26  |dowState",,q%..&|
00001650  2d 20 71 25 21 32 30 3d  30 3a 71 25 21 32 34 3d  |- q%!20=0:q%!24=|
00001660  30 3a c8 99 20 22 57 69  6d 70 5f 4f 70 65 6e 57  |0:.. "Wimp_OpenW|
00001670  69 6e 64 6f 77 22 2c 2c  71 25 0d 0c 30 1b 20 f2  |indow",,q%..0. .|
00001680  63 61 72 65 74 28 77 68  25 2c 6d 61 78 62 61 72  |caret(wh%,maxbar|
00001690  73 25 2a 32 29 0d 0c 3a  05 cd 0d 0c 44 05 e1 0d  |s%*2)..:....D...|
000016a0  0c 4e 05 3a 0d 0c 58 15  dd f2 72 65 74 75 72 6e  |.N.:..X...return|
000016b0  28 77 68 25 2c 69 68 25  29 0d 0c 62 0a 72 65 74  |(wh%,ih%)..b.ret|
000016c0  25 3d b9 0d 0c 6c 24 e7  20 77 68 25 3d 70 61 6e  |%=...l$. wh%=pan|
000016d0  65 25 20 80 20 69 68 25  3c 6d 61 78 62 61 72 73  |e% . ih%<maxbars|
000016e0  25 2a 33 2d 31 20 8c 0d  0c 76 19 20 f2 73 63 72  |%*3-1 ...v. .scr|
000016f0  6f 6c 6c 28 77 68 25 2c  69 68 25 2c 30 2c 34 29  |oll(wh%,ih%,0,4)|
00001700  0d 0c 80 16 20 f2 63 61  72 65 74 28 77 68 25 2c  |.... .caret(wh%,|
00001710  69 68 25 2b 31 29 0d 0c  8a 05 cd 0d 0c 94 05 e1  |ih%+1)..........|
00001720  0d 0c 9e 05 3a 0d 0c a8  13 dd f2 64 6f 77 6e 28  |....:......down(|
00001730  77 68 25 2c 69 68 25 29  0d 0c b2 24 e7 20 77 68  |wh%,ih%)...$. wh|
00001740  25 3d 70 61 6e 65 25 20  80 20 69 68 25 3c 6d 61  |%=pane% . ih%<ma|
00001750  78 62 61 72 73 25 2a 33  2d 31 20 8c 0d 0c bc 19  |xbars%*3-1 .....|
00001760  20 f2 73 63 72 6f 6c 6c  28 77 68 25 2c 69 68 25  | .scroll(wh%,ih%|
00001770  2c 30 2c 34 29 0d 0c c6  16 20 f2 63 61 72 65 74  |,0,4).... .caret|
00001780  28 77 68 25 2c 69 68 25  2b 31 29 0d 0c d0 05 cd  |(wh%,ih%+1).....|
00001790  0d 0c da 05 e1 0d 0c e4  05 3a 0d 0c ee 11 dd f2  |.........:......|
000017a0  75 70 28 77 68 25 2c 69  68 25 29 0d 0c f8 22 e7  |up(wh%,ih%)...".|
000017b0  20 77 68 25 3d 70 61 6e  65 25 20 80 20 69 68 25  | wh%=pane% . ih%|
000017c0  3e 6d 61 78 62 61 72 73  25 2a 32 20 8c 0d 0d 02  |>maxbars%*2 ....|
000017d0  19 20 f2 73 63 72 6f 6c  6c 28 77 68 25 2c 69 68  |. .scroll(wh%,ih|
000017e0  25 2c 31 2c 34 29 0d 0d  0c 16 20 f2 63 61 72 65  |%,1,4).... .care|
000017f0  74 28 77 68 25 2c 69 68  25 2d 31 29 0d 0d 16 05  |t(wh%,ih%-1)....|
00001800  cd 0d 0d 20 05 e1 0d 0d  2a 05 3a 0d 0d 34 1f dd  |... ....*.:..4..|
00001810  f2 73 63 72 6f 6c 6c 28  77 68 25 2c 69 68 25 2c  |.scroll(wh%,ih%,|
00001820  77 61 79 25 2c 67 61 70  25 29 0d 0d 3e 18 f4 20  |way%,gap%)..>.. |
00001830  77 61 79 25 3a 20 30 3d  64 6f 77 6e 2c 20 31 3d  |way%: 0=down, 1=|
00001840  75 70 0d 0d 48 16 ea 20  77 25 2c 69 25 2c 6e 25  |up..H.. w%,i%,n%|
00001850  2c 73 25 3a 73 25 3d a3  0d 0d 52 21 f4 20 67 65  |,s%:s%=...R!. ge|
00001860  74 20 77 69 6e 64 6f 77  20 65 64 67 65 20 28 77  |t window edge (w|
00001870  61 20 63 6f 6f 72 64 73  29 0d 0d 5c 29 71 25 21  |a coords)..\)q%!|
00001880  30 3d 77 68 25 3a c8 99  20 22 57 69 6d 70 5f 47  |0=wh%:.. "Wimp_G|
00001890  65 74 57 69 6e 64 6f 77  53 74 61 74 65 22 2c 2c  |etWindowState",,|
000018a0  71 25 0d 0d 66 2f e7 20  77 61 79 25 3d 30 20 8c  |q%..f/. way%=0 .|
000018b0  20 77 25 3d 71 25 21 32  34 2d 28 71 25 21 31 36  | w%=q%!24-(q%!16|
000018c0  2d 71 25 21 38 29 20 8b  20 77 25 3d 71 25 21 32  |-q%!8) . w%=q%!2|
000018d0  34 0d 0d 70 1f f4 20 67  65 74 20 69 63 6f 6e 20  |4..p.. get icon |
000018e0  65 64 67 65 20 28 77 61  20 63 6f 6f 72 64 73 29  |edge (wa coords)|
000018f0  0d 0d 7a 26 e7 20 77 61  79 25 3d 30 20 8c 20 71  |..z&. way%=0 . q|
00001900  25 21 34 3d 69 68 25 2b  31 20 8b 20 71 25 21 34  |%!4=ih%+1 . q%!4|
00001910  3d 69 68 25 2d 31 0d 0d  84 27 71 25 21 30 3d 77  |=ih%-1...'q%!0=w|
00001920  68 25 3a c8 99 20 22 57  69 6d 70 5f 47 65 74 49  |h%:.. "Wimp_GetI|
00001930  63 6f 6e 53 74 61 74 65  22 2c 2c 71 25 0d 0d 8e  |conState",,q%...|
00001940  0d c8 8e 20 77 61 79 25  20 ca 0d 0d 98 20 20 c9  |... way% ....  .|
00001950  20 30 3a 69 25 3d 71 25  21 31 32 3a e7 20 69 25  | 0:i%=q%!12:. i%|
00001960  3c 77 25 20 8c 20 73 25  3d b9 0d 0d a2 20 20 c9  |<w% . s%=....  .|
00001970  20 31 3a 69 25 3d 71 25  21 32 30 3a e7 20 69 25  | 1:i%=q%!20:. i%|
00001980  3e 77 25 20 8c 20 73 25  3d b9 0d 0d ac 05 cb 0d  |>w% . s%=.......|
00001990  0d b6 0a e7 20 73 25 20  8c 0d 0d c0 0e 20 c8 8e  |.... s% ..... ..|
000019a0  20 77 61 79 25 20 ca 0d  0d ca 1d 20 20 c9 20 30  | way% .....  . 0|
000019b0  3a 6e 25 3d 94 28 69 25  29 2d 94 28 77 25 29 2b  |:n%=.(i%)-.(w%)+|
000019c0  67 61 70 25 0d 0d d4 1d  20 20 c9 20 31 3a 6e 25  |gap%....  . 1:n%|
000019d0  3d 94 28 77 25 29 2d 94  28 69 25 29 2b 67 61 70  |=.(w%)-.(i%)+gap|
000019e0  25 0d 0d de 06 20 cb 0d  0d e8 29 20 21 71 25 3d  |%.... ....) !q%=|
000019f0  77 68 25 3a c8 99 20 22  57 69 6d 70 5f 47 65 74  |wh%:.. "Wimp_Get|
00001a00  57 69 6e 64 6f 77 53 74  61 74 65 22 2c 2c 71 25  |WindowState",,q%|
00001a10  0d 0d f2 25 20 e7 20 77  61 79 25 3d 30 20 8c 20  |...% . way%=0 . |
00001a20  71 25 21 32 34 2d 3d 6e  25 20 8b 20 71 25 21 32  |q%!24-=n% . q%!2|
00001a30  34 2b 3d 6e 25 0d 0d fc  1d 20 c8 99 20 22 57 69  |4+=n%.... .. "Wi|
00001a40  6d 70 5f 4f 70 65 6e 57  69 6e 64 6f 77 22 2c 2c  |mp_OpenWindow",,|
00001a50  71 25 0d 0e 06 05 cd 0d  0e 10 05 e1 0d 0e 1a 05  |q%..............|
00001a60  3a 0d 0e 24 14 dd f2 63  61 72 65 74 28 77 68 25  |:..$...caret(wh%|
00001a70  2c 69 68 25 29 0d 0e 2e  18 ea 20 73 24 3a 73 24  |,ih%)..... s$:s$|
00001a80  3d a4 69 74 28 77 68 25  2c 69 68 25 29 0d 0e 38  |=.it(wh%,ih%)..8|
00001a90  2f c8 99 20 22 57 69 6d  70 5f 53 65 74 43 61 72  |/.. "Wimp_SetCar|
00001aa0  65 74 50 6f 73 69 74 69  6f 6e 22 2c 77 68 25 2c  |etPosition",wh%,|
00001ab0  69 68 25 2c 2c 2c 2d 31  2c a9 73 24 0d 0e 42 05  |ih%,,,-1,.s$..B.|
00001ac0  e1 0d 0e 4c 05 3a 0d 0e  56 0a dd f2 74 65 73 74  |...L.:..V...test|
00001ad0  0d 0e 60 05 e1 0d 0e 6a  05 3a 0d 0e 74 0b f4 2d  |..`....j.:..t..-|
00001ae0  2d 2d 2d 2d 2d 0d 0e 7e  0b f4 2e 20 4d 45 4e 55  |-----..~... MENU|
00001af0  0d 0e 88 0b f4 2d 2d 2d  2d 2d 2d 0d 0e 92 05 3a  |.....------....:|
00001b00  0d 0e 9c 1b dd f2 6d 65  6e 75 28 77 68 25 2c 69  |......menu(wh%,i|
00001b10  68 25 2c 6d 78 25 2c 6d  79 25 29 0d 0e a6 1b f4  |h%,mx%,my%).....|
00001b20  20 6d 69 64 64 6c 65 20  62 75 74 74 6f 6e 20 63  | middle button c|
00001b30  6c 69 63 6b 65 64 0d 0e  b0 0c c8 8e 20 77 68 25  |licked...... wh%|
00001b40  20 ca 0d 0e ba 39 20 c9  20 6d 61 69 6e 25 2c 70  | ....9 . main%,p|
00001b50  61 6e 65 25 3a e7 20 62  61 72 73 25 3e 30 20 8c  |ane%:. bars%>0 .|
00001b60  20 f2 6d 61 69 6e 6d 65  6e 75 28 77 68 25 2c 69  | .mainmenu(wh%,i|
00001b70  68 25 2c 6d 78 25 2c 6d  79 25 29 0d 0e c4 1f 20  |h%,mx%,my%).... |
00001b80  c9 20 2d 32 3a f2 62 61  72 6d 65 6e 75 28 77 68  |. -2:.barmenu(wh|
00001b90  25 2c 6d 78 25 2c 6d 79  25 29 0d 0e ce 05 cb 0d  |%,mx%,my%)......|
00001ba0  0e d8 05 e1 0d 0e e2 05  3a 0d 0e ec 1a dd f2 62  |........:......b|
00001bb0  61 72 6d 65 6e 75 28 77  68 25 2c 6d 78 25 2c 6d  |armenu(wh%,mx%,m|
00001bc0  79 25 29 0d 0e f6 39 ea  20 66 25 2c 62 25 2c 67  |y%)...9. f%,b%,g|
00001bd0  25 3a 62 25 3d 26 37 30  30 30 30 32 31 3a 67 25  |%:b%=&7000021:g%|
00001be0  3d 26 37 34 30 30 30 32  31 3a f4 20 66 6c 61 67  |=&7400021:. flag|
00001bf0  73 3d 62 6c 61 63 6b 2c  67 72 65 79 0d 0f 00 27  |s=black,grey...'|
00001c00  72 65 6d 77 68 25 3d 77  68 25 3a 72 65 6d 78 25  |remwh%=wh%:remx%|
00001c10  3d 6d 78 25 3a 72 65 6d  79 25 3d 6d 79 25 3a 69  |=mx%:remy%=my%:i|
00001c20  25 3d 30 0d 0f 0a 2f 61  25 3d 6d 62 31 25 3a 21  |%=0.../a%=mb1%:!|
00001c30  61 25 3d 62 61 72 69 63  6f 6e 25 3a 70 25 3d 61  |a%=baricon%:p%=a|
00001c40  25 2b 33 32 3a 24 28 61  25 2b 34 29 3d 74 61 73  |%+32:$(a%+4)=tas|
00001c50  6b 24 0d 0f 14 2b 61 25  21 31 36 3d 26 37 30 32  |k$...+a%!16=&702|
00001c60  30 37 3a 61 25 21 32 30  3d 31 32 38 3a 61 25 21  |07:a%!20=128:a%!|
00001c70  32 34 3d 34 34 3a 61 25  21 32 38 3d 30 0d 0f 1e  |24=44:a%!28=0...|
00001c80  40 73 24 3d 22 49 6e 66  6f 22 3a 70 25 21 30 3d  |@s$="Info":p%!0=|
00001c90  30 3a 70 25 21 34 3d 69  6e 66 6f 25 3a 70 25 21  |0:p%!4=info%:p%!|
00001ca0  38 3d 62 25 3a 24 28 70  25 2b 31 32 29 3d 73 24  |8=b%:$(p%+12)=s$|
00001cb0  3a 70 25 2b 3d 32 34 3a  69 25 2b 3d 31 0d 0f 28  |:p%+=24:i%+=1..(|
00001cc0  37 73 24 3d 22 51 75 69  74 22 3a 70 25 21 30 3d  |7s$="Quit":p%!0=|
00001cd0  26 38 30 3a 70 25 21 34  3d 30 3a 70 25 21 38 3d  |&80:p%!4=0:p%!8=|
00001ce0  62 25 3a 24 28 70 25 2b  31 32 29 3d 73 24 3a 69  |b%:$(p%+12)=s$:i|
00001cf0  25 2b 3d 31 0d 0f 32 30  c8 99 20 22 57 69 6d 70  |%+=1..20.. "Wimp|
00001d00  5f 43 72 65 61 74 65 4d  65 6e 75 22 2c 2c 6d 62  |_CreateMenu",,mb|
00001d10  31 25 2b 34 2c 6d 78 25  2d 36 34 2c 39 36 2b 69  |1%+4,mx%-64,96+i|
00001d20  25 2a 34 34 0d 0f 3c 05  e1 0d 0f 46 05 3a 0d 0f  |%*44..<....F.:..|
00001d30  50 1f dd f2 6d 61 69 6e  6d 65 6e 75 28 77 68 25  |P...mainmenu(wh%|
00001d40  2c 69 68 25 2c 6d 78 25  2c 6d 79 25 29 0d 0f 5a  |,ih%,mx%,my%)..Z|
00001d50  38 ea 20 66 25 2c 62 25  2c 67 25 2c 6d 24 2c 6e  |8. f%,b%,g%,m$,n|
00001d60  24 2c 6e 32 24 2c 6e 33  24 2c 70 61 74 68 24 2c  |$,n2$,n3$,path$,|
00001d70  6c 65 61 66 24 2c 77 31  25 2c 77 32 25 2c 77 69  |leaf$,w1%,w2%,wi|
00001d80  64 25 2c 74 25 0d 0f 64  22 72 65 6d 78 25 3d 6d  |d%,t%..d"remx%=m|
00001d90  78 25 3a 72 65 6d 79 25  3d 6d 79 25 3a 72 65 6d  |x%:remy%=my%:rem|
00001da0  77 68 25 3d 77 68 25 0d  0f 6e 21 62 25 3d 26 37  |wh%=wh%..n!b%=&7|
00001db0  30 30 30 30 32 31 3a 67  25 3d 26 37 34 30 30 30  |000021:g%=&74000|
00001dc0  32 31 3a 66 25 3d 62 25  0d 0f 78 05 3a 0d 0f 82  |21:f%=b%..x.:...|
00001dd0  1f 61 25 3d 6d 62 31 25  3a 70 25 3d 61 25 2b 32  |.a%=mb1%:p%=a%+2|
00001de0  38 3a 24 61 25 3d 22 4d  61 69 6e 22 0d 0f 8c 2c  |8:$a%="Main"...,|
00001df0  61 25 21 31 32 3d 26 37  30 32 30 37 3a 61 25 21  |a%!12=&70207:a%!|
00001e00  31 36 3d 35 2a 31 36 3a  61 25 21 32 30 3d 34 34  |16=5*16:a%!20=44|
00001e10  3a 61 25 21 32 34 3d 30  0d 0f 96 3c 73 24 3d 22  |:a%!24=0...<s$="|
00001e20  41 6c 6c 20 61 63 74 69  76 65 22 3a 70 25 21 30  |All active":p%!0|
00001e30  3d 30 3a 70 25 21 34 3d  30 3a 70 25 21 38 3d 66  |=0:p%!4=0:p%!8=f|
00001e40  25 3a 24 28 70 25 2b 31  32 29 3d 73 24 3a 70 25  |%:$(p%+12)=s$:p%|
00001e50  2b 3d 32 34 0d 0f a0 38  73 24 3d 22 4e 6f 6e 65  |+=24...8s$="None|
00001e60  20 61 63 74 69 76 65 22  3a 70 25 21 30 3d 26 38  | active":p%!0=&8|
00001e70  30 3a 70 25 21 34 3d 30  3a 70 25 21 38 3d 66 25  |0:p%!4=0:p%!8=f%|
00001e80  3a 24 28 70 25 2b 31 32  29 3d 73 24 0d 0f aa 05  |:$(p%+12)=s$....|
00001e90  3a 0d 0f b4 29 c8 99 20  22 57 69 6d 70 5f 43 72  |:...).. "Wimp_Cr|
00001ea0  65 61 74 65 4d 65 6e 75  22 2c 2c 6d 62 31 25 2c  |eateMenu",,mb1%,|
00001eb0  6d 78 25 2d 36 34 2c 6d  79 25 0d 0f be 05 e1 0d  |mx%-64,my%......|
00001ec0  0f c8 05 3a 0d 0f d2 14  dd f2 6d 65 6e 75 73 65  |...:......menuse|
00001ed0  6c 65 63 74 28 71 25 29  0d 0f dc 0f c8 8e 20 72  |lect(q%)...... r|
00001ee0  65 6d 77 68 25 20 ca 0d  0f e6 22 20 c9 20 6d 61  |emwh% ...." . ma|
00001ef0  69 6e 25 2c 70 61 6e 65  25 3a f2 6d 61 69 6e 63  |in%,pane%:.mainc|
00001f00  68 6f 69 63 65 28 71 25  29 0d 0f f0 19 20 7f 3a  |hoice(q%).... .:|
00001f10  e7 20 71 25 21 30 3d 31  20 8c 20 71 75 69 74 25  |. q%!0=1 . quit%|
00001f20  3d b9 0d 0f fa 05 cb 0d  10 04 05 e1 0d 10 0e 05  |=...............|
00001f30  3a 0d 10 18 14 dd f2 6d  61 69 6e 63 68 6f 69 63  |:......mainchoic|
00001f40  65 28 71 25 29 0d 10 22  25 f4 20 63 6c 69 63 6b  |e(q%).."%. click|
00001f50  20 6f 6e 20 6d 65 6e 75  20 66 72 6f 6d 20 70 6f  | on menu from po|
00001f60  6c 6c 69 6e 67 20 6c 6f  6f 70 0d 10 2c 10 ea 20  |lling loop..,.. |
00001f70  6e 25 3a 6e 25 3d 71 25  21 30 0d 10 36 35 c8 99  |n%:n%=q%!0..65..|
00001f80  20 22 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  | "Wimp_GetPointe|
00001f90  72 49 6e 66 6f 22 2c 2c  71 25 3a 6d 62 25 3d 71  |rInfo",,q%:mb%=q|
00001fa0  25 21 38 3a 73 74 61 79  25 3d 6d 62 25 3d 31 0d  |%!8:stay%=mb%=1.|
00001fb0  10 40 0b c8 8e 20 6e 25  20 ca 0d 10 4a 34 20 c9  |.@... n% ...J4 .|
00001fc0  20 30 3a e3 20 4a 25 3d  31 20 b8 20 62 61 72 73  | 0:. J%=1 . bars|
00001fd0  25 3a f2 73 69 28 70 61  6e 65 25 2c 6d 61 78 62  |%:.si(pane%,maxb|
00001fe0  61 72 73 25 2a 33 2b 4a  25 2d 31 29 3a ed 0d 10  |ars%*3+J%-1):...|
00001ff0  54 34 20 c9 20 31 3a e3  20 4a 25 3d 31 20 b8 20  |T4 . 1:. J%=1 . |
00002000  62 61 72 73 25 3a f2 75  69 28 70 61 6e 65 25 2c  |bars%:.ui(pane%,|
00002010  6d 61 78 62 61 72 73 25  2a 33 2b 4a 25 2d 31 29  |maxbars%*3+J%-1)|
00002020  3a ed 0d 10 5e 05 cb 0d  10 68 2b e7 20 73 74 61  |:...^....h+. sta|
00002030  79 25 20 8c 20 f2 6d 61  69 6e 6d 65 6e 75 28 72  |y% . .mainmenu(r|
00002040  65 6d 78 25 2c 72 65 6d  79 25 2c 72 65 6d 77 68  |emx%,remy%,remwh|
00002050  25 29 0d 10 72 05 e1 0d  10 7c 05 3a 0d 10 86 0b  |%)..r....|.:....|
00002060  f4 2d 2d 2d 2d 2d 2d 0d  10 90 0b f4 2e 20 4d 49  |.------...... MI|
00002070  53 43 0d 10 9a 0b f4 2d  2d 2d 2d 2d 2d 0d 10 a4  |SC.....------...|
00002080  05 3a 0d 10 ae 0f dd a4  74 68 28 74 61 73 6b 24  |.:......th(task$|
00002090  29 0d 10 b8 28 f4 20 6c  6f 6f 6b 20 66 6f 72 20  |)...(. look for |
000020a0  74 61 73 6b 20 68 61 6e  64 6c 65 20 6f 66 20 6e  |task handle of n|
000020b0  61 6d 65 64 20 74 61 73  6b 0d 10 c2 26 f4 20 69  |amed task...&. i|
000020c0  66 20 74 61 73 6b 20 6e  6f 74 20 6c 6f 61 64 65  |f task not loade|
000020d0  64 2c 20 72 65 74 75 72  6e 73 20 7a 65 72 6f 0d  |d, returns zero.|
000020e0  10 cc 12 ea 20 61 25 2c  66 25 2c 74 24 2c 74 68  |.... a%,f%,t$,th|
000020f0  25 0d 10 d6 35 c8 99 20  22 54 61 73 6b 4d 61 6e  |%...5.. "TaskMan|
00002100  61 67 65 72 5f 45 6e 75  6d 65 72 61 74 65 54 61  |ager_EnumerateTa|
00002110  73 6b 73 22 2c 2c 71 25  2c 71 73 69 7a 65 25 20  |sks",,q%,qsize% |
00002120  b8 20 2c 72 31 25 0d 10  e0 09 61 25 3d 71 25 0d  |. ,r1%....a%=q%.|
00002130  10 ea 05 f5 0d 10 f4 0d  20 66 25 3d 61 25 21 31  |........ f%=a%!1|
00002140  32 0d 10 fe 2b 20 e7 20  28 66 25 20 80 20 31 29  |2...+ . (f% . 1)|
00002150  3d 30 20 8c 20 74 68 25  3d 61 25 21 30 3a 74 24  |=0 . th%=a%!0:t$|
00002160  3d a4 6e 61 6d 65 28 61  25 21 34 29 0d 11 08 0b  |=.name(a%!4)....|
00002170  20 61 25 2b 3d 31 36 0d  11 12 18 fd 20 61 25 3e  | a%+=16..... a%>|
00002180  3d 72 31 25 20 84 20 74  24 3d 74 61 73 6b 24 0d  |=r1% . t$=task$.|
00002190  11 1c 14 e7 20 74 24 3d  74 61 73 6b 24 20 8c 3d  |.... t$=task$ .=|
000021a0  74 68 25 0d 11 26 06 3d  30 0d 11 30 05 3a 0d 11  |th%..&.=0..0.:..|
000021b0  3a 10 dd a4 6e 61 6d 65  28 70 74 72 25 29 0d 11  |:...name(ptr%)..|
000021c0  44 0e ea 20 73 24 3a 73  24 3d 22 22 0d 11 4e 24  |D.. s$:s$=""..N$|
000021d0  c8 95 20 3f 70 74 72 25  3c 3e 30 3a 73 24 2b 3d  |.. ?ptr%<>0:s$+=|
000021e0  bd 3f 70 74 72 25 3a 70  74 72 25 2b 3d 31 3a ce  |.?ptr%:ptr%+=1:.|
000021f0  0d 11 58 07 3d 73 24 0d  11 62 05 3a 0d 11 6c 14  |..X.=s$..b.:..l.|
00002200  dd a4 6f 62 6a 74 79 70  65 28 70 61 74 68 24 29  |..objtype(path$)|
00002210  0d 11 76 0b ea 20 74 79  70 65 25 0d 11 80 20 f4  |..v.. type%... .|
00002220  20 30 3d 4e 6f 74 20 66  6f 75 6e 64 2c 20 31 2d  | 0=Not found, 1-|
00002230  46 69 6c 65 2c 20 32 3d  44 69 72 0d 11 8a 21 c8  |File, 2=Dir...!.|
00002240  99 20 22 58 4f 53 5f 46  69 6c 65 22 2c 35 2c 70  |. "XOS_File",5,p|
00002250  61 74 68 24 20 b8 20 74  79 70 65 25 0d 11 94 0a  |ath$ . type%....|
00002260  3d 74 79 70 65 25 0d 11  9e 05 3a 0d 11 a8 13 dd  |=type%....:.....|
00002270  a4 6f 73 76 61 72 28 6f  73 76 61 72 24 29 0d 11  |.osvar(osvar$)..|
00002280  b2 0a ea 20 6c 65 6e 25  0d 11 bc 25 f4 20 49 66  |... len%...%. If|
00002290  20 6e 6f 74 20 66 6f 75  6e 64 20 64 6f 6e 27 74  | not found don't|
000022a0  20 72 65 70 6f 72 74 20  65 72 72 6f 72 0d 11 c6  | report error...|
000022b0  31 c8 99 20 22 58 4f 53  5f 52 65 61 64 56 61 72  |1.. "XOS_ReadVar|
000022c0  56 61 6c 22 2c 6f 73 76  61 72 24 2c 71 25 2c 32  |Val",osvar$,q%,2|
000022d0  30 30 2c 30 2c 33 20 b8  2c 2c 6c 65 6e 25 0d 11  |00,0,3 .,,len%..|
000022e0  d0 11 3f 28 71 25 2b 6c  65 6e 25 29 3d 26 44 0d  |..?(q%+len%)=&D.|
000022f0  11 da 08 3d 24 71 25 0d  11 e4 05 3a 0d 11 ee 1a  |...=$q%....:....|
00002300  dd f2 62 65 65 70 3a d4  20 31 2c 2d 31 30 2c 32  |..beep:. 1,-10,2|
00002310  30 30 2c 31 3a e1 0d 11  f8 19 dd f2 62 75 7a 7a  |00,1:.......buzz|
00002320  3a d4 20 31 2c 2d 31 35  2c 35 30 2c 34 3a e1 0d  |:. 1,-15,50,4:..|
00002330  12 02 05 3a 0d 12 0c 0e  f4 2d 2d 2d 2d 2d 2d 2d  |...:.....-------|
00002340  2d 2d 0d 12 16 0e f4 2e  20 57 49 4e 44 4f 57 53  |--...... WINDOWS|
00002350  0d 12 20 0e f4 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 12  |.. ..---------..|
00002360  2a 05 3a 0d 12 34 13 dd  f2 6c 6f 61 64 74 65 6d  |*.:..4...loadtem|
00002370  70 6c 61 74 65 73 0d 12  3e 11 ea 20 74 62 75 66  |plates..>.. tbuf|
00002380  66 25 2c 65 6e 64 25 0d  12 48 28 74 62 75 66 66  |f%,end%..H(tbuff|
00002390  25 3d 62 75 66 66 65 72  25 3a 65 6e 64 25 3d 62  |%=buffer%:end%=b|
000023a0  75 66 66 65 72 25 2b 62  75 66 73 69 7a 65 25 0d  |uffer%+bufsize%.|
000023b0  12 52 31 c8 99 20 22 57  69 6d 70 5f 4f 70 65 6e  |.R1.. "Wimp_Open|
000023c0  54 65 6d 70 6c 61 74 65  22 2c 2c 74 61 73 6b 64  |Template",,taskd|
000023d0  69 72 24 2b 22 2e 54 65  6d 70 6c 61 74 65 73 22  |ir$+".Templates"|
000023e0  0d 12 5c 26 6d 61 69 6e  25 3d a4 74 77 69 6e 64  |..\&main%=.twind|
000023f0  6f 77 28 22 4d 61 69 6e  22 2c 65 6e 64 25 2c 74  |ow("Main",end%,t|
00002400  62 75 66 66 25 29 0d 12  66 26 70 61 6e 65 25 3d  |buff%)..f&pane%=|
00002410  a4 74 77 69 6e 64 6f 77  28 22 50 61 6e 65 22 2c  |.twindow("Pane",|
00002420  65 6e 64 25 2c 74 62 75  66 66 25 29 0d 12 70 26  |end%,tbuff%)..p&|
00002430  69 6e 66 6f 25 3d a4 74  77 69 6e 64 6f 77 28 22  |info%=.twindow("|
00002440  49 6e 66 6f 22 2c 65 6e  64 25 2c 74 62 75 66 66  |Info",end%,tbuff|
00002450  25 29 0d 12 7a 1b c8 99  20 22 57 69 6d 70 5f 43  |%)..z... "Wimp_C|
00002460  6c 6f 73 65 54 65 6d 70  6c 61 74 65 22 0d 12 84  |loseTemplate"...|
00002470  05 e1 0d 12 8e 05 3a 0d  12 98 1f dd a4 74 77 69  |......:......twi|
00002480  6e 64 6f 77 28 74 24 2c  65 6e 64 25 2c f8 20 74  |ndow(t$,end%,. t|
00002490  62 75 66 66 25 29 0d 12  a2 09 ea 20 77 68 25 0d  |buff%)..... wh%.|
000024a0  12 ac 3d c8 99 20 22 57  69 6d 70 5f 4c 6f 61 64  |..=.. "Wimp_Load|
000024b0  54 65 6d 70 6c 61 74 65  22 2c 2c 71 25 2c 74 62  |Template",,q%,tb|
000024c0  75 66 66 25 2c 65 6e 64  25 2c 2d 31 2c 74 24 2c  |uff%,end%,-1,t$,|
000024d0  30 20 b8 20 2c 2c 74 62  75 66 66 25 0d 12 b6 24  |0 . ,,tbuff%...$|
000024e0  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 57  |.. "Wimp_CreateW|
000024f0  69 6e 64 6f 77 22 2c 2c  71 25 20 b8 20 77 68 25  |indow",,q% . wh%|
00002500  0d 12 c0 08 3d 77 68 25  0d 12 ca 05 3a 0d 12 d4  |....=wh%....:...|
00002510  0d dd f2 6f 77 28 77 68  25 29 0d 12 de 1b f4 20  |...ow(wh%)..... |
00002520  61 74 20 6d 79 20 62 65  68 65 73 74 20 2d 20 6f  |at my behest - o|
00002530  6e 20 74 6f 70 0d 12 e8  32 71 25 21 30 3d 77 68  |n top...2q%!0=wh|
00002540  25 3a c8 99 20 22 57 69  6d 70 5f 47 65 74 57 69  |%:.. "Wimp_GetWi|
00002550  6e 64 6f 77 53 74 61 74  65 22 2c 2c 71 25 3a 71  |ndowState",,q%:q|
00002560  25 21 32 38 3d 2d 31 0d  12 f2 1c e7 20 77 68 25  |%!28=-1..... wh%|
00002570  3d 6d 61 69 6e 25 20 8c  20 f2 70 61 6e 65 28 77  |=main% . .pane(w|
00002580  68 25 29 0d 12 fc 1c c8  99 20 22 57 69 6d 70 5f  |h%)...... "Wimp_|
00002590  4f 70 65 6e 57 69 6e 64  6f 77 22 2c 2c 71 25 0d  |OpenWindow",,q%.|
000025a0  13 06 05 e1 0d 13 10 05  3a 0d 13 1a 0e dd f2 6f  |........:......o|
000025b0  77 32 28 77 68 25 29 0d  13 24 14 f4 20 66 72 6f  |w2(wh%)..$.. fro|
000025c0  6d 20 57 69 6d 70 20 50  6f 6c 6c 0d 13 2e 1c e7  |m Wimp Poll.....|
000025d0  20 77 68 25 3d 6d 61 69  6e 25 20 8c 20 f2 70 61  | wh%=main% . .pa|
000025e0  6e 65 28 77 68 25 29 0d  13 38 1c c8 99 20 22 57  |ne(wh%)..8... "W|
000025f0  69 6d 70 5f 4f 70 65 6e  57 69 6e 64 6f 77 22 2c  |imp_OpenWindow",|
00002600  2c 71 25 0d 13 42 05 e1  0d 13 4c 05 3a 0d 13 56  |,q%..B....L.:..V|
00002610  0d dd f2 63 77 28 77 68  25 29 0d 13 60 25 21 71  |...cw(wh%)..`%!q|
00002620  25 3d 77 68 25 3a c8 99  20 22 57 69 6d 70 5f 43  |%=wh%:.. "Wimp_C|
00002630  6c 6f 73 65 57 69 6e 64  6f 77 22 2c 2c 71 25 0d  |loseWindow",,q%.|
00002640  13 6a 1c e7 20 77 68 25  3d 6d 61 69 6e 25 20 8c  |.j.. wh%=main% .|
00002650  20 f2 63 77 28 70 61 6e  65 25 29 0d 13 74 05 e1  | .cw(pane%)..t..|
00002660  0d 13 7e 05 3a 0d 13 88  0e dd f2 6f 77 63 28 77  |..~.:......owc(w|
00002670  68 25 29 0d 13 92 29 f4  20 61 74 20 6d 79 20 62  |h%)...). at my b|
00002680  65 68 65 73 74 20 2d 20  6f 6e 20 74 6f 70 20 61  |ehest - on top a|
00002690  6e 64 20 69 6e 20 63 65  6e 74 72 65 0d 13 9c 29  |nd in centre...)|
000026a0  71 25 21 30 3d 77 68 25  3a c8 99 20 22 57 69 6d  |q%!0=wh%:.. "Wim|
000026b0  70 5f 47 65 74 57 69 6e  64 6f 77 53 74 61 74 65  |p_GetWindowState|
000026c0  22 2c 2c 71 25 0d 13 a6  32 c8 99 20 22 4f 53 5f  |",,q%...2.. "OS_|
000026d0  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
000026e0  22 2c 2d 31 2c 31 31 20  b8 20 2c 2c 78 77 69 6e  |",-1,11 . ,,xwin|
000026f0  64 6c 69 6d 69 74 25 0d  13 b0 32 c8 99 20 22 4f  |dlimit%...2.. "O|
00002700  53 5f 52 65 61 64 4d 6f  64 65 56 61 72 69 61 62  |S_ReadModeVariab|
00002710  6c 65 22 2c 2d 31 2c 34  20 20 b8 20 2c 2c 78 65  |le",-1,4  . ,,xe|
00002720  69 67 66 61 63 74 6f 72  25 0d 13 ba 32 c8 99 20  |igfactor%...2.. |
00002730  22 4f 53 5f 52 65 61 64  4d 6f 64 65 56 61 72 69  |"OS_ReadModeVari|
00002740  61 62 6c 65 22 2c 2d 31  2c 31 32 20 b8 20 2c 2c  |able",-1,12 . ,,|
00002750  79 77 69 6e 64 6c 69 6d  69 74 25 0d 13 c4 32 c8  |ywindlimit%...2.|
00002760  99 20 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |. "OS_ReadModeVa|
00002770  72 69 61 62 6c 65 22 2c  2d 31 2c 35 20 20 b8 20  |riable",-1,5  . |
00002780  2c 2c 79 65 69 67 66 61  63 74 6f 72 25 0d 13 ce  |,,yeigfactor%...|
00002790  28 78 77 69 6e 64 6c 69  6d 69 74 25 3d 78 77 69  |(xwindlimit%=xwi|
000027a0  6e 64 6c 69 6d 69 74 25  3c 3c 78 65 69 67 66 61  |ndlimit%<<xeigfa|
000027b0  63 74 6f 72 25 0d 13 d8  28 79 77 69 6e 64 6c 69  |ctor%...(ywindli|
000027c0  6d 69 74 25 3d 79 77 69  6e 64 6c 69 6d 69 74 25  |mit%=ywindlimit%|
000027d0  3c 3c 79 65 69 67 66 61  63 74 6f 72 25 0d 13 e2  |<<yeigfactor%...|
000027e0  1a 78 65 69 67 66 61 63  74 6f 72 25 3d 71 25 21  |.xeigfactor%=q%!|
000027f0  31 32 2d 71 25 21 34 0d  13 ec 1a 79 65 69 67 66  |12-q%!4....yeigf|
00002800  61 63 74 6f 72 25 3d 71  25 21 31 36 2d 71 25 21  |actor%=q%!16-q%!|
00002810  38 0d 13 f6 26 71 25 21  34 20 3d 28 78 77 69 6e  |8...&q%!4 =(xwin|
00002820  64 6c 69 6d 69 74 25 2d  78 65 69 67 66 61 63 74  |dlimit%-xeigfact|
00002830  6f 72 25 29 3e 3e 31 0d  14 00 26 71 25 21 38 20  |or%)>>1...&q%!8 |
00002840  3d 28 79 77 69 6e 64 6c  69 6d 69 74 25 2d 79 65  |=(ywindlimit%-ye|
00002850  69 67 66 61 63 74 6f 72  25 29 3e 3e 31 0d 14 0a  |igfactor%)>>1...|
00002860  1a 71 25 21 31 32 3d 71  25 21 34 2b 78 65 69 67  |.q%!12=q%!4+xeig|
00002870  66 61 63 74 6f 72 25 0d  14 14 1a 71 25 21 31 36  |factor%....q%!16|
00002880  3d 71 25 21 38 2b 79 65  69 67 66 61 63 74 6f 72  |=q%!8+yeigfactor|
00002890  25 0d 14 1e 0c 71 25 21  32 38 3d 2d 31 0d 14 28  |%....q%!28=-1..(|
000028a0  1c e7 20 77 68 25 3d 6d  61 69 6e 25 20 8c 20 f2  |.. wh%=main% . .|
000028b0  70 61 6e 65 28 77 68 25  29 0d 14 32 1c c8 99 20  |pane(wh%)..2... |
000028c0  22 57 69 6d 70 5f 4f 70  65 6e 57 69 6e 64 6f 77  |"Wimp_OpenWindow|
000028d0  22 2c 2c 71 25 0d 14 3c  05 e1 0d 14 46 05 3a 0d  |",,q%..<....F.:.|
000028e0  14 50 10 dd f2 66 6f 72  63 65 28 77 68 25 29 0d  |.P...force(wh%).|
000028f0  14 5a 28 21 71 25 3d 77  68 25 3a c8 99 20 22 57  |.Z(!q%=wh%:.. "W|
00002900  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 53 74 61  |imp_GetWindowSta|
00002910  74 65 22 2c 2c 71 25 0d  14 64 32 c8 99 20 22 57  |te",,q%..d2.. "W|
00002920  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
00002930  2c 2d 31 2c 71 25 21 34  2c 71 25 21 38 2c 71 25  |,-1,q%!4,q%!8,q%|
00002940  21 31 32 2c 71 25 21 31  36 0d 14 6e 05 e1 0d 14  |!12,q%!16..n....|
00002950  78 05 3a 0d 14 82 20 dd  f2 73 65 74 65 78 74 65  |x.:... ..setexte|
00002960  6e 74 28 77 68 25 2c 6d  69 6e 79 25 2c 6d 61 78  |nt(wh%,miny%,max|
00002970  78 25 29 0d 14 8c 28 71  25 21 30 3d 30 3a 71 25  |x%)...(q%!0=0:q%|
00002980  21 34 3d 6d 69 6e 79 25  3a 71 25 21 38 3d 6d 61  |!4=miny%:q%!8=ma|
00002990  78 78 25 3a 71 25 21 31  32 3d 30 0d 14 96 1e c8  |xx%:q%!12=0.....|
000029a0  99 20 22 57 69 6d 70 5f  53 65 74 45 78 74 65 6e  |. "Wimp_SetExten|
000029b0  74 22 2c 77 68 25 2c 71  25 0d 14 a0 05 e1 0d 14  |t",wh%,q%.......|
000029c0  aa 05 3a 0d 14 b4 0b f4  2d 2d 2d 2d 2d 2d 0d 14  |..:.....------..|
000029d0  be 0b f4 2e 20 50 41 4e  45 0d 14 c8 0b f4 2d 2d  |.... PANE.....--|
000029e0  2d 2d 2d 2d 0d 14 d2 05  3a 0d 14 dc 13 dd f2 70  |----....:......p|
000029f0  61 6e 65 28 70 61 72 65  6e 74 25 29 0d 14 e6 0e  |ane(parent%)....|
00002a00  ea 20 78 25 2c 79 25 2c  62 25 0d 14 f0 15 f4 20  |. x%,y%,b%..... |
00002a10  70 61 72 65 6e 74 20 69  73 20 69 6e 20 71 25 0d  |parent is in q%.|
00002a20  14 fa 1d 78 25 3d 71 25  21 34 3a 79 25 3d 71 25  |...x%=q%!4:y%=q%|
00002a30  21 31 36 3a 62 25 3d 71  25 21 32 38 0d 15 04 1b  |!16:b%=q%!28....|
00002a40  f4 20 67 65 74 20 70 61  6e 65 20 73 74 61 74 65  |. get pane state|
00002a50  20 69 6e 20 70 71 25 0d  15 0e 0f 70 71 25 21 30  | in pq%....pq%!0|
00002a60  3d 70 61 6e 65 25 0d 15  18 21 c8 99 20 22 57 69  |=pane%...!.. "Wi|
00002a70  6d 70 5f 47 65 74 57 69  6e 64 6f 77 53 74 61 74  |mp_GetWindowStat|
00002a80  65 22 2c 2c 70 71 25 0d  15 22 21 f4 20 64 65 74  |e",,pq%.."!. det|
00002a90  65 72 6d 69 6e 65 20 70  6f 73 69 74 69 6f 6e 20  |ermine position |
00002aa0  66 6f 72 20 70 61 6e 65  0d 15 2c 11 70 71 25 21  |for pane..,.pq%!|
00002ab0  34 3d 78 25 2b 70 6f 6c  25 0d 15 36 1b 70 71 25  |4=x%+pol%..6.pq%|
00002ac0  21 31 32 3d 78 25 2b 70  6f 6c 25 2b 70 61 6e 65  |!12=x%+pol%+pane|
00002ad0  77 69 64 25 0d 15 40 1a  70 71 25 21 38 3d 79 25  |wid%..@.pq%!8=y%|
00002ae0  2d 70 6f 74 25 2d 70 61  6e 65 68 67 74 25 0d 15  |-pot%-panehgt%..|
00002af0  4a 12 70 71 25 21 31 36  3d 79 25 2d 70 6f 74 25  |J.pq%!16=y%-pot%|
00002b00  0d 15 54 2b f4 20 61 6e  64 20 6f 70 65 6e 20 69  |..T+. and open i|
00002b10  74 20 61 74 20 63 6f 72  72 65 63 74 20 70 6f 69  |t at correct poi|
00002b20  6e 74 20 69 6e 20 73 74  61 63 6b 0d 15 5e 27 70  |nt in stack..^'p|
00002b30  71 25 21 32 38 3d 62 25  3a c8 99 20 22 57 69 6d  |q%!28=b%:.. "Wim|
00002b40  70 5f 4f 70 65 6e 57 69  6e 64 6f 77 22 2c 2c 70  |p_OpenWindow",,p|
00002b50  71 25 0d 15 68 1d f4 20  6f 70 65 6e 20 70 61 72  |q%..h.. open par|
00002b60  65 6e 74 20 62 65 68 69  6e 64 20 70 61 6e 65 0d  |ent behind pane.|
00002b70  15 72 0f 71 25 21 32 38  3d 70 61 6e 65 25 0d 15  |.r.q%!28=pane%..|
00002b80  7c 05 e1 0d 15 86 05 3a  0d 15 90 0c f4 2d 2d 2d  ||......:.....---|
00002b90  2d 2d 2d 2d 0d 15 9a 0c  f4 2e 20 49 43 4f 4e 53  |----...... ICONS|
00002ba0  0d 15 a4 0c f4 2d 2d 2d  2d 2d 2d 2d 0d 15 ae 05  |.....-------....|
00002bb0  3a 0d 15 b8 0d dd f2 62  61 72 69 63 6f 6e 0d 15  |:......baricon..|
00002bc0  c2 37 71 25 21 30 3d 2d  31 3a 71 25 21 34 3d 30  |.7q%!0=-1:q%!4=0|
00002bd0  3a 71 25 21 38 3d 30 3a  71 25 21 31 32 3d 36 38  |:q%!8=0:q%!12=68|
00002be0  3a 71 25 21 31 36 3d 36  38 3a 71 25 21 32 30 3d  |:q%!16=68:q%!20=|
00002bf0  26 33 30 30 32 0d 15 cc  18 24 28 71 25 2b 32 34  |&3002....$(q%+24|
00002c00  29 3d 22 21 70 61 73 73  77 6f 72 64 22 0d 15 d6  |)="!password"...|
00002c10  27 c8 99 20 22 57 69 6d  70 5f 43 72 65 61 74 65  |'.. "Wimp_Create|
00002c20  49 63 6f 6e 22 2c 2c 71  25 20 b8 20 62 61 72 69  |Icon",,q% . bari|
00002c30  63 6f 6e 25 0d 15 e0 05  e1 0d 15 ea 05 3a 0d 15  |con%.........:..|
00002c40  f4 11 dd f2 63 72 65 61  74 65 69 63 6f 6e 73 0d  |....createicons.|
00002c50  15 fe 14 f4 20 69 63 6f  6e 73 20 66 6f 72 20 70  |.... icons for p|
00002c60  61 6e 65 0d 16 08 2c ea  20 77 68 25 2c 69 68 25  |ane...,. wh%,ih%|
00002c70  2c 76 67 25 2c 69 78 25  2c 69 79 25 2c 69 77 25  |,vg%,ix%,iy%,iw%|
00002c80  2c 66 25 2c 69 25 2c 77  25 2c 68 25 2c 6d 25 0d  |,f%,i%,w%,h%,m%.|
00002c90  16 12 29 77 68 25 3d 70  61 6e 65 25 3a 69 68 25  |..)wh%=pane%:ih%|
00002ca0  3d 34 34 3a 76 67 25 3d  34 3a 69 79 25 3d 2d 28  |=44:vg%=4:iy%=-(|
00002cb0  69 68 25 2b 76 67 25 29  0d 16 1c 05 3a 0d 16 26  |ih%+vg%)....:..&|
00002cc0  0c f4 20 6e 75 6d 62 65  72 0d 16 30 1d 69 78 25  |.. number..0.ix%|
00002cd0  3d 36 3a 69 77 25 3d 33  36 3a 66 25 3d 26 32 37  |=6:iw%=36:f%=&27|
00002ce0  30 30 36 30 33 39 0d 16  3a 15 e3 20 4a 25 3d 31  |006039..:.. J%=1|
00002cf0  20 b8 20 6d 61 78 62 61  72 73 25 0d 16 44 14 20  | . maxbars%..D. |
00002d00  73 24 3d c2 22 20 20 22  2b c3 4a 25 2c 32 29 0d  |s$=."  "+.J%,2).|
00002d10  16 4e 2e 20 69 25 3d a4  69 63 6f 6e 28 77 68 25  |.N. i%=.icon(wh%|
00002d20  2c 69 78 25 2c 69 79 25  2c 69 77 25 2c 69 68 25  |,ix%,iy%,iw%,ih%|
00002d30  2c 66 25 2c 73 24 2c 30  2c 30 2c 30 29 0d 16 58  |,f%,s$,0,0,0)..X|
00002d40  13 20 69 79 25 2d 3d 28  69 68 25 2b 76 67 25 29  |. iy%-=(ih%+vg%)|
00002d50  0d 16 62 05 ed 0d 16 6c  05 3a 0d 16 76 0f f4 20  |..b....l.:..v.. |
00002d60  62 61 72 20 6e 61 6d 65  73 0d 16 80 2e 69 78 25  |bar names....ix%|
00002d70  3d 34 38 3a 69 77 25 3d  32 33 34 3a 69 79 25 3d  |=48:iw%=234:iy%=|
00002d80  2d 28 69 68 25 2b 76 67  25 29 3a 66 25 3d 26 31  |-(ih%+vg%):f%=&1|
00002d90  37 30 30 30 31 33 35 0d  16 8a 15 e3 20 4a 25 3d  |7000135..... J%=|
00002da0  31 20 b8 20 6d 61 78 62  61 72 73 25 0d 16 94 15  |1 . maxbars%....|
00002db0  20 24 62 61 72 6e 61 6d  65 25 28 4a 25 29 3d 22  | $barname%(J%)="|
00002dc0  22 0d 16 9e 3b 20 69 25  3d a4 69 63 6f 6e 28 77  |"...; i%=.icon(w|
00002dd0  68 25 2c 69 78 25 2c 69  79 25 2c 69 77 25 2c 69  |h%,ix%,iy%,iw%,i|
00002de0  68 25 2c 66 25 2c 22 22  2c 62 61 72 6e 61 6d 65  |h%,f%,"",barname|
00002df0  25 28 4a 25 29 2c 2d 31  2c 31 31 29 0d 16 a8 13  |%(J%),-1,11)....|
00002e00  20 69 79 25 2d 3d 28 69  68 25 2b 76 67 25 29 0d  | iy%-=(ih%+vg%).|
00002e10  16 b2 05 ed 0d 16 bc 05  3a 0d 16 c6 0f f4 20 70  |........:..... p|
00002e20  61 73 73 77 6f 72 64 73  0d 16 d0 2f 69 78 25 3d  |asswords.../ix%=|
00002e30  32 39 30 3a 69 77 25 3d  32 33 34 3a 69 79 25 3d  |290:iw%=234:iy%=|
00002e40  2d 28 69 68 25 2b 76 67  25 29 3a 66 25 3d 26 30  |-(ih%+vg%):f%=&0|
00002e50  37 30 30 45 31 33 35 0d  16 da 15 e3 20 4a 25 3d  |700E135..... J%=|
00002e60  31 20 b8 20 6d 61 78 62  61 72 73 25 0d 16 e4 16  |1 . maxbars%....|
00002e70  20 24 70 61 73 73 77 6f  72 64 25 28 4a 25 29 3d  | $password%(J%)=|
00002e80  22 22 0d 16 ee 28 20 24  70 61 73 73 76 61 6c 25  |""...( $passval%|
00002e90  28 4a 25 29 3d 22 41 22  3a f4 20 6e 6f 20 63 68  |(J%)="A":. no ch|
00002ea0  72 73 20 61 6c 6c 6f 77  65 64 0d 16 f8 46 20 69  |rs allowed...F i|
00002eb0  25 3d a4 69 63 6f 6e 28  77 68 25 2c 69 78 25 2c  |%=.icon(wh%,ix%,|
00002ec0  69 79 25 2c 69 77 25 2c  69 68 25 2c 66 25 2c 22  |iy%,iw%,ih%,f%,"|
00002ed0  22 2c 70 61 73 73 77 6f  72 64 25 28 4a 25 29 2c  |",password%(J%),|
00002ee0  70 61 73 73 76 61 6c 25  28 4a 25 29 2c 31 31 29  |passval%(J%),11)|
00002ef0  0d 17 02 13 20 69 79 25  2d 3d 28 69 68 25 2b 76  |.... iy%-=(ih%+v|
00002f00  67 25 29 0d 17 0c 05 ed  0d 17 16 05 3a 0d 17 20  |g%).........:.. |
00002f10  11 f4 20 6f 70 74 20 62  75 74 74 6f 6e 73 0d 17  |.. opt buttons..|
00002f20  2a 2e 69 78 25 3d 35 33  32 3a 69 77 25 3d 34 34  |*.ix%=532:iw%=44|
00002f30  3a 69 79 25 3d 2d 28 69  68 25 2b 76 67 25 29 3a  |:iy%=-(ih%+vg%):|
00002f40  66 25 3d 26 31 34 34 30  42 31 33 33 0d 17 34 15  |f%=&1440B133..4.|
00002f50  e3 20 4a 25 3d 31 20 b8  20 6d 61 78 62 61 72 73  |. J%=1 . maxbars|
00002f60  25 0d 17 3e 38 20 69 25  3d a4 69 63 6f 6e 28 77  |%..>8 i%=.icon(w|
00002f70  68 25 2c 69 78 25 2c 69  79 25 2c 69 77 25 2c 69  |h%,ix%,iy%,iw%,i|
00002f80  68 25 2c 66 25 2c 22 22  2c 6e 75 6c 6c 25 2c 6f  |h%,f%,"",null%,o|
00002f90  70 74 76 61 6c 25 2c 32  29 0d 17 48 13 20 69 79  |ptval%,2)..H. iy|
00002fa0  25 2d 3d 28 69 68 25 2b  76 67 25 29 0d 17 52 05  |%-=(ih%+vg%)..R.|
00002fb0  ed 0d 17 5c 05 3a 0d 17  66 1a f4 20 73 65 74 20  |...\.:..f.. set |
00002fc0  77 69 6e 64 6f 77 20 77  61 20 65 78 74 65 6e 74  |window wa extent|
00002fd0  0d 17 70 1d 68 25 3d 6d  61 78 62 61 72 73 25 2a  |..p.h%=maxbars%*|
00002fe0  28 69 68 25 2b 76 67 25  29 2b 76 67 25 0d 17 7a  |(ih%+vg%)+vg%..z|
00002ff0  1b f2 73 65 74 65 78 74  65 6e 74 28 77 68 25 2c  |..setextent(wh%,|
00003000  2d 68 25 2c 35 39 32 29  0d 17 84 05 e1 0d 17 8e  |-h%,592)........|
00003010  05 3a 0d 17 98 37 dd a4  69 63 6f 6e 28 77 68 25  |.:...7..icon(wh%|
00003020  2c 69 78 25 2c 69 79 25  2c 69 77 25 2c 69 68 25  |,ix%,iy%,iw%,ih%|
00003030  2c 66 6c 61 67 25 2c 74  65 78 74 24 2c 64 31 25  |,flag%,text$,d1%|
00003040  2c 64 32 25 2c 64 33 25  29 0d 17 a2 46 71 25 21  |,d2%,d3%)...Fq%!|
00003050  30 3d 77 68 25 3a 71 25  21 34 3d 69 78 25 3a 71  |0=wh%:q%!4=ix%:q|
00003060  25 21 38 3d 69 79 25 3a  71 25 21 31 32 3d 69 78  |%!8=iy%:q%!12=ix|
00003070  25 2b 69 77 25 3a 71 25  21 31 36 3d 69 79 25 2b  |%+iw%:q%!16=iy%+|
00003080  69 68 25 3a 71 25 21 32  30 3d 66 6c 61 67 25 0d  |ih%:q%!20=flag%.|
00003090  17 ac 0d e7 20 64 31 25  3d 30 20 8c 0d 17 b6 14  |.... d1%=0 .....|
000030a0  20 20 24 28 71 25 2b 32  34 29 3d 74 65 78 74 24  |  $(q%+24)=text$|
000030b0  0d 17 c0 05 cc 0d 17 ca  23 20 20 71 25 21 32 34  |........#  q%!24|
000030c0  3d 64 31 25 3a 71 25 21  32 38 3d 64 32 25 3a 71  |=d1%:q%!28=d2%:q|
000030d0  25 21 33 32 3d 64 33 25  0d 17 d4 05 cd 0d 17 de  |%!32=d3%........|
000030e0  22 c8 99 20 22 57 69 6d  70 5f 43 72 65 61 74 65  |".. "Wimp_Create|
000030f0  49 63 6f 6e 22 2c 2c 71  25 20 b8 20 69 68 25 0d  |Icon",,q% . ih%.|
00003100  17 e8 08 3d 69 68 25 0d  17 f2 05 3a 0d 17 fc 17  |...=ih%....:....|
00003110  dd f2 69 74 28 77 68 25  2c 69 68 25 2c 74 65 78  |..it(wh%,ih%,tex|
00003120  74 24 29 0d 18 06 15 71  25 21 30 3d 77 68 25 3a  |t$)....q%!0=wh%:|
00003130  71 25 21 34 3d 69 68 25  0d 18 10 1e c8 99 20 22  |q%!4=ih%...... "|
00003140  57 69 6d 70 5f 47 65 74  49 63 6f 6e 53 74 61 74  |Wimp_GetIconStat|
00003150  65 22 2c 2c 71 25 0d 18  1a 12 24 28 71 25 21 32  |e",,q%....$(q%!2|
00003160  38 29 3d 74 65 78 74 24  0d 18 24 24 71 25 21 30  |8)=text$..$$q%!0|
00003170  3d 77 68 25 3a 71 25 21  34 3d 69 68 25 3a 71 25  |=wh%:q%!4=ih%:q%|
00003180  21 38 3d 30 3a 71 25 21  31 32 3d 30 0d 18 2e 1e  |!8=0:q%!12=0....|
00003190  c8 99 20 22 57 69 6d 70  5f 53 65 74 49 63 6f 6e  |.. "Wimp_SetIcon|
000031a0  53 74 61 74 65 22 2c 2c  71 25 0d 18 38 05 e1 0d  |State",,q%..8...|
000031b0  18 42 05 3a 0d 18 4c 11  dd a4 69 74 28 77 68 25  |.B.:..L...it(wh%|
000031c0  2c 69 68 25 29 0d 18 56  15 71 25 21 30 3d 77 68  |,ih%)..V.q%!0=wh|
000031d0  25 3a 71 25 21 34 3d 69  68 25 0d 18 60 1e c8 99  |%:q%!4=ih%..`...|
000031e0  20 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  | "Wimp_GetIconSt|
000031f0  61 74 65 22 2c 2c 71 25  0d 18 6a 0d 3d 24 28 71  |ate",,q%..j.=$(q|
00003200  25 21 32 38 29 0d 18 74  05 3a 0d 18 7e 11 dd a4  |%!28)..t.:..~...|
00003210  69 73 28 77 68 25 2c 69  68 25 29 0d 18 88 08 ea  |is(wh%,ih%).....|
00003220  20 6e 25 0d 18 92 14 21  71 25 3d 77 68 25 3a 71  | n%....!q%=wh%:q|
00003230  25 21 34 3d 69 68 25 0d  18 9c 1e c8 99 20 22 57  |%!4=ih%...... "W|
00003240  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
00003250  22 2c 2c 71 25 0d 18 a6  18 6e 25 3d 28 28 71 25  |",,q%....n%=((q%|
00003260  21 32 34 29 3e 3e 32 31  29 20 80 20 31 0d 18 b0  |!24)>>21) . 1...|
00003270  0e e7 20 6e 25 3d 30 20  8c 3d a3 0d 18 ba 06 3d  |.. n%=0 .=.....=|
00003280  b9 0d 18 c4 05 3a 0d 18  ce 11 dd f2 73 69 28 77  |.....:......si(w|
00003290  68 25 2c 69 68 25 29 0d  18 d8 15 71 25 21 30 3d  |h%,ih%)....q%!0=|
000032a0  77 68 25 3a 71 25 21 34  3d 69 68 25 0d 18 e2 1a  |wh%:q%!4=ih%....|
000032b0  71 25 21 38 3d 31 3c 3c  32 31 3a 71 25 21 31 32  |q%!8=1<<21:q%!12|
000032c0  3d 31 3c 3c 32 31 0d 18  ec 1e c8 99 20 22 57 69  |=1<<21...... "Wi|
000032d0  6d 70 5f 53 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_SetIconState"|
000032e0  2c 2c 71 25 0d 18 f6 05  e1 0d 19 00 05 3a 0d 19  |,,q%.........:..|
000032f0  0a 11 dd f2 75 69 28 77  68 25 2c 69 68 25 29 0d  |....ui(wh%,ih%).|
00003300  19 14 15 71 25 21 30 3d  77 68 25 3a 71 25 21 34  |...q%!0=wh%:q%!4|
00003310  3d 69 68 25 0d 19 1e 16  71 25 21 38 3d 30 3a 71  |=ih%....q%!8=0:q|
00003320  25 21 31 32 3d 31 3c 3c  32 31 0d 19 28 1e c8 99  |%!12=1<<21..(...|
00003330  20 22 57 69 6d 70 5f 53  65 74 49 63 6f 6e 53 74  | "Wimp_SetIconSt|
00003340  61 74 65 22 2c 2c 71 25  0d 19 32 05 e1 0d 19 3c  |ate",,q%..2....<|
00003350  05 3a 0d 19 46 1c dd f2  73 69 73 28 77 68 25 2c  |.:..F...sis(wh%,|
00003360  69 68 25 2c 6e 65 77 66  6c 61 67 73 25 29 0d 19  |ih%,newflags%)..|
00003370  50 14 f4 20 73 65 74 20  69 63 6f 6e 20 73 74 61  |P.. set icon sta|
00003380  74 65 0d 19 5a 11 ea 20  63 6c 65 61 72 25 2c 65  |te..Z.. clear%,e|
00003390  6f 72 25 0d 19 64 23 63  6c 65 61 72 25 3d 26 46  |or%..d#clear%=&F|
000033a0  46 46 46 46 46 46 46 3a  65 6f 72 25 3d 6e 65 77  |FFFFFFF:eor%=new|
000033b0  66 6c 61 67 73 25 0d 19  6e 2c 71 25 21 30 3d 77  |flags%..n,q%!0=w|
000033c0  68 25 3a 71 25 21 34 3d  69 68 25 3a 71 25 21 38  |h%:q%!4=ih%:q%!8|
000033d0  3d 65 6f 72 25 3a 71 25  21 31 32 3d 63 6c 65 61  |=eor%:q%!12=clea|
000033e0  72 25 0d 19 78 1e c8 99  20 22 57 69 6d 70 5f 53  |r%..x... "Wimp_S|
000033f0  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 71 25  |etIconState",,q%|
00003400  0d 19 82 05 e1 0d 19 8c  05 3a 0d 19 96 16 f4 2d  |.........:.....-|
00003410  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00003420  0d 19 a0 16 f4 2e 20 45  52 52 4f 52 53 2f 4d 45  |...... ERRORS/ME|
00003430  53 53 41 47 45 53 0d 19  aa 16 f4 2d 2d 2d 2d 2d  |SSAGES.....-----|
00003440  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 19 b4 05  |------------....|
00003450  3a 0d 19 be 0b dd f2 65  72 72 6f 72 0d 19 c8 22  |:......error..."|
00003460  f4 20 62 65 66 6f 72 65  20 65 6e 74 65 72 69 6e  |. before enterin|
00003470  67 20 70 6f 6c 6c 69 6e  67 20 6c 6f 6f 70 0d 19  |g polling loop..|
00003480  d2 18 c8 99 20 22 48 6f  75 72 67 6c 61 73 73 5f  |.... "Hourglass_|
00003490  53 6d 61 73 68 22 0d 19  dc 16 e7 20 46 25 3e 30  |Smash"..... F%>0|
000034a0  20 8c 20 d9 23 46 25 3a  46 25 3d 30 0d 19 e6 1b  | . .#F%:F%=0....|
000034b0  85 20 a2 20 9f 2c f6 24  2b 22 20 61 74 20 6c 69  |. . .,.$+" at li|
000034c0  6e 65 20 22 2b c3 9e 0d  19 f0 05 e1 0d 19 fa 05  |ne "+...........|
000034d0  3a 0d 1a 04 0f dd f2 77  69 6d 70 65 72 72 6f 72  |:......wimperror|
000034e0  0d 1a 0e 0a ea 20 61 6e  73 25 0d 1a 18 2e c8 99  |..... ans%......|
000034f0  20 22 57 69 6d 70 5f 44  72 61 67 42 6f 78 22 2c  | "Wimp_DragBox",|
00003500  2c 2d 31 3a c8 99 20 22  48 6f 75 72 67 6c 61 73  |,-1:.. "Hourglas|
00003510  73 5f 53 6d 61 73 68 22  0d 1a 22 16 e7 20 46 25  |s_Smash"..".. F%|
00003520  3e 30 20 8c 20 d9 23 46  25 3a 46 25 3d 30 0d 1a  |>0 . .#F%:F%=0..|
00003530  2c 34 21 71 25 3d 9f 3a  73 24 3d 22 4f 4b 20 74  |,4!q%=.:s$="OK t|
00003540  6f 20 63 6f 6e 74 69 6e  75 65 2c 20 43 41 4e 43  |o continue, CANC|
00003550  45 4c 20 74 6f 20 6b 69  6c 6c 20 22 2b 74 61 73  |EL to kill "+tas|
00003560  6b 24 0d 1a 36 30 24 28  71 25 2b 34 29 3d f6 24  |k$..60$(q%+4)=.$|
00003570  2b 22 20 28 49 6e 74 65  72 6e 61 6c 20 65 72 72  |+" (Internal err|
00003580  6f 72 20 22 2b c3 9e 2b  22 29 20 22 2b 73 24 2b  |or "+..+") "+s$+|
00003590  bd 30 0d 1a 40 2c c8 99  20 22 57 69 6d 70 5f 52  |.0..@,.. "Wimp_R|
000035a0  65 70 6f 72 74 45 72 72  6f 72 22 2c 71 25 2c 33  |eportError",q%,3|
000035b0  2c 74 61 73 6b 24 20 b8  20 2c 61 6e 73 25 0d 1a  |,task$ . ,ans%..|
000035c0  4a 39 e7 20 61 6e 73 25  3d 32 20 8c 20 24 71 25  |J9. ans%=2 . $q%|
000035d0  3d 22 54 41 53 4b 22 3a  c8 99 20 22 57 69 6d 70  |="TASK":.. "Wimp|
000035e0  5f 43 6c 6f 73 65 44 6f  77 6e 22 2c 74 61 73 6b  |_CloseDown",task|
000035f0  25 2c 21 71 25 3a e0 0d  1a 54 05 e1 0d 1a 5e 05  |%,!q%:...T....^.|
00003600  3a 0d 1a 68 18 dd a4 72  65 70 6f 72 74 28 65 72  |:..h...report(er|
00003610  72 24 2c 66 6c 61 67 25  29 0d 1a 72 0a ea 20 61  |r$,flag%)..r.. a|
00003620  6e 73 25 0d 1a 7c 13 f4  20 66 6c 61 67 25 3d 30  |ns%..|.. flag%=0|
00003630  31 20 28 4f 4b 29 0d 1a  86 17 f4 20 66 6c 61 67  |1 (OK)..... flag|
00003640  25 3d 30 32 20 28 43 41  4e 43 45 4c 29 0d 1a 90  |%=02 (CANCEL)...|
00003650  1a f4 20 66 6c 61 67 25  3d 30 33 20 28 4f 4b 2c  |.. flag%=03 (OK,|
00003660  43 41 4e 43 45 4c 29 0d  1a 9a 24 f4 20 66 6c 61  |CANCEL)...$. fla|
00003670  67 25 2b 31 36 20 28 6e  6f 20 27 45 72 72 6f 72  |g%+16 (no 'Error|
00003680  27 20 69 6e 20 74 69 74  6c 65 29 0d 1a a4 19 21  |' in title)....!|
00003690  71 25 3d 31 3a 24 28 71  25 2b 34 29 3d 65 72 72  |q%=1:$(q%+4)=err|
000036a0  24 2b bd 30 0d 1a ae 30  c8 99 20 22 57 69 6d 70  |$+.0...0.. "Wimp|
000036b0  5f 52 65 70 6f 72 74 45  72 72 6f 72 22 2c 71 25  |_ReportError",q%|
000036c0  2c 66 6c 61 67 25 2c 74  61 73 6b 24 20 b8 20 2c  |,flag%,task$ . ,|
000036d0  61 6e 73 25 0d 1a b8 09  3d 61 6e 73 25 0d 1a c2  |ans%....=ans%...|
000036e0  05 3a 0d 1a cc 0f dd f2  64 6c 28 6c 69 73 74 24  |.:......dl(list$|
000036f0  29 0d 1a d6 10 f4 20 64  65 62 75 67 20 6c 69 73  |)..... debug lis|
00003700  74 0d 1a e0 35 ea 20 63  63 63 25 2c 74 74 74 25  |t...5. ccc%,ttt%|
00003710  2c 6d 6d 6d 25 2c 67 67  67 25 2c 73 73 73 24 2c  |,mmm%,ggg%,sss$,|
00003720  63 63 63 24 2c 76 61 72  24 28 29 3a de 20 76 61  |ccc$,var$():. va|
00003730  72 24 28 32 30 29 0d 1a  ea 28 67 67 67 25 3d 34  |r$(20)...(ggg%=4|
00003740  3a f4 20 6f 6d 69 74 20  6c 69 6e 65 73 20 61 74  |:. omit lines at|
00003750  20 74 6f 70 20 6f 66 20  73 63 72 65 65 6e 0d 1a  | top of screen..|
00003760  f4 07 ea 20 85 0d 1a fe  2a ee 20 85 20 ea 20 ef  |... ....*. . . .|
00003770  34 3a f1 8a 30 2c 74 74  74 25 2b 67 67 67 25 2b  |4:..0,ttt%+ggg%+|
00003780  32 29 22 45 52 52 4f 52  21 22 3a ef 35 3a e1 0d  |2)"ERROR!":.5:..|
00003790  1b 08 17 e3 20 74 74 74  25 3d 31 20 b8 20 a9 28  |.... ttt%=1 . .(|
000037a0  6c 69 73 74 24 29 0d 1b  12 18 20 63 63 63 24 3d  |list$).... ccc$=|
000037b0  c1 6c 69 73 74 24 2c 74  74 74 25 2c 31 29 0d 1b  |.list$,ttt%,1)..|
000037c0  1c 1d 20 e7 20 63 63 63  24 3c 3e 22 2c 22 20 8c  |.. . ccc$<>"," .|
000037d0  20 73 73 73 24 2b 3d 63  63 63 24 0d 1b 26 21 20  | sss$+=ccc$..&! |
000037e0  e7 20 63 63 63 24 3d 22  2c 22 20 84 20 74 74 74  |. ccc$="," . ttt|
000037f0  25 3d a9 28 6c 69 73 74  24 29 20 8c 0d 1b 30 1f  |%=.(list$) ...0.|
00003800  20 20 e7 20 a9 73 73 73  24 3e 6d 6d 6d 25 20 8c  |  . .sss$>mmm% .|
00003810  20 6d 6d 6d 25 3d a9 73  73 73 24 0d 1b 3a 25 20  | mmm%=.sss$..:% |
00003820  20 76 61 72 24 28 63 63  63 25 29 3d 73 73 73 24  | var$(ccc%)=sss$|
00003830  3a 73 73 73 24 3d 22 22  3a 63 63 63 25 2b 3d 31  |:sss$="":ccc%+=1|
00003840  0d 1b 44 06 20 cd 0d 1b  4e 05 ed 0d 1b 58 06 ef  |..D. ...N....X..|
00003850  34 0d 1b 62 15 e3 20 74  74 74 25 3d 30 20 b8 20  |4..b.. ttt%=0 . |
00003860  63 63 63 25 2d 31 0d 1b  6c 14 20 73 73 73 24 3d  |ccc%-1..l. sss$=|
00003870  76 61 72 24 28 74 74 74  25 29 0d 1b 76 1b 20 f1  |var$(ttt%)..v. .|
00003880  8a 30 2c 74 74 74 25 2b  67 67 67 25 29 c4 33 30  |.0,ttt%+ggg%).30|
00003890  2c 22 20 22 29 0d 1b 80  15 20 e7 20 c0 73 73 73  |," ").... . .sss|
000038a0  24 2c 31 29 3d 22 7e 22  20 8c 0d 1b 8a 19 20 20  |$,1)="~" .....  |
000038b0  73 73 73 24 3d c2 73 73  73 24 2c a9 73 73 73 24  |sss$=.sss$,.sss$|
000038c0  2d 31 29 0d 1b 94 1b 20  20 63 63 63 24 3d c4 6d  |-1)....  ccc$=.m|
000038d0  6d 6d 25 2d a9 73 73 73  24 2c 22 20 22 29 0d 1b  |mm%-.sss$," ")..|
000038e0  9e 2d 20 20 f1 8a 30 2c  74 74 74 25 2b 67 67 67  |.-  ..0,ttt%+ggg|
000038f0  25 29 73 73 73 24 2b 63  63 63 24 2b 22 20 3d 26  |%)sss$+ccc$+" =&|
00003900  22 3b c3 7e 28 a0 73 73  73 24 29 0d 1b a8 07 20  |";.~(.sss$).... |
00003910  20 cc 0d 1b b2 1b 20 20  63 63 63 24 3d c4 6d 6d  | .....  ccc$=.mm|
00003920  6d 25 2d a9 73 73 73 24  2c 22 20 22 29 0d 1b bc  |m%-.sss$," ")...|
00003930  2c 20 20 f1 8a 30 2c 74  74 74 25 2b 67 67 67 25  |,  ..0,ttt%+ggg%|
00003940  29 20 73 73 73 24 2b 63  63 63 24 2b 22 20 3d 20  |) sss$+ccc$+" = |
00003950  22 3b a0 28 73 73 73 24  29 0d 1b c6 06 20 cd 0d  |";.(sss$).... ..|
00003960  1b d0 08 ed 3a ef 35 0d  1b da 05 e1 0d ff        |....:.5.......|
0000396e