Home » Archimedes archive » Archimedes World » AW-1994-10-Disc1.adf » Disk1Oct94 » !AWOct94/Goodies/Puzzle/!Puzzle/!RunImage

!AWOct94/Goodies/Puzzle/!Puzzle/!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 » Archimedes World » AW-1994-10-Disc1.adf » Disk1Oct94
Filename: !AWOct94/Goodies/Puzzle/!Puzzle/!RunImage
Read OK:
File size: 6FD3 bytes
Load address: 0000
Exec address: 0000
File contents
    1DIM block% 1696,sprite% 11,scale% 16,pix% 256,scale2% 16,H$(9),mem%(3,7)
    2PROCswinumbers:SYS&51 TO page%:rep%=block%+256
    3ON ERROR CLOSE#0:OSCLI"ERROR "+REPORT$+" (errorcode "+STR$ERL+")":END
    4PROCloadmessages:app$=FNmessage("TaskID")
    5SYS"Wimp_Initialise",200,&4B534154,app$
    6FOR A%=0 TO 3:FOR B%=0 TO 7:READ mem%(A%,B%):NEXT:NEXT
    7small%=0:big%=0:default$="-1":b%=3:A%=FNmakemem(mem%(0,0),mem%(2,0))
    8PROCinit
    9ON ERROR PROCerror              
   10SYSGetTime% TO now%      
   11WHILE NOTquit%
   12 IF dragging% THEN
   13  SYS Poll%,6192,block% TO reason%
   14 ELSE
   15  IF timer% AND tflag%=1 THEN
   16   SYSPollIdle%,6192,block%,now%+100 TO reason%
   17  ELSE SYS Poll%,6193,block% TO reason%
   18  ENDIF
   19ENDIF
   20 SYSGetTime% TO now%
   21 CASE reason% OF
   22  WHEN  0:IF dragging% THEN PROCdragging
   23  WHEN  1:PROCdrawwindow(!block%)
   24  WHEN  2:
   25   IF !block%=view% THEN block%!24=0
   26   SYS OpenWindow%,,block%:IF !block%=view% THEN SYSRedraw%,view%,-block%!20,block%!8-block%!16+block%!24,block%!12-block%!4-block%!20,block%!24
   27  WHEN  3:SYS CloseWindow%,,block%
   28   CASE !block% OF
   29    WHEN main%:puzopen%=0:PROCtick(bar%,2,0):tflag%=tflag%AND2:IF tflag%=0 THEN delay%=now%
   30    WHEN view%:viewopen%=0:PROCtick(bar%,3,0)
   31    WHEN helpw%:help%=0:PROCtick(bar%,5,0):PROCtick(hel%,0,0)
   32    WHEN timew%:timer%=0:PROCtick(bar%,4,0)
   33   ENDCASE
   34  WHEN  4:IF !block%=main% THEN watch%=0
   35  WHEN  5:IF !block%=main% THEN watch%=-1
   36  WHEN  6:PROCclick(block%!12,block%!16,block%!8,!block%,block%!4)
   37  WHEN  7:REM *** Drag has ended
   38  WHEN  8:
   39   IF !block%=win% AND block%!4=5 AND block%!24=13 THEN
   40    !block%=win%:SYSCloseWindow%,,block%
   41    IF winH%=432 THEN
   42     PROCmenushade(bar%,1,0):PROCmenushade(bar%,8,0)
   43     PROCicontext(highw%,(b%-2)*4+1,$FNtext(win%,5))
   44     PROCicontext(highw%,(b%-2)*4+2,$FNtext(timew%,1))
   45     PROCicontext(highw%,(b%-2)*4+3,LEFT$(TIME$,15))
   46    ENDIF
   47   ELSE SYS"Wimp_ProcessKey",block%!24
   48   ENDIF
   49  WHEN  9:PROCmenuselect
   50  WHEN 10:REM *** Scroll request
   51  WHEN 11:REM *** Lose caret
   52  WHEN 12:REM *** Gain caret
   53  WHEN 17,18:PROCreceive
   54 ENDCASE             
   55 IF tflag%=1 AND timer% AND timetaken%DIV60<>(now%-timestarted%)DIV60 THEN PROCtime
   56ENDWHILE
   57PROCquit
   58END
   59
   60DEFPROCquit
   61 SYS"XHourglass_Smash"
   62 IF big%<>0 THEN SYS"XOS_Module",7,,big%
   63 IF small%<>0 THEN SYS"XOS_Module",7,,small%
   64 SYS"XOS_ChangeDynamicArea",1,-16777216
   65 CLOSE#0:SYS"XWimp_CloseDown"
   66 END
   67ENDPROC
   68
   69DEFPROCnomemory
   70PROCreport(FNmessage("MustQuit"),-1):PROCquit
   71ENDPROC
   72
   73DEFPROCtime:LOCAL H%,S%,M%,A$
   74H%=now%:H%-=timestarted%:H%=H%/100:S%=H%MOD60:H%=H%DIV60:M%=H%MOD60:H%=H%DIV60:A$=STR$H%+":"+STRING$(-1*(M%<10),"0")+STR$M%+"."+STRING$(-1*(S%<10),"0")+STR$S%:PROCicontext(timew%,1,A$):timetaken%=now%-timestarted%
   75ENDPROC
   76
   77DEFPROCdragging
   78 SYS Pointer%,,block%:x%=!block%:y%=block%!4:B%=block%!8
   79 IF B%<>0 THEN
   80  IF watchno%=0 THEN
   81   !block%=dragging%:SYS GetWindow%,,block%:block%!12+=x%-block%!4-dx%
   82   block%!8+=y%+dy%-block%!16:block%!4=x%-dx%:block%!16=y%+dy%:IF B%<>1 THEN block%!28=-1
   83   SYS OpenWindow%,,block%
   84  ENDIF
   85 ELSE dragging%=0:PROCmakepointer("default"):IF watchno%<>0 THEN Y%=-1:REPEAT:Y%+=1:X%=-1:REPEAT:X%+=1:UNTIL s%(X%,Y%)=watchno% OR X%>b%-2:UNTIL s%(X%,Y%)=watchno%:watchno%=0:SYSRedraw%,main%,X%*xstep,-(Y%+1)*ystep,(X%+1)*xstep,-Y%*ystep
   86 ENDIF
   87ENDPROC
   88    
   89DEFPROCdrawwindow(window%) 
   90 CASE window% OF
   91  WHEN main%:PROCdrawmain
   92  WHEN view%:PROCdrawview
   93  WHEN helpw%:PROCdrawhelp
   94 ENDCASE
   95ENDPROC
   96
   97DEFPROCdrawmain
   98 block%!0=main%:SYSGetInfo%,,block%
   99 wwidth%=block%!52-block%!44:wheight%=block%!48-block%!56
  100 SYS"Wimp_RedrawWindow",,block% TO more%
  101 xo%=block%!4-block%!20:yo%=block%!16-block%!24
  102 WHILE more%
  103  x1%=((block%!28-xo%)DIVxstep):IF x1%<0 THEN x1%=0
  104  x2%=((block%!36-xo%)DIVxstep):IF x2%>b%-1 THEN x2%=b%-1
  105  y1%=((yo%-block%!40)DIVystep):IF y1%<0 THEN y1%=0
  106  y2%=((yo%-block%!32)DIVystep):IF y2%>b%-1 THEN y2%=b%-1
  107  FOR Y%=y1% TO y2%:FOR X%=x1% TO x2%
  108   IF s%(X%,Y%)=0 THEN
  109    IF help%=2 THEN
  110    SYSSetColour%,cn%:RECTANGLEFILL xo%+X%*xstep,yo%-ystep-Y%*ystep,xstep,ystep
  111     SYSSetColour%,cy%
  112     FOR y%=0 TO b%-1:FOR x%=0 TO b%-1
  113       IF s%(x%,y%)=x%+1+y%*b% OR (s%(x%,y%)=0 AND x%=b%-1 AND y%=b%-1) THEN RECTANGLEFILL xo%+X%*xstep+x%*(xstep/b%),yo%-Y%*ystep-(y%+1)*(ystep/b%),xstep/b%,ystep/b%
  114     NEXT:NEXT
  115     SYSSetColour%,cb%
  116     FOR y%=0 TO b%-1:FOR x%=0 TO b%-1
  117     RECTANGLE xo%+X%*xstep+x%*(xstep/b%),yo%-Y%*ystep-(y%+1)*(ystep/b%),xstep/b%,ystep/b%
  118     NEXT:NEXT
  119    ELSE SYSSetColour%,cb%:RECTANGLEFILL xo%+X%*xstep,yo%-ystep-Y%*ystep,xstep,ystep
  120    ENDIF
  121   ELSE  
  122   SYSSpriteOp%,52+256,small%,STR$(s%(X%,Y%)),xo%+X%*xstep,yo%-(Y%+1)*ystep,,scale%,pix%
  123   IFwatchno%=s%(X%,Y%)THEN GCOL4,0:RECTANGLEFILL xo%+X%*xstep,yo%-(Y%+1)*ystep,xstep,ystep
  124   ENDIF
  125   SYSSetColour%,cb%:RECTANGLE xo%+X%*xstep,yo%-ystep-Y%*ystep,xstep,ystep
  126  NEXT:NEXT
  127  SYS"Wimp_GetRectangle",,block% TO more%
  128 ENDWHILE
  129ENDPROC
  130
  131DEFPROCdrawhelp:A%=RND(15)
  132 !block%=helpw%:SYS"Wimp_RedrawWindow",,block% TO more%
  133 WHILE more%
  134  SYSSetColour%,cn%
  135  RECTANGLEFILL block%!28,block%!32,block%!36-block%!28,block%!40-block%!32
  136  SYSSetColour%,cy%
  137  FOR y%=0 TO b%-1:FOR x%=0 TO b%-1
  138   IF s%(x%,y%)=x%+1+y%*b% OR (s%(x%,y%)=0 AND x%=b%-1 AND y%=b%-1) THEN RECTANGLEFILL block%!4+x%*40,block%!16-(y%+1)*40-4,40
  139  NEXT:NEXT
  140  SYSSetColour%,cb%
  141  FOR y%=0 TO b%-1:FOR x%=0 TO b%-1
  142   RECTANGLE block%!4+x%*40,block%!16-(y%+1)*40-4,40
  143  NEXT:NEXT 
  144  SYS"Wimp_GetRectangle",,block% TO more%
  145 ENDWHILE
  146ENDPROC
  147
  148DEFPROCpercent:T%=0:FOR y%=0 TO b%-1:FOR x%=0 TO b%-1:IF s%(x%,y%)=x%+1+y%*b% OR (s%(x%,y%)=0 AND x%=b%-1 AND y%=b%-1) THEN T%+=1
  149  NEXT:NEXT:@%=&1020201:PROCicontext(timew%,2,STR$(T%*(100/(b%*b%)))):@%=10
  150  IF T%<b%*b% THEN tflag%=tflag%AND1 ELSE tflag%=tflag%OR2:SYSGetTime% TO delay%:IF quit%=0 THEN PROCwin
  151ENDPROC
  152
  153DEFPROCwin:PROCtime
  154 VDU7:PROCicontext(win%,2,$FNtext(timew%,1)):!block%=win%:SYS GetWindow%,,block%
  155 SYS &35,-1,11 TO ,,W%:SYS &35,-1,12 TO ,,H%
  156 SYS &35,-1,4 TO ,,A%:SYS &35,-1,5 TO ,,U%
  157 W%=(W%+1)<<A%:H%=(H%+1)<<U%
  158 winW%=block%!12-block%!4:winH%=180:Y$=$FNtext(timew%,1):O$=$FNtable(b%,2)
  159 IF VALLEFT$(Y$,INSTR(Y$,":")-1)<=VALLEFT$(O$,INSTR(O$,":")-1) AND  VALMID$(Y$,INSTR(Y$,":")+1,2)<=VALMID$(O$,INSTR(O$,":")+1,2) AND VALRIGHT$(Y$,2)<VALRIGHT$(O$,2) THEN winH%=432
  160 block%!4=W%/2-winW%/2:block%!12=block%!4+winW%
  161 block%!8=H%/2-winH%/2:block%!16=block%!8+winH%:block%!28=-1
  162 SYSOpenWindow%,,block%
  163 IF winH%=432 THEN
  164  A$=$FNtable(b%,1):PROCicontext(win%,5,A$):SYS"Wimp_SetCaretPosition",win%,5,,,-1,LENA$
  165  PROCmenushade(bar%,1,-1):PROCmenushade(bar%,8,-1)
  166 ENDIF
  167ENDPROC
  168
  169DEFPROCdrawview
  170 block%!0=view%:SYSGetInfo%,,block%
  171 wwidth%=block%!52-block%!44:wheight%=block%!48-block%!56
  172 xo%=block%!4-block%!20:yo%=block%!16-block%!24
  173 SYS"Wimp_RedrawWindow",,block% TO more%
  174 !scale2%=(block%!12-block%!4):scale2%!4=(block%!16-block%!8)
  175 scale2%!8=width%:scale2%!12=height%
  176 FOR A%=0 TO 12 STEP 4:scale2%!A%=scale2%!A%*scale%!A%:NEXT
  177 WHILE more%
  178  SYSSpriteOp%,52+512,big%,big%+16,block%!4,block%!8,0,scale2%,pix%
  179  SYS"Wimp_GetRectangle",,block% TO more%
  180 ENDWHILE
  181ENDPROC
  182
  183REM ***************  Messages
  184
  185DEFPROCreceive
  186 CASE block%!16 OF
  187  WHEN 0:quit%=TRUE
  188  WHEN 2:REM *** Data save
  189  WHEN 3:PROCdataload(block%!40,FNstring(block%+44))
  190  WHEN &502:
  191   !block%=256:SWAP block%!8,block%!12:block%!16=&503:A$=""
  192   CASE block%!32 OF
  193    WHEN -2:A$=FNmessage("BarHelp")
  194    WHEN main%:A$=FNmessage("MainHelp0")+FNmessage("MainHelp1")
  195    WHEN view%:A$=FNmessage("ViewHelp")
  196    WHEN helpw%:A$=FNmessage("HelpHelp")
  197    WHEN info%:A$=FNmessage("InfoHelp")
  198    WHEN wid%:A$=FNmessage("WidHelp")+FNmessage("WidHelp"+STR$block%!36)
  199   ENDCASE
  200   $(block%+20)=A$:SYS"Wimp_SendMessage",17,block%,block%!4
  201  WHEN &400C1:
  202   SYSReadMode%,-1,3 TO ,,ncolour%:IF default$="" THEN PROCsplit
  203   SYS"Wimp_ReadPixTrans",512,big%,big%+16,,,,scale%,pix%
  204   SYSSpriteOp%,40+512,big%,big%+16 TO ,,,,,,mode%
  205   SYSReadMode%,mode%,3 TO ,,ncolour%
  206   IF ncolour%=63 THEN SYS"ColourTrans_SelectTable",mode%,0,-1,-1,pix%
  207  WHEN &400C0:
  208   sx%=block%!24:sy%=block%!28
  209   CASE block%!32 OF
  210    WHEN 6:PROCmakelist
  211    WHEN 7:
  212     FOR B%=0 TO 15:PROCtick(col%,B%,0):NEXT
  213     CASE block%!36 OF
  214      WHEN 0:PROCtick(col%,cb%,-1)
  215      WHEN 1:PROCtick(col%,cy%,-1)
  216      WHEN 2:PROCtick(col%,cn%,-1)
  217     ENDCASE
  218     $col%=FNmessage("Men8."+STR$(block%!36+1))
  219     SYS"Wimp_CreateSubMenu",,col%,sx%,sy%
  220    WHEN 8:$FNtext(wid%,1)=STR$b%:SYS"Wimp_CreateSubMenu",,wid%,sx%,sy%
  221   ENDCASE
  222 ENDCASE
  223ENDPROC
  224
  225DEFPROCmakelist
  226 A%=lis%+28:!A%=0:PROCtick(lis%,0,default$=""):index%=0
  227 REPEAT
  228  SYS"XOS_GBPB",10,"<PuzPic$Dir>",rep%,1,index%,255,0 TO ,,,,index%;flag%
  229  IF index%=1 AND (flag%AND1)=0 THEN !A%+=2
  230  IF index%<>-1 AND ((!rep%AND&FFF00)>>8)=&FF9 AND (flag%AND1)=0 THEN
  231   A%+=24:$(A%+12)=FNstring(rep%+20):!A%=0:A%!4=0:A%!8=&7000021
  232   IF "<PuzPic$Dir>."+$(A%+12)=default$ THEN !A%=1
  233  ENDIF
  234 UNTIL index%=-1 OR flag%AND1
  235 !A%+=128:SYS"Wimp_CreateSubMenu",,lis%,sx%,sy%
  236ENDPROC
  237
  238DEFFNstring(ptr%):LOCAL A$:WHILE ?ptr%<>0:A$+=CHR$(?ptr%):ptr%+=1:ENDWHILE:=A$
  239
  240DEFPROCdataload(type%,path$)
  241 IF type%=&FF9 THEN default$=path$:PROCloadsprite(path$):PROCsplit:PROCvoidmain
  242ENDPROC
  243
  244REM ***************  Clicks
  245
  246DEFPROCmakepointer(A$):SYS"XWimp_SpriteOp",36,,"ptr_"+A$,2,0,0,0,0:ENDPROC
  247
  248DEFPROCclick(window%,icon%,button%,X%,Y%)
  249 IF ((button%=1 AND window%>0) OR button%AND64) AND window%<>main% THEN PROCstartdrag
  250 CASE window% OF
  251  WHEN -2:
  252   CASE button% OF
  253    WHEN 1:PROCopen(view%)
  254    WHEN 2:PROCmenu(X%-64,96+44*11+50)
  255    WHEN 4:PROCopen(main%)
  256   ENDCASE
  257  WHEN helpw%,view%:IF button%=2 THEN PROCmenu(X%-64,Y%)
  258  WHEN timew%:IF button%=2 THEN PROCmenu(X%-64,Y%)
  259   IF icon%=4 THEN
  260    !block%=highw%:SYS GetWindow%,,block%:SYS &35,-1,11 TO ,,W%:SYS &35,-1,12 TO ,,H%
  261    SYS &35,-1,4 TO ,,A%:SYS &35,-1,5 TO ,,U%:W%=(W%+1)<<A%:H%=(H%+1)<<U%
  262    winW%=block%!12-block%!4:winH%=block%!16-block%!8:block%!4=W%/2-winW%/2
  263    block%!12=block%!4+winW%:block%!8=H%/2-winH%/2:block%!16=block%!8+winH%
  264    SYSOpenWindow%,,block%
  265   ENDIF
  266  WHEN main%:IF button%=2 THEN PROCmenu(X%-64,Y%) ELSE IF (tflag%AND2)=0 THEN PROCmainclick(X%,Y%):PROCpercent ELSE IF button%AND64 PROCstartdrag
  267  WHEN win%:IF button%=2 THEN PROCmenu(X%-64,Y%)
  268   IF icon%=3 THEN
  269    !block%=win%:SYSCloseWindow%,,block%
  270    IF winH%=432 THEN
  271     PROCmenushade(bar%,1,0):PROCmenushade(bar%,8,0)
  272     PROCicontext(highw%,(b%-2)*4+1,$FNtext(win%,5))
  273     PROCicontext(highw%,(b%-2)*4+2,$FNtext(timew%,1))
  274     PROCicontext(highw%,(b%-2)*4+3,LEFT$(TIME$,15))
  275    ENDIF
  276   ENDIF
  277  WHEN highw%:
  278   IF button%<>2 THEN
  279    IF icon%=36 THEN
  280     FOR A%=3 TO 10:$FNtable(A%,1)="Chris Morison":$FNtable(A%,2)="99:59:59"
  281      $FNtable(A%,3)="Wed,19 Jan 1994":NEXT
  282     !block%=highw%:SYSGetWindow%,,block%:SYSRedraw%,highw%,block%!20,block%!8-block%!16+block%!24,block%!12-block%!4+block%!20,block%!24
  283    ENDIF
  284   ELSE PROCmenu(X%-64,Y%)
  285   ENDIF
  286  WHEN wid%:
  287   tempb%=VAL($FNtext(wid%,1))
  288   CASE icon% OF
  289    WHEN 0:IF button%=1 THEN tempb%+=1 ELSE IF button%=4 THEN tempb%-=1
  290    WHEN 2:IF button%=1 THEN tempb%-=1 ELSE IF button%=4 THEN tempb%+=1
  291    WHEN 3:
  292     b%=VAL($FNtext(wid%,1)):PROCsplit:PROCunmix:PROCshuffle:PROCvoidmain
  293     IF button%=4 THEN SYSCreateMenu%,,-1
  294   ENDCASE
  295   IF tempb%<3 THEN tempb%=3 ELSE IF tempb%>10 THEN tempb%=10
  296   PROCicontext(wid%,1,STR$tempb%)
  297 ENDCASE
  298ENDPROC
  299
  300DEFPROCstartdrag
  301dragging%=window%:!block%=window%:SYS GetWindow%,,block%:dx%=X%-block%!4:dy%=block%!16-Y%:PROCmakepointer("hand")
  302ENDPROC
  303
  304DEFPROCmainclick(x%,y%)
  305 block%!0=main%:SYSGetInfo%,,block%
  306 wwidth%=block%!52-block%!44:wheight%=block%!48-block%!56
  307 SYSGetWindow%,,block%:xo%=block%!4-block%!20:yo%=block%!16-block%!24
  308 mx%=(x%-xo%)DIVxstep:my%=(yo%-y%)DIVystep:oldx%=bx%:oldy%=by%:flag%=0
  309 IF mx%=b% THEN mx%=b%-1 ELSE IF mx%<0 THEN mx%=0
  310 IF my%=b% THEN my%=b%-1 ELSE IF my%<0 THEN my%=0
  311 IF my%=by% AND mx%=bx% AND watchno%<>mx%+my%*b%+1 AND mx%+my%*b%+1<>b%*b% THEN
  312   watchno%=mx%+my%*b%+1:IF dragging%=0 THEN dragging%=window%
  313   Y%=-1:REPEAT:Y%+=1:X%=-1:REPEAT:X%+=1:UNTIL s%(X%,Y%)=watchno% OR X%>b%-2:UNTIL s%(X%,Y%)=watchno%:SYSRedraw%,main%,X%*xstep,-(Y%+1)*ystep,(X%+1)*xstep,-Y%*ystep
  314 ENDIF 
  315 IF my%=by% THEN
  316   WHILE mx%>bx%:s%(bx%,by%)=s%(bx%+1,by%):bx%+=1:ENDWHILE
  317   WHILE mx%<bx%:s%(bx%,by%)=s%(bx%-1,by%):bx%-=1:ENDWHILE
  318   IF oldx%<bx%THEN x0%=oldx%*xstep:x1%=(bx%+1)*xstep ELSE x0%=bx%*xstep:x1%=(oldx%+1)*xstep
  319   s%(bx%,by%)=0:SYSRedraw%,main%,x0%,-(by%+1)*ystep,x1%,-by%*ystep
  320   x0%=(x0%/xstep)*40:x1%=(x1%/xstep)*40:SYSRedraw%,helpw%,x0%,-(by%+1)*40,x1%,-by%*40
  321 ELSE
  322  IF mx%=bx% THEN
  323    WHILE my%>by%:s%(bx%,by%)=s%(bx%,by%+1):by%+=1:ENDWHILE
  324    WHILE my%<by%:s%(bx%,by%)=s%(bx%,by%-1):by%-=1:ENDWHILE
  325    IFoldy%<by%THEN y0%=(by%+1)*ystep:y1%=oldy%*ystep ELSE y0%=(oldy%+1)*ystep:y1%=by%*ystep
  326    s%(bx%,by%)=0:SYSRedraw%,main%,bx%*xstep,-y0%,(bx%+1)*xstep,-y1%
  327    y0%=(y0%/ystep)*40:y1%=(y1%/ystep)*40:SYSRedraw%,helpw%,bx%*40,-y0%,(bx%+1)*40,-y1%
  328    ELSE IF (button%AND64) THEN PROCstartdrag
  329   ENDIF
  330 ENDIF
  331ENDPROC
  332
  333DEFPROCopen(window%)
  334 CASE window% OF
  335  WHEN main%
  336   puzopen%=TRUE:PROCtick(bar%,2,-1)
  337   IF tflag%=0 THEN timestarted%+=now%-delay%:delay%=0
  338   tflag%=tflag%OR1
  339  WHEN view%:viewopen%=TRUE:PROCtick(bar%,3,-1)
  340  WHEN timew%:timer%=TRUE:PROCtick(bar%,4,-1):PROCtime
  341 ENDCASE
  342 !rep%=window%:SYS GetWindow%,,rep%:rep%!28=-1:SYS OpenWindow%,,rep%
  343ENDPROC
  344
  345REM ***************  Menus
  346
  347DEFPROCmenuselect  
  348 flag%=0
  349 CASE !block% OF
  350  WHEN 1:PROCshuffle:PROCvoidmain
  351  WHEN 2
  352   IF puzopen% THEN
  353    !block%=main%:SYS CloseWindow%,,block%:PROCtick(bar%,2,0):puzopen%=0
  354    tflag%=tflag%AND2:IF tflag%=0 THEN delay%=now%
  355   ELSE PROCopen(main%)
  356   ENDIF
  357  WHEN 3:IF viewopen% THEN !block%=view%:SYS CloseWindow%,,block%:PROCtick(bar%,3,0):viewopen%=0 ELSE PROCopen(view%)
  358  WHEN 4:IF timer% THEN !block%=timew%:SYS CloseWindow%,,block%:PROCtick(bar%,4,0):timer%=0 ELSE PROCtime:PROCopen(timew%)
  359  WHEN 5:h%=help%
  360   IF help%>0 THEN PROCtick(hel%,help%-1,0)
  361   CASE block%!4 OF
  362    WHEN -1:IF help%>0 THEN help%=0
  363    WHEN 0:IF help%=1 THEN help%=0 ELSE help%=1:PROCtick(hel%,0,-1):PROCopen(helpw%)
  364    WHEN 1:IF help%=2 THEN help%=0 ELSE help%=2:PROCtick(hel%,1,-1)
  365   ENDCASE
  366   IF help%<>1 AND h%=1 THEN !block%=helpw%:SYS CloseWindow%,,block%
  367   PROCtick(bar%,5,help%>0)
  368   SYSRedraw%,main%,bx%*xstep,-(by%+1)*ystep,(bx%+1)*xstep,-by%*ystep
  369  WHEN 6:
  370   IF block%!4>0 THEN
  371    default$="<PuzPic$Dir>."+$(lis%+40+24*block%!4)
  372    PROCloadsprite(default$):flag%=-1
  373    PROCsplit:PROCvoidmain
  374   ELSE IF block%!4=0 THEN default$="":PROCsplit:PROCvoidmain
  375   ENDIF
  376  WHEN 7:
  377   CASE block%!4 OF
  378    WHEN 0:PROCtick(col%,cb%,0):cb%=block%!8:PROCvoidmain:PROCtick(col%,cb%,-1)
  379    WHEN 1:PROCtick(col%,cy%,0):cy%=block%!8:PROCtick(col%,cy%,-1):SYSRedraw%,main%,bx%*xstep,-(by%+1)*ystep,(bx%+1)*xstep,-by%*ystep
  380    WHEN 2:PROCtick(col%,cn%,0):cn%=block%!8:PROCtick(col%,cn%,-1):SYSRedraw%,main%,bx%*xstep,-(by%+1)*ystep,(bx%+1)*xstep,-by%*ystep
  381   ENDCASE
  382   PROCvoidhelp
  383  WHEN 9:
  384   IF tflag%=1 THEN T%=now%-timestarted% ELSE T%=delay%-timestarted%
  385   F%=OPENOUT"<Puz$Dir>.Default":PRINT#F%,default$,b%,cb%,cy%,cn%,help%
  386   FOR Y%=0 TO b%-1:FOR X%=0 TO b%-1:PRINT#F%,s%(X%,Y%):NEXT,
  387   PRINT#F%,puzopen%,viewopen%,timer%,T%
  388   !block%=main%:SYS GetWindow%,,block%
  389   PRINT#F%,block%!4,block%!8,block%!12,block%!16,block%!20,block%!24
  390   !block%=view%:SYS GetWindow%,,block%:PRINT#F%,block%!4,block%!8,block%!12,block%!16
  391   !block%=helpw%:SYS GetWindow%,,block%:PRINT#F%,block%!4,block%!16
  392   !block%=timew%:SYS GetWindow%,,block%:PRINT#F%,block%!4,block%!8,block%!12,block%!16
  393   FOR A%=3 TO 10:PRINT#F%,$FNtable(A%,1),$FNtable(A%,2),$FNtable(A%,3):NEXT
  394   CLOSE#F%
  395  WHEN 10:quit%=TRUE
  396 ENDCASE
  397 SYS Pointer%,,block%:IF block%!8=1 THEN PROCmenu(0,0):IF flag% PROCmakelist
  398ENDPROC
  399
  400DEFPROCvoidmain
  401 !block%=main%:SYSGetWindow%,,block%:SYSRedraw%,main%,block%!20,block%!8-block%!16+block%!24,block%!12-block%!4+block%!20,block%!24
  402 !block%=view%:SYSGetWindow%,,block%:SYSRedraw%,view%,block%!20,block%!8-block%!16+block%!24,block%!12-block%!4+block%!20,block%!24
  403 PROCvoidhelp
  404ENDPROC
  405
  406DEFPROCvoidhelp:!block%=helpw%:SYSGetWindow%,,block%:SYSRedraw%,helpw%,block%!20,block%!8-block%!16+block%!24,block%!12-block%!4+block%!20,block%!24
  407ENDPROC
  408
  409DEFPROCmenu(mx%,my%):SYS CreateMenu%,,bar%,mx%,my%:ENDPROC
  410
  411DEFPROCcreatebarmenu
  412 PROCcreatecolourmenu
  413 PROCcreatecolmenu
  414 PROCcreatehelpmenu
  415 DIM bar% 24+28*11,lis% 24+28*78
  416 $lis%=FNmessage("Men7"):lis%!12=&00070207:lis%!16=12*16:lis%!20=44:lis%!24=0:A%=lis%+28
  417 !A%=2:A%!4=0:A%!8=&7000021:L%=FNmaketext(A%,FNmessage("Men7.1"))
  418 IF L%>11 THEN lis%!16=L%*16+16
  419 $bar%=FNmessage("Men0"):bar%!12=&00070207:bar%!20=44:bar%!24=0:A%=bar%+4
  420 A%+=24:!A%=0:A%!4=info%:A%!8=&7000021:A%+=24:!A%=2:A%!4=0:A%!8=&7000021
  421 A%+=24:!A%=0:A%!4=0:A%!8=&7000021:A%+=24:!A%=0:A%!4=0:A%!8=&7000021
  422 A%+=24:!A%=0:A%!4=0:A%!8=&7000021:A%+=24:!A%=2:A%!4=hel%:A%!8=&7000021
  423 A%+=24:!A%=8:A%!4=info%:A%!8=&7000021:A%+=24:!A%=0:A%!4=colm%:A%!8=&7000021
  424 A%+=24:!A%=8:A%!4=wid%:A%!8=&7000021:A%+=24:!A%=0:A%!4=0:A%!8=&7000021
  425 A%+=24:!A%=128:A%!4=0:A%!8=&7000021
  426 C%=LEN$bar%:A%=bar%+4:FOR B%=1 TO 11:A%+=24
  427 L%=FNmaketext(A%,FNmessage("Men"+STR$B%)):IF L%>C% THEN C%=L%
  428 NEXT:bar%!16=16*C%+16
  429ENDPROC
  430
  431DEFFNmaketext(ptr%,A$):LOCAL A%
  432 IF LENA$>11 THEN
  433  DIM A% LEN(A$):ptr%!12=A%:ptr%!16=0:ptr%!20=LEN(A$):$A%=A$:ptr%!8+=(1<<8)
  434 ELSE $(ptr%+12)=A$
  435 ENDIF
  436=LEN(A$)
  437
  438DEFPROCcreatecolourmenu
  439 DIM col% 24+28*15
  440 $col%=FNmessage("Men7"):col%!12=&00070207:col%!16=5*16:col%!20=44:col%!24=0:A%=col%+4
  441 FOR B%=0 TO 15:A%+=24:!A%=0:A%!4=0
  442 A%!8=&29+(B%<<28):IF B%<4 OR B%=9 OR B%=12 OR B%=14 THEN A%!8+=(7<<24) 
  443 $(A%+12)=STR$B%:NEXT:!A%+=128
  444ENDPROC
  445
  446DEFPROCcreatecolmenu
  447 DIM colm% 24+28*15          
  448 $colm%=FNmessage("Men8"):colm%!12=&00070207:colm%!20=44:colm%!24=0:A%=colm%+4
  449 A%+=24:!A%=8:A%!4=col%:A%!8=&7000021:A%+=24:!A%=8:A%!4=col%:A%!8=&7000021
  450 A%+=24:!A%=8+128:A%!4=col%:A%!8=&7000021:C%=LEN$colm%
  451 A%=colm%+4:FOR B%=1 TO 3:A%+=24
  452 L%=FNmaketext(A%,FNmessage("Men8."+STR$B%)):IF L%>C% THEN C%=L%+1
  453 NEXT:colm%!16=16*C%
  454ENDPROC
  455
  456DEFPROCcreatehelpmenu
  457 DIM hel% 24+28*3
  458 $hel%=FNmessage("Men6"):hel%!12=&00070207:hel%!20=44:hel%!24=0:A%=hel%+4:C%=LEN$hel%
  459 FOR B%=1 TO 2:A%+=24:!A%=0:A%!4=0:A%!8=&7000021:
  460 L%=FNmaketext(A%,FNmessage("Men6."+STR$B%)):IF L%>C% THEN C%=L%
  461 NEXT:!A%+=128:hel%!16=C%*16+16
  462ENDPROC
  463
  464REM ***************  Icon Manipulation
  465
  466DEFPROCiconshade(window%,icon%,flag%):LOCALA%:A%=1:IFflag%=-1 THEN flag%=1:A%=0
  467 !rep%=window%:rep%!4=icon%:rep%!8=flag%*(1<<22):rep%!12=A%<<22
  468 SYS SetIcon%,,rep%
  469ENDPROC  
  470
  471DEFPROCiconselect(window%,icon%,flag%):LOCALA%:!rep%=window%:rep%!4=icon%
  472 A%=1:IF flag%=-1 THEN flag%=1:A%=0
  473 rep%!8=flag%<<21:rep%!12=A%<<21:SYS SetIcon%,,rep%
  474ENDPROC   
  475
  476DEFFNtext(window%,icon%):!rep%=window%:rep%!4=icon%:SYS GetIcon%,,rep%
  477=rep%!28  
  478
  479DEFFNtable(n%,x%)
  480 rep%!4=(n%-2)*4+x%:!rep%=highw%:SYSGetIcon%,,rep%
  481=rep%!28
  482
  483DEFPROCicontext(window%,icon%,text$)
  484 !rep%=window%:rep%!4=icon%:SYS GetIcon%,,rep%:$(rep%!28)=text$
  485 rep%!8=0:rep%!12=0:SYS SetIcon%,,rep%
  486ENDPROC
  487
  488DEFPROCtick(menu%,item%,flag%):LOCALA%         
  489 A%=menu%+28+24*item%:!A%=!A%AND&FE:IF flag% THEN !A%+=1
  490ENDPROC
  491
  492DEFPROCmenushade(menu%,item%,flag%):LOCALA%
  493 A%=menu%+36+24*item%:!A%=!A%AND&FFBFFFFF:IF flag% THEN !A%+=(1<<22)
  494ENDPROC
  495
  496REM ***************  Messages
  497
  498DEFPROCerror:!block%=255:CLOSE#0
  499 $(block%+4)=REPORT$+"."+FNmessage("Click")
  500 SYS Report%,block%,3,app$ TO ,flag%
  501 IF flag%=2 THEN PROCquit
  502 default$="":b%=3:PROCsplit:PROCvoidmain
  503ENDPROC
  504
  505DEFPROCreport(rep$,flag%):LOCALA$,F%
  506 !rep%=255:$(rep%+4)=rep$+CHR$0
  507 A$=FNmessage("Mess")+" "+FNmessage("from")+" "+app$:F%=17
  508 IF flag% THEN F%-=8:A$=app$
  509 SYS Report%,rep%,F%,A$
  510ENDPROC
  511
  512DEFPROCloadmessages:F%=OPENIN"<Puz$Dir>.Messages":A%=0:REPEAT:A$=GET$#F%:A%+=1:UNTIL EOF#F%:DIM M$(A%):PTR#F%=0:FOR B%=0 TO A%:M$(B%)=GET$#F%:NEXT:CLOSE#F%
  513ENDPROC
  514
  515DEFFNmessage(S$):LOCALA%,A$,F%:A%=-1:F%=0:WHILE A%<DIM(M$(),1) AND F%=0:A%+=1:F%=INSTR(M$(A%),S$):ENDWHILE:=MID$(M$(A%),INSTR(M$(A%),":")+1)
  516
  517REM ***************  Initialising
  518
  519DEFPROCinit:SYSHourOn%
  520 dragging%=0:dx%=0:dy%=0:watch%=FALSE:watchno%=0:quit%=TRUE
  521 PROCbaricon("!puzzle"):PROCiconsprites
  522 F%=OPENIN"<Puz$Dir>.Default":INPUT #F%,default$,b%,cb%,cy%,cn%,help%:DIM s%(9,9)
  523 FOR Y%=0 TO b%-1:FOR X%=0 TO b%-1:INPUT#F%,s%(X%,Y%):IF s%(X%,Y%)=0 THEN bx%=X%:by%=Y%
  524 NEXT,:INPUT#F%,puzopen%,viewopen%,timer%,T%
  525 SYSGetTime% TO delay%:now%=delay%:timestarted%=delay%-T%
  526 PROCwindows:FOR A%=3 TO 10:INPUT#F%,$FNtable(A%,1),$FNtable(A%,2),$FNtable(A%,3):NEXT
  527 CLOSE#F%:PROCcreatebarmenu:first%=FALSE
  528 E$=FNmessage("ErrFind"):C$=FNmessage("NotFind")
  529 IF INSTR(E$,"%1") THEN E$=LEFT$(E$,INSTR(E$,"%1")-1)+default$+MID$(E$,INSTR(E$,"%1")+2) 
  530 IF INSTR(C$,"%0") THEN C$=LEFT$(C$,INSTR(C$,"%0")-1)+default$+MID$(C$,INSTR(C$,"%0")+2)
  531 LOCAL ERROR
  532 IF default$<>"" THEN
  533  A$=default$:WHILE INSTR(A$,"."):A$=MID$(A$,INSTR(A$,".")+1):ENDWHILE
  534  $block%=LEFT$(default$,INSTR(default$,A$)-2):$scale%=A$:index%=0:A%=-1
  535  REPEAT                                              
  536   ON ERROR LOCAL A%=-2:PROCquickerror:default$="":index%=-1
  537   IF index%>-1 SYS&0C,10,block%,rep%,1,index%,50,scale% TO ,,,n%,index%:IF n%<>0 THEN A%=0
  538  UNTIL index%=-1
  539  IF A%=-1 THEN PROCreport(C$,0):default$=""
  540 ENDIF   
  541 RESTORE ERROR                      
  542 IF default$<>"" THEN PROCloadsprite(default$)
  543 PROCsplit:IF help%>0 THEN PROCtick(hel%,help%-1,-1):PROCtick(bar%,5,-1)
  544 tflag%=0:PROCtime:PROCpercent:IF timer% THEN PROCopen(timew%)
  545 IF puzopen% THEN PROCopen(main%)
  546 IF viewopen% THEN PROCopen(view%)         
  547 IF help%=1 THEN !block%=helpw%:SYS GetWindow%,,block%:block%!12=block%!4+b%*40+4:block%!8=block%!16-40*b%-4:SYS OpenWindow%,,block%
  548 quit%=FALSE:SYSHourOff%:first%=TRUE      
  549ENDPROC
  550
  551DEFPROCquickerror:IF INSTR(E$,"%0") THEN PROCreport(LEFT$(E$,INSTR(E$,"%0")-1)+REPORT$+MID$(E$,INSTR(E$,"%0")+2),0) ELSE PROCreport(E$,0)
  552ENDPROC
  553
  554DEFPROCunmix
  555 A%=0:FOR Y%=0 TO b%-1:FOR X%=0 TO b%-1:A%+=1:s%(X%,Y%)=A%:NEXT,:s%(b%-1,b%-1)=0
  556 bx%=b%-1:by%=b%-1
  557ENDPROC
  558
  559DEFPROCshuffle:SYSHourOn%
  560 FOR A%=1 TO 10*b%*b%
  561  T%=RND(b%)-1
  562  WHILE T%>bx%:s%(bx%,by%)=s%(bx%+1,by%):bx%+=1:ENDWHILE
  563  WHILE T%<bx%:s%(bx%,by%)=s%(bx%-1,by%):bx%-=1:ENDWHILE
  564  T%=RND(b%)-1
  565  WHILE T%>by%:s%(bx%,by%)=s%(bx%,by%+1):by%+=1:ENDWHILE
  566  WHILE T%<by%:s%(bx%,by%)=s%(bx%,by%-1):by%-=1:ENDWHILE
  567 NEXT
  568 s%(bx%,by%)=0:delay%=0:timestarted%=now%:IF (tflag%AND1)=0 THEN delay%=now%
  569 PROCtime:PROCpercent
  570 SYSHourOff%
  571ENDPROC
  572
  573DEFPROCswinumbers
  574 SYS"OS_SWINumberFromString",,"OS_SWINumberFromString" TO String%
  575 SYS String%,,"Wimp_GetIconState" TO GetIcon%   
  576 SYS String%,,"Wimp_CreateIcon" TO CreateIcon%
  577 SYS String%,,"Wimp_SetIconState" TO SetIcon% 
  578 SYS String%,,"Wimp_GetWindowState" TO GetWindow%  
  579 SYS String%,,"Wimp_ForceRedraw" TO Redraw%
  580 SYS String%,,"Wimp_GetWindowInfo" TO GetInfo%    
  581 SYS String%,,"Wimp_LoadTemplate" TO LoadTemplate%
  582 SYS String%,,"Wimp_CreateWindow" TO CreateWindow%
  583 SYS String%,,"Wimp_OpenWindow" TO OpenWindow%
  584 SYS String%,,"Wimp_CloseWindow" TO CloseWindow%
  585 SYS String%,,"Wimp_CreateMenu" TO CreateMenu%
  586 SYS String%,,"Wimp_GetPointerInfo" TO Pointer%   
  587 SYS String%,,"Wimp_SetColour" TO SetColour%
  588 SYS String%,,"Wimp_ReportError" TO Report%  
  589 SYS String%,,"Wimp_Poll" TO Poll%         
  590 SYS String%,,"Wimp_PollIdle" TO PollIdle%  
  591 SYS String%,,"OS_SpriteOp" TO SpriteOp%
  592 SYS String%,,"OS_ReadMonotonicTime" TO GetTime%
  593 SYS String%,,"OS_ReadModeVariable" TO ReadMode%
  594 SYS String%,,"Hourglass_On" TO HourOn%            
  595 SYS String%,,"Hourglass_Smash" TO HourOff%
  596ENDPROC
  597
  598DEFPROCbaricon(A$)
  599 !block%=-1:block%!4=0:block%!8=0:block%!12=68:block%!16=68:block%!20=&3002
  600 $(block%+24)=A$:SYS CreateIcon%,,block% TO bar%
  601ENDPROC
  602
  603DEFPROCwindows
  604 indsize%=910
  605 DIM name% 11,ind% indsize%
  606 indtop%=ind%+indsize%
  607 SYS"Wimp_OpenTemplate",,"<Puz$Dir>.Templates"
  608 $name%="Info":SYS LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 TO ,,ind%
  609 block%!64=iconarea%:SYS CreateWindow%,,block% TO info%     
  610 $name%="Main":SYS LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 TO ,,ind%
  611 title%=block%!72:INPUT#F%,!block%,block%!4,block%!8,block%!12,block%!16,block%!20
  612 SYS CreateWindow%,,block% TO main%
  613 $name%="View":SYS LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 TO ,,ind%
  614 INPUT#F%,!block%,block%!4,block%!8,block%!12:$(block%!72)=FNmessage("Men4")
  615 SYS CreateWindow%,,block% TO view%
  616 $name%="Help":SYS LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 TO ,,ind%
  617 $(block%!72)=FNmessage("Men6"):INPUT#F%,!block%,block%!12
  618 SYS CreateWindow%,,block% TO helpw%  
  619 $name%="Width":SYS LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 TO ,,ind%
  620 $(block%!72)=FNmessage("Men9"):SYS CreateWindow%,,block% TO wid%
  621 $name%="Timer":SYS LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 TO ,,ind%
  622 INPUT#F%,!block%,block%!4,block%!8,block%!12:$(block%!72)=FNmessage("Men5")
  623 SYS CreateWindow%,,block% TO timew%                            
  624 $name%="Win":SYS LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 TO ,,ind%
  625 SYS CreateWindow%,,block% TO win%                              
  626 $name%="Scores":SYS LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 TO ,,ind%
  627 SYS CreateWindow%,,block% TO highw%
  628 SYS"Wimp_CloseTemplate":PROCicontext(info%,1,FNmessage("TaskID"))
  629 PROCicontext(wid%,3,FNmessage("OK"))
  630 PROCicontext(info%,2,FNmessage("Purpose")):PROCicontext(info%,4,FNmessage("Version"))
  631ENDPROC
  632
  633DEFPROCiconsprites
  634 F%=OPENIN"<Puz$Dir>.Sprites":A%=EXT#F%+8:DIM iconarea% A%
  635 !iconarea%=A%:iconarea%!8=16:CLOSE#F%
  636 $block%="<Puz$Dir>.Sprites":SYSSpriteOp%,10+256,iconarea%,block%
  637ENDPROC
  638
  639DEFPROCloadsprite(path$):SYSHourOn%
  640 A$=path$:WHILE INSTR(A$,"."):A$=MID$(A$,INSTR(A$,".")+1):ENDWHILE
  641 $title%=FNmessage("TaskID")+" - "+A$
  642 F%=OPENIN(path$):A%=EXT#F%+16:CLOSE#F%:B%=FNmakemem(A%+16,A%/2)
  643 IF NOT B% THEN
  644  SYSSpriteOp%,&10A,big%,path$
  645  SYSSpriteOp%,40+512,big%,big%+16 TO ,,,swidth%,sheight%,,mode%
  646  SYSSpriteOp%,15+512,small%,small%+16,0,swidth%/9,sheight%/9,mode%
  647  B%=FNmakemem(A%+16,!(small%+16)*99+16)
  648 ENDIF
  649 IF B% THEN
  650  PROCreport(FNmessage("NoMem"),0):default$="":b%=3:B%=FNmakemem(mem%(0,0),mem%(2,0))
  651 ELSE
  652  SYSSpriteOp%,40+512,big%,big%+16 TO ,,,,,,mode%
  653  SYSReadMode%,mode%,3TO,,A%:SYSReadMode%,mode%,4TO,,B%:SYSReadMode%,mode%,5TO,,C%
  654  SYSReadMode%,-1,3TO,,D%:SYSReadMode%,-1,4TO,,E%:SYSReadMode%,-1,5TO,,F%
  655  width%=swidth%*1<<B%:height%=sheight%*1<<C%
  656  IF width%<120 OR height%<116 THEN
  657   PROCreport(FNmessage("Small"),0)
  658   default$="":big%!8=16:SYSSpriteOp%,9+256,big%:small%!8=16:SYSSpriteOp%,9+256,small%
  659  ELSE
  660   IF A%>D% THEN
  661    A$=FNmessage("Mode")
  662    A$=LEFT$(A$,INSTR(A$,"%0")-1)+STR$(mode%)+MID$(A$,INSTR(A$,"%0")+2)
  663    PROCreport(A$,0)
  664   ENDIF
  665  ENDIF
  666 ENDIF
  667ENDPROC:SYSHourOff%
  668
  669DEFFNmakemem(b%,s%):LOCAL flag%,S%,F%,T%
  670 IF b%<mem%(0,0) THEN b%=mem%(0,0)            
  671 IF s%<mem%(2,0) THEN s%=mem%(2,0)+100*1024
  672 T%=b%+s%+1024:SYS"Wimp_SlotSize",-1,-1 TO S%,,F%
  673 IF S%-HIMEM+&8004<T% AND F%<T%-S%+HIMEM-&8004 THEN
  674  flag%=-1:big%=0:small%=0:IF b%=mem%(0,0) THEN PROCnomemory
  675 ELSE
  676  SYS"Wimp_SlotSize",HIMEM-&8004+T%,-1:flag%=0
  677  IF big%=0 OR !big%<>b% THEN big%=HIMEM+4:!big%=b%:big%!8=16:SYSSpriteOp%,9+256,big%
  678  small%=big%+!big%+4:!small%=s%:small%!8=16:SYSSpriteOp%,9+256,small%
  679 ENDIF                              
  680=flag%
  681
  682DEFPROCsplit:SYSHourOn%
  683 IF default$="" THEN PROCmakesprite
  684 PROCsplitsprite:SYSHourOff%
  685ENDPROC
  686
  687DEFPROCmakesprite:$sprite%="sprite":$title%=app$ 
  688 !block%=main%:SYS GetWindow%,,block%
  689 SYSRedraw%,-1,block%!4,block%!16,block%!12,block%!16+44
  690 SYSReadMode%,-1,3 TO ,,ncolour%:IF ncolour%<63 THEN mode%=12 ELSE mode%=15
  691 IF mode%=12 THEN A%=FNmakemem(mem%(0,b%-3),mem%(2,b%-3)) ELSE A%=FNmakemem(mem%(1,b%-3),mem%(3,b%-3))
  692 IF A% THEN PROCreport(FNmessage("NoMem"),0):b%=3:A%=FNmakemem(mem%(0,0),mem%(2,0))
  693 SYSSpriteOp%,15+256,big%,sprite%,0,37*b%+1,19*b%+1,mode%
  694 SYSSpriteOp%,60+256,big%,sprite%,0
  695 SYS"ColourTrans_InvalidateCache"
  696 VDU5:A%=0
  697 FOR Y%=b%-1 TO 0 STEP -1
  698  FOR X%=0 TO b%-1
  699   A%+=1:B%=LEN(STR$A%)*8
  700   ORIGIN X%*74,Y%*76                     
  701   SYSSetColour%,7:RECTANGLEFILL 0,0,74,76
  702   IF A%<b%*b% THEN
  703    SYSSetColour%,3:RECTANGLEFILL 2,4,71,71
  704    SYSSetColour%,1:RECTANGLEFILL 2,4,4,71:RECTANGLEFILL 2,71,71,4
  705    SYSSetColour%,4:RECTANGLEFILL 8,4,63,4:RECTANGLEFILL 69,4,4,63
  706    MOVE4,4:DRAW 6,4:DRAW6,8:MOVE71,71:DRAWBY2,0:DRAWBY0,4
  707    SYSSetColour%,11:MOVE 38-B%,48:PRINT;A%
  708   ELSE
  709   ENDIF
  710  NEXT
  711 NEXT
  712 SYSSpriteOp%,60,0,0:ORIGIN 0,0
  713 SYS"ColourTrans_InvalidateCache"
  714ENDPROC
  715
  716DATA 8192,8192,9276,12940,17748,23316,28956,35968
  717DATA 8192,11764,18108,25820,34900,45960,57852,71112
  718DATA 8192,8192,10192,14856,20368,26728,33936,41992
  719DATA 8192,12076,19312,28156,38608,50668,64336,79612
  720
  721DEFPROCsplitsprite
  722 SYSSpriteOp%,9+512,small%
  723 SYS"Wimp_ReadPixTrans",512,big%,big%+16,,,,scale%,pix%
  724 SYSSpriteOp%,40+512,big%,big%+16 TO ,,,swidth%,sheight%,,mode%
  725 SYSReadMode%,mode%,3 TO ,,ncolour%                           
  726 IF ncolour%>=63 THEN SYS"ColourTrans_SelectTable",mode%,0,-1,-1,pix%
  727 SYSReadMode%,mode%,4 TO ,,xscale%:SYSReadMode%,mode%,5 TO ,,yscale%
  728 sheight%=b%*(sheight%DIVb%):swidth%=b%*(swidth%DIVb%)
  729 SYSReadMode%,-1,4 TO ,,xscal%:SYSReadMode%,-1,5 TO ,,yscal%
  730 width%=swidth%*1<<xscale%:height%=sheight%*1<<yscale%:A%=0
  731 xstep=width%/b%:ystep=height%/b%:q%=16/(1<<xscale%):r%=16/(1<<yscale%)
  732 SYS"ColourTrans_InvalidateCache"  
  733 FOR Y%=height%-ystep TO 0 STEP -ystep
  734  FOR X%=0 TO width%-xstep STEP xstep
  735   A%+=1
  736   IF A%<b%^2 THEN
  737    SYSSpriteOp%,15+256,small%,STR$A%,0,swidth%/b%,sheight%/b%,mode%
  738    SYSSpriteOp%,60+256,small%,STR$A%
  739    SYSSpriteOp%,34+512,big%,big%+16,-X%,-Y%
  740   ENDIF
  741  NEXT
  742 NEXT
  743 SYSSpriteOp%,60,0,0:SYS"ColourTrans_InvalidateCache"
  744 !block%=0:block%!4=-(sheight%-1)*1<<yscale%:block%!8=swidth%*1<<xscale%:block%!12=0
  745 SYS"Wimp_SetExtent",main%,block%:SYS"Wimp_SetExtent",view%,block%
  746 IF puzopen% AND first% THEN
  747  !block%=main%:SYS GetWindow%,,block%:block%!8=block%!16-sheight%*(1<<yscale%)
  748  block%!12=block%!4+swidth%*(1<<xscale%):SYSOpenWindow%,,block%
  749 ENDIF
  750 IF viewopen% AND first% THEN PROCopen(view%)
  751 !block%=0:block%!12=0:block%!8=40*b%+4:block%!4=-40*b%:SYS"Wimp_SetExtent",helpw%,block%
  752 !block%=helpw%:SYS GetWindow%,,block%:block%!12=block%!4+b%*40+4:block%!8=block%!16-40*b%-4:SYS OpenWindow%,,block%:IF help%<>1 OR NOTfirst% THEN SYS CloseWindow%,,block%
  753ENDPROC
J� block% 1696,sprite% 11,scale% 16,pix% 256,scale2% 16,H$(9),mem%(3,7)
-�swinumbers:ș&51 � page%:rep%=block%+256
0� � �#0:�"ERROR "+�$+" (errorcode "+Þ+")":�
)�loadmessages:app$=�message("TaskID")
*ș"Wimp_Initialise",200,&4B534154,app$
+� A%=0 � 3:� B%=0 � 7:� mem%(A%,B%):�:�
Gsmall%=0:big%=0:default$="-1":b%=3:A%=�makemem(mem%(0,0),mem%(2,0))
	�init
	� � �error              

șGetTime% � now%      

ȕ �quit%
 � dragging% �

$  ș Poll%,6192,block% � reason%
 �
  � timer% � tflag%=1 �
1   șPollIdle%,6192,block%,now%+100 � reason%
&  � ș Poll%,6193,block% � reason%
  �
�
 șGetTime% � now%
 Ȏ reason% �
"  �  0:� dragging% � �dragging
  �  1:�drawwindow(!block%)
  �  2:
$   � !block%=view% � block%!24=0
�   ș OpenWindow%,,block%:� !block%=view% � șRedraw%,view%,-block%!20,block%!8-block%!16+block%!24,block%!12-block%!4-block%!20,block%!24
"  �  3:ș CloseWindow%,,block%
   Ȏ !block% �
S    � main%:puzopen%=0:�tick(bar%,2,0):tflag%=tflag%�2:� tflag%=0 � delay%=now%
+    � view%:viewopen%=0:�tick(bar%,3,0)
8    � helpw%:help%=0:�tick(bar%,5,0):�tick(hel%,0,0)
 )    � timew%:timer%=0:�tick(bar%,4,0)
!   �
"%  �  4:� !block%=main% � watch%=0
#&  �  5:� !block%=main% � watch%=-1
$@  �  6:�click(block%!12,block%!16,block%!8,!block%,block%!4)
%  �  7:� *** Drag has ended
&  �  8:
'3   � !block%=win% � block%!4=5 � block%!24=13 �
(+    !block%=win%:șCloseWindow%,,block%
)    � winH%=432 �
*2     �menushade(bar%,1,0):�menushade(bar%,8,0)
+4     �icontext(highw%,(b%-2)*4+1,$�text(win%,5))
,6     �icontext(highw%,(b%-2)*4+2,$�text(timew%,1))
--     �icontext(highw%,(b%-2)*4+3,��$,15))
.	    �
/&   � ș"Wimp_ProcessKey",block%!24
0   �
1  �  9:�menuselect
2  � 10:� *** Scroll request
3  � 11:� *** Lose caret
4  � 12:� *** Gain caret
5  � 17,18:�receive
6 �             
7H � tflag%=1 � timer% � timetaken%�60<>(now%-timestarted%)�60 � �time
8�
9	�quit
:�
;
<
��quit
= ș"XHourglass_Smash"
>' � big%<>0 � ș"XOS_Module",7,,big%
?+ � small%<>0 � ș"XOS_Module",7,,small%
@* ș"XOS_ChangeDynamicArea",1,-16777216
A �#0:ș"XWimp_CloseDown"
B �
C�
D
E��nomemory
F*�report(�message("MustQuit"),-1):�quit
G�
H
I��time:� H%,S%,M%,A$
J�H%=now%:H%-=timestarted%:H%=H%/100:S%=H%�60:H%=H%�60:M%=H%�60:H%=H%�60:A$=�H%+":"+�-1*(M%<10),"0")+�M%+"."+�-1*(S%<10),"0")+�S%:�icontext(timew%,1,A$):timetaken%=now%-timestarted%
K�
L
M��dragging
N; ș Pointer%,,block%:x%=!block%:y%=block%!4:B%=block%!8
O � B%<>0 �
P  � watchno%=0 �
QI   !block%=dragging%:ș GetWindow%,,block%:block%!12+=x%-block%!4-dx%
RY   block%!8+=y%+dy%-block%!16:block%!4=x%-dx%:block%!16=y%+dy%:� B%<>1 � block%!28=-1
S   ș OpenWindow%,,block%
T  �
U� � dragging%=0:�makepointer("default"):� watchno%<>0 � Y%=-1:�:Y%+=1:X%=-1:�:X%+=1:� s%(X%,Y%)=watchno% � X%>b%-2:� s%(X%,Y%)=watchno%:watchno%=0:șRedraw%,main%,X%*xstep,-(Y%+1)*ystep,(X%+1)*xstep,-Y%*ystep
V �
W�
X    
Y��drawwindow(window%) 
Z Ȏ window% �
[  � main%:�drawmain
\  � view%:�drawview
]  � helpw%:�drawhelp
^ �
_�
`
a��drawmain
b& block%!0=main%:șGetInfo%,,block%
c= wwidth%=block%!52-block%!44:wheight%=block%!48-block%!56
d* ș"Wimp_RedrawWindow",,block% � more%
e3 xo%=block%!4-block%!20:yo%=block%!16-block%!24
f
 ȕ more%
g1  x1%=((block%!28-xo%)�xstep):� x1%<0 � x1%=0
h7  x2%=((block%!36-xo%)�xstep):� x2%>b%-1 � x2%=b%-1
i1  y1%=((yo%-block%!40)�ystep):� y1%<0 � y1%=0
j7  y2%=((yo%-block%!32)�ystep):� y2%>b%-1 � y2%=b%-1
k#  � Y%=y1% � y2%:� X%=x1% � x2%
l   � s%(X%,Y%)=0 �
m    � help%=2 �
nI    șSetColour%,cn%:ȓȐ xo%+X%*xstep,yo%-ystep-Y%*ystep,xstep,ystep
o     șSetColour%,cy%
p$     � y%=0 � b%-1:� x%=0 � b%-1
q�       � s%(x%,y%)=x%+1+y%*b% � (s%(x%,y%)=0 � x%=b%-1 � y%=b%-1) � ȓȐ xo%+X%*xstep+x%*(xstep/b%),yo%-Y%*ystep-(y%+1)*(ystep/b%),xstep/b%,ystep/b%
r     �:�
s     șSetColour%,cb%
t$     � y%=0 � b%-1:� x%=0 � b%-1
uW     ȓ xo%+X%*xstep+x%*(xstep/b%),yo%-Y%*ystep-(y%+1)*(ystep/b%),xstep/b%,ystep/b%
v     �:�
wK    � șSetColour%,cb%:ȓȐ xo%+X%*xstep,yo%-ystep-Y%*ystep,xstep,ystep
x	    �
y
   �  
zX   șSpriteOp%,52+256,small%,�(s%(X%,Y%)),xo%+X%*xstep,yo%-(Y%+1)*ystep,,scale%,pix%
{O   �watchno%=s%(X%,Y%)� �4,0:ȓȐ xo%+X%*xstep,yo%-(Y%+1)*ystep,xstep,ystep
|   �
}F   șSetColour%,cb%:ȓ xo%+X%*xstep,yo%-ystep-Y%*ystep,xstep,ystep
~	  �:�
+  ș"Wimp_GetRectangle",,block% � more%
� �
��
�
���drawhelp:A%=�(15)
�9 !block%=helpw%:ș"Wimp_RedrawWindow",,block% � more%
�
 ȕ more%
�  șSetColour%,cn%
�F  ȓȐ block%!28,block%!32,block%!36-block%!28,block%!40-block%!32
�  șSetColour%,cy%
�!  � y%=0 � b%-1:� x%=0 � b%-1
�p   � s%(x%,y%)=x%+1+y%*b% � (s%(x%,y%)=0 � x%=b%-1 � y%=b%-1) � ȓȐ block%!4+x%*40,block%!16-(y%+1)*40-4,40
�	  �:�
�  șSetColour%,cb%
�!  � y%=0 � b%-1:� x%=0 � b%-1
�1   ȓ block%!4+x%*40,block%!16-(y%+1)*40-4,40
�
  �:� 
�+  ș"Wimp_GetRectangle",,block% � more%
� �
��
�
�q��percent:T%=0:� y%=0 � b%-1:� x%=0 � b%-1:� s%(x%,y%)=x%+1+y%*b% � (s%(x%,y%)=0 � x%=b%-1 � y%=b%-1) � T%+=1
�C  �:�:@%=&1020201:�icontext(timew%,2,�(T%*(100/(b%*b%)))):@%=10
�Y  � T%<b%*b% � tflag%=tflag%�1 � tflag%=tflag%�2:șGetTime% � delay%:� quit%=0 � �win
��
�
���win:�time
�M �7:�icontext(win%,2,$�text(timew%,1)):!block%=win%:ș GetWindow%,,block%
�, ș &35,-1,11 � ,,W%:ș &35,-1,12 � ,,H%
�* ș &35,-1,4 � ,,A%:ș &35,-1,5 � ,,U%
�  W%=(W%+1)<<A%:H%=(H%+1)<<U%
�L winW%=block%!12-block%!4:winH%=180:Y$=$�text(timew%,1):O$=$�table(b%,2)
�q � ��Y$,�Y$,":")-1)<=��O$,�O$,":")-1) �  ��Y$,�Y$,":")+1,2)<=��O$,�O$,":")+1,2) � ��Y$,2)<��O$,2) � winH%=432
�3 block%!4=W%/2-winW%/2:block%!12=block%!4+winW%
�@ block%!8=H%/2-winH%/2:block%!16=block%!8+winH%:block%!28=-1
� șOpenWindow%,,block%
� � winH%=432 �
�U  A$=$�table(b%,1):�icontext(win%,5,A$):ș"Wimp_SetCaretPosition",win%,5,,,-1,�A$
�1  �menushade(bar%,1,-1):�menushade(bar%,8,-1)
� �
��
�
���drawview
�& block%!0=view%:șGetInfo%,,block%
�= wwidth%=block%!52-block%!44:wheight%=block%!48-block%!56
�3 xo%=block%!4-block%!20:yo%=block%!16-block%!24
�* ș"Wimp_RedrawWindow",,block% � more%
�A !scale2%=(block%!12-block%!4):scale2%!4=(block%!16-block%!8)
�( scale2%!8=width%:scale2%!12=height%
�6 � A%=0 � 12 � 4:scale2%!A%=scale2%!A%*scale%!A%:�
�
 ȕ more%
�F  șSpriteOp%,52+512,big%,big%+16,block%!4,block%!8,0,scale2%,pix%
�+  ș"Wimp_GetRectangle",,block% � more%
� �
��
�
�� ***************  Messages
�
�
��receive
� Ȏ block%!16 �
�  � 0:quit%=�
�  � 2:� *** Data save
�1  � 3:�dataload(block%!40,�string(block%+44))
�
  � &502:
�=   !block%=256:Ȕ block%!8,block%!12:block%!16=&503:A$=""
�   Ȏ block%!32 �
�#    � -2:A$=�message("BarHelp")
�>    � main%:A$=�message("MainHelp0")+�message("MainHelp1")
�'    � view%:A$=�message("ViewHelp")
�(    � helpw%:A$=�message("HelpHelp")
�'    � info%:A$=�message("InfoHelp")
�D    � wid%:A$=�message("WidHelp")+�message("WidHelp"+�block%!36)
�   �
�>   $(block%+20)=A$:ș"Wimp_SendMessage",17,block%,block%!4
�  � &400C1:
�;   șReadMode%,-1,3 � ,,ncolour%:� default$="" � �split
�<   ș"Wimp_ReadPixTrans",512,big%,big%+16,,,,scale%,pix%
�4   șSpriteOp%,40+512,big%,big%+16 � ,,,,,,mode%
�'   șReadMode%,mode%,3 � ,,ncolour%
�E   � ncolour%=63 � ș"ColourTrans_SelectTable",mode%,0,-1,-1,pix%
�  � &400C0:
�"   sx%=block%!24:sy%=block%!28
�   Ȏ block%!32 �
�    � 6:�makelist
�    � 7:
�'     � B%=0 � 15:�tick(col%,B%,0):�
�     Ȏ block%!36 �
�       � 0:�tick(col%,cb%,-1)
�       � 1:�tick(col%,cy%,-1)
�       � 2:�tick(col%,cn%,-1)
�
     �
�/     $col%=�message("Men8."+�(block%!36+1))
�-     ș"Wimp_CreateSubMenu",,col%,sx%,sy%
�C    � 8:$�text(wid%,1)=�b%:ș"Wimp_CreateSubMenu",,wid%,sx%,sy%
�   �
� �
��
�
���makelist
�8 A%=lis%+28:!A%=0:�tick(lis%,0,default$=""):index%=0
� �
�K  ș"XOS_GBPB",10,"<PuzPic$Dir>",rep%,1,index%,255,0 � ,,,,index%;flag%
�'  � index%=1 � (flag%�1)=0 � !A%+=2
�=  � index%<>-1 � ((!rep%�&FFF00)>>8)=&FF9 � (flag%�1)=0 �
�B   A%+=24:$(A%+12)=�string(rep%+20):!A%=0:A%!4=0:A%!8=&7000021
�2   � "<PuzPic$Dir>."+$(A%+12)=default$ � !A%=1
�  �
� � index%=-1 � flag%�1
�2 !A%+=128:ș"Wimp_CreateSubMenu",,lis%,sx%,sy%
��
�
�>ݤstring(ptr%):� A$:ȕ ?ptr%<>0:A$+=�(?ptr%):ptr%+=1:�:=A$
�
���dataload(type%,path$)
�F � type%=&FF9 � default$=path$:�loadsprite(path$):�split:�voidmain
��
�
�� ***************  Clicks
�
�B��makepointer(A$):ș"XWimp_SpriteOp",36,,"ptr_"+A$,2,0,0,0,0:�
�
�(��click(window%,icon%,button%,X%,Y%)
�K � ((button%=1 � window%>0) � button%�64) � window%<>main% � �startdrag
� Ȏ window% �
�  � -2:
�   Ȏ button% �
�    � 1:�open(view%)
�$    � 2:�menu(X%-64,96+44*11+50)
�    � 4:�open(main%)
   �
2  � helpw%,view%:� button%=2 � �menu(X%-64,Y%)
,  � timew%:� button%=2 � �menu(X%-64,Y%)
   � icon%=4 �
T    !block%=highw%:ș GetWindow%,,block%:ș &35,-1,11 � ,,W%:ș &35,-1,12 � ,,H%
I    ș &35,-1,4 � ,,A%:ș &35,-1,5 � ,,U%:W%=(W%+1)<<A%:H%=(H%+1)<<U%
O    winW%=block%!12-block%!4:winH%=block%!16-block%!8:block%!4=W%/2-winW%/2
O    block%!12=block%!4+winW%:block%!8=H%/2-winH%/2:block%!16=block%!8+winH%
    șOpenWindow%,,block%
	   �

s  � main%:� button%=2 � �menu(X%-64,Y%) � � (tflag%�2)=0 � �mainclick(X%,Y%):�percent � � button%�64 �startdrag
*  � win%:� button%=2 � �menu(X%-64,Y%)
   � icon%=3 �

+    !block%=win%:șCloseWindow%,,block%
    � winH%=432 �
2     �menushade(bar%,1,0):�menushade(bar%,8,0)
4     �icontext(highw%,(b%-2)*4+1,$�text(win%,5))
6     �icontext(highw%,(b%-2)*4+2,$�text(timew%,1))
-     �icontext(highw%,(b%-2)*4+3,��$,15))
	    �
   �
  � highw%:
   � button%<>2 �
    � icon%=36 �
K     � A%=3 � 10:$�table(A%,1)="Chris Morison":$�table(A%,2)="99:59:59"
+      $�table(A%,3)="Wed,19 Jan 1994":�
�     !block%=highw%:șGetWindow%,,block%:șRedraw%,highw%,block%!20,block%!8-block%!16+block%!24,block%!12-block%!4+block%!20,block%!24
	    �
   � �menu(X%-64,Y%)
   �

  � wid%:
   tempb%=�($�text(wid%,1))
    Ȏ icon% �
!=    � 0:� button%=1 � tempb%+=1 � � button%=4 � tempb%-=1
"=    � 2:� button%=1 � tempb%-=1 � � button%=4 � tempb%+=1
#    � 3:
$>     b%=�($�text(wid%,1)):�split:�unmix:�shuffle:�voidmain
%(     � button%=4 � șCreateMenu%,,-1
&   �
'6   � tempb%<3 � tempb%=3 � � tempb%>10 � tempb%=10
(    �icontext(wid%,1,�tempb%)
) �
*�
+
,��startdrag
-qdragging%=window%:!block%=window%:ș GetWindow%,,block%:dx%=X%-block%!4:dy%=block%!16-Y%:�makepointer("hand")
.�
/
0��mainclick(x%,y%)
1& block%!0=main%:șGetInfo%,,block%
2= wwidth%=block%!52-block%!44:wheight%=block%!48-block%!56
3H șGetWindow%,,block%:xo%=block%!4-block%!20:yo%=block%!16-block%!24
4F mx%=(x%-xo%)�xstep:my%=(yo%-y%)�ystep:oldx%=bx%:oldy%=by%:flag%=0
5* � mx%=b% � mx%=b%-1 � � mx%<0 � mx%=0
6* � my%=b% � my%=b%-1 � � my%<0 � my%=0
7I � my%=by% � mx%=bx% � watchno%<>mx%+my%*b%+1 � mx%+my%*b%+1<>b%*b% �
8>   watchno%=mx%+my%*b%+1:� dragging%=0 � dragging%=window%
9�   Y%=-1:�:Y%+=1:X%=-1:�:X%+=1:� s%(X%,Y%)=watchno% � X%>b%-2:� s%(X%,Y%)=watchno%:șRedraw%,main%,X%*xstep,-(Y%+1)*ystep,(X%+1)*xstep,-Y%*ystep
: � 
; � my%=by% �
<4   ȕ mx%>bx%:s%(bx%,by%)=s%(bx%+1,by%):bx%+=1:�
=4   ȕ mx%<bx%:s%(bx%,by%)=s%(bx%-1,by%):bx%-=1:�
>Y   � oldx%<bx%� x0%=oldx%*xstep:x1%=(bx%+1)*xstep � x0%=bx%*xstep:x1%=(oldx%+1)*xstep
?F   s%(bx%,by%)=0:șRedraw%,main%,x0%,-(by%+1)*ystep,x1%,-by%*ystep
@Y   x0%=(x0%/xstep)*40:x1%=(x1%/xstep)*40:șRedraw%,helpw%,x0%,-(by%+1)*40,x1%,-by%*40
A �
B  � mx%=bx% �
C5    ȕ my%>by%:s%(bx%,by%)=s%(bx%,by%+1):by%+=1:�
D5    ȕ my%<by%:s%(bx%,by%)=s%(bx%,by%-1):by%-=1:�
EY    �oldy%<by%� y0%=(by%+1)*ystep:y1%=oldy%*ystep � y0%=(oldy%+1)*ystep:y1%=by%*ystep
FG    s%(bx%,by%)=0:șRedraw%,main%,bx%*xstep,-y0%,(bx%+1)*xstep,-y1%
GZ    y0%=(y0%/ystep)*40:y1%=(y1%/ystep)*40:șRedraw%,helpw%,bx%*40,-y0%,(bx%+1)*40,-y1%
H%    � � (button%�64) � �startdrag
I   �
J �
K�
L
M��open(window%)
N Ȏ window% �
O
  � main%
P"   puzopen%=�:�tick(bar%,2,-1)
Q6   � tflag%=0 � timestarted%+=now%-delay%:delay%=0
R   tflag%=tflag%�1
S*  � view%:viewopen%=�:�tick(bar%,3,-1)
T.  � timew%:timer%=�:�tick(bar%,4,-1):�time
U �
VF !rep%=window%:ș GetWindow%,,rep%:rep%!28=-1:ș OpenWindow%,,rep%
W�
X
Y� ***************  Menus
Z
[��menuselect  
\ flag%=0
] Ȏ !block% �
^  � 1:�shuffle:�voidmain
_	  � 2
`   � puzopen% �
aH    !block%=main%:ș CloseWindow%,,block%:�tick(bar%,2,0):puzopen%=0
b0    tflag%=tflag%�2:� tflag%=0 � delay%=now%
c   � �open(main%)
d   �
eh  � 3:� viewopen% � !block%=view%:ș CloseWindow%,,block%:�tick(bar%,3,0):viewopen%=0 � �open(view%)
fj  � 4:� timer% � !block%=timew%:ș CloseWindow%,,block%:�tick(bar%,4,0):timer%=0 � �time:�open(timew%)
g  � 5:h%=help%
h(   � help%>0 � �tick(hel%,help%-1,0)
i   Ȏ block%!4 �
j     � -1:� help%>0 � help%=0
kH    � 0:� help%=1 � help%=0 � help%=1:�tick(hel%,0,-1):�open(helpw%)
l:    � 1:� help%=2 � help%=0 � help%=2:�tick(hel%,1,-1)
m   �
nA   � help%<>1 � h%=1 � !block%=helpw%:ș CloseWindow%,,block%
o   �tick(bar%,5,help%>0)
pH   șRedraw%,main%,bx%*xstep,-(by%+1)*ystep,(bx%+1)*xstep,-by%*ystep
q
  � 6:
r   � block%!4>0 �
s7    default$="<PuzPic$Dir>."+$(lis%+40+24*block%!4)
t&    �loadsprite(default$):flag%=-1
u    �split:�voidmain
v4   � � block%!4=0 � default$="":�split:�voidmain
w   �
x
  � 7:
y   Ȏ block%!4 �
zG    � 0:�tick(col%,cb%,0):cb%=block%!8:�voidmain:�tick(col%,cb%,-1)
{    � 1:�tick(col%,cy%,0):cy%=block%!8:�tick(col%,cy%,-1):șRedraw%,main%,bx%*xstep,-(by%+1)*ystep,(bx%+1)*xstep,-by%*ystep
|    � 2:�tick(col%,cn%,0):cn%=block%!8:�tick(col%,cn%,-1):șRedraw%,main%,bx%*xstep,-(by%+1)*ystep,(bx%+1)*xstep,-by%*ystep
}   �
~   �voidhelp

  � 9:
�A   � tflag%=1 � T%=now%-timestarted% � T%=delay%-timestarted%
�A   F%=�"<Puz$Dir>.Default":�#F%,default$,b%,cb%,cy%,cn%,help%
�4   � Y%=0 � b%-1:� X%=0 � b%-1:�#F%,s%(X%,Y%):�,
�(   �#F%,puzopen%,viewopen%,timer%,T%
�*   !block%=main%:ș GetWindow%,,block%
�E   �#F%,block%!4,block%!8,block%!12,block%!16,block%!20,block%!24
�U   !block%=view%:ș GetWindow%,,block%:�#F%,block%!4,block%!8,block%!12,block%!16
�C   !block%=helpw%:ș GetWindow%,,block%:�#F%,block%!4,block%!16
�V   !block%=timew%:ș GetWindow%,,block%:�#F%,block%!4,block%!8,block%!12,block%!16
�C   � A%=3 � 10:�#F%,$�table(A%,1),$�table(A%,2),$�table(A%,3):�
�   �#F%
�  � 10:quit%=�
� �
�D ș Pointer%,,block%:� block%!8=1 � �menu(0,0):� flag% �makelist
��
�
���voidmain
�� !block%=main%:șGetWindow%,,block%:șRedraw%,main%,block%!20,block%!8-block%!16+block%!24,block%!12-block%!4+block%!20,block%!24
�� !block%=view%:șGetWindow%,,block%:șRedraw%,view%,block%!20,block%!8-block%!16+block%!24,block%!12-block%!4+block%!20,block%!24
� �voidhelp
��
�
����voidhelp:!block%=helpw%:șGetWindow%,,block%:șRedraw%,helpw%,block%!20,block%!8-block%!16+block%!24,block%!12-block%!4+block%!20,block%!24
��
�
�2��menu(mx%,my%):ș CreateMenu%,,bar%,mx%,my%:�
�
���createbarmenu
� �createcolourmenu
� �createcolmenu
� �createhelpmenu
�" � bar% 24+28*11,lis% 24+28*78
�[ $lis%=�message("Men7"):lis%!12=&00070207:lis%!16=12*16:lis%!20=44:lis%!24=0:A%=lis%+28
�C !A%=2:A%!4=0:A%!8=&7000021:L%=�maketext(A%,�message("Men7.1"))
� � L%>11 � lis%!16=L%*16+16
�L $bar%=�message("Men0"):bar%!12=&00070207:bar%!20=44:bar%!24=0:A%=bar%+4
�L A%+=24:!A%=0:A%!4=info%:A%!8=&7000021:A%+=24:!A%=2:A%!4=0:A%!8=&7000021
�H A%+=24:!A%=0:A%!4=0:A%!8=&7000021:A%+=24:!A%=0:A%!4=0:A%!8=&7000021
�K A%+=24:!A%=0:A%!4=0:A%!8=&7000021:A%+=24:!A%=2:A%!4=hel%:A%!8=&7000021
�P A%+=24:!A%=8:A%!4=info%:A%!8=&7000021:A%+=24:!A%=0:A%!4=colm%:A%!8=&7000021
�K A%+=24:!A%=8:A%!4=wid%:A%!8=&7000021:A%+=24:!A%=0:A%!4=0:A%!8=&7000021
�( A%+=24:!A%=128:A%!4=0:A%!8=&7000021
�+ C%=�$bar%:A%=bar%+4:� B%=1 � 11:A%+=24
�9 L%=�maketext(A%,�message("Men"+�B%)):� L%>C% � C%=L%
� �:bar%!16=16*C%+16
��
�
�ݤmaketext(ptr%,A$):� A%
� � �A$>11 �
�I  � A% �(A$):ptr%!12=A%:ptr%!16=0:ptr%!20=�(A$):$A%=A$:ptr%!8+=(1<<8)
� � $(ptr%+12)=A$
� �
�
=�(A$)
�
���createcolourmenu
� � col% 24+28*15
�Y $col%=�message("Men7"):col%!12=&00070207:col%!16=5*16:col%!20=44:col%!24=0:A%=col%+4
�$ � B%=0 � 15:A%+=24:!A%=0:A%!4=0
�E A%!8=&29+(B%<<28):� B%<4 � B%=9 � B%=12 � B%=14 � A%!8+=(7<<24) 
� $(A%+12)=�B%:�:!A%+=128
��
�
���createcolmenu
� � colm% 24+28*15          
�Q $colm%=�message("Men8"):colm%!12=&00070207:colm%!20=44:colm%!24=0:A%=colm%+4
�N A%+=24:!A%=8:A%!4=col%:A%!8=&7000021:A%+=24:!A%=8:A%!4=col%:A%!8=&7000021
�8 A%+=24:!A%=8+128:A%!4=col%:A%!8=&7000021:C%=�$colm%
�! A%=colm%+4:� B%=1 � 3:A%+=24
�= L%=�maketext(A%,�message("Men8."+�B%)):� L%>C% � C%=L%+1
� �:colm%!16=16*C%
��
�
���createhelpmenu
� � hel% 24+28*3
�V $hel%=�message("Men6"):hel%!12=&00070207:hel%!20=44:hel%!24=0:A%=hel%+4:C%=�$hel%
�2 � B%=1 � 2:A%+=24:!A%=0:A%!4=0:A%!8=&7000021:
�; L%=�maketext(A%,�message("Men6."+�B%)):� L%>C% � C%=L%
�  �:!A%+=128:hel%!16=C%*16+16
��
�
�(� ***************  Icon Manipulation
�
�F��iconshade(window%,icon%,flag%):�A%:A%=1:�flag%=-1 � flag%=1:A%=0
�C !rep%=window%:rep%!4=icon%:rep%!8=flag%*(1<<22):rep%!12=A%<<22
� ș SetIcon%,,rep%
��  
�
�D��iconselect(window%,icon%,flag%):�A%:!rep%=window%:rep%!4=icon%
�# A%=1:� flag%=-1 � flag%=1:A%=0
�6 rep%!8=flag%<<21:rep%!12=A%<<21:ș SetIcon%,,rep%
��   
�
�Fݤtext(window%,icon%):!rep%=window%:rep%!4=icon%:ș GetIcon%,,rep%
�=rep%!28  
�
�ݤtable(n%,x%)
�5 rep%!4=(n%-2)*4+x%:!rep%=highw%:șGetIcon%,,rep%
�=rep%!28
�
�#��icontext(window%,icon%,text$)
�B !rep%=window%:rep%!4=icon%:ș GetIcon%,,rep%:$(rep%!28)=text$
�) rep%!8=0:rep%!12=0:ș SetIcon%,,rep%
��
�
�*��tick(menu%,item%,flag%):�A%         
�6 A%=menu%+28+24*item%:!A%=!A%�&FE:� flag% � !A%+=1
��
�
�&��menushade(menu%,item%,flag%):�A%
�B A%=menu%+36+24*item%:!A%=!A%�&FFBFFFFF:� flag% � !A%+=(1<<22)
��
�
�� ***************  Messages
�
���error:!block%=255:�#0
�) $(block%+4)=�$+"."+�message("Click")
�& ș Report%,block%,3,app$ � ,flag%
� � flag%=2 � �quit
�& default$="":b%=3:�split:�voidmain
��
�
���report(rep$,flag%):�A$,F%
�  !rep%=255:$(rep%+4)=rep$+�0
�< A$=�message("Mess")+" "+�message("from")+" "+app$:F%=17
� � flag% � F%-=8:A$=app$
� ș Report%,rep%,F%,A$
��
�
v��loadmessages:F%=�"<Puz$Dir>.Messages":A%=0:�:A$=�#F%:A%+=1:� �#F%:� M$(A%):�#F%=0:� B%=0 � A%:M$(B%)=�#F%:�:�#F%
�

mݤmessage(S$):�A%,A$,F%:A%=-1:F%=0:ȕ A%<�(M$(),1) � F%=0:A%+=1:F%=�M$(A%),S$):�:=�M$(A%),�M$(A%),":")+1)

#� ***************  Initialising

��init:șHourOn%
8 dragging%=0:dx%=0:dy%=0:watch%=�:watchno%=0:quit%=�
	% �baricon("!puzzle"):�iconsprites

J F%=�"<Puz$Dir>.Default":� #F%,default$,b%,cb%,cy%,cn%,help%:� s%(9,9)
M � Y%=0 � b%-1:� X%=0 � b%-1:�#F%,s%(X%,Y%):� s%(X%,Y%)=0 � bx%=X%:by%=Y%
) �,:�#F%,puzopen%,viewopen%,timer%,T%

; șGetTime% � delay%:now%=delay%:timestarted%=delay%-T%
J �windows:� A%=3 � 10:�#F%,$�table(A%,1),$�table(A%,2),$�table(A%,3):�
! �#F%:�createbarmenu:first%=�
2 E$=�message("ErrFind"):C$=�message("NotFind")
A � �E$,"%1") � E$=�E$,�E$,"%1")-1)+default$+�E$,�E$,"%1")+2) 
@ � �C$,"%0") � C$=�C$,�C$,"%0")-1)+default$+�C$,�C$,"%0")+2)
 � �
 � default$<>"" �
2  A$=default$:ȕ �A$,"."):A$=�A$,�A$,".")+1):�
B  $block%=�default$,�default$,A$)-2):$scale%=A$:index%=0:A%=-1
5  �                                              
4   � � � A%=-2:�quickerror:default$="":index%=-1
X   � index%>-1 ș&0C,10,block%,rep%,1,index%,50,scale% � ,,,n%,index%:� n%<>0 � A%=0
  � index%=-1
)  � A%=-1 � �report(C$,0):default$=""
	 �   
 � �                      
+ � default$<>"" � �loadsprite(default$)
? �split:� help%>0 � �tick(hel%,help%-1,-1):�tick(bar%,5,-1)
 5 tflag%=0:�time:�percent:� timer% � �open(timew%)
! � puzopen% � �open(main%)
"( � viewopen% � �open(view%)         
#� � help%=1 � !block%=helpw%:ș GetWindow%,,block%:block%!12=block%!4+b%*40+4:block%!8=block%!16-40*b%-4:ș OpenWindow%,,block%
$& quit%=�:șHourOff%:first%=�      
%�
&
'^��quickerror:� �E$,"%0") � �report(�E$,�E$,"%0")-1)+�$+�E$,�E$,"%0")+2),0) � �report(E$,0)
(�
)
*��unmix
+K A%=0:� Y%=0 � b%-1:� X%=0 � b%-1:A%+=1:s%(X%,Y%)=A%:�,:s%(b%-1,b%-1)=0
, bx%=b%-1:by%=b%-1
-�
.
/��shuffle:șHourOn%
0 � A%=1 � 10*b%*b%
1  T%=�(b%)-1
22  ȕ T%>bx%:s%(bx%,by%)=s%(bx%+1,by%):bx%+=1:�
32  ȕ T%<bx%:s%(bx%,by%)=s%(bx%-1,by%):bx%-=1:�
4  T%=�(b%)-1
52  ȕ T%>by%:s%(bx%,by%)=s%(bx%,by%+1):by%+=1:�
62  ȕ T%<by%:s%(bx%,by%)=s%(bx%,by%-1):by%-=1:�
7 �
8J s%(bx%,by%)=0:delay%=0:timestarted%=now%:� (tflag%�1)=0 � delay%=now%
9 �time:�percent
: șHourOff%
;�
<
=��swinumbers
>C ș"OS_SWINumberFromString",,"OS_SWINumberFromString" � String%
?2 ș String%,,"Wimp_GetIconState" � GetIcon%   
@0 ș String%,,"Wimp_CreateIcon" � CreateIcon%
A0 ș String%,,"Wimp_SetIconState" � SetIcon% 
B5 ș String%,,"Wimp_GetWindowState" � GetWindow%  
C- ș String%,,"Wimp_ForceRedraw" � Redraw%
D4 ș String%,,"Wimp_GetWindowInfo" � GetInfo%    
E4 ș String%,,"Wimp_LoadTemplate" � LoadTemplate%
F4 ș String%,,"Wimp_CreateWindow" � CreateWindow%
G0 ș String%,,"Wimp_OpenWindow" � OpenWindow%
H2 ș String%,,"Wimp_CloseWindow" � CloseWindow%
I0 ș String%,,"Wimp_CreateMenu" � CreateMenu%
J4 ș String%,,"Wimp_GetPointerInfo" � Pointer%   
K. ș String%,,"Wimp_SetColour" � SetColour%
L/ ș String%,,"Wimp_ReportError" � Report%  
M- ș String%,,"Wimp_Poll" � Poll%         
N. ș String%,,"Wimp_PollIdle" � PollIdle%  
O* ș String%,,"OS_SpriteOp" � SpriteOp%
P2 ș String%,,"OS_ReadMonotonicTime" � GetTime%
Q2 ș String%,,"OS_ReadModeVariable" � ReadMode%
R5 ș String%,,"Hourglass_On" � HourOn%            
S- ș String%,,"Hourglass_Smash" � HourOff%
T�
U
V��baricon(A$)
WO !block%=-1:block%!4=0:block%!8=0:block%!12=68:block%!16=68:block%!20=&3002
X2 $(block%+24)=A$:ș CreateIcon%,,block% � bar%
Y�
Z
[
��windows
\ indsize%=910
] � name% 11,ind% indsize%
^ indtop%=ind%+indsize%
_1 ș"Wimp_OpenTemplate",,"<Puz$Dir>.Templates"
`L $name%="Info":ș LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 � ,,ind%
a> block%!64=iconarea%:ș CreateWindow%,,block% � info%     
bL $name%="Main":ș LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 � ,,ind%
cR title%=block%!72:�#F%,!block%,block%!4,block%!8,block%!12,block%!16,block%!20
d% ș CreateWindow%,,block% � main%
eL $name%="View":ș LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 � ,,ind%
fK �#F%,!block%,block%!4,block%!8,block%!12:$(block%!72)=�message("Men4")
g% ș CreateWindow%,,block% � view%
hL $name%="Help":ș LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 � ,,ind%
i9 $(block%!72)=�message("Men6"):�#F%,!block%,block%!12
j( ș CreateWindow%,,block% � helpw%  
kM $name%="Width":ș LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 � ,,ind%
lB $(block%!72)=�message("Men9"):ș CreateWindow%,,block% � wid%
mM $name%="Timer":ș LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 � ,,ind%
nK �#F%,!block%,block%!4,block%!8,block%!12:$(block%!72)=�message("Men5")
oB ș CreateWindow%,,block% � timew%                            
pK $name%="Win":ș LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 � ,,ind%
qB ș CreateWindow%,,block% � win%                              
rN $name%="Scores":ș LoadTemplate%,,block%,ind%,indtop%,-1,name%,0 � ,,ind%
s& ș CreateWindow%,,block% � highw%
tA ș"Wimp_CloseTemplate":�icontext(info%,1,�message("TaskID"))
u% �icontext(wid%,3,�message("OK"))
vR �icontext(info%,2,�message("Purpose")):�icontext(info%,4,�message("Version"))
w�
x
y��iconsprites
z5 F%=�"<Puz$Dir>.Sprites":A%=�#F%+8:� iconarea% A%
{& !iconarea%=A%:iconarea%!8=16:�#F%
|D $block%="<Puz$Dir>.Sprites":șSpriteOp%,10+256,iconarea%,block%
}�
~
!��loadsprite(path$):șHourOn%
�. A$=path$:ȕ �A$,"."):A$=�A$,�A$,".")+1):�
�( $title%=�message("TaskID")+" - "+A$
�8 F%=�(path$):A%=�#F%+16:�#F%:B%=�makemem(A%+16,A%/2)
�
 � � B% �
�!  șSpriteOp%,&10A,big%,path$
�B  șSpriteOp%,40+512,big%,big%+16 � ,,,swidth%,sheight%,,mode%
�F  șSpriteOp%,15+512,small%,small%+16,0,swidth%/9,sheight%/9,mode%
�+  B%=�makemem(A%+16,!(small%+16)*99+16)
� �
� � B% �
�T  �report(�message("NoMem"),0):default$="":b%=3:B%=�makemem(mem%(0,0),mem%(2,0))
� �
�3  șSpriteOp%,40+512,big%,big%+16 � ,,,,,,mode%
�P  șReadMode%,mode%,3�,,A%:șReadMode%,mode%,4�,,B%:șReadMode%,mode%,5�,,C%
�G  șReadMode%,-1,3�,,D%:șReadMode%,-1,4�,,E%:șReadMode%,-1,5�,,F%
�1  width%=swidth%*1<<B%:height%=sheight%*1<<C%
�"  � width%<120 � height%<116 �
�#   �report(�message("Small"),0)
�X   default$="":big%!8=16:șSpriteOp%,9+256,big%:small%!8=16:șSpriteOp%,9+256,small%
�  �
�   � A%>D% �
�    A$=�message("Mode")
�5    A$=�A$,�A$,"%0")-1)+�(mode%)+�A$,�A$,"%0")+2)
�    �report(A$,0)
�   �
�  �
� �
��:șHourOff%
�
�%ݤmakemem(b%,s%):� flag%,S%,F%,T%
�. � b%<mem%(0,0) � b%=mem%(0,0)            
�+ � s%<mem%(2,0) � s%=mem%(2,0)+100*1024
�3 T%=b%+s%+1024:ș"Wimp_SlotSize",-1,-1 � S%,,F%
�) � S%-�+&8004<T% � F%<T%-S%+�-&8004 �
�9  flag%=-1:big%=0:small%=0:� b%=mem%(0,0) � �nomemory
� �
�-  ș"Wimp_SlotSize",�-&8004+T%,-1:flag%=0
�O  � big%=0 � !big%<>b% � big%=�+4:!big%=b%:big%!8=16:șSpriteOp%,9+256,big%
�I  small%=big%+!big%+4:!small%=s%:small%!8=16:șSpriteOp%,9+256,small%
�$ �                              
�
=flag%
�
���split:șHourOn%
�  � default$="" � �makesprite
� �splitsprite:șHourOff%
��
�
�0��makesprite:$sprite%="sprite":$title%=app$ 
�( !block%=main%:ș GetWindow%,,block%
�; șRedraw%,-1,block%!4,block%!16,block%!12,block%!16+44
�F șReadMode%,-1,3 � ,,ncolour%:� ncolour%<63 � mode%=12 � mode%=15
�a � mode%=12 � A%=�makemem(mem%(0,b%-3),mem%(2,b%-3)) � A%=�makemem(mem%(1,b%-3),mem%(3,b%-3))
�N � A% � �report(�message("NoMem"),0):b%=3:A%=�makemem(mem%(0,0),mem%(2,0))
�< șSpriteOp%,15+256,big%,sprite%,0,37*b%+1,19*b%+1,mode%
�& șSpriteOp%,60+256,big%,sprite%,0
�$ ș"ColourTrans_InvalidateCache"
� �5:A%=0
� � Y%=b%-1 � 0 � -1
�  � X%=0 � b%-1
�   A%+=1:B%=�(�A%)*8
�*   ȑ X%*74,Y%*76                     
�$   șSetColour%,7:ȓȐ 0,0,74,76
�   � A%<b%*b% �
�%    șSetColour%,3:ȓȐ 2,4,71,71
�3    șSetColour%,1:ȓȐ 2,4,4,71:ȓȐ 2,71,71,4
�3    șSetColour%,4:ȓȐ 8,4,63,4:ȓȐ 69,4,4,63
�,    �4,4:� 6,4:�6,8:�71,71:�BY2,0:�BY0,4
�'    șSetColour%,11:� 38-B%,48:�;A%
�   �
�   �
�  �
� �
� șSpriteOp%,60,0,0:ȑ 0,0
�$ ș"ColourTrans_InvalidateCache"
��
�
�2� 8192,8192,9276,12940,17748,23316,28956,35968
�4� 8192,11764,18108,25820,34900,45960,57852,71112
�3� 8192,8192,10192,14856,20368,26728,33936,41992
�4� 8192,12076,19312,28156,38608,50668,64336,79612
�
���splitsprite
� șSpriteOp%,9+512,small%
�: ș"Wimp_ReadPixTrans",512,big%,big%+16,,,,scale%,pix%
�A șSpriteOp%,40+512,big%,big%+16 � ,,,swidth%,sheight%,,mode%
�@ șReadMode%,mode%,3 � ,,ncolour%                           
�D � ncolour%>=63 � ș"ColourTrans_SelectTable",mode%,0,-1,-1,pix%
�D șReadMode%,mode%,4 � ,,xscale%:șReadMode%,mode%,5 � ,,yscale%
�6 sheight%=b%*(sheight%�b%):swidth%=b%*(swidth%�b%)
�< șReadMode%,-1,4 � ,,xscal%:șReadMode%,-1,5 � ,,yscal%
�? width%=swidth%*1<<xscale%:height%=sheight%*1<<yscale%:A%=0
�K xstep=width%/b%:ystep=height%/b%:q%=16/(1<<xscale%):r%=16/(1<<yscale%)
�& ș"ColourTrans_InvalidateCache"  
�$ � Y%=height%-ystep � 0 � -ystep
�#  � X%=0 � width%-xstep � xstep
�   A%+=1
�   � A%<b%^2 �
�D    șSpriteOp%,15+256,small%,�A%,0,swidth%/b%,sheight%/b%,mode%
�%    șSpriteOp%,60+256,small%,�A%
�/    șSpriteOp%,34+512,big%,big%+16,-X%,-Y%
�   �
�  �
� �
�7 șSpriteOp%,60,0,0:ș"ColourTrans_InvalidateCache"
�X !block%=0:block%!4=-(sheight%-1)*1<<yscale%:block%!8=swidth%*1<<xscale%:block%!12=0
�D ș"Wimp_SetExtent",main%,block%:ș"Wimp_SetExtent",view%,block%
� � puzopen% � first% �
�R  !block%=main%:ș GetWindow%,,block%:block%!8=block%!16-sheight%*(1<<yscale%)
�C  block%!12=block%!4+swidth%*(1<<xscale%):șOpenWindow%,,block%
� �
�( � viewopen% � first% � �open(view%)
�\ !block%=0:block%!12=0:block%!8=40*b%+4:block%!4=-40*b%:ș"Wimp_SetExtent",helpw%,block%
� !block%=helpw%:ș GetWindow%,,block%:block%!12=block%!4+b%*40+4:block%!8=block%!16-40*b%-4:ș OpenWindow%,,block%:� help%<>1 � �first% � ș CloseWindow%,,block%
��
�
00000000  0d 00 01 4a de 20 62 6c  6f 63 6b 25 20 31 36 39  |...J. block% 169|
00000010  36 2c 73 70 72 69 74 65  25 20 31 31 2c 73 63 61  |6,sprite% 11,sca|
00000020  6c 65 25 20 31 36 2c 70  69 78 25 20 32 35 36 2c  |le% 16,pix% 256,|
00000030  73 63 61 6c 65 32 25 20  31 36 2c 48 24 28 39 29  |scale2% 16,H$(9)|
00000040  2c 6d 65 6d 25 28 33 2c  37 29 0d 00 02 2d f2 73  |,mem%(3,7)...-.s|
00000050  77 69 6e 75 6d 62 65 72  73 3a c8 99 26 35 31 20  |winumbers:..&51 |
00000060  b8 20 70 61 67 65 25 3a  72 65 70 25 3d 62 6c 6f  |. page%:rep%=blo|
00000070  63 6b 25 2b 32 35 36 0d  00 03 30 ee 20 85 20 d9  |ck%+256...0. . .|
00000080  23 30 3a ff 22 45 52 52  4f 52 20 22 2b f6 24 2b  |#0:."ERROR "+.$+|
00000090  22 20 28 65 72 72 6f 72  63 6f 64 65 20 22 2b c3  |" (errorcode "+.|
000000a0  9e 2b 22 29 22 3a e0 0d  00 04 29 f2 6c 6f 61 64  |.+")":....).load|
000000b0  6d 65 73 73 61 67 65 73  3a 61 70 70 24 3d a4 6d  |messages:app$=.m|
000000c0  65 73 73 61 67 65 28 22  54 61 73 6b 49 44 22 29  |essage("TaskID")|
000000d0  0d 00 05 2a c8 99 22 57  69 6d 70 5f 49 6e 69 74  |...*.."Wimp_Init|
000000e0  69 61 6c 69 73 65 22 2c  32 30 30 2c 26 34 42 35  |ialise",200,&4B5|
000000f0  33 34 31 35 34 2c 61 70  70 24 0d 00 06 2b e3 20  |34154,app$...+. |
00000100  41 25 3d 30 20 b8 20 33  3a e3 20 42 25 3d 30 20  |A%=0 . 3:. B%=0 |
00000110  b8 20 37 3a f3 20 6d 65  6d 25 28 41 25 2c 42 25  |. 7:. mem%(A%,B%|
00000120  29 3a ed 3a ed 0d 00 07  47 73 6d 61 6c 6c 25 3d  |):.:....Gsmall%=|
00000130  30 3a 62 69 67 25 3d 30  3a 64 65 66 61 75 6c 74  |0:big%=0:default|
00000140  24 3d 22 2d 31 22 3a 62  25 3d 33 3a 41 25 3d a4  |$="-1":b%=3:A%=.|
00000150  6d 61 6b 65 6d 65 6d 28  6d 65 6d 25 28 30 2c 30  |makemem(mem%(0,0|
00000160  29 2c 6d 65 6d 25 28 32  2c 30 29 29 0d 00 08 09  |),mem%(2,0))....|
00000170  f2 69 6e 69 74 0d 00 09  1c ee 20 85 20 f2 65 72  |.init..... . .er|
00000180  72 6f 72 20 20 20 20 20  20 20 20 20 20 20 20 20  |ror             |
00000190  20 0d 00 0a 1b c8 99 47  65 74 54 69 6d 65 25 20  | ......GetTime% |
000001a0  b8 20 6e 6f 77 25 20 20  20 20 20 20 0d 00 0b 0d  |. now%      ....|
000001b0  c8 95 20 ac 71 75 69 74  25 0d 00 0c 12 20 e7 20  |.. .quit%.... . |
000001c0  64 72 61 67 67 69 6e 67  25 20 8c 0d 00 0d 24 20  |dragging% ....$ |
000001d0  20 c8 99 20 50 6f 6c 6c  25 2c 36 31 39 32 2c 62  | .. Poll%,6192,b|
000001e0  6c 6f 63 6b 25 20 b8 20  72 65 61 73 6f 6e 25 0d  |lock% . reason%.|
000001f0  00 0e 06 20 cc 0d 00 0f  1b 20 20 e7 20 74 69 6d  |... .....  . tim|
00000200  65 72 25 20 80 20 74 66  6c 61 67 25 3d 31 20 8c  |er% . tflag%=1 .|
00000210  0d 00 10 31 20 20 20 c8  99 50 6f 6c 6c 49 64 6c  |...1   ..PollIdl|
00000220  65 25 2c 36 31 39 32 2c  62 6c 6f 63 6b 25 2c 6e  |e%,6192,block%,n|
00000230  6f 77 25 2b 31 30 30 20  b8 20 72 65 61 73 6f 6e  |ow%+100 . reason|
00000240  25 0d 00 11 26 20 20 cc  20 c8 99 20 50 6f 6c 6c  |%...&  . .. Poll|
00000250  25 2c 36 31 39 33 2c 62  6c 6f 63 6b 25 20 b8 20  |%,6193,block% . |
00000260  72 65 61 73 6f 6e 25 0d  00 12 07 20 20 cd 0d 00  |reason%....  ...|
00000270  13 05 cd 0d 00 14 16 20  c8 99 47 65 74 54 69 6d  |....... ..GetTim|
00000280  65 25 20 b8 20 6e 6f 77  25 0d 00 15 11 20 c8 8e  |e% . now%.... ..|
00000290  20 72 65 61 73 6f 6e 25  20 ca 0d 00 16 22 20 20  | reason% ...."  |
000002a0  c9 20 20 30 3a e7 20 64  72 61 67 67 69 6e 67 25  |.  0:. dragging%|
000002b0  20 8c 20 f2 64 72 61 67  67 69 6e 67 0d 00 17 1f  | . .dragging....|
000002c0  20 20 c9 20 20 31 3a f2  64 72 61 77 77 69 6e 64  |  .  1:.drawwind|
000002d0  6f 77 28 21 62 6c 6f 63  6b 25 29 0d 00 18 0b 20  |ow(!block%).... |
000002e0  20 c9 20 20 32 3a 0d 00  19 24 20 20 20 e7 20 21  | .  2:...$   . !|
000002f0  62 6c 6f 63 6b 25 3d 76  69 65 77 25 20 8c 20 62  |block%=view% . b|
00000300  6c 6f 63 6b 25 21 32 34  3d 30 0d 00 1a 8e 20 20  |lock%!24=0....  |
00000310  20 c8 99 20 4f 70 65 6e  57 69 6e 64 6f 77 25 2c  | .. OpenWindow%,|
00000320  2c 62 6c 6f 63 6b 25 3a  e7 20 21 62 6c 6f 63 6b  |,block%:. !block|
00000330  25 3d 76 69 65 77 25 20  8c 20 c8 99 52 65 64 72  |%=view% . ..Redr|
00000340  61 77 25 2c 76 69 65 77  25 2c 2d 62 6c 6f 63 6b  |aw%,view%,-block|
00000350  25 21 32 30 2c 62 6c 6f  63 6b 25 21 38 2d 62 6c  |%!20,block%!8-bl|
00000360  6f 63 6b 25 21 31 36 2b  62 6c 6f 63 6b 25 21 32  |ock%!16+block%!2|
00000370  34 2c 62 6c 6f 63 6b 25  21 31 32 2d 62 6c 6f 63  |4,block%!12-bloc|
00000380  6b 25 21 34 2d 62 6c 6f  63 6b 25 21 32 30 2c 62  |k%!4-block%!20,b|
00000390  6c 6f 63 6b 25 21 32 34  0d 00 1b 22 20 20 c9 20  |lock%!24..."  . |
000003a0  20 33 3a c8 99 20 43 6c  6f 73 65 57 69 6e 64 6f  | 3:.. CloseWindo|
000003b0  77 25 2c 2c 62 6c 6f 63  6b 25 0d 00 1c 13 20 20  |w%,,block%....  |
000003c0  20 c8 8e 20 21 62 6c 6f  63 6b 25 20 ca 0d 00 1d  | .. !block% ....|
000003d0  53 20 20 20 20 c9 20 6d  61 69 6e 25 3a 70 75 7a  |S    . main%:puz|
000003e0  6f 70 65 6e 25 3d 30 3a  f2 74 69 63 6b 28 62 61  |open%=0:.tick(ba|
000003f0  72 25 2c 32 2c 30 29 3a  74 66 6c 61 67 25 3d 74  |r%,2,0):tflag%=t|
00000400  66 6c 61 67 25 80 32 3a  e7 20 74 66 6c 61 67 25  |flag%.2:. tflag%|
00000410  3d 30 20 8c 20 64 65 6c  61 79 25 3d 6e 6f 77 25  |=0 . delay%=now%|
00000420  0d 00 1e 2b 20 20 20 20  c9 20 76 69 65 77 25 3a  |...+    . view%:|
00000430  76 69 65 77 6f 70 65 6e  25 3d 30 3a f2 74 69 63  |viewopen%=0:.tic|
00000440  6b 28 62 61 72 25 2c 33  2c 30 29 0d 00 1f 38 20  |k(bar%,3,0)...8 |
00000450  20 20 20 c9 20 68 65 6c  70 77 25 3a 68 65 6c 70  |   . helpw%:help|
00000460  25 3d 30 3a f2 74 69 63  6b 28 62 61 72 25 2c 35  |%=0:.tick(bar%,5|
00000470  2c 30 29 3a f2 74 69 63  6b 28 68 65 6c 25 2c 30  |,0):.tick(hel%,0|
00000480  2c 30 29 0d 00 20 29 20  20 20 20 c9 20 74 69 6d  |,0).. )    . tim|
00000490  65 77 25 3a 74 69 6d 65  72 25 3d 30 3a f2 74 69  |ew%:timer%=0:.ti|
000004a0  63 6b 28 62 61 72 25 2c  34 2c 30 29 0d 00 21 08  |ck(bar%,4,0)..!.|
000004b0  20 20 20 cb 0d 00 22 25  20 20 c9 20 20 34 3a e7  |   ..."%  .  4:.|
000004c0  20 21 62 6c 6f 63 6b 25  3d 6d 61 69 6e 25 20 8c  | !block%=main% .|
000004d0  20 77 61 74 63 68 25 3d  30 0d 00 23 26 20 20 c9  | watch%=0..#&  .|
000004e0  20 20 35 3a e7 20 21 62  6c 6f 63 6b 25 3d 6d 61  |  5:. !block%=ma|
000004f0  69 6e 25 20 8c 20 77 61  74 63 68 25 3d 2d 31 0d  |in% . watch%=-1.|
00000500  00 24 40 20 20 c9 20 20  36 3a f2 63 6c 69 63 6b  |.$@  .  6:.click|
00000510  28 62 6c 6f 63 6b 25 21  31 32 2c 62 6c 6f 63 6b  |(block%!12,block|
00000520  25 21 31 36 2c 62 6c 6f  63 6b 25 21 38 2c 21 62  |%!16,block%!8,!b|
00000530  6c 6f 63 6b 25 2c 62 6c  6f 63 6b 25 21 34 29 0d  |lock%,block%!4).|
00000540  00 25 1f 20 20 c9 20 20  37 3a f4 20 2a 2a 2a 20  |.%.  .  7:. *** |
00000550  44 72 61 67 20 68 61 73  20 65 6e 64 65 64 0d 00  |Drag has ended..|
00000560  26 0b 20 20 c9 20 20 38  3a 0d 00 27 33 20 20 20  |&.  .  8:..'3   |
00000570  e7 20 21 62 6c 6f 63 6b  25 3d 77 69 6e 25 20 80  |. !block%=win% .|
00000580  20 62 6c 6f 63 6b 25 21  34 3d 35 20 80 20 62 6c  | block%!4=5 . bl|
00000590  6f 63 6b 25 21 32 34 3d  31 33 20 8c 0d 00 28 2b  |ock%!24=13 ...(+|
000005a0  20 20 20 20 21 62 6c 6f  63 6b 25 3d 77 69 6e 25  |    !block%=win%|
000005b0  3a c8 99 43 6c 6f 73 65  57 69 6e 64 6f 77 25 2c  |:..CloseWindow%,|
000005c0  2c 62 6c 6f 63 6b 25 0d  00 29 15 20 20 20 20 e7  |,block%..).    .|
000005d0  20 77 69 6e 48 25 3d 34  33 32 20 8c 0d 00 2a 32  | winH%=432 ...*2|
000005e0  20 20 20 20 20 f2 6d 65  6e 75 73 68 61 64 65 28  |     .menushade(|
000005f0  62 61 72 25 2c 31 2c 30  29 3a f2 6d 65 6e 75 73  |bar%,1,0):.menus|
00000600  68 61 64 65 28 62 61 72  25 2c 38 2c 30 29 0d 00  |hade(bar%,8,0)..|
00000610  2b 34 20 20 20 20 20 f2  69 63 6f 6e 74 65 78 74  |+4     .icontext|
00000620  28 68 69 67 68 77 25 2c  28 62 25 2d 32 29 2a 34  |(highw%,(b%-2)*4|
00000630  2b 31 2c 24 a4 74 65 78  74 28 77 69 6e 25 2c 35  |+1,$.text(win%,5|
00000640  29 29 0d 00 2c 36 20 20  20 20 20 f2 69 63 6f 6e  |))..,6     .icon|
00000650  74 65 78 74 28 68 69 67  68 77 25 2c 28 62 25 2d  |text(highw%,(b%-|
00000660  32 29 2a 34 2b 32 2c 24  a4 74 65 78 74 28 74 69  |2)*4+2,$.text(ti|
00000670  6d 65 77 25 2c 31 29 29  0d 00 2d 2d 20 20 20 20  |mew%,1))..--    |
00000680  20 f2 69 63 6f 6e 74 65  78 74 28 68 69 67 68 77  | .icontext(highw|
00000690  25 2c 28 62 25 2d 32 29  2a 34 2b 33 2c c0 91 24  |%,(b%-2)*4+3,..$|
000006a0  2c 31 35 29 29 0d 00 2e  09 20 20 20 20 cd 0d 00  |,15))....    ...|
000006b0  2f 26 20 20 20 cc 20 c8  99 22 57 69 6d 70 5f 50  |/&   . .."Wimp_P|
000006c0  72 6f 63 65 73 73 4b 65  79 22 2c 62 6c 6f 63 6b  |rocessKey",block|
000006d0  25 21 32 34 0d 00 30 08  20 20 20 cd 0d 00 31 16  |%!24..0.   ...1.|
000006e0  20 20 c9 20 20 39 3a f2  6d 65 6e 75 73 65 6c 65  |  .  9:.menusele|
000006f0  63 74 0d 00 32 1f 20 20  c9 20 31 30 3a f4 20 2a  |ct..2.  . 10:. *|
00000700  2a 2a 20 53 63 72 6f 6c  6c 20 72 65 71 75 65 73  |** Scroll reques|
00000710  74 0d 00 33 1b 20 20 c9  20 31 31 3a f4 20 2a 2a  |t..3.  . 11:. **|
00000720  2a 20 4c 6f 73 65 20 63  61 72 65 74 0d 00 34 1b  |* Lose caret..4.|
00000730  20 20 c9 20 31 32 3a f4  20 2a 2a 2a 20 47 61 69  |  . 12:. *** Gai|
00000740  6e 20 63 61 72 65 74 0d  00 35 16 20 20 c9 20 31  |n caret..5.  . 1|
00000750  37 2c 31 38 3a f2 72 65  63 65 69 76 65 0d 00 36  |7,18:.receive..6|
00000760  13 20 cb 20 20 20 20 20  20 20 20 20 20 20 20 20  |. .             |
00000770  0d 00 37 48 20 e7 20 74  66 6c 61 67 25 3d 31 20  |..7H . tflag%=1 |
00000780  80 20 74 69 6d 65 72 25  20 80 20 74 69 6d 65 74  |. timer% . timet|
00000790  61 6b 65 6e 25 81 36 30  3c 3e 28 6e 6f 77 25 2d  |aken%.60<>(now%-|
000007a0  74 69 6d 65 73 74 61 72  74 65 64 25 29 81 36 30  |timestarted%).60|
000007b0  20 8c 20 f2 74 69 6d 65  0d 00 38 05 ce 0d 00 39  | . .time..8....9|
000007c0  09 f2 71 75 69 74 0d 00  3a 05 e0 0d 00 3b 04 0d  |..quit..:....;..|
000007d0  00 3c 0a dd f2 71 75 69  74 0d 00 3d 19 20 c8 99  |.<...quit..=. ..|
000007e0  22 58 48 6f 75 72 67 6c  61 73 73 5f 53 6d 61 73  |"XHourglass_Smas|
000007f0  68 22 0d 00 3e 27 20 e7  20 62 69 67 25 3c 3e 30  |h"..>' . big%<>0|
00000800  20 8c 20 c8 99 22 58 4f  53 5f 4d 6f 64 75 6c 65  | . .."XOS_Module|
00000810  22 2c 37 2c 2c 62 69 67  25 0d 00 3f 2b 20 e7 20  |",7,,big%..?+ . |
00000820  73 6d 61 6c 6c 25 3c 3e  30 20 8c 20 c8 99 22 58  |small%<>0 . .."X|
00000830  4f 53 5f 4d 6f 64 75 6c  65 22 2c 37 2c 2c 73 6d  |OS_Module",7,,sm|
00000840  61 6c 6c 25 0d 00 40 2a  20 c8 99 22 58 4f 53 5f  |all%..@* .."XOS_|
00000850  43 68 61 6e 67 65 44 79  6e 61 6d 69 63 41 72 65  |ChangeDynamicAre|
00000860  61 22 2c 31 2c 2d 31 36  37 37 37 32 31 36 0d 00  |a",1,-16777216..|
00000870  41 1c 20 d9 23 30 3a c8  99 22 58 57 69 6d 70 5f  |A. .#0:.."XWimp_|
00000880  43 6c 6f 73 65 44 6f 77  6e 22 0d 00 42 06 20 e0  |CloseDown"..B. .|
00000890  0d 00 43 05 e1 0d 00 44  04 0d 00 45 0e dd f2 6e  |..C....D...E...n|
000008a0  6f 6d 65 6d 6f 72 79 0d  00 46 2a f2 72 65 70 6f  |omemory..F*.repo|
000008b0  72 74 28 a4 6d 65 73 73  61 67 65 28 22 4d 75 73  |rt(.message("Mus|
000008c0  74 51 75 69 74 22 29 2c  2d 31 29 3a f2 71 75 69  |tQuit"),-1):.qui|
000008d0  74 0d 00 47 05 e1 0d 00  48 04 0d 00 49 18 dd f2  |t..G....H...I...|
000008e0  74 69 6d 65 3a ea 20 48  25 2c 53 25 2c 4d 25 2c  |time:. H%,S%,M%,|
000008f0  41 24 0d 00 4a b7 48 25  3d 6e 6f 77 25 3a 48 25  |A$..J.H%=now%:H%|
00000900  2d 3d 74 69 6d 65 73 74  61 72 74 65 64 25 3a 48  |-=timestarted%:H|
00000910  25 3d 48 25 2f 31 30 30  3a 53 25 3d 48 25 83 36  |%=H%/100:S%=H%.6|
00000920  30 3a 48 25 3d 48 25 81  36 30 3a 4d 25 3d 48 25  |0:H%=H%.60:M%=H%|
00000930  83 36 30 3a 48 25 3d 48  25 81 36 30 3a 41 24 3d  |.60:H%=H%.60:A$=|
00000940  c3 48 25 2b 22 3a 22 2b  c4 2d 31 2a 28 4d 25 3c  |.H%+":"+.-1*(M%<|
00000950  31 30 29 2c 22 30 22 29  2b c3 4d 25 2b 22 2e 22  |10),"0")+.M%+"."|
00000960  2b c4 2d 31 2a 28 53 25  3c 31 30 29 2c 22 30 22  |+.-1*(S%<10),"0"|
00000970  29 2b c3 53 25 3a f2 69  63 6f 6e 74 65 78 74 28  |)+.S%:.icontext(|
00000980  74 69 6d 65 77 25 2c 31  2c 41 24 29 3a 74 69 6d  |timew%,1,A$):tim|
00000990  65 74 61 6b 65 6e 25 3d  6e 6f 77 25 2d 74 69 6d  |etaken%=now%-tim|
000009a0  65 73 74 61 72 74 65 64  25 0d 00 4b 05 e1 0d 00  |estarted%..K....|
000009b0  4c 04 0d 00 4d 0e dd f2  64 72 61 67 67 69 6e 67  |L...M...dragging|
000009c0  0d 00 4e 3b 20 c8 99 20  50 6f 69 6e 74 65 72 25  |..N; .. Pointer%|
000009d0  2c 2c 62 6c 6f 63 6b 25  3a 78 25 3d 21 62 6c 6f  |,,block%:x%=!blo|
000009e0  63 6b 25 3a 79 25 3d 62  6c 6f 63 6b 25 21 34 3a  |ck%:y%=block%!4:|
000009f0  42 25 3d 62 6c 6f 63 6b  25 21 38 0d 00 4f 0e 20  |B%=block%!8..O. |
00000a00  e7 20 42 25 3c 3e 30 20  8c 0d 00 50 14 20 20 e7  |. B%<>0 ...P.  .|
00000a10  20 77 61 74 63 68 6e 6f  25 3d 30 20 8c 0d 00 51  | watchno%=0 ...Q|
00000a20  49 20 20 20 21 62 6c 6f  63 6b 25 3d 64 72 61 67  |I   !block%=drag|
00000a30  67 69 6e 67 25 3a c8 99  20 47 65 74 57 69 6e 64  |ging%:.. GetWind|
00000a40  6f 77 25 2c 2c 62 6c 6f  63 6b 25 3a 62 6c 6f 63  |ow%,,block%:bloc|
00000a50  6b 25 21 31 32 2b 3d 78  25 2d 62 6c 6f 63 6b 25  |k%!12+=x%-block%|
00000a60  21 34 2d 64 78 25 0d 00  52 59 20 20 20 62 6c 6f  |!4-dx%..RY   blo|
00000a70  63 6b 25 21 38 2b 3d 79  25 2b 64 79 25 2d 62 6c  |ck%!8+=y%+dy%-bl|
00000a80  6f 63 6b 25 21 31 36 3a  62 6c 6f 63 6b 25 21 34  |ock%!16:block%!4|
00000a90  3d 78 25 2d 64 78 25 3a  62 6c 6f 63 6b 25 21 31  |=x%-dx%:block%!1|
00000aa0  36 3d 79 25 2b 64 79 25  3a e7 20 42 25 3c 3e 31  |6=y%+dy%:. B%<>1|
00000ab0  20 8c 20 62 6c 6f 63 6b  25 21 32 38 3d 2d 31 0d  | . block%!28=-1.|
00000ac0  00 53 1d 20 20 20 c8 99  20 4f 70 65 6e 57 69 6e  |.S.   .. OpenWin|
00000ad0  64 6f 77 25 2c 2c 62 6c  6f 63 6b 25 0d 00 54 07  |dow%,,block%..T.|
00000ae0  20 20 cd 0d 00 55 d3 20  cc 20 64 72 61 67 67 69  |  ...U. . draggi|
00000af0  6e 67 25 3d 30 3a f2 6d  61 6b 65 70 6f 69 6e 74  |ng%=0:.makepoint|
00000b00  65 72 28 22 64 65 66 61  75 6c 74 22 29 3a e7 20  |er("default"):. |
00000b10  77 61 74 63 68 6e 6f 25  3c 3e 30 20 8c 20 59 25  |watchno%<>0 . Y%|
00000b20  3d 2d 31 3a f5 3a 59 25  2b 3d 31 3a 58 25 3d 2d  |=-1:.:Y%+=1:X%=-|
00000b30  31 3a f5 3a 58 25 2b 3d  31 3a fd 20 73 25 28 58  |1:.:X%+=1:. s%(X|
00000b40  25 2c 59 25 29 3d 77 61  74 63 68 6e 6f 25 20 84  |%,Y%)=watchno% .|
00000b50  20 58 25 3e 62 25 2d 32  3a fd 20 73 25 28 58 25  | X%>b%-2:. s%(X%|
00000b60  2c 59 25 29 3d 77 61 74  63 68 6e 6f 25 3a 77 61  |,Y%)=watchno%:wa|
00000b70  74 63 68 6e 6f 25 3d 30  3a c8 99 52 65 64 72 61  |tchno%=0:..Redra|
00000b80  77 25 2c 6d 61 69 6e 25  2c 58 25 2a 78 73 74 65  |w%,main%,X%*xste|
00000b90  70 2c 2d 28 59 25 2b 31  29 2a 79 73 74 65 70 2c  |p,-(Y%+1)*ystep,|
00000ba0  28 58 25 2b 31 29 2a 78  73 74 65 70 2c 2d 59 25  |(X%+1)*xstep,-Y%|
00000bb0  2a 79 73 74 65 70 0d 00  56 06 20 cd 0d 00 57 05  |*ystep..V. ...W.|
00000bc0  e1 0d 00 58 08 20 20 20  20 0d 00 59 1a dd f2 64  |...X.    ..Y...d|
00000bd0  72 61 77 77 69 6e 64 6f  77 28 77 69 6e 64 6f 77  |rawwindow(window|
00000be0  25 29 20 0d 00 5a 11 20  c8 8e 20 77 69 6e 64 6f  |%) ..Z. .. windo|
00000bf0  77 25 20 ca 0d 00 5b 17  20 20 c9 20 6d 61 69 6e  |w% ...[.  . main|
00000c00  25 3a f2 64 72 61 77 6d  61 69 6e 0d 00 5c 17 20  |%:.drawmain..\. |
00000c10  20 c9 20 76 69 65 77 25  3a f2 64 72 61 77 76 69  | . view%:.drawvi|
00000c20  65 77 0d 00 5d 18 20 20  c9 20 68 65 6c 70 77 25  |ew..].  . helpw%|
00000c30  3a f2 64 72 61 77 68 65  6c 70 0d 00 5e 06 20 cb  |:.drawhelp..^. .|
00000c40  0d 00 5f 05 e1 0d 00 60  04 0d 00 61 0e dd f2 64  |.._....`...a...d|
00000c50  72 61 77 6d 61 69 6e 0d  00 62 26 20 62 6c 6f 63  |rawmain..b& bloc|
00000c60  6b 25 21 30 3d 6d 61 69  6e 25 3a c8 99 47 65 74  |k%!0=main%:..Get|
00000c70  49 6e 66 6f 25 2c 2c 62  6c 6f 63 6b 25 0d 00 63  |Info%,,block%..c|
00000c80  3d 20 77 77 69 64 74 68  25 3d 62 6c 6f 63 6b 25  |= wwidth%=block%|
00000c90  21 35 32 2d 62 6c 6f 63  6b 25 21 34 34 3a 77 68  |!52-block%!44:wh|
00000ca0  65 69 67 68 74 25 3d 62  6c 6f 63 6b 25 21 34 38  |eight%=block%!48|
00000cb0  2d 62 6c 6f 63 6b 25 21  35 36 0d 00 64 2a 20 c8  |-block%!56..d* .|
00000cc0  99 22 57 69 6d 70 5f 52  65 64 72 61 77 57 69 6e  |."Wimp_RedrawWin|
00000cd0  64 6f 77 22 2c 2c 62 6c  6f 63 6b 25 20 b8 20 6d  |dow",,block% . m|
00000ce0  6f 72 65 25 0d 00 65 33  20 78 6f 25 3d 62 6c 6f  |ore%..e3 xo%=blo|
00000cf0  63 6b 25 21 34 2d 62 6c  6f 63 6b 25 21 32 30 3a  |ck%!4-block%!20:|
00000d00  79 6f 25 3d 62 6c 6f 63  6b 25 21 31 36 2d 62 6c  |yo%=block%!16-bl|
00000d10  6f 63 6b 25 21 32 34 0d  00 66 0d 20 c8 95 20 6d  |ock%!24..f. .. m|
00000d20  6f 72 65 25 0d 00 67 31  20 20 78 31 25 3d 28 28  |ore%..g1  x1%=((|
00000d30  62 6c 6f 63 6b 25 21 32  38 2d 78 6f 25 29 81 78  |block%!28-xo%).x|
00000d40  73 74 65 70 29 3a e7 20  78 31 25 3c 30 20 8c 20  |step):. x1%<0 . |
00000d50  78 31 25 3d 30 0d 00 68  37 20 20 78 32 25 3d 28  |x1%=0..h7  x2%=(|
00000d60  28 62 6c 6f 63 6b 25 21  33 36 2d 78 6f 25 29 81  |(block%!36-xo%).|
00000d70  78 73 74 65 70 29 3a e7  20 78 32 25 3e 62 25 2d  |xstep):. x2%>b%-|
00000d80  31 20 8c 20 78 32 25 3d  62 25 2d 31 0d 00 69 31  |1 . x2%=b%-1..i1|
00000d90  20 20 79 31 25 3d 28 28  79 6f 25 2d 62 6c 6f 63  |  y1%=((yo%-bloc|
00000da0  6b 25 21 34 30 29 81 79  73 74 65 70 29 3a e7 20  |k%!40).ystep):. |
00000db0  79 31 25 3c 30 20 8c 20  79 31 25 3d 30 0d 00 6a  |y1%<0 . y1%=0..j|
00000dc0  37 20 20 79 32 25 3d 28  28 79 6f 25 2d 62 6c 6f  |7  y2%=((yo%-blo|
00000dd0  63 6b 25 21 33 32 29 81  79 73 74 65 70 29 3a e7  |ck%!32).ystep):.|
00000de0  20 79 32 25 3e 62 25 2d  31 20 8c 20 79 32 25 3d  | y2%>b%-1 . y2%=|
00000df0  62 25 2d 31 0d 00 6b 23  20 20 e3 20 59 25 3d 79  |b%-1..k#  . Y%=y|
00000e00  31 25 20 b8 20 79 32 25  3a e3 20 58 25 3d 78 31  |1% . y2%:. X%=x1|
00000e10  25 20 b8 20 78 32 25 0d  00 6c 16 20 20 20 e7 20  |% . x2%..l.   . |
00000e20  73 25 28 58 25 2c 59 25  29 3d 30 20 8c 0d 00 6d  |s%(X%,Y%)=0 ...m|
00000e30  13 20 20 20 20 e7 20 68  65 6c 70 25 3d 32 20 8c  |.    . help%=2 .|
00000e40  0d 00 6e 49 20 20 20 20  c8 99 53 65 74 43 6f 6c  |..nI    ..SetCol|
00000e50  6f 75 72 25 2c 63 6e 25  3a c8 93 c8 90 20 78 6f  |our%,cn%:.... xo|
00000e60  25 2b 58 25 2a 78 73 74  65 70 2c 79 6f 25 2d 79  |%+X%*xstep,yo%-y|
00000e70  73 74 65 70 2d 59 25 2a  79 73 74 65 70 2c 78 73  |step-Y%*ystep,xs|
00000e80  74 65 70 2c 79 73 74 65  70 0d 00 6f 19 20 20 20  |tep,ystep..o.   |
00000e90  20 20 c8 99 53 65 74 43  6f 6c 6f 75 72 25 2c 63  |  ..SetColour%,c|
00000ea0  79 25 0d 00 70 24 20 20  20 20 20 e3 20 79 25 3d  |y%..p$     . y%=|
00000eb0  30 20 b8 20 62 25 2d 31  3a e3 20 78 25 3d 30 20  |0 . b%-1:. x%=0 |
00000ec0  b8 20 62 25 2d 31 0d 00  71 98 20 20 20 20 20 20  |. b%-1..q.      |
00000ed0  20 e7 20 73 25 28 78 25  2c 79 25 29 3d 78 25 2b  | . s%(x%,y%)=x%+|
00000ee0  31 2b 79 25 2a 62 25 20  84 20 28 73 25 28 78 25  |1+y%*b% . (s%(x%|
00000ef0  2c 79 25 29 3d 30 20 80  20 78 25 3d 62 25 2d 31  |,y%)=0 . x%=b%-1|
00000f00  20 80 20 79 25 3d 62 25  2d 31 29 20 8c 20 c8 93  | . y%=b%-1) . ..|
00000f10  c8 90 20 78 6f 25 2b 58  25 2a 78 73 74 65 70 2b  |.. xo%+X%*xstep+|
00000f20  78 25 2a 28 78 73 74 65  70 2f 62 25 29 2c 79 6f  |x%*(xstep/b%),yo|
00000f30  25 2d 59 25 2a 79 73 74  65 70 2d 28 79 25 2b 31  |%-Y%*ystep-(y%+1|
00000f40  29 2a 28 79 73 74 65 70  2f 62 25 29 2c 78 73 74  |)*(ystep/b%),xst|
00000f50  65 70 2f 62 25 2c 79 73  74 65 70 2f 62 25 0d 00  |ep/b%,ystep/b%..|
00000f60  72 0c 20 20 20 20 20 ed  3a ed 0d 00 73 19 20 20  |r.     .:...s.  |
00000f70  20 20 20 c8 99 53 65 74  43 6f 6c 6f 75 72 25 2c  |   ..SetColour%,|
00000f80  63 62 25 0d 00 74 24 20  20 20 20 20 e3 20 79 25  |cb%..t$     . y%|
00000f90  3d 30 20 b8 20 62 25 2d  31 3a e3 20 78 25 3d 30  |=0 . b%-1:. x%=0|
00000fa0  20 b8 20 62 25 2d 31 0d  00 75 57 20 20 20 20 20  | . b%-1..uW     |
00000fb0  c8 93 20 78 6f 25 2b 58  25 2a 78 73 74 65 70 2b  |.. xo%+X%*xstep+|
00000fc0  78 25 2a 28 78 73 74 65  70 2f 62 25 29 2c 79 6f  |x%*(xstep/b%),yo|
00000fd0  25 2d 59 25 2a 79 73 74  65 70 2d 28 79 25 2b 31  |%-Y%*ystep-(y%+1|
00000fe0  29 2a 28 79 73 74 65 70  2f 62 25 29 2c 78 73 74  |)*(ystep/b%),xst|
00000ff0  65 70 2f 62 25 2c 79 73  74 65 70 2f 62 25 0d 00  |ep/b%,ystep/b%..|
00001000  76 0c 20 20 20 20 20 ed  3a ed 0d 00 77 4b 20 20  |v.     .:...wK  |
00001010  20 20 cc 20 c8 99 53 65  74 43 6f 6c 6f 75 72 25  |  . ..SetColour%|
00001020  2c 63 62 25 3a c8 93 c8  90 20 78 6f 25 2b 58 25  |,cb%:.... xo%+X%|
00001030  2a 78 73 74 65 70 2c 79  6f 25 2d 79 73 74 65 70  |*xstep,yo%-ystep|
00001040  2d 59 25 2a 79 73 74 65  70 2c 78 73 74 65 70 2c  |-Y%*ystep,xstep,|
00001050  79 73 74 65 70 0d 00 78  09 20 20 20 20 cd 0d 00  |ystep..x.    ...|
00001060  79 0a 20 20 20 cc 20 20  0d 00 7a 58 20 20 20 c8  |y.   .  ..zX   .|
00001070  99 53 70 72 69 74 65 4f  70 25 2c 35 32 2b 32 35  |.SpriteOp%,52+25|
00001080  36 2c 73 6d 61 6c 6c 25  2c c3 28 73 25 28 58 25  |6,small%,.(s%(X%|
00001090  2c 59 25 29 29 2c 78 6f  25 2b 58 25 2a 78 73 74  |,Y%)),xo%+X%*xst|
000010a0  65 70 2c 79 6f 25 2d 28  59 25 2b 31 29 2a 79 73  |ep,yo%-(Y%+1)*ys|
000010b0  74 65 70 2c 2c 73 63 61  6c 65 25 2c 70 69 78 25  |tep,,scale%,pix%|
000010c0  0d 00 7b 4f 20 20 20 e7  77 61 74 63 68 6e 6f 25  |..{O   .watchno%|
000010d0  3d 73 25 28 58 25 2c 59  25 29 8c 20 e6 34 2c 30  |=s%(X%,Y%). .4,0|
000010e0  3a c8 93 c8 90 20 78 6f  25 2b 58 25 2a 78 73 74  |:.... xo%+X%*xst|
000010f0  65 70 2c 79 6f 25 2d 28  59 25 2b 31 29 2a 79 73  |ep,yo%-(Y%+1)*ys|
00001100  74 65 70 2c 78 73 74 65  70 2c 79 73 74 65 70 0d  |tep,xstep,ystep.|
00001110  00 7c 08 20 20 20 cd 0d  00 7d 46 20 20 20 c8 99  |.|.   ...}F   ..|
00001120  53 65 74 43 6f 6c 6f 75  72 25 2c 63 62 25 3a c8  |SetColour%,cb%:.|
00001130  93 20 78 6f 25 2b 58 25  2a 78 73 74 65 70 2c 79  |. xo%+X%*xstep,y|
00001140  6f 25 2d 79 73 74 65 70  2d 59 25 2a 79 73 74 65  |o%-ystep-Y%*yste|
00001150  70 2c 78 73 74 65 70 2c  79 73 74 65 70 0d 00 7e  |p,xstep,ystep..~|
00001160  09 20 20 ed 3a ed 0d 00  7f 2b 20 20 c8 99 22 57  |.  .:....+  .."W|
00001170  69 6d 70 5f 47 65 74 52  65 63 74 61 6e 67 6c 65  |imp_GetRectangle|
00001180  22 2c 2c 62 6c 6f 63 6b  25 20 b8 20 6d 6f 72 65  |",,block% . more|
00001190  25 0d 00 80 06 20 ce 0d  00 81 05 e1 0d 00 82 04  |%.... ..........|
000011a0  0d 00 83 17 dd f2 64 72  61 77 68 65 6c 70 3a 41  |......drawhelp:A|
000011b0  25 3d b3 28 31 35 29 0d  00 84 39 20 21 62 6c 6f  |%=.(15)...9 !blo|
000011c0  63 6b 25 3d 68 65 6c 70  77 25 3a c8 99 22 57 69  |ck%=helpw%:.."Wi|
000011d0  6d 70 5f 52 65 64 72 61  77 57 69 6e 64 6f 77 22  |mp_RedrawWindow"|
000011e0  2c 2c 62 6c 6f 63 6b 25  20 b8 20 6d 6f 72 65 25  |,,block% . more%|
000011f0  0d 00 85 0d 20 c8 95 20  6d 6f 72 65 25 0d 00 86  |.... .. more%...|
00001200  16 20 20 c8 99 53 65 74  43 6f 6c 6f 75 72 25 2c  |.  ..SetColour%,|
00001210  63 6e 25 0d 00 87 46 20  20 c8 93 c8 90 20 62 6c  |cn%...F  .... bl|
00001220  6f 63 6b 25 21 32 38 2c  62 6c 6f 63 6b 25 21 33  |ock%!28,block%!3|
00001230  32 2c 62 6c 6f 63 6b 25  21 33 36 2d 62 6c 6f 63  |2,block%!36-bloc|
00001240  6b 25 21 32 38 2c 62 6c  6f 63 6b 25 21 34 30 2d  |k%!28,block%!40-|
00001250  62 6c 6f 63 6b 25 21 33  32 0d 00 88 16 20 20 c8  |block%!32....  .|
00001260  99 53 65 74 43 6f 6c 6f  75 72 25 2c 63 79 25 0d  |.SetColour%,cy%.|
00001270  00 89 21 20 20 e3 20 79  25 3d 30 20 b8 20 62 25  |..!  . y%=0 . b%|
00001280  2d 31 3a e3 20 78 25 3d  30 20 b8 20 62 25 2d 31  |-1:. x%=0 . b%-1|
00001290  0d 00 8a 70 20 20 20 e7  20 73 25 28 78 25 2c 79  |...p   . s%(x%,y|
000012a0  25 29 3d 78 25 2b 31 2b  79 25 2a 62 25 20 84 20  |%)=x%+1+y%*b% . |
000012b0  28 73 25 28 78 25 2c 79  25 29 3d 30 20 80 20 78  |(s%(x%,y%)=0 . x|
000012c0  25 3d 62 25 2d 31 20 80  20 79 25 3d 62 25 2d 31  |%=b%-1 . y%=b%-1|
000012d0  29 20 8c 20 c8 93 c8 90  20 62 6c 6f 63 6b 25 21  |) . .... block%!|
000012e0  34 2b 78 25 2a 34 30 2c  62 6c 6f 63 6b 25 21 31  |4+x%*40,block%!1|
000012f0  36 2d 28 79 25 2b 31 29  2a 34 30 2d 34 2c 34 30  |6-(y%+1)*40-4,40|
00001300  0d 00 8b 09 20 20 ed 3a  ed 0d 00 8c 16 20 20 c8  |....  .:.....  .|
00001310  99 53 65 74 43 6f 6c 6f  75 72 25 2c 63 62 25 0d  |.SetColour%,cb%.|
00001320  00 8d 21 20 20 e3 20 79  25 3d 30 20 b8 20 62 25  |..!  . y%=0 . b%|
00001330  2d 31 3a e3 20 78 25 3d  30 20 b8 20 62 25 2d 31  |-1:. x%=0 . b%-1|
00001340  0d 00 8e 31 20 20 20 c8  93 20 62 6c 6f 63 6b 25  |...1   .. block%|
00001350  21 34 2b 78 25 2a 34 30  2c 62 6c 6f 63 6b 25 21  |!4+x%*40,block%!|
00001360  31 36 2d 28 79 25 2b 31  29 2a 34 30 2d 34 2c 34  |16-(y%+1)*40-4,4|
00001370  30 0d 00 8f 0a 20 20 ed  3a ed 20 0d 00 90 2b 20  |0....  .:. ...+ |
00001380  20 c8 99 22 57 69 6d 70  5f 47 65 74 52 65 63 74  | .."Wimp_GetRect|
00001390  61 6e 67 6c 65 22 2c 2c  62 6c 6f 63 6b 25 20 b8  |angle",,block% .|
000013a0  20 6d 6f 72 65 25 0d 00  91 06 20 ce 0d 00 92 05  | more%.... .....|
000013b0  e1 0d 00 93 04 0d 00 94  71 dd f2 70 65 72 63 65  |........q..perce|
000013c0  6e 74 3a 54 25 3d 30 3a  e3 20 79 25 3d 30 20 b8  |nt:T%=0:. y%=0 .|
000013d0  20 62 25 2d 31 3a e3 20  78 25 3d 30 20 b8 20 62  | b%-1:. x%=0 . b|
000013e0  25 2d 31 3a e7 20 73 25  28 78 25 2c 79 25 29 3d  |%-1:. s%(x%,y%)=|
000013f0  78 25 2b 31 2b 79 25 2a  62 25 20 84 20 28 73 25  |x%+1+y%*b% . (s%|
00001400  28 78 25 2c 79 25 29 3d  30 20 80 20 78 25 3d 62  |(x%,y%)=0 . x%=b|
00001410  25 2d 31 20 80 20 79 25  3d 62 25 2d 31 29 20 8c  |%-1 . y%=b%-1) .|
00001420  20 54 25 2b 3d 31 0d 00  95 43 20 20 ed 3a ed 3a  | T%+=1...C  .:.:|
00001430  40 25 3d 26 31 30 32 30  32 30 31 3a f2 69 63 6f  |@%=&1020201:.ico|
00001440  6e 74 65 78 74 28 74 69  6d 65 77 25 2c 32 2c c3  |ntext(timew%,2,.|
00001450  28 54 25 2a 28 31 30 30  2f 28 62 25 2a 62 25 29  |(T%*(100/(b%*b%)|
00001460  29 29 29 3a 40 25 3d 31  30 0d 00 96 59 20 20 e7  |))):@%=10...Y  .|
00001470  20 54 25 3c 62 25 2a 62  25 20 8c 20 74 66 6c 61  | T%<b%*b% . tfla|
00001480  67 25 3d 74 66 6c 61 67  25 80 31 20 8b 20 74 66  |g%=tflag%.1 . tf|
00001490  6c 61 67 25 3d 74 66 6c  61 67 25 84 32 3a c8 99  |lag%=tflag%.2:..|
000014a0  47 65 74 54 69 6d 65 25  20 b8 20 64 65 6c 61 79  |GetTime% . delay|
000014b0  25 3a e7 20 71 75 69 74  25 3d 30 20 8c 20 f2 77  |%:. quit%=0 . .w|
000014c0  69 6e 0d 00 97 05 e1 0d  00 98 04 0d 00 99 0f dd  |in..............|
000014d0  f2 77 69 6e 3a f2 74 69  6d 65 0d 00 9a 4d 20 ef  |.win:.time...M .|
000014e0  37 3a f2 69 63 6f 6e 74  65 78 74 28 77 69 6e 25  |7:.icontext(win%|
000014f0  2c 32 2c 24 a4 74 65 78  74 28 74 69 6d 65 77 25  |,2,$.text(timew%|
00001500  2c 31 29 29 3a 21 62 6c  6f 63 6b 25 3d 77 69 6e  |,1)):!block%=win|
00001510  25 3a c8 99 20 47 65 74  57 69 6e 64 6f 77 25 2c  |%:.. GetWindow%,|
00001520  2c 62 6c 6f 63 6b 25 0d  00 9b 2c 20 c8 99 20 26  |,block%..., .. &|
00001530  33 35 2c 2d 31 2c 31 31  20 b8 20 2c 2c 57 25 3a  |35,-1,11 . ,,W%:|
00001540  c8 99 20 26 33 35 2c 2d  31 2c 31 32 20 b8 20 2c  |.. &35,-1,12 . ,|
00001550  2c 48 25 0d 00 9c 2a 20  c8 99 20 26 33 35 2c 2d  |,H%...* .. &35,-|
00001560  31 2c 34 20 b8 20 2c 2c  41 25 3a c8 99 20 26 33  |1,4 . ,,A%:.. &3|
00001570  35 2c 2d 31 2c 35 20 b8  20 2c 2c 55 25 0d 00 9d  |5,-1,5 . ,,U%...|
00001580  20 20 57 25 3d 28 57 25  2b 31 29 3c 3c 41 25 3a  |  W%=(W%+1)<<A%:|
00001590  48 25 3d 28 48 25 2b 31  29 3c 3c 55 25 0d 00 9e  |H%=(H%+1)<<U%...|
000015a0  4c 20 77 69 6e 57 25 3d  62 6c 6f 63 6b 25 21 31  |L winW%=block%!1|
000015b0  32 2d 62 6c 6f 63 6b 25  21 34 3a 77 69 6e 48 25  |2-block%!4:winH%|
000015c0  3d 31 38 30 3a 59 24 3d  24 a4 74 65 78 74 28 74  |=180:Y$=$.text(t|
000015d0  69 6d 65 77 25 2c 31 29  3a 4f 24 3d 24 a4 74 61  |imew%,1):O$=$.ta|
000015e0  62 6c 65 28 62 25 2c 32  29 0d 00 9f 71 20 e7 20  |ble(b%,2)...q . |
000015f0  bb c0 59 24 2c a7 59 24  2c 22 3a 22 29 2d 31 29  |..Y$,.Y$,":")-1)|
00001600  3c 3d bb c0 4f 24 2c a7  4f 24 2c 22 3a 22 29 2d  |<=..O$,.O$,":")-|
00001610  31 29 20 80 20 20 bb c1  59 24 2c a7 59 24 2c 22  |1) .  ..Y$,.Y$,"|
00001620  3a 22 29 2b 31 2c 32 29  3c 3d bb c1 4f 24 2c a7  |:")+1,2)<=..O$,.|
00001630  4f 24 2c 22 3a 22 29 2b  31 2c 32 29 20 80 20 bb  |O$,":")+1,2) . .|
00001640  c2 59 24 2c 32 29 3c bb  c2 4f 24 2c 32 29 20 8c  |.Y$,2)<..O$,2) .|
00001650  20 77 69 6e 48 25 3d 34  33 32 0d 00 a0 33 20 62  | winH%=432...3 b|
00001660  6c 6f 63 6b 25 21 34 3d  57 25 2f 32 2d 77 69 6e  |lock%!4=W%/2-win|
00001670  57 25 2f 32 3a 62 6c 6f  63 6b 25 21 31 32 3d 62  |W%/2:block%!12=b|
00001680  6c 6f 63 6b 25 21 34 2b  77 69 6e 57 25 0d 00 a1  |lock%!4+winW%...|
00001690  40 20 62 6c 6f 63 6b 25  21 38 3d 48 25 2f 32 2d  |@ block%!8=H%/2-|
000016a0  77 69 6e 48 25 2f 32 3a  62 6c 6f 63 6b 25 21 31  |winH%/2:block%!1|
000016b0  36 3d 62 6c 6f 63 6b 25  21 38 2b 77 69 6e 48 25  |6=block%!8+winH%|
000016c0  3a 62 6c 6f 63 6b 25 21  32 38 3d 2d 31 0d 00 a2  |:block%!28=-1...|
000016d0  1a 20 c8 99 4f 70 65 6e  57 69 6e 64 6f 77 25 2c  |. ..OpenWindow%,|
000016e0  2c 62 6c 6f 63 6b 25 0d  00 a3 12 20 e7 20 77 69  |,block%.... . wi|
000016f0  6e 48 25 3d 34 33 32 20  8c 0d 00 a4 55 20 20 41  |nH%=432 ....U  A|
00001700  24 3d 24 a4 74 61 62 6c  65 28 62 25 2c 31 29 3a  |$=$.table(b%,1):|
00001710  f2 69 63 6f 6e 74 65 78  74 28 77 69 6e 25 2c 35  |.icontext(win%,5|
00001720  2c 41 24 29 3a c8 99 22  57 69 6d 70 5f 53 65 74  |,A$):.."Wimp_Set|
00001730  43 61 72 65 74 50 6f 73  69 74 69 6f 6e 22 2c 77  |CaretPosition",w|
00001740  69 6e 25 2c 35 2c 2c 2c  2d 31 2c a9 41 24 0d 00  |in%,5,,,-1,.A$..|
00001750  a5 31 20 20 f2 6d 65 6e  75 73 68 61 64 65 28 62  |.1  .menushade(b|
00001760  61 72 25 2c 31 2c 2d 31  29 3a f2 6d 65 6e 75 73  |ar%,1,-1):.menus|
00001770  68 61 64 65 28 62 61 72  25 2c 38 2c 2d 31 29 0d  |hade(bar%,8,-1).|
00001780  00 a6 06 20 cd 0d 00 a7  05 e1 0d 00 a8 04 0d 00  |... ............|
00001790  a9 0e dd f2 64 72 61 77  76 69 65 77 0d 00 aa 26  |....drawview...&|
000017a0  20 62 6c 6f 63 6b 25 21  30 3d 76 69 65 77 25 3a  | block%!0=view%:|
000017b0  c8 99 47 65 74 49 6e 66  6f 25 2c 2c 62 6c 6f 63  |..GetInfo%,,bloc|
000017c0  6b 25 0d 00 ab 3d 20 77  77 69 64 74 68 25 3d 62  |k%...= wwidth%=b|
000017d0  6c 6f 63 6b 25 21 35 32  2d 62 6c 6f 63 6b 25 21  |lock%!52-block%!|
000017e0  34 34 3a 77 68 65 69 67  68 74 25 3d 62 6c 6f 63  |44:wheight%=bloc|
000017f0  6b 25 21 34 38 2d 62 6c  6f 63 6b 25 21 35 36 0d  |k%!48-block%!56.|
00001800  00 ac 33 20 78 6f 25 3d  62 6c 6f 63 6b 25 21 34  |..3 xo%=block%!4|
00001810  2d 62 6c 6f 63 6b 25 21  32 30 3a 79 6f 25 3d 62  |-block%!20:yo%=b|
00001820  6c 6f 63 6b 25 21 31 36  2d 62 6c 6f 63 6b 25 21  |lock%!16-block%!|
00001830  32 34 0d 00 ad 2a 20 c8  99 22 57 69 6d 70 5f 52  |24...* .."Wimp_R|
00001840  65 64 72 61 77 57 69 6e  64 6f 77 22 2c 2c 62 6c  |edrawWindow",,bl|
00001850  6f 63 6b 25 20 b8 20 6d  6f 72 65 25 0d 00 ae 41  |ock% . more%...A|
00001860  20 21 73 63 61 6c 65 32  25 3d 28 62 6c 6f 63 6b  | !scale2%=(block|
00001870  25 21 31 32 2d 62 6c 6f  63 6b 25 21 34 29 3a 73  |%!12-block%!4):s|
00001880  63 61 6c 65 32 25 21 34  3d 28 62 6c 6f 63 6b 25  |cale2%!4=(block%|
00001890  21 31 36 2d 62 6c 6f 63  6b 25 21 38 29 0d 00 af  |!16-block%!8)...|
000018a0  28 20 73 63 61 6c 65 32  25 21 38 3d 77 69 64 74  |( scale2%!8=widt|
000018b0  68 25 3a 73 63 61 6c 65  32 25 21 31 32 3d 68 65  |h%:scale2%!12=he|
000018c0  69 67 68 74 25 0d 00 b0  36 20 e3 20 41 25 3d 30  |ight%...6 . A%=0|
000018d0  20 b8 20 31 32 20 88 20  34 3a 73 63 61 6c 65 32  | . 12 . 4:scale2|
000018e0  25 21 41 25 3d 73 63 61  6c 65 32 25 21 41 25 2a  |%!A%=scale2%!A%*|
000018f0  73 63 61 6c 65 25 21 41  25 3a ed 0d 00 b1 0d 20  |scale%!A%:..... |
00001900  c8 95 20 6d 6f 72 65 25  0d 00 b2 46 20 20 c8 99  |.. more%...F  ..|
00001910  53 70 72 69 74 65 4f 70  25 2c 35 32 2b 35 31 32  |SpriteOp%,52+512|
00001920  2c 62 69 67 25 2c 62 69  67 25 2b 31 36 2c 62 6c  |,big%,big%+16,bl|
00001930  6f 63 6b 25 21 34 2c 62  6c 6f 63 6b 25 21 38 2c  |ock%!4,block%!8,|
00001940  30 2c 73 63 61 6c 65 32  25 2c 70 69 78 25 0d 00  |0,scale2%,pix%..|
00001950  b3 2b 20 20 c8 99 22 57  69 6d 70 5f 47 65 74 52  |.+  .."Wimp_GetR|
00001960  65 63 74 61 6e 67 6c 65  22 2c 2c 62 6c 6f 63 6b  |ectangle",,block|
00001970  25 20 b8 20 6d 6f 72 65  25 0d 00 b4 06 20 ce 0d  |% . more%.... ..|
00001980  00 b5 05 e1 0d 00 b6 04  0d 00 b7 1f f4 20 2a 2a  |............. **|
00001990  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 20 20 4d  |*************  M|
000019a0  65 73 73 61 67 65 73 0d  00 b8 04 0d 00 b9 0d dd  |essages.........|
000019b0  f2 72 65 63 65 69 76 65  0d 00 ba 13 20 c8 8e 20  |.receive.... .. |
000019c0  62 6c 6f 63 6b 25 21 31  36 20 ca 0d 00 bb 11 20  |block%!16 ..... |
000019d0  20 c9 20 30 3a 71 75 69  74 25 3d b9 0d 00 bc 19  | . 0:quit%=.....|
000019e0  20 20 c9 20 32 3a f4 20  2a 2a 2a 20 44 61 74 61  |  . 2:. *** Data|
000019f0  20 73 61 76 65 0d 00 bd  31 20 20 c9 20 33 3a f2  | save...1  . 3:.|
00001a00  64 61 74 61 6c 6f 61 64  28 62 6c 6f 63 6b 25 21  |dataload(block%!|
00001a10  34 30 2c a4 73 74 72 69  6e 67 28 62 6c 6f 63 6b  |40,.string(block|
00001a20  25 2b 34 34 29 29 0d 00  be 0d 20 20 c9 20 26 35  |%+44))....  . &5|
00001a30  30 32 3a 0d 00 bf 3d 20  20 20 21 62 6c 6f 63 6b  |02:...=   !block|
00001a40  25 3d 32 35 36 3a c8 94  20 62 6c 6f 63 6b 25 21  |%=256:.. block%!|
00001a50  38 2c 62 6c 6f 63 6b 25  21 31 32 3a 62 6c 6f 63  |8,block%!12:bloc|
00001a60  6b 25 21 31 36 3d 26 35  30 33 3a 41 24 3d 22 22  |k%!16=&503:A$=""|
00001a70  0d 00 c0 15 20 20 20 c8  8e 20 62 6c 6f 63 6b 25  |....   .. block%|
00001a80  21 33 32 20 ca 0d 00 c1  23 20 20 20 20 c9 20 2d  |!32 ....#    . -|
00001a90  32 3a 41 24 3d a4 6d 65  73 73 61 67 65 28 22 42  |2:A$=.message("B|
00001aa0  61 72 48 65 6c 70 22 29  0d 00 c2 3e 20 20 20 20  |arHelp")...>    |
00001ab0  c9 20 6d 61 69 6e 25 3a  41 24 3d a4 6d 65 73 73  |. main%:A$=.mess|
00001ac0  61 67 65 28 22 4d 61 69  6e 48 65 6c 70 30 22 29  |age("MainHelp0")|
00001ad0  2b a4 6d 65 73 73 61 67  65 28 22 4d 61 69 6e 48  |+.message("MainH|
00001ae0  65 6c 70 31 22 29 0d 00  c3 27 20 20 20 20 c9 20  |elp1")...'    . |
00001af0  76 69 65 77 25 3a 41 24  3d a4 6d 65 73 73 61 67  |view%:A$=.messag|
00001b00  65 28 22 56 69 65 77 48  65 6c 70 22 29 0d 00 c4  |e("ViewHelp")...|
00001b10  28 20 20 20 20 c9 20 68  65 6c 70 77 25 3a 41 24  |(    . helpw%:A$|
00001b20  3d a4 6d 65 73 73 61 67  65 28 22 48 65 6c 70 48  |=.message("HelpH|
00001b30  65 6c 70 22 29 0d 00 c5  27 20 20 20 20 c9 20 69  |elp")...'    . i|
00001b40  6e 66 6f 25 3a 41 24 3d  a4 6d 65 73 73 61 67 65  |nfo%:A$=.message|
00001b50  28 22 49 6e 66 6f 48 65  6c 70 22 29 0d 00 c6 44  |("InfoHelp")...D|
00001b60  20 20 20 20 c9 20 77 69  64 25 3a 41 24 3d a4 6d  |    . wid%:A$=.m|
00001b70  65 73 73 61 67 65 28 22  57 69 64 48 65 6c 70 22  |essage("WidHelp"|
00001b80  29 2b a4 6d 65 73 73 61  67 65 28 22 57 69 64 48  |)+.message("WidH|
00001b90  65 6c 70 22 2b c3 62 6c  6f 63 6b 25 21 33 36 29  |elp"+.block%!36)|
00001ba0  0d 00 c7 08 20 20 20 cb  0d 00 c8 3e 20 20 20 24  |....   ....>   $|
00001bb0  28 62 6c 6f 63 6b 25 2b  32 30 29 3d 41 24 3a c8  |(block%+20)=A$:.|
00001bc0  99 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  |."Wimp_SendMessa|
00001bd0  67 65 22 2c 31 37 2c 62  6c 6f 63 6b 25 2c 62 6c  |ge",17,block%,bl|
00001be0  6f 63 6b 25 21 34 0d 00  c9 0f 20 20 c9 20 26 34  |ock%!4....  . &4|
00001bf0  30 30 43 31 3a 0d 00 ca  3b 20 20 20 c8 99 52 65  |00C1:...;   ..Re|
00001c00  61 64 4d 6f 64 65 25 2c  2d 31 2c 33 20 b8 20 2c  |adMode%,-1,3 . ,|
00001c10  2c 6e 63 6f 6c 6f 75 72  25 3a e7 20 64 65 66 61  |,ncolour%:. defa|
00001c20  75 6c 74 24 3d 22 22 20  8c 20 f2 73 70 6c 69 74  |ult$="" . .split|
00001c30  0d 00 cb 3c 20 20 20 c8  99 22 57 69 6d 70 5f 52  |...<   .."Wimp_R|
00001c40  65 61 64 50 69 78 54 72  61 6e 73 22 2c 35 31 32  |eadPixTrans",512|
00001c50  2c 62 69 67 25 2c 62 69  67 25 2b 31 36 2c 2c 2c  |,big%,big%+16,,,|
00001c60  2c 73 63 61 6c 65 25 2c  70 69 78 25 0d 00 cc 34  |,scale%,pix%...4|
00001c70  20 20 20 c8 99 53 70 72  69 74 65 4f 70 25 2c 34  |   ..SpriteOp%,4|
00001c80  30 2b 35 31 32 2c 62 69  67 25 2c 62 69 67 25 2b  |0+512,big%,big%+|
00001c90  31 36 20 b8 20 2c 2c 2c  2c 2c 2c 6d 6f 64 65 25  |16 . ,,,,,,mode%|
00001ca0  0d 00 cd 27 20 20 20 c8  99 52 65 61 64 4d 6f 64  |...'   ..ReadMod|
00001cb0  65 25 2c 6d 6f 64 65 25  2c 33 20 b8 20 2c 2c 6e  |e%,mode%,3 . ,,n|
00001cc0  63 6f 6c 6f 75 72 25 0d  00 ce 45 20 20 20 e7 20  |colour%...E   . |
00001cd0  6e 63 6f 6c 6f 75 72 25  3d 36 33 20 8c 20 c8 99  |ncolour%=63 . ..|
00001ce0  22 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 53 65 6c  |"ColourTrans_Sel|
00001cf0  65 63 74 54 61 62 6c 65  22 2c 6d 6f 64 65 25 2c  |ectTable",mode%,|
00001d00  30 2c 2d 31 2c 2d 31 2c  70 69 78 25 0d 00 cf 0f  |0,-1,-1,pix%....|
00001d10  20 20 c9 20 26 34 30 30  43 30 3a 0d 00 d0 22 20  |  . &400C0:..." |
00001d20  20 20 73 78 25 3d 62 6c  6f 63 6b 25 21 32 34 3a  |  sx%=block%!24:|
00001d30  73 79 25 3d 62 6c 6f 63  6b 25 21 32 38 0d 00 d1  |sy%=block%!28...|
00001d40  15 20 20 20 c8 8e 20 62  6c 6f 63 6b 25 21 33 32  |.   .. block%!32|
00001d50  20 ca 0d 00 d2 15 20 20  20 20 c9 20 36 3a f2 6d  | .....    . 6:.m|
00001d60  61 6b 65 6c 69 73 74 0d  00 d3 0c 20 20 20 20 c9  |akelist....    .|
00001d70  20 37 3a 0d 00 d4 27 20  20 20 20 20 e3 20 42 25  | 7:...'     . B%|
00001d80  3d 30 20 b8 20 31 35 3a  f2 74 69 63 6b 28 63 6f  |=0 . 15:.tick(co|
00001d90  6c 25 2c 42 25 2c 30 29  3a ed 0d 00 d5 17 20 20  |l%,B%,0):.....  |
00001da0  20 20 20 c8 8e 20 62 6c  6f 63 6b 25 21 33 36 20  |   .. block%!36 |
00001db0  ca 0d 00 d6 20 20 20 20  20 20 20 c9 20 30 3a f2  |....       . 0:.|
00001dc0  74 69 63 6b 28 63 6f 6c  25 2c 63 62 25 2c 2d 31  |tick(col%,cb%,-1|
00001dd0  29 0d 00 d7 20 20 20 20  20 20 20 c9 20 31 3a f2  |)...       . 1:.|
00001de0  74 69 63 6b 28 63 6f 6c  25 2c 63 79 25 2c 2d 31  |tick(col%,cy%,-1|
00001df0  29 0d 00 d8 20 20 20 20  20 20 20 c9 20 32 3a f2  |)...       . 2:.|
00001e00  74 69 63 6b 28 63 6f 6c  25 2c 63 6e 25 2c 2d 31  |tick(col%,cn%,-1|
00001e10  29 0d 00 d9 0a 20 20 20  20 20 cb 0d 00 da 2f 20  |)....     ..../ |
00001e20  20 20 20 20 24 63 6f 6c  25 3d a4 6d 65 73 73 61  |    $col%=.messa|
00001e30  67 65 28 22 4d 65 6e 38  2e 22 2b c3 28 62 6c 6f  |ge("Men8."+.(blo|
00001e40  63 6b 25 21 33 36 2b 31  29 29 0d 00 db 2d 20 20  |ck%!36+1))...-  |
00001e50  20 20 20 c8 99 22 57 69  6d 70 5f 43 72 65 61 74  |   .."Wimp_Creat|
00001e60  65 53 75 62 4d 65 6e 75  22 2c 2c 63 6f 6c 25 2c  |eSubMenu",,col%,|
00001e70  73 78 25 2c 73 79 25 0d  00 dc 43 20 20 20 20 c9  |sx%,sy%...C    .|
00001e80  20 38 3a 24 a4 74 65 78  74 28 77 69 64 25 2c 31  | 8:$.text(wid%,1|
00001e90  29 3d c3 62 25 3a c8 99  22 57 69 6d 70 5f 43 72  |)=.b%:.."Wimp_Cr|
00001ea0  65 61 74 65 53 75 62 4d  65 6e 75 22 2c 2c 77 69  |eateSubMenu",,wi|
00001eb0  64 25 2c 73 78 25 2c 73  79 25 0d 00 dd 08 20 20  |d%,sx%,sy%....  |
00001ec0  20 cb 0d 00 de 06 20 cb  0d 00 df 05 e1 0d 00 e0  | ..... .........|
00001ed0  04 0d 00 e1 0e dd f2 6d  61 6b 65 6c 69 73 74 0d  |.......makelist.|
00001ee0  00 e2 38 20 41 25 3d 6c  69 73 25 2b 32 38 3a 21  |..8 A%=lis%+28:!|
00001ef0  41 25 3d 30 3a f2 74 69  63 6b 28 6c 69 73 25 2c  |A%=0:.tick(lis%,|
00001f00  30 2c 64 65 66 61 75 6c  74 24 3d 22 22 29 3a 69  |0,default$=""):i|
00001f10  6e 64 65 78 25 3d 30 0d  00 e3 06 20 f5 0d 00 e4  |ndex%=0.... ....|
00001f20  4b 20 20 c8 99 22 58 4f  53 5f 47 42 50 42 22 2c  |K  .."XOS_GBPB",|
00001f30  31 30 2c 22 3c 50 75 7a  50 69 63 24 44 69 72 3e  |10,"<PuzPic$Dir>|
00001f40  22 2c 72 65 70 25 2c 31  2c 69 6e 64 65 78 25 2c  |",rep%,1,index%,|
00001f50  32 35 35 2c 30 20 b8 20  2c 2c 2c 2c 69 6e 64 65  |255,0 . ,,,,inde|
00001f60  78 25 3b 66 6c 61 67 25  0d 00 e5 27 20 20 e7 20  |x%;flag%...'  . |
00001f70  69 6e 64 65 78 25 3d 31  20 80 20 28 66 6c 61 67  |index%=1 . (flag|
00001f80  25 80 31 29 3d 30 20 8c  20 21 41 25 2b 3d 32 0d  |%.1)=0 . !A%+=2.|
00001f90  00 e6 3d 20 20 e7 20 69  6e 64 65 78 25 3c 3e 2d  |..=  . index%<>-|
00001fa0  31 20 80 20 28 28 21 72  65 70 25 80 26 46 46 46  |1 . ((!rep%.&FFF|
00001fb0  30 30 29 3e 3e 38 29 3d  26 46 46 39 20 80 20 28  |00)>>8)=&FF9 . (|
00001fc0  66 6c 61 67 25 80 31 29  3d 30 20 8c 0d 00 e7 42  |flag%.1)=0 ....B|
00001fd0  20 20 20 41 25 2b 3d 32  34 3a 24 28 41 25 2b 31  |   A%+=24:$(A%+1|
00001fe0  32 29 3d a4 73 74 72 69  6e 67 28 72 65 70 25 2b  |2)=.string(rep%+|
00001ff0  32 30 29 3a 21 41 25 3d  30 3a 41 25 21 34 3d 30  |20):!A%=0:A%!4=0|
00002000  3a 41 25 21 38 3d 26 37  30 30 30 30 32 31 0d 00  |:A%!8=&7000021..|
00002010  e8 32 20 20 20 e7 20 22  3c 50 75 7a 50 69 63 24  |.2   . "<PuzPic$|
00002020  44 69 72 3e 2e 22 2b 24  28 41 25 2b 31 32 29 3d  |Dir>."+$(A%+12)=|
00002030  64 65 66 61 75 6c 74 24  20 8c 20 21 41 25 3d 31  |default$ . !A%=1|
00002040  0d 00 e9 07 20 20 cd 0d  00 ea 1a 20 fd 20 69 6e  |....  ..... . in|
00002050  64 65 78 25 3d 2d 31 20  84 20 66 6c 61 67 25 80  |dex%=-1 . flag%.|
00002060  31 0d 00 eb 32 20 21 41  25 2b 3d 31 32 38 3a c8  |1...2 !A%+=128:.|
00002070  99 22 57 69 6d 70 5f 43  72 65 61 74 65 53 75 62  |."Wimp_CreateSub|
00002080  4d 65 6e 75 22 2c 2c 6c  69 73 25 2c 73 78 25 2c  |Menu",,lis%,sx%,|
00002090  73 79 25 0d 00 ec 05 e1  0d 00 ed 04 0d 00 ee 3e  |sy%............>|
000020a0  dd a4 73 74 72 69 6e 67  28 70 74 72 25 29 3a ea  |..string(ptr%):.|
000020b0  20 41 24 3a c8 95 20 3f  70 74 72 25 3c 3e 30 3a  | A$:.. ?ptr%<>0:|
000020c0  41 24 2b 3d bd 28 3f 70  74 72 25 29 3a 70 74 72  |A$+=.(?ptr%):ptr|
000020d0  25 2b 3d 31 3a ce 3a 3d  41 24 0d 00 ef 04 0d 00  |%+=1:.:=A$......|
000020e0  f0 1b dd f2 64 61 74 61  6c 6f 61 64 28 74 79 70  |....dataload(typ|
000020f0  65 25 2c 70 61 74 68 24  29 0d 00 f1 46 20 e7 20  |e%,path$)...F . |
00002100  74 79 70 65 25 3d 26 46  46 39 20 8c 20 64 65 66  |type%=&FF9 . def|
00002110  61 75 6c 74 24 3d 70 61  74 68 24 3a f2 6c 6f 61  |ault$=path$:.loa|
00002120  64 73 70 72 69 74 65 28  70 61 74 68 24 29 3a f2  |dsprite(path$):.|
00002130  73 70 6c 69 74 3a f2 76  6f 69 64 6d 61 69 6e 0d  |split:.voidmain.|
00002140  00 f2 05 e1 0d 00 f3 04  0d 00 f4 1d f4 20 2a 2a  |............. **|
00002150  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 20 20 43  |*************  C|
00002160  6c 69 63 6b 73 0d 00 f5  04 0d 00 f6 42 dd f2 6d  |licks.......B..m|
00002170  61 6b 65 70 6f 69 6e 74  65 72 28 41 24 29 3a c8  |akepointer(A$):.|
00002180  99 22 58 57 69 6d 70 5f  53 70 72 69 74 65 4f 70  |."XWimp_SpriteOp|
00002190  22 2c 33 36 2c 2c 22 70  74 72 5f 22 2b 41 24 2c  |",36,,"ptr_"+A$,|
000021a0  32 2c 30 2c 30 2c 30 2c  30 3a e1 0d 00 f7 04 0d  |2,0,0,0,0:......|
000021b0  00 f8 28 dd f2 63 6c 69  63 6b 28 77 69 6e 64 6f  |..(..click(windo|
000021c0  77 25 2c 69 63 6f 6e 25  2c 62 75 74 74 6f 6e 25  |w%,icon%,button%|
000021d0  2c 58 25 2c 59 25 29 0d  00 f9 4b 20 e7 20 28 28  |,X%,Y%)...K . ((|
000021e0  62 75 74 74 6f 6e 25 3d  31 20 80 20 77 69 6e 64  |button%=1 . wind|
000021f0  6f 77 25 3e 30 29 20 84  20 62 75 74 74 6f 6e 25  |ow%>0) . button%|
00002200  80 36 34 29 20 80 20 77  69 6e 64 6f 77 25 3c 3e  |.64) . window%<>|
00002210  6d 61 69 6e 25 20 8c 20  f2 73 74 61 72 74 64 72  |main% . .startdr|
00002220  61 67 0d 00 fa 11 20 c8  8e 20 77 69 6e 64 6f 77  |ag.... .. window|
00002230  25 20 ca 0d 00 fb 0b 20  20 c9 20 2d 32 3a 0d 00  |% .....  . -2:..|
00002240  fc 13 20 20 20 c8 8e 20  62 75 74 74 6f 6e 25 20  |..   .. button% |
00002250  ca 0d 00 fd 18 20 20 20  20 c9 20 31 3a f2 6f 70  |.....    . 1:.op|
00002260  65 6e 28 76 69 65 77 25  29 0d 00 fe 24 20 20 20  |en(view%)...$   |
00002270  20 c9 20 32 3a f2 6d 65  6e 75 28 58 25 2d 36 34  | . 2:.menu(X%-64|
00002280  2c 39 36 2b 34 34 2a 31  31 2b 35 30 29 0d 00 ff  |,96+44*11+50)...|
00002290  18 20 20 20 20 c9 20 34  3a f2 6f 70 65 6e 28 6d  |.    . 4:.open(m|
000022a0  61 69 6e 25 29 0d 01 00  08 20 20 20 cb 0d 01 01  |ain%)....   ....|
000022b0  32 20 20 c9 20 68 65 6c  70 77 25 2c 76 69 65 77  |2  . helpw%,view|
000022c0  25 3a e7 20 62 75 74 74  6f 6e 25 3d 32 20 8c 20  |%:. button%=2 . |
000022d0  f2 6d 65 6e 75 28 58 25  2d 36 34 2c 59 25 29 0d  |.menu(X%-64,Y%).|
000022e0  01 02 2c 20 20 c9 20 74  69 6d 65 77 25 3a e7 20  |..,  . timew%:. |
000022f0  62 75 74 74 6f 6e 25 3d  32 20 8c 20 f2 6d 65 6e  |button%=2 . .men|
00002300  75 28 58 25 2d 36 34 2c  59 25 29 0d 01 03 12 20  |u(X%-64,Y%).... |
00002310  20 20 e7 20 69 63 6f 6e  25 3d 34 20 8c 0d 01 04  |  . icon%=4 ....|
00002320  54 20 20 20 20 21 62 6c  6f 63 6b 25 3d 68 69 67  |T    !block%=hig|
00002330  68 77 25 3a c8 99 20 47  65 74 57 69 6e 64 6f 77  |hw%:.. GetWindow|
00002340  25 2c 2c 62 6c 6f 63 6b  25 3a c8 99 20 26 33 35  |%,,block%:.. &35|
00002350  2c 2d 31 2c 31 31 20 b8  20 2c 2c 57 25 3a c8 99  |,-1,11 . ,,W%:..|
00002360  20 26 33 35 2c 2d 31 2c  31 32 20 b8 20 2c 2c 48  | &35,-1,12 . ,,H|
00002370  25 0d 01 05 49 20 20 20  20 c8 99 20 26 33 35 2c  |%...I    .. &35,|
00002380  2d 31 2c 34 20 b8 20 2c  2c 41 25 3a c8 99 20 26  |-1,4 . ,,A%:.. &|
00002390  33 35 2c 2d 31 2c 35 20  b8 20 2c 2c 55 25 3a 57  |35,-1,5 . ,,U%:W|
000023a0  25 3d 28 57 25 2b 31 29  3c 3c 41 25 3a 48 25 3d  |%=(W%+1)<<A%:H%=|
000023b0  28 48 25 2b 31 29 3c 3c  55 25 0d 01 06 4f 20 20  |(H%+1)<<U%...O  |
000023c0  20 20 77 69 6e 57 25 3d  62 6c 6f 63 6b 25 21 31  |  winW%=block%!1|
000023d0  32 2d 62 6c 6f 63 6b 25  21 34 3a 77 69 6e 48 25  |2-block%!4:winH%|
000023e0  3d 62 6c 6f 63 6b 25 21  31 36 2d 62 6c 6f 63 6b  |=block%!16-block|
000023f0  25 21 38 3a 62 6c 6f 63  6b 25 21 34 3d 57 25 2f  |%!8:block%!4=W%/|
00002400  32 2d 77 69 6e 57 25 2f  32 0d 01 07 4f 20 20 20  |2-winW%/2...O   |
00002410  20 62 6c 6f 63 6b 25 21  31 32 3d 62 6c 6f 63 6b  | block%!12=block|
00002420  25 21 34 2b 77 69 6e 57  25 3a 62 6c 6f 63 6b 25  |%!4+winW%:block%|
00002430  21 38 3d 48 25 2f 32 2d  77 69 6e 48 25 2f 32 3a  |!8=H%/2-winH%/2:|
00002440  62 6c 6f 63 6b 25 21 31  36 3d 62 6c 6f 63 6b 25  |block%!16=block%|
00002450  21 38 2b 77 69 6e 48 25  0d 01 08 1d 20 20 20 20  |!8+winH%....    |
00002460  c8 99 4f 70 65 6e 57 69  6e 64 6f 77 25 2c 2c 62  |..OpenWindow%,,b|
00002470  6c 6f 63 6b 25 0d 01 09  08 20 20 20 cd 0d 01 0a  |lock%....   ....|
00002480  73 20 20 c9 20 6d 61 69  6e 25 3a e7 20 62 75 74  |s  . main%:. but|
00002490  74 6f 6e 25 3d 32 20 8c  20 f2 6d 65 6e 75 28 58  |ton%=2 . .menu(X|
000024a0  25 2d 36 34 2c 59 25 29  20 8b 20 e7 20 28 74 66  |%-64,Y%) . . (tf|
000024b0  6c 61 67 25 80 32 29 3d  30 20 8c 20 f2 6d 61 69  |lag%.2)=0 . .mai|
000024c0  6e 63 6c 69 63 6b 28 58  25 2c 59 25 29 3a f2 70  |nclick(X%,Y%):.p|
000024d0  65 72 63 65 6e 74 20 8b  20 e7 20 62 75 74 74 6f  |ercent . . butto|
000024e0  6e 25 80 36 34 20 f2 73  74 61 72 74 64 72 61 67  |n%.64 .startdrag|
000024f0  0d 01 0b 2a 20 20 c9 20  77 69 6e 25 3a e7 20 62  |...*  . win%:. b|
00002500  75 74 74 6f 6e 25 3d 32  20 8c 20 f2 6d 65 6e 75  |utton%=2 . .menu|
00002510  28 58 25 2d 36 34 2c 59  25 29 0d 01 0c 12 20 20  |(X%-64,Y%)....  |
00002520  20 e7 20 69 63 6f 6e 25  3d 33 20 8c 0d 01 0d 2b  | . icon%=3 ....+|
00002530  20 20 20 20 21 62 6c 6f  63 6b 25 3d 77 69 6e 25  |    !block%=win%|
00002540  3a c8 99 43 6c 6f 73 65  57 69 6e 64 6f 77 25 2c  |:..CloseWindow%,|
00002550  2c 62 6c 6f 63 6b 25 0d  01 0e 15 20 20 20 20 e7  |,block%....    .|
00002560  20 77 69 6e 48 25 3d 34  33 32 20 8c 0d 01 0f 32  | winH%=432 ....2|
00002570  20 20 20 20 20 f2 6d 65  6e 75 73 68 61 64 65 28  |     .menushade(|
00002580  62 61 72 25 2c 31 2c 30  29 3a f2 6d 65 6e 75 73  |bar%,1,0):.menus|
00002590  68 61 64 65 28 62 61 72  25 2c 38 2c 30 29 0d 01  |hade(bar%,8,0)..|
000025a0  10 34 20 20 20 20 20 f2  69 63 6f 6e 74 65 78 74  |.4     .icontext|
000025b0  28 68 69 67 68 77 25 2c  28 62 25 2d 32 29 2a 34  |(highw%,(b%-2)*4|
000025c0  2b 31 2c 24 a4 74 65 78  74 28 77 69 6e 25 2c 35  |+1,$.text(win%,5|
000025d0  29 29 0d 01 11 36 20 20  20 20 20 f2 69 63 6f 6e  |))...6     .icon|
000025e0  74 65 78 74 28 68 69 67  68 77 25 2c 28 62 25 2d  |text(highw%,(b%-|
000025f0  32 29 2a 34 2b 32 2c 24  a4 74 65 78 74 28 74 69  |2)*4+2,$.text(ti|
00002600  6d 65 77 25 2c 31 29 29  0d 01 12 2d 20 20 20 20  |mew%,1))...-    |
00002610  20 f2 69 63 6f 6e 74 65  78 74 28 68 69 67 68 77  | .icontext(highw|
00002620  25 2c 28 62 25 2d 32 29  2a 34 2b 33 2c c0 91 24  |%,(b%-2)*4+3,..$|
00002630  2c 31 35 29 29 0d 01 13  09 20 20 20 20 cd 0d 01  |,15))....    ...|
00002640  14 08 20 20 20 cd 0d 01  15 0f 20 20 c9 20 68 69  |..   .....  . hi|
00002650  67 68 77 25 3a 0d 01 16  15 20 20 20 e7 20 62 75  |ghw%:....   . bu|
00002660  74 74 6f 6e 25 3c 3e 32  20 8c 0d 01 17 14 20 20  |tton%<>2 .....  |
00002670  20 20 e7 20 69 63 6f 6e  25 3d 33 36 20 8c 0d 01  |  . icon%=36 ...|
00002680  18 4b 20 20 20 20 20 e3  20 41 25 3d 33 20 b8 20  |.K     . A%=3 . |
00002690  31 30 3a 24 a4 74 61 62  6c 65 28 41 25 2c 31 29  |10:$.table(A%,1)|
000026a0  3d 22 43 68 72 69 73 20  4d 6f 72 69 73 6f 6e 22  |="Chris Morison"|
000026b0  3a 24 a4 74 61 62 6c 65  28 41 25 2c 32 29 3d 22  |:$.table(A%,2)="|
000026c0  39 39 3a 35 39 3a 35 39  22 0d 01 19 2b 20 20 20  |99:59:59"...+   |
000026d0  20 20 20 24 a4 74 61 62  6c 65 28 41 25 2c 33 29  |   $.table(A%,3)|
000026e0  3d 22 57 65 64 2c 31 39  20 4a 61 6e 20 31 39 39  |="Wed,19 Jan 199|
000026f0  34 22 3a ed 0d 01 1a 8b  20 20 20 20 20 21 62 6c  |4":.....     !bl|
00002700  6f 63 6b 25 3d 68 69 67  68 77 25 3a c8 99 47 65  |ock%=highw%:..Ge|
00002710  74 57 69 6e 64 6f 77 25  2c 2c 62 6c 6f 63 6b 25  |tWindow%,,block%|
00002720  3a c8 99 52 65 64 72 61  77 25 2c 68 69 67 68 77  |:..Redraw%,highw|
00002730  25 2c 62 6c 6f 63 6b 25  21 32 30 2c 62 6c 6f 63  |%,block%!20,bloc|
00002740  6b 25 21 38 2d 62 6c 6f  63 6b 25 21 31 36 2b 62  |k%!8-block%!16+b|
00002750  6c 6f 63 6b 25 21 32 34  2c 62 6c 6f 63 6b 25 21  |lock%!24,block%!|
00002760  31 32 2d 62 6c 6f 63 6b  25 21 34 2b 62 6c 6f 63  |12-block%!4+bloc|
00002770  6b 25 21 32 30 2c 62 6c  6f 63 6b 25 21 32 34 0d  |k%!20,block%!24.|
00002780  01 1b 09 20 20 20 20 cd  0d 01 1c 18 20 20 20 cc  |...    .....   .|
00002790  20 f2 6d 65 6e 75 28 58  25 2d 36 34 2c 59 25 29  | .menu(X%-64,Y%)|
000027a0  0d 01 1d 08 20 20 20 cd  0d 01 1e 0d 20 20 c9 20  |....   .....  . |
000027b0  77 69 64 25 3a 0d 01 1f  1f 20 20 20 74 65 6d 70  |wid%:....   temp|
000027c0  62 25 3d bb 28 24 a4 74  65 78 74 28 77 69 64 25  |b%=.($.text(wid%|
000027d0  2c 31 29 29 0d 01 20 11  20 20 20 c8 8e 20 69 63  |,1)).. .   .. ic|
000027e0  6f 6e 25 20 ca 0d 01 21  3d 20 20 20 20 c9 20 30  |on% ...!=    . 0|
000027f0  3a e7 20 62 75 74 74 6f  6e 25 3d 31 20 8c 20 74  |:. button%=1 . t|
00002800  65 6d 70 62 25 2b 3d 31  20 8b 20 e7 20 62 75 74  |empb%+=1 . . but|
00002810  74 6f 6e 25 3d 34 20 8c  20 74 65 6d 70 62 25 2d  |ton%=4 . tempb%-|
00002820  3d 31 0d 01 22 3d 20 20  20 20 c9 20 32 3a e7 20  |=1.."=    . 2:. |
00002830  62 75 74 74 6f 6e 25 3d  31 20 8c 20 74 65 6d 70  |button%=1 . temp|
00002840  62 25 2d 3d 31 20 8b 20  e7 20 62 75 74 74 6f 6e  |b%-=1 . . button|
00002850  25 3d 34 20 8c 20 74 65  6d 70 62 25 2b 3d 31 0d  |%=4 . tempb%+=1.|
00002860  01 23 0c 20 20 20 20 c9  20 33 3a 0d 01 24 3e 20  |.#.    . 3:..$> |
00002870  20 20 20 20 62 25 3d bb  28 24 a4 74 65 78 74 28  |    b%=.($.text(|
00002880  77 69 64 25 2c 31 29 29  3a f2 73 70 6c 69 74 3a  |wid%,1)):.split:|
00002890  f2 75 6e 6d 69 78 3a f2  73 68 75 66 66 6c 65 3a  |.unmix:.shuffle:|
000028a0  f2 76 6f 69 64 6d 61 69  6e 0d 01 25 28 20 20 20  |.voidmain..%(   |
000028b0  20 20 e7 20 62 75 74 74  6f 6e 25 3d 34 20 8c 20  |  . button%=4 . |
000028c0  c8 99 43 72 65 61 74 65  4d 65 6e 75 25 2c 2c 2d  |..CreateMenu%,,-|
000028d0  31 0d 01 26 08 20 20 20  cb 0d 01 27 36 20 20 20  |1..&.   ...'6   |
000028e0  e7 20 74 65 6d 70 62 25  3c 33 20 8c 20 74 65 6d  |. tempb%<3 . tem|
000028f0  70 62 25 3d 33 20 8b 20  e7 20 74 65 6d 70 62 25  |pb%=3 . . tempb%|
00002900  3e 31 30 20 8c 20 74 65  6d 70 62 25 3d 31 30 0d  |>10 . tempb%=10.|
00002910  01 28 20 20 20 20 f2 69  63 6f 6e 74 65 78 74 28  |.(    .icontext(|
00002920  77 69 64 25 2c 31 2c c3  74 65 6d 70 62 25 29 0d  |wid%,1,.tempb%).|
00002930  01 29 06 20 cb 0d 01 2a  05 e1 0d 01 2b 04 0d 01  |.). ...*....+...|
00002940  2c 0f dd f2 73 74 61 72  74 64 72 61 67 0d 01 2d  |,...startdrag..-|
00002950  71 64 72 61 67 67 69 6e  67 25 3d 77 69 6e 64 6f  |qdragging%=windo|
00002960  77 25 3a 21 62 6c 6f 63  6b 25 3d 77 69 6e 64 6f  |w%:!block%=windo|
00002970  77 25 3a c8 99 20 47 65  74 57 69 6e 64 6f 77 25  |w%:.. GetWindow%|
00002980  2c 2c 62 6c 6f 63 6b 25  3a 64 78 25 3d 58 25 2d  |,,block%:dx%=X%-|
00002990  62 6c 6f 63 6b 25 21 34  3a 64 79 25 3d 62 6c 6f  |block%!4:dy%=blo|
000029a0  63 6b 25 21 31 36 2d 59  25 3a f2 6d 61 6b 65 70  |ck%!16-Y%:.makep|
000029b0  6f 69 6e 74 65 72 28 22  68 61 6e 64 22 29 0d 01  |ointer("hand")..|
000029c0  2e 05 e1 0d 01 2f 04 0d  01 30 16 dd f2 6d 61 69  |...../...0...mai|
000029d0  6e 63 6c 69 63 6b 28 78  25 2c 79 25 29 0d 01 31  |nclick(x%,y%)..1|
000029e0  26 20 62 6c 6f 63 6b 25  21 30 3d 6d 61 69 6e 25  |& block%!0=main%|
000029f0  3a c8 99 47 65 74 49 6e  66 6f 25 2c 2c 62 6c 6f  |:..GetInfo%,,blo|
00002a00  63 6b 25 0d 01 32 3d 20  77 77 69 64 74 68 25 3d  |ck%..2= wwidth%=|
00002a10  62 6c 6f 63 6b 25 21 35  32 2d 62 6c 6f 63 6b 25  |block%!52-block%|
00002a20  21 34 34 3a 77 68 65 69  67 68 74 25 3d 62 6c 6f  |!44:wheight%=blo|
00002a30  63 6b 25 21 34 38 2d 62  6c 6f 63 6b 25 21 35 36  |ck%!48-block%!56|
00002a40  0d 01 33 48 20 c8 99 47  65 74 57 69 6e 64 6f 77  |..3H ..GetWindow|
00002a50  25 2c 2c 62 6c 6f 63 6b  25 3a 78 6f 25 3d 62 6c  |%,,block%:xo%=bl|
00002a60  6f 63 6b 25 21 34 2d 62  6c 6f 63 6b 25 21 32 30  |ock%!4-block%!20|
00002a70  3a 79 6f 25 3d 62 6c 6f  63 6b 25 21 31 36 2d 62  |:yo%=block%!16-b|
00002a80  6c 6f 63 6b 25 21 32 34  0d 01 34 46 20 6d 78 25  |lock%!24..4F mx%|
00002a90  3d 28 78 25 2d 78 6f 25  29 81 78 73 74 65 70 3a  |=(x%-xo%).xstep:|
00002aa0  6d 79 25 3d 28 79 6f 25  2d 79 25 29 81 79 73 74  |my%=(yo%-y%).yst|
00002ab0  65 70 3a 6f 6c 64 78 25  3d 62 78 25 3a 6f 6c 64  |ep:oldx%=bx%:old|
00002ac0  79 25 3d 62 79 25 3a 66  6c 61 67 25 3d 30 0d 01  |y%=by%:flag%=0..|
00002ad0  35 2a 20 e7 20 6d 78 25  3d 62 25 20 8c 20 6d 78  |5* . mx%=b% . mx|
00002ae0  25 3d 62 25 2d 31 20 8b  20 e7 20 6d 78 25 3c 30  |%=b%-1 . . mx%<0|
00002af0  20 8c 20 6d 78 25 3d 30  0d 01 36 2a 20 e7 20 6d  | . mx%=0..6* . m|
00002b00  79 25 3d 62 25 20 8c 20  6d 79 25 3d 62 25 2d 31  |y%=b% . my%=b%-1|
00002b10  20 8b 20 e7 20 6d 79 25  3c 30 20 8c 20 6d 79 25  | . . my%<0 . my%|
00002b20  3d 30 0d 01 37 49 20 e7  20 6d 79 25 3d 62 79 25  |=0..7I . my%=by%|
00002b30  20 80 20 6d 78 25 3d 62  78 25 20 80 20 77 61 74  | . mx%=bx% . wat|
00002b40  63 68 6e 6f 25 3c 3e 6d  78 25 2b 6d 79 25 2a 62  |chno%<>mx%+my%*b|
00002b50  25 2b 31 20 80 20 6d 78  25 2b 6d 79 25 2a 62 25  |%+1 . mx%+my%*b%|
00002b60  2b 31 3c 3e 62 25 2a 62  25 20 8c 0d 01 38 3e 20  |+1<>b%*b% ...8> |
00002b70  20 20 77 61 74 63 68 6e  6f 25 3d 6d 78 25 2b 6d  |  watchno%=mx%+m|
00002b80  79 25 2a 62 25 2b 31 3a  e7 20 64 72 61 67 67 69  |y%*b%+1:. draggi|
00002b90  6e 67 25 3d 30 20 8c 20  64 72 61 67 67 69 6e 67  |ng%=0 . dragging|
00002ba0  25 3d 77 69 6e 64 6f 77  25 0d 01 39 94 20 20 20  |%=window%..9.   |
00002bb0  59 25 3d 2d 31 3a f5 3a  59 25 2b 3d 31 3a 58 25  |Y%=-1:.:Y%+=1:X%|
00002bc0  3d 2d 31 3a f5 3a 58 25  2b 3d 31 3a fd 20 73 25  |=-1:.:X%+=1:. s%|
00002bd0  28 58 25 2c 59 25 29 3d  77 61 74 63 68 6e 6f 25  |(X%,Y%)=watchno%|
00002be0  20 84 20 58 25 3e 62 25  2d 32 3a fd 20 73 25 28  | . X%>b%-2:. s%(|
00002bf0  58 25 2c 59 25 29 3d 77  61 74 63 68 6e 6f 25 3a  |X%,Y%)=watchno%:|
00002c00  c8 99 52 65 64 72 61 77  25 2c 6d 61 69 6e 25 2c  |..Redraw%,main%,|
00002c10  58 25 2a 78 73 74 65 70  2c 2d 28 59 25 2b 31 29  |X%*xstep,-(Y%+1)|
00002c20  2a 79 73 74 65 70 2c 28  58 25 2b 31 29 2a 78 73  |*ystep,(X%+1)*xs|
00002c30  74 65 70 2c 2d 59 25 2a  79 73 74 65 70 0d 01 3a  |tep,-Y%*ystep..:|
00002c40  07 20 cd 20 0d 01 3b 10  20 e7 20 6d 79 25 3d 62  |. . ..;. . my%=b|
00002c50  79 25 20 8c 0d 01 3c 34  20 20 20 c8 95 20 6d 78  |y% ...<4   .. mx|
00002c60  25 3e 62 78 25 3a 73 25  28 62 78 25 2c 62 79 25  |%>bx%:s%(bx%,by%|
00002c70  29 3d 73 25 28 62 78 25  2b 31 2c 62 79 25 29 3a  |)=s%(bx%+1,by%):|
00002c80  62 78 25 2b 3d 31 3a ce  0d 01 3d 34 20 20 20 c8  |bx%+=1:...=4   .|
00002c90  95 20 6d 78 25 3c 62 78  25 3a 73 25 28 62 78 25  |. mx%<bx%:s%(bx%|
00002ca0  2c 62 79 25 29 3d 73 25  28 62 78 25 2d 31 2c 62  |,by%)=s%(bx%-1,b|
00002cb0  79 25 29 3a 62 78 25 2d  3d 31 3a ce 0d 01 3e 59  |y%):bx%-=1:...>Y|
00002cc0  20 20 20 e7 20 6f 6c 64  78 25 3c 62 78 25 8c 20  |   . oldx%<bx%. |
00002cd0  78 30 25 3d 6f 6c 64 78  25 2a 78 73 74 65 70 3a  |x0%=oldx%*xstep:|
00002ce0  78 31 25 3d 28 62 78 25  2b 31 29 2a 78 73 74 65  |x1%=(bx%+1)*xste|
00002cf0  70 20 8b 20 78 30 25 3d  62 78 25 2a 78 73 74 65  |p . x0%=bx%*xste|
00002d00  70 3a 78 31 25 3d 28 6f  6c 64 78 25 2b 31 29 2a  |p:x1%=(oldx%+1)*|
00002d10  78 73 74 65 70 0d 01 3f  46 20 20 20 73 25 28 62  |xstep..?F   s%(b|
00002d20  78 25 2c 62 79 25 29 3d  30 3a c8 99 52 65 64 72  |x%,by%)=0:..Redr|
00002d30  61 77 25 2c 6d 61 69 6e  25 2c 78 30 25 2c 2d 28  |aw%,main%,x0%,-(|
00002d40  62 79 25 2b 31 29 2a 79  73 74 65 70 2c 78 31 25  |by%+1)*ystep,x1%|
00002d50  2c 2d 62 79 25 2a 79 73  74 65 70 0d 01 40 59 20  |,-by%*ystep..@Y |
00002d60  20 20 78 30 25 3d 28 78  30 25 2f 78 73 74 65 70  |  x0%=(x0%/xstep|
00002d70  29 2a 34 30 3a 78 31 25  3d 28 78 31 25 2f 78 73  |)*40:x1%=(x1%/xs|
00002d80  74 65 70 29 2a 34 30 3a  c8 99 52 65 64 72 61 77  |tep)*40:..Redraw|
00002d90  25 2c 68 65 6c 70 77 25  2c 78 30 25 2c 2d 28 62  |%,helpw%,x0%,-(b|
00002da0  79 25 2b 31 29 2a 34 30  2c 78 31 25 2c 2d 62 79  |y%+1)*40,x1%,-by|
00002db0  25 2a 34 30 0d 01 41 06  20 cc 0d 01 42 11 20 20  |%*40..A. ...B.  |
00002dc0  e7 20 6d 78 25 3d 62 78  25 20 8c 0d 01 43 35 20  |. mx%=bx% ...C5 |
00002dd0  20 20 20 c8 95 20 6d 79  25 3e 62 79 25 3a 73 25  |   .. my%>by%:s%|
00002de0  28 62 78 25 2c 62 79 25  29 3d 73 25 28 62 78 25  |(bx%,by%)=s%(bx%|
00002df0  2c 62 79 25 2b 31 29 3a  62 79 25 2b 3d 31 3a ce  |,by%+1):by%+=1:.|
00002e00  0d 01 44 35 20 20 20 20  c8 95 20 6d 79 25 3c 62  |..D5    .. my%<b|
00002e10  79 25 3a 73 25 28 62 78  25 2c 62 79 25 29 3d 73  |y%:s%(bx%,by%)=s|
00002e20  25 28 62 78 25 2c 62 79  25 2d 31 29 3a 62 79 25  |%(bx%,by%-1):by%|
00002e30  2d 3d 31 3a ce 0d 01 45  59 20 20 20 20 e7 6f 6c  |-=1:...EY    .ol|
00002e40  64 79 25 3c 62 79 25 8c  20 79 30 25 3d 28 62 79  |dy%<by%. y0%=(by|
00002e50  25 2b 31 29 2a 79 73 74  65 70 3a 79 31 25 3d 6f  |%+1)*ystep:y1%=o|
00002e60  6c 64 79 25 2a 79 73 74  65 70 20 8b 20 79 30 25  |ldy%*ystep . y0%|
00002e70  3d 28 6f 6c 64 79 25 2b  31 29 2a 79 73 74 65 70  |=(oldy%+1)*ystep|
00002e80  3a 79 31 25 3d 62 79 25  2a 79 73 74 65 70 0d 01  |:y1%=by%*ystep..|
00002e90  46 47 20 20 20 20 73 25  28 62 78 25 2c 62 79 25  |FG    s%(bx%,by%|
00002ea0  29 3d 30 3a c8 99 52 65  64 72 61 77 25 2c 6d 61  |)=0:..Redraw%,ma|
00002eb0  69 6e 25 2c 62 78 25 2a  78 73 74 65 70 2c 2d 79  |in%,bx%*xstep,-y|
00002ec0  30 25 2c 28 62 78 25 2b  31 29 2a 78 73 74 65 70  |0%,(bx%+1)*xstep|
00002ed0  2c 2d 79 31 25 0d 01 47  5a 20 20 20 20 79 30 25  |,-y1%..GZ    y0%|
00002ee0  3d 28 79 30 25 2f 79 73  74 65 70 29 2a 34 30 3a  |=(y0%/ystep)*40:|
00002ef0  79 31 25 3d 28 79 31 25  2f 79 73 74 65 70 29 2a  |y1%=(y1%/ystep)*|
00002f00  34 30 3a c8 99 52 65 64  72 61 77 25 2c 68 65 6c  |40:..Redraw%,hel|
00002f10  70 77 25 2c 62 78 25 2a  34 30 2c 2d 79 30 25 2c  |pw%,bx%*40,-y0%,|
00002f20  28 62 78 25 2b 31 29 2a  34 30 2c 2d 79 31 25 0d  |(bx%+1)*40,-y1%.|
00002f30  01 48 25 20 20 20 20 cc  20 e7 20 28 62 75 74 74  |.H%    . . (butt|
00002f40  6f 6e 25 80 36 34 29 20  8c 20 f2 73 74 61 72 74  |on%.64) . .start|
00002f50  64 72 61 67 0d 01 49 08  20 20 20 cd 0d 01 4a 06  |drag..I.   ...J.|
00002f60  20 cd 0d 01 4b 05 e1 0d  01 4c 04 0d 01 4d 13 dd  | ...K....L...M..|
00002f70  f2 6f 70 65 6e 28 77 69  6e 64 6f 77 25 29 0d 01  |.open(window%)..|
00002f80  4e 11 20 c8 8e 20 77 69  6e 64 6f 77 25 20 ca 0d  |N. .. window% ..|
00002f90  01 4f 0d 20 20 c9 20 6d  61 69 6e 25 0d 01 50 22  |.O.  . main%..P"|
00002fa0  20 20 20 70 75 7a 6f 70  65 6e 25 3d b9 3a f2 74  |   puzopen%=.:.t|
00002fb0  69 63 6b 28 62 61 72 25  2c 32 2c 2d 31 29 0d 01  |ick(bar%,2,-1)..|
00002fc0  51 36 20 20 20 e7 20 74  66 6c 61 67 25 3d 30 20  |Q6   . tflag%=0 |
00002fd0  8c 20 74 69 6d 65 73 74  61 72 74 65 64 25 2b 3d  |. timestarted%+=|
00002fe0  6e 6f 77 25 2d 64 65 6c  61 79 25 3a 64 65 6c 61  |now%-delay%:dela|
00002ff0  79 25 3d 30 0d 01 52 16  20 20 20 74 66 6c 61 67  |y%=0..R.   tflag|
00003000  25 3d 74 66 6c 61 67 25  84 31 0d 01 53 2a 20 20  |%=tflag%.1..S*  |
00003010  c9 20 76 69 65 77 25 3a  76 69 65 77 6f 70 65 6e  |. view%:viewopen|
00003020  25 3d b9 3a f2 74 69 63  6b 28 62 61 72 25 2c 33  |%=.:.tick(bar%,3|
00003030  2c 2d 31 29 0d 01 54 2e  20 20 c9 20 74 69 6d 65  |,-1)..T.  . time|
00003040  77 25 3a 74 69 6d 65 72  25 3d b9 3a f2 74 69 63  |w%:timer%=.:.tic|
00003050  6b 28 62 61 72 25 2c 34  2c 2d 31 29 3a f2 74 69  |k(bar%,4,-1):.ti|
00003060  6d 65 0d 01 55 06 20 cb  0d 01 56 46 20 21 72 65  |me..U. ...VF !re|
00003070  70 25 3d 77 69 6e 64 6f  77 25 3a c8 99 20 47 65  |p%=window%:.. Ge|
00003080  74 57 69 6e 64 6f 77 25  2c 2c 72 65 70 25 3a 72  |tWindow%,,rep%:r|
00003090  65 70 25 21 32 38 3d 2d  31 3a c8 99 20 4f 70 65  |ep%!28=-1:.. Ope|
000030a0  6e 57 69 6e 64 6f 77 25  2c 2c 72 65 70 25 0d 01  |nWindow%,,rep%..|
000030b0  57 05 e1 0d 01 58 04 0d  01 59 1c f4 20 2a 2a 2a  |W....X...Y.. ***|
000030c0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 20 20 4d 65  |************  Me|
000030d0  6e 75 73 0d 01 5a 04 0d  01 5b 12 dd f2 6d 65 6e  |nus..Z...[...men|
000030e0  75 73 65 6c 65 63 74 20  20 0d 01 5c 0c 20 66 6c  |uselect  ..\. fl|
000030f0  61 67 25 3d 30 0d 01 5d  11 20 c8 8e 20 21 62 6c  |ag%=0..]. .. !bl|
00003100  6f 63 6b 25 20 ca 0d 01  5e 1c 20 20 c9 20 31 3a  |ock% ...^.  . 1:|
00003110  f2 73 68 75 66 66 6c 65  3a f2 76 6f 69 64 6d 61  |.shuffle:.voidma|
00003120  69 6e 0d 01 5f 09 20 20  c9 20 32 0d 01 60 13 20  |in.._.  . 2..`. |
00003130  20 20 e7 20 70 75 7a 6f  70 65 6e 25 20 8c 0d 01  |  . puzopen% ...|
00003140  61 48 20 20 20 20 21 62  6c 6f 63 6b 25 3d 6d 61  |aH    !block%=ma|
00003150  69 6e 25 3a c8 99 20 43  6c 6f 73 65 57 69 6e 64  |in%:.. CloseWind|
00003160  6f 77 25 2c 2c 62 6c 6f  63 6b 25 3a f2 74 69 63  |ow%,,block%:.tic|
00003170  6b 28 62 61 72 25 2c 32  2c 30 29 3a 70 75 7a 6f  |k(bar%,2,0):puzo|
00003180  70 65 6e 25 3d 30 0d 01  62 30 20 20 20 20 74 66  |pen%=0..b0    tf|
00003190  6c 61 67 25 3d 74 66 6c  61 67 25 80 32 3a e7 20  |lag%=tflag%.2:. |
000031a0  74 66 6c 61 67 25 3d 30  20 8c 20 64 65 6c 61 79  |tflag%=0 . delay|
000031b0  25 3d 6e 6f 77 25 0d 01  63 15 20 20 20 cc 20 f2  |%=now%..c.   . .|
000031c0  6f 70 65 6e 28 6d 61 69  6e 25 29 0d 01 64 08 20  |open(main%)..d. |
000031d0  20 20 cd 0d 01 65 68 20  20 c9 20 33 3a e7 20 76  |  ...eh  . 3:. v|
000031e0  69 65 77 6f 70 65 6e 25  20 8c 20 21 62 6c 6f 63  |iewopen% . !bloc|
000031f0  6b 25 3d 76 69 65 77 25  3a c8 99 20 43 6c 6f 73  |k%=view%:.. Clos|
00003200  65 57 69 6e 64 6f 77 25  2c 2c 62 6c 6f 63 6b 25  |eWindow%,,block%|
00003210  3a f2 74 69 63 6b 28 62  61 72 25 2c 33 2c 30 29  |:.tick(bar%,3,0)|
00003220  3a 76 69 65 77 6f 70 65  6e 25 3d 30 20 8b 20 f2  |:viewopen%=0 . .|
00003230  6f 70 65 6e 28 76 69 65  77 25 29 0d 01 66 6a 20  |open(view%)..fj |
00003240  20 c9 20 34 3a e7 20 74  69 6d 65 72 25 20 8c 20  | . 4:. timer% . |
00003250  21 62 6c 6f 63 6b 25 3d  74 69 6d 65 77 25 3a c8  |!block%=timew%:.|
00003260  99 20 43 6c 6f 73 65 57  69 6e 64 6f 77 25 2c 2c  |. CloseWindow%,,|
00003270  62 6c 6f 63 6b 25 3a f2  74 69 63 6b 28 62 61 72  |block%:.tick(bar|
00003280  25 2c 34 2c 30 29 3a 74  69 6d 65 72 25 3d 30 20  |%,4,0):timer%=0 |
00003290  8b 20 f2 74 69 6d 65 3a  f2 6f 70 65 6e 28 74 69  |. .time:.open(ti|
000032a0  6d 65 77 25 29 0d 01 67  12 20 20 c9 20 35 3a 68  |mew%)..g.  . 5:h|
000032b0  25 3d 68 65 6c 70 25 0d  01 68 28 20 20 20 e7 20  |%=help%..h(   . |
000032c0  68 65 6c 70 25 3e 30 20  8c 20 f2 74 69 63 6b 28  |help%>0 . .tick(|
000032d0  68 65 6c 25 2c 68 65 6c  70 25 2d 31 2c 30 29 0d  |hel%,help%-1,0).|
000032e0  01 69 14 20 20 20 c8 8e  20 62 6c 6f 63 6b 25 21  |.i.   .. block%!|
000032f0  34 20 ca 0d 01 6a 20 20  20 20 20 c9 20 2d 31 3a  |4 ...j     . -1:|
00003300  e7 20 68 65 6c 70 25 3e  30 20 8c 20 68 65 6c 70  |. help%>0 . help|
00003310  25 3d 30 0d 01 6b 48 20  20 20 20 c9 20 30 3a e7  |%=0..kH    . 0:.|
00003320  20 68 65 6c 70 25 3d 31  20 8c 20 68 65 6c 70 25  | help%=1 . help%|
00003330  3d 30 20 8b 20 68 65 6c  70 25 3d 31 3a f2 74 69  |=0 . help%=1:.ti|
00003340  63 6b 28 68 65 6c 25 2c  30 2c 2d 31 29 3a f2 6f  |ck(hel%,0,-1):.o|
00003350  70 65 6e 28 68 65 6c 70  77 25 29 0d 01 6c 3a 20  |pen(helpw%)..l: |
00003360  20 20 20 c9 20 31 3a e7  20 68 65 6c 70 25 3d 32  |   . 1:. help%=2|
00003370  20 8c 20 68 65 6c 70 25  3d 30 20 8b 20 68 65 6c  | . help%=0 . hel|
00003380  70 25 3d 32 3a f2 74 69  63 6b 28 68 65 6c 25 2c  |p%=2:.tick(hel%,|
00003390  31 2c 2d 31 29 0d 01 6d  08 20 20 20 cb 0d 01 6e  |1,-1)..m.   ...n|
000033a0  41 20 20 20 e7 20 68 65  6c 70 25 3c 3e 31 20 80  |A   . help%<>1 .|
000033b0  20 68 25 3d 31 20 8c 20  21 62 6c 6f 63 6b 25 3d  | h%=1 . !block%=|
000033c0  68 65 6c 70 77 25 3a c8  99 20 43 6c 6f 73 65 57  |helpw%:.. CloseW|
000033d0  69 6e 64 6f 77 25 2c 2c  62 6c 6f 63 6b 25 0d 01  |indow%,,block%..|
000033e0  6f 1c 20 20 20 f2 74 69  63 6b 28 62 61 72 25 2c  |o.   .tick(bar%,|
000033f0  35 2c 68 65 6c 70 25 3e  30 29 0d 01 70 48 20 20  |5,help%>0)..pH  |
00003400  20 c8 99 52 65 64 72 61  77 25 2c 6d 61 69 6e 25  | ..Redraw%,main%|
00003410  2c 62 78 25 2a 78 73 74  65 70 2c 2d 28 62 79 25  |,bx%*xstep,-(by%|
00003420  2b 31 29 2a 79 73 74 65  70 2c 28 62 78 25 2b 31  |+1)*ystep,(bx%+1|
00003430  29 2a 78 73 74 65 70 2c  2d 62 79 25 2a 79 73 74  |)*xstep,-by%*yst|
00003440  65 70 0d 01 71 0a 20 20  c9 20 36 3a 0d 01 72 15  |ep..q.  . 6:..r.|
00003450  20 20 20 e7 20 62 6c 6f  63 6b 25 21 34 3e 30 20  |   . block%!4>0 |
00003460  8c 0d 01 73 37 20 20 20  20 64 65 66 61 75 6c 74  |...s7    default|
00003470  24 3d 22 3c 50 75 7a 50  69 63 24 44 69 72 3e 2e  |$="<PuzPic$Dir>.|
00003480  22 2b 24 28 6c 69 73 25  2b 34 30 2b 32 34 2a 62  |"+$(lis%+40+24*b|
00003490  6c 6f 63 6b 25 21 34 29  0d 01 74 26 20 20 20 20  |lock%!4)..t&    |
000034a0  f2 6c 6f 61 64 73 70 72  69 74 65 28 64 65 66 61  |.loadsprite(defa|
000034b0  75 6c 74 24 29 3a 66 6c  61 67 25 3d 2d 31 0d 01  |ult$):flag%=-1..|
000034c0  75 18 20 20 20 20 f2 73  70 6c 69 74 3a f2 76 6f  |u.    .split:.vo|
000034d0  69 64 6d 61 69 6e 0d 01  76 34 20 20 20 cc 20 e7  |idmain..v4   . .|
000034e0  20 62 6c 6f 63 6b 25 21  34 3d 30 20 8c 20 64 65  | block%!4=0 . de|
000034f0  66 61 75 6c 74 24 3d 22  22 3a f2 73 70 6c 69 74  |fault$="":.split|
00003500  3a f2 76 6f 69 64 6d 61  69 6e 0d 01 77 08 20 20  |:.voidmain..w.  |
00003510  20 cd 0d 01 78 0a 20 20  c9 20 37 3a 0d 01 79 14  | ...x.  . 7:..y.|
00003520  20 20 20 c8 8e 20 62 6c  6f 63 6b 25 21 34 20 ca  |   .. block%!4 .|
00003530  0d 01 7a 47 20 20 20 20  c9 20 30 3a f2 74 69 63  |..zG    . 0:.tic|
00003540  6b 28 63 6f 6c 25 2c 63  62 25 2c 30 29 3a 63 62  |k(col%,cb%,0):cb|
00003550  25 3d 62 6c 6f 63 6b 25  21 38 3a f2 76 6f 69 64  |%=block%!8:.void|
00003560  6d 61 69 6e 3a f2 74 69  63 6b 28 63 6f 6c 25 2c  |main:.tick(col%,|
00003570  63 62 25 2c 2d 31 29 0d  01 7b 7f 20 20 20 20 c9  |cb%,-1)..{.    .|
00003580  20 31 3a f2 74 69 63 6b  28 63 6f 6c 25 2c 63 79  | 1:.tick(col%,cy|
00003590  25 2c 30 29 3a 63 79 25  3d 62 6c 6f 63 6b 25 21  |%,0):cy%=block%!|
000035a0  38 3a f2 74 69 63 6b 28  63 6f 6c 25 2c 63 79 25  |8:.tick(col%,cy%|
000035b0  2c 2d 31 29 3a c8 99 52  65 64 72 61 77 25 2c 6d  |,-1):..Redraw%,m|
000035c0  61 69 6e 25 2c 62 78 25  2a 78 73 74 65 70 2c 2d  |ain%,bx%*xstep,-|
000035d0  28 62 79 25 2b 31 29 2a  79 73 74 65 70 2c 28 62  |(by%+1)*ystep,(b|
000035e0  78 25 2b 31 29 2a 78 73  74 65 70 2c 2d 62 79 25  |x%+1)*xstep,-by%|
000035f0  2a 79 73 74 65 70 0d 01  7c 7f 20 20 20 20 c9 20  |*ystep..|.    . |
00003600  32 3a f2 74 69 63 6b 28  63 6f 6c 25 2c 63 6e 25  |2:.tick(col%,cn%|
00003610  2c 30 29 3a 63 6e 25 3d  62 6c 6f 63 6b 25 21 38  |,0):cn%=block%!8|
00003620  3a f2 74 69 63 6b 28 63  6f 6c 25 2c 63 6e 25 2c  |:.tick(col%,cn%,|
00003630  2d 31 29 3a c8 99 52 65  64 72 61 77 25 2c 6d 61  |-1):..Redraw%,ma|
00003640  69 6e 25 2c 62 78 25 2a  78 73 74 65 70 2c 2d 28  |in%,bx%*xstep,-(|
00003650  62 79 25 2b 31 29 2a 79  73 74 65 70 2c 28 62 78  |by%+1)*ystep,(bx|
00003660  25 2b 31 29 2a 78 73 74  65 70 2c 2d 62 79 25 2a  |%+1)*xstep,-by%*|
00003670  79 73 74 65 70 0d 01 7d  08 20 20 20 cb 0d 01 7e  |ystep..}.   ...~|
00003680  10 20 20 20 f2 76 6f 69  64 68 65 6c 70 0d 01 7f  |.   .voidhelp...|
00003690  0a 20 20 c9 20 39 3a 0d  01 80 41 20 20 20 e7 20  |.  . 9:...A   . |
000036a0  74 66 6c 61 67 25 3d 31  20 8c 20 54 25 3d 6e 6f  |tflag%=1 . T%=no|
000036b0  77 25 2d 74 69 6d 65 73  74 61 72 74 65 64 25 20  |w%-timestarted% |
000036c0  8b 20 54 25 3d 64 65 6c  61 79 25 2d 74 69 6d 65  |. T%=delay%-time|
000036d0  73 74 61 72 74 65 64 25  0d 01 81 41 20 20 20 46  |started%...A   F|
000036e0  25 3d ae 22 3c 50 75 7a  24 44 69 72 3e 2e 44 65  |%=."<Puz$Dir>.De|
000036f0  66 61 75 6c 74 22 3a f1  23 46 25 2c 64 65 66 61  |fault":.#F%,defa|
00003700  75 6c 74 24 2c 62 25 2c  63 62 25 2c 63 79 25 2c  |ult$,b%,cb%,cy%,|
00003710  63 6e 25 2c 68 65 6c 70  25 0d 01 82 34 20 20 20  |cn%,help%...4   |
00003720  e3 20 59 25 3d 30 20 b8  20 62 25 2d 31 3a e3 20  |. Y%=0 . b%-1:. |
00003730  58 25 3d 30 20 b8 20 62  25 2d 31 3a f1 23 46 25  |X%=0 . b%-1:.#F%|
00003740  2c 73 25 28 58 25 2c 59  25 29 3a ed 2c 0d 01 83  |,s%(X%,Y%):.,...|
00003750  28 20 20 20 f1 23 46 25  2c 70 75 7a 6f 70 65 6e  |(   .#F%,puzopen|
00003760  25 2c 76 69 65 77 6f 70  65 6e 25 2c 74 69 6d 65  |%,viewopen%,time|
00003770  72 25 2c 54 25 0d 01 84  2a 20 20 20 21 62 6c 6f  |r%,T%...*   !blo|
00003780  63 6b 25 3d 6d 61 69 6e  25 3a c8 99 20 47 65 74  |ck%=main%:.. Get|
00003790  57 69 6e 64 6f 77 25 2c  2c 62 6c 6f 63 6b 25 0d  |Window%,,block%.|
000037a0  01 85 45 20 20 20 f1 23  46 25 2c 62 6c 6f 63 6b  |..E   .#F%,block|
000037b0  25 21 34 2c 62 6c 6f 63  6b 25 21 38 2c 62 6c 6f  |%!4,block%!8,blo|
000037c0  63 6b 25 21 31 32 2c 62  6c 6f 63 6b 25 21 31 36  |ck%!12,block%!16|
000037d0  2c 62 6c 6f 63 6b 25 21  32 30 2c 62 6c 6f 63 6b  |,block%!20,block|
000037e0  25 21 32 34 0d 01 86 55  20 20 20 21 62 6c 6f 63  |%!24...U   !bloc|
000037f0  6b 25 3d 76 69 65 77 25  3a c8 99 20 47 65 74 57  |k%=view%:.. GetW|
00003800  69 6e 64 6f 77 25 2c 2c  62 6c 6f 63 6b 25 3a f1  |indow%,,block%:.|
00003810  23 46 25 2c 62 6c 6f 63  6b 25 21 34 2c 62 6c 6f  |#F%,block%!4,blo|
00003820  63 6b 25 21 38 2c 62 6c  6f 63 6b 25 21 31 32 2c  |ck%!8,block%!12,|
00003830  62 6c 6f 63 6b 25 21 31  36 0d 01 87 43 20 20 20  |block%!16...C   |
00003840  21 62 6c 6f 63 6b 25 3d  68 65 6c 70 77 25 3a c8  |!block%=helpw%:.|
00003850  99 20 47 65 74 57 69 6e  64 6f 77 25 2c 2c 62 6c  |. GetWindow%,,bl|
00003860  6f 63 6b 25 3a f1 23 46  25 2c 62 6c 6f 63 6b 25  |ock%:.#F%,block%|
00003870  21 34 2c 62 6c 6f 63 6b  25 21 31 36 0d 01 88 56  |!4,block%!16...V|
00003880  20 20 20 21 62 6c 6f 63  6b 25 3d 74 69 6d 65 77  |   !block%=timew|
00003890  25 3a c8 99 20 47 65 74  57 69 6e 64 6f 77 25 2c  |%:.. GetWindow%,|
000038a0  2c 62 6c 6f 63 6b 25 3a  f1 23 46 25 2c 62 6c 6f  |,block%:.#F%,blo|
000038b0  63 6b 25 21 34 2c 62 6c  6f 63 6b 25 21 38 2c 62  |ck%!4,block%!8,b|
000038c0  6c 6f 63 6b 25 21 31 32  2c 62 6c 6f 63 6b 25 21  |lock%!12,block%!|
000038d0  31 36 0d 01 89 43 20 20  20 e3 20 41 25 3d 33 20  |16...C   . A%=3 |
000038e0  b8 20 31 30 3a f1 23 46  25 2c 24 a4 74 61 62 6c  |. 10:.#F%,$.tabl|
000038f0  65 28 41 25 2c 31 29 2c  24 a4 74 61 62 6c 65 28  |e(A%,1),$.table(|
00003900  41 25 2c 32 29 2c 24 a4  74 61 62 6c 65 28 41 25  |A%,2),$.table(A%|
00003910  2c 33 29 3a ed 0d 01 8a  0b 20 20 20 d9 23 46 25  |,3):.....   .#F%|
00003920  0d 01 8b 12 20 20 c9 20  31 30 3a 71 75 69 74 25  |....  . 10:quit%|
00003930  3d b9 0d 01 8c 06 20 cb  0d 01 8d 44 20 c8 99 20  |=..... ....D .. |
00003940  50 6f 69 6e 74 65 72 25  2c 2c 62 6c 6f 63 6b 25  |Pointer%,,block%|
00003950  3a e7 20 62 6c 6f 63 6b  25 21 38 3d 31 20 8c 20  |:. block%!8=1 . |
00003960  f2 6d 65 6e 75 28 30 2c  30 29 3a e7 20 66 6c 61  |.menu(0,0):. fla|
00003970  67 25 20 f2 6d 61 6b 65  6c 69 73 74 0d 01 8e 05  |g% .makelist....|
00003980  e1 0d 01 8f 04 0d 01 90  0e dd f2 76 6f 69 64 6d  |...........voidm|
00003990  61 69 6e 0d 01 91 85 20  21 62 6c 6f 63 6b 25 3d  |ain.... !block%=|
000039a0  6d 61 69 6e 25 3a c8 99  47 65 74 57 69 6e 64 6f  |main%:..GetWindo|
000039b0  77 25 2c 2c 62 6c 6f 63  6b 25 3a c8 99 52 65 64  |w%,,block%:..Red|
000039c0  72 61 77 25 2c 6d 61 69  6e 25 2c 62 6c 6f 63 6b  |raw%,main%,block|
000039d0  25 21 32 30 2c 62 6c 6f  63 6b 25 21 38 2d 62 6c  |%!20,block%!8-bl|
000039e0  6f 63 6b 25 21 31 36 2b  62 6c 6f 63 6b 25 21 32  |ock%!16+block%!2|
000039f0  34 2c 62 6c 6f 63 6b 25  21 31 32 2d 62 6c 6f 63  |4,block%!12-bloc|
00003a00  6b 25 21 34 2b 62 6c 6f  63 6b 25 21 32 30 2c 62  |k%!4+block%!20,b|
00003a10  6c 6f 63 6b 25 21 32 34  0d 01 92 85 20 21 62 6c  |lock%!24.... !bl|
00003a20  6f 63 6b 25 3d 76 69 65  77 25 3a c8 99 47 65 74  |ock%=view%:..Get|
00003a30  57 69 6e 64 6f 77 25 2c  2c 62 6c 6f 63 6b 25 3a  |Window%,,block%:|
00003a40  c8 99 52 65 64 72 61 77  25 2c 76 69 65 77 25 2c  |..Redraw%,view%,|
00003a50  62 6c 6f 63 6b 25 21 32  30 2c 62 6c 6f 63 6b 25  |block%!20,block%|
00003a60  21 38 2d 62 6c 6f 63 6b  25 21 31 36 2b 62 6c 6f  |!8-block%!16+blo|
00003a70  63 6b 25 21 32 34 2c 62  6c 6f 63 6b 25 21 31 32  |ck%!24,block%!12|
00003a80  2d 62 6c 6f 63 6b 25 21  34 2b 62 6c 6f 63 6b 25  |-block%!4+block%|
00003a90  21 32 30 2c 62 6c 6f 63  6b 25 21 32 34 0d 01 93  |!20,block%!24...|
00003aa0  0e 20 f2 76 6f 69 64 68  65 6c 70 0d 01 94 05 e1  |. .voidhelp.....|
00003ab0  0d 01 95 04 0d 01 96 91  dd f2 76 6f 69 64 68 65  |..........voidhe|
00003ac0  6c 70 3a 21 62 6c 6f 63  6b 25 3d 68 65 6c 70 77  |lp:!block%=helpw|
00003ad0  25 3a c8 99 47 65 74 57  69 6e 64 6f 77 25 2c 2c  |%:..GetWindow%,,|
00003ae0  62 6c 6f 63 6b 25 3a c8  99 52 65 64 72 61 77 25  |block%:..Redraw%|
00003af0  2c 68 65 6c 70 77 25 2c  62 6c 6f 63 6b 25 21 32  |,helpw%,block%!2|
00003b00  30 2c 62 6c 6f 63 6b 25  21 38 2d 62 6c 6f 63 6b  |0,block%!8-block|
00003b10  25 21 31 36 2b 62 6c 6f  63 6b 25 21 32 34 2c 62  |%!16+block%!24,b|
00003b20  6c 6f 63 6b 25 21 31 32  2d 62 6c 6f 63 6b 25 21  |lock%!12-block%!|
00003b30  34 2b 62 6c 6f 63 6b 25  21 32 30 2c 62 6c 6f 63  |4+block%!20,bloc|
00003b40  6b 25 21 32 34 0d 01 97  05 e1 0d 01 98 04 0d 01  |k%!24...........|
00003b50  99 32 dd f2 6d 65 6e 75  28 6d 78 25 2c 6d 79 25  |.2..menu(mx%,my%|
00003b60  29 3a c8 99 20 43 72 65  61 74 65 4d 65 6e 75 25  |):.. CreateMenu%|
00003b70  2c 2c 62 61 72 25 2c 6d  78 25 2c 6d 79 25 3a e1  |,,bar%,mx%,my%:.|
00003b80  0d 01 9a 04 0d 01 9b 13  dd f2 63 72 65 61 74 65  |..........create|
00003b90  62 61 72 6d 65 6e 75 0d  01 9c 16 20 f2 63 72 65  |barmenu.... .cre|
00003ba0  61 74 65 63 6f 6c 6f 75  72 6d 65 6e 75 0d 01 9d  |atecolourmenu...|
00003bb0  13 20 f2 63 72 65 61 74  65 63 6f 6c 6d 65 6e 75  |. .createcolmenu|
00003bc0  0d 01 9e 14 20 f2 63 72  65 61 74 65 68 65 6c 70  |.... .createhelp|
00003bd0  6d 65 6e 75 0d 01 9f 22  20 de 20 62 61 72 25 20  |menu..." . bar% |
00003be0  32 34 2b 32 38 2a 31 31  2c 6c 69 73 25 20 32 34  |24+28*11,lis% 24|
00003bf0  2b 32 38 2a 37 38 0d 01  a0 5b 20 24 6c 69 73 25  |+28*78...[ $lis%|
00003c00  3d a4 6d 65 73 73 61 67  65 28 22 4d 65 6e 37 22  |=.message("Men7"|
00003c10  29 3a 6c 69 73 25 21 31  32 3d 26 30 30 30 37 30  |):lis%!12=&00070|
00003c20  32 30 37 3a 6c 69 73 25  21 31 36 3d 31 32 2a 31  |207:lis%!16=12*1|
00003c30  36 3a 6c 69 73 25 21 32  30 3d 34 34 3a 6c 69 73  |6:lis%!20=44:lis|
00003c40  25 21 32 34 3d 30 3a 41  25 3d 6c 69 73 25 2b 32  |%!24=0:A%=lis%+2|
00003c50  38 0d 01 a1 43 20 21 41  25 3d 32 3a 41 25 21 34  |8...C !A%=2:A%!4|
00003c60  3d 30 3a 41 25 21 38 3d  26 37 30 30 30 30 32 31  |=0:A%!8=&7000021|
00003c70  3a 4c 25 3d a4 6d 61 6b  65 74 65 78 74 28 41 25  |:L%=.maketext(A%|
00003c80  2c a4 6d 65 73 73 61 67  65 28 22 4d 65 6e 37 2e  |,.message("Men7.|
00003c90  31 22 29 29 0d 01 a2 1f  20 e7 20 4c 25 3e 31 31  |1")).... . L%>11|
00003ca0  20 8c 20 6c 69 73 25 21  31 36 3d 4c 25 2a 31 36  | . lis%!16=L%*16|
00003cb0  2b 31 36 0d 01 a3 4c 20  24 62 61 72 25 3d a4 6d  |+16...L $bar%=.m|
00003cc0  65 73 73 61 67 65 28 22  4d 65 6e 30 22 29 3a 62  |essage("Men0"):b|
00003cd0  61 72 25 21 31 32 3d 26  30 30 30 37 30 32 30 37  |ar%!12=&00070207|
00003ce0  3a 62 61 72 25 21 32 30  3d 34 34 3a 62 61 72 25  |:bar%!20=44:bar%|
00003cf0  21 32 34 3d 30 3a 41 25  3d 62 61 72 25 2b 34 0d  |!24=0:A%=bar%+4.|
00003d00  01 a4 4c 20 41 25 2b 3d  32 34 3a 21 41 25 3d 30  |..L A%+=24:!A%=0|
00003d10  3a 41 25 21 34 3d 69 6e  66 6f 25 3a 41 25 21 38  |:A%!4=info%:A%!8|
00003d20  3d 26 37 30 30 30 30 32  31 3a 41 25 2b 3d 32 34  |=&7000021:A%+=24|
00003d30  3a 21 41 25 3d 32 3a 41  25 21 34 3d 30 3a 41 25  |:!A%=2:A%!4=0:A%|
00003d40  21 38 3d 26 37 30 30 30  30 32 31 0d 01 a5 48 20  |!8=&7000021...H |
00003d50  41 25 2b 3d 32 34 3a 21  41 25 3d 30 3a 41 25 21  |A%+=24:!A%=0:A%!|
00003d60  34 3d 30 3a 41 25 21 38  3d 26 37 30 30 30 30 32  |4=0:A%!8=&700002|
00003d70  31 3a 41 25 2b 3d 32 34  3a 21 41 25 3d 30 3a 41  |1:A%+=24:!A%=0:A|
00003d80  25 21 34 3d 30 3a 41 25  21 38 3d 26 37 30 30 30  |%!4=0:A%!8=&7000|
00003d90  30 32 31 0d 01 a6 4b 20  41 25 2b 3d 32 34 3a 21  |021...K A%+=24:!|
00003da0  41 25 3d 30 3a 41 25 21  34 3d 30 3a 41 25 21 38  |A%=0:A%!4=0:A%!8|
00003db0  3d 26 37 30 30 30 30 32  31 3a 41 25 2b 3d 32 34  |=&7000021:A%+=24|
00003dc0  3a 21 41 25 3d 32 3a 41  25 21 34 3d 68 65 6c 25  |:!A%=2:A%!4=hel%|
00003dd0  3a 41 25 21 38 3d 26 37  30 30 30 30 32 31 0d 01  |:A%!8=&7000021..|
00003de0  a7 50 20 41 25 2b 3d 32  34 3a 21 41 25 3d 38 3a  |.P A%+=24:!A%=8:|
00003df0  41 25 21 34 3d 69 6e 66  6f 25 3a 41 25 21 38 3d  |A%!4=info%:A%!8=|
00003e00  26 37 30 30 30 30 32 31  3a 41 25 2b 3d 32 34 3a  |&7000021:A%+=24:|
00003e10  21 41 25 3d 30 3a 41 25  21 34 3d 63 6f 6c 6d 25  |!A%=0:A%!4=colm%|
00003e20  3a 41 25 21 38 3d 26 37  30 30 30 30 32 31 0d 01  |:A%!8=&7000021..|
00003e30  a8 4b 20 41 25 2b 3d 32  34 3a 21 41 25 3d 38 3a  |.K A%+=24:!A%=8:|
00003e40  41 25 21 34 3d 77 69 64  25 3a 41 25 21 38 3d 26  |A%!4=wid%:A%!8=&|
00003e50  37 30 30 30 30 32 31 3a  41 25 2b 3d 32 34 3a 21  |7000021:A%+=24:!|
00003e60  41 25 3d 30 3a 41 25 21  34 3d 30 3a 41 25 21 38  |A%=0:A%!4=0:A%!8|
00003e70  3d 26 37 30 30 30 30 32  31 0d 01 a9 28 20 41 25  |=&7000021...( A%|
00003e80  2b 3d 32 34 3a 21 41 25  3d 31 32 38 3a 41 25 21  |+=24:!A%=128:A%!|
00003e90  34 3d 30 3a 41 25 21 38  3d 26 37 30 30 30 30 32  |4=0:A%!8=&700002|
00003ea0  31 0d 01 aa 2b 20 43 25  3d a9 24 62 61 72 25 3a  |1...+ C%=.$bar%:|
00003eb0  41 25 3d 62 61 72 25 2b  34 3a e3 20 42 25 3d 31  |A%=bar%+4:. B%=1|
00003ec0  20 b8 20 31 31 3a 41 25  2b 3d 32 34 0d 01 ab 39  | . 11:A%+=24...9|
00003ed0  20 4c 25 3d a4 6d 61 6b  65 74 65 78 74 28 41 25  | L%=.maketext(A%|
00003ee0  2c a4 6d 65 73 73 61 67  65 28 22 4d 65 6e 22 2b  |,.message("Men"+|
00003ef0  c3 42 25 29 29 3a e7 20  4c 25 3e 43 25 20 8c 20  |.B%)):. L%>C% . |
00003f00  43 25 3d 4c 25 0d 01 ac  17 20 ed 3a 62 61 72 25  |C%=L%.... .:bar%|
00003f10  21 31 36 3d 31 36 2a 43  25 2b 31 36 0d 01 ad 05  |!16=16*C%+16....|
00003f20  e1 0d 01 ae 04 0d 01 af  1c dd a4 6d 61 6b 65 74  |...........maket|
00003f30  65 78 74 28 70 74 72 25  2c 41 24 29 3a ea 20 41  |ext(ptr%,A$):. A|
00003f40  25 0d 01 b0 0f 20 e7 20  a9 41 24 3e 31 31 20 8c  |%.... . .A$>11 .|
00003f50  0d 01 b1 49 20 20 de 20  41 25 20 a9 28 41 24 29  |...I  . A% .(A$)|
00003f60  3a 70 74 72 25 21 31 32  3d 41 25 3a 70 74 72 25  |:ptr%!12=A%:ptr%|
00003f70  21 31 36 3d 30 3a 70 74  72 25 21 32 30 3d a9 28  |!16=0:ptr%!20=.(|
00003f80  41 24 29 3a 24 41 25 3d  41 24 3a 70 74 72 25 21  |A$):$A%=A$:ptr%!|
00003f90  38 2b 3d 28 31 3c 3c 38  29 0d 01 b2 14 20 cc 20  |8+=(1<<8).... . |
00003fa0  24 28 70 74 72 25 2b 31  32 29 3d 41 24 0d 01 b3  |$(ptr%+12)=A$...|
00003fb0  06 20 cd 0d 01 b4 0a 3d  a9 28 41 24 29 0d 01 b5  |. .....=.(A$)...|
00003fc0  04 0d 01 b6 16 dd f2 63  72 65 61 74 65 63 6f 6c  |.......createcol|
00003fd0  6f 75 72 6d 65 6e 75 0d  01 b7 14 20 de 20 63 6f  |ourmenu.... . co|
00003fe0  6c 25 20 32 34 2b 32 38  2a 31 35 0d 01 b8 59 20  |l% 24+28*15...Y |
00003ff0  24 63 6f 6c 25 3d a4 6d  65 73 73 61 67 65 28 22  |$col%=.message("|
00004000  4d 65 6e 37 22 29 3a 63  6f 6c 25 21 31 32 3d 26  |Men7"):col%!12=&|
00004010  30 30 30 37 30 32 30 37  3a 63 6f 6c 25 21 31 36  |00070207:col%!16|
00004020  3d 35 2a 31 36 3a 63 6f  6c 25 21 32 30 3d 34 34  |=5*16:col%!20=44|
00004030  3a 63 6f 6c 25 21 32 34  3d 30 3a 41 25 3d 63 6f  |:col%!24=0:A%=co|
00004040  6c 25 2b 34 0d 01 b9 24  20 e3 20 42 25 3d 30 20  |l%+4...$ . B%=0 |
00004050  b8 20 31 35 3a 41 25 2b  3d 32 34 3a 21 41 25 3d  |. 15:A%+=24:!A%=|
00004060  30 3a 41 25 21 34 3d 30  0d 01 ba 45 20 41 25 21  |0:A%!4=0...E A%!|
00004070  38 3d 26 32 39 2b 28 42  25 3c 3c 32 38 29 3a e7  |8=&29+(B%<<28):.|
00004080  20 42 25 3c 34 20 84 20  42 25 3d 39 20 84 20 42  | B%<4 . B%=9 . B|
00004090  25 3d 31 32 20 84 20 42  25 3d 31 34 20 8c 20 41  |%=12 . B%=14 . A|
000040a0  25 21 38 2b 3d 28 37 3c  3c 32 34 29 20 0d 01 bb  |%!8+=(7<<24) ...|
000040b0  1c 20 24 28 41 25 2b 31  32 29 3d c3 42 25 3a ed  |. $(A%+12)=.B%:.|
000040c0  3a 21 41 25 2b 3d 31 32  38 0d 01 bc 05 e1 0d 01  |:!A%+=128.......|
000040d0  bd 04 0d 01 be 13 dd f2  63 72 65 61 74 65 63 6f  |........createco|
000040e0  6c 6d 65 6e 75 0d 01 bf  1f 20 de 20 63 6f 6c 6d  |lmenu.... . colm|
000040f0  25 20 32 34 2b 32 38 2a  31 35 20 20 20 20 20 20  |% 24+28*15      |
00004100  20 20 20 20 0d 01 c0 51  20 24 63 6f 6c 6d 25 3d  |    ...Q $colm%=|
00004110  a4 6d 65 73 73 61 67 65  28 22 4d 65 6e 38 22 29  |.message("Men8")|
00004120  3a 63 6f 6c 6d 25 21 31  32 3d 26 30 30 30 37 30  |:colm%!12=&00070|
00004130  32 30 37 3a 63 6f 6c 6d  25 21 32 30 3d 34 34 3a  |207:colm%!20=44:|
00004140  63 6f 6c 6d 25 21 32 34  3d 30 3a 41 25 3d 63 6f  |colm%!24=0:A%=co|
00004150  6c 6d 25 2b 34 0d 01 c1  4e 20 41 25 2b 3d 32 34  |lm%+4...N A%+=24|
00004160  3a 21 41 25 3d 38 3a 41  25 21 34 3d 63 6f 6c 25  |:!A%=8:A%!4=col%|
00004170  3a 41 25 21 38 3d 26 37  30 30 30 30 32 31 3a 41  |:A%!8=&7000021:A|
00004180  25 2b 3d 32 34 3a 21 41  25 3d 38 3a 41 25 21 34  |%+=24:!A%=8:A%!4|
00004190  3d 63 6f 6c 25 3a 41 25  21 38 3d 26 37 30 30 30  |=col%:A%!8=&7000|
000041a0  30 32 31 0d 01 c2 38 20  41 25 2b 3d 32 34 3a 21  |021...8 A%+=24:!|
000041b0  41 25 3d 38 2b 31 32 38  3a 41 25 21 34 3d 63 6f  |A%=8+128:A%!4=co|
000041c0  6c 25 3a 41 25 21 38 3d  26 37 30 30 30 30 32 31  |l%:A%!8=&7000021|
000041d0  3a 43 25 3d a9 24 63 6f  6c 6d 25 0d 01 c3 21 20  |:C%=.$colm%...! |
000041e0  41 25 3d 63 6f 6c 6d 25  2b 34 3a e3 20 42 25 3d  |A%=colm%+4:. B%=|
000041f0  31 20 b8 20 33 3a 41 25  2b 3d 32 34 0d 01 c4 3d  |1 . 3:A%+=24...=|
00004200  20 4c 25 3d a4 6d 61 6b  65 74 65 78 74 28 41 25  | L%=.maketext(A%|
00004210  2c a4 6d 65 73 73 61 67  65 28 22 4d 65 6e 38 2e  |,.message("Men8.|
00004220  22 2b c3 42 25 29 29 3a  e7 20 4c 25 3e 43 25 20  |"+.B%)):. L%>C% |
00004230  8c 20 43 25 3d 4c 25 2b  31 0d 01 c5 15 20 ed 3a  |. C%=L%+1.... .:|
00004240  63 6f 6c 6d 25 21 31 36  3d 31 36 2a 43 25 0d 01  |colm%!16=16*C%..|
00004250  c6 05 e1 0d 01 c7 04 0d  01 c8 14 dd f2 63 72 65  |.............cre|
00004260  61 74 65 68 65 6c 70 6d  65 6e 75 0d 01 c9 13 20  |atehelpmenu.... |
00004270  de 20 68 65 6c 25 20 32  34 2b 32 38 2a 33 0d 01  |. hel% 24+28*3..|
00004280  ca 56 20 24 68 65 6c 25  3d a4 6d 65 73 73 61 67  |.V $hel%=.messag|
00004290  65 28 22 4d 65 6e 36 22  29 3a 68 65 6c 25 21 31  |e("Men6"):hel%!1|
000042a0  32 3d 26 30 30 30 37 30  32 30 37 3a 68 65 6c 25  |2=&00070207:hel%|
000042b0  21 32 30 3d 34 34 3a 68  65 6c 25 21 32 34 3d 30  |!20=44:hel%!24=0|
000042c0  3a 41 25 3d 68 65 6c 25  2b 34 3a 43 25 3d a9 24  |:A%=hel%+4:C%=.$|
000042d0  68 65 6c 25 0d 01 cb 32  20 e3 20 42 25 3d 31 20  |hel%...2 . B%=1 |
000042e0  b8 20 32 3a 41 25 2b 3d  32 34 3a 21 41 25 3d 30  |. 2:A%+=24:!A%=0|
000042f0  3a 41 25 21 34 3d 30 3a  41 25 21 38 3d 26 37 30  |:A%!4=0:A%!8=&70|
00004300  30 30 30 32 31 3a 0d 01  cc 3b 20 4c 25 3d a4 6d  |00021:...; L%=.m|
00004310  61 6b 65 74 65 78 74 28  41 25 2c a4 6d 65 73 73  |aketext(A%,.mess|
00004320  61 67 65 28 22 4d 65 6e  36 2e 22 2b c3 42 25 29  |age("Men6."+.B%)|
00004330  29 3a e7 20 4c 25 3e 43  25 20 8c 20 43 25 3d 4c  |):. L%>C% . C%=L|
00004340  25 0d 01 cd 20 20 ed 3a  21 41 25 2b 3d 31 32 38  |%...  .:!A%+=128|
00004350  3a 68 65 6c 25 21 31 36  3d 43 25 2a 31 36 2b 31  |:hel%!16=C%*16+1|
00004360  36 0d 01 ce 05 e1 0d 01  cf 04 0d 01 d0 28 f4 20  |6............(. |
00004370  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 20  |*************** |
00004380  20 49 63 6f 6e 20 4d 61  6e 69 70 75 6c 61 74 69  | Icon Manipulati|
00004390  6f 6e 0d 01 d1 04 0d 01  d2 46 dd f2 69 63 6f 6e  |on.......F..icon|
000043a0  73 68 61 64 65 28 77 69  6e 64 6f 77 25 2c 69 63  |shade(window%,ic|
000043b0  6f 6e 25 2c 66 6c 61 67  25 29 3a ea 41 25 3a 41  |on%,flag%):.A%:A|
000043c0  25 3d 31 3a e7 66 6c 61  67 25 3d 2d 31 20 8c 20  |%=1:.flag%=-1 . |
000043d0  66 6c 61 67 25 3d 31 3a  41 25 3d 30 0d 01 d3 43  |flag%=1:A%=0...C|
000043e0  20 21 72 65 70 25 3d 77  69 6e 64 6f 77 25 3a 72  | !rep%=window%:r|
000043f0  65 70 25 21 34 3d 69 63  6f 6e 25 3a 72 65 70 25  |ep%!4=icon%:rep%|
00004400  21 38 3d 66 6c 61 67 25  2a 28 31 3c 3c 32 32 29  |!8=flag%*(1<<22)|
00004410  3a 72 65 70 25 21 31 32  3d 41 25 3c 3c 32 32 0d  |:rep%!12=A%<<22.|
00004420  01 d4 16 20 c8 99 20 53  65 74 49 63 6f 6e 25 2c  |... .. SetIcon%,|
00004430  2c 72 65 70 25 0d 01 d5  07 e1 20 20 0d 01 d6 04  |,rep%.....  ....|
00004440  0d 01 d7 44 dd f2 69 63  6f 6e 73 65 6c 65 63 74  |...D..iconselect|
00004450  28 77 69 6e 64 6f 77 25  2c 69 63 6f 6e 25 2c 66  |(window%,icon%,f|
00004460  6c 61 67 25 29 3a ea 41  25 3a 21 72 65 70 25 3d  |lag%):.A%:!rep%=|
00004470  77 69 6e 64 6f 77 25 3a  72 65 70 25 21 34 3d 69  |window%:rep%!4=i|
00004480  63 6f 6e 25 0d 01 d8 23  20 41 25 3d 31 3a e7 20  |con%...# A%=1:. |
00004490  66 6c 61 67 25 3d 2d 31  20 8c 20 66 6c 61 67 25  |flag%=-1 . flag%|
000044a0  3d 31 3a 41 25 3d 30 0d  01 d9 36 20 72 65 70 25  |=1:A%=0...6 rep%|
000044b0  21 38 3d 66 6c 61 67 25  3c 3c 32 31 3a 72 65 70  |!8=flag%<<21:rep|
000044c0  25 21 31 32 3d 41 25 3c  3c 32 31 3a c8 99 20 53  |%!12=A%<<21:.. S|
000044d0  65 74 49 63 6f 6e 25 2c  2c 72 65 70 25 0d 01 da  |etIcon%,,rep%...|
000044e0  08 e1 20 20 20 0d 01 db  04 0d 01 dc 46 dd a4 74  |..   .......F..t|
000044f0  65 78 74 28 77 69 6e 64  6f 77 25 2c 69 63 6f 6e  |ext(window%,icon|
00004500  25 29 3a 21 72 65 70 25  3d 77 69 6e 64 6f 77 25  |%):!rep%=window%|
00004510  3a 72 65 70 25 21 34 3d  69 63 6f 6e 25 3a c8 99  |:rep%!4=icon%:..|
00004520  20 47 65 74 49 63 6f 6e  25 2c 2c 72 65 70 25 0d  | GetIcon%,,rep%.|
00004530  01 dd 0e 3d 72 65 70 25  21 32 38 20 20 0d 01 de  |...=rep%!28  ...|
00004540  04 0d 01 df 12 dd a4 74  61 62 6c 65 28 6e 25 2c  |.......table(n%,|
00004550  78 25 29 0d 01 e0 35 20  72 65 70 25 21 34 3d 28  |x%)...5 rep%!4=(|
00004560  6e 25 2d 32 29 2a 34 2b  78 25 3a 21 72 65 70 25  |n%-2)*4+x%:!rep%|
00004570  3d 68 69 67 68 77 25 3a  c8 99 47 65 74 49 63 6f  |=highw%:..GetIco|
00004580  6e 25 2c 2c 72 65 70 25  0d 01 e1 0c 3d 72 65 70  |n%,,rep%....=rep|
00004590  25 21 32 38 0d 01 e2 04  0d 01 e3 23 dd f2 69 63  |%!28.......#..ic|
000045a0  6f 6e 74 65 78 74 28 77  69 6e 64 6f 77 25 2c 69  |ontext(window%,i|
000045b0  63 6f 6e 25 2c 74 65 78  74 24 29 0d 01 e4 42 20  |con%,text$)...B |
000045c0  21 72 65 70 25 3d 77 69  6e 64 6f 77 25 3a 72 65  |!rep%=window%:re|
000045d0  70 25 21 34 3d 69 63 6f  6e 25 3a c8 99 20 47 65  |p%!4=icon%:.. Ge|
000045e0  74 49 63 6f 6e 25 2c 2c  72 65 70 25 3a 24 28 72  |tIcon%,,rep%:$(r|
000045f0  65 70 25 21 32 38 29 3d  74 65 78 74 24 0d 01 e5  |ep%!28)=text$...|
00004600  29 20 72 65 70 25 21 38  3d 30 3a 72 65 70 25 21  |) rep%!8=0:rep%!|
00004610  31 32 3d 30 3a c8 99 20  53 65 74 49 63 6f 6e 25  |12=0:.. SetIcon%|
00004620  2c 2c 72 65 70 25 0d 01  e6 05 e1 0d 01 e7 04 0d  |,,rep%..........|
00004630  01 e8 2a dd f2 74 69 63  6b 28 6d 65 6e 75 25 2c  |..*..tick(menu%,|
00004640  69 74 65 6d 25 2c 66 6c  61 67 25 29 3a ea 41 25  |item%,flag%):.A%|
00004650  20 20 20 20 20 20 20 20  20 0d 01 e9 36 20 41 25  |         ...6 A%|
00004660  3d 6d 65 6e 75 25 2b 32  38 2b 32 34 2a 69 74 65  |=menu%+28+24*ite|
00004670  6d 25 3a 21 41 25 3d 21  41 25 80 26 46 45 3a e7  |m%:!A%=!A%.&FE:.|
00004680  20 66 6c 61 67 25 20 8c  20 21 41 25 2b 3d 31 0d  | flag% . !A%+=1.|
00004690  01 ea 05 e1 0d 01 eb 04  0d 01 ec 26 dd f2 6d 65  |...........&..me|
000046a0  6e 75 73 68 61 64 65 28  6d 65 6e 75 25 2c 69 74  |nushade(menu%,it|
000046b0  65 6d 25 2c 66 6c 61 67  25 29 3a ea 41 25 0d 01  |em%,flag%):.A%..|
000046c0  ed 42 20 41 25 3d 6d 65  6e 75 25 2b 33 36 2b 32  |.B A%=menu%+36+2|
000046d0  34 2a 69 74 65 6d 25 3a  21 41 25 3d 21 41 25 80  |4*item%:!A%=!A%.|
000046e0  26 46 46 42 46 46 46 46  46 3a e7 20 66 6c 61 67  |&FFBFFFFF:. flag|
000046f0  25 20 8c 20 21 41 25 2b  3d 28 31 3c 3c 32 32 29  |% . !A%+=(1<<22)|
00004700  0d 01 ee 05 e1 0d 01 ef  04 0d 01 f0 1f f4 20 2a  |.............. *|
00004710  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 20 20  |**************  |
00004720  4d 65 73 73 61 67 65 73  0d 01 f1 04 0d 01 f2 1b  |Messages........|
00004730  dd f2 65 72 72 6f 72 3a  21 62 6c 6f 63 6b 25 3d  |..error:!block%=|
00004740  32 35 35 3a d9 23 30 0d  01 f3 29 20 24 28 62 6c  |255:.#0...) $(bl|
00004750  6f 63 6b 25 2b 34 29 3d  f6 24 2b 22 2e 22 2b a4  |ock%+4)=.$+"."+.|
00004760  6d 65 73 73 61 67 65 28  22 43 6c 69 63 6b 22 29  |message("Click")|
00004770  0d 01 f4 26 20 c8 99 20  52 65 70 6f 72 74 25 2c  |...& .. Report%,|
00004780  62 6c 6f 63 6b 25 2c 33  2c 61 70 70 24 20 b8 20  |block%,3,app$ . |
00004790  2c 66 6c 61 67 25 0d 01  f5 16 20 e7 20 66 6c 61  |,flag%.... . fla|
000047a0  67 25 3d 32 20 8c 20 f2  71 75 69 74 0d 01 f6 26  |g%=2 . .quit...&|
000047b0  20 64 65 66 61 75 6c 74  24 3d 22 22 3a 62 25 3d  | default$="":b%=|
000047c0  33 3a f2 73 70 6c 69 74  3a f2 76 6f 69 64 6d 61  |3:.split:.voidma|
000047d0  69 6e 0d 01 f7 05 e1 0d  01 f8 04 0d 01 f9 1f dd  |in..............|
000047e0  f2 72 65 70 6f 72 74 28  72 65 70 24 2c 66 6c 61  |.report(rep$,fla|
000047f0  67 25 29 3a ea 41 24 2c  46 25 0d 01 fa 20 20 21  |g%):.A$,F%...  !|
00004800  72 65 70 25 3d 32 35 35  3a 24 28 72 65 70 25 2b  |rep%=255:$(rep%+|
00004810  34 29 3d 72 65 70 24 2b  bd 30 0d 01 fb 3c 20 41  |4)=rep$+.0...< A|
00004820  24 3d a4 6d 65 73 73 61  67 65 28 22 4d 65 73 73  |$=.message("Mess|
00004830  22 29 2b 22 20 22 2b a4  6d 65 73 73 61 67 65 28  |")+" "+.message(|
00004840  22 66 72 6f 6d 22 29 2b  22 20 22 2b 61 70 70 24  |"from")+" "+app$|
00004850  3a 46 25 3d 31 37 0d 01  fc 1c 20 e7 20 66 6c 61  |:F%=17.... . fla|
00004860  67 25 20 8c 20 46 25 2d  3d 38 3a 41 24 3d 61 70  |g% . F%-=8:A$=ap|
00004870  70 24 0d 01 fd 1a 20 c8  99 20 52 65 70 6f 72 74  |p$.... .. Report|
00004880  25 2c 72 65 70 25 2c 46  25 2c 41 24 0d 01 fe 05  |%,rep%,F%,A$....|
00004890  e1 0d 01 ff 04 0d 02 00  76 dd f2 6c 6f 61 64 6d  |........v..loadm|
000048a0  65 73 73 61 67 65 73 3a  46 25 3d 8e 22 3c 50 75  |essages:F%=."<Pu|
000048b0  7a 24 44 69 72 3e 2e 4d  65 73 73 61 67 65 73 22  |z$Dir>.Messages"|
000048c0  3a 41 25 3d 30 3a f5 3a  41 24 3d be 23 46 25 3a  |:A%=0:.:A$=.#F%:|
000048d0  41 25 2b 3d 31 3a fd 20  c5 23 46 25 3a de 20 4d  |A%+=1:. .#F%:. M|
000048e0  24 28 41 25 29 3a cf 23  46 25 3d 30 3a e3 20 42  |$(A%):.#F%=0:. B|
000048f0  25 3d 30 20 b8 20 41 25  3a 4d 24 28 42 25 29 3d  |%=0 . A%:M$(B%)=|
00004900  be 23 46 25 3a ed 3a d9  23 46 25 0d 02 01 05 e1  |.#F%:.:.#F%.....|
00004910  0d 02 02 04 0d 02 03 6d  dd a4 6d 65 73 73 61 67  |.......m..messag|
00004920  65 28 53 24 29 3a ea 41  25 2c 41 24 2c 46 25 3a  |e(S$):.A%,A$,F%:|
00004930  41 25 3d 2d 31 3a 46 25  3d 30 3a c8 95 20 41 25  |A%=-1:F%=0:.. A%|
00004940  3c de 28 4d 24 28 29 2c  31 29 20 80 20 46 25 3d  |<.(M$(),1) . F%=|
00004950  30 3a 41 25 2b 3d 31 3a  46 25 3d a7 4d 24 28 41  |0:A%+=1:F%=.M$(A|
00004960  25 29 2c 53 24 29 3a ce  3a 3d c1 4d 24 28 41 25  |%),S$):.:=.M$(A%|
00004970  29 2c a7 4d 24 28 41 25  29 2c 22 3a 22 29 2b 31  |),.M$(A%),":")+1|
00004980  29 0d 02 04 04 0d 02 05  23 f4 20 2a 2a 2a 2a 2a  |).......#. *****|
00004990  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 20 20 49 6e 69 74  |**********  Init|
000049a0  69 61 6c 69 73 69 6e 67  0d 02 06 04 0d 02 07 14  |ialising........|
000049b0  dd f2 69 6e 69 74 3a c8  99 48 6f 75 72 4f 6e 25  |..init:..HourOn%|
000049c0  0d 02 08 38 20 64 72 61  67 67 69 6e 67 25 3d 30  |...8 dragging%=0|
000049d0  3a 64 78 25 3d 30 3a 64  79 25 3d 30 3a 77 61 74  |:dx%=0:dy%=0:wat|
000049e0  63 68 25 3d a3 3a 77 61  74 63 68 6e 6f 25 3d 30  |ch%=.:watchno%=0|
000049f0  3a 71 75 69 74 25 3d b9  0d 02 09 25 20 f2 62 61  |:quit%=....% .ba|
00004a00  72 69 63 6f 6e 28 22 21  70 75 7a 7a 6c 65 22 29  |ricon("!puzzle")|
00004a10  3a f2 69 63 6f 6e 73 70  72 69 74 65 73 0d 02 0a  |:.iconsprites...|
00004a20  4a 20 46 25 3d 8e 22 3c  50 75 7a 24 44 69 72 3e  |J F%=."<Puz$Dir>|
00004a30  2e 44 65 66 61 75 6c 74  22 3a e8 20 23 46 25 2c  |.Default":. #F%,|
00004a40  64 65 66 61 75 6c 74 24  2c 62 25 2c 63 62 25 2c  |default$,b%,cb%,|
00004a50  63 79 25 2c 63 6e 25 2c  68 65 6c 70 25 3a de 20  |cy%,cn%,help%:. |
00004a60  73 25 28 39 2c 39 29 0d  02 0b 4d 20 e3 20 59 25  |s%(9,9)...M . Y%|
00004a70  3d 30 20 b8 20 62 25 2d  31 3a e3 20 58 25 3d 30  |=0 . b%-1:. X%=0|
00004a80  20 b8 20 62 25 2d 31 3a  e8 23 46 25 2c 73 25 28  | . b%-1:.#F%,s%(|
00004a90  58 25 2c 59 25 29 3a e7  20 73 25 28 58 25 2c 59  |X%,Y%):. s%(X%,Y|
00004aa0  25 29 3d 30 20 8c 20 62  78 25 3d 58 25 3a 62 79  |%)=0 . bx%=X%:by|
00004ab0  25 3d 59 25 0d 02 0c 29  20 ed 2c 3a e8 23 46 25  |%=Y%...) .,:.#F%|
00004ac0  2c 70 75 7a 6f 70 65 6e  25 2c 76 69 65 77 6f 70  |,puzopen%,viewop|
00004ad0  65 6e 25 2c 74 69 6d 65  72 25 2c 54 25 0d 02 0d  |en%,timer%,T%...|
00004ae0  3b 20 c8 99 47 65 74 54  69 6d 65 25 20 b8 20 64  |; ..GetTime% . d|
00004af0  65 6c 61 79 25 3a 6e 6f  77 25 3d 64 65 6c 61 79  |elay%:now%=delay|
00004b00  25 3a 74 69 6d 65 73 74  61 72 74 65 64 25 3d 64  |%:timestarted%=d|
00004b10  65 6c 61 79 25 2d 54 25  0d 02 0e 4a 20 f2 77 69  |elay%-T%...J .wi|
00004b20  6e 64 6f 77 73 3a e3 20  41 25 3d 33 20 b8 20 31  |ndows:. A%=3 . 1|
00004b30  30 3a e8 23 46 25 2c 24  a4 74 61 62 6c 65 28 41  |0:.#F%,$.table(A|
00004b40  25 2c 31 29 2c 24 a4 74  61 62 6c 65 28 41 25 2c  |%,1),$.table(A%,|
00004b50  32 29 2c 24 a4 74 61 62  6c 65 28 41 25 2c 33 29  |2),$.table(A%,3)|
00004b60  3a ed 0d 02 0f 21 20 d9  23 46 25 3a f2 63 72 65  |:....! .#F%:.cre|
00004b70  61 74 65 62 61 72 6d 65  6e 75 3a 66 69 72 73 74  |atebarmenu:first|
00004b80  25 3d a3 0d 02 10 32 20  45 24 3d a4 6d 65 73 73  |%=....2 E$=.mess|
00004b90  61 67 65 28 22 45 72 72  46 69 6e 64 22 29 3a 43  |age("ErrFind"):C|
00004ba0  24 3d a4 6d 65 73 73 61  67 65 28 22 4e 6f 74 46  |$=.message("NotF|
00004bb0  69 6e 64 22 29 0d 02 11  41 20 e7 20 a7 45 24 2c  |ind")...A . .E$,|
00004bc0  22 25 31 22 29 20 8c 20  45 24 3d c0 45 24 2c a7  |"%1") . E$=.E$,.|
00004bd0  45 24 2c 22 25 31 22 29  2d 31 29 2b 64 65 66 61  |E$,"%1")-1)+defa|
00004be0  75 6c 74 24 2b c1 45 24  2c a7 45 24 2c 22 25 31  |ult$+.E$,.E$,"%1|
00004bf0  22 29 2b 32 29 20 0d 02  12 40 20 e7 20 a7 43 24  |")+2) ...@ . .C$|
00004c00  2c 22 25 30 22 29 20 8c  20 43 24 3d c0 43 24 2c  |,"%0") . C$=.C$,|
00004c10  a7 43 24 2c 22 25 30 22  29 2d 31 29 2b 64 65 66  |.C$,"%0")-1)+def|
00004c20  61 75 6c 74 24 2b c1 43  24 2c a7 43 24 2c 22 25  |ault$+.C$,.C$,"%|
00004c30  30 22 29 2b 32 29 0d 02  13 08 20 ea 20 85 0d 02  |0")+2).... . ...|
00004c40  14 15 20 e7 20 64 65 66  61 75 6c 74 24 3c 3e 22  |.. . default$<>"|
00004c50  22 20 8c 0d 02 15 32 20  20 41 24 3d 64 65 66 61  |" ....2  A$=defa|
00004c60  75 6c 74 24 3a c8 95 20  a7 41 24 2c 22 2e 22 29  |ult$:.. .A$,".")|
00004c70  3a 41 24 3d c1 41 24 2c  a7 41 24 2c 22 2e 22 29  |:A$=.A$,.A$,".")|
00004c80  2b 31 29 3a ce 0d 02 16  42 20 20 24 62 6c 6f 63  |+1):....B  $bloc|
00004c90  6b 25 3d c0 64 65 66 61  75 6c 74 24 2c a7 64 65  |k%=.default$,.de|
00004ca0  66 61 75 6c 74 24 2c 41  24 29 2d 32 29 3a 24 73  |fault$,A$)-2):$s|
00004cb0  63 61 6c 65 25 3d 41 24  3a 69 6e 64 65 78 25 3d  |cale%=A$:index%=|
00004cc0  30 3a 41 25 3d 2d 31 0d  02 17 35 20 20 f5 20 20  |0:A%=-1...5  .  |
00004cd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00004cf0  20 20 20 20 20 20 20 20  20 20 20 20 0d 02 18 34  |            ...4|
00004d00  20 20 20 ee 20 85 20 ea  20 41 25 3d 2d 32 3a f2  |   . . . A%=-2:.|
00004d10  71 75 69 63 6b 65 72 72  6f 72 3a 64 65 66 61 75  |quickerror:defau|
00004d20  6c 74 24 3d 22 22 3a 69  6e 64 65 78 25 3d 2d 31  |lt$="":index%=-1|
00004d30  0d 02 19 58 20 20 20 e7  20 69 6e 64 65 78 25 3e  |...X   . index%>|
00004d40  2d 31 20 c8 99 26 30 43  2c 31 30 2c 62 6c 6f 63  |-1 ..&0C,10,bloc|
00004d50  6b 25 2c 72 65 70 25 2c  31 2c 69 6e 64 65 78 25  |k%,rep%,1,index%|
00004d60  2c 35 30 2c 73 63 61 6c  65 25 20 b8 20 2c 2c 2c  |,50,scale% . ,,,|
00004d70  6e 25 2c 69 6e 64 65 78  25 3a e7 20 6e 25 3c 3e  |n%,index%:. n%<>|
00004d80  30 20 8c 20 41 25 3d 30  0d 02 1a 11 20 20 fd 20  |0 . A%=0....  . |
00004d90  69 6e 64 65 78 25 3d 2d  31 0d 02 1b 29 20 20 e7  |index%=-1...)  .|
00004da0  20 41 25 3d 2d 31 20 8c  20 f2 72 65 70 6f 72 74  | A%=-1 . .report|
00004db0  28 43 24 2c 30 29 3a 64  65 66 61 75 6c 74 24 3d  |(C$,0):default$=|
00004dc0  22 22 0d 02 1c 09 20 cd  20 20 20 0d 02 1d 1e 20  |"".... .   .... |
00004dd0  f7 20 85 20 20 20 20 20  20 20 20 20 20 20 20 20  |. .             |
00004de0  20 20 20 20 20 20 20 20  20 0d 02 1e 2b 20 e7 20  |         ...+ . |
00004df0  64 65 66 61 75 6c 74 24  3c 3e 22 22 20 8c 20 f2  |default$<>"" . .|
00004e00  6c 6f 61 64 73 70 72 69  74 65 28 64 65 66 61 75  |loadsprite(defau|
00004e10  6c 74 24 29 0d 02 1f 3f  20 f2 73 70 6c 69 74 3a  |lt$)...? .split:|
00004e20  e7 20 68 65 6c 70 25 3e  30 20 8c 20 f2 74 69 63  |. help%>0 . .tic|
00004e30  6b 28 68 65 6c 25 2c 68  65 6c 70 25 2d 31 2c 2d  |k(hel%,help%-1,-|
00004e40  31 29 3a f2 74 69 63 6b  28 62 61 72 25 2c 35 2c  |1):.tick(bar%,5,|
00004e50  2d 31 29 0d 02 20 35 20  74 66 6c 61 67 25 3d 30  |-1).. 5 tflag%=0|
00004e60  3a f2 74 69 6d 65 3a f2  70 65 72 63 65 6e 74 3a  |:.time:.percent:|
00004e70  e7 20 74 69 6d 65 72 25  20 8c 20 f2 6f 70 65 6e  |. timer% . .open|
00004e80  28 74 69 6d 65 77 25 29  0d 02 21 1e 20 e7 20 70  |(timew%)..!. . p|
00004e90  75 7a 6f 70 65 6e 25 20  8c 20 f2 6f 70 65 6e 28  |uzopen% . .open(|
00004ea0  6d 61 69 6e 25 29 0d 02  22 28 20 e7 20 76 69 65  |main%).."( . vie|
00004eb0  77 6f 70 65 6e 25 20 8c  20 f2 6f 70 65 6e 28 76  |wopen% . .open(v|
00004ec0  69 65 77 25 29 20 20 20  20 20 20 20 20 20 0d 02  |iew%)         ..|
00004ed0  23 82 20 e7 20 68 65 6c  70 25 3d 31 20 8c 20 21  |#. . help%=1 . !|
00004ee0  62 6c 6f 63 6b 25 3d 68  65 6c 70 77 25 3a c8 99  |block%=helpw%:..|
00004ef0  20 47 65 74 57 69 6e 64  6f 77 25 2c 2c 62 6c 6f  | GetWindow%,,blo|
00004f00  63 6b 25 3a 62 6c 6f 63  6b 25 21 31 32 3d 62 6c  |ck%:block%!12=bl|
00004f10  6f 63 6b 25 21 34 2b 62  25 2a 34 30 2b 34 3a 62  |ock%!4+b%*40+4:b|
00004f20  6c 6f 63 6b 25 21 38 3d  62 6c 6f 63 6b 25 21 31  |lock%!8=block%!1|
00004f30  36 2d 34 30 2a 62 25 2d  34 3a c8 99 20 4f 70 65  |6-40*b%-4:.. Ope|
00004f40  6e 57 69 6e 64 6f 77 25  2c 2c 62 6c 6f 63 6b 25  |nWindow%,,block%|
00004f50  0d 02 24 26 20 71 75 69  74 25 3d a3 3a c8 99 48  |..$& quit%=.:..H|
00004f60  6f 75 72 4f 66 66 25 3a  66 69 72 73 74 25 3d b9  |ourOff%:first%=.|
00004f70  20 20 20 20 20 20 0d 02  25 05 e1 0d 02 26 04 0d  |      ..%....&..|
00004f80  02 27 5e dd f2 71 75 69  63 6b 65 72 72 6f 72 3a  |.'^..quickerror:|
00004f90  e7 20 a7 45 24 2c 22 25  30 22 29 20 8c 20 f2 72  |. .E$,"%0") . .r|
00004fa0  65 70 6f 72 74 28 c0 45  24 2c a7 45 24 2c 22 25  |eport(.E$,.E$,"%|
00004fb0  30 22 29 2d 31 29 2b f6  24 2b c1 45 24 2c a7 45  |0")-1)+.$+.E$,.E|
00004fc0  24 2c 22 25 30 22 29 2b  32 29 2c 30 29 20 8b 20  |$,"%0")+2),0) . |
00004fd0  f2 72 65 70 6f 72 74 28  45 24 2c 30 29 0d 02 28  |.report(E$,0)..(|
00004fe0  05 e1 0d 02 29 04 0d 02  2a 0b dd f2 75 6e 6d 69  |....)...*...unmi|
00004ff0  78 0d 02 2b 4b 20 41 25  3d 30 3a e3 20 59 25 3d  |x..+K A%=0:. Y%=|
00005000  30 20 b8 20 62 25 2d 31  3a e3 20 58 25 3d 30 20  |0 . b%-1:. X%=0 |
00005010  b8 20 62 25 2d 31 3a 41  25 2b 3d 31 3a 73 25 28  |. b%-1:A%+=1:s%(|
00005020  58 25 2c 59 25 29 3d 41  25 3a ed 2c 3a 73 25 28  |X%,Y%)=A%:.,:s%(|
00005030  62 25 2d 31 2c 62 25 2d  31 29 3d 30 0d 02 2c 16  |b%-1,b%-1)=0..,.|
00005040  20 62 78 25 3d 62 25 2d  31 3a 62 79 25 3d 62 25  | bx%=b%-1:by%=b%|
00005050  2d 31 0d 02 2d 05 e1 0d  02 2e 04 0d 02 2f 17 dd  |-1..-......../..|
00005060  f2 73 68 75 66 66 6c 65  3a c8 99 48 6f 75 72 4f  |.shuffle:..HourO|
00005070  6e 25 0d 02 30 16 20 e3  20 41 25 3d 31 20 b8 20  |n%..0. . A%=1 . |
00005080  31 30 2a 62 25 2a 62 25  0d 02 31 10 20 20 54 25  |10*b%*b%..1.  T%|
00005090  3d b3 28 62 25 29 2d 31  0d 02 32 32 20 20 c8 95  |=.(b%)-1..22  ..|
000050a0  20 54 25 3e 62 78 25 3a  73 25 28 62 78 25 2c 62  | T%>bx%:s%(bx%,b|
000050b0  79 25 29 3d 73 25 28 62  78 25 2b 31 2c 62 79 25  |y%)=s%(bx%+1,by%|
000050c0  29 3a 62 78 25 2b 3d 31  3a ce 0d 02 33 32 20 20  |):bx%+=1:...32  |
000050d0  c8 95 20 54 25 3c 62 78  25 3a 73 25 28 62 78 25  |.. T%<bx%:s%(bx%|
000050e0  2c 62 79 25 29 3d 73 25  28 62 78 25 2d 31 2c 62  |,by%)=s%(bx%-1,b|
000050f0  79 25 29 3a 62 78 25 2d  3d 31 3a ce 0d 02 34 10  |y%):bx%-=1:...4.|
00005100  20 20 54 25 3d b3 28 62  25 29 2d 31 0d 02 35 32  |  T%=.(b%)-1..52|
00005110  20 20 c8 95 20 54 25 3e  62 79 25 3a 73 25 28 62  |  .. T%>by%:s%(b|
00005120  78 25 2c 62 79 25 29 3d  73 25 28 62 78 25 2c 62  |x%,by%)=s%(bx%,b|
00005130  79 25 2b 31 29 3a 62 79  25 2b 3d 31 3a ce 0d 02  |y%+1):by%+=1:...|
00005140  36 32 20 20 c8 95 20 54  25 3c 62 79 25 3a 73 25  |62  .. T%<by%:s%|
00005150  28 62 78 25 2c 62 79 25  29 3d 73 25 28 62 78 25  |(bx%,by%)=s%(bx%|
00005160  2c 62 79 25 2d 31 29 3a  62 79 25 2d 3d 31 3a ce  |,by%-1):by%-=1:.|
00005170  0d 02 37 06 20 ed 0d 02  38 4a 20 73 25 28 62 78  |..7. ...8J s%(bx|
00005180  25 2c 62 79 25 29 3d 30  3a 64 65 6c 61 79 25 3d  |%,by%)=0:delay%=|
00005190  30 3a 74 69 6d 65 73 74  61 72 74 65 64 25 3d 6e  |0:timestarted%=n|
000051a0  6f 77 25 3a e7 20 28 74  66 6c 61 67 25 80 31 29  |ow%:. (tflag%.1)|
000051b0  3d 30 20 8c 20 64 65 6c  61 79 25 3d 6e 6f 77 25  |=0 . delay%=now%|
000051c0  0d 02 39 13 20 f2 74 69  6d 65 3a f2 70 65 72 63  |..9. .time:.perc|
000051d0  65 6e 74 0d 02 3a 0f 20  c8 99 48 6f 75 72 4f 66  |ent..:. ..HourOf|
000051e0  66 25 0d 02 3b 05 e1 0d  02 3c 04 0d 02 3d 10 dd  |f%..;....<...=..|
000051f0  f2 73 77 69 6e 75 6d 62  65 72 73 0d 02 3e 43 20  |.swinumbers..>C |
00005200  c8 99 22 4f 53 5f 53 57  49 4e 75 6d 62 65 72 46  |.."OS_SWINumberF|
00005210  72 6f 6d 53 74 72 69 6e  67 22 2c 2c 22 4f 53 5f  |romString",,"OS_|
00005220  53 57 49 4e 75 6d 62 65  72 46 72 6f 6d 53 74 72  |SWINumberFromStr|
00005230  69 6e 67 22 20 b8 20 53  74 72 69 6e 67 25 0d 02  |ing" . String%..|
00005240  3f 32 20 c8 99 20 53 74  72 69 6e 67 25 2c 2c 22  |?2 .. String%,,"|
00005250  57 69 6d 70 5f 47 65 74  49 63 6f 6e 53 74 61 74  |Wimp_GetIconStat|
00005260  65 22 20 b8 20 47 65 74  49 63 6f 6e 25 20 20 20  |e" . GetIcon%   |
00005270  0d 02 40 30 20 c8 99 20  53 74 72 69 6e 67 25 2c  |..@0 .. String%,|
00005280  2c 22 57 69 6d 70 5f 43  72 65 61 74 65 49 63 6f  |,"Wimp_CreateIco|
00005290  6e 22 20 b8 20 43 72 65  61 74 65 49 63 6f 6e 25  |n" . CreateIcon%|
000052a0  0d 02 41 30 20 c8 99 20  53 74 72 69 6e 67 25 2c  |..A0 .. String%,|
000052b0  2c 22 57 69 6d 70 5f 53  65 74 49 63 6f 6e 53 74  |,"Wimp_SetIconSt|
000052c0  61 74 65 22 20 b8 20 53  65 74 49 63 6f 6e 25 20  |ate" . SetIcon% |
000052d0  0d 02 42 35 20 c8 99 20  53 74 72 69 6e 67 25 2c  |..B5 .. String%,|
000052e0  2c 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  |,"Wimp_GetWindow|
000052f0  53 74 61 74 65 22 20 b8  20 47 65 74 57 69 6e 64  |State" . GetWind|
00005300  6f 77 25 20 20 0d 02 43  2d 20 c8 99 20 53 74 72  |ow%  ..C- .. Str|
00005310  69 6e 67 25 2c 2c 22 57  69 6d 70 5f 46 6f 72 63  |ing%,,"Wimp_Forc|
00005320  65 52 65 64 72 61 77 22  20 b8 20 52 65 64 72 61  |eRedraw" . Redra|
00005330  77 25 0d 02 44 34 20 c8  99 20 53 74 72 69 6e 67  |w%..D4 .. String|
00005340  25 2c 2c 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |%,,"Wimp_GetWind|
00005350  6f 77 49 6e 66 6f 22 20  b8 20 47 65 74 49 6e 66  |owInfo" . GetInf|
00005360  6f 25 20 20 20 20 0d 02  45 34 20 c8 99 20 53 74  |o%    ..E4 .. St|
00005370  72 69 6e 67 25 2c 2c 22  57 69 6d 70 5f 4c 6f 61  |ring%,,"Wimp_Loa|
00005380  64 54 65 6d 70 6c 61 74  65 22 20 b8 20 4c 6f 61  |dTemplate" . Loa|
00005390  64 54 65 6d 70 6c 61 74  65 25 0d 02 46 34 20 c8  |dTemplate%..F4 .|
000053a0  99 20 53 74 72 69 6e 67  25 2c 2c 22 57 69 6d 70  |. String%,,"Wimp|
000053b0  5f 43 72 65 61 74 65 57  69 6e 64 6f 77 22 20 b8  |_CreateWindow" .|
000053c0  20 43 72 65 61 74 65 57  69 6e 64 6f 77 25 0d 02  | CreateWindow%..|
000053d0  47 30 20 c8 99 20 53 74  72 69 6e 67 25 2c 2c 22  |G0 .. String%,,"|
000053e0  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 22  |Wimp_OpenWindow"|
000053f0  20 b8 20 4f 70 65 6e 57  69 6e 64 6f 77 25 0d 02  | . OpenWindow%..|
00005400  48 32 20 c8 99 20 53 74  72 69 6e 67 25 2c 2c 22  |H2 .. String%,,"|
00005410  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
00005420  22 20 b8 20 43 6c 6f 73  65 57 69 6e 64 6f 77 25  |" . CloseWindow%|
00005430  0d 02 49 30 20 c8 99 20  53 74 72 69 6e 67 25 2c  |..I0 .. String%,|
00005440  2c 22 57 69 6d 70 5f 43  72 65 61 74 65 4d 65 6e  |,"Wimp_CreateMen|
00005450  75 22 20 b8 20 43 72 65  61 74 65 4d 65 6e 75 25  |u" . CreateMenu%|
00005460  0d 02 4a 34 20 c8 99 20  53 74 72 69 6e 67 25 2c  |..J4 .. String%,|
00005470  2c 22 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  |,"Wimp_GetPointe|
00005480  72 49 6e 66 6f 22 20 b8  20 50 6f 69 6e 74 65 72  |rInfo" . Pointer|
00005490  25 20 20 20 0d 02 4b 2e  20 c8 99 20 53 74 72 69  |%   ..K. .. Stri|
000054a0  6e 67 25 2c 2c 22 57 69  6d 70 5f 53 65 74 43 6f  |ng%,,"Wimp_SetCo|
000054b0  6c 6f 75 72 22 20 b8 20  53 65 74 43 6f 6c 6f 75  |lour" . SetColou|
000054c0  72 25 0d 02 4c 2f 20 c8  99 20 53 74 72 69 6e 67  |r%..L/ .. String|
000054d0  25 2c 2c 22 57 69 6d 70  5f 52 65 70 6f 72 74 45  |%,,"Wimp_ReportE|
000054e0  72 72 6f 72 22 20 b8 20  52 65 70 6f 72 74 25 20  |rror" . Report% |
000054f0  20 0d 02 4d 2d 20 c8 99  20 53 74 72 69 6e 67 25  | ..M- .. String%|
00005500  2c 2c 22 57 69 6d 70 5f  50 6f 6c 6c 22 20 b8 20  |,,"Wimp_Poll" . |
00005510  50 6f 6c 6c 25 20 20 20  20 20 20 20 20 20 0d 02  |Poll%         ..|
00005520  4e 2e 20 c8 99 20 53 74  72 69 6e 67 25 2c 2c 22  |N. .. String%,,"|
00005530  57 69 6d 70 5f 50 6f 6c  6c 49 64 6c 65 22 20 b8  |Wimp_PollIdle" .|
00005540  20 50 6f 6c 6c 49 64 6c  65 25 20 20 0d 02 4f 2a  | PollIdle%  ..O*|
00005550  20 c8 99 20 53 74 72 69  6e 67 25 2c 2c 22 4f 53  | .. String%,,"OS|
00005560  5f 53 70 72 69 74 65 4f  70 22 20 b8 20 53 70 72  |_SpriteOp" . Spr|
00005570  69 74 65 4f 70 25 0d 02  50 32 20 c8 99 20 53 74  |iteOp%..P2 .. St|
00005580  72 69 6e 67 25 2c 2c 22  4f 53 5f 52 65 61 64 4d  |ring%,,"OS_ReadM|
00005590  6f 6e 6f 74 6f 6e 69 63  54 69 6d 65 22 20 b8 20  |onotonicTime" . |
000055a0  47 65 74 54 69 6d 65 25  0d 02 51 32 20 c8 99 20  |GetTime%..Q2 .. |
000055b0  53 74 72 69 6e 67 25 2c  2c 22 4f 53 5f 52 65 61  |String%,,"OS_Rea|
000055c0  64 4d 6f 64 65 56 61 72  69 61 62 6c 65 22 20 b8  |dModeVariable" .|
000055d0  20 52 65 61 64 4d 6f 64  65 25 0d 02 52 35 20 c8  | ReadMode%..R5 .|
000055e0  99 20 53 74 72 69 6e 67  25 2c 2c 22 48 6f 75 72  |. String%,,"Hour|
000055f0  67 6c 61 73 73 5f 4f 6e  22 20 b8 20 48 6f 75 72  |glass_On" . Hour|
00005600  4f 6e 25 20 20 20 20 20  20 20 20 20 20 20 20 0d  |On%            .|
00005610  02 53 2d 20 c8 99 20 53  74 72 69 6e 67 25 2c 2c  |.S- .. String%,,|
00005620  22 48 6f 75 72 67 6c 61  73 73 5f 53 6d 61 73 68  |"Hourglass_Smash|
00005630  22 20 b8 20 48 6f 75 72  4f 66 66 25 0d 02 54 05  |" . HourOff%..T.|
00005640  e1 0d 02 55 04 0d 02 56  11 dd f2 62 61 72 69 63  |...U...V...baric|
00005650  6f 6e 28 41 24 29 0d 02  57 4f 20 21 62 6c 6f 63  |on(A$)..WO !bloc|
00005660  6b 25 3d 2d 31 3a 62 6c  6f 63 6b 25 21 34 3d 30  |k%=-1:block%!4=0|
00005670  3a 62 6c 6f 63 6b 25 21  38 3d 30 3a 62 6c 6f 63  |:block%!8=0:bloc|
00005680  6b 25 21 31 32 3d 36 38  3a 62 6c 6f 63 6b 25 21  |k%!12=68:block%!|
00005690  31 36 3d 36 38 3a 62 6c  6f 63 6b 25 21 32 30 3d  |16=68:block%!20=|
000056a0  26 33 30 30 32 0d 02 58  32 20 24 28 62 6c 6f 63  |&3002..X2 $(bloc|
000056b0  6b 25 2b 32 34 29 3d 41  24 3a c8 99 20 43 72 65  |k%+24)=A$:.. Cre|
000056c0  61 74 65 49 63 6f 6e 25  2c 2c 62 6c 6f 63 6b 25  |ateIcon%,,block%|
000056d0  20 b8 20 62 61 72 25 0d  02 59 05 e1 0d 02 5a 04  | . bar%..Y....Z.|
000056e0  0d 02 5b 0d dd f2 77 69  6e 64 6f 77 73 0d 02 5c  |..[...windows..\|
000056f0  11 20 69 6e 64 73 69 7a  65 25 3d 39 31 30 0d 02  |. indsize%=910..|
00005700  5d 1d 20 de 20 6e 61 6d  65 25 20 31 31 2c 69 6e  |]. . name% 11,in|
00005710  64 25 20 69 6e 64 73 69  7a 65 25 0d 02 5e 1a 20  |d% indsize%..^. |
00005720  69 6e 64 74 6f 70 25 3d  69 6e 64 25 2b 69 6e 64  |indtop%=ind%+ind|
00005730  73 69 7a 65 25 0d 02 5f  31 20 c8 99 22 57 69 6d  |size%.._1 .."Wim|
00005740  70 5f 4f 70 65 6e 54 65  6d 70 6c 61 74 65 22 2c  |p_OpenTemplate",|
00005750  2c 22 3c 50 75 7a 24 44  69 72 3e 2e 54 65 6d 70  |,"<Puz$Dir>.Temp|
00005760  6c 61 74 65 73 22 0d 02  60 4c 20 24 6e 61 6d 65  |lates"..`L $name|
00005770  25 3d 22 49 6e 66 6f 22  3a c8 99 20 4c 6f 61 64  |%="Info":.. Load|
00005780  54 65 6d 70 6c 61 74 65  25 2c 2c 62 6c 6f 63 6b  |Template%,,block|
00005790  25 2c 69 6e 64 25 2c 69  6e 64 74 6f 70 25 2c 2d  |%,ind%,indtop%,-|
000057a0  31 2c 6e 61 6d 65 25 2c  30 20 b8 20 2c 2c 69 6e  |1,name%,0 . ,,in|
000057b0  64 25 0d 02 61 3e 20 62  6c 6f 63 6b 25 21 36 34  |d%..a> block%!64|
000057c0  3d 69 63 6f 6e 61 72 65  61 25 3a c8 99 20 43 72  |=iconarea%:.. Cr|
000057d0  65 61 74 65 57 69 6e 64  6f 77 25 2c 2c 62 6c 6f  |eateWindow%,,blo|
000057e0  63 6b 25 20 b8 20 69 6e  66 6f 25 20 20 20 20 20  |ck% . info%     |
000057f0  0d 02 62 4c 20 24 6e 61  6d 65 25 3d 22 4d 61 69  |..bL $name%="Mai|
00005800  6e 22 3a c8 99 20 4c 6f  61 64 54 65 6d 70 6c 61  |n":.. LoadTempla|
00005810  74 65 25 2c 2c 62 6c 6f  63 6b 25 2c 69 6e 64 25  |te%,,block%,ind%|
00005820  2c 69 6e 64 74 6f 70 25  2c 2d 31 2c 6e 61 6d 65  |,indtop%,-1,name|
00005830  25 2c 30 20 b8 20 2c 2c  69 6e 64 25 0d 02 63 52  |%,0 . ,,ind%..cR|
00005840  20 74 69 74 6c 65 25 3d  62 6c 6f 63 6b 25 21 37  | title%=block%!7|
00005850  32 3a e8 23 46 25 2c 21  62 6c 6f 63 6b 25 2c 62  |2:.#F%,!block%,b|
00005860  6c 6f 63 6b 25 21 34 2c  62 6c 6f 63 6b 25 21 38  |lock%!4,block%!8|
00005870  2c 62 6c 6f 63 6b 25 21  31 32 2c 62 6c 6f 63 6b  |,block%!12,block|
00005880  25 21 31 36 2c 62 6c 6f  63 6b 25 21 32 30 0d 02  |%!16,block%!20..|
00005890  64 25 20 c8 99 20 43 72  65 61 74 65 57 69 6e 64  |d% .. CreateWind|
000058a0  6f 77 25 2c 2c 62 6c 6f  63 6b 25 20 b8 20 6d 61  |ow%,,block% . ma|
000058b0  69 6e 25 0d 02 65 4c 20  24 6e 61 6d 65 25 3d 22  |in%..eL $name%="|
000058c0  56 69 65 77 22 3a c8 99  20 4c 6f 61 64 54 65 6d  |View":.. LoadTem|
000058d0  70 6c 61 74 65 25 2c 2c  62 6c 6f 63 6b 25 2c 69  |plate%,,block%,i|
000058e0  6e 64 25 2c 69 6e 64 74  6f 70 25 2c 2d 31 2c 6e  |nd%,indtop%,-1,n|
000058f0  61 6d 65 25 2c 30 20 b8  20 2c 2c 69 6e 64 25 0d  |ame%,0 . ,,ind%.|
00005900  02 66 4b 20 e8 23 46 25  2c 21 62 6c 6f 63 6b 25  |.fK .#F%,!block%|
00005910  2c 62 6c 6f 63 6b 25 21  34 2c 62 6c 6f 63 6b 25  |,block%!4,block%|
00005920  21 38 2c 62 6c 6f 63 6b  25 21 31 32 3a 24 28 62  |!8,block%!12:$(b|
00005930  6c 6f 63 6b 25 21 37 32  29 3d a4 6d 65 73 73 61  |lock%!72)=.messa|
00005940  67 65 28 22 4d 65 6e 34  22 29 0d 02 67 25 20 c8  |ge("Men4")..g% .|
00005950  99 20 43 72 65 61 74 65  57 69 6e 64 6f 77 25 2c  |. CreateWindow%,|
00005960  2c 62 6c 6f 63 6b 25 20  b8 20 76 69 65 77 25 0d  |,block% . view%.|
00005970  02 68 4c 20 24 6e 61 6d  65 25 3d 22 48 65 6c 70  |.hL $name%="Help|
00005980  22 3a c8 99 20 4c 6f 61  64 54 65 6d 70 6c 61 74  |":.. LoadTemplat|
00005990  65 25 2c 2c 62 6c 6f 63  6b 25 2c 69 6e 64 25 2c  |e%,,block%,ind%,|
000059a0  69 6e 64 74 6f 70 25 2c  2d 31 2c 6e 61 6d 65 25  |indtop%,-1,name%|
000059b0  2c 30 20 b8 20 2c 2c 69  6e 64 25 0d 02 69 39 20  |,0 . ,,ind%..i9 |
000059c0  24 28 62 6c 6f 63 6b 25  21 37 32 29 3d a4 6d 65  |$(block%!72)=.me|
000059d0  73 73 61 67 65 28 22 4d  65 6e 36 22 29 3a e8 23  |ssage("Men6"):.#|
000059e0  46 25 2c 21 62 6c 6f 63  6b 25 2c 62 6c 6f 63 6b  |F%,!block%,block|
000059f0  25 21 31 32 0d 02 6a 28  20 c8 99 20 43 72 65 61  |%!12..j( .. Crea|
00005a00  74 65 57 69 6e 64 6f 77  25 2c 2c 62 6c 6f 63 6b  |teWindow%,,block|
00005a10  25 20 b8 20 68 65 6c 70  77 25 20 20 0d 02 6b 4d  |% . helpw%  ..kM|
00005a20  20 24 6e 61 6d 65 25 3d  22 57 69 64 74 68 22 3a  | $name%="Width":|
00005a30  c8 99 20 4c 6f 61 64 54  65 6d 70 6c 61 74 65 25  |.. LoadTemplate%|
00005a40  2c 2c 62 6c 6f 63 6b 25  2c 69 6e 64 25 2c 69 6e  |,,block%,ind%,in|
00005a50  64 74 6f 70 25 2c 2d 31  2c 6e 61 6d 65 25 2c 30  |dtop%,-1,name%,0|
00005a60  20 b8 20 2c 2c 69 6e 64  25 0d 02 6c 42 20 24 28  | . ,,ind%..lB $(|
00005a70  62 6c 6f 63 6b 25 21 37  32 29 3d a4 6d 65 73 73  |block%!72)=.mess|
00005a80  61 67 65 28 22 4d 65 6e  39 22 29 3a c8 99 20 43  |age("Men9"):.. C|
00005a90  72 65 61 74 65 57 69 6e  64 6f 77 25 2c 2c 62 6c  |reateWindow%,,bl|
00005aa0  6f 63 6b 25 20 b8 20 77  69 64 25 0d 02 6d 4d 20  |ock% . wid%..mM |
00005ab0  24 6e 61 6d 65 25 3d 22  54 69 6d 65 72 22 3a c8  |$name%="Timer":.|
00005ac0  99 20 4c 6f 61 64 54 65  6d 70 6c 61 74 65 25 2c  |. LoadTemplate%,|
00005ad0  2c 62 6c 6f 63 6b 25 2c  69 6e 64 25 2c 69 6e 64  |,block%,ind%,ind|
00005ae0  74 6f 70 25 2c 2d 31 2c  6e 61 6d 65 25 2c 30 20  |top%,-1,name%,0 |
00005af0  b8 20 2c 2c 69 6e 64 25  0d 02 6e 4b 20 e8 23 46  |. ,,ind%..nK .#F|
00005b00  25 2c 21 62 6c 6f 63 6b  25 2c 62 6c 6f 63 6b 25  |%,!block%,block%|
00005b10  21 34 2c 62 6c 6f 63 6b  25 21 38 2c 62 6c 6f 63  |!4,block%!8,bloc|
00005b20  6b 25 21 31 32 3a 24 28  62 6c 6f 63 6b 25 21 37  |k%!12:$(block%!7|
00005b30  32 29 3d a4 6d 65 73 73  61 67 65 28 22 4d 65 6e  |2)=.message("Men|
00005b40  35 22 29 0d 02 6f 42 20  c8 99 20 43 72 65 61 74  |5")..oB .. Creat|
00005b50  65 57 69 6e 64 6f 77 25  2c 2c 62 6c 6f 63 6b 25  |eWindow%,,block%|
00005b60  20 b8 20 74 69 6d 65 77  25 20 20 20 20 20 20 20  | . timew%       |
00005b70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005b80  20 20 20 20 20 0d 02 70  4b 20 24 6e 61 6d 65 25  |     ..pK $name%|
00005b90  3d 22 57 69 6e 22 3a c8  99 20 4c 6f 61 64 54 65  |="Win":.. LoadTe|
00005ba0  6d 70 6c 61 74 65 25 2c  2c 62 6c 6f 63 6b 25 2c  |mplate%,,block%,|
00005bb0  69 6e 64 25 2c 69 6e 64  74 6f 70 25 2c 2d 31 2c  |ind%,indtop%,-1,|
00005bc0  6e 61 6d 65 25 2c 30 20  b8 20 2c 2c 69 6e 64 25  |name%,0 . ,,ind%|
00005bd0  0d 02 71 42 20 c8 99 20  43 72 65 61 74 65 57 69  |..qB .. CreateWi|
00005be0  6e 64 6f 77 25 2c 2c 62  6c 6f 63 6b 25 20 b8 20  |ndow%,,block% . |
00005bf0  77 69 6e 25 20 20 20 20  20 20 20 20 20 20 20 20  |win%            |
00005c00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005c10  20 20 0d 02 72 4e 20 24  6e 61 6d 65 25 3d 22 53  |  ..rN $name%="S|
00005c20  63 6f 72 65 73 22 3a c8  99 20 4c 6f 61 64 54 65  |cores":.. LoadTe|
00005c30  6d 70 6c 61 74 65 25 2c  2c 62 6c 6f 63 6b 25 2c  |mplate%,,block%,|
00005c40  69 6e 64 25 2c 69 6e 64  74 6f 70 25 2c 2d 31 2c  |ind%,indtop%,-1,|
00005c50  6e 61 6d 65 25 2c 30 20  b8 20 2c 2c 69 6e 64 25  |name%,0 . ,,ind%|
00005c60  0d 02 73 26 20 c8 99 20  43 72 65 61 74 65 57 69  |..s& .. CreateWi|
00005c70  6e 64 6f 77 25 2c 2c 62  6c 6f 63 6b 25 20 b8 20  |ndow%,,block% . |
00005c80  68 69 67 68 77 25 0d 02  74 41 20 c8 99 22 57 69  |highw%..tA .."Wi|
00005c90  6d 70 5f 43 6c 6f 73 65  54 65 6d 70 6c 61 74 65  |mp_CloseTemplate|
00005ca0  22 3a f2 69 63 6f 6e 74  65 78 74 28 69 6e 66 6f  |":.icontext(info|
00005cb0  25 2c 31 2c a4 6d 65 73  73 61 67 65 28 22 54 61  |%,1,.message("Ta|
00005cc0  73 6b 49 44 22 29 29 0d  02 75 25 20 f2 69 63 6f  |skID"))..u% .ico|
00005cd0  6e 74 65 78 74 28 77 69  64 25 2c 33 2c a4 6d 65  |ntext(wid%,3,.me|
00005ce0  73 73 61 67 65 28 22 4f  4b 22 29 29 0d 02 76 52  |ssage("OK"))..vR|
00005cf0  20 f2 69 63 6f 6e 74 65  78 74 28 69 6e 66 6f 25  | .icontext(info%|
00005d00  2c 32 2c a4 6d 65 73 73  61 67 65 28 22 50 75 72  |,2,.message("Pur|
00005d10  70 6f 73 65 22 29 29 3a  f2 69 63 6f 6e 74 65 78  |pose")):.icontex|
00005d20  74 28 69 6e 66 6f 25 2c  34 2c a4 6d 65 73 73 61  |t(info%,4,.messa|
00005d30  67 65 28 22 56 65 72 73  69 6f 6e 22 29 29 0d 02  |ge("Version"))..|
00005d40  77 05 e1 0d 02 78 04 0d  02 79 11 dd f2 69 63 6f  |w....x...y...ico|
00005d50  6e 73 70 72 69 74 65 73  0d 02 7a 35 20 46 25 3d  |nsprites..z5 F%=|
00005d60  8e 22 3c 50 75 7a 24 44  69 72 3e 2e 53 70 72 69  |."<Puz$Dir>.Spri|
00005d70  74 65 73 22 3a 41 25 3d  a2 23 46 25 2b 38 3a de  |tes":A%=.#F%+8:.|
00005d80  20 69 63 6f 6e 61 72 65  61 25 20 41 25 0d 02 7b  | iconarea% A%..{|
00005d90  26 20 21 69 63 6f 6e 61  72 65 61 25 3d 41 25 3a  |& !iconarea%=A%:|
00005da0  69 63 6f 6e 61 72 65 61  25 21 38 3d 31 36 3a d9  |iconarea%!8=16:.|
00005db0  23 46 25 0d 02 7c 44 20  24 62 6c 6f 63 6b 25 3d  |#F%..|D $block%=|
00005dc0  22 3c 50 75 7a 24 44 69  72 3e 2e 53 70 72 69 74  |"<Puz$Dir>.Sprit|
00005dd0  65 73 22 3a c8 99 53 70  72 69 74 65 4f 70 25 2c  |es":..SpriteOp%,|
00005de0  31 30 2b 32 35 36 2c 69  63 6f 6e 61 72 65 61 25  |10+256,iconarea%|
00005df0  2c 62 6c 6f 63 6b 25 0d  02 7d 05 e1 0d 02 7e 04  |,block%..}....~.|
00005e00  0d 02 7f 21 dd f2 6c 6f  61 64 73 70 72 69 74 65  |...!..loadsprite|
00005e10  28 70 61 74 68 24 29 3a  c8 99 48 6f 75 72 4f 6e  |(path$):..HourOn|
00005e20  25 0d 02 80 2e 20 41 24  3d 70 61 74 68 24 3a c8  |%.... A$=path$:.|
00005e30  95 20 a7 41 24 2c 22 2e  22 29 3a 41 24 3d c1 41  |. .A$,"."):A$=.A|
00005e40  24 2c a7 41 24 2c 22 2e  22 29 2b 31 29 3a ce 0d  |$,.A$,".")+1):..|
00005e50  02 81 28 20 24 74 69 74  6c 65 25 3d a4 6d 65 73  |..( $title%=.mes|
00005e60  73 61 67 65 28 22 54 61  73 6b 49 44 22 29 2b 22  |sage("TaskID")+"|
00005e70  20 2d 20 22 2b 41 24 0d  02 82 38 20 46 25 3d 8e  | - "+A$...8 F%=.|
00005e80  28 70 61 74 68 24 29 3a  41 25 3d a2 23 46 25 2b  |(path$):A%=.#F%+|
00005e90  31 36 3a d9 23 46 25 3a  42 25 3d a4 6d 61 6b 65  |16:.#F%:B%=.make|
00005ea0  6d 65 6d 28 41 25 2b 31  36 2c 41 25 2f 32 29 0d  |mem(A%+16,A%/2).|
00005eb0  02 83 0d 20 e7 20 ac 20  42 25 20 8c 0d 02 84 21  |... . . B% ....!|
00005ec0  20 20 c8 99 53 70 72 69  74 65 4f 70 25 2c 26 31  |  ..SpriteOp%,&1|
00005ed0  30 41 2c 62 69 67 25 2c  70 61 74 68 24 0d 02 85  |0A,big%,path$...|
00005ee0  42 20 20 c8 99 53 70 72  69 74 65 4f 70 25 2c 34  |B  ..SpriteOp%,4|
00005ef0  30 2b 35 31 32 2c 62 69  67 25 2c 62 69 67 25 2b  |0+512,big%,big%+|
00005f00  31 36 20 b8 20 2c 2c 2c  73 77 69 64 74 68 25 2c  |16 . ,,,swidth%,|
00005f10  73 68 65 69 67 68 74 25  2c 2c 6d 6f 64 65 25 0d  |sheight%,,mode%.|
00005f20  02 86 46 20 20 c8 99 53  70 72 69 74 65 4f 70 25  |..F  ..SpriteOp%|
00005f30  2c 31 35 2b 35 31 32 2c  73 6d 61 6c 6c 25 2c 73  |,15+512,small%,s|
00005f40  6d 61 6c 6c 25 2b 31 36  2c 30 2c 73 77 69 64 74  |mall%+16,0,swidt|
00005f50  68 25 2f 39 2c 73 68 65  69 67 68 74 25 2f 39 2c  |h%/9,sheight%/9,|
00005f60  6d 6f 64 65 25 0d 02 87  2b 20 20 42 25 3d a4 6d  |mode%...+  B%=.m|
00005f70  61 6b 65 6d 65 6d 28 41  25 2b 31 36 2c 21 28 73  |akemem(A%+16,!(s|
00005f80  6d 61 6c 6c 25 2b 31 36  29 2a 39 39 2b 31 36 29  |mall%+16)*99+16)|
00005f90  0d 02 88 06 20 cd 0d 02  89 0b 20 e7 20 42 25 20  |.... ..... . B% |
00005fa0  8c 0d 02 8a 54 20 20 f2  72 65 70 6f 72 74 28 a4  |....T  .report(.|
00005fb0  6d 65 73 73 61 67 65 28  22 4e 6f 4d 65 6d 22 29  |message("NoMem")|
00005fc0  2c 30 29 3a 64 65 66 61  75 6c 74 24 3d 22 22 3a  |,0):default$="":|
00005fd0  62 25 3d 33 3a 42 25 3d  a4 6d 61 6b 65 6d 65 6d  |b%=3:B%=.makemem|
00005fe0  28 6d 65 6d 25 28 30 2c  30 29 2c 6d 65 6d 25 28  |(mem%(0,0),mem%(|
00005ff0  32 2c 30 29 29 0d 02 8b  06 20 cc 0d 02 8c 33 20  |2,0)).... ....3 |
00006000  20 c8 99 53 70 72 69 74  65 4f 70 25 2c 34 30 2b  | ..SpriteOp%,40+|
00006010  35 31 32 2c 62 69 67 25  2c 62 69 67 25 2b 31 36  |512,big%,big%+16|
00006020  20 b8 20 2c 2c 2c 2c 2c  2c 6d 6f 64 65 25 0d 02  | . ,,,,,,mode%..|
00006030  8d 50 20 20 c8 99 52 65  61 64 4d 6f 64 65 25 2c  |.P  ..ReadMode%,|
00006040  6d 6f 64 65 25 2c 33 b8  2c 2c 41 25 3a c8 99 52  |mode%,3.,,A%:..R|
00006050  65 61 64 4d 6f 64 65 25  2c 6d 6f 64 65 25 2c 34  |eadMode%,mode%,4|
00006060  b8 2c 2c 42 25 3a c8 99  52 65 61 64 4d 6f 64 65  |.,,B%:..ReadMode|
00006070  25 2c 6d 6f 64 65 25 2c  35 b8 2c 2c 43 25 0d 02  |%,mode%,5.,,C%..|
00006080  8e 47 20 20 c8 99 52 65  61 64 4d 6f 64 65 25 2c  |.G  ..ReadMode%,|
00006090  2d 31 2c 33 b8 2c 2c 44  25 3a c8 99 52 65 61 64  |-1,3.,,D%:..Read|
000060a0  4d 6f 64 65 25 2c 2d 31  2c 34 b8 2c 2c 45 25 3a  |Mode%,-1,4.,,E%:|
000060b0  c8 99 52 65 61 64 4d 6f  64 65 25 2c 2d 31 2c 35  |..ReadMode%,-1,5|
000060c0  b8 2c 2c 46 25 0d 02 8f  31 20 20 77 69 64 74 68  |.,,F%...1  width|
000060d0  25 3d 73 77 69 64 74 68  25 2a 31 3c 3c 42 25 3a  |%=swidth%*1<<B%:|
000060e0  68 65 69 67 68 74 25 3d  73 68 65 69 67 68 74 25  |height%=sheight%|
000060f0  2a 31 3c 3c 43 25 0d 02  90 22 20 20 e7 20 77 69  |*1<<C%..."  . wi|
00006100  64 74 68 25 3c 31 32 30  20 84 20 68 65 69 67 68  |dth%<120 . heigh|
00006110  74 25 3c 31 31 36 20 8c  0d 02 91 23 20 20 20 f2  |t%<116 ....#   .|
00006120  72 65 70 6f 72 74 28 a4  6d 65 73 73 61 67 65 28  |report(.message(|
00006130  22 53 6d 61 6c 6c 22 29  2c 30 29 0d 02 92 58 20  |"Small"),0)...X |
00006140  20 20 64 65 66 61 75 6c  74 24 3d 22 22 3a 62 69  |  default$="":bi|
00006150  67 25 21 38 3d 31 36 3a  c8 99 53 70 72 69 74 65  |g%!8=16:..Sprite|
00006160  4f 70 25 2c 39 2b 32 35  36 2c 62 69 67 25 3a 73  |Op%,9+256,big%:s|
00006170  6d 61 6c 6c 25 21 38 3d  31 36 3a c8 99 53 70 72  |mall%!8=16:..Spr|
00006180  69 74 65 4f 70 25 2c 39  2b 32 35 36 2c 73 6d 61  |iteOp%,9+256,sma|
00006190  6c 6c 25 0d 02 93 07 20  20 cc 0d 02 94 10 20 20  |ll%....  .....  |
000061a0  20 e7 20 41 25 3e 44 25  20 8c 0d 02 95 1b 20 20  | . A%>D% .....  |
000061b0  20 20 41 24 3d a4 6d 65  73 73 61 67 65 28 22 4d  |  A$=.message("M|
000061c0  6f 64 65 22 29 0d 02 96  35 20 20 20 20 41 24 3d  |ode")...5    A$=|
000061d0  c0 41 24 2c a7 41 24 2c  22 25 30 22 29 2d 31 29  |.A$,.A$,"%0")-1)|
000061e0  2b c3 28 6d 6f 64 65 25  29 2b c1 41 24 2c a7 41  |+.(mode%)+.A$,.A|
000061f0  24 2c 22 25 30 22 29 2b  32 29 0d 02 97 15 20 20  |$,"%0")+2)....  |
00006200  20 20 f2 72 65 70 6f 72  74 28 41 24 2c 30 29 0d  |  .report(A$,0).|
00006210  02 98 08 20 20 20 cd 0d  02 99 07 20 20 cd 0d 02  |...   .....  ...|
00006220  9a 06 20 cd 0d 02 9b 10  e1 3a c8 99 48 6f 75 72  |.. ......:..Hour|
00006230  4f 66 66 25 0d 02 9c 04  0d 02 9d 25 dd a4 6d 61  |Off%.......%..ma|
00006240  6b 65 6d 65 6d 28 62 25  2c 73 25 29 3a ea 20 66  |kemem(b%,s%):. f|
00006250  6c 61 67 25 2c 53 25 2c  46 25 2c 54 25 0d 02 9e  |lag%,S%,F%,T%...|
00006260  2e 20 e7 20 62 25 3c 6d  65 6d 25 28 30 2c 30 29  |. . b%<mem%(0,0)|
00006270  20 8c 20 62 25 3d 6d 65  6d 25 28 30 2c 30 29 20  | . b%=mem%(0,0) |
00006280  20 20 20 20 20 20 20 20  20 20 20 0d 02 9f 2b 20  |           ...+ |
00006290  e7 20 73 25 3c 6d 65 6d  25 28 32 2c 30 29 20 8c  |. s%<mem%(2,0) .|
000062a0  20 73 25 3d 6d 65 6d 25  28 32 2c 30 29 2b 31 30  | s%=mem%(2,0)+10|
000062b0  30 2a 31 30 32 34 0d 02  a0 33 20 54 25 3d 62 25  |0*1024...3 T%=b%|
000062c0  2b 73 25 2b 31 30 32 34  3a c8 99 22 57 69 6d 70  |+s%+1024:.."Wimp|
000062d0  5f 53 6c 6f 74 53 69 7a  65 22 2c 2d 31 2c 2d 31  |_SlotSize",-1,-1|
000062e0  20 b8 20 53 25 2c 2c 46  25 0d 02 a1 29 20 e7 20  | . S%,,F%...) . |
000062f0  53 25 2d 93 2b 26 38 30  30 34 3c 54 25 20 80 20  |S%-.+&8004<T% . |
00006300  46 25 3c 54 25 2d 53 25  2b 93 2d 26 38 30 30 34  |F%<T%-S%+.-&8004|
00006310  20 8c 0d 02 a2 39 20 20  66 6c 61 67 25 3d 2d 31  | ....9  flag%=-1|
00006320  3a 62 69 67 25 3d 30 3a  73 6d 61 6c 6c 25 3d 30  |:big%=0:small%=0|
00006330  3a e7 20 62 25 3d 6d 65  6d 25 28 30 2c 30 29 20  |:. b%=mem%(0,0) |
00006340  8c 20 f2 6e 6f 6d 65 6d  6f 72 79 0d 02 a3 06 20  |. .nomemory.... |
00006350  cc 0d 02 a4 2d 20 20 c8  99 22 57 69 6d 70 5f 53  |....-  .."Wimp_S|
00006360  6c 6f 74 53 69 7a 65 22  2c 93 2d 26 38 30 30 34  |lotSize",.-&8004|
00006370  2b 54 25 2c 2d 31 3a 66  6c 61 67 25 3d 30 0d 02  |+T%,-1:flag%=0..|
00006380  a5 4f 20 20 e7 20 62 69  67 25 3d 30 20 84 20 21  |.O  . big%=0 . !|
00006390  62 69 67 25 3c 3e 62 25  20 8c 20 62 69 67 25 3d  |big%<>b% . big%=|
000063a0  93 2b 34 3a 21 62 69 67  25 3d 62 25 3a 62 69 67  |.+4:!big%=b%:big|
000063b0  25 21 38 3d 31 36 3a c8  99 53 70 72 69 74 65 4f  |%!8=16:..SpriteO|
000063c0  70 25 2c 39 2b 32 35 36  2c 62 69 67 25 0d 02 a6  |p%,9+256,big%...|
000063d0  49 20 20 73 6d 61 6c 6c  25 3d 62 69 67 25 2b 21  |I  small%=big%+!|
000063e0  62 69 67 25 2b 34 3a 21  73 6d 61 6c 6c 25 3d 73  |big%+4:!small%=s|
000063f0  25 3a 73 6d 61 6c 6c 25  21 38 3d 31 36 3a c8 99  |%:small%!8=16:..|
00006400  53 70 72 69 74 65 4f 70  25 2c 39 2b 32 35 36 2c  |SpriteOp%,9+256,|
00006410  73 6d 61 6c 6c 25 0d 02  a7 24 20 cd 20 20 20 20  |small%...$ .    |
00006420  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006430  20 20 20 20 20 20 20 20  20 20 0d 02 a8 0a 3d 66  |          ....=f|
00006440  6c 61 67 25 0d 02 a9 04  0d 02 aa 15 dd f2 73 70  |lag%..........sp|
00006450  6c 69 74 3a c8 99 48 6f  75 72 4f 6e 25 0d 02 ab  |lit:..HourOn%...|
00006460  20 20 e7 20 64 65 66 61  75 6c 74 24 3d 22 22 20  |  . default$="" |
00006470  8c 20 f2 6d 61 6b 65 73  70 72 69 74 65 0d 02 ac  |. .makesprite...|
00006480  1c 20 f2 73 70 6c 69 74  73 70 72 69 74 65 3a c8  |. .splitsprite:.|
00006490  99 48 6f 75 72 4f 66 66  25 0d 02 ad 05 e1 0d 02  |.HourOff%.......|
000064a0  ae 04 0d 02 af 30 dd f2  6d 61 6b 65 73 70 72 69  |.....0..makespri|
000064b0  74 65 3a 24 73 70 72 69  74 65 25 3d 22 73 70 72  |te:$sprite%="spr|
000064c0  69 74 65 22 3a 24 74 69  74 6c 65 25 3d 61 70 70  |ite":$title%=app|
000064d0  24 20 0d 02 b0 28 20 21  62 6c 6f 63 6b 25 3d 6d  |$ ...( !block%=m|
000064e0  61 69 6e 25 3a c8 99 20  47 65 74 57 69 6e 64 6f  |ain%:.. GetWindo|
000064f0  77 25 2c 2c 62 6c 6f 63  6b 25 0d 02 b1 3b 20 c8  |w%,,block%...; .|
00006500  99 52 65 64 72 61 77 25  2c 2d 31 2c 62 6c 6f 63  |.Redraw%,-1,bloc|
00006510  6b 25 21 34 2c 62 6c 6f  63 6b 25 21 31 36 2c 62  |k%!4,block%!16,b|
00006520  6c 6f 63 6b 25 21 31 32  2c 62 6c 6f 63 6b 25 21  |lock%!12,block%!|
00006530  31 36 2b 34 34 0d 02 b2  46 20 c8 99 52 65 61 64  |16+44...F ..Read|
00006540  4d 6f 64 65 25 2c 2d 31  2c 33 20 b8 20 2c 2c 6e  |Mode%,-1,3 . ,,n|
00006550  63 6f 6c 6f 75 72 25 3a  e7 20 6e 63 6f 6c 6f 75  |colour%:. ncolou|
00006560  72 25 3c 36 33 20 8c 20  6d 6f 64 65 25 3d 31 32  |r%<63 . mode%=12|
00006570  20 8b 20 6d 6f 64 65 25  3d 31 35 0d 02 b3 61 20  | . mode%=15...a |
00006580  e7 20 6d 6f 64 65 25 3d  31 32 20 8c 20 41 25 3d  |. mode%=12 . A%=|
00006590  a4 6d 61 6b 65 6d 65 6d  28 6d 65 6d 25 28 30 2c  |.makemem(mem%(0,|
000065a0  62 25 2d 33 29 2c 6d 65  6d 25 28 32 2c 62 25 2d  |b%-3),mem%(2,b%-|
000065b0  33 29 29 20 8b 20 41 25  3d a4 6d 61 6b 65 6d 65  |3)) . A%=.makeme|
000065c0  6d 28 6d 65 6d 25 28 31  2c 62 25 2d 33 29 2c 6d  |m(mem%(1,b%-3),m|
000065d0  65 6d 25 28 33 2c 62 25  2d 33 29 29 0d 02 b4 4e  |em%(3,b%-3))...N|
000065e0  20 e7 20 41 25 20 8c 20  f2 72 65 70 6f 72 74 28  | . A% . .report(|
000065f0  a4 6d 65 73 73 61 67 65  28 22 4e 6f 4d 65 6d 22  |.message("NoMem"|
00006600  29 2c 30 29 3a 62 25 3d  33 3a 41 25 3d a4 6d 61  |),0):b%=3:A%=.ma|
00006610  6b 65 6d 65 6d 28 6d 65  6d 25 28 30 2c 30 29 2c  |kemem(mem%(0,0),|
00006620  6d 65 6d 25 28 32 2c 30  29 29 0d 02 b5 3c 20 c8  |mem%(2,0))...< .|
00006630  99 53 70 72 69 74 65 4f  70 25 2c 31 35 2b 32 35  |.SpriteOp%,15+25|
00006640  36 2c 62 69 67 25 2c 73  70 72 69 74 65 25 2c 30  |6,big%,sprite%,0|
00006650  2c 33 37 2a 62 25 2b 31  2c 31 39 2a 62 25 2b 31  |,37*b%+1,19*b%+1|
00006660  2c 6d 6f 64 65 25 0d 02  b6 26 20 c8 99 53 70 72  |,mode%...& ..Spr|
00006670  69 74 65 4f 70 25 2c 36  30 2b 32 35 36 2c 62 69  |iteOp%,60+256,bi|
00006680  67 25 2c 73 70 72 69 74  65 25 2c 30 0d 02 b7 24  |g%,sprite%,0...$|
00006690  20 c8 99 22 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  | .."ColourTrans_|
000066a0  49 6e 76 61 6c 69 64 61  74 65 43 61 63 68 65 22  |InvalidateCache"|
000066b0  0d 02 b8 0c 20 ef 35 3a  41 25 3d 30 0d 02 b9 17  |.... .5:A%=0....|
000066c0  20 e3 20 59 25 3d 62 25  2d 31 20 b8 20 30 20 88  | . Y%=b%-1 . 0 .|
000066d0  20 2d 31 0d 02 ba 13 20  20 e3 20 58 25 3d 30 20  | -1....  . X%=0 |
000066e0  b8 20 62 25 2d 31 0d 02  bb 18 20 20 20 41 25 2b  |. b%-1....   A%+|
000066f0  3d 31 3a 42 25 3d a9 28  c3 41 25 29 2a 38 0d 02  |=1:B%=.(.A%)*8..|
00006700  bc 2a 20 20 20 c8 91 20  58 25 2a 37 34 2c 59 25  |.*   .. X%*74,Y%|
00006710  2a 37 36 20 20 20 20 20  20 20 20 20 20 20 20 20  |*76             |
00006720  20 20 20 20 20 20 20 20  0d 02 bd 24 20 20 20 c8  |        ...$   .|
00006730  99 53 65 74 43 6f 6c 6f  75 72 25 2c 37 3a c8 93  |.SetColour%,7:..|
00006740  c8 90 20 30 2c 30 2c 37  34 2c 37 36 0d 02 be 13  |.. 0,0,74,76....|
00006750  20 20 20 e7 20 41 25 3c  62 25 2a 62 25 20 8c 0d  |   . A%<b%*b% ..|
00006760  02 bf 25 20 20 20 20 c8  99 53 65 74 43 6f 6c 6f  |..%    ..SetColo|
00006770  75 72 25 2c 33 3a c8 93  c8 90 20 32 2c 34 2c 37  |ur%,3:.... 2,4,7|
00006780  31 2c 37 31 0d 02 c0 33  20 20 20 20 c8 99 53 65  |1,71...3    ..Se|
00006790  74 43 6f 6c 6f 75 72 25  2c 31 3a c8 93 c8 90 20  |tColour%,1:.... |
000067a0  32 2c 34 2c 34 2c 37 31  3a c8 93 c8 90 20 32 2c  |2,4,4,71:.... 2,|
000067b0  37 31 2c 37 31 2c 34 0d  02 c1 33 20 20 20 20 c8  |71,71,4...3    .|
000067c0  99 53 65 74 43 6f 6c 6f  75 72 25 2c 34 3a c8 93  |.SetColour%,4:..|
000067d0  c8 90 20 38 2c 34 2c 36  33 2c 34 3a c8 93 c8 90  |.. 8,4,63,4:....|
000067e0  20 36 39 2c 34 2c 34 2c  36 33 0d 02 c2 2c 20 20  | 69,4,4,63...,  |
000067f0  20 20 ec 34 2c 34 3a df  20 36 2c 34 3a df 36 2c  |  .4,4:. 6,4:.6,|
00006800  38 3a ec 37 31 2c 37 31  3a df 42 59 32 2c 30 3a  |8:.71,71:.BY2,0:|
00006810  df 42 59 30 2c 34 0d 02  c3 27 20 20 20 20 c8 99  |.BY0,4...'    ..|
00006820  53 65 74 43 6f 6c 6f 75  72 25 2c 31 31 3a ec 20  |SetColour%,11:. |
00006830  33 38 2d 42 25 2c 34 38  3a f1 3b 41 25 0d 02 c4  |38-B%,48:.;A%...|
00006840  08 20 20 20 cc 0d 02 c5  08 20 20 20 cd 0d 02 c6  |.   .....   ....|
00006850  07 20 20 ed 0d 02 c7 06  20 ed 0d 02 c8 1e 20 c8  |.  ..... ..... .|
00006860  99 53 70 72 69 74 65 4f  70 25 2c 36 30 2c 30 2c  |.SpriteOp%,60,0,|
00006870  30 3a c8 91 20 30 2c 30  0d 02 c9 24 20 c8 99 22  |0:.. 0,0...$ .."|
00006880  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 49 6e 76 61  |ColourTrans_Inva|
00006890  6c 69 64 61 74 65 43 61  63 68 65 22 0d 02 ca 05  |lidateCache"....|
000068a0  e1 0d 02 cb 04 0d 02 cc  32 dc 20 38 31 39 32 2c  |........2. 8192,|
000068b0  38 31 39 32 2c 39 32 37  36 2c 31 32 39 34 30 2c  |8192,9276,12940,|
000068c0  31 37 37 34 38 2c 32 33  33 31 36 2c 32 38 39 35  |17748,23316,2895|
000068d0  36 2c 33 35 39 36 38 0d  02 cd 34 dc 20 38 31 39  |6,35968...4. 819|
000068e0  32 2c 31 31 37 36 34 2c  31 38 31 30 38 2c 32 35  |2,11764,18108,25|
000068f0  38 32 30 2c 33 34 39 30  30 2c 34 35 39 36 30 2c  |820,34900,45960,|
00006900  35 37 38 35 32 2c 37 31  31 31 32 0d 02 ce 33 dc  |57852,71112...3.|
00006910  20 38 31 39 32 2c 38 31  39 32 2c 31 30 31 39 32  | 8192,8192,10192|
00006920  2c 31 34 38 35 36 2c 32  30 33 36 38 2c 32 36 37  |,14856,20368,267|
00006930  32 38 2c 33 33 39 33 36  2c 34 31 39 39 32 0d 02  |28,33936,41992..|
00006940  cf 34 dc 20 38 31 39 32  2c 31 32 30 37 36 2c 31  |.4. 8192,12076,1|
00006950  39 33 31 32 2c 32 38 31  35 36 2c 33 38 36 30 38  |9312,28156,38608|
00006960  2c 35 30 36 36 38 2c 36  34 33 33 36 2c 37 39 36  |,50668,64336,796|
00006970  31 32 0d 02 d0 04 0d 02  d1 11 dd f2 73 70 6c 69  |12..........spli|
00006980  74 73 70 72 69 74 65 0d  02 d2 1d 20 c8 99 53 70  |tsprite.... ..Sp|
00006990  72 69 74 65 4f 70 25 2c  39 2b 35 31 32 2c 73 6d  |riteOp%,9+512,sm|
000069a0  61 6c 6c 25 0d 02 d3 3a  20 c8 99 22 57 69 6d 70  |all%...: .."Wimp|
000069b0  5f 52 65 61 64 50 69 78  54 72 61 6e 73 22 2c 35  |_ReadPixTrans",5|
000069c0  31 32 2c 62 69 67 25 2c  62 69 67 25 2b 31 36 2c  |12,big%,big%+16,|
000069d0  2c 2c 2c 73 63 61 6c 65  25 2c 70 69 78 25 0d 02  |,,,scale%,pix%..|
000069e0  d4 41 20 c8 99 53 70 72  69 74 65 4f 70 25 2c 34  |.A ..SpriteOp%,4|
000069f0  30 2b 35 31 32 2c 62 69  67 25 2c 62 69 67 25 2b  |0+512,big%,big%+|
00006a00  31 36 20 b8 20 2c 2c 2c  73 77 69 64 74 68 25 2c  |16 . ,,,swidth%,|
00006a10  73 68 65 69 67 68 74 25  2c 2c 6d 6f 64 65 25 0d  |sheight%,,mode%.|
00006a20  02 d5 40 20 c8 99 52 65  61 64 4d 6f 64 65 25 2c  |..@ ..ReadMode%,|
00006a30  6d 6f 64 65 25 2c 33 20  b8 20 2c 2c 6e 63 6f 6c  |mode%,3 . ,,ncol|
00006a40  6f 75 72 25 20 20 20 20  20 20 20 20 20 20 20 20  |our%            |
00006a50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0d  |               .|
00006a60  02 d6 44 20 e7 20 6e 63  6f 6c 6f 75 72 25 3e 3d  |..D . ncolour%>=|
00006a70  36 33 20 8c 20 c8 99 22  43 6f 6c 6f 75 72 54 72  |63 . .."ColourTr|
00006a80  61 6e 73 5f 53 65 6c 65  63 74 54 61 62 6c 65 22  |ans_SelectTable"|
00006a90  2c 6d 6f 64 65 25 2c 30  2c 2d 31 2c 2d 31 2c 70  |,mode%,0,-1,-1,p|
00006aa0  69 78 25 0d 02 d7 44 20  c8 99 52 65 61 64 4d 6f  |ix%...D ..ReadMo|
00006ab0  64 65 25 2c 6d 6f 64 65  25 2c 34 20 b8 20 2c 2c  |de%,mode%,4 . ,,|
00006ac0  78 73 63 61 6c 65 25 3a  c8 99 52 65 61 64 4d 6f  |xscale%:..ReadMo|
00006ad0  64 65 25 2c 6d 6f 64 65  25 2c 35 20 b8 20 2c 2c  |de%,mode%,5 . ,,|
00006ae0  79 73 63 61 6c 65 25 0d  02 d8 36 20 73 68 65 69  |yscale%...6 shei|
00006af0  67 68 74 25 3d 62 25 2a  28 73 68 65 69 67 68 74  |ght%=b%*(sheight|
00006b00  25 81 62 25 29 3a 73 77  69 64 74 68 25 3d 62 25  |%.b%):swidth%=b%|
00006b10  2a 28 73 77 69 64 74 68  25 81 62 25 29 0d 02 d9  |*(swidth%.b%)...|
00006b20  3c 20 c8 99 52 65 61 64  4d 6f 64 65 25 2c 2d 31  |< ..ReadMode%,-1|
00006b30  2c 34 20 b8 20 2c 2c 78  73 63 61 6c 25 3a c8 99  |,4 . ,,xscal%:..|
00006b40  52 65 61 64 4d 6f 64 65  25 2c 2d 31 2c 35 20 b8  |ReadMode%,-1,5 .|
00006b50  20 2c 2c 79 73 63 61 6c  25 0d 02 da 3f 20 77 69  | ,,yscal%...? wi|
00006b60  64 74 68 25 3d 73 77 69  64 74 68 25 2a 31 3c 3c  |dth%=swidth%*1<<|
00006b70  78 73 63 61 6c 65 25 3a  68 65 69 67 68 74 25 3d  |xscale%:height%=|
00006b80  73 68 65 69 67 68 74 25  2a 31 3c 3c 79 73 63 61  |sheight%*1<<ysca|
00006b90  6c 65 25 3a 41 25 3d 30  0d 02 db 4b 20 78 73 74  |le%:A%=0...K xst|
00006ba0  65 70 3d 77 69 64 74 68  25 2f 62 25 3a 79 73 74  |ep=width%/b%:yst|
00006bb0  65 70 3d 68 65 69 67 68  74 25 2f 62 25 3a 71 25  |ep=height%/b%:q%|
00006bc0  3d 31 36 2f 28 31 3c 3c  78 73 63 61 6c 65 25 29  |=16/(1<<xscale%)|
00006bd0  3a 72 25 3d 31 36 2f 28  31 3c 3c 79 73 63 61 6c  |:r%=16/(1<<yscal|
00006be0  65 25 29 0d 02 dc 26 20  c8 99 22 43 6f 6c 6f 75  |e%)...& .."Colou|
00006bf0  72 54 72 61 6e 73 5f 49  6e 76 61 6c 69 64 61 74  |rTrans_Invalidat|
00006c00  65 43 61 63 68 65 22 20  20 0d 02 dd 24 20 e3 20  |eCache"  ...$ . |
00006c10  59 25 3d 68 65 69 67 68  74 25 2d 79 73 74 65 70  |Y%=height%-ystep|
00006c20  20 b8 20 30 20 88 20 2d  79 73 74 65 70 0d 02 de  | . 0 . -ystep...|
00006c30  23 20 20 e3 20 58 25 3d  30 20 b8 20 77 69 64 74  |#  . X%=0 . widt|
00006c40  68 25 2d 78 73 74 65 70  20 88 20 78 73 74 65 70  |h%-xstep . xstep|
00006c50  0d 02 df 0c 20 20 20 41  25 2b 3d 31 0d 02 e0 12  |....   A%+=1....|
00006c60  20 20 20 e7 20 41 25 3c  62 25 5e 32 20 8c 0d 02  |   . A%<b%^2 ...|
00006c70  e1 44 20 20 20 20 c8 99  53 70 72 69 74 65 4f 70  |.D    ..SpriteOp|
00006c80  25 2c 31 35 2b 32 35 36  2c 73 6d 61 6c 6c 25 2c  |%,15+256,small%,|
00006c90  c3 41 25 2c 30 2c 73 77  69 64 74 68 25 2f 62 25  |.A%,0,swidth%/b%|
00006ca0  2c 73 68 65 69 67 68 74  25 2f 62 25 2c 6d 6f 64  |,sheight%/b%,mod|
00006cb0  65 25 0d 02 e2 25 20 20  20 20 c8 99 53 70 72 69  |e%...%    ..Spri|
00006cc0  74 65 4f 70 25 2c 36 30  2b 32 35 36 2c 73 6d 61  |teOp%,60+256,sma|
00006cd0  6c 6c 25 2c c3 41 25 0d  02 e3 2f 20 20 20 20 c8  |ll%,.A%.../    .|
00006ce0  99 53 70 72 69 74 65 4f  70 25 2c 33 34 2b 35 31  |.SpriteOp%,34+51|
00006cf0  32 2c 62 69 67 25 2c 62  69 67 25 2b 31 36 2c 2d  |2,big%,big%+16,-|
00006d00  58 25 2c 2d 59 25 0d 02  e4 08 20 20 20 cd 0d 02  |X%,-Y%....   ...|
00006d10  e5 07 20 20 ed 0d 02 e6  06 20 ed 0d 02 e7 37 20  |..  ..... ....7 |
00006d20  c8 99 53 70 72 69 74 65  4f 70 25 2c 36 30 2c 30  |..SpriteOp%,60,0|
00006d30  2c 30 3a c8 99 22 43 6f  6c 6f 75 72 54 72 61 6e  |,0:.."ColourTran|
00006d40  73 5f 49 6e 76 61 6c 69  64 61 74 65 43 61 63 68  |s_InvalidateCach|
00006d50  65 22 0d 02 e8 58 20 21  62 6c 6f 63 6b 25 3d 30  |e"...X !block%=0|
00006d60  3a 62 6c 6f 63 6b 25 21  34 3d 2d 28 73 68 65 69  |:block%!4=-(shei|
00006d70  67 68 74 25 2d 31 29 2a  31 3c 3c 79 73 63 61 6c  |ght%-1)*1<<yscal|
00006d80  65 25 3a 62 6c 6f 63 6b  25 21 38 3d 73 77 69 64  |e%:block%!8=swid|
00006d90  74 68 25 2a 31 3c 3c 78  73 63 61 6c 65 25 3a 62  |th%*1<<xscale%:b|
00006da0  6c 6f 63 6b 25 21 31 32  3d 30 0d 02 e9 44 20 c8  |lock%!12=0...D .|
00006db0  99 22 57 69 6d 70 5f 53  65 74 45 78 74 65 6e 74  |."Wimp_SetExtent|
00006dc0  22 2c 6d 61 69 6e 25 2c  62 6c 6f 63 6b 25 3a c8  |",main%,block%:.|
00006dd0  99 22 57 69 6d 70 5f 53  65 74 45 78 74 65 6e 74  |."Wimp_SetExtent|
00006de0  22 2c 76 69 65 77 25 2c  62 6c 6f 63 6b 25 0d 02  |",view%,block%..|
00006df0  ea 1a 20 e7 20 70 75 7a  6f 70 65 6e 25 20 80 20  |.. . puzopen% . |
00006e00  66 69 72 73 74 25 20 8c  0d 02 eb 52 20 20 21 62  |first% ....R  !b|
00006e10  6c 6f 63 6b 25 3d 6d 61  69 6e 25 3a c8 99 20 47  |lock%=main%:.. G|
00006e20  65 74 57 69 6e 64 6f 77  25 2c 2c 62 6c 6f 63 6b  |etWindow%,,block|
00006e30  25 3a 62 6c 6f 63 6b 25  21 38 3d 62 6c 6f 63 6b  |%:block%!8=block|
00006e40  25 21 31 36 2d 73 68 65  69 67 68 74 25 2a 28 31  |%!16-sheight%*(1|
00006e50  3c 3c 79 73 63 61 6c 65  25 29 0d 02 ec 43 20 20  |<<yscale%)...C  |
00006e60  62 6c 6f 63 6b 25 21 31  32 3d 62 6c 6f 63 6b 25  |block%!12=block%|
00006e70  21 34 2b 73 77 69 64 74  68 25 2a 28 31 3c 3c 78  |!4+swidth%*(1<<x|
00006e80  73 63 61 6c 65 25 29 3a  c8 99 4f 70 65 6e 57 69  |scale%):..OpenWi|
00006e90  6e 64 6f 77 25 2c 2c 62  6c 6f 63 6b 25 0d 02 ed  |ndow%,,block%...|
00006ea0  06 20 cd 0d 02 ee 28 20  e7 20 76 69 65 77 6f 70  |. ....( . viewop|
00006eb0  65 6e 25 20 80 20 66 69  72 73 74 25 20 8c 20 f2  |en% . first% . .|
00006ec0  6f 70 65 6e 28 76 69 65  77 25 29 0d 02 ef 5c 20  |open(view%)...\ |
00006ed0  21 62 6c 6f 63 6b 25 3d  30 3a 62 6c 6f 63 6b 25  |!block%=0:block%|
00006ee0  21 31 32 3d 30 3a 62 6c  6f 63 6b 25 21 38 3d 34  |!12=0:block%!8=4|
00006ef0  30 2a 62 25 2b 34 3a 62  6c 6f 63 6b 25 21 34 3d  |0*b%+4:block%!4=|
00006f00  2d 34 30 2a 62 25 3a c8  99 22 57 69 6d 70 5f 53  |-40*b%:.."Wimp_S|
00006f10  65 74 45 78 74 65 6e 74  22 2c 68 65 6c 70 77 25  |etExtent",helpw%|
00006f20  2c 62 6c 6f 63 6b 25 0d  02 f0 a5 20 21 62 6c 6f  |,block%.... !blo|
00006f30  63 6b 25 3d 68 65 6c 70  77 25 3a c8 99 20 47 65  |ck%=helpw%:.. Ge|
00006f40  74 57 69 6e 64 6f 77 25  2c 2c 62 6c 6f 63 6b 25  |tWindow%,,block%|
00006f50  3a 62 6c 6f 63 6b 25 21  31 32 3d 62 6c 6f 63 6b  |:block%!12=block|
00006f60  25 21 34 2b 62 25 2a 34  30 2b 34 3a 62 6c 6f 63  |%!4+b%*40+4:bloc|
00006f70  6b 25 21 38 3d 62 6c 6f  63 6b 25 21 31 36 2d 34  |k%!8=block%!16-4|
00006f80  30 2a 62 25 2d 34 3a c8  99 20 4f 70 65 6e 57 69  |0*b%-4:.. OpenWi|
00006f90  6e 64 6f 77 25 2c 2c 62  6c 6f 63 6b 25 3a e7 20  |ndow%,,block%:. |
00006fa0  68 65 6c 70 25 3c 3e 31  20 84 20 ac 66 69 72 73  |help%<>1 . .firs|
00006fb0  74 25 20 8c 20 c8 99 20  43 6c 6f 73 65 57 69 6e  |t% . .. CloseWin|
00006fc0  64 6f 77 25 2c 2c 62 6c  6f 63 6b 25 0d 02 f1 05  |dow%,,block%....|
00006fd0  e1 0d ff                                          |...|
00006fd3