Home » Archimedes archive » Archimedes World » AW-1992-10.adf » AWOct92 » !AWOct92/Goodies/JigWord/!JigWord/!RunImage

!AWOct92/Goodies/JigWord/!JigWord/!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-1992-10.adf » AWOct92
Filename: !AWOct92/Goodies/JigWord/!JigWord/!RunImage
Read OK:
File size: 9D8C bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >!RunImage
   20REM Remember to test if CreateMenu reports an error abt indirected data
   30REM Remember to do PROCDeleteMStruct for all those difficult windows
   40ON ERROR MODE 0:SYS "Wimp_CloseDown":PRINT REPORT$;" at line ";ERL:END
   50:
   60SYS "Wimp_Initialise",200,&4B534154,"JigWord" TO ,task%
   70:
   80PROCInitialise
   90A%=hilitecol%:CALL ChangeHiCol
  100PROCCreateIcon(0)
  110:
  120PROCCreateWindow(1)
  130:
  140quit%=FALSE:menus%=-1:menuw%=-1:mask%=1
  150REPEAT
  160 ON ERROR LOCAL PROCError1st
  170 SYS "Wimp_Poll",mask%,b% TO p%
  180 CASE p% OF
  190  WHEN 0:REMPROCCycle
  200  WHEN 1:PROCP_1(b%)
  210  WHEN 2:SYS "Wimp_OpenWindow",,b%
  220  WHEN 3:PROCP_3(b%)
  230  WHEN 6:PROCP_6(b%)
  240  WHEN 8:PROCP_8(b%)
  250  WHEN 9:PROCP_9(b%)
  260  WHEN 17,18:PROCReceive(b%)
  270 ENDCASE
  280UNTIL quit%
  290SYS "Wimp_CloseDown",task%,&4B534154
  300END
  310:
  320 "Oh no! An error, this can't be!"
  330   'Sorry, but it's worse than that.'
  340 "Worse? It, it, it's not a fatal error, is it?"
  350   'That just about sums it up. Sorry'
  360 "Arghhhh!"
  370:
  380DEF PROCError1st
  390!error%=ERR
  400$(error%+4)=REPORT$+" at line "+STR$(ERL)
  410SYS "Wimp_ReportError",error%,,"JigWord"
  420SYS "Wimp_CloseDown"
  430END
  440ENDPROC
  450:
  460 "Stop messing with my mind you little horrors!"
  470
  480   'But it's our job. Don't think of us as an error,
  490   more as messages from RISCOS - postcards from
  500   ROM.'
  510
  520 "ROM, ROM? Isn't that where the volcano appeared and
  530 wiped out hundreds of innocent programmers? I saw that
  540 video last night."
  550
  560   'You really do have problems. I don't think your
  570   sliced loaf goes right to the crust.'
  580
  590 "And your disc drive head doesn't go to the last track."
  600
  610   'Touchy touchy, aren't we. Well, onto the next
  620   procedure.'
  630:
  640DEF PROCError2nd(err%)
  650!error%=err%
  660$(error%+4)=error$(err%)
  670SYS "Wimp_ReportError",error%,,"JigWord"
  680ENDPROC
  690:
  700 "Noooooooo!"
  710   'Don't worry about it. Relax.'
  720 "Arghhhhhh!"
  730   'It's only another type of fatal internal error.'
  740
  750   'And stop dribbling!'
  760:
  770DEF PROCError3rd
  780!error%=0
  790$(error%+4)=err$
  800SYS "Wimp_ReportError",error%,,"JigWord"
  810SYS "Wimp_CloseDown"
  820END
  830ENDPROC
  840:
  850 "?"
  860
  870   'That's it, take him away lads. Into the
  880   land of eternal internal error.'
  890
  900 "?"
  910
  920   'Take him to room 101.'
  930
  940 "What, what's in room 101?"
  950
  960   'You know what is in room 101. Everyone
  970   knows what is in room 101'
  980
  990 "Arghhhhh!"
 1000:
 1010DEF PROCErrorPrint1st
 1020!error%=ERR
 1030$(error%+4)=REPORT$+" at line "+STR$(ERL)
 1040SYS "Wimp_ReportError",error%,,"JigWord"
 1050REM 'Snigger snigger.'
 1060ENDPROC
 1070:
 1080DEF PROCInitialise
 1090hilitecol%=9
 1100print$="printer:"
 1110pwidth%=80
 1120:
 1130DIM b% 256
 1140DIM b2% 256
 1150DIM code% 4096
 1160:
 1170DIM creates% 7*1024
 1180cjiglen%=8192:cscratlen%=512
 1190DIM cjigst% cjiglen%,cscratst% cscratlen%
 1200:
 1210SYS "OS_ReadVarVal","JigWord$Dir",b%,255,0,0 TO ,,l%
 1220b%?l%=&0D
 1230path$=$b%
 1240h%=OPENIN(path$+".Words")
 1250wordlen%=(BGET#h%)+((BGET#h%)<<8)+((BGET#h%)<<16)+((BGET#h%)<<24)
 1260CLOSE#h%
 1270DIM wordst% wordlen%
 1280OSCLI "Load "+path$+".Words 10_"+STR$(wordst%)
 1290:
 1300OSCLI "Load "+path$+".CreateO 10_"+STR$(creates%)
 1310result%=creates%
 1320changejig%=creates%+creates%!4
 1330cwordst%=creates%+creates%!8
 1340csize%=creates%+creates%!12
 1350changecscrat%=creates%+creates%!16
 1360cpuzzarea%=creates%+creates%!20
 1370cinitvar%=creates%+creates%!24
 1380createjig%=creates%+creates%!28
 1390crand%=creates%+creates%!32
 1400A%=RND(-TIME):A%=RND:CALL crand%
 1410A%=cjigst%:B%=cjiglen%:CALL changejig%
 1420A%=wordst%:CALL cwordst%
 1430A%=cscratst%:B%=cscratlen%:CALL changecscrat%
 1440:
 1450DIM dispjigst% 6144
 1460OSCLI "Load "+path$+".JigDispO 10_"+STR$(dispjigst%)
 1470ChangeHiCol=dispjigst%+dispjigst%!00
 1480puzzshuffle=dispjigst%+dispjigst%!04
 1490puzzselect=dispjigst%+dispjigst%!08
 1500HFit=dispjigst%+dispjigst%!12
 1510VFit=dispjigst%+dispjigst%!16
 1520ChangeJig=dispjigst%+dispjigst%!20
 1530ChangeSel=dispjigst%+dispjigst%!24
 1540CreateHeap=dispjigst%+dispjigst%!28
 1550Gridsetc=dispjigst%+dispjigst%!32
 1560Word=dispjigst%+dispjigst%!36
 1570puzzshflags1=dispjigst%+dispjigst%!40
 1580nextpuzzst=dispjigst%+dispjigst%!44
 1590selh=dispjigst%+dispjigst%!48
 1600selv=dispjigst%+dispjigst%!52
 1610fit=dispjigst%+dispjigst%!56
 1620hlen=dispjigst%+dispjigst%!60
 1630vlen=dispjigst%+dispjigst%!64
 1640ChangeBckGndCol=dispjigst%+dispjigst%!68
 1650:
 1660err%=FALSE:err$=""
 1670DIM error$(10),error% 256
 1680FOR a%=0 TO 8
 1690 READ error$(a%)
 1700NEXT
 1710:
 1720maxpuzz%=10
 1730DIM puzzst% 32*1024,puzzin%(maxpuzz%),pinfo%(maxpuzz%,10)
 1740DIM puzzim% 1024
 1750puzzend%=puzzst%+32*1024
 1760nxtpuzzst%=puzzst%
 1770DIM pfree%(maxpuzz%)
 1780:
 1790DIM scratch% 4096
 1800:
 1810maxpword%=10
 1820DIM pword%(maxpword%,5),pwuse%(maxpword%)
 1830:
 1840DIM create%(10)
 1850:
 1860DIM sprarea%(4):REM sprite area addresses, 0 is Wimp area
 1870sprarea%(0)=1
 1880:
 1890numicon%=75:nexticon%=0
 1900DIM icon%(numicon%,9),icon$(numicon%,1)
 1910DIM iconst% 64
 1920PROCReadIconData
 1930pwordiconst%=nexticon%
 1940nexticon%+=(maxpword%+1)*3
 1950:
 1960nummenu%=10:nextmenu%=0:maxitem%=9
 1970DIM item%(nummenu%,maxitem%,4),item$(nummenu%,maxitem%,1)
 1980DIM menu%(nummenu%,1),menu$(nummenu%)
 1990DIM menust% 1024,menuin%(nummenu%)
 2000nxtmenust%=menust%:menuend%=menust%+1024:nextmenu%=0
 2010PROCReadMenuData
 2020:
 2030numms%=10:REM number menu structures
 2040DIM mstructst% 1023,mstructin%(numms%)
 2050nxtmstruct%=mstructst%:mstructend%=mstructst%+1024
 2060PROCReadMStructData
 2070:
 2080numdat%=200
 2090DIM indata% 1024,data%(numdat%,3)
 2100dataend%=indata%+1024
 2110nextdat%=0:nextdatst%=indata%
 2120REM indirected data
 2130REM data%(item num,[data start,length,validation{-1},length{-1}]
 2140:
 2150nextwpos%=0:REM incremented to allow windows to open at offsets
 2160numwind%=15
 2170DIM wind%(numwind%,20),wind$(numwind%),wuse%(numwind%)
 2180DIM wbuff% 512
 2190PROCReadWindowData
 2200ENDPROC
 2210:
 2220  Anyone wanting to know how the puzzles are
 2230  created, tough! It's all in machine code. And so
 2240  is the display code.
 2250:
 2260DEF PROCInitialiseDispFile(p%)
 2270pinfo%(p%,0)=nxtpuzzst%!4
 2280pinfo%(p%,1)=nxtpuzzst%!8
 2290pinfo%(p%,2)=FNPNumOfWords(nxtpuzzst%)
 2300pinfo%(p%,3)=0
 2310pinfo%(p%,4)=0
 2320pinfo%(p%,5)=-1
 2330pinfo%(p%,6)=-1
 2340pinfo%(p%,7)=-1
 2350pinfo%(p%,8)=0
 2360pinfo%(p%,9)=0
 2370pinfo%(p%,10)=0
 2380pfree%(p%)=-1
 2390puzzin%(p%)=nxtpuzzst%
 2400nxtpuzzst%+=!nxtpuzzst%
 2410ENDPROC
 2420:
 2430DEF PROCReadIconData
 2440LOCAL a%,b%,n%
 2450RESTORE 4140
 2460READ n%
 2470FOR a%=0 TO n%-1
 2480 FOR b%=0 TO 9
 2490  READ icon%(a%,b%)
 2500  IF icon%(a%,6)=4 THEN icon%(a%,6)=1
 2510 NEXT
 2520 READ icon$(a%,0),icon$(a%,1)
 2530 PROCCheckIconData(a%,icon%(a%,8),icon$(a%,0),icon$(a%,1),icon%(a%,4))
 2540 IF err% THEN PROCError3rd
 2550NEXT
 2560nexticon%=n%
 2570ENDPROC
 2580DEF PROCCheckIconData(i%,l%,a$,b$,f%)
 2590CASE icon%(a%,6) OF
 2600 WHEN 0:
 2610  IF LEN(a$)>12 OR (f% AND %1)<>%1 OR (f% AND 256)=256 THEN
 2620   err%=TRUE:err$="Icon "+STR$(i%)+" is invalid (0)"
 2630   ENDPROC
 2640  ENDIF
 2650 WHEN 1:
 2660  IF LEN(a$)+1>l% OR (f% AND %1)<>%1 OR (f% AND 256)=0 THEN
 2670   err%=TRUE:err$="Icon "+STR$(i%)+" is invalid (1)"
 2680   ENDPROC
 2690  ENDIF
 2700 WHEN 2:
 2710  IF LEN(a$)>12 OR (f% AND %10)<>%10 OR (f% AND 256)=256 THEN
 2720   err%=TRUE:err$="Icon "+STR$(i%)+" is invalid (2)"
 2730   ENDPROC
 2740  ENDIF
 2750 WHEN 3:
 2760  IF LEN(a$)+1>l% OR b$="" OR (f% AND %10)=0 OR (f% AND 256)=0 THEN
 2770   err%=TRUE:err$="Icon "+STR$(i%)+" is invalid (3)"
 2780   ENDPROC
 2790  ENDIF
 2800 WHEN 4:
 2810  err%=TRUE:err$="Icon "+STR$(i%)+" has type 4, please use type 1"
 2820 OTHERWISE
 2830  err%=TRUE:err$="Icon "+STR$(i%)+" has an unknown type"
 2840  ENDPROC
 2850ENDCASE
 2860ENDPROC
 2870:
 2880DEF PROCReadMenuData
 2890LOCAL a%,n%,b%
 2900RESTORE 3950
 2910READ n%
 2920FOR a%=0 TO n%-1
 2930 READ menu$(a%)
 2940 READ menu%(a%,0),menu%(a%,1)
 2950 FOR b%=0 TO menu%(a%,1)-1
 2960  READ item%(a%,b%,0),item%(a%,b%,1),item%(a%,b%,2),item%(a%,b%,3)
 2970  READ item%(a%,b%,4)
 2980  READ item$(a%,b%,0),item$(a%,b%,1)
 2990 NEXT
 3000 PROCCheckMenuData(a%)
 3010 IF err% THEN PROCError3rd
 3020NEXT
 3030ENDPROC
 3040DEF PROCCheckMenuData(m%)
 3050LOCAL b%,f%
 3060IF LEN(menu$(m%))>12 THEN
 3070 err$="Menu "+STR$(a%)+" title too long"
 3080 err%=TRUE
 3090 ENDPROC
 3100ENDIF
 3110FOR b%=0 TO menu%(m%,1)-1
 3120 f%=item%(m%,b%,3)
 3130 IF (f% AND %100001)<>%10001 AND f%<>0 THEN
 3140  err$="Menu "+STR$(m%)+" item "+STR$(b%)+" icon flags should be %100001"
 3150  err%=TRUE
 3160  ENDPROC
 3170 ENDIF
 3180 IF LEN(item$(m%,b%,0))>12 AND (f% AND 256)=0 THEN
 3190  err$="Menu "+STR$(m%)+" item "+STR$(b%)+" should be indirected"
 3200  err%=TRUE
 3210  ENDPROC
 3220 ENDIF
 3230 IF (f% AND 256)=256 AND LEN(item$(m%,b%,0))+1<item%(m%,b%,4) THEN
 3240  err$="Menu "+STR$(m%)+" item "+STR$(b%)+" should is a mess"
 3250  err%=TRUE
 3260  ENDPROC
 3270 ENDIF
 3280NEXT
 3290ENDPROC
 3300:
 3310DEF PROCReadMStructData
 3320LOCAL a%,n%,o%,addr%,d%
 3330RESTORE 4750
 3340READ n%
 3350addr%=nxtmstruct%
 3360FOR a%=0 TO n%-1
 3370 mstructin%(a%)=addr%
 3380 REPEAT
 3390  READ d%
 3400  !addr%=d%
 3410  addr%+=4
 3420 UNTIL d%=-1
 3430NEXT
 3440nstmstruct%=addr%
 3450ENDPROC
 3460:
 3470DEF PROCReadWindowData
 3480LOCAL a%,n%,b%
 3490RESTORE 3720
 3500READ n%
 3510FOR a%=0 TO n%-1
 3520 READ wind$(a%)
 3530 FOR b%=0 TO 20
 3540  READ wind%(a%,b%)
 3550 NEXT
 3560 wuse%(a%)=-1
 3570NEXT
 3580ENDPROC
 3590:
 3600REM  If you get the first message, congratulations! It took me forever.
 3610:
 3620DATA "Not enough indirected data workspace, tell a competent programmer"
 3630DATA "Minimum width is 30"
 3640DATA "Minimum height is 15"
 3650DATA "Too many puzzles"
 3660DATA "Not enough room for puzzle"
 3670DATA "Not enough workspace to open window"
 3680DATA "Only 5 views of a puzzle allowed"
 3690DATA "Maximum width is 99"
 3700DATA "Maximum height is 99"
 3710REM Actually 255*255 is the biggest size. But also impossible
 3720:
 3730REM Windows
 3740DATA 3
 3750DATA About this program
 3760DATA -1,-1, 0,0,604,212, 0,0
 3770DATA 0,-212,604,0, 0,0
 3780DATA %10010+(132<<24)
 3790DATA 1
 3800DATA 1,8,-1,0,0
 3810
 3820DATA "JigWord Creation"
 3830DATA -1,-1, 200,200,456,800, 0,0
 3840DATA 0,-256,0,0, 0,200
 3850DATA %10010+(135<<24)+(1<<12)
 3860DATA 1,9,6,-1,3,0
 3870
 3880DATA "About this Puzzle"
 3890DATA -1,-1,0,0,332,160, 0,0
 3900DATA 0,-160,332,0, 0,0
 3910DATA %10010+(132<<24)
 3920DATA 1
 3930DATA 15,6,-1,0,0
 3940:
 3950:
 3960REM Menus
 3970DATA 3
 3980DATA JigWord,72,2
 3990DATA -1,%0000,0,0,0,Info,
 4000DATA -1,%10000000,-1,0,0,Quit,
 4010
 4020DATA JigWord,136,5
 4030DATA -1,%0000,2,0,0,Info,
 4040DATA -1,%0000,-1,0,0,Cheat,
 4050DATA -1,%0000,-1,0,0,Words,
 4060DATA -1,%0000,-1,0,0,New View,
 4070DATA -1,%10000000,-1,0,0,Print,
 4080:
 4090DATA Words,136,2
 4100DATA -1,%0000,-1,0,0,New View,
 4110DATA -1,%10000000,-1,0,0,Print,
 4120:
 4130:
 4140:
 4150REM Icons
 4160DATA 21
 4170DATA 0,0,68,68,(3<<12)+%10
 4180DATA -1,2,-1,9,-1
 4190DATA "!jigword",
 4200
 4210DATA 20,-48,156,-8,%1000010001+(7<<24)+(2<<28)
 4220DATA 0,0,-1,8,-1,"Name:",
 4230DATA 20,-100,156,-60,%1000010001+(7<<24)+(2<<28)
 4240DATA 0,0,-1,8,-1,"Purpose:",
 4250DATA 20,-152,156,-112,%1000010001+(7<<24)+(2<<28)
 4260DATA 0,0,-1,8,-1,"Author:",
 4270DATA 20,-204,156,-164,%1000010001+(7<<24)+(2<<28)
 4280DATA 0,0,-1,8,-1,"Version:",
 4290REMDATA 160,-48,598,-8,%1000111101+(7<<24)+(0<<28)
 4300DATA 160,-52,598,-4,%1000111101+(7<<24)+(0<<28)
 4310DATA 0,0,-1,9,-1,"!JigWord",
 4320REMDATA 160,-100,598,-60,%1000111101+(7<<24)+(0<<28)
 4330DATA 160,-104,598,-56,%1000111101+(7<<24)+(0<<28)
 4340DATA 0,0,-1,8,-1,"Puzzlement!",
 4350REMDATA 160,-152,598,-112,%1100111101+(7<<24)+(0<<28)
 4360DATA 160,-156,598,-108,%1100111101+(7<<24)+(0<<28)
 4370DATA 0,1,-1,16,-1,"P.Bentley, 1991",
 4380REMDATA 160,-204,598,-164,%1100111101+(7<<24)+(0<<28)
 4390DATA 160,-208,598,-160,%1100111101+(7<<24)+(0<<28)
 4400DATA 0,1,-1,20,-1,"1.62 (05, Apr 1992)",
 4410
 4420DATA 20,-48,236,-4,%1000010001+(7<<24)
 4430DATA 0,0,-1,8,-1,"Width:",
 4440DATA 20,-100,236,-56,%1000010001+(7<<24)
 4450DATA 0,0,-1,8,-1,"Height:",
 4460REMDATA 20,-152,236,-112,%1100010001+(7<<24)
 4470REMDATA 0,1,-1,14,-1,"Word density:",
 4480DATA 240,-48,304,-4,%0100111101+(7<<24)+(0<<28)+(15<<12)
 4490DATA 0,1,-1,3,-1,"30","A0-9"
 4500DATA 240,-100,304,-56,%0100111101+(7<<24)+(0<<28)+(15<<12)
 4510DATA 0,1,-1,3,-1,"15","A0-9"
 4520REMDATA 240,-152,304,-112,%0100111101+(7<<24)+(0<<28)+(15<<12)
 4530REMDATA 0,1,-1,3,-1,,"A0-9"
 4540DATA 48,-168,284,-120,%1100010011+(7<<24)+(1<<28)+(11<<12)
 4550DATA 0,1,-1,12,-1,"Start Word:","Soptoff,opton"
 4560REMDATA 144,-224,284,-180,%1100010011+(7<<24)+(1<<28)+(11<<12)
 4570REMDATA 0,1,-1,6,-1,"Grid:","Soptoff,opton"
 4580DATA 120,-232,224,-188,%111101+(7<<24)+(12<<28)+(9<<12)+(1<<16)
 4590DATA 0,0,-1,7,-1,"Create",
 4600
 4610DATA 20,-48,236,-8,%1000010001+(7<<24)
 4620DATA 0,0,-1,6,-1,"Width:",
 4630DATA 20,-100,236,-60,%1000010001+(7<<24)
 4640DATA 0,0,-1,7,-1,"Height:",
 4650DATA 20,-152,236,-112,%1100010001+(7<<24)
 4660DATA 0,1,-1,14,-1,"No. of words:",
 4670REMDATA 240,-48,312,-8,%0000111101+(7<<24)+(0<<28)
 4680DATA 240,-52,312,-4,%0000111101+(7<<24)+(0<<28)
 4690DATA 0,0,-1,14,-1,"",
 4700DATA 240,-104,312,-56,%0000111101+(7<<24)+(0<<28)
 4710DATA 0,0,-1,14,-1,"",
 4720DATA 240,-156,312,-108,%0000111101+(7<<24)+(0<<28)
 4730DATA 0,0,-1,14,-1,"",
 4740:
 4750:
 4760REM menu structures
 4770DATA 3
 4780DATA 0,&8000,-1
 4790DATA 2,&8001,-1
 4800DATA &8002,-1
 4810:
 4820DEF FNSIcon(s$,but%,h%,x1%,y1%,x2%,y2%)
 4830b%!0=h%
 4840b%!4=x1%
 4850b%!8=y1%
 4860b%!12=x2%
 4870b%!16=y2%
 4880b%!20=%10+(but%<<12)
 4890$(b%+24)=s$
 4900SYS "Wimp_CreateIcon",,b% TO h%
 4910=h%
 4920:
 4930DEF PROCCreateWindow(w%)
 4940LOCAL addr%,offset%,h%,a%
 4950addr%=wbuff%
 4960addr%!0=wind%(w%,2):addr%!4=wind%(w%,3)
 4970addr%!8=wind%(w%,4):addr%!12=wind%(w%,5)
 4980addr%!16=wind%(w%,6):addr%!20=wind%(w%,7)
 4990addr%!24=-1
 5000addr%!28=wind%(w%,14)
 5010CASE wind%(w%,15) OF
 5020 WHEN 1:
 5030  addr%?32=7:addr%?33=2
 5040  addr%?34=7:addr%?35=1
 5050  addr%?36=3:addr%?37=1
 5060  addr%?38=12:addr%?39=0
 5070 OTHERWISE :
 5080ENDCASE
 5090addr%!40=wind%(w%,8):addr%!44=wind%(w%,9)
 5100addr%!48=wind%(w%,10):addr%!52=wind%(w%,11)
 5110IF LEN(wind$(w%))>12 THEN
 5120 addr%!56=%100011001
 5130ELSE
 5140 addr%!56=%11001
 5150ENDIF
 5160addr%!60=wind%(w%,19)<<12:REM buttons
 5170addr%!64=1:REM sprite area pointer
 5180addr%?68=wind%(w%,12) MOD 256:addr%?69=wind%(w%,12) DIV 256
 5190addr%?70=wind%(w%,13) MOD 256:addr%?71=wind%(w%,13) DIV 256
 5200IF LEN(wind$(w%))<=12 THEN
 5210 $(addr%+72)=wind$(w%)
 5220ELSE
 5230 IF wind%(w%,18)<>-1 THEN
 5240  addr%!72=data%(wind%(w%,18),0)
 5250  addr%!76=-1
 5260  addr%!80=data%(wind%(w%,18),1)
 5270  $data%(wind%(w%,18),0)=wind$(w%)
 5280 ELSE
 5290  IF (nextdatst%+LEN(wind$(w%))+1)>=dataend% THEN
 5300   PROCError2nd(0)
 5310   ENDPROC
 5320  ENDIF
 5330  wind%(w%,18)=nextdat%:nextdat%+=1
 5340  data%(wind%(w%,18),0)=nextdatst%:nextdatst%+=LEN(wind$(w%))+1
 5350  data%(wind%(w%,18),1)=LEN(wind$(w%))+1
 5360  data%(wind%(w%,18),2)=-1
 5370  data%(wind%(w%,18),3)=-1
 5380  addr%!72=data%(wind%(w%,18),0)
 5390  addr%!76=-1
 5400  addr%!80=data%(wind%(w%,18),1)
 5410  $data%(wind%(w%,18),0)=wind$(w%)
 5420 ENDIF
 5430ENDIF
 5440addr%!84=wind%(w%,17)
 5450offset%=88
 5460IF wind%(w%,17)>0 THEN
 5470 h%=0
 5480 FOR a%=wind%(w%,16) TO wind%(w%,16)+wind%(w%,17)-1
 5490 icon%(a%,9)=h%
 5500 PROCCreateIData(a%,addr%+offset%)
 5510 offset%+=32
 5520 h%+=1
 5530 NEXT
 5540ENDIF
 5550SYS "Wimp_CreateWindow",,addr% TO wind%(w%,0)
 5560FOR a%=wind%(w%,16) TO wind%(w%,16)+wind%(w%,17)-1
 5570 icon%(a%,5)=wind%(w%,0)
 5580NEXT
 5590ENDPROC
 5600:
 5610DEF PROCCreateMenu(m%)
 5620LOCAL a%,addr%,a$,b$,f%,id%
 5630menuin%(m%)=nxtmenust%:addr%=nxtmenust%
 5640$addr%=menu$(m%)
 5650addr%?12=7:addr%?13=2
 5660addr%?14=7:addr%?15=0
 5670addr%!16=menu%(m%,0)
 5680addr%!20=44:addr%!24=0
 5690addr%+=28
 5700FOR a%=0 TO menu%(m%,1)-1
 5710 addr%!0=item%(m%,a%,1)
 5720 IF item%(m%,a%,2)<>-1 THEN
 5730  IF item%(m%,a%,2)<&8000 THEN
 5740   addr%!4=wind%(item%(m%,a%,2),0)
 5750  ELSE
 5760   addr%!4=menuin%(item%(m%,a%,2)-&8000)
 5770  ENDIF
 5780 ELSE
 5790  addr%!4=-1
 5800 ENDIF
 5810 f%=item%(m%,a%,3)
 5820 IF f%=0 THEN
 5830  addr%!8=(1<<5)+(7<<24)+1
 5840 ELSE
 5850  addr%!8=f%
 5860 ENDIF
 5870 a$=item$(m%,a%,0)
 5880 b$=item$(m%,a%,1)
 5890 IF LEN(a$)>12 OR b$<>"" OR (f% AND 256)=256 OR item%(m%,a%,4)>12 THEN
 5900  IF item%(m%,a%,0)=-1 THEN
 5910   IF (nextdatst%+LEN(a$)+LEN(b$)+2)>=dataend% THEN
 5920    PROCError2nd(0)
 5930    ENDPROC
 5940   ENDIF
 5950   id%=nextdat%:item%(m%,a%,0)=id%:nextdat%+=1
 5960   data%(id%,0)=nextdatst%:nextdatst%+=item%(m%,a%,4)
 5970   data%(id%,1)=item%(m%,a%,4)
 5980   IF b$<>"" THEN
 5990    data%(id%,2)=nextdatst%:nextdatst%+=LEN(b$)+1
 6000    data%(id%,3)=LEN(b$)+1
 6010   ELSE
 6020    data%(id%,2)=-1:data%(id%,3)=-1
 6030   ENDIF
 6040  ELSE
 6050   id%=item%(m%,a%,0)
 6060  ENDIF
 6070  $data%(id%,0)=a$
 6080  IF b$<>"" THEN
 6090   $(data%(id%,0)+item%(m%,a%,4))=b$
 6100  ENDIF
 6110  addr%!12=data%(id%,0)
 6120  addr%!16=data%(id%,2)
 6130  addr%!20=data%(id%,1)
 6140  addr%!8=addr%!8 OR (1<<8)
 6150 ELSE
 6160  $(addr%+12)=item$(m%,a%,0)
 6170 ENDIF
 6180 addr%+=24
 6190NEXT
 6200nxtmenust%=addr%
 6210ENDPROC
 6220:
 6230DEF PROCCreateIcon(i%)
 6240iconst%!0=icon%(i%,5)
 6250PROCCreateIData(i%,iconst%+4)
 6260SYS "Wimp_CreateIcon",,iconst% TO icon%(i%,9)
 6270ENDPROC
 6280:
 6290DEF PROCCreateIData(i%,addr%)
 6300LOCAL t%,a$,b$
 6310a$=icon$(i%,0):b$=icon$(i%,1)
 6320addr%!0=icon%(i%,0)
 6330addr%!4=icon%(i%,1)
 6340addr%!8=icon%(i%,2)
 6350addr%!12=icon%(i%,3)
 6360addr%!16=icon%(i%,4)
 6370t%=icon%(i%,6)
 6380CASE t% OF
 6390 WHEN 0:$(addr%+20)=icon$(i%,0)
 6400 WHEN 1,4:
 6410  PROCIndirectText(addr%+20,a$,b$,icon%(i%,7),icon%(i%,8),icon%(i%,7))
 6420 WHEN 2:$(addr%+20)=icon$(i%,0)
 6430 WHEN 3:
 6440  PROCIndirectText(addr%+20,a$,"",icon%(i%,7),icon%(i%,8),icon%(i%,7))
 6450  addr%!24=sprarea%(VAL(icon$(i%,1)))
 6460 WHEN 4:
 6470 WHEN 5:addr%!20=0:addr%!24=0:addr%!28=0
 6480ENDCASE
 6490ENDPROC
 6500:
 6510DEF PROCCreateMStruct(s%,x%,y%)
 6520LOCAL a%,addr%,d%,e%
 6530nxtmenust%=menust%
 6540addr%=mstructin%(s%)
 6550REPEAT
 6560 e%=d%
 6570 d%=!addr%
 6580 addr%+=4
 6590 IF d%<>-1 THEN
 6600  IF d%<&8000 THEN PROCCreateWindow(d%) ELSE PROCCreateMenu(d%-&8000)
 6610 ENDIF
 6620UNTIL d%=-1
 6630SYS "Wimp_CreateMenu",,menuin%(e%-&8000),x%,y%
 6640menus%=s%
 6650ENDPROC
 6660:
 6670DEF PROCIndirectText(a%,a$,b$,p%,l%,RETURN p%)
 6680IF p%=-1 THEN
 6690 IF (nextdatst%+l%+LEN(b$)+1)>=dataend% THEN
 6700  PROCError2nd(0)
 6710  ENDPROC
 6720 ENDIF
 6730 p%=nextdat%:nextdat%+=1
 6740 data%(p%,0)=nextdatst%:nextdatst%+=l%
 6750 data%(p%,1)=l%
 6760 IF b$<>"" THEN
 6770  data%(p%,2)=nextdatst%:nextdatst%+=LEN(b$)+1
 6780  data%(p%,3)=LEN(b$)+1
 6790 ELSE
 6800  data%(p%,2)=-1:data%(p%,3)-=1
 6810 ENDIF
 6820ENDIF
 6830$data%(p%,0)=a$
 6840IF b$<>"" THEN $(data%(p%,2))=b$
 6850a%!0=data%(p%,0)
 6860a%!4=data%(p%,2)
 6870a%!8=data%(p%,1)
 6880ENDPROC
 6890:
 6900DEF PROCDeleteWindow(w%)
 6910!wbuff%=wind%(w%,0):SYS "Wimp_DeleteWindow",,wbuff%
 6920wind%(w%,0)=-1
 6930ENDPROC
 6940:
 6950DEF PROCDestroyWindow(w%)
 6960LOCAL a%
 6970!wbuff%=wind%(w%,0):SYS "Wimp_DeleteWindow",,wbuff%
 6980wind%(w%,0)=-1
 6990wuse%(w%)=0
 7000IF wind%(w%,17)>0 THEN
 7010 FOR a%=wind%(w%,16) TO wind%(w%,16)+wind%(w%,17)-1
 7020  icon%(a%,5)=0
 7030 NEXT
 7040ENDIF
 7050ENDPROC
 7060:
 7070DEF PROCDeleteMStruct(s%)
 7080LOCAL addr%,d%
 7090addr%=mstructin%(s%)
 7100REPEAT
 7110 d%=!addr%
 7120 addr%+=4
 7130 IF d%<>-1 AND d%<&8000 THEN PROCDeleteWindow(d%)
 7140UNTIL d%=-1
 7150menus%=-1
 7160menuw%=-1
 7170ENDPROC
 7180:
 7190REM Redraw_Window_Request
 7200DEF PROCP_1(a%)
 7210LOCAL more%,w%
 7220w%=FNWNum(a%!0)
 7230SYS "Wimp_RedrawWindow",,a% TO more%
 7240WHILE more%
 7250 PROCWindRect(w%,a%)
 7260 SYS "Wimp_GetRectangle",,a% TO more%
 7270ENDWHILE
 7280ENDPROC
 7290:
 7300REM Close_Window_Request
 7310DEF PROCP_3(a%)
 7320LOCAL w%,c%,p%,ret%
 7330w%=FNWNum(!a%)
 7340p%=wind%(w%,1)
 7350IF p%=-1 THEN SYS "Wimp_CloseWindow",,a%:ENDPROC
 7360IF p%>maxpuzz% THEN
 7370 p%-=maxpuzz%+1
 7380 PROCDestroyWindow(w%):pinfo%(p%,8)-=1
 7390 IF pinfo%(p%,8)=0 THEN pinfo%(p%,4)=pinfo%(p%,4) AND NOT(%11)
 7400 pwuse%(wind%(w%,20))=0
 7410 ENDPROC
 7420ENDIF
 7430IF pinfo%(p%,3)=1 THEN
 7440 b2%!0=0:$(b2%+4)="Are you sure you want to lose this puzzle?"+CHR$(0)
 7450 SYS "Wimp_ReportError",b2%,%10111,"!JigWord" TO ,ret%
 7460 IF ret%=0 OR ret%=2 THEN ENDPROC
 7470ENDIF
 7480PROCDestroyWindow(w%)
 7490pinfo%(p%,3)-=1
 7500IF pinfo%(p%,3)=0 THEN PROCDestroyPuzzle(p%):ENDPROC
 7510IF pinfo%(p%,3)=1 THEN
 7520 $data%(pinfo%(p%,5),0)="JigWord "+STR$(p%)
 7530ELSE
 7540 $data%(pinfo%(p%,5),0)="JigWord "+STR$(p%)+" "+STR$(pinfo%(p%,3))
 7550ENDIF
 7560FOR c%=0 TO numwind%
 7570 IF wuse%(c%)<>0 AND wind%(c%,1)=p% THEN
 7580  !b%=wind%(c%,0)
 7590  SYS "Wimp_GetWindowState",,b%
 7600  SYS "Wimp_ForceRedraw",-1,b%!4,b%!16,b%!12,b%!16+44
 7610 ENDIF
 7620NEXT
 7630ENDPROC
 7640:
 7650REM Mouse_Click
 7660DEF PROCP_6(a%)
 7670LOCAL w%,c%
 7680IF a%!12=-2 PROCIconBarClick(a%!0,a%!4,a%!8)
 7690w%=FNWNum(a%!12)
 7700IF w%<0 OR w%>numwind% THEN ENDPROC
 7710c%=FNINum(w%,a%!16)
 7720IF w%=1 AND c%=14 AND (a%!8 AND 2)<>2 THEN PROCInitCreateJig:ENDPROC
 7730IF wind%(w%,1)<>-1 AND wind%(w%,1)<=maxpuzz% THEN PROCPuzzleClick(w%,a%)
 7740IF wind%(w%,1)<>-1 AND wind%(w%,1)>maxpuzz% THEN PROCWordClick(w%,c%,a%)
 7750ENDPROC
 7760:
 7770REM Key_Pressed
 7780DEF PROCP_8(a%)
 7790LOCAL w%,c%
 7800w%=FNWNum(a%!0)
 7810CASE w% OF
 7820 WHEN -1:
 7830  SYS "Wimp_ProcessKey",a%!24
 7840 WHEN 1:PROCKeyWind1(a%)
 7850 OTHERWISE:
 7860 SYS "Wimp_ProcessKey",a%!24
 7870ENDCASE
 7880ENDPROC
 7890:
 7900REM Menu_Selection
 7910DEF PROCP_9(a%)
 7920SYS &400CF,,b2%:z%=b2%!8
 7930CASE menus% OF
 7940 WHEN 0:IF a%!0=1 THEN quit%=TRUE
 7950 WHEN 1:
 7960  CASE a%!0 OF
 7970   WHEN 1:PROCToggleCheat(menuw%)
 7980   WHEN 2:PROCToggleWordWind(wind%(menuw%,1))
 7990   WHEN 3:PROCCreatePuzzWind(wind%(menuw%,1))
 8000   WHEN 4:PROCPrintPuzzGrid(menuw%,wind%(menuw%,1))
 8010  ENDCASE
 8020 WHEN 2:
 8030  CASE a%!0 OF
 8040   WHEN 0:PROCCreateWordWind(wind%(menuw%,1)-maxpuzz%-1)
 8050   WHEN 1:PROCPrintWordList(wind%(menuw%,1)-maxpuzz%-1)
 8060  ENDCASE
 8070ENDCASE
 8080IF (z% AND 1)=1 THEN
 8090 PROCCreateMStruct(menus%,0,0)
 8100ELSE
 8110 PROCDeleteMStruct(menus%)
 8120ENDIF
 8130ENDPROC
 8140:
 8150REM Poll 17 and 18
 8160DEF PROCReceive(a%)
 8170CASE a%!16 OF
 8180 WHEN 0:quit%=TRUE
 8190 WHEN &40300:PROCChangeHiLiteCol(a%)
 8200ENDCASE
 8210ENDPROC
 8220:
 8230REM Don't know if this works.
 8240DEF PROCChangeHiLiteCol(a%)
 8250LOCAL d%,s%,A%,B%,C%,D%,E%,F%,G%,H%
 8260IF a%!20=&452295 THEN
 8270 hilitecol%=a%!24
 8280 A%=hilitecol%:CALL ChangeHiCol
 8290 ENDPROC
 8300ENDIF
 8310IF a%!20=4522295 THEN
 8320 s%=a%!24
 8330 d%=a%+28
 8340 A%=EVAL($d%)
 8350 PROCNextPar(d%,d%)
 8360 B%=EVAL($d%)
 8370 PROCNextPar(d%,d%)
 8380 C%=EVAL($d%)
 8390 PROCNextPar(d%,d%)
 8400 D%=EVAL($d%)
 8410 PROCNextPar(d%,d%)
 8420 E%=EVAL($d%)
 8430 PROCNextPar(d%,d%)
 8440 F%=EVAL($d%)
 8450 PROCNextPar(d%,d%)
 8460 G%=EVAL($d%)
 8470 PROCNextPar(d%,d%)
 8480 H%=EVAL($d%)
 8490 SYS s%,A%,B%,C%,D%,E%,F%,G%,H%
 8500 ENDPROC
 8510ENDIF
 8520IF a%!20=5922254 THEN
 8530 d%=a%+24
 8540 s%=EVAL($d%)
 8550 PROCNextPar(d%,d%)
 8560 A%=EVAL($d%)
 8570 PROCNextPar(d%,d%)
 8580 B%=EVAL($d%)
 8590 PROCNextPar(d%,d%)
 8600 C%=EVAL($d%)
 8610 PROCNextPar(d%,d%)
 8620 D%=EVAL($d%)
 8630 PROCNextPar(d%,d%)
 8640 E%=EVAL($d%)
 8650 PROCNextPar(d%,d%)
 8660 F%=EVAL($d%)
 8670 PROCNextPar(d%,d%)
 8680 G%=EVAL($d%)
 8690 PROCNextPar(d%,d%)
 8700 H%=EVAL($d%)
 8710 CALL s%
 8720 ENDPROC
 8730ENDIF
 8740IF a%!20=&1234DEBA THEN
 8750 CALL (a%!24)
 8760 ENDPROC
 8770ENDIF
 8780ENDPROC
 8790:
 8800DEF PROCNextPar(d%,RETURN d%)
 8810d%+=1
 8820WHILE ?d%<>13
 8830 d%+=1
 8840ENDWHILE
 8850d%+=1
 8860ENDPROC
 8870:
 8880REM 10.9.8.7.6.5.4.3.2.1...We have destruction.
 8890DEF PROCDestroyPuzzle(p%)
 8900LOCAL a%,addr1%,addr2%
 8910FOR a%=0 TO maxpword%
 8920IF pword%(a%,1)=p% AND pwuse%(a%) THEN
 8930 pwuse%(a%)=0:PROCDestroyWindow(pword%(a%,0))
 8940ENDIF
 8950NEXT
 8960:
 8970addr1%=puzzin%(p%)
 8980addr2%=puzzshflags1
 8990FOR a%=0 TO maxpuzz%
 9000 IF pfree%(a%) THEN !addr2%=puzzin%(a%) ELSE !addr2%=0
 9010 addr2%+=4
 9020NEXT
 9030A%=p%:CALL puzzshuffle
 9040addr1%=puzzshflags1
 9050FOR a%=0 TO maxpuzz%
 9060 IF !addr1%<>0 THEN puzzin%(a%)=!addr1%
 9070 addr1%+=4
 9080NEXT
 9090pfree%(p%)=0
 9100nxtpuzzst%=!nextpuzzst
 9110ENDPROC
 9120:
 9130REM Does anyone know that little known song
 9140REM 'Stop tap-dancing on my icon bar' ?
 9150DEF PROCIconBarClick(x%,y%,z%)
 9160IF z%=1 THEN REM Adjust
 9170IF z%=4 THEN PROCOpenWindow(1,-1)
 9180IF z%=2 THEN
 9190 IF menus%<>-1 THEN PROCDeleteMStruct(menus%)
 9200 PROCCreateMStruct(0,x%-64,184)
 9210 menuw%=-1
 9220 ENDPROC
 9230ENDIF
 9240ENDPROC
 9250:
 9260REM A confused click?
 9270DEF PROCPuzzleClick(w%,addr%)
 9280LOCAL p%
 9290p%=wind%(w%,1)
 9300IF (addr%!8 AND 2)=2 THEN
 9310 icon$(18,0)=STR$(pinfo%(p%,0))
 9320 icon$(19,0)=STR$(pinfo%(p%,1))
 9330 icon$(20,0)=STR$(pinfo%(p%,2))
 9340 IF (wind%(w%,20) AND %1)=%1 THEN
 9350  item%(1,1,1)=item%(1,1,1) OR %1
 9360 ELSE
 9370  item%(1,1,1)=item%(1,1,1) AND NOT(%1)
 9380 ENDIF
 9390 IF (pinfo%(p%,4) AND %1)=%1 THEN
 9400  item%(1,2,1)=item%(1,1,1) OR %1
 9410 ELSE
 9420  item%(1,2,1)=item%(1,1,1) AND NOT(%1)
 9430 ENDIF
 9440 IF menus%<>-1 THEN PROCDeleteMStruct(menus%)
 9450 PROCCreateMStruct(1,addr%!0-64,addr%!4)
 9460 menuw%=w%
 9470 ENDPROC
 9480ENDIF
 9490IF (addr%!8 AND %100)=%100 THEN
 9500 PROCPuzzSelect(p%,addr%!12,addr%!0,addr%!4)
 9510 ENDPROC
 9520ENDIF
 9530IF (addr%!8 AND %001)=%001 THEN
 9540 PROCDeHiLight(p%,2)
 9550 pinfo%(p%,6)=0
 9560 pinfo%(p%,7)=0
 9570 pinfo%(p%,9)=0
 9580 pinfo%(p%,10)=0
 9590 ENDPROC
 9600ENDIF
 9610ENDPROC
 9620:
 9630REM Anyone who used this option to complete
 9640REM a puzzle hasn't got the brains to understand
 9650REM this program. So why are you reading it?
 9660DEF PROCToggleCheat(w%)
 9670wind%(w%,20)=wind%(w%,20) EOR %1
 9680item%(1,1,1)=item%(1,1,1) EOR %1
 9690b%!0=wind%(w%,0)
 9700b%!4=wind%(w%,8)
 9710b%!8=wind%(w%,9)
 9720b%!12=wind%(w%,10)
 9730b%!16=wind%(w%,11)
 9740SYS "Wimp_UpdateWindow",,b% TO more%
 9750WHILE more%
 9760 PROCWindRect(w%,b%)
 9770 SYS "Wimp_GetRectangle",,b% TO more%
 9780ENDWHILE
 9790ENDPROC
 9800:
 9810DEF PROCToggleWordWind(p%)
 9820IF (pinfo%(p%,4) AND %10)=%00 THEN
 9830 PROCCreateWordWind(p%)
 9840 IF pinfo%(p%,8)=-1 THEN ENDPROC
 9850 pinfo%(p%,4)=pinfo%(p%,4) OR %11
 9860 item%(1,2,1)=item%(1,2,1) OR %1
 9870 ENDPROC
 9880ENDIF
 9890ENDPROC
 9900:
 9910DEF PROCPuzzSelect(p%,w%,x%,y%)
 9920LOCAL a%,addr1%,addr2%,v%,h%,n%,x1%,y1%,l%
 9930!b%=w%:SYS &400CB,,b%
 9940x%=x%-(b%!4-b%!20)
 9950y%=y%-(b%!16-b%!24)
 9960x%=(x%-22) DIV 20:y%=((y%+8) DIV 40)*-1
 9970A%=x%:B%=y%:C%=puzzin%(p%):CALL puzzselect
 9980h%=!selh:v%=!selv
 9990IF h%<>0 THEN pinfo%(p%,9)=!hlen
10000IF v%<>0 THEN pinfo%(p%,10)=!vlen
10010:
10020IF h%=0 AND v%=0 THEN ENDPROC
10030IF h%=pinfo%(p%,6) AND v%=pinfo%(p%,7) THEN ENDPROC
10040IF h%>0 AND v%>0 THEN
10050 IF h%=pinfo%(p%,6) THEN
10060  PROCDeHiLight(p%,1):pinfo%(p%,10)=0
10070  ENDPROC
10080 ENDIF
10090 IF v%=pinfo%(p%,7) THEN
10100  PROCDeHiLight(p%,0):pinfo%(p%,9)=0
10110  ENDPROC
10120 ENDIF
10130 PROCDeHiLight(p%,2)
10140 pinfo%(p%,6)=h%:pinfo%(p%,7)=v%
10150 PROCHiLight(p%,0)
10160 PROCHiLight(p%,1)
10170 ENDPROC
10180ENDIF
10190IF h%>0 THEN
10200 IF pinfo%(p%,7)>0 THEN PROCDeHiLight(p%,1):pinfo%(p%,10)=0
10210 IF pinfo%(p%,6)<>h% THEN
10220  PROCDeHiLight(p%,0)
10230  pinfo%(p%,6)=h%
10240  PROCHiLight(p%,0)
10250 ENDIF
10260ELSE
10270 IF pinfo%(p%,6)>0 THEN PROCDeHiLight(p%,0):pinfo%(p%,9)=0
10280 IF pinfo%(p%,7)<>v% THEN
10290  PROCDeHiLight(p%,1)
10300  pinfo%(p%,7)=v%
10310  PROCHiLight(p%,1)
10320 ENDIF
10330ENDIF
10340ENDPROC
10350:
10360DEF PROCDeHiLight(p%,a%)
10370LOCAL c%
10380CASE a% OF
10390 WHEN 0:c%=pinfo%(p%,6):pinfo%(p%,6)=0:PROCUpdateSpace(p%,c%,0)
10400 WHEN 1:c%=pinfo%(p%,7):pinfo%(p%,7)=0:PROCUpdateSpace(p%,c%,1)
10410 WHEN 2:c%=pinfo%(p%,6):pinfo%(p%,6)=0:PROCUpdateSpace(p%,c%,0)
10420        c%=pinfo%(p%,7):pinfo%(p%,7)=0:PROCUpdateSpace(p%,c%,1)
10430ENDCASE
10440ENDPROC
10450:
10460DEF PROCHiLight(p%,a%)
10470CASE a% OF
10480 WHEN 0:PROCUpdateSpace(p%,pinfo%(p%,6),0)
10490 WHEN 1:PROCUpdateSpace(p%,pinfo%(p%,7),1)
10500 WHEN 2:PROCUpdateSpace(p%,pinfo%(p%,6),0)
10510        PROCUpdateSpace(p%,pinfo%(p%,7),1)
10520ENDCASE
10530ENDPROC
10540:
10550DEF PROCUpdateSpace(p%,s%,d%)
10560IF s%=0 THEN ENDPROC
10570LOCAL x%,y%,l%,wd%,a%,x1%,y1%,x2%,y2%,more%
10580PROCSpaceInfo(p%,s%,d%)
10590x1%=x%*20+20:y1%=y%*-40-4
10600CASE d% OF
10610 WHEN 0:x2%=x1%+l%*20+2:y2%=y1%-44
10620 WHEN 1:x2%=x1%+22:y2%=y1%-l%*40-4
10630ENDCASE
10640FOR a%=0 TO numwind%
10650 IF wind%(a%,1)=p% AND wuse%(a%) THEN
10660  b%!0=wind%(a%,0)
10670  b%!4=x1%
10680  b%!8=y2%
10690  b%!12=x2%
10700  b%!16=y1%
10710  SYS &400C9,,b% TO more%
10720  WHILE more%
10730   PROCWindRect(a%,b%)
10740   SYS &400CA,,b% TO more%
10750  ENDWHILE
10760 ENDIF
10770NEXT
10780ENDPROC
10790:
10800DEF PROCSpaceInfo(p%,space%,dir%)
10810LOCAL addr%
10820addr%=puzzin%(p%)
10830CASE dir% OF
10840 WHEN 0:addr%=addr%+addr%!24
10850 WHEN 1:addr%=addr%+addr%!28
10860ENDCASE
10870addr%+=4
10880addr%=addr%+space%*8-8
10890x%=addr%?0:y%=addr%?1:l%=addr%?2:wd%=addr%!4
10900ENDPROC
10910:
10920DEF PROCWordClick(w%,c%,addr%)
10930LOCAL pw%,p%,addr1%,addr2%,x%,y%,addr3%,a%,n%,f%
10940pw%=wind%(w%,20):p%=pword%(pw%,1)
10950IF (addr%!8 AND 2)=2 THEN
10960 PROCCreateMStruct(2,addr%!0-64,addr%!4)
10970 menuw%=w%
10980 ENDPROC
10990ENDIF
11000IF c%=pwordiconst%+pw%*3 THEN PROCChWordLen(-1,pw%,w%):ENDPROC
11010IF c%=pwordiconst%+pw%*3+1 THEN PROCChWordLen(1,pw%,w%):ENDPROC
11020x%=addr%!0:y%=addr%!4
11030!b2%=wind%(w%,0):SYS &400CB,,b2%
11040x%=x%-(b2%!4-b2%!20)
11050y%=y%-(b2%!16-b2%!24):y%=((y%+36) DIV 40)*-1-1
11060IF x%<pword%(pw%,3) OR x%>pword%(pw%,4) THEN ENDPROC
11070IF y%<0 THEN ENDPROC
11080IF y%>pword%(pw%,5) THEN ENDPROC
11090IF (addr%!8 AND 1)=1 THEN
11100 addr1%=FNWordAddr(pword%(pw%,2),y%,puzzin%(p%))
11110 IF (?addr1% AND 128)=0 THEN ENDPROC
11120 ?addr1%=?addr1% EOR 128
11130 PROCUpdateWWind(w%,pw%,y%)
11140 addr1%=puzzin%(p%)
11150 addr2%=addr1%+addr1%!24
11160 n%=addr2%!0:addr2%+=4:f%=0:a%=0
11170 WHILE a%<n% AND NOT(f%)
11180  a%+=1
11190  IF (addr2%!4>>>16)=y% AND addr2%?2=pword%(pw%,2) THEN
11200   f%=TRUE
11210   addr2%?6=&FF:addr2%?7=&FF
11220   PROCUpdateSpace(p%,a%,0)
11230  ENDIF
11240  addr2%+=8
11250 ENDWHILE
11260 addr2%=addr1%+addr1%!28
11270 n%=addr2%!0:addr2%+=4:f%=0:a%=0
11280 WHILE a%<n% AND NOT(f%)
11290  a%+=1
11300  IF (addr2%!4>>>16)=y% AND addr2%?2=pword%(pw%,2) THEN
11310   f%=TRUE
11320   addr2%?6=&FF:addr2%?7=&FF
11330   PROCUpdateSpace(p%,a%,1)
11340  ENDIF
11350  addr2%+=8
11360 ENDWHILE
11370 ENDPROC
11380ENDIF
11390IF pinfo%(p%,9)=pinfo%(p%,10) THEN ENDPROC
11400addr1%=FNWordAddr(pword%(pw%,2),y%,puzzin%(p%))
11410IF (?addr1% AND 128) THEN ENDPROC
11420IF pinfo%(p%,9)=pword%(pw%,2) THEN
11430 addr2%=FNClueAddr(pinfo%(p%,6),0,puzzin%(p%))
11440 A%=puzzin%(p%):CALL ChangeJig
11450 A%=addr2%?0:B%=addr2%?1:C%=addr2%?2:D%=addr1%:CALL HFit
11460 IF !fit=0 THEN VDU 7:ENDPROC
11470 IF (addr2%!4>>>16)<>&FFFF THEN
11480  addr3%=FNWordAddr(pword%(pw%,2),addr2%?6+addr2%?7*256,puzzin%(p%))
11490  ?addr3%=?addr3% EOR 128
11500  PROCUpdateWWind(w%,pw%,addr2%?6+addr2%?7*256)
11510 ENDIF
11520 addr2%?6=y% MOD 256
11530 addr2%?7=y% DIV 256
11540 ?addr1%=?addr1% EOR 128
11550 PROCUpdateSpace(p%,pinfo%(p%,6),0)
11560 PROCUpdateWWind(w%,pw%,y%)
11570ELSE
11580 IF pinfo%(p%,10)=pword%(pw%,2) THEN
11590  addr2%=FNClueAddr(pinfo%(p%,7),1,puzzin%(p%))
11600  A%=puzzin%(p%):CALL ChangeJig
11610  A%=addr2%?0:B%=addr2%?1:C%=addr2%?2:D%=addr1%:CALL VFit
11620  IF !fit=0 THEN VDU 7:ENDPROC
11630  IF (addr2%!4>>>16)<>&FFFF THEN
11640   addr3%=FNWordAddr(pword%(pw%,2),addr2%?6+addr2%?7*256,puzzin%(p%))
11650   ?addr3%=?addr3% EOR 128
11660   PROCUpdateWWind(w%,pw%,addr2%?6+addr2%?7*256)
11670  ENDIF
11680  addr2%?6=y% MOD 256
11690  addr2%?7=y% DIV 256
11700  ?addr1%=?addr1% EOR 128
11710  PROCUpdateSpace(p%,pinfo%(p%,7),1)
11720  PROCUpdateWWind(w%,pw%,y%)
11730 ENDIF
11740ENDIF
11750ENDPROC
11760ELSE
11770 ELSE
11780  ENDPROC
11790 ENDIF
11800ENDIF
11810ENDPROC
11820:
11830REM A procedure with a stutter
11840DEF PROCUpdateWWind(w%,pw%,a%)
11850LOCAL c%,p%,more%
11860p%=pword%(pw%,1)
11870FOR c%=0 TO numwind%
11880 IF wind%(c%,1)=p%+1+maxpuzz% AND wuse%(c%) THEN
11890  b%!0=wind%(c%,0)
11900  b%!4=pword%(pw%,3):b%!8=(a%+2)*-40-32:b%!12=pword%(pw%,4):b%!16=b%!8+40
11910  SYS &400C9,,b% TO more%
11920  WHILE more%
11930   PROCWindRect(c%,b%)
11940   SYS &400CA,,b% TO more%
11950  ENDWHILE
11960 ENDIF
11970NEXT
11980ENDPROC
11990ENDPROC
12000:
12010DEF PROCChWordLen(d%,pw%,w%)
12020LOCAL addr1%,addr2%,icst%,f%,n%,l%,mh%,wf%,p%
12030icst%=pwordiconst%+pw%*3
12040p%=wind%(w%,1)-maxpuzz%-1
12050addr1%=puzzin%(p%):addr2%=addr1%+addr1%!16
12060n%=addr2%!0:l%=pword%(pw%,2)
12070REPEAT
12080 l%+=d%
12090 IF l%=1 THEN l%=n%
12100 IF l%>n% THEN l%=2
12110 IF addr2%!(l%*4-4)>0 THEN f%=TRUE
12120UNTIL f%
12130pword%(pw%,2)=l%
12140icon$(icst%+2,0)=STR$(l%)+" Letters"
12150$data%(icon%(icst%+2,7),0)=icon$(icst%+2,0)
12160mh%=!(addr1%+addr2%!(l%*4-4))+2
12170wind%(w%,9)=-(mh%*40+16)
12180b%!0=wind%(w%,0):SYS "Wimp_GetWindowState",,b%
12190wf%=b%!28
12200wind%(w%,2)=b%!4:wind%(w%,4)=b%!12:wind%(w%,5)=b%!16
12210wind%(w%,3)=wind%(w%,5)+wind%(w%,9)
12220wind%(w%,6)=0:wind%(w%,7)=0
12230b%!0=wind%(w%,8):b%!4=wind%(w%,9)
12240b%!8=wind%(w%,10):b%!12=wind%(w%,11)
12250SYS "Wimp_SetExtent",wind%(w%,0),b%
12260PROCOpenWindow(w%,wf%)
12270pword%(pw%,3)=wind%(w%,10)/2-pword%(pw%,2)*8
12280pword%(pw%,4)=pword%(pw%,3)+pword%(pw%,2)*16
12290pword%(pw%,5)=mh%-3
12300SYS "Wimp_ForceRedraw",wind%(w%,0),0,wind%(w%,9),wind%(w%,10),0
12310ENDPROC
12320:
12330DEF PROCKeyWind1(a%)
12340LOCAL c%,nh%,lh%,h%,l%,f%,i%
12350c%=FNINum(1,a%!4)
12360CASE c% OF
12370 WHEN 11:nh%=icon%(12,9):lh%=icon%(12,9)
12380 WHEN 12:nh%=icon%(11,9):lh%=icon%(11,9)
12390 OTHERWISE:SYS "Wimp_ProcessKey",a%!24:ENDPROC
12400ENDCASE
12410CASE a%!24 OF
12420 WHEN &0D:
12430  h%=nh%
12440  i%=FNIFlags(1,14)
12450  IF c%=12 AND (i% AND (1<<22))=0 THEN
12460   a%!4=icon%(14,9)
12470   a%!8=1<<21
12480   a%!12=1<<21
12490   SYS "Wimp_SetIconState",,a%
12500   PROCInitCreateJig
12510   ENDPROC
12520  ELSE
12530   IF c%=12 THEN ENDPROC
12540  ENDIF
12550 WHEN &18E:h%=nh%
12560 WHEN &18F:h%=lh%
12570 OTHERWISE:SYS "Wimp_ProcessKey",a%!24:ENDPROC
12580ENDCASE
12590l%=LEN($(data%(icon%(FNINum(w%,h%),7),0)))
12600SYS "Wimp_SetCaretPosition",wind%(1,0),h%,0,0,-1,l%
12610ENDPROC
12620:
12630REM It's a bit hot in here.
12640DEF PROCOpenWindow(w%,f%)
12650b%!0=wind%(w%,0)
12660b%!4=wind%(w%,2):b%!8=wind%(w%,3)
12670b%!12=wind%(w%,4):b%!16=wind%(w%,5)
12680b%!20=wind%(w%,6):b%!24=wind%(w%,7)
12690b%!28=f%
12700SYS "Wimp_OpenWindow",,b%
12710ENDPROC
12720:
12730DEF PROCWindRect(w%,a%)
12740LOCAL wx1%,wy1%,wx2%,wy2%
12750wx1%=a%!20+(a%!28-a%!4):wy1%=a%!24+(a%!40-a%!16)
12760wx2%=wx1%+(a%!36-a%!28):wy2%=wy1%+(a%!32-a%!40)
12770ORIGIN a%!4-a%!20,a%!16-a%!24
12780IF wind%(w%,1)<>-1 AND wind%(w%,1)<=maxpuzz% THEN
12790 PROCPuzzRect(w%,wx1%,wy1%,wx2%,wy2%)
12800ENDIF
12810IF wind%(w%,1)<>-1 AND wind%(w%,1)>maxpuzz% THEN
12820 PROCWordRect(w%,wx1%,wy1%,wx2%,wy2%)
12830ENDIF
12840ORIGIN 0,0
12850ENDPROC
12860:
12870DEF PROCPuzzRect(w%,x1%,y1%,x2%,y2%)
12880LOCAL p%
12890p%=wind%(w%,1)
12900x1%=(x1%-22) DIV 20:x2%=(x2%-22) DIV 20
12910y1%=(y1%+8) DIV -40:y2%=(y2%+8) DIV -40
12920IF x1%<0 THEN x1%=0
12930IF x1%>=pinfo%(p%,0) THEN x1%=pinfo%(p%,0)-1
12940IF x2%>=pinfo%(p%,0) THEN x2%=pinfo%(p%,0)-1
12950A%=pinfo%(p%,6):B%=pinfo%(p%,7):CALL ChangeSel
12960A%=puzzin%(p%):B%=wind%(w%,20) AND %1:C%=scratch%
12970D%=x1%:E%=y1%:F%=x2%:G%=y2%:CALL CreateHeap
12980CALL Gridsetc
12990ENDPROC
13000:
13010DEF PROCWordRect(w%,x1%,y1%,x2%,y2%)
13020LOCAL p%,addr1%,addr2%,a%,b%,n%,pw%
13030pw%=wind%(w%,20)
13040x1%=(x1%-22) DIV 16:x2%=((x2%-22) DIV 16)+1
13050y1%=((y1%+36) DIV 40)*-1:y2%=(((y2%+36) DIV 40)-1)*-1
13060p%=wind%(w%,1)-maxpuzz%-1:l%=pword%(pw%,2)
13070addr1%=puzzin%(p%):addr2%=addr1%+addr1%!16
13080addr2%=addr1%+addr2%!(l%*4-4)
13090n%=addr2%!0:addr2%+=4
13100FOR a%=1 TO n%
13110 IF a%>=y1% AND a%<=y2% THEN
13120  MOVE pword%(pw%,3),-(a%*40+36)
13130  IF ?addr2% AND 128 THEN
13140   SYS "Wimp_SetColour",3:SYS "OS_WriteC",?addr2% EOR 128
13150  ELSE
13160   SYS "Wimp_SetColour",7:SYS "OS_WriteC",?addr2%
13170  ENDIF
13180  SYS "OS_WriteN",addr2%+1,l%-1
13190  addr2%+=l%
13200 ELSE
13210  addr2%+=l%
13220 ENDIF
13230NEXT
13240ENDPROC
13250:
13260DEF FNWord(n%,addr%)
13270A%=n%:B%=addr%:C%=b2%:CALL Word
13280=$b2%
13290LOCAL off%,a%,l%,c%,a$,b%
13300IF n%=&FFFF THEN =""
13310a%=addr%+addr%!16
13320b%=addr%+addr%!12
13330l%=0:c%=2
13340REPEAT
13350 IF n%<(!(b%+c%*4)) AND n%>=(!(b%+c%*4-4)) THEN l%=c%
13360 c%+=1
13370UNTIL l%<>0
13380a%=addr%+a%!(l%*4-4)
13390a%=a%+(n%-!(b%+l%*4-4))*l%+4
13400a$=""
13410FOR c%=0 TO l%-1
13420a$+=CHR$(a%?c%)
13430NEXT
13440=a$
13450:
13460DEF FNWNum(hand%)
13470LOCAL a%,f%
13480f%=-1
13490FOR a%=0 TO numwind%
13500 IF wind%(a%,0)=hand% THEN f%=a%
13510NEXT
13520=f%
13530:
13540DEF FNINum(w%,hand%)
13550LOCAL a%,f%,h%
13560f%=-1
13570h%=wind%(w%,0)
13580FOR a%=0 TO numicon%
13590 IF icon%(a%,9)=hand% AND icon%(a%,5)=h% THEN f%=a%
13600NEXT
13610=f%
13620:
13630DEF FNIFlags(w%,i%)
13640iconst%!0=wind%(w%,0)
13650iconst%!4=icon%(i%,9)
13660SYS "Wimp_GetIconState",,iconst%
13670=iconst%!24
13680:
13690REM Just about the only time I've ever
13700REM passed an array to a procedure.
13710REM (and got away with both my eyebrows!!!) (never mind)
13720DEF FN1stFree(array%(),maxdim%)
13730LOCAL a%,f%
13740a%=-1:f%=-1
13750REPEAT
13760 a%+=1
13770 IF array%(a%)=0 THEN f%=a%
13780UNTIL f%<>-1 OR a%=maxdim%
13790=f%
13800:
13810DEF FNPNumOfWords(addr%)
13820=!(!(addr%+addr%!12)*4+addr%+addr%!12)
13830:
13840DEF FNWordAddr(l%,w%,addr%)
13850LOCAL addr1%
13860addr1%=addr%+addr%!16:addr1%=addr%+addr1%!(l%*4-4)
13870=addr1%+4+l%*w%
13880:
13890DEF FNClueAddr(c%,d%,addr%)
13900LOCAL addr1%
13910IF d%=0 addr1%=addr%+addr%!24 ELSE addr1%=addr%+addr%!28
13920=addr1%+c%*8-4
13930:
13940DEF PROCInitCreateJig
13950LOCAL p%,addr1%,addr2%,n%,l%
13960b%!0=wind%(1,0):b%!4=icon%(14,9)
13970b%!8=0:b%!12=1<<21
13980SYS "Wimp_SetIconState",,b%
13990p%=FN1stFree(pfree%(),maxpuzz%)
14000IF p%=-1 THEN PROCError2nd(3):ENDPROC
14010create%(0)=VAL($data%(icon%(11,7),0))
14020create%(1)=VAL($data%(icon%(12,7),0))
14030create%(2)=(FNIFlags(1,13)>>21) AND %1
14040IF create%(0)<30 THEN PROCError2nd(1):ENDPROC
14050IF create%(1)<15 THEN PROCError2nd(2):ENDPROC
14060IF create%(0)>99 THEN PROCError2nd(7):ENDPROC
14070IF create%(1)>99 THEN PROCError2nd(8):ENDPROC
14080IF nxtpuzzst%+32>=puzzend% THEN
14090 PROCError2nd(4)
14100 ENDPROC
14110ENDIF
14120b%!0=wind%(1,0):b%!4=icon%(14,9)
14130b%!8=1<<22:b%!12=1<<22
14140SYS "Wimp_SetIconState",,b%
14150create%(3)=%00:create%(4)=0:create%(5)=p%
14160create%(6)=nxtpuzzst%:create%(7)=puzzend%-nxtpuzzst%
14170b%!0=wind%(1,0):b%!4=icon%(14,9)
14180b%!8=1<<22:b%!12=1<<22
14190SYS "Wimp_SetIconState",,b%
14200SYS "Hourglass_On"
14210A%=create%(0)-1:B%=create%(1)-1:CALL csize%
14220A%=create%(6):B%=create%(7):CALL cpuzzarea%
14230CALL cinitvar%
14240CALL createjig%
14250SYS "Hourglass_Off"
14260b%!0=wind%(1,0):b%!4=icon%(14,9)
14270b%!8=1<<22:b%!12=0<<22
14280SYS "Wimp_SetIconState",,b%
14290IF !result%=-1 THEN
14300 b2%!0=0
14310 $(b2%+4)=error$(4)+CHR$(0)
14320 SYS "Wimp_ReportError",b2%,%10101,"!JigWord"
14330 ENDPROC
14340ENDIF
14350IF create%(2)=1 THEN
14360 addr1%=create%(6)
14370 IF RND(2)=1 THEN addr2%=addr1%+addr1%!24 ELSE addr2%=addr1%+addr1%!28
14380 n%=addr2%!0:addr2%+=4
14390 addr2%+=(RND(n%)-1)*8
14400 addr2%?6=addr2%?4:addr2%?7=addr2%?5
14410 n%=addr2%!4 AND &FFFF:l%=addr2%?2
14420 addr2%=addr1%+addr1%!16
14430 addr2%+=l%*4-4
14440 addr2%=addr1%+!addr2%:addr2%+=4:addr2%+=l%*n%
14450 ?addr2%=?addr2% OR 128
14460ENDIF
14470PROCInitialiseDispFile(create%(5))
14480PROCCreatePuzzWind(create%(5))
14490mask%=0
14500ENDPROC
14510:
14520REM a little used procedure
14530DEF PROCCycle
14540b%!0=wind%(1,0):b%!4=icon%(14,9)
14550b%!8=0<<22:b%!12=1<<22
14560SYS "Wimp_SetIconState",,b%
14570mask%=1
14580CALL createinbckgnd
14590ENDPROC
14600:
14610REM A weather vain?
14620DEF PROCNextWindPos(w%)
14630IF nextwpos%=4 THEN nextwpos%=0
14640wind%(w%,2)=100:wind%(w%,5)=800-48*nextwpos%
14650nextwpos%+=1
14660ENDPROC
14670:
14680DEF PROCCreatePuzzWind(p%)
14690LOCAL w%,vx%,vy%,ht%,wid%,addr%,a%,more%
14700IF pinfo%(p%,3)=5 THEN PROCError2nd(6):ENDPROC
14710w%=FN1stFree(wuse%(),numwind%)
14720IF w%=-1 THEN
14730 PROCError2nd(5)
14740 ENDPROC
14750ENDIF
14760wuse%(w%)=-1
14770pinfo%(p%,3)+=1
14780addr%=puzzin%(p%)
14790wid%=addr%!4*20+40:ht%=addr%!8*40+12
14800wind%(w%,1)=p%
14810PROCNextWindPos(w%)
14820IF wid%>=640 THEN
14830 wind%(w%,4)=wind%(w%,2)+640
14840ELSE
14850 wind%(w%,4)=wind%(w%,2)+wid%
14860ENDIF
14870IF ht%>=612 THEN
14880 wind%(w%,3)=wind%(w%,5)-612
14890ELSE
14900 wind%(w%,3)=wind%(w%,5)-ht%
14910ENDIF
14920wind%(w%,6)=0:wind%(w%,7)=0
14930wind%(w%,8)=0:wind%(w%,9)=-ht%
14940wind%(w%,10)=wid%:wind%(w%,11)=0
14950wind%(w%,12)=0:wind%(w%,13)=0
14960wind%(w%,14)=%00010+(255<<24)
14970wind%(w%,15)=1
14980wind%(w%,16)=0:wind%(w%,17)=0
14990wind%(w%,18)=pinfo%(p%,5)
15000wind%(w%,19)=3
15010wind%(w%,20)=%0
15020wind$(w%)="0123456789ABCD"
15030PROCCreateWindow(w%)
15040pinfo%(p%,5)=wind%(w%,18)
15050IF pinfo%(p%,3)=1 THEN
15060 $data%(wind%(w%,18),0)="JigWord "+STR$(p%)
15070ELSE
15080 $data%(wind%(w%,18),0)="JigWord "+STR$(p%)+" "+STR$(pinfo%(p%,3))
15090ENDIF
15100FOR a%=0 TO numwind%
15110 IF wuse%(a%)<>0 AND wind%(a%,1)=p% THEN
15120  IF a%<>w% THEN
15130   !b%=wind%(a%,0)
15140   SYS "Wimp_GetWindowState",,b%:wf%=b%!28
15150   SYS "Wimp_ForceRedraw",-1,b%!4,b%!16,b%!12,b%!16+44
15160  ELSE
15170   PROCOpenWindow(a%,-1)
15180  ENDIF
15190 ENDIF
15200NEXT
15210ENDPROC
15220:
15230DEF PROCCreateWordWind(p%)
15240LOCAL w%,a%,mw%,mh,addr1%,addr2%,icst%,f%,ww%
15250w%=FN1stFree(wuse%(),numwind%)
15260IF w%=-1 THEN PROCError2nd(5):ENDPROC
15270ww%=FN1stFree(pwuse%(),maxpword%)
15280IF ww%=-1 THEN PROCError2nd(5):ENDPROC
15290wuse%(w%)=-1
15300pwuse%(ww%)=-1
15310addr1%=puzzin%(p%):addr2%=addr1%+addr1%!12
15320mw%=!addr2%:addr2%+=8
15330IF mw%<LEN(" �   Letters   � ") THEN mw%=17
15340mh%=0
15350FOR a%=2 TO addr2%!-8
15360IF (!addr2%-addr2%!-4)>mh% THEN mh%=!addr2%-addr2%!-4:pword%(ww%,2)=a%:f%=-1
15370addr2%+=4
15380NEXT
15390mh%+=2
15400wind%(w%,1)=p%+maxpuzz%+1
15410wind%(w%,8)=0:wind%(w%,11)=0
15420wind%(w%,9)=-(mh%*40+16)
15430wind%(w%,10)=mw%*16+40
15440PROCNextWindPos(w%)
15450wind%(w%,4)=100+wind%(w%,10)
15460IF wind%(w%,9)<-600 THEN
15470 wind%(w%,3)=200
15480ELSE
15490 wind%(w%,3)=wind%(w%,5)+wind%(w%,9)
15500ENDIF
15510wind%(w%,6)=0:wind%(w%,7)=0
15520wind%(w%,12)=0:wind%(w%,13)=0
15530wind%(w%,14)=%10+(255<<24)
15540wind%(w%,15)=1
15550icst%=pwordiconst%+ww%*3
15560wind%(w%,16)=icst%
15570wind%(w%,17)=3
15580wind%(w%,18)=-1
15590wind%(w%,19)=3
15600wind%(w%,20)=ww%
15610wind$(w%)="JigWord "+STR$(p%)
15620icon%(icst%,0)=wind%(w%,10)/2-120:icon%(icst%,1)=-48
15630icon%(icst%,2)=icon%(icst%,0)+18:icon%(icst%,3)=-8
15640icon%(icst%,4)=%11001+(2<<12)+(7<<24)
15650icon%(icst%,5)=-1:icon%(icst%,6)=0
15660icon%(icst%,7)=-1:icon%(icst%,8)=1:icon$(icst%,0)=CHR$136
15670icst%+=1
15680icon%(icst%,0)=wind%(w%,10)/2+104:icon%(icst%,1)=-48
15690icon%(icst%,2)=icon%(icst%,0)+18:icon%(icst%,3)=-8
15700icon%(icst%,4)=%11001+(2<<12)+(7<<24)
15710icon%(icst%,5)=-1:icon%(icst%,6)=0
15720icon%(icst%,7)=-1:icon%(icst%,8)=1:icon$(icst%,0)=CHR$137
15730icst%+=1
15740icon%(icst%,0)=wind%(w%,10)/2-84:icon%(icst%,1)=-48
15750icon%(icst%,2)=icon%(icst%,0)+168:icon%(icst%,3)=-8
15760icon%(icst%,4)=%100011001+(7<<24)
15770icon%(icst%,5)=0:icon%(icst%,6)=1
15780icon%(icst%,7)=-1:icon%(icst%,8)=11
15790icon$(icst%,0)=STR$(pword%(ww%,2))+" Letters"
15800icon$(icst%,1)=""
15810PROCCreateWindow(w%)
15820pinfo%(p%,8)+=1
15830pinfo%(p%,4)=pinfo%(p%,4) OR %10
15840pword%(ww%,0)=w%
15850pword%(ww%,1)=p%
15860pword%(ww%,3)=wind%(w%,10)/2-pword%(ww%,2)*8
15870pword%(ww%,4)=pword%(ww%,3)+pword%(ww%,2)*16
15880pword%(ww%,5)=mh%-3
15890PROCOpenWindow(w%,-1)
15900ENDPROC
15910:
15920REM IF error trapping enhanced here, remember the grid backgnd col.
15930REM This little horror took me forever. You can change the print ratio
15940REM here if you want a bigger JigWord printed
15950DEF PROCPrintPuzzGrid(w%,p%)
15960LOCAL H%,O%,plx%,prx%,pby%,pty%
15970LOCAL f1%,f2%,x1%,y1%,x2%,y2%
15980H%=OPENOUT(print$)
15990LOCAL ERROR
16000ON ERROR LOCAL RESTORE ERROR:CLOSE#H%:PROCErrorPrint1st:ENDPROC
16010SYS &80145,H%,"JigWord" TO O%
16020LOCAL ERROR
16030ON ERROR LOCAL RESTORE ERROR:SYS&80149,H%:SYS&80145,O%:CLOSE#H%:PROCError1st
16040:
16050SYS &80143 TO,,,plx%,pby%,prx%,pty%
16060b%!0=0:b%!4=-(pinfo%(p%,1)*40+12):b%!8=pinfo%(p%,0)*20+40:b%!12=0
16070b%!16=65536:b%!20=0:b%!24=0:b%!28=65536
16080b%!32=plx%:b%!36=pby%
16090SYS "PDriver_GiveRectangle",%101,b%,b%+16,b%+32,&FFFFFF00
16100:
16110SYS "PDriver_DrawPage",1,b2% TO f1%,,f2%
16120a%=0
16130A%=0:CALL ChangeBckGndCol
16140WHILE f1%
16150 ORIGIN 0,0
16160 REMPROCPuzzRect(w%,b2%!0,b2%!4,b2%!8,b2%!12)
16170 x1%=(b2%!0-22) DIV 20:x2%=(b2%!8-22) DIV 20
16180 y1%=(b2%!4+8) DIV -40:y2%=(b2%!12+8) DIV -40
16190 IF y1%>y2% THEN SWAP y1%,y2%
16200 IF x1%<0 THEN x1%=0
16210 IF x1%>=pinfo%(p%,0) THEN x1%=pinfo%(p%,0)-1
16220 IF x2%>=pinfo%(p%,0) THEN x2%=pinfo%(p%,0)-1
16230 A%=0:B%=0:CALL ChangeSel
16240 A%=puzzin%(p%):B%=wind%(w%,20) AND %1:C%=scratch%
16250 D%=x1%:E%=y1%:F%=x2%:G%=y2%:CALL CreateHeap
16260 CALL Gridsetc
16270 a%+=1
16280 OSCLI "SET A1"+CHR$(64+a%)+" "+STR$(x1%)
16290 OSCLI "SET A2"+CHR$(64+a%)+" "+STR$(y1%)
16300 OSCLI "SET A3"+CHR$(64+a%)+" "+STR$(x2%)
16310 OSCLI "SET A4"+CHR$(64+a%)+" "+STR$(y2%)
16320 SYS "PDriver_GetRectangle",,b2% TO f1%,,f2%
16330ENDWHILE
16340A%=3:CALL ChangeBckGndCol
16350:
16360SYS "PDriver_EndJob",H%
16370RESTORE ERROR
16380SYS "PDriver_SelectJob",O%
16390RESTORE ERROR
16400CLOSE#H%
16410ENDPROC
16420:
16430DEF PROCPrintWordList(p%)
16440LOCAL addr1%,addr2%,n%,o%,nw%,c%,t$,d%,m%
16450addr1%=puzzin%(p%)
16460addr2%=addr1%+addr1%!16
16470o%=addr2%!0
16480*FX 3 10
16490PRINT STRING$(pwidth%/2-8," ");"JigWord word list"
16500PRINT STRING$(pwidth%/2-8," ");"-----------------"
16510PRINT:PRINT:PRINT
16520FOR n%=2 TO o%
16530 addr2%+=4
16540 IF !addr2%<>0 THEN
16550  addr3%=addr1%+!addr2%
16560  nw%=!addr3%:addr3%+=4
16570  t$=STR$(n%)+" letter word"
16580  IF nw%>1 THEN t$+="s"
16590   PRINT t$'STRING$(LEN(t$),"-"):PRINT
16600   m%=pwidth% DIV (n%+1):d%=0
16610   FOR c%=1 TO nw%
16620    d%+=1
16630    SYS "OS_WriteN",addr3%,n%:PRINT " ";
16640    IF d%=m% THEN SYS "OS_NewLine":d%=0
16650    addr3%+=n%
16660   NEXT
16670   PRINT:PRINT:PRINT
16680 ENDIF
16690NEXT
16700*FX 3 0
16710ENDPROC
16720:
16730REM If you think the comments are bad in this program
16740REM you should have seen the machine-code source code.
16750REM I apologise if there are some silly words in the
16760REM dictionary.
16770REM Anyone who doesn't get the room 101 bit, go and read
16780REM '1984' by George Orwell. It's a lot more interesting
16790REM that this. And a lot easier to understand.
16800:
16810REM I think we should do a survey. I'm programming at the
16820REM moment on ARMBE, with red text on black. What colour
16830REM schemes does everyone else use?
16840:
16850:
16860:
16870Don't you just luuurve it!
16880
16890********

� >!RunImage
I� Remember to test if CreateMenu reports an error abt indirected data
F� Remember to do PROCDeleteMStruct for all those difficult windows
(4� � � 0:ș "Wimp_CloseDown":� �$;" at line ";�:�
2:
<9ș "Wimp_Initialise",200,&4B534154,"JigWord" � ,task%
F:
P�Initialise
ZA%=hilitecol%:� ChangeHiCol
d�CreateIcon(0)
n:
x�CreateWindow(1)
�:
�'quit%=�:menus%=-1:menuw%=-1:mask%=1
��
� � � � �Error1st
�! ș "Wimp_Poll",mask%,b% � p%
� Ȏ p% �
�  � 0:�PROCCycle
�  � 1:�P_1(b%)
�"  � 2:ș "Wimp_OpenWindow",,b%
�  � 3:�P_3(b%)
�  � 6:�P_6(b%)
�  � 8:�P_8(b%)
�  � 9:�P_9(b%)
  � 17,18:�Receive(b%)
 �
� quit%
"'ș "Wimp_CloseDown",task%,&4B534154
,�
6:
@& "Oh no! An error, this can't be!"
J)   'Sorry, but it's worse than that.'
T4 "Worse? It, it, it's not a fatal error, is it?"
^*   'That just about sums it up. Sorry'
h "Arghhhh!"
r:
|� �Error1st
�
!error%=�
�#$(error%+4)=�$+" at line "+�(�)
�+ș "Wimp_ReportError",error%,,"JigWord"
�ș "Wimp_CloseDown"
��
��
�:
�4 "Stop messing with my mind you little horrors!"
�
�8   'But it's our job. Don't think of us as an error,
�4   more as messages from RISCOS - postcards from
�   ROM.'
�
9 "ROM, ROM? Isn't that where the volcano appeared and
; wiped out hundreds of innocent programmers? I saw that
 video last night."
&
07   'You really do have problems. I don't think your
:,   sliced loaf goes right to the crust.'
D
N= "And your disc drive head doesn't go to the last track."
X
b5   'Touchy touchy, aren't we. Well, onto the next
l   procedure.'
v:
�� �Error2nd(err%)
�!error%=err%
�$(error%+4)=error$(err%)
�+ș "Wimp_ReportError",error%,,"JigWord"
��
�:
� "Noooooooo!"
�%   'Don't worry about it. Relax.'
� "Arghhhhhh!"
�8   'It's only another type of fatal internal error.'
�
�   'And stop dribbling!'
�:
� �Error3rd

!error%=0
$(error%+4)=err$
 +ș "Wimp_ReportError",error%,,"JigWord"
*ș "Wimp_CloseDown"
4�
>�
H:
R "?"
\
f/   'That's it, take him away lads. Into the
p'   land of eternal internal error.'
z
� "?"
�
�   'Take him to room 101.'
�
�  "What, what's in room 101?"
�
�.   'You know what is in room 101. Everyone
�!   knows what is in room 101'
�
� "Arghhhhh!"
�:
�� �ErrorPrint1st
�
!error%=�
#$(error%+4)=�$+" at line "+�(�)
+ș "Wimp_ReportError",error%,,"JigWord"
� 'Snigger snigger.'
$�
.:
8� �Initialise
Bhilitecol%=9
Lprint$="printer:"
Vpwidth%=80
`:
j� b% 256
t
� b2% 256
~� code% 4096
�:
�� creates% 7*1024
� cjiglen%=8192:cscratlen%=512
�+� cjigst% cjiglen%,cscratst% cscratlen%
�:
�6ș "OS_ReadVarVal","JigWord$Dir",b%,255,0,0 � ,,l%
�
b%?l%=&0D
�
path$=$b%
�h%=�(path$+".Words")
�9wordlen%=(�#h%)+((�#h%)<<8)+((�#h%)<<16)+((�#h%)<<24)
��#h%
�� wordst% wordlen%
+� "Load "+path$+".Words 10_"+�(wordst%)

:
.� "Load "+path$+".CreateO 10_"+�(creates%)
result%=creates%
("changejig%=creates%+creates%!4
2 cwordst%=creates%+creates%!8
<csize%=creates%+creates%!12
F&changecscrat%=creates%+creates%!16
P#cpuzzarea%=creates%+creates%!20
Z"cinitvar%=creates%+creates%!24
d#createjig%=creates%+creates%!28
ncrand%=creates%+creates%!32
xA%=�(-�):A%=�:� crand%
�'A%=cjigst%:B%=cjiglen%:� changejig%
�A%=wordst%:� cwordst%
�.A%=cscratst%:B%=cscratlen%:� changecscrat%
�:
�� dispjigst% 6144
�1� "Load "+path$+".JigDispO 10_"+�(dispjigst%)
�(ChangeHiCol=dispjigst%+dispjigst%!00
�(puzzshuffle=dispjigst%+dispjigst%!04
�'puzzselect=dispjigst%+dispjigst%!08
�!HFit=dispjigst%+dispjigst%!12
�!VFit=dispjigst%+dispjigst%!16
�&ChangeJig=dispjigst%+dispjigst%!20
�&ChangeSel=dispjigst%+dispjigst%!24
'CreateHeap=dispjigst%+dispjigst%!28
%Gridsetc=dispjigst%+dispjigst%!32
!Word=dispjigst%+dispjigst%!36
")puzzshflags1=dispjigst%+dispjigst%!40
,'nextpuzzst=dispjigst%+dispjigst%!44
6!selh=dispjigst%+dispjigst%!48
@!selv=dispjigst%+dispjigst%!52
J fit=dispjigst%+dispjigst%!56
T!hlen=dispjigst%+dispjigst%!60
^!vlen=dispjigst%+dispjigst%!64
h,ChangeBckGndCol=dispjigst%+dispjigst%!68
r:
|err%=�:err$=""
�� error$(10),error% 256
�� a%=0 � 8
� � error$(a%)
��
�:
�maxpuzz%=10
�;� puzzst% 32*1024,puzzin%(maxpuzz%),pinfo%(maxpuzz%,10)
�� puzzim% 1024
�puzzend%=puzzst%+32*1024
�nxtpuzzst%=puzzst%
�� pfree%(maxpuzz%)
�:
�� scratch% 4096
:
maxpword%=10
+� pword%(maxpword%,5),pwuse%(maxpword%)
&:
0� create%(10)
::
D9� sprarea%(4):� sprite area addresses, 0 is Wimp area
Nsprarea%(0)=1
X:
bnumicon%=75:nexticon%=0
l)� icon%(numicon%,9),icon$(numicon%,1)
v� iconst% 64
��ReadIconData
�pwordiconst%=nexticon%
�nexticon%+=(maxpword%+1)*3
�:
�&nummenu%=10:nextmenu%=0:maxitem%=9
�;� item%(nummenu%,maxitem%,4),item$(nummenu%,maxitem%,1)
�'� menu%(nummenu%,1),menu$(nummenu%)
�$� menust% 1024,menuin%(nummenu%)
�8nxtmenust%=menust%:menuend%=menust%+1024:nextmenu%=0
��ReadMenuData
�:
�&numms%=10:� number menu structures
�(� mstructst% 1023,mstructin%(numms%)
6nxtmstruct%=mstructst%:mstructend%=mstructst%+1024
�ReadMStructData
:
 numdat%=200
*#� indata% 1024,data%(numdat%,3)
4dataend%=indata%+1024
>!nextdat%=0:nextdatst%=indata%
H� indirected data
RB� data%(item num,[data start,length,validation{-1},length{-1}]
\:
fAnextwpos%=0:� incremented to allow windows to open at offsets
pnumwind%=15
z8� wind%(numwind%,20),wind$(numwind%),wuse%(numwind%)
�� wbuff% 512
��ReadWindowData
��
�:
�0  Anyone wanting to know how the puzzles are
�6  created, tough! It's all in machine code. And so
�  is the display code.
�:
�� �InitialiseDispFile(p%)
�pinfo%(p%,0)=nxtpuzzst%!4
�pinfo%(p%,1)=nxtpuzzst%!8
�)pinfo%(p%,2)=�PNumOfWords(nxtpuzzst%)
�pinfo%(p%,3)=0
	pinfo%(p%,4)=0
	pinfo%(p%,5)=-1
	pinfo%(p%,6)=-1
	$pinfo%(p%,7)=-1
	.pinfo%(p%,8)=0
	8pinfo%(p%,9)=0
	Bpinfo%(p%,10)=0
	Lpfree%(p%)=-1
	Vpuzzin%(p%)=nxtpuzzst%
	`nxtpuzzst%+=!nxtpuzzst%
	j�
	t:
	~� �ReadIconData
	�� a%,b%,n%
	�
� �TlP
	�� n%
	�� a%=0 � n%-1
	� � b%=0 � 9
	�  � icon%(a%,b%)
	�%  � icon%(a%,6)=4 � icon%(a%,6)=1
	� �
	� � icon$(a%,0),icon$(a%,1)
	�G �CheckIconData(a%,icon%(a%,8),icon$(a%,0),icon$(a%,1),icon%(a%,4))
	� � err% � �Error3rd
	��
nexticon%=n%

�
$� �CheckIconData(i%,l%,a$,b$,f%)
Ȏ icon%(a%,6) �
(	 � 0:
23  � �(a$)>12 � (f% � %1)<>%1 � (f% � 256)=256 �
<2   err%=�:err$="Icon "+�(i%)+" is invalid (0)"
F   �
P  �
Z	 � 1:
d3  � �(a$)+1>l% � (f% � %1)<>%1 � (f% � 256)=0 �
n2   err%=�:err$="Icon "+�(i%)+" is invalid (1)"
x   �
�  �
�	 � 2:
�5  � �(a$)>12 � (f% � %10)<>%10 � (f% � 256)=256 �
�2   err%=�:err$="Icon "+�(i%)+" is invalid (2)"
�   �
�  �
�	 � 3:
�:  � �(a$)+1>l% � b$="" � (f% � %10)=0 � (f% � 256)=0 �
�2   err%=�:err$="Icon "+�(i%)+" is invalid (3)"
�   �
�  �
�	 � 4:
�@  err%=�:err$="Icon "+�(i%)+" has type 4, please use type 1"
 
6  err%=�:err$="Icon "+�(i%)+" has an unknown type"
  �
"�
,�
6:
@� �ReadMenuData
J� a%,n%,b%
T
� �DnO
^� n%
h� a%=0 � n%-1
r � menu$(a%)
| � menu%(a%,0),menu%(a%,1)
� � b%=0 � menu%(a%,1)-1
�C  � item%(a%,b%,0),item%(a%,b%,1),item%(a%,b%,2),item%(a%,b%,3)
�  � item%(a%,b%,4)
�%  � item$(a%,b%,0),item$(a%,b%,1)
� �
� �CheckMenuData(a%)
� � err% � �Error3rd
��
��
�� �CheckMenuData(m%)
�� b%,f%
�� �(menu$(m%))>12 �
�) err$="Menu "+�(a%)+" title too long"
 err%=�
 �
�
&� b%=0 � menu%(m%,1)-1
0 f%=item%(m%,b%,3)
:' � (f% � %100001)<>%10001 � f%<>0 �
DG  err$="Menu "+�(m%)+" item "+�(b%)+" icon flags should be %100001"
N  err%=�
X  �
b �
l, � �(item$(m%,b%,0))>12 � (f% � 256)=0 �
v?  err$="Menu "+�(m%)+" item "+�(b%)+" should be indirected"
�  err%=�
�  �
� �
�< � (f% � 256)=256 � �(item$(m%,b%,0))+1<item%(m%,b%,4) �
�;  err$="Menu "+�(m%)+" item "+�(b%)+" should is a mess"
�  err%=�
�  �
� �
��
��
�:
�� �ReadMStructData
�� a%,n%,o%,addr%,d%


� �tNR

� n%

addr%=nxtmstruct%

 � a%=0 � n%-1

* mstructin%(a%)=addr%

4 �

>
  � d%

H  !addr%=d%

R  addr%+=4

\ � d%=-1

f�

pnstmstruct%=addr%

z�

�:

�� �ReadWindowData

�� a%,n%,b%

�
� �tHN

�� n%

�� a%=0 � n%-1

� � wind$(a%)

� � b%=0 � 20

�  � wind%(a%,b%)

� �

� wuse%(a%)=-1

��

��
:
I�  If you get the first message, congratulations! It took me forever.
:
$I� "Not enough indirected data workspace, tell a competent programmer"
.� "Minimum width is 30"
8� "Minimum height is 15"
B� "Too many puzzles"
L"� "Not enough room for puzzle"
V+� "Not enough workspace to open window"
`(� "Only 5 views of a puzzle allowed"
j� "Maximum width is 99"
t� "Maximum height is 99"
~?� Actually 255*255 is the biggest size. But also impossible
�:
�
� Windows
�� 3
�� About this program
�� -1,-1, 0,0,604,212, 0,0
�� 0,-212,604,0, 0,0
�� %10010+(132<<24)
�� 1
�� 1,8,-1,0,0
�
�� "JigWord Creation"
�!� -1,-1, 200,200,456,800, 0,0
� 0,-256,0,0, 0,200

� %10010+(135<<24)+(1<<12)
� 1,9,6,-1,3,0

(� "About this Puzzle"
2� -1,-1,0,0,332,160, 0,0
<� 0,-160,332,0, 0,0
F� %10010+(132<<24)
P� 1
Z� 15,6,-1,0,0
d:
n:
x� Menus
�� 3
�� JigWord,72,2
�� -1,%0000,0,0,0,Info,
�� -1,%10000000,-1,0,0,Quit,
�
�� JigWord,136,5
�� -1,%0000,2,0,0,Info,
�� -1,%0000,-1,0,0,Cheat,
�� -1,%0000,-1,0,0,Words,
�� -1,%0000,-1,0,0,New View,
� � -1,%10000000,-1,0,0,Print,
�:
�� Words,136,2
� -1,%0000,-1,0,0,New View,
 � -1,%10000000,-1,0,0,Print,
:
":
,:
6� Icons
@� 21
J� 0,0,68,68,(3<<12)+%10
T� -1,2,-1,9,-1
^� "!jigword",
h
r/� 20,-48,156,-8,%1000010001+(7<<24)+(2<<28)
|� 0,0,-1,8,-1,"Name:",
�1� 20,-100,156,-60,%1000010001+(7<<24)+(2<<28)
�� 0,0,-1,8,-1,"Purpose:",
�2� 20,-152,156,-112,%1000010001+(7<<24)+(2<<28)
�� 0,0,-1,8,-1,"Author:",
�2� 20,-204,156,-164,%1000010001+(7<<24)+(2<<28)
�� 0,0,-1,8,-1,"Version:",
�4�DATA 160,-48,598,-8,%1000111101+(7<<24)+(0<<28)
�0� 160,-52,598,-4,%1000111101+(7<<24)+(0<<28)
�� 0,0,-1,9,-1,"!JigWord",
�6�DATA 160,-100,598,-60,%1000111101+(7<<24)+(0<<28)
�2� 160,-104,598,-56,%1000111101+(7<<24)+(0<<28)
� � 0,0,-1,8,-1,"Puzzlement!",
�7�DATA 160,-152,598,-112,%1100111101+(7<<24)+(0<<28)
3� 160,-156,598,-108,%1100111101+(7<<24)+(0<<28)
%� 0,1,-1,16,-1,"P.Bentley, 1991",
7�DATA 160,-204,598,-164,%1100111101+(7<<24)+(0<<28)
&3� 160,-208,598,-160,%1100111101+(7<<24)+(0<<28)
0)� 0,1,-1,20,-1,"1.62 (05, Apr 1992)",
:
D'� 20,-48,236,-4,%1000010001+(7<<24)
N� 0,0,-1,8,-1,"Width:",
X)� 20,-100,236,-56,%1000010001+(7<<24)
b� 0,0,-1,8,-1,"Height:",
l.�DATA 20,-152,236,-112,%1100010001+(7<<24)
v'�DATA 0,1,-1,14,-1,"Word density:",
�9� 240,-48,304,-4,%0100111101+(7<<24)+(0<<28)+(15<<12)
�� 0,1,-1,3,-1,"30","A0-9"
�;� 240,-100,304,-56,%0100111101+(7<<24)+(0<<28)+(15<<12)
�� 0,1,-1,3,-1,"15","A0-9"
�@�DATA 240,-152,304,-112,%0100111101+(7<<24)+(0<<28)+(15<<12)
��DATA 0,1,-1,3,-1,,"A0-9"
�;� 48,-168,284,-120,%1100010011+(7<<24)+(1<<28)+(11<<12)
�0� 0,1,-1,12,-1,"Start Word:","Soptoff,opton"
�@�DATA 144,-224,284,-180,%1100010011+(7<<24)+(1<<28)+(11<<12)
�-�DATA 0,1,-1,6,-1,"Grid:","Soptoff,opton"
�@� 120,-232,224,-188,%111101+(7<<24)+(12<<28)+(9<<12)+(1<<16)
�� 0,0,-1,7,-1,"Create",
�
'� 20,-48,236,-8,%1000010001+(7<<24)
� 0,0,-1,6,-1,"Width:",
)� 20,-100,236,-60,%1000010001+(7<<24)
 � 0,0,-1,7,-1,"Height:",
**� 20,-152,236,-112,%1100010001+(7<<24)
4#� 0,1,-1,14,-1,"No. of words:",
>4�DATA 240,-48,312,-8,%0000111101+(7<<24)+(0<<28)
H0� 240,-52,312,-4,%0000111101+(7<<24)+(0<<28)
R� 0,0,-1,14,-1,"",
\2� 240,-104,312,-56,%0000111101+(7<<24)+(0<<28)
f� 0,0,-1,14,-1,"",
p3� 240,-156,312,-108,%0000111101+(7<<24)+(0<<28)
z� 0,0,-1,14,-1,"",
�:
�:
�� menu structures
�� 3
�� 0,&8000,-1
�� 2,&8001,-1
�� &8002,-1
�:
�(� �SIcon(s$,but%,h%,x1%,y1%,x2%,y2%)
�b%!0=h%
�b%!4=x1%
�b%!8=y1%
�
b%!12=x2%

b%!16=y2%
b%!20=%10+(but%<<12)
$(b%+24)=s$
$!ș "Wimp_CreateIcon",,b% � h%
.=h%
8:
B� �CreateWindow(w%)
L� addr%,offset%,h%,a%
Vaddr%=wbuff%
`+addr%!0=wind%(w%,2):addr%!4=wind%(w%,3)
j,addr%!8=wind%(w%,4):addr%!12=wind%(w%,5)
t-addr%!16=wind%(w%,6):addr%!20=wind%(w%,7)
~addr%!24=-1
�addr%!28=wind%(w%,14)
�Ȏ wind%(w%,15) �
�	 � 1:
�  addr%?32=7:addr%?33=2
�  addr%?34=7:addr%?35=1
�  addr%?36=3:addr%?37=1
�  addr%?38=12:addr%?39=0
�  :
��
�-addr%!40=wind%(w%,8):addr%!44=wind%(w%,9)
�/addr%!48=wind%(w%,10):addr%!52=wind%(w%,11)
�� �(wind$(w%))>12 �
 addr%!56=%100011001

�
 addr%!56=%11001
�
('addr%!60=wind%(w%,19)<<12:� buttons
2$addr%!64=1:� sprite area pointer
<;addr%?68=wind%(w%,12) � 256:addr%?69=wind%(w%,12) � 256
F;addr%?70=wind%(w%,13) � 256:addr%?71=wind%(w%,13) � 256
P� �(wind$(w%))<=12 �
Z $(addr%+72)=wind$(w%)
d�
n � wind%(w%,18)<>-1 �
x$  addr%!72=data%(wind%(w%,18),0)
�  addr%!76=-1
�$  addr%!80=data%(wind%(w%,18),1)
�&  $data%(wind%(w%,18),0)=wind$(w%)
� �
�/  � (nextdatst%+�(wind$(w%))+1)>=dataend% �
�   �Error2nd(0)
�   �
�  �
�'  wind%(w%,18)=nextdat%:nextdat%+=1
�A  data%(wind%(w%,18),0)=nextdatst%:nextdatst%+=�(wind$(w%))+1
�*  data%(wind%(w%,18),1)=�(wind$(w%))+1
�  data%(wind%(w%,18),2)=-1
�  data%(wind%(w%,18),3)=-1
$  addr%!72=data%(wind%(w%,18),0)
  addr%!76=-1
$  addr%!80=data%(wind%(w%,18),1)
"&  $data%(wind%(w%,18),0)=wind$(w%)
, �
6�
@addr%!84=wind%(w%,17)
Joffset%=88
T� wind%(w%,17)>0 �
^	 h%=0
h4 � a%=wind%(w%,16) � wind%(w%,16)+wind%(w%,17)-1
r icon%(a%,9)=h%
|# �CreateIData(a%,addr%+offset%)
� offset%+=32
�
 h%+=1
� �
��
�/ș "Wimp_CreateWindow",,addr% � wind%(w%,0)
�3� a%=wind%(w%,16) � wind%(w%,16)+wind%(w%,17)-1
� icon%(a%,5)=wind%(w%,0)
��
��
�:
�� �CreateMenu(m%)
�� a%,addr%,a$,b$,f%,id%
�+menuin%(m%)=nxtmenust%:addr%=nxtmenust%
$addr%=menu$(m%)
addr%?12=7:addr%?13=2
addr%?14=7:addr%?15=0
&addr%!16=menu%(m%,0)
0addr%!20=44:addr%!24=0
:
addr%+=28
D� a%=0 � menu%(m%,1)-1
N addr%!0=item%(m%,a%,1)
X � item%(m%,a%,2)<>-1 �
b  � item%(m%,a%,2)<&8000 �
l&   addr%!4=wind%(item%(m%,a%,2),0)
v  �
�,   addr%!4=menuin%(item%(m%,a%,2)-&8000)
�  �
� �
�  addr%!4=-1
� �
� f%=item%(m%,a%,3)
�
 � f%=0 �
�  addr%!8=(1<<5)+(7<<24)+1
� �
�  addr%!8=f%
� �
� a$=item$(m%,a%,0)
� b$=item$(m%,a%,1)
? � �(a$)>12 � b$<>"" � (f% � 256)=256 � item%(m%,a%,4)>12 �
  � item%(m%,a%,0)=-1 �
/   � (nextdatst%+�(a$)+�(b$)+2)>=dataend% �
     �Error2nd(0)
*	    �
4   �
>2   id%=nextdat%:item%(m%,a%,0)=id%:nextdat%+=1
H9   data%(id%,0)=nextdatst%:nextdatst%+=item%(m%,a%,4)
R"   data%(id%,1)=item%(m%,a%,4)
\   � b$<>"" �
f3    data%(id%,2)=nextdatst%:nextdatst%+=�(b$)+1
p    data%(id%,3)=�(b$)+1
z   �
�'    data%(id%,2)=-1:data%(id%,3)=-1
�   �
�  �
�   id%=item%(m%,a%,0)
�  �
�  $data%(id%,0)=a$
�  � b$<>"" �
�(   $(data%(id%,0)+item%(m%,a%,4))=b$
�  �
�  addr%!12=data%(id%,0)
�  addr%!16=data%(id%,2)
�  addr%!20=data%(id%,1)
�  addr%!8=addr%!8 � (1<<8)
 �
   $(addr%+12)=item$(m%,a%,0)
 �
$ addr%+=24
.�
8nxtmenust%=addr%
B�
L:
V� �CreateIcon(i%)
`iconst%!0=icon%(i%,5)
j�CreateIData(i%,iconst%+4)
t/ș "Wimp_CreateIcon",,iconst% � icon%(i%,9)
~�
�:
�� �CreateIData(i%,addr%)
�� t%,a$,b$
�!a$=icon$(i%,0):b$=icon$(i%,1)
�addr%!0=icon%(i%,0)
�addr%!4=icon%(i%,1)
�addr%!8=icon%(i%,2)
�addr%!12=icon%(i%,3)
�addr%!16=icon%(i%,4)
�t%=icon%(i%,6)
�Ȏ t% �
�  � 0:$(addr%+20)=icon$(i%,0)
 � 1,4:

G  �IndirectText(addr%+20,a$,b$,icon%(i%,7),icon%(i%,8),icon%(i%,7))
  � 2:$(addr%+20)=icon$(i%,0)
	 � 3:
(G  �IndirectText(addr%+20,a$,"",icon%(i%,7),icon%(i%,8),icon%(i%,7))
2'  addr%!24=sprarea%(�(icon$(i%,1)))
<	 � 4:
F) � 5:addr%!20=0:addr%!24=0:addr%!28=0
P�
Z�
d:
n� �CreateMStruct(s%,x%,y%)
x� a%,addr%,d%,e%
�nxtmenust%=menust%
�addr%=mstructin%(s%)
��
�
 e%=d%
� d%=!addr%
�
 addr%+=4
� � d%<>-1 �
�<  � d%<&8000 � �CreateWindow(d%) � �CreateMenu(d%-&8000)
� �
�� d%=-1
�1ș "Wimp_CreateMenu",,menuin%(e%-&8000),x%,y%
�
menus%=s%
��
:
(� �IndirectText(a%,a$,b$,p%,l%,� p%)

� p%=-1 �
"* � (nextdatst%+l%+�(b$)+1)>=dataend% �
,  �Error2nd(0)
6  �
@ �
J p%=nextdat%:nextdat%+=1
T* data%(p%,0)=nextdatst%:nextdatst%+=l%
^ data%(p%,1)=l%
h � b$<>"" �
r0  data%(p%,2)=nextdatst%:nextdatst%+=�(b$)+1
|  data%(p%,3)=�(b$)+1
� �
�#  data%(p%,2)=-1:data%(p%,3)-=1
� �
��
�$data%(p%,0)=a$
� � b$<>"" � $(data%(p%,2))=b$
�a%!0=data%(p%,0)
�a%!4=data%(p%,2)
�a%!8=data%(p%,1)
��
�:
�� �DeleteWindow(w%)
�6!wbuff%=wind%(w%,0):ș "Wimp_DeleteWindow",,wbuff%
wind%(w%,0)=-1
�
:
&� �DestroyWindow(w%)
0� a%
:6!wbuff%=wind%(w%,0):ș "Wimp_DeleteWindow",,wbuff%
Dwind%(w%,0)=-1
Nwuse%(w%)=0
X� wind%(w%,17)>0 �
b4 � a%=wind%(w%,16) � wind%(w%,16)+wind%(w%,17)-1
l  icon%(a%,5)=0
v �
��
��
�:
�� �DeleteMStruct(s%)
�� addr%,d%
�addr%=mstructin%(s%)
��
� d%=!addr%
�
 addr%+=4
�, � d%<>-1 � d%<&8000 � �DeleteWindow(d%)
�� d%=-1
�
menus%=-1
�
menuw%=-1
�
:
� Redraw_Window_Request
 � �P_1(a%)
*� more%,w%
4w%=�WNum(a%!0)
>&ș "Wimp_RedrawWindow",,a% � more%
Hȕ more%
R �WindRect(w%,a%)
\' ș "Wimp_GetRectangle",,a% � more%
f�
p�
z:
�� Close_Window_Request
�� �P_3(a%)
�� w%,c%,p%,ret%
�w%=�WNum(!a%)
�p%=wind%(w%,1)
�)� p%=-1 � ș "Wimp_CloseWindow",,a%:�
�� p%>maxpuzz% �
� p%-=maxpuzz%+1
�' �DestroyWindow(w%):pinfo%(p%,8)-=1
�: � pinfo%(p%,8)=0 � pinfo%(p%,4)=pinfo%(p%,4) � �(%11)
� pwuse%(wind%(w%,20))=0
� �
��
� pinfo%(p%,3)=1 �
G b2%!0=0:$(b2%+4)="Are you sure you want to lose this puzzle?"+�(0)
8 ș "Wimp_ReportError",b2%,%10111,"!JigWord" � ,ret%
$ � ret%=0 � ret%=2 � �
.�
8�DestroyWindow(w%)
Bpinfo%(p%,3)-=1
L+� pinfo%(p%,3)=0 � �DestroyPuzzle(p%):�
V� pinfo%(p%,3)=1 �
`, $data%(pinfo%(p%,5),0)="JigWord "+�(p%)
j�
t@ $data%(pinfo%(p%,5),0)="JigWord "+�(p%)+" "+�(pinfo%(p%,3))
~�
�� c%=0 � numwind%
�& � wuse%(c%)<>0 � wind%(c%,1)=p% �
�  !b%=wind%(c%,0)
�"  ș "Wimp_GetWindowState",,b%
�8  ș "Wimp_ForceRedraw",-1,b%!4,b%!16,b%!12,b%!16+44
� �
��
��
�:
�� Mouse_Click
�� �P_6(a%)
�� w%,c%
,� a%!12=-2 �IconBarClick(a%!0,a%!4,a%!8)

w%=�WNum(a%!12)
� w%<0 � w%>numwind% � �
c%=�INum(w%,a%!16)
(5� w%=1 � c%=14 � (a%!8 � 2)<>2 � �InitCreateJig:�
2C� wind%(w%,1)<>-1 � wind%(w%,1)<=maxpuzz% � �PuzzleClick(w%,a%)
<C� wind%(w%,1)<>-1 � wind%(w%,1)>maxpuzz% � �WordClick(w%,c%,a%)
F�
P:
Z� Key_Pressed
d� �P_8(a%)
n� w%,c%
xw%=�WNum(a%!0)
�Ȏ w% �
�
 � -1:
�   ș "Wimp_ProcessKey",a%!24
� � 1:�KeyWind1(a%)
� :
� ș "Wimp_ProcessKey",a%!24
��
��
�:
�� Menu_Selection
�� �P_9(a%)
�ș &400CF,,b2%:z%=b2%!8
�Ȏ menus% �
 � 0:� a%!0=1 � quit%=�
	 � 1:
  Ȏ a%!0 �
"   � 1:�ToggleCheat(menuw%)
,+   � 2:�ToggleWordWind(wind%(menuw%,1))
6+   � 3:�CreatePuzzWind(wind%(menuw%,1))
@1   � 4:�PrintPuzzGrid(menuw%,wind%(menuw%,1))
J  �
T	 � 2:
^  Ȏ a%!0 �
h6   � 0:�CreateWordWind(wind%(menuw%,1)-maxpuzz%-1)
r5   � 1:�PrintWordList(wind%(menuw%,1)-maxpuzz%-1)
|  �
��
�� (z% � 1)=1 �
� �CreateMStruct(menus%,0,0)
��
� �DeleteMStruct(menus%)
��
��
�:
�� Poll 17 and 18
�� �Receive(a%)
�Ȏ a%!16 �
� � 0:quit%=�
�" � &40300:�ChangeHiLiteCol(a%)
 �
 �
 :
 &� Don't know if this works.
 0� �ChangeHiLiteCol(a%)
 :#� d%,s%,A%,B%,C%,D%,E%,F%,G%,H%
 D� a%!20=&452295 �
 N hilitecol%=a%!24
 X  A%=hilitecol%:� ChangeHiCol
 b �
 l�
 v� a%!20=4522295 �
 �
 s%=a%!24
 �
 d%=a%+28
 � A%=�($d%)
 � �NextPar(d%,d%)
 � B%=�($d%)
 � �NextPar(d%,d%)
 � C%=�($d%)
 � �NextPar(d%,d%)
 � D%=�($d%)
 � �NextPar(d%,d%)
 � E%=�($d%)
 � �NextPar(d%,d%)
 � F%=�($d%)
! �NextPar(d%,d%)
! G%=�($d%)
! �NextPar(d%,d%)
!  H%=�($d%)
!*" ș s%,A%,B%,C%,D%,E%,F%,G%,H%
!4 �
!>�
!H� a%!20=5922254 �
!R
 d%=a%+24
!\ s%=�($d%)
!f �NextPar(d%,d%)
!p A%=�($d%)
!z �NextPar(d%,d%)
!� B%=�($d%)
!� �NextPar(d%,d%)
!� C%=�($d%)
!� �NextPar(d%,d%)
!� D%=�($d%)
!� �NextPar(d%,d%)
!� E%=�($d%)
!� �NextPar(d%,d%)
!� F%=�($d%)
!� �NextPar(d%,d%)
!� G%=�($d%)
!� �NextPar(d%,d%)
!� H%=�($d%)
"	 � s%
" �
"�
"$� a%!20=&1234DEBA �
". � (a%!24)
"8 �
"B�
"L�
"V:
"`� �NextPar(d%,� d%)
"j	d%+=1
"tȕ ?d%<>13
"~
 d%+=1
"��
"�	d%+=1
"��
"�:
"�1� 10.9.8.7.6.5.4.3.2.1...We have destruction.
"�� �DestroyPuzzle(p%)
"�� a%,addr1%,addr2%
"�� a%=0 � maxpword%
"�$� pword%(a%,1)=p% � pwuse%(a%) �
"�. pwuse%(a%)=0:�DestroyWindow(pword%(a%,0))
"��
"��
#:
#
addr1%=puzzin%(p%)
#addr2%=puzzshflags1
#� a%=0 � maxpuzz%
#(3 � pfree%(a%) � !addr2%=puzzin%(a%) � !addr2%=0
#2 addr2%+=4
#<�
#FA%=p%:� puzzshuffle
#Paddr1%=puzzshflags1
#Z� a%=0 � maxpuzz%
#d' � !addr1%<>0 � puzzin%(a%)=!addr1%
#n addr1%+=4
#x�
#�pfree%(p%)=0
#�nxtpuzzst%=!nextpuzzst
#��
#�:
#�-� Does anyone know that little known song
#�)� 'Stop tap-dancing on my icon bar' ?
#�� �IconBarClick(x%,y%,z%)
#�� z%=1 � � Adjust
#�� z%=4 � �OpenWindow(1,-1)
#�� z%=2 �
#�* � menus%<>-1 � �DeleteMStruct(menus%)
#�  �CreateMStruct(0,x%-64,184)
#� menuw%=-1
$ �
$�
$�
$":
$,� A confused click?
$6� �PuzzleClick(w%,addr%)
$@� p%
$Jp%=wind%(w%,1)
$T� (addr%!8 � 2)=2 �
$^  icon$(18,0)=�(pinfo%(p%,0))
$h  icon$(19,0)=�(pinfo%(p%,1))
$r  icon$(20,0)=�(pinfo%(p%,2))
$| � (wind%(w%,20) � %1)=%1 �
$�$  item%(1,1,1)=item%(1,1,1) � %1
$� �
$�'  item%(1,1,1)=item%(1,1,1) � �(%1)
$� �
$� � (pinfo%(p%,4) � %1)=%1 �
$�$  item%(1,2,1)=item%(1,1,1) � %1
$� �
$�'  item%(1,2,1)=item%(1,1,1) � �(%1)
$� �
$�* � menus%<>-1 � �DeleteMStruct(menus%)
$�) �CreateMStruct(1,addr%!0-64,addr%!4)
$� menuw%=w%
$� �
%�
%� (addr%!8 � %100)=%100 �
%- �PuzzSelect(p%,addr%!12,addr%!0,addr%!4)
%& �
%0�
%:� (addr%!8 � %001)=%001 �
%D �DeHiLight(p%,2)
%N pinfo%(p%,6)=0
%X pinfo%(p%,7)=0
%b pinfo%(p%,9)=0
%l pinfo%(p%,10)=0
%v �
%��
%��
%�:
%�-� Anyone who used this option to complete
%�2� a puzzle hasn't got the brains to understand
%�.� this program. So why are you reading it?
%�� �ToggleCheat(w%)
%�"wind%(w%,20)=wind%(w%,20) � %1
%�"item%(1,1,1)=item%(1,1,1) � %1
%�b%!0=wind%(w%,0)
%�b%!4=wind%(w%,8)
%�b%!8=wind%(w%,9)
%�b%!12=wind%(w%,10)
&b%!16=wind%(w%,11)
&&ș "Wimp_UpdateWindow",,b% � more%
&ȕ more%
&  �WindRect(w%,b%)
&*' ș "Wimp_GetRectangle",,b% � more%
&4�
&>�
&H:
&R� �ToggleWordWind(p%)
&\ � (pinfo%(p%,4) � %10)=%00 �
&f �CreateWordWind(p%)
&p � pinfo%(p%,8)=-1 � �
&z$ pinfo%(p%,4)=pinfo%(p%,4) � %11
&�# item%(1,2,1)=item%(1,2,1) � %1
&� �
&��
&��
&�:
&�� �PuzzSelect(p%,w%,x%,y%)
&�*� a%,addr1%,addr2%,v%,h%,n%,x1%,y1%,l%
&�!b%=w%:ș &400CB,,b%
&�x%=x%-(b%!4-b%!20)
&�y%=y%-(b%!16-b%!24)
&�'x%=(x%-22) � 20:y%=((y%+8) � 40)*-1
&�+A%=x%:B%=y%:C%=puzzin%(p%):� puzzselect
&�h%=!selh:v%=!selv
' � h%<>0 � pinfo%(p%,9)=!hlen
'!� v%<>0 � pinfo%(p%,10)=!vlen
':
'$� h%=0 � v%=0 � �
'.+� h%=pinfo%(p%,6) � v%=pinfo%(p%,7) � �
'8� h%>0 � v%>0 �
'B � h%=pinfo%(p%,6) �
'L&  �DeHiLight(p%,1):pinfo%(p%,10)=0
'V  �
'` �
'j � v%=pinfo%(p%,7) �
't%  �DeHiLight(p%,0):pinfo%(p%,9)=0
'~  �
'� �
'� �DeHiLight(p%,2)
'�$ pinfo%(p%,6)=h%:pinfo%(p%,7)=v%
'� �HiLight(p%,0)
'� �HiLight(p%,1)
'� �
'��
'�� h%>0 �
'�8 � pinfo%(p%,7)>0 � �DeHiLight(p%,1):pinfo%(p%,10)=0
'� � pinfo%(p%,6)<>h% �
'�  �DeHiLight(p%,0)
'�  pinfo%(p%,6)=h%
(  �HiLight(p%,0)
(
 �
(�
(7 � pinfo%(p%,6)>0 � �DeHiLight(p%,0):pinfo%(p%,9)=0
(( � pinfo%(p%,7)<>v% �
(2  �DeHiLight(p%,1)
(<  pinfo%(p%,7)=v%
(F  �HiLight(p%,1)
(P �
(Z�
(d�
(n:
(x� �DeHiLight(p%,a%)
(�� c%
(�Ȏ a% �
(�= � 0:c%=pinfo%(p%,6):pinfo%(p%,6)=0:�UpdateSpace(p%,c%,0)
(�= � 1:c%=pinfo%(p%,7):pinfo%(p%,7)=0:�UpdateSpace(p%,c%,1)
(�= � 2:c%=pinfo%(p%,6):pinfo%(p%,6)=0:�UpdateSpace(p%,c%,0)
(�@        c%=pinfo%(p%,7):pinfo%(p%,7)=0:�UpdateSpace(p%,c%,1)
(��
(��
(�:
(�� �HiLight(p%,a%)
(�Ȏ a% �
(�( � 0:�UpdateSpace(p%,pinfo%(p%,6),0)
(�( � 1:�UpdateSpace(p%,pinfo%(p%,7),1)
)( � 2:�UpdateSpace(p%,pinfo%(p%,6),0)
)+        �UpdateSpace(p%,pinfo%(p%,7),1)
)�
)"�
),:
)6� �UpdateSpace(p%,s%,d%)
)@� s%=0 � �
)J+� x%,y%,l%,wd%,a%,x1%,y1%,x2%,y2%,more%
)T�SpaceInfo(p%,s%,d%)
)^x1%=x%*20+20:y1%=y%*-40-4
)hȎ d% �
)r# � 0:x2%=x1%+l%*20+2:y2%=y1%-44
)|# � 1:x2%=x1%+22:y2%=y1%-l%*40-4
)��
)�� a%=0 � numwind%
)�# � wind%(a%,1)=p% � wuse%(a%) �
)�  b%!0=wind%(a%,0)
)�  b%!4=x1%
)�  b%!8=y2%
)�  b%!12=x2%
)�  b%!16=y1%
)�  ș &400C9,,b% � more%
)�  ȕ more%
)�   �WindRect(a%,b%)
)�   ș &400CA,,b% � more%
)�  �
* �
*�
*�
*&:
*0 � �SpaceInfo(p%,space%,dir%)
*:� addr%
*Daddr%=puzzin%(p%)
*N
Ȏ dir% �
*X � 0:addr%=addr%+addr%!24
*b � 1:addr%=addr%+addr%!28
*l�
*vaddr%+=4
*�addr%=addr%+space%*8-8
*�0x%=addr%?0:y%=addr%?1:l%=addr%?2:wd%=addr%!4
*��
*�:
*�� �WordClick(w%,c%,addr%)
*�0� pw%,p%,addr1%,addr2%,x%,y%,addr3%,a%,n%,f%
*�%pw%=wind%(w%,20):p%=pword%(pw%,1)
*�� (addr%!8 � 2)=2 �
*�) �CreateMStruct(2,addr%!0-64,addr%!4)
*� menuw%=w%
*� �
*��
*�5� c%=pwordiconst%+pw%*3 � �ChWordLen(-1,pw%,w%):�
+6� c%=pwordiconst%+pw%*3+1 � �ChWordLen(1,pw%,w%):�
+x%=addr%!0:y%=addr%!4
+#!b2%=wind%(w%,0):ș &400CB,,b2%
+ x%=x%-(b2%!4-b2%!20)
+*0y%=y%-(b2%!16-b2%!24):y%=((y%+36) � 40)*-1-1
+4-� x%<pword%(pw%,3) � x%>pword%(pw%,4) � �
+>� y%<0 � �
+H� y%>pword%(pw%,5) � �
+R� (addr%!8 � 1)=1 �
+\3 addr1%=�WordAddr(pword%(pw%,2),y%,puzzin%(p%))
+f � (?addr1% � 128)=0 � �
+p ?addr1%=?addr1% � 128
+z �UpdateWWind(w%,pw%,y%)
+� addr1%=puzzin%(p%)
+� addr2%=addr1%+addr1%!24
+�$ n%=addr2%!0:addr2%+=4:f%=0:a%=0
+� ȕ a%<n% � �(f%)
+�  a%+=1
+�5  � (addr2%!4>>>16)=y% � addr2%?2=pword%(pw%,2) �
+�   f%=�
+�    addr2%?6=&FF:addr2%?7=&FF
+�   �UpdateSpace(p%,a%,0)
+�  �
+�  addr2%+=8
+� �
+� addr2%=addr1%+addr1%!28
,$ n%=addr2%!0:addr2%+=4:f%=0:a%=0
, ȕ a%<n% � �(f%)
,  a%+=1
,$5  � (addr2%!4>>>16)=y% � addr2%?2=pword%(pw%,2) �
,.   f%=�
,8    addr2%?6=&FF:addr2%?7=&FF
,B   �UpdateSpace(p%,a%,1)
,L  �
,V  addr2%+=8
,` �
,j �
,t�
,~$� pinfo%(p%,9)=pinfo%(p%,10) � �
,�2addr1%=�WordAddr(pword%(pw%,2),y%,puzzin%(p%))
,�� (?addr1% � 128) � �
,�"� pinfo%(p%,9)=pword%(pw%,2) �
,�1 addr2%=�ClueAddr(pinfo%(p%,6),0,puzzin%(p%))
,� A%=puzzin%(p%):� ChangeJig
,�9 A%=addr2%?0:B%=addr2%?1:C%=addr2%?2:D%=addr1%:� HFit
,� � !fit=0 � � 7:�
,� � (addr2%!4>>>16)<>&FFFF �
,�G  addr3%=�WordAddr(pword%(pw%,2),addr2%?6+addr2%?7*256,puzzin%(p%))
,�  ?addr3%=?addr3% � 128
,�0  �UpdateWWind(w%,pw%,addr2%?6+addr2%?7*256)
,� �
- addr2%?6=y% � 256
-
 addr2%?7=y% � 256
- ?addr1%=?addr1% � 128
-$ �UpdateSpace(p%,pinfo%(p%,6),0)
-( �UpdateWWind(w%,pw%,y%)
-2�
-<$ � pinfo%(p%,10)=pword%(pw%,2) �
-F2  addr2%=�ClueAddr(pinfo%(p%,7),1,puzzin%(p%))
-P   A%=puzzin%(p%):� ChangeJig
-Z:  A%=addr2%?0:B%=addr2%?1:C%=addr2%?2:D%=addr1%:� VFit
-d  � !fit=0 � � 7:�
-n   � (addr2%!4>>>16)<>&FFFF �
-xH   addr3%=�WordAddr(pword%(pw%,2),addr2%?6+addr2%?7*256,puzzin%(p%))
-�   ?addr3%=?addr3% � 128
-�1   �UpdateWWind(w%,pw%,addr2%?6+addr2%?7*256)
-�  �
-�  addr2%?6=y% � 256
-�  addr2%?7=y% � 256
-�  ?addr1%=?addr1% � 128
-�%  �UpdateSpace(p%,pinfo%(p%,7),1)
-�  �UpdateWWind(w%,pw%,y%)
-� �
-��
-��
-��
-� �
.  �
. �
.�
."�
.,:
.6 � A procedure with a stutter
.@� �UpdateWWind(w%,pw%,a%)
.J� c%,p%,more%
.Tp%=pword%(pw%,1)
.^� c%=0 � numwind%
.h. � wind%(c%,1)=p%+1+maxpuzz% � wuse%(c%) �
.r  b%!0=wind%(c%,0)
.|M  b%!4=pword%(pw%,3):b%!8=(a%+2)*-40-32:b%!12=pword%(pw%,4):b%!16=b%!8+40
.�  ș &400C9,,b% � more%
.�  ȕ more%
.�   �WindRect(c%,b%)
.�   ș &400CA,,b% � more%
.�  �
.� �
.��
.��
.��
.�:
.�� �ChWordLen(d%,pw%,w%)
.�-� addr1%,addr2%,icst%,f%,n%,l%,mh%,wf%,p%
.�icst%=pwordiconst%+pw%*3
/p%=wind%(w%,1)-maxpuzz%-1
/.addr1%=puzzin%(p%):addr2%=addr1%+addr1%!16
/ n%=addr2%!0:l%=pword%(pw%,2)
/&�
/0 l%+=d%
/: � l%=1 � l%=n%
/D � l%>n% � l%=2
/N � addr2%!(l%*4-4)>0 � f%=�
/X� f%
/bpword%(pw%,2)=l%
/l%icon$(icst%+2,0)=�(l%)+" Letters"
/v/$data%(icon%(icst%+2,7),0)=icon$(icst%+2,0)
/�#mh%=!(addr1%+addr2%!(l%*4-4))+2
/�wind%(w%,9)=-(mh%*40+16)
/�1b%!0=wind%(w%,0):ș "Wimp_GetWindowState",,b%
/�
wf%=b%!28
/�8wind%(w%,2)=b%!4:wind%(w%,4)=b%!12:wind%(w%,5)=b%!16
/�'wind%(w%,3)=wind%(w%,5)+wind%(w%,9)
/�wind%(w%,6)=0:wind%(w%,7)=0
/�%b%!0=wind%(w%,8):b%!4=wind%(w%,9)
/�(b%!8=wind%(w%,10):b%!12=wind%(w%,11)
/�&ș "Wimp_SetExtent",wind%(w%,0),b%
/��OpenWindow(w%,wf%)
/�0pword%(pw%,3)=wind%(w%,10)/2-pword%(pw%,2)*8
/�0pword%(pw%,4)=pword%(pw%,3)+pword%(pw%,2)*16
0pword%(pw%,5)=mh%-3
0Bș "Wimp_ForceRedraw",wind%(w%,0),0,wind%(w%,9),wind%(w%,10),0
0�
0 :
0*� �KeyWind1(a%)
04� c%,nh%,lh%,h%,l%,f%,i%
0>c%=�INum(1,a%!4)
0HȎ c% �
0R) � 11:nh%=icon%(12,9):lh%=icon%(12,9)
0\) � 12:nh%=icon%(11,9):lh%=icon%(11,9)
0f# :ș "Wimp_ProcessKey",a%!24:�
0p�
0zȎ a%!24 �
0� � &0D:
0�  h%=nh%
0�  i%=�IFlags(1,14)
0�"  � c%=12 � (i% � (1<<22))=0 �
0�   a%!4=icon%(14,9)
0�   a%!8=1<<21
0�   a%!12=1<<21
0�!   ș "Wimp_SetIconState",,a%
0�   �InitCreateJig
0�   �
0�  �
0�   � c%=12 � �
0�  �
1 � &18E:h%=nh%
1 � &18F:h%=lh%
1# :ș "Wimp_ProcessKey",a%!24:�
1$�
1.+l%=�($(data%(icon%(�INum(w%,h%),7),0)))
186ș "Wimp_SetCaretPosition",wind%(1,0),h%,0,0,-1,l%
1B�
1L:
1V� It's a bit hot in here.
1`� �OpenWindow(w%,f%)
1jb%!0=wind%(w%,0)
1t%b%!4=wind%(w%,2):b%!8=wind%(w%,3)
1~'b%!12=wind%(w%,4):b%!16=wind%(w%,5)
1�'b%!20=wind%(w%,6):b%!24=wind%(w%,7)
1�b%!28=f%
1�ș "Wimp_OpenWindow",,b%
1��
1�:
1�� �WindRect(w%,a%)
1�� wx1%,wy1%,wx2%,wy2%
1�4wx1%=a%!20+(a%!28-a%!4):wy1%=a%!24+(a%!40-a%!16)
1�3wx2%=wx1%+(a%!36-a%!28):wy2%=wy1%+(a%!32-a%!40)
1�ȑ a%!4-a%!20,a%!16-a%!24
1�/� wind%(w%,1)<>-1 � wind%(w%,1)<=maxpuzz% �
1�& �PuzzRect(w%,wx1%,wy1%,wx2%,wy2%)
2�
2
.� wind%(w%,1)<>-1 � wind%(w%,1)>maxpuzz% �
2& �WordRect(w%,wx1%,wy1%,wx2%,wy2%)
2�
2(
ȑ 0,0
22�
2<:
2F#� �PuzzRect(w%,x1%,y1%,x2%,y2%)
2P� p%
2Zp%=wind%(w%,1)
2d'x1%=(x1%-22) � 20:x2%=(x2%-22) � 20
2n'y1%=(y1%+8) � -40:y2%=(y2%+8) � -40
2x� x1%<0 � x1%=0
2�,� x1%>=pinfo%(p%,0) � x1%=pinfo%(p%,0)-1
2�,� x2%>=pinfo%(p%,0) � x2%=pinfo%(p%,0)-1
2�/A%=pinfo%(p%,6):B%=pinfo%(p%,7):� ChangeSel
2�3A%=puzzin%(p%):B%=wind%(w%,20) � %1:C%=scratch%
2�,D%=x1%:E%=y1%:F%=x2%:G%=y2%:� CreateHeap
2�� Gridsetc
2��
2�:
2�#� �WordRect(w%,x1%,y1%,x2%,y2%)
2�#� p%,addr1%,addr2%,a%,b%,n%,pw%
2�pw%=wind%(w%,20)
2�+x1%=(x1%-22) � 16:x2%=((x2%-22) � 16)+1
2�5y1%=((y1%+36) � 40)*-1:y2%=(((y2%+36) � 40)-1)*-1
3.p%=wind%(w%,1)-maxpuzz%-1:l%=pword%(pw%,2)
3.addr1%=puzzin%(p%):addr2%=addr1%+addr1%!16
3!addr2%=addr1%+addr2%!(l%*4-4)
3"n%=addr2%!0:addr2%+=4
3,� a%=1 � n%
36 � a%>=y1% � a%<=y2% �
3@!  � pword%(pw%,3),-(a%*40+36)
3J  � ?addr2% � 128 �
3T9   ș "Wimp_SetColour",3:ș "OS_WriteC",?addr2% � 128
3^  �
3h3   ș "Wimp_SetColour",7:ș "OS_WriteC",?addr2%
3r  �
3|"  ș "OS_WriteN",addr2%+1,l%-1
3�  addr2%+=l%
3� �
3�  addr2%+=l%
3� �
3��
3��
3�:
3�� �Word(n%,addr%)
3� A%=n%:B%=addr%:C%=b2%:� Word
3�	=$b2%
3�� off%,a%,l%,c%,a$,b%
3�� n%=&FFFF � =""
3�a%=addr%+addr%!16
4b%=addr%+addr%!12
4
l%=0:c%=2
4�
4&3 � n%<(!(b%+c%*4)) � n%>=(!(b%+c%*4-4)) � l%=c%
40
 c%+=1
4:� l%<>0
4Da%=addr%+a%!(l%*4-4)
4N a%=a%+(n%-!(b%+l%*4-4))*l%+4
4X	a$=""
4b� c%=0 � l%-1
4la$+=�(a%?c%)
4v�
4�=a$
4�:
4�� �WNum(hand%)
4�� a%,f%
4�	f%=-1
4�� a%=0 � numwind%
4�  � wind%(a%,0)=hand% � f%=a%
4��
4�=f%
4�:
4�� �INum(w%,hand%)
4�� a%,f%,h%
4�	f%=-1
5h%=wind%(w%,0)
5� a%=0 � numicon%
51 � icon%(a%,9)=hand% � icon%(a%,5)=h% � f%=a%
5 �
5*=f%
54:
5>� �IFlags(w%,i%)
5Hiconst%!0=wind%(w%,0)
5Riconst%!4=icon%(i%,9)
5\#ș "Wimp_GetIconState",,iconst%
5f=iconst%!24
5p:
5z(� Just about the only time I've ever
5�%� passed an array to a procedure.
5�:� (and got away with both my eyebrows!!!) (never mind)
5� � �1stFree(array%(),maxdim%)
5�� a%,f%
5�a%=-1:f%=-1
5��
5�
 a%+=1
5� � array%(a%)=0 � f%=a%
5�� f%<>-1 � a%=maxdim%
5�=f%
5�:
5�� �PNumOfWords(addr%)
5�*=!(!(addr%+addr%!12)*4+addr%+addr%!12)
6:
6� �WordAddr(l%,w%,addr%)
6� addr1%
6$6addr1%=addr%+addr%!16:addr1%=addr%+addr1%!(l%*4-4)
6.=addr1%+4+l%*w%
68:
6B� �ClueAddr(c%,d%,addr%)
6L� addr1%
6V8� d%=0 addr1%=addr%+addr%!24 � addr1%=addr%+addr%!28
6`=addr1%+c%*8-4
6j:
6t� �InitCreateJig
6~� p%,addr1%,addr2%,n%,l%
6�$b%!0=wind%(1,0):b%!4=icon%(14,9)
6�b%!8=0:b%!12=1<<21
6�ș "Wimp_SetIconState",,b%
6�"p%=�1stFree(pfree%(),maxpuzz%)
6�� p%=-1 � �Error2nd(3):�
6�'create%(0)=�($data%(icon%(11,7),0))
6�'create%(1)=�($data%(icon%(12,7),0))
6�'create%(2)=(�IFlags(1,13)>>21) � %1
6�$� create%(0)<30 � �Error2nd(1):�
6�$� create%(1)<15 � �Error2nd(2):�
6�$� create%(0)>99 � �Error2nd(7):�
6�$� create%(1)>99 � �Error2nd(8):�
7� nxtpuzzst%+32>=puzzend% �
7
 �Error2nd(4)
7 �
7�
7($b%!0=wind%(1,0):b%!4=icon%(14,9)
72b%!8=1<<22:b%!12=1<<22
7<ș "Wimp_SetIconState",,b%
7F-create%(3)=%00:create%(4)=0:create%(5)=p%
7P8create%(6)=nxtpuzzst%:create%(7)=puzzend%-nxtpuzzst%
7Z$b%!0=wind%(1,0):b%!4=icon%(14,9)
7db%!8=1<<22:b%!12=1<<22
7nș "Wimp_SetIconState",,b%
7xș "Hourglass_On"
7�,A%=create%(0)-1:B%=create%(1)-1:� csize%
7�,A%=create%(6):B%=create%(7):� cpuzzarea%
7�� cinitvar%
7�� createjig%
7�ș "Hourglass_Off"
7�$b%!0=wind%(1,0):b%!4=icon%(14,9)
7�b%!8=1<<22:b%!12=0<<22
7�ș "Wimp_SetIconState",,b%
7�� !result%=-1 �
7� b2%!0=0
7� $(b2%+4)=error$(4)+�(0)
7�0 ș "Wimp_ReportError",b2%,%10101,"!JigWord"
7� �
8�
8� create%(2)=1 �
8 addr1%=create%(6)
8"A � �(2)=1 � addr2%=addr1%+addr1%!24 � addr2%=addr1%+addr1%!28
8, n%=addr2%!0:addr2%+=4
86 addr2%+=(�(n%)-1)*8
8@( addr2%?6=addr2%?4:addr2%?7=addr2%?5
8J$ n%=addr2%!4 � &FFFF:l%=addr2%?2
8T addr2%=addr1%+addr1%!16
8^ addr2%+=l%*4-4
8h2 addr2%=addr1%+!addr2%:addr2%+=4:addr2%+=l%*n%
8r ?addr2%=?addr2% � 128
8|�
8�#�InitialiseDispFile(create%(5))
8��CreatePuzzWind(create%(5))
8�mask%=0
8��
8�:
8�� a little used procedure
8�� �Cycle
8�$b%!0=wind%(1,0):b%!4=icon%(14,9)
8�b%!8=0<<22:b%!12=1<<22
8�ș "Wimp_SetIconState",,b%
8�mask%=1
8�� createinbckgnd
8��
9:
9� A weather vain?
9� �NextWindPos(w%)
9&� nextwpos%=4 � nextwpos%=0
900wind%(w%,2)=100:wind%(w%,5)=800-48*nextwpos%
9:nextwpos%+=1
9D�
9N:
9X� �CreatePuzzWind(p%)
9b(� w%,vx%,vy%,ht%,wid%,addr%,a%,more%
9l%� pinfo%(p%,3)=5 � �Error2nd(6):�
9v!w%=�1stFree(wuse%(),numwind%)
9�
� w%=-1 �
9� �Error2nd(5)
9� �
9��
9�wuse%(w%)=-1
9�pinfo%(p%,3)+=1
9�addr%=puzzin%(p%)
9�(wid%=addr%!4*20+40:ht%=addr%!8*40+12
9�wind%(w%,1)=p%
9��NextWindPos(w%)
9�� wid%>=640 �
9�  wind%(w%,4)=wind%(w%,2)+640
9��
:! wind%(w%,4)=wind%(w%,2)+wid%
:�
:� ht%>=612 �
:   wind%(w%,3)=wind%(w%,5)-612
:*�
:4  wind%(w%,3)=wind%(w%,5)-ht%
:>�
:Hwind%(w%,6)=0:wind%(w%,7)=0
:R"wind%(w%,8)=0:wind%(w%,9)=-ht%
:\$wind%(w%,10)=wid%:wind%(w%,11)=0
:f!wind%(w%,12)=0:wind%(w%,13)=0
:p!wind%(w%,14)=%00010+(255<<24)
:zwind%(w%,15)=1
:�!wind%(w%,16)=0:wind%(w%,17)=0
:�wind%(w%,18)=pinfo%(p%,5)
:�wind%(w%,19)=3
:�wind%(w%,20)=%0
:�wind$(w%)="0123456789ABCD"
:��CreateWindow(w%)
:�pinfo%(p%,5)=wind%(w%,18)
:�� pinfo%(p%,3)=1 �
:�, $data%(wind%(w%,18),0)="JigWord "+�(p%)
:��
:�@ $data%(wind%(w%,18),0)="JigWord "+�(p%)+" "+�(pinfo%(p%,3))
:��
:�� a%=0 � numwind%
;& � wuse%(a%)<>0 � wind%(a%,1)=p% �
;  � a%<>w% �
;   !b%=wind%(a%,0)
;$-   ș "Wimp_GetWindowState",,b%:wf%=b%!28
;.9   ș "Wimp_ForceRedraw",-1,b%!4,b%!16,b%!12,b%!16+44
;8  �
;B   �OpenWindow(a%,-1)
;L  �
;V �
;`�
;j�
;t:
;~� �CreateWordWind(p%)
;�-� w%,a%,mw%,mh,addr1%,addr2%,icst%,f%,ww%
;�!w%=�1stFree(wuse%(),numwind%)
;�� w%=-1 � �Error2nd(5):�
;�$ww%=�1stFree(pwuse%(),maxpword%)
;�� ww%=-1 � �Error2nd(5):�
;�wuse%(w%)=-1
;�pwuse%(ww%)=-1
;�.addr1%=puzzin%(p%):addr2%=addr1%+addr1%!12
;�mw%=!addr2%:addr2%+=8
;�)� mw%<�(" �   Letters   � ") � mw%=17
;�	mh%=0
;�� a%=2 � addr2%!-8
<L� (!addr2%-addr2%!-4)>mh% � mh%=!addr2%-addr2%!-4:pword%(ww%,2)=a%:f%=-1
<

addr2%+=4
<�
<
mh%+=2
<(wind%(w%,1)=p%+maxpuzz%+1
<2 wind%(w%,8)=0:wind%(w%,11)=0
<<wind%(w%,9)=-(mh%*40+16)
<Fwind%(w%,10)=mw%*16+40
<P�NextWindPos(w%)
<Z wind%(w%,4)=100+wind%(w%,10)
<d� wind%(w%,9)<-600 �
<n wind%(w%,3)=200
<x�
<�( wind%(w%,3)=wind%(w%,5)+wind%(w%,9)
<��
<�wind%(w%,6)=0:wind%(w%,7)=0
<�!wind%(w%,12)=0:wind%(w%,13)=0
<�wind%(w%,14)=%10+(255<<24)
<�wind%(w%,15)=1
<�icst%=pwordiconst%+ww%*3
<�wind%(w%,16)=icst%
<�wind%(w%,17)=3
<�wind%(w%,18)=-1
<�wind%(w%,19)=3
<�wind%(w%,20)=ww%
<�wind$(w%)="JigWord "+�(p%)
=8icon%(icst%,0)=wind%(w%,10)/2-120:icon%(icst%,1)=-48
=6icon%(icst%,2)=icon%(icst%,0)+18:icon%(icst%,3)=-8
=)icon%(icst%,4)=%11001+(2<<12)+(7<<24)
="&icon%(icst%,5)=-1:icon%(icst%,6)=0
=,:icon%(icst%,7)=-1:icon%(icst%,8)=1:icon$(icst%,0)=�136
=6icst%+=1
=@8icon%(icst%,0)=wind%(w%,10)/2+104:icon%(icst%,1)=-48
=J6icon%(icst%,2)=icon%(icst%,0)+18:icon%(icst%,3)=-8
=T)icon%(icst%,4)=%11001+(2<<12)+(7<<24)
=^&icon%(icst%,5)=-1:icon%(icst%,6)=0
=h:icon%(icst%,7)=-1:icon%(icst%,8)=1:icon$(icst%,0)=�137
=ricst%+=1
=|7icon%(icst%,0)=wind%(w%,10)/2-84:icon%(icst%,1)=-48
=�7icon%(icst%,2)=icon%(icst%,0)+168:icon%(icst%,3)=-8
=�%icon%(icst%,4)=%100011001+(7<<24)
=�%icon%(icst%,5)=0:icon%(icst%,6)=1
=�'icon%(icst%,7)=-1:icon%(icst%,8)=11
=�.icon$(icst%,0)=�(pword%(ww%,2))+" Letters"
=�icon$(icst%,1)=""
=��CreateWindow(w%)
=�pinfo%(p%,8)+=1
=�#pinfo%(p%,4)=pinfo%(p%,4) � %10
=�pword%(ww%,0)=w%
=�pword%(ww%,1)=p%
=�0pword%(ww%,3)=wind%(w%,10)/2-pword%(ww%,2)*8
=�0pword%(ww%,4)=pword%(ww%,3)+pword%(ww%,2)*16
>pword%(ww%,5)=mh%-3
>�OpenWindow(w%,-1)
>�
>&:
>0E� IF error trapping enhanced here, remember the grid backgnd col.
>:H� This little horror took me forever. You can change the print ratio
>D/� here if you want a bigger JigWord printed
>N� �PrintPuzzGrid(w%,p%)
>X� H%,O%,plx%,prx%,pby%,pty%
>b� f1%,f2%,x1%,y1%,x2%,y2%
>lH%=�(print$)
>v� �
>�#� � � � �:�#H%:�ErrorPrint1st:�
>�ș &80145,H%,"JigWord" � O%
>�� �
>�4� � � � �:ș&80149,H%:ș&80145,O%:�#H%:�Error1st
>�:
>�%ș &80143 �,,,plx%,pby%,prx%,pty%
>�Eb%!0=0:b%!4=-(pinfo%(p%,1)*40+12):b%!8=pinfo%(p%,0)*20+40:b%!12=0
>�+b%!16=65536:b%!20=0:b%!24=0:b%!28=65536
>�b%!32=plx%:b%!36=pby%
>�<ș "PDriver_GiveRectangle",%101,b%,b%+16,b%+32,&FFFFFF00
>�:
>�*ș "PDriver_DrawPage",1,b2% � f1%,,f2%
>�a%=0
?A%=0:� ChangeBckGndCol
?
ȕ f1%
? ȑ 0,0
? / �PROCPuzzRect(w%,b2%!0,b2%!4,b2%!8,b2%!12)
?*, x1%=(b2%!0-22) � 20:x2%=(b2%!8-22) � 20
?4- y1%=(b2%!4+8) � -40:y2%=(b2%!12+8) � -40
?> � y1%>y2% � Ȕ y1%,y2%
?H � x1%<0 � x1%=0
?R- � x1%>=pinfo%(p%,0) � x1%=pinfo%(p%,0)-1
?\- � x2%>=pinfo%(p%,0) � x2%=pinfo%(p%,0)-1
?f A%=0:B%=0:� ChangeSel
?p4 A%=puzzin%(p%):B%=wind%(w%,20) � %1:C%=scratch%
?z- D%=x1%:E%=y1%:F%=x2%:G%=y2%:� CreateHeap
?� � Gridsetc
?�
 a%+=1
?�# � "SET A1"+�(64+a%)+" "+�(x1%)
?�# � "SET A2"+�(64+a%)+" "+�(y1%)
?�# � "SET A3"+�(64+a%)+" "+�(x2%)
?�# � "SET A4"+�(64+a%)+" "+�(y2%)
?�. ș "PDriver_GetRectangle",,b2% � f1%,,f2%
?��
?�A%=3:� ChangeBckGndCol
?�:
?�ș "PDriver_EndJob",H%
?�� �
?�ș "PDriver_SelectJob",O%
@� �
@�#H%
@�
@$:
@.� �PrintWordList(p%)
@8)� addr1%,addr2%,n%,o%,nw%,c%,t$,d%,m%
@Baddr1%=puzzin%(p%)
@Laddr2%=addr1%+addr1%!16
@Vo%=addr2%!0
@`*FX 3 10
@j+� �pwidth%/2-8," ");"JigWord word list"
@t+� �pwidth%/2-8," ");"-----------------"
@~	�:�:�
@�� n%=2 � o%
@� addr2%+=4
@� � !addr2%<>0 �
@�  addr3%=addr1%+!addr2%
@�  nw%=!addr3%:addr3%+=4
@�  t$=�(n%)+" letter word"
@�  � nw%>1 � t$+="s"
@�   � t$'ĩ(t$),"-"):�
@�   m%=pwidth% � (n%+1):d%=0
@�   � c%=1 � nw%
@�
    d%+=1
@�'    ș "OS_WriteN",addr3%,n%:� " ";
A&    � d%=m% � ș "OS_NewLine":d%=0
A
    addr3%+=n%
A   �
A   �:�:�
A( �
A2�
A<*FX 3 0
AF�
AP:
AZ7� If you think the comments are bad in this program
Ad8� you should have seen the machine-code source code.
An6� I apologise if there are some silly words in the
Ax� dictionary.
A�:� Anyone who doesn't get the room 101 bit, go and read
A�:� '1984' by George Orwell. It's a lot more interesting
A�0� that this. And a lot easier to understand.
A�:
A�;� I think we should do a survey. I'm programming at the
A�:� moment on ARMBE, with red text on black. What colour
A�%� schemes does everyone else use?
A�:
A�:
A�:
A�Don't you just luuurve it!
A�
A�********
�
00000000  0d 00 0a 10 f4 20 3e 21  52 75 6e 49 6d 61 67 65  |..... >!RunImage|
00000010  0d 00 14 49 f4 20 52 65  6d 65 6d 62 65 72 20 74  |...I. Remember t|
00000020  6f 20 74 65 73 74 20 69  66 20 43 72 65 61 74 65  |o test if Create|
00000030  4d 65 6e 75 20 72 65 70  6f 72 74 73 20 61 6e 20  |Menu reports an |
00000040  65 72 72 6f 72 20 61 62  74 20 69 6e 64 69 72 65  |error abt indire|
00000050  63 74 65 64 20 64 61 74  61 0d 00 1e 46 f4 20 52  |cted data...F. R|
00000060  65 6d 65 6d 62 65 72 20  74 6f 20 64 6f 20 50 52  |emember to do PR|
00000070  4f 43 44 65 6c 65 74 65  4d 53 74 72 75 63 74 20  |OCDeleteMStruct |
00000080  66 6f 72 20 61 6c 6c 20  74 68 6f 73 65 20 64 69  |for all those di|
00000090  66 66 69 63 75 6c 74 20  77 69 6e 64 6f 77 73 0d  |fficult windows.|
000000a0  00 28 34 ee 20 85 20 eb  20 30 3a c8 99 20 22 57  |.(4. . . 0:.. "W|
000000b0  69 6d 70 5f 43 6c 6f 73  65 44 6f 77 6e 22 3a f1  |imp_CloseDown":.|
000000c0  20 f6 24 3b 22 20 61 74  20 6c 69 6e 65 20 22 3b  | .$;" at line ";|
000000d0  9e 3a e0 0d 00 32 05 3a  0d 00 3c 39 c8 99 20 22  |.:...2.:..<9.. "|
000000e0  57 69 6d 70 5f 49 6e 69  74 69 61 6c 69 73 65 22  |Wimp_Initialise"|
000000f0  2c 32 30 30 2c 26 34 42  35 33 34 31 35 34 2c 22  |,200,&4B534154,"|
00000100  4a 69 67 57 6f 72 64 22  20 b8 20 2c 74 61 73 6b  |JigWord" . ,task|
00000110  25 0d 00 46 05 3a 0d 00  50 0f f2 49 6e 69 74 69  |%..F.:..P..Initi|
00000120  61 6c 69 73 65 0d 00 5a  1f 41 25 3d 68 69 6c 69  |alise..Z.A%=hili|
00000130  74 65 63 6f 6c 25 3a d6  20 43 68 61 6e 67 65 48  |tecol%:. ChangeH|
00000140  69 43 6f 6c 0d 00 64 12  f2 43 72 65 61 74 65 49  |iCol..d..CreateI|
00000150  63 6f 6e 28 30 29 0d 00  6e 05 3a 0d 00 78 14 f2  |con(0)..n.:..x..|
00000160  43 72 65 61 74 65 57 69  6e 64 6f 77 28 31 29 0d  |CreateWindow(1).|
00000170  00 82 05 3a 0d 00 8c 27  71 75 69 74 25 3d a3 3a  |...:...'quit%=.:|
00000180  6d 65 6e 75 73 25 3d 2d  31 3a 6d 65 6e 75 77 25  |menus%=-1:menuw%|
00000190  3d 2d 31 3a 6d 61 73 6b  25 3d 31 0d 00 96 05 f5  |=-1:mask%=1.....|
000001a0  0d 00 a0 14 20 ee 20 85  20 ea 20 f2 45 72 72 6f  |.... . . . .Erro|
000001b0  72 31 73 74 0d 00 aa 21  20 c8 99 20 22 57 69 6d  |r1st...! .. "Wim|
000001c0  70 5f 50 6f 6c 6c 22 2c  6d 61 73 6b 25 2c 62 25  |p_Poll",mask%,b%|
000001d0  20 b8 20 70 25 0d 00 b4  0c 20 c8 8e 20 70 25 20  | . p%.... .. p% |
000001e0  ca 0d 00 be 14 20 20 c9  20 30 3a f4 50 52 4f 43  |.....  . 0:.PROC|
000001f0  43 79 63 6c 65 0d 00 c8  12 20 20 c9 20 31 3a f2  |Cycle....  . 1:.|
00000200  50 5f 31 28 62 25 29 0d  00 d2 22 20 20 c9 20 32  |P_1(b%)..."  . 2|
00000210  3a c8 99 20 22 57 69 6d  70 5f 4f 70 65 6e 57 69  |:.. "Wimp_OpenWi|
00000220  6e 64 6f 77 22 2c 2c 62  25 0d 00 dc 12 20 20 c9  |ndow",,b%....  .|
00000230  20 33 3a f2 50 5f 33 28  62 25 29 0d 00 e6 12 20  | 3:.P_3(b%).... |
00000240  20 c9 20 36 3a f2 50 5f  36 28 62 25 29 0d 00 f0  | . 6:.P_6(b%)...|
00000250  12 20 20 c9 20 38 3a f2  50 5f 38 28 62 25 29 0d  |.  . 8:.P_8(b%).|
00000260  00 fa 12 20 20 c9 20 39  3a f2 50 5f 39 28 62 25  |...  . 9:.P_9(b%|
00000270  29 0d 01 04 1a 20 20 c9  20 31 37 2c 31 38 3a f2  |)....  . 17,18:.|
00000280  52 65 63 65 69 76 65 28  62 25 29 0d 01 0e 06 20  |Receive(b%).... |
00000290  cb 0d 01 18 0b fd 20 71  75 69 74 25 0d 01 22 27  |...... quit%.."'|
000002a0  c8 99 20 22 57 69 6d 70  5f 43 6c 6f 73 65 44 6f  |.. "Wimp_CloseDo|
000002b0  77 6e 22 2c 74 61 73 6b  25 2c 26 34 42 35 33 34  |wn",task%,&4B534|
000002c0  31 35 34 0d 01 2c 05 e0  0d 01 36 05 3a 0d 01 40  |154..,....6.:..@|
000002d0  26 20 22 4f 68 20 6e 6f  21 20 41 6e 20 65 72 72  |& "Oh no! An err|
000002e0  6f 72 2c 20 74 68 69 73  20 63 61 6e 27 74 20 62  |or, this can't b|
000002f0  65 21 22 0d 01 4a 29 20  20 20 27 53 6f 72 72 79  |e!"..J)   'Sorry|
00000300  2c 20 62 75 74 20 69 74  27 73 20 77 6f 72 73 65  |, but it's worse|
00000310  20 74 68 61 6e 20 74 68  61 74 2e 27 0d 01 54 34  | than that.'..T4|
00000320  20 22 57 6f 72 73 65 3f  20 49 74 2c 20 69 74 2c  | "Worse? It, it,|
00000330  20 69 74 27 73 20 6e 6f  74 20 61 20 66 61 74 61  | it's not a fata|
00000340  6c 20 65 72 72 6f 72 2c  20 69 73 20 69 74 3f 22  |l error, is it?"|
00000350  0d 01 5e 2a 20 20 20 27  54 68 61 74 20 6a 75 73  |..^*   'That jus|
00000360  74 20 61 62 6f 75 74 20  73 75 6d 73 20 69 74 20  |t about sums it |
00000370  75 70 2e 20 53 6f 72 72  79 27 0d 01 68 0f 20 22  |up. Sorry'..h. "|
00000380  41 72 67 68 68 68 68 21  22 0d 01 72 05 3a 0d 01  |Arghhhh!"..r.:..|
00000390  7c 0f dd 20 f2 45 72 72  6f 72 31 73 74 0d 01 86  ||.. .Error1st...|
000003a0  0d 21 65 72 72 6f 72 25  3d 9f 0d 01 90 23 24 28  |.!error%=....#$(|
000003b0  65 72 72 6f 72 25 2b 34  29 3d f6 24 2b 22 20 61  |error%+4)=.$+" a|
000003c0  74 20 6c 69 6e 65 20 22  2b c3 28 9e 29 0d 01 9a  |t line "+.(.)...|
000003d0  2b c8 99 20 22 57 69 6d  70 5f 52 65 70 6f 72 74  |+.. "Wimp_Report|
000003e0  45 72 72 6f 72 22 2c 65  72 72 6f 72 25 2c 2c 22  |Error",error%,,"|
000003f0  4a 69 67 57 6f 72 64 22  0d 01 a4 17 c8 99 20 22  |JigWord"...... "|
00000400  57 69 6d 70 5f 43 6c 6f  73 65 44 6f 77 6e 22 0d  |Wimp_CloseDown".|
00000410  01 ae 05 e0 0d 01 b8 05  e1 0d 01 c2 05 3a 0d 01  |.............:..|
00000420  cc 34 20 22 53 74 6f 70  20 6d 65 73 73 69 6e 67  |.4 "Stop messing|
00000430  20 77 69 74 68 20 6d 79  20 6d 69 6e 64 20 79 6f  | with my mind yo|
00000440  75 20 6c 69 74 74 6c 65  20 68 6f 72 72 6f 72 73  |u little horrors|
00000450  21 22 0d 01 d6 04 0d 01  e0 38 20 20 20 27 42 75  |!".......8   'Bu|
00000460  74 20 69 74 27 73 20 6f  75 72 20 6a 6f 62 2e 20  |t it's our job. |
00000470  44 6f 6e 27 74 20 74 68  69 6e 6b 20 6f 66 20 75  |Don't think of u|
00000480  73 20 61 73 20 61 6e 20  65 72 72 6f 72 2c 0d 01  |s as an error,..|
00000490  ea 34 20 20 20 6d 6f 72  65 20 61 73 20 6d 65 73  |.4   more as mes|
000004a0  73 61 67 65 73 20 66 72  6f 6d 20 52 49 53 43 4f  |sages from RISCO|
000004b0  53 20 2d 20 70 6f 73 74  63 61 72 64 73 20 66 72  |S - postcards fr|
000004c0  6f 6d 0d 01 f4 0c 20 20  20 52 4f 4d 2e 27 0d 01  |om....   ROM.'..|
000004d0  fe 04 0d 02 08 39 20 22  52 4f 4d 2c 20 52 4f 4d  |.....9 "ROM, ROM|
000004e0  3f 20 49 73 6e 27 74 20  74 68 61 74 20 77 68 65  |? Isn't that whe|
000004f0  72 65 20 74 68 65 20 76  6f 6c 63 61 6e 6f 20 61  |re the volcano a|
00000500  70 70 65 61 72 65 64 20  61 6e 64 0d 02 12 3b 20  |ppeared and...; |
00000510  77 69 70 65 64 20 6f 75  74 20 68 75 6e 64 72 65  |wiped out hundre|
00000520  64 73 20 6f 66 20 69 6e  6e 6f 63 65 6e 74 20 70  |ds of innocent p|
00000530  72 6f 67 72 61 6d 6d 65  72 73 3f 20 49 20 73 61  |rogrammers? I sa|
00000540  77 20 74 68 61 74 0d 02  1c 17 20 76 69 64 65 6f  |w that.... video|
00000550  20 6c 61 73 74 20 6e 69  67 68 74 2e 22 0d 02 26  | last night."..&|
00000560  04 0d 02 30 37 20 20 20  27 59 6f 75 20 72 65 61  |...07   'You rea|
00000570  6c 6c 79 20 64 6f 20 68  61 76 65 20 70 72 6f 62  |lly do have prob|
00000580  6c 65 6d 73 2e 20 49 20  64 6f 6e 27 74 20 74 68  |lems. I don't th|
00000590  69 6e 6b 20 79 6f 75 72  0d 02 3a 2c 20 20 20 73  |ink your..:,   s|
000005a0  6c 69 63 65 64 20 6c 6f  61 66 20 67 6f 65 73 20  |liced loaf goes |
000005b0  72 69 67 68 74 20 74 6f  20 74 68 65 20 63 72 75  |right to the cru|
000005c0  73 74 2e 27 0d 02 44 04  0d 02 4e 3d 20 22 41 6e  |st.'..D...N= "An|
000005d0  64 20 79 6f 75 72 20 64  69 73 63 20 64 72 69 76  |d your disc driv|
000005e0  65 20 68 65 61 64 20 64  6f 65 73 6e 27 74 20 67  |e head doesn't g|
000005f0  6f 20 74 6f 20 74 68 65  20 6c 61 73 74 20 74 72  |o to the last tr|
00000600  61 63 6b 2e 22 0d 02 58  04 0d 02 62 35 20 20 20  |ack."..X...b5   |
00000610  27 54 6f 75 63 68 79 20  74 6f 75 63 68 79 2c 20  |'Touchy touchy, |
00000620  61 72 65 6e 27 74 20 77  65 2e 20 57 65 6c 6c 2c  |aren't we. Well,|
00000630  20 6f 6e 74 6f 20 74 68  65 20 6e 65 78 74 0d 02  | onto the next..|
00000640  6c 12 20 20 20 70 72 6f  63 65 64 75 72 65 2e 27  |l.   procedure.'|
00000650  0d 02 76 05 3a 0d 02 80  15 dd 20 f2 45 72 72 6f  |..v.:..... .Erro|
00000660  72 32 6e 64 28 65 72 72  25 29 0d 02 8a 10 21 65  |r2nd(err%)....!e|
00000670  72 72 6f 72 25 3d 65 72  72 25 0d 02 94 1c 24 28  |rror%=err%....$(|
00000680  65 72 72 6f 72 25 2b 34  29 3d 65 72 72 6f 72 24  |error%+4)=error$|
00000690  28 65 72 72 25 29 0d 02  9e 2b c8 99 20 22 57 69  |(err%)...+.. "Wi|
000006a0  6d 70 5f 52 65 70 6f 72  74 45 72 72 6f 72 22 2c  |mp_ReportError",|
000006b0  65 72 72 6f 72 25 2c 2c  22 4a 69 67 57 6f 72 64  |error%,,"JigWord|
000006c0  22 0d 02 a8 05 e1 0d 02  b2 05 3a 0d 02 bc 11 20  |".........:.... |
000006d0  22 4e 6f 6f 6f 6f 6f 6f  6f 6f 21 22 0d 02 c6 25  |"Noooooooo!"...%|
000006e0  20 20 20 27 44 6f 6e 27  74 20 77 6f 72 72 79 20  |   'Don't worry |
000006f0  61 62 6f 75 74 20 69 74  2e 20 52 65 6c 61 78 2e  |about it. Relax.|
00000700  27 0d 02 d0 11 20 22 41  72 67 68 68 68 68 68 68  |'.... "Arghhhhhh|
00000710  21 22 0d 02 da 38 20 20  20 27 49 74 27 73 20 6f  |!"...8   'It's o|
00000720  6e 6c 79 20 61 6e 6f 74  68 65 72 20 74 79 70 65  |nly another type|
00000730  20 6f 66 20 66 61 74 61  6c 20 69 6e 74 65 72 6e  | of fatal intern|
00000740  61 6c 20 65 72 72 6f 72  2e 27 0d 02 e4 04 0d 02  |al error.'......|
00000750  ee 1c 20 20 20 27 41 6e  64 20 73 74 6f 70 20 64  |..   'And stop d|
00000760  72 69 62 62 6c 69 6e 67  21 27 0d 02 f8 05 3a 0d  |ribbling!'....:.|
00000770  03 02 0f dd 20 f2 45 72  72 6f 72 33 72 64 0d 03  |.... .Error3rd..|
00000780  0c 0d 21 65 72 72 6f 72  25 3d 30 0d 03 16 14 24  |..!error%=0....$|
00000790  28 65 72 72 6f 72 25 2b  34 29 3d 65 72 72 24 0d  |(error%+4)=err$.|
000007a0  03 20 2b c8 99 20 22 57  69 6d 70 5f 52 65 70 6f  |. +.. "Wimp_Repo|
000007b0  72 74 45 72 72 6f 72 22  2c 65 72 72 6f 72 25 2c  |rtError",error%,|
000007c0  2c 22 4a 69 67 57 6f 72  64 22 0d 03 2a 17 c8 99  |,"JigWord"..*...|
000007d0  20 22 57 69 6d 70 5f 43  6c 6f 73 65 44 6f 77 6e  | "Wimp_CloseDown|
000007e0  22 0d 03 34 05 e0 0d 03  3e 05 e1 0d 03 48 05 3a  |"..4....>....H.:|
000007f0  0d 03 52 08 20 22 3f 22  0d 03 5c 04 0d 03 66 2f  |..R. "?"..\...f/|
00000800  20 20 20 27 54 68 61 74  27 73 20 69 74 2c 20 74  |   'That's it, t|
00000810  61 6b 65 20 68 69 6d 20  61 77 61 79 20 6c 61 64  |ake him away lad|
00000820  73 2e 20 49 6e 74 6f 20  74 68 65 0d 03 70 27 20  |s. Into the..p' |
00000830  20 20 6c 61 6e 64 20 6f  66 20 65 74 65 72 6e 61  |  land of eterna|
00000840  6c 20 69 6e 74 65 72 6e  61 6c 20 65 72 72 6f 72  |l internal error|
00000850  2e 27 0d 03 7a 04 0d 03  84 08 20 22 3f 22 0d 03  |.'..z..... "?"..|
00000860  8e 04 0d 03 98 1e 20 20  20 27 54 61 6b 65 20 68  |......   'Take h|
00000870  69 6d 20 74 6f 20 72 6f  6f 6d 20 31 30 31 2e 27  |im to room 101.'|
00000880  0d 03 a2 04 0d 03 ac 20  20 22 57 68 61 74 2c 20  |.......  "What, |
00000890  77 68 61 74 27 73 20 69  6e 20 72 6f 6f 6d 20 31  |what's in room 1|
000008a0  30 31 3f 22 0d 03 b6 04  0d 03 c0 2e 20 20 20 27  |01?"........   '|
000008b0  59 6f 75 20 6b 6e 6f 77  20 77 68 61 74 20 69 73  |You know what is|
000008c0  20 69 6e 20 72 6f 6f 6d  20 31 30 31 2e 20 45 76  | in room 101. Ev|
000008d0  65 72 79 6f 6e 65 0d 03  ca 21 20 20 20 6b 6e 6f  |eryone...!   kno|
000008e0  77 73 20 77 68 61 74 20  69 73 20 69 6e 20 72 6f  |ws what is in ro|
000008f0  6f 6d 20 31 30 31 27 0d  03 d4 04 0d 03 de 10 20  |om 101'........ |
00000900  22 41 72 67 68 68 68 68  68 21 22 0d 03 e8 05 3a  |"Arghhhhh!"....:|
00000910  0d 03 f2 14 dd 20 f2 45  72 72 6f 72 50 72 69 6e  |..... .ErrorPrin|
00000920  74 31 73 74 0d 03 fc 0d  21 65 72 72 6f 72 25 3d  |t1st....!error%=|
00000930  9f 0d 04 06 23 24 28 65  72 72 6f 72 25 2b 34 29  |....#$(error%+4)|
00000940  3d f6 24 2b 22 20 61 74  20 6c 69 6e 65 20 22 2b  |=.$+" at line "+|
00000950  c3 28 9e 29 0d 04 10 2b  c8 99 20 22 57 69 6d 70  |.(.)...+.. "Wimp|
00000960  5f 52 65 70 6f 72 74 45  72 72 6f 72 22 2c 65 72  |_ReportError",er|
00000970  72 6f 72 25 2c 2c 22 4a  69 67 57 6f 72 64 22 0d  |ror%,,"JigWord".|
00000980  04 1a 18 f4 20 27 53 6e  69 67 67 65 72 20 73 6e  |.... 'Snigger sn|
00000990  69 67 67 65 72 2e 27 0d  04 24 05 e1 0d 04 2e 05  |igger.'..$......|
000009a0  3a 0d 04 38 11 dd 20 f2  49 6e 69 74 69 61 6c 69  |:..8.. .Initiali|
000009b0  73 65 0d 04 42 10 68 69  6c 69 74 65 63 6f 6c 25  |se..B.hilitecol%|
000009c0  3d 39 0d 04 4c 15 70 72  69 6e 74 24 3d 22 70 72  |=9..L.print$="pr|
000009d0  69 6e 74 65 72 3a 22 0d  04 56 0e 70 77 69 64 74  |inter:"..V.pwidt|
000009e0  68 25 3d 38 30 0d 04 60  05 3a 0d 04 6a 0c de 20  |h%=80..`.:..j.. |
000009f0  62 25 20 32 35 36 0d 04  74 0d de 20 62 32 25 20  |b% 256..t.. b2% |
00000a00  32 35 36 0d 04 7e 10 de  20 63 6f 64 65 25 20 34  |256..~.. code% 4|
00000a10  30 39 36 0d 04 88 05 3a  0d 04 92 15 de 20 63 72  |096....:..... cr|
00000a20  65 61 74 65 73 25 20 37  2a 31 30 32 34 0d 04 9c  |eates% 7*1024...|
00000a30  20 63 6a 69 67 6c 65 6e  25 3d 38 31 39 32 3a 63  | cjiglen%=8192:c|
00000a40  73 63 72 61 74 6c 65 6e  25 3d 35 31 32 0d 04 a6  |scratlen%=512...|
00000a50  2b de 20 63 6a 69 67 73  74 25 20 63 6a 69 67 6c  |+. cjigst% cjigl|
00000a60  65 6e 25 2c 63 73 63 72  61 74 73 74 25 20 63 73  |en%,cscratst% cs|
00000a70  63 72 61 74 6c 65 6e 25  0d 04 b0 05 3a 0d 04 ba  |cratlen%....:...|
00000a80  36 c8 99 20 22 4f 53 5f  52 65 61 64 56 61 72 56  |6.. "OS_ReadVarV|
00000a90  61 6c 22 2c 22 4a 69 67  57 6f 72 64 24 44 69 72  |al","JigWord$Dir|
00000aa0  22 2c 62 25 2c 32 35 35  2c 30 2c 30 20 b8 20 2c  |",b%,255,0,0 . ,|
00000ab0  2c 6c 25 0d 04 c4 0d 62  25 3f 6c 25 3d 26 30 44  |,l%....b%?l%=&0D|
00000ac0  0d 04 ce 0d 70 61 74 68  24 3d 24 62 25 0d 04 d8  |....path$=$b%...|
00000ad0  18 68 25 3d 8e 28 70 61  74 68 24 2b 22 2e 57 6f  |.h%=.(path$+".Wo|
00000ae0  72 64 73 22 29 0d 04 e2  39 77 6f 72 64 6c 65 6e  |rds")...9wordlen|
00000af0  25 3d 28 9a 23 68 25 29  2b 28 28 9a 23 68 25 29  |%=(.#h%)+((.#h%)|
00000b00  3c 3c 38 29 2b 28 28 9a  23 68 25 29 3c 3c 31 36  |<<8)+((.#h%)<<16|
00000b10  29 2b 28 28 9a 23 68 25  29 3c 3c 32 34 29 0d 04  |)+((.#h%)<<24)..|
00000b20  ec 08 d9 23 68 25 0d 04  f6 16 de 20 77 6f 72 64  |...#h%..... word|
00000b30  73 74 25 20 77 6f 72 64  6c 65 6e 25 0d 05 00 2b  |st% wordlen%...+|
00000b40  ff 20 22 4c 6f 61 64 20  22 2b 70 61 74 68 24 2b  |. "Load "+path$+|
00000b50  22 2e 57 6f 72 64 73 20  31 30 5f 22 2b c3 28 77  |".Words 10_"+.(w|
00000b60  6f 72 64 73 74 25 29 0d  05 0a 05 3a 0d 05 14 2e  |ordst%)....:....|
00000b70  ff 20 22 4c 6f 61 64 20  22 2b 70 61 74 68 24 2b  |. "Load "+path$+|
00000b80  22 2e 43 72 65 61 74 65  4f 20 31 30 5f 22 2b c3  |".CreateO 10_"+.|
00000b90  28 63 72 65 61 74 65 73  25 29 0d 05 1e 14 72 65  |(creates%)....re|
00000ba0  73 75 6c 74 25 3d 63 72  65 61 74 65 73 25 0d 05  |sult%=creates%..|
00000bb0  28 22 63 68 61 6e 67 65  6a 69 67 25 3d 63 72 65  |("changejig%=cre|
00000bc0  61 74 65 73 25 2b 63 72  65 61 74 65 73 25 21 34  |ates%+creates%!4|
00000bd0  0d 05 32 20 63 77 6f 72  64 73 74 25 3d 63 72 65  |..2 cwordst%=cre|
00000be0  61 74 65 73 25 2b 63 72  65 61 74 65 73 25 21 38  |ates%+creates%!8|
00000bf0  0d 05 3c 1f 63 73 69 7a  65 25 3d 63 72 65 61 74  |..<.csize%=creat|
00000c00  65 73 25 2b 63 72 65 61  74 65 73 25 21 31 32 0d  |es%+creates%!12.|
00000c10  05 46 26 63 68 61 6e 67  65 63 73 63 72 61 74 25  |.F&changecscrat%|
00000c20  3d 63 72 65 61 74 65 73  25 2b 63 72 65 61 74 65  |=creates%+create|
00000c30  73 25 21 31 36 0d 05 50  23 63 70 75 7a 7a 61 72  |s%!16..P#cpuzzar|
00000c40  65 61 25 3d 63 72 65 61  74 65 73 25 2b 63 72 65  |ea%=creates%+cre|
00000c50  61 74 65 73 25 21 32 30  0d 05 5a 22 63 69 6e 69  |ates%!20..Z"cini|
00000c60  74 76 61 72 25 3d 63 72  65 61 74 65 73 25 2b 63  |tvar%=creates%+c|
00000c70  72 65 61 74 65 73 25 21  32 34 0d 05 64 23 63 72  |reates%!24..d#cr|
00000c80  65 61 74 65 6a 69 67 25  3d 63 72 65 61 74 65 73  |eatejig%=creates|
00000c90  25 2b 63 72 65 61 74 65  73 25 21 32 38 0d 05 6e  |%+creates%!28..n|
00000ca0  1f 63 72 61 6e 64 25 3d  63 72 65 61 74 65 73 25  |.crand%=creates%|
00000cb0  2b 63 72 65 61 74 65 73  25 21 33 32 0d 05 78 1a  |+creates%!32..x.|
00000cc0  41 25 3d b3 28 2d 91 29  3a 41 25 3d b3 3a d6 20  |A%=.(-.):A%=.:. |
00000cd0  63 72 61 6e 64 25 0d 05  82 27 41 25 3d 63 6a 69  |crand%...'A%=cji|
00000ce0  67 73 74 25 3a 42 25 3d  63 6a 69 67 6c 65 6e 25  |gst%:B%=cjiglen%|
00000cf0  3a d6 20 63 68 61 6e 67  65 6a 69 67 25 0d 05 8c  |:. changejig%...|
00000d00  19 41 25 3d 77 6f 72 64  73 74 25 3a d6 20 63 77  |.A%=wordst%:. cw|
00000d10  6f 72 64 73 74 25 0d 05  96 2e 41 25 3d 63 73 63  |ordst%....A%=csc|
00000d20  72 61 74 73 74 25 3a 42  25 3d 63 73 63 72 61 74  |ratst%:B%=cscrat|
00000d30  6c 65 6e 25 3a d6 20 63  68 61 6e 67 65 63 73 63  |len%:. changecsc|
00000d40  72 61 74 25 0d 05 a0 05  3a 0d 05 aa 15 de 20 64  |rat%....:..... d|
00000d50  69 73 70 6a 69 67 73 74  25 20 36 31 34 34 0d 05  |ispjigst% 6144..|
00000d60  b4 31 ff 20 22 4c 6f 61  64 20 22 2b 70 61 74 68  |.1. "Load "+path|
00000d70  24 2b 22 2e 4a 69 67 44  69 73 70 4f 20 31 30 5f  |$+".JigDispO 10_|
00000d80  22 2b c3 28 64 69 73 70  6a 69 67 73 74 25 29 0d  |"+.(dispjigst%).|
00000d90  05 be 28 43 68 61 6e 67  65 48 69 43 6f 6c 3d 64  |..(ChangeHiCol=d|
00000da0  69 73 70 6a 69 67 73 74  25 2b 64 69 73 70 6a 69  |ispjigst%+dispji|
00000db0  67 73 74 25 21 30 30 0d  05 c8 28 70 75 7a 7a 73  |gst%!00...(puzzs|
00000dc0  68 75 66 66 6c 65 3d 64  69 73 70 6a 69 67 73 74  |huffle=dispjigst|
00000dd0  25 2b 64 69 73 70 6a 69  67 73 74 25 21 30 34 0d  |%+dispjigst%!04.|
00000de0  05 d2 27 70 75 7a 7a 73  65 6c 65 63 74 3d 64 69  |..'puzzselect=di|
00000df0  73 70 6a 69 67 73 74 25  2b 64 69 73 70 6a 69 67  |spjigst%+dispjig|
00000e00  73 74 25 21 30 38 0d 05  dc 21 48 46 69 74 3d 64  |st%!08...!HFit=d|
00000e10  69 73 70 6a 69 67 73 74  25 2b 64 69 73 70 6a 69  |ispjigst%+dispji|
00000e20  67 73 74 25 21 31 32 0d  05 e6 21 56 46 69 74 3d  |gst%!12...!VFit=|
00000e30  64 69 73 70 6a 69 67 73  74 25 2b 64 69 73 70 6a  |dispjigst%+dispj|
00000e40  69 67 73 74 25 21 31 36  0d 05 f0 26 43 68 61 6e  |igst%!16...&Chan|
00000e50  67 65 4a 69 67 3d 64 69  73 70 6a 69 67 73 74 25  |geJig=dispjigst%|
00000e60  2b 64 69 73 70 6a 69 67  73 74 25 21 32 30 0d 05  |+dispjigst%!20..|
00000e70  fa 26 43 68 61 6e 67 65  53 65 6c 3d 64 69 73 70  |.&ChangeSel=disp|
00000e80  6a 69 67 73 74 25 2b 64  69 73 70 6a 69 67 73 74  |jigst%+dispjigst|
00000e90  25 21 32 34 0d 06 04 27  43 72 65 61 74 65 48 65  |%!24...'CreateHe|
00000ea0  61 70 3d 64 69 73 70 6a  69 67 73 74 25 2b 64 69  |ap=dispjigst%+di|
00000eb0  73 70 6a 69 67 73 74 25  21 32 38 0d 06 0e 25 47  |spjigst%!28...%G|
00000ec0  72 69 64 73 65 74 63 3d  64 69 73 70 6a 69 67 73  |ridsetc=dispjigs|
00000ed0  74 25 2b 64 69 73 70 6a  69 67 73 74 25 21 33 32  |t%+dispjigst%!32|
00000ee0  0d 06 18 21 57 6f 72 64  3d 64 69 73 70 6a 69 67  |...!Word=dispjig|
00000ef0  73 74 25 2b 64 69 73 70  6a 69 67 73 74 25 21 33  |st%+dispjigst%!3|
00000f00  36 0d 06 22 29 70 75 7a  7a 73 68 66 6c 61 67 73  |6..")puzzshflags|
00000f10  31 3d 64 69 73 70 6a 69  67 73 74 25 2b 64 69 73  |1=dispjigst%+dis|
00000f20  70 6a 69 67 73 74 25 21  34 30 0d 06 2c 27 6e 65  |pjigst%!40..,'ne|
00000f30  78 74 70 75 7a 7a 73 74  3d 64 69 73 70 6a 69 67  |xtpuzzst=dispjig|
00000f40  73 74 25 2b 64 69 73 70  6a 69 67 73 74 25 21 34  |st%+dispjigst%!4|
00000f50  34 0d 06 36 21 73 65 6c  68 3d 64 69 73 70 6a 69  |4..6!selh=dispji|
00000f60  67 73 74 25 2b 64 69 73  70 6a 69 67 73 74 25 21  |gst%+dispjigst%!|
00000f70  34 38 0d 06 40 21 73 65  6c 76 3d 64 69 73 70 6a  |48..@!selv=dispj|
00000f80  69 67 73 74 25 2b 64 69  73 70 6a 69 67 73 74 25  |igst%+dispjigst%|
00000f90  21 35 32 0d 06 4a 20 66  69 74 3d 64 69 73 70 6a  |!52..J fit=dispj|
00000fa0  69 67 73 74 25 2b 64 69  73 70 6a 69 67 73 74 25  |igst%+dispjigst%|
00000fb0  21 35 36 0d 06 54 21 68  6c 65 6e 3d 64 69 73 70  |!56..T!hlen=disp|
00000fc0  6a 69 67 73 74 25 2b 64  69 73 70 6a 69 67 73 74  |jigst%+dispjigst|
00000fd0  25 21 36 30 0d 06 5e 21  76 6c 65 6e 3d 64 69 73  |%!60..^!vlen=dis|
00000fe0  70 6a 69 67 73 74 25 2b  64 69 73 70 6a 69 67 73  |pjigst%+dispjigs|
00000ff0  74 25 21 36 34 0d 06 68  2c 43 68 61 6e 67 65 42  |t%!64..h,ChangeB|
00001000  63 6b 47 6e 64 43 6f 6c  3d 64 69 73 70 6a 69 67  |ckGndCol=dispjig|
00001010  73 74 25 2b 64 69 73 70  6a 69 67 73 74 25 21 36  |st%+dispjigst%!6|
00001020  38 0d 06 72 05 3a 0d 06  7c 12 65 72 72 25 3d a3  |8..r.:..|.err%=.|
00001030  3a 65 72 72 24 3d 22 22  0d 06 86 1b de 20 65 72  |:err$=""..... er|
00001040  72 6f 72 24 28 31 30 29  2c 65 72 72 6f 72 25 20  |ror$(10),error% |
00001050  32 35 36 0d 06 90 0e e3  20 61 25 3d 30 20 b8 20  |256..... a%=0 . |
00001060  38 0d 06 9a 11 20 f3 20  65 72 72 6f 72 24 28 61  |8.... . error$(a|
00001070  25 29 0d 06 a4 05 ed 0d  06 ae 05 3a 0d 06 b8 0f  |%).........:....|
00001080  6d 61 78 70 75 7a 7a 25  3d 31 30 0d 06 c2 3b de  |maxpuzz%=10...;.|
00001090  20 70 75 7a 7a 73 74 25  20 33 32 2a 31 30 32 34  | puzzst% 32*1024|
000010a0  2c 70 75 7a 7a 69 6e 25  28 6d 61 78 70 75 7a 7a  |,puzzin%(maxpuzz|
000010b0  25 29 2c 70 69 6e 66 6f  25 28 6d 61 78 70 75 7a  |%),pinfo%(maxpuz|
000010c0  7a 25 2c 31 30 29 0d 06  cc 12 de 20 70 75 7a 7a  |z%,10)..... puzz|
000010d0  69 6d 25 20 31 30 32 34  0d 06 d6 1c 70 75 7a 7a  |im% 1024....puzz|
000010e0  65 6e 64 25 3d 70 75 7a  7a 73 74 25 2b 33 32 2a  |end%=puzzst%+32*|
000010f0  31 30 32 34 0d 06 e0 16  6e 78 74 70 75 7a 7a 73  |1024....nxtpuzzs|
00001100  74 25 3d 70 75 7a 7a 73  74 25 0d 06 ea 16 de 20  |t%=puzzst%..... |
00001110  70 66 72 65 65 25 28 6d  61 78 70 75 7a 7a 25 29  |pfree%(maxpuzz%)|
00001120  0d 06 f4 05 3a 0d 06 fe  13 de 20 73 63 72 61 74  |....:..... scrat|
00001130  63 68 25 20 34 30 39 36  0d 07 08 05 3a 0d 07 12  |ch% 4096....:...|
00001140  10 6d 61 78 70 77 6f 72  64 25 3d 31 30 0d 07 1c  |.maxpword%=10...|
00001150  2b de 20 70 77 6f 72 64  25 28 6d 61 78 70 77 6f  |+. pword%(maxpwo|
00001160  72 64 25 2c 35 29 2c 70  77 75 73 65 25 28 6d 61  |rd%,5),pwuse%(ma|
00001170  78 70 77 6f 72 64 25 29  0d 07 26 05 3a 0d 07 30  |xpword%)..&.:..0|
00001180  11 de 20 63 72 65 61 74  65 25 28 31 30 29 0d 07  |.. create%(10)..|
00001190  3a 05 3a 0d 07 44 39 de  20 73 70 72 61 72 65 61  |:.:..D9. sprarea|
000011a0  25 28 34 29 3a f4 20 73  70 72 69 74 65 20 61 72  |%(4):. sprite ar|
000011b0  65 61 20 61 64 64 72 65  73 73 65 73 2c 20 30 20  |ea addresses, 0 |
000011c0  69 73 20 57 69 6d 70 20  61 72 65 61 0d 07 4e 11  |is Wimp area..N.|
000011d0  73 70 72 61 72 65 61 25  28 30 29 3d 31 0d 07 58  |sprarea%(0)=1..X|
000011e0  05 3a 0d 07 62 1b 6e 75  6d 69 63 6f 6e 25 3d 37  |.:..b.numicon%=7|
000011f0  35 3a 6e 65 78 74 69 63  6f 6e 25 3d 30 0d 07 6c  |5:nexticon%=0..l|
00001200  29 de 20 69 63 6f 6e 25  28 6e 75 6d 69 63 6f 6e  |). icon%(numicon|
00001210  25 2c 39 29 2c 69 63 6f  6e 24 28 6e 75 6d 69 63  |%,9),icon$(numic|
00001220  6f 6e 25 2c 31 29 0d 07  76 10 de 20 69 63 6f 6e  |on%,1)..v.. icon|
00001230  73 74 25 20 36 34 0d 07  80 11 f2 52 65 61 64 49  |st% 64.....ReadI|
00001240  63 6f 6e 44 61 74 61 0d  07 8a 1a 70 77 6f 72 64  |conData....pword|
00001250  69 63 6f 6e 73 74 25 3d  6e 65 78 74 69 63 6f 6e  |iconst%=nexticon|
00001260  25 0d 07 94 1e 6e 65 78  74 69 63 6f 6e 25 2b 3d  |%....nexticon%+=|
00001270  28 6d 61 78 70 77 6f 72  64 25 2b 31 29 2a 33 0d  |(maxpword%+1)*3.|
00001280  07 9e 05 3a 0d 07 a8 26  6e 75 6d 6d 65 6e 75 25  |...:...&nummenu%|
00001290  3d 31 30 3a 6e 65 78 74  6d 65 6e 75 25 3d 30 3a  |=10:nextmenu%=0:|
000012a0  6d 61 78 69 74 65 6d 25  3d 39 0d 07 b2 3b de 20  |maxitem%=9...;. |
000012b0  69 74 65 6d 25 28 6e 75  6d 6d 65 6e 75 25 2c 6d  |item%(nummenu%,m|
000012c0  61 78 69 74 65 6d 25 2c  34 29 2c 69 74 65 6d 24  |axitem%,4),item$|
000012d0  28 6e 75 6d 6d 65 6e 75  25 2c 6d 61 78 69 74 65  |(nummenu%,maxite|
000012e0  6d 25 2c 31 29 0d 07 bc  27 de 20 6d 65 6e 75 25  |m%,1)...'. menu%|
000012f0  28 6e 75 6d 6d 65 6e 75  25 2c 31 29 2c 6d 65 6e  |(nummenu%,1),men|
00001300  75 24 28 6e 75 6d 6d 65  6e 75 25 29 0d 07 c6 24  |u$(nummenu%)...$|
00001310  de 20 6d 65 6e 75 73 74  25 20 31 30 32 34 2c 6d  |. menust% 1024,m|
00001320  65 6e 75 69 6e 25 28 6e  75 6d 6d 65 6e 75 25 29  |enuin%(nummenu%)|
00001330  0d 07 d0 38 6e 78 74 6d  65 6e 75 73 74 25 3d 6d  |...8nxtmenust%=m|
00001340  65 6e 75 73 74 25 3a 6d  65 6e 75 65 6e 64 25 3d  |enust%:menuend%=|
00001350  6d 65 6e 75 73 74 25 2b  31 30 32 34 3a 6e 65 78  |menust%+1024:nex|
00001360  74 6d 65 6e 75 25 3d 30  0d 07 da 11 f2 52 65 61  |tmenu%=0.....Rea|
00001370  64 4d 65 6e 75 44 61 74  61 0d 07 e4 05 3a 0d 07  |dMenuData....:..|
00001380  ee 26 6e 75 6d 6d 73 25  3d 31 30 3a f4 20 6e 75  |.&numms%=10:. nu|
00001390  6d 62 65 72 20 6d 65 6e  75 20 73 74 72 75 63 74  |mber menu struct|
000013a0  75 72 65 73 0d 07 f8 28  de 20 6d 73 74 72 75 63  |ures...(. mstruc|
000013b0  74 73 74 25 20 31 30 32  33 2c 6d 73 74 72 75 63  |tst% 1023,mstruc|
000013c0  74 69 6e 25 28 6e 75 6d  6d 73 25 29 0d 08 02 36  |tin%(numms%)...6|
000013d0  6e 78 74 6d 73 74 72 75  63 74 25 3d 6d 73 74 72  |nxtmstruct%=mstr|
000013e0  75 63 74 73 74 25 3a 6d  73 74 72 75 63 74 65 6e  |uctst%:mstructen|
000013f0  64 25 3d 6d 73 74 72 75  63 74 73 74 25 2b 31 30  |d%=mstructst%+10|
00001400  32 34 0d 08 0c 14 f2 52  65 61 64 4d 53 74 72 75  |24.....ReadMStru|
00001410  63 74 44 61 74 61 0d 08  16 05 3a 0d 08 20 0f 6e  |ctData....:.. .n|
00001420  75 6d 64 61 74 25 3d 32  30 30 0d 08 2a 23 de 20  |umdat%=200..*#. |
00001430  69 6e 64 61 74 61 25 20  31 30 32 34 2c 64 61 74  |indata% 1024,dat|
00001440  61 25 28 6e 75 6d 64 61  74 25 2c 33 29 0d 08 34  |a%(numdat%,3)..4|
00001450  19 64 61 74 61 65 6e 64  25 3d 69 6e 64 61 74 61  |.dataend%=indata|
00001460  25 2b 31 30 32 34 0d 08  3e 21 6e 65 78 74 64 61  |%+1024..>!nextda|
00001470  74 25 3d 30 3a 6e 65 78  74 64 61 74 73 74 25 3d  |t%=0:nextdatst%=|
00001480  69 6e 64 61 74 61 25 0d  08 48 15 f4 20 69 6e 64  |indata%..H.. ind|
00001490  69 72 65 63 74 65 64 20  64 61 74 61 0d 08 52 42  |irected data..RB|
000014a0  f4 20 64 61 74 61 25 28  69 74 65 6d 20 6e 75 6d  |. data%(item num|
000014b0  2c 5b 64 61 74 61 20 73  74 61 72 74 2c 6c 65 6e  |,[data start,len|
000014c0  67 74 68 2c 76 61 6c 69  64 61 74 69 6f 6e 7b 2d  |gth,validation{-|
000014d0  31 7d 2c 6c 65 6e 67 74  68 7b 2d 31 7d 5d 0d 08  |1},length{-1}]..|
000014e0  5c 05 3a 0d 08 66 41 6e  65 78 74 77 70 6f 73 25  |\.:..fAnextwpos%|
000014f0  3d 30 3a f4 20 69 6e 63  72 65 6d 65 6e 74 65 64  |=0:. incremented|
00001500  20 74 6f 20 61 6c 6c 6f  77 20 77 69 6e 64 6f 77  | to allow window|
00001510  73 20 74 6f 20 6f 70 65  6e 20 61 74 20 6f 66 66  |s to open at off|
00001520  73 65 74 73 0d 08 70 0f  6e 75 6d 77 69 6e 64 25  |sets..p.numwind%|
00001530  3d 31 35 0d 08 7a 38 de  20 77 69 6e 64 25 28 6e  |=15..z8. wind%(n|
00001540  75 6d 77 69 6e 64 25 2c  32 30 29 2c 77 69 6e 64  |umwind%,20),wind|
00001550  24 28 6e 75 6d 77 69 6e  64 25 29 2c 77 75 73 65  |$(numwind%),wuse|
00001560  25 28 6e 75 6d 77 69 6e  64 25 29 0d 08 84 10 de  |%(numwind%).....|
00001570  20 77 62 75 66 66 25 20  35 31 32 0d 08 8e 13 f2  | wbuff% 512.....|
00001580  52 65 61 64 57 69 6e 64  6f 77 44 61 74 61 0d 08  |ReadWindowData..|
00001590  98 05 e1 0d 08 a2 05 3a  0d 08 ac 30 20 20 41 6e  |.......:...0  An|
000015a0  79 6f 6e 65 20 77 61 6e  74 69 6e 67 20 74 6f 20  |yone wanting to |
000015b0  6b 6e 6f 77 20 68 6f 77  20 74 68 65 20 70 75 7a  |know how the puz|
000015c0  7a 6c 65 73 20 61 72 65  0d 08 b6 36 20 20 63 72  |zles are...6  cr|
000015d0  65 61 74 65 64 2c 20 74  6f 75 67 68 21 20 49 74  |eated, tough! It|
000015e0  27 73 20 61 6c 6c 20 69  6e 20 6d 61 63 68 69 6e  |'s all in machin|
000015f0  65 20 63 6f 64 65 2e 20  41 6e 64 20 73 6f 0d 08  |e code. And so..|
00001600  c0 1a 20 20 69 73 20 74  68 65 20 64 69 73 70 6c  |..  is the displ|
00001610  61 79 20 63 6f 64 65 2e  0d 08 ca 05 3a 0d 08 d4  |ay code.....:...|
00001620  1d dd 20 f2 49 6e 69 74  69 61 6c 69 73 65 44 69  |.. .InitialiseDi|
00001630  73 70 46 69 6c 65 28 70  25 29 0d 08 de 1d 70 69  |spFile(p%)....pi|
00001640  6e 66 6f 25 28 70 25 2c  30 29 3d 6e 78 74 70 75  |nfo%(p%,0)=nxtpu|
00001650  7a 7a 73 74 25 21 34 0d  08 e8 1d 70 69 6e 66 6f  |zzst%!4....pinfo|
00001660  25 28 70 25 2c 31 29 3d  6e 78 74 70 75 7a 7a 73  |%(p%,1)=nxtpuzzs|
00001670  74 25 21 38 0d 08 f2 29  70 69 6e 66 6f 25 28 70  |t%!8...)pinfo%(p|
00001680  25 2c 32 29 3d a4 50 4e  75 6d 4f 66 57 6f 72 64  |%,2)=.PNumOfWord|
00001690  73 28 6e 78 74 70 75 7a  7a 73 74 25 29 0d 08 fc  |s(nxtpuzzst%)...|
000016a0  12 70 69 6e 66 6f 25 28  70 25 2c 33 29 3d 30 0d  |.pinfo%(p%,3)=0.|
000016b0  09 06 12 70 69 6e 66 6f  25 28 70 25 2c 34 29 3d  |...pinfo%(p%,4)=|
000016c0  30 0d 09 10 13 70 69 6e  66 6f 25 28 70 25 2c 35  |0....pinfo%(p%,5|
000016d0  29 3d 2d 31 0d 09 1a 13  70 69 6e 66 6f 25 28 70  |)=-1....pinfo%(p|
000016e0  25 2c 36 29 3d 2d 31 0d  09 24 13 70 69 6e 66 6f  |%,6)=-1..$.pinfo|
000016f0  25 28 70 25 2c 37 29 3d  2d 31 0d 09 2e 12 70 69  |%(p%,7)=-1....pi|
00001700  6e 66 6f 25 28 70 25 2c  38 29 3d 30 0d 09 38 12  |nfo%(p%,8)=0..8.|
00001710  70 69 6e 66 6f 25 28 70  25 2c 39 29 3d 30 0d 09  |pinfo%(p%,9)=0..|
00001720  42 13 70 69 6e 66 6f 25  28 70 25 2c 31 30 29 3d  |B.pinfo%(p%,10)=|
00001730  30 0d 09 4c 11 70 66 72  65 65 25 28 70 25 29 3d  |0..L.pfree%(p%)=|
00001740  2d 31 0d 09 56 1a 70 75  7a 7a 69 6e 25 28 70 25  |-1..V.puzzin%(p%|
00001750  29 3d 6e 78 74 70 75 7a  7a 73 74 25 0d 09 60 1b  |)=nxtpuzzst%..`.|
00001760  6e 78 74 70 75 7a 7a 73  74 25 2b 3d 21 6e 78 74  |nxtpuzzst%+=!nxt|
00001770  70 75 7a 7a 73 74 25 0d  09 6a 05 e1 0d 09 74 05  |puzzst%..j....t.|
00001780  3a 0d 09 7e 13 dd 20 f2  52 65 61 64 49 63 6f 6e  |:..~.. .ReadIcon|
00001790  44 61 74 61 0d 09 88 0e  ea 20 61 25 2c 62 25 2c  |Data..... a%,b%,|
000017a0  6e 25 0d 09 92 0a f7 20  8d 54 6c 50 0d 09 9c 08  |n%..... .TlP....|
000017b0  f3 20 6e 25 0d 09 a6 11  e3 20 61 25 3d 30 20 b8  |. n%..... a%=0 .|
000017c0  20 6e 25 2d 31 0d 09 b0  0f 20 e3 20 62 25 3d 30  | n%-1.... . b%=0|
000017d0  20 b8 20 39 0d 09 ba 14  20 20 f3 20 69 63 6f 6e  | . 9....  . icon|
000017e0  25 28 61 25 2c 62 25 29  0d 09 c4 25 20 20 e7 20  |%(a%,b%)...%  . |
000017f0  69 63 6f 6e 25 28 61 25  2c 36 29 3d 34 20 8c 20  |icon%(a%,6)=4 . |
00001800  69 63 6f 6e 25 28 61 25  2c 36 29 3d 31 0d 09 ce  |icon%(a%,6)=1...|
00001810  06 20 ed 0d 09 d8 1e 20  f3 20 69 63 6f 6e 24 28  |. ..... . icon$(|
00001820  61 25 2c 30 29 2c 69 63  6f 6e 24 28 61 25 2c 31  |a%,0),icon$(a%,1|
00001830  29 0d 09 e2 47 20 f2 43  68 65 63 6b 49 63 6f 6e  |)...G .CheckIcon|
00001840  44 61 74 61 28 61 25 2c  69 63 6f 6e 25 28 61 25  |Data(a%,icon%(a%|
00001850  2c 38 29 2c 69 63 6f 6e  24 28 61 25 2c 30 29 2c  |,8),icon$(a%,0),|
00001860  69 63 6f 6e 24 28 61 25  2c 31 29 2c 69 63 6f 6e  |icon$(a%,1),icon|
00001870  25 28 61 25 2c 34 29 29  0d 09 ec 17 20 e7 20 65  |%(a%,4)).... . e|
00001880  72 72 25 20 8c 20 f2 45  72 72 6f 72 33 72 64 0d  |rr% . .Error3rd.|
00001890  09 f6 05 ed 0d 0a 00 10  6e 65 78 74 69 63 6f 6e  |........nexticon|
000018a0  25 3d 6e 25 0d 0a 0a 05  e1 0d 0a 14 24 dd 20 f2  |%=n%........$. .|
000018b0  43 68 65 63 6b 49 63 6f  6e 44 61 74 61 28 69 25  |CheckIconData(i%|
000018c0  2c 6c 25 2c 61 24 2c 62  24 2c 66 25 29 0d 0a 1e  |,l%,a$,b$,f%)...|
000018d0  14 c8 8e 20 69 63 6f 6e  25 28 61 25 2c 36 29 20  |... icon%(a%,6) |
000018e0  ca 0d 0a 28 09 20 c9 20  30 3a 0d 0a 32 33 20 20  |...(. . 0:..23  |
000018f0  e7 20 a9 28 61 24 29 3e  31 32 20 84 20 28 66 25  |. .(a$)>12 . (f%|
00001900  20 80 20 25 31 29 3c 3e  25 31 20 84 20 28 66 25  | . %1)<>%1 . (f%|
00001910  20 80 20 32 35 36 29 3d  32 35 36 20 8c 0d 0a 3c  | . 256)=256 ...<|
00001920  32 20 20 20 65 72 72 25  3d b9 3a 65 72 72 24 3d  |2   err%=.:err$=|
00001930  22 49 63 6f 6e 20 22 2b  c3 28 69 25 29 2b 22 20  |"Icon "+.(i%)+" |
00001940  69 73 20 69 6e 76 61 6c  69 64 20 28 30 29 22 0d  |is invalid (0)".|
00001950  0a 46 08 20 20 20 e1 0d  0a 50 07 20 20 cd 0d 0a  |.F.   ...P.  ...|
00001960  5a 09 20 c9 20 31 3a 0d  0a 64 33 20 20 e7 20 a9  |Z. . 1:..d3  . .|
00001970  28 61 24 29 2b 31 3e 6c  25 20 84 20 28 66 25 20  |(a$)+1>l% . (f% |
00001980  80 20 25 31 29 3c 3e 25  31 20 84 20 28 66 25 20  |. %1)<>%1 . (f% |
00001990  80 20 32 35 36 29 3d 30  20 8c 0d 0a 6e 32 20 20  |. 256)=0 ...n2  |
000019a0  20 65 72 72 25 3d b9 3a  65 72 72 24 3d 22 49 63  | err%=.:err$="Ic|
000019b0  6f 6e 20 22 2b c3 28 69  25 29 2b 22 20 69 73 20  |on "+.(i%)+" is |
000019c0  69 6e 76 61 6c 69 64 20  28 31 29 22 0d 0a 78 08  |invalid (1)"..x.|
000019d0  20 20 20 e1 0d 0a 82 07  20 20 cd 0d 0a 8c 09 20  |   .....  ..... |
000019e0  c9 20 32 3a 0d 0a 96 35  20 20 e7 20 a9 28 61 24  |. 2:...5  . .(a$|
000019f0  29 3e 31 32 20 84 20 28  66 25 20 80 20 25 31 30  |)>12 . (f% . %10|
00001a00  29 3c 3e 25 31 30 20 84  20 28 66 25 20 80 20 32  |)<>%10 . (f% . 2|
00001a10  35 36 29 3d 32 35 36 20  8c 0d 0a a0 32 20 20 20  |56)=256 ....2   |
00001a20  65 72 72 25 3d b9 3a 65  72 72 24 3d 22 49 63 6f  |err%=.:err$="Ico|
00001a30  6e 20 22 2b c3 28 69 25  29 2b 22 20 69 73 20 69  |n "+.(i%)+" is i|
00001a40  6e 76 61 6c 69 64 20 28  32 29 22 0d 0a aa 08 20  |nvalid (2)".... |
00001a50  20 20 e1 0d 0a b4 07 20  20 cd 0d 0a be 09 20 c9  |  .....  ..... .|
00001a60  20 33 3a 0d 0a c8 3a 20  20 e7 20 a9 28 61 24 29  | 3:...:  . .(a$)|
00001a70  2b 31 3e 6c 25 20 84 20  62 24 3d 22 22 20 84 20  |+1>l% . b$="" . |
00001a80  28 66 25 20 80 20 25 31  30 29 3d 30 20 84 20 28  |(f% . %10)=0 . (|
00001a90  66 25 20 80 20 32 35 36  29 3d 30 20 8c 0d 0a d2  |f% . 256)=0 ....|
00001aa0  32 20 20 20 65 72 72 25  3d b9 3a 65 72 72 24 3d  |2   err%=.:err$=|
00001ab0  22 49 63 6f 6e 20 22 2b  c3 28 69 25 29 2b 22 20  |"Icon "+.(i%)+" |
00001ac0  69 73 20 69 6e 76 61 6c  69 64 20 28 33 29 22 0d  |is invalid (3)".|
00001ad0  0a dc 08 20 20 20 e1 0d  0a e6 07 20 20 cd 0d 0a  |...   .....  ...|
00001ae0  f0 09 20 c9 20 34 3a 0d  0a fa 40 20 20 65 72 72  |.. . 4:...@  err|
00001af0  25 3d b9 3a 65 72 72 24  3d 22 49 63 6f 6e 20 22  |%=.:err$="Icon "|
00001b00  2b c3 28 69 25 29 2b 22  20 68 61 73 20 74 79 70  |+.(i%)+" has typ|
00001b10  65 20 34 2c 20 70 6c 65  61 73 65 20 75 73 65 20  |e 4, please use |
00001b20  74 79 70 65 20 31 22 0d  0b 04 06 20 7f 0d 0b 0e  |type 1".... ....|
00001b30  36 20 20 65 72 72 25 3d  b9 3a 65 72 72 24 3d 22  |6  err%=.:err$="|
00001b40  49 63 6f 6e 20 22 2b c3  28 69 25 29 2b 22 20 68  |Icon "+.(i%)+" h|
00001b50  61 73 20 61 6e 20 75 6e  6b 6e 6f 77 6e 20 74 79  |as an unknown ty|
00001b60  70 65 22 0d 0b 18 07 20  20 e1 0d 0b 22 05 cb 0d  |pe"....  ..."...|
00001b70  0b 2c 05 e1 0d 0b 36 05  3a 0d 0b 40 13 dd 20 f2  |.,....6.:..@.. .|
00001b80  52 65 61 64 4d 65 6e 75  44 61 74 61 0d 0b 4a 0e  |ReadMenuData..J.|
00001b90  ea 20 61 25 2c 6e 25 2c  62 25 0d 0b 54 0a f7 20  |. a%,n%,b%..T.. |
00001ba0  8d 44 6e 4f 0d 0b 5e 08  f3 20 6e 25 0d 0b 68 11  |.DnO..^.. n%..h.|
00001bb0  e3 20 61 25 3d 30 20 b8  20 6e 25 2d 31 0d 0b 72  |. a%=0 . n%-1..r|
00001bc0  10 20 f3 20 6d 65 6e 75  24 28 61 25 29 0d 0b 7c  |. . menu$(a%)..||
00001bd0  1e 20 f3 20 6d 65 6e 75  25 28 61 25 2c 30 29 2c  |. . menu%(a%,0),|
00001be0  6d 65 6e 75 25 28 61 25  2c 31 29 0d 0b 86 1b 20  |menu%(a%,1).... |
00001bf0  e3 20 62 25 3d 30 20 b8  20 6d 65 6e 75 25 28 61  |. b%=0 . menu%(a|
00001c00  25 2c 31 29 2d 31 0d 0b  90 43 20 20 f3 20 69 74  |%,1)-1...C  . it|
00001c10  65 6d 25 28 61 25 2c 62  25 2c 30 29 2c 69 74 65  |em%(a%,b%,0),ite|
00001c20  6d 25 28 61 25 2c 62 25  2c 31 29 2c 69 74 65 6d  |m%(a%,b%,1),item|
00001c30  25 28 61 25 2c 62 25 2c  32 29 2c 69 74 65 6d 25  |%(a%,b%,2),item%|
00001c40  28 61 25 2c 62 25 2c 33  29 0d 0b 9a 16 20 20 f3  |(a%,b%,3)....  .|
00001c50  20 69 74 65 6d 25 28 61  25 2c 62 25 2c 34 29 0d  | item%(a%,b%,4).|
00001c60  0b a4 25 20 20 f3 20 69  74 65 6d 24 28 61 25 2c  |..%  . item$(a%,|
00001c70  62 25 2c 30 29 2c 69 74  65 6d 24 28 61 25 2c 62  |b%,0),item$(a%,b|
00001c80  25 2c 31 29 0d 0b ae 06  20 ed 0d 0b b8 17 20 f2  |%,1).... ..... .|
00001c90  43 68 65 63 6b 4d 65 6e  75 44 61 74 61 28 61 25  |CheckMenuData(a%|
00001ca0  29 0d 0b c2 17 20 e7 20  65 72 72 25 20 8c 20 f2  |).... . err% . .|
00001cb0  45 72 72 6f 72 33 72 64  0d 0b cc 05 ed 0d 0b d6  |Error3rd........|
00001cc0  05 e1 0d 0b e0 18 dd 20  f2 43 68 65 63 6b 4d 65  |....... .CheckMe|
00001cd0  6e 75 44 61 74 61 28 6d  25 29 0d 0b ea 0b ea 20  |nuData(m%)..... |
00001ce0  62 25 2c 66 25 0d 0b f4  17 e7 20 a9 28 6d 65 6e  |b%,f%..... .(men|
00001cf0  75 24 28 6d 25 29 29 3e  31 32 20 8c 0d 0b fe 29  |u$(m%))>12 ....)|
00001d00  20 65 72 72 24 3d 22 4d  65 6e 75 20 22 2b c3 28  | err$="Menu "+.(|
00001d10  61 25 29 2b 22 20 74 69  74 6c 65 20 74 6f 6f 20  |a%)+" title too |
00001d20  6c 6f 6e 67 22 0d 0c 08  0b 20 65 72 72 25 3d b9  |long".... err%=.|
00001d30  0d 0c 12 06 20 e1 0d 0c  1c 05 cd 0d 0c 26 1a e3  |.... ........&..|
00001d40  20 62 25 3d 30 20 b8 20  6d 65 6e 75 25 28 6d 25  | b%=0 . menu%(m%|
00001d50  2c 31 29 2d 31 0d 0c 30  16 20 66 25 3d 69 74 65  |,1)-1..0. f%=ite|
00001d60  6d 25 28 6d 25 2c 62 25  2c 33 29 0d 0c 3a 27 20  |m%(m%,b%,3)..:' |
00001d70  e7 20 28 66 25 20 80 20  25 31 30 30 30 30 31 29  |. (f% . %100001)|
00001d80  3c 3e 25 31 30 30 30 31  20 80 20 66 25 3c 3e 30  |<>%10001 . f%<>0|
00001d90  20 8c 0d 0c 44 47 20 20  65 72 72 24 3d 22 4d 65  | ...DG  err$="Me|
00001da0  6e 75 20 22 2b c3 28 6d  25 29 2b 22 20 69 74 65  |nu "+.(m%)+" ite|
00001db0  6d 20 22 2b c3 28 62 25  29 2b 22 20 69 63 6f 6e  |m "+.(b%)+" icon|
00001dc0  20 66 6c 61 67 73 20 73  68 6f 75 6c 64 20 62 65  | flags should be|
00001dd0  20 25 31 30 30 30 30 31  22 0d 0c 4e 0c 20 20 65  | %100001"..N.  e|
00001de0  72 72 25 3d b9 0d 0c 58  07 20 20 e1 0d 0c 62 06  |rr%=...X.  ...b.|
00001df0  20 cd 0d 0c 6c 2c 20 e7  20 a9 28 69 74 65 6d 24  | ...l, . .(item$|
00001e00  28 6d 25 2c 62 25 2c 30  29 29 3e 31 32 20 80 20  |(m%,b%,0))>12 . |
00001e10  28 66 25 20 80 20 32 35  36 29 3d 30 20 8c 0d 0c  |(f% . 256)=0 ...|
00001e20  76 3f 20 20 65 72 72 24  3d 22 4d 65 6e 75 20 22  |v?  err$="Menu "|
00001e30  2b c3 28 6d 25 29 2b 22  20 69 74 65 6d 20 22 2b  |+.(m%)+" item "+|
00001e40  c3 28 62 25 29 2b 22 20  73 68 6f 75 6c 64 20 62  |.(b%)+" should b|
00001e50  65 20 69 6e 64 69 72 65  63 74 65 64 22 0d 0c 80  |e indirected"...|
00001e60  0c 20 20 65 72 72 25 3d  b9 0d 0c 8a 07 20 20 e1  |.  err%=.....  .|
00001e70  0d 0c 94 06 20 cd 0d 0c  9e 3c 20 e7 20 28 66 25  |.... ....< . (f%|
00001e80  20 80 20 32 35 36 29 3d  32 35 36 20 80 20 a9 28  | . 256)=256 . .(|
00001e90  69 74 65 6d 24 28 6d 25  2c 62 25 2c 30 29 29 2b  |item$(m%,b%,0))+|
00001ea0  31 3c 69 74 65 6d 25 28  6d 25 2c 62 25 2c 34 29  |1<item%(m%,b%,4)|
00001eb0  20 8c 0d 0c a8 3b 20 20  65 72 72 24 3d 22 4d 65  | ....;  err$="Me|
00001ec0  6e 75 20 22 2b c3 28 6d  25 29 2b 22 20 69 74 65  |nu "+.(m%)+" ite|
00001ed0  6d 20 22 2b c3 28 62 25  29 2b 22 20 73 68 6f 75  |m "+.(b%)+" shou|
00001ee0  6c 64 20 69 73 20 61 20  6d 65 73 73 22 0d 0c b2  |ld is a mess"...|
00001ef0  0c 20 20 65 72 72 25 3d  b9 0d 0c bc 07 20 20 e1  |.  err%=.....  .|
00001f00  0d 0c c6 06 20 cd 0d 0c  d0 05 ed 0d 0c da 05 e1  |.... ...........|
00001f10  0d 0c e4 05 3a 0d 0c ee  16 dd 20 f2 52 65 61 64  |....:..... .Read|
00001f20  4d 53 74 72 75 63 74 44  61 74 61 0d 0c f8 17 ea  |MStructData.....|
00001f30  20 61 25 2c 6e 25 2c 6f  25 2c 61 64 64 72 25 2c  | a%,n%,o%,addr%,|
00001f40  64 25 0d 0d 02 0a f7 20  8d 74 4e 52 0d 0d 0c 08  |d%..... .tNR....|
00001f50  f3 20 6e 25 0d 0d 16 15  61 64 64 72 25 3d 6e 78  |. n%....addr%=nx|
00001f60  74 6d 73 74 72 75 63 74  25 0d 0d 20 11 e3 20 61  |tmstruct%.. .. a|
00001f70  25 3d 30 20 b8 20 6e 25  2d 31 0d 0d 2a 19 20 6d  |%=0 . n%-1..*. m|
00001f80  73 74 72 75 63 74 69 6e  25 28 61 25 29 3d 61 64  |structin%(a%)=ad|
00001f90  64 72 25 0d 0d 34 06 20  f5 0d 0d 3e 0a 20 20 f3  |dr%..4. ...>.  .|
00001fa0  20 64 25 0d 0d 48 0f 20  20 21 61 64 64 72 25 3d  | d%..H.  !addr%=|
00001fb0  64 25 0d 0d 52 0e 20 20  61 64 64 72 25 2b 3d 34  |d%..R.  addr%+=4|
00001fc0  0d 0d 5c 0c 20 fd 20 64  25 3d 2d 31 0d 0d 66 05  |..\. . d%=-1..f.|
00001fd0  ed 0d 0d 70 15 6e 73 74  6d 73 74 72 75 63 74 25  |...p.nstmstruct%|
00001fe0  3d 61 64 64 72 25 0d 0d  7a 05 e1 0d 0d 84 05 3a  |=addr%..z......:|
00001ff0  0d 0d 8e 15 dd 20 f2 52  65 61 64 57 69 6e 64 6f  |..... .ReadWindo|
00002000  77 44 61 74 61 0d 0d 98  0e ea 20 61 25 2c 6e 25  |wData..... a%,n%|
00002010  2c 62 25 0d 0d a2 0a f7  20 8d 74 48 4e 0d 0d ac  |,b%..... .tHN...|
00002020  08 f3 20 6e 25 0d 0d b6  11 e3 20 61 25 3d 30 20  |.. n%..... a%=0 |
00002030  b8 20 6e 25 2d 31 0d 0d  c0 10 20 f3 20 77 69 6e  |. n%-1.... . win|
00002040  64 24 28 61 25 29 0d 0d  ca 10 20 e3 20 62 25 3d  |d$(a%).... . b%=|
00002050  30 20 b8 20 32 30 0d 0d  d4 14 20 20 f3 20 77 69  |0 . 20....  . wi|
00002060  6e 64 25 28 61 25 2c 62  25 29 0d 0d de 06 20 ed  |nd%(a%,b%).... .|
00002070  0d 0d e8 11 20 77 75 73  65 25 28 61 25 29 3d 2d  |.... wuse%(a%)=-|
00002080  31 0d 0d f2 05 ed 0d 0d  fc 05 e1 0d 0e 06 05 3a  |1..............:|
00002090  0d 0e 10 49 f4 20 20 49  66 20 79 6f 75 20 67 65  |...I.  If you ge|
000020a0  74 20 74 68 65 20 66 69  72 73 74 20 6d 65 73 73  |t the first mess|
000020b0  61 67 65 2c 20 63 6f 6e  67 72 61 74 75 6c 61 74  |age, congratulat|
000020c0  69 6f 6e 73 21 20 49 74  20 74 6f 6f 6b 20 6d 65  |ions! It took me|
000020d0  20 66 6f 72 65 76 65 72  2e 0d 0e 1a 05 3a 0d 0e  | forever.....:..|
000020e0  24 49 dc 20 22 4e 6f 74  20 65 6e 6f 75 67 68 20  |$I. "Not enough |
000020f0  69 6e 64 69 72 65 63 74  65 64 20 64 61 74 61 20  |indirected data |
00002100  77 6f 72 6b 73 70 61 63  65 2c 20 74 65 6c 6c 20  |workspace, tell |
00002110  61 20 63 6f 6d 70 65 74  65 6e 74 20 70 72 6f 67  |a competent prog|
00002120  72 61 6d 6d 65 72 22 0d  0e 2e 1b dc 20 22 4d 69  |rammer"..... "Mi|
00002130  6e 69 6d 75 6d 20 77 69  64 74 68 20 69 73 20 33  |nimum width is 3|
00002140  30 22 0d 0e 38 1c dc 20  22 4d 69 6e 69 6d 75 6d  |0"..8.. "Minimum|
00002150  20 68 65 69 67 68 74 20  69 73 20 31 35 22 0d 0e  | height is 15"..|
00002160  42 18 dc 20 22 54 6f 6f  20 6d 61 6e 79 20 70 75  |B.. "Too many pu|
00002170  7a 7a 6c 65 73 22 0d 0e  4c 22 dc 20 22 4e 6f 74  |zzles"..L". "Not|
00002180  20 65 6e 6f 75 67 68 20  72 6f 6f 6d 20 66 6f 72  | enough room for|
00002190  20 70 75 7a 7a 6c 65 22  0d 0e 56 2b dc 20 22 4e  | puzzle"..V+. "N|
000021a0  6f 74 20 65 6e 6f 75 67  68 20 77 6f 72 6b 73 70  |ot enough worksp|
000021b0  61 63 65 20 74 6f 20 6f  70 65 6e 20 77 69 6e 64  |ace to open wind|
000021c0  6f 77 22 0d 0e 60 28 dc  20 22 4f 6e 6c 79 20 35  |ow"..`(. "Only 5|
000021d0  20 76 69 65 77 73 20 6f  66 20 61 20 70 75 7a 7a  | views of a puzz|
000021e0  6c 65 20 61 6c 6c 6f 77  65 64 22 0d 0e 6a 1b dc  |le allowed"..j..|
000021f0  20 22 4d 61 78 69 6d 75  6d 20 77 69 64 74 68 20  | "Maximum width |
00002200  69 73 20 39 39 22 0d 0e  74 1c dc 20 22 4d 61 78  |is 99"..t.. "Max|
00002210  69 6d 75 6d 20 68 65 69  67 68 74 20 69 73 20 39  |imum height is 9|
00002220  39 22 0d 0e 7e 3f f4 20  41 63 74 75 61 6c 6c 79  |9"..~?. Actually|
00002230  20 32 35 35 2a 32 35 35  20 69 73 20 74 68 65 20  | 255*255 is the |
00002240  62 69 67 67 65 73 74 20  73 69 7a 65 2e 20 42 75  |biggest size. Bu|
00002250  74 20 61 6c 73 6f 20 69  6d 70 6f 73 73 69 62 6c  |t also impossibl|
00002260  65 0d 0e 88 05 3a 0d 0e  92 0d f4 20 57 69 6e 64  |e....:..... Wind|
00002270  6f 77 73 0d 0e 9c 07 dc  20 33 0d 0e a6 18 dc 20  |ows..... 3..... |
00002280  41 62 6f 75 74 20 74 68  69 73 20 70 72 6f 67 72  |About this progr|
00002290  61 6d 0d 0e b0 1d dc 20  2d 31 2c 2d 31 2c 20 30  |am..... -1,-1, 0|
000022a0  2c 30 2c 36 30 34 2c 32  31 32 2c 20 30 2c 30 0d  |,0,604,212, 0,0.|
000022b0  0e ba 17 dc 20 30 2c 2d  32 31 32 2c 36 30 34 2c  |.... 0,-212,604,|
000022c0  30 2c 20 30 2c 30 0d 0e  c4 16 dc 20 25 31 30 30  |0, 0,0..... %100|
000022d0  31 30 2b 28 31 33 32 3c  3c 32 34 29 0d 0e ce 07  |10+(132<<24)....|
000022e0  dc 20 31 0d 0e d8 10 dc  20 31 2c 38 2c 2d 31 2c  |. 1..... 1,8,-1,|
000022f0  30 2c 30 0d 0e e2 04 0d  0e ec 18 dc 20 22 4a 69  |0,0......... "Ji|
00002300  67 57 6f 72 64 20 43 72  65 61 74 69 6f 6e 22 0d  |gWord Creation".|
00002310  0e f6 21 dc 20 2d 31 2c  2d 31 2c 20 32 30 30 2c  |..!. -1,-1, 200,|
00002320  32 30 30 2c 34 35 36 2c  38 30 30 2c 20 30 2c 30  |200,456,800, 0,0|
00002330  0d 0f 00 17 dc 20 30 2c  2d 32 35 36 2c 30 2c 30  |..... 0,-256,0,0|
00002340  2c 20 30 2c 32 30 30 0d  0f 0a 1e dc 20 25 31 30  |, 0,200..... %10|
00002350  30 31 30 2b 28 31 33 35  3c 3c 32 34 29 2b 28 31  |010+(135<<24)+(1|
00002360  3c 3c 31 32 29 0d 0f 14  12 dc 20 31 2c 39 2c 36  |<<12)..... 1,9,6|
00002370  2c 2d 31 2c 33 2c 30 0d  0f 1e 04 0d 0f 28 19 dc  |,-1,3,0......(..|
00002380  20 22 41 62 6f 75 74 20  74 68 69 73 20 50 75 7a  | "About this Puz|
00002390  7a 6c 65 22 0d 0f 32 1c  dc 20 2d 31 2c 2d 31 2c  |zle"..2.. -1,-1,|
000023a0  30 2c 30 2c 33 33 32 2c  31 36 30 2c 20 30 2c 30  |0,0,332,160, 0,0|
000023b0  0d 0f 3c 17 dc 20 30 2c  2d 31 36 30 2c 33 33 32  |..<.. 0,-160,332|
000023c0  2c 30 2c 20 30 2c 30 0d  0f 46 16 dc 20 25 31 30  |,0, 0,0..F.. %10|
000023d0  30 31 30 2b 28 31 33 32  3c 3c 32 34 29 0d 0f 50  |010+(132<<24)..P|
000023e0  07 dc 20 31 0d 0f 5a 11  dc 20 31 35 2c 36 2c 2d  |.. 1..Z.. 15,6,-|
000023f0  31 2c 30 2c 30 0d 0f 64  05 3a 0d 0f 6e 05 3a 0d  |1,0,0..d.:..n.:.|
00002400  0f 78 0b f4 20 4d 65 6e  75 73 0d 0f 82 07 dc 20  |.x.. Menus..... |
00002410  33 0d 0f 8c 12 dc 20 4a  69 67 57 6f 72 64 2c 37  |3..... JigWord,7|
00002420  32 2c 32 0d 0f 96 1a dc  20 2d 31 2c 25 30 30 30  |2,2..... -1,%000|
00002430  30 2c 30 2c 30 2c 30 2c  49 6e 66 6f 2c 0d 0f a0  |0,0,0,0,Info,...|
00002440  1f dc 20 2d 31 2c 25 31  30 30 30 30 30 30 30 2c  |.. -1,%10000000,|
00002450  2d 31 2c 30 2c 30 2c 51  75 69 74 2c 0d 0f aa 04  |-1,0,0,Quit,....|
00002460  0d 0f b4 13 dc 20 4a 69  67 57 6f 72 64 2c 31 33  |..... JigWord,13|
00002470  36 2c 35 0d 0f be 1a dc  20 2d 31 2c 25 30 30 30  |6,5..... -1,%000|
00002480  30 2c 32 2c 30 2c 30 2c  49 6e 66 6f 2c 0d 0f c8  |0,2,0,0,Info,...|
00002490  1c dc 20 2d 31 2c 25 30  30 30 30 2c 2d 31 2c 30  |.. -1,%0000,-1,0|
000024a0  2c 30 2c 43 68 65 61 74  2c 0d 0f d2 1c dc 20 2d  |,0,Cheat,..... -|
000024b0  31 2c 25 30 30 30 30 2c  2d 31 2c 30 2c 30 2c 57  |1,%0000,-1,0,0,W|
000024c0  6f 72 64 73 2c 0d 0f dc  1f dc 20 2d 31 2c 25 30  |ords,..... -1,%0|
000024d0  30 30 30 2c 2d 31 2c 30  2c 30 2c 4e 65 77 20 56  |000,-1,0,0,New V|
000024e0  69 65 77 2c 0d 0f e6 20  dc 20 2d 31 2c 25 31 30  |iew,... . -1,%10|
000024f0  30 30 30 30 30 30 2c 2d  31 2c 30 2c 30 2c 50 72  |000000,-1,0,0,Pr|
00002500  69 6e 74 2c 0d 0f f0 05  3a 0d 0f fa 11 dc 20 57  |int,....:..... W|
00002510  6f 72 64 73 2c 31 33 36  2c 32 0d 10 04 1f dc 20  |ords,136,2..... |
00002520  2d 31 2c 25 30 30 30 30  2c 2d 31 2c 30 2c 30 2c  |-1,%0000,-1,0,0,|
00002530  4e 65 77 20 56 69 65 77  2c 0d 10 0e 20 dc 20 2d  |New View,... . -|
00002540  31 2c 25 31 30 30 30 30  30 30 30 2c 2d 31 2c 30  |1,%10000000,-1,0|
00002550  2c 30 2c 50 72 69 6e 74  2c 0d 10 18 05 3a 0d 10  |,0,Print,....:..|
00002560  22 05 3a 0d 10 2c 05 3a  0d 10 36 0b f4 20 49 63  |".:..,.:..6.. Ic|
00002570  6f 6e 73 0d 10 40 08 dc  20 32 31 0d 10 4a 1b dc  |ons..@.. 21..J..|
00002580  20 30 2c 30 2c 36 38 2c  36 38 2c 28 33 3c 3c 31  | 0,0,68,68,(3<<1|
00002590  32 29 2b 25 31 30 0d 10  54 12 dc 20 2d 31 2c 32  |2)+%10..T.. -1,2|
000025a0  2c 2d 31 2c 39 2c 2d 31  0d 10 5e 11 dc 20 22 21  |,-1,9,-1..^.. "!|
000025b0  6a 69 67 77 6f 72 64 22  2c 0d 10 68 04 0d 10 72  |jigword",..h...r|
000025c0  2f dc 20 32 30 2c 2d 34  38 2c 31 35 36 2c 2d 38  |/. 20,-48,156,-8|
000025d0  2c 25 31 30 30 30 30 31  30 30 30 31 2b 28 37 3c  |,%1000010001+(7<|
000025e0  3c 32 34 29 2b 28 32 3c  3c 32 38 29 0d 10 7c 1a  |<24)+(2<<28)..|.|
000025f0  dc 20 30 2c 30 2c 2d 31  2c 38 2c 2d 31 2c 22 4e  |. 0,0,-1,8,-1,"N|
00002600  61 6d 65 3a 22 2c 0d 10  86 31 dc 20 32 30 2c 2d  |ame:",...1. 20,-|
00002610  31 30 30 2c 31 35 36 2c  2d 36 30 2c 25 31 30 30  |100,156,-60,%100|
00002620  30 30 31 30 30 30 31 2b  28 37 3c 3c 32 34 29 2b  |0010001+(7<<24)+|
00002630  28 32 3c 3c 32 38 29 0d  10 90 1d dc 20 30 2c 30  |(2<<28)..... 0,0|
00002640  2c 2d 31 2c 38 2c 2d 31  2c 22 50 75 72 70 6f 73  |,-1,8,-1,"Purpos|
00002650  65 3a 22 2c 0d 10 9a 32  dc 20 32 30 2c 2d 31 35  |e:",...2. 20,-15|
00002660  32 2c 31 35 36 2c 2d 31  31 32 2c 25 31 30 30 30  |2,156,-112,%1000|
00002670  30 31 30 30 30 31 2b 28  37 3c 3c 32 34 29 2b 28  |010001+(7<<24)+(|
00002680  32 3c 3c 32 38 29 0d 10  a4 1c dc 20 30 2c 30 2c  |2<<28)..... 0,0,|
00002690  2d 31 2c 38 2c 2d 31 2c  22 41 75 74 68 6f 72 3a  |-1,8,-1,"Author:|
000026a0  22 2c 0d 10 ae 32 dc 20  32 30 2c 2d 32 30 34 2c  |",...2. 20,-204,|
000026b0  31 35 36 2c 2d 31 36 34  2c 25 31 30 30 30 30 31  |156,-164,%100001|
000026c0  30 30 30 31 2b 28 37 3c  3c 32 34 29 2b 28 32 3c  |0001+(7<<24)+(2<|
000026d0  3c 32 38 29 0d 10 b8 1d  dc 20 30 2c 30 2c 2d 31  |<28)..... 0,0,-1|
000026e0  2c 38 2c 2d 31 2c 22 56  65 72 73 69 6f 6e 3a 22  |,8,-1,"Version:"|
000026f0  2c 0d 10 c2 34 f4 44 41  54 41 20 31 36 30 2c 2d  |,...4.DATA 160,-|
00002700  34 38 2c 35 39 38 2c 2d  38 2c 25 31 30 30 30 31  |48,598,-8,%10001|
00002710  31 31 31 30 31 2b 28 37  3c 3c 32 34 29 2b 28 30  |11101+(7<<24)+(0|
00002720  3c 3c 32 38 29 0d 10 cc  30 dc 20 31 36 30 2c 2d  |<<28)...0. 160,-|
00002730  35 32 2c 35 39 38 2c 2d  34 2c 25 31 30 30 30 31  |52,598,-4,%10001|
00002740  31 31 31 30 31 2b 28 37  3c 3c 32 34 29 2b 28 30  |11101+(7<<24)+(0|
00002750  3c 3c 32 38 29 0d 10 d6  1d dc 20 30 2c 30 2c 2d  |<<28)..... 0,0,-|
00002760  31 2c 39 2c 2d 31 2c 22  21 4a 69 67 57 6f 72 64  |1,9,-1,"!JigWord|
00002770  22 2c 0d 10 e0 36 f4 44  41 54 41 20 31 36 30 2c  |",...6.DATA 160,|
00002780  2d 31 30 30 2c 35 39 38  2c 2d 36 30 2c 25 31 30  |-100,598,-60,%10|
00002790  30 30 31 31 31 31 30 31  2b 28 37 3c 3c 32 34 29  |00111101+(7<<24)|
000027a0  2b 28 30 3c 3c 32 38 29  0d 10 ea 32 dc 20 31 36  |+(0<<28)...2. 16|
000027b0  30 2c 2d 31 30 34 2c 35  39 38 2c 2d 35 36 2c 25  |0,-104,598,-56,%|
000027c0  31 30 30 30 31 31 31 31  30 31 2b 28 37 3c 3c 32  |1000111101+(7<<2|
000027d0  34 29 2b 28 30 3c 3c 32  38 29 0d 10 f4 20 dc 20  |4)+(0<<28)... . |
000027e0  30 2c 30 2c 2d 31 2c 38  2c 2d 31 2c 22 50 75 7a  |0,0,-1,8,-1,"Puz|
000027f0  7a 6c 65 6d 65 6e 74 21  22 2c 0d 10 fe 37 f4 44  |zlement!",...7.D|
00002800  41 54 41 20 31 36 30 2c  2d 31 35 32 2c 35 39 38  |ATA 160,-152,598|
00002810  2c 2d 31 31 32 2c 25 31  31 30 30 31 31 31 31 30  |,-112,%110011110|
00002820  31 2b 28 37 3c 3c 32 34  29 2b 28 30 3c 3c 32 38  |1+(7<<24)+(0<<28|
00002830  29 0d 11 08 33 dc 20 31  36 30 2c 2d 31 35 36 2c  |)...3. 160,-156,|
00002840  35 39 38 2c 2d 31 30 38  2c 25 31 31 30 30 31 31  |598,-108,%110011|
00002850  31 31 30 31 2b 28 37 3c  3c 32 34 29 2b 28 30 3c  |1101+(7<<24)+(0<|
00002860  3c 32 38 29 0d 11 12 25  dc 20 30 2c 31 2c 2d 31  |<28)...%. 0,1,-1|
00002870  2c 31 36 2c 2d 31 2c 22  50 2e 42 65 6e 74 6c 65  |,16,-1,"P.Bentle|
00002880  79 2c 20 31 39 39 31 22  2c 0d 11 1c 37 f4 44 41  |y, 1991",...7.DA|
00002890  54 41 20 31 36 30 2c 2d  32 30 34 2c 35 39 38 2c  |TA 160,-204,598,|
000028a0  2d 31 36 34 2c 25 31 31  30 30 31 31 31 31 30 31  |-164,%1100111101|
000028b0  2b 28 37 3c 3c 32 34 29  2b 28 30 3c 3c 32 38 29  |+(7<<24)+(0<<28)|
000028c0  0d 11 26 33 dc 20 31 36  30 2c 2d 32 30 38 2c 35  |..&3. 160,-208,5|
000028d0  39 38 2c 2d 31 36 30 2c  25 31 31 30 30 31 31 31  |98,-160,%1100111|
000028e0  31 30 31 2b 28 37 3c 3c  32 34 29 2b 28 30 3c 3c  |101+(7<<24)+(0<<|
000028f0  32 38 29 0d 11 30 29 dc  20 30 2c 31 2c 2d 31 2c  |28)..0). 0,1,-1,|
00002900  32 30 2c 2d 31 2c 22 31  2e 36 32 20 28 30 35 2c  |20,-1,"1.62 (05,|
00002910  20 41 70 72 20 31 39 39  32 29 22 2c 0d 11 3a 04  | Apr 1992)",..:.|
00002920  0d 11 44 27 dc 20 32 30  2c 2d 34 38 2c 32 33 36  |..D'. 20,-48,236|
00002930  2c 2d 34 2c 25 31 30 30  30 30 31 30 30 30 31 2b  |,-4,%1000010001+|
00002940  28 37 3c 3c 32 34 29 0d  11 4e 1b dc 20 30 2c 30  |(7<<24)..N.. 0,0|
00002950  2c 2d 31 2c 38 2c 2d 31  2c 22 57 69 64 74 68 3a  |,-1,8,-1,"Width:|
00002960  22 2c 0d 11 58 29 dc 20  32 30 2c 2d 31 30 30 2c  |",..X). 20,-100,|
00002970  32 33 36 2c 2d 35 36 2c  25 31 30 30 30 30 31 30  |236,-56,%1000010|
00002980  30 30 31 2b 28 37 3c 3c  32 34 29 0d 11 62 1c dc  |001+(7<<24)..b..|
00002990  20 30 2c 30 2c 2d 31 2c  38 2c 2d 31 2c 22 48 65  | 0,0,-1,8,-1,"He|
000029a0  69 67 68 74 3a 22 2c 0d  11 6c 2e f4 44 41 54 41  |ight:",..l..DATA|
000029b0  20 32 30 2c 2d 31 35 32  2c 32 33 36 2c 2d 31 31  | 20,-152,236,-11|
000029c0  32 2c 25 31 31 30 30 30  31 30 30 30 31 2b 28 37  |2,%1100010001+(7|
000029d0  3c 3c 32 34 29 0d 11 76  27 f4 44 41 54 41 20 30  |<<24)..v'.DATA 0|
000029e0  2c 31 2c 2d 31 2c 31 34  2c 2d 31 2c 22 57 6f 72  |,1,-1,14,-1,"Wor|
000029f0  64 20 64 65 6e 73 69 74  79 3a 22 2c 0d 11 80 39  |d density:",...9|
00002a00  dc 20 32 34 30 2c 2d 34  38 2c 33 30 34 2c 2d 34  |. 240,-48,304,-4|
00002a10  2c 25 30 31 30 30 31 31  31 31 30 31 2b 28 37 3c  |,%0100111101+(7<|
00002a20  3c 32 34 29 2b 28 30 3c  3c 32 38 29 2b 28 31 35  |<24)+(0<<28)+(15|
00002a30  3c 3c 31 32 29 0d 11 8a  1d dc 20 30 2c 31 2c 2d  |<<12)..... 0,1,-|
00002a40  31 2c 33 2c 2d 31 2c 22  33 30 22 2c 22 41 30 2d  |1,3,-1,"30","A0-|
00002a50  39 22 0d 11 94 3b dc 20  32 34 30 2c 2d 31 30 30  |9"...;. 240,-100|
00002a60  2c 33 30 34 2c 2d 35 36  2c 25 30 31 30 30 31 31  |,304,-56,%010011|
00002a70  31 31 30 31 2b 28 37 3c  3c 32 34 29 2b 28 30 3c  |1101+(7<<24)+(0<|
00002a80  3c 32 38 29 2b 28 31 35  3c 3c 31 32 29 0d 11 9e  |<28)+(15<<12)...|
00002a90  1d dc 20 30 2c 31 2c 2d  31 2c 33 2c 2d 31 2c 22  |.. 0,1,-1,3,-1,"|
00002aa0  31 35 22 2c 22 41 30 2d  39 22 0d 11 a8 40 f4 44  |15","A0-9"...@.D|
00002ab0  41 54 41 20 32 34 30 2c  2d 31 35 32 2c 33 30 34  |ATA 240,-152,304|
00002ac0  2c 2d 31 31 32 2c 25 30  31 30 30 31 31 31 31 30  |,-112,%010011110|
00002ad0  31 2b 28 37 3c 3c 32 34  29 2b 28 30 3c 3c 32 38  |1+(7<<24)+(0<<28|
00002ae0  29 2b 28 31 35 3c 3c 31  32 29 0d 11 b2 1d f4 44  |)+(15<<12).....D|
00002af0  41 54 41 20 30 2c 31 2c  2d 31 2c 33 2c 2d 31 2c  |ATA 0,1,-1,3,-1,|
00002b00  2c 22 41 30 2d 39 22 0d  11 bc 3b dc 20 34 38 2c  |,"A0-9"...;. 48,|
00002b10  2d 31 36 38 2c 32 38 34  2c 2d 31 32 30 2c 25 31  |-168,284,-120,%1|
00002b20  31 30 30 30 31 30 30 31  31 2b 28 37 3c 3c 32 34  |100010011+(7<<24|
00002b30  29 2b 28 31 3c 3c 32 38  29 2b 28 31 31 3c 3c 31  |)+(1<<28)+(11<<1|
00002b40  32 29 0d 11 c6 30 dc 20  30 2c 31 2c 2d 31 2c 31  |2)...0. 0,1,-1,1|
00002b50  32 2c 2d 31 2c 22 53 74  61 72 74 20 57 6f 72 64  |2,-1,"Start Word|
00002b60  3a 22 2c 22 53 6f 70 74  6f 66 66 2c 6f 70 74 6f  |:","Soptoff,opto|
00002b70  6e 22 0d 11 d0 40 f4 44  41 54 41 20 31 34 34 2c  |n"...@.DATA 144,|
00002b80  2d 32 32 34 2c 32 38 34  2c 2d 31 38 30 2c 25 31  |-224,284,-180,%1|
00002b90  31 30 30 30 31 30 30 31  31 2b 28 37 3c 3c 32 34  |100010011+(7<<24|
00002ba0  29 2b 28 31 3c 3c 32 38  29 2b 28 31 31 3c 3c 31  |)+(1<<28)+(11<<1|
00002bb0  32 29 0d 11 da 2d f4 44  41 54 41 20 30 2c 31 2c  |2)...-.DATA 0,1,|
00002bc0  2d 31 2c 36 2c 2d 31 2c  22 47 72 69 64 3a 22 2c  |-1,6,-1,"Grid:",|
00002bd0  22 53 6f 70 74 6f 66 66  2c 6f 70 74 6f 6e 22 0d  |"Soptoff,opton".|
00002be0  11 e4 40 dc 20 31 32 30  2c 2d 32 33 32 2c 32 32  |..@. 120,-232,22|
00002bf0  34 2c 2d 31 38 38 2c 25  31 31 31 31 30 31 2b 28  |4,-188,%111101+(|
00002c00  37 3c 3c 32 34 29 2b 28  31 32 3c 3c 32 38 29 2b  |7<<24)+(12<<28)+|
00002c10  28 39 3c 3c 31 32 29 2b  28 31 3c 3c 31 36 29 0d  |(9<<12)+(1<<16).|
00002c20  11 ee 1b dc 20 30 2c 30  2c 2d 31 2c 37 2c 2d 31  |.... 0,0,-1,7,-1|
00002c30  2c 22 43 72 65 61 74 65  22 2c 0d 11 f8 04 0d 12  |,"Create",......|
00002c40  02 27 dc 20 32 30 2c 2d  34 38 2c 32 33 36 2c 2d  |.'. 20,-48,236,-|
00002c50  38 2c 25 31 30 30 30 30  31 30 30 30 31 2b 28 37  |8,%1000010001+(7|
00002c60  3c 3c 32 34 29 0d 12 0c  1b dc 20 30 2c 30 2c 2d  |<<24)..... 0,0,-|
00002c70  31 2c 36 2c 2d 31 2c 22  57 69 64 74 68 3a 22 2c  |1,6,-1,"Width:",|
00002c80  0d 12 16 29 dc 20 32 30  2c 2d 31 30 30 2c 32 33  |...). 20,-100,23|
00002c90  36 2c 2d 36 30 2c 25 31  30 30 30 30 31 30 30 30  |6,-60,%100001000|
00002ca0  31 2b 28 37 3c 3c 32 34  29 0d 12 20 1c dc 20 30  |1+(7<<24).. .. 0|
00002cb0  2c 30 2c 2d 31 2c 37 2c  2d 31 2c 22 48 65 69 67  |,0,-1,7,-1,"Heig|
00002cc0  68 74 3a 22 2c 0d 12 2a  2a dc 20 32 30 2c 2d 31  |ht:",..**. 20,-1|
00002cd0  35 32 2c 32 33 36 2c 2d  31 31 32 2c 25 31 31 30  |52,236,-112,%110|
00002ce0  30 30 31 30 30 30 31 2b  28 37 3c 3c 32 34 29 0d  |0010001+(7<<24).|
00002cf0  12 34 23 dc 20 30 2c 31  2c 2d 31 2c 31 34 2c 2d  |.4#. 0,1,-1,14,-|
00002d00  31 2c 22 4e 6f 2e 20 6f  66 20 77 6f 72 64 73 3a  |1,"No. of words:|
00002d10  22 2c 0d 12 3e 34 f4 44  41 54 41 20 32 34 30 2c  |",..>4.DATA 240,|
00002d20  2d 34 38 2c 33 31 32 2c  2d 38 2c 25 30 30 30 30  |-48,312,-8,%0000|
00002d30  31 31 31 31 30 31 2b 28  37 3c 3c 32 34 29 2b 28  |111101+(7<<24)+(|
00002d40  30 3c 3c 32 38 29 0d 12  48 30 dc 20 32 34 30 2c  |0<<28)..H0. 240,|
00002d50  2d 35 32 2c 33 31 32 2c  2d 34 2c 25 30 30 30 30  |-52,312,-4,%0000|
00002d60  31 31 31 31 30 31 2b 28  37 3c 3c 32 34 29 2b 28  |111101+(7<<24)+(|
00002d70  30 3c 3c 32 38 29 0d 12  52 16 dc 20 30 2c 30 2c  |0<<28)..R.. 0,0,|
00002d80  2d 31 2c 31 34 2c 2d 31  2c 22 22 2c 0d 12 5c 32  |-1,14,-1,"",..\2|
00002d90  dc 20 32 34 30 2c 2d 31  30 34 2c 33 31 32 2c 2d  |. 240,-104,312,-|
00002da0  35 36 2c 25 30 30 30 30  31 31 31 31 30 31 2b 28  |56,%0000111101+(|
00002db0  37 3c 3c 32 34 29 2b 28  30 3c 3c 32 38 29 0d 12  |7<<24)+(0<<28)..|
00002dc0  66 16 dc 20 30 2c 30 2c  2d 31 2c 31 34 2c 2d 31  |f.. 0,0,-1,14,-1|
00002dd0  2c 22 22 2c 0d 12 70 33  dc 20 32 34 30 2c 2d 31  |,"",..p3. 240,-1|
00002de0  35 36 2c 33 31 32 2c 2d  31 30 38 2c 25 30 30 30  |56,312,-108,%000|
00002df0  30 31 31 31 31 30 31 2b  28 37 3c 3c 32 34 29 2b  |0111101+(7<<24)+|
00002e00  28 30 3c 3c 32 38 29 0d  12 7a 16 dc 20 30 2c 30  |(0<<28)..z.. 0,0|
00002e10  2c 2d 31 2c 31 34 2c 2d  31 2c 22 22 2c 0d 12 84  |,-1,14,-1,"",...|
00002e20  05 3a 0d 12 8e 05 3a 0d  12 98 15 f4 20 6d 65 6e  |.:....:..... men|
00002e30  75 20 73 74 72 75 63 74  75 72 65 73 0d 12 a2 07  |u structures....|
00002e40  dc 20 33 0d 12 ac 10 dc  20 30 2c 26 38 30 30 30  |. 3..... 0,&8000|
00002e50  2c 2d 31 0d 12 b6 10 dc  20 32 2c 26 38 30 30 31  |,-1..... 2,&8001|
00002e60  2c 2d 31 0d 12 c0 0e dc  20 26 38 30 30 32 2c 2d  |,-1..... &8002,-|
00002e70  31 0d 12 ca 05 3a 0d 12  d4 28 dd 20 a4 53 49 63  |1....:...(. .SIc|
00002e80  6f 6e 28 73 24 2c 62 75  74 25 2c 68 25 2c 78 31  |on(s$,but%,h%,x1|
00002e90  25 2c 79 31 25 2c 78 32  25 2c 79 32 25 29 0d 12  |%,y1%,x2%,y2%)..|
00002ea0  de 0b 62 25 21 30 3d 68  25 0d 12 e8 0c 62 25 21  |..b%!0=h%....b%!|
00002eb0  34 3d 78 31 25 0d 12 f2  0c 62 25 21 38 3d 79 31  |4=x1%....b%!8=y1|
00002ec0  25 0d 12 fc 0d 62 25 21  31 32 3d 78 32 25 0d 13  |%....b%!12=x2%..|
00002ed0  06 0d 62 25 21 31 36 3d  79 32 25 0d 13 10 18 62  |..b%!16=y2%....b|
00002ee0  25 21 32 30 3d 25 31 30  2b 28 62 75 74 25 3c 3c  |%!20=%10+(but%<<|
00002ef0  31 32 29 0d 13 1a 0f 24  28 62 25 2b 32 34 29 3d  |12)....$(b%+24)=|
00002f00  73 24 0d 13 24 21 c8 99  20 22 57 69 6d 70 5f 43  |s$..$!.. "Wimp_C|
00002f10  72 65 61 74 65 49 63 6f  6e 22 2c 2c 62 25 20 b8  |reateIcon",,b% .|
00002f20  20 68 25 0d 13 2e 07 3d  68 25 0d 13 38 05 3a 0d  | h%....=h%..8.:.|
00002f30  13 42 17 dd 20 f2 43 72  65 61 74 65 57 69 6e 64  |.B.. .CreateWind|
00002f40  6f 77 28 77 25 29 0d 13  4c 19 ea 20 61 64 64 72  |ow(w%)..L.. addr|
00002f50  25 2c 6f 66 66 73 65 74  25 2c 68 25 2c 61 25 0d  |%,offset%,h%,a%.|
00002f60  13 56 10 61 64 64 72 25  3d 77 62 75 66 66 25 0d  |.V.addr%=wbuff%.|
00002f70  13 60 2b 61 64 64 72 25  21 30 3d 77 69 6e 64 25  |.`+addr%!0=wind%|
00002f80  28 77 25 2c 32 29 3a 61  64 64 72 25 21 34 3d 77  |(w%,2):addr%!4=w|
00002f90  69 6e 64 25 28 77 25 2c  33 29 0d 13 6a 2c 61 64  |ind%(w%,3)..j,ad|
00002fa0  64 72 25 21 38 3d 77 69  6e 64 25 28 77 25 2c 34  |dr%!8=wind%(w%,4|
00002fb0  29 3a 61 64 64 72 25 21  31 32 3d 77 69 6e 64 25  |):addr%!12=wind%|
00002fc0  28 77 25 2c 35 29 0d 13  74 2d 61 64 64 72 25 21  |(w%,5)..t-addr%!|
00002fd0  31 36 3d 77 69 6e 64 25  28 77 25 2c 36 29 3a 61  |16=wind%(w%,6):a|
00002fe0  64 64 72 25 21 32 30 3d  77 69 6e 64 25 28 77 25  |ddr%!20=wind%(w%|
00002ff0  2c 37 29 0d 13 7e 0f 61  64 64 72 25 21 32 34 3d  |,7)..~.addr%!24=|
00003000  2d 31 0d 13 88 19 61 64  64 72 25 21 32 38 3d 77  |-1....addr%!28=w|
00003010  69 6e 64 25 28 77 25 2c  31 34 29 0d 13 92 15 c8  |ind%(w%,14).....|
00003020  8e 20 77 69 6e 64 25 28  77 25 2c 31 35 29 20 ca  |. wind%(w%,15) .|
00003030  0d 13 9c 09 20 c9 20 31  3a 0d 13 a6 1b 20 20 61  |.... . 1:....  a|
00003040  64 64 72 25 3f 33 32 3d  37 3a 61 64 64 72 25 3f  |ddr%?32=7:addr%?|
00003050  33 33 3d 32 0d 13 b0 1b  20 20 61 64 64 72 25 3f  |33=2....  addr%?|
00003060  33 34 3d 37 3a 61 64 64  72 25 3f 33 35 3d 31 0d  |34=7:addr%?35=1.|
00003070  13 ba 1b 20 20 61 64 64  72 25 3f 33 36 3d 33 3a  |...  addr%?36=3:|
00003080  61 64 64 72 25 3f 33 37  3d 31 0d 13 c4 1c 20 20  |addr%?37=1....  |
00003090  61 64 64 72 25 3f 33 38  3d 31 32 3a 61 64 64 72  |addr%?38=12:addr|
000030a0  25 3f 33 39 3d 30 0d 13  ce 08 20 7f 20 3a 0d 13  |%?39=0.... . :..|
000030b0  d8 05 cb 0d 13 e2 2d 61  64 64 72 25 21 34 30 3d  |......-addr%!40=|
000030c0  77 69 6e 64 25 28 77 25  2c 38 29 3a 61 64 64 72  |wind%(w%,8):addr|
000030d0  25 21 34 34 3d 77 69 6e  64 25 28 77 25 2c 39 29  |%!44=wind%(w%,9)|
000030e0  0d 13 ec 2f 61 64 64 72  25 21 34 38 3d 77 69 6e  |.../addr%!48=win|
000030f0  64 25 28 77 25 2c 31 30  29 3a 61 64 64 72 25 21  |d%(w%,10):addr%!|
00003100  35 32 3d 77 69 6e 64 25  28 77 25 2c 31 31 29 0d  |52=wind%(w%,11).|
00003110  13 f6 17 e7 20 a9 28 77  69 6e 64 24 28 77 25 29  |.... .(wind$(w%)|
00003120  29 3e 31 32 20 8c 0d 14  00 18 20 61 64 64 72 25  |)>12 ..... addr%|
00003130  21 35 36 3d 25 31 30 30  30 31 31 30 30 31 0d 14  |!56=%100011001..|
00003140  0a 05 cc 0d 14 14 14 20  61 64 64 72 25 21 35 36  |....... addr%!56|
00003150  3d 25 31 31 30 30 31 0d  14 1e 05 cd 0d 14 28 27  |=%11001.......('|
00003160  61 64 64 72 25 21 36 30  3d 77 69 6e 64 25 28 77  |addr%!60=wind%(w|
00003170  25 2c 31 39 29 3c 3c 31  32 3a f4 20 62 75 74 74  |%,19)<<12:. butt|
00003180  6f 6e 73 0d 14 32 24 61  64 64 72 25 21 36 34 3d  |ons..2$addr%!64=|
00003190  31 3a f4 20 73 70 72 69  74 65 20 61 72 65 61 20  |1:. sprite area |
000031a0  70 6f 69 6e 74 65 72 0d  14 3c 3b 61 64 64 72 25  |pointer..<;addr%|
000031b0  3f 36 38 3d 77 69 6e 64  25 28 77 25 2c 31 32 29  |?68=wind%(w%,12)|
000031c0  20 83 20 32 35 36 3a 61  64 64 72 25 3f 36 39 3d  | . 256:addr%?69=|
000031d0  77 69 6e 64 25 28 77 25  2c 31 32 29 20 81 20 32  |wind%(w%,12) . 2|
000031e0  35 36 0d 14 46 3b 61 64  64 72 25 3f 37 30 3d 77  |56..F;addr%?70=w|
000031f0  69 6e 64 25 28 77 25 2c  31 33 29 20 83 20 32 35  |ind%(w%,13) . 25|
00003200  36 3a 61 64 64 72 25 3f  37 31 3d 77 69 6e 64 25  |6:addr%?71=wind%|
00003210  28 77 25 2c 31 33 29 20  81 20 32 35 36 0d 14 50  |(w%,13) . 256..P|
00003220  18 e7 20 a9 28 77 69 6e  64 24 28 77 25 29 29 3c  |.. .(wind$(w%))<|
00003230  3d 31 32 20 8c 0d 14 5a  1a 20 24 28 61 64 64 72  |=12 ...Z. $(addr|
00003240  25 2b 37 32 29 3d 77 69  6e 64 24 28 77 25 29 0d  |%+72)=wind$(w%).|
00003250  14 64 05 cc 0d 14 6e 19  20 e7 20 77 69 6e 64 25  |.d....n. . wind%|
00003260  28 77 25 2c 31 38 29 3c  3e 2d 31 20 8c 0d 14 78  |(w%,18)<>-1 ...x|
00003270  24 20 20 61 64 64 72 25  21 37 32 3d 64 61 74 61  |$  addr%!72=data|
00003280  25 28 77 69 6e 64 25 28  77 25 2c 31 38 29 2c 30  |%(wind%(w%,18),0|
00003290  29 0d 14 82 11 20 20 61  64 64 72 25 21 37 36 3d  |)....  addr%!76=|
000032a0  2d 31 0d 14 8c 24 20 20  61 64 64 72 25 21 38 30  |-1...$  addr%!80|
000032b0  3d 64 61 74 61 25 28 77  69 6e 64 25 28 77 25 2c  |=data%(wind%(w%,|
000032c0  31 38 29 2c 31 29 0d 14  96 26 20 20 24 64 61 74  |18),1)...&  $dat|
000032d0  61 25 28 77 69 6e 64 25  28 77 25 2c 31 38 29 2c  |a%(wind%(w%,18),|
000032e0  30 29 3d 77 69 6e 64 24  28 77 25 29 0d 14 a0 06  |0)=wind$(w%)....|
000032f0  20 cc 0d 14 aa 2f 20 20  e7 20 28 6e 65 78 74 64  | ..../  . (nextd|
00003300  61 74 73 74 25 2b a9 28  77 69 6e 64 24 28 77 25  |atst%+.(wind$(w%|
00003310  29 29 2b 31 29 3e 3d 64  61 74 61 65 6e 64 25 20  |))+1)>=dataend% |
00003320  8c 0d 14 b4 13 20 20 20  f2 45 72 72 6f 72 32 6e  |.....   .Error2n|
00003330  64 28 30 29 0d 14 be 08  20 20 20 e1 0d 14 c8 07  |d(0)....   .....|
00003340  20 20 cd 0d 14 d2 27 20  20 77 69 6e 64 25 28 77  |  ....'  wind%(w|
00003350  25 2c 31 38 29 3d 6e 65  78 74 64 61 74 25 3a 6e  |%,18)=nextdat%:n|
00003360  65 78 74 64 61 74 25 2b  3d 31 0d 14 dc 41 20 20  |extdat%+=1...A  |
00003370  64 61 74 61 25 28 77 69  6e 64 25 28 77 25 2c 31  |data%(wind%(w%,1|
00003380  38 29 2c 30 29 3d 6e 65  78 74 64 61 74 73 74 25  |8),0)=nextdatst%|
00003390  3a 6e 65 78 74 64 61 74  73 74 25 2b 3d a9 28 77  |:nextdatst%+=.(w|
000033a0  69 6e 64 24 28 77 25 29  29 2b 31 0d 14 e6 2a 20  |ind$(w%))+1...* |
000033b0  20 64 61 74 61 25 28 77  69 6e 64 25 28 77 25 2c  | data%(wind%(w%,|
000033c0  31 38 29 2c 31 29 3d a9  28 77 69 6e 64 24 28 77  |18),1)=.(wind$(w|
000033d0  25 29 29 2b 31 0d 14 f0  1e 20 20 64 61 74 61 25  |%))+1....  data%|
000033e0  28 77 69 6e 64 25 28 77  25 2c 31 38 29 2c 32 29  |(wind%(w%,18),2)|
000033f0  3d 2d 31 0d 14 fa 1e 20  20 64 61 74 61 25 28 77  |=-1....  data%(w|
00003400  69 6e 64 25 28 77 25 2c  31 38 29 2c 33 29 3d 2d  |ind%(w%,18),3)=-|
00003410  31 0d 15 04 24 20 20 61  64 64 72 25 21 37 32 3d  |1...$  addr%!72=|
00003420  64 61 74 61 25 28 77 69  6e 64 25 28 77 25 2c 31  |data%(wind%(w%,1|
00003430  38 29 2c 30 29 0d 15 0e  11 20 20 61 64 64 72 25  |8),0)....  addr%|
00003440  21 37 36 3d 2d 31 0d 15  18 24 20 20 61 64 64 72  |!76=-1...$  addr|
00003450  25 21 38 30 3d 64 61 74  61 25 28 77 69 6e 64 25  |%!80=data%(wind%|
00003460  28 77 25 2c 31 38 29 2c  31 29 0d 15 22 26 20 20  |(w%,18),1).."&  |
00003470  24 64 61 74 61 25 28 77  69 6e 64 25 28 77 25 2c  |$data%(wind%(w%,|
00003480  31 38 29 2c 30 29 3d 77  69 6e 64 24 28 77 25 29  |18),0)=wind$(w%)|
00003490  0d 15 2c 06 20 cd 0d 15  36 05 cd 0d 15 40 19 61  |..,. ...6....@.a|
000034a0  64 64 72 25 21 38 34 3d  77 69 6e 64 25 28 77 25  |ddr%!84=wind%(w%|
000034b0  2c 31 37 29 0d 15 4a 0e  6f 66 66 73 65 74 25 3d  |,17)..J.offset%=|
000034c0  38 38 0d 15 54 16 e7 20  77 69 6e 64 25 28 77 25  |88..T.. wind%(w%|
000034d0  2c 31 37 29 3e 30 20 8c  0d 15 5e 09 20 68 25 3d  |,17)>0 ...^. h%=|
000034e0  30 0d 15 68 34 20 e3 20  61 25 3d 77 69 6e 64 25  |0..h4 . a%=wind%|
000034f0  28 77 25 2c 31 36 29 20  b8 20 77 69 6e 64 25 28  |(w%,16) . wind%(|
00003500  77 25 2c 31 36 29 2b 77  69 6e 64 25 28 77 25 2c  |w%,16)+wind%(w%,|
00003510  31 37 29 2d 31 0d 15 72  13 20 69 63 6f 6e 25 28  |17)-1..r. icon%(|
00003520  61 25 2c 39 29 3d 68 25  0d 15 7c 23 20 f2 43 72  |a%,9)=h%..|# .Cr|
00003530  65 61 74 65 49 44 61 74  61 28 61 25 2c 61 64 64  |eateIData(a%,add|
00003540  72 25 2b 6f 66 66 73 65  74 25 29 0d 15 86 10 20  |r%+offset%).... |
00003550  6f 66 66 73 65 74 25 2b  3d 33 32 0d 15 90 0a 20  |offset%+=32.... |
00003560  68 25 2b 3d 31 0d 15 9a  06 20 ed 0d 15 a4 05 cd  |h%+=1.... ......|
00003570  0d 15 ae 2f c8 99 20 22  57 69 6d 70 5f 43 72 65  |.../.. "Wimp_Cre|
00003580  61 74 65 57 69 6e 64 6f  77 22 2c 2c 61 64 64 72  |ateWindow",,addr|
00003590  25 20 b8 20 77 69 6e 64  25 28 77 25 2c 30 29 0d  |% . wind%(w%,0).|
000035a0  15 b8 33 e3 20 61 25 3d  77 69 6e 64 25 28 77 25  |..3. a%=wind%(w%|
000035b0  2c 31 36 29 20 b8 20 77  69 6e 64 25 28 77 25 2c  |,16) . wind%(w%,|
000035c0  31 36 29 2b 77 69 6e 64  25 28 77 25 2c 31 37 29  |16)+wind%(w%,17)|
000035d0  2d 31 0d 15 c2 1c 20 69  63 6f 6e 25 28 61 25 2c  |-1.... icon%(a%,|
000035e0  35 29 3d 77 69 6e 64 25  28 77 25 2c 30 29 0d 15  |5)=wind%(w%,0)..|
000035f0  cc 05 ed 0d 15 d6 05 e1  0d 15 e0 05 3a 0d 15 ea  |............:...|
00003600  15 dd 20 f2 43 72 65 61  74 65 4d 65 6e 75 28 6d  |.. .CreateMenu(m|
00003610  25 29 0d 15 f4 1b ea 20  61 25 2c 61 64 64 72 25  |%)..... a%,addr%|
00003620  2c 61 24 2c 62 24 2c 66  25 2c 69 64 25 0d 15 fe  |,a$,b$,f%,id%...|
00003630  2b 6d 65 6e 75 69 6e 25  28 6d 25 29 3d 6e 78 74  |+menuin%(m%)=nxt|
00003640  6d 65 6e 75 73 74 25 3a  61 64 64 72 25 3d 6e 78  |menust%:addr%=nx|
00003650  74 6d 65 6e 75 73 74 25  0d 16 08 14 24 61 64 64  |tmenust%....$add|
00003660  72 25 3d 6d 65 6e 75 24  28 6d 25 29 0d 16 12 19  |r%=menu$(m%)....|
00003670  61 64 64 72 25 3f 31 32  3d 37 3a 61 64 64 72 25  |addr%?12=7:addr%|
00003680  3f 31 33 3d 32 0d 16 1c  19 61 64 64 72 25 3f 31  |?13=2....addr%?1|
00003690  34 3d 37 3a 61 64 64 72  25 3f 31 35 3d 30 0d 16  |4=7:addr%?15=0..|
000036a0  26 18 61 64 64 72 25 21  31 36 3d 6d 65 6e 75 25  |&.addr%!16=menu%|
000036b0  28 6d 25 2c 30 29 0d 16  30 1a 61 64 64 72 25 21  |(m%,0)..0.addr%!|
000036c0  32 30 3d 34 34 3a 61 64  64 72 25 21 32 34 3d 30  |20=44:addr%!24=0|
000036d0  0d 16 3a 0d 61 64 64 72  25 2b 3d 32 38 0d 16 44  |..:.addr%+=28..D|
000036e0  1a e3 20 61 25 3d 30 20  b8 20 6d 65 6e 75 25 28  |.. a%=0 . menu%(|
000036f0  6d 25 2c 31 29 2d 31 0d  16 4e 1b 20 61 64 64 72  |m%,1)-1..N. addr|
00003700  25 21 30 3d 69 74 65 6d  25 28 6d 25 2c 61 25 2c  |%!0=item%(m%,a%,|
00003710  31 29 0d 16 58 1b 20 e7  20 69 74 65 6d 25 28 6d  |1)..X. . item%(m|
00003720  25 2c 61 25 2c 32 29 3c  3e 2d 31 20 8c 0d 16 62  |%,a%,2)<>-1 ...b|
00003730  1e 20 20 e7 20 69 74 65  6d 25 28 6d 25 2c 61 25  |.  . item%(m%,a%|
00003740  2c 32 29 3c 26 38 30 30  30 20 8c 0d 16 6c 26 20  |,2)<&8000 ...l& |
00003750  20 20 61 64 64 72 25 21  34 3d 77 69 6e 64 25 28  |  addr%!4=wind%(|
00003760  69 74 65 6d 25 28 6d 25  2c 61 25 2c 32 29 2c 30  |item%(m%,a%,2),0|
00003770  29 0d 16 76 07 20 20 cc  0d 16 80 2c 20 20 20 61  |)..v.  ....,   a|
00003780  64 64 72 25 21 34 3d 6d  65 6e 75 69 6e 25 28 69  |ddr%!4=menuin%(i|
00003790  74 65 6d 25 28 6d 25 2c  61 25 2c 32 29 2d 26 38  |tem%(m%,a%,2)-&8|
000037a0  30 30 30 29 0d 16 8a 07  20 20 cd 0d 16 94 06 20  |000)....  ..... |
000037b0  cc 0d 16 9e 10 20 20 61  64 64 72 25 21 34 3d 2d  |.....  addr%!4=-|
000037c0  31 0d 16 a8 06 20 cd 0d  16 b2 16 20 66 25 3d 69  |1.... ..... f%=i|
000037d0  74 65 6d 25 28 6d 25 2c  61 25 2c 33 29 0d 16 bc  |tem%(m%,a%,3)...|
000037e0  0d 20 e7 20 66 25 3d 30  20 8c 0d 16 c6 1e 20 20  |. . f%=0 .....  |
000037f0  61 64 64 72 25 21 38 3d  28 31 3c 3c 35 29 2b 28  |addr%!8=(1<<5)+(|
00003800  37 3c 3c 32 34 29 2b 31  0d 16 d0 06 20 cc 0d 16  |7<<24)+1.... ...|
00003810  da 10 20 20 61 64 64 72  25 21 38 3d 66 25 0d 16  |..  addr%!8=f%..|
00003820  e4 06 20 cd 0d 16 ee 16  20 61 24 3d 69 74 65 6d  |.. ..... a$=item|
00003830  24 28 6d 25 2c 61 25 2c  30 29 0d 16 f8 16 20 62  |$(m%,a%,0).... b|
00003840  24 3d 69 74 65 6d 24 28  6d 25 2c 61 25 2c 31 29  |$=item$(m%,a%,1)|
00003850  0d 17 02 3f 20 e7 20 a9  28 61 24 29 3e 31 32 20  |...? . .(a$)>12 |
00003860  84 20 62 24 3c 3e 22 22  20 84 20 28 66 25 20 80  |. b$<>"" . (f% .|
00003870  20 32 35 36 29 3d 32 35  36 20 84 20 69 74 65 6d  | 256)=256 . item|
00003880  25 28 6d 25 2c 61 25 2c  34 29 3e 31 32 20 8c 0d  |%(m%,a%,4)>12 ..|
00003890  17 0c 1b 20 20 e7 20 69  74 65 6d 25 28 6d 25 2c  |...  . item%(m%,|
000038a0  61 25 2c 30 29 3d 2d 31  20 8c 0d 17 16 2f 20 20  |a%,0)=-1 ..../  |
000038b0  20 e7 20 28 6e 65 78 74  64 61 74 73 74 25 2b a9  | . (nextdatst%+.|
000038c0  28 61 24 29 2b a9 28 62  24 29 2b 32 29 3e 3d 64  |(a$)+.(b$)+2)>=d|
000038d0  61 74 61 65 6e 64 25 20  8c 0d 17 20 14 20 20 20  |ataend% ... .   |
000038e0  20 f2 45 72 72 6f 72 32  6e 64 28 30 29 0d 17 2a  | .Error2nd(0)..*|
000038f0  09 20 20 20 20 e1 0d 17  34 08 20 20 20 cd 0d 17  |.    ...4.   ...|
00003900  3e 32 20 20 20 69 64 25  3d 6e 65 78 74 64 61 74  |>2   id%=nextdat|
00003910  25 3a 69 74 65 6d 25 28  6d 25 2c 61 25 2c 30 29  |%:item%(m%,a%,0)|
00003920  3d 69 64 25 3a 6e 65 78  74 64 61 74 25 2b 3d 31  |=id%:nextdat%+=1|
00003930  0d 17 48 39 20 20 20 64  61 74 61 25 28 69 64 25  |..H9   data%(id%|
00003940  2c 30 29 3d 6e 65 78 74  64 61 74 73 74 25 3a 6e  |,0)=nextdatst%:n|
00003950  65 78 74 64 61 74 73 74  25 2b 3d 69 74 65 6d 25  |extdatst%+=item%|
00003960  28 6d 25 2c 61 25 2c 34  29 0d 17 52 22 20 20 20  |(m%,a%,4)..R"   |
00003970  64 61 74 61 25 28 69 64  25 2c 31 29 3d 69 74 65  |data%(id%,1)=ite|
00003980  6d 25 28 6d 25 2c 61 25  2c 34 29 0d 17 5c 11 20  |m%(m%,a%,4)..\. |
00003990  20 20 e7 20 62 24 3c 3e  22 22 20 8c 0d 17 66 33  |  . b$<>"" ...f3|
000039a0  20 20 20 20 64 61 74 61  25 28 69 64 25 2c 32 29  |    data%(id%,2)|
000039b0  3d 6e 65 78 74 64 61 74  73 74 25 3a 6e 65 78 74  |=nextdatst%:next|
000039c0  64 61 74 73 74 25 2b 3d  a9 28 62 24 29 2b 31 0d  |datst%+=.(b$)+1.|
000039d0  17 70 1c 20 20 20 20 64  61 74 61 25 28 69 64 25  |.p.    data%(id%|
000039e0  2c 33 29 3d a9 28 62 24  29 2b 31 0d 17 7a 08 20  |,3)=.(b$)+1..z. |
000039f0  20 20 cc 0d 17 84 27 20  20 20 20 64 61 74 61 25  |  ....'    data%|
00003a00  28 69 64 25 2c 32 29 3d  2d 31 3a 64 61 74 61 25  |(id%,2)=-1:data%|
00003a10  28 69 64 25 2c 33 29 3d  2d 31 0d 17 8e 08 20 20  |(id%,3)=-1....  |
00003a20  20 cd 0d 17 98 07 20 20  cc 0d 17 a2 19 20 20 20  | .....  .....   |
00003a30  69 64 25 3d 69 74 65 6d  25 28 6d 25 2c 61 25 2c  |id%=item%(m%,a%,|
00003a40  30 29 0d 17 ac 07 20 20  cd 0d 17 b6 16 20 20 24  |0)....  .....  $|
00003a50  64 61 74 61 25 28 69 64  25 2c 30 29 3d 61 24 0d  |data%(id%,0)=a$.|
00003a60  17 c0 10 20 20 e7 20 62  24 3c 3e 22 22 20 8c 0d  |...  . b$<>"" ..|
00003a70  17 ca 28 20 20 20 24 28  64 61 74 61 25 28 69 64  |..(   $(data%(id|
00003a80  25 2c 30 29 2b 69 74 65  6d 25 28 6d 25 2c 61 25  |%,0)+item%(m%,a%|
00003a90  2c 34 29 29 3d 62 24 0d  17 d4 07 20 20 cd 0d 17  |,4))=b$....  ...|
00003aa0  de 1b 20 20 61 64 64 72  25 21 31 32 3d 64 61 74  |..  addr%!12=dat|
00003ab0  61 25 28 69 64 25 2c 30  29 0d 17 e8 1b 20 20 61  |a%(id%,0)....  a|
00003ac0  64 64 72 25 21 31 36 3d  64 61 74 61 25 28 69 64  |ddr%!16=data%(id|
00003ad0  25 2c 32 29 0d 17 f2 1b  20 20 61 64 64 72 25 21  |%,2)....  addr%!|
00003ae0  32 30 3d 64 61 74 61 25  28 69 64 25 2c 31 29 0d  |20=data%(id%,1).|
00003af0  17 fc 1e 20 20 61 64 64  72 25 21 38 3d 61 64 64  |...  addr%!8=add|
00003b00  72 25 21 38 20 84 20 28  31 3c 3c 38 29 0d 18 06  |r%!8 . (1<<8)...|
00003b10  06 20 cc 0d 18 10 20 20  20 24 28 61 64 64 72 25  |. ....   $(addr%|
00003b20  2b 31 32 29 3d 69 74 65  6d 24 28 6d 25 2c 61 25  |+12)=item$(m%,a%|
00003b30  2c 30 29 0d 18 1a 06 20  cd 0d 18 24 0e 20 61 64  |,0).... ...$. ad|
00003b40  64 72 25 2b 3d 32 34 0d  18 2e 05 ed 0d 18 38 14  |dr%+=24.......8.|
00003b50  6e 78 74 6d 65 6e 75 73  74 25 3d 61 64 64 72 25  |nxtmenust%=addr%|
00003b60  0d 18 42 05 e1 0d 18 4c  05 3a 0d 18 56 15 dd 20  |..B....L.:..V.. |
00003b70  f2 43 72 65 61 74 65 49  63 6f 6e 28 69 25 29 0d  |.CreateIcon(i%).|
00003b80  18 60 19 69 63 6f 6e 73  74 25 21 30 3d 69 63 6f  |.`.iconst%!0=ico|
00003b90  6e 25 28 69 25 2c 35 29  0d 18 6a 1e f2 43 72 65  |n%(i%,5)..j..Cre|
00003ba0  61 74 65 49 44 61 74 61  28 69 25 2c 69 63 6f 6e  |ateIData(i%,icon|
00003bb0  73 74 25 2b 34 29 0d 18  74 2f c8 99 20 22 57 69  |st%+4)..t/.. "Wi|
00003bc0  6d 70 5f 43 72 65 61 74  65 49 63 6f 6e 22 2c 2c  |mp_CreateIcon",,|
00003bd0  69 63 6f 6e 73 74 25 20  b8 20 69 63 6f 6e 25 28  |iconst% . icon%(|
00003be0  69 25 2c 39 29 0d 18 7e  05 e1 0d 18 88 05 3a 0d  |i%,9)..~......:.|
00003bf0  18 92 1c dd 20 f2 43 72  65 61 74 65 49 44 61 74  |.... .CreateIDat|
00003c00  61 28 69 25 2c 61 64 64  72 25 29 0d 18 9c 0e ea  |a(i%,addr%).....|
00003c10  20 74 25 2c 61 24 2c 62  24 0d 18 a6 21 61 24 3d  | t%,a$,b$...!a$=|
00003c20  69 63 6f 6e 24 28 69 25  2c 30 29 3a 62 24 3d 69  |icon$(i%,0):b$=i|
00003c30  63 6f 6e 24 28 69 25 2c  31 29 0d 18 b0 17 61 64  |con$(i%,1)....ad|
00003c40  64 72 25 21 30 3d 69 63  6f 6e 25 28 69 25 2c 30  |dr%!0=icon%(i%,0|
00003c50  29 0d 18 ba 17 61 64 64  72 25 21 34 3d 69 63 6f  |)....addr%!4=ico|
00003c60  6e 25 28 69 25 2c 31 29  0d 18 c4 17 61 64 64 72  |n%(i%,1)....addr|
00003c70  25 21 38 3d 69 63 6f 6e  25 28 69 25 2c 32 29 0d  |%!8=icon%(i%,2).|
00003c80  18 ce 18 61 64 64 72 25  21 31 32 3d 69 63 6f 6e  |...addr%!12=icon|
00003c90  25 28 69 25 2c 33 29 0d  18 d8 18 61 64 64 72 25  |%(i%,3)....addr%|
00003ca0  21 31 36 3d 69 63 6f 6e  25 28 69 25 2c 34 29 0d  |!16=icon%(i%,4).|
00003cb0  18 e2 12 74 25 3d 69 63  6f 6e 25 28 69 25 2c 36  |...t%=icon%(i%,6|
00003cc0  29 0d 18 ec 0b c8 8e 20  74 25 20 ca 0d 18 f6 20  |)...... t% .... |
00003cd0  20 c9 20 30 3a 24 28 61  64 64 72 25 2b 32 30 29  | . 0:$(addr%+20)|
00003ce0  3d 69 63 6f 6e 24 28 69  25 2c 30 29 0d 19 00 0b  |=icon$(i%,0)....|
00003cf0  20 c9 20 31 2c 34 3a 0d  19 0a 47 20 20 f2 49 6e  | . 1,4:...G  .In|
00003d00  64 69 72 65 63 74 54 65  78 74 28 61 64 64 72 25  |directText(addr%|
00003d10  2b 32 30 2c 61 24 2c 62  24 2c 69 63 6f 6e 25 28  |+20,a$,b$,icon%(|
00003d20  69 25 2c 37 29 2c 69 63  6f 6e 25 28 69 25 2c 38  |i%,7),icon%(i%,8|
00003d30  29 2c 69 63 6f 6e 25 28  69 25 2c 37 29 29 0d 19  |),icon%(i%,7))..|
00003d40  14 20 20 c9 20 32 3a 24  28 61 64 64 72 25 2b 32  |.  . 2:$(addr%+2|
00003d50  30 29 3d 69 63 6f 6e 24  28 69 25 2c 30 29 0d 19  |0)=icon$(i%,0)..|
00003d60  1e 09 20 c9 20 33 3a 0d  19 28 47 20 20 f2 49 6e  |.. . 3:..(G  .In|
00003d70  64 69 72 65 63 74 54 65  78 74 28 61 64 64 72 25  |directText(addr%|
00003d80  2b 32 30 2c 61 24 2c 22  22 2c 69 63 6f 6e 25 28  |+20,a$,"",icon%(|
00003d90  69 25 2c 37 29 2c 69 63  6f 6e 25 28 69 25 2c 38  |i%,7),icon%(i%,8|
00003da0  29 2c 69 63 6f 6e 25 28  69 25 2c 37 29 29 0d 19  |),icon%(i%,7))..|
00003db0  32 27 20 20 61 64 64 72  25 21 32 34 3d 73 70 72  |2'  addr%!24=spr|
00003dc0  61 72 65 61 25 28 bb 28  69 63 6f 6e 24 28 69 25  |area%(.(icon$(i%|
00003dd0  2c 31 29 29 29 0d 19 3c  09 20 c9 20 34 3a 0d 19  |,1)))..<. . 4:..|
00003de0  46 29 20 c9 20 35 3a 61  64 64 72 25 21 32 30 3d  |F) . 5:addr%!20=|
00003df0  30 3a 61 64 64 72 25 21  32 34 3d 30 3a 61 64 64  |0:addr%!24=0:add|
00003e00  72 25 21 32 38 3d 30 0d  19 50 05 cb 0d 19 5a 05  |r%!28=0..P....Z.|
00003e10  e1 0d 19 64 05 3a 0d 19  6e 1e dd 20 f2 43 72 65  |...d.:..n.. .Cre|
00003e20  61 74 65 4d 53 74 72 75  63 74 28 73 25 2c 78 25  |ateMStruct(s%,x%|
00003e30  2c 79 25 29 0d 19 78 14  ea 20 61 25 2c 61 64 64  |,y%)..x.. a%,add|
00003e40  72 25 2c 64 25 2c 65 25  0d 19 82 16 6e 78 74 6d  |r%,d%,e%....nxtm|
00003e50  65 6e 75 73 74 25 3d 6d  65 6e 75 73 74 25 0d 19  |enust%=menust%..|
00003e60  8c 18 61 64 64 72 25 3d  6d 73 74 72 75 63 74 69  |..addr%=mstructi|
00003e70  6e 25 28 73 25 29 0d 19  96 05 f5 0d 19 a0 0a 20  |n%(s%)......... |
00003e80  65 25 3d 64 25 0d 19 aa  0e 20 64 25 3d 21 61 64  |e%=d%.... d%=!ad|
00003e90  64 72 25 0d 19 b4 0d 20  61 64 64 72 25 2b 3d 34  |dr%.... addr%+=4|
00003ea0  0d 19 be 0f 20 e7 20 64  25 3c 3e 2d 31 20 8c 0d  |.... . d%<>-1 ..|
00003eb0  19 c8 3c 20 20 e7 20 64  25 3c 26 38 30 30 30 20  |..<  . d%<&8000 |
00003ec0  8c 20 f2 43 72 65 61 74  65 57 69 6e 64 6f 77 28  |. .CreateWindow(|
00003ed0  64 25 29 20 8b 20 f2 43  72 65 61 74 65 4d 65 6e  |d%) . .CreateMen|
00003ee0  75 28 64 25 2d 26 38 30  30 30 29 0d 19 d2 06 20  |u(d%-&8000).... |
00003ef0  cd 0d 19 dc 0b fd 20 64  25 3d 2d 31 0d 19 e6 31  |...... d%=-1...1|
00003f00  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 4d  |.. "Wimp_CreateM|
00003f10  65 6e 75 22 2c 2c 6d 65  6e 75 69 6e 25 28 65 25  |enu",,menuin%(e%|
00003f20  2d 26 38 30 30 30 29 2c  78 25 2c 79 25 0d 19 f0  |-&8000),x%,y%...|
00003f30  0d 6d 65 6e 75 73 25 3d  73 25 0d 19 fa 05 e1 0d  |.menus%=s%......|
00003f40  1a 04 05 3a 0d 1a 0e 28  dd 20 f2 49 6e 64 69 72  |...:...(. .Indir|
00003f50  65 63 74 54 65 78 74 28  61 25 2c 61 24 2c 62 24  |ectText(a%,a$,b$|
00003f60  2c 70 25 2c 6c 25 2c f8  20 70 25 29 0d 1a 18 0d  |,p%,l%,. p%)....|
00003f70  e7 20 70 25 3d 2d 31 20  8c 0d 1a 22 2a 20 e7 20  |. p%=-1 ..."* . |
00003f80  28 6e 65 78 74 64 61 74  73 74 25 2b 6c 25 2b a9  |(nextdatst%+l%+.|
00003f90  28 62 24 29 2b 31 29 3e  3d 64 61 74 61 65 6e 64  |(b$)+1)>=dataend|
00003fa0  25 20 8c 0d 1a 2c 12 20  20 f2 45 72 72 6f 72 32  |% ...,.  .Error2|
00003fb0  6e 64 28 30 29 0d 1a 36  07 20 20 e1 0d 1a 40 06  |nd(0)..6.  ...@.|
00003fc0  20 cd 0d 1a 4a 1c 20 70  25 3d 6e 65 78 74 64 61  | ...J. p%=nextda|
00003fd0  74 25 3a 6e 65 78 74 64  61 74 25 2b 3d 31 0d 1a  |t%:nextdat%+=1..|
00003fe0  54 2a 20 64 61 74 61 25  28 70 25 2c 30 29 3d 6e  |T* data%(p%,0)=n|
00003ff0  65 78 74 64 61 74 73 74  25 3a 6e 65 78 74 64 61  |extdatst%:nextda|
00004000  74 73 74 25 2b 3d 6c 25  0d 1a 5e 13 20 64 61 74  |tst%+=l%..^. dat|
00004010  61 25 28 70 25 2c 31 29  3d 6c 25 0d 1a 68 0f 20  |a%(p%,1)=l%..h. |
00004020  e7 20 62 24 3c 3e 22 22  20 8c 0d 1a 72 30 20 20  |. b$<>"" ...r0  |
00004030  64 61 74 61 25 28 70 25  2c 32 29 3d 6e 65 78 74  |data%(p%,2)=next|
00004040  64 61 74 73 74 25 3a 6e  65 78 74 64 61 74 73 74  |datst%:nextdatst|
00004050  25 2b 3d a9 28 62 24 29  2b 31 0d 1a 7c 19 20 20  |%+=.(b$)+1..|.  |
00004060  64 61 74 61 25 28 70 25  2c 33 29 3d a9 28 62 24  |data%(p%,3)=.(b$|
00004070  29 2b 31 0d 1a 86 06 20  cc 0d 1a 90 23 20 20 64  |)+1.... ....#  d|
00004080  61 74 61 25 28 70 25 2c  32 29 3d 2d 31 3a 64 61  |ata%(p%,2)=-1:da|
00004090  74 61 25 28 70 25 2c 33  29 2d 3d 31 0d 1a 9a 06  |ta%(p%,3)-=1....|
000040a0  20 cd 0d 1a a4 05 cd 0d  1a ae 13 24 64 61 74 61  | ..........$data|
000040b0  25 28 70 25 2c 30 29 3d  61 24 0d 1a b8 20 e7 20  |%(p%,0)=a$... . |
000040c0  62 24 3c 3e 22 22 20 8c  20 24 28 64 61 74 61 25  |b$<>"" . $(data%|
000040d0  28 70 25 2c 32 29 29 3d  62 24 0d 1a c2 14 61 25  |(p%,2))=b$....a%|
000040e0  21 30 3d 64 61 74 61 25  28 70 25 2c 30 29 0d 1a  |!0=data%(p%,0)..|
000040f0  cc 14 61 25 21 34 3d 64  61 74 61 25 28 70 25 2c  |..a%!4=data%(p%,|
00004100  32 29 0d 1a d6 14 61 25  21 38 3d 64 61 74 61 25  |2)....a%!8=data%|
00004110  28 70 25 2c 31 29 0d 1a  e0 05 e1 0d 1a ea 05 3a  |(p%,1).........:|
00004120  0d 1a f4 17 dd 20 f2 44  65 6c 65 74 65 57 69 6e  |..... .DeleteWin|
00004130  64 6f 77 28 77 25 29 0d  1a fe 36 21 77 62 75 66  |dow(w%)...6!wbuf|
00004140  66 25 3d 77 69 6e 64 25  28 77 25 2c 30 29 3a c8  |f%=wind%(w%,0):.|
00004150  99 20 22 57 69 6d 70 5f  44 65 6c 65 74 65 57 69  |. "Wimp_DeleteWi|
00004160  6e 64 6f 77 22 2c 2c 77  62 75 66 66 25 0d 1b 08  |ndow",,wbuff%...|
00004170  12 77 69 6e 64 25 28 77  25 2c 30 29 3d 2d 31 0d  |.wind%(w%,0)=-1.|
00004180  1b 12 05 e1 0d 1b 1c 05  3a 0d 1b 26 18 dd 20 f2  |........:..&.. .|
00004190  44 65 73 74 72 6f 79 57  69 6e 64 6f 77 28 77 25  |DestroyWindow(w%|
000041a0  29 0d 1b 30 08 ea 20 61  25 0d 1b 3a 36 21 77 62  |)..0.. a%..:6!wb|
000041b0  75 66 66 25 3d 77 69 6e  64 25 28 77 25 2c 30 29  |uff%=wind%(w%,0)|
000041c0  3a c8 99 20 22 57 69 6d  70 5f 44 65 6c 65 74 65  |:.. "Wimp_Delete|
000041d0  57 69 6e 64 6f 77 22 2c  2c 77 62 75 66 66 25 0d  |Window",,wbuff%.|
000041e0  1b 44 12 77 69 6e 64 25  28 77 25 2c 30 29 3d 2d  |.D.wind%(w%,0)=-|
000041f0  31 0d 1b 4e 0f 77 75 73  65 25 28 77 25 29 3d 30  |1..N.wuse%(w%)=0|
00004200  0d 1b 58 16 e7 20 77 69  6e 64 25 28 77 25 2c 31  |..X.. wind%(w%,1|
00004210  37 29 3e 30 20 8c 0d 1b  62 34 20 e3 20 61 25 3d  |7)>0 ...b4 . a%=|
00004220  77 69 6e 64 25 28 77 25  2c 31 36 29 20 b8 20 77  |wind%(w%,16) . w|
00004230  69 6e 64 25 28 77 25 2c  31 36 29 2b 77 69 6e 64  |ind%(w%,16)+wind|
00004240  25 28 77 25 2c 31 37 29  2d 31 0d 1b 6c 13 20 20  |%(w%,17)-1..l.  |
00004250  69 63 6f 6e 25 28 61 25  2c 35 29 3d 30 0d 1b 76  |icon%(a%,5)=0..v|
00004260  06 20 ed 0d 1b 80 05 cd  0d 1b 8a 05 e1 0d 1b 94  |. ..............|
00004270  05 3a 0d 1b 9e 18 dd 20  f2 44 65 6c 65 74 65 4d  |.:..... .DeleteM|
00004280  53 74 72 75 63 74 28 73  25 29 0d 1b a8 0e ea 20  |Struct(s%)..... |
00004290  61 64 64 72 25 2c 64 25  0d 1b b2 18 61 64 64 72  |addr%,d%....addr|
000042a0  25 3d 6d 73 74 72 75 63  74 69 6e 25 28 73 25 29  |%=mstructin%(s%)|
000042b0  0d 1b bc 05 f5 0d 1b c6  0e 20 64 25 3d 21 61 64  |......... d%=!ad|
000042c0  64 72 25 0d 1b d0 0d 20  61 64 64 72 25 2b 3d 34  |dr%.... addr%+=4|
000042d0  0d 1b da 2c 20 e7 20 64  25 3c 3e 2d 31 20 80 20  |..., . d%<>-1 . |
000042e0  64 25 3c 26 38 30 30 30  20 8c 20 f2 44 65 6c 65  |d%<&8000 . .Dele|
000042f0  74 65 57 69 6e 64 6f 77  28 64 25 29 0d 1b e4 0b  |teWindow(d%)....|
00004300  fd 20 64 25 3d 2d 31 0d  1b ee 0d 6d 65 6e 75 73  |. d%=-1....menus|
00004310  25 3d 2d 31 0d 1b f8 0d  6d 65 6e 75 77 25 3d 2d  |%=-1....menuw%=-|
00004320  31 0d 1c 02 05 e1 0d 1c  0c 05 3a 0d 1c 16 1b f4  |1.........:.....|
00004330  20 52 65 64 72 61 77 5f  57 69 6e 64 6f 77 5f 52  | Redraw_Window_R|
00004340  65 71 75 65 73 74 0d 1c  20 0e dd 20 f2 50 5f 31  |equest.. .. .P_1|
00004350  28 61 25 29 0d 1c 2a 0e  ea 20 6d 6f 72 65 25 2c  |(a%)..*.. more%,|
00004360  77 25 0d 1c 34 12 77 25  3d a4 57 4e 75 6d 28 61  |w%..4.w%=.WNum(a|
00004370  25 21 30 29 0d 1c 3e 26  c8 99 20 22 57 69 6d 70  |%!0)..>&.. "Wimp|
00004380  5f 52 65 64 72 61 77 57  69 6e 64 6f 77 22 2c 2c  |_RedrawWindow",,|
00004390  61 25 20 b8 20 6d 6f 72  65 25 0d 1c 48 0c c8 95  |a% . more%..H...|
000043a0  20 6d 6f 72 65 25 0d 1c  52 15 20 f2 57 69 6e 64  | more%..R. .Wind|
000043b0  52 65 63 74 28 77 25 2c  61 25 29 0d 1c 5c 27 20  |Rect(w%,a%)..\' |
000043c0  c8 99 20 22 57 69 6d 70  5f 47 65 74 52 65 63 74  |.. "Wimp_GetRect|
000043d0  61 6e 67 6c 65 22 2c 2c  61 25 20 b8 20 6d 6f 72  |angle",,a% . mor|
000043e0  65 25 0d 1c 66 05 ce 0d  1c 70 05 e1 0d 1c 7a 05  |e%..f....p....z.|
000043f0  3a 0d 1c 84 1a f4 20 43  6c 6f 73 65 5f 57 69 6e  |:..... Close_Win|
00004400  64 6f 77 5f 52 65 71 75  65 73 74 0d 1c 8e 0e dd  |dow_Request.....|
00004410  20 f2 50 5f 33 28 61 25  29 0d 1c 98 13 ea 20 77  | .P_3(a%)..... w|
00004420  25 2c 63 25 2c 70 25 2c  72 65 74 25 0d 1c a2 11  |%,c%,p%,ret%....|
00004430  77 25 3d a4 57 4e 75 6d  28 21 61 25 29 0d 1c ac  |w%=.WNum(!a%)...|
00004440  12 70 25 3d 77 69 6e 64  25 28 77 25 2c 31 29 0d  |.p%=wind%(w%,1).|
00004450  1c b6 29 e7 20 70 25 3d  2d 31 20 8c 20 c8 99 20  |..). p%=-1 . .. |
00004460  22 57 69 6d 70 5f 43 6c  6f 73 65 57 69 6e 64 6f  |"Wimp_CloseWindo|
00004470  77 22 2c 2c 61 25 3a e1  0d 1c c0 13 e7 20 70 25  |w",,a%:...... p%|
00004480  3e 6d 61 78 70 75 7a 7a  25 20 8c 0d 1c ca 13 20  |>maxpuzz% ..... |
00004490  70 25 2d 3d 6d 61 78 70  75 7a 7a 25 2b 31 0d 1c  |p%-=maxpuzz%+1..|
000044a0  d4 27 20 f2 44 65 73 74  72 6f 79 57 69 6e 64 6f  |.' .DestroyWindo|
000044b0  77 28 77 25 29 3a 70 69  6e 66 6f 25 28 70 25 2c  |w(w%):pinfo%(p%,|
000044c0  38 29 2d 3d 31 0d 1c de  3a 20 e7 20 70 69 6e 66  |8)-=1...: . pinf|
000044d0  6f 25 28 70 25 2c 38 29  3d 30 20 8c 20 70 69 6e  |o%(p%,8)=0 . pin|
000044e0  66 6f 25 28 70 25 2c 34  29 3d 70 69 6e 66 6f 25  |fo%(p%,4)=pinfo%|
000044f0  28 70 25 2c 34 29 20 80  20 ac 28 25 31 31 29 0d  |(p%,4) . .(%11).|
00004500  1c e8 1b 20 70 77 75 73  65 25 28 77 69 6e 64 25  |... pwuse%(wind%|
00004510  28 77 25 2c 32 30 29 29  3d 30 0d 1c f2 06 20 e1  |(w%,20))=0.... .|
00004520  0d 1c fc 05 cd 0d 1d 06  16 e7 20 70 69 6e 66 6f  |.......... pinfo|
00004530  25 28 70 25 2c 33 29 3d  31 20 8c 0d 1d 10 47 20  |%(p%,3)=1 ....G |
00004540  62 32 25 21 30 3d 30 3a  24 28 62 32 25 2b 34 29  |b2%!0=0:$(b2%+4)|
00004550  3d 22 41 72 65 20 79 6f  75 20 73 75 72 65 20 79  |="Are you sure y|
00004560  6f 75 20 77 61 6e 74 20  74 6f 20 6c 6f 73 65 20  |ou want to lose |
00004570  74 68 69 73 20 70 75 7a  7a 6c 65 3f 22 2b bd 28  |this puzzle?"+.(|
00004580  30 29 0d 1d 1a 38 20 c8  99 20 22 57 69 6d 70 5f  |0)...8 .. "Wimp_|
00004590  52 65 70 6f 72 74 45 72  72 6f 72 22 2c 62 32 25  |ReportError",b2%|
000045a0  2c 25 31 30 31 31 31 2c  22 21 4a 69 67 57 6f 72  |,%10111,"!JigWor|
000045b0  64 22 20 b8 20 2c 72 65  74 25 0d 1d 24 1a 20 e7  |d" . ,ret%..$. .|
000045c0  20 72 65 74 25 3d 30 20  84 20 72 65 74 25 3d 32  | ret%=0 . ret%=2|
000045d0  20 8c 20 e1 0d 1d 2e 05  cd 0d 1d 38 16 f2 44 65  | . ........8..De|
000045e0  73 74 72 6f 79 57 69 6e  64 6f 77 28 77 25 29 0d  |stroyWindow(w%).|
000045f0  1d 42 13 70 69 6e 66 6f  25 28 70 25 2c 33 29 2d  |.B.pinfo%(p%,3)-|
00004600  3d 31 0d 1d 4c 2b e7 20  70 69 6e 66 6f 25 28 70  |=1..L+. pinfo%(p|
00004610  25 2c 33 29 3d 30 20 8c  20 f2 44 65 73 74 72 6f  |%,3)=0 . .Destro|
00004620  79 50 75 7a 7a 6c 65 28  70 25 29 3a e1 0d 1d 56  |yPuzzle(p%):...V|
00004630  16 e7 20 70 69 6e 66 6f  25 28 70 25 2c 33 29 3d  |.. pinfo%(p%,3)=|
00004640  31 20 8c 0d 1d 60 2c 20  24 64 61 74 61 25 28 70  |1 ...`, $data%(p|
00004650  69 6e 66 6f 25 28 70 25  2c 35 29 2c 30 29 3d 22  |info%(p%,5),0)="|
00004660  4a 69 67 57 6f 72 64 20  22 2b c3 28 70 25 29 0d  |JigWord "+.(p%).|
00004670  1d 6a 05 cc 0d 1d 74 40  20 24 64 61 74 61 25 28  |.j....t@ $data%(|
00004680  70 69 6e 66 6f 25 28 70  25 2c 35 29 2c 30 29 3d  |pinfo%(p%,5),0)=|
00004690  22 4a 69 67 57 6f 72 64  20 22 2b c3 28 70 25 29  |"JigWord "+.(p%)|
000046a0  2b 22 20 22 2b c3 28 70  69 6e 66 6f 25 28 70 25  |+" "+.(pinfo%(p%|
000046b0  2c 33 29 29 0d 1d 7e 05  cd 0d 1d 88 15 e3 20 63  |,3))..~....... c|
000046c0  25 3d 30 20 b8 20 6e 75  6d 77 69 6e 64 25 0d 1d  |%=0 . numwind%..|
000046d0  92 26 20 e7 20 77 75 73  65 25 28 63 25 29 3c 3e  |.& . wuse%(c%)<>|
000046e0  30 20 80 20 77 69 6e 64  25 28 63 25 2c 31 29 3d  |0 . wind%(c%,1)=|
000046f0  70 25 20 8c 0d 1d 9c 15  20 20 21 62 25 3d 77 69  |p% .....  !b%=wi|
00004700  6e 64 25 28 63 25 2c 30  29 0d 1d a6 22 20 20 c8  |nd%(c%,0)..."  .|
00004710  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
00004720  77 53 74 61 74 65 22 2c  2c 62 25 0d 1d b0 38 20  |wState",,b%...8 |
00004730  20 c8 99 20 22 57 69 6d  70 5f 46 6f 72 63 65 52  | .. "Wimp_ForceR|
00004740  65 64 72 61 77 22 2c 2d  31 2c 62 25 21 34 2c 62  |edraw",-1,b%!4,b|
00004750  25 21 31 36 2c 62 25 21  31 32 2c 62 25 21 31 36  |%!16,b%!12,b%!16|
00004760  2b 34 34 0d 1d ba 06 20  cd 0d 1d c4 05 ed 0d 1d  |+44.... ........|
00004770  ce 05 e1 0d 1d d8 05 3a  0d 1d e2 11 f4 20 4d 6f  |.......:..... Mo|
00004780  75 73 65 5f 43 6c 69 63  6b 0d 1d ec 0e dd 20 f2  |use_Click..... .|
00004790  50 5f 36 28 61 25 29 0d  1d f6 0b ea 20 77 25 2c  |P_6(a%)..... w%,|
000047a0  63 25 0d 1e 00 2c e7 20  61 25 21 31 32 3d 2d 32  |c%...,. a%!12=-2|
000047b0  20 f2 49 63 6f 6e 42 61  72 43 6c 69 63 6b 28 61  | .IconBarClick(a|
000047c0  25 21 30 2c 61 25 21 34  2c 61 25 21 38 29 0d 1e  |%!0,a%!4,a%!8)..|
000047d0  0a 13 77 25 3d a4 57 4e  75 6d 28 61 25 21 31 32  |..w%=.WNum(a%!12|
000047e0  29 0d 1e 14 1c e7 20 77  25 3c 30 20 84 20 77 25  |)..... w%<0 . w%|
000047f0  3e 6e 75 6d 77 69 6e 64  25 20 8c 20 e1 0d 1e 1e  |>numwind% . ....|
00004800  16 63 25 3d a4 49 4e 75  6d 28 77 25 2c 61 25 21  |.c%=.INum(w%,a%!|
00004810  31 36 29 0d 1e 28 35 e7  20 77 25 3d 31 20 80 20  |16)..(5. w%=1 . |
00004820  63 25 3d 31 34 20 80 20  28 61 25 21 38 20 80 20  |c%=14 . (a%!8 . |
00004830  32 29 3c 3e 32 20 8c 20  f2 49 6e 69 74 43 72 65  |2)<>2 . .InitCre|
00004840  61 74 65 4a 69 67 3a e1  0d 1e 32 43 e7 20 77 69  |ateJig:...2C. wi|
00004850  6e 64 25 28 77 25 2c 31  29 3c 3e 2d 31 20 80 20  |nd%(w%,1)<>-1 . |
00004860  77 69 6e 64 25 28 77 25  2c 31 29 3c 3d 6d 61 78  |wind%(w%,1)<=max|
00004870  70 75 7a 7a 25 20 8c 20  f2 50 75 7a 7a 6c 65 43  |puzz% . .PuzzleC|
00004880  6c 69 63 6b 28 77 25 2c  61 25 29 0d 1e 3c 43 e7  |lick(w%,a%)..<C.|
00004890  20 77 69 6e 64 25 28 77  25 2c 31 29 3c 3e 2d 31  | wind%(w%,1)<>-1|
000048a0  20 80 20 77 69 6e 64 25  28 77 25 2c 31 29 3e 6d  | . wind%(w%,1)>m|
000048b0  61 78 70 75 7a 7a 25 20  8c 20 f2 57 6f 72 64 43  |axpuzz% . .WordC|
000048c0  6c 69 63 6b 28 77 25 2c  63 25 2c 61 25 29 0d 1e  |lick(w%,c%,a%)..|
000048d0  46 05 e1 0d 1e 50 05 3a  0d 1e 5a 11 f4 20 4b 65  |F....P.:..Z.. Ke|
000048e0  79 5f 50 72 65 73 73 65  64 0d 1e 64 0e dd 20 f2  |y_Pressed..d.. .|
000048f0  50 5f 38 28 61 25 29 0d  1e 6e 0b ea 20 77 25 2c  |P_8(a%)..n.. w%,|
00004900  63 25 0d 1e 78 12 77 25  3d a4 57 4e 75 6d 28 61  |c%..x.w%=.WNum(a|
00004910  25 21 30 29 0d 1e 82 0b  c8 8e 20 77 25 20 ca 0d  |%!0)...... w% ..|
00004920  1e 8c 0a 20 c9 20 2d 31  3a 0d 1e 96 20 20 20 c8  |... . -1:...   .|
00004930  99 20 22 57 69 6d 70 5f  50 72 6f 63 65 73 73 4b  |. "Wimp_ProcessK|
00004940  65 79 22 2c 61 25 21 32  34 0d 1e a0 16 20 c9 20  |ey",a%!24.... . |
00004950  31 3a f2 4b 65 79 57 69  6e 64 31 28 61 25 29 0d  |1:.KeyWind1(a%).|
00004960  1e aa 07 20 7f 3a 0d 1e  b4 1f 20 c8 99 20 22 57  |... .:.... .. "W|
00004970  69 6d 70 5f 50 72 6f 63  65 73 73 4b 65 79 22 2c  |imp_ProcessKey",|
00004980  61 25 21 32 34 0d 1e be  05 cb 0d 1e c8 05 e1 0d  |a%!24...........|
00004990  1e d2 05 3a 0d 1e dc 14  f4 20 4d 65 6e 75 5f 53  |...:..... Menu_S|
000049a0  65 6c 65 63 74 69 6f 6e  0d 1e e6 0e dd 20 f2 50  |election..... .P|
000049b0  5f 39 28 61 25 29 0d 1e  f0 1b c8 99 20 26 34 30  |_9(a%)...... &40|
000049c0  30 43 46 2c 2c 62 32 25  3a 7a 25 3d 62 32 25 21  |0CF,,b2%:z%=b2%!|
000049d0  38 0d 1e fa 0f c8 8e 20  6d 65 6e 75 73 25 20 ca  |8...... menus% .|
000049e0  0d 1f 04 1b 20 c9 20 30  3a e7 20 61 25 21 30 3d  |.... . 0:. a%!0=|
000049f0  31 20 8c 20 71 75 69 74  25 3d b9 0d 1f 0e 09 20  |1 . quit%=..... |
00004a00  c9 20 31 3a 0d 1f 18 0f  20 20 c8 8e 20 61 25 21  |. 1:....  .. a%!|
00004a10  30 20 ca 0d 1f 22 1f 20  20 20 c9 20 31 3a f2 54  |0 ...".   . 1:.T|
00004a20  6f 67 67 6c 65 43 68 65  61 74 28 6d 65 6e 75 77  |oggleCheat(menuw|
00004a30  25 29 0d 1f 2c 2b 20 20  20 c9 20 32 3a f2 54 6f  |%)..,+   . 2:.To|
00004a40  67 67 6c 65 57 6f 72 64  57 69 6e 64 28 77 69 6e  |ggleWordWind(win|
00004a50  64 25 28 6d 65 6e 75 77  25 2c 31 29 29 0d 1f 36  |d%(menuw%,1))..6|
00004a60  2b 20 20 20 c9 20 33 3a  f2 43 72 65 61 74 65 50  |+   . 3:.CreateP|
00004a70  75 7a 7a 57 69 6e 64 28  77 69 6e 64 25 28 6d 65  |uzzWind(wind%(me|
00004a80  6e 75 77 25 2c 31 29 29  0d 1f 40 31 20 20 20 c9  |nuw%,1))..@1   .|
00004a90  20 34 3a f2 50 72 69 6e  74 50 75 7a 7a 47 72 69  | 4:.PrintPuzzGri|
00004aa0  64 28 6d 65 6e 75 77 25  2c 77 69 6e 64 25 28 6d  |d(menuw%,wind%(m|
00004ab0  65 6e 75 77 25 2c 31 29  29 0d 1f 4a 07 20 20 cb  |enuw%,1))..J.  .|
00004ac0  0d 1f 54 09 20 c9 20 32  3a 0d 1f 5e 0f 20 20 c8  |..T. . 2:..^.  .|
00004ad0  8e 20 61 25 21 30 20 ca  0d 1f 68 36 20 20 20 c9  |. a%!0 ...h6   .|
00004ae0  20 30 3a f2 43 72 65 61  74 65 57 6f 72 64 57 69  | 0:.CreateWordWi|
00004af0  6e 64 28 77 69 6e 64 25  28 6d 65 6e 75 77 25 2c  |nd(wind%(menuw%,|
00004b00  31 29 2d 6d 61 78 70 75  7a 7a 25 2d 31 29 0d 1f  |1)-maxpuzz%-1)..|
00004b10  72 35 20 20 20 c9 20 31  3a f2 50 72 69 6e 74 57  |r5   . 1:.PrintW|
00004b20  6f 72 64 4c 69 73 74 28  77 69 6e 64 25 28 6d 65  |ordList(wind%(me|
00004b30  6e 75 77 25 2c 31 29 2d  6d 61 78 70 75 7a 7a 25  |nuw%,1)-maxpuzz%|
00004b40  2d 31 29 0d 1f 7c 07 20  20 cb 0d 1f 86 05 cb 0d  |-1)..|.  .......|
00004b50  1f 90 12 e7 20 28 7a 25  20 80 20 31 29 3d 31 20  |.... (z% . 1)=1 |
00004b60  8c 0d 1f 9a 1f 20 f2 43  72 65 61 74 65 4d 53 74  |..... .CreateMSt|
00004b70  72 75 63 74 28 6d 65 6e  75 73 25 2c 30 2c 30 29  |ruct(menus%,0,0)|
00004b80  0d 1f a4 05 cc 0d 1f ae  1b 20 f2 44 65 6c 65 74  |......... .Delet|
00004b90  65 4d 53 74 72 75 63 74  28 6d 65 6e 75 73 25 29  |eMStruct(menus%)|
00004ba0  0d 1f b8 05 cd 0d 1f c2  05 e1 0d 1f cc 05 3a 0d  |..............:.|
00004bb0  1f d6 14 f4 20 50 6f 6c  6c 20 31 37 20 61 6e 64  |.... Poll 17 and|
00004bc0  20 31 38 0d 1f e0 12 dd  20 f2 52 65 63 65 69 76  | 18..... .Receiv|
00004bd0  65 28 61 25 29 0d 1f ea  0e c8 8e 20 61 25 21 31  |e(a%)...... a%!1|
00004be0  36 20 ca 0d 1f f4 10 20  c9 20 30 3a 71 75 69 74  |6 ..... . 0:quit|
00004bf0  25 3d b9 0d 1f fe 22 20  c9 20 26 34 30 33 30 30  |%=...." . &40300|
00004c00  3a f2 43 68 61 6e 67 65  48 69 4c 69 74 65 43 6f  |:.ChangeHiLiteCo|
00004c10  6c 28 61 25 29 0d 20 08  05 cb 0d 20 12 05 e1 0d  |l(a%). .... ....|
00004c20  20 1c 05 3a 0d 20 26 1f  f4 20 44 6f 6e 27 74 20  | ..:. &.. Don't |
00004c30  6b 6e 6f 77 20 69 66 20  74 68 69 73 20 77 6f 72  |know if this wor|
00004c40  6b 73 2e 0d 20 30 1a dd  20 f2 43 68 61 6e 67 65  |ks.. 0.. .Change|
00004c50  48 69 4c 69 74 65 43 6f  6c 28 61 25 29 0d 20 3a  |HiLiteCol(a%). :|
00004c60  23 ea 20 64 25 2c 73 25  2c 41 25 2c 42 25 2c 43  |#. d%,s%,A%,B%,C|
00004c70  25 2c 44 25 2c 45 25 2c  46 25 2c 47 25 2c 48 25  |%,D%,E%,F%,G%,H%|
00004c80  0d 20 44 15 e7 20 61 25  21 32 30 3d 26 34 35 32  |. D.. a%!20=&452|
00004c90  32 39 35 20 8c 0d 20 4e  15 20 68 69 6c 69 74 65  |295 .. N. hilite|
00004ca0  63 6f 6c 25 3d 61 25 21  32 34 0d 20 58 20 20 41  |col%=a%!24. X  A|
00004cb0  25 3d 68 69 6c 69 74 65  63 6f 6c 25 3a d6 20 43  |%=hilitecol%:. C|
00004cc0  68 61 6e 67 65 48 69 43  6f 6c 0d 20 62 06 20 e1  |hangeHiCol. b. .|
00004cd0  0d 20 6c 05 cd 0d 20 76  15 e7 20 61 25 21 32 30  |. l... v.. a%!20|
00004ce0  3d 34 35 32 32 32 39 35  20 8c 0d 20 80 0d 20 73  |=4522295 .. .. s|
00004cf0  25 3d 61 25 21 32 34 0d  20 8a 0d 20 64 25 3d 61  |%=a%!24. .. d%=a|
00004d00  25 2b 32 38 0d 20 94 0e  20 41 25 3d a0 28 24 64  |%+28. .. A%=.($d|
00004d10  25 29 0d 20 9e 14 20 f2  4e 65 78 74 50 61 72 28  |%). .. .NextPar(|
00004d20  64 25 2c 64 25 29 0d 20  a8 0e 20 42 25 3d a0 28  |d%,d%). .. B%=.(|
00004d30  24 64 25 29 0d 20 b2 14  20 f2 4e 65 78 74 50 61  |$d%). .. .NextPa|
00004d40  72 28 64 25 2c 64 25 29  0d 20 bc 0e 20 43 25 3d  |r(d%,d%). .. C%=|
00004d50  a0 28 24 64 25 29 0d 20  c6 14 20 f2 4e 65 78 74  |.($d%). .. .Next|
00004d60  50 61 72 28 64 25 2c 64  25 29 0d 20 d0 0e 20 44  |Par(d%,d%). .. D|
00004d70  25 3d a0 28 24 64 25 29  0d 20 da 14 20 f2 4e 65  |%=.($d%). .. .Ne|
00004d80  78 74 50 61 72 28 64 25  2c 64 25 29 0d 20 e4 0e  |xtPar(d%,d%). ..|
00004d90  20 45 25 3d a0 28 24 64  25 29 0d 20 ee 14 20 f2  | E%=.($d%). .. .|
00004da0  4e 65 78 74 50 61 72 28  64 25 2c 64 25 29 0d 20  |NextPar(d%,d%). |
00004db0  f8 0e 20 46 25 3d a0 28  24 64 25 29 0d 21 02 14  |.. F%=.($d%).!..|
00004dc0  20 f2 4e 65 78 74 50 61  72 28 64 25 2c 64 25 29  | .NextPar(d%,d%)|
00004dd0  0d 21 0c 0e 20 47 25 3d  a0 28 24 64 25 29 0d 21  |.!.. G%=.($d%).!|
00004de0  16 14 20 f2 4e 65 78 74  50 61 72 28 64 25 2c 64  |.. .NextPar(d%,d|
00004df0  25 29 0d 21 20 0e 20 48  25 3d a0 28 24 64 25 29  |%).! . H%=.($d%)|
00004e00  0d 21 2a 22 20 c8 99 20  73 25 2c 41 25 2c 42 25  |.!*" .. s%,A%,B%|
00004e10  2c 43 25 2c 44 25 2c 45  25 2c 46 25 2c 47 25 2c  |,C%,D%,E%,F%,G%,|
00004e20  48 25 0d 21 34 06 20 e1  0d 21 3e 05 cd 0d 21 48  |H%.!4. ..!>...!H|
00004e30  15 e7 20 61 25 21 32 30  3d 35 39 32 32 32 35 34  |.. a%!20=5922254|
00004e40  20 8c 0d 21 52 0d 20 64  25 3d 61 25 2b 32 34 0d  | ..!R. d%=a%+24.|
00004e50  21 5c 0e 20 73 25 3d a0  28 24 64 25 29 0d 21 66  |!\. s%=.($d%).!f|
00004e60  14 20 f2 4e 65 78 74 50  61 72 28 64 25 2c 64 25  |. .NextPar(d%,d%|
00004e70  29 0d 21 70 0e 20 41 25  3d a0 28 24 64 25 29 0d  |).!p. A%=.($d%).|
00004e80  21 7a 14 20 f2 4e 65 78  74 50 61 72 28 64 25 2c  |!z. .NextPar(d%,|
00004e90  64 25 29 0d 21 84 0e 20  42 25 3d a0 28 24 64 25  |d%).!.. B%=.($d%|
00004ea0  29 0d 21 8e 14 20 f2 4e  65 78 74 50 61 72 28 64  |).!.. .NextPar(d|
00004eb0  25 2c 64 25 29 0d 21 98  0e 20 43 25 3d a0 28 24  |%,d%).!.. C%=.($|
00004ec0  64 25 29 0d 21 a2 14 20  f2 4e 65 78 74 50 61 72  |d%).!.. .NextPar|
00004ed0  28 64 25 2c 64 25 29 0d  21 ac 0e 20 44 25 3d a0  |(d%,d%).!.. D%=.|
00004ee0  28 24 64 25 29 0d 21 b6  14 20 f2 4e 65 78 74 50  |($d%).!.. .NextP|
00004ef0  61 72 28 64 25 2c 64 25  29 0d 21 c0 0e 20 45 25  |ar(d%,d%).!.. E%|
00004f00  3d a0 28 24 64 25 29 0d  21 ca 14 20 f2 4e 65 78  |=.($d%).!.. .Nex|
00004f10  74 50 61 72 28 64 25 2c  64 25 29 0d 21 d4 0e 20  |tPar(d%,d%).!.. |
00004f20  46 25 3d a0 28 24 64 25  29 0d 21 de 14 20 f2 4e  |F%=.($d%).!.. .N|
00004f30  65 78 74 50 61 72 28 64  25 2c 64 25 29 0d 21 e8  |extPar(d%,d%).!.|
00004f40  0e 20 47 25 3d a0 28 24  64 25 29 0d 21 f2 14 20  |. G%=.($d%).!.. |
00004f50  f2 4e 65 78 74 50 61 72  28 64 25 2c 64 25 29 0d  |.NextPar(d%,d%).|
00004f60  21 fc 0e 20 48 25 3d a0  28 24 64 25 29 0d 22 06  |!.. H%=.($d%).".|
00004f70  09 20 d6 20 73 25 0d 22  10 06 20 e1 0d 22 1a 05  |. . s%.".. .."..|
00004f80  cd 0d 22 24 17 e7 20 61  25 21 32 30 3d 26 31 32  |.."$.. a%!20=&12|
00004f90  33 34 44 45 42 41 20 8c  0d 22 2e 0e 20 d6 20 28  |34DEBA ..".. . (|
00004fa0  61 25 21 32 34 29 0d 22  38 06 20 e1 0d 22 42 05  |a%!24)."8. .."B.|
00004fb0  cd 0d 22 4c 05 e1 0d 22  56 05 3a 0d 22 60 17 dd  |.."L..."V.:."`..|
00004fc0  20 f2 4e 65 78 74 50 61  72 28 64 25 2c f8 20 64  | .NextPar(d%,. d|
00004fd0  25 29 0d 22 6a 09 64 25  2b 3d 31 0d 22 74 0e c8  |%)."j.d%+=1."t..|
00004fe0  95 20 3f 64 25 3c 3e 31  33 0d 22 7e 0a 20 64 25  |. ?d%<>13."~. d%|
00004ff0  2b 3d 31 0d 22 88 05 ce  0d 22 92 09 64 25 2b 3d  |+=1."...."..d%+=|
00005000  31 0d 22 9c 05 e1 0d 22  a6 05 3a 0d 22 b0 31 f4  |1."...."..:.".1.|
00005010  20 31 30 2e 39 2e 38 2e  37 2e 36 2e 35 2e 34 2e  | 10.9.8.7.6.5.4.|
00005020  33 2e 32 2e 31 2e 2e 2e  57 65 20 68 61 76 65 20  |3.2.1...We have |
00005030  64 65 73 74 72 75 63 74  69 6f 6e 2e 0d 22 ba 18  |destruction.."..|
00005040  dd 20 f2 44 65 73 74 72  6f 79 50 75 7a 7a 6c 65  |. .DestroyPuzzle|
00005050  28 70 25 29 0d 22 c4 16  ea 20 61 25 2c 61 64 64  |(p%)."... a%,add|
00005060  72 31 25 2c 61 64 64 72  32 25 0d 22 ce 16 e3 20  |r1%,addr2%."... |
00005070  61 25 3d 30 20 b8 20 6d  61 78 70 77 6f 72 64 25  |a%=0 . maxpword%|
00005080  0d 22 d8 24 e7 20 70 77  6f 72 64 25 28 61 25 2c  |.".$. pword%(a%,|
00005090  31 29 3d 70 25 20 80 20  70 77 75 73 65 25 28 61  |1)=p% . pwuse%(a|
000050a0  25 29 20 8c 0d 22 e2 2e  20 70 77 75 73 65 25 28  |%) ..".. pwuse%(|
000050b0  61 25 29 3d 30 3a f2 44  65 73 74 72 6f 79 57 69  |a%)=0:.DestroyWi|
000050c0  6e 64 6f 77 28 70 77 6f  72 64 25 28 61 25 2c 30  |ndow(pword%(a%,0|
000050d0  29 29 0d 22 ec 05 cd 0d  22 f6 05 ed 0d 23 00 05  |))."...."....#..|
000050e0  3a 0d 23 0a 16 61 64 64  72 31 25 3d 70 75 7a 7a  |:.#..addr1%=puzz|
000050f0  69 6e 25 28 70 25 29 0d  23 14 17 61 64 64 72 32  |in%(p%).#..addr2|
00005100  25 3d 70 75 7a 7a 73 68  66 6c 61 67 73 31 0d 23  |%=puzzshflags1.#|
00005110  1e 15 e3 20 61 25 3d 30  20 b8 20 6d 61 78 70 75  |... a%=0 . maxpu|
00005120  7a 7a 25 0d 23 28 33 20  e7 20 70 66 72 65 65 25  |zz%.#(3 . pfree%|
00005130  28 61 25 29 20 8c 20 21  61 64 64 72 32 25 3d 70  |(a%) . !addr2%=p|
00005140  75 7a 7a 69 6e 25 28 61  25 29 20 8b 20 21 61 64  |uzzin%(a%) . !ad|
00005150  64 72 32 25 3d 30 0d 23  32 0e 20 61 64 64 72 32  |dr2%=0.#2. addr2|
00005160  25 2b 3d 34 0d 23 3c 05  ed 0d 23 46 17 41 25 3d  |%+=4.#<...#F.A%=|
00005170  70 25 3a d6 20 70 75 7a  7a 73 68 75 66 66 6c 65  |p%:. puzzshuffle|
00005180  0d 23 50 17 61 64 64 72  31 25 3d 70 75 7a 7a 73  |.#P.addr1%=puzzs|
00005190  68 66 6c 61 67 73 31 0d  23 5a 15 e3 20 61 25 3d  |hflags1.#Z.. a%=|
000051a0  30 20 b8 20 6d 61 78 70  75 7a 7a 25 0d 23 64 27  |0 . maxpuzz%.#d'|
000051b0  20 e7 20 21 61 64 64 72  31 25 3c 3e 30 20 8c 20  | . !addr1%<>0 . |
000051c0  70 75 7a 7a 69 6e 25 28  61 25 29 3d 21 61 64 64  |puzzin%(a%)=!add|
000051d0  72 31 25 0d 23 6e 0e 20  61 64 64 72 31 25 2b 3d  |r1%.#n. addr1%+=|
000051e0  34 0d 23 78 05 ed 0d 23  82 10 70 66 72 65 65 25  |4.#x...#..pfree%|
000051f0  28 70 25 29 3d 30 0d 23  8c 1a 6e 78 74 70 75 7a  |(p%)=0.#..nxtpuz|
00005200  7a 73 74 25 3d 21 6e 65  78 74 70 75 7a 7a 73 74  |zst%=!nextpuzzst|
00005210  0d 23 96 05 e1 0d 23 a0  05 3a 0d 23 aa 2d f4 20  |.#....#..:.#.-. |
00005220  44 6f 65 73 20 61 6e 79  6f 6e 65 20 6b 6e 6f 77  |Does anyone know|
00005230  20 74 68 61 74 20 6c 69  74 74 6c 65 20 6b 6e 6f  | that little kno|
00005240  77 6e 20 73 6f 6e 67 0d  23 b4 29 f4 20 27 53 74  |wn song.#.). 'St|
00005250  6f 70 20 74 61 70 2d 64  61 6e 63 69 6e 67 20 6f  |op tap-dancing o|
00005260  6e 20 6d 79 20 69 63 6f  6e 20 62 61 72 27 20 3f  |n my icon bar' ?|
00005270  0d 23 be 1d dd 20 f2 49  63 6f 6e 42 61 72 43 6c  |.#... .IconBarCl|
00005280  69 63 6b 28 78 25 2c 79  25 2c 7a 25 29 0d 23 c8  |ick(x%,y%,z%).#.|
00005290  15 e7 20 7a 25 3d 31 20  8c 20 f4 20 41 64 6a 75  |.. z%=1 . . Adju|
000052a0  73 74 0d 23 d2 1e e7 20  7a 25 3d 34 20 8c 20 f2  |st.#... z%=4 . .|
000052b0  4f 70 65 6e 57 69 6e 64  6f 77 28 31 2c 2d 31 29  |OpenWindow(1,-1)|
000052c0  0d 23 dc 0c e7 20 7a 25  3d 32 20 8c 0d 23 e6 2a  |.#... z%=2 ..#.*|
000052d0  20 e7 20 6d 65 6e 75 73  25 3c 3e 2d 31 20 8c 20  | . menus%<>-1 . |
000052e0  f2 44 65 6c 65 74 65 4d  53 74 72 75 63 74 28 6d  |.DeleteMStruct(m|
000052f0  65 6e 75 73 25 29 0d 23  f0 20 20 f2 43 72 65 61  |enus%).#.  .Crea|
00005300  74 65 4d 53 74 72 75 63  74 28 30 2c 78 25 2d 36  |teMStruct(0,x%-6|
00005310  34 2c 31 38 34 29 0d 23  fa 0e 20 6d 65 6e 75 77  |4,184).#.. menuw|
00005320  25 3d 2d 31 0d 24 04 06  20 e1 0d 24 0e 05 cd 0d  |%=-1.$.. ..$....|
00005330  24 18 05 e1 0d 24 22 05  3a 0d 24 2c 17 f4 20 41  |$....$".:.$,.. A|
00005340  20 63 6f 6e 66 75 73 65  64 20 63 6c 69 63 6b 3f  | confused click?|
00005350  0d 24 36 1c dd 20 f2 50  75 7a 7a 6c 65 43 6c 69  |.$6.. .PuzzleCli|
00005360  63 6b 28 77 25 2c 61 64  64 72 25 29 0d 24 40 08  |ck(w%,addr%).$@.|
00005370  ea 20 70 25 0d 24 4a 12  70 25 3d 77 69 6e 64 25  |. p%.$J.p%=wind%|
00005380  28 77 25 2c 31 29 0d 24  54 17 e7 20 28 61 64 64  |(w%,1).$T.. (add|
00005390  72 25 21 38 20 80 20 32  29 3d 32 20 8c 0d 24 5e  |r%!8 . 2)=2 ..$^|
000053a0  20 20 69 63 6f 6e 24 28  31 38 2c 30 29 3d c3 28  |  icon$(18,0)=.(|
000053b0  70 69 6e 66 6f 25 28 70  25 2c 30 29 29 0d 24 68  |pinfo%(p%,0)).$h|
000053c0  20 20 69 63 6f 6e 24 28  31 39 2c 30 29 3d c3 28  |  icon$(19,0)=.(|
000053d0  70 69 6e 66 6f 25 28 70  25 2c 31 29 29 0d 24 72  |pinfo%(p%,1)).$r|
000053e0  20 20 69 63 6f 6e 24 28  32 30 2c 30 29 3d c3 28  |  icon$(20,0)=.(|
000053f0  70 69 6e 66 6f 25 28 70  25 2c 32 29 29 0d 24 7c  |pinfo%(p%,2)).$||
00005400  1f 20 e7 20 28 77 69 6e  64 25 28 77 25 2c 32 30  |. . (wind%(w%,20|
00005410  29 20 80 20 25 31 29 3d  25 31 20 8c 0d 24 86 24  |) . %1)=%1 ..$.$|
00005420  20 20 69 74 65 6d 25 28  31 2c 31 2c 31 29 3d 69  |  item%(1,1,1)=i|
00005430  74 65 6d 25 28 31 2c 31  2c 31 29 20 84 20 25 31  |tem%(1,1,1) . %1|
00005440  0d 24 90 06 20 cc 0d 24  9a 27 20 20 69 74 65 6d  |.$.. ..$.'  item|
00005450  25 28 31 2c 31 2c 31 29  3d 69 74 65 6d 25 28 31  |%(1,1,1)=item%(1|
00005460  2c 31 2c 31 29 20 80 20  ac 28 25 31 29 0d 24 a4  |,1,1) . .(%1).$.|
00005470  06 20 cd 0d 24 ae 1f 20  e7 20 28 70 69 6e 66 6f  |. ..$.. . (pinfo|
00005480  25 28 70 25 2c 34 29 20  80 20 25 31 29 3d 25 31  |%(p%,4) . %1)=%1|
00005490  20 8c 0d 24 b8 24 20 20  69 74 65 6d 25 28 31 2c  | ..$.$  item%(1,|
000054a0  32 2c 31 29 3d 69 74 65  6d 25 28 31 2c 31 2c 31  |2,1)=item%(1,1,1|
000054b0  29 20 84 20 25 31 0d 24  c2 06 20 cc 0d 24 cc 27  |) . %1.$.. ..$.'|
000054c0  20 20 69 74 65 6d 25 28  31 2c 32 2c 31 29 3d 69  |  item%(1,2,1)=i|
000054d0  74 65 6d 25 28 31 2c 31  2c 31 29 20 80 20 ac 28  |tem%(1,1,1) . .(|
000054e0  25 31 29 0d 24 d6 06 20  cd 0d 24 e0 2a 20 e7 20  |%1).$.. ..$.* . |
000054f0  6d 65 6e 75 73 25 3c 3e  2d 31 20 8c 20 f2 44 65  |menus%<>-1 . .De|
00005500  6c 65 74 65 4d 53 74 72  75 63 74 28 6d 65 6e 75  |leteMStruct(menu|
00005510  73 25 29 0d 24 ea 29 20  f2 43 72 65 61 74 65 4d  |s%).$.) .CreateM|
00005520  53 74 72 75 63 74 28 31  2c 61 64 64 72 25 21 30  |Struct(1,addr%!0|
00005530  2d 36 34 2c 61 64 64 72  25 21 34 29 0d 24 f4 0e  |-64,addr%!4).$..|
00005540  20 6d 65 6e 75 77 25 3d  77 25 0d 24 fe 06 20 e1  | menuw%=w%.$.. .|
00005550  0d 25 08 05 cd 0d 25 12  1d e7 20 28 61 64 64 72  |.%....%... (addr|
00005560  25 21 38 20 80 20 25 31  30 30 29 3d 25 31 30 30  |%!8 . %100)=%100|
00005570  20 8c 0d 25 1c 2d 20 f2  50 75 7a 7a 53 65 6c 65  | ..%.- .PuzzSele|
00005580  63 74 28 70 25 2c 61 64  64 72 25 21 31 32 2c 61  |ct(p%,addr%!12,a|
00005590  64 64 72 25 21 30 2c 61  64 64 72 25 21 34 29 0d  |ddr%!0,addr%!4).|
000055a0  25 26 06 20 e1 0d 25 30  05 cd 0d 25 3a 1d e7 20  |%&. ..%0...%:.. |
000055b0  28 61 64 64 72 25 21 38  20 80 20 25 30 30 31 29  |(addr%!8 . %001)|
000055c0  3d 25 30 30 31 20 8c 0d  25 44 15 20 f2 44 65 48  |=%001 ..%D. .DeH|
000055d0  69 4c 69 67 68 74 28 70  25 2c 32 29 0d 25 4e 13  |iLight(p%,2).%N.|
000055e0  20 70 69 6e 66 6f 25 28  70 25 2c 36 29 3d 30 0d  | pinfo%(p%,6)=0.|
000055f0  25 58 13 20 70 69 6e 66  6f 25 28 70 25 2c 37 29  |%X. pinfo%(p%,7)|
00005600  3d 30 0d 25 62 13 20 70  69 6e 66 6f 25 28 70 25  |=0.%b. pinfo%(p%|
00005610  2c 39 29 3d 30 0d 25 6c  14 20 70 69 6e 66 6f 25  |,9)=0.%l. pinfo%|
00005620  28 70 25 2c 31 30 29 3d  30 0d 25 76 06 20 e1 0d  |(p%,10)=0.%v. ..|
00005630  25 80 05 cd 0d 25 8a 05  e1 0d 25 94 05 3a 0d 25  |%....%....%..:.%|
00005640  9e 2d f4 20 41 6e 79 6f  6e 65 20 77 68 6f 20 75  |.-. Anyone who u|
00005650  73 65 64 20 74 68 69 73  20 6f 70 74 69 6f 6e 20  |sed this option |
00005660  74 6f 20 63 6f 6d 70 6c  65 74 65 0d 25 a8 32 f4  |to complete.%.2.|
00005670  20 61 20 70 75 7a 7a 6c  65 20 68 61 73 6e 27 74  | a puzzle hasn't|
00005680  20 67 6f 74 20 74 68 65  20 62 72 61 69 6e 73 20  | got the brains |
00005690  74 6f 20 75 6e 64 65 72  73 74 61 6e 64 0d 25 b2  |to understand.%.|
000056a0  2e f4 20 74 68 69 73 20  70 72 6f 67 72 61 6d 2e  |.. this program.|
000056b0  20 53 6f 20 77 68 79 20  61 72 65 20 79 6f 75 20  | So why are you |
000056c0  72 65 61 64 69 6e 67 20  69 74 3f 0d 25 bc 16 dd  |reading it?.%...|
000056d0  20 f2 54 6f 67 67 6c 65  43 68 65 61 74 28 77 25  | .ToggleCheat(w%|
000056e0  29 0d 25 c6 22 77 69 6e  64 25 28 77 25 2c 32 30  |).%."wind%(w%,20|
000056f0  29 3d 77 69 6e 64 25 28  77 25 2c 32 30 29 20 82  |)=wind%(w%,20) .|
00005700  20 25 31 0d 25 d0 22 69  74 65 6d 25 28 31 2c 31  | %1.%."item%(1,1|
00005710  2c 31 29 3d 69 74 65 6d  25 28 31 2c 31 2c 31 29  |,1)=item%(1,1,1)|
00005720  20 82 20 25 31 0d 25 da  14 62 25 21 30 3d 77 69  | . %1.%..b%!0=wi|
00005730  6e 64 25 28 77 25 2c 30  29 0d 25 e4 14 62 25 21  |nd%(w%,0).%..b%!|
00005740  34 3d 77 69 6e 64 25 28  77 25 2c 38 29 0d 25 ee  |4=wind%(w%,8).%.|
00005750  14 62 25 21 38 3d 77 69  6e 64 25 28 77 25 2c 39  |.b%!8=wind%(w%,9|
00005760  29 0d 25 f8 16 62 25 21  31 32 3d 77 69 6e 64 25  |).%..b%!12=wind%|
00005770  28 77 25 2c 31 30 29 0d  26 02 16 62 25 21 31 36  |(w%,10).&..b%!16|
00005780  3d 77 69 6e 64 25 28 77  25 2c 31 31 29 0d 26 0c  |=wind%(w%,11).&.|
00005790  26 c8 99 20 22 57 69 6d  70 5f 55 70 64 61 74 65  |&.. "Wimp_Update|
000057a0  57 69 6e 64 6f 77 22 2c  2c 62 25 20 b8 20 6d 6f  |Window",,b% . mo|
000057b0  72 65 25 0d 26 16 0c c8  95 20 6d 6f 72 65 25 0d  |re%.&.... more%.|
000057c0  26 20 15 20 f2 57 69 6e  64 52 65 63 74 28 77 25  |& . .WindRect(w%|
000057d0  2c 62 25 29 0d 26 2a 27  20 c8 99 20 22 57 69 6d  |,b%).&*' .. "Wim|
000057e0  70 5f 47 65 74 52 65 63  74 61 6e 67 6c 65 22 2c  |p_GetRectangle",|
000057f0  2c 62 25 20 b8 20 6d 6f  72 65 25 0d 26 34 05 ce  |,b% . more%.&4..|
00005800  0d 26 3e 05 e1 0d 26 48  05 3a 0d 26 52 19 dd 20  |.&>...&H.:.&R.. |
00005810  f2 54 6f 67 67 6c 65 57  6f 72 64 57 69 6e 64 28  |.ToggleWordWind(|
00005820  70 25 29 0d 26 5c 20 e7  20 28 70 69 6e 66 6f 25  |p%).&\ . (pinfo%|
00005830  28 70 25 2c 34 29 20 80  20 25 31 30 29 3d 25 30  |(p%,4) . %10)=%0|
00005840  30 20 8c 0d 26 66 18 20  f2 43 72 65 61 74 65 57  |0 ..&f. .CreateW|
00005850  6f 72 64 57 69 6e 64 28  70 25 29 0d 26 70 1a 20  |ordWind(p%).&p. |
00005860  e7 20 70 69 6e 66 6f 25  28 70 25 2c 38 29 3d 2d  |. pinfo%(p%,8)=-|
00005870  31 20 8c 20 e1 0d 26 7a  24 20 70 69 6e 66 6f 25  |1 . ..&z$ pinfo%|
00005880  28 70 25 2c 34 29 3d 70  69 6e 66 6f 25 28 70 25  |(p%,4)=pinfo%(p%|
00005890  2c 34 29 20 84 20 25 31  31 0d 26 84 23 20 69 74  |,4) . %11.&.# it|
000058a0  65 6d 25 28 31 2c 32 2c  31 29 3d 69 74 65 6d 25  |em%(1,2,1)=item%|
000058b0  28 31 2c 32 2c 31 29 20  84 20 25 31 0d 26 8e 06  |(1,2,1) . %1.&..|
000058c0  20 e1 0d 26 98 05 cd 0d  26 a2 05 e1 0d 26 ac 05  | ..&....&....&..|
000058d0  3a 0d 26 b6 1e dd 20 f2  50 75 7a 7a 53 65 6c 65  |:.&... .PuzzSele|
000058e0  63 74 28 70 25 2c 77 25  2c 78 25 2c 79 25 29 0d  |ct(p%,w%,x%,y%).|
000058f0  26 c0 2a ea 20 61 25 2c  61 64 64 72 31 25 2c 61  |&.*. a%,addr1%,a|
00005900  64 64 72 32 25 2c 76 25  2c 68 25 2c 6e 25 2c 78  |ddr2%,v%,h%,n%,x|
00005910  31 25 2c 79 31 25 2c 6c  25 0d 26 ca 18 21 62 25  |1%,y1%,l%.&..!b%|
00005920  3d 77 25 3a c8 99 20 26  34 30 30 43 42 2c 2c 62  |=w%:.. &400CB,,b|
00005930  25 0d 26 d4 16 78 25 3d  78 25 2d 28 62 25 21 34  |%.&..x%=x%-(b%!4|
00005940  2d 62 25 21 32 30 29 0d  26 de 17 79 25 3d 79 25  |-b%!20).&..y%=y%|
00005950  2d 28 62 25 21 31 36 2d  62 25 21 32 34 29 0d 26  |-(b%!16-b%!24).&|
00005960  e8 27 78 25 3d 28 78 25  2d 32 32 29 20 81 20 32  |.'x%=(x%-22) . 2|
00005970  30 3a 79 25 3d 28 28 79  25 2b 38 29 20 81 20 34  |0:y%=((y%+8) . 4|
00005980  30 29 2a 2d 31 0d 26 f2  2b 41 25 3d 78 25 3a 42  |0)*-1.&.+A%=x%:B|
00005990  25 3d 79 25 3a 43 25 3d  70 75 7a 7a 69 6e 25 28  |%=y%:C%=puzzin%(|
000059a0  70 25 29 3a d6 20 70 75  7a 7a 73 65 6c 65 63 74  |p%):. puzzselect|
000059b0  0d 26 fc 15 68 25 3d 21  73 65 6c 68 3a 76 25 3d  |.&..h%=!selh:v%=|
000059c0  21 73 65 6c 76 0d 27 06  20 e7 20 68 25 3c 3e 30  |!selv.'. . h%<>0|
000059d0  20 8c 20 70 69 6e 66 6f  25 28 70 25 2c 39 29 3d  | . pinfo%(p%,9)=|
000059e0  21 68 6c 65 6e 0d 27 10  21 e7 20 76 25 3c 3e 30  |!hlen.'.!. v%<>0|
000059f0  20 8c 20 70 69 6e 66 6f  25 28 70 25 2c 31 30 29  | . pinfo%(p%,10)|
00005a00  3d 21 76 6c 65 6e 0d 27  1a 05 3a 0d 27 24 15 e7  |=!vlen.'..:.'$..|
00005a10  20 68 25 3d 30 20 80 20  76 25 3d 30 20 8c 20 e1  | h%=0 . v%=0 . .|
00005a20  0d 27 2e 2b e7 20 68 25  3d 70 69 6e 66 6f 25 28  |.'.+. h%=pinfo%(|
00005a30  70 25 2c 36 29 20 80 20  76 25 3d 70 69 6e 66 6f  |p%,6) . v%=pinfo|
00005a40  25 28 70 25 2c 37 29 20  8c 20 e1 0d 27 38 13 e7  |%(p%,7) . ..'8..|
00005a50  20 68 25 3e 30 20 80 20  76 25 3e 30 20 8c 0d 27  | h%>0 . v%>0 ..'|
00005a60  42 18 20 e7 20 68 25 3d  70 69 6e 66 6f 25 28 70  |B. . h%=pinfo%(p|
00005a70  25 2c 36 29 20 8c 0d 27  4c 26 20 20 f2 44 65 48  |%,6) ..'L&  .DeH|
00005a80  69 4c 69 67 68 74 28 70  25 2c 31 29 3a 70 69 6e  |iLight(p%,1):pin|
00005a90  66 6f 25 28 70 25 2c 31  30 29 3d 30 0d 27 56 07  |fo%(p%,10)=0.'V.|
00005aa0  20 20 e1 0d 27 60 06 20  cd 0d 27 6a 18 20 e7 20  |  ..'`. ..'j. . |
00005ab0  76 25 3d 70 69 6e 66 6f  25 28 70 25 2c 37 29 20  |v%=pinfo%(p%,7) |
00005ac0  8c 0d 27 74 25 20 20 f2  44 65 48 69 4c 69 67 68  |..'t%  .DeHiLigh|
00005ad0  74 28 70 25 2c 30 29 3a  70 69 6e 66 6f 25 28 70  |t(p%,0):pinfo%(p|
00005ae0  25 2c 39 29 3d 30 0d 27  7e 07 20 20 e1 0d 27 88  |%,9)=0.'~.  ..'.|
00005af0  06 20 cd 0d 27 92 15 20  f2 44 65 48 69 4c 69 67  |. ..'.. .DeHiLig|
00005b00  68 74 28 70 25 2c 32 29  0d 27 9c 24 20 70 69 6e  |ht(p%,2).'.$ pin|
00005b10  66 6f 25 28 70 25 2c 36  29 3d 68 25 3a 70 69 6e  |fo%(p%,6)=h%:pin|
00005b20  66 6f 25 28 70 25 2c 37  29 3d 76 25 0d 27 a6 13  |fo%(p%,7)=v%.'..|
00005b30  20 f2 48 69 4c 69 67 68  74 28 70 25 2c 30 29 0d  | .HiLight(p%,0).|
00005b40  27 b0 13 20 f2 48 69 4c  69 67 68 74 28 70 25 2c  |'.. .HiLight(p%,|
00005b50  31 29 0d 27 ba 06 20 e1  0d 27 c4 05 cd 0d 27 ce  |1).'.. ..'....'.|
00005b60  0c e7 20 68 25 3e 30 20  8c 0d 27 d8 38 20 e7 20  |.. h%>0 ..'.8 . |
00005b70  70 69 6e 66 6f 25 28 70  25 2c 37 29 3e 30 20 8c  |pinfo%(p%,7)>0 .|
00005b80  20 f2 44 65 48 69 4c 69  67 68 74 28 70 25 2c 31  | .DeHiLight(p%,1|
00005b90  29 3a 70 69 6e 66 6f 25  28 70 25 2c 31 30 29 3d  |):pinfo%(p%,10)=|
00005ba0  30 0d 27 e2 19 20 e7 20  70 69 6e 66 6f 25 28 70  |0.'.. . pinfo%(p|
00005bb0  25 2c 36 29 3c 3e 68 25  20 8c 0d 27 ec 16 20 20  |%,6)<>h% ..'..  |
00005bc0  f2 44 65 48 69 4c 69 67  68 74 28 70 25 2c 30 29  |.DeHiLight(p%,0)|
00005bd0  0d 27 f6 15 20 20 70 69  6e 66 6f 25 28 70 25 2c  |.'..  pinfo%(p%,|
00005be0  36 29 3d 68 25 0d 28 00  14 20 20 f2 48 69 4c 69  |6)=h%.(..  .HiLi|
00005bf0  67 68 74 28 70 25 2c 30  29 0d 28 0a 06 20 cd 0d  |ght(p%,0).(.. ..|
00005c00  28 14 05 cc 0d 28 1e 37  20 e7 20 70 69 6e 66 6f  |(....(.7 . pinfo|
00005c10  25 28 70 25 2c 36 29 3e  30 20 8c 20 f2 44 65 48  |%(p%,6)>0 . .DeH|
00005c20  69 4c 69 67 68 74 28 70  25 2c 30 29 3a 70 69 6e  |iLight(p%,0):pin|
00005c30  66 6f 25 28 70 25 2c 39  29 3d 30 0d 28 28 19 20  |fo%(p%,9)=0.((. |
00005c40  e7 20 70 69 6e 66 6f 25  28 70 25 2c 37 29 3c 3e  |. pinfo%(p%,7)<>|
00005c50  76 25 20 8c 0d 28 32 16  20 20 f2 44 65 48 69 4c  |v% ..(2.  .DeHiL|
00005c60  69 67 68 74 28 70 25 2c  31 29 0d 28 3c 15 20 20  |ight(p%,1).(<.  |
00005c70  70 69 6e 66 6f 25 28 70  25 2c 37 29 3d 76 25 0d  |pinfo%(p%,7)=v%.|
00005c80  28 46 14 20 20 f2 48 69  4c 69 67 68 74 28 70 25  |(F.  .HiLight(p%|
00005c90  2c 31 29 0d 28 50 06 20  cd 0d 28 5a 05 cd 0d 28  |,1).(P. ..(Z...(|
00005ca0  64 05 e1 0d 28 6e 05 3a  0d 28 78 17 dd 20 f2 44  |d...(n.:.(x.. .D|
00005cb0  65 48 69 4c 69 67 68 74  28 70 25 2c 61 25 29 0d  |eHiLight(p%,a%).|
00005cc0  28 82 08 ea 20 63 25 0d  28 8c 0b c8 8e 20 61 25  |(... c%.(.... a%|
00005cd0  20 ca 0d 28 96 3d 20 c9  20 30 3a 63 25 3d 70 69  | ..(.= . 0:c%=pi|
00005ce0  6e 66 6f 25 28 70 25 2c  36 29 3a 70 69 6e 66 6f  |nfo%(p%,6):pinfo|
00005cf0  25 28 70 25 2c 36 29 3d  30 3a f2 55 70 64 61 74  |%(p%,6)=0:.Updat|
00005d00  65 53 70 61 63 65 28 70  25 2c 63 25 2c 30 29 0d  |eSpace(p%,c%,0).|
00005d10  28 a0 3d 20 c9 20 31 3a  63 25 3d 70 69 6e 66 6f  |(.= . 1:c%=pinfo|
00005d20  25 28 70 25 2c 37 29 3a  70 69 6e 66 6f 25 28 70  |%(p%,7):pinfo%(p|
00005d30  25 2c 37 29 3d 30 3a f2  55 70 64 61 74 65 53 70  |%,7)=0:.UpdateSp|
00005d40  61 63 65 28 70 25 2c 63  25 2c 31 29 0d 28 aa 3d  |ace(p%,c%,1).(.=|
00005d50  20 c9 20 32 3a 63 25 3d  70 69 6e 66 6f 25 28 70  | . 2:c%=pinfo%(p|
00005d60  25 2c 36 29 3a 70 69 6e  66 6f 25 28 70 25 2c 36  |%,6):pinfo%(p%,6|
00005d70  29 3d 30 3a f2 55 70 64  61 74 65 53 70 61 63 65  |)=0:.UpdateSpace|
00005d80  28 70 25 2c 63 25 2c 30  29 0d 28 b4 40 20 20 20  |(p%,c%,0).(.@   |
00005d90  20 20 20 20 20 63 25 3d  70 69 6e 66 6f 25 28 70  |     c%=pinfo%(p|
00005da0  25 2c 37 29 3a 70 69 6e  66 6f 25 28 70 25 2c 37  |%,7):pinfo%(p%,7|
00005db0  29 3d 30 3a f2 55 70 64  61 74 65 53 70 61 63 65  |)=0:.UpdateSpace|
00005dc0  28 70 25 2c 63 25 2c 31  29 0d 28 be 05 cb 0d 28  |(p%,c%,1).(....(|
00005dd0  c8 05 e1 0d 28 d2 05 3a  0d 28 dc 15 dd 20 f2 48  |....(..:.(... .H|
00005de0  69 4c 69 67 68 74 28 70  25 2c 61 25 29 0d 28 e6  |iLight(p%,a%).(.|
00005df0  0b c8 8e 20 61 25 20 ca  0d 28 f0 28 20 c9 20 30  |... a% ..(.( . 0|
00005e00  3a f2 55 70 64 61 74 65  53 70 61 63 65 28 70 25  |:.UpdateSpace(p%|
00005e10  2c 70 69 6e 66 6f 25 28  70 25 2c 36 29 2c 30 29  |,pinfo%(p%,6),0)|
00005e20  0d 28 fa 28 20 c9 20 31  3a f2 55 70 64 61 74 65  |.(.( . 1:.Update|
00005e30  53 70 61 63 65 28 70 25  2c 70 69 6e 66 6f 25 28  |Space(p%,pinfo%(|
00005e40  70 25 2c 37 29 2c 31 29  0d 29 04 28 20 c9 20 32  |p%,7),1).).( . 2|
00005e50  3a f2 55 70 64 61 74 65  53 70 61 63 65 28 70 25  |:.UpdateSpace(p%|
00005e60  2c 70 69 6e 66 6f 25 28  70 25 2c 36 29 2c 30 29  |,pinfo%(p%,6),0)|
00005e70  0d 29 0e 2b 20 20 20 20  20 20 20 20 f2 55 70 64  |.).+        .Upd|
00005e80  61 74 65 53 70 61 63 65  28 70 25 2c 70 69 6e 66  |ateSpace(p%,pinf|
00005e90  6f 25 28 70 25 2c 37 29  2c 31 29 0d 29 18 05 cb  |o%(p%,7),1).)...|
00005ea0  0d 29 22 05 e1 0d 29 2c  05 3a 0d 29 36 1c dd 20  |.)"...),.:.)6.. |
00005eb0  f2 55 70 64 61 74 65 53  70 61 63 65 28 70 25 2c  |.UpdateSpace(p%,|
00005ec0  73 25 2c 64 25 29 0d 29  40 0e e7 20 73 25 3d 30  |s%,d%).)@.. s%=0|
00005ed0  20 8c 20 e1 0d 29 4a 2b  ea 20 78 25 2c 79 25 2c  | . ..)J+. x%,y%,|
00005ee0  6c 25 2c 77 64 25 2c 61  25 2c 78 31 25 2c 79 31  |l%,wd%,a%,x1%,y1|
00005ef0  25 2c 78 32 25 2c 79 32  25 2c 6d 6f 72 65 25 0d  |%,x2%,y2%,more%.|
00005f00  29 54 18 f2 53 70 61 63  65 49 6e 66 6f 28 70 25  |)T..SpaceInfo(p%|
00005f10  2c 73 25 2c 64 25 29 0d  29 5e 1d 78 31 25 3d 78  |,s%,d%).)^.x1%=x|
00005f20  25 2a 32 30 2b 32 30 3a  79 31 25 3d 79 25 2a 2d  |%*20+20:y1%=y%*-|
00005f30  34 30 2d 34 0d 29 68 0b  c8 8e 20 64 25 20 ca 0d  |40-4.)h... d% ..|
00005f40  29 72 23 20 c9 20 30 3a  78 32 25 3d 78 31 25 2b  |)r# . 0:x2%=x1%+|
00005f50  6c 25 2a 32 30 2b 32 3a  79 32 25 3d 79 31 25 2d  |l%*20+2:y2%=y1%-|
00005f60  34 34 0d 29 7c 23 20 c9  20 31 3a 78 32 25 3d 78  |44.)|# . 1:x2%=x|
00005f70  31 25 2b 32 32 3a 79 32  25 3d 79 31 25 2d 6c 25  |1%+22:y2%=y1%-l%|
00005f80  2a 34 30 2d 34 0d 29 86  05 cb 0d 29 90 15 e3 20  |*40-4.)....)... |
00005f90  61 25 3d 30 20 b8 20 6e  75 6d 77 69 6e 64 25 0d  |a%=0 . numwind%.|
00005fa0  29 9a 23 20 e7 20 77 69  6e 64 25 28 61 25 2c 31  |).# . wind%(a%,1|
00005fb0  29 3d 70 25 20 80 20 77  75 73 65 25 28 61 25 29  |)=p% . wuse%(a%)|
00005fc0  20 8c 0d 29 a4 16 20 20  62 25 21 30 3d 77 69 6e  | ..)..  b%!0=win|
00005fd0  64 25 28 61 25 2c 30 29  0d 29 ae 0e 20 20 62 25  |d%(a%,0).)..  b%|
00005fe0  21 34 3d 78 31 25 0d 29  b8 0e 20 20 62 25 21 38  |!4=x1%.)..  b%!8|
00005ff0  3d 79 32 25 0d 29 c2 0f  20 20 62 25 21 31 32 3d  |=y2%.)..  b%!12=|
00006000  78 32 25 0d 29 cc 0f 20  20 62 25 21 31 36 3d 79  |x2%.)..  b%!16=y|
00006010  31 25 0d 29 d6 1b 20 20  c8 99 20 26 34 30 30 43  |1%.)..  .. &400C|
00006020  39 2c 2c 62 25 20 b8 20  6d 6f 72 65 25 0d 29 e0  |9,,b% . more%.).|
00006030  0e 20 20 c8 95 20 6d 6f  72 65 25 0d 29 ea 17 20  |.  .. more%.).. |
00006040  20 20 f2 57 69 6e 64 52  65 63 74 28 61 25 2c 62  |  .WindRect(a%,b|
00006050  25 29 0d 29 f4 1c 20 20  20 c8 99 20 26 34 30 30  |%).)..   .. &400|
00006060  43 41 2c 2c 62 25 20 b8  20 6d 6f 72 65 25 0d 29  |CA,,b% . more%.)|
00006070  fe 07 20 20 ce 0d 2a 08  06 20 cd 0d 2a 12 05 ed  |..  ..*.. ..*...|
00006080  0d 2a 1c 05 e1 0d 2a 26  05 3a 0d 2a 30 20 dd 20  |.*....*&.:.*0 . |
00006090  f2 53 70 61 63 65 49 6e  66 6f 28 70 25 2c 73 70  |.SpaceInfo(p%,sp|
000060a0  61 63 65 25 2c 64 69 72  25 29 0d 2a 3a 0b ea 20  |ace%,dir%).*:.. |
000060b0  61 64 64 72 25 0d 2a 44  15 61 64 64 72 25 3d 70  |addr%.*D.addr%=p|
000060c0  75 7a 7a 69 6e 25 28 70  25 29 0d 2a 4e 0d c8 8e  |uzzin%(p%).*N...|
000060d0  20 64 69 72 25 20 ca 0d  2a 58 1d 20 c9 20 30 3a  | dir% ..*X. . 0:|
000060e0  61 64 64 72 25 3d 61 64  64 72 25 2b 61 64 64 72  |addr%=addr%+addr|
000060f0  25 21 32 34 0d 2a 62 1d  20 c9 20 31 3a 61 64 64  |%!24.*b. . 1:add|
00006100  72 25 3d 61 64 64 72 25  2b 61 64 64 72 25 21 32  |r%=addr%+addr%!2|
00006110  38 0d 2a 6c 05 cb 0d 2a  76 0c 61 64 64 72 25 2b  |8.*l...*v.addr%+|
00006120  3d 34 0d 2a 80 1a 61 64  64 72 25 3d 61 64 64 72  |=4.*..addr%=addr|
00006130  25 2b 73 70 61 63 65 25  2a 38 2d 38 0d 2a 8a 30  |%+space%*8-8.*.0|
00006140  78 25 3d 61 64 64 72 25  3f 30 3a 79 25 3d 61 64  |x%=addr%?0:y%=ad|
00006150  64 72 25 3f 31 3a 6c 25  3d 61 64 64 72 25 3f 32  |dr%?1:l%=addr%?2|
00006160  3a 77 64 25 3d 61 64 64  72 25 21 34 0d 2a 94 05  |:wd%=addr%!4.*..|
00006170  e1 0d 2a 9e 05 3a 0d 2a  a8 1d dd 20 f2 57 6f 72  |..*..:.*... .Wor|
00006180  64 43 6c 69 63 6b 28 77  25 2c 63 25 2c 61 64 64  |dClick(w%,c%,add|
00006190  72 25 29 0d 2a b2 30 ea  20 70 77 25 2c 70 25 2c  |r%).*.0. pw%,p%,|
000061a0  61 64 64 72 31 25 2c 61  64 64 72 32 25 2c 78 25  |addr1%,addr2%,x%|
000061b0  2c 79 25 2c 61 64 64 72  33 25 2c 61 25 2c 6e 25  |,y%,addr3%,a%,n%|
000061c0  2c 66 25 0d 2a bc 25 70  77 25 3d 77 69 6e 64 25  |,f%.*.%pw%=wind%|
000061d0  28 77 25 2c 32 30 29 3a  70 25 3d 70 77 6f 72 64  |(w%,20):p%=pword|
000061e0  25 28 70 77 25 2c 31 29  0d 2a c6 17 e7 20 28 61  |%(pw%,1).*... (a|
000061f0  64 64 72 25 21 38 20 80  20 32 29 3d 32 20 8c 0d  |ddr%!8 . 2)=2 ..|
00006200  2a d0 29 20 f2 43 72 65  61 74 65 4d 53 74 72 75  |*.) .CreateMStru|
00006210  63 74 28 32 2c 61 64 64  72 25 21 30 2d 36 34 2c  |ct(2,addr%!0-64,|
00006220  61 64 64 72 25 21 34 29  0d 2a da 0e 20 6d 65 6e  |addr%!4).*.. men|
00006230  75 77 25 3d 77 25 0d 2a  e4 06 20 e1 0d 2a ee 05  |uw%=w%.*.. ..*..|
00006240  cd 0d 2a f8 35 e7 20 63  25 3d 70 77 6f 72 64 69  |..*.5. c%=pwordi|
00006250  63 6f 6e 73 74 25 2b 70  77 25 2a 33 20 8c 20 f2  |const%+pw%*3 . .|
00006260  43 68 57 6f 72 64 4c 65  6e 28 2d 31 2c 70 77 25  |ChWordLen(-1,pw%|
00006270  2c 77 25 29 3a e1 0d 2b  02 36 e7 20 63 25 3d 70  |,w%):..+.6. c%=p|
00006280  77 6f 72 64 69 63 6f 6e  73 74 25 2b 70 77 25 2a  |wordiconst%+pw%*|
00006290  33 2b 31 20 8c 20 f2 43  68 57 6f 72 64 4c 65 6e  |3+1 . .ChWordLen|
000062a0  28 31 2c 70 77 25 2c 77  25 29 3a e1 0d 2b 0c 19  |(1,pw%,w%):..+..|
000062b0  78 25 3d 61 64 64 72 25  21 30 3a 79 25 3d 61 64  |x%=addr%!0:y%=ad|
000062c0  64 72 25 21 34 0d 2b 16  23 21 62 32 25 3d 77 69  |dr%!4.+.#!b2%=wi|
000062d0  6e 64 25 28 77 25 2c 30  29 3a c8 99 20 26 34 30  |nd%(w%,0):.. &40|
000062e0  30 43 42 2c 2c 62 32 25  0d 2b 20 18 78 25 3d 78  |0CB,,b2%.+ .x%=x|
000062f0  25 2d 28 62 32 25 21 34  2d 62 32 25 21 32 30 29  |%-(b2%!4-b2%!20)|
00006300  0d 2b 2a 30 79 25 3d 79  25 2d 28 62 32 25 21 31  |.+*0y%=y%-(b2%!1|
00006310  36 2d 62 32 25 21 32 34  29 3a 79 25 3d 28 28 79  |6-b2%!24):y%=((y|
00006320  25 2b 33 36 29 20 81 20  34 30 29 2a 2d 31 2d 31  |%+36) . 40)*-1-1|
00006330  0d 2b 34 2d e7 20 78 25  3c 70 77 6f 72 64 25 28  |.+4-. x%<pword%(|
00006340  70 77 25 2c 33 29 20 84  20 78 25 3e 70 77 6f 72  |pw%,3) . x%>pwor|
00006350  64 25 28 70 77 25 2c 34  29 20 8c 20 e1 0d 2b 3e  |d%(pw%,4) . ..+>|
00006360  0e e7 20 79 25 3c 30 20  8c 20 e1 0d 2b 48 1a e7  |.. y%<0 . ..+H..|
00006370  20 79 25 3e 70 77 6f 72  64 25 28 70 77 25 2c 35  | y%>pword%(pw%,5|
00006380  29 20 8c 20 e1 0d 2b 52  17 e7 20 28 61 64 64 72  |) . ..+R.. (addr|
00006390  25 21 38 20 80 20 31 29  3d 31 20 8c 0d 2b 5c 33  |%!8 . 1)=1 ..+\3|
000063a0  20 61 64 64 72 31 25 3d  a4 57 6f 72 64 41 64 64  | addr1%=.WordAdd|
000063b0  72 28 70 77 6f 72 64 25  28 70 77 25 2c 32 29 2c  |r(pword%(pw%,2),|
000063c0  79 25 2c 70 75 7a 7a 69  6e 25 28 70 25 29 29 0d  |y%,puzzin%(p%)).|
000063d0  2b 66 1c 20 e7 20 28 3f  61 64 64 72 31 25 20 80  |+f. . (?addr1% .|
000063e0  20 31 32 38 29 3d 30 20  8c 20 e1 0d 2b 70 1a 20  | 128)=0 . ..+p. |
000063f0  3f 61 64 64 72 31 25 3d  3f 61 64 64 72 31 25 20  |?addr1%=?addr1% |
00006400  82 20 31 32 38 0d 2b 7a  1c 20 f2 55 70 64 61 74  |. 128.+z. .Updat|
00006410  65 57 57 69 6e 64 28 77  25 2c 70 77 25 2c 79 25  |eWWind(w%,pw%,y%|
00006420  29 0d 2b 84 17 20 61 64  64 72 31 25 3d 70 75 7a  |).+.. addr1%=puz|
00006430  7a 69 6e 25 28 70 25 29  0d 2b 8e 1c 20 61 64 64  |zin%(p%).+.. add|
00006440  72 32 25 3d 61 64 64 72  31 25 2b 61 64 64 72 31  |r2%=addr1%+addr1|
00006450  25 21 32 34 0d 2b 98 24  20 6e 25 3d 61 64 64 72  |%!24.+.$ n%=addr|
00006460  32 25 21 30 3a 61 64 64  72 32 25 2b 3d 34 3a 66  |2%!0:addr2%+=4:f|
00006470  25 3d 30 3a 61 25 3d 30  0d 2b a2 15 20 c8 95 20  |%=0:a%=0.+.. .. |
00006480  61 25 3c 6e 25 20 80 20  ac 28 66 25 29 0d 2b ac  |a%<n% . .(f%).+.|
00006490  0b 20 20 61 25 2b 3d 31  0d 2b b6 35 20 20 e7 20  |.  a%+=1.+.5  . |
000064a0  28 61 64 64 72 32 25 21  34 3e 3e 3e 31 36 29 3d  |(addr2%!4>>>16)=|
000064b0  79 25 20 80 20 61 64 64  72 32 25 3f 32 3d 70 77  |y% . addr2%?2=pw|
000064c0  6f 72 64 25 28 70 77 25  2c 32 29 20 8c 0d 2b c0  |ord%(pw%,2) ..+.|
000064d0  0b 20 20 20 66 25 3d b9  0d 2b ca 20 20 20 20 61  |.   f%=..+.    a|
000064e0  64 64 72 32 25 3f 36 3d  26 46 46 3a 61 64 64 72  |ddr2%?6=&FF:addr|
000064f0  32 25 3f 37 3d 26 46 46  0d 2b d4 1c 20 20 20 f2  |2%?7=&FF.+..   .|
00006500  55 70 64 61 74 65 53 70  61 63 65 28 70 25 2c 61  |UpdateSpace(p%,a|
00006510  25 2c 30 29 0d 2b de 07  20 20 cd 0d 2b e8 0f 20  |%,0).+..  ..+.. |
00006520  20 61 64 64 72 32 25 2b  3d 38 0d 2b f2 06 20 ce  | addr2%+=8.+.. .|
00006530  0d 2b fc 1c 20 61 64 64  72 32 25 3d 61 64 64 72  |.+.. addr2%=addr|
00006540  31 25 2b 61 64 64 72 31  25 21 32 38 0d 2c 06 24  |1%+addr1%!28.,.$|
00006550  20 6e 25 3d 61 64 64 72  32 25 21 30 3a 61 64 64  | n%=addr2%!0:add|
00006560  72 32 25 2b 3d 34 3a 66  25 3d 30 3a 61 25 3d 30  |r2%+=4:f%=0:a%=0|
00006570  0d 2c 10 15 20 c8 95 20  61 25 3c 6e 25 20 80 20  |.,.. .. a%<n% . |
00006580  ac 28 66 25 29 0d 2c 1a  0b 20 20 61 25 2b 3d 31  |.(f%).,..  a%+=1|
00006590  0d 2c 24 35 20 20 e7 20  28 61 64 64 72 32 25 21  |.,$5  . (addr2%!|
000065a0  34 3e 3e 3e 31 36 29 3d  79 25 20 80 20 61 64 64  |4>>>16)=y% . add|
000065b0  72 32 25 3f 32 3d 70 77  6f 72 64 25 28 70 77 25  |r2%?2=pword%(pw%|
000065c0  2c 32 29 20 8c 0d 2c 2e  0b 20 20 20 66 25 3d b9  |,2) ..,..   f%=.|
000065d0  0d 2c 38 20 20 20 20 61  64 64 72 32 25 3f 36 3d  |.,8    addr2%?6=|
000065e0  26 46 46 3a 61 64 64 72  32 25 3f 37 3d 26 46 46  |&FF:addr2%?7=&FF|
000065f0  0d 2c 42 1c 20 20 20 f2  55 70 64 61 74 65 53 70  |.,B.   .UpdateSp|
00006600  61 63 65 28 70 25 2c 61  25 2c 31 29 0d 2c 4c 07  |ace(p%,a%,1).,L.|
00006610  20 20 cd 0d 2c 56 0f 20  20 61 64 64 72 32 25 2b  |  ..,V.  addr2%+|
00006620  3d 38 0d 2c 60 06 20 ce  0d 2c 6a 06 20 e1 0d 2c  |=8.,`. ..,j. ..,|
00006630  74 05 cd 0d 2c 7e 24 e7  20 70 69 6e 66 6f 25 28  |t...,~$. pinfo%(|
00006640  70 25 2c 39 29 3d 70 69  6e 66 6f 25 28 70 25 2c  |p%,9)=pinfo%(p%,|
00006650  31 30 29 20 8c 20 e1 0d  2c 88 32 61 64 64 72 31  |10) . ..,.2addr1|
00006660  25 3d a4 57 6f 72 64 41  64 64 72 28 70 77 6f 72  |%=.WordAddr(pwor|
00006670  64 25 28 70 77 25 2c 32  29 2c 79 25 2c 70 75 7a  |d%(pw%,2),y%,puz|
00006680  7a 69 6e 25 28 70 25 29  29 0d 2c 92 19 e7 20 28  |zin%(p%)).,... (|
00006690  3f 61 64 64 72 31 25 20  80 20 31 32 38 29 20 8c  |?addr1% . 128) .|
000066a0  20 e1 0d 2c 9c 22 e7 20  70 69 6e 66 6f 25 28 70  | ..,.". pinfo%(p|
000066b0  25 2c 39 29 3d 70 77 6f  72 64 25 28 70 77 25 2c  |%,9)=pword%(pw%,|
000066c0  32 29 20 8c 0d 2c a6 31  20 61 64 64 72 32 25 3d  |2) ..,.1 addr2%=|
000066d0  a4 43 6c 75 65 41 64 64  72 28 70 69 6e 66 6f 25  |.ClueAddr(pinfo%|
000066e0  28 70 25 2c 36 29 2c 30  2c 70 75 7a 7a 69 6e 25  |(p%,6),0,puzzin%|
000066f0  28 70 25 29 29 0d 2c b0  1f 20 41 25 3d 70 75 7a  |(p%)).,.. A%=puz|
00006700  7a 69 6e 25 28 70 25 29  3a d6 20 43 68 61 6e 67  |zin%(p%):. Chang|
00006710  65 4a 69 67 0d 2c ba 39  20 41 25 3d 61 64 64 72  |eJig.,.9 A%=addr|
00006720  32 25 3f 30 3a 42 25 3d  61 64 64 72 32 25 3f 31  |2%?0:B%=addr2%?1|
00006730  3a 43 25 3d 61 64 64 72  32 25 3f 32 3a 44 25 3d  |:C%=addr2%?2:D%=|
00006740  61 64 64 72 31 25 3a d6  20 48 46 69 74 0d 2c c4  |addr1%:. HFit.,.|
00006750  15 20 e7 20 21 66 69 74  3d 30 20 8c 20 ef 20 37  |. . !fit=0 . . 7|
00006760  3a e1 0d 2c ce 1f 20 e7  20 28 61 64 64 72 32 25  |:..,.. . (addr2%|
00006770  21 34 3e 3e 3e 31 36 29  3c 3e 26 46 46 46 46 20  |!4>>>16)<>&FFFF |
00006780  8c 0d 2c d8 47 20 20 61  64 64 72 33 25 3d a4 57  |..,.G  addr3%=.W|
00006790  6f 72 64 41 64 64 72 28  70 77 6f 72 64 25 28 70  |ordAddr(pword%(p|
000067a0  77 25 2c 32 29 2c 61 64  64 72 32 25 3f 36 2b 61  |w%,2),addr2%?6+a|
000067b0  64 64 72 32 25 3f 37 2a  32 35 36 2c 70 75 7a 7a  |ddr2%?7*256,puzz|
000067c0  69 6e 25 28 70 25 29 29  0d 2c e2 1b 20 20 3f 61  |in%(p%)).,..  ?a|
000067d0  64 64 72 33 25 3d 3f 61  64 64 72 33 25 20 82 20  |ddr3%=?addr3% . |
000067e0  31 32 38 0d 2c ec 30 20  20 f2 55 70 64 61 74 65  |128.,.0  .Update|
000067f0  57 57 69 6e 64 28 77 25  2c 70 77 25 2c 61 64 64  |WWind(w%,pw%,add|
00006800  72 32 25 3f 36 2b 61 64  64 72 32 25 3f 37 2a 32  |r2%?6+addr2%?7*2|
00006810  35 36 29 0d 2c f6 06 20  cd 0d 2d 00 16 20 61 64  |56).,.. ..-.. ad|
00006820  64 72 32 25 3f 36 3d 79  25 20 83 20 32 35 36 0d  |dr2%?6=y% . 256.|
00006830  2d 0a 16 20 61 64 64 72  32 25 3f 37 3d 79 25 20  |-.. addr2%?7=y% |
00006840  81 20 32 35 36 0d 2d 14  1a 20 3f 61 64 64 72 31  |. 256.-.. ?addr1|
00006850  25 3d 3f 61 64 64 72 31  25 20 82 20 31 32 38 0d  |%=?addr1% . 128.|
00006860  2d 1e 24 20 f2 55 70 64  61 74 65 53 70 61 63 65  |-.$ .UpdateSpace|
00006870  28 70 25 2c 70 69 6e 66  6f 25 28 70 25 2c 36 29  |(p%,pinfo%(p%,6)|
00006880  2c 30 29 0d 2d 28 1c 20  f2 55 70 64 61 74 65 57  |,0).-(. .UpdateW|
00006890  57 69 6e 64 28 77 25 2c  70 77 25 2c 79 25 29 0d  |Wind(w%,pw%,y%).|
000068a0  2d 32 05 cc 0d 2d 3c 24  20 e7 20 70 69 6e 66 6f  |-2...-<$ . pinfo|
000068b0  25 28 70 25 2c 31 30 29  3d 70 77 6f 72 64 25 28  |%(p%,10)=pword%(|
000068c0  70 77 25 2c 32 29 20 8c  0d 2d 46 32 20 20 61 64  |pw%,2) ..-F2  ad|
000068d0  64 72 32 25 3d a4 43 6c  75 65 41 64 64 72 28 70  |dr2%=.ClueAddr(p|
000068e0  69 6e 66 6f 25 28 70 25  2c 37 29 2c 31 2c 70 75  |info%(p%,7),1,pu|
000068f0  7a 7a 69 6e 25 28 70 25  29 29 0d 2d 50 20 20 20  |zzin%(p%)).-P   |
00006900  41 25 3d 70 75 7a 7a 69  6e 25 28 70 25 29 3a d6  |A%=puzzin%(p%):.|
00006910  20 43 68 61 6e 67 65 4a  69 67 0d 2d 5a 3a 20 20  | ChangeJig.-Z:  |
00006920  41 25 3d 61 64 64 72 32  25 3f 30 3a 42 25 3d 61  |A%=addr2%?0:B%=a|
00006930  64 64 72 32 25 3f 31 3a  43 25 3d 61 64 64 72 32  |ddr2%?1:C%=addr2|
00006940  25 3f 32 3a 44 25 3d 61  64 64 72 31 25 3a d6 20  |%?2:D%=addr1%:. |
00006950  56 46 69 74 0d 2d 64 16  20 20 e7 20 21 66 69 74  |VFit.-d.  . !fit|
00006960  3d 30 20 8c 20 ef 20 37  3a e1 0d 2d 6e 20 20 20  |=0 . . 7:..-n   |
00006970  e7 20 28 61 64 64 72 32  25 21 34 3e 3e 3e 31 36  |. (addr2%!4>>>16|
00006980  29 3c 3e 26 46 46 46 46  20 8c 0d 2d 78 48 20 20  |)<>&FFFF ..-xH  |
00006990  20 61 64 64 72 33 25 3d  a4 57 6f 72 64 41 64 64  | addr3%=.WordAdd|
000069a0  72 28 70 77 6f 72 64 25  28 70 77 25 2c 32 29 2c  |r(pword%(pw%,2),|
000069b0  61 64 64 72 32 25 3f 36  2b 61 64 64 72 32 25 3f  |addr2%?6+addr2%?|
000069c0  37 2a 32 35 36 2c 70 75  7a 7a 69 6e 25 28 70 25  |7*256,puzzin%(p%|
000069d0  29 29 0d 2d 82 1c 20 20  20 3f 61 64 64 72 33 25  |)).-..   ?addr3%|
000069e0  3d 3f 61 64 64 72 33 25  20 82 20 31 32 38 0d 2d  |=?addr3% . 128.-|
000069f0  8c 31 20 20 20 f2 55 70  64 61 74 65 57 57 69 6e  |.1   .UpdateWWin|
00006a00  64 28 77 25 2c 70 77 25  2c 61 64 64 72 32 25 3f  |d(w%,pw%,addr2%?|
00006a10  36 2b 61 64 64 72 32 25  3f 37 2a 32 35 36 29 0d  |6+addr2%?7*256).|
00006a20  2d 96 07 20 20 cd 0d 2d  a0 17 20 20 61 64 64 72  |-..  ..-..  addr|
00006a30  32 25 3f 36 3d 79 25 20  83 20 32 35 36 0d 2d aa  |2%?6=y% . 256.-.|
00006a40  17 20 20 61 64 64 72 32  25 3f 37 3d 79 25 20 81  |.  addr2%?7=y% .|
00006a50  20 32 35 36 0d 2d b4 1b  20 20 3f 61 64 64 72 31  | 256.-..  ?addr1|
00006a60  25 3d 3f 61 64 64 72 31  25 20 82 20 31 32 38 0d  |%=?addr1% . 128.|
00006a70  2d be 25 20 20 f2 55 70  64 61 74 65 53 70 61 63  |-.%  .UpdateSpac|
00006a80  65 28 70 25 2c 70 69 6e  66 6f 25 28 70 25 2c 37  |e(p%,pinfo%(p%,7|
00006a90  29 2c 31 29 0d 2d c8 1d  20 20 f2 55 70 64 61 74  |),1).-..  .Updat|
00006aa0  65 57 57 69 6e 64 28 77  25 2c 70 77 25 2c 79 25  |eWWind(w%,pw%,y%|
00006ab0  29 0d 2d d2 06 20 cd 0d  2d dc 05 cd 0d 2d e6 05  |).-.. ..-....-..|
00006ac0  e1 0d 2d f0 05 cc 0d 2d  fa 06 20 cc 0d 2e 04 07  |..-....-.. .....|
00006ad0  20 20 e1 0d 2e 0e 06 20  cd 0d 2e 18 05 cd 0d 2e  |  ..... ........|
00006ae0  22 05 e1 0d 2e 2c 05 3a  0d 2e 36 20 f4 20 41 20  |"....,.:..6 . A |
00006af0  70 72 6f 63 65 64 75 72  65 20 77 69 74 68 20 61  |procedure with a|
00006b00  20 73 74 75 74 74 65 72  0d 2e 40 1d dd 20 f2 55  | stutter..@.. .U|
00006b10  70 64 61 74 65 57 57 69  6e 64 28 77 25 2c 70 77  |pdateWWind(w%,pw|
00006b20  25 2c 61 25 29 0d 2e 4a  11 ea 20 63 25 2c 70 25  |%,a%)..J.. c%,p%|
00006b30  2c 6d 6f 72 65 25 0d 2e  54 14 70 25 3d 70 77 6f  |,more%..T.p%=pwo|
00006b40  72 64 25 28 70 77 25 2c  31 29 0d 2e 5e 15 e3 20  |rd%(pw%,1)..^.. |
00006b50  63 25 3d 30 20 b8 20 6e  75 6d 77 69 6e 64 25 0d  |c%=0 . numwind%.|
00006b60  2e 68 2e 20 e7 20 77 69  6e 64 25 28 63 25 2c 31  |.h. . wind%(c%,1|
00006b70  29 3d 70 25 2b 31 2b 6d  61 78 70 75 7a 7a 25 20  |)=p%+1+maxpuzz% |
00006b80  80 20 77 75 73 65 25 28  63 25 29 20 8c 0d 2e 72  |. wuse%(c%) ...r|
00006b90  16 20 20 62 25 21 30 3d  77 69 6e 64 25 28 63 25  |.  b%!0=wind%(c%|
00006ba0  2c 30 29 0d 2e 7c 4d 20  20 62 25 21 34 3d 70 77  |,0)..|M  b%!4=pw|
00006bb0  6f 72 64 25 28 70 77 25  2c 33 29 3a 62 25 21 38  |ord%(pw%,3):b%!8|
00006bc0  3d 28 61 25 2b 32 29 2a  2d 34 30 2d 33 32 3a 62  |=(a%+2)*-40-32:b|
00006bd0  25 21 31 32 3d 70 77 6f  72 64 25 28 70 77 25 2c  |%!12=pword%(pw%,|
00006be0  34 29 3a 62 25 21 31 36  3d 62 25 21 38 2b 34 30  |4):b%!16=b%!8+40|
00006bf0  0d 2e 86 1b 20 20 c8 99  20 26 34 30 30 43 39 2c  |....  .. &400C9,|
00006c00  2c 62 25 20 b8 20 6d 6f  72 65 25 0d 2e 90 0e 20  |,b% . more%.... |
00006c10  20 c8 95 20 6d 6f 72 65  25 0d 2e 9a 17 20 20 20  | .. more%....   |
00006c20  f2 57 69 6e 64 52 65 63  74 28 63 25 2c 62 25 29  |.WindRect(c%,b%)|
00006c30  0d 2e a4 1c 20 20 20 c8  99 20 26 34 30 30 43 41  |....   .. &400CA|
00006c40  2c 2c 62 25 20 b8 20 6d  6f 72 65 25 0d 2e ae 07  |,,b% . more%....|
00006c50  20 20 ce 0d 2e b8 06 20  cd 0d 2e c2 05 ed 0d 2e  |  ..... ........|
00006c60  cc 05 e1 0d 2e d6 05 e1  0d 2e e0 05 3a 0d 2e ea  |............:...|
00006c70  1b dd 20 f2 43 68 57 6f  72 64 4c 65 6e 28 64 25  |.. .ChWordLen(d%|
00006c80  2c 70 77 25 2c 77 25 29  0d 2e f4 2d ea 20 61 64  |,pw%,w%)...-. ad|
00006c90  64 72 31 25 2c 61 64 64  72 32 25 2c 69 63 73 74  |dr1%,addr2%,icst|
00006ca0  25 2c 66 25 2c 6e 25 2c  6c 25 2c 6d 68 25 2c 77  |%,f%,n%,l%,mh%,w|
00006cb0  66 25 2c 70 25 0d 2e fe  1c 69 63 73 74 25 3d 70  |f%,p%....icst%=p|
00006cc0  77 6f 72 64 69 63 6f 6e  73 74 25 2b 70 77 25 2a  |wordiconst%+pw%*|
00006cd0  33 0d 2f 08 1d 70 25 3d  77 69 6e 64 25 28 77 25  |3./..p%=wind%(w%|
00006ce0  2c 31 29 2d 6d 61 78 70  75 7a 7a 25 2d 31 0d 2f  |,1)-maxpuzz%-1./|
00006cf0  12 2e 61 64 64 72 31 25  3d 70 75 7a 7a 69 6e 25  |..addr1%=puzzin%|
00006d00  28 70 25 29 3a 61 64 64  72 32 25 3d 61 64 64 72  |(p%):addr2%=addr|
00006d10  31 25 2b 61 64 64 72 31  25 21 31 36 0d 2f 1c 20  |1%+addr1%!16./. |
00006d20  6e 25 3d 61 64 64 72 32  25 21 30 3a 6c 25 3d 70  |n%=addr2%!0:l%=p|
00006d30  77 6f 72 64 25 28 70 77  25 2c 32 29 0d 2f 26 05  |word%(pw%,2)./&.|
00006d40  f5 0d 2f 30 0b 20 6c 25  2b 3d 64 25 0d 2f 3a 13  |../0. l%+=d%./:.|
00006d50  20 e7 20 6c 25 3d 31 20  8c 20 6c 25 3d 6e 25 0d  | . l%=1 . l%=n%.|
00006d60  2f 44 13 20 e7 20 6c 25  3e 6e 25 20 8c 20 6c 25  |/D. . l%>n% . l%|
00006d70  3d 32 0d 2f 4e 1f 20 e7  20 61 64 64 72 32 25 21  |=2./N. . addr2%!|
00006d80  28 6c 25 2a 34 2d 34 29  3e 30 20 8c 20 66 25 3d  |(l%*4-4)>0 . f%=|
00006d90  b9 0d 2f 58 08 fd 20 66  25 0d 2f 62 14 70 77 6f  |../X.. f%./b.pwo|
00006da0  72 64 25 28 70 77 25 2c  32 29 3d 6c 25 0d 2f 6c  |rd%(pw%,2)=l%./l|
00006db0  25 69 63 6f 6e 24 28 69  63 73 74 25 2b 32 2c 30  |%icon$(icst%+2,0|
00006dc0  29 3d c3 28 6c 25 29 2b  22 20 4c 65 74 74 65 72  |)=.(l%)+" Letter|
00006dd0  73 22 0d 2f 76 2f 24 64  61 74 61 25 28 69 63 6f  |s"./v/$data%(ico|
00006de0  6e 25 28 69 63 73 74 25  2b 32 2c 37 29 2c 30 29  |n%(icst%+2,7),0)|
00006df0  3d 69 63 6f 6e 24 28 69  63 73 74 25 2b 32 2c 30  |=icon$(icst%+2,0|
00006e00  29 0d 2f 80 23 6d 68 25  3d 21 28 61 64 64 72 31  |)./.#mh%=!(addr1|
00006e10  25 2b 61 64 64 72 32 25  21 28 6c 25 2a 34 2d 34  |%+addr2%!(l%*4-4|
00006e20  29 29 2b 32 0d 2f 8a 1c  77 69 6e 64 25 28 77 25  |))+2./..wind%(w%|
00006e30  2c 39 29 3d 2d 28 6d 68  25 2a 34 30 2b 31 36 29  |,9)=-(mh%*40+16)|
00006e40  0d 2f 94 31 62 25 21 30  3d 77 69 6e 64 25 28 77  |./.1b%!0=wind%(w|
00006e50  25 2c 30 29 3a c8 99 20  22 57 69 6d 70 5f 47 65  |%,0):.. "Wimp_Ge|
00006e60  74 57 69 6e 64 6f 77 53  74 61 74 65 22 2c 2c 62  |tWindowState",,b|
00006e70  25 0d 2f 9e 0d 77 66 25  3d 62 25 21 32 38 0d 2f  |%./..wf%=b%!28./|
00006e80  a8 38 77 69 6e 64 25 28  77 25 2c 32 29 3d 62 25  |.8wind%(w%,2)=b%|
00006e90  21 34 3a 77 69 6e 64 25  28 77 25 2c 34 29 3d 62  |!4:wind%(w%,4)=b|
00006ea0  25 21 31 32 3a 77 69 6e  64 25 28 77 25 2c 35 29  |%!12:wind%(w%,5)|
00006eb0  3d 62 25 21 31 36 0d 2f  b2 27 77 69 6e 64 25 28  |=b%!16./.'wind%(|
00006ec0  77 25 2c 33 29 3d 77 69  6e 64 25 28 77 25 2c 35  |w%,3)=wind%(w%,5|
00006ed0  29 2b 77 69 6e 64 25 28  77 25 2c 39 29 0d 2f bc  |)+wind%(w%,9)./.|
00006ee0  1f 77 69 6e 64 25 28 77  25 2c 36 29 3d 30 3a 77  |.wind%(w%,6)=0:w|
00006ef0  69 6e 64 25 28 77 25 2c  37 29 3d 30 0d 2f c6 25  |ind%(w%,7)=0./.%|
00006f00  62 25 21 30 3d 77 69 6e  64 25 28 77 25 2c 38 29  |b%!0=wind%(w%,8)|
00006f10  3a 62 25 21 34 3d 77 69  6e 64 25 28 77 25 2c 39  |:b%!4=wind%(w%,9|
00006f20  29 0d 2f d0 28 62 25 21  38 3d 77 69 6e 64 25 28  |)./.(b%!8=wind%(|
00006f30  77 25 2c 31 30 29 3a 62  25 21 31 32 3d 77 69 6e  |w%,10):b%!12=win|
00006f40  64 25 28 77 25 2c 31 31  29 0d 2f da 26 c8 99 20  |d%(w%,11)./.&.. |
00006f50  22 57 69 6d 70 5f 53 65  74 45 78 74 65 6e 74 22  |"Wimp_SetExtent"|
00006f60  2c 77 69 6e 64 25 28 77  25 2c 30 29 2c 62 25 0d  |,wind%(w%,0),b%.|
00006f70  2f e4 17 f2 4f 70 65 6e  57 69 6e 64 6f 77 28 77  |/...OpenWindow(w|
00006f80  25 2c 77 66 25 29 0d 2f  ee 30 70 77 6f 72 64 25  |%,wf%)./.0pword%|
00006f90  28 70 77 25 2c 33 29 3d  77 69 6e 64 25 28 77 25  |(pw%,3)=wind%(w%|
00006fa0  2c 31 30 29 2f 32 2d 70  77 6f 72 64 25 28 70 77  |,10)/2-pword%(pw|
00006fb0  25 2c 32 29 2a 38 0d 2f  f8 30 70 77 6f 72 64 25  |%,2)*8./.0pword%|
00006fc0  28 70 77 25 2c 34 29 3d  70 77 6f 72 64 25 28 70  |(pw%,4)=pword%(p|
00006fd0  77 25 2c 33 29 2b 70 77  6f 72 64 25 28 70 77 25  |w%,3)+pword%(pw%|
00006fe0  2c 32 29 2a 31 36 0d 30  02 17 70 77 6f 72 64 25  |,2)*16.0..pword%|
00006ff0  28 70 77 25 2c 35 29 3d  6d 68 25 2d 33 0d 30 0c  |(pw%,5)=mh%-3.0.|
00007000  42 c8 99 20 22 57 69 6d  70 5f 46 6f 72 63 65 52  |B.. "Wimp_ForceR|
00007010  65 64 72 61 77 22 2c 77  69 6e 64 25 28 77 25 2c  |edraw",wind%(w%,|
00007020  30 29 2c 30 2c 77 69 6e  64 25 28 77 25 2c 39 29  |0),0,wind%(w%,9)|
00007030  2c 77 69 6e 64 25 28 77  25 2c 31 30 29 2c 30 0d  |,wind%(w%,10),0.|
00007040  30 16 05 e1 0d 30 20 05  3a 0d 30 2a 13 dd 20 f2  |0....0 .:.0*.. .|
00007050  4b 65 79 57 69 6e 64 31  28 61 25 29 0d 30 34 1c  |KeyWind1(a%).04.|
00007060  ea 20 63 25 2c 6e 68 25  2c 6c 68 25 2c 68 25 2c  |. c%,nh%,lh%,h%,|
00007070  6c 25 2c 66 25 2c 69 25  0d 30 3e 14 63 25 3d a4  |l%,f%,i%.0>.c%=.|
00007080  49 4e 75 6d 28 31 2c 61  25 21 34 29 0d 30 48 0b  |INum(1,a%!4).0H.|
00007090  c8 8e 20 63 25 20 ca 0d  30 52 29 20 c9 20 31 31  |.. c% ..0R) . 11|
000070a0  3a 6e 68 25 3d 69 63 6f  6e 25 28 31 32 2c 39 29  |:nh%=icon%(12,9)|
000070b0  3a 6c 68 25 3d 69 63 6f  6e 25 28 31 32 2c 39 29  |:lh%=icon%(12,9)|
000070c0  0d 30 5c 29 20 c9 20 31  32 3a 6e 68 25 3d 69 63  |.0\) . 12:nh%=ic|
000070d0  6f 6e 25 28 31 31 2c 39  29 3a 6c 68 25 3d 69 63  |on%(11,9):lh%=ic|
000070e0  6f 6e 25 28 31 31 2c 39  29 0d 30 66 23 20 7f 3a  |on%(11,9).0f# .:|
000070f0  c8 99 20 22 57 69 6d 70  5f 50 72 6f 63 65 73 73  |.. "Wimp_Process|
00007100  4b 65 79 22 2c 61 25 21  32 34 3a e1 0d 30 70 05  |Key",a%!24:..0p.|
00007110  cb 0d 30 7a 0e c8 8e 20  61 25 21 32 34 20 ca 0d  |..0z... a%!24 ..|
00007120  30 84 0b 20 c9 20 26 30  44 3a 0d 30 8e 0c 20 20  |0.. . &0D:.0..  |
00007130  68 25 3d 6e 68 25 0d 30  98 16 20 20 69 25 3d a4  |h%=nh%.0..  i%=.|
00007140  49 46 6c 61 67 73 28 31  2c 31 34 29 0d 30 a2 22  |IFlags(1,14).0."|
00007150  20 20 e7 20 63 25 3d 31  32 20 80 20 28 69 25 20  |  . c%=12 . (i% |
00007160  80 20 28 31 3c 3c 32 32  29 29 3d 30 20 8c 0d 30  |. (1<<22))=0 ..0|
00007170  ac 17 20 20 20 61 25 21  34 3d 69 63 6f 6e 25 28  |..   a%!4=icon%(|
00007180  31 34 2c 39 29 0d 30 b6  11 20 20 20 61 25 21 38  |14,9).0..   a%!8|
00007190  3d 31 3c 3c 32 31 0d 30  c0 12 20 20 20 61 25 21  |=1<<21.0..   a%!|
000071a0  31 32 3d 31 3c 3c 32 31  0d 30 ca 21 20 20 20 c8  |12=1<<21.0.!   .|
000071b0  99 20 22 57 69 6d 70 5f  53 65 74 49 63 6f 6e 53  |. "Wimp_SetIconS|
000071c0  74 61 74 65 22 2c 2c 61  25 0d 30 d4 15 20 20 20  |tate",,a%.0..   |
000071d0  f2 49 6e 69 74 43 72 65  61 74 65 4a 69 67 0d 30  |.InitCreateJig.0|
000071e0  de 08 20 20 20 e1 0d 30  e8 07 20 20 cc 0d 30 f2  |..   ..0..  ..0.|
000071f0  12 20 20 20 e7 20 63 25  3d 31 32 20 8c 20 e1 0d  |.   . c%=12 . ..|
00007200  30 fc 07 20 20 cd 0d 31  06 12 20 c9 20 26 31 38  |0..  ..1.. . &18|
00007210  45 3a 68 25 3d 6e 68 25  0d 31 10 12 20 c9 20 26  |E:h%=nh%.1.. . &|
00007220  31 38 46 3a 68 25 3d 6c  68 25 0d 31 1a 23 20 7f  |18F:h%=lh%.1.# .|
00007230  3a c8 99 20 22 57 69 6d  70 5f 50 72 6f 63 65 73  |:.. "Wimp_Proces|
00007240  73 4b 65 79 22 2c 61 25  21 32 34 3a e1 0d 31 24  |sKey",a%!24:..1$|
00007250  05 cb 0d 31 2e 2b 6c 25  3d a9 28 24 28 64 61 74  |...1.+l%=.($(dat|
00007260  61 25 28 69 63 6f 6e 25  28 a4 49 4e 75 6d 28 77  |a%(icon%(.INum(w|
00007270  25 2c 68 25 29 2c 37 29  2c 30 29 29 29 0d 31 38  |%,h%),7),0))).18|
00007280  36 c8 99 20 22 57 69 6d  70 5f 53 65 74 43 61 72  |6.. "Wimp_SetCar|
00007290  65 74 50 6f 73 69 74 69  6f 6e 22 2c 77 69 6e 64  |etPosition",wind|
000072a0  25 28 31 2c 30 29 2c 68  25 2c 30 2c 30 2c 2d 31  |%(1,0),h%,0,0,-1|
000072b0  2c 6c 25 0d 31 42 05 e1  0d 31 4c 05 3a 0d 31 56  |,l%.1B...1L.:.1V|
000072c0  1d f4 20 49 74 27 73 20  61 20 62 69 74 20 68 6f  |.. It's a bit ho|
000072d0  74 20 69 6e 20 68 65 72  65 2e 0d 31 60 18 dd 20  |t in here..1`.. |
000072e0  f2 4f 70 65 6e 57 69 6e  64 6f 77 28 77 25 2c 66  |.OpenWindow(w%,f|
000072f0  25 29 0d 31 6a 14 62 25  21 30 3d 77 69 6e 64 25  |%).1j.b%!0=wind%|
00007300  28 77 25 2c 30 29 0d 31  74 25 62 25 21 34 3d 77  |(w%,0).1t%b%!4=w|
00007310  69 6e 64 25 28 77 25 2c  32 29 3a 62 25 21 38 3d  |ind%(w%,2):b%!8=|
00007320  77 69 6e 64 25 28 77 25  2c 33 29 0d 31 7e 27 62  |wind%(w%,3).1~'b|
00007330  25 21 31 32 3d 77 69 6e  64 25 28 77 25 2c 34 29  |%!12=wind%(w%,4)|
00007340  3a 62 25 21 31 36 3d 77  69 6e 64 25 28 77 25 2c  |:b%!16=wind%(w%,|
00007350  35 29 0d 31 88 27 62 25  21 32 30 3d 77 69 6e 64  |5).1.'b%!20=wind|
00007360  25 28 77 25 2c 36 29 3a  62 25 21 32 34 3d 77 69  |%(w%,6):b%!24=wi|
00007370  6e 64 25 28 77 25 2c 37  29 0d 31 92 0c 62 25 21  |nd%(w%,7).1..b%!|
00007380  32 38 3d 66 25 0d 31 9c  1c c8 99 20 22 57 69 6d  |28=f%.1.... "Wim|
00007390  70 5f 4f 70 65 6e 57 69  6e 64 6f 77 22 2c 2c 62  |p_OpenWindow",,b|
000073a0  25 0d 31 a6 05 e1 0d 31  b0 05 3a 0d 31 ba 16 dd  |%.1....1..:.1...|
000073b0  20 f2 57 69 6e 64 52 65  63 74 28 77 25 2c 61 25  | .WindRect(w%,a%|
000073c0  29 0d 31 c4 19 ea 20 77  78 31 25 2c 77 79 31 25  |).1... wx1%,wy1%|
000073d0  2c 77 78 32 25 2c 77 79  32 25 0d 31 ce 34 77 78  |,wx2%,wy2%.1.4wx|
000073e0  31 25 3d 61 25 21 32 30  2b 28 61 25 21 32 38 2d  |1%=a%!20+(a%!28-|
000073f0  61 25 21 34 29 3a 77 79  31 25 3d 61 25 21 32 34  |a%!4):wy1%=a%!24|
00007400  2b 28 61 25 21 34 30 2d  61 25 21 31 36 29 0d 31  |+(a%!40-a%!16).1|
00007410  d8 33 77 78 32 25 3d 77  78 31 25 2b 28 61 25 21  |.3wx2%=wx1%+(a%!|
00007420  33 36 2d 61 25 21 32 38  29 3a 77 79 32 25 3d 77  |36-a%!28):wy2%=w|
00007430  79 31 25 2b 28 61 25 21  33 32 2d 61 25 21 34 30  |y1%+(a%!32-a%!40|
00007440  29 0d 31 e2 1d c8 91 20  61 25 21 34 2d 61 25 21  |).1.... a%!4-a%!|
00007450  32 30 2c 61 25 21 31 36  2d 61 25 21 32 34 0d 31  |20,a%!16-a%!24.1|
00007460  ec 2f e7 20 77 69 6e 64  25 28 77 25 2c 31 29 3c  |./. wind%(w%,1)<|
00007470  3e 2d 31 20 80 20 77 69  6e 64 25 28 77 25 2c 31  |>-1 . wind%(w%,1|
00007480  29 3c 3d 6d 61 78 70 75  7a 7a 25 20 8c 0d 31 f6  |)<=maxpuzz% ..1.|
00007490  26 20 f2 50 75 7a 7a 52  65 63 74 28 77 25 2c 77  |& .PuzzRect(w%,w|
000074a0  78 31 25 2c 77 79 31 25  2c 77 78 32 25 2c 77 79  |x1%,wy1%,wx2%,wy|
000074b0  32 25 29 0d 32 00 05 cd  0d 32 0a 2e e7 20 77 69  |2%).2....2... wi|
000074c0  6e 64 25 28 77 25 2c 31  29 3c 3e 2d 31 20 80 20  |nd%(w%,1)<>-1 . |
000074d0  77 69 6e 64 25 28 77 25  2c 31 29 3e 6d 61 78 70  |wind%(w%,1)>maxp|
000074e0  75 7a 7a 25 20 8c 0d 32  14 26 20 f2 57 6f 72 64  |uzz% ..2.& .Word|
000074f0  52 65 63 74 28 77 25 2c  77 78 31 25 2c 77 79 31  |Rect(w%,wx1%,wy1|
00007500  25 2c 77 78 32 25 2c 77  79 32 25 29 0d 32 1e 05  |%,wx2%,wy2%).2..|
00007510  cd 0d 32 28 0a c8 91 20  30 2c 30 0d 32 32 05 e1  |..2(... 0,0.22..|
00007520  0d 32 3c 05 3a 0d 32 46  23 dd 20 f2 50 75 7a 7a  |.2<.:.2F#. .Puzz|
00007530  52 65 63 74 28 77 25 2c  78 31 25 2c 79 31 25 2c  |Rect(w%,x1%,y1%,|
00007540  78 32 25 2c 79 32 25 29  0d 32 50 08 ea 20 70 25  |x2%,y2%).2P.. p%|
00007550  0d 32 5a 12 70 25 3d 77  69 6e 64 25 28 77 25 2c  |.2Z.p%=wind%(w%,|
00007560  31 29 0d 32 64 27 78 31  25 3d 28 78 31 25 2d 32  |1).2d'x1%=(x1%-2|
00007570  32 29 20 81 20 32 30 3a  78 32 25 3d 28 78 32 25  |2) . 20:x2%=(x2%|
00007580  2d 32 32 29 20 81 20 32  30 0d 32 6e 27 79 31 25  |-22) . 20.2n'y1%|
00007590  3d 28 79 31 25 2b 38 29  20 81 20 2d 34 30 3a 79  |=(y1%+8) . -40:y|
000075a0  32 25 3d 28 79 32 25 2b  38 29 20 81 20 2d 34 30  |2%=(y2%+8) . -40|
000075b0  0d 32 78 13 e7 20 78 31  25 3c 30 20 8c 20 78 31  |.2x.. x1%<0 . x1|
000075c0  25 3d 30 0d 32 82 2c e7  20 78 31 25 3e 3d 70 69  |%=0.2.,. x1%>=pi|
000075d0  6e 66 6f 25 28 70 25 2c  30 29 20 8c 20 78 31 25  |nfo%(p%,0) . x1%|
000075e0  3d 70 69 6e 66 6f 25 28  70 25 2c 30 29 2d 31 0d  |=pinfo%(p%,0)-1.|
000075f0  32 8c 2c e7 20 78 32 25  3e 3d 70 69 6e 66 6f 25  |2.,. x2%>=pinfo%|
00007600  28 70 25 2c 30 29 20 8c  20 78 32 25 3d 70 69 6e  |(p%,0) . x2%=pin|
00007610  66 6f 25 28 70 25 2c 30  29 2d 31 0d 32 96 2f 41  |fo%(p%,0)-1.2./A|
00007620  25 3d 70 69 6e 66 6f 25  28 70 25 2c 36 29 3a 42  |%=pinfo%(p%,6):B|
00007630  25 3d 70 69 6e 66 6f 25  28 70 25 2c 37 29 3a d6  |%=pinfo%(p%,7):.|
00007640  20 43 68 61 6e 67 65 53  65 6c 0d 32 a0 33 41 25  | ChangeSel.2.3A%|
00007650  3d 70 75 7a 7a 69 6e 25  28 70 25 29 3a 42 25 3d  |=puzzin%(p%):B%=|
00007660  77 69 6e 64 25 28 77 25  2c 32 30 29 20 80 20 25  |wind%(w%,20) . %|
00007670  31 3a 43 25 3d 73 63 72  61 74 63 68 25 0d 32 aa  |1:C%=scratch%.2.|
00007680  2c 44 25 3d 78 31 25 3a  45 25 3d 79 31 25 3a 46  |,D%=x1%:E%=y1%:F|
00007690  25 3d 78 32 25 3a 47 25  3d 79 32 25 3a d6 20 43  |%=x2%:G%=y2%:. C|
000076a0  72 65 61 74 65 48 65 61  70 0d 32 b4 0e d6 20 47  |reateHeap.2... G|
000076b0  72 69 64 73 65 74 63 0d  32 be 05 e1 0d 32 c8 05  |ridsetc.2....2..|
000076c0  3a 0d 32 d2 23 dd 20 f2  57 6f 72 64 52 65 63 74  |:.2.#. .WordRect|
000076d0  28 77 25 2c 78 31 25 2c  79 31 25 2c 78 32 25 2c  |(w%,x1%,y1%,x2%,|
000076e0  79 32 25 29 0d 32 dc 23  ea 20 70 25 2c 61 64 64  |y2%).2.#. p%,add|
000076f0  72 31 25 2c 61 64 64 72  32 25 2c 61 25 2c 62 25  |r1%,addr2%,a%,b%|
00007700  2c 6e 25 2c 70 77 25 0d  32 e6 14 70 77 25 3d 77  |,n%,pw%.2..pw%=w|
00007710  69 6e 64 25 28 77 25 2c  32 30 29 0d 32 f0 2b 78  |ind%(w%,20).2.+x|
00007720  31 25 3d 28 78 31 25 2d  32 32 29 20 81 20 31 36  |1%=(x1%-22) . 16|
00007730  3a 78 32 25 3d 28 28 78  32 25 2d 32 32 29 20 81  |:x2%=((x2%-22) .|
00007740  20 31 36 29 2b 31 0d 32  fa 35 79 31 25 3d 28 28  | 16)+1.2.5y1%=((|
00007750  79 31 25 2b 33 36 29 20  81 20 34 30 29 2a 2d 31  |y1%+36) . 40)*-1|
00007760  3a 79 32 25 3d 28 28 28  79 32 25 2b 33 36 29 20  |:y2%=(((y2%+36) |
00007770  81 20 34 30 29 2d 31 29  2a 2d 31 0d 33 04 2e 70  |. 40)-1)*-1.3..p|
00007780  25 3d 77 69 6e 64 25 28  77 25 2c 31 29 2d 6d 61  |%=wind%(w%,1)-ma|
00007790  78 70 75 7a 7a 25 2d 31  3a 6c 25 3d 70 77 6f 72  |xpuzz%-1:l%=pwor|
000077a0  64 25 28 70 77 25 2c 32  29 0d 33 0e 2e 61 64 64  |d%(pw%,2).3..add|
000077b0  72 31 25 3d 70 75 7a 7a  69 6e 25 28 70 25 29 3a  |r1%=puzzin%(p%):|
000077c0  61 64 64 72 32 25 3d 61  64 64 72 31 25 2b 61 64  |addr2%=addr1%+ad|
000077d0  64 72 31 25 21 31 36 0d  33 18 21 61 64 64 72 32  |dr1%!16.3.!addr2|
000077e0  25 3d 61 64 64 72 31 25  2b 61 64 64 72 32 25 21  |%=addr1%+addr2%!|
000077f0  28 6c 25 2a 34 2d 34 29  0d 33 22 19 6e 25 3d 61  |(l%*4-4).3".n%=a|
00007800  64 64 72 32 25 21 30 3a  61 64 64 72 32 25 2b 3d  |ddr2%!0:addr2%+=|
00007810  34 0d 33 2c 0f e3 20 61  25 3d 31 20 b8 20 6e 25  |4.3,.. a%=1 . n%|
00007820  0d 33 36 1a 20 e7 20 61  25 3e 3d 79 31 25 20 80  |.36. . a%>=y1% .|
00007830  20 61 25 3c 3d 79 32 25  20 8c 0d 33 40 21 20 20  | a%<=y2% ..3@!  |
00007840  ec 20 70 77 6f 72 64 25  28 70 77 25 2c 33 29 2c  |. pword%(pw%,3),|
00007850  2d 28 61 25 2a 34 30 2b  33 36 29 0d 33 4a 17 20  |-(a%*40+36).3J. |
00007860  20 e7 20 3f 61 64 64 72  32 25 20 80 20 31 32 38  | . ?addr2% . 128|
00007870  20 8c 0d 33 54 39 20 20  20 c8 99 20 22 57 69 6d  | ..3T9   .. "Wim|
00007880  70 5f 53 65 74 43 6f 6c  6f 75 72 22 2c 33 3a c8  |p_SetColour",3:.|
00007890  99 20 22 4f 53 5f 57 72  69 74 65 43 22 2c 3f 61  |. "OS_WriteC",?a|
000078a0  64 64 72 32 25 20 82 20  31 32 38 0d 33 5e 07 20  |ddr2% . 128.3^. |
000078b0  20 cc 0d 33 68 33 20 20  20 c8 99 20 22 57 69 6d  | ..3h3   .. "Wim|
000078c0  70 5f 53 65 74 43 6f 6c  6f 75 72 22 2c 37 3a c8  |p_SetColour",7:.|
000078d0  99 20 22 4f 53 5f 57 72  69 74 65 43 22 2c 3f 61  |. "OS_WriteC",?a|
000078e0  64 64 72 32 25 0d 33 72  07 20 20 cd 0d 33 7c 22  |ddr2%.3r.  ..3|"|
000078f0  20 20 c8 99 20 22 4f 53  5f 57 72 69 74 65 4e 22  |  .. "OS_WriteN"|
00007900  2c 61 64 64 72 32 25 2b  31 2c 6c 25 2d 31 0d 33  |,addr2%+1,l%-1.3|
00007910  86 10 20 20 61 64 64 72  32 25 2b 3d 6c 25 0d 33  |..  addr2%+=l%.3|
00007920  90 06 20 cc 0d 33 9a 10  20 20 61 64 64 72 32 25  |.. ..3..  addr2%|
00007930  2b 3d 6c 25 0d 33 a4 06  20 cd 0d 33 ae 05 ed 0d  |+=l%.3.. ..3....|
00007940  33 b8 05 e1 0d 33 c2 05  3a 0d 33 cc 15 dd 20 a4  |3....3..:.3... .|
00007950  57 6f 72 64 28 6e 25 2c  61 64 64 72 25 29 0d 33  |Word(n%,addr%).3|
00007960  d6 20 41 25 3d 6e 25 3a  42 25 3d 61 64 64 72 25  |. A%=n%:B%=addr%|
00007970  3a 43 25 3d 62 32 25 3a  d6 20 57 6f 72 64 0d 33  |:C%=b2%:. Word.3|
00007980  e0 09 3d 24 62 32 25 0d  33 ea 19 ea 20 6f 66 66  |..=$b2%.3... off|
00007990  25 2c 61 25 2c 6c 25 2c  63 25 2c 61 24 2c 62 25  |%,a%,l%,c%,a$,b%|
000079a0  0d 33 f4 14 e7 20 6e 25  3d 26 46 46 46 46 20 8c  |.3... n%=&FFFF .|
000079b0  20 3d 22 22 0d 33 fe 15  61 25 3d 61 64 64 72 25  | ="".3..a%=addr%|
000079c0  2b 61 64 64 72 25 21 31  36 0d 34 08 15 62 25 3d  |+addr%!16.4..b%=|
000079d0  61 64 64 72 25 2b 61 64  64 72 25 21 31 32 0d 34  |addr%+addr%!12.4|
000079e0  12 0d 6c 25 3d 30 3a 63  25 3d 32 0d 34 1c 05 f5  |..l%=0:c%=2.4...|
000079f0  0d 34 26 33 20 e7 20 6e  25 3c 28 21 28 62 25 2b  |.4&3 . n%<(!(b%+|
00007a00  63 25 2a 34 29 29 20 80  20 6e 25 3e 3d 28 21 28  |c%*4)) . n%>=(!(|
00007a10  62 25 2b 63 25 2a 34 2d  34 29 29 20 8c 20 6c 25  |b%+c%*4-4)) . l%|
00007a20  3d 63 25 0d 34 30 0a 20  63 25 2b 3d 31 0d 34 3a  |=c%.40. c%+=1.4:|
00007a30  0b fd 20 6c 25 3c 3e 30  0d 34 44 18 61 25 3d 61  |.. l%<>0.4D.a%=a|
00007a40  64 64 72 25 2b 61 25 21  28 6c 25 2a 34 2d 34 29  |ddr%+a%!(l%*4-4)|
00007a50  0d 34 4e 20 61 25 3d 61  25 2b 28 6e 25 2d 21 28  |.4N a%=a%+(n%-!(|
00007a60  62 25 2b 6c 25 2a 34 2d  34 29 29 2a 6c 25 2b 34  |b%+l%*4-4))*l%+4|
00007a70  0d 34 58 09 61 24 3d 22  22 0d 34 62 11 e3 20 63  |.4X.a$="".4b.. c|
00007a80  25 3d 30 20 b8 20 6c 25  2d 31 0d 34 6c 10 61 24  |%=0 . l%-1.4l.a$|
00007a90  2b 3d bd 28 61 25 3f 63  25 29 0d 34 76 05 ed 0d  |+=.(a%?c%).4v...|
00007aa0  34 80 07 3d 61 24 0d 34  8a 05 3a 0d 34 94 12 dd  |4..=a$.4..:.4...|
00007ab0  20 a4 57 4e 75 6d 28 68  61 6e 64 25 29 0d 34 9e  | .WNum(hand%).4.|
00007ac0  0b ea 20 61 25 2c 66 25  0d 34 a8 09 66 25 3d 2d  |.. a%,f%.4..f%=-|
00007ad0  31 0d 34 b2 15 e3 20 61  25 3d 30 20 b8 20 6e 75  |1.4... a%=0 . nu|
00007ae0  6d 77 69 6e 64 25 0d 34  bc 20 20 e7 20 77 69 6e  |mwind%.4.  . win|
00007af0  64 25 28 61 25 2c 30 29  3d 68 61 6e 64 25 20 8c  |d%(a%,0)=hand% .|
00007b00  20 66 25 3d 61 25 0d 34  c6 05 ed 0d 34 d0 07 3d  | f%=a%.4....4..=|
00007b10  66 25 0d 34 da 05 3a 0d  34 e4 15 dd 20 a4 49 4e  |f%.4..:.4... .IN|
00007b20  75 6d 28 77 25 2c 68 61  6e 64 25 29 0d 34 ee 0e  |um(w%,hand%).4..|
00007b30  ea 20 61 25 2c 66 25 2c  68 25 0d 34 f8 09 66 25  |. a%,f%,h%.4..f%|
00007b40  3d 2d 31 0d 35 02 12 68  25 3d 77 69 6e 64 25 28  |=-1.5..h%=wind%(|
00007b50  77 25 2c 30 29 0d 35 0c  15 e3 20 61 25 3d 30 20  |w%,0).5... a%=0 |
00007b60  b8 20 6e 75 6d 69 63 6f  6e 25 0d 35 16 31 20 e7  |. numicon%.5.1 .|
00007b70  20 69 63 6f 6e 25 28 61  25 2c 39 29 3d 68 61 6e  | icon%(a%,9)=han|
00007b80  64 25 20 80 20 69 63 6f  6e 25 28 61 25 2c 35 29  |d% . icon%(a%,5)|
00007b90  3d 68 25 20 8c 20 66 25  3d 61 25 0d 35 20 05 ed  |=h% . f%=a%.5 ..|
00007ba0  0d 35 2a 07 3d 66 25 0d  35 34 05 3a 0d 35 3e 14  |.5*.=f%.54.:.5>.|
00007bb0  dd 20 a4 49 46 6c 61 67  73 28 77 25 2c 69 25 29  |. .IFlags(w%,i%)|
00007bc0  0d 35 48 19 69 63 6f 6e  73 74 25 21 30 3d 77 69  |.5H.iconst%!0=wi|
00007bd0  6e 64 25 28 77 25 2c 30  29 0d 35 52 19 69 63 6f  |nd%(w%,0).5R.ico|
00007be0  6e 73 74 25 21 34 3d 69  63 6f 6e 25 28 69 25 2c  |nst%!4=icon%(i%,|
00007bf0  39 29 0d 35 5c 23 c8 99  20 22 57 69 6d 70 5f 47  |9).5\#.. "Wimp_G|
00007c00  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 69 63  |etIconState",,ic|
00007c10  6f 6e 73 74 25 0d 35 66  0f 3d 69 63 6f 6e 73 74  |onst%.5f.=iconst|
00007c20  25 21 32 34 0d 35 70 05  3a 0d 35 7a 28 f4 20 4a  |%!24.5p.:.5z(. J|
00007c30  75 73 74 20 61 62 6f 75  74 20 74 68 65 20 6f 6e  |ust about the on|
00007c40  6c 79 20 74 69 6d 65 20  49 27 76 65 20 65 76 65  |ly time I've eve|
00007c50  72 0d 35 84 25 f4 20 70  61 73 73 65 64 20 61 6e  |r.5.%. passed an|
00007c60  20 61 72 72 61 79 20 74  6f 20 61 20 70 72 6f 63  | array to a proc|
00007c70  65 64 75 72 65 2e 0d 35  8e 3a f4 20 28 61 6e 64  |edure..5.:. (and|
00007c80  20 67 6f 74 20 61 77 61  79 20 77 69 74 68 20 62  | got away with b|
00007c90  6f 74 68 20 6d 79 20 65  79 65 62 72 6f 77 73 21  |oth my eyebrows!|
00007ca0  21 21 29 20 28 6e 65 76  65 72 20 6d 69 6e 64 29  |!!) (never mind)|
00007cb0  0d 35 98 20 dd 20 a4 31  73 74 46 72 65 65 28 61  |.5. . .1stFree(a|
00007cc0  72 72 61 79 25 28 29 2c  6d 61 78 64 69 6d 25 29  |rray%(),maxdim%)|
00007cd0  0d 35 a2 0b ea 20 61 25  2c 66 25 0d 35 ac 0f 61  |.5... a%,f%.5..a|
00007ce0  25 3d 2d 31 3a 66 25 3d  2d 31 0d 35 b6 05 f5 0d  |%=-1:f%=-1.5....|
00007cf0  35 c0 0a 20 61 25 2b 3d  31 0d 35 ca 1b 20 e7 20  |5.. a%+=1.5.. . |
00007d00  61 72 72 61 79 25 28 61  25 29 3d 30 20 8c 20 66  |array%(a%)=0 . f|
00007d10  25 3d 61 25 0d 35 d4 19  fd 20 66 25 3c 3e 2d 31  |%=a%.5... f%<>-1|
00007d20  20 84 20 61 25 3d 6d 61  78 64 69 6d 25 0d 35 de  | . a%=maxdim%.5.|
00007d30  07 3d 66 25 0d 35 e8 05  3a 0d 35 f2 19 dd 20 a4  |.=f%.5..:.5... .|
00007d40  50 4e 75 6d 4f 66 57 6f  72 64 73 28 61 64 64 72  |PNumOfWords(addr|
00007d50  25 29 0d 35 fc 2a 3d 21  28 21 28 61 64 64 72 25  |%).5.*=!(!(addr%|
00007d60  2b 61 64 64 72 25 21 31  32 29 2a 34 2b 61 64 64  |+addr%!12)*4+add|
00007d70  72 25 2b 61 64 64 72 25  21 31 32 29 0d 36 06 05  |r%+addr%!12).6..|
00007d80  3a 0d 36 10 1c dd 20 a4  57 6f 72 64 41 64 64 72  |:.6... .WordAddr|
00007d90  28 6c 25 2c 77 25 2c 61  64 64 72 25 29 0d 36 1a  |(l%,w%,addr%).6.|
00007da0  0c ea 20 61 64 64 72 31  25 0d 36 24 36 61 64 64  |.. addr1%.6$6add|
00007db0  72 31 25 3d 61 64 64 72  25 2b 61 64 64 72 25 21  |r1%=addr%+addr%!|
00007dc0  31 36 3a 61 64 64 72 31  25 3d 61 64 64 72 25 2b  |16:addr1%=addr%+|
00007dd0  61 64 64 72 31 25 21 28  6c 25 2a 34 2d 34 29 0d  |addr1%!(l%*4-4).|
00007de0  36 2e 13 3d 61 64 64 72  31 25 2b 34 2b 6c 25 2a  |6..=addr1%+4+l%*|
00007df0  77 25 0d 36 38 05 3a 0d  36 42 1c dd 20 a4 43 6c  |w%.68.:.6B.. .Cl|
00007e00  75 65 41 64 64 72 28 63  25 2c 64 25 2c 61 64 64  |ueAddr(c%,d%,add|
00007e10  72 25 29 0d 36 4c 0c ea  20 61 64 64 72 31 25 0d  |r%).6L.. addr1%.|
00007e20  36 56 38 e7 20 64 25 3d  30 20 61 64 64 72 31 25  |6V8. d%=0 addr1%|
00007e30  3d 61 64 64 72 25 2b 61  64 64 72 25 21 32 34 20  |=addr%+addr%!24 |
00007e40  8b 20 61 64 64 72 31 25  3d 61 64 64 72 25 2b 61  |. addr1%=addr%+a|
00007e50  64 64 72 25 21 32 38 0d  36 60 12 3d 61 64 64 72  |ddr%!28.6`.=addr|
00007e60  31 25 2b 63 25 2a 38 2d  34 0d 36 6a 05 3a 0d 36  |1%+c%*8-4.6j.:.6|
00007e70  74 14 dd 20 f2 49 6e 69  74 43 72 65 61 74 65 4a  |t.. .InitCreateJ|
00007e80  69 67 0d 36 7e 1c ea 20  70 25 2c 61 64 64 72 31  |ig.6~.. p%,addr1|
00007e90  25 2c 61 64 64 72 32 25  2c 6e 25 2c 6c 25 0d 36  |%,addr2%,n%,l%.6|
00007ea0  88 24 62 25 21 30 3d 77  69 6e 64 25 28 31 2c 30  |.$b%!0=wind%(1,0|
00007eb0  29 3a 62 25 21 34 3d 69  63 6f 6e 25 28 31 34 2c  |):b%!4=icon%(14,|
00007ec0  39 29 0d 36 92 16 62 25  21 38 3d 30 3a 62 25 21  |9).6..b%!8=0:b%!|
00007ed0  31 32 3d 31 3c 3c 32 31  0d 36 9c 1e c8 99 20 22  |12=1<<21.6.... "|
00007ee0  57 69 6d 70 5f 53 65 74  49 63 6f 6e 53 74 61 74  |Wimp_SetIconStat|
00007ef0  65 22 2c 2c 62 25 0d 36  a6 22 70 25 3d a4 31 73  |e",,b%.6."p%=.1s|
00007f00  74 46 72 65 65 28 70 66  72 65 65 25 28 29 2c 6d  |tFree(pfree%(),m|
00007f10  61 78 70 75 7a 7a 25 29  0d 36 b0 1c e7 20 70 25  |axpuzz%).6... p%|
00007f20  3d 2d 31 20 8c 20 f2 45  72 72 6f 72 32 6e 64 28  |=-1 . .Error2nd(|
00007f30  33 29 3a e1 0d 36 ba 27  63 72 65 61 74 65 25 28  |3):..6.'create%(|
00007f40  30 29 3d bb 28 24 64 61  74 61 25 28 69 63 6f 6e  |0)=.($data%(icon|
00007f50  25 28 31 31 2c 37 29 2c  30 29 29 0d 36 c4 27 63  |%(11,7),0)).6.'c|
00007f60  72 65 61 74 65 25 28 31  29 3d bb 28 24 64 61 74  |reate%(1)=.($dat|
00007f70  61 25 28 69 63 6f 6e 25  28 31 32 2c 37 29 2c 30  |a%(icon%(12,7),0|
00007f80  29 29 0d 36 ce 27 63 72  65 61 74 65 25 28 32 29  |)).6.'create%(2)|
00007f90  3d 28 a4 49 46 6c 61 67  73 28 31 2c 31 33 29 3e  |=(.IFlags(1,13)>|
00007fa0  3e 32 31 29 20 80 20 25  31 0d 36 d8 24 e7 20 63  |>21) . %1.6.$. c|
00007fb0  72 65 61 74 65 25 28 30  29 3c 33 30 20 8c 20 f2  |reate%(0)<30 . .|
00007fc0  45 72 72 6f 72 32 6e 64  28 31 29 3a e1 0d 36 e2  |Error2nd(1):..6.|
00007fd0  24 e7 20 63 72 65 61 74  65 25 28 31 29 3c 31 35  |$. create%(1)<15|
00007fe0  20 8c 20 f2 45 72 72 6f  72 32 6e 64 28 32 29 3a  | . .Error2nd(2):|
00007ff0  e1 0d 36 ec 24 e7 20 63  72 65 61 74 65 25 28 30  |..6.$. create%(0|
00008000  29 3e 39 39 20 8c 20 f2  45 72 72 6f 72 32 6e 64  |)>99 . .Error2nd|
00008010  28 37 29 3a e1 0d 36 f6  24 e7 20 63 72 65 61 74  |(7):..6.$. creat|
00008020  65 25 28 31 29 3e 39 39  20 8c 20 f2 45 72 72 6f  |e%(1)>99 . .Erro|
00008030  72 32 6e 64 28 38 29 3a  e1 0d 37 00 1f e7 20 6e  |r2nd(8):..7... n|
00008040  78 74 70 75 7a 7a 73 74  25 2b 33 32 3e 3d 70 75  |xtpuzzst%+32>=pu|
00008050  7a 7a 65 6e 64 25 20 8c  0d 37 0a 11 20 f2 45 72  |zzend% ..7.. .Er|
00008060  72 6f 72 32 6e 64 28 34  29 0d 37 14 06 20 e1 0d  |ror2nd(4).7.. ..|
00008070  37 1e 05 cd 0d 37 28 24  62 25 21 30 3d 77 69 6e  |7....7($b%!0=win|
00008080  64 25 28 31 2c 30 29 3a  62 25 21 34 3d 69 63 6f  |d%(1,0):b%!4=ico|
00008090  6e 25 28 31 34 2c 39 29  0d 37 32 1a 62 25 21 38  |n%(14,9).72.b%!8|
000080a0  3d 31 3c 3c 32 32 3a 62  25 21 31 32 3d 31 3c 3c  |=1<<22:b%!12=1<<|
000080b0  32 32 0d 37 3c 1e c8 99  20 22 57 69 6d 70 5f 53  |22.7<... "Wimp_S|
000080c0  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 62 25  |etIconState",,b%|
000080d0  0d 37 46 2d 63 72 65 61  74 65 25 28 33 29 3d 25  |.7F-create%(3)=%|
000080e0  30 30 3a 63 72 65 61 74  65 25 28 34 29 3d 30 3a  |00:create%(4)=0:|
000080f0  63 72 65 61 74 65 25 28  35 29 3d 70 25 0d 37 50  |create%(5)=p%.7P|
00008100  38 63 72 65 61 74 65 25  28 36 29 3d 6e 78 74 70  |8create%(6)=nxtp|
00008110  75 7a 7a 73 74 25 3a 63  72 65 61 74 65 25 28 37  |uzzst%:create%(7|
00008120  29 3d 70 75 7a 7a 65 6e  64 25 2d 6e 78 74 70 75  |)=puzzend%-nxtpu|
00008130  7a 7a 73 74 25 0d 37 5a  24 62 25 21 30 3d 77 69  |zzst%.7Z$b%!0=wi|
00008140  6e 64 25 28 31 2c 30 29  3a 62 25 21 34 3d 69 63  |nd%(1,0):b%!4=ic|
00008150  6f 6e 25 28 31 34 2c 39  29 0d 37 64 1a 62 25 21  |on%(14,9).7d.b%!|
00008160  38 3d 31 3c 3c 32 32 3a  62 25 21 31 32 3d 31 3c  |8=1<<22:b%!12=1<|
00008170  3c 32 32 0d 37 6e 1e c8  99 20 22 57 69 6d 70 5f  |<22.7n... "Wimp_|
00008180  53 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 62  |SetIconState",,b|
00008190  25 0d 37 78 15 c8 99 20  22 48 6f 75 72 67 6c 61  |%.7x... "Hourgla|
000081a0  73 73 5f 4f 6e 22 0d 37  82 2c 41 25 3d 63 72 65  |ss_On".7.,A%=cre|
000081b0  61 74 65 25 28 30 29 2d  31 3a 42 25 3d 63 72 65  |ate%(0)-1:B%=cre|
000081c0  61 74 65 25 28 31 29 2d  31 3a d6 20 63 73 69 7a  |ate%(1)-1:. csiz|
000081d0  65 25 0d 37 8c 2c 41 25  3d 63 72 65 61 74 65 25  |e%.7.,A%=create%|
000081e0  28 36 29 3a 42 25 3d 63  72 65 61 74 65 25 28 37  |(6):B%=create%(7|
000081f0  29 3a d6 20 63 70 75 7a  7a 61 72 65 61 25 0d 37  |):. cpuzzarea%.7|
00008200  96 0f d6 20 63 69 6e 69  74 76 61 72 25 0d 37 a0  |... cinitvar%.7.|
00008210  10 d6 20 63 72 65 61 74  65 6a 69 67 25 0d 37 aa  |.. createjig%.7.|
00008220  16 c8 99 20 22 48 6f 75  72 67 6c 61 73 73 5f 4f  |... "Hourglass_O|
00008230  66 66 22 0d 37 b4 24 62  25 21 30 3d 77 69 6e 64  |ff".7.$b%!0=wind|
00008240  25 28 31 2c 30 29 3a 62  25 21 34 3d 69 63 6f 6e  |%(1,0):b%!4=icon|
00008250  25 28 31 34 2c 39 29 0d  37 be 1a 62 25 21 38 3d  |%(14,9).7..b%!8=|
00008260  31 3c 3c 32 32 3a 62 25  21 31 32 3d 30 3c 3c 32  |1<<22:b%!12=0<<2|
00008270  32 0d 37 c8 1e c8 99 20  22 57 69 6d 70 5f 53 65  |2.7.... "Wimp_Se|
00008280  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 62 25 0d  |tIconState",,b%.|
00008290  37 d2 13 e7 20 21 72 65  73 75 6c 74 25 3d 2d 31  |7... !result%=-1|
000082a0  20 8c 0d 37 dc 0c 20 62  32 25 21 30 3d 30 0d 37  | ..7.. b2%!0=0.7|
000082b0  e6 1c 20 24 28 62 32 25  2b 34 29 3d 65 72 72 6f  |.. $(b2%+4)=erro|
000082c0  72 24 28 34 29 2b bd 28  30 29 0d 37 f0 30 20 c8  |r$(4)+.(0).7.0 .|
000082d0  99 20 22 57 69 6d 70 5f  52 65 70 6f 72 74 45 72  |. "Wimp_ReportEr|
000082e0  72 6f 72 22 2c 62 32 25  2c 25 31 30 31 30 31 2c  |ror",b2%,%10101,|
000082f0  22 21 4a 69 67 57 6f 72  64 22 0d 37 fa 06 20 e1  |"!JigWord".7.. .|
00008300  0d 38 04 05 cd 0d 38 0e  14 e7 20 63 72 65 61 74  |.8....8... creat|
00008310  65 25 28 32 29 3d 31 20  8c 0d 38 18 16 20 61 64  |e%(2)=1 ..8.. ad|
00008320  64 72 31 25 3d 63 72 65  61 74 65 25 28 36 29 0d  |dr1%=create%(6).|
00008330  38 22 41 20 e7 20 b3 28  32 29 3d 31 20 8c 20 61  |8"A . .(2)=1 . a|
00008340  64 64 72 32 25 3d 61 64  64 72 31 25 2b 61 64 64  |ddr2%=addr1%+add|
00008350  72 31 25 21 32 34 20 8b  20 61 64 64 72 32 25 3d  |r1%!24 . addr2%=|
00008360  61 64 64 72 31 25 2b 61  64 64 72 31 25 21 32 38  |addr1%+addr1%!28|
00008370  0d 38 2c 1a 20 6e 25 3d  61 64 64 72 32 25 21 30  |.8,. n%=addr2%!0|
00008380  3a 61 64 64 72 32 25 2b  3d 34 0d 38 36 18 20 61  |:addr2%+=4.86. a|
00008390  64 64 72 32 25 2b 3d 28  b3 28 6e 25 29 2d 31 29  |ddr2%+=(.(n%)-1)|
000083a0  2a 38 0d 38 40 28 20 61  64 64 72 32 25 3f 36 3d  |*8.8@( addr2%?6=|
000083b0  61 64 64 72 32 25 3f 34  3a 61 64 64 72 32 25 3f  |addr2%?4:addr2%?|
000083c0  37 3d 61 64 64 72 32 25  3f 35 0d 38 4a 24 20 6e  |7=addr2%?5.8J$ n|
000083d0  25 3d 61 64 64 72 32 25  21 34 20 80 20 26 46 46  |%=addr2%!4 . &FF|
000083e0  46 46 3a 6c 25 3d 61 64  64 72 32 25 3f 32 0d 38  |FF:l%=addr2%?2.8|
000083f0  54 1c 20 61 64 64 72 32  25 3d 61 64 64 72 31 25  |T. addr2%=addr1%|
00008400  2b 61 64 64 72 31 25 21  31 36 0d 38 5e 13 20 61  |+addr1%!16.8^. a|
00008410  64 64 72 32 25 2b 3d 6c  25 2a 34 2d 34 0d 38 68  |ddr2%+=l%*4-4.8h|
00008420  32 20 61 64 64 72 32 25  3d 61 64 64 72 31 25 2b  |2 addr2%=addr1%+|
00008430  21 61 64 64 72 32 25 3a  61 64 64 72 32 25 2b 3d  |!addr2%:addr2%+=|
00008440  34 3a 61 64 64 72 32 25  2b 3d 6c 25 2a 6e 25 0d  |4:addr2%+=l%*n%.|
00008450  38 72 1a 20 3f 61 64 64  72 32 25 3d 3f 61 64 64  |8r. ?addr2%=?add|
00008460  72 32 25 20 84 20 31 32  38 0d 38 7c 05 cd 0d 38  |r2% . 128.8|...8|
00008470  86 23 f2 49 6e 69 74 69  61 6c 69 73 65 44 69 73  |.#.InitialiseDis|
00008480  70 46 69 6c 65 28 63 72  65 61 74 65 25 28 35 29  |pFile(create%(5)|
00008490  29 0d 38 90 1f f2 43 72  65 61 74 65 50 75 7a 7a  |).8...CreatePuzz|
000084a0  57 69 6e 64 28 63 72 65  61 74 65 25 28 35 29 29  |Wind(create%(5))|
000084b0  0d 38 9a 0b 6d 61 73 6b  25 3d 30 0d 38 a4 05 e1  |.8..mask%=0.8...|
000084c0  0d 38 ae 05 3a 0d 38 b8  1d f4 20 61 20 6c 69 74  |.8..:.8... a lit|
000084d0  74 6c 65 20 75 73 65 64  20 70 72 6f 63 65 64 75  |tle used procedu|
000084e0  72 65 0d 38 c2 0c dd 20  f2 43 79 63 6c 65 0d 38  |re.8... .Cycle.8|
000084f0  cc 24 62 25 21 30 3d 77  69 6e 64 25 28 31 2c 30  |.$b%!0=wind%(1,0|
00008500  29 3a 62 25 21 34 3d 69  63 6f 6e 25 28 31 34 2c  |):b%!4=icon%(14,|
00008510  39 29 0d 38 d6 1a 62 25  21 38 3d 30 3c 3c 32 32  |9).8..b%!8=0<<22|
00008520  3a 62 25 21 31 32 3d 31  3c 3c 32 32 0d 38 e0 1e  |:b%!12=1<<22.8..|
00008530  c8 99 20 22 57 69 6d 70  5f 53 65 74 49 63 6f 6e  |.. "Wimp_SetIcon|
00008540  53 74 61 74 65 22 2c 2c  62 25 0d 38 ea 0b 6d 61  |State",,b%.8..ma|
00008550  73 6b 25 3d 31 0d 38 f4  14 d6 20 63 72 65 61 74  |sk%=1.8... creat|
00008560  65 69 6e 62 63 6b 67 6e  64 0d 38 fe 05 e1 0d 39  |einbckgnd.8....9|
00008570  08 05 3a 0d 39 12 15 f4  20 41 20 77 65 61 74 68  |..:.9... A weath|
00008580  65 72 20 76 61 69 6e 3f  0d 39 1c 16 dd 20 f2 4e  |er vain?.9... .N|
00008590  65 78 74 57 69 6e 64 50  6f 73 28 77 25 29 0d 39  |extWindPos(w%).9|
000085a0  26 1f e7 20 6e 65 78 74  77 70 6f 73 25 3d 34 20  |&.. nextwpos%=4 |
000085b0  8c 20 6e 65 78 74 77 70  6f 73 25 3d 30 0d 39 30  |. nextwpos%=0.90|
000085c0  30 77 69 6e 64 25 28 77  25 2c 32 29 3d 31 30 30  |0wind%(w%,2)=100|
000085d0  3a 77 69 6e 64 25 28 77  25 2c 35 29 3d 38 30 30  |:wind%(w%,5)=800|
000085e0  2d 34 38 2a 6e 65 78 74  77 70 6f 73 25 0d 39 3a  |-48*nextwpos%.9:|
000085f0  10 6e 65 78 74 77 70 6f  73 25 2b 3d 31 0d 39 44  |.nextwpos%+=1.9D|
00008600  05 e1 0d 39 4e 05 3a 0d  39 58 19 dd 20 f2 43 72  |...9N.:.9X.. .Cr|
00008610  65 61 74 65 50 75 7a 7a  57 69 6e 64 28 70 25 29  |eatePuzzWind(p%)|
00008620  0d 39 62 28 ea 20 77 25  2c 76 78 25 2c 76 79 25  |.9b(. w%,vx%,vy%|
00008630  2c 68 74 25 2c 77 69 64  25 2c 61 64 64 72 25 2c  |,ht%,wid%,addr%,|
00008640  61 25 2c 6d 6f 72 65 25  0d 39 6c 25 e7 20 70 69  |a%,more%.9l%. pi|
00008650  6e 66 6f 25 28 70 25 2c  33 29 3d 35 20 8c 20 f2  |nfo%(p%,3)=5 . .|
00008660  45 72 72 6f 72 32 6e 64  28 36 29 3a e1 0d 39 76  |Error2nd(6):..9v|
00008670  21 77 25 3d a4 31 73 74  46 72 65 65 28 77 75 73  |!w%=.1stFree(wus|
00008680  65 25 28 29 2c 6e 75 6d  77 69 6e 64 25 29 0d 39  |e%(),numwind%).9|
00008690  80 0d e7 20 77 25 3d 2d  31 20 8c 0d 39 8a 11 20  |... w%=-1 ..9.. |
000086a0  f2 45 72 72 6f 72 32 6e  64 28 35 29 0d 39 94 06  |.Error2nd(5).9..|
000086b0  20 e1 0d 39 9e 05 cd 0d  39 a8 10 77 75 73 65 25  | ..9....9..wuse%|
000086c0  28 77 25 29 3d 2d 31 0d  39 b2 13 70 69 6e 66 6f  |(w%)=-1.9..pinfo|
000086d0  25 28 70 25 2c 33 29 2b  3d 31 0d 39 bc 15 61 64  |%(p%,3)+=1.9..ad|
000086e0  64 72 25 3d 70 75 7a 7a  69 6e 25 28 70 25 29 0d  |dr%=puzzin%(p%).|
000086f0  39 c6 28 77 69 64 25 3d  61 64 64 72 25 21 34 2a  |9.(wid%=addr%!4*|
00008700  32 30 2b 34 30 3a 68 74  25 3d 61 64 64 72 25 21  |20+40:ht%=addr%!|
00008710  38 2a 34 30 2b 31 32 0d  39 d0 12 77 69 6e 64 25  |8*40+12.9..wind%|
00008720  28 77 25 2c 31 29 3d 70  25 0d 39 da 14 f2 4e 65  |(w%,1)=p%.9...Ne|
00008730  78 74 57 69 6e 64 50 6f  73 28 77 25 29 0d 39 e4  |xtWindPos(w%).9.|
00008740  11 e7 20 77 69 64 25 3e  3d 36 34 30 20 8c 0d 39  |.. wid%>=640 ..9|
00008750  ee 20 20 77 69 6e 64 25  28 77 25 2c 34 29 3d 77  |.  wind%(w%,4)=w|
00008760  69 6e 64 25 28 77 25 2c  32 29 2b 36 34 30 0d 39  |ind%(w%,2)+640.9|
00008770  f8 05 cc 0d 3a 02 21 20  77 69 6e 64 25 28 77 25  |....:.! wind%(w%|
00008780  2c 34 29 3d 77 69 6e 64  25 28 77 25 2c 32 29 2b  |,4)=wind%(w%,2)+|
00008790  77 69 64 25 0d 3a 0c 05  cd 0d 3a 16 10 e7 20 68  |wid%.:....:... h|
000087a0  74 25 3e 3d 36 31 32 20  8c 0d 3a 20 20 20 77 69  |t%>=612 ..:   wi|
000087b0  6e 64 25 28 77 25 2c 33  29 3d 77 69 6e 64 25 28  |nd%(w%,3)=wind%(|
000087c0  77 25 2c 35 29 2d 36 31  32 0d 3a 2a 05 cc 0d 3a  |w%,5)-612.:*...:|
000087d0  34 20 20 77 69 6e 64 25  28 77 25 2c 33 29 3d 77  |4  wind%(w%,3)=w|
000087e0  69 6e 64 25 28 77 25 2c  35 29 2d 68 74 25 0d 3a  |ind%(w%,5)-ht%.:|
000087f0  3e 05 cd 0d 3a 48 1f 77  69 6e 64 25 28 77 25 2c  |>...:H.wind%(w%,|
00008800  36 29 3d 30 3a 77 69 6e  64 25 28 77 25 2c 37 29  |6)=0:wind%(w%,7)|
00008810  3d 30 0d 3a 52 22 77 69  6e 64 25 28 77 25 2c 38  |=0.:R"wind%(w%,8|
00008820  29 3d 30 3a 77 69 6e 64  25 28 77 25 2c 39 29 3d  |)=0:wind%(w%,9)=|
00008830  2d 68 74 25 0d 3a 5c 24  77 69 6e 64 25 28 77 25  |-ht%.:\$wind%(w%|
00008840  2c 31 30 29 3d 77 69 64  25 3a 77 69 6e 64 25 28  |,10)=wid%:wind%(|
00008850  77 25 2c 31 31 29 3d 30  0d 3a 66 21 77 69 6e 64  |w%,11)=0.:f!wind|
00008860  25 28 77 25 2c 31 32 29  3d 30 3a 77 69 6e 64 25  |%(w%,12)=0:wind%|
00008870  28 77 25 2c 31 33 29 3d  30 0d 3a 70 21 77 69 6e  |(w%,13)=0.:p!win|
00008880  64 25 28 77 25 2c 31 34  29 3d 25 30 30 30 31 30  |d%(w%,14)=%00010|
00008890  2b 28 32 35 35 3c 3c 32  34 29 0d 3a 7a 12 77 69  |+(255<<24).:z.wi|
000088a0  6e 64 25 28 77 25 2c 31  35 29 3d 31 0d 3a 84 21  |nd%(w%,15)=1.:.!|
000088b0  77 69 6e 64 25 28 77 25  2c 31 36 29 3d 30 3a 77  |wind%(w%,16)=0:w|
000088c0  69 6e 64 25 28 77 25 2c  31 37 29 3d 30 0d 3a 8e  |ind%(w%,17)=0.:.|
000088d0  1d 77 69 6e 64 25 28 77  25 2c 31 38 29 3d 70 69  |.wind%(w%,18)=pi|
000088e0  6e 66 6f 25 28 70 25 2c  35 29 0d 3a 98 12 77 69  |nfo%(p%,5).:..wi|
000088f0  6e 64 25 28 77 25 2c 31  39 29 3d 33 0d 3a a2 13  |nd%(w%,19)=3.:..|
00008900  77 69 6e 64 25 28 77 25  2c 32 30 29 3d 25 30 0d  |wind%(w%,20)=%0.|
00008910  3a ac 1e 77 69 6e 64 24  28 77 25 29 3d 22 30 31  |:..wind$(w%)="01|
00008920  32 33 34 35 36 37 38 39  41 42 43 44 22 0d 3a b6  |23456789ABCD".:.|
00008930  15 f2 43 72 65 61 74 65  57 69 6e 64 6f 77 28 77  |..CreateWindow(w|
00008940  25 29 0d 3a c0 1d 70 69  6e 66 6f 25 28 70 25 2c  |%).:..pinfo%(p%,|
00008950  35 29 3d 77 69 6e 64 25  28 77 25 2c 31 38 29 0d  |5)=wind%(w%,18).|
00008960  3a ca 16 e7 20 70 69 6e  66 6f 25 28 70 25 2c 33  |:... pinfo%(p%,3|
00008970  29 3d 31 20 8c 0d 3a d4  2c 20 24 64 61 74 61 25  |)=1 ..:., $data%|
00008980  28 77 69 6e 64 25 28 77  25 2c 31 38 29 2c 30 29  |(wind%(w%,18),0)|
00008990  3d 22 4a 69 67 57 6f 72  64 20 22 2b c3 28 70 25  |="JigWord "+.(p%|
000089a0  29 0d 3a de 05 cc 0d 3a  e8 40 20 24 64 61 74 61  |).:....:.@ $data|
000089b0  25 28 77 69 6e 64 25 28  77 25 2c 31 38 29 2c 30  |%(wind%(w%,18),0|
000089c0  29 3d 22 4a 69 67 57 6f  72 64 20 22 2b c3 28 70  |)="JigWord "+.(p|
000089d0  25 29 2b 22 20 22 2b c3  28 70 69 6e 66 6f 25 28  |%)+" "+.(pinfo%(|
000089e0  70 25 2c 33 29 29 0d 3a  f2 05 cd 0d 3a fc 15 e3  |p%,3)).:....:...|
000089f0  20 61 25 3d 30 20 b8 20  6e 75 6d 77 69 6e 64 25  | a%=0 . numwind%|
00008a00  0d 3b 06 26 20 e7 20 77  75 73 65 25 28 61 25 29  |.;.& . wuse%(a%)|
00008a10  3c 3e 30 20 80 20 77 69  6e 64 25 28 61 25 2c 31  |<>0 . wind%(a%,1|
00008a20  29 3d 70 25 20 8c 0d 3b  10 10 20 20 e7 20 61 25  |)=p% ..;..  . a%|
00008a30  3c 3e 77 25 20 8c 0d 3b  1a 16 20 20 20 21 62 25  |<>w% ..;..   !b%|
00008a40  3d 77 69 6e 64 25 28 61  25 2c 30 29 0d 3b 24 2d  |=wind%(a%,0).;$-|
00008a50  20 20 20 c8 99 20 22 57  69 6d 70 5f 47 65 74 57  |   .. "Wimp_GetW|
00008a60  69 6e 64 6f 77 53 74 61  74 65 22 2c 2c 62 25 3a  |indowState",,b%:|
00008a70  77 66 25 3d 62 25 21 32  38 0d 3b 2e 39 20 20 20  |wf%=b%!28.;.9   |
00008a80  c8 99 20 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  |.. "Wimp_ForceRe|
00008a90  64 72 61 77 22 2c 2d 31  2c 62 25 21 34 2c 62 25  |draw",-1,b%!4,b%|
00008aa0  21 31 36 2c 62 25 21 31  32 2c 62 25 21 31 36 2b  |!16,b%!12,b%!16+|
00008ab0  34 34 0d 3b 38 07 20 20  cc 0d 3b 42 19 20 20 20  |44.;8.  ..;B.   |
00008ac0  f2 4f 70 65 6e 57 69 6e  64 6f 77 28 61 25 2c 2d  |.OpenWindow(a%,-|
00008ad0  31 29 0d 3b 4c 07 20 20  cd 0d 3b 56 06 20 cd 0d  |1).;L.  ..;V. ..|
00008ae0  3b 60 05 ed 0d 3b 6a 05  e1 0d 3b 74 05 3a 0d 3b  |;`...;j...;t.:.;|
00008af0  7e 19 dd 20 f2 43 72 65  61 74 65 57 6f 72 64 57  |~.. .CreateWordW|
00008b00  69 6e 64 28 70 25 29 0d  3b 88 2d ea 20 77 25 2c  |ind(p%).;.-. w%,|
00008b10  61 25 2c 6d 77 25 2c 6d  68 2c 61 64 64 72 31 25  |a%,mw%,mh,addr1%|
00008b20  2c 61 64 64 72 32 25 2c  69 63 73 74 25 2c 66 25  |,addr2%,icst%,f%|
00008b30  2c 77 77 25 0d 3b 92 21  77 25 3d a4 31 73 74 46  |,ww%.;.!w%=.1stF|
00008b40  72 65 65 28 77 75 73 65  25 28 29 2c 6e 75 6d 77  |ree(wuse%(),numw|
00008b50  69 6e 64 25 29 0d 3b 9c  1c e7 20 77 25 3d 2d 31  |ind%).;... w%=-1|
00008b60  20 8c 20 f2 45 72 72 6f  72 32 6e 64 28 35 29 3a  | . .Error2nd(5):|
00008b70  e1 0d 3b a6 24 77 77 25  3d a4 31 73 74 46 72 65  |..;.$ww%=.1stFre|
00008b80  65 28 70 77 75 73 65 25  28 29 2c 6d 61 78 70 77  |e(pwuse%(),maxpw|
00008b90  6f 72 64 25 29 0d 3b b0  1d e7 20 77 77 25 3d 2d  |ord%).;... ww%=-|
00008ba0  31 20 8c 20 f2 45 72 72  6f 72 32 6e 64 28 35 29  |1 . .Error2nd(5)|
00008bb0  3a e1 0d 3b ba 10 77 75  73 65 25 28 77 25 29 3d  |:..;..wuse%(w%)=|
00008bc0  2d 31 0d 3b c4 12 70 77  75 73 65 25 28 77 77 25  |-1.;..pwuse%(ww%|
00008bd0  29 3d 2d 31 0d 3b ce 2e  61 64 64 72 31 25 3d 70  |)=-1.;..addr1%=p|
00008be0  75 7a 7a 69 6e 25 28 70  25 29 3a 61 64 64 72 32  |uzzin%(p%):addr2|
00008bf0  25 3d 61 64 64 72 31 25  2b 61 64 64 72 31 25 21  |%=addr1%+addr1%!|
00008c00  31 32 0d 3b d8 19 6d 77  25 3d 21 61 64 64 72 32  |12.;..mw%=!addr2|
00008c10  25 3a 61 64 64 72 32 25  2b 3d 38 0d 3b e2 29 e7  |%:addr2%+=8.;.).|
00008c20  20 6d 77 25 3c a9 28 22  20 88 20 20 20 4c 65 74  | mw%<.(" .   Let|
00008c30  74 65 72 73 20 20 20 89  20 22 29 20 8c 20 6d 77  |ters   . ") . mw|
00008c40  25 3d 31 37 0d 3b ec 09  6d 68 25 3d 30 0d 3b f6  |%=17.;..mh%=0.;.|
00008c50  16 e3 20 61 25 3d 32 20  b8 20 61 64 64 72 32 25  |.. a%=2 . addr2%|
00008c60  21 2d 38 0d 3c 00 4c e7  20 28 21 61 64 64 72 32  |!-8.<.L. (!addr2|
00008c70  25 2d 61 64 64 72 32 25  21 2d 34 29 3e 6d 68 25  |%-addr2%!-4)>mh%|
00008c80  20 8c 20 6d 68 25 3d 21  61 64 64 72 32 25 2d 61  | . mh%=!addr2%-a|
00008c90  64 64 72 32 25 21 2d 34  3a 70 77 6f 72 64 25 28  |ddr2%!-4:pword%(|
00008ca0  77 77 25 2c 32 29 3d 61  25 3a 66 25 3d 2d 31 0d  |ww%,2)=a%:f%=-1.|
00008cb0  3c 0a 0d 61 64 64 72 32  25 2b 3d 34 0d 3c 14 05  |<..addr2%+=4.<..|
00008cc0  ed 0d 3c 1e 0a 6d 68 25  2b 3d 32 0d 3c 28 1d 77  |..<..mh%+=2.<(.w|
00008cd0  69 6e 64 25 28 77 25 2c  31 29 3d 70 25 2b 6d 61  |ind%(w%,1)=p%+ma|
00008ce0  78 70 75 7a 7a 25 2b 31  0d 3c 32 20 77 69 6e 64  |xpuzz%+1.<2 wind|
00008cf0  25 28 77 25 2c 38 29 3d  30 3a 77 69 6e 64 25 28  |%(w%,8)=0:wind%(|
00008d00  77 25 2c 31 31 29 3d 30  0d 3c 3c 1c 77 69 6e 64  |w%,11)=0.<<.wind|
00008d10  25 28 77 25 2c 39 29 3d  2d 28 6d 68 25 2a 34 30  |%(w%,9)=-(mh%*40|
00008d20  2b 31 36 29 0d 3c 46 1a  77 69 6e 64 25 28 77 25  |+16).<F.wind%(w%|
00008d30  2c 31 30 29 3d 6d 77 25  2a 31 36 2b 34 30 0d 3c  |,10)=mw%*16+40.<|
00008d40  50 14 f2 4e 65 78 74 57  69 6e 64 50 6f 73 28 77  |P..NextWindPos(w|
00008d50  25 29 0d 3c 5a 20 77 69  6e 64 25 28 77 25 2c 34  |%).<Z wind%(w%,4|
00008d60  29 3d 31 30 30 2b 77 69  6e 64 25 28 77 25 2c 31  |)=100+wind%(w%,1|
00008d70  30 29 0d 3c 64 18 e7 20  77 69 6e 64 25 28 77 25  |0).<d.. wind%(w%|
00008d80  2c 39 29 3c 2d 36 30 30  20 8c 0d 3c 6e 14 20 77  |,9)<-600 ..<n. w|
00008d90  69 6e 64 25 28 77 25 2c  33 29 3d 32 30 30 0d 3c  |ind%(w%,3)=200.<|
00008da0  78 05 cc 0d 3c 82 28 20  77 69 6e 64 25 28 77 25  |x...<.( wind%(w%|
00008db0  2c 33 29 3d 77 69 6e 64  25 28 77 25 2c 35 29 2b  |,3)=wind%(w%,5)+|
00008dc0  77 69 6e 64 25 28 77 25  2c 39 29 0d 3c 8c 05 cd  |wind%(w%,9).<...|
00008dd0  0d 3c 96 1f 77 69 6e 64  25 28 77 25 2c 36 29 3d  |.<..wind%(w%,6)=|
00008de0  30 3a 77 69 6e 64 25 28  77 25 2c 37 29 3d 30 0d  |0:wind%(w%,7)=0.|
00008df0  3c a0 21 77 69 6e 64 25  28 77 25 2c 31 32 29 3d  |<.!wind%(w%,12)=|
00008e00  30 3a 77 69 6e 64 25 28  77 25 2c 31 33 29 3d 30  |0:wind%(w%,13)=0|
00008e10  0d 3c aa 1e 77 69 6e 64  25 28 77 25 2c 31 34 29  |.<..wind%(w%,14)|
00008e20  3d 25 31 30 2b 28 32 35  35 3c 3c 32 34 29 0d 3c  |=%10+(255<<24).<|
00008e30  b4 12 77 69 6e 64 25 28  77 25 2c 31 35 29 3d 31  |..wind%(w%,15)=1|
00008e40  0d 3c be 1c 69 63 73 74  25 3d 70 77 6f 72 64 69  |.<..icst%=pwordi|
00008e50  63 6f 6e 73 74 25 2b 77  77 25 2a 33 0d 3c c8 16  |const%+ww%*3.<..|
00008e60  77 69 6e 64 25 28 77 25  2c 31 36 29 3d 69 63 73  |wind%(w%,16)=ics|
00008e70  74 25 0d 3c d2 12 77 69  6e 64 25 28 77 25 2c 31  |t%.<..wind%(w%,1|
00008e80  37 29 3d 33 0d 3c dc 13  77 69 6e 64 25 28 77 25  |7)=3.<..wind%(w%|
00008e90  2c 31 38 29 3d 2d 31 0d  3c e6 12 77 69 6e 64 25  |,18)=-1.<..wind%|
00008ea0  28 77 25 2c 31 39 29 3d  33 0d 3c f0 14 77 69 6e  |(w%,19)=3.<..win|
00008eb0  64 25 28 77 25 2c 32 30  29 3d 77 77 25 0d 3c fa  |d%(w%,20)=ww%.<.|
00008ec0  1e 77 69 6e 64 24 28 77  25 29 3d 22 4a 69 67 57  |.wind$(w%)="JigW|
00008ed0  6f 72 64 20 22 2b c3 28  70 25 29 0d 3d 04 38 69  |ord "+.(p%).=.8i|
00008ee0  63 6f 6e 25 28 69 63 73  74 25 2c 30 29 3d 77 69  |con%(icst%,0)=wi|
00008ef0  6e 64 25 28 77 25 2c 31  30 29 2f 32 2d 31 32 30  |nd%(w%,10)/2-120|
00008f00  3a 69 63 6f 6e 25 28 69  63 73 74 25 2c 31 29 3d  |:icon%(icst%,1)=|
00008f10  2d 34 38 0d 3d 0e 36 69  63 6f 6e 25 28 69 63 73  |-48.=.6icon%(ics|
00008f20  74 25 2c 32 29 3d 69 63  6f 6e 25 28 69 63 73 74  |t%,2)=icon%(icst|
00008f30  25 2c 30 29 2b 31 38 3a  69 63 6f 6e 25 28 69 63  |%,0)+18:icon%(ic|
00008f40  73 74 25 2c 33 29 3d 2d  38 0d 3d 18 29 69 63 6f  |st%,3)=-8.=.)ico|
00008f50  6e 25 28 69 63 73 74 25  2c 34 29 3d 25 31 31 30  |n%(icst%,4)=%110|
00008f60  30 31 2b 28 32 3c 3c 31  32 29 2b 28 37 3c 3c 32  |01+(2<<12)+(7<<2|
00008f70  34 29 0d 3d 22 26 69 63  6f 6e 25 28 69 63 73 74  |4).="&icon%(icst|
00008f80  25 2c 35 29 3d 2d 31 3a  69 63 6f 6e 25 28 69 63  |%,5)=-1:icon%(ic|
00008f90  73 74 25 2c 36 29 3d 30  0d 3d 2c 3a 69 63 6f 6e  |st%,6)=0.=,:icon|
00008fa0  25 28 69 63 73 74 25 2c  37 29 3d 2d 31 3a 69 63  |%(icst%,7)=-1:ic|
00008fb0  6f 6e 25 28 69 63 73 74  25 2c 38 29 3d 31 3a 69  |on%(icst%,8)=1:i|
00008fc0  63 6f 6e 24 28 69 63 73  74 25 2c 30 29 3d bd 31  |con$(icst%,0)=.1|
00008fd0  33 36 0d 3d 36 0c 69 63  73 74 25 2b 3d 31 0d 3d  |36.=6.icst%+=1.=|
00008fe0  40 38 69 63 6f 6e 25 28  69 63 73 74 25 2c 30 29  |@8icon%(icst%,0)|
00008ff0  3d 77 69 6e 64 25 28 77  25 2c 31 30 29 2f 32 2b  |=wind%(w%,10)/2+|
00009000  31 30 34 3a 69 63 6f 6e  25 28 69 63 73 74 25 2c  |104:icon%(icst%,|
00009010  31 29 3d 2d 34 38 0d 3d  4a 36 69 63 6f 6e 25 28  |1)=-48.=J6icon%(|
00009020  69 63 73 74 25 2c 32 29  3d 69 63 6f 6e 25 28 69  |icst%,2)=icon%(i|
00009030  63 73 74 25 2c 30 29 2b  31 38 3a 69 63 6f 6e 25  |cst%,0)+18:icon%|
00009040  28 69 63 73 74 25 2c 33  29 3d 2d 38 0d 3d 54 29  |(icst%,3)=-8.=T)|
00009050  69 63 6f 6e 25 28 69 63  73 74 25 2c 34 29 3d 25  |icon%(icst%,4)=%|
00009060  31 31 30 30 31 2b 28 32  3c 3c 31 32 29 2b 28 37  |11001+(2<<12)+(7|
00009070  3c 3c 32 34 29 0d 3d 5e  26 69 63 6f 6e 25 28 69  |<<24).=^&icon%(i|
00009080  63 73 74 25 2c 35 29 3d  2d 31 3a 69 63 6f 6e 25  |cst%,5)=-1:icon%|
00009090  28 69 63 73 74 25 2c 36  29 3d 30 0d 3d 68 3a 69  |(icst%,6)=0.=h:i|
000090a0  63 6f 6e 25 28 69 63 73  74 25 2c 37 29 3d 2d 31  |con%(icst%,7)=-1|
000090b0  3a 69 63 6f 6e 25 28 69  63 73 74 25 2c 38 29 3d  |:icon%(icst%,8)=|
000090c0  31 3a 69 63 6f 6e 24 28  69 63 73 74 25 2c 30 29  |1:icon$(icst%,0)|
000090d0  3d bd 31 33 37 0d 3d 72  0c 69 63 73 74 25 2b 3d  |=.137.=r.icst%+=|
000090e0  31 0d 3d 7c 37 69 63 6f  6e 25 28 69 63 73 74 25  |1.=|7icon%(icst%|
000090f0  2c 30 29 3d 77 69 6e 64  25 28 77 25 2c 31 30 29  |,0)=wind%(w%,10)|
00009100  2f 32 2d 38 34 3a 69 63  6f 6e 25 28 69 63 73 74  |/2-84:icon%(icst|
00009110  25 2c 31 29 3d 2d 34 38  0d 3d 86 37 69 63 6f 6e  |%,1)=-48.=.7icon|
00009120  25 28 69 63 73 74 25 2c  32 29 3d 69 63 6f 6e 25  |%(icst%,2)=icon%|
00009130  28 69 63 73 74 25 2c 30  29 2b 31 36 38 3a 69 63  |(icst%,0)+168:ic|
00009140  6f 6e 25 28 69 63 73 74  25 2c 33 29 3d 2d 38 0d  |on%(icst%,3)=-8.|
00009150  3d 90 25 69 63 6f 6e 25  28 69 63 73 74 25 2c 34  |=.%icon%(icst%,4|
00009160  29 3d 25 31 30 30 30 31  31 30 30 31 2b 28 37 3c  |)=%100011001+(7<|
00009170  3c 32 34 29 0d 3d 9a 25  69 63 6f 6e 25 28 69 63  |<24).=.%icon%(ic|
00009180  73 74 25 2c 35 29 3d 30  3a 69 63 6f 6e 25 28 69  |st%,5)=0:icon%(i|
00009190  63 73 74 25 2c 36 29 3d  31 0d 3d a4 27 69 63 6f  |cst%,6)=1.=.'ico|
000091a0  6e 25 28 69 63 73 74 25  2c 37 29 3d 2d 31 3a 69  |n%(icst%,7)=-1:i|
000091b0  63 6f 6e 25 28 69 63 73  74 25 2c 38 29 3d 31 31  |con%(icst%,8)=11|
000091c0  0d 3d ae 2e 69 63 6f 6e  24 28 69 63 73 74 25 2c  |.=..icon$(icst%,|
000091d0  30 29 3d c3 28 70 77 6f  72 64 25 28 77 77 25 2c  |0)=.(pword%(ww%,|
000091e0  32 29 29 2b 22 20 4c 65  74 74 65 72 73 22 0d 3d  |2))+" Letters".=|
000091f0  b8 15 69 63 6f 6e 24 28  69 63 73 74 25 2c 31 29  |..icon$(icst%,1)|
00009200  3d 22 22 0d 3d c2 15 f2  43 72 65 61 74 65 57 69  |="".=...CreateWi|
00009210  6e 64 6f 77 28 77 25 29  0d 3d cc 13 70 69 6e 66  |ndow(w%).=..pinf|
00009220  6f 25 28 70 25 2c 38 29  2b 3d 31 0d 3d d6 23 70  |o%(p%,8)+=1.=.#p|
00009230  69 6e 66 6f 25 28 70 25  2c 34 29 3d 70 69 6e 66  |info%(p%,4)=pinf|
00009240  6f 25 28 70 25 2c 34 29  20 84 20 25 31 30 0d 3d  |o%(p%,4) . %10.=|
00009250  e0 14 70 77 6f 72 64 25  28 77 77 25 2c 30 29 3d  |..pword%(ww%,0)=|
00009260  77 25 0d 3d ea 14 70 77  6f 72 64 25 28 77 77 25  |w%.=..pword%(ww%|
00009270  2c 31 29 3d 70 25 0d 3d  f4 30 70 77 6f 72 64 25  |,1)=p%.=.0pword%|
00009280  28 77 77 25 2c 33 29 3d  77 69 6e 64 25 28 77 25  |(ww%,3)=wind%(w%|
00009290  2c 31 30 29 2f 32 2d 70  77 6f 72 64 25 28 77 77  |,10)/2-pword%(ww|
000092a0  25 2c 32 29 2a 38 0d 3d  fe 30 70 77 6f 72 64 25  |%,2)*8.=.0pword%|
000092b0  28 77 77 25 2c 34 29 3d  70 77 6f 72 64 25 28 77  |(ww%,4)=pword%(w|
000092c0  77 25 2c 33 29 2b 70 77  6f 72 64 25 28 77 77 25  |w%,3)+pword%(ww%|
000092d0  2c 32 29 2a 31 36 0d 3e  08 17 70 77 6f 72 64 25  |,2)*16.>..pword%|
000092e0  28 77 77 25 2c 35 29 3d  6d 68 25 2d 33 0d 3e 12  |(ww%,5)=mh%-3.>.|
000092f0  16 f2 4f 70 65 6e 57 69  6e 64 6f 77 28 77 25 2c  |..OpenWindow(w%,|
00009300  2d 31 29 0d 3e 1c 05 e1  0d 3e 26 05 3a 0d 3e 30  |-1).>....>&.:.>0|
00009310  45 f4 20 49 46 20 65 72  72 6f 72 20 74 72 61 70  |E. IF error trap|
00009320  70 69 6e 67 20 65 6e 68  61 6e 63 65 64 20 68 65  |ping enhanced he|
00009330  72 65 2c 20 72 65 6d 65  6d 62 65 72 20 74 68 65  |re, remember the|
00009340  20 67 72 69 64 20 62 61  63 6b 67 6e 64 20 63 6f  | grid backgnd co|
00009350  6c 2e 0d 3e 3a 48 f4 20  54 68 69 73 20 6c 69 74  |l..>:H. This lit|
00009360  74 6c 65 20 68 6f 72 72  6f 72 20 74 6f 6f 6b 20  |tle horror took |
00009370  6d 65 20 66 6f 72 65 76  65 72 2e 20 59 6f 75 20  |me forever. You |
00009380  63 61 6e 20 63 68 61 6e  67 65 20 74 68 65 20 70  |can change the p|
00009390  72 69 6e 74 20 72 61 74  69 6f 0d 3e 44 2f f4 20  |rint ratio.>D/. |
000093a0  68 65 72 65 20 69 66 20  79 6f 75 20 77 61 6e 74  |here if you want|
000093b0  20 61 20 62 69 67 67 65  72 20 4a 69 67 57 6f 72  | a bigger JigWor|
000093c0  64 20 70 72 69 6e 74 65  64 0d 3e 4e 1b dd 20 f2  |d printed.>N.. .|
000093d0  50 72 69 6e 74 50 75 7a  7a 47 72 69 64 28 77 25  |PrintPuzzGrid(w%|
000093e0  2c 70 25 29 0d 3e 58 1f  ea 20 48 25 2c 4f 25 2c  |,p%).>X.. H%,O%,|
000093f0  70 6c 78 25 2c 70 72 78  25 2c 70 62 79 25 2c 70  |plx%,prx%,pby%,p|
00009400  74 79 25 0d 3e 62 1d ea  20 66 31 25 2c 66 32 25  |ty%.>b.. f1%,f2%|
00009410  2c 78 31 25 2c 79 31 25  2c 78 32 25 2c 79 32 25  |,x1%,y1%,x2%,y2%|
00009420  0d 3e 6c 10 48 25 3d ae  28 70 72 69 6e 74 24 29  |.>l.H%=.(print$)|
00009430  0d 3e 76 07 ea 20 85 0d  3e 80 23 ee 20 85 20 ea  |.>v.. ..>.#. . .|
00009440  20 f7 20 85 3a d9 23 48  25 3a f2 45 72 72 6f 72  | . .:.#H%:.Error|
00009450  50 72 69 6e 74 31 73 74  3a e1 0d 3e 8a 1f c8 99  |Print1st:..>....|
00009460  20 26 38 30 31 34 35 2c  48 25 2c 22 4a 69 67 57  | &80145,H%,"JigW|
00009470  6f 72 64 22 20 b8 20 4f  25 0d 3e 94 07 ea 20 85  |ord" . O%.>... .|
00009480  0d 3e 9e 34 ee 20 85 20  ea 20 f7 20 85 3a c8 99  |.>.4. . . . .:..|
00009490  26 38 30 31 34 39 2c 48  25 3a c8 99 26 38 30 31  |&80149,H%:..&801|
000094a0  34 35 2c 4f 25 3a d9 23  48 25 3a f2 45 72 72 6f  |45,O%:.#H%:.Erro|
000094b0  72 31 73 74 0d 3e a8 05  3a 0d 3e b2 25 c8 99 20  |r1st.>..:.>.%.. |
000094c0  26 38 30 31 34 33 20 b8  2c 2c 2c 70 6c 78 25 2c  |&80143 .,,,plx%,|
000094d0  70 62 79 25 2c 70 72 78  25 2c 70 74 79 25 0d 3e  |pby%,prx%,pty%.>|
000094e0  bc 45 62 25 21 30 3d 30  3a 62 25 21 34 3d 2d 28  |.Eb%!0=0:b%!4=-(|
000094f0  70 69 6e 66 6f 25 28 70  25 2c 31 29 2a 34 30 2b  |pinfo%(p%,1)*40+|
00009500  31 32 29 3a 62 25 21 38  3d 70 69 6e 66 6f 25 28  |12):b%!8=pinfo%(|
00009510  70 25 2c 30 29 2a 32 30  2b 34 30 3a 62 25 21 31  |p%,0)*20+40:b%!1|
00009520  32 3d 30 0d 3e c6 2b 62  25 21 31 36 3d 36 35 35  |2=0.>.+b%!16=655|
00009530  33 36 3a 62 25 21 32 30  3d 30 3a 62 25 21 32 34  |36:b%!20=0:b%!24|
00009540  3d 30 3a 62 25 21 32 38  3d 36 35 35 33 36 0d 3e  |=0:b%!28=65536.>|
00009550  d0 19 62 25 21 33 32 3d  70 6c 78 25 3a 62 25 21  |..b%!32=plx%:b%!|
00009560  33 36 3d 70 62 79 25 0d  3e da 3c c8 99 20 22 50  |36=pby%.>.<.. "P|
00009570  44 72 69 76 65 72 5f 47  69 76 65 52 65 63 74 61  |Driver_GiveRecta|
00009580  6e 67 6c 65 22 2c 25 31  30 31 2c 62 25 2c 62 25  |ngle",%101,b%,b%|
00009590  2b 31 36 2c 62 25 2b 33  32 2c 26 46 46 46 46 46  |+16,b%+32,&FFFFF|
000095a0  46 30 30 0d 3e e4 05 3a  0d 3e ee 2a c8 99 20 22  |F00.>..:.>.*.. "|
000095b0  50 44 72 69 76 65 72 5f  44 72 61 77 50 61 67 65  |PDriver_DrawPage|
000095c0  22 2c 31 2c 62 32 25 20  b8 20 66 31 25 2c 2c 66  |",1,b2% . f1%,,f|
000095d0  32 25 0d 3e f8 08 61 25  3d 30 0d 3f 02 1a 41 25  |2%.>..a%=0.?..A%|
000095e0  3d 30 3a d6 20 43 68 61  6e 67 65 42 63 6b 47 6e  |=0:. ChangeBckGn|
000095f0  64 43 6f 6c 0d 3f 0c 0a  c8 95 20 66 31 25 0d 3f  |dCol.?.... f1%.?|
00009600  16 0b 20 c8 91 20 30 2c  30 0d 3f 20 2f 20 f4 50  |.. .. 0,0.? / .P|
00009610  52 4f 43 50 75 7a 7a 52  65 63 74 28 77 25 2c 62  |ROCPuzzRect(w%,b|
00009620  32 25 21 30 2c 62 32 25  21 34 2c 62 32 25 21 38  |2%!0,b2%!4,b2%!8|
00009630  2c 62 32 25 21 31 32 29  0d 3f 2a 2c 20 78 31 25  |,b2%!12).?*, x1%|
00009640  3d 28 62 32 25 21 30 2d  32 32 29 20 81 20 32 30  |=(b2%!0-22) . 20|
00009650  3a 78 32 25 3d 28 62 32  25 21 38 2d 32 32 29 20  |:x2%=(b2%!8-22) |
00009660  81 20 32 30 0d 3f 34 2d  20 79 31 25 3d 28 62 32  |. 20.?4- y1%=(b2|
00009670  25 21 34 2b 38 29 20 81  20 2d 34 30 3a 79 32 25  |%!4+8) . -40:y2%|
00009680  3d 28 62 32 25 21 31 32  2b 38 29 20 81 20 2d 34  |=(b2%!12+8) . -4|
00009690  30 0d 3f 3e 1b 20 e7 20  79 31 25 3e 79 32 25 20  |0.?>. . y1%>y2% |
000096a0  8c 20 c8 94 20 79 31 25  2c 79 32 25 0d 3f 48 14  |. .. y1%,y2%.?H.|
000096b0  20 e7 20 78 31 25 3c 30  20 8c 20 78 31 25 3d 30  | . x1%<0 . x1%=0|
000096c0  0d 3f 52 2d 20 e7 20 78  31 25 3e 3d 70 69 6e 66  |.?R- . x1%>=pinf|
000096d0  6f 25 28 70 25 2c 30 29  20 8c 20 78 31 25 3d 70  |o%(p%,0) . x1%=p|
000096e0  69 6e 66 6f 25 28 70 25  2c 30 29 2d 31 0d 3f 5c  |info%(p%,0)-1.?\|
000096f0  2d 20 e7 20 78 32 25 3e  3d 70 69 6e 66 6f 25 28  |- . x2%>=pinfo%(|
00009700  70 25 2c 30 29 20 8c 20  78 32 25 3d 70 69 6e 66  |p%,0) . x2%=pinf|
00009710  6f 25 28 70 25 2c 30 29  2d 31 0d 3f 66 1a 20 41  |o%(p%,0)-1.?f. A|
00009720  25 3d 30 3a 42 25 3d 30  3a d6 20 43 68 61 6e 67  |%=0:B%=0:. Chang|
00009730  65 53 65 6c 0d 3f 70 34  20 41 25 3d 70 75 7a 7a  |eSel.?p4 A%=puzz|
00009740  69 6e 25 28 70 25 29 3a  42 25 3d 77 69 6e 64 25  |in%(p%):B%=wind%|
00009750  28 77 25 2c 32 30 29 20  80 20 25 31 3a 43 25 3d  |(w%,20) . %1:C%=|
00009760  73 63 72 61 74 63 68 25  0d 3f 7a 2d 20 44 25 3d  |scratch%.?z- D%=|
00009770  78 31 25 3a 45 25 3d 79  31 25 3a 46 25 3d 78 32  |x1%:E%=y1%:F%=x2|
00009780  25 3a 47 25 3d 79 32 25  3a d6 20 43 72 65 61 74  |%:G%=y2%:. Creat|
00009790  65 48 65 61 70 0d 3f 84  0f 20 d6 20 47 72 69 64  |eHeap.?.. . Grid|
000097a0  73 65 74 63 0d 3f 8e 0a  20 61 25 2b 3d 31 0d 3f  |setc.?.. a%+=1.?|
000097b0  98 23 20 ff 20 22 53 45  54 20 41 31 22 2b bd 28  |.# . "SET A1"+.(|
000097c0  36 34 2b 61 25 29 2b 22  20 22 2b c3 28 78 31 25  |64+a%)+" "+.(x1%|
000097d0  29 0d 3f a2 23 20 ff 20  22 53 45 54 20 41 32 22  |).?.# . "SET A2"|
000097e0  2b bd 28 36 34 2b 61 25  29 2b 22 20 22 2b c3 28  |+.(64+a%)+" "+.(|
000097f0  79 31 25 29 0d 3f ac 23  20 ff 20 22 53 45 54 20  |y1%).?.# . "SET |
00009800  41 33 22 2b bd 28 36 34  2b 61 25 29 2b 22 20 22  |A3"+.(64+a%)+" "|
00009810  2b c3 28 78 32 25 29 0d  3f b6 23 20 ff 20 22 53  |+.(x2%).?.# . "S|
00009820  45 54 20 41 34 22 2b bd  28 36 34 2b 61 25 29 2b  |ET A4"+.(64+a%)+|
00009830  22 20 22 2b c3 28 79 32  25 29 0d 3f c0 2e 20 c8  |" "+.(y2%).?.. .|
00009840  99 20 22 50 44 72 69 76  65 72 5f 47 65 74 52 65  |. "PDriver_GetRe|
00009850  63 74 61 6e 67 6c 65 22  2c 2c 62 32 25 20 b8 20  |ctangle",,b2% . |
00009860  66 31 25 2c 2c 66 32 25  0d 3f ca 05 ce 0d 3f d4  |f1%,,f2%.?....?.|
00009870  1a 41 25 3d 33 3a d6 20  43 68 61 6e 67 65 42 63  |.A%=3:. ChangeBc|
00009880  6b 47 6e 64 43 6f 6c 0d  3f de 05 3a 0d 3f e8 1a  |kGndCol.?..:.?..|
00009890  c8 99 20 22 50 44 72 69  76 65 72 5f 45 6e 64 4a  |.. "PDriver_EndJ|
000098a0  6f 62 22 2c 48 25 0d 3f  f2 07 f7 20 85 0d 3f fc  |ob",H%.?... ..?.|
000098b0  1d c8 99 20 22 50 44 72  69 76 65 72 5f 53 65 6c  |... "PDriver_Sel|
000098c0  65 63 74 4a 6f 62 22 2c  4f 25 0d 40 06 07 f7 20  |ectJob",O%.@... |
000098d0  85 0d 40 10 08 d9 23 48  25 0d 40 1a 05 e1 0d 40  |..@...#H%.@....@|
000098e0  24 05 3a 0d 40 2e 18 dd  20 f2 50 72 69 6e 74 57  |$.:.@... .PrintW|
000098f0  6f 72 64 4c 69 73 74 28  70 25 29 0d 40 38 29 ea  |ordList(p%).@8).|
00009900  20 61 64 64 72 31 25 2c  61 64 64 72 32 25 2c 6e  | addr1%,addr2%,n|
00009910  25 2c 6f 25 2c 6e 77 25  2c 63 25 2c 74 24 2c 64  |%,o%,nw%,c%,t$,d|
00009920  25 2c 6d 25 0d 40 42 16  61 64 64 72 31 25 3d 70  |%,m%.@B.addr1%=p|
00009930  75 7a 7a 69 6e 25 28 70  25 29 0d 40 4c 1b 61 64  |uzzin%(p%).@L.ad|
00009940  64 72 32 25 3d 61 64 64  72 31 25 2b 61 64 64 72  |dr2%=addr1%+addr|
00009950  31 25 21 31 36 0d 40 56  0f 6f 25 3d 61 64 64 72  |1%!16.@V.o%=addr|
00009960  32 25 21 30 0d 40 60 0c  2a 46 58 20 33 20 31 30  |2%!0.@`.*FX 3 10|
00009970  0d 40 6a 2b f1 20 c4 70  77 69 64 74 68 25 2f 32  |.@j+. .pwidth%/2|
00009980  2d 38 2c 22 20 22 29 3b  22 4a 69 67 57 6f 72 64  |-8," ");"JigWord|
00009990  20 77 6f 72 64 20 6c 69  73 74 22 0d 40 74 2b f1  | word list".@t+.|
000099a0  20 c4 70 77 69 64 74 68  25 2f 32 2d 38 2c 22 20  | .pwidth%/2-8," |
000099b0  22 29 3b 22 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |");"------------|
000099c0  2d 2d 2d 2d 2d 22 0d 40  7e 09 f1 3a f1 3a f1 0d  |-----".@~..:.:..|
000099d0  40 88 0f e3 20 6e 25 3d  32 20 b8 20 6f 25 0d 40  |@... n%=2 . o%.@|
000099e0  92 0e 20 61 64 64 72 32  25 2b 3d 34 0d 40 9c 13  |.. addr2%+=4.@..|
000099f0  20 e7 20 21 61 64 64 72  32 25 3c 3e 30 20 8c 0d  | . !addr2%<>0 ..|
00009a00  40 a6 1b 20 20 61 64 64  72 33 25 3d 61 64 64 72  |@..  addr3%=addr|
00009a10  31 25 2b 21 61 64 64 72  32 25 0d 40 b0 1b 20 20  |1%+!addr2%.@..  |
00009a20  6e 77 25 3d 21 61 64 64  72 33 25 3a 61 64 64 72  |nw%=!addr3%:addr|
00009a30  33 25 2b 3d 34 0d 40 ba  1d 20 20 74 24 3d c3 28  |3%+=4.@..  t$=.(|
00009a40  6e 25 29 2b 22 20 6c 65  74 74 65 72 20 77 6f 72  |n%)+" letter wor|
00009a50  64 22 0d 40 c4 17 20 20  e7 20 6e 77 25 3e 31 20  |d".@..  . nw%>1 |
00009a60  8c 20 74 24 2b 3d 22 73  22 0d 40 ce 19 20 20 20  |. t$+="s".@..   |
00009a70  f1 20 74 24 27 c4 a9 28  74 24 29 2c 22 2d 22 29  |. t$'..(t$),"-")|
00009a80  3a f1 0d 40 d8 1f 20 20  20 6d 25 3d 70 77 69 64  |:..@..   m%=pwid|
00009a90  74 68 25 20 81 20 28 6e  25 2b 31 29 3a 64 25 3d  |th% . (n%+1):d%=|
00009aa0  30 0d 40 e2 13 20 20 20  e3 20 63 25 3d 31 20 b8  |0.@..   . c%=1 .|
00009ab0  20 6e 77 25 0d 40 ec 0d  20 20 20 20 64 25 2b 3d  | nw%.@..    d%+=|
00009ac0  31 0d 40 f6 27 20 20 20  20 c8 99 20 22 4f 53 5f  |1.@.'    .. "OS_|
00009ad0  57 72 69 74 65 4e 22 2c  61 64 64 72 33 25 2c 6e  |WriteN",addr3%,n|
00009ae0  25 3a f1 20 22 20 22 3b  0d 41 00 26 20 20 20 20  |%:. " ";.A.&    |
00009af0  e7 20 64 25 3d 6d 25 20  8c 20 c8 99 20 22 4f 53  |. d%=m% . .. "OS|
00009b00  5f 4e 65 77 4c 69 6e 65  22 3a 64 25 3d 30 0d 41  |_NewLine":d%=0.A|
00009b10  0a 12 20 20 20 20 61 64  64 72 33 25 2b 3d 6e 25  |..    addr3%+=n%|
00009b20  0d 41 14 08 20 20 20 ed  0d 41 1e 0c 20 20 20 f1  |.A..   ..A..   .|
00009b30  3a f1 3a f1 0d 41 28 06  20 cd 0d 41 32 05 ed 0d  |:.:..A(. ..A2...|
00009b40  41 3c 0b 2a 46 58 20 33  20 30 0d 41 46 05 e1 0d  |A<.*FX 3 0.AF...|
00009b50  41 50 05 3a 0d 41 5a 37  f4 20 49 66 20 79 6f 75  |AP.:.AZ7. If you|
00009b60  20 74 68 69 6e 6b 20 74  68 65 20 63 6f 6d 6d 65  | think the comme|
00009b70  6e 74 73 20 61 72 65 20  62 61 64 20 69 6e 20 74  |nts are bad in t|
00009b80  68 69 73 20 70 72 6f 67  72 61 6d 0d 41 64 38 f4  |his program.Ad8.|
00009b90  20 79 6f 75 20 73 68 6f  75 6c 64 20 68 61 76 65  | you should have|
00009ba0  20 73 65 65 6e 20 74 68  65 20 6d 61 63 68 69 6e  | seen the machin|
00009bb0  65 2d 63 6f 64 65 20 73  6f 75 72 63 65 20 63 6f  |e-code source co|
00009bc0  64 65 2e 0d 41 6e 36 f4  20 49 20 61 70 6f 6c 6f  |de..An6. I apolo|
00009bd0  67 69 73 65 20 69 66 20  74 68 65 72 65 20 61 72  |gise if there ar|
00009be0  65 20 73 6f 6d 65 20 73  69 6c 6c 79 20 77 6f 72  |e some silly wor|
00009bf0  64 73 20 69 6e 20 74 68  65 0d 41 78 11 f4 20 64  |ds in the.Ax.. d|
00009c00  69 63 74 69 6f 6e 61 72  79 2e 0d 41 82 3a f4 20  |ictionary..A.:. |
00009c10  41 6e 79 6f 6e 65 20 77  68 6f 20 64 6f 65 73 6e  |Anyone who doesn|
00009c20  27 74 20 67 65 74 20 74  68 65 20 72 6f 6f 6d 20  |'t get the room |
00009c30  31 30 31 20 62 69 74 2c  20 67 6f 20 61 6e 64 20  |101 bit, go and |
00009c40  72 65 61 64 0d 41 8c 3a  f4 20 27 31 39 38 34 27  |read.A.:. '1984'|
00009c50  20 62 79 20 47 65 6f 72  67 65 20 4f 72 77 65 6c  | by George Orwel|
00009c60  6c 2e 20 49 74 27 73 20  61 20 6c 6f 74 20 6d 6f  |l. It's a lot mo|
00009c70  72 65 20 69 6e 74 65 72  65 73 74 69 6e 67 0d 41  |re interesting.A|
00009c80  96 30 f4 20 74 68 61 74  20 74 68 69 73 2e 20 41  |.0. that this. A|
00009c90  6e 64 20 61 20 6c 6f 74  20 65 61 73 69 65 72 20  |nd a lot easier |
00009ca0  74 6f 20 75 6e 64 65 72  73 74 61 6e 64 2e 0d 41  |to understand..A|
00009cb0  a0 05 3a 0d 41 aa 3b f4  20 49 20 74 68 69 6e 6b  |..:.A.;. I think|
00009cc0  20 77 65 20 73 68 6f 75  6c 64 20 64 6f 20 61 20  | we should do a |
00009cd0  73 75 72 76 65 79 2e 20  49 27 6d 20 70 72 6f 67  |survey. I'm prog|
00009ce0  72 61 6d 6d 69 6e 67 20  61 74 20 74 68 65 0d 41  |ramming at the.A|
00009cf0  b4 3a f4 20 6d 6f 6d 65  6e 74 20 6f 6e 20 41 52  |.:. moment on AR|
00009d00  4d 42 45 2c 20 77 69 74  68 20 72 65 64 20 74 65  |MBE, with red te|
00009d10  78 74 20 6f 6e 20 62 6c  61 63 6b 2e 20 57 68 61  |xt on black. Wha|
00009d20  74 20 63 6f 6c 6f 75 72  0d 41 be 25 f4 20 73 63  |t colour.A.%. sc|
00009d30  68 65 6d 65 73 20 64 6f  65 73 20 65 76 65 72 79  |hemes does every|
00009d40  6f 6e 65 20 65 6c 73 65  20 75 73 65 3f 0d 41 c8  |one else use?.A.|
00009d50  05 3a 0d 41 d2 05 3a 0d  41 dc 05 3a 0d 41 e6 1e  |.:.A..:.A..:.A..|
00009d60  44 6f 6e 27 74 20 79 6f  75 20 6a 75 73 74 20 6c  |Don't you just l|
00009d70  75 75 75 72 76 65 20 69  74 21 0d 41 f0 04 0d 41  |uuurve it!.A...A|
00009d80  fa 0c 2a 2a 2a 2a 2a 2a  2a 2a 0d ff              |..********..|
00009d8c