Home » Archimedes archive » Archimedes World » AW-1993-07.adf » AWJuly93 » !AWJuly93/Goodies/Poly/!Poly/!RunImage

!AWJuly93/Goodies/Poly/!Poly/!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-1993-07.adf » AWJuly93
Filename: !AWJuly93/Goodies/Poly/!Poly/!RunImage
Read OK:
File size: 7F1B bytes
Load address: 0000
Exec address: 0000
File contents
   10REM ><POLY$DIR>.!RunImage
   20ON ERROR PROCErrorTrap
   30*KEY1 EDIT|M
   40*<POLY$DIR>.roundset
   50DIM chr(8,8),val(8),pent(13,8,5),pentvar(12),rot$(12),hexvar(35)
   60DIM hex(36,8,6),disp(25,25),disp1(25,25),disp2(25,25),disp3(25,25)
   70DIM disp4(25,25),an_x(20,12),an_y(20,12),an_p(20,12),an_v(20,12),line$(100)
   80DIM an_n$(20),an_grx(20),an_gry(20),col(12),colp(12),poly(6,6),err$(10)
   90DIM ypos(24),menext(12,4),menu$(12,12),menux(12,12),menuy(12,12)
  100DIM menset$(12,12),name% 16
  110*fx200,1
  120PROCScreen
  130time=TIME
  140VDU 23;8202;0;0;0;
  150PROCSetup
  160REPEAT UNTIL TIME-time>300
  170MODE 13
  180VDU 23;8202;0;0;0;
  190*<POLY$DIR>.!Palette
  200PROCMainMenu
  210MOUSE OFF
  220VDU 4
  230*<POLY$DIR>.Default
  240*<POLY$DIR>.!PalDef
  250COLOUR 3
  260CLS:PRINTTAB(17,14)"B Y E"
  270END
  280:
  290:
  300DEFPROCMainMenu
  310GCOL back TINT 64
  320CLG
  330PROCTitle("Main Menu")
  340PROCMenuSet(2)
  350tf=FALSE
  360REPEAT
  370  PROCMenuChoice(2,ch)
  380  CASE ch OF
  390    WHEN 1: PROCTutorial:PROCMainMenu
  400    WHEN 2: PROCPentomino(1000,700):PROCMainMenu
  410    WHEN 3: PROCHexomino(1020,660):PROCMainMenu
  420    WHEN 4: PROCRectangle:PROCMainMenu
  430    WHEN 5: PROCAnimalMenu:PROCMainMenu
  440    WHEN 6: PROCPentoShapes:PROCMainMenu
  450    WHEN 7: PROCTessellate:PROCMainMenu
  460    WHEN 8: PROCAccess:PROCMainMenu
  470    WHEN 9: IF FNYesNo("Are you sure?") tf=TRUE
  480  ENDCASE
  490UNTIL tf
  500ENDPROC
  510:
  520:
  530DEFPROCAccess
  540IF menset$(1,1)="Y" THEN
  550  PROCTitle("Teacher Control")
  560  GCOL 63
  570  MOVE 200,800:PRINT "Access Code:"
  580  p$=""
  590  *fx 15,0
  600  REPEAT
  610    a$=INKEY$(5)
  620    p$=p$+a$
  630    IF a$<>"" MOVE 600+LEN(p$)*32,800:PRINT"-"
  640  UNTIL a$=CHR$(13) OR LEN(p$)>8 OR p$=pass$
  650  IF p$<>pass$ ENDPROC
  660ENDIF
  670PROCTeacherControl(1)
  680ENDPROC
  690:
  700:
  710DEFPROCSetAccess
  720ok$="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
  730GCOL 63
  740MOVE 200,400:PRINT"Old Access Code: ";pass$
  750MOVE 200,300:PRINT"New Access Code: "
  760PROCInput(744,300,8,ok$,p$)
  770GCOL back-128 TINT 64
  780RECTANGLEFILL 20,10,1200,50
  790IF p$<>"" THEN
  800  IF FNYesNo("Set Password?") THEN
  810    pass$=p$
  820    pw=OPENOUT("<POLY$DIR>.Password")
  830    FOR i=1 TO LEN(p$)
  840      PRINT#pw,CHR$(ASC(MID$(p$,i,1))-43)
  850    NEXTi
  860    PRINT#pw,"]"
  870    CLOSE#pw
  880  ENDIF
  890ENDIF
  900GCOL back-128 TINT 64
  910RECTANGLEFILL 20,10,1200,400
  920GCOL fore TINT 192
  930MOVE 150,40:PRINT "'X'-Exit  'S'-Save  '� �'-Menus"
  940MOUSE RECTANGLE 1016,48,172,800
  950ENDPROC
  960:
  970:
  980DEFPROCInput(x%,y%,l%,ok$,RETURN word$)
  990*fx15,0
 1000word$=""
 1010MOUSE OFF
 1020REPEAT
 1030  c$=INKEY$(5)
 1040  GCOL 8 TINT 192:LINE x%,y%-36,x%+32,y%-36:GCOL 63 TINT 192
 1050  IF c$<>"" AND INSTR(ok$,c$)<>0 AND LEN(word$)<l% THEN
 1060    GCOL back-128 TINT 64:LINE x%,y%-36,x%+32,y%-36:GCOL 63 TINT 192
 1070    MOVE x%,y%
 1080    PRINT c$
 1090    word$=word$+c$
 1100    x%+=32
 1110  ENDIF
 1120  IF INKEY(-113) word$="":MOUSE ON:ENDPROC
 1130  IF INKEY(-90) AND LEN(word$)>0 THEN
 1140    GCOL back-128 TINT 64
 1150    x%-=32
 1160    RECTANGLEFILL x%,y%,64,-40
 1170    word$=LEFT$(word$)
 1180    *fx15,0
 1190    GCOL 63 TINT 192
 1200  ENDIF
 1210UNTIL c$=CHR$(13)
 1220MOUSE ON
 1230ENDPROC
 1240:
 1250:
 1260DEFPROCTeacherControl(menu%)
 1270LOCAL on$,off$
 1280PROCTitle("Teacher Control")
 1290GCOL fore TINT 192
 1300MOVE 1000,900:PRINT "ON  OFF"
 1310MOVE 150,40:PRINT "'X'-Exit  'S'-Save  '� �'-Menus"
 1320PROCMenuSet(menu%)
 1330i=1
 1340REPEAT
 1350  GCOL fore TINT 192
 1360  RECTANGLE 1016,848-(i-1)*90,40,-40
 1370  RECTANGLE 1148,848-(i-1)*90,40,-40
 1380  i+=1
 1390UNTIL menu$(menu%,i)="z"
 1400i=1
 1410REPEAT
 1420  IF menset$(menu%,i)="Y":on$="X":off$=" "
 1430  IF menset$(menu%,i)="N":on$=" ":off$="X"
 1440  IF menset$(menu%,i)="F":on$="X":off$="X"
 1450  MOVE 1152,840-(i-1)*90:PRINT off$
 1460  MOVE 1020,840-(i-1)*90:PRINT on$
 1470  i+=1
 1480UNTIL menset$(menu%,i)="E"
 1490MOUSE RECTANGLE 1016,48,172,800
 1500MOUSE ON 1
 1510REPEAT
 1520  REPEAT
 1530    REPEAT
 1540      MOUSEmsx,msy,msstatus
 1550      IF INKEY(-2) AND INKEY(-56) AND menu%=1 PROCSetAccess
 1560      IF INKEY(-67) ENDPROC
 1570      IF INKEY(-122) THEN
 1580        menu%+=1
 1590        IF menu%>5 menu%=1
 1600        PROCTeacherControl(menu%)
 1610        IF saveflag ENDPROC
 1620      ENDIF
 1630      IF INKEY(-26) THEN
 1640        menu%-=1
 1650        IF menu%<1 menu%=5
 1660        PROCTeacherControl(menu%)
 1670      ENDIF
 1680      IF INKEY(-82) THEN
 1690        PROCSaveConfig(saveflag)
 1700        IF saveflag ENDPROC
 1710        GCOL back-128 TINT 64
 1720        RECTANGLEFILL 20,10,1200,50
 1730        GCOL fore TINT 192
 1740        MOVE 150,40:PRINT "'X'-Exit  'S'-Save  '� �'-Menus"
 1750      ENDIF
 1760    UNTIL msstatus<>0
 1770    item=1:choice=0
 1780    boxx=1016:boxy=848
 1790    REPEAT
 1800      IF msx>boxx AND msx<boxx+40 AND msy<boxy AND msy>boxy-40 choice=item
 1810      IF msx>boxx+132 AND msx<boxx+172 AND msy<boxy AND msy>boxy-40 choice=-item
 1820      item+=1
 1830      boxy=boxy-90
 1840    UNTIL item=10 OR choice<>0
 1850  UNTIL choice<>0
 1860  onoff$=menset$(menu%,ABS(choice))
 1870  IF onoff$="Y" AND choice<0 THEN
 1880    GCOL back-128 TINT 64
 1890    RECTANGLEFILL boxx+4,boxy+86,32,-32
 1900    GCOL fore TINT 192
 1910    MOVE boxx+136,boxy+82
 1920    PRINT "X"
 1930    menset$(menu%,ABS(choice))="N"
 1940  ENDIF
 1950  IF onoff$="N" AND choice>0 THEN
 1960    GCOL back-128 TINT 64
 1970    RECTANGLEFILL boxx+136,boxy+86,32,-32
 1980    GCOL fore TINT 192
 1990    MOVE boxx+4,boxy+82
 2000    PRINT "X"
 2010    menset$(menu%,ABS(choice))="Y"
 2020  ENDIF
 2030UNTIL FALSE
 2040ENDPROC
 2050:
 2060:
 2070DEFPROCSaveConfig(RETURN saveflag)
 2080saveflag=FALSE
 2090GCOL back-128 TINT 64
 2100RECTANGLEFILL 20,10,1200,50
 2110IF FNYesNo("Save Options?") THEN
 2120  cf=OPENUP("<POLY$DIR>.configure")
 2130  FOR i=1 TO 5
 2140    j=1
 2150    REPEAT
 2160      PRINT#cf,menset$(i,j)
 2170      j+=1
 2180    UNTIL menset$(i,j-1)="E"
 2190  NEXTi
 2200  CLOSE#cf
 2210  saveflag=TRUE
 2220ENDIF
 2230MOUSE RECTANGLE 1016,48,172,800
 2240ENDPROC
 2250:
 2260:
 2270DEFPROCScreen
 2280*SCREENLOAD <POLY$DIR>.Title
 2290ENDPROC
 2300:
 2310:
 2320DEFPROCAnimalMenu
 2330PROCTitle("PentAnimals")
 2340PROCMenuSet(3)
 2350tf=FALSE
 2360REPEAT
 2370  PROCMenuChoice(3,ch)
 2380  CASE ch OF
 2390    WHEN 1,2,3,4,5,6,7,8: PROCPuzzles(ch):PROCAnimalMenu
 2400    WHEN 9: tf=TRUE
 2410  ENDCASE
 2420UNTIL tf
 2430ENDPROC
 2440:
 2450:
 2460DEFPROCPentoShapes
 2470PROCTitle("PentoShapes")
 2480PROCMenuSet(5)
 2490tf=FALSE
 2500REPEAT
 2510  PROCMenuChoice(5,ch)
 2520  CASE ch OF
 2530    WHEN 1,2,3,4,5: PROCPuzzles(8+ch):PROCPentoShapes
 2540    WHEN 6: tf=TRUE
 2550  ENDCASE
 2560UNTIL tf
 2570ENDPROC
 2580:
 2590:
 2600DEFPROCPentomino(xmin,ymin)
 2610sq=5
 2620gap=40
 2630PROCTitle("Pentomino Designer")
 2640poly$="":var$=""
 2650PROCGridPlot(88,904,4,3)
 2660PROCMenuSet(6)
 2670PROCGrid(1000,900,sq,sq,2,1,4,40)
 2680REPEAT
 2690  PROCClear(xmin,ymin)
 2700  REPEAT
 2710    PROCCreatePoly(xmin,ymin,sq,gap)
 2720    IF LEN(poly$)=12 PROCWellDone2:ENDPROC
 2730  UNTIL ch=2
 2740UNTIL FNYesNo("Are you sure?")
 2750chr()=0
 2760ENDPROC
 2770:
 2780:
 2790DEFPROCHexomino(xmin,ymin)
 2800sq=6
 2810gap=20
 2820PROCTitle("Hexomino Designer")
 2830poly$="":var$=""
 2840PROCGridPlot(28,908,7,5)
 2850PROCMenuSet(7)
 2860PROCGrid(1020,900,sq,sq,2,1,4,40)
 2870REPEAT
 2880  PROCClear(xmin,ymin)
 2890  REPEAT
 2900    PROCCreatePoly(xmin,ymin,sq,gap)
 2910    IF LEN(poly$)=35 PROCWellDone2:ENDPROC
 2920  UNTIL ch=2
 2930UNTIL FNYesNo("Are you sure?")
 2940chr()=0
 2950ENDPROC
 2960:
 2970:
 2980DEFPROCGridPlot(x%,y%,xext%,yext%)
 2990LOCAL i,j
 3000y%-=sq*gap+20
 3010yo%=y%
 3020FOR i=1 TO xext%
 3030  FOR j=1 TO yext%
 3040    SYS "OS_SpriteOp",256+34,S%,STR$(sq),x%,y%,0
 3050    y%-=sq*gap+20
 3060  NEXTj
 3070  y%=yo%
 3080  x%+=sq*gap+20
 3090NEXTi
 3100ENDPROC
 3110:
 3120:
 3130DEFPROCPuzzles(an)
 3140erroff=0:sq=5:gap=40:poly$="":dflag=FALSE
 3150PROCPentanimals(an)
 3160PROCMenuSet(10)
 3170REPEAT
 3180  tf1=FALSE
 3190  IF LEN(poly$)=12 AND an<>0 PROCWellDone:tf1=TRUE
 3200  IF NOT dflag AND an=0 AND LEN(poly$)<>0 dflag=TRUE:PROCDispPent(p,v)
 3210  IF NOT tf1 THEN PROCMenuChoice(10,ch)
 3220    CASE ch OF
 3230      WHEN 1: IF dflag PROCMove(-1,0)
 3240      WHEN 2: IF dflag PROCMove(1,0)
 3250      WHEN 3: IF dflag PROCMove(0,1)
 3260      WHEN 4: IF dflag PROCMove(0,-1)
 3270      WHEN 5: IF dflag PROCFix
 3280      WHEN 6: PROCRemove
 3290      WHEN 7: IF dflag AND p<>6 PROCFlip
 3300      WHEN 8: IF FNYesNo("Are you sure?") tf1=TRUE
 3310      WHEN 9: IF NOT dflag AND LEN(poly$)<>12 PROCSelectPent(an)
 3320      WHEN 10: IF dflag PROCPolyColour
 3330    ENDCASE
 3340  ENDIF
 3350UNTIL tf1
 3360FOR i=1 TO 12
 3370  col(i)=colp(i)
 3380NEXT i
 3390ENDPROC
 3400:
 3410:
 3420DEFPROCWellDone
 3430PRINTCHR$(7);
 3440GCOL fore TINT 192
 3450MOVE 100,700
 3460PRINT"Great Work"
 3470MOVE 116,650
 3480PRINT"Well Done"
 3490PROCSavePic
 3500PROCContinue
 3510ENDPROC
 3520:
 3530:
 3540DEFPROCWellDone2
 3550GCOL fore TINT 192
 3560MOVE 272,160
 3570PRINTCHR$(7);
 3580PRINT"Great Work - Well Done!"
 3590PROCContinue
 3600ENDPROC
 3610:
 3620:
 3630DEFPROCTutorial
 3640LOCAL i,j,k,pr$,pr1$
 3650PROCTitle("Polyomino Tutorial")
 3660VDU 4
 3670COLOUR back TINT 64
 3680i=1:k=5
 3690REPEAT
 3700  pr$=line$(i)
 3710  IF LEN(pr$)<>1 THEN
 3720    pr$=RIGHT$(line$(i),LEN(line$(i))-2)
 3730    col=VAL(LEFT$(line$(i),2))
 3740    WHILE LEN(pr$)<>40
 3750      pr$=pr$+" "
 3760    ENDWHILE
 3770    COLOUR col
 3780    FOR j=1 TO 40
 3790      pr1$=MID$(pr$,j,1)
 3800      PRINTTAB(j-1,k)pr1$;
 3810      IF INKEY(-113) ENDPROC
 3820      time=TIME:REPEAT UNTIL TIME-time>4
 3830    NEXTj
 3840  ENDIF
 3850  IF pr$="!" k+=1
 3860  IF pr$="@" PROCDom:k+=4
 3870  IF pr$="#" PROCContinue:VDU4
 3880  IF pr$="$" THEN
 3890    GCOL0,back-128 TINT 64
 3900    RECTANGLE FILL 0,0,1280,860
 3910    k=5
 3920  ENDIF
 3930  IF pr$="%" PROCTri
 3940  IF pr$="^" PROCTetra
 3950  i+=1:k+=1
 3960UNTIL line$(i)="zzz"
 3970PROCContinue
 3980ENDPROC
 3990:
 4000:
 4010DEFPROCContinue
 4020PROCMenuSet(9)
 4030PROCMenuChoice(9,ch)
 4040GCOL0,back-128 TINT 64
 4050RECTANGLE FILL 500,6,300,60
 4060ENDPROC
 4070:
 4080:
 4090DEFPROCTri
 4100GCOL0,48
 4110RECTANGLEFILL 100,600,300,100
 4120RECTANGLEFILL 700,600,200,100
 4130RECTANGLEFILL 700,500,100,100
 4140GCOL0,60
 4150RECTANGLE 100,600,100,100
 4160RECTANGLE 200,600,100,100
 4170RECTANGLE 300,600,100,100
 4180RECTANGLE 700,600,100,100
 4190RECTANGLE 800,600,100,100
 4200RECTANGLE 700,500,100,100
 4210ENDPROC
 4220:
 4230:
 4240DEFPROCTetra
 4250LOCAL i
 4260GCOL0,48
 4270RECTANGLEFILL 200,150,50,200
 4280RECTANGLEFILL 350,200,100,100
 4290RECTANGLEFILL 550,175,50,150:RECTANGLEFILL 600,275,50,50
 4300RECTANGLEFILL 750,175,50,150:RECTANGLEFILL 800,225,50,50
 4310RECTANGLEFILL 950,250,100,50:RECTANGLEFILL 1000,200,100,50
 4320GCOL 0,60
 4330FOR i=1 TO 4
 4340  RECTANGLE 200,100+i*50,50,50
 4350NEXT i
 4360FOR i=1 TO 2
 4370  RECTANGLE 300+i*50,200,50,50
 4380  RECTANGLE 300+i*50,250,50,50
 4390  RECTANGLE 900+i*50,250,50,50
 4400  RECTANGLE 950+i*50,200,50,50
 4410NEXT i
 4420FOR i=1 TO 3
 4430  RECTANGLE 550,125+i*50,50,50
 4440  RECTANGLE 750,125+i*50,50,50
 4450NEXT i
 4460RECTANGLE 600,275,50,50
 4470RECTANGLE 800,225,50,50
 4480ENDPROC
 4490:
 4500:
 4510DEFPROCDom
 4520GCOL0,0
 4530RECTANGLEFILL 490,317,300,150
 4540GCOL0,63
 4550RECTANGLE 500,327,280,130
 4560RECTANGLE 500,327,140,130
 4570CIRCLEFILL 570,397,10
 4580CIRCLEFILL 675,425,10
 4590CIRCLEFILL 745,360,12
 4600CIRCLEFILL 745,425,12
 4610CIRCLEFILL 675,360,10
 4620ENDPROC
 4630:
 4640:
 4650DEFPROCRectangle
 4660PROCTitle("Rectangle Menu")
 4670PROCMenuSet(4)
 4680REPEAT
 4690  tf1=FALSE
 4700  PROCMenuChoice(4,ch)
 4710  CASE ch OF
 4720    WHEN 1,2,3: PROCPuzzles(13+ch):PROCRectangle
 4730    WHEN 4: tf1=TRUE
 4740  ENDCASE
 4750UNTIL tf1
 4760ENDPROC
 4770:
 4780:
 4790DEFPROCMenuSet(menu)
 4800LOCAL i
 4810VDU5
 4820i=1
 4830REPEAT
 4840  rect=LEN(menu$(menu,i))*32+8
 4850  mx=menux(menu,i):my=menuy(menu,i)
 4860  GCOL 10 TINT 0
 4870  RECTANGLE FILL mx-12,my+16,rect+16,-56
 4880  GCOL 10 TINT 192
 4890  RECTANGLE FILL mx-4,my+8,rect+8,-48
 4900  MOVE mx-12,my-40:MOVE mx-4,my-40:PLOT&55,mx-4,my-32
 4910  MOVE mx+rect-4,my+8:MOVE mx+rect+4,my+8:PLOT&55,mx+rect+4,my+16
 4920  GCOL 10 TINT 64
 4930  IF menset$(menu,i)="N" GCOL 20 TINT 64
 4940  RECTANGLE FILL mx-4,my-32,rect,40
 4950  GCOL fore TINT 192
 4960  MOVE mx,my
 4970  IF menset$(menu,i)="N" GCOL 20
 4980  PRINT menu$(menu,i)
 4990  i+=1
 5000UNTIL menu$(menu,i)="z"
 5010IF menu=10 THEN
 5020  FOR i=0 TO 5
 5030    GCOL 0,col(i+1)
 5040    RECTANGLEFILL 476+(i*28),168,28,-18
 5050    GCOL 0,col(i+7)
 5060    RECTANGLEFILL 476+(i*28),146,28,-18
 5070  NEXT i
 5080ENDIF
 5090IF menu=1 THEN
 5100  FOR i=0 TO 5
 5110    GCOL 0,col(i+1)
 5120    RECTANGLEFILL 556+(i*28),576,28,-18
 5130    GCOL 0,col(i+7)
 5140    RECTANGLEFILL 556+(i*28),556,28,-18
 5150  NEXT i
 5160ENDIF
 5170ENDPROC
 5180:
 5190:
 5200DEFPROCTitle(title$)
 5210len=LEN(title$)
 5220x=640-32*len/2
 5230GCOL back TINT 64:CLG
 5240VDU5
 5250GCOL 0:GCOL back
 5260MOVE x-8,950:PRINT title$
 5270GCOL fore TINT 192
 5280MOVE x,958:PRINT title$
 5290ENDPROC
 5300:
 5310:
 5320DEFFNYesNo(ques$)
 5330PRINT CHR$(7);CHR$(7)
 5340GCOL 63 TINT 192
 5350VDU 5
 5360MOVE 332,50
 5370PRINT ques$
 5380PROCMenuSet(8)
 5390PROCMenuChoice(8,ch1)
 5400GCOL 0,back-128 TINT 64
 5410RECTANGLE FILL 330,10,660,60:GCOL fore TINT 192
 5420IF ch1=2:=FALSE
 5430:=TRUE
 5440:
 5450:
 5460DEFPROCGrid(grx%,gry%,sqx,sqy,c1,c2,c3,gap)
 5470LOCAL i%,j%
 5480FORi%=1TOsqx
 5490  FORj%=1TOsqy
 5500    IF c1=c2 AND c2=c3 THEN
 5510      PROCButtoff(grx%+(i%-1)*gap,gry%-j%*gap,c1,gap)
 5520    ELSE
 5530      PROCButton(grx%+(i%-1)*gap,gry%-j%*gap,c1,c2,c3,gap)
 5540    ENDIF
 5550  NEXT
 5560NEXT
 5570ENDPROC
 5580:
 5590:
 5600DEFPROCCreatePoly(xmin,ymin,sq,gap)
 5610sqcnt=0
 5620MOUSE ON 1
 5630MOUSE RECTANGLE xmin,ymin-190,sq*40-8,sq*40-8+190
 5640REPEAT
 5650  REPEAT MOUSE msx,msy,msstatus:UNTILmsstatus=0
 5660  REPEAT
 5670    MOUSEmsx,msy,msstatus
 5680  UNTIL msstatus<>0
 5690  IF sq=5 PROCMenuChoice(6,ch)
 5700  IF sq=6 PROCMenuChoice(7,ch)
 5710  IF ch=1 THEN
 5720    tot=0
 5730    FORi=1TO8:FORj=1TO8:tot+=chr(i,j):NEXTj:NEXTi
 5740    IF tot<>0 THEN
 5750      PROCCalc
 5760      IF FNCheckPoly THEN
 5770        PROCClear(xmin,ymin)
 5780        PROCFlash(1,2,8)
 5790        ENDPROC
 5800      ELSE
 5810        PROCError(err)
 5820        PROCClear(xmin,ymin)
 5830        ENDPROC
 5840      ENDIF
 5850    ENDIF
 5860  ENDIF
 5870  IF msy>ymin PROCOnOff(xmin,ymin)
 5880UNTIL ch=2
 5890ENDPROC
 5900:
 5910:
 5920DEFPROCClear(xmin,ymin)
 5930FORi=1TO8
 5940  FORj=1TO8
 5950    IF chr(i,j)=1 PROCButton(xmin+(i-1)*40,ymin+(-j+sq)*40,2,1,4,40)
 5960    chr(i,j)=0
 5970  NEXTj
 5980NEXTi
 5990ENDPROC
 6000:
 6010:
 6020DEFPROCOnOff(xmin,ymin)
 6030xp=INT((msx-xmin)/40)+1
 6040yp=sq-INT((msy-ymin)/40)
 6050IF chr(xp,yp)=1 THEN
 6060  chr(xp,yp)=0
 6070  sqcnt-=1
 6080  PROCButton(xmin+(xp-1)*40,ymin+(-yp+sq)*40,2,1,4,40)
 6090ELSE
 6100  chr(xp,yp)=1
 6110  sqcnt+=1
 6120  PROCButton(xmin+(xp-1)*40,ymin+(-yp+sq)*40,1,2,8,40)
 6130ENDIF
 6140ENDPROC
 6150:
 6160:
 6170DEFPROCCalc
 6180FORi=sq TO 1 STEP-1
 6190  FORj=1TOsq
 6200    IF chr(j,i)=1 val(i)+=2^(sq-j)
 6210  NEXTj
 6220  IF sq=5 THEN pent(13,1,i)=val(i) ELSE hex(36,1,i)=val(i)
 6230NEXTi
 6240FORi=1TOsq:FORj=1TOsq:val(i)=0:NEXT:NEXT
 6250PROCForceTopLeft(13,1)
 6260IF sq=5 THEN PROCPolySize(13,1) ELSE PROCPolySize(36,1)
 6270ENDPROC
 6280:
 6290:
 6300DEFFNCheckPoly
 6310p=1:tf=0:erroff=0
 6320IF sq=5 THEN polynum=12 ELSE polynum=35
 6330IF sq=6 erroff=3
 6340REPEAT
 6350  v=1
 6360  REPEAT
 6370    k=1:match=TRUE
 6380    REPEAT
 6390      IF sq=5 THEN
 6400        IF pent(p,v,k)<>pent(13,1,k) match=FALSE
 6410      ENDIF
 6420      IF sq=6 AND hex(p,v,k)<>hex(36,1,k) match=FALSE
 6430      k+=1
 6440    UNTIL match=FALSE OR k>sq
 6450    IF match=TRUE AND INSTR(poly$,CHR$(p+64))=0 tf=1
 6460    IF tf=1 poly$+=CHR$(p+64):var$+=STR$(v):=TRUE
 6470    IF match=TRUE AND INSTR(poly$,CHR$(p+64))>0 tf=2
 6480    IF tf=2:err=3+erroff:=FALSE
 6490    v+=1
 6500    IF sq=5 polyvar=pentvar(p)*2
 6510    IF sq=6 polyvar=hexvar(p)*2
 6520  UNTIL v>polyvar
 6530  p+=1
 6540UNTIL p>polynum
 6550err=1+erroff
 6560IF sqcnt=sq err=2+erroff
 6570=FALSE
 6580:
 6590:
 6600DEFPROCSetup
 6610LOCAL i,j,k
 6620REM *** Read Data for Pentominoes and Hexominoes ***
 6630ch=OPENIN("<POLY$DIR>.polydata")
 6640cf=OPENIN("<POLY$DIR>.configure")
 6650pw=OPENIN("<POLY$DIR>.password")
 6660FOR i=1 TO 12
 6670  INPUT#ch,pentvar(i)
 6680  num=pentvar(i)
 6690  FOR j=1 TO num*2 STEP 2
 6700    FOR k=1 TO 5:INPUT#ch,pent(i,j,k):NEXTk
 6710    FOR k=1 TO 5:INPUT#ch,pent(i,j+1,k):NEXTk
 6720  NEXTj
 6730NEXTi
 6740FOR i=1 TO 35
 6750  INPUT#ch,hexvar(i)
 6760  num=hexvar(i)
 6770  FOR j=1 TO num*2 STEP 2
 6780    FOR k=1 TO 6:INPUT#ch,hex(i,j,k):NEXTk
 6790    FOR k=1 TO 6:INPUT#ch,hex(i,j+1,k):NEXTk
 6800  NEXTj
 6810NEXTi
 6820CLOSE#ch
 6830REM *** Read Pentominoes' colours ***
 6840FORi=1TO12
 6850  READ col(i)
 6860  colp(i)=col(i)
 6870NEXTi
 6880REM *** Read Animal Data ***
 6890FORi=0TO16
 6900  READ animal$,grx,gry
 6910  an_n$(i)=animal$
 6920  an_grx(i)=grx
 6930  an_gry(i)=gry
 6940  FORj=1TO12
 6950    READy1,x1,poly,var
 6960    an_x(i,j)=x1
 6970    an_y(i,j)=y1
 6980    an_p(i,j)=poly
 6990    an_v(i,j)=var
 7000  NEXTj
 7010NEXTi
 7020REM *** Read Error Messages ***
 7030FOR i=1 TO 10
 7040  READ err$(i)
 7050NEXTi
 7060REM *** Read Menu Configuration Data ***
 7070i=1
 7080REPEAT
 7090  j=1
 7100  REPEAT
 7110    INPUT#cf,m$
 7120    menset$(i,j)=m$
 7130    j+=1
 7140  UNTIL m$="E"
 7150  i+=1
 7160UNTIL i=6
 7170CLOSE#cf
 7180REM *** Read Menu Data ***
 7190FOR j=1 TO 10
 7200  i=1
 7210  READ m1,m2,m3,m4
 7220  menext(j,1)=m1:menext(j,2)=m2:menext(j,3)=m3:menext(j,4)=m4
 7230  REPEAT
 7240    READ men$,menx,meny
 7250    menu$(j,i)=men$
 7260    menux(j,i)=menx:menuy(j,i)=meny
 7270    i+=1
 7280  UNTIL men$="z"
 7290NEXTj
 7300REM *** Read Tutorial Data ***
 7310i=1
 7320REPEAT
 7330  READ line$(i)
 7340  i+=1
 7350UNTIL line$(i-1)="zzz"
 7360REM *** Read Pentomino Rotation Data ***
 7370FOR i=1 TO 12
 7380  READ rot$(i)
 7390NEXTi
 7400REM *** Read Password ***
 7410REPEAT
 7420  INPUT#pw,p$
 7430  pass$=pass$+CHR$(ASC(p$)+43)
 7440UNTIL p$="]"
 7450pass$=LEFT$(pass$)
 7460CLOSE#pw
 7470REM *** Initialise Variables ***
 7480pcnt=1:an=0:back=138:fore=30:saveflag=FALSE:sp=TRUE
 7490REM *** Load Sprites ***
 7500s$="<POLY$DIR>.Sprite"
 7510file%=OPENIN(s$)
 7520L%=EXT#file%+64
 7530CLOSE#file%
 7540DIM S% L%
 7550S%!0=L%
 7560SYS "OS_SpriteOp",256+9,S%
 7570SYS "OS_SpriteOp",256+10,S%,s$
 7580ENDPROC
 7590:
 7600:
 7610DEFPROCDecToBin(dec)
 7620LOCALi
 7630bin$=""
 7640FORi=8TO1STEP-1
 7650  bin=2^(i-1)
 7660  temp1=INT(dec/bin)
 7670  IF temp1=1 THEN
 7680    bin$=bin$+"1"
 7690    dec-=bin*temp1
 7700  ELSE
 7710    bin$=bin$+"0"
 7720  ENDIF
 7730NEXTi
 7740ENDPROC
 7750:
 7760:
 7770DEFPROCDrawPoly(p,v,xpos,ypos,c1,c2,c3,c4)
 7780LOCAL i,j
 7790FOR i=1 TO ypoly
 7800  IF sq=5 THEN dec=pent(p,v,i) ELSE dec=hex(p,v,i)
 7810  PROCDecToBin(dec)
 7820  FOR j=1 TO xpoly
 7830    a$=MID$(bin$,j,1)
 7840    IFa$="1" AND c3<>c4 THEN
 7850      PROCButton(xpos+(j-1)*gap,ypos-(i-1)*gap,c1,c2,c3,gap)
 7860    ELSE
 7870      PROCButtoff(xpos+(j-1)*gap,ypos-(i-1)*gap,c4,gap)
 7880    ENDIF
 7890  NEXTj
 7900NEXTi
 7910ENDPROC
 7920:
 7930:
 7940DEFPROCForceTopLeft(p,v)
 7950LOCAL i
 7960IF sq=6 p=36
 7970REPEAT
 7980  IF sq=5 dec=pent(p,v,1) ELSE dec=hex(p,v,1)
 7990  IF dec=0 THEN
 8000    FORi=2 TO sq
 8010      IF sq=5 pent(p,v,i-1)=pent(p,v,i)
 8020      IF sq=6 hex(p,v,i-1)=hex(p,v,i)
 8030    NEXTi
 8040    IF sq=5 pent(p,v,5)=0 ELSE hex(p,v,6)=0
 8050  ENDIF
 8060UNTIL dec<>0
 8070REPEAT
 8080  zero=0
 8090  FORi=1TOsq
 8100    IF sq=5 dec=pent(p,v,i)
 8110    IF sq=6 dec=hex(p,v,i)
 8120    PROCDecToBin(dec)
 8130    zero+=VAL(LEFT$(bin$,1))
 8140  NEXTi
 8150  IF zero=0 THEN
 8160    FORi=1TOsq
 8170      IF sq=5 pent(p,v,i)=pent(p,v,i)*2
 8180      IF sq=6 hex(p,v,i)=hex(p,v,i)*2
 8190    NEXTi
 8200  ENDIF
 8210UNTIL zero<>0
 8220ENDPROC
 8230:
 8240:
 8250DEFPROCPolySize(p,v)
 8260LOCAL i
 8270yoff=0:xoff=0:margin=4
 8280IF sq=5 margin=8
 8290i=1
 8300REPEAT
 8310  IF sq=5 THEN dec=pent(p,v,i) ELSE dec=hex(p,v,i)
 8320  i+=1
 8330UNTIL dec=0 OR i=sq+1
 8340yoff=i-2
 8350IF dec<>0 yoff=sq
 8360FOR i=1 TO yoff
 8370  IF sq=5 THEN dec=pent(p,v,i) ELSE dec=hex(p,v,i)
 8380  tempx=0
 8390  WHILE ((dec AND margin) <> margin)
 8400    dec=dec>>1
 8410    tempx+=1
 8420  ENDWHILE
 8430  IF (sq-tempx)>xoff xoff=sq-tempx
 8440NEXTi
 8450xpoly=xoff:ypoly=yoff
 8460xoff=INT((sq-xoff)/2):yoff=INT((sq-yoff)/2)
 8470ENDPROC
 8480:
 8490:
 8500DEFPROCTessellate
 8510LOCALi,j
 8520gap=40:sq=5
 8530PROCTitle("Tessellations")
 8540disp()=30:disp1()=0:disp2()=0:disp3()=0:disp4()=0
 8550FORi=0 TO 14
 8560  FORj=0 TO 17
 8570    IF i=0 OR i=14 disp(i,j)=0
 8580    IF j=0 OR j=17 THEN disp(i,j)=0
 8590  NEXTj
 8600NEXTi
 8610PROCPuzzles(0)
 8620ENDPROC
 8630:
 8640:
 8650DEFPROCPentanimals(an)
 8660IF an<>0 THEN
 8670  PROCTitle(an_n$(an))
 8680  PROCLoadAnimal(an)
 8690ENDIF
 8700x=an_grx(an):y=an_gry(an)
 8710FOR i=0 TO y+1
 8720  FOR j=0 TO x+1
 8730    col=disp(i,j)
 8740    xp%=500+40*j:yp%=860-gap*i
 8750    IF col>0 SYS "OS_SpriteOp",256+34,S%,"on",xp%,yp%,0
 8760    IF col=0 SYS "OS_SpriteOp",256+34,S%,"off",xp%,yp%,0
 8800  NEXTj
 8810NEXTi
 8820x=40:y=860:gap=32
 8830FORj=1TO12
 8840  p=an_p(an,j)
 8850  v=an_v(an,j)
 8860  PROCPolySize(p,v)
 8870  IF j=7 x=40+gap*6:y=860
 8880  PROCDrawPoly(p,v,x,y,0,0,col(p),10)
 8890  ypos(j*2)=y
 8900  y=y-(ypoly*gap)-gap
 8910  ypos(j*2-1)=y+gap*2
 8920NEXTj
 8930gap=40
 8940ENDPROC
 8950:
 8960:
 8970DEFPROCPolyColour
 8980pcol=POINT(msx,msy)
 8990col(p)=pcol
 9000PROCUpdatePic
 9010ENDPROC
 9020:
 9030:
 9040DEFPROCOnePoly
 9050LOCAL i,j,v,x,y
 9060sq=5:gap=40
 9070x=40:y=860
 9080GCOL0,back-128 TINT 64
 9090RECTANGLEFILL 40,100,340,800
 9100num=LEN(rot$(p))
 9110FORj=1TOnum
 9120  v=VAL(MID$(rot$(p),j,1))
 9130  PROCPolySize(p,v)
 9140  PROCDrawPoly(p,v,x,y,0,0,60,10)
 9150  ypos(j*2)=y
 9160  y=y-(ypoly*gap)-gap
 9170  ypos(j*2-1)=y+gap*2
 9180  IF num/2=j x=40+gap*6:y=860
 9190NEXTj
 9200ENDPROC
 9210:
 9220:
 9230DEFPROCSelectPent(an)
 9240MOUSE RECTANGLE 40,100,340,800
 9250MOUSE ON 1
 9260REM REPEAT MOUSE msx,msy,msstatus:UNTILmsstatus=0
 9270REPEAT
 9280  REPEAT
 9290    MOUSEmsx,msy,msstatus
 9300  UNTIL msstatus<>0
 9310  gap=32:xmin=40:j=1:tf=FALSE
 9320  REPEAT
 9330    IF j=7 xmin=232
 9340    p=an_p(an,j)
 9350    v=an_v(an,j)
 9360    ymin=ypos(j*2-1)-4:ymax=ypos(j*2)+gap
 9370    PROCPolySize(p,v)
 9380    xmax=xmin+gap*xpoly
 9390    IF msx>xmin AND msx<xmax AND msy>ymin AND msy<ymax AND                    INSTR(poly$,CHR$(64+p))=0 THEN
 9400      PROCDrawPoly(p,v,xmin,ymax-gap,back-128,back-128,back-128,back-128)
 9410      tf=TRUE
 9420    ENDIF
 9430    j+=1
 9440  UNTIL j=13 OR tf
 9450  gap=40
 9460  IF an=0 AND tf PROCOnePoly
 9470  IF tf PROCDispPent(p,v):ENDPROC
 9480UNTIL FALSE
 9490ENDPROC
 9500:
 9510:
 9520DEFPROCDispPent(p,v)
 9530dflag=TRUE
 9540IF an=0 PROCPolySize(p,v)
 9550grx=an_grx(an)
 9560gry=an_gry(an)
 9570x=INT(grx/2-xpoly/2)
 9580y=INT(gry/2-ypoly/2)
 9590FORj=1TOypoly
 9600  dec=pent(p,v,j)
 9610  PROCDecToBin(dec)
 9620  FORk=1TOxpoly
 9630    IF MID$(bin$,k,1)="1" THEN
 9640      disp1(y+j,x+k)=p
 9650    ENDIF
 9660  NEXTk
 9670NEXTj
 9680FOR i=0 TO grx+1
 9690  FOR j=0 TO gry+1
 9700    col=disp1(j,i)
 9710    IF col>0 PROCButton(500+40*i,860-gap*j,0,0,col(col),gap)
 9720  NEXTj
 9730NEXTi
 9740ENDPROC
 9750:
 9760:
 9770DEFPROCFlip
 9780LOCAL i,j
 9790IF an=16 AND p=1 ENDPROC
 9800PROCPolySize(p,v)
 9810FOR i=0 TO grx+1
 9820  FOR j=0 TO gry+1
 9830    IF disp1(j,i)=p THEN
 9840      disp1(j,i)=0
 9850    ENDIF
 9860  NEXTj
 9870NEXTi
 9880PROCUpdatePic
 9890rot=INSTR(rot$(p),STR$(v))
 9900IF rot=LEN(rot$(p)) v=VAL(LEFT$(rot$(p),1))
 9910IF rot<LEN(rot$(p)) v=VAL(MID$(rot$(p),rot+1,1))
 9920PROCPolySize(p,v)
 9930PROCDispPent(p,v)
 9940ENDPROC
 9950:
 9960:
 9970DEFPROCUpdatePic
 9980LOCAL i,j
 9990FORi=y TO y+ypoly
10000  FORj=x TO x+xpoly
10010    col=disp1(i,j)
10020    IF col<>0 AND sp THEN
10030      PROCButton(500+40*j,860-gap*i,0,0,col(col),gap)
10040    ELSE
10050      col=disp2(i,j)
10060      IF col<>0 THEN
10070        PROCButton(500+40*j,860-gap*i,1,2,disp3(i,j),gap)
10080      ELSE
10090        col=disp(i,j)
10100        IF col<>0 THEN
10110          PROCButton(500+40*j,860-gap*i,1,2,30,gap)
10120        ELSEIF disp2(i,j)=0
10130          PROCButton(500+40*j,860-gap*i,2,1,4,gap)
10140        ENDIF
10150      ENDIF
10160    ENDIF
10170  NEXTj
10180NEXTi
10190ENDPROC
10200:
10210:
10220DEFPROCMove(x1,y1)
10230LOCAL i,j
10240xoff1=0:xoff2=0:yoff1=0:yoff2=0
10250PROCPolySize(p,v)
10260IF y1=-1 AND y-1>-1 THEN
10270  FORi=x TO x+xpoly
10280    FORj=y TO y+ypoly
10290      disp1(j-1,i)=disp1(j,i)
10300    NEXTj
10310  NEXTi
10320  FORi=x TO x+xpoly
10330    disp1(y+ypoly,i)=0
10340  NEXTi
10350  y-=1
10360  yoff1=1:xoff1=1:xoff2=-1
10370ENDIF
10380IF y1=1 AND y+ypoly<gry THEN
10390  FORi=x TO x+xpoly
10400    FORj=y+ypoly TO y STEP-1
10410      disp1(j+1,i)=disp1(j,i)
10420    NEXTj
10430  NEXTi
10440  FORi=x TO x+xpoly
10450    disp1(y,i)=0
10460  NEXTi
10470  y+=1
10480  yoff2=-1:xoff1=1:xoff2=-1
10490ENDIF
10500IF x1=-1 AND x-1>-1 THEN
10510  FORi=x TO x+xpoly
10520    FORj=y TO y+ypoly
10530      disp1(j,i-1)=disp1(j,i)
10540    NEXTj
10550  NEXTi
10560  FORi=y TO y+ypoly
10570    disp1(i,x+xpoly)=0
10580  NEXTi
10590  x-=1
10600  xoff1=1:yoff1=1:yoff2=-1
10610ENDIF
10620IF x1=1 AND x+xpoly<grx THEN
10630  FORi=x+xpoly TO x STEP-1
10640    FORj=y TO y+ypoly
10650      disp1(j,i+1)=disp1(j,i)
10660    NEXTj
10670  NEXTi
10680  FORi=y TO y+ypoly
10690    disp1(i,x)=0
10700  NEXTi
10710  x+=1
10720  xoff2=-1:yoff1=1:yoff2=-1
10730ENDIF
10740IF xoff1+xoff2+yoff1+yoff2=0 ENDPROC
10750FORi=y+yoff1 TO y+ypoly+1+yoff2
10760  FORj=x+xoff1 TO x+xpoly+1+xoff2
10770    col=disp1(i,j)
10780    IF col<>0 THEN
10790      PROCButton(500+40*j,860-gap*i,0,0,col(col),gap)
10800    ELSE
10810      col=disp2(i,j)
10820      IF col<>0 THEN
10830        PROCButton(500+40*j,860-gap*i,1,2,disp3(i,j),gap)
10840      ELSE
10850        col=disp(i,j)
10860        IF col<>0 THEN
10870          PROCButton(500+40*j,860-gap*i,1,2,30,gap)
10880        ELSEIF disp2(i,j)=0
10890          PROCButton(500+40*j,860-gap*i,2,1,4,gap)
10900        ENDIF
10910      ENDIF
10920    ENDIF
10930  NEXTj
10940NEXTi
10950ENDPROC
10960:
10970:
10980DEFPROCFix
10990PROCPolySize(p,v)
11000FORi=x TO x+xpoly
11010  FORj=y TO y+ypoly
11020    IF disp1(j,i)>0 AND disp(j,i)=0 PROCError(7):ch=0:ENDPROC
11030    IF disp1(j,i)>0 AND disp2(j,i)>0 PROCError(8):ch=0:ENDPROC
11040  NEXTj
11050NEXTi
11060FORi=x TO x+xpoly
11070  FORj=y TO y+ypoly
11080    IF disp1(j,i)>0 THEN
11090      disp2(j,i)=p
11100      disp3(j,i)=col(p):disp4(j,i)=pcnt
11110      PROCButton(500+40*i,860-gap*j,1,2,col(p),gap)
11120    ENDIF
11130    disp1(j,i)=0
11140  NEXTj
11150NEXTi
11160dflag=FALSE:pcnt+=1
11170poly$=poly$+CHR$(64+p)
11180ENDPROC
11190:
11200:
11210DEFPROCRemove
11220IF poly$="" AND NOT dflag ENDPROC
11230LOCAL tf
11240tf=TRUE
11250IF dflag AND an<>0 THEN
11260  dflag=FALSE
11270  disp1()=0
11280  PROCUpdatePic
11290  tf=FALSE
11300  prem=p
11310ENDIF
11320LOCAL x,y,p,v
11330WHILE tf
11340  MOUSE RECTANGLE 540,860-40*gry,40*grx,40*gry
11350  REPEAT MOUSE msx,msy,msstatus:UNTILmsstatus=0
11360  REPEAT
11370    MOUSEmsx,msy,msstatus
11380  UNTIL msstatus<>0
11390  xp=INT((msx-540)/40)+1
11400  yp=INT((860-msy)/40)+1
11410  prem=disp2(yp,xp)
11420  IF prem=0 AND disp1(yp,xp)<>0 PROCError(9):ENDPROC
11430  IF prem<>0 AND disp1(yp,xp)<>0 PROCError(9):ENDPROC
11440  IF prem=0 PROCError(10):ENDPROC
11450  ppos=INSTR(poly$,CHR$(64+prem))
11460  cnt=disp4(yp,xp)
11470  FORi=1TOgrx
11480    FORj=1TOgry
11490      IF disp2(j,i)=prem THEN
11500        IF an<>0 OR an=0 AND disp4(j,i)=cnt THEN
11510          disp2(j,i)=0:disp3(j,i)=0:dis=disp1(j,i)
11520          IF dis=0 PROCButton(500+40*i,860-40*j,1,2,30,gap)
11530          IF dis<>0 PROCButton(500+40*i,860-40*j,0,0,col(dis),gap)
11540        ENDIF
11550      ENDIF
11560    NEXTj
11570  NEXTi
11580  poly$=LEFT$(poly$,ppos-1)+RIGHT$(poly$,LEN(poly$)-ppos)
11590  tf=FALSE
11600ENDWHILE
11610IF an<>0 THEN
11620  x=40:y=860:gap=32
11630  FORj=1TO12
11640    p=an_p(an,j)
11650    v=an_v(an,j)
11660    PROCPolySize(p,v)
11670    IF j=7 x=40+gap*6:y=860
11680    IF p=prem PROCDrawPoly(p,v,x,y,0,0,col(p),10)
11690    y=y-(ypoly*gap)-gap
11700  NEXTj
11710  gap=40
11720ENDIF
11730ENDPROC
11740:
11750:
11760DEFPROCHelp
11770LOCAL i,j
11780FORi=1TO an_grx(an)
11790  FORj=1TO an_gry(an)
11800    IF disp2(j,i)>0 AND disp2(j,i)<>disp(j,i) PROCHelp1(disp2(j,i),j,i)
11810  NEXTj
11820NEXTi
11830ENDPROC
11840:
11850:
11860DEFPROCHelp1(prem,yp,xp)
11870LOCAL i,j,x,y,p,v
11880ppos=INSTR(poly$,CHR$(64+prem))
11890cnt=disp4(yp,xp)
11900FORi=1TOgrx
11910  FORj=1TOgry
11920    IF disp2(j,i)=prem THEN
11930      IF an<>0 OR an=0 AND disp4(j,i)=cnt THEN
11940        disp2(j,i)=0:disp3(j,i)=0:dis=disp1(j,i)
11950        IF dis=0 PROCButton(500+40*i,860-40*j,1,2,30,gap)
11960        IF dis<>0 PROCButton(500+40*i,860-40*j,0,0,col(dis),gap)
11970      ENDIF
11980    ENDIF
11990  NEXTj
12000NEXTi
12010poly$=LEFT$(poly$,ppos-1)+RIGHT$(poly$,LEN(poly$)-ppos)
12020IF an<>0 THEN
12030  x=40:y=860:gap=32
12040  FORj=1TO12
12050    p=an_p(an,j)
12060    v=an_v(an,j)
12070    PROCPolySize(p,v)
12080    IF j=7 x=40+gap*6:y=860
12090    IF p=prem PROCDrawPoly(p,v,x,y,0,0,col(p),10)
12100    y=y-(ypoly*gap)-gap
12110  NEXTj
12120  gap=40
12130ENDIF
12140ENDPROC
12150:
12160:
12170DEFPROCMenuChoice(menu, RETURN choice)
12180menset$(10,7)="":menset$(10,10)=""
12190IF menset$(1,3)="N" menset$(10,7)="N"
12200IF menset$(1,4)="N" menset$(10,10)="N"
12210blx=menext(menu,1):bly=menext(menu,2)
12220xext=menext(menu,3):yext=menext(menu,4)
12230IF menu<>6 AND menu<>7  MOUSE RECTANGLE blx,bly,xext,yext
12240MOUSE ON 1
12250choice=0
12260REPEAT
12270  IF menu<>6 AND menu<>7 THEN
12280    REPEAT MOUSE msx,msy,msstatus:UNTILmsstatus=0
12290    REPEAT
12300      MOUSEmsx,msy,msstatus
12310      IF INKEY(-2) AND INKEY(-82) AND menu=10 PROCSavePic
12320      IF INKEY(-2) AND INKEY(-85) AND menu=10 AND menset$(1,2)<>"N" AND an>0 AND an<14 PROCHelp:PROCPolySize(p,v)
12330    UNTIL msstatus<>0
12340  ENDIF
12350  item=10
12360  REPEAT
12370    mx=menux(menu,item)-4
12380    my=menuy(menu,item)-32
12390    mlen=LEN(menu$(menu,item))*32+8
12400    IF msx>mx AND msx<mx+mlen AND msy>my AND msy<my+44 AND            menset$(menu,item)<>"N" THEN
12410      choice=item
12420      IF choice<>10 THEN
12430        GCOL 3,13:RECTANGLE FILL mx,my,mlen,40
12440        time=TIME:REPEAT UNTIL TIME-time>25
12450        GCOL 3,13:RECTANGLE FILL mx,my,mlen,40
12460      ENDIF
12470    ENDIF
12480    item-=1
12490  UNTIL item=0
12500  IF menu=6 OR menu=7 ENDPROC
12510UNTIL choice<>0
12520ENDPROC
12530:
12540:
12550DEFPROCSavePic
12560sp=TRUE
12570IF dflag sp=FALSE:PROCUpdatePic:sp=TRUE
12580IF NOT FNYesNo("Save Picture?") THEN
12590  *FX15,0
12600  msstatus=0
12610  MOUSE RECTANGLE 480,100,760,160
12620  IF dflag PROCUpdatePic
12630  ENDPROC
12640ENDIF
12650GCOL 63 TINT 192
12660MOVE 200,40
12670ok$="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_#/-'"
12680PRINT"Enter Filename:"
12690PROCInput(712,40,10,ok$,file$)
12700GCOL back-128 TINT 64
12710RECTANGLEFILL 180,0,1000,50
12720IF file$<>"" THEN
12730  VDU 24,480;800-an_gry(an)*40;580+an_grx(an)*40;900;
12740  *DIR <POLY$DIR>
12750  *UP 1
12760  $name%=""
12770  FOR i%=0 TO LEN(file$)
12780    $(name%+i%)=MID$(file$,i%+1,1)
12790  NEXTi%
12800  OSCLI ("SCREENSAVE "+$name%)
12810  VDU 26
12820ENDIF
12830IF dflag PROCUpdatePic
12840MOUSE RECTANGLE 480,100,760,160
12850ENDPROC
12860:
12870:
12880DEFPROCLoadAnimal(animal)
12890disp()=0:disp1()=0:disp2()=0
12900FORi=1TO12
12910  p=an_p(animal,i)
12920  v=an_v(animal,i)
12930  x_min=an_x(animal,i)
12940  y_min=an_y(animal,i)
12950  FORj=1TO5
12960    dec=pent(p,v,j)
12970    PROCDecToBin(dec)
12980    FORk=1TO5
12990      IF MID$(bin$,k,1)="1" THEN
13000        disp(y_min+j-1,x_min+k-1)=p
13010      ENDIF
13020    NEXTk
13030  NEXTj
13040NEXTi
13050ENDPROC
13060:
13070:
13080DEFPROCButton(x,y,col1,col2,col3,gap)
13090rect=8
13100IF gap=20 rect=4
13110GCOL0,col1
13120IF col1=1 GCOL 0,10 TINT 0
13130IF col1=2 GCOL 0,10 TINT 192
13140MOVE x,y:MOVE x,y+gap-8:PLOT &55,x+gap-8,y
13150GCOL0,col2
13160IF col2=1 GCOL 0,10 TINT 0
13170IF col2=2 GCOL 0,10 TINT 192
13180PLOT &55,x+gap-8,y+gap-8
13190GCOL0,col3 TINT 128
13200RECTANGLE FILL x+rect,y+rect,(gap-8)/2,(gap-8)/2
13210ENDPROC
13220:
13230:
13240DEFPROCButtoff(x%,y%,col,gap%)
13250GCOL col TINT 64
13260RECTANGLE FILL x%,y%,gap%-8,gap%-8
13270GCOL col TINT 192
13280ENDPROC
13290:
13300:
13310DEFPROCError(err)
13320LOCAL i,j
13330VDU 4
13340COLOUR fore:COLOUR back TINT 64
13350error$=err$(err)
13360i=1
13370PRINT CHR$(7);CHR$(7)
13380IF LEN(error$) MOD 2=1 error$+=" "
13390FOR i=1TOLEN(error$)/2
13400  PRINTTAB(20-i,30);
13410  time=TIME:REPEAT UNTIL TIME-time>5
13420  PRINT LEFT$(error$,i);RIGHT$(error$,i);
13430NEXTi
13440IF err=3+erroff THEN
13450  time=TIME
13460  REPEAT
13470    PROCFlash(1,2,8)
13480    PROCFlash(1,2,34)
13490  UNTIL TIME-time>250
13500  PROCFlash(1,2,8)
13510ENDIF
13520time=TIME:REPEAT UNTIL TIME-time>200
13530FOR i=LEN(error$)/2TO1STEP-1
13540  PRINTTAB(19-i,30);" ";
13550  PRINTLEFT$(error$,i);RIGHT$(error$,i);"  ";
13560  time=TIME:REPEAT UNTIL TIME-time>5
13570NEXTi
13580PRINTTAB(18,30)"    ";
13590VDU 5
13600ENDPROC
13610:
13620:
13630DEFPROCFlash(c1,c2,c3)
13640MOVE 100,100
13650xadjust=0:yadjust=0:mod=4
13660IF sq=6 xadjust=-60:yadjust=200:mod=7
13670v=VAL(MID$(var$,INSTR(poly$,CHR$(64+p)),1))
13680pp=INSTR(poly$,CHR$(64+p))
13690xpos=100+((pp-1) MOD mod)*(sq*gap+20)+xadjust
13700ypos=((sq*gap+20)*(sq-1)-20)-((pp-1) DIV mod)*(sq*gap+20)+yadjust
13710PROCPolySize(p,v)
13720PROCDrawPoly(p,v,xpos+gap*xoff,ypos-gap*yoff,c1,c2,c3,60)
13730ENDPROC
13740:
13750:
13760DEFPROCErrorTrap
13770VDU 4
13780PRINT"Diagnostics:"
13790PRINT"Error number  ";ERR
13800REPORT
13810PRINT" at line ";ERL
13820STOP
13830ENDPROC
13840:
13850:
13860REM *** Colours for Pentominoes ***
13870:
13880DATA 3,11,63,48,19,60,15,24,17,28,55,50
13890:
13900:
13910REM *********** Data for Pentomino Puzzles ***********
13920:
13930REM *** Tessellation Data ***
13940:
13950DATA "Tessellations",16,13
13960DATA 0,0,1,3,0,0,2,5,0,0,3,1,0,0,4,1,0,0,5,1,0,0,6,1
13970DATA 0,0,7,1,0,0,8,1,0,0,9,1,0,0,10,1,0,0,11,1,0,0,12,1
13980:
13990REM *** Pentanimals ***
14000:
14010DATA "Dog",10,12
14020DATA 1,10,1,1,2,2,6,1,4,1,7,1,4,4,5,4,6,3,2,2,6,4,8,1
14030DATA 6,6,12,2,6,8,10,2,7,8,4,3,8,5,9,4,9,3,3,3,10,9,11,4
14040DATA "Penguin",9,12
14050DATA 1,4,11,1,1,6,5,3,4,3,6,1,4,5,4,4,5,5,3,3,5,8,9,7
14060DATA 6,1,12,2,6,3,8,3,7,7,1,1,8,3,10,7,9,5,2,3,10,3,7,7
14070DATA "Elephant",11,9
14080DATA 1,1,11,1,5,4,1,1,3,4,2,8,3,7,7,8,3,9,12,1,4,1,4,2
14090DATA 4,4,10,4,1,2,6,1,5,7,8,3,6,5,9,8,6,8,5,6,6,10,3,3
14100DATA "Pig",12,7
14110DATA 1,2,9,1,1,6,1,3,1,11,3,3,2,4,11,1,2,5,6,1,2,7,2,5
14120DATA 2,9,10,8,3,1,12,4,4,6,8,1,4,8,7,8,5,4,4,2,5,10,5,2
14130DATA "Cockerel",13,13
14140DATA 1,3,12,1,2,1,6,1,3,10,10,5,3,12,11,4,4,3,1,1,5,4,5,5
14150DATA 5,7,4,2,6,7,8,1,6,9,9,8,7,4,7,1,9,5,2,5,10,6,3,3
14160DATA "Kangeroo",15,13
14170DATA 1,2,5,5,3,3,9,6,5,1,8,3,7,3,11,5,8,3,10,5,9,5,6,1
14180DATA 10,4,2,2,10,9,3,1,11,1,4,3,11,7,7,7,13,11,1,3,8,6,12,4
14190DATA "Camel",13,12
14200DATA 1,1,2,7,3,3,11,1,4,4,12,4,4,9,6,1,6,4,10,4,6,7,9,3
14210DATA 6,11,7,4,7,7,4,1,7,8,8,4,7,11,5,3,8,6,1,1,9,12,3,4
14220DATA "Dove",16,9
14230DATA 1,2,4,4,2,1,12,4,3,5,1,3,3,10,2,5,3,13,9,1,4,3,6,1
14240DATA 4,5,11,4,4,7,3,5,4,10,8,3,5,7,7,3,7,5,5,2,7,7,10,2
14250:
14260REM *** Puzzle Shape Data for Pentominoes ***
14270:
14280DATA "Pyramid",15,8
14290DATA 1,8,9,6,2,6,6,1,3,9,10,3,4,4,7,3,5,7,3,1,5,10,8,1
14300DATA 6,2,2,6,6,4,4,4,6,9,11,1,6,11,5,1,6,13,12,1,8,1,1,3
14310DATA "Diamond",11,10
14320DATA 1,5,10,5,3,3,2,6,3,6,5,2,4,8,7,1,5,1,6,1,5,3,11,3
14330DATA 5,5,3,4,6,3,4,3,6,7,1,3,7,6,8,1,7,8,12,2,9,4,9,2
14340DATA "Cross",11,11
14350DATA 1,5,7,5,1,7,3,1,3,4,10,8,5,1,5,3,5,2,9,3,5,6,2,5
14360DATA 5,8,8,3,5,9,4,3,7,2,1,3,7,6,6,1,8,4,12,4,10,5,11,6
14370DATA "'Circle'",9,8
14380DATA 1,1,12,3,1,4,7,6,1,5,9,3,2,4,4,3,3,1,8,3,3,6,10,3
14390DATA 3,8,11,3,5,1,6,1,5,3,5,2,6,5,1,3,7,3,3,6,7,5,2,8
14400DATA "Bee-Hive",9,10
14410DATA 1,1,3,2,1,2,7,3,2,4,6,1,3,1,5,1,3,3,9,6,4,6,11,1
14420DATA 5,5,1,1,5,7,10,4,6,2,12,4,7,6,8,2,7,8,2,4,8,6,4,1
14430:
14440REM *** Rectangle Data ***
14450:
14460DATA "6x10",10,6
14470DATA 1,1,2,2,1,2,9,3,1,5,1,3,1,8,5,5,2,2,6,1,2,6,8,2
14480DATA 3,4,12,2,3,8,11,3,4,1,10,5,4,6,7,6,4,8,4,3,5,2,3,8
14490DATA "5x12",12,5
14500DATA 1,1,9,6,1,2,5,2,1,4,10,1,1,6,8,4,1,7,1,3,1,9,3,8
14510DATA 3,1,4,1,3,3,6,1,3,5,12,3,3,9,2,8,4,7,7,3,4,10,11,6
14520DATA "4x15",15,4
14530DATA 1,1,1,3,1,5,6,1,1,7,8,2,1,9,10,6,1,10,9,3,1,13,4,4
14540DATA 2,1,11,5,2,4,12,1,2,13,5,1,3,1,2,6,3,7,3,6,3,11,7,2
14550:
14560:
14570REM *** Error Messages ***
14580:
14590DATA "A pentomino must have 5 squares"
14600DATA "Squares must be touching"
14610DATA "This pentomino already exists"
14620DATA "A hexomino must have 6 squares"
14630DATA "Squares must be touching"
14640DATA "This hexomino already exists"
14650DATA "The pentomino must lie on the shape"
14660DATA "Pentominoes must not overlap"
14670DATA "This pentomino has not been FIXed"
14680DATA "Click on a pentomino to remove it"
14690:
14700:
14710REM *** Menu Data ***
14720:
14730DATA 480,100,760,160
14740DATA "Access Code",464,840,"Help",576,750,"Flip",576,660,"     ",560,570
14750DATA "z",1,1
14760:
14770DATA 330,60,620,800
14780DATA "Tutorial",512,840,"Pentomino Designer",352,750
14790DATA "Hexomino Designer",368,660,"Rectangles",480,570
14800DATA "PentAnimals",464,480,"PentoShapes",464,390
14810DATA "Tessellations",432,300,"Teacher Control",400,210
14820DATA "QUIT",576,120,"z",1,1
14830:
14840DATA 480,100,320,800
14850DATA "Dog",592,840,"Penguin",528,750,"Elephant",512,660
14860DATA "Pig",592,570,"Cockerel",512,480,"Kangeroo",512,390
14870DATA "Camel",560,300,"Dove",576,210
14880DATA "Main Menu",496,120,"z",1,1
14890:
14900DATA 400,440,480,440
14910DATA "6x10 Rectangle",416,840,"5x12 Rectangle",416,750
14920DATA "4x15 Rectangle",416,660
14930DATA "Main Menu",496,570,"z",1,1
14940:
14950DATA 480,350,320,530
14960DATA "Pyramid",528,840,"Diamond",528,750,"Cross",560,660
14970DATA "'Circle'",512,570,"Bee-Hive",512,480
14980DATA "Main Menu",496,390,"z",1,1
14990:
15000DATA 999,999,999,999
15010DATA "TRY",1048,650,"QUIT",1032,560,"z",1,1
15020:
15030DATA 999,999,999,999
15040DATA "TRY",1080,600,"QUIT",1064,510,"z",1,1
15050:
15060DATA 790,10,140,50
15070DATA "y",792,50,"n",888,50,"z",1,1
15080:
15090DATA 510,10,260,50
15100DATA "CONTINUE",514,50,"z",1,1
15110:
15120DATA 480,100,760,160
15130DATA "�",700,200,"�",780,200,"�",740,160,"�",740,240
15140DATA "Fix",908,240,"Remove",860,160,"Flip",1100,240,"Quit",1100,160
15150DATA "�Pick",480,240,"     ",480,160,"z",1,1
15160:
15170:
15180REM *** Data for the Tutorial ***
15190:
15200DATA "63What is a POLYOMINO ?"
15210DATA "!"
15220DATA "60It isn't a word we use every day, but we"
15230DATA "60all have heard of one sort of polyomino."
15240DATA "!"
15250DATA "12It's the simplist kind, called a DOMINO."
15260DATA "!"
15270DATA "60No doubt you've all played dominoes at"
15280DATA "60some time or another."
15290DATA "#","@"
15300DATA "12A domino is a rectangle split into two"
15310DATA "12squares, joined at one of their edges."
15320DATA "#","$"
15330DATA "60Therefore, a TRIOMINO would be made of 3"
15340DATA "60squares joined at their edges, as shown"
15350DATA "60below:- There are 2 TRIOMINOES"
15360DATA "#","%","#","!","!","!"
15370DATA "12A QUADROMINO is made of 4 squares joined"
15380DATA "12at their edges. There are 5 in all...."
15390DATA "#","^","#","$"
15400DATA "60If you take 5 squares and join them edge"
15410DATA "60to edge you form a PENTOMINO.","!"
15420DATA "12Similarly, if you use 6 squares you form"
15430DATA "12a HEXOMINO.","!"
15440DATA "60There are 12 Pentominoes and some 35"
15450DATA "60Hexominoes!!","!","#"
15460DATA "12This program allows you to design both"
15470DATA "12the pentominoes and hexominoes."
15480DATA "!"
15490DATA "60There are also many activities making"
15500DATA "60use of the 12 pentominoes.","!"
15510DATA "63ENJOY  ENJOY  ENJOY  ENJOY  ENJOY  ENJOY"
15520DATA "zzz"
15530:
15540:
15550REM *** Data for Pentomino Rotations/Flips ***
15560:
15570DATA "13","15472638","15482736"
15580DATA "1234","1325","1","15482736"
15590DATA "1423","16472835","15482736"
15600DATA "1536","1243"

� ><POLY$DIR>.!RunImage
� � �ErrorTrap
*KEY1 EDIT|M
(*<POLY$DIR>.roundset
2B� chr(8,8),val(8),pent(13,8,5),pentvar(12),rot$(12),hexvar(35)
<D� hex(36,8,6),disp(25,25),disp1(25,25),disp2(25,25),disp3(25,25)
FM� disp4(25,25),an_x(20,12),an_y(20,12),an_p(20,12),an_v(20,12),line$(100)
PI� an_n$(20),an_grx(20),an_gry(20),col(12),colp(12),poly(6,6),err$(10)
ZB� ypos(24),menext(12,4),menu$(12,12),menux(12,12),menuy(12,12)
d� menset$(12,12),name% 16
n*fx200,1
x�Screen
�
time=�
�� 23;8202;0;0;0;
�
�Setup
�� � �-time>300
�� 13
�� 23;8202;0;0;0;
�*<POLY$DIR>.!Palette
�
�MainMenu
�ȗ �
�� 4
�*<POLY$DIR>.Default
�*<POLY$DIR>.!PalDef
�� 3
�:�17,14)"B Y E"
�
:
":
,��MainMenu
6� back Ȝ 64
@�
J�Title("Main Menu")
T�MenuSet(2)
^tf=�
h�
r  �MenuChoice(2,ch)
|
  Ȏ ch �
�     � 1: �Tutorial:�MainMenu
�+    � 2: �Pentomino(1000,700):�MainMenu
�*    � 3: �Hexomino(1020,660):�MainMenu
�!    � 4: �Rectangle:�MainMenu
�"    � 5: �AnimalMenu:�MainMenu
�#    � 6: �PentoShapes:�MainMenu
�"    � 7: �Tessellate:�MainMenu
�    � 8: �Access:�MainMenu
�+    � 9: � �YesNo("Are you sure?") tf=�
�  �
�� tf
��
�:
:
��Access
� menset$(1,1)="Y" �
&  �Title("Teacher Control")
0
  � 63
:   � 200,800:� "Access Code:"
D  p$=""
N  *fx 15,0
X  �
b    a$=�(5)
l    p$=p$+a$
v(    � a$<>"" � 600+�(p$)*32,800:�"-"
�%  � a$=�(13) � �(p$)>8 � p$=pass$
�  � p$<>pass$ �
��
��TeacherControl(1)
��
�:
�:
���SetAccess
�Hok$="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
�� 63
�(� 200,400:�"Old Access Code: ";pass$
�"� 200,300:�"New Access Code: "
��Input(744,300,8,ok$,p$)
� back-128 Ȝ 64
ȓȐ 20,10,1200,50
� p$<>"" �
 !  � �YesNo("Set Password?") �
*    pass$=p$
4#    pw=�("<POLY$DIR>.Password")
>    � i=1 � �(p$)
H       �#pw,�(�(�p$,i,1))-43)
R
    �i
\    �#pw,"]"
f    �#pw
p  �
z�
�� back-128 Ȝ 64
�ȓȐ 20,10,1200,400
�� fore Ȝ 192
�0� 150,40:� "'X'-Exit  'S'-Save  '� �'-Menus"
�ȗ ȓ 1016,48,172,800
��
�:
�:
�!��Input(x%,y%,l%,ok$,� word$)
�*fx15,0
�word$=""
�ȗ �
��

  c$=�(5)
3  � 8 Ȝ 192:� x%,y%-36,x%+32,y%-36:� 63 Ȝ 192
,  � c$<>"" � �ok$,c$)<>0 � �(word$)<l% �
$;    � back-128 Ȝ 64:� x%,y%-36,x%+32,y%-36:� 63 Ȝ 192
.    � x%,y%
8    � c$
B    word$=word$+c$
L    x%+=32
V  �
`  � �(-113) word$="":ȗ �:�
j  � �(-90) � �(word$)>0 �
t    � back-128 Ȝ 64
~    x%-=32
�    ȓȐ x%,y%,64,-40
�    word$=�word$)
�    *fx15,0
�    � 63 Ȝ 192
�  �
�� c$=�(13)
�ȗ �
��
�:
�:
���TeacherControl(menu%)
�� on$,off$
�Title("Teacher Control")

� fore Ȝ 192
� 1000,900:� "ON  OFF"
0� 150,40:� "'X'-Exit  'S'-Save  '� �'-Menus"
(�MenuSet(menu%)
2i=1
<�
F  � fore Ȝ 192
P!  ȓ 1016,848-(i-1)*90,40,-40
Z!  ȓ 1148,848-(i-1)*90,40,-40
d
  i+=1
n� menu$(menu%,i)="z"
xi=1
��
�-  � menset$(menu%,i)="Y":on$="X":off$=" "
�-  � menset$(menu%,i)="N":on$=" ":off$="X"
�-  � menset$(menu%,i)="F":on$="X":off$="X"
�   � 1152,840-(i-1)*90:� off$
�  � 1020,840-(i-1)*90:� on$
�
  i+=1
�� menset$(menu%,i)="E"
�ȗ ȓ 1016,48,172,800
�
ȗ � 1
��
�  �
�	    �
      ȗmsx,msy,msstatus
/      � �(-2) � �(-56) � menu%=1 �SetAccess
      � �(-67) �
"      � �(-122) �
,        menu%+=1
6        � menu%>5 menu%=1
@"        �TeacherControl(menu%)
J        � saveflag �
T      �
^      � �(-26) �
h        menu%-=1
r        � menu%<1 menu%=5
|"        �TeacherControl(menu%)
�      �
�      � �(-82) �
�!        �SaveConfig(saveflag)
�        � saveflag �
�        � back-128 Ȝ 64
�        ȓȐ 20,10,1200,50
�        � fore Ȝ 192
�8        � 150,40:� "'X'-Exit  'S'-Save  '� �'-Menus"
�      �
�    � msstatus<>0
�    item=1:choice=0
�    boxx=1016:boxy=848
�	    �
G      � msx>boxx � msx<boxx+40 � msy<boxy � msy>boxy-40 choice=item
M      � msx>boxx+132 � msx<boxx+172 � msy<boxy � msy>boxy-40 choice=-item
      item+=1
&      boxy=boxy-90
0    � item=10 � choice<>0
:  � choice<>0
D%  onoff$=menset$(menu%,�(choice))
N  � onoff$="Y" � choice<0 �
X    � back-128 Ȝ 64
b"    ȓȐ boxx+4,boxy+86,32,-32
l    � fore Ȝ 192
v    � boxx+136,boxy+82
�
    � "X"
�$    menset$(menu%,�(choice))="N"
�  �
�  � onoff$="N" � choice>0 �
�    � back-128 Ȝ 64
�$    ȓȐ boxx+136,boxy+86,32,-32
�    � fore Ȝ 192
�    � boxx+4,boxy+82
�
    � "X"
�$    menset$(menu%,�(choice))="Y"
�  �
�� �
��
:
:
��SaveConfig(� saveflag)
 saveflag=�
*� back-128 Ȝ 64
4ȓȐ 20,10,1200,50
>� �YesNo("Save Options?") �
H"  cf=�("<POLY$DIR>.configure")
R  � i=1 � 5
\    j=1
f	    �
p      �#cf,menset$(i,j)
z      j+=1
�    � menset$(i,j-1)="E"
�  �i
�
  �#cf
�  saveflag=�
��
�ȗ ȓ 1016,48,172,800
��
�:
�:
���Screen
� *SCREENLOAD <POLY$DIR>.Title
��
�:
	:
	��AnimalMenu
	�Title("PentAnimals")
	$�MenuSet(3)
	.tf=�
	8�
	B  �MenuChoice(3,ch)
	L
  Ȏ ch �
	V3    � 1,2,3,4,5,6,7,8: �Puzzles(ch):�AnimalMenu
	`    � 9: tf=�
	j  �
	t� tf
	~�
	�:
	�:
	���PentoShapes
	��Title("PentoShapes")
	��MenuSet(5)
	�tf=�
	��
	�  �MenuChoice(5,ch)
	�
  Ȏ ch �
	�0    � 1,2,3,4,5: �Puzzles(8+ch):�PentoShapes
	�    � 6: tf=�
	�  �
� tf

�
:
:
(��Pentomino(xmin,ymin)
2sq=5
<
gap=40
F �Title("Pentomino Designer")
Ppoly$="":var$=""
Z�GridPlot(88,904,4,3)
d�MenuSet(6)
n"�Grid(1000,900,sq,sq,2,1,4,40)
x�
�  �Clear(xmin,ymin)
�  �
�%    �CreatePoly(xmin,ymin,sq,gap)
�"    � �(poly$)=12 �WellDone2:�
�  � ch=2
�� �YesNo("Are you sure?")
�chr()=0
��
�:
�:
���Hexomino(xmin,ymin)
�sq=6
�
gap=20
�Title("Hexomino Designer")
poly$="":var$=""
�GridPlot(28,908,7,5)
"�MenuSet(7)
,"�Grid(1020,900,sq,sq,2,1,4,40)
6�
@  �Clear(xmin,ymin)
J  �
T%    �CreatePoly(xmin,ymin,sq,gap)
^"    � �(poly$)=35 �WellDone2:�
h  � ch=2
r� �YesNo("Are you sure?")
|chr()=0
��
�:
�:
�!��GridPlot(x%,y%,xext%,yext%)
�	� i,j
�y%-=sq*gap+20
�
yo%=y%
�� i=1 � xext%
�  � j=1 � yext%
�0    ș "OS_SpriteOp",256+34,S%,�(sq),x%,y%,0
�    y%-=sq*gap+20
�  �j
�  y%=yo%
  x%+=sq*gap+20
�i
�
&:
0:
:��Puzzles(an)
D)erroff=0:sq=5:gap=40:poly$="":dflag=�
N�Pentanimals(an)
X�MenuSet(10)
b�
l  tf1=�
v+  � �(poly$)=12 � an<>0 �WellDone:tf1=�
�;  � � dflag � an=0 � �(poly$)<>0 dflag=�:�DispPent(p,v)
�"  � � tf1 � �MenuChoice(10,ch)
�    Ȏ ch �
�"      � 1: � dflag �Move(-1,0)
�!      � 2: � dflag �Move(1,0)
�!      � 3: � dflag �Move(0,1)
�"      � 4: � dflag �Move(0,-1)
�      � 5: � dflag �Fix
�      � 6: �Remove
�#      � 7: � dflag � p<>6 �Flip
�.      � 8: � �YesNo("Are you sure?") tf1=�
�7      � 9: � � dflag � �(poly$)<>12 �SelectPent(an)
�#      � 10: � dflag �PolyColour

	    �

  �

	� tf1

 � i=1 � 12

*  col(i)=colp(i)

4� i

>�

H:

R:

\��WellDone

f
�(7);

p� fore Ȝ 192

z
� 100,700

��"Great Work"

�
� 116,650

��"Well Done"

��SavePic

�
�Continue

��

�:

�:

���WellDone2

�� fore Ȝ 192

�
� 272,160

�
�(7);

��"Great Work - Well Done!"

�Continue
�
:
$:
.��Tutorial
8� i,j,k,pr$,pr1$
B �Title("Polyomino Tutorial")
L� 4
V� back Ȝ 64
`i=1:k=5
j�
t  pr$=line$(i)
~  � �(pr$)<>1 �
�$    pr$=�line$(i),�(line$(i))-2)
�    col=�(�line$(i),2))
�    ȕ �(pr$)<>40
�      pr$=pr$+" "
�	    �
�
    � col
�    � j=1 � 40
�      pr1$=�pr$,j,1)
�      �j-1,k)pr1$;
�      � �(-113) �
�      time=�:� � �-time>4
�
    �j
  �

  � pr$="!" k+=1
  � pr$="@" �Dom:k+=4
  � pr$="#" �Continue:�4
(  � pr$="$" �
2    �0,back-128 Ȝ 64
<    ȓ Ȑ 0,0,1280,860
F    k=5
P  �
Z  � pr$="%" �Tri
d  � pr$="^" �Tetra
n  i+=1:k+=1
x� line$(i)="zzz"
�
�Continue
��
�:
�:
���Continue
��MenuSet(9)
��MenuChoice(9,ch)
��0,back-128 Ȝ 64
�ȓ Ȑ 500,6,300,60
��
�:
�:
�	��Tri
	�0,48
ȓȐ 100,600,300,100
ȓȐ 700,600,200,100
"ȓȐ 700,500,100,100
,	�0,60
6ȓ 100,600,100,100
@ȓ 200,600,100,100
Jȓ 300,600,100,100
Tȓ 700,600,100,100
^ȓ 800,600,100,100
hȓ 700,500,100,100
r�
|:
�:
���Tetra
�� i
�	�0,48
�ȓȐ 200,150,50,200
�ȓȐ 350,200,100,100
�*ȓȐ 550,175,50,150:ȓȐ 600,275,50,50
�*ȓȐ 750,175,50,150:ȓȐ 800,225,50,50
�,ȓȐ 950,250,100,50:ȓȐ 1000,200,100,50
�
� 0,60
�
� i=1 � 4
�  ȓ 200,100+i*50,50,50
�� i

� i=1 � 2
  ȓ 300+i*50,200,50,50
  ȓ 300+i*50,250,50,50
&  ȓ 900+i*50,250,50,50
0  ȓ 950+i*50,200,50,50
:� i
D
� i=1 � 3
N  ȓ 550,125+i*50,50,50
X  ȓ 750,125+i*50,50,50
b� i
lȓ 600,275,50,50
vȓ 800,225,50,50
��
�:
�:
�	��Dom
��0,0
�ȓȐ 490,317,300,150
�	�0,63
�ȓ 500,327,280,130
�ȓ 500,327,140,130
�ȏȐ 570,397,10
�ȏȐ 675,425,10
�ȏȐ 745,360,12
�ȏȐ 745,425,12
ȏȐ 675,360,10
�
:
 :
*��Rectangle
4�Title("Rectangle Menu")
>�MenuSet(4)
H�
R  tf1=�
\  �MenuChoice(4,ch)
f
  Ȏ ch �
p+    � 1,2,3: �Puzzles(13+ch):�Rectangle
z    � 4: tf1=�
�  �
�	� tf1
��
�:
�:
���MenuSet(menu)
�� i
��5
�i=1
��
�   rect=�(menu$(menu,i))*32+8
�'  mx=menux(menu,i):my=menuy(menu,i)
�  � 10 Ȝ 0
#  ȓ Ȑ mx-12,my+16,rect+16,-56
  � 10 Ȝ 192
   ȓ Ȑ mx-4,my+8,rect+8,-48
$0  � mx-12,my-40:� mx-4,my-40:�&55,mx-4,my-32
.<  � mx+rect-4,my+8:� mx+rect+4,my+8:�&55,mx+rect+4,my+16
8  � 10 Ȝ 64
B&  � menset$(menu,i)="N" � 20 Ȝ 64
L  ȓ Ȑ mx-4,my-32,rect,40
V  � fore Ȝ 192
`
  � mx,my
j   � menset$(menu,i)="N" � 20
t  � menu$(menu,i)
~
  i+=1
�� menu$(menu,i)="z"
�� menu=10 �
�  � i=0 � 5
�    � 0,col(i+1)
�"    ȓȐ 476+(i*28),168,28,-18
�    � 0,col(i+7)
�"    ȓȐ 476+(i*28),146,28,-18
�	  � i
��
�� menu=1 �
�  � i=0 � 5
�    � 0,col(i+1)
"    ȓȐ 556+(i*28),576,28,-18

    � 0,col(i+7)
"    ȓȐ 556+(i*28),556,28,-18
	  � i
(�
2�
<:
F:
P��Title(title$)
Zlen=�(title$)
dx=640-32*len/2
n� back Ȝ 64:�
x�5
�� 0:� back
�� x-8,950:� title$
�� fore Ȝ 192
�� x,958:� title$
��
�:
�:
�ݤYesNo(ques$)
�� �(7);�(7)
�� 63 Ȝ 192
�� 5
�� 332,50
�� ques$
�MenuSet(8)
�MenuChoice(8,ch1)
� 0,back-128 Ȝ 64
"%ȓ Ȑ 330,10,660,60:� fore Ȝ 192
,� ch1=2:=�
6:=�
@:
J:
T*��Grid(grx%,gry%,sqx,sqy,c1,c2,c3,gap)
^� i%,j%
h
�i%=1�sqx
r  �j%=1�sqy
|    � c1=c2 � c2=c3 �
�6      �Buttoff(grx%+(i%-1)*gap,gry%-j%*gap,c1,gap)
�	    �
�;      �Button(grx%+(i%-1)*gap,gry%-j%*gap,c1,c2,c3,gap)
�	    �
�  �
��
��
�:
�:
�"��CreatePoly(xmin,ymin,sq,gap)
�sqcnt=0
�
ȗ � 1
�+ȗ ȓ xmin,ymin-190,sq*40-8,sq*40-8+190
�
'  � ȗ msx,msy,msstatus:�msstatus=0
  �
&    ȗmsx,msy,msstatus
0  � msstatus<>0
:  � sq=5 �MenuChoice(6,ch)
D  � sq=6 �MenuChoice(7,ch)
N  � ch=1 �
X
    tot=0
b)    �i=1�8:�j=1�8:tot+=chr(i,j):�j:�i
l    � tot<>0 �
v      �Calc
�      � �CheckPoly �
�        �Clear(xmin,ymin)
�        �Flash(1,2,8)
�
        �
�      �
�        �Error(err)
�        �Clear(xmin,ymin)
�
        �
�      �
�	    �
�  �
�"  � msy>ymin �OnOff(xmin,ymin)
�
� ch=2
�
:
:
 ��Clear(xmin,ymin)
*
�i=1�8
4  �j=1�8
>D    � chr(i,j)=1 �Button(xmin+(i-1)*40,ymin+(-j+sq)*40,2,1,4,40)
H    chr(i,j)=0
R  �j
\�i
f�
p:
z:
���OnOff(xmin,ymin)
�xp=�((msx-xmin)/40)+1
�yp=sq-�((msy-ymin)/40)
�� chr(xp,yp)=1 �
�  chr(xp,yp)=0
�  sqcnt-=1
�7  �Button(xmin+(xp-1)*40,ymin+(-yp+sq)*40,2,1,4,40)
��
�  chr(xp,yp)=1
�  sqcnt+=1
�7  �Button(xmin+(xp-1)*40,ymin+(-yp+sq)*40,1,2,8,40)
��
��
:
:

��Calc
$�i=sq � 1 �-1
.
  �j=1�sq
8%    � chr(j,i)=1 val(i)+=2^(sq-j)
B  �j
L7  � sq=5 � pent(13,1,i)=val(i) � hex(36,1,i)=val(i)
V�i
` �i=1�sq:�j=1�sq:val(i)=0:�:�
j�ForceTopLeft(13,1)
t.� sq=5 � �PolySize(13,1) � �PolySize(36,1)
~�
�:
�:
�ݤCheckPoly
�p=1:tf=0:erroff=0
�$� sq=5 � polynum=12 � polynum=35
�� sq=6 erroff=3
��
�	  v=1
�  �
�    k=1:match=�
�	    �
�      � sq=5 �
/        � pent(p,v,k)<>pent(13,1,k) match=�

      �
2      � sq=6 � hex(p,v,k)<>hex(36,1,k) match=�
      k+=1
(    � match=� � k>sq
2*    � match=� � �poly$,�(p+64))=0 tf=1
<+    � tf=1 poly$+=�(p+64):var$+=�(v):=�
F*    � match=� � �poly$,�(p+64))>0 tf=2
P    � tf=2:err=3+erroff:=�
Z    v+=1
d#    � sq=5 polyvar=pentvar(p)*2
n"    � sq=6 polyvar=hexvar(p)*2
x  � v>polyvar
�
  p+=1
�� p>polynum
�err=1+erroff
�� sqcnt=sq err=2+erroff
�=�
�:
�:
���Setup
�� i,j,k
�6� *** Read Data for Pentominoes and Hexominoes ***
�ch=�("<POLY$DIR>.polydata")
� cf=�("<POLY$DIR>.configure")
�pw=�("<POLY$DIR>.password")
� i=1 � 12
  �#ch,pentvar(i)
  num=pentvar(i)
"  � j=1 � num*2 � 2
,%    � k=1 � 5:�#ch,pent(i,j,k):�k
6'    � k=1 � 5:�#ch,pent(i,j+1,k):�k
@  �j
J�i
T� i=1 � 35
^  �#ch,hexvar(i)
h  num=hexvar(i)
r  � j=1 � num*2 � 2
|$    � k=1 � 6:�#ch,hex(i,j,k):�k
�&    � k=1 � 6:�#ch,hex(i,j+1,k):�k
�  �j
��i
��#ch
�'� *** Read Pentominoes' colours ***
��i=1�12
�  � col(i)
�  colp(i)=col(i)
��i
�� *** Read Animal Data ***
��i=0�16
�  � animal$,grx,gry
�  an_n$(i)=animal$
  an_grx(i)=grx
  an_gry(i)=gry

  �j=1�12
&    �y1,x1,poly,var
0    an_x(i,j)=x1
:    an_y(i,j)=y1
D    an_p(i,j)=poly
N    an_v(i,j)=var
X  �j
b�i
l!� *** Read Error Messages ***
v� i=1 � 10
�  � err$(i)
��i
�*� *** Read Menu Configuration Data ***
�i=1
��
�	  j=1
�  �
�    �#cf,m$
�    menset$(i,j)=m$
�    j+=1
�  � m$="E"
�
  i+=1
�	� i=6
�#cf
� *** Read Menu Data ***
� j=1 � 10
 	  i=1
*  � m1,m2,m3,m4
4A  menext(j,1)=m1:menext(j,2)=m2:menext(j,3)=m3:menext(j,4)=m4
>  �
H    � men$,menx,meny
R    menu$(j,i)=men$
\'    menux(j,i)=menx:menuy(j,i)=meny
f    i+=1
p  � men$="z"
z�j
� � *** Read Tutorial Data ***
�i=1
��
�  � line$(i)
�
  i+=1
�� line$(i-1)="zzz"
�*� *** Read Pentomino Rotation Data ***
�� i=1 � 12
�  � rot$(i)
��i
�� *** Read Password ***
��
�
  �#pw,p$
  pass$=pass$+�(�(p$)+43)
� p$="]"
pass$=�pass$)
$�#pw
."� *** Initialise Variables ***
80pcnt=1:an=0:back=138:fore=30:saveflag=�:sp=�
B� *** Load Sprites ***
Ls$="<POLY$DIR>.Sprite"
Vfile%=�(s$)
`L%=�#file%+64
j�#file%
t� S% L%
~S%!0=L%
�ș "OS_SpriteOp",256+9,S%
�!ș "OS_SpriteOp",256+10,S%,s$
��
�:
�:
���DecToBin(dec)
��i
�bin$=""
�
�i=8�1�-1
�  bin=2^(i-1)
�  temp1=�(dec/bin)
�  � temp1=1 �
    bin$=bin$+"1"

    dec-=bin*temp1
  �
    bin$=bin$+"0"
(  �
2�i
<�
F:
P:
Z)��DrawPoly(p,v,xpos,ypos,c1,c2,c3,c4)
d	� i,j
n� i=1 � ypoly
x/  � sq=5 � dec=pent(p,v,i) � dec=hex(p,v,i)
�  �DecToBin(dec)
�  � j=1 � xpoly
�    a$=�bin$,j,1)
�    �a$="1" � c3<>c4 �
�=      �Button(xpos+(j-1)*gap,ypos-(i-1)*gap,c1,c2,c3,gap)
�	    �
�8      �Buttoff(xpos+(j-1)*gap,ypos-(i-1)*gap,c4,gap)
�	    �
�  �j
��i
��
�:
�:
��ForceTopLeft(p,v)
� i
� sq=6 p=36
"�
,-  � sq=5 dec=pent(p,v,1) � dec=hex(p,v,1)
6  � dec=0 �
@    �i=2 � sq
J*      � sq=5 pent(p,v,i-1)=pent(p,v,i)
T(      � sq=6 hex(p,v,i-1)=hex(p,v,i)
^
    �i
h+    � sq=5 pent(p,v,5)=0 � hex(p,v,6)=0
r  �
|� dec<>0
��
�  zero=0
�
  �i=1�sq
�    � sq=5 dec=pent(p,v,i)
�    � sq=6 dec=hex(p,v,i)
�    �DecToBin(dec)
�    zero+=�(�bin$,1))
�  �i
�  � zero=0 �
�    �i=1�sq
�*      � sq=5 pent(p,v,i)=pent(p,v,i)*2
�(      � sq=6 hex(p,v,i)=hex(p,v,i)*2
�
    �i
   �
 
� zero<>0
 �
 &:
 0:
 :��PolySize(p,v)
 D� i
 Nyoff=0:xoff=0:margin=4
 X� sq=5 margin=8
 bi=1
 l�
 v/  � sq=5 � dec=pent(p,v,i) � dec=hex(p,v,i)
 �
  i+=1
 �� dec=0 � i=sq+1
 �yoff=i-2
 �� dec<>0 yoff=sq
 �� i=1 � yoff
 �/  � sq=5 � dec=pent(p,v,i) � dec=hex(p,v,i)
 �
  tempx=0
 �#  ȕ ((dec � margin) <> margin)
 �    dec=dec>>1
 �    tempx+=1
 �  �
 �%  � (sq-tempx)>xoff xoff=sq-tempx
 ��i
!xpoly=xoff:ypoly=yoff
!+xoff=�((sq-xoff)/2):yoff=�((sq-yoff)/2)
!�
! :
!*:
!4��Tessellate
!>�i,j
!Hgap=40:sq=5
!R�Title("Tessellations")
!\5disp()=30:disp1()=0:disp2()=0:disp3()=0:disp4()=0
!f
�i=0 � 14
!p  �j=0 � 17
!z     � i=0 � i=14 disp(i,j)=0
!�"    � j=0 � j=17 � disp(i,j)=0
!�  �j
!��i
!��Puzzles(0)
!��
!�:
!�:
!���Pentanimals(an)
!�
� an<>0 �
!�  �Title(an_n$(an))
!�  �LoadAnimal(an)
!��
!�x=an_grx(an):y=an_gry(an)
"� i=0 � y+1
"  � j=0 � x+1
"    col=disp(i,j)
"$"    xp%=500+40*j:yp%=860-gap*i
".9    � col>0 ș "OS_SpriteOp",256+34,S%,"on",xp%,yp%,0
"8:    � col=0 ș "OS_SpriteOp",256+34,S%,"off",xp%,yp%,0
"`  �j
"j�i
"tx=40:y=860:gap=32
"~�j=1�12
"�  p=an_p(an,j)
"�  v=an_v(an,j)
"�  �PolySize(p,v)
"�  � j=7 x=40+gap*6:y=860
"�&  �DrawPoly(p,v,x,y,0,0,col(p),10)
"�  ypos(j*2)=y
"�  y=y-(ypoly*gap)-gap
"�  ypos(j*2-1)=y+gap*2
"��j
"�
gap=40
"��
"�:
#:
#
��PolyColour
#pcol=�msx,msy)
#col(p)=pcol
#(�UpdatePic
#2�
#<:
#F:
#P
��OnePoly
#Z� i,j,v,x,y
#dsq=5:gap=40
#nx=40:y=860
#x�0,back-128 Ȝ 64
#�ȓȐ 40,100,340,800
#�num=�(rot$(p))
#��j=1�num
#�  v=�(�rot$(p),j,1))
#�  �PolySize(p,v)
#�"  �DrawPoly(p,v,x,y,0,0,60,10)
#�  ypos(j*2)=y
#�  y=y-(ypoly*gap)-gap
#�  ypos(j*2-1)=y+gap*2
#�   � num/2=j x=40+gap*6:y=860
#��j
#��
#�:
$:
$��SelectPent(an)
$ȗ ȓ 40,100,340,800
$"
ȗ � 1
$,3� REPEAT MOUSE msx,msy,msstatus:UNTILmsstatus=0
$6�
$@  �
$J    ȗmsx,msy,msstatus
$T  � msstatus<>0
$^  gap=32:xmin=40:j=1:tf=�
$h  �
$r    � j=7 xmin=232
$|    p=an_p(an,j)
$�    v=an_v(an,j)
$�-    ymin=ypos(j*2-1)-4:ymax=ypos(j*2)+gap
$�    �PolySize(p,v)
$�    xmax=xmin+gap*xpoly
$�\    � msx>xmin � msx<xmax � msy>ymin � msy<ymax �                    �poly$,�(64+p))=0 �
$�J      �DrawPoly(p,v,xmin,ymax-gap,back-128,back-128,back-128,back-128)
$�      tf=�
$�	    �
$�    j+=1
$�  � j=13 � tf
$�  gap=40
$�  � an=0 � tf �OnePoly
$�  � tf �DispPent(p,v):�
%� �
%�
%:
%&:
%0��DispPent(p,v)
%:dflag=�
%D� an=0 �PolySize(p,v)
%Ngrx=an_grx(an)
%Xgry=an_gry(an)
%bx=�(grx/2-xpoly/2)
%ly=�(gry/2-ypoly/2)
%v�j=1�ypoly
%�  dec=pent(p,v,j)
%�  �DecToBin(dec)
%�  �k=1�xpoly
%�    � �bin$,k,1)="1" �
%�      disp1(y+j,x+k)=p
%�	    �
%�  �k
%��j
%�� i=0 � grx+1
%�  � j=0 � gry+1
%�    col=disp1(j,i)
%�<    � col>0 �Button(500+40*i,860-gap*j,0,0,col(col),gap)
%�  �j
&�i
&�
&:
& :
&*
��Flip
&4	� i,j
&>� an=16 � p=1 �
&H�PolySize(p,v)
&R� i=0 � grx+1
&\  � j=0 � gry+1
&f    � disp1(j,i)=p �
&p      disp1(j,i)=0
&z	    �
&�  �j
&��i
&��UpdatePic
&�rot=�rot$(p),�(v))
&�%� rot=�(rot$(p)) v=�(�rot$(p),1))
&�+� rot<�(rot$(p)) v=�(�rot$(p),rot+1,1))
&��PolySize(p,v)
&��DispPent(p,v)
&��
&�:
&�:
&���UpdatePic
&�	� i,j
'�i=y � y+ypoly
'  �j=x � x+xpoly
'    col=disp1(i,j)
'$    � col<>0 � sp �
'.6      �Button(500+40*j,860-gap*i,0,0,col(col),gap)
'8	    �
'B      col=disp2(i,j)
'L      � col<>0 �
'V:        �Button(500+40*j,860-gap*i,1,2,disp3(i,j),gap)
'`      �
'j        col=disp(i,j)
't        � col<>0 �
'~4          �Button(500+40*j,860-gap*i,1,2,30,gap)
'�        �� disp2(i,j)=0
'�3          �Button(500+40*j,860-gap*i,2,1,4,gap)
'�
        �
'�      �
'�	    �
'�  �j
'��i
'��
'�:
'�:
'���Move(x1,y1)
'�	� i,j
(#xoff1=0:xoff2=0:yoff1=0:yoff2=0
(
�PolySize(p,v)
(� y1=-1 � y-1>-1 �
(  �i=x � x+xpoly
((    �j=y � y+ypoly
(2!      disp1(j-1,i)=disp1(j,i)
(<
    �j
(F  �i
(P  �i=x � x+xpoly
(Z    disp1(y+ypoly,i)=0
(d  �i
(n
  y-=1
(x  yoff1=1:xoff1=1:xoff2=-1
(��
(�� y1=1 � y+ypoly<gry �
(�  �i=x � x+xpoly
(�    �j=y+ypoly � y �-1
(�!      disp1(j+1,i)=disp1(j,i)
(�
    �j
(�  �i
(�  �i=x � x+xpoly
(�    disp1(y,i)=0
(�  �i
(�
  y+=1
(�  yoff2=-1:xoff1=1:xoff2=-1
(��
)� x1=-1 � x-1>-1 �
)  �i=x � x+xpoly
)    �j=y � y+ypoly
)"!      disp1(j,i-1)=disp1(j,i)
),
    �j
)6  �i
)@  �i=y � y+ypoly
)J    disp1(i,x+xpoly)=0
)T  �i
)^
  x-=1
)h  xoff1=1:yoff1=1:yoff2=-1
)r�
)|� x1=1 � x+xpoly<grx �
)�  �i=x+xpoly � x �-1
)�    �j=y � y+ypoly
)�!      disp1(j,i+1)=disp1(j,i)
)�
    �j
)�  �i
)�  �i=y � y+ypoly
)�    disp1(i,x)=0
)�  �i
)�
  x+=1
)�  xoff2=-1:yoff1=1:yoff2=-1
)��
)�!� xoff1+xoff2+yoff1+yoff2=0 �
)� �i=y+yoff1 � y+ypoly+1+yoff2
*"  �j=x+xoff1 � x+xpoly+1+xoff2
*    col=disp1(i,j)
*    � col<>0 �
*&6      �Button(500+40*j,860-gap*i,0,0,col(col),gap)
*0	    �
*:      col=disp2(i,j)
*D      � col<>0 �
*N:        �Button(500+40*j,860-gap*i,1,2,disp3(i,j),gap)
*X      �
*b        col=disp(i,j)
*l        � col<>0 �
*v4          �Button(500+40*j,860-gap*i,1,2,30,gap)
*�        �� disp2(i,j)=0
*�3          �Button(500+40*j,860-gap*i,2,1,4,gap)
*�
        �
*�      �
*�	    �
*�  �j
*��i
*��
*�:
*�:
*�	��Fix
*��PolySize(p,v)
*��i=x � x+xpoly
+  �j=y � y+ypoly
+5    � disp1(j,i)>0 � disp(j,i)=0 �Error(7):ch=0:�
+6    � disp1(j,i)>0 � disp2(j,i)>0 �Error(8):ch=0:�
+   �j
+*�i
+4�i=x � x+xpoly
+>  �j=y � y+ypoly
+H    � disp1(j,i)>0 �
+R      disp2(j,i)=p
+\+      disp3(j,i)=col(p):disp4(j,i)=pcnt
+f4      �Button(500+40*i,860-gap*j,1,2,col(p),gap)
+p	    �
+z    disp1(j,i)=0
+�  �j
+��i
+�dflag=�:pcnt+=1
+�poly$=poly$+�(64+p)
+��
+�:
+�:
+���Remove
+�� poly$="" � � dflag �
+�� tf
+�tf=�
+�� dflag � an<>0 �
+�
  dflag=�
,  disp1()=0
,  �UpdatePic
,
  tf=�
,$  prem=p
,.�
,8
� x,y,p,v
,B	ȕ tf
,L(  ȗ ȓ 540,860-40*gry,40*grx,40*gry
,V'  � ȗ msx,msy,msstatus:�msstatus=0
,`  �
,j    ȗmsx,msy,msstatus
,t  � msstatus<>0
,~  xp=�((msx-540)/40)+1
,�  yp=�((860-msy)/40)+1
,�  prem=disp2(yp,xp)
,�,  � prem=0 � disp1(yp,xp)<>0 �Error(9):�
,�-  � prem<>0 � disp1(yp,xp)<>0 �Error(9):�
,�  � prem=0 �Error(10):�
,�  ppos=�poly$,�(64+prem))
,�  cnt=disp4(yp,xp)
,�  �i=1�grx
,�    �j=1�gry
,�      � disp2(j,i)=prem �
,�-        � an<>0 � an=0 � disp4(j,i)=cnt �
,�6          disp2(j,i)=0:disp3(j,i)=0:dis=disp1(j,i)
-;          � dis=0 �Button(500+40*i,860-40*j,1,2,30,gap)
-
B          � dis<>0 �Button(500+40*i,860-40*j,0,0,col(dis),gap)
-
        �
-      �
-(
    �j
-2  �i
-<0  poly$=�poly$,ppos-1)+�poly$,�(poly$)-ppos)
-F
  tf=�
-P�
-Z
� an<>0 �
-d  x=40:y=860:gap=32
-n
  �j=1�12
-x    p=an_p(an,j)
-�    v=an_v(an,j)
-�    �PolySize(p,v)
-�    � j=7 x=40+gap*6:y=860
-�1    � p=prem �DrawPoly(p,v,x,y,0,0,col(p),10)
-�    y=y-(ypoly*gap)-gap
-�  �j
-�  gap=40
-��
-��
-�:
-�:
-�
��Help
-�	� i,j
.�i=1� an_grx(an)
.  �j=1� an_gry(an)
.E    � disp2(j,i)>0 � disp2(j,i)<>disp(j,i) �Help1(disp2(j,i),j,i)
."  �j
.,�i
.6�
.@:
.J:
.T��Help1(prem,yp,xp)
.^� i,j,x,y,p,v
.hppos=�poly$,�(64+prem))
.rcnt=disp4(yp,xp)
.|�i=1�grx
.�  �j=1�gry
.�    � disp2(j,i)=prem �
.�+      � an<>0 � an=0 � disp4(j,i)=cnt �
.�4        disp2(j,i)=0:disp3(j,i)=0:dis=disp1(j,i)
.�9        � dis=0 �Button(500+40*i,860-40*j,1,2,30,gap)
.�@        � dis<>0 �Button(500+40*i,860-40*j,0,0,col(dis),gap)
.�      �
.�	    �
.�  �j
.��i
.�.poly$=�poly$,ppos-1)+�poly$,�(poly$)-ppos)
.�
� an<>0 �
.�  x=40:y=860:gap=32
/
  �j=1�12
/    p=an_p(an,j)
/    v=an_v(an,j)
/&    �PolySize(p,v)
/0    � j=7 x=40+gap*6:y=860
/:1    � p=prem �DrawPoly(p,v,x,y,0,0,col(p),10)
/D    y=y-(ypoly*gap)-gap
/N  �j
/X  gap=40
/b�
/l�
/v:
/�:
/� ��MenuChoice(menu, � choice)
/�&menset$(10,7)="":menset$(10,10)=""
/�(� menset$(1,3)="N" menset$(10,7)="N"
/�)� menset$(1,4)="N" menset$(10,10)="N"
/�)blx=menext(menu,1):bly=menext(menu,2)
/�+xext=menext(menu,3):yext=menext(menu,4)
/�0� menu<>6 � menu<>7  ȗ ȓ blx,bly,xext,yext
/�
ȗ � 1
/�choice=0
/��
/�  � menu<>6 � menu<>7 �
/�)    � ȗ msx,msy,msstatus:�msstatus=0
0	    �
0      ȗmsx,msy,msstatus
0-      � �(-2) � �(-82) � menu=10 �SavePic
0 \      � �(-2) � �(-85) � menu=10 � menset$(1,2)<>"N" � an>0 � an<14 �Help:�PolySize(p,v)
0*    � msstatus<>0
04  �
0>
  item=10
0H  �
0R    mx=menux(menu,item)-4
0\    my=menuy(menu,item)-32
0f%    mlen=�(menu$(menu,item))*32+8
0pZ    � msx>mx � msx<mx+mlen � msy>my � msy<my+44 �            menset$(menu,item)<>"N" �
0z      choice=item
0�      � choice<>10 �
0�&        � 3,13:ȓ Ȑ mx,my,mlen,40
0�         time=�:� � �-time>25
0�&        � 3,13:ȓ Ȑ mx,my,mlen,40
0�      �
0�	    �
0�    item-=1
0�  � item=0
0�  � menu=6 � menu=7 �
0�� choice<>0
0��
0�:
0�:
1
��SavePic
1sp=�
1 � dflag sp=�:�UpdatePic:sp=�
1$!� � �YesNo("Save Picture?") �
1.
  *FX15,0
18  msstatus=0
1B  ȗ ȓ 480,100,760,160
1L  � dflag �UpdatePic
1V  �
1`�
1j� 63 Ȝ 192
1t� 200,40
1~Mok$="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_#/-'"
1��"Enter Filename:"
1��Input(712,40,10,ok$,file$)
1�� back-128 Ȝ 64
1�ȓȐ 180,0,1000,50
1�� file$<>"" �
1�7  � 24,480;800-an_gry(an)*40;580+an_grx(an)*40;900;
1�  *DIR <POLY$DIR>
1�  *UP 1
1�  $name%=""
1�  � i%=0 � �(file$)
1�"    $(name%+i%)=�file$,i%+1,1)
1�	  �i%
2  � ("SCREENSAVE "+$name%)
2

  � 26
2�
2� dflag �UpdatePic
2(ȗ ȓ 480,100,760,160
22�
2<:
2F:
2P��LoadAnimal(animal)
2Z disp()=0:disp1()=0:disp2()=0
2d�i=1�12
2n  p=an_p(animal,i)
2x  v=an_v(animal,i)
2�  x_min=an_x(animal,i)
2�  y_min=an_y(animal,i)
2�  �j=1�5
2�    dec=pent(p,v,j)
2�    �DecToBin(dec)
2�    �k=1�5
2�      � �bin$,k,1)="1" �
2�'        disp(y_min+j-1,x_min+k-1)=p
2�      �
2�
    �k
2�  �j
2��i
2��
3:
3:
3$��Button(x,y,col1,col2,col3,gap)
3"
rect=8
3,� gap=20 rect=4
36�0,col1
3@� col1=1 � 0,10 Ȝ 0
3J� col1=2 � 0,10 Ȝ 192
3T%� x,y:� x,y+gap-8:� &55,x+gap-8,y
3^�0,col2
3h� col2=1 � 0,10 Ȝ 0
3r� col2=2 � 0,10 Ȝ 192
3|� &55,x+gap-8,y+gap-8
3��0,col3 Ȝ 128
3�+ȓ Ȑ x+rect,y+rect,(gap-8)/2,(gap-8)/2
3��
3�:
3�:
3���Buttoff(x%,y%,col,gap%)
3�� col Ȝ 64
3�ȓ Ȑ x%,y%,gap%-8,gap%-8
3�� col Ȝ 192
3��
3�:
3�:
3���Error(err)
4	� i,j
4� 4
4� fore:� back Ȝ 64
4&error$=err$(err)
40i=1
4:� �(7);�(7)
4D!� �(error$) � 2=1 error$+=" "
4N� i=1��(error$)/2
4X  �20-i,30);
4b  time=�:� � �-time>5
4l  � �error$,i);�error$,i);
4v�i
4�� err=3+erroff �
4�  time=�
4�  �
4�    �Flash(1,2,8)
4�    �Flash(1,2,34)
4�  � �-time>250
4�  �Flash(1,2,8)
4��
4�time=�:� � �-time>200
4�� i=�(error$)/2�1�-1
4�  �19-i,30);" ";
4�"  �error$,i);�error$,i);"  ";
4�  time=�:� � �-time>5
5�i
5�18,30)"    ";
5� 5
5 �
5*:
54:
5>��Flash(c1,c2,c3)
5H
� 100,100
5Rxadjust=0:yadjust=0:mod=4
5\(� sq=6 xadjust=-60:yadjust=200:mod=7
5f!v=�(�var$,�poly$,�(64+p)),1))
5ppp=�poly$,�(64+p))
5z/xpos=100+((pp-1) � mod)*(sq*gap+20)+xadjust
5�Cypos=((sq*gap+20)*(sq-1)-20)-((pp-1) � mod)*(sq*gap+20)+yadjust
5��PolySize(p,v)
5�:�DrawPoly(p,v,xpos+gap*xoff,ypos-gap*yoff,c1,c2,c3,60)
5��
5�:
5�:
5���ErrorTrap
5�� 4
5��"Diagnostics:"
5��"Error number  ";�
5��
5��" at line ";�
5��
6�
6:
6:
6$%� *** Colours for Pentominoes ***
6.:
68(� 3,11,63,48,19,60,15,24,17,28,55,50
6B:
6L:
6V8� *********** Data for Pentomino Puzzles ***********
6`:
6j� *** Tessellation Data ***
6t:
6~� "Tessellations",16,13
6�5� 0,0,1,3,0,0,2,5,0,0,3,1,0,0,4,1,0,0,5,1,0,0,6,1
6�8� 0,0,7,1,0,0,8,1,0,0,9,1,0,0,10,1,0,0,11,1,0,0,12,1
6�:
6�� *** Pentanimals ***
6�:
6�� "Dog",10,12
6�6� 1,10,1,1,2,2,6,1,4,1,7,1,4,4,5,4,6,3,2,2,6,4,8,1
6�9� 6,6,12,2,6,8,10,2,7,8,4,3,8,5,9,4,9,3,3,3,10,9,11,4
6�� "Penguin",9,12
6�6� 1,4,11,1,1,6,5,3,4,3,6,1,4,5,4,4,5,5,3,3,5,8,9,7
6�8� 6,1,12,2,6,3,8,3,7,7,1,1,8,3,10,7,9,5,2,3,10,3,7,7
6�� "Elephant",11,9
77� 1,1,11,1,5,4,1,1,3,4,2,8,3,7,7,8,3,9,12,1,4,1,4,2
7
7� 4,4,10,4,1,2,6,1,5,7,8,3,6,5,9,8,6,8,5,6,6,10,3,3
7� "Pig",12,7
77� 1,2,9,1,1,6,1,3,1,11,3,3,2,4,11,1,2,5,6,1,2,7,2,5
7(8� 2,9,10,8,3,1,12,4,4,6,8,1,4,8,7,8,5,4,4,2,5,10,5,2
72� "Cockerel",13,13
7<:� 1,3,12,1,2,1,6,1,3,10,10,5,3,12,11,4,4,3,1,1,5,4,5,5
7F6� 5,7,4,2,6,7,8,1,6,9,9,8,7,4,7,1,9,5,2,5,10,6,3,3
7P� "Kangeroo",15,13
7Z7� 1,2,5,5,3,3,9,6,5,1,8,3,7,3,11,5,8,3,10,5,9,5,6,1
7d<� 10,4,2,2,10,9,3,1,11,1,4,3,11,7,7,7,13,11,1,3,8,6,12,4
7n� "Camel",13,12
7x8� 1,1,2,7,3,3,11,1,4,4,12,4,4,9,6,1,6,4,10,4,6,7,9,3
7�8� 6,11,7,4,7,7,4,1,7,8,8,4,7,11,5,3,8,6,1,1,9,12,3,4
7�� "Dove",16,9
7�8� 1,2,4,4,2,1,12,4,3,5,1,3,3,10,2,5,3,13,9,1,4,3,6,1
7�8� 4,5,11,4,4,7,3,5,4,10,8,3,5,7,7,3,7,5,5,2,7,7,10,2
7�:
7�/� *** Puzzle Shape Data for Pentominoes ***
7�:
7�� "Pyramid",15,8
7�7� 1,8,9,6,2,6,6,1,3,9,10,3,4,4,7,3,5,7,3,1,5,10,8,1
7�9� 6,2,2,6,6,4,4,4,6,9,11,1,6,11,5,1,6,13,12,1,8,1,1,3
7�� "Diamond",11,10
7�7� 1,5,10,5,3,3,2,6,3,6,5,2,4,8,7,1,5,1,6,1,5,3,11,3
7�6� 5,5,3,4,6,3,4,3,6,7,1,3,7,6,8,1,7,8,12,2,9,4,9,2
8� "Cross",11,11
86� 1,5,7,5,1,7,3,1,3,4,10,8,5,1,5,3,5,2,9,3,5,6,2,5
88� 5,8,8,3,5,9,4,3,7,2,1,3,7,6,6,1,8,4,12,4,10,5,11,6
8"� "'Circle'",9,8
8,7� 1,1,12,3,1,4,7,6,1,5,9,3,2,4,4,3,3,1,8,3,3,6,10,3
866� 3,8,11,3,5,1,6,1,5,3,5,2,6,5,1,3,7,3,3,6,7,5,2,8
8@� "Bee-Hive",9,10
8J6� 1,1,3,2,1,2,7,3,2,4,6,1,3,1,5,1,3,3,9,6,4,6,11,1
8T7� 5,5,1,1,5,7,10,4,6,2,12,4,7,6,8,2,7,8,2,4,8,6,4,1
8^:
8h� *** Rectangle Data ***
8r:
8|� "6x10",10,6
8�5� 1,1,2,2,1,2,9,3,1,5,1,3,1,8,5,5,2,2,6,1,2,6,8,2
8�8� 3,4,12,2,3,8,11,3,4,1,10,5,4,6,7,6,4,8,4,3,5,2,3,8
8�� "5x12",12,5
8�6� 1,1,9,6,1,2,5,2,1,4,10,1,1,6,8,4,1,7,1,3,1,9,3,8
8�8� 3,1,4,1,3,3,6,1,3,5,12,3,3,9,2,8,4,7,7,3,4,10,11,6
8�� "4x15",15,4
8�8� 1,1,1,3,1,5,6,1,1,7,8,2,1,9,10,6,1,10,9,3,1,13,4,4
8�9� 2,1,11,5,2,4,12,1,2,13,5,1,3,1,2,6,3,7,3,6,3,11,7,2
8�:
8�:
8�� *** Error Messages ***
8�:
8�'� "A pentomino must have 5 squares"
9 � "Squares must be touching"
9%� "This pentomino already exists"
9&� "A hexomino must have 6 squares"
9& � "Squares must be touching"
90$� "This hexomino already exists"
9:+� "The pentomino must lie on the shape"
9D$� "Pentominoes must not overlap"
9N)� "This pentomino has not been FIXed"
9X)� "Click on a pentomino to remove it"
9b:
9l:
9v� *** Menu Data ***
9�:
9�� 480,100,760,160
9�I� "Access Code",464,840,"Help",576,750,"Flip",576,660,"     ",560,570
9�
� "z",1,1
9�:
9�� 330,60,620,800
9�5� "Tutorial",512,840,"Pentomino Designer",352,750
9�6� "Hexomino Designer",368,660,"Rectangles",480,570
9�1� "PentAnimals",464,480,"PentoShapes",464,390
9�7� "Tessellations",432,300,"Teacher Control",400,210
9�� "QUIT",576,120,"z",1,1
9�:
9�� 480,100,320,800
:8� "Dog",592,840,"Penguin",528,750,"Elephant",512,660
:9� "Pig",592,570,"Cockerel",512,480,"Kangeroo",512,390
:$� "Camel",560,300,"Dove",576,210
: !� "Main Menu",496,120,"z",1,1
:*:
:4� 400,440,480,440
:>7� "6x10 Rectangle",416,840,"5x12 Rectangle",416,750
:H� "4x15 Rectangle",416,660
:R!� "Main Menu",496,570,"z",1,1
:\:
:f� 480,350,320,530
:p9� "Pyramid",528,840,"Diamond",528,750,"Cross",560,660
:z+� "'Circle'",512,570,"Bee-Hive",512,480
:�!� "Main Menu",496,390,"z",1,1
:�:
:�� 999,999,999,999
:�,� "TRY",1048,650,"QUIT",1032,560,"z",1,1
:�:
:�� 999,999,999,999
:�,� "TRY",1080,600,"QUIT",1064,510,"z",1,1
:�:
:�� 790,10,140,50
:�#� "y",792,50,"n",888,50,"z",1,1
:�:
:�� 510,10,260,50
:�� "CONTINUE",514,50,"z",1,1
;:
;� 480,100,760,160
;5� "�",700,200,"�",780,200,"�",740,160,"�",740,240
;$D� "Fix",908,240,"Remove",860,160,"Flip",1100,240,"Quit",1100,160
;.-� "�Pick",480,240,"     ",480,160,"z",1,1
;8:
;B:
;L#� *** Data for the Tutorial ***
;V:
;`� "63What is a POLYOMINO ?"
;j	� "!"
;t2� "60It isn't a word we use every day, but we"
;~2� "60all have heard of one sort of polyomino."
;�	� "!"
;�2� "12It's the simplist kind, called a DOMINO."
;�	� "!"
;�0� "60No doubt you've all played dominoes at"
;�� "60some time or another."
;�
� "#","@"
;�0� "12A domino is a rectangle split into two"
;�0� "12squares, joined at one of their edges."
;�
� "#","$"
;�2� "60Therefore, a TRIOMINO would be made of 3"
;�1� "60squares joined at their edges, as shown"
;�(� "60below:- There are 2 TRIOMINOES"
<� "#","%","#","!","!","!"
<
2� "12A QUADROMINO is made of 4 squares joined"
<0� "12at their edges. There are 5 in all...."
<� "#","^","#","$"
<(2� "60If you take 5 squares and join them edge"
<2+� "60to edge you form a PENTOMINO.","!"
<<2� "12Similarly, if you use 6 squares you form"
<F� "12a HEXOMINO.","!"
<P.� "60There are 12 Pentominoes and some 35"
<Z� "60Hexominoes!!","!","#"
<d0� "12This program allows you to design both"
<n)� "12the pentominoes and hexominoes."
<x	� "!"
<�/� "60There are also many activities making"
<�(� "60use of the 12 pentominoes.","!"
<�2� "63ENJOY  ENJOY  ENJOY  ENJOY  ENJOY  ENJOY"
<�� "zzz"
<�:
<�:
<�0� *** Data for Pentomino Rotations/Flips ***
<�:
<� � "13","15472638","15482736"
<�"� "1234","1325","1","15482736"
<�"� "1423","16472835","15482736"
<�� "1536","1243"
�
00000000  0d 00 0a 1b f4 20 3e 3c  50 4f 4c 59 24 44 49 52  |..... ><POLY$DIR|
00000010  3e 2e 21 52 75 6e 49 6d  61 67 65 0d 00 14 12 ee  |>.!RunImage.....|
00000020  20 85 20 f2 45 72 72 6f  72 54 72 61 70 0d 00 1e  | . .ErrorTrap...|
00000030  10 2a 4b 45 59 31 20 45  44 49 54 7c 4d 0d 00 28  |.*KEY1 EDIT|M..(|
00000040  18 2a 3c 50 4f 4c 59 24  44 49 52 3e 2e 72 6f 75  |.*<POLY$DIR>.rou|
00000050  6e 64 73 65 74 0d 00 32  42 de 20 63 68 72 28 38  |ndset..2B. chr(8|
00000060  2c 38 29 2c 76 61 6c 28  38 29 2c 70 65 6e 74 28  |,8),val(8),pent(|
00000070  31 33 2c 38 2c 35 29 2c  70 65 6e 74 76 61 72 28  |13,8,5),pentvar(|
00000080  31 32 29 2c 72 6f 74 24  28 31 32 29 2c 68 65 78  |12),rot$(12),hex|
00000090  76 61 72 28 33 35 29 0d  00 3c 44 de 20 68 65 78  |var(35)..<D. hex|
000000a0  28 33 36 2c 38 2c 36 29  2c 64 69 73 70 28 32 35  |(36,8,6),disp(25|
000000b0  2c 32 35 29 2c 64 69 73  70 31 28 32 35 2c 32 35  |,25),disp1(25,25|
000000c0  29 2c 64 69 73 70 32 28  32 35 2c 32 35 29 2c 64  |),disp2(25,25),d|
000000d0  69 73 70 33 28 32 35 2c  32 35 29 0d 00 46 4d de  |isp3(25,25)..FM.|
000000e0  20 64 69 73 70 34 28 32  35 2c 32 35 29 2c 61 6e  | disp4(25,25),an|
000000f0  5f 78 28 32 30 2c 31 32  29 2c 61 6e 5f 79 28 32  |_x(20,12),an_y(2|
00000100  30 2c 31 32 29 2c 61 6e  5f 70 28 32 30 2c 31 32  |0,12),an_p(20,12|
00000110  29 2c 61 6e 5f 76 28 32  30 2c 31 32 29 2c 6c 69  |),an_v(20,12),li|
00000120  6e 65 24 28 31 30 30 29  0d 00 50 49 de 20 61 6e  |ne$(100)..PI. an|
00000130  5f 6e 24 28 32 30 29 2c  61 6e 5f 67 72 78 28 32  |_n$(20),an_grx(2|
00000140  30 29 2c 61 6e 5f 67 72  79 28 32 30 29 2c 63 6f  |0),an_gry(20),co|
00000150  6c 28 31 32 29 2c 63 6f  6c 70 28 31 32 29 2c 70  |l(12),colp(12),p|
00000160  6f 6c 79 28 36 2c 36 29  2c 65 72 72 24 28 31 30  |oly(6,6),err$(10|
00000170  29 0d 00 5a 42 de 20 79  70 6f 73 28 32 34 29 2c  |)..ZB. ypos(24),|
00000180  6d 65 6e 65 78 74 28 31  32 2c 34 29 2c 6d 65 6e  |menext(12,4),men|
00000190  75 24 28 31 32 2c 31 32  29 2c 6d 65 6e 75 78 28  |u$(12,12),menux(|
000001a0  31 32 2c 31 32 29 2c 6d  65 6e 75 79 28 31 32 2c  |12,12),menuy(12,|
000001b0  31 32 29 0d 00 64 1d de  20 6d 65 6e 73 65 74 24  |12)..d.. menset$|
000001c0  28 31 32 2c 31 32 29 2c  6e 61 6d 65 25 20 31 36  |(12,12),name% 16|
000001d0  0d 00 6e 0c 2a 66 78 32  30 30 2c 31 0d 00 78 0b  |..n.*fx200,1..x.|
000001e0  f2 53 63 72 65 65 6e 0d  00 82 0a 74 69 6d 65 3d  |.Screen....time=|
000001f0  91 0d 00 8c 14 ef 20 32  33 3b 38 32 30 32 3b 30  |...... 23;8202;0|
00000200  3b 30 3b 30 3b 0d 00 96  0a f2 53 65 74 75 70 0d  |;0;0;.....Setup.|
00000210  00 a0 12 f5 20 fd 20 91  2d 74 69 6d 65 3e 33 30  |.... . .-time>30|
00000220  30 0d 00 aa 08 eb 20 31  33 0d 00 b4 14 ef 20 32  |0..... 13..... 2|
00000230  33 3b 38 32 30 32 3b 30  3b 30 3b 30 3b 0d 00 be  |3;8202;0;0;0;...|
00000240  18 2a 3c 50 4f 4c 59 24  44 49 52 3e 2e 21 50 61  |.*<POLY$DIR>.!Pa|
00000250  6c 65 74 74 65 0d 00 c8  0d f2 4d 61 69 6e 4d 65  |lette.....MainMe|
00000260  6e 75 0d 00 d2 08 c8 97  20 87 0d 00 dc 07 ef 20  |nu...... ...... |
00000270  34 0d 00 e6 17 2a 3c 50  4f 4c 59 24 44 49 52 3e  |4....*<POLY$DIR>|
00000280  2e 44 65 66 61 75 6c 74  0d 00 f0 17 2a 3c 50 4f  |.Default....*<PO|
00000290  4c 59 24 44 49 52 3e 2e  21 50 61 6c 44 65 66 0d  |LY$DIR>.!PalDef.|
000002a0  00 fa 07 fb 20 33 0d 01  04 15 db 3a f1 8a 31 37  |.... 3.....:..17|
000002b0  2c 31 34 29 22 42 20 59  20 45 22 0d 01 0e 05 e0  |,14)"B Y E".....|
000002c0  0d 01 18 05 3a 0d 01 22  05 3a 0d 01 2c 0e dd f2  |....:..".:..,...|
000002d0  4d 61 69 6e 4d 65 6e 75  0d 01 36 10 e6 20 62 61  |MainMenu..6.. ba|
000002e0  63 6b 20 c8 9c 20 36 34  0d 01 40 05 da 0d 01 4a  |ck .. 64..@....J|
000002f0  17 f2 54 69 74 6c 65 28  22 4d 61 69 6e 20 4d 65  |..Title("Main Me|
00000300  6e 75 22 29 0d 01 54 0f  f2 4d 65 6e 75 53 65 74  |nu")..T..MenuSet|
00000310  28 32 29 0d 01 5e 08 74  66 3d a3 0d 01 68 05 f5  |(2)..^.tf=...h..|
00000320  0d 01 72 17 20 20 f2 4d  65 6e 75 43 68 6f 69 63  |..r.  .MenuChoic|
00000330  65 28 32 2c 63 68 29 0d  01 7c 0d 20 20 c8 8e 20  |e(2,ch)..|.  .. |
00000340  63 68 20 ca 0d 01 86 20  20 20 20 20 c9 20 31 3a  |ch ....     . 1:|
00000350  20 f2 54 75 74 6f 72 69  61 6c 3a f2 4d 61 69 6e  | .Tutorial:.Main|
00000360  4d 65 6e 75 0d 01 90 2b  20 20 20 20 c9 20 32 3a  |Menu...+    . 2:|
00000370  20 f2 50 65 6e 74 6f 6d  69 6e 6f 28 31 30 30 30  | .Pentomino(1000|
00000380  2c 37 30 30 29 3a f2 4d  61 69 6e 4d 65 6e 75 0d  |,700):.MainMenu.|
00000390  01 9a 2a 20 20 20 20 c9  20 33 3a 20 f2 48 65 78  |..*    . 3: .Hex|
000003a0  6f 6d 69 6e 6f 28 31 30  32 30 2c 36 36 30 29 3a  |omino(1020,660):|
000003b0  f2 4d 61 69 6e 4d 65 6e  75 0d 01 a4 21 20 20 20  |.MainMenu...!   |
000003c0  20 c9 20 34 3a 20 f2 52  65 63 74 61 6e 67 6c 65  | . 4: .Rectangle|
000003d0  3a f2 4d 61 69 6e 4d 65  6e 75 0d 01 ae 22 20 20  |:.MainMenu..."  |
000003e0  20 20 c9 20 35 3a 20 f2  41 6e 69 6d 61 6c 4d 65  |  . 5: .AnimalMe|
000003f0  6e 75 3a f2 4d 61 69 6e  4d 65 6e 75 0d 01 b8 23  |nu:.MainMenu...#|
00000400  20 20 20 20 c9 20 36 3a  20 f2 50 65 6e 74 6f 53  |    . 6: .PentoS|
00000410  68 61 70 65 73 3a f2 4d  61 69 6e 4d 65 6e 75 0d  |hapes:.MainMenu.|
00000420  01 c2 22 20 20 20 20 c9  20 37 3a 20 f2 54 65 73  |.."    . 7: .Tes|
00000430  73 65 6c 6c 61 74 65 3a  f2 4d 61 69 6e 4d 65 6e  |sellate:.MainMen|
00000440  75 0d 01 cc 1e 20 20 20  20 c9 20 38 3a 20 f2 41  |u....    . 8: .A|
00000450  63 63 65 73 73 3a f2 4d  61 69 6e 4d 65 6e 75 0d  |ccess:.MainMenu.|
00000460  01 d6 2b 20 20 20 20 c9  20 39 3a 20 e7 20 a4 59  |..+    . 9: . .Y|
00000470  65 73 4e 6f 28 22 41 72  65 20 79 6f 75 20 73 75  |esNo("Are you su|
00000480  72 65 3f 22 29 20 74 66  3d b9 0d 01 e0 07 20 20  |re?") tf=.....  |
00000490  cb 0d 01 ea 08 fd 20 74  66 0d 01 f4 05 e1 0d 01  |...... tf.......|
000004a0  fe 05 3a 0d 02 08 05 3a  0d 02 12 0c dd f2 41 63  |..:....:......Ac|
000004b0  63 65 73 73 0d 02 1c 18  e7 20 6d 65 6e 73 65 74  |cess..... menset|
000004c0  24 28 31 2c 31 29 3d 22  59 22 20 8c 0d 02 26 1f  |$(1,1)="Y" ...&.|
000004d0  20 20 f2 54 69 74 6c 65  28 22 54 65 61 63 68 65  |  .Title("Teache|
000004e0  72 20 43 6f 6e 74 72 6f  6c 22 29 0d 02 30 0a 20  |r Control")..0. |
000004f0  20 e6 20 36 33 0d 02 3a  20 20 20 ec 20 32 30 30  | . 63..:   . 200|
00000500  2c 38 30 30 3a f1 20 22  41 63 63 65 73 73 20 43  |,800:. "Access C|
00000510  6f 64 65 3a 22 0d 02 44  0b 20 20 70 24 3d 22 22  |ode:"..D.  p$=""|
00000520  0d 02 4e 0e 20 20 2a 66  78 20 31 35 2c 30 0d 02  |..N.  *fx 15,0..|
00000530  58 07 20 20 f5 0d 02 62  0f 20 20 20 20 61 24 3d  |X.  ...b.    a$=|
00000540  bf 28 35 29 0d 02 6c 10  20 20 20 20 70 24 3d 70  |.(5)..l.    p$=p|
00000550  24 2b 61 24 0d 02 76 28  20 20 20 20 e7 20 61 24  |$+a$..v(    . a$|
00000560  3c 3e 22 22 20 ec 20 36  30 30 2b a9 28 70 24 29  |<>"" . 600+.(p$)|
00000570  2a 33 32 2c 38 30 30 3a  f1 22 2d 22 0d 02 80 25  |*32,800:."-"...%|
00000580  20 20 fd 20 61 24 3d bd  28 31 33 29 20 84 20 a9  |  . a$=.(13) . .|
00000590  28 70 24 29 3e 38 20 84  20 70 24 3d 70 61 73 73  |(p$)>8 . p$=pass|
000005a0  24 0d 02 8a 13 20 20 e7  20 70 24 3c 3e 70 61 73  |$....  . p$<>pas|
000005b0  73 24 20 e1 0d 02 94 05  cd 0d 02 9e 16 f2 54 65  |s$ ...........Te|
000005c0  61 63 68 65 72 43 6f 6e  74 72 6f 6c 28 31 29 0d  |acherControl(1).|
000005d0  02 a8 05 e1 0d 02 b2 05  3a 0d 02 bc 05 3a 0d 02  |........:....:..|
000005e0  c6 0f dd f2 53 65 74 41  63 63 65 73 73 0d 02 d0  |....SetAccess...|
000005f0  48 6f 6b 24 3d 22 41 42  43 44 45 46 47 48 49 4a  |Hok$="ABCDEFGHIJ|
00000600  4b 4c 4d 4e 4f 50 51 52  53 54 55 56 57 58 59 5a  |KLMNOPQRSTUVWXYZ|
00000610  61 62 63 64 65 66 67 68  69 6a 6b 6c 6d 6e 6f 70  |abcdefghijklmnop|
00000620  71 72 73 74 75 76 77 78  79 7a 30 31 32 33 34 35  |qrstuvwxyz012345|
00000630  36 37 38 39 22 0d 02 da  08 e6 20 36 33 0d 02 e4  |6789"..... 63...|
00000640  28 ec 20 32 30 30 2c 34  30 30 3a f1 22 4f 6c 64  |(. 200,400:."Old|
00000650  20 41 63 63 65 73 73 20  43 6f 64 65 3a 20 22 3b  | Access Code: ";|
00000660  70 61 73 73 24 0d 02 ee  22 ec 20 32 30 30 2c 33  |pass$...". 200,3|
00000670  30 30 3a f1 22 4e 65 77  20 41 63 63 65 73 73 20  |00:."New Access |
00000680  43 6f 64 65 3a 20 22 0d  02 f8 1c f2 49 6e 70 75  |Code: ".....Inpu|
00000690  74 28 37 34 34 2c 33 30  30 2c 38 2c 6f 6b 24 2c  |t(744,300,8,ok$,|
000006a0  70 24 29 0d 03 02 14 e6  20 62 61 63 6b 2d 31 32  |p$)..... back-12|
000006b0  38 20 c8 9c 20 36 34 0d  03 0c 16 c8 93 c8 90 20  |8 .. 64........ |
000006c0  32 30 2c 31 30 2c 31 32  30 30 2c 35 30 0d 03 16  |20,10,1200,50...|
000006d0  0e e7 20 70 24 3c 3e 22  22 20 8c 0d 03 20 21 20  |.. p$<>"" ... ! |
000006e0  20 e7 20 a4 59 65 73 4e  6f 28 22 53 65 74 20 50  | . .YesNo("Set P|
000006f0  61 73 73 77 6f 72 64 3f  22 29 20 8c 0d 03 2a 10  |assword?") ...*.|
00000700  20 20 20 20 70 61 73 73  24 3d 70 24 0d 03 34 23  |    pass$=p$..4#|
00000710  20 20 20 20 70 77 3d ae  28 22 3c 50 4f 4c 59 24  |    pw=.("<POLY$|
00000720  44 49 52 3e 2e 50 61 73  73 77 6f 72 64 22 29 0d  |DIR>.Password").|
00000730  03 3e 15 20 20 20 20 e3  20 69 3d 31 20 b8 20 a9  |.>.    . i=1 . .|
00000740  28 70 24 29 0d 03 48 20  20 20 20 20 20 20 f1 23  |(p$)..H       .#|
00000750  70 77 2c bd 28 97 28 c1  70 24 2c 69 2c 31 29 29  |pw,.(.(.p$,i,1))|
00000760  2d 34 33 29 0d 03 52 0a  20 20 20 20 ed 69 0d 03  |-43)..R.    .i..|
00000770  5c 10 20 20 20 20 f1 23  70 77 2c 22 5d 22 0d 03  |\.    .#pw,"]"..|
00000780  66 0c 20 20 20 20 d9 23  70 77 0d 03 70 07 20 20  |f.    .#pw..p.  |
00000790  cd 0d 03 7a 05 cd 0d 03  84 14 e6 20 62 61 63 6b  |...z....... back|
000007a0  2d 31 32 38 20 c8 9c 20  36 34 0d 03 8e 17 c8 93  |-128 .. 64......|
000007b0  c8 90 20 32 30 2c 31 30  2c 31 32 30 30 2c 34 30  |.. 20,10,1200,40|
000007c0  30 0d 03 98 11 e6 20 66  6f 72 65 20 c8 9c 20 31  |0..... fore .. 1|
000007d0  39 32 0d 03 a2 30 ec 20  31 35 30 2c 34 30 3a f1  |92...0. 150,40:.|
000007e0  20 22 27 58 27 2d 45 78  69 74 20 20 27 53 27 2d  | "'X'-Exit  'S'-|
000007f0  53 61 76 65 20 20 27 88  20 89 27 2d 4d 65 6e 75  |Save  '. .'-Menu|
00000800  73 22 0d 03 ac 19 c8 97  20 c8 93 20 31 30 31 36  |s"...... .. 1016|
00000810  2c 34 38 2c 31 37 32 2c  38 30 30 0d 03 b6 05 e1  |,48,172,800.....|
00000820  0d 03 c0 05 3a 0d 03 ca  05 3a 0d 03 d4 21 dd f2  |....:....:...!..|
00000830  49 6e 70 75 74 28 78 25  2c 79 25 2c 6c 25 2c 6f  |Input(x%,y%,l%,o|
00000840  6b 24 2c f8 20 77 6f 72  64 24 29 0d 03 de 0b 2a  |k$,. word$)....*|
00000850  66 78 31 35 2c 30 0d 03  e8 0c 77 6f 72 64 24 3d  |fx15,0....word$=|
00000860  22 22 0d 03 f2 08 c8 97  20 87 0d 03 fc 05 f5 0d  |""...... .......|
00000870  04 06 0d 20 20 63 24 3d  bf 28 35 29 0d 04 10 33  |...  c$=.(5)...3|
00000880  20 20 e6 20 38 20 c8 9c  20 31 39 32 3a 86 20 78  |  . 8 .. 192:. x|
00000890  25 2c 79 25 2d 33 36 2c  78 25 2b 33 32 2c 79 25  |%,y%-36,x%+32,y%|
000008a0  2d 33 36 3a e6 20 36 33  20 c8 9c 20 31 39 32 0d  |-36:. 63 .. 192.|
000008b0  04 1a 2c 20 20 e7 20 63  24 3c 3e 22 22 20 80 20  |..,  . c$<>"" . |
000008c0  a7 6f 6b 24 2c 63 24 29  3c 3e 30 20 80 20 a9 28  |.ok$,c$)<>0 . .(|
000008d0  77 6f 72 64 24 29 3c 6c  25 20 8c 0d 04 24 3b 20  |word$)<l% ...$; |
000008e0  20 20 20 e6 20 62 61 63  6b 2d 31 32 38 20 c8 9c  |   . back-128 ..|
000008f0  20 36 34 3a 86 20 78 25  2c 79 25 2d 33 36 2c 78  | 64:. x%,y%-36,x|
00000900  25 2b 33 32 2c 79 25 2d  33 36 3a e6 20 36 33 20  |%+32,y%-36:. 63 |
00000910  c8 9c 20 31 39 32 0d 04  2e 0f 20 20 20 20 ec 20  |.. 192....    . |
00000920  78 25 2c 79 25 0d 04 38  0c 20 20 20 20 f1 20 63  |x%,y%..8.    . c|
00000930  24 0d 04 42 16 20 20 20  20 77 6f 72 64 24 3d 77  |$..B.    word$=w|
00000940  6f 72 64 24 2b 63 24 0d  04 4c 0e 20 20 20 20 78  |ord$+c$..L.    x|
00000950  25 2b 3d 33 32 0d 04 56  07 20 20 cd 0d 04 60 1f  |%+=32..V.  ...`.|
00000960  20 20 e7 20 a6 28 2d 31  31 33 29 20 77 6f 72 64  |  . .(-113) word|
00000970  24 3d 22 22 3a c8 97 20  ee 3a e1 0d 04 6a 1d 20  |$="":.. .:...j. |
00000980  20 e7 20 a6 28 2d 39 30  29 20 80 20 a9 28 77 6f  | . .(-90) . .(wo|
00000990  72 64 24 29 3e 30 20 8c  0d 04 74 18 20 20 20 20  |rd$)>0 ...t.    |
000009a0  e6 20 62 61 63 6b 2d 31  32 38 20 c8 9c 20 36 34  |. back-128 .. 64|
000009b0  0d 04 7e 0e 20 20 20 20  78 25 2d 3d 33 32 0d 04  |..~.    x%-=32..|
000009c0  88 19 20 20 20 20 c8 93  c8 90 20 78 25 2c 79 25  |..    .... x%,y%|
000009d0  2c 36 34 2c 2d 34 30 0d  04 92 15 20 20 20 20 77  |,64,-40....    w|
000009e0  6f 72 64 24 3d c0 77 6f  72 64 24 29 0d 04 9c 0f  |ord$=.word$)....|
000009f0  20 20 20 20 2a 66 78 31  35 2c 30 0d 04 a6 13 20  |    *fx15,0.... |
00000a00  20 20 20 e6 20 36 33 20  c8 9c 20 31 39 32 0d 04  |   . 63 .. 192..|
00000a10  b0 07 20 20 cd 0d 04 ba  0e fd 20 63 24 3d bd 28  |..  ...... c$=.(|
00000a20  31 33 29 0d 04 c4 08 c8  97 20 ee 0d 04 ce 05 e1  |13)...... ......|
00000a30  0d 04 d8 05 3a 0d 04 e2  05 3a 0d 04 ec 1b dd f2  |....:....:......|
00000a40  54 65 61 63 68 65 72 43  6f 6e 74 72 6f 6c 28 6d  |TeacherControl(m|
00000a50  65 6e 75 25 29 0d 04 f6  0e ea 20 6f 6e 24 2c 6f  |enu%)..... on$,o|
00000a60  66 66 24 0d 05 00 1d f2  54 69 74 6c 65 28 22 54  |ff$.....Title("T|
00000a70  65 61 63 68 65 72 20 43  6f 6e 74 72 6f 6c 22 29  |eacher Control")|
00000a80  0d 05 0a 11 e6 20 66 6f  72 65 20 c8 9c 20 31 39  |..... fore .. 19|
00000a90  32 0d 05 14 1a ec 20 31  30 30 30 2c 39 30 30 3a  |2..... 1000,900:|
00000aa0  f1 20 22 4f 4e 20 20 4f  46 46 22 0d 05 1e 30 ec  |. "ON  OFF"...0.|
00000ab0  20 31 35 30 2c 34 30 3a  f1 20 22 27 58 27 2d 45  | 150,40:. "'X'-E|
00000ac0  78 69 74 20 20 27 53 27  2d 53 61 76 65 20 20 27  |xit  'S'-Save  '|
00000ad0  88 20 89 27 2d 4d 65 6e  75 73 22 0d 05 28 13 f2  |. .'-Menus"..(..|
00000ae0  4d 65 6e 75 53 65 74 28  6d 65 6e 75 25 29 0d 05  |MenuSet(menu%)..|
00000af0  32 07 69 3d 31 0d 05 3c  05 f5 0d 05 46 13 20 20  |2.i=1..<....F.  |
00000b00  e6 20 66 6f 72 65 20 c8  9c 20 31 39 32 0d 05 50  |. fore .. 192..P|
00000b10  21 20 20 c8 93 20 31 30  31 36 2c 38 34 38 2d 28  |!  .. 1016,848-(|
00000b20  69 2d 31 29 2a 39 30 2c  34 30 2c 2d 34 30 0d 05  |i-1)*90,40,-40..|
00000b30  5a 21 20 20 c8 93 20 31  31 34 38 2c 38 34 38 2d  |Z!  .. 1148,848-|
00000b40  28 69 2d 31 29 2a 39 30  2c 34 30 2c 2d 34 30 0d  |(i-1)*90,40,-40.|
00000b50  05 64 0a 20 20 69 2b 3d  31 0d 05 6e 18 fd 20 6d  |.d.  i+=1..n.. m|
00000b60  65 6e 75 24 28 6d 65 6e  75 25 2c 69 29 3d 22 7a  |enu$(menu%,i)="z|
00000b70  22 0d 05 78 07 69 3d 31  0d 05 82 05 f5 0d 05 8c  |"..x.i=1........|
00000b80  2d 20 20 e7 20 6d 65 6e  73 65 74 24 28 6d 65 6e  |-  . menset$(men|
00000b90  75 25 2c 69 29 3d 22 59  22 3a 6f 6e 24 3d 22 58  |u%,i)="Y":on$="X|
00000ba0  22 3a 6f 66 66 24 3d 22  20 22 0d 05 96 2d 20 20  |":off$=" "...-  |
00000bb0  e7 20 6d 65 6e 73 65 74  24 28 6d 65 6e 75 25 2c  |. menset$(menu%,|
00000bc0  69 29 3d 22 4e 22 3a 6f  6e 24 3d 22 20 22 3a 6f  |i)="N":on$=" ":o|
00000bd0  66 66 24 3d 22 58 22 0d  05 a0 2d 20 20 e7 20 6d  |ff$="X"...-  . m|
00000be0  65 6e 73 65 74 24 28 6d  65 6e 75 25 2c 69 29 3d  |enset$(menu%,i)=|
00000bf0  22 46 22 3a 6f 6e 24 3d  22 58 22 3a 6f 66 66 24  |"F":on$="X":off$|
00000c00  3d 22 58 22 0d 05 aa 20  20 20 ec 20 31 31 35 32  |="X"...   . 1152|
00000c10  2c 38 34 30 2d 28 69 2d  31 29 2a 39 30 3a f1 20  |,840-(i-1)*90:. |
00000c20  6f 66 66 24 0d 05 b4 1f  20 20 ec 20 31 30 32 30  |off$....  . 1020|
00000c30  2c 38 34 30 2d 28 69 2d  31 29 2a 39 30 3a f1 20  |,840-(i-1)*90:. |
00000c40  6f 6e 24 0d 05 be 0a 20  20 69 2b 3d 31 0d 05 c8  |on$....  i+=1...|
00000c50  1a fd 20 6d 65 6e 73 65  74 24 28 6d 65 6e 75 25  |.. menset$(menu%|
00000c60  2c 69 29 3d 22 45 22 0d  05 d2 19 c8 97 20 c8 93  |,i)="E"...... ..|
00000c70  20 31 30 31 36 2c 34 38  2c 31 37 32 2c 38 30 30  | 1016,48,172,800|
00000c80  0d 05 dc 0a c8 97 20 ee  20 31 0d 05 e6 05 f5 0d  |...... . 1......|
00000c90  05 f0 07 20 20 f5 0d 05  fa 09 20 20 20 20 f5 0d  |...  .....    ..|
00000ca0  06 04 1c 20 20 20 20 20  20 c8 97 6d 73 78 2c 6d  |...      ..msx,m|
00000cb0  73 79 2c 6d 73 73 74 61  74 75 73 0d 06 0e 2f 20  |sy,msstatus.../ |
00000cc0  20 20 20 20 20 e7 20 a6  28 2d 32 29 20 80 20 a6  |     . .(-2) . .|
00000cd0  28 2d 35 36 29 20 80 20  6d 65 6e 75 25 3d 31 20  |(-56) . menu%=1 |
00000ce0  f2 53 65 74 41 63 63 65  73 73 0d 06 18 14 20 20  |.SetAccess....  |
00000cf0  20 20 20 20 e7 20 a6 28  2d 36 37 29 20 e1 0d 06  |    . .(-67) ...|
00000d00  22 15 20 20 20 20 20 20  e7 20 a6 28 2d 31 32 32  |".      . .(-122|
00000d10  29 20 8c 0d 06 2c 14 20  20 20 20 20 20 20 20 6d  |) ...,.        m|
00000d20  65 6e 75 25 2b 3d 31 0d  06 36 1d 20 20 20 20 20  |enu%+=1..6.     |
00000d30  20 20 20 e7 20 6d 65 6e  75 25 3e 35 20 6d 65 6e  |   . menu%>5 men|
00000d40  75 25 3d 31 0d 06 40 22  20 20 20 20 20 20 20 20  |u%=1..@"        |
00000d50  f2 54 65 61 63 68 65 72  43 6f 6e 74 72 6f 6c 28  |.TeacherControl(|
00000d60  6d 65 6e 75 25 29 0d 06  4a 18 20 20 20 20 20 20  |menu%)..J.      |
00000d70  20 20 e7 20 73 61 76 65  66 6c 61 67 20 e1 0d 06  |  . saveflag ...|
00000d80  54 0b 20 20 20 20 20 20  cd 0d 06 5e 14 20 20 20  |T.      ...^.   |
00000d90  20 20 20 e7 20 a6 28 2d  32 36 29 20 8c 0d 06 68  |   . .(-26) ...h|
00000da0  14 20 20 20 20 20 20 20  20 6d 65 6e 75 25 2d 3d  |.        menu%-=|
00000db0  31 0d 06 72 1d 20 20 20  20 20 20 20 20 e7 20 6d  |1..r.        . m|
00000dc0  65 6e 75 25 3c 31 20 6d  65 6e 75 25 3d 35 0d 06  |enu%<1 menu%=5..|
00000dd0  7c 22 20 20 20 20 20 20  20 20 f2 54 65 61 63 68  ||"        .Teach|
00000de0  65 72 43 6f 6e 74 72 6f  6c 28 6d 65 6e 75 25 29  |erControl(menu%)|
00000df0  0d 06 86 0b 20 20 20 20  20 20 cd 0d 06 90 14 20  |....      ..... |
00000e00  20 20 20 20 20 e7 20 a6  28 2d 38 32 29 20 8c 0d  |     . .(-82) ..|
00000e10  06 9a 21 20 20 20 20 20  20 20 20 f2 53 61 76 65  |..!        .Save|
00000e20  43 6f 6e 66 69 67 28 73  61 76 65 66 6c 61 67 29  |Config(saveflag)|
00000e30  0d 06 a4 18 20 20 20 20  20 20 20 20 e7 20 73 61  |....        . sa|
00000e40  76 65 66 6c 61 67 20 e1  0d 06 ae 1c 20 20 20 20  |veflag .....    |
00000e50  20 20 20 20 e6 20 62 61  63 6b 2d 31 32 38 20 c8  |    . back-128 .|
00000e60  9c 20 36 34 0d 06 b8 1e  20 20 20 20 20 20 20 20  |. 64....        |
00000e70  c8 93 c8 90 20 32 30 2c  31 30 2c 31 32 30 30 2c  |.... 20,10,1200,|
00000e80  35 30 0d 06 c2 19 20 20  20 20 20 20 20 20 e6 20  |50....        . |
00000e90  66 6f 72 65 20 c8 9c 20  31 39 32 0d 06 cc 38 20  |fore .. 192...8 |
00000ea0  20 20 20 20 20 20 20 ec  20 31 35 30 2c 34 30 3a  |       . 150,40:|
00000eb0  f1 20 22 27 58 27 2d 45  78 69 74 20 20 27 53 27  |. "'X'-Exit  'S'|
00000ec0  2d 53 61 76 65 20 20 27  88 20 89 27 2d 4d 65 6e  |-Save  '. .'-Men|
00000ed0  75 73 22 0d 06 d6 0b 20  20 20 20 20 20 cd 0d 06  |us"....      ...|
00000ee0  e0 15 20 20 20 20 fd 20  6d 73 73 74 61 74 75 73  |..    . msstatus|
00000ef0  3c 3e 30 0d 06 ea 17 20  20 20 20 69 74 65 6d 3d  |<>0....    item=|
00000f00  31 3a 63 68 6f 69 63 65  3d 30 0d 06 f4 1a 20 20  |1:choice=0....  |
00000f10  20 20 62 6f 78 78 3d 31  30 31 36 3a 62 6f 78 79  |  boxx=1016:boxy|
00000f20  3d 38 34 38 0d 06 fe 09  20 20 20 20 f5 0d 07 08  |=848....    ....|
00000f30  47 20 20 20 20 20 20 e7  20 6d 73 78 3e 62 6f 78  |G      . msx>box|
00000f40  78 20 80 20 6d 73 78 3c  62 6f 78 78 2b 34 30 20  |x . msx<boxx+40 |
00000f50  80 20 6d 73 79 3c 62 6f  78 79 20 80 20 6d 73 79  |. msy<boxy . msy|
00000f60  3e 62 6f 78 79 2d 34 30  20 63 68 6f 69 63 65 3d  |>boxy-40 choice=|
00000f70  69 74 65 6d 0d 07 12 4d  20 20 20 20 20 20 e7 20  |item...M      . |
00000f80  6d 73 78 3e 62 6f 78 78  2b 31 33 32 20 80 20 6d  |msx>boxx+132 . m|
00000f90  73 78 3c 62 6f 78 78 2b  31 37 32 20 80 20 6d 73  |sx<boxx+172 . ms|
00000fa0  79 3c 62 6f 78 79 20 80  20 6d 73 79 3e 62 6f 78  |y<boxy . msy>box|
00000fb0  79 2d 34 30 20 63 68 6f  69 63 65 3d 2d 69 74 65  |y-40 choice=-ite|
00000fc0  6d 0d 07 1c 11 20 20 20  20 20 20 69 74 65 6d 2b  |m....      item+|
00000fd0  3d 31 0d 07 26 16 20 20  20 20 20 20 62 6f 78 79  |=1..&.      boxy|
00000fe0  3d 62 6f 78 79 2d 39 30  0d 07 30 1d 20 20 20 20  |=boxy-90..0.    |
00000ff0  fd 20 69 74 65 6d 3d 31  30 20 84 20 63 68 6f 69  |. item=10 . choi|
00001000  63 65 3c 3e 30 0d 07 3a  11 20 20 fd 20 63 68 6f  |ce<>0..:.  . cho|
00001010  69 63 65 3c 3e 30 0d 07  44 25 20 20 6f 6e 6f 66  |ice<>0..D%  onof|
00001020  66 24 3d 6d 65 6e 73 65  74 24 28 6d 65 6e 75 25  |f$=menset$(menu%|
00001030  2c 94 28 63 68 6f 69 63  65 29 29 0d 07 4e 1f 20  |,.(choice))..N. |
00001040  20 e7 20 6f 6e 6f 66 66  24 3d 22 59 22 20 80 20  | . onoff$="Y" . |
00001050  63 68 6f 69 63 65 3c 30  20 8c 0d 07 58 18 20 20  |choice<0 ...X.  |
00001060  20 20 e6 20 62 61 63 6b  2d 31 32 38 20 c8 9c 20  |  . back-128 .. |
00001070  36 34 0d 07 62 22 20 20  20 20 c8 93 c8 90 20 62  |64..b"    .... b|
00001080  6f 78 78 2b 34 2c 62 6f  78 79 2b 38 36 2c 33 32  |oxx+4,boxy+86,32|
00001090  2c 2d 33 32 0d 07 6c 15  20 20 20 20 e6 20 66 6f  |,-32..l.    . fo|
000010a0  72 65 20 c8 9c 20 31 39  32 0d 07 76 1a 20 20 20  |re .. 192..v.   |
000010b0  20 ec 20 62 6f 78 78 2b  31 33 36 2c 62 6f 78 79  | . boxx+136,boxy|
000010c0  2b 38 32 0d 07 80 0d 20  20 20 20 f1 20 22 58 22  |+82....    . "X"|
000010d0  0d 07 8a 24 20 20 20 20  6d 65 6e 73 65 74 24 28  |...$    menset$(|
000010e0  6d 65 6e 75 25 2c 94 28  63 68 6f 69 63 65 29 29  |menu%,.(choice))|
000010f0  3d 22 4e 22 0d 07 94 07  20 20 cd 0d 07 9e 1f 20  |="N"....  ..... |
00001100  20 e7 20 6f 6e 6f 66 66  24 3d 22 4e 22 20 80 20  | . onoff$="N" . |
00001110  63 68 6f 69 63 65 3e 30  20 8c 0d 07 a8 18 20 20  |choice>0 .....  |
00001120  20 20 e6 20 62 61 63 6b  2d 31 32 38 20 c8 9c 20  |  . back-128 .. |
00001130  36 34 0d 07 b2 24 20 20  20 20 c8 93 c8 90 20 62  |64...$    .... b|
00001140  6f 78 78 2b 31 33 36 2c  62 6f 78 79 2b 38 36 2c  |oxx+136,boxy+86,|
00001150  33 32 2c 2d 33 32 0d 07  bc 15 20 20 20 20 e6 20  |32,-32....    . |
00001160  66 6f 72 65 20 c8 9c 20  31 39 32 0d 07 c6 18 20  |fore .. 192.... |
00001170  20 20 20 ec 20 62 6f 78  78 2b 34 2c 62 6f 78 79  |   . boxx+4,boxy|
00001180  2b 38 32 0d 07 d0 0d 20  20 20 20 f1 20 22 58 22  |+82....    . "X"|
00001190  0d 07 da 24 20 20 20 20  6d 65 6e 73 65 74 24 28  |...$    menset$(|
000011a0  6d 65 6e 75 25 2c 94 28  63 68 6f 69 63 65 29 29  |menu%,.(choice))|
000011b0  3d 22 59 22 0d 07 e4 07  20 20 cd 0d 07 ee 07 fd  |="Y"....  ......|
000011c0  20 a3 0d 07 f8 05 e1 0d  08 02 05 3a 0d 08 0c 05  | ..........:....|
000011d0  3a 0d 08 16 1c dd f2 53  61 76 65 43 6f 6e 66 69  |:......SaveConfi|
000011e0  67 28 f8 20 73 61 76 65  66 6c 61 67 29 0d 08 20  |g(. saveflag).. |
000011f0  0e 73 61 76 65 66 6c 61  67 3d a3 0d 08 2a 14 e6  |.saveflag=...*..|
00001200  20 62 61 63 6b 2d 31 32  38 20 c8 9c 20 36 34 0d  | back-128 .. 64.|
00001210  08 34 16 c8 93 c8 90 20  32 30 2c 31 30 2c 31 32  |.4..... 20,10,12|
00001220  30 30 2c 35 30 0d 08 3e  1f e7 20 a4 59 65 73 4e  |00,50..>.. .YesN|
00001230  6f 28 22 53 61 76 65 20  4f 70 74 69 6f 6e 73 3f  |o("Save Options?|
00001240  22 29 20 8c 0d 08 48 22  20 20 63 66 3d ad 28 22  |") ...H"  cf=.("|
00001250  3c 50 4f 4c 59 24 44 49  52 3e 2e 63 6f 6e 66 69  |<POLY$DIR>.confi|
00001260  67 75 72 65 22 29 0d 08  52 0f 20 20 e3 20 69 3d  |gure")..R.  . i=|
00001270  31 20 b8 20 35 0d 08 5c  0b 20 20 20 20 6a 3d 31  |1 . 5..\.    j=1|
00001280  0d 08 66 09 20 20 20 20  f5 0d 08 70 1b 20 20 20  |..f.    ...p.   |
00001290  20 20 20 f1 23 63 66 2c  6d 65 6e 73 65 74 24 28  |   .#cf,menset$(|
000012a0  69 2c 6a 29 0d 08 7a 0e  20 20 20 20 20 20 6a 2b  |i,j)..z.      j+|
000012b0  3d 31 0d 08 84 1c 20 20  20 20 fd 20 6d 65 6e 73  |=1....    . mens|
000012c0  65 74 24 28 69 2c 6a 2d  31 29 3d 22 45 22 0d 08  |et$(i,j-1)="E"..|
000012d0  8e 08 20 20 ed 69 0d 08  98 0a 20 20 d9 23 63 66  |..  .i....  .#cf|
000012e0  0d 08 a2 10 20 20 73 61  76 65 66 6c 61 67 3d b9  |....  saveflag=.|
000012f0  0d 08 ac 05 cd 0d 08 b6  19 c8 97 20 c8 93 20 31  |........... .. 1|
00001300  30 31 36 2c 34 38 2c 31  37 32 2c 38 30 30 0d 08  |016,48,172,800..|
00001310  c0 05 e1 0d 08 ca 05 3a  0d 08 d4 05 3a 0d 08 de  |.......:....:...|
00001320  0c dd f2 53 63 72 65 65  6e 0d 08 e8 20 2a 53 43  |...Screen... *SC|
00001330  52 45 45 4e 4c 4f 41 44  20 3c 50 4f 4c 59 24 44  |REENLOAD <POLY$D|
00001340  49 52 3e 2e 54 69 74 6c  65 0d 08 f2 05 e1 0d 08  |IR>.Title.......|
00001350  fc 05 3a 0d 09 06 05 3a  0d 09 10 10 dd f2 41 6e  |..:....:......An|
00001360  69 6d 61 6c 4d 65 6e 75  0d 09 1a 19 f2 54 69 74  |imalMenu.....Tit|
00001370  6c 65 28 22 50 65 6e 74  41 6e 69 6d 61 6c 73 22  |le("PentAnimals"|
00001380  29 0d 09 24 0f f2 4d 65  6e 75 53 65 74 28 33 29  |)..$..MenuSet(3)|
00001390  0d 09 2e 08 74 66 3d a3  0d 09 38 05 f5 0d 09 42  |....tf=...8....B|
000013a0  17 20 20 f2 4d 65 6e 75  43 68 6f 69 63 65 28 33  |.  .MenuChoice(3|
000013b0  2c 63 68 29 0d 09 4c 0d  20 20 c8 8e 20 63 68 20  |,ch)..L.  .. ch |
000013c0  ca 0d 09 56 33 20 20 20  20 c9 20 31 2c 32 2c 33  |...V3    . 1,2,3|
000013d0  2c 34 2c 35 2c 36 2c 37  2c 38 3a 20 f2 50 75 7a  |,4,5,6,7,8: .Puz|
000013e0  7a 6c 65 73 28 63 68 29  3a f2 41 6e 69 6d 61 6c  |zles(ch):.Animal|
000013f0  4d 65 6e 75 0d 09 60 11  20 20 20 20 c9 20 39 3a  |Menu..`.    . 9:|
00001400  20 74 66 3d b9 0d 09 6a  07 20 20 cb 0d 09 74 08  | tf=...j.  ...t.|
00001410  fd 20 74 66 0d 09 7e 05  e1 0d 09 88 05 3a 0d 09  |. tf..~......:..|
00001420  92 05 3a 0d 09 9c 11 dd  f2 50 65 6e 74 6f 53 68  |..:......PentoSh|
00001430  61 70 65 73 0d 09 a6 19  f2 54 69 74 6c 65 28 22  |apes.....Title("|
00001440  50 65 6e 74 6f 53 68 61  70 65 73 22 29 0d 09 b0  |PentoShapes")...|
00001450  0f f2 4d 65 6e 75 53 65  74 28 35 29 0d 09 ba 08  |..MenuSet(5)....|
00001460  74 66 3d a3 0d 09 c4 05  f5 0d 09 ce 17 20 20 f2  |tf=..........  .|
00001470  4d 65 6e 75 43 68 6f 69  63 65 28 35 2c 63 68 29  |MenuChoice(5,ch)|
00001480  0d 09 d8 0d 20 20 c8 8e  20 63 68 20 ca 0d 09 e2  |....  .. ch ....|
00001490  30 20 20 20 20 c9 20 31  2c 32 2c 33 2c 34 2c 35  |0    . 1,2,3,4,5|
000014a0  3a 20 f2 50 75 7a 7a 6c  65 73 28 38 2b 63 68 29  |: .Puzzles(8+ch)|
000014b0  3a f2 50 65 6e 74 6f 53  68 61 70 65 73 0d 09 ec  |:.PentoShapes...|
000014c0  11 20 20 20 20 c9 20 36  3a 20 74 66 3d b9 0d 09  |.    . 6: tf=...|
000014d0  f6 07 20 20 cb 0d 0a 00  08 fd 20 74 66 0d 0a 0a  |..  ...... tf...|
000014e0  05 e1 0d 0a 14 05 3a 0d  0a 1e 05 3a 0d 0a 28 1a  |......:....:..(.|
000014f0  dd f2 50 65 6e 74 6f 6d  69 6e 6f 28 78 6d 69 6e  |..Pentomino(xmin|
00001500  2c 79 6d 69 6e 29 0d 0a  32 08 73 71 3d 35 0d 0a  |,ymin)..2.sq=5..|
00001510  3c 0a 67 61 70 3d 34 30  0d 0a 46 20 f2 54 69 74  |<.gap=40..F .Tit|
00001520  6c 65 28 22 50 65 6e 74  6f 6d 69 6e 6f 20 44 65  |le("Pentomino De|
00001530  73 69 67 6e 65 72 22 29  0d 0a 50 14 70 6f 6c 79  |signer")..P.poly|
00001540  24 3d 22 22 3a 76 61 72  24 3d 22 22 0d 0a 5a 19  |$="":var$=""..Z.|
00001550  f2 47 72 69 64 50 6c 6f  74 28 38 38 2c 39 30 34  |.GridPlot(88,904|
00001560  2c 34 2c 33 29 0d 0a 64  0f f2 4d 65 6e 75 53 65  |,4,3)..d..MenuSe|
00001570  74 28 36 29 0d 0a 6e 22  f2 47 72 69 64 28 31 30  |t(6)..n".Grid(10|
00001580  30 30 2c 39 30 30 2c 73  71 2c 73 71 2c 32 2c 31  |00,900,sq,sq,2,1|
00001590  2c 34 2c 34 30 29 0d 0a  78 05 f5 0d 0a 82 17 20  |,4,40)..x...... |
000015a0  20 f2 43 6c 65 61 72 28  78 6d 69 6e 2c 79 6d 69  | .Clear(xmin,ymi|
000015b0  6e 29 0d 0a 8c 07 20 20  f5 0d 0a 96 25 20 20 20  |n)....  ....%   |
000015c0  20 f2 43 72 65 61 74 65  50 6f 6c 79 28 78 6d 69  | .CreatePoly(xmi|
000015d0  6e 2c 79 6d 69 6e 2c 73  71 2c 67 61 70 29 0d 0a  |n,ymin,sq,gap)..|
000015e0  a0 22 20 20 20 20 e7 20  a9 28 70 6f 6c 79 24 29  |."    . .(poly$)|
000015f0  3d 31 32 20 f2 57 65 6c  6c 44 6f 6e 65 32 3a e1  |=12 .WellDone2:.|
00001600  0d 0a aa 0c 20 20 fd 20  63 68 3d 32 0d 0a b4 1d  |....  . ch=2....|
00001610  fd 20 a4 59 65 73 4e 6f  28 22 41 72 65 20 79 6f  |. .YesNo("Are yo|
00001620  75 20 73 75 72 65 3f 22  29 0d 0a be 0b 63 68 72  |u sure?")....chr|
00001630  28 29 3d 30 0d 0a c8 05  e1 0d 0a d2 05 3a 0d 0a  |()=0.........:..|
00001640  dc 05 3a 0d 0a e6 19 dd  f2 48 65 78 6f 6d 69 6e  |..:......Hexomin|
00001650  6f 28 78 6d 69 6e 2c 79  6d 69 6e 29 0d 0a f0 08  |o(xmin,ymin)....|
00001660  73 71 3d 36 0d 0a fa 0a  67 61 70 3d 32 30 0d 0b  |sq=6....gap=20..|
00001670  04 1f f2 54 69 74 6c 65  28 22 48 65 78 6f 6d 69  |...Title("Hexomi|
00001680  6e 6f 20 44 65 73 69 67  6e 65 72 22 29 0d 0b 0e  |no Designer")...|
00001690  14 70 6f 6c 79 24 3d 22  22 3a 76 61 72 24 3d 22  |.poly$="":var$="|
000016a0  22 0d 0b 18 19 f2 47 72  69 64 50 6c 6f 74 28 32  |".....GridPlot(2|
000016b0  38 2c 39 30 38 2c 37 2c  35 29 0d 0b 22 0f f2 4d  |8,908,7,5).."..M|
000016c0  65 6e 75 53 65 74 28 37  29 0d 0b 2c 22 f2 47 72  |enuSet(7)..,".Gr|
000016d0  69 64 28 31 30 32 30 2c  39 30 30 2c 73 71 2c 73  |id(1020,900,sq,s|
000016e0  71 2c 32 2c 31 2c 34 2c  34 30 29 0d 0b 36 05 f5  |q,2,1,4,40)..6..|
000016f0  0d 0b 40 17 20 20 f2 43  6c 65 61 72 28 78 6d 69  |..@.  .Clear(xmi|
00001700  6e 2c 79 6d 69 6e 29 0d  0b 4a 07 20 20 f5 0d 0b  |n,ymin)..J.  ...|
00001710  54 25 20 20 20 20 f2 43  72 65 61 74 65 50 6f 6c  |T%    .CreatePol|
00001720  79 28 78 6d 69 6e 2c 79  6d 69 6e 2c 73 71 2c 67  |y(xmin,ymin,sq,g|
00001730  61 70 29 0d 0b 5e 22 20  20 20 20 e7 20 a9 28 70  |ap)..^"    . .(p|
00001740  6f 6c 79 24 29 3d 33 35  20 f2 57 65 6c 6c 44 6f  |oly$)=35 .WellDo|
00001750  6e 65 32 3a e1 0d 0b 68  0c 20 20 fd 20 63 68 3d  |ne2:...h.  . ch=|
00001760  32 0d 0b 72 1d fd 20 a4  59 65 73 4e 6f 28 22 41  |2..r.. .YesNo("A|
00001770  72 65 20 79 6f 75 20 73  75 72 65 3f 22 29 0d 0b  |re you sure?")..|
00001780  7c 0b 63 68 72 28 29 3d  30 0d 0b 86 05 e1 0d 0b  ||.chr()=0.......|
00001790  90 05 3a 0d 0b 9a 05 3a  0d 0b a4 21 dd f2 47 72  |..:....:...!..Gr|
000017a0  69 64 50 6c 6f 74 28 78  25 2c 79 25 2c 78 65 78  |idPlot(x%,y%,xex|
000017b0  74 25 2c 79 65 78 74 25  29 0d 0b ae 09 ea 20 69  |t%,yext%)..... i|
000017c0  2c 6a 0d 0b b8 11 79 25  2d 3d 73 71 2a 67 61 70  |,j....y%-=sq*gap|
000017d0  2b 32 30 0d 0b c2 0a 79  6f 25 3d 79 25 0d 0b cc  |+20....yo%=y%...|
000017e0  11 e3 20 69 3d 31 20 b8  20 78 65 78 74 25 0d 0b  |.. i=1 . xext%..|
000017f0  d6 13 20 20 e3 20 6a 3d  31 20 b8 20 79 65 78 74  |..  . j=1 . yext|
00001800  25 0d 0b e0 30 20 20 20  20 c8 99 20 22 4f 53 5f  |%...0    .. "OS_|
00001810  53 70 72 69 74 65 4f 70  22 2c 32 35 36 2b 33 34  |SpriteOp",256+34|
00001820  2c 53 25 2c c3 28 73 71  29 2c 78 25 2c 79 25 2c  |,S%,.(sq),x%,y%,|
00001830  30 0d 0b ea 15 20 20 20  20 79 25 2d 3d 73 71 2a  |0....    y%-=sq*|
00001840  67 61 70 2b 32 30 0d 0b  f4 08 20 20 ed 6a 0d 0b  |gap+20....  .j..|
00001850  fe 0c 20 20 79 25 3d 79  6f 25 0d 0c 08 13 20 20  |..  y%=yo%....  |
00001860  78 25 2b 3d 73 71 2a 67  61 70 2b 32 30 0d 0c 12  |x%+=sq*gap+20...|
00001870  06 ed 69 0d 0c 1c 05 e1  0d 0c 26 05 3a 0d 0c 30  |..i.......&.:..0|
00001880  05 3a 0d 0c 3a 11 dd f2  50 75 7a 7a 6c 65 73 28  |.:..:...Puzzles(|
00001890  61 6e 29 0d 0c 44 29 65  72 72 6f 66 66 3d 30 3a  |an)..D)erroff=0:|
000018a0  73 71 3d 35 3a 67 61 70  3d 34 30 3a 70 6f 6c 79  |sq=5:gap=40:poly|
000018b0  24 3d 22 22 3a 64 66 6c  61 67 3d a3 0d 0c 4e 14  |$="":dflag=...N.|
000018c0  f2 50 65 6e 74 61 6e 69  6d 61 6c 73 28 61 6e 29  |.Pentanimals(an)|
000018d0  0d 0c 58 10 f2 4d 65 6e  75 53 65 74 28 31 30 29  |..X..MenuSet(10)|
000018e0  0d 0c 62 05 f5 0d 0c 6c  0b 20 20 74 66 31 3d a3  |..b....l.  tf1=.|
000018f0  0d 0c 76 2b 20 20 e7 20  a9 28 70 6f 6c 79 24 29  |..v+  . .(poly$)|
00001900  3d 31 32 20 80 20 61 6e  3c 3e 30 20 f2 57 65 6c  |=12 . an<>0 .Wel|
00001910  6c 44 6f 6e 65 3a 74 66  31 3d b9 0d 0c 80 3b 20  |lDone:tf1=....; |
00001920  20 e7 20 ac 20 64 66 6c  61 67 20 80 20 61 6e 3d  | . . dflag . an=|
00001930  30 20 80 20 a9 28 70 6f  6c 79 24 29 3c 3e 30 20  |0 . .(poly$)<>0 |
00001940  64 66 6c 61 67 3d b9 3a  f2 44 69 73 70 50 65 6e  |dflag=.:.DispPen|
00001950  74 28 70 2c 76 29 0d 0c  8a 22 20 20 e7 20 ac 20  |t(p,v)..."  . . |
00001960  74 66 31 20 8c 20 f2 4d  65 6e 75 43 68 6f 69 63  |tf1 . .MenuChoic|
00001970  65 28 31 30 2c 63 68 29  0d 0c 94 0f 20 20 20 20  |e(10,ch)....    |
00001980  c8 8e 20 63 68 20 ca 0d  0c 9e 22 20 20 20 20 20  |.. ch ...."     |
00001990  20 c9 20 31 3a 20 e7 20  64 66 6c 61 67 20 f2 4d  | . 1: . dflag .M|
000019a0  6f 76 65 28 2d 31 2c 30  29 0d 0c a8 21 20 20 20  |ove(-1,0)...!   |
000019b0  20 20 20 c9 20 32 3a 20  e7 20 64 66 6c 61 67 20  |   . 2: . dflag |
000019c0  f2 4d 6f 76 65 28 31 2c  30 29 0d 0c b2 21 20 20  |.Move(1,0)...!  |
000019d0  20 20 20 20 c9 20 33 3a  20 e7 20 64 66 6c 61 67  |    . 3: . dflag|
000019e0  20 f2 4d 6f 76 65 28 30  2c 31 29 0d 0c bc 22 20  | .Move(0,1)..." |
000019f0  20 20 20 20 20 c9 20 34  3a 20 e7 20 64 66 6c 61  |     . 4: . dfla|
00001a00  67 20 f2 4d 6f 76 65 28  30 2c 2d 31 29 0d 0c c6  |g .Move(0,-1)...|
00001a10  1b 20 20 20 20 20 20 c9  20 35 3a 20 e7 20 64 66  |.      . 5: . df|
00001a20  6c 61 67 20 f2 46 69 78  0d 0c d0 16 20 20 20 20  |lag .Fix....    |
00001a30  20 20 c9 20 36 3a 20 f2  52 65 6d 6f 76 65 0d 0c  |  . 6: .Remove..|
00001a40  da 23 20 20 20 20 20 20  c9 20 37 3a 20 e7 20 64  |.#      . 7: . d|
00001a50  66 6c 61 67 20 80 20 70  3c 3e 36 20 f2 46 6c 69  |flag . p<>6 .Fli|
00001a60  70 0d 0c e4 2e 20 20 20  20 20 20 c9 20 38 3a 20  |p....      . 8: |
00001a70  e7 20 a4 59 65 73 4e 6f  28 22 41 72 65 20 79 6f  |. .YesNo("Are yo|
00001a80  75 20 73 75 72 65 3f 22  29 20 74 66 31 3d b9 0d  |u sure?") tf1=..|
00001a90  0c ee 37 20 20 20 20 20  20 c9 20 39 3a 20 e7 20  |..7      . 9: . |
00001aa0  ac 20 64 66 6c 61 67 20  80 20 a9 28 70 6f 6c 79  |. dflag . .(poly|
00001ab0  24 29 3c 3e 31 32 20 f2  53 65 6c 65 63 74 50 65  |$)<>12 .SelectPe|
00001ac0  6e 74 28 61 6e 29 0d 0c  f8 23 20 20 20 20 20 20  |nt(an)...#      |
00001ad0  c9 20 31 30 3a 20 e7 20  64 66 6c 61 67 20 f2 50  |. 10: . dflag .P|
00001ae0  6f 6c 79 43 6f 6c 6f 75  72 0d 0d 02 09 20 20 20  |olyColour....   |
00001af0  20 cb 0d 0d 0c 07 20 20  cd 0d 0d 16 09 fd 20 74  | .....  ...... t|
00001b00  66 31 0d 0d 20 0e e3 20  69 3d 31 20 b8 20 31 32  |f1.. .. i=1 . 12|
00001b10  0d 0d 2a 14 20 20 63 6f  6c 28 69 29 3d 63 6f 6c  |..*.  col(i)=col|
00001b20  70 28 69 29 0d 0d 34 07  ed 20 69 0d 0d 3e 05 e1  |p(i)..4.. i..>..|
00001b30  0d 0d 48 05 3a 0d 0d 52  05 3a 0d 0d 5c 0e dd f2  |..H.:..R.:..\...|
00001b40  57 65 6c 6c 44 6f 6e 65  0d 0d 66 0a f1 bd 28 37  |WellDone..f...(7|
00001b50  29 3b 0d 0d 70 11 e6 20  66 6f 72 65 20 c8 9c 20  |);..p.. fore .. |
00001b60  31 39 32 0d 0d 7a 0d ec  20 31 30 30 2c 37 30 30  |192..z.. 100,700|
00001b70  0d 0d 84 11 f1 22 47 72  65 61 74 20 57 6f 72 6b  |....."Great Work|
00001b80  22 0d 0d 8e 0d ec 20 31  31 36 2c 36 35 30 0d 0d  |"..... 116,650..|
00001b90  98 10 f1 22 57 65 6c 6c  20 44 6f 6e 65 22 0d 0d  |..."Well Done"..|
00001ba0  a2 0c f2 53 61 76 65 50  69 63 0d 0d ac 0d f2 43  |...SavePic.....C|
00001bb0  6f 6e 74 69 6e 75 65 0d  0d b6 05 e1 0d 0d c0 05  |ontinue.........|
00001bc0  3a 0d 0d ca 05 3a 0d 0d  d4 0f dd f2 57 65 6c 6c  |:....:......Well|
00001bd0  44 6f 6e 65 32 0d 0d de  11 e6 20 66 6f 72 65 20  |Done2..... fore |
00001be0  c8 9c 20 31 39 32 0d 0d  e8 0d ec 20 32 37 32 2c  |.. 192..... 272,|
00001bf0  31 36 30 0d 0d f2 0a f1  bd 28 37 29 3b 0d 0d fc  |160......(7);...|
00001c00  1e f1 22 47 72 65 61 74  20 57 6f 72 6b 20 2d 20  |.."Great Work - |
00001c10  57 65 6c 6c 20 44 6f 6e  65 21 22 0d 0e 06 0d f2  |Well Done!".....|
00001c20  43 6f 6e 74 69 6e 75 65  0d 0e 10 05 e1 0d 0e 1a  |Continue........|
00001c30  05 3a 0d 0e 24 05 3a 0d  0e 2e 0e dd f2 54 75 74  |.:..$.:......Tut|
00001c40  6f 72 69 61 6c 0d 0e 38  14 ea 20 69 2c 6a 2c 6b  |orial..8.. i,j,k|
00001c50  2c 70 72 24 2c 70 72 31  24 0d 0e 42 20 f2 54 69  |,pr$,pr1$..B .Ti|
00001c60  74 6c 65 28 22 50 6f 6c  79 6f 6d 69 6e 6f 20 54  |tle("Polyomino T|
00001c70  75 74 6f 72 69 61 6c 22  29 0d 0e 4c 07 ef 20 34  |utorial")..L.. 4|
00001c80  0d 0e 56 10 fb 20 62 61  63 6b 20 c8 9c 20 36 34  |..V.. back .. 64|
00001c90  0d 0e 60 0b 69 3d 31 3a  6b 3d 35 0d 0e 6a 05 f5  |..`.i=1:k=5..j..|
00001ca0  0d 0e 74 12 20 20 70 72  24 3d 6c 69 6e 65 24 28  |..t.  pr$=line$(|
00001cb0  69 29 0d 0e 7e 13 20 20  e7 20 a9 28 70 72 24 29  |i)..~.  . .(pr$)|
00001cc0  3c 3e 31 20 8c 0d 0e 88  24 20 20 20 20 70 72 24  |<>1 ....$    pr$|
00001cd0  3d c2 6c 69 6e 65 24 28  69 29 2c a9 28 6c 69 6e  |=.line$(i),.(lin|
00001ce0  65 24 28 69 29 29 2d 32  29 0d 0e 92 1b 20 20 20  |e$(i))-2)....   |
00001cf0  20 63 6f 6c 3d bb 28 c0  6c 69 6e 65 24 28 69 29  | col=.(.line$(i)|
00001d00  2c 32 29 29 0d 0e 9c 15  20 20 20 20 c8 95 20 a9  |,2))....    .. .|
00001d10  28 70 72 24 29 3c 3e 34  30 0d 0e a6 15 20 20 20  |(pr$)<>40....   |
00001d20  20 20 20 70 72 24 3d 70  72 24 2b 22 20 22 0d 0e  |   pr$=pr$+" "..|
00001d30  b0 09 20 20 20 20 ce 0d  0e ba 0d 20 20 20 20 fb  |..    .....    .|
00001d40  20 63 6f 6c 0d 0e c4 12  20 20 20 20 e3 20 6a 3d  | col....    . j=|
00001d50  31 20 b8 20 34 30 0d 0e  ce 18 20 20 20 20 20 20  |1 . 40....      |
00001d60  70 72 31 24 3d c1 70 72  24 2c 6a 2c 31 29 0d 0e  |pr1$=.pr$,j,1)..|
00001d70  d8 17 20 20 20 20 20 20  f1 8a 6a 2d 31 2c 6b 29  |..      ..j-1,k)|
00001d80  70 72 31 24 3b 0d 0e e2  15 20 20 20 20 20 20 e7  |pr1$;....      .|
00001d90  20 a6 28 2d 31 31 33 29  20 e1 0d 0e ec 1d 20 20  | .(-113) .....  |
00001da0  20 20 20 20 74 69 6d 65  3d 91 3a f5 20 fd 20 91  |    time=.:. . .|
00001db0  2d 74 69 6d 65 3e 34 0d  0e f6 0a 20 20 20 20 ed  |-time>4....    .|
00001dc0  6a 0d 0f 00 07 20 20 cd  0d 0f 0a 14 20 20 e7 20  |j....  .....  . |
00001dd0  70 72 24 3d 22 21 22 20  6b 2b 3d 31 0d 0f 14 19  |pr$="!" k+=1....|
00001de0  20 20 e7 20 70 72 24 3d  22 40 22 20 f2 44 6f 6d  |  . pr$="@" .Dom|
00001df0  3a 6b 2b 3d 34 0d 0f 1e  1c 20 20 e7 20 70 72 24  |:k+=4....  . pr$|
00001e00  3d 22 23 22 20 f2 43 6f  6e 74 69 6e 75 65 3a ef  |="#" .Continue:.|
00001e10  34 0d 0f 28 11 20 20 e7  20 70 72 24 3d 22 24 22  |4..(.  . pr$="$"|
00001e20  20 8c 0d 0f 32 19 20 20  20 20 e6 30 2c 62 61 63  | ...2.    .0,bac|
00001e30  6b 2d 31 32 38 20 c8 9c  20 36 34 0d 0f 3c 1a 20  |k-128 .. 64..<. |
00001e40  20 20 20 c8 93 20 c8 90  20 30 2c 30 2c 31 32 38  |   .. .. 0,0,128|
00001e50  30 2c 38 36 30 0d 0f 46  0b 20 20 20 20 6b 3d 35  |0,860..F.    k=5|
00001e60  0d 0f 50 07 20 20 cd 0d  0f 5a 14 20 20 e7 20 70  |..P.  ...Z.  . p|
00001e70  72 24 3d 22 25 22 20 f2  54 72 69 0d 0f 64 16 20  |r$="%" .Tri..d. |
00001e80  20 e7 20 70 72 24 3d 22  5e 22 20 f2 54 65 74 72  | . pr$="^" .Tetr|
00001e90  61 0d 0f 6e 0f 20 20 69  2b 3d 31 3a 6b 2b 3d 31  |a..n.  i+=1:k+=1|
00001ea0  0d 0f 78 14 fd 20 6c 69  6e 65 24 28 69 29 3d 22  |..x.. line$(i)="|
00001eb0  7a 7a 7a 22 0d 0f 82 0d  f2 43 6f 6e 74 69 6e 75  |zzz".....Continu|
00001ec0  65 0d 0f 8c 05 e1 0d 0f  96 05 3a 0d 0f a0 05 3a  |e.........:....:|
00001ed0  0d 0f aa 0e dd f2 43 6f  6e 74 69 6e 75 65 0d 0f  |......Continue..|
00001ee0  b4 0f f2 4d 65 6e 75 53  65 74 28 39 29 0d 0f be  |...MenuSet(9)...|
00001ef0  15 f2 4d 65 6e 75 43 68  6f 69 63 65 28 39 2c 63  |..MenuChoice(9,c|
00001f00  68 29 0d 0f c8 15 e6 30  2c 62 61 63 6b 2d 31 32  |h).....0,back-12|
00001f10  38 20 c8 9c 20 36 34 0d  0f d2 16 c8 93 20 c8 90  |8 .. 64...... ..|
00001f20  20 35 30 30 2c 36 2c 33  30 30 2c 36 30 0d 0f dc  | 500,6,300,60...|
00001f30  05 e1 0d 0f e6 05 3a 0d  0f f0 05 3a 0d 0f fa 09  |......:....:....|
00001f40  dd f2 54 72 69 0d 10 04  09 e6 30 2c 34 38 0d 10  |..Tri.....0,48..|
00001f50  0e 18 c8 93 c8 90 20 31  30 30 2c 36 30 30 2c 33  |...... 100,600,3|
00001f60  30 30 2c 31 30 30 0d 10  18 18 c8 93 c8 90 20 37  |00,100........ 7|
00001f70  30 30 2c 36 30 30 2c 32  30 30 2c 31 30 30 0d 10  |00,600,200,100..|
00001f80  22 18 c8 93 c8 90 20 37  30 30 2c 35 30 30 2c 31  |"..... 700,500,1|
00001f90  30 30 2c 31 30 30 0d 10  2c 09 e6 30 2c 36 30 0d  |00,100..,..0,60.|
00001fa0  10 36 16 c8 93 20 31 30  30 2c 36 30 30 2c 31 30  |.6... 100,600,10|
00001fb0  30 2c 31 30 30 0d 10 40  16 c8 93 20 32 30 30 2c  |0,100..@... 200,|
00001fc0  36 30 30 2c 31 30 30 2c  31 30 30 0d 10 4a 16 c8  |600,100,100..J..|
00001fd0  93 20 33 30 30 2c 36 30  30 2c 31 30 30 2c 31 30  |. 300,600,100,10|
00001fe0  30 0d 10 54 16 c8 93 20  37 30 30 2c 36 30 30 2c  |0..T... 700,600,|
00001ff0  31 30 30 2c 31 30 30 0d  10 5e 16 c8 93 20 38 30  |100,100..^... 80|
00002000  30 2c 36 30 30 2c 31 30  30 2c 31 30 30 0d 10 68  |0,600,100,100..h|
00002010  16 c8 93 20 37 30 30 2c  35 30 30 2c 31 30 30 2c  |... 700,500,100,|
00002020  31 30 30 0d 10 72 05 e1  0d 10 7c 05 3a 0d 10 86  |100..r....|.:...|
00002030  05 3a 0d 10 90 0b dd f2  54 65 74 72 61 0d 10 9a  |.:......Tetra...|
00002040  07 ea 20 69 0d 10 a4 09  e6 30 2c 34 38 0d 10 ae  |.. i.....0,48...|
00002050  17 c8 93 c8 90 20 32 30  30 2c 31 35 30 2c 35 30  |..... 200,150,50|
00002060  2c 32 30 30 0d 10 b8 18  c8 93 c8 90 20 33 35 30  |,200........ 350|
00002070  2c 32 30 30 2c 31 30 30  2c 31 30 30 0d 10 c2 2a  |,200,100,100...*|
00002080  c8 93 c8 90 20 35 35 30  2c 31 37 35 2c 35 30 2c  |.... 550,175,50,|
00002090  31 35 30 3a c8 93 c8 90  20 36 30 30 2c 32 37 35  |150:.... 600,275|
000020a0  2c 35 30 2c 35 30 0d 10  cc 2a c8 93 c8 90 20 37  |,50,50...*.... 7|
000020b0  35 30 2c 31 37 35 2c 35  30 2c 31 35 30 3a c8 93  |50,175,50,150:..|
000020c0  c8 90 20 38 30 30 2c 32  32 35 2c 35 30 2c 35 30  |.. 800,225,50,50|
000020d0  0d 10 d6 2c c8 93 c8 90  20 39 35 30 2c 32 35 30  |...,.... 950,250|
000020e0  2c 31 30 30 2c 35 30 3a  c8 93 c8 90 20 31 30 30  |,100,50:.... 100|
000020f0  30 2c 32 30 30 2c 31 30  30 2c 35 30 0d 10 e0 0a  |0,200,100,50....|
00002100  e6 20 30 2c 36 30 0d 10  ea 0d e3 20 69 3d 31 20  |. 0,60..... i=1 |
00002110  b8 20 34 0d 10 f4 1b 20  20 c8 93 20 32 30 30 2c  |. 4....  .. 200,|
00002120  31 30 30 2b 69 2a 35 30  2c 35 30 2c 35 30 0d 10  |100+i*50,50,50..|
00002130  fe 07 ed 20 69 0d 11 08  0d e3 20 69 3d 31 20 b8  |... i..... i=1 .|
00002140  20 32 0d 11 12 1b 20 20  c8 93 20 33 30 30 2b 69  | 2....  .. 300+i|
00002150  2a 35 30 2c 32 30 30 2c  35 30 2c 35 30 0d 11 1c  |*50,200,50,50...|
00002160  1b 20 20 c8 93 20 33 30  30 2b 69 2a 35 30 2c 32  |.  .. 300+i*50,2|
00002170  35 30 2c 35 30 2c 35 30  0d 11 26 1b 20 20 c8 93  |50,50,50..&.  ..|
00002180  20 39 30 30 2b 69 2a 35  30 2c 32 35 30 2c 35 30  | 900+i*50,250,50|
00002190  2c 35 30 0d 11 30 1b 20  20 c8 93 20 39 35 30 2b  |,50..0.  .. 950+|
000021a0  69 2a 35 30 2c 32 30 30  2c 35 30 2c 35 30 0d 11  |i*50,200,50,50..|
000021b0  3a 07 ed 20 69 0d 11 44  0d e3 20 69 3d 31 20 b8  |:.. i..D.. i=1 .|
000021c0  20 33 0d 11 4e 1b 20 20  c8 93 20 35 35 30 2c 31  | 3..N.  .. 550,1|
000021d0  32 35 2b 69 2a 35 30 2c  35 30 2c 35 30 0d 11 58  |25+i*50,50,50..X|
000021e0  1b 20 20 c8 93 20 37 35  30 2c 31 32 35 2b 69 2a  |.  .. 750,125+i*|
000021f0  35 30 2c 35 30 2c 35 30  0d 11 62 07 ed 20 69 0d  |50,50,50..b.. i.|
00002200  11 6c 14 c8 93 20 36 30  30 2c 32 37 35 2c 35 30  |.l... 600,275,50|
00002210  2c 35 30 0d 11 76 14 c8  93 20 38 30 30 2c 32 32  |,50..v... 800,22|
00002220  35 2c 35 30 2c 35 30 0d  11 80 05 e1 0d 11 8a 05  |5,50,50.........|
00002230  3a 0d 11 94 05 3a 0d 11  9e 09 dd f2 44 6f 6d 0d  |:....:......Dom.|
00002240  11 a8 08 e6 30 2c 30 0d  11 b2 18 c8 93 c8 90 20  |....0,0........ |
00002250  34 39 30 2c 33 31 37 2c  33 30 30 2c 31 35 30 0d  |490,317,300,150.|
00002260  11 bc 09 e6 30 2c 36 33  0d 11 c6 16 c8 93 20 35  |....0,63...... 5|
00002270  30 30 2c 33 32 37 2c 32  38 30 2c 31 33 30 0d 11  |00,327,280,130..|
00002280  d0 16 c8 93 20 35 30 30  2c 33 32 37 2c 31 34 30  |.... 500,327,140|
00002290  2c 31 33 30 0d 11 da 13  c8 8f c8 90 20 35 37 30  |,130........ 570|
000022a0  2c 33 39 37 2c 31 30 0d  11 e4 13 c8 8f c8 90 20  |,397,10........ |
000022b0  36 37 35 2c 34 32 35 2c  31 30 0d 11 ee 13 c8 8f  |675,425,10......|
000022c0  c8 90 20 37 34 35 2c 33  36 30 2c 31 32 0d 11 f8  |.. 745,360,12...|
000022d0  13 c8 8f c8 90 20 37 34  35 2c 34 32 35 2c 31 32  |..... 745,425,12|
000022e0  0d 12 02 13 c8 8f c8 90  20 36 37 35 2c 33 36 30  |........ 675,360|
000022f0  2c 31 30 0d 12 0c 05 e1  0d 12 16 05 3a 0d 12 20  |,10.........:.. |
00002300  05 3a 0d 12 2a 0f dd f2  52 65 63 74 61 6e 67 6c  |.:..*...Rectangl|
00002310  65 0d 12 34 1c f2 54 69  74 6c 65 28 22 52 65 63  |e..4..Title("Rec|
00002320  74 61 6e 67 6c 65 20 4d  65 6e 75 22 29 0d 12 3e  |tangle Menu")..>|
00002330  0f f2 4d 65 6e 75 53 65  74 28 34 29 0d 12 48 05  |..MenuSet(4)..H.|
00002340  f5 0d 12 52 0b 20 20 74  66 31 3d a3 0d 12 5c 17  |...R.  tf1=...\.|
00002350  20 20 f2 4d 65 6e 75 43  68 6f 69 63 65 28 34 2c  |  .MenuChoice(4,|
00002360  63 68 29 0d 12 66 0d 20  20 c8 8e 20 63 68 20 ca  |ch)..f.  .. ch .|
00002370  0d 12 70 2b 20 20 20 20  c9 20 31 2c 32 2c 33 3a  |..p+    . 1,2,3:|
00002380  20 f2 50 75 7a 7a 6c 65  73 28 31 33 2b 63 68 29  | .Puzzles(13+ch)|
00002390  3a f2 52 65 63 74 61 6e  67 6c 65 0d 12 7a 12 20  |:.Rectangle..z. |
000023a0  20 20 20 c9 20 34 3a 20  74 66 31 3d b9 0d 12 84  |   . 4: tf1=....|
000023b0  07 20 20 cb 0d 12 8e 09  fd 20 74 66 31 0d 12 98  |.  ...... tf1...|
000023c0  05 e1 0d 12 a2 05 3a 0d  12 ac 05 3a 0d 12 b6 13  |......:....:....|
000023d0  dd f2 4d 65 6e 75 53 65  74 28 6d 65 6e 75 29 0d  |..MenuSet(menu).|
000023e0  12 c0 07 ea 20 69 0d 12  ca 06 ef 35 0d 12 d4 07  |.... i.....5....|
000023f0  69 3d 31 0d 12 de 05 f5  0d 12 e8 20 20 20 72 65  |i=1........   re|
00002400  63 74 3d a9 28 6d 65 6e  75 24 28 6d 65 6e 75 2c  |ct=.(menu$(menu,|
00002410  69 29 29 2a 33 32 2b 38  0d 12 f2 27 20 20 6d 78  |i))*32+8...'  mx|
00002420  3d 6d 65 6e 75 78 28 6d  65 6e 75 2c 69 29 3a 6d  |=menux(menu,i):m|
00002430  79 3d 6d 65 6e 75 79 28  6d 65 6e 75 2c 69 29 0d  |y=menuy(menu,i).|
00002440  12 fc 0f 20 20 e6 20 31  30 20 c8 9c 20 30 0d 13  |...  . 10 .. 0..|
00002450  06 23 20 20 c8 93 20 c8  90 20 6d 78 2d 31 32 2c  |.#  .. .. mx-12,|
00002460  6d 79 2b 31 36 2c 72 65  63 74 2b 31 36 2c 2d 35  |my+16,rect+16,-5|
00002470  36 0d 13 10 11 20 20 e6  20 31 30 20 c8 9c 20 31  |6....  . 10 .. 1|
00002480  39 32 0d 13 1a 20 20 20  c8 93 20 c8 90 20 6d 78  |92...   .. .. mx|
00002490  2d 34 2c 6d 79 2b 38 2c  72 65 63 74 2b 38 2c 2d  |-4,my+8,rect+8,-|
000024a0  34 38 0d 13 24 30 20 20  ec 20 6d 78 2d 31 32 2c  |48..$0  . mx-12,|
000024b0  6d 79 2d 34 30 3a ec 20  6d 78 2d 34 2c 6d 79 2d  |my-40:. mx-4,my-|
000024c0  34 30 3a f0 26 35 35 2c  6d 78 2d 34 2c 6d 79 2d  |40:.&55,mx-4,my-|
000024d0  33 32 0d 13 2e 3c 20 20  ec 20 6d 78 2b 72 65 63  |32...<  . mx+rec|
000024e0  74 2d 34 2c 6d 79 2b 38  3a ec 20 6d 78 2b 72 65  |t-4,my+8:. mx+re|
000024f0  63 74 2b 34 2c 6d 79 2b  38 3a f0 26 35 35 2c 6d  |ct+4,my+8:.&55,m|
00002500  78 2b 72 65 63 74 2b 34  2c 6d 79 2b 31 36 0d 13  |x+rect+4,my+16..|
00002510  38 10 20 20 e6 20 31 30  20 c8 9c 20 36 34 0d 13  |8.  . 10 .. 64..|
00002520  42 26 20 20 e7 20 6d 65  6e 73 65 74 24 28 6d 65  |B&  . menset$(me|
00002530  6e 75 2c 69 29 3d 22 4e  22 20 e6 20 32 30 20 c8  |nu,i)="N" . 20 .|
00002540  9c 20 36 34 0d 13 4c 1e  20 20 c8 93 20 c8 90 20  |. 64..L.  .. .. |
00002550  6d 78 2d 34 2c 6d 79 2d  33 32 2c 72 65 63 74 2c  |mx-4,my-32,rect,|
00002560  34 30 0d 13 56 13 20 20  e6 20 66 6f 72 65 20 c8  |40..V.  . fore .|
00002570  9c 20 31 39 32 0d 13 60  0d 20 20 ec 20 6d 78 2c  |. 192..`.  . mx,|
00002580  6d 79 0d 13 6a 20 20 20  e7 20 6d 65 6e 73 65 74  |my..j   . menset|
00002590  24 28 6d 65 6e 75 2c 69  29 3d 22 4e 22 20 e6 20  |$(menu,i)="N" . |
000025a0  32 30 0d 13 74 15 20 20  f1 20 6d 65 6e 75 24 28  |20..t.  . menu$(|
000025b0  6d 65 6e 75 2c 69 29 0d  13 7e 0a 20 20 69 2b 3d  |menu,i)..~.  i+=|
000025c0  31 0d 13 88 17 fd 20 6d  65 6e 75 24 28 6d 65 6e  |1..... menu$(men|
000025d0  75 2c 69 29 3d 22 7a 22  0d 13 92 0f e7 20 6d 65  |u,i)="z"..... me|
000025e0  6e 75 3d 31 30 20 8c 0d  13 9c 0f 20 20 e3 20 69  |nu=10 .....  . i|
000025f0  3d 30 20 b8 20 35 0d 13  a6 14 20 20 20 20 e6 20  |=0 . 5....    . |
00002600  30 2c 63 6f 6c 28 69 2b  31 29 0d 13 b0 22 20 20  |0,col(i+1)..."  |
00002610  20 20 c8 93 c8 90 20 34  37 36 2b 28 69 2a 32 38  |  .... 476+(i*28|
00002620  29 2c 31 36 38 2c 32 38  2c 2d 31 38 0d 13 ba 14  |),168,28,-18....|
00002630  20 20 20 20 e6 20 30 2c  63 6f 6c 28 69 2b 37 29  |    . 0,col(i+7)|
00002640  0d 13 c4 22 20 20 20 20  c8 93 c8 90 20 34 37 36  |..."    .... 476|
00002650  2b 28 69 2a 32 38 29 2c  31 34 36 2c 32 38 2c 2d  |+(i*28),146,28,-|
00002660  31 38 0d 13 ce 09 20 20  ed 20 69 0d 13 d8 05 cd  |18....  . i.....|
00002670  0d 13 e2 0e e7 20 6d 65  6e 75 3d 31 20 8c 0d 13  |..... menu=1 ...|
00002680  ec 0f 20 20 e3 20 69 3d  30 20 b8 20 35 0d 13 f6  |..  . i=0 . 5...|
00002690  14 20 20 20 20 e6 20 30  2c 63 6f 6c 28 69 2b 31  |.    . 0,col(i+1|
000026a0  29 0d 14 00 22 20 20 20  20 c8 93 c8 90 20 35 35  |)..."    .... 55|
000026b0  36 2b 28 69 2a 32 38 29  2c 35 37 36 2c 32 38 2c  |6+(i*28),576,28,|
000026c0  2d 31 38 0d 14 0a 14 20  20 20 20 e6 20 30 2c 63  |-18....    . 0,c|
000026d0  6f 6c 28 69 2b 37 29 0d  14 14 22 20 20 20 20 c8  |ol(i+7)..."    .|
000026e0  93 c8 90 20 35 35 36 2b  28 69 2a 32 38 29 2c 35  |... 556+(i*28),5|
000026f0  35 36 2c 32 38 2c 2d 31  38 0d 14 1e 09 20 20 ed  |56,28,-18....  .|
00002700  20 69 0d 14 28 05 cd 0d  14 32 05 e1 0d 14 3c 05  | i..(....2....<.|
00002710  3a 0d 14 46 05 3a 0d 14  50 13 dd f2 54 69 74 6c  |:..F.:..P...Titl|
00002720  65 28 74 69 74 6c 65 24  29 0d 14 5a 11 6c 65 6e  |e(title$)..Z.len|
00002730  3d a9 28 74 69 74 6c 65  24 29 0d 14 64 12 78 3d  |=.(title$)..d.x=|
00002740  36 34 30 2d 33 32 2a 6c  65 6e 2f 32 0d 14 6e 12  |640-32*len/2..n.|
00002750  e6 20 62 61 63 6b 20 c8  9c 20 36 34 3a da 0d 14  |. back .. 64:...|
00002760  78 06 ef 35 0d 14 82 0e  e6 20 30 3a e6 20 62 61  |x..5..... 0:. ba|
00002770  63 6b 0d 14 8c 16 ec 20  78 2d 38 2c 39 35 30 3a  |ck..... x-8,950:|
00002780  f1 20 74 69 74 6c 65 24  0d 14 96 11 e6 20 66 6f  |. title$..... fo|
00002790  72 65 20 c8 9c 20 31 39  32 0d 14 a0 14 ec 20 78  |re .. 192..... x|
000027a0  2c 39 35 38 3a f1 20 74  69 74 6c 65 24 0d 14 aa  |,958:. title$...|
000027b0  05 e1 0d 14 b4 05 3a 0d  14 be 05 3a 0d 14 c8 12  |......:....:....|
000027c0  dd a4 59 65 73 4e 6f 28  71 75 65 73 24 29 0d 14  |..YesNo(ques$)..|
000027d0  d2 0f f1 20 bd 28 37 29  3b bd 28 37 29 0d 14 dc  |... .(7);.(7)...|
000027e0  0f e6 20 36 33 20 c8 9c  20 31 39 32 0d 14 e6 07  |.. 63 .. 192....|
000027f0  ef 20 35 0d 14 f0 0c ec  20 33 33 32 2c 35 30 0d  |. 5..... 332,50.|
00002800  14 fa 0b f1 20 71 75 65  73 24 0d 15 04 0f f2 4d  |.... ques$.....M|
00002810  65 6e 75 53 65 74 28 38  29 0d 15 0e 16 f2 4d 65  |enuSet(8).....Me|
00002820  6e 75 43 68 6f 69 63 65  28 38 2c 63 68 31 29 0d  |nuChoice(8,ch1).|
00002830  15 18 16 e6 20 30 2c 62  61 63 6b 2d 31 32 38 20  |.... 0,back-128 |
00002840  c8 9c 20 36 34 0d 15 22  25 c8 93 20 c8 90 20 33  |.. 64.."%.. .. 3|
00002850  33 30 2c 31 30 2c 36 36  30 2c 36 30 3a e6 20 66  |30,10,660,60:. f|
00002860  6f 72 65 20 c8 9c 20 31  39 32 0d 15 2c 0e e7 20  |ore .. 192..,.. |
00002870  63 68 31 3d 32 3a 3d a3  0d 15 36 07 3a 3d b9 0d  |ch1=2:=...6.:=..|
00002880  15 40 05 3a 0d 15 4a 05  3a 0d 15 54 2a dd f2 47  |.@.:..J.:..T*..G|
00002890  72 69 64 28 67 72 78 25  2c 67 72 79 25 2c 73 71  |rid(grx%,gry%,sq|
000028a0  78 2c 73 71 79 2c 63 31  2c 63 32 2c 63 33 2c 67  |x,sqy,c1,c2,c3,g|
000028b0  61 70 29 0d 15 5e 0b ea  20 69 25 2c 6a 25 0d 15  |ap)..^.. i%,j%..|
000028c0  68 0d e3 69 25 3d 31 b8  73 71 78 0d 15 72 0f 20  |h..i%=1.sqx..r. |
000028d0  20 e3 6a 25 3d 31 b8 73  71 79 0d 15 7c 19 20 20  | .j%=1.sqy..|.  |
000028e0  20 20 e7 20 63 31 3d 63  32 20 80 20 63 32 3d 63  |  . c1=c2 . c2=c|
000028f0  33 20 8c 0d 15 86 36 20  20 20 20 20 20 f2 42 75  |3 ....6      .Bu|
00002900  74 74 6f 66 66 28 67 72  78 25 2b 28 69 25 2d 31  |ttoff(grx%+(i%-1|
00002910  29 2a 67 61 70 2c 67 72  79 25 2d 6a 25 2a 67 61  |)*gap,gry%-j%*ga|
00002920  70 2c 63 31 2c 67 61 70  29 0d 15 90 09 20 20 20  |p,c1,gap)....   |
00002930  20 cc 0d 15 9a 3b 20 20  20 20 20 20 f2 42 75 74  | ....;      .But|
00002940  74 6f 6e 28 67 72 78 25  2b 28 69 25 2d 31 29 2a  |ton(grx%+(i%-1)*|
00002950  67 61 70 2c 67 72 79 25  2d 6a 25 2a 67 61 70 2c  |gap,gry%-j%*gap,|
00002960  63 31 2c 63 32 2c 63 33  2c 67 61 70 29 0d 15 a4  |c1,c2,c3,gap)...|
00002970  09 20 20 20 20 cd 0d 15  ae 07 20 20 ed 0d 15 b8  |.    .....  ....|
00002980  05 ed 0d 15 c2 05 e1 0d  15 cc 05 3a 0d 15 d6 05  |...........:....|
00002990  3a 0d 15 e0 22 dd f2 43  72 65 61 74 65 50 6f 6c  |:..."..CreatePol|
000029a0  79 28 78 6d 69 6e 2c 79  6d 69 6e 2c 73 71 2c 67  |y(xmin,ymin,sq,g|
000029b0  61 70 29 0d 15 ea 0b 73  71 63 6e 74 3d 30 0d 15  |ap)....sqcnt=0..|
000029c0  f4 0a c8 97 20 ee 20 31  0d 15 fe 2b c8 97 20 c8  |.... . 1...+.. .|
000029d0  93 20 78 6d 69 6e 2c 79  6d 69 6e 2d 31 39 30 2c  |. xmin,ymin-190,|
000029e0  73 71 2a 34 30 2d 38 2c  73 71 2a 34 30 2d 38 2b  |sq*40-8,sq*40-8+|
000029f0  31 39 30 0d 16 08 05 f5  0d 16 12 27 20 20 f5 20  |190........'  . |
00002a00  c8 97 20 6d 73 78 2c 6d  73 79 2c 6d 73 73 74 61  |.. msx,msy,mssta|
00002a10  74 75 73 3a fd 6d 73 73  74 61 74 75 73 3d 30 0d  |tus:.msstatus=0.|
00002a20  16 1c 07 20 20 f5 0d 16  26 1a 20 20 20 20 c8 97  |...  ...&.    ..|
00002a30  6d 73 78 2c 6d 73 79 2c  6d 73 73 74 61 74 75 73  |msx,msy,msstatus|
00002a40  0d 16 30 13 20 20 fd 20  6d 73 73 74 61 74 75 73  |..0.  . msstatus|
00002a50  3c 3e 30 0d 16 3a 1e 20  20 e7 20 73 71 3d 35 20  |<>0..:.  . sq=5 |
00002a60  f2 4d 65 6e 75 43 68 6f  69 63 65 28 36 2c 63 68  |.MenuChoice(6,ch|
00002a70  29 0d 16 44 1e 20 20 e7  20 73 71 3d 36 20 f2 4d  |)..D.  . sq=6 .M|
00002a80  65 6e 75 43 68 6f 69 63  65 28 37 2c 63 68 29 0d  |enuChoice(7,ch).|
00002a90  16 4e 0e 20 20 e7 20 63  68 3d 31 20 8c 0d 16 58  |.N.  . ch=1 ...X|
00002aa0  0d 20 20 20 20 74 6f 74  3d 30 0d 16 62 29 20 20  |.    tot=0..b)  |
00002ab0  20 20 e3 69 3d 31 b8 38  3a e3 6a 3d 31 b8 38 3a  |  .i=1.8:.j=1.8:|
00002ac0  74 6f 74 2b 3d 63 68 72  28 69 2c 6a 29 3a ed 6a  |tot+=chr(i,j):.j|
00002ad0  3a ed 69 0d 16 6c 12 20  20 20 20 e7 20 74 6f 74  |:.i..l.    . tot|
00002ae0  3c 3e 30 20 8c 0d 16 76  0f 20 20 20 20 20 20 f2  |<>0 ...v.      .|
00002af0  43 61 6c 63 0d 16 80 18  20 20 20 20 20 20 e7 20  |Calc....      . |
00002b00  a4 43 68 65 63 6b 50 6f  6c 79 20 8c 0d 16 8a 1d  |.CheckPoly .....|
00002b10  20 20 20 20 20 20 20 20  f2 43 6c 65 61 72 28 78  |        .Clear(x|
00002b20  6d 69 6e 2c 79 6d 69 6e  29 0d 16 94 19 20 20 20  |min,ymin)....   |
00002b30  20 20 20 20 20 f2 46 6c  61 73 68 28 31 2c 32 2c  |     .Flash(1,2,|
00002b40  38 29 0d 16 9e 0d 20 20  20 20 20 20 20 20 e1 0d  |8)....        ..|
00002b50  16 a8 0b 20 20 20 20 20  20 cc 0d 16 b2 17 20 20  |...      .....  |
00002b60  20 20 20 20 20 20 f2 45  72 72 6f 72 28 65 72 72  |      .Error(err|
00002b70  29 0d 16 bc 1d 20 20 20  20 20 20 20 20 f2 43 6c  |)....        .Cl|
00002b80  65 61 72 28 78 6d 69 6e  2c 79 6d 69 6e 29 0d 16  |ear(xmin,ymin)..|
00002b90  c6 0d 20 20 20 20 20 20  20 20 e1 0d 16 d0 0b 20  |..        ..... |
00002ba0  20 20 20 20 20 cd 0d 16  da 09 20 20 20 20 cd 0d  |     .....    ..|
00002bb0  16 e4 07 20 20 cd 0d 16  ee 22 20 20 e7 20 6d 73  |...  ...."  . ms|
00002bc0  79 3e 79 6d 69 6e 20 f2  4f 6e 4f 66 66 28 78 6d  |y>ymin .OnOff(xm|
00002bd0  69 6e 2c 79 6d 69 6e 29  0d 16 f8 0a fd 20 63 68  |in,ymin)..... ch|
00002be0  3d 32 0d 17 02 05 e1 0d  17 0c 05 3a 0d 17 16 05  |=2.........:....|
00002bf0  3a 0d 17 20 16 dd f2 43  6c 65 61 72 28 78 6d 69  |:.. ...Clear(xmi|
00002c00  6e 2c 79 6d 69 6e 29 0d  17 2a 0a e3 69 3d 31 b8  |n,ymin)..*..i=1.|
00002c10  38 0d 17 34 0c 20 20 e3  6a 3d 31 b8 38 0d 17 3e  |8..4.  .j=1.8..>|
00002c20  44 20 20 20 20 e7 20 63  68 72 28 69 2c 6a 29 3d  |D    . chr(i,j)=|
00002c30  31 20 f2 42 75 74 74 6f  6e 28 78 6d 69 6e 2b 28  |1 .Button(xmin+(|
00002c40  69 2d 31 29 2a 34 30 2c  79 6d 69 6e 2b 28 2d 6a  |i-1)*40,ymin+(-j|
00002c50  2b 73 71 29 2a 34 30 2c  32 2c 31 2c 34 2c 34 30  |+sq)*40,2,1,4,40|
00002c60  29 0d 17 48 12 20 20 20  20 63 68 72 28 69 2c 6a  |)..H.    chr(i,j|
00002c70  29 3d 30 0d 17 52 08 20  20 ed 6a 0d 17 5c 06 ed  |)=0..R.  .j..\..|
00002c80  69 0d 17 66 05 e1 0d 17  70 05 3a 0d 17 7a 05 3a  |i..f....p.:..z.:|
00002c90  0d 17 84 16 dd f2 4f 6e  4f 66 66 28 78 6d 69 6e  |......OnOff(xmin|
00002ca0  2c 79 6d 69 6e 29 0d 17  8e 19 78 70 3d a8 28 28  |,ymin)....xp=.((|
00002cb0  6d 73 78 2d 78 6d 69 6e  29 2f 34 30 29 2b 31 0d  |msx-xmin)/40)+1.|
00002cc0  17 98 1a 79 70 3d 73 71  2d a8 28 28 6d 73 79 2d  |...yp=sq-.((msy-|
00002cd0  79 6d 69 6e 29 2f 34 30  29 0d 17 a2 14 e7 20 63  |ymin)/40)..... c|
00002ce0  68 72 28 78 70 2c 79 70  29 3d 31 20 8c 0d 17 ac  |hr(xp,yp)=1 ....|
00002cf0  12 20 20 63 68 72 28 78  70 2c 79 70 29 3d 30 0d  |.  chr(xp,yp)=0.|
00002d00  17 b6 0e 20 20 73 71 63  6e 74 2d 3d 31 0d 17 c0  |...  sqcnt-=1...|
00002d10  37 20 20 f2 42 75 74 74  6f 6e 28 78 6d 69 6e 2b  |7  .Button(xmin+|
00002d20  28 78 70 2d 31 29 2a 34  30 2c 79 6d 69 6e 2b 28  |(xp-1)*40,ymin+(|
00002d30  2d 79 70 2b 73 71 29 2a  34 30 2c 32 2c 31 2c 34  |-yp+sq)*40,2,1,4|
00002d40  2c 34 30 29 0d 17 ca 05  cc 0d 17 d4 12 20 20 63  |,40).........  c|
00002d50  68 72 28 78 70 2c 79 70  29 3d 31 0d 17 de 0e 20  |hr(xp,yp)=1.... |
00002d60  20 73 71 63 6e 74 2b 3d  31 0d 17 e8 37 20 20 f2  | sqcnt+=1...7  .|
00002d70  42 75 74 74 6f 6e 28 78  6d 69 6e 2b 28 78 70 2d  |Button(xmin+(xp-|
00002d80  31 29 2a 34 30 2c 79 6d  69 6e 2b 28 2d 79 70 2b  |1)*40,ymin+(-yp+|
00002d90  73 71 29 2a 34 30 2c 31  2c 32 2c 38 2c 34 30 29  |sq)*40,1,2,8,40)|
00002da0  0d 17 f2 05 cd 0d 17 fc  05 e1 0d 18 06 05 3a 0d  |..............:.|
00002db0  18 10 05 3a 0d 18 1a 0a  dd f2 43 61 6c 63 0d 18  |...:......Calc..|
00002dc0  24 11 e3 69 3d 73 71 20  b8 20 31 20 88 2d 31 0d  |$..i=sq . 1 .-1.|
00002dd0  18 2e 0d 20 20 e3 6a 3d  31 b8 73 71 0d 18 38 25  |...  .j=1.sq..8%|
00002de0  20 20 20 20 e7 20 63 68  72 28 6a 2c 69 29 3d 31  |    . chr(j,i)=1|
00002df0  20 76 61 6c 28 69 29 2b  3d 32 5e 28 73 71 2d 6a  | val(i)+=2^(sq-j|
00002e00  29 0d 18 42 08 20 20 ed  6a 0d 18 4c 37 20 20 e7  |)..B.  .j..L7  .|
00002e10  20 73 71 3d 35 20 8c 20  70 65 6e 74 28 31 33 2c  | sq=5 . pent(13,|
00002e20  31 2c 69 29 3d 76 61 6c  28 69 29 20 8b 20 68 65  |1,i)=val(i) . he|
00002e30  78 28 33 36 2c 31 2c 69  29 3d 76 61 6c 28 69 29  |x(36,1,i)=val(i)|
00002e40  0d 18 56 06 ed 69 0d 18  60 20 e3 69 3d 31 b8 73  |..V..i..` .i=1.s|
00002e50  71 3a e3 6a 3d 31 b8 73  71 3a 76 61 6c 28 69 29  |q:.j=1.sq:val(i)|
00002e60  3d 30 3a ed 3a ed 0d 18  6a 17 f2 46 6f 72 63 65  |=0:.:...j..Force|
00002e70  54 6f 70 4c 65 66 74 28  31 33 2c 31 29 0d 18 74  |TopLeft(13,1)..t|
00002e80  2e e7 20 73 71 3d 35 20  8c 20 f2 50 6f 6c 79 53  |.. sq=5 . .PolyS|
00002e90  69 7a 65 28 31 33 2c 31  29 20 8b 20 f2 50 6f 6c  |ize(13,1) . .Pol|
00002ea0  79 53 69 7a 65 28 33 36  2c 31 29 0d 18 7e 05 e1  |ySize(36,1)..~..|
00002eb0  0d 18 88 05 3a 0d 18 92  05 3a 0d 18 9c 0f dd a4  |....:....:......|
00002ec0  43 68 65 63 6b 50 6f 6c  79 0d 18 a6 15 70 3d 31  |CheckPoly....p=1|
00002ed0  3a 74 66 3d 30 3a 65 72  72 6f 66 66 3d 30 0d 18  |:tf=0:erroff=0..|
00002ee0  b0 24 e7 20 73 71 3d 35  20 8c 20 70 6f 6c 79 6e  |.$. sq=5 . polyn|
00002ef0  75 6d 3d 31 32 20 8b 20  70 6f 6c 79 6e 75 6d 3d  |um=12 . polynum=|
00002f00  33 35 0d 18 ba 13 e7 20  73 71 3d 36 20 65 72 72  |35..... sq=6 err|
00002f10  6f 66 66 3d 33 0d 18 c4  05 f5 0d 18 ce 09 20 20  |off=3.........  |
00002f20  76 3d 31 0d 18 d8 07 20  20 f5 0d 18 e2 13 20 20  |v=1....  .....  |
00002f30  20 20 6b 3d 31 3a 6d 61  74 63 68 3d b9 0d 18 ec  |  k=1:match=....|
00002f40  09 20 20 20 20 f5 0d 18  f6 12 20 20 20 20 20 20  |.    .....      |
00002f50  e7 20 73 71 3d 35 20 8c  0d 19 00 2f 20 20 20 20  |. sq=5 ..../    |
00002f60  20 20 20 20 e7 20 70 65  6e 74 28 70 2c 76 2c 6b  |    . pent(p,v,k|
00002f70  29 3c 3e 70 65 6e 74 28  31 33 2c 31 2c 6b 29 20  |)<>pent(13,1,k) |
00002f80  6d 61 74 63 68 3d a3 0d  19 0a 0b 20 20 20 20 20  |match=.....     |
00002f90  20 cd 0d 19 14 32 20 20  20 20 20 20 e7 20 73 71  | ....2      . sq|
00002fa0  3d 36 20 80 20 68 65 78  28 70 2c 76 2c 6b 29 3c  |=6 . hex(p,v,k)<|
00002fb0  3e 68 65 78 28 33 36 2c  31 2c 6b 29 20 6d 61 74  |>hex(36,1,k) mat|
00002fc0  63 68 3d a3 0d 19 1e 0e  20 20 20 20 20 20 6b 2b  |ch=.....      k+|
00002fd0  3d 31 0d 19 28 18 20 20  20 20 fd 20 6d 61 74 63  |=1..(.    . matc|
00002fe0  68 3d a3 20 84 20 6b 3e  73 71 0d 19 32 2a 20 20  |h=. . k>sq..2*  |
00002ff0  20 20 e7 20 6d 61 74 63  68 3d b9 20 80 20 a7 70  |  . match=. . .p|
00003000  6f 6c 79 24 2c bd 28 70  2b 36 34 29 29 3d 30 20  |oly$,.(p+64))=0 |
00003010  74 66 3d 31 0d 19 3c 2b  20 20 20 20 e7 20 74 66  |tf=1..<+    . tf|
00003020  3d 31 20 70 6f 6c 79 24  2b 3d bd 28 70 2b 36 34  |=1 poly$+=.(p+64|
00003030  29 3a 76 61 72 24 2b 3d  c3 28 76 29 3a 3d b9 0d  |):var$+=.(v):=..|
00003040  19 46 2a 20 20 20 20 e7  20 6d 61 74 63 68 3d b9  |.F*    . match=.|
00003050  20 80 20 a7 70 6f 6c 79  24 2c bd 28 70 2b 36 34  | . .poly$,.(p+64|
00003060  29 29 3e 30 20 74 66 3d  32 0d 19 50 1e 20 20 20  |))>0 tf=2..P.   |
00003070  20 e7 20 74 66 3d 32 3a  65 72 72 3d 33 2b 65 72  | . tf=2:err=3+er|
00003080  72 6f 66 66 3a 3d a3 0d  19 5a 0c 20 20 20 20 76  |roff:=...Z.    v|
00003090  2b 3d 31 0d 19 64 23 20  20 20 20 e7 20 73 71 3d  |+=1..d#    . sq=|
000030a0  35 20 70 6f 6c 79 76 61  72 3d 70 65 6e 74 76 61  |5 polyvar=pentva|
000030b0  72 28 70 29 2a 32 0d 19  6e 22 20 20 20 20 e7 20  |r(p)*2..n"    . |
000030c0  73 71 3d 36 20 70 6f 6c  79 76 61 72 3d 68 65 78  |sq=6 polyvar=hex|
000030d0  76 61 72 28 70 29 2a 32  0d 19 78 11 20 20 fd 20  |var(p)*2..x.  . |
000030e0  76 3e 70 6f 6c 79 76 61  72 0d 19 82 0a 20 20 70  |v>polyvar....  p|
000030f0  2b 3d 31 0d 19 8c 0f fd  20 70 3e 70 6f 6c 79 6e  |+=1..... p>polyn|
00003100  75 6d 0d 19 96 10 65 72  72 3d 31 2b 65 72 72 6f  |um....err=1+erro|
00003110  66 66 0d 19 a0 1b e7 20  73 71 63 6e 74 3d 73 71  |ff..... sqcnt=sq|
00003120  20 65 72 72 3d 32 2b 65  72 72 6f 66 66 0d 19 aa  | err=2+erroff...|
00003130  06 3d a3 0d 19 b4 05 3a  0d 19 be 05 3a 0d 19 c8  |.=.....:....:...|
00003140  0b dd f2 53 65 74 75 70  0d 19 d2 0b ea 20 69 2c  |...Setup..... i,|
00003150  6a 2c 6b 0d 19 dc 36 f4  20 2a 2a 2a 20 52 65 61  |j,k...6. *** Rea|
00003160  64 20 44 61 74 61 20 66  6f 72 20 50 65 6e 74 6f  |d Data for Pento|
00003170  6d 69 6e 6f 65 73 20 61  6e 64 20 48 65 78 6f 6d  |minoes and Hexom|
00003180  69 6e 6f 65 73 20 2a 2a  2a 0d 19 e6 1f 63 68 3d  |inoes ***....ch=|
00003190  8e 28 22 3c 50 4f 4c 59  24 44 49 52 3e 2e 70 6f  |.("<POLY$DIR>.po|
000031a0  6c 79 64 61 74 61 22 29  0d 19 f0 20 63 66 3d 8e  |lydata")... cf=.|
000031b0  28 22 3c 50 4f 4c 59 24  44 49 52 3e 2e 63 6f 6e  |("<POLY$DIR>.con|
000031c0  66 69 67 75 72 65 22 29  0d 19 fa 1f 70 77 3d 8e  |figure")....pw=.|
000031d0  28 22 3c 50 4f 4c 59 24  44 49 52 3e 2e 70 61 73  |("<POLY$DIR>.pas|
000031e0  73 77 6f 72 64 22 29 0d  1a 04 0e e3 20 69 3d 31  |sword")..... i=1|
000031f0  20 b8 20 31 32 0d 1a 0e  15 20 20 e8 23 63 68 2c  | . 12....  .#ch,|
00003200  70 65 6e 74 76 61 72 28  69 29 0d 1a 18 14 20 20  |pentvar(i)....  |
00003210  6e 75 6d 3d 70 65 6e 74  76 61 72 28 69 29 0d 1a  |num=pentvar(i)..|
00003220  22 17 20 20 e3 20 6a 3d  31 20 b8 20 6e 75 6d 2a  |".  . j=1 . num*|
00003230  32 20 88 20 32 0d 1a 2c  25 20 20 20 20 e3 20 6b  |2 . 2..,%    . k|
00003240  3d 31 20 b8 20 35 3a e8  23 63 68 2c 70 65 6e 74  |=1 . 5:.#ch,pent|
00003250  28 69 2c 6a 2c 6b 29 3a  ed 6b 0d 1a 36 27 20 20  |(i,j,k):.k..6'  |
00003260  20 20 e3 20 6b 3d 31 20  b8 20 35 3a e8 23 63 68  |  . k=1 . 5:.#ch|
00003270  2c 70 65 6e 74 28 69 2c  6a 2b 31 2c 6b 29 3a ed  |,pent(i,j+1,k):.|
00003280  6b 0d 1a 40 08 20 20 ed  6a 0d 1a 4a 06 ed 69 0d  |k..@.  .j..J..i.|
00003290  1a 54 0e e3 20 69 3d 31  20 b8 20 33 35 0d 1a 5e  |.T.. i=1 . 35..^|
000032a0  14 20 20 e8 23 63 68 2c  68 65 78 76 61 72 28 69  |.  .#ch,hexvar(i|
000032b0  29 0d 1a 68 13 20 20 6e  75 6d 3d 68 65 78 76 61  |)..h.  num=hexva|
000032c0  72 28 69 29 0d 1a 72 17  20 20 e3 20 6a 3d 31 20  |r(i)..r.  . j=1 |
000032d0  b8 20 6e 75 6d 2a 32 20  88 20 32 0d 1a 7c 24 20  |. num*2 . 2..|$ |
000032e0  20 20 20 e3 20 6b 3d 31  20 b8 20 36 3a e8 23 63  |   . k=1 . 6:.#c|
000032f0  68 2c 68 65 78 28 69 2c  6a 2c 6b 29 3a ed 6b 0d  |h,hex(i,j,k):.k.|
00003300  1a 86 26 20 20 20 20 e3  20 6b 3d 31 20 b8 20 36  |..&    . k=1 . 6|
00003310  3a e8 23 63 68 2c 68 65  78 28 69 2c 6a 2b 31 2c  |:.#ch,hex(i,j+1,|
00003320  6b 29 3a ed 6b 0d 1a 90  08 20 20 ed 6a 0d 1a 9a  |k):.k....  .j...|
00003330  06 ed 69 0d 1a a4 08 d9  23 63 68 0d 1a ae 27 f4  |..i.....#ch...'.|
00003340  20 2a 2a 2a 20 52 65 61  64 20 50 65 6e 74 6f 6d  | *** Read Pentom|
00003350  69 6e 6f 65 73 27 20 63  6f 6c 6f 75 72 73 20 2a  |inoes' colours *|
00003360  2a 2a 0d 1a b8 0b e3 69  3d 31 b8 31 32 0d 1a c2  |**.....i=1.12...|
00003370  0e 20 20 f3 20 63 6f 6c  28 69 29 0d 1a cc 14 20  |.  . col(i).... |
00003380  20 63 6f 6c 70 28 69 29  3d 63 6f 6c 28 69 29 0d  | colp(i)=col(i).|
00003390  1a d6 06 ed 69 0d 1a e0  1e f4 20 2a 2a 2a 20 52  |....i..... *** R|
000033a0  65 61 64 20 41 6e 69 6d  61 6c 20 44 61 74 61 20  |ead Animal Data |
000033b0  2a 2a 2a 0d 1a ea 0b e3  69 3d 30 b8 31 36 0d 1a  |***.....i=0.16..|
000033c0  f4 17 20 20 f3 20 61 6e  69 6d 61 6c 24 2c 67 72  |..  . animal$,gr|
000033d0  78 2c 67 72 79 0d 1a fe  16 20 20 61 6e 5f 6e 24  |x,gry....  an_n$|
000033e0  28 69 29 3d 61 6e 69 6d  61 6c 24 0d 1b 08 13 20  |(i)=animal$.... |
000033f0  20 61 6e 5f 67 72 78 28  69 29 3d 67 72 78 0d 1b  | an_grx(i)=grx..|
00003400  12 13 20 20 61 6e 5f 67  72 79 28 69 29 3d 67 72  |..  an_gry(i)=gr|
00003410  79 0d 1b 1c 0d 20 20 e3  6a 3d 31 b8 31 32 0d 1b  |y....  .j=1.12..|
00003420  26 17 20 20 20 20 f3 79  31 2c 78 31 2c 70 6f 6c  |&.    .y1,x1,pol|
00003430  79 2c 76 61 72 0d 1b 30  14 20 20 20 20 61 6e 5f  |y,var..0.    an_|
00003440  78 28 69 2c 6a 29 3d 78  31 0d 1b 3a 14 20 20 20  |x(i,j)=x1..:.   |
00003450  20 61 6e 5f 79 28 69 2c  6a 29 3d 79 31 0d 1b 44  | an_y(i,j)=y1..D|
00003460  16 20 20 20 20 61 6e 5f  70 28 69 2c 6a 29 3d 70  |.    an_p(i,j)=p|
00003470  6f 6c 79 0d 1b 4e 15 20  20 20 20 61 6e 5f 76 28  |oly..N.    an_v(|
00003480  69 2c 6a 29 3d 76 61 72  0d 1b 58 08 20 20 ed 6a  |i,j)=var..X.  .j|
00003490  0d 1b 62 06 ed 69 0d 1b  6c 21 f4 20 2a 2a 2a 20  |..b..i..l!. *** |
000034a0  52 65 61 64 20 45 72 72  6f 72 20 4d 65 73 73 61  |Read Error Messa|
000034b0  67 65 73 20 2a 2a 2a 0d  1b 76 0e e3 20 69 3d 31  |ges ***..v.. i=1|
000034c0  20 b8 20 31 30 0d 1b 80  0f 20 20 f3 20 65 72 72  | . 10....  . err|
000034d0  24 28 69 29 0d 1b 8a 06  ed 69 0d 1b 94 2a f4 20  |$(i).....i...*. |
000034e0  2a 2a 2a 20 52 65 61 64  20 4d 65 6e 75 20 43 6f  |*** Read Menu Co|
000034f0  6e 66 69 67 75 72 61 74  69 6f 6e 20 44 61 74 61  |nfiguration Data|
00003500  20 2a 2a 2a 0d 1b 9e 07  69 3d 31 0d 1b a8 05 f5  | ***....i=1.....|
00003510  0d 1b b2 09 20 20 6a 3d  31 0d 1b bc 07 20 20 f5  |....  j=1....  .|
00003520  0d 1b c6 0f 20 20 20 20  e8 23 63 66 2c 6d 24 0d  |....    .#cf,m$.|
00003530  1b d0 17 20 20 20 20 6d  65 6e 73 65 74 24 28 69  |...    menset$(i|
00003540  2c 6a 29 3d 6d 24 0d 1b  da 0c 20 20 20 20 6a 2b  |,j)=m$....    j+|
00003550  3d 31 0d 1b e4 0e 20 20  fd 20 6d 24 3d 22 45 22  |=1....  . m$="E"|
00003560  0d 1b ee 0a 20 20 69 2b  3d 31 0d 1b f8 09 fd 20  |....  i+=1..... |
00003570  69 3d 36 0d 1c 02 08 d9  23 63 66 0d 1c 0c 1c f4  |i=6.....#cf.....|
00003580  20 2a 2a 2a 20 52 65 61  64 20 4d 65 6e 75 20 44  | *** Read Menu D|
00003590  61 74 61 20 2a 2a 2a 0d  1c 16 0e e3 20 6a 3d 31  |ata ***..... j=1|
000035a0  20 b8 20 31 30 0d 1c 20  09 20 20 69 3d 31 0d 1c  | . 10.. .  i=1..|
000035b0  2a 13 20 20 f3 20 6d 31  2c 6d 32 2c 6d 33 2c 6d  |*.  . m1,m2,m3,m|
000035c0  34 0d 1c 34 41 20 20 6d  65 6e 65 78 74 28 6a 2c  |4..4A  menext(j,|
000035d0  31 29 3d 6d 31 3a 6d 65  6e 65 78 74 28 6a 2c 32  |1)=m1:menext(j,2|
000035e0  29 3d 6d 32 3a 6d 65 6e  65 78 74 28 6a 2c 33 29  |)=m2:menext(j,3)|
000035f0  3d 6d 33 3a 6d 65 6e 65  78 74 28 6a 2c 34 29 3d  |=m3:menext(j,4)=|
00003600  6d 34 0d 1c 3e 07 20 20  f5 0d 1c 48 18 20 20 20  |m4..>.  ...H.   |
00003610  20 f3 20 6d 65 6e 24 2c  6d 65 6e 78 2c 6d 65 6e  | . men$,menx,men|
00003620  79 0d 1c 52 17 20 20 20  20 6d 65 6e 75 24 28 6a  |y..R.    menu$(j|
00003630  2c 69 29 3d 6d 65 6e 24  0d 1c 5c 27 20 20 20 20  |,i)=men$..\'    |
00003640  6d 65 6e 75 78 28 6a 2c  69 29 3d 6d 65 6e 78 3a  |menux(j,i)=menx:|
00003650  6d 65 6e 75 79 28 6a 2c  69 29 3d 6d 65 6e 79 0d  |menuy(j,i)=meny.|
00003660  1c 66 0c 20 20 20 20 69  2b 3d 31 0d 1c 70 10 20  |.f.    i+=1..p. |
00003670  20 fd 20 6d 65 6e 24 3d  22 7a 22 0d 1c 7a 06 ed  | . men$="z"..z..|
00003680  6a 0d 1c 84 20 f4 20 2a  2a 2a 20 52 65 61 64 20  |j... . *** Read |
00003690  54 75 74 6f 72 69 61 6c  20 44 61 74 61 20 2a 2a  |Tutorial Data **|
000036a0  2a 0d 1c 8e 07 69 3d 31  0d 1c 98 05 f5 0d 1c a2  |*....i=1........|
000036b0  10 20 20 f3 20 6c 69 6e  65 24 28 69 29 0d 1c ac  |.  . line$(i)...|
000036c0  0a 20 20 69 2b 3d 31 0d  1c b6 16 fd 20 6c 69 6e  |.  i+=1..... lin|
000036d0  65 24 28 69 2d 31 29 3d  22 7a 7a 7a 22 0d 1c c0  |e$(i-1)="zzz"...|
000036e0  2a f4 20 2a 2a 2a 20 52  65 61 64 20 50 65 6e 74  |*. *** Read Pent|
000036f0  6f 6d 69 6e 6f 20 52 6f  74 61 74 69 6f 6e 20 44  |omino Rotation D|
00003700  61 74 61 20 2a 2a 2a 0d  1c ca 0e e3 20 69 3d 31  |ata ***..... i=1|
00003710  20 b8 20 31 32 0d 1c d4  0f 20 20 f3 20 72 6f 74  | . 12....  . rot|
00003720  24 28 69 29 0d 1c de 06  ed 69 0d 1c e8 1b f4 20  |$(i).....i..... |
00003730  2a 2a 2a 20 52 65 61 64  20 50 61 73 73 77 6f 72  |*** Read Passwor|
00003740  64 20 2a 2a 2a 0d 1c f2  05 f5 0d 1c fc 0d 20 20  |d ***.........  |
00003750  e8 23 70 77 2c 70 24 0d  1d 06 1d 20 20 70 61 73  |.#pw,p$....  pas|
00003760  73 24 3d 70 61 73 73 24  2b bd 28 97 28 70 24 29  |s$=pass$+.(.(p$)|
00003770  2b 34 33 29 0d 1d 10 0c  fd 20 70 24 3d 22 5d 22  |+43)..... p$="]"|
00003780  0d 1d 1a 11 70 61 73 73  24 3d c0 70 61 73 73 24  |....pass$=.pass$|
00003790  29 0d 1d 24 08 d9 23 70  77 0d 1d 2e 22 f4 20 2a  |)..$..#pw...". *|
000037a0  2a 2a 20 49 6e 69 74 69  61 6c 69 73 65 20 56 61  |** Initialise Va|
000037b0  72 69 61 62 6c 65 73 20  2a 2a 2a 0d 1d 38 30 70  |riables ***..80p|
000037c0  63 6e 74 3d 31 3a 61 6e  3d 30 3a 62 61 63 6b 3d  |cnt=1:an=0:back=|
000037d0  31 33 38 3a 66 6f 72 65  3d 33 30 3a 73 61 76 65  |138:fore=30:save|
000037e0  66 6c 61 67 3d a3 3a 73  70 3d b9 0d 1d 42 1a f4  |flag=.:sp=...B..|
000037f0  20 2a 2a 2a 20 4c 6f 61  64 20 53 70 72 69 74 65  | *** Load Sprite|
00003800  73 20 2a 2a 2a 0d 1d 4c  1a 73 24 3d 22 3c 50 4f  |s ***..L.s$="<PO|
00003810  4c 59 24 44 49 52 3e 2e  53 70 72 69 74 65 22 0d  |LY$DIR>.Sprite".|
00003820  1d 56 0f 66 69 6c 65 25  3d 8e 28 73 24 29 0d 1d  |.V.file%=.(s$)..|
00003830  60 11 4c 25 3d a2 23 66  69 6c 65 25 2b 36 34 0d  |`.L%=.#file%+64.|
00003840  1d 6a 0b d9 23 66 69 6c  65 25 0d 1d 74 0b de 20  |.j..#file%..t.. |
00003850  53 25 20 4c 25 0d 1d 7e  0b 53 25 21 30 3d 4c 25  |S% L%..~.S%!0=L%|
00003860  0d 1d 88 1d c8 99 20 22  4f 53 5f 53 70 72 69 74  |...... "OS_Sprit|
00003870  65 4f 70 22 2c 32 35 36  2b 39 2c 53 25 0d 1d 92  |eOp",256+9,S%...|
00003880  21 c8 99 20 22 4f 53 5f  53 70 72 69 74 65 4f 70  |!.. "OS_SpriteOp|
00003890  22 2c 32 35 36 2b 31 30  2c 53 25 2c 73 24 0d 1d  |",256+10,S%,s$..|
000038a0  9c 05 e1 0d 1d a6 05 3a  0d 1d b0 05 3a 0d 1d ba  |.......:....:...|
000038b0  13 dd f2 44 65 63 54 6f  42 69 6e 28 64 65 63 29  |...DecToBin(dec)|
000038c0  0d 1d c4 06 ea 69 0d 1d  ce 0b 62 69 6e 24 3d 22  |.....i....bin$="|
000038d0  22 0d 1d d8 0d e3 69 3d  38 b8 31 88 2d 31 0d 1d  |".....i=8.1.-1..|
000038e0  e2 11 20 20 62 69 6e 3d  32 5e 28 69 2d 31 29 0d  |..  bin=2^(i-1).|
000038f0  1d ec 16 20 20 74 65 6d  70 31 3d a8 28 64 65 63  |...  temp1=.(dec|
00003900  2f 62 69 6e 29 0d 1d f6  11 20 20 e7 20 74 65 6d  |/bin)....  . tem|
00003910  70 31 3d 31 20 8c 0d 1e  00 15 20 20 20 20 62 69  |p1=1 .....    bi|
00003920  6e 24 3d 62 69 6e 24 2b  22 31 22 0d 1e 0a 16 20  |n$=bin$+"1".... |
00003930  20 20 20 64 65 63 2d 3d  62 69 6e 2a 74 65 6d 70  |   dec-=bin*temp|
00003940  31 0d 1e 14 07 20 20 cc  0d 1e 1e 15 20 20 20 20  |1....  .....    |
00003950  62 69 6e 24 3d 62 69 6e  24 2b 22 30 22 0d 1e 28  |bin$=bin$+"0"..(|
00003960  07 20 20 cd 0d 1e 32 06  ed 69 0d 1e 3c 05 e1 0d  |.  ...2..i..<...|
00003970  1e 46 05 3a 0d 1e 50 05  3a 0d 1e 5a 29 dd f2 44  |.F.:..P.:..Z)..D|
00003980  72 61 77 50 6f 6c 79 28  70 2c 76 2c 78 70 6f 73  |rawPoly(p,v,xpos|
00003990  2c 79 70 6f 73 2c 63 31  2c 63 32 2c 63 33 2c 63  |,ypos,c1,c2,c3,c|
000039a0  34 29 0d 1e 64 09 ea 20  69 2c 6a 0d 1e 6e 11 e3  |4)..d.. i,j..n..|
000039b0  20 69 3d 31 20 b8 20 79  70 6f 6c 79 0d 1e 78 2f  | i=1 . ypoly..x/|
000039c0  20 20 e7 20 73 71 3d 35  20 8c 20 64 65 63 3d 70  |  . sq=5 . dec=p|
000039d0  65 6e 74 28 70 2c 76 2c  69 29 20 8b 20 64 65 63  |ent(p,v,i) . dec|
000039e0  3d 68 65 78 28 70 2c 76  2c 69 29 0d 1e 82 14 20  |=hex(p,v,i).... |
000039f0  20 f2 44 65 63 54 6f 42  69 6e 28 64 65 63 29 0d  | .DecToBin(dec).|
00003a00  1e 8c 13 20 20 e3 20 6a  3d 31 20 b8 20 78 70 6f  |...  . j=1 . xpo|
00003a10  6c 79 0d 1e 96 15 20 20  20 20 61 24 3d c1 62 69  |ly....    a$=.bi|
00003a20  6e 24 2c 6a 2c 31 29 0d  1e a0 1a 20 20 20 20 e7  |n$,j,1)....    .|
00003a30  61 24 3d 22 31 22 20 80  20 63 33 3c 3e 63 34 20  |a$="1" . c3<>c4 |
00003a40  8c 0d 1e aa 3d 20 20 20  20 20 20 f2 42 75 74 74  |....=      .Butt|
00003a50  6f 6e 28 78 70 6f 73 2b  28 6a 2d 31 29 2a 67 61  |on(xpos+(j-1)*ga|
00003a60  70 2c 79 70 6f 73 2d 28  69 2d 31 29 2a 67 61 70  |p,ypos-(i-1)*gap|
00003a70  2c 63 31 2c 63 32 2c 63  33 2c 67 61 70 29 0d 1e  |,c1,c2,c3,gap)..|
00003a80  b4 09 20 20 20 20 cc 0d  1e be 38 20 20 20 20 20  |..    ....8     |
00003a90  20 f2 42 75 74 74 6f 66  66 28 78 70 6f 73 2b 28  | .Buttoff(xpos+(|
00003aa0  6a 2d 31 29 2a 67 61 70  2c 79 70 6f 73 2d 28 69  |j-1)*gap,ypos-(i|
00003ab0  2d 31 29 2a 67 61 70 2c  63 34 2c 67 61 70 29 0d  |-1)*gap,c4,gap).|
00003ac0  1e c8 09 20 20 20 20 cd  0d 1e d2 08 20 20 ed 6a  |...    .....  .j|
00003ad0  0d 1e dc 06 ed 69 0d 1e  e6 05 e1 0d 1e f0 05 3a  |.....i.........:|
00003ae0  0d 1e fa 05 3a 0d 1f 04  17 dd f2 46 6f 72 63 65  |....:......Force|
00003af0  54 6f 70 4c 65 66 74 28  70 2c 76 29 0d 1f 0e 07  |TopLeft(p,v)....|
00003b00  ea 20 69 0d 1f 18 0f e7  20 73 71 3d 36 20 70 3d  |. i..... sq=6 p=|
00003b10  33 36 0d 1f 22 05 f5 0d  1f 2c 2d 20 20 e7 20 73  |36.."....,-  . s|
00003b20  71 3d 35 20 64 65 63 3d  70 65 6e 74 28 70 2c 76  |q=5 dec=pent(p,v|
00003b30  2c 31 29 20 8b 20 64 65  63 3d 68 65 78 28 70 2c  |,1) . dec=hex(p,|
00003b40  76 2c 31 29 0d 1f 36 0f  20 20 e7 20 64 65 63 3d  |v,1)..6.  . dec=|
00003b50  30 20 8c 0d 1f 40 11 20  20 20 20 e3 69 3d 32 20  |0 ...@.    .i=2 |
00003b60  b8 20 73 71 0d 1f 4a 2a  20 20 20 20 20 20 e7 20  |. sq..J*      . |
00003b70  73 71 3d 35 20 70 65 6e  74 28 70 2c 76 2c 69 2d  |sq=5 pent(p,v,i-|
00003b80  31 29 3d 70 65 6e 74 28  70 2c 76 2c 69 29 0d 1f  |1)=pent(p,v,i)..|
00003b90  54 28 20 20 20 20 20 20  e7 20 73 71 3d 36 20 68  |T(      . sq=6 h|
00003ba0  65 78 28 70 2c 76 2c 69  2d 31 29 3d 68 65 78 28  |ex(p,v,i-1)=hex(|
00003bb0  70 2c 76 2c 69 29 0d 1f  5e 0a 20 20 20 20 ed 69  |p,v,i)..^.    .i|
00003bc0  0d 1f 68 2b 20 20 20 20  e7 20 73 71 3d 35 20 70  |..h+    . sq=5 p|
00003bd0  65 6e 74 28 70 2c 76 2c  35 29 3d 30 20 8b 20 68  |ent(p,v,5)=0 . h|
00003be0  65 78 28 70 2c 76 2c 36  29 3d 30 0d 1f 72 07 20  |ex(p,v,6)=0..r. |
00003bf0  20 cd 0d 1f 7c 0c fd 20  64 65 63 3c 3e 30 0d 1f  | ...|.. dec<>0..|
00003c00  86 05 f5 0d 1f 90 0c 20  20 7a 65 72 6f 3d 30 0d  |.......  zero=0.|
00003c10  1f 9a 0d 20 20 e3 69 3d  31 b8 73 71 0d 1f a4 1e  |...  .i=1.sq....|
00003c20  20 20 20 20 e7 20 73 71  3d 35 20 64 65 63 3d 70  |    . sq=5 dec=p|
00003c30  65 6e 74 28 70 2c 76 2c  69 29 0d 1f ae 1d 20 20  |ent(p,v,i)....  |
00003c40  20 20 e7 20 73 71 3d 36  20 64 65 63 3d 68 65 78  |  . sq=6 dec=hex|
00003c50  28 70 2c 76 2c 69 29 0d  1f b8 16 20 20 20 20 f2  |(p,v,i)....    .|
00003c60  44 65 63 54 6f 42 69 6e  28 64 65 63 29 0d 1f c2  |DecToBin(dec)...|
00003c70  19 20 20 20 20 7a 65 72  6f 2b 3d bb 28 c0 62 69  |.    zero+=.(.bi|
00003c80  6e 24 2c 31 29 29 0d 1f  cc 08 20 20 ed 69 0d 1f  |n$,1))....  .i..|
00003c90  d6 10 20 20 e7 20 7a 65  72 6f 3d 30 20 8c 0d 1f  |..  . zero=0 ...|
00003ca0  e0 0f 20 20 20 20 e3 69  3d 31 b8 73 71 0d 1f ea  |..    .i=1.sq...|
00003cb0  2a 20 20 20 20 20 20 e7  20 73 71 3d 35 20 70 65  |*      . sq=5 pe|
00003cc0  6e 74 28 70 2c 76 2c 69  29 3d 70 65 6e 74 28 70  |nt(p,v,i)=pent(p|
00003cd0  2c 76 2c 69 29 2a 32 0d  1f f4 28 20 20 20 20 20  |,v,i)*2...(     |
00003ce0  20 e7 20 73 71 3d 36 20  68 65 78 28 70 2c 76 2c  | . sq=6 hex(p,v,|
00003cf0  69 29 3d 68 65 78 28 70  2c 76 2c 69 29 2a 32 0d  |i)=hex(p,v,i)*2.|
00003d00  1f fe 0a 20 20 20 20 ed  69 0d 20 08 07 20 20 cd  |...    .i. ..  .|
00003d10  0d 20 12 0d fd 20 7a 65  72 6f 3c 3e 30 0d 20 1c  |. ... zero<>0. .|
00003d20  05 e1 0d 20 26 05 3a 0d  20 30 05 3a 0d 20 3a 13  |... &.:. 0.:. :.|
00003d30  dd f2 50 6f 6c 79 53 69  7a 65 28 70 2c 76 29 0d  |..PolySize(p,v).|
00003d40  20 44 07 ea 20 69 0d 20  4e 1a 79 6f 66 66 3d 30  | D.. i. N.yoff=0|
00003d50  3a 78 6f 66 66 3d 30 3a  6d 61 72 67 69 6e 3d 34  |:xoff=0:margin=4|
00003d60  0d 20 58 13 e7 20 73 71  3d 35 20 6d 61 72 67 69  |. X.. sq=5 margi|
00003d70  6e 3d 38 0d 20 62 07 69  3d 31 0d 20 6c 05 f5 0d  |n=8. b.i=1. l...|
00003d80  20 76 2f 20 20 e7 20 73  71 3d 35 20 8c 20 64 65  | v/  . sq=5 . de|
00003d90  63 3d 70 65 6e 74 28 70  2c 76 2c 69 29 20 8b 20  |c=pent(p,v,i) . |
00003da0  64 65 63 3d 68 65 78 28  70 2c 76 2c 69 29 0d 20  |dec=hex(p,v,i). |
00003db0  80 0a 20 20 69 2b 3d 31  0d 20 8a 14 fd 20 64 65  |..  i+=1. ... de|
00003dc0  63 3d 30 20 84 20 69 3d  73 71 2b 31 0d 20 94 0c  |c=0 . i=sq+1. ..|
00003dd0  79 6f 66 66 3d 69 2d 32  0d 20 9e 14 e7 20 64 65  |yoff=i-2. ... de|
00003de0  63 3c 3e 30 20 79 6f 66  66 3d 73 71 0d 20 a8 10  |c<>0 yoff=sq. ..|
00003df0  e3 20 69 3d 31 20 b8 20  79 6f 66 66 0d 20 b2 2f  |. i=1 . yoff. ./|
00003e00  20 20 e7 20 73 71 3d 35  20 8c 20 64 65 63 3d 70  |  . sq=5 . dec=p|
00003e10  65 6e 74 28 70 2c 76 2c  69 29 20 8b 20 64 65 63  |ent(p,v,i) . dec|
00003e20  3d 68 65 78 28 70 2c 76  2c 69 29 0d 20 bc 0d 20  |=hex(p,v,i). .. |
00003e30  20 74 65 6d 70 78 3d 30  0d 20 c6 23 20 20 c8 95  | tempx=0. .#  ..|
00003e40  20 28 28 64 65 63 20 80  20 6d 61 72 67 69 6e 29  | ((dec . margin)|
00003e50  20 3c 3e 20 6d 61 72 67  69 6e 29 0d 20 d0 12 20  | <> margin). .. |
00003e60  20 20 20 64 65 63 3d 64  65 63 3e 3e 31 0d 20 da  |   dec=dec>>1. .|
00003e70  10 20 20 20 20 74 65 6d  70 78 2b 3d 31 0d 20 e4  |.    tempx+=1. .|
00003e80  07 20 20 ce 0d 20 ee 25  20 20 e7 20 28 73 71 2d  |.  .. .%  . (sq-|
00003e90  74 65 6d 70 78 29 3e 78  6f 66 66 20 78 6f 66 66  |tempx)>xoff xoff|
00003ea0  3d 73 71 2d 74 65 6d 70  78 0d 20 f8 06 ed 69 0d  |=sq-tempx. ...i.|
00003eb0  21 02 19 78 70 6f 6c 79  3d 78 6f 66 66 3a 79 70  |!..xpoly=xoff:yp|
00003ec0  6f 6c 79 3d 79 6f 66 66  0d 21 0c 2b 78 6f 66 66  |oly=yoff.!.+xoff|
00003ed0  3d a8 28 28 73 71 2d 78  6f 66 66 29 2f 32 29 3a  |=.((sq-xoff)/2):|
00003ee0  79 6f 66 66 3d a8 28 28  73 71 2d 79 6f 66 66 29  |yoff=.((sq-yoff)|
00003ef0  2f 32 29 0d 21 16 05 e1  0d 21 20 05 3a 0d 21 2a  |/2).!....! .:.!*|
00003f00  05 3a 0d 21 34 10 dd f2  54 65 73 73 65 6c 6c 61  |.:.!4...Tessella|
00003f10  74 65 0d 21 3e 08 ea 69  2c 6a 0d 21 48 0f 67 61  |te.!>..i,j.!H.ga|
00003f20  70 3d 34 30 3a 73 71 3d  35 0d 21 52 1b f2 54 69  |p=40:sq=5.!R..Ti|
00003f30  74 6c 65 28 22 54 65 73  73 65 6c 6c 61 74 69 6f  |tle("Tessellatio|
00003f40  6e 73 22 29 0d 21 5c 35  64 69 73 70 28 29 3d 33  |ns").!\5disp()=3|
00003f50  30 3a 64 69 73 70 31 28  29 3d 30 3a 64 69 73 70  |0:disp1()=0:disp|
00003f60  32 28 29 3d 30 3a 64 69  73 70 33 28 29 3d 30 3a  |2()=0:disp3()=0:|
00003f70  64 69 73 70 34 28 29 3d  30 0d 21 66 0d e3 69 3d  |disp4()=0.!f..i=|
00003f80  30 20 b8 20 31 34 0d 21  70 0f 20 20 e3 6a 3d 30  |0 . 14.!p.  .j=0|
00003f90  20 b8 20 31 37 0d 21 7a  20 20 20 20 20 e7 20 69  | . 17.!z     . i|
00003fa0  3d 30 20 84 20 69 3d 31  34 20 64 69 73 70 28 69  |=0 . i=14 disp(i|
00003fb0  2c 6a 29 3d 30 0d 21 84  22 20 20 20 20 e7 20 6a  |,j)=0.!."    . j|
00003fc0  3d 30 20 84 20 6a 3d 31  37 20 8c 20 64 69 73 70  |=0 . j=17 . disp|
00003fd0  28 69 2c 6a 29 3d 30 0d  21 8e 08 20 20 ed 6a 0d  |(i,j)=0.!..  .j.|
00003fe0  21 98 06 ed 69 0d 21 a2  0f f2 50 75 7a 7a 6c 65  |!...i.!...Puzzle|
00003ff0  73 28 30 29 0d 21 ac 05  e1 0d 21 b6 05 3a 0d 21  |s(0).!....!..:.!|
00004000  c0 05 3a 0d 21 ca 15 dd  f2 50 65 6e 74 61 6e 69  |..:.!....Pentani|
00004010  6d 61 6c 73 28 61 6e 29  0d 21 d4 0d e7 20 61 6e  |mals(an).!... an|
00004020  3c 3e 30 20 8c 0d 21 de  17 20 20 f2 54 69 74 6c  |<>0 ..!..  .Titl|
00004030  65 28 61 6e 5f 6e 24 28  61 6e 29 29 0d 21 e8 15  |e(an_n$(an)).!..|
00004040  20 20 f2 4c 6f 61 64 41  6e 69 6d 61 6c 28 61 6e  |  .LoadAnimal(an|
00004050  29 0d 21 f2 05 cd 0d 21  fc 1d 78 3d 61 6e 5f 67  |).!....!..x=an_g|
00004060  72 78 28 61 6e 29 3a 79  3d 61 6e 5f 67 72 79 28  |rx(an):y=an_gry(|
00004070  61 6e 29 0d 22 06 0f e3  20 69 3d 30 20 b8 20 79  |an)."... i=0 . y|
00004080  2b 31 0d 22 10 11 20 20  e3 20 6a 3d 30 20 b8 20  |+1."..  . j=0 . |
00004090  78 2b 31 0d 22 1a 15 20  20 20 20 63 6f 6c 3d 64  |x+1."..    col=d|
000040a0  69 73 70 28 69 2c 6a 29  0d 22 24 22 20 20 20 20  |isp(i,j)."$"    |
000040b0  78 70 25 3d 35 30 30 2b  34 30 2a 6a 3a 79 70 25  |xp%=500+40*j:yp%|
000040c0  3d 38 36 30 2d 67 61 70  2a 69 0d 22 2e 39 20 20  |=860-gap*i.".9  |
000040d0  20 20 e7 20 63 6f 6c 3e  30 20 c8 99 20 22 4f 53  |  . col>0 .. "OS|
000040e0  5f 53 70 72 69 74 65 4f  70 22 2c 32 35 36 2b 33  |_SpriteOp",256+3|
000040f0  34 2c 53 25 2c 22 6f 6e  22 2c 78 70 25 2c 79 70  |4,S%,"on",xp%,yp|
00004100  25 2c 30 0d 22 38 3a 20  20 20 20 e7 20 63 6f 6c  |%,0."8:    . col|
00004110  3d 30 20 c8 99 20 22 4f  53 5f 53 70 72 69 74 65  |=0 .. "OS_Sprite|
00004120  4f 70 22 2c 32 35 36 2b  33 34 2c 53 25 2c 22 6f  |Op",256+34,S%,"o|
00004130  66 66 22 2c 78 70 25 2c  79 70 25 2c 30 0d 22 60  |ff",xp%,yp%,0."`|
00004140  08 20 20 ed 6a 0d 22 6a  06 ed 69 0d 22 74 15 78  |.  .j."j..i."t.x|
00004150  3d 34 30 3a 79 3d 38 36  30 3a 67 61 70 3d 33 32  |=40:y=860:gap=32|
00004160  0d 22 7e 0b e3 6a 3d 31  b8 31 32 0d 22 88 12 20  |."~..j=1.12.".. |
00004170  20 70 3d 61 6e 5f 70 28  61 6e 2c 6a 29 0d 22 92  | p=an_p(an,j).".|
00004180  12 20 20 76 3d 61 6e 5f  76 28 61 6e 2c 6a 29 0d  |.  v=an_v(an,j).|
00004190  22 9c 14 20 20 f2 50 6f  6c 79 53 69 7a 65 28 70  |"..  .PolySize(p|
000041a0  2c 76 29 0d 22 a6 1c 20  20 e7 20 6a 3d 37 20 78  |,v)."..  . j=7 x|
000041b0  3d 34 30 2b 67 61 70 2a  36 3a 79 3d 38 36 30 0d  |=40+gap*6:y=860.|
000041c0  22 b0 26 20 20 f2 44 72  61 77 50 6f 6c 79 28 70  |".&  .DrawPoly(p|
000041d0  2c 76 2c 78 2c 79 2c 30  2c 30 2c 63 6f 6c 28 70  |,v,x,y,0,0,col(p|
000041e0  29 2c 31 30 29 0d 22 ba  11 20 20 79 70 6f 73 28  |),10)."..  ypos(|
000041f0  6a 2a 32 29 3d 79 0d 22  c4 19 20 20 79 3d 79 2d  |j*2)=y."..  y=y-|
00004200  28 79 70 6f 6c 79 2a 67  61 70 29 2d 67 61 70 0d  |(ypoly*gap)-gap.|
00004210  22 ce 19 20 20 79 70 6f  73 28 6a 2a 32 2d 31 29  |"..  ypos(j*2-1)|
00004220  3d 79 2b 67 61 70 2a 32  0d 22 d8 06 ed 6a 0d 22  |=y+gap*2."...j."|
00004230  e2 0a 67 61 70 3d 34 30  0d 22 ec 05 e1 0d 22 f6  |..gap=40."....".|
00004240  05 3a 0d 23 00 05 3a 0d  23 0a 10 dd f2 50 6f 6c  |.:.#..:.#....Pol|
00004250  79 43 6f 6c 6f 75 72 0d  23 14 12 70 63 6f 6c 3d  |yColour.#..pcol=|
00004260  b0 6d 73 78 2c 6d 73 79  29 0d 23 1e 0f 63 6f 6c  |.msx,msy).#..col|
00004270  28 70 29 3d 70 63 6f 6c  0d 23 28 0e f2 55 70 64  |(p)=pcol.#(..Upd|
00004280  61 74 65 50 69 63 0d 23  32 05 e1 0d 23 3c 05 3a  |atePic.#2...#<.:|
00004290  0d 23 46 05 3a 0d 23 50  0d dd f2 4f 6e 65 50 6f  |.#F.:.#P...OnePo|
000042a0  6c 79 0d 23 5a 0f ea 20  69 2c 6a 2c 76 2c 78 2c  |ly.#Z.. i,j,v,x,|
000042b0  79 0d 23 64 0f 73 71 3d  35 3a 67 61 70 3d 34 30  |y.#d.sq=5:gap=40|
000042c0  0d 23 6e 0e 78 3d 34 30  3a 79 3d 38 36 30 0d 23  |.#n.x=40:y=860.#|
000042d0  78 15 e6 30 2c 62 61 63  6b 2d 31 32 38 20 c8 9c  |x..0,back-128 ..|
000042e0  20 36 34 0d 23 82 17 c8  93 c8 90 20 34 30 2c 31  | 64.#...... 40,1|
000042f0  30 30 2c 33 34 30 2c 38  30 30 0d 23 8c 12 6e 75  |00,340,800.#..nu|
00004300  6d 3d a9 28 72 6f 74 24  28 70 29 29 0d 23 96 0c  |m=.(rot$(p)).#..|
00004310  e3 6a 3d 31 b8 6e 75 6d  0d 23 a0 18 20 20 76 3d  |.j=1.num.#..  v=|
00004320  bb 28 c1 72 6f 74 24 28  70 29 2c 6a 2c 31 29 29  |.(.rot$(p),j,1))|
00004330  0d 23 aa 14 20 20 f2 50  6f 6c 79 53 69 7a 65 28  |.#..  .PolySize(|
00004340  70 2c 76 29 0d 23 b4 22  20 20 f2 44 72 61 77 50  |p,v).#."  .DrawP|
00004350  6f 6c 79 28 70 2c 76 2c  78 2c 79 2c 30 2c 30 2c  |oly(p,v,x,y,0,0,|
00004360  36 30 2c 31 30 29 0d 23  be 11 20 20 79 70 6f 73  |60,10).#..  ypos|
00004370  28 6a 2a 32 29 3d 79 0d  23 c8 19 20 20 79 3d 79  |(j*2)=y.#..  y=y|
00004380  2d 28 79 70 6f 6c 79 2a  67 61 70 29 2d 67 61 70  |-(ypoly*gap)-gap|
00004390  0d 23 d2 19 20 20 79 70  6f 73 28 6a 2a 32 2d 31  |.#..  ypos(j*2-1|
000043a0  29 3d 79 2b 67 61 70 2a  32 0d 23 dc 20 20 20 e7  |)=y+gap*2.#.   .|
000043b0  20 6e 75 6d 2f 32 3d 6a  20 78 3d 34 30 2b 67 61  | num/2=j x=40+ga|
000043c0  70 2a 36 3a 79 3d 38 36  30 0d 23 e6 06 ed 6a 0d  |p*6:y=860.#...j.|
000043d0  23 f0 05 e1 0d 23 fa 05  3a 0d 24 04 05 3a 0d 24  |#....#..:.$..:.$|
000043e0  0e 14 dd f2 53 65 6c 65  63 74 50 65 6e 74 28 61  |....SelectPent(a|
000043f0  6e 29 0d 24 18 18 c8 97  20 c8 93 20 34 30 2c 31  |n).$.... .. 40,1|
00004400  30 30 2c 33 34 30 2c 38  30 30 0d 24 22 0a c8 97  |00,340,800.$"...|
00004410  20 ee 20 31 0d 24 2c 33  f4 20 52 45 50 45 41 54  | . 1.$,3. REPEAT|
00004420  20 4d 4f 55 53 45 20 6d  73 78 2c 6d 73 79 2c 6d  | MOUSE msx,msy,m|
00004430  73 73 74 61 74 75 73 3a  55 4e 54 49 4c 6d 73 73  |sstatus:UNTILmss|
00004440  74 61 74 75 73 3d 30 0d  24 36 05 f5 0d 24 40 07  |tatus=0.$6...$@.|
00004450  20 20 f5 0d 24 4a 1a 20  20 20 20 c8 97 6d 73 78  |  ..$J.    ..msx|
00004460  2c 6d 73 79 2c 6d 73 73  74 61 74 75 73 0d 24 54  |,msy,msstatus.$T|
00004470  13 20 20 fd 20 6d 73 73  74 61 74 75 73 3c 3e 30  |.  . msstatus<>0|
00004480  0d 24 5e 1d 20 20 67 61  70 3d 33 32 3a 78 6d 69  |.$^.  gap=32:xmi|
00004490  6e 3d 34 30 3a 6a 3d 31  3a 74 66 3d a3 0d 24 68  |n=40:j=1:tf=..$h|
000044a0  07 20 20 f5 0d 24 72 16  20 20 20 20 e7 20 6a 3d  |.  ..$r.    . j=|
000044b0  37 20 78 6d 69 6e 3d 32  33 32 0d 24 7c 14 20 20  |7 xmin=232.$|.  |
000044c0  20 20 70 3d 61 6e 5f 70  28 61 6e 2c 6a 29 0d 24  |  p=an_p(an,j).$|
000044d0  86 14 20 20 20 20 76 3d  61 6e 5f 76 28 61 6e 2c  |..    v=an_v(an,|
000044e0  6a 29 0d 24 90 2d 20 20  20 20 79 6d 69 6e 3d 79  |j).$.-    ymin=y|
000044f0  70 6f 73 28 6a 2a 32 2d  31 29 2d 34 3a 79 6d 61  |pos(j*2-1)-4:yma|
00004500  78 3d 79 70 6f 73 28 6a  2a 32 29 2b 67 61 70 0d  |x=ypos(j*2)+gap.|
00004510  24 9a 16 20 20 20 20 f2  50 6f 6c 79 53 69 7a 65  |$..    .PolySize|
00004520  28 70 2c 76 29 0d 24 a4  1b 20 20 20 20 78 6d 61  |(p,v).$..    xma|
00004530  78 3d 78 6d 69 6e 2b 67  61 70 2a 78 70 6f 6c 79  |x=xmin+gap*xpoly|
00004540  0d 24 ae 5c 20 20 20 20  e7 20 6d 73 78 3e 78 6d  |.$.\    . msx>xm|
00004550  69 6e 20 80 20 6d 73 78  3c 78 6d 61 78 20 80 20  |in . msx<xmax . |
00004560  6d 73 79 3e 79 6d 69 6e  20 80 20 6d 73 79 3c 79  |msy>ymin . msy<y|
00004570  6d 61 78 20 80 20 20 20  20 20 20 20 20 20 20 20  |max .           |
00004580  20 20 20 20 20 20 20 20  20 a7 70 6f 6c 79 24 2c  |         .poly$,|
00004590  bd 28 36 34 2b 70 29 29  3d 30 20 8c 0d 24 b8 4a  |.(64+p))=0 ..$.J|
000045a0  20 20 20 20 20 20 f2 44  72 61 77 50 6f 6c 79 28  |      .DrawPoly(|
000045b0  70 2c 76 2c 78 6d 69 6e  2c 79 6d 61 78 2d 67 61  |p,v,xmin,ymax-ga|
000045c0  70 2c 62 61 63 6b 2d 31  32 38 2c 62 61 63 6b 2d  |p,back-128,back-|
000045d0  31 32 38 2c 62 61 63 6b  2d 31 32 38 2c 62 61 63  |128,back-128,bac|
000045e0  6b 2d 31 32 38 29 0d 24  c2 0e 20 20 20 20 20 20  |k-128).$..      |
000045f0  74 66 3d b9 0d 24 cc 09  20 20 20 20 cd 0d 24 d6  |tf=..$..    ..$.|
00004600  0c 20 20 20 20 6a 2b 3d  31 0d 24 e0 11 20 20 fd  |.    j+=1.$..  .|
00004610  20 6a 3d 31 33 20 84 20  74 66 0d 24 ea 0c 20 20  | j=13 . tf.$..  |
00004620  67 61 70 3d 34 30 0d 24  f4 1a 20 20 e7 20 61 6e  |gap=40.$..  . an|
00004630  3d 30 20 80 20 74 66 20  f2 4f 6e 65 50 6f 6c 79  |=0 . tf .OnePoly|
00004640  0d 24 fe 1b 20 20 e7 20  74 66 20 f2 44 69 73 70  |.$..  . tf .Disp|
00004650  50 65 6e 74 28 70 2c 76  29 3a e1 0d 25 08 07 fd  |Pent(p,v):..%...|
00004660  20 a3 0d 25 12 05 e1 0d  25 1c 05 3a 0d 25 26 05  | ..%....%..:.%&.|
00004670  3a 0d 25 30 13 dd f2 44  69 73 70 50 65 6e 74 28  |:.%0...DispPent(|
00004680  70 2c 76 29 0d 25 3a 0b  64 66 6c 61 67 3d b9 0d  |p,v).%:.dflag=..|
00004690  25 44 19 e7 20 61 6e 3d  30 20 f2 50 6f 6c 79 53  |%D.. an=0 .PolyS|
000046a0  69 7a 65 28 70 2c 76 29  0d 25 4e 12 67 72 78 3d  |ize(p,v).%N.grx=|
000046b0  61 6e 5f 67 72 78 28 61  6e 29 0d 25 58 12 67 72  |an_grx(an).%X.gr|
000046c0  79 3d 61 6e 5f 67 72 79  28 61 6e 29 0d 25 62 16  |y=an_gry(an).%b.|
000046d0  78 3d a8 28 67 72 78 2f  32 2d 78 70 6f 6c 79 2f  |x=.(grx/2-xpoly/|
000046e0  32 29 0d 25 6c 16 79 3d  a8 28 67 72 79 2f 32 2d  |2).%l.y=.(gry/2-|
000046f0  79 70 6f 6c 79 2f 32 29  0d 25 76 0e e3 6a 3d 31  |ypoly/2).%v..j=1|
00004700  b8 79 70 6f 6c 79 0d 25  80 15 20 20 64 65 63 3d  |.ypoly.%..  dec=|
00004710  70 65 6e 74 28 70 2c 76  2c 6a 29 0d 25 8a 14 20  |pent(p,v,j).%.. |
00004720  20 f2 44 65 63 54 6f 42  69 6e 28 64 65 63 29 0d  | .DecToBin(dec).|
00004730  25 94 10 20 20 e3 6b 3d  31 b8 78 70 6f 6c 79 0d  |%..  .k=1.xpoly.|
00004740  25 9e 1a 20 20 20 20 e7  20 c1 62 69 6e 24 2c 6b  |%..    . .bin$,k|
00004750  2c 31 29 3d 22 31 22 20  8c 0d 25 a8 1a 20 20 20  |,1)="1" ..%..   |
00004760  20 20 20 64 69 73 70 31  28 79 2b 6a 2c 78 2b 6b  |   disp1(y+j,x+k|
00004770  29 3d 70 0d 25 b2 09 20  20 20 20 cd 0d 25 bc 08  |)=p.%..    ..%..|
00004780  20 20 ed 6b 0d 25 c6 06  ed 6a 0d 25 d0 11 e3 20  |  .k.%...j.%... |
00004790  69 3d 30 20 b8 20 67 72  78 2b 31 0d 25 da 13 20  |i=0 . grx+1.%.. |
000047a0  20 e3 20 6a 3d 30 20 b8  20 67 72 79 2b 31 0d 25  | . j=0 . gry+1.%|
000047b0  e4 16 20 20 20 20 63 6f  6c 3d 64 69 73 70 31 28  |..    col=disp1(|
000047c0  6a 2c 69 29 0d 25 ee 3c  20 20 20 20 e7 20 63 6f  |j,i).%.<    . co|
000047d0  6c 3e 30 20 f2 42 75 74  74 6f 6e 28 35 30 30 2b  |l>0 .Button(500+|
000047e0  34 30 2a 69 2c 38 36 30  2d 67 61 70 2a 6a 2c 30  |40*i,860-gap*j,0|
000047f0  2c 30 2c 63 6f 6c 28 63  6f 6c 29 2c 67 61 70 29  |,0,col(col),gap)|
00004800  0d 25 f8 08 20 20 ed 6a  0d 26 02 06 ed 69 0d 26  |.%..  .j.&...i.&|
00004810  0c 05 e1 0d 26 16 05 3a  0d 26 20 05 3a 0d 26 2a  |....&..:.& .:.&*|
00004820  0a dd f2 46 6c 69 70 0d  26 34 09 ea 20 69 2c 6a  |...Flip.&4.. i,j|
00004830  0d 26 3e 13 e7 20 61 6e  3d 31 36 20 80 20 70 3d  |.&>.. an=16 . p=|
00004840  31 20 e1 0d 26 48 12 f2  50 6f 6c 79 53 69 7a 65  |1 ..&H..PolySize|
00004850  28 70 2c 76 29 0d 26 52  11 e3 20 69 3d 30 20 b8  |(p,v).&R.. i=0 .|
00004860  20 67 72 78 2b 31 0d 26  5c 13 20 20 e3 20 6a 3d  | grx+1.&\.  . j=|
00004870  30 20 b8 20 67 72 79 2b  31 0d 26 66 18 20 20 20  |0 . gry+1.&f.   |
00004880  20 e7 20 64 69 73 70 31  28 6a 2c 69 29 3d 70 20  | . disp1(j,i)=p |
00004890  8c 0d 26 70 16 20 20 20  20 20 20 64 69 73 70 31  |..&p.      disp1|
000048a0  28 6a 2c 69 29 3d 30 0d  26 7a 09 20 20 20 20 cd  |(j,i)=0.&z.    .|
000048b0  0d 26 84 08 20 20 ed 6a  0d 26 8e 06 ed 69 0d 26  |.&..  .j.&...i.&|
000048c0  98 0e f2 55 70 64 61 74  65 50 69 63 0d 26 a2 16  |...UpdatePic.&..|
000048d0  72 6f 74 3d a7 72 6f 74  24 28 70 29 2c c3 28 76  |rot=.rot$(p),.(v|
000048e0  29 29 0d 26 ac 25 e7 20  72 6f 74 3d a9 28 72 6f  |)).&.%. rot=.(ro|
000048f0  74 24 28 70 29 29 20 76  3d bb 28 c0 72 6f 74 24  |t$(p)) v=.(.rot$|
00004900  28 70 29 2c 31 29 29 0d  26 b6 2b e7 20 72 6f 74  |(p),1)).&.+. rot|
00004910  3c a9 28 72 6f 74 24 28  70 29 29 20 76 3d bb 28  |<.(rot$(p)) v=.(|
00004920  c1 72 6f 74 24 28 70 29  2c 72 6f 74 2b 31 2c 31  |.rot$(p),rot+1,1|
00004930  29 29 0d 26 c0 12 f2 50  6f 6c 79 53 69 7a 65 28  |)).&...PolySize(|
00004940  70 2c 76 29 0d 26 ca 12  f2 44 69 73 70 50 65 6e  |p,v).&...DispPen|
00004950  74 28 70 2c 76 29 0d 26  d4 05 e1 0d 26 de 05 3a  |t(p,v).&....&..:|
00004960  0d 26 e8 05 3a 0d 26 f2  0f dd f2 55 70 64 61 74  |.&..:.&....Updat|
00004970  65 50 69 63 0d 26 fc 09  ea 20 69 2c 6a 0d 27 06  |ePic.&... i,j.'.|
00004980  12 e3 69 3d 79 20 b8 20  79 2b 79 70 6f 6c 79 0d  |..i=y . y+ypoly.|
00004990  27 10 14 20 20 e3 6a 3d  78 20 b8 20 78 2b 78 70  |'..  .j=x . x+xp|
000049a0  6f 6c 79 0d 27 1a 16 20  20 20 20 63 6f 6c 3d 64  |oly.'..    col=d|
000049b0  69 73 70 31 28 69 2c 6a  29 0d 27 24 17 20 20 20  |isp1(i,j).'$.   |
000049c0  20 e7 20 63 6f 6c 3c 3e  30 20 80 20 73 70 20 8c  | . col<>0 . sp .|
000049d0  0d 27 2e 36 20 20 20 20  20 20 f2 42 75 74 74 6f  |.'.6      .Butto|
000049e0  6e 28 35 30 30 2b 34 30  2a 6a 2c 38 36 30 2d 67  |n(500+40*j,860-g|
000049f0  61 70 2a 69 2c 30 2c 30  2c 63 6f 6c 28 63 6f 6c  |ap*i,0,0,col(col|
00004a00  29 2c 67 61 70 29 0d 27  38 09 20 20 20 20 cc 0d  |),gap).'8.    ..|
00004a10  27 42 18 20 20 20 20 20  20 63 6f 6c 3d 64 69 73  |'B.      col=dis|
00004a20  70 32 28 69 2c 6a 29 0d  27 4c 14 20 20 20 20 20  |p2(i,j).'L.     |
00004a30  20 e7 20 63 6f 6c 3c 3e  30 20 8c 0d 27 56 3a 20  | . col<>0 ..'V: |
00004a40  20 20 20 20 20 20 20 f2  42 75 74 74 6f 6e 28 35  |       .Button(5|
00004a50  30 30 2b 34 30 2a 6a 2c  38 36 30 2d 67 61 70 2a  |00+40*j,860-gap*|
00004a60  69 2c 31 2c 32 2c 64 69  73 70 33 28 69 2c 6a 29  |i,1,2,disp3(i,j)|
00004a70  2c 67 61 70 29 0d 27 60  0b 20 20 20 20 20 20 cc  |,gap).'`.      .|
00004a80  0d 27 6a 19 20 20 20 20  20 20 20 20 63 6f 6c 3d  |.'j.        col=|
00004a90  64 69 73 70 28 69 2c 6a  29 0d 27 74 16 20 20 20  |disp(i,j).'t.   |
00004aa0  20 20 20 20 20 e7 20 63  6f 6c 3c 3e 30 20 8c 0d  |     . col<>0 ..|
00004ab0  27 7e 34 20 20 20 20 20  20 20 20 20 20 f2 42 75  |'~4          .Bu|
00004ac0  74 74 6f 6e 28 35 30 30  2b 34 30 2a 6a 2c 38 36  |tton(500+40*j,86|
00004ad0  30 2d 67 61 70 2a 69 2c  31 2c 32 2c 33 30 2c 67  |0-gap*i,1,2,30,g|
00004ae0  61 70 29 0d 27 88 1b 20  20 20 20 20 20 20 20 cc  |ap).'..        .|
00004af0  e7 20 64 69 73 70 32 28  69 2c 6a 29 3d 30 0d 27  |. disp2(i,j)=0.'|
00004b00  92 33 20 20 20 20 20 20  20 20 20 20 f2 42 75 74  |.3          .But|
00004b10  74 6f 6e 28 35 30 30 2b  34 30 2a 6a 2c 38 36 30  |ton(500+40*j,860|
00004b20  2d 67 61 70 2a 69 2c 32  2c 31 2c 34 2c 67 61 70  |-gap*i,2,1,4,gap|
00004b30  29 0d 27 9c 0d 20 20 20  20 20 20 20 20 cd 0d 27  |).'..        ..'|
00004b40  a6 0b 20 20 20 20 20 20  cd 0d 27 b0 09 20 20 20  |..      ..'..   |
00004b50  20 cd 0d 27 ba 08 20 20  ed 6a 0d 27 c4 06 ed 69  | ..'..  .j.'...i|
00004b60  0d 27 ce 05 e1 0d 27 d8  05 3a 0d 27 e2 05 3a 0d  |.'....'..:.'..:.|
00004b70  27 ec 11 dd f2 4d 6f 76  65 28 78 31 2c 79 31 29  |'....Move(x1,y1)|
00004b80  0d 27 f6 09 ea 20 69 2c  6a 0d 28 00 23 78 6f 66  |.'... i,j.(.#xof|
00004b90  66 31 3d 30 3a 78 6f 66  66 32 3d 30 3a 79 6f 66  |f1=0:xoff2=0:yof|
00004ba0  66 31 3d 30 3a 79 6f 66  66 32 3d 30 0d 28 0a 12  |f1=0:yoff2=0.(..|
00004bb0  f2 50 6f 6c 79 53 69 7a  65 28 70 2c 76 29 0d 28  |.PolySize(p,v).(|
00004bc0  14 16 e7 20 79 31 3d 2d  31 20 80 20 79 2d 31 3e  |... y1=-1 . y-1>|
00004bd0  2d 31 20 8c 0d 28 1e 14  20 20 e3 69 3d 78 20 b8  |-1 ..(..  .i=x .|
00004be0  20 78 2b 78 70 6f 6c 79  0d 28 28 16 20 20 20 20  | x+xpoly.((.    |
00004bf0  e3 6a 3d 79 20 b8 20 79  2b 79 70 6f 6c 79 0d 28  |.j=y . y+ypoly.(|
00004c00  32 21 20 20 20 20 20 20  64 69 73 70 31 28 6a 2d  |2!      disp1(j-|
00004c10  31 2c 69 29 3d 64 69 73  70 31 28 6a 2c 69 29 0d  |1,i)=disp1(j,i).|
00004c20  28 3c 0a 20 20 20 20 ed  6a 0d 28 46 08 20 20 ed  |(<.    .j.(F.  .|
00004c30  69 0d 28 50 14 20 20 e3  69 3d 78 20 b8 20 78 2b  |i.(P.  .i=x . x+|
00004c40  78 70 6f 6c 79 0d 28 5a  1a 20 20 20 20 64 69 73  |xpoly.(Z.    dis|
00004c50  70 31 28 79 2b 79 70 6f  6c 79 2c 69 29 3d 30 0d  |p1(y+ypoly,i)=0.|
00004c60  28 64 08 20 20 ed 69 0d  28 6e 0a 20 20 79 2d 3d  |(d.  .i.(n.  y-=|
00004c70  31 0d 28 78 1e 20 20 79  6f 66 66 31 3d 31 3a 78  |1.(x.  yoff1=1:x|
00004c80  6f 66 66 31 3d 31 3a 78  6f 66 66 32 3d 2d 31 0d  |off1=1:xoff2=-1.|
00004c90  28 82 05 cd 0d 28 8c 1a  e7 20 79 31 3d 31 20 80  |(....(... y1=1 .|
00004ca0  20 79 2b 79 70 6f 6c 79  3c 67 72 79 20 8c 0d 28  | y+ypoly<gry ..(|
00004cb0  96 14 20 20 e3 69 3d 78  20 b8 20 78 2b 78 70 6f  |..  .i=x . x+xpo|
00004cc0  6c 79 0d 28 a0 1a 20 20  20 20 e3 6a 3d 79 2b 79  |ly.(..    .j=y+y|
00004cd0  70 6f 6c 79 20 b8 20 79  20 88 2d 31 0d 28 aa 21  |poly . y .-1.(.!|
00004ce0  20 20 20 20 20 20 64 69  73 70 31 28 6a 2b 31 2c  |      disp1(j+1,|
00004cf0  69 29 3d 64 69 73 70 31  28 6a 2c 69 29 0d 28 b4  |i)=disp1(j,i).(.|
00004d00  0a 20 20 20 20 ed 6a 0d  28 be 08 20 20 ed 69 0d  |.    .j.(..  .i.|
00004d10  28 c8 14 20 20 e3 69 3d  78 20 b8 20 78 2b 78 70  |(..  .i=x . x+xp|
00004d20  6f 6c 79 0d 28 d2 14 20  20 20 20 64 69 73 70 31  |oly.(..    disp1|
00004d30  28 79 2c 69 29 3d 30 0d  28 dc 08 20 20 ed 69 0d  |(y,i)=0.(..  .i.|
00004d40  28 e6 0a 20 20 79 2b 3d  31 0d 28 f0 1f 20 20 79  |(..  y+=1.(..  y|
00004d50  6f 66 66 32 3d 2d 31 3a  78 6f 66 66 31 3d 31 3a  |off2=-1:xoff1=1:|
00004d60  78 6f 66 66 32 3d 2d 31  0d 28 fa 05 cd 0d 29 04  |xoff2=-1.(....).|
00004d70  16 e7 20 78 31 3d 2d 31  20 80 20 78 2d 31 3e 2d  |.. x1=-1 . x-1>-|
00004d80  31 20 8c 0d 29 0e 14 20  20 e3 69 3d 78 20 b8 20  |1 ..)..  .i=x . |
00004d90  78 2b 78 70 6f 6c 79 0d  29 18 16 20 20 20 20 e3  |x+xpoly.)..    .|
00004da0  6a 3d 79 20 b8 20 79 2b  79 70 6f 6c 79 0d 29 22  |j=y . y+ypoly.)"|
00004db0  21 20 20 20 20 20 20 64  69 73 70 31 28 6a 2c 69  |!      disp1(j,i|
00004dc0  2d 31 29 3d 64 69 73 70  31 28 6a 2c 69 29 0d 29  |-1)=disp1(j,i).)|
00004dd0  2c 0a 20 20 20 20 ed 6a  0d 29 36 08 20 20 ed 69  |,.    .j.)6.  .i|
00004de0  0d 29 40 14 20 20 e3 69  3d 79 20 b8 20 79 2b 79  |.)@.  .i=y . y+y|
00004df0  70 6f 6c 79 0d 29 4a 1a  20 20 20 20 64 69 73 70  |poly.)J.    disp|
00004e00  31 28 69 2c 78 2b 78 70  6f 6c 79 29 3d 30 0d 29  |1(i,x+xpoly)=0.)|
00004e10  54 08 20 20 ed 69 0d 29  5e 0a 20 20 78 2d 3d 31  |T.  .i.)^.  x-=1|
00004e20  0d 29 68 1e 20 20 78 6f  66 66 31 3d 31 3a 79 6f  |.)h.  xoff1=1:yo|
00004e30  66 66 31 3d 31 3a 79 6f  66 66 32 3d 2d 31 0d 29  |ff1=1:yoff2=-1.)|
00004e40  72 05 cd 0d 29 7c 1a e7  20 78 31 3d 31 20 80 20  |r...)|.. x1=1 . |
00004e50  78 2b 78 70 6f 6c 79 3c  67 72 78 20 8c 0d 29 86  |x+xpoly<grx ..).|
00004e60  18 20 20 e3 69 3d 78 2b  78 70 6f 6c 79 20 b8 20  |.  .i=x+xpoly . |
00004e70  78 20 88 2d 31 0d 29 90  16 20 20 20 20 e3 6a 3d  |x .-1.)..    .j=|
00004e80  79 20 b8 20 79 2b 79 70  6f 6c 79 0d 29 9a 21 20  |y . y+ypoly.).! |
00004e90  20 20 20 20 20 64 69 73  70 31 28 6a 2c 69 2b 31  |     disp1(j,i+1|
00004ea0  29 3d 64 69 73 70 31 28  6a 2c 69 29 0d 29 a4 0a  |)=disp1(j,i).)..|
00004eb0  20 20 20 20 ed 6a 0d 29  ae 08 20 20 ed 69 0d 29  |    .j.)..  .i.)|
00004ec0  b8 14 20 20 e3 69 3d 79  20 b8 20 79 2b 79 70 6f  |..  .i=y . y+ypo|
00004ed0  6c 79 0d 29 c2 14 20 20  20 20 64 69 73 70 31 28  |ly.)..    disp1(|
00004ee0  69 2c 78 29 3d 30 0d 29  cc 08 20 20 ed 69 0d 29  |i,x)=0.)..  .i.)|
00004ef0  d6 0a 20 20 78 2b 3d 31  0d 29 e0 1f 20 20 78 6f  |..  x+=1.)..  xo|
00004f00  66 66 32 3d 2d 31 3a 79  6f 66 66 31 3d 31 3a 79  |ff2=-1:yoff1=1:y|
00004f10  6f 66 66 32 3d 2d 31 0d  29 ea 05 cd 0d 29 f4 21  |off2=-1.)....).!|
00004f20  e7 20 78 6f 66 66 31 2b  78 6f 66 66 32 2b 79 6f  |. xoff1+xoff2+yo|
00004f30  66 66 31 2b 79 6f 66 66  32 3d 30 20 e1 0d 29 fe  |ff1+yoff2=0 ..).|
00004f40  20 e3 69 3d 79 2b 79 6f  66 66 31 20 b8 20 79 2b  | .i=y+yoff1 . y+|
00004f50  79 70 6f 6c 79 2b 31 2b  79 6f 66 66 32 0d 2a 08  |ypoly+1+yoff2.*.|
00004f60  22 20 20 e3 6a 3d 78 2b  78 6f 66 66 31 20 b8 20  |"  .j=x+xoff1 . |
00004f70  78 2b 78 70 6f 6c 79 2b  31 2b 78 6f 66 66 32 0d  |x+xpoly+1+xoff2.|
00004f80  2a 12 16 20 20 20 20 63  6f 6c 3d 64 69 73 70 31  |*..    col=disp1|
00004f90  28 69 2c 6a 29 0d 2a 1c  12 20 20 20 20 e7 20 63  |(i,j).*..    . c|
00004fa0  6f 6c 3c 3e 30 20 8c 0d  2a 26 36 20 20 20 20 20  |ol<>0 ..*&6     |
00004fb0  20 f2 42 75 74 74 6f 6e  28 35 30 30 2b 34 30 2a  | .Button(500+40*|
00004fc0  6a 2c 38 36 30 2d 67 61  70 2a 69 2c 30 2c 30 2c  |j,860-gap*i,0,0,|
00004fd0  63 6f 6c 28 63 6f 6c 29  2c 67 61 70 29 0d 2a 30  |col(col),gap).*0|
00004fe0  09 20 20 20 20 cc 0d 2a  3a 18 20 20 20 20 20 20  |.    ..*:.      |
00004ff0  63 6f 6c 3d 64 69 73 70  32 28 69 2c 6a 29 0d 2a  |col=disp2(i,j).*|
00005000  44 14 20 20 20 20 20 20  e7 20 63 6f 6c 3c 3e 30  |D.      . col<>0|
00005010  20 8c 0d 2a 4e 3a 20 20  20 20 20 20 20 20 f2 42  | ..*N:        .B|
00005020  75 74 74 6f 6e 28 35 30  30 2b 34 30 2a 6a 2c 38  |utton(500+40*j,8|
00005030  36 30 2d 67 61 70 2a 69  2c 31 2c 32 2c 64 69 73  |60-gap*i,1,2,dis|
00005040  70 33 28 69 2c 6a 29 2c  67 61 70 29 0d 2a 58 0b  |p3(i,j),gap).*X.|
00005050  20 20 20 20 20 20 cc 0d  2a 62 19 20 20 20 20 20  |      ..*b.     |
00005060  20 20 20 63 6f 6c 3d 64  69 73 70 28 69 2c 6a 29  |   col=disp(i,j)|
00005070  0d 2a 6c 16 20 20 20 20  20 20 20 20 e7 20 63 6f  |.*l.        . co|
00005080  6c 3c 3e 30 20 8c 0d 2a  76 34 20 20 20 20 20 20  |l<>0 ..*v4      |
00005090  20 20 20 20 f2 42 75 74  74 6f 6e 28 35 30 30 2b  |    .Button(500+|
000050a0  34 30 2a 6a 2c 38 36 30  2d 67 61 70 2a 69 2c 31  |40*j,860-gap*i,1|
000050b0  2c 32 2c 33 30 2c 67 61  70 29 0d 2a 80 1b 20 20  |,2,30,gap).*..  |
000050c0  20 20 20 20 20 20 cc e7  20 64 69 73 70 32 28 69  |      .. disp2(i|
000050d0  2c 6a 29 3d 30 0d 2a 8a  33 20 20 20 20 20 20 20  |,j)=0.*.3       |
000050e0  20 20 20 f2 42 75 74 74  6f 6e 28 35 30 30 2b 34  |   .Button(500+4|
000050f0  30 2a 6a 2c 38 36 30 2d  67 61 70 2a 69 2c 32 2c  |0*j,860-gap*i,2,|
00005100  31 2c 34 2c 67 61 70 29  0d 2a 94 0d 20 20 20 20  |1,4,gap).*..    |
00005110  20 20 20 20 cd 0d 2a 9e  0b 20 20 20 20 20 20 cd  |    ..*..      .|
00005120  0d 2a a8 09 20 20 20 20  cd 0d 2a b2 08 20 20 ed  |.*..    ..*..  .|
00005130  6a 0d 2a bc 06 ed 69 0d  2a c6 05 e1 0d 2a d0 05  |j.*...i.*....*..|
00005140  3a 0d 2a da 05 3a 0d 2a  e4 09 dd f2 46 69 78 0d  |:.*..:.*....Fix.|
00005150  2a ee 12 f2 50 6f 6c 79  53 69 7a 65 28 70 2c 76  |*...PolySize(p,v|
00005160  29 0d 2a f8 12 e3 69 3d  78 20 b8 20 78 2b 78 70  |).*...i=x . x+xp|
00005170  6f 6c 79 0d 2b 02 14 20  20 e3 6a 3d 79 20 b8 20  |oly.+..  .j=y . |
00005180  79 2b 79 70 6f 6c 79 0d  2b 0c 35 20 20 20 20 e7  |y+ypoly.+.5    .|
00005190  20 64 69 73 70 31 28 6a  2c 69 29 3e 30 20 80 20  | disp1(j,i)>0 . |
000051a0  64 69 73 70 28 6a 2c 69  29 3d 30 20 f2 45 72 72  |disp(j,i)=0 .Err|
000051b0  6f 72 28 37 29 3a 63 68  3d 30 3a e1 0d 2b 16 36  |or(7):ch=0:..+.6|
000051c0  20 20 20 20 e7 20 64 69  73 70 31 28 6a 2c 69 29  |    . disp1(j,i)|
000051d0  3e 30 20 80 20 64 69 73  70 32 28 6a 2c 69 29 3e  |>0 . disp2(j,i)>|
000051e0  30 20 f2 45 72 72 6f 72  28 38 29 3a 63 68 3d 30  |0 .Error(8):ch=0|
000051f0  3a e1 0d 2b 20 08 20 20  ed 6a 0d 2b 2a 06 ed 69  |:..+ .  .j.+*..i|
00005200  0d 2b 34 12 e3 69 3d 78  20 b8 20 78 2b 78 70 6f  |.+4..i=x . x+xpo|
00005210  6c 79 0d 2b 3e 14 20 20  e3 6a 3d 79 20 b8 20 79  |ly.+>.  .j=y . y|
00005220  2b 79 70 6f 6c 79 0d 2b  48 18 20 20 20 20 e7 20  |+ypoly.+H.    . |
00005230  64 69 73 70 31 28 6a 2c  69 29 3e 30 20 8c 0d 2b  |disp1(j,i)>0 ..+|
00005240  52 16 20 20 20 20 20 20  64 69 73 70 32 28 6a 2c  |R.      disp2(j,|
00005250  69 29 3d 70 0d 2b 5c 2b  20 20 20 20 20 20 64 69  |i)=p.+\+      di|
00005260  73 70 33 28 6a 2c 69 29  3d 63 6f 6c 28 70 29 3a  |sp3(j,i)=col(p):|
00005270  64 69 73 70 34 28 6a 2c  69 29 3d 70 63 6e 74 0d  |disp4(j,i)=pcnt.|
00005280  2b 66 34 20 20 20 20 20  20 f2 42 75 74 74 6f 6e  |+f4      .Button|
00005290  28 35 30 30 2b 34 30 2a  69 2c 38 36 30 2d 67 61  |(500+40*i,860-ga|
000052a0  70 2a 6a 2c 31 2c 32 2c  63 6f 6c 28 70 29 2c 67  |p*j,1,2,col(p),g|
000052b0  61 70 29 0d 2b 70 09 20  20 20 20 cd 0d 2b 7a 14  |ap).+p.    ..+z.|
000052c0  20 20 20 20 64 69 73 70  31 28 6a 2c 69 29 3d 30  |    disp1(j,i)=0|
000052d0  0d 2b 84 08 20 20 ed 6a  0d 2b 8e 06 ed 69 0d 2b  |.+..  .j.+...i.+|
000052e0  98 13 64 66 6c 61 67 3d  a3 3a 70 63 6e 74 2b 3d  |..dflag=.:pcnt+=|
000052f0  31 0d 2b a2 17 70 6f 6c  79 24 3d 70 6f 6c 79 24  |1.+..poly$=poly$|
00005300  2b bd 28 36 34 2b 70 29  0d 2b ac 05 e1 0d 2b b6  |+.(64+p).+....+.|
00005310  05 3a 0d 2b c0 05 3a 0d  2b ca 0c dd f2 52 65 6d  |.:.+..:.+....Rem|
00005320  6f 76 65 0d 2b d4 1a e7  20 70 6f 6c 79 24 3d 22  |ove.+... poly$="|
00005330  22 20 80 20 ac 20 64 66  6c 61 67 20 e1 0d 2b de  |" . . dflag ..+.|
00005340  08 ea 20 74 66 0d 2b e8  08 74 66 3d b9 0d 2b f2  |.. tf.+..tf=..+.|
00005350  15 e7 20 64 66 6c 61 67  20 80 20 61 6e 3c 3e 30  |.. dflag . an<>0|
00005360  20 8c 0d 2b fc 0d 20 20  64 66 6c 61 67 3d a3 0d  | ..+..  dflag=..|
00005370  2c 06 0f 20 20 64 69 73  70 31 28 29 3d 30 0d 2c  |,..  disp1()=0.,|
00005380  10 10 20 20 f2 55 70 64  61 74 65 50 69 63 0d 2c  |..  .UpdatePic.,|
00005390  1a 0a 20 20 74 66 3d a3  0d 2c 24 0c 20 20 70 72  |..  tf=..,$.  pr|
000053a0  65 6d 3d 70 0d 2c 2e 05  cd 0d 2c 38 0d ea 20 78  |em=p.,....,8.. x|
000053b0  2c 79 2c 70 2c 76 0d 2c  42 09 c8 95 20 74 66 0d  |,y,p,v.,B... tf.|
000053c0  2c 4c 28 20 20 c8 97 20  c8 93 20 35 34 30 2c 38  |,L(  .. .. 540,8|
000053d0  36 30 2d 34 30 2a 67 72  79 2c 34 30 2a 67 72 78  |60-40*gry,40*grx|
000053e0  2c 34 30 2a 67 72 79 0d  2c 56 27 20 20 f5 20 c8  |,40*gry.,V'  . .|
000053f0  97 20 6d 73 78 2c 6d 73  79 2c 6d 73 73 74 61 74  |. msx,msy,msstat|
00005400  75 73 3a fd 6d 73 73 74  61 74 75 73 3d 30 0d 2c  |us:.msstatus=0.,|
00005410  60 07 20 20 f5 0d 2c 6a  1a 20 20 20 20 c8 97 6d  |`.  ..,j.    ..m|
00005420  73 78 2c 6d 73 79 2c 6d  73 73 74 61 74 75 73 0d  |sx,msy,msstatus.|
00005430  2c 74 13 20 20 fd 20 6d  73 73 74 61 74 75 73 3c  |,t.  . msstatus<|
00005440  3e 30 0d 2c 7e 1a 20 20  78 70 3d a8 28 28 6d 73  |>0.,~.  xp=.((ms|
00005450  78 2d 35 34 30 29 2f 34  30 29 2b 31 0d 2c 88 1a  |x-540)/40)+1.,..|
00005460  20 20 79 70 3d a8 28 28  38 36 30 2d 6d 73 79 29  |  yp=.((860-msy)|
00005470  2f 34 30 29 2b 31 0d 2c  92 17 20 20 70 72 65 6d  |/40)+1.,..  prem|
00005480  3d 64 69 73 70 32 28 79  70 2c 78 70 29 0d 2c 9c  |=disp2(yp,xp).,.|
00005490  2c 20 20 e7 20 70 72 65  6d 3d 30 20 80 20 64 69  |,  . prem=0 . di|
000054a0  73 70 31 28 79 70 2c 78  70 29 3c 3e 30 20 f2 45  |sp1(yp,xp)<>0 .E|
000054b0  72 72 6f 72 28 39 29 3a  e1 0d 2c a6 2d 20 20 e7  |rror(9):..,.-  .|
000054c0  20 70 72 65 6d 3c 3e 30  20 80 20 64 69 73 70 31  | prem<>0 . disp1|
000054d0  28 79 70 2c 78 70 29 3c  3e 30 20 f2 45 72 72 6f  |(yp,xp)<>0 .Erro|
000054e0  72 28 39 29 3a e1 0d 2c  b0 1b 20 20 e7 20 70 72  |r(9):..,..  . pr|
000054f0  65 6d 3d 30 20 f2 45 72  72 6f 72 28 31 30 29 3a  |em=0 .Error(10):|
00005500  e1 0d 2c ba 1d 20 20 70  70 6f 73 3d a7 70 6f 6c  |..,..  ppos=.pol|
00005510  79 24 2c bd 28 36 34 2b  70 72 65 6d 29 29 0d 2c  |y$,.(64+prem)).,|
00005520  c4 16 20 20 63 6e 74 3d  64 69 73 70 34 28 79 70  |..  cnt=disp4(yp|
00005530  2c 78 70 29 0d 2c ce 0e  20 20 e3 69 3d 31 b8 67  |,xp).,..  .i=1.g|
00005540  72 78 0d 2c d8 10 20 20  20 20 e3 6a 3d 31 b8 67  |rx.,..    .j=1.g|
00005550  72 79 0d 2c e2 1d 20 20  20 20 20 20 e7 20 64 69  |ry.,..      . di|
00005560  73 70 32 28 6a 2c 69 29  3d 70 72 65 6d 20 8c 0d  |sp2(j,i)=prem ..|
00005570  2c ec 2d 20 20 20 20 20  20 20 20 e7 20 61 6e 3c  |,.-        . an<|
00005580  3e 30 20 84 20 61 6e 3d  30 20 80 20 64 69 73 70  |>0 . an=0 . disp|
00005590  34 28 6a 2c 69 29 3d 63  6e 74 20 8c 0d 2c f6 36  |4(j,i)=cnt ..,.6|
000055a0  20 20 20 20 20 20 20 20  20 20 64 69 73 70 32 28  |          disp2(|
000055b0  6a 2c 69 29 3d 30 3a 64  69 73 70 33 28 6a 2c 69  |j,i)=0:disp3(j,i|
000055c0  29 3d 30 3a 64 69 73 3d  64 69 73 70 31 28 6a 2c  |)=0:dis=disp1(j,|
000055d0  69 29 0d 2d 00 3b 20 20  20 20 20 20 20 20 20 20  |i).-.;          |
000055e0  e7 20 64 69 73 3d 30 20  f2 42 75 74 74 6f 6e 28  |. dis=0 .Button(|
000055f0  35 30 30 2b 34 30 2a 69  2c 38 36 30 2d 34 30 2a  |500+40*i,860-40*|
00005600  6a 2c 31 2c 32 2c 33 30  2c 67 61 70 29 0d 2d 0a  |j,1,2,30,gap).-.|
00005610  42 20 20 20 20 20 20 20  20 20 20 e7 20 64 69 73  |B          . dis|
00005620  3c 3e 30 20 f2 42 75 74  74 6f 6e 28 35 30 30 2b  |<>0 .Button(500+|
00005630  34 30 2a 69 2c 38 36 30  2d 34 30 2a 6a 2c 30 2c  |40*i,860-40*j,0,|
00005640  30 2c 63 6f 6c 28 64 69  73 29 2c 67 61 70 29 0d  |0,col(dis),gap).|
00005650  2d 14 0d 20 20 20 20 20  20 20 20 cd 0d 2d 1e 0b  |-..        ..-..|
00005660  20 20 20 20 20 20 cd 0d  2d 28 0a 20 20 20 20 ed  |      ..-(.    .|
00005670  6a 0d 2d 32 08 20 20 ed  69 0d 2d 3c 30 20 20 70  |j.-2.  .i.-<0  p|
00005680  6f 6c 79 24 3d c0 70 6f  6c 79 24 2c 70 70 6f 73  |oly$=.poly$,ppos|
00005690  2d 31 29 2b c2 70 6f 6c  79 24 2c a9 28 70 6f 6c  |-1)+.poly$,.(pol|
000056a0  79 24 29 2d 70 70 6f 73  29 0d 2d 46 0a 20 20 74  |y$)-ppos).-F.  t|
000056b0  66 3d a3 0d 2d 50 05 ce  0d 2d 5a 0d e7 20 61 6e  |f=..-P...-Z.. an|
000056c0  3c 3e 30 20 8c 0d 2d 64  17 20 20 78 3d 34 30 3a  |<>0 ..-d.  x=40:|
000056d0  79 3d 38 36 30 3a 67 61  70 3d 33 32 0d 2d 6e 0d  |y=860:gap=32.-n.|
000056e0  20 20 e3 6a 3d 31 b8 31  32 0d 2d 78 14 20 20 20  |  .j=1.12.-x.   |
000056f0  20 70 3d 61 6e 5f 70 28  61 6e 2c 6a 29 0d 2d 82  | p=an_p(an,j).-.|
00005700  14 20 20 20 20 76 3d 61  6e 5f 76 28 61 6e 2c 6a  |.    v=an_v(an,j|
00005710  29 0d 2d 8c 16 20 20 20  20 f2 50 6f 6c 79 53 69  |).-..    .PolySi|
00005720  7a 65 28 70 2c 76 29 0d  2d 96 1e 20 20 20 20 e7  |ze(p,v).-..    .|
00005730  20 6a 3d 37 20 78 3d 34  30 2b 67 61 70 2a 36 3a  | j=7 x=40+gap*6:|
00005740  79 3d 38 36 30 0d 2d a0  31 20 20 20 20 e7 20 70  |y=860.-.1    . p|
00005750  3d 70 72 65 6d 20 f2 44  72 61 77 50 6f 6c 79 28  |=prem .DrawPoly(|
00005760  70 2c 76 2c 78 2c 79 2c  30 2c 30 2c 63 6f 6c 28  |p,v,x,y,0,0,col(|
00005770  70 29 2c 31 30 29 0d 2d  aa 1b 20 20 20 20 79 3d  |p),10).-..    y=|
00005780  79 2d 28 79 70 6f 6c 79  2a 67 61 70 29 2d 67 61  |y-(ypoly*gap)-ga|
00005790  70 0d 2d b4 08 20 20 ed  6a 0d 2d be 0c 20 20 67  |p.-..  .j.-..  g|
000057a0  61 70 3d 34 30 0d 2d c8  05 cd 0d 2d d2 05 e1 0d  |ap=40.-....-....|
000057b0  2d dc 05 3a 0d 2d e6 05  3a 0d 2d f0 0a dd f2 48  |-..:.-..:.-....H|
000057c0  65 6c 70 0d 2d fa 09 ea  20 69 2c 6a 0d 2e 04 14  |elp.-... i,j....|
000057d0  e3 69 3d 31 b8 20 61 6e  5f 67 72 78 28 61 6e 29  |.i=1. an_grx(an)|
000057e0  0d 2e 0e 16 20 20 e3 6a  3d 31 b8 20 61 6e 5f 67  |....  .j=1. an_g|
000057f0  72 79 28 61 6e 29 0d 2e  18 45 20 20 20 20 e7 20  |ry(an)...E    . |
00005800  64 69 73 70 32 28 6a 2c  69 29 3e 30 20 80 20 64  |disp2(j,i)>0 . d|
00005810  69 73 70 32 28 6a 2c 69  29 3c 3e 64 69 73 70 28  |isp2(j,i)<>disp(|
00005820  6a 2c 69 29 20 f2 48 65  6c 70 31 28 64 69 73 70  |j,i) .Help1(disp|
00005830  32 28 6a 2c 69 29 2c 6a  2c 69 29 0d 2e 22 08 20  |2(j,i),j,i)..". |
00005840  20 ed 6a 0d 2e 2c 06 ed  69 0d 2e 36 05 e1 0d 2e  | .j..,..i..6....|
00005850  40 05 3a 0d 2e 4a 05 3a  0d 2e 54 17 dd f2 48 65  |@.:..J.:..T...He|
00005860  6c 70 31 28 70 72 65 6d  2c 79 70 2c 78 70 29 0d  |lp1(prem,yp,xp).|
00005870  2e 5e 11 ea 20 69 2c 6a  2c 78 2c 79 2c 70 2c 76  |.^.. i,j,x,y,p,v|
00005880  0d 2e 68 1b 70 70 6f 73  3d a7 70 6f 6c 79 24 2c  |..h.ppos=.poly$,|
00005890  bd 28 36 34 2b 70 72 65  6d 29 29 0d 2e 72 14 63  |.(64+prem))..r.c|
000058a0  6e 74 3d 64 69 73 70 34  28 79 70 2c 78 70 29 0d  |nt=disp4(yp,xp).|
000058b0  2e 7c 0c e3 69 3d 31 b8  67 72 78 0d 2e 86 0e 20  |.|..i=1.grx.... |
000058c0  20 e3 6a 3d 31 b8 67 72  79 0d 2e 90 1b 20 20 20  | .j=1.gry....   |
000058d0  20 e7 20 64 69 73 70 32  28 6a 2c 69 29 3d 70 72  | . disp2(j,i)=pr|
000058e0  65 6d 20 8c 0d 2e 9a 2b  20 20 20 20 20 20 e7 20  |em ....+      . |
000058f0  61 6e 3c 3e 30 20 84 20  61 6e 3d 30 20 80 20 64  |an<>0 . an=0 . d|
00005900  69 73 70 34 28 6a 2c 69  29 3d 63 6e 74 20 8c 0d  |isp4(j,i)=cnt ..|
00005910  2e a4 34 20 20 20 20 20  20 20 20 64 69 73 70 32  |..4        disp2|
00005920  28 6a 2c 69 29 3d 30 3a  64 69 73 70 33 28 6a 2c  |(j,i)=0:disp3(j,|
00005930  69 29 3d 30 3a 64 69 73  3d 64 69 73 70 31 28 6a  |i)=0:dis=disp1(j|
00005940  2c 69 29 0d 2e ae 39 20  20 20 20 20 20 20 20 e7  |,i)...9        .|
00005950  20 64 69 73 3d 30 20 f2  42 75 74 74 6f 6e 28 35  | dis=0 .Button(5|
00005960  30 30 2b 34 30 2a 69 2c  38 36 30 2d 34 30 2a 6a  |00+40*i,860-40*j|
00005970  2c 31 2c 32 2c 33 30 2c  67 61 70 29 0d 2e b8 40  |,1,2,30,gap)...@|
00005980  20 20 20 20 20 20 20 20  e7 20 64 69 73 3c 3e 30  |        . dis<>0|
00005990  20 f2 42 75 74 74 6f 6e  28 35 30 30 2b 34 30 2a  | .Button(500+40*|
000059a0  69 2c 38 36 30 2d 34 30  2a 6a 2c 30 2c 30 2c 63  |i,860-40*j,0,0,c|
000059b0  6f 6c 28 64 69 73 29 2c  67 61 70 29 0d 2e c2 0b  |ol(dis),gap)....|
000059c0  20 20 20 20 20 20 cd 0d  2e cc 09 20 20 20 20 cd  |      .....    .|
000059d0  0d 2e d6 08 20 20 ed 6a  0d 2e e0 06 ed 69 0d 2e  |....  .j.....i..|
000059e0  ea 2e 70 6f 6c 79 24 3d  c0 70 6f 6c 79 24 2c 70  |..poly$=.poly$,p|
000059f0  70 6f 73 2d 31 29 2b c2  70 6f 6c 79 24 2c a9 28  |pos-1)+.poly$,.(|
00005a00  70 6f 6c 79 24 29 2d 70  70 6f 73 29 0d 2e f4 0d  |poly$)-ppos)....|
00005a10  e7 20 61 6e 3c 3e 30 20  8c 0d 2e fe 17 20 20 78  |. an<>0 .....  x|
00005a20  3d 34 30 3a 79 3d 38 36  30 3a 67 61 70 3d 33 32  |=40:y=860:gap=32|
00005a30  0d 2f 08 0d 20 20 e3 6a  3d 31 b8 31 32 0d 2f 12  |./..  .j=1.12./.|
00005a40  14 20 20 20 20 70 3d 61  6e 5f 70 28 61 6e 2c 6a  |.    p=an_p(an,j|
00005a50  29 0d 2f 1c 14 20 20 20  20 76 3d 61 6e 5f 76 28  |)./..    v=an_v(|
00005a60  61 6e 2c 6a 29 0d 2f 26  16 20 20 20 20 f2 50 6f  |an,j)./&.    .Po|
00005a70  6c 79 53 69 7a 65 28 70  2c 76 29 0d 2f 30 1e 20  |lySize(p,v)./0. |
00005a80  20 20 20 e7 20 6a 3d 37  20 78 3d 34 30 2b 67 61  |   . j=7 x=40+ga|
00005a90  70 2a 36 3a 79 3d 38 36  30 0d 2f 3a 31 20 20 20  |p*6:y=860./:1   |
00005aa0  20 e7 20 70 3d 70 72 65  6d 20 f2 44 72 61 77 50  | . p=prem .DrawP|
00005ab0  6f 6c 79 28 70 2c 76 2c  78 2c 79 2c 30 2c 30 2c  |oly(p,v,x,y,0,0,|
00005ac0  63 6f 6c 28 70 29 2c 31  30 29 0d 2f 44 1b 20 20  |col(p),10)./D.  |
00005ad0  20 20 79 3d 79 2d 28 79  70 6f 6c 79 2a 67 61 70  |  y=y-(ypoly*gap|
00005ae0  29 2d 67 61 70 0d 2f 4e  08 20 20 ed 6a 0d 2f 58  |)-gap./N.  .j./X|
00005af0  0c 20 20 67 61 70 3d 34  30 0d 2f 62 05 cd 0d 2f  |.  gap=40./b.../|
00005b00  6c 05 e1 0d 2f 76 05 3a  0d 2f 80 05 3a 0d 2f 8a  |l.../v.:./..:./.|
00005b10  20 dd f2 4d 65 6e 75 43  68 6f 69 63 65 28 6d 65  | ..MenuChoice(me|
00005b20  6e 75 2c 20 f8 20 63 68  6f 69 63 65 29 0d 2f 94  |nu, . choice)./.|
00005b30  26 6d 65 6e 73 65 74 24  28 31 30 2c 37 29 3d 22  |&menset$(10,7)="|
00005b40  22 3a 6d 65 6e 73 65 74  24 28 31 30 2c 31 30 29  |":menset$(10,10)|
00005b50  3d 22 22 0d 2f 9e 28 e7  20 6d 65 6e 73 65 74 24  |=""./.(. menset$|
00005b60  28 31 2c 33 29 3d 22 4e  22 20 6d 65 6e 73 65 74  |(1,3)="N" menset|
00005b70  24 28 31 30 2c 37 29 3d  22 4e 22 0d 2f a8 29 e7  |$(10,7)="N"./.).|
00005b80  20 6d 65 6e 73 65 74 24  28 31 2c 34 29 3d 22 4e  | menset$(1,4)="N|
00005b90  22 20 6d 65 6e 73 65 74  24 28 31 30 2c 31 30 29  |" menset$(10,10)|
00005ba0  3d 22 4e 22 0d 2f b2 29  62 6c 78 3d 6d 65 6e 65  |="N"./.)blx=mene|
00005bb0  78 74 28 6d 65 6e 75 2c  31 29 3a 62 6c 79 3d 6d  |xt(menu,1):bly=m|
00005bc0  65 6e 65 78 74 28 6d 65  6e 75 2c 32 29 0d 2f bc  |enext(menu,2)./.|
00005bd0  2b 78 65 78 74 3d 6d 65  6e 65 78 74 28 6d 65 6e  |+xext=menext(men|
00005be0  75 2c 33 29 3a 79 65 78  74 3d 6d 65 6e 65 78 74  |u,3):yext=menext|
00005bf0  28 6d 65 6e 75 2c 34 29  0d 2f c6 30 e7 20 6d 65  |(menu,4)./.0. me|
00005c00  6e 75 3c 3e 36 20 80 20  6d 65 6e 75 3c 3e 37 20  |nu<>6 . menu<>7 |
00005c10  20 c8 97 20 c8 93 20 62  6c 78 2c 62 6c 79 2c 78  | .. .. blx,bly,x|
00005c20  65 78 74 2c 79 65 78 74  0d 2f d0 0a c8 97 20 ee  |ext,yext./.... .|
00005c30  20 31 0d 2f da 0c 63 68  6f 69 63 65 3d 30 0d 2f  | 1./..choice=0./|
00005c40  e4 05 f5 0d 2f ee 1b 20  20 e7 20 6d 65 6e 75 3c  |..../..  . menu<|
00005c50  3e 36 20 80 20 6d 65 6e  75 3c 3e 37 20 8c 0d 2f  |>6 . menu<>7 ../|
00005c60  f8 29 20 20 20 20 f5 20  c8 97 20 6d 73 78 2c 6d  |.)    . .. msx,m|
00005c70  73 79 2c 6d 73 73 74 61  74 75 73 3a fd 6d 73 73  |sy,msstatus:.mss|
00005c80  74 61 74 75 73 3d 30 0d  30 02 09 20 20 20 20 f5  |tatus=0.0..    .|
00005c90  0d 30 0c 1c 20 20 20 20  20 20 c8 97 6d 73 78 2c  |.0..      ..msx,|
00005ca0  6d 73 79 2c 6d 73 73 74  61 74 75 73 0d 30 16 2d  |msy,msstatus.0.-|
00005cb0  20 20 20 20 20 20 e7 20  a6 28 2d 32 29 20 80 20  |      . .(-2) . |
00005cc0  a6 28 2d 38 32 29 20 80  20 6d 65 6e 75 3d 31 30  |.(-82) . menu=10|
00005cd0  20 f2 53 61 76 65 50 69  63 0d 30 20 5c 20 20 20  | .SavePic.0 \   |
00005ce0  20 20 20 e7 20 a6 28 2d  32 29 20 80 20 a6 28 2d  |   . .(-2) . .(-|
00005cf0  38 35 29 20 80 20 6d 65  6e 75 3d 31 30 20 80 20  |85) . menu=10 . |
00005d00  6d 65 6e 73 65 74 24 28  31 2c 32 29 3c 3e 22 4e  |menset$(1,2)<>"N|
00005d10  22 20 80 20 61 6e 3e 30  20 80 20 61 6e 3c 31 34  |" . an>0 . an<14|
00005d20  20 f2 48 65 6c 70 3a f2  50 6f 6c 79 53 69 7a 65  | .Help:.PolySize|
00005d30  28 70 2c 76 29 0d 30 2a  15 20 20 20 20 fd 20 6d  |(p,v).0*.    . m|
00005d40  73 73 74 61 74 75 73 3c  3e 30 0d 30 34 07 20 20  |sstatus<>0.04.  |
00005d50  cd 0d 30 3e 0d 20 20 69  74 65 6d 3d 31 30 0d 30  |..0>.  item=10.0|
00005d60  48 07 20 20 f5 0d 30 52  1d 20 20 20 20 6d 78 3d  |H.  ..0R.    mx=|
00005d70  6d 65 6e 75 78 28 6d 65  6e 75 2c 69 74 65 6d 29  |menux(menu,item)|
00005d80  2d 34 0d 30 5c 1e 20 20  20 20 6d 79 3d 6d 65 6e  |-4.0\.    my=men|
00005d90  75 79 28 6d 65 6e 75 2c  69 74 65 6d 29 2d 33 32  |uy(menu,item)-32|
00005da0  0d 30 66 25 20 20 20 20  6d 6c 65 6e 3d a9 28 6d  |.0f%    mlen=.(m|
00005db0  65 6e 75 24 28 6d 65 6e  75 2c 69 74 65 6d 29 29  |enu$(menu,item))|
00005dc0  2a 33 32 2b 38 0d 30 70  5a 20 20 20 20 e7 20 6d  |*32+8.0pZ    . m|
00005dd0  73 78 3e 6d 78 20 80 20  6d 73 78 3c 6d 78 2b 6d  |sx>mx . msx<mx+m|
00005de0  6c 65 6e 20 80 20 6d 73  79 3e 6d 79 20 80 20 6d  |len . msy>my . m|
00005df0  73 79 3c 6d 79 2b 34 34  20 80 20 20 20 20 20 20  |sy<my+44 .      |
00005e00  20 20 20 20 20 20 6d 65  6e 73 65 74 24 28 6d 65  |      menset$(me|
00005e10  6e 75 2c 69 74 65 6d 29  3c 3e 22 4e 22 20 8c 0d  |nu,item)<>"N" ..|
00005e20  30 7a 15 20 20 20 20 20  20 63 68 6f 69 63 65 3d  |0z.      choice=|
00005e30  69 74 65 6d 0d 30 84 18  20 20 20 20 20 20 e7 20  |item.0..      . |
00005e40  63 68 6f 69 63 65 3c 3e  31 30 20 8c 0d 30 8e 26  |choice<>10 ..0.&|
00005e50  20 20 20 20 20 20 20 20  e6 20 33 2c 31 33 3a c8  |        . 3,13:.|
00005e60  93 20 c8 90 20 6d 78 2c  6d 79 2c 6d 6c 65 6e 2c  |. .. mx,my,mlen,|
00005e70  34 30 0d 30 98 20 20 20  20 20 20 20 20 20 74 69  |40.0.         ti|
00005e80  6d 65 3d 91 3a f5 20 fd  20 91 2d 74 69 6d 65 3e  |me=.:. . .-time>|
00005e90  32 35 0d 30 a2 26 20 20  20 20 20 20 20 20 e6 20  |25.0.&        . |
00005ea0  33 2c 31 33 3a c8 93 20  c8 90 20 6d 78 2c 6d 79  |3,13:.. .. mx,my|
00005eb0  2c 6d 6c 65 6e 2c 34 30  0d 30 ac 0b 20 20 20 20  |,mlen,40.0..    |
00005ec0  20 20 cd 0d 30 b6 09 20  20 20 20 cd 0d 30 c0 0f  |  ..0..    ..0..|
00005ed0  20 20 20 20 69 74 65 6d  2d 3d 31 0d 30 ca 0e 20  |    item-=1.0.. |
00005ee0  20 fd 20 69 74 65 6d 3d  30 0d 30 d4 19 20 20 e7  | . item=0.0..  .|
00005ef0  20 6d 65 6e 75 3d 36 20  84 20 6d 65 6e 75 3d 37  | menu=6 . menu=7|
00005f00  20 e1 0d 30 de 0f fd 20  63 68 6f 69 63 65 3c 3e  | ..0... choice<>|
00005f10  30 0d 30 e8 05 e1 0d 30  f2 05 3a 0d 30 fc 05 3a  |0.0....0..:.0..:|
00005f20  0d 31 06 0d dd f2 53 61  76 65 50 69 63 0d 31 10  |.1....SavePic.1.|
00005f30  08 73 70 3d b9 0d 31 1a  20 e7 20 64 66 6c 61 67  |.sp=..1. . dflag|
00005f40  20 73 70 3d a3 3a f2 55  70 64 61 74 65 50 69 63  | sp=.:.UpdatePic|
00005f50  3a 73 70 3d b9 0d 31 24  21 e7 20 ac 20 a4 59 65  |:sp=..1$!. . .Ye|
00005f60  73 4e 6f 28 22 53 61 76  65 20 50 69 63 74 75 72  |sNo("Save Pictur|
00005f70  65 3f 22 29 20 8c 0d 31  2e 0d 20 20 2a 46 58 31  |e?") ..1..  *FX1|
00005f80  35 2c 30 0d 31 38 10 20  20 6d 73 73 74 61 74 75  |5,0.18.  msstatu|
00005f90  73 3d 30 0d 31 42 1b 20  20 c8 97 20 c8 93 20 34  |s=0.1B.  .. .. 4|
00005fa0  38 30 2c 31 30 30 2c 37  36 30 2c 31 36 30 0d 31  |80,100,760,160.1|
00005fb0  4c 18 20 20 e7 20 64 66  6c 61 67 20 f2 55 70 64  |L.  . dflag .Upd|
00005fc0  61 74 65 50 69 63 0d 31  56 07 20 20 e1 0d 31 60  |atePic.1V.  ..1`|
00005fd0  05 cd 0d 31 6a 0f e6 20  36 33 20 c8 9c 20 31 39  |...1j.. 63 .. 19|
00005fe0  32 0d 31 74 0c ec 20 32  30 30 2c 34 30 0d 31 7e  |2.1t.. 200,40.1~|
00005ff0  4d 6f 6b 24 3d 22 41 42  43 44 45 46 47 48 49 4a  |Mok$="ABCDEFGHIJ|
00006000  4b 4c 4d 4e 4f 50 51 52  53 54 55 56 57 58 59 5a  |KLMNOPQRSTUVWXYZ|
00006010  61 62 63 64 65 66 67 68  69 6a 6b 6c 6d 6e 6f 70  |abcdefghijklmnop|
00006020  71 72 73 74 75 76 77 78  79 7a 31 32 33 34 35 36  |qrstuvwxyz123456|
00006030  37 38 39 30 5f 23 2f 2d  27 22 0d 31 88 16 f1 22  |7890_#/-'".1..."|
00006040  45 6e 74 65 72 20 46 69  6c 65 6e 61 6d 65 3a 22  |Enter Filename:"|
00006050  0d 31 92 1f f2 49 6e 70  75 74 28 37 31 32 2c 34  |.1...Input(712,4|
00006060  30 2c 31 30 2c 6f 6b 24  2c 66 69 6c 65 24 29 0d  |0,10,ok$,file$).|
00006070  31 9c 14 e6 20 62 61 63  6b 2d 31 32 38 20 c8 9c  |1... back-128 ..|
00006080  20 36 34 0d 31 a6 16 c8  93 c8 90 20 31 38 30 2c  | 64.1...... 180,|
00006090  30 2c 31 30 30 30 2c 35  30 0d 31 b0 11 e7 20 66  |0,1000,50.1... f|
000060a0  69 6c 65 24 3c 3e 22 22  20 8c 0d 31 ba 37 20 20  |ile$<>"" ..1.7  |
000060b0  ef 20 32 34 2c 34 38 30  3b 38 30 30 2d 61 6e 5f  |. 24,480;800-an_|
000060c0  67 72 79 28 61 6e 29 2a  34 30 3b 35 38 30 2b 61  |gry(an)*40;580+a|
000060d0  6e 5f 67 72 78 28 61 6e  29 2a 34 30 3b 39 30 30  |n_grx(an)*40;900|
000060e0  3b 0d 31 c4 15 20 20 2a  44 49 52 20 3c 50 4f 4c  |;.1..  *DIR <POL|
000060f0  59 24 44 49 52 3e 0d 31  ce 0b 20 20 2a 55 50 20  |Y$DIR>.1..  *UP |
00006100  31 0d 31 d8 0f 20 20 24  6e 61 6d 65 25 3d 22 22  |1.1..  $name%=""|
00006110  0d 31 e2 17 20 20 e3 20  69 25 3d 30 20 b8 20 a9  |.1..  . i%=0 . .|
00006120  28 66 69 6c 65 24 29 0d  31 ec 22 20 20 20 20 24  |(file$).1."    $|
00006130  28 6e 61 6d 65 25 2b 69  25 29 3d c1 66 69 6c 65  |(name%+i%)=.file|
00006140  24 2c 69 25 2b 31 2c 31  29 0d 31 f6 09 20 20 ed  |$,i%+1,1).1..  .|
00006150  69 25 0d 32 00 1e 20 20  ff 20 28 22 53 43 52 45  |i%.2..  . ("SCRE|
00006160  45 4e 53 41 56 45 20 22  2b 24 6e 61 6d 65 25 29  |ENSAVE "+$name%)|
00006170  0d 32 0a 0a 20 20 ef 20  32 36 0d 32 14 05 cd 0d  |.2..  . 26.2....|
00006180  32 1e 16 e7 20 64 66 6c  61 67 20 f2 55 70 64 61  |2... dflag .Upda|
00006190  74 65 50 69 63 0d 32 28  19 c8 97 20 c8 93 20 34  |tePic.2(... .. 4|
000061a0  38 30 2c 31 30 30 2c 37  36 30 2c 31 36 30 0d 32  |80,100,760,160.2|
000061b0  32 05 e1 0d 32 3c 05 3a  0d 32 46 05 3a 0d 32 50  |2...2<.:.2F.:.2P|
000061c0  18 dd f2 4c 6f 61 64 41  6e 69 6d 61 6c 28 61 6e  |...LoadAnimal(an|
000061d0  69 6d 61 6c 29 0d 32 5a  20 64 69 73 70 28 29 3d  |imal).2Z disp()=|
000061e0  30 3a 64 69 73 70 31 28  29 3d 30 3a 64 69 73 70  |0:disp1()=0:disp|
000061f0  32 28 29 3d 30 0d 32 64  0b e3 69 3d 31 b8 31 32  |2()=0.2d..i=1.12|
00006200  0d 32 6e 16 20 20 70 3d  61 6e 5f 70 28 61 6e 69  |.2n.  p=an_p(ani|
00006210  6d 61 6c 2c 69 29 0d 32  78 16 20 20 76 3d 61 6e  |mal,i).2x.  v=an|
00006220  5f 76 28 61 6e 69 6d 61  6c 2c 69 29 0d 32 82 1a  |_v(animal,i).2..|
00006230  20 20 78 5f 6d 69 6e 3d  61 6e 5f 78 28 61 6e 69  |  x_min=an_x(ani|
00006240  6d 61 6c 2c 69 29 0d 32  8c 1a 20 20 79 5f 6d 69  |mal,i).2..  y_mi|
00006250  6e 3d 61 6e 5f 79 28 61  6e 69 6d 61 6c 2c 69 29  |n=an_y(animal,i)|
00006260  0d 32 96 0c 20 20 e3 6a  3d 31 b8 35 0d 32 a0 17  |.2..  .j=1.5.2..|
00006270  20 20 20 20 64 65 63 3d  70 65 6e 74 28 70 2c 76  |    dec=pent(p,v|
00006280  2c 6a 29 0d 32 aa 16 20  20 20 20 f2 44 65 63 54  |,j).2..    .DecT|
00006290  6f 42 69 6e 28 64 65 63  29 0d 32 b4 0e 20 20 20  |oBin(dec).2..   |
000062a0  20 e3 6b 3d 31 b8 35 0d  32 be 1c 20 20 20 20 20  | .k=1.5.2..     |
000062b0  20 e7 20 c1 62 69 6e 24  2c 6b 2c 31 29 3d 22 31  | . .bin$,k,1)="1|
000062c0  22 20 8c 0d 32 c8 27 20  20 20 20 20 20 20 20 64  |" ..2.'        d|
000062d0  69 73 70 28 79 5f 6d 69  6e 2b 6a 2d 31 2c 78 5f  |isp(y_min+j-1,x_|
000062e0  6d 69 6e 2b 6b 2d 31 29  3d 70 0d 32 d2 0b 20 20  |min+k-1)=p.2..  |
000062f0  20 20 20 20 cd 0d 32 dc  0a 20 20 20 20 ed 6b 0d  |    ..2..    .k.|
00006300  32 e6 08 20 20 ed 6a 0d  32 f0 06 ed 69 0d 32 fa  |2..  .j.2...i.2.|
00006310  05 e1 0d 33 04 05 3a 0d  33 0e 05 3a 0d 33 18 24  |...3..:.3..:.3.$|
00006320  dd f2 42 75 74 74 6f 6e  28 78 2c 79 2c 63 6f 6c  |..Button(x,y,col|
00006330  31 2c 63 6f 6c 32 2c 63  6f 6c 33 2c 67 61 70 29  |1,col2,col3,gap)|
00006340  0d 33 22 0a 72 65 63 74  3d 38 0d 33 2c 13 e7 20  |.3".rect=8.3,.. |
00006350  67 61 70 3d 32 30 20 72  65 63 74 3d 34 0d 33 36  |gap=20 rect=4.36|
00006360  0b e6 30 2c 63 6f 6c 31  0d 33 40 18 e7 20 63 6f  |..0,col1.3@.. co|
00006370  6c 31 3d 31 20 e6 20 30  2c 31 30 20 c8 9c 20 30  |l1=1 . 0,10 .. 0|
00006380  0d 33 4a 1a e7 20 63 6f  6c 31 3d 32 20 e6 20 30  |.3J.. col1=2 . 0|
00006390  2c 31 30 20 c8 9c 20 31  39 32 0d 33 54 25 ec 20  |,10 .. 192.3T%. |
000063a0  78 2c 79 3a ec 20 78 2c  79 2b 67 61 70 2d 38 3a  |x,y:. x,y+gap-8:|
000063b0  f0 20 26 35 35 2c 78 2b  67 61 70 2d 38 2c 79 0d  |. &55,x+gap-8,y.|
000063c0  33 5e 0b e6 30 2c 63 6f  6c 32 0d 33 68 18 e7 20  |3^..0,col2.3h.. |
000063d0  63 6f 6c 32 3d 31 20 e6  20 30 2c 31 30 20 c8 9c  |col2=1 . 0,10 ..|
000063e0  20 30 0d 33 72 1a e7 20  63 6f 6c 32 3d 32 20 e6  | 0.3r.. col2=2 .|
000063f0  20 30 2c 31 30 20 c8 9c  20 31 39 32 0d 33 7c 19  | 0,10 .. 192.3|.|
00006400  f0 20 26 35 35 2c 78 2b  67 61 70 2d 38 2c 79 2b  |. &55,x+gap-8,y+|
00006410  67 61 70 2d 38 0d 33 86  12 e6 30 2c 63 6f 6c 33  |gap-8.3...0,col3|
00006420  20 c8 9c 20 31 32 38 0d  33 90 2b c8 93 20 c8 90  | .. 128.3.+.. ..|
00006430  20 78 2b 72 65 63 74 2c  79 2b 72 65 63 74 2c 28  | x+rect,y+rect,(|
00006440  67 61 70 2d 38 29 2f 32  2c 28 67 61 70 2d 38 29  |gap-8)/2,(gap-8)|
00006450  2f 32 0d 33 9a 05 e1 0d  33 a4 05 3a 0d 33 ae 05  |/2.3....3..:.3..|
00006460  3a 0d 33 b8 1d dd f2 42  75 74 74 6f 66 66 28 78  |:.3....Buttoff(x|
00006470  25 2c 79 25 2c 63 6f 6c  2c 67 61 70 25 29 0d 33  |%,y%,col,gap%).3|
00006480  c2 0f e6 20 63 6f 6c 20  c8 9c 20 36 34 0d 33 cc  |... col .. 64.3.|
00006490  1d c8 93 20 c8 90 20 78  25 2c 79 25 2c 67 61 70  |... .. x%,y%,gap|
000064a0  25 2d 38 2c 67 61 70 25  2d 38 0d 33 d6 10 e6 20  |%-8,gap%-8.3... |
000064b0  63 6f 6c 20 c8 9c 20 31  39 32 0d 33 e0 05 e1 0d  |col .. 192.3....|
000064c0  33 ea 05 3a 0d 33 f4 05  3a 0d 33 fe 10 dd f2 45  |3..:.3..:.3....E|
000064d0  72 72 6f 72 28 65 72 72  29 0d 34 08 09 ea 20 69  |rror(err).4... i|
000064e0  2c 6a 0d 34 12 07 ef 20  34 0d 34 1c 17 fb 20 66  |,j.4... 4.4... f|
000064f0  6f 72 65 3a fb 20 62 61  63 6b 20 c8 9c 20 36 34  |ore:. back .. 64|
00006500  0d 34 26 14 65 72 72 6f  72 24 3d 65 72 72 24 28  |.4&.error$=err$(|
00006510  65 72 72 29 0d 34 30 07  69 3d 31 0d 34 3a 0f f1  |err).40.i=1.4:..|
00006520  20 bd 28 37 29 3b bd 28  37 29 0d 34 44 21 e7 20  | .(7);.(7).4D!. |
00006530  a9 28 65 72 72 6f 72 24  29 20 83 20 32 3d 31 20  |.(error$) . 2=1 |
00006540  65 72 72 6f 72 24 2b 3d  22 20 22 0d 34 4e 15 e3  |error$+=" ".4N..|
00006550  20 69 3d 31 b8 a9 28 65  72 72 6f 72 24 29 2f 32  | i=1..(error$)/2|
00006560  0d 34 58 11 20 20 f1 8a  32 30 2d 69 2c 33 30 29  |.4X.  ..20-i,30)|
00006570  3b 0d 34 62 19 20 20 74  69 6d 65 3d 91 3a f5 20  |;.4b.  time=.:. |
00006580  fd 20 91 2d 74 69 6d 65  3e 35 0d 34 6c 1e 20 20  |. .-time>5.4l.  |
00006590  f1 20 c0 65 72 72 6f 72  24 2c 69 29 3b c2 65 72  |. .error$,i);.er|
000065a0  72 6f 72 24 2c 69 29 3b  0d 34 76 06 ed 69 0d 34  |ror$,i);.4v..i.4|
000065b0  80 14 e7 20 65 72 72 3d  33 2b 65 72 72 6f 66 66  |... err=3+erroff|
000065c0  20 8c 0d 34 8a 0c 20 20  74 69 6d 65 3d 91 0d 34  | ..4..  time=..4|
000065d0  94 07 20 20 f5 0d 34 9e  15 20 20 20 20 f2 46 6c  |..  ..4..    .Fl|
000065e0  61 73 68 28 31 2c 32 2c  38 29 0d 34 a8 16 20 20  |ash(1,2,8).4..  |
000065f0  20 20 f2 46 6c 61 73 68  28 31 2c 32 2c 33 34 29  |  .Flash(1,2,34)|
00006600  0d 34 b2 12 20 20 fd 20  91 2d 74 69 6d 65 3e 32  |.4..  . .-time>2|
00006610  35 30 0d 34 bc 13 20 20  f2 46 6c 61 73 68 28 31  |50.4..  .Flash(1|
00006620  2c 32 2c 38 29 0d 34 c6  05 cd 0d 34 d0 19 74 69  |,2,8).4....4..ti|
00006630  6d 65 3d 91 3a f5 20 fd  20 91 2d 74 69 6d 65 3e  |me=.:. . .-time>|
00006640  32 30 30 0d 34 da 18 e3  20 69 3d a9 28 65 72 72  |200.4... i=.(err|
00006650  6f 72 24 29 2f 32 b8 31  88 2d 31 0d 34 e4 15 20  |or$)/2.1.-1.4.. |
00006660  20 f1 8a 31 39 2d 69 2c  33 30 29 3b 22 20 22 3b  | ..19-i,30);" ";|
00006670  0d 34 ee 22 20 20 f1 c0  65 72 72 6f 72 24 2c 69  |.4."  ..error$,i|
00006680  29 3b c2 65 72 72 6f 72  24 2c 69 29 3b 22 20 20  |);.error$,i);"  |
00006690  22 3b 0d 34 f8 19 20 20  74 69 6d 65 3d 91 3a f5  |";.4..  time=.:.|
000066a0  20 fd 20 91 2d 74 69 6d  65 3e 35 0d 35 02 06 ed  | . .-time>5.5...|
000066b0  69 0d 35 0c 13 f1 8a 31  38 2c 33 30 29 22 20 20  |i.5....18,30)"  |
000066c0  20 20 22 3b 0d 35 16 07  ef 20 35 0d 35 20 05 e1  |  ";.5... 5.5 ..|
000066d0  0d 35 2a 05 3a 0d 35 34  05 3a 0d 35 3e 15 dd f2  |.5*.:.54.:.5>...|
000066e0  46 6c 61 73 68 28 63 31  2c 63 32 2c 63 33 29 0d  |Flash(c1,c2,c3).|
000066f0  35 48 0d ec 20 31 30 30  2c 31 30 30 0d 35 52 1d  |5H.. 100,100.5R.|
00006700  78 61 64 6a 75 73 74 3d  30 3a 79 61 64 6a 75 73  |xadjust=0:yadjus|
00006710  74 3d 30 3a 6d 6f 64 3d  34 0d 35 5c 28 e7 20 73  |t=0:mod=4.5\(. s|
00006720  71 3d 36 20 78 61 64 6a  75 73 74 3d 2d 36 30 3a  |q=6 xadjust=-60:|
00006730  79 61 64 6a 75 73 74 3d  32 30 30 3a 6d 6f 64 3d  |yadjust=200:mod=|
00006740  37 0d 35 66 21 76 3d bb  28 c1 76 61 72 24 2c a7  |7.5f!v=.(.var$,.|
00006750  70 6f 6c 79 24 2c bd 28  36 34 2b 70 29 29 2c 31  |poly$,.(64+p)),1|
00006760  29 29 0d 35 70 16 70 70  3d a7 70 6f 6c 79 24 2c  |)).5p.pp=.poly$,|
00006770  bd 28 36 34 2b 70 29 29  0d 35 7a 2f 78 70 6f 73  |.(64+p)).5z/xpos|
00006780  3d 31 30 30 2b 28 28 70  70 2d 31 29 20 83 20 6d  |=100+((pp-1) . m|
00006790  6f 64 29 2a 28 73 71 2a  67 61 70 2b 32 30 29 2b  |od)*(sq*gap+20)+|
000067a0  78 61 64 6a 75 73 74 0d  35 84 43 79 70 6f 73 3d  |xadjust.5.Cypos=|
000067b0  28 28 73 71 2a 67 61 70  2b 32 30 29 2a 28 73 71  |((sq*gap+20)*(sq|
000067c0  2d 31 29 2d 32 30 29 2d  28 28 70 70 2d 31 29 20  |-1)-20)-((pp-1) |
000067d0  81 20 6d 6f 64 29 2a 28  73 71 2a 67 61 70 2b 32  |. mod)*(sq*gap+2|
000067e0  30 29 2b 79 61 64 6a 75  73 74 0d 35 8e 12 f2 50  |0)+yadjust.5...P|
000067f0  6f 6c 79 53 69 7a 65 28  70 2c 76 29 0d 35 98 3a  |olySize(p,v).5.:|
00006800  f2 44 72 61 77 50 6f 6c  79 28 70 2c 76 2c 78 70  |.DrawPoly(p,v,xp|
00006810  6f 73 2b 67 61 70 2a 78  6f 66 66 2c 79 70 6f 73  |os+gap*xoff,ypos|
00006820  2d 67 61 70 2a 79 6f 66  66 2c 63 31 2c 63 32 2c  |-gap*yoff,c1,c2,|
00006830  63 33 2c 36 30 29 0d 35  a2 05 e1 0d 35 ac 05 3a  |c3,60).5....5..:|
00006840  0d 35 b6 05 3a 0d 35 c0  0f dd f2 45 72 72 6f 72  |.5..:.5....Error|
00006850  54 72 61 70 0d 35 ca 07  ef 20 34 0d 35 d4 13 f1  |Trap.5... 4.5...|
00006860  22 44 69 61 67 6e 6f 73  74 69 63 73 3a 22 0d 35  |"Diagnostics:".5|
00006870  de 17 f1 22 45 72 72 6f  72 20 6e 75 6d 62 65 72  |..."Error number|
00006880  20 20 22 3b 9f 0d 35 e8  05 f6 0d 35 f2 12 f1 22  |  ";..5....5..."|
00006890  20 61 74 20 6c 69 6e 65  20 22 3b 9e 0d 35 fc 05  | at line ";..5..|
000068a0  fa 0d 36 06 05 e1 0d 36  10 05 3a 0d 36 1a 05 3a  |..6....6..:.6..:|
000068b0  0d 36 24 25 f4 20 2a 2a  2a 20 43 6f 6c 6f 75 72  |.6$%. *** Colour|
000068c0  73 20 66 6f 72 20 50 65  6e 74 6f 6d 69 6e 6f 65  |s for Pentominoe|
000068d0  73 20 2a 2a 2a 0d 36 2e  05 3a 0d 36 38 28 dc 20  |s ***.6..:.68(. |
000068e0  33 2c 31 31 2c 36 33 2c  34 38 2c 31 39 2c 36 30  |3,11,63,48,19,60|
000068f0  2c 31 35 2c 32 34 2c 31  37 2c 32 38 2c 35 35 2c  |,15,24,17,28,55,|
00006900  35 30 0d 36 42 05 3a 0d  36 4c 05 3a 0d 36 56 38  |50.6B.:.6L.:.6V8|
00006910  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 20 44 61  |. *********** Da|
00006920  74 61 20 66 6f 72 20 50  65 6e 74 6f 6d 69 6e 6f  |ta for Pentomino|
00006930  20 50 75 7a 7a 6c 65 73  20 2a 2a 2a 2a 2a 2a 2a  | Puzzles *******|
00006940  2a 2a 2a 2a 0d 36 60 05  3a 0d 36 6a 1f f4 20 2a  |****.6`.:.6j.. *|
00006950  2a 2a 20 54 65 73 73 65  6c 6c 61 74 69 6f 6e 20  |** Tessellation |
00006960  44 61 74 61 20 2a 2a 2a  0d 36 74 05 3a 0d 36 7e  |Data ***.6t.:.6~|
00006970  1b dc 20 22 54 65 73 73  65 6c 6c 61 74 69 6f 6e  |.. "Tessellation|
00006980  73 22 2c 31 36 2c 31 33  0d 36 88 35 dc 20 30 2c  |s",16,13.6.5. 0,|
00006990  30 2c 31 2c 33 2c 30 2c  30 2c 32 2c 35 2c 30 2c  |0,1,3,0,0,2,5,0,|
000069a0  30 2c 33 2c 31 2c 30 2c  30 2c 34 2c 31 2c 30 2c  |0,3,1,0,0,4,1,0,|
000069b0  30 2c 35 2c 31 2c 30 2c  30 2c 36 2c 31 0d 36 92  |0,5,1,0,0,6,1.6.|
000069c0  38 dc 20 30 2c 30 2c 37  2c 31 2c 30 2c 30 2c 38  |8. 0,0,7,1,0,0,8|
000069d0  2c 31 2c 30 2c 30 2c 39  2c 31 2c 30 2c 30 2c 31  |,1,0,0,9,1,0,0,1|
000069e0  30 2c 31 2c 30 2c 30 2c  31 31 2c 31 2c 30 2c 30  |0,1,0,0,11,1,0,0|
000069f0  2c 31 32 2c 31 0d 36 9c  05 3a 0d 36 a6 19 f4 20  |,12,1.6..:.6... |
00006a00  2a 2a 2a 20 50 65 6e 74  61 6e 69 6d 61 6c 73 20  |*** Pentanimals |
00006a10  2a 2a 2a 0d 36 b0 05 3a  0d 36 ba 11 dc 20 22 44  |***.6..:.6... "D|
00006a20  6f 67 22 2c 31 30 2c 31  32 0d 36 c4 36 dc 20 31  |og",10,12.6.6. 1|
00006a30  2c 31 30 2c 31 2c 31 2c  32 2c 32 2c 36 2c 31 2c  |,10,1,1,2,2,6,1,|
00006a40  34 2c 31 2c 37 2c 31 2c  34 2c 34 2c 35 2c 34 2c  |4,1,7,1,4,4,5,4,|
00006a50  36 2c 33 2c 32 2c 32 2c  36 2c 34 2c 38 2c 31 0d  |6,3,2,2,6,4,8,1.|
00006a60  36 ce 39 dc 20 36 2c 36  2c 31 32 2c 32 2c 36 2c  |6.9. 6,6,12,2,6,|
00006a70  38 2c 31 30 2c 32 2c 37  2c 38 2c 34 2c 33 2c 38  |8,10,2,7,8,4,3,8|
00006a80  2c 35 2c 39 2c 34 2c 39  2c 33 2c 33 2c 33 2c 31  |,5,9,4,9,3,3,3,1|
00006a90  30 2c 39 2c 31 31 2c 34  0d 36 d8 14 dc 20 22 50  |0,9,11,4.6... "P|
00006aa0  65 6e 67 75 69 6e 22 2c  39 2c 31 32 0d 36 e2 36  |enguin",9,12.6.6|
00006ab0  dc 20 31 2c 34 2c 31 31  2c 31 2c 31 2c 36 2c 35  |. 1,4,11,1,1,6,5|
00006ac0  2c 33 2c 34 2c 33 2c 36  2c 31 2c 34 2c 35 2c 34  |,3,4,3,6,1,4,5,4|
00006ad0  2c 34 2c 35 2c 35 2c 33  2c 33 2c 35 2c 38 2c 39  |,4,5,5,3,3,5,8,9|
00006ae0  2c 37 0d 36 ec 38 dc 20  36 2c 31 2c 31 32 2c 32  |,7.6.8. 6,1,12,2|
00006af0  2c 36 2c 33 2c 38 2c 33  2c 37 2c 37 2c 31 2c 31  |,6,3,8,3,7,7,1,1|
00006b00  2c 38 2c 33 2c 31 30 2c  37 2c 39 2c 35 2c 32 2c  |,8,3,10,7,9,5,2,|
00006b10  33 2c 31 30 2c 33 2c 37  2c 37 0d 36 f6 15 dc 20  |3,10,3,7,7.6... |
00006b20  22 45 6c 65 70 68 61 6e  74 22 2c 31 31 2c 39 0d  |"Elephant",11,9.|
00006b30  37 00 37 dc 20 31 2c 31  2c 31 31 2c 31 2c 35 2c  |7.7. 1,1,11,1,5,|
00006b40  34 2c 31 2c 31 2c 33 2c  34 2c 32 2c 38 2c 33 2c  |4,1,1,3,4,2,8,3,|
00006b50  37 2c 37 2c 38 2c 33 2c  39 2c 31 32 2c 31 2c 34  |7,7,8,3,9,12,1,4|
00006b60  2c 31 2c 34 2c 32 0d 37  0a 37 dc 20 34 2c 34 2c  |,1,4,2.7.7. 4,4,|
00006b70  31 30 2c 34 2c 31 2c 32  2c 36 2c 31 2c 35 2c 37  |10,4,1,2,6,1,5,7|
00006b80  2c 38 2c 33 2c 36 2c 35  2c 39 2c 38 2c 36 2c 38  |,8,3,6,5,9,8,6,8|
00006b90  2c 35 2c 36 2c 36 2c 31  30 2c 33 2c 33 0d 37 14  |,5,6,6,10,3,3.7.|
00006ba0  10 dc 20 22 50 69 67 22  2c 31 32 2c 37 0d 37 1e  |.. "Pig",12,7.7.|
00006bb0  37 dc 20 31 2c 32 2c 39  2c 31 2c 31 2c 36 2c 31  |7. 1,2,9,1,1,6,1|
00006bc0  2c 33 2c 31 2c 31 31 2c  33 2c 33 2c 32 2c 34 2c  |,3,1,11,3,3,2,4,|
00006bd0  31 31 2c 31 2c 32 2c 35  2c 36 2c 31 2c 32 2c 37  |11,1,2,5,6,1,2,7|
00006be0  2c 32 2c 35 0d 37 28 38  dc 20 32 2c 39 2c 31 30  |,2,5.7(8. 2,9,10|
00006bf0  2c 38 2c 33 2c 31 2c 31  32 2c 34 2c 34 2c 36 2c  |,8,3,1,12,4,4,6,|
00006c00  38 2c 31 2c 34 2c 38 2c  37 2c 38 2c 35 2c 34 2c  |8,1,4,8,7,8,5,4,|
00006c10  34 2c 32 2c 35 2c 31 30  2c 35 2c 32 0d 37 32 16  |4,2,5,10,5,2.72.|
00006c20  dc 20 22 43 6f 63 6b 65  72 65 6c 22 2c 31 33 2c  |. "Cockerel",13,|
00006c30  31 33 0d 37 3c 3a dc 20  31 2c 33 2c 31 32 2c 31  |13.7<:. 1,3,12,1|
00006c40  2c 32 2c 31 2c 36 2c 31  2c 33 2c 31 30 2c 31 30  |,2,1,6,1,3,10,10|
00006c50  2c 35 2c 33 2c 31 32 2c  31 31 2c 34 2c 34 2c 33  |,5,3,12,11,4,4,3|
00006c60  2c 31 2c 31 2c 35 2c 34  2c 35 2c 35 0d 37 46 36  |,1,1,5,4,5,5.7F6|
00006c70  dc 20 35 2c 37 2c 34 2c  32 2c 36 2c 37 2c 38 2c  |. 5,7,4,2,6,7,8,|
00006c80  31 2c 36 2c 39 2c 39 2c  38 2c 37 2c 34 2c 37 2c  |1,6,9,9,8,7,4,7,|
00006c90  31 2c 39 2c 35 2c 32 2c  35 2c 31 30 2c 36 2c 33  |1,9,5,2,5,10,6,3|
00006ca0  2c 33 0d 37 50 16 dc 20  22 4b 61 6e 67 65 72 6f  |,3.7P.. "Kangero|
00006cb0  6f 22 2c 31 35 2c 31 33  0d 37 5a 37 dc 20 31 2c  |o",15,13.7Z7. 1,|
00006cc0  32 2c 35 2c 35 2c 33 2c  33 2c 39 2c 36 2c 35 2c  |2,5,5,3,3,9,6,5,|
00006cd0  31 2c 38 2c 33 2c 37 2c  33 2c 31 31 2c 35 2c 38  |1,8,3,7,3,11,5,8|
00006ce0  2c 33 2c 31 30 2c 35 2c  39 2c 35 2c 36 2c 31 0d  |,3,10,5,9,5,6,1.|
00006cf0  37 64 3c dc 20 31 30 2c  34 2c 32 2c 32 2c 31 30  |7d<. 10,4,2,2,10|
00006d00  2c 39 2c 33 2c 31 2c 31  31 2c 31 2c 34 2c 33 2c  |,9,3,1,11,1,4,3,|
00006d10  31 31 2c 37 2c 37 2c 37  2c 31 33 2c 31 31 2c 31  |11,7,7,7,13,11,1|
00006d20  2c 33 2c 38 2c 36 2c 31  32 2c 34 0d 37 6e 13 dc  |,3,8,6,12,4.7n..|
00006d30  20 22 43 61 6d 65 6c 22  2c 31 33 2c 31 32 0d 37  | "Camel",13,12.7|
00006d40  78 38 dc 20 31 2c 31 2c  32 2c 37 2c 33 2c 33 2c  |x8. 1,1,2,7,3,3,|
00006d50  31 31 2c 31 2c 34 2c 34  2c 31 32 2c 34 2c 34 2c  |11,1,4,4,12,4,4,|
00006d60  39 2c 36 2c 31 2c 36 2c  34 2c 31 30 2c 34 2c 36  |9,6,1,6,4,10,4,6|
00006d70  2c 37 2c 39 2c 33 0d 37  82 38 dc 20 36 2c 31 31  |,7,9,3.7.8. 6,11|
00006d80  2c 37 2c 34 2c 37 2c 37  2c 34 2c 31 2c 37 2c 38  |,7,4,7,7,4,1,7,8|
00006d90  2c 38 2c 34 2c 37 2c 31  31 2c 35 2c 33 2c 38 2c  |,8,4,7,11,5,3,8,|
00006da0  36 2c 31 2c 31 2c 39 2c  31 32 2c 33 2c 34 0d 37  |6,1,1,9,12,3,4.7|
00006db0  8c 11 dc 20 22 44 6f 76  65 22 2c 31 36 2c 39 0d  |... "Dove",16,9.|
00006dc0  37 96 38 dc 20 31 2c 32  2c 34 2c 34 2c 32 2c 31  |7.8. 1,2,4,4,2,1|
00006dd0  2c 31 32 2c 34 2c 33 2c  35 2c 31 2c 33 2c 33 2c  |,12,4,3,5,1,3,3,|
00006de0  31 30 2c 32 2c 35 2c 33  2c 31 33 2c 39 2c 31 2c  |10,2,5,3,13,9,1,|
00006df0  34 2c 33 2c 36 2c 31 0d  37 a0 38 dc 20 34 2c 35  |4,3,6,1.7.8. 4,5|
00006e00  2c 31 31 2c 34 2c 34 2c  37 2c 33 2c 35 2c 34 2c  |,11,4,4,7,3,5,4,|
00006e10  31 30 2c 38 2c 33 2c 35  2c 37 2c 37 2c 33 2c 37  |10,8,3,5,7,7,3,7|
00006e20  2c 35 2c 35 2c 32 2c 37  2c 37 2c 31 30 2c 32 0d  |,5,5,2,7,7,10,2.|
00006e30  37 aa 05 3a 0d 37 b4 2f  f4 20 2a 2a 2a 20 50 75  |7..:.7./. *** Pu|
00006e40  7a 7a 6c 65 20 53 68 61  70 65 20 44 61 74 61 20  |zzle Shape Data |
00006e50  66 6f 72 20 50 65 6e 74  6f 6d 69 6e 6f 65 73 20  |for Pentominoes |
00006e60  2a 2a 2a 0d 37 be 05 3a  0d 37 c8 14 dc 20 22 50  |***.7..:.7... "P|
00006e70  79 72 61 6d 69 64 22 2c  31 35 2c 38 0d 37 d2 37  |yramid",15,8.7.7|
00006e80  dc 20 31 2c 38 2c 39 2c  36 2c 32 2c 36 2c 36 2c  |. 1,8,9,6,2,6,6,|
00006e90  31 2c 33 2c 39 2c 31 30  2c 33 2c 34 2c 34 2c 37  |1,3,9,10,3,4,4,7|
00006ea0  2c 33 2c 35 2c 37 2c 33  2c 31 2c 35 2c 31 30 2c  |,3,5,7,3,1,5,10,|
00006eb0  38 2c 31 0d 37 dc 39 dc  20 36 2c 32 2c 32 2c 36  |8,1.7.9. 6,2,2,6|
00006ec0  2c 36 2c 34 2c 34 2c 34  2c 36 2c 39 2c 31 31 2c  |,6,4,4,4,6,9,11,|
00006ed0  31 2c 36 2c 31 31 2c 35  2c 31 2c 36 2c 31 33 2c  |1,6,11,5,1,6,13,|
00006ee0  31 32 2c 31 2c 38 2c 31  2c 31 2c 33 0d 37 e6 15  |12,1,8,1,1,3.7..|
00006ef0  dc 20 22 44 69 61 6d 6f  6e 64 22 2c 31 31 2c 31  |. "Diamond",11,1|
00006f00  30 0d 37 f0 37 dc 20 31  2c 35 2c 31 30 2c 35 2c  |0.7.7. 1,5,10,5,|
00006f10  33 2c 33 2c 32 2c 36 2c  33 2c 36 2c 35 2c 32 2c  |3,3,2,6,3,6,5,2,|
00006f20  34 2c 38 2c 37 2c 31 2c  35 2c 31 2c 36 2c 31 2c  |4,8,7,1,5,1,6,1,|
00006f30  35 2c 33 2c 31 31 2c 33  0d 37 fa 36 dc 20 35 2c  |5,3,11,3.7.6. 5,|
00006f40  35 2c 33 2c 34 2c 36 2c  33 2c 34 2c 33 2c 36 2c  |5,3,4,6,3,4,3,6,|
00006f50  37 2c 31 2c 33 2c 37 2c  36 2c 38 2c 31 2c 37 2c  |7,1,3,7,6,8,1,7,|
00006f60  38 2c 31 32 2c 32 2c 39  2c 34 2c 39 2c 32 0d 38  |8,12,2,9,4,9,2.8|
00006f70  04 13 dc 20 22 43 72 6f  73 73 22 2c 31 31 2c 31  |... "Cross",11,1|
00006f80  31 0d 38 0e 36 dc 20 31  2c 35 2c 37 2c 35 2c 31  |1.8.6. 1,5,7,5,1|
00006f90  2c 37 2c 33 2c 31 2c 33  2c 34 2c 31 30 2c 38 2c  |,7,3,1,3,4,10,8,|
00006fa0  35 2c 31 2c 35 2c 33 2c  35 2c 32 2c 39 2c 33 2c  |5,1,5,3,5,2,9,3,|
00006fb0  35 2c 36 2c 32 2c 35 0d  38 18 38 dc 20 35 2c 38  |5,6,2,5.8.8. 5,8|
00006fc0  2c 38 2c 33 2c 35 2c 39  2c 34 2c 33 2c 37 2c 32  |,8,3,5,9,4,3,7,2|
00006fd0  2c 31 2c 33 2c 37 2c 36  2c 36 2c 31 2c 38 2c 34  |,1,3,7,6,6,1,8,4|
00006fe0  2c 31 32 2c 34 2c 31 30  2c 35 2c 31 31 2c 36 0d  |,12,4,10,5,11,6.|
00006ff0  38 22 14 dc 20 22 27 43  69 72 63 6c 65 27 22 2c  |8".. "'Circle'",|
00007000  39 2c 38 0d 38 2c 37 dc  20 31 2c 31 2c 31 32 2c  |9,8.8,7. 1,1,12,|
00007010  33 2c 31 2c 34 2c 37 2c  36 2c 31 2c 35 2c 39 2c  |3,1,4,7,6,1,5,9,|
00007020  33 2c 32 2c 34 2c 34 2c  33 2c 33 2c 31 2c 38 2c  |3,2,4,4,3,3,1,8,|
00007030  33 2c 33 2c 36 2c 31 30  2c 33 0d 38 36 36 dc 20  |3,3,6,10,3.866. |
00007040  33 2c 38 2c 31 31 2c 33  2c 35 2c 31 2c 36 2c 31  |3,8,11,3,5,1,6,1|
00007050  2c 35 2c 33 2c 35 2c 32  2c 36 2c 35 2c 31 2c 33  |,5,3,5,2,6,5,1,3|
00007060  2c 37 2c 33 2c 33 2c 36  2c 37 2c 35 2c 32 2c 38  |,7,3,3,6,7,5,2,8|
00007070  0d 38 40 15 dc 20 22 42  65 65 2d 48 69 76 65 22  |.8@.. "Bee-Hive"|
00007080  2c 39 2c 31 30 0d 38 4a  36 dc 20 31 2c 31 2c 33  |,9,10.8J6. 1,1,3|
00007090  2c 32 2c 31 2c 32 2c 37  2c 33 2c 32 2c 34 2c 36  |,2,1,2,7,3,2,4,6|
000070a0  2c 31 2c 33 2c 31 2c 35  2c 31 2c 33 2c 33 2c 39  |,1,3,1,5,1,3,3,9|
000070b0  2c 36 2c 34 2c 36 2c 31  31 2c 31 0d 38 54 37 dc  |,6,4,6,11,1.8T7.|
000070c0  20 35 2c 35 2c 31 2c 31  2c 35 2c 37 2c 31 30 2c  | 5,5,1,1,5,7,10,|
000070d0  34 2c 36 2c 32 2c 31 32  2c 34 2c 37 2c 36 2c 38  |4,6,2,12,4,7,6,8|
000070e0  2c 32 2c 37 2c 38 2c 32  2c 34 2c 38 2c 36 2c 34  |,2,7,8,2,4,8,6,4|
000070f0  2c 31 0d 38 5e 05 3a 0d  38 68 1c f4 20 2a 2a 2a  |,1.8^.:.8h.. ***|
00007100  20 52 65 63 74 61 6e 67  6c 65 20 44 61 74 61 20  | Rectangle Data |
00007110  2a 2a 2a 0d 38 72 05 3a  0d 38 7c 11 dc 20 22 36  |***.8r.:.8|.. "6|
00007120  78 31 30 22 2c 31 30 2c  36 0d 38 86 35 dc 20 31  |x10",10,6.8.5. 1|
00007130  2c 31 2c 32 2c 32 2c 31  2c 32 2c 39 2c 33 2c 31  |,1,2,2,1,2,9,3,1|
00007140  2c 35 2c 31 2c 33 2c 31  2c 38 2c 35 2c 35 2c 32  |,5,1,3,1,8,5,5,2|
00007150  2c 32 2c 36 2c 31 2c 32  2c 36 2c 38 2c 32 0d 38  |,2,6,1,2,6,8,2.8|
00007160  90 38 dc 20 33 2c 34 2c  31 32 2c 32 2c 33 2c 38  |.8. 3,4,12,2,3,8|
00007170  2c 31 31 2c 33 2c 34 2c  31 2c 31 30 2c 35 2c 34  |,11,3,4,1,10,5,4|
00007180  2c 36 2c 37 2c 36 2c 34  2c 38 2c 34 2c 33 2c 35  |,6,7,6,4,8,4,3,5|
00007190  2c 32 2c 33 2c 38 0d 38  9a 11 dc 20 22 35 78 31  |,2,3,8.8... "5x1|
000071a0  32 22 2c 31 32 2c 35 0d  38 a4 36 dc 20 31 2c 31  |2",12,5.8.6. 1,1|
000071b0  2c 39 2c 36 2c 31 2c 32  2c 35 2c 32 2c 31 2c 34  |,9,6,1,2,5,2,1,4|
000071c0  2c 31 30 2c 31 2c 31 2c  36 2c 38 2c 34 2c 31 2c  |,10,1,1,6,8,4,1,|
000071d0  37 2c 31 2c 33 2c 31 2c  39 2c 33 2c 38 0d 38 ae  |7,1,3,1,9,3,8.8.|
000071e0  38 dc 20 33 2c 31 2c 34  2c 31 2c 33 2c 33 2c 36  |8. 3,1,4,1,3,3,6|
000071f0  2c 31 2c 33 2c 35 2c 31  32 2c 33 2c 33 2c 39 2c  |,1,3,5,12,3,3,9,|
00007200  32 2c 38 2c 34 2c 37 2c  37 2c 33 2c 34 2c 31 30  |2,8,4,7,7,3,4,10|
00007210  2c 31 31 2c 36 0d 38 b8  11 dc 20 22 34 78 31 35  |,11,6.8... "4x15|
00007220  22 2c 31 35 2c 34 0d 38  c2 38 dc 20 31 2c 31 2c  |",15,4.8.8. 1,1,|
00007230  31 2c 33 2c 31 2c 35 2c  36 2c 31 2c 31 2c 37 2c  |1,3,1,5,6,1,1,7,|
00007240  38 2c 32 2c 31 2c 39 2c  31 30 2c 36 2c 31 2c 31  |8,2,1,9,10,6,1,1|
00007250  30 2c 39 2c 33 2c 31 2c  31 33 2c 34 2c 34 0d 38  |0,9,3,1,13,4,4.8|
00007260  cc 39 dc 20 32 2c 31 2c  31 31 2c 35 2c 32 2c 34  |.9. 2,1,11,5,2,4|
00007270  2c 31 32 2c 31 2c 32 2c  31 33 2c 35 2c 31 2c 33  |,12,1,2,13,5,1,3|
00007280  2c 31 2c 32 2c 36 2c 33  2c 37 2c 33 2c 36 2c 33  |,1,2,6,3,7,3,6,3|
00007290  2c 31 31 2c 37 2c 32 0d  38 d6 05 3a 0d 38 e0 05  |,11,7,2.8..:.8..|
000072a0  3a 0d 38 ea 1c f4 20 2a  2a 2a 20 45 72 72 6f 72  |:.8... *** Error|
000072b0  20 4d 65 73 73 61 67 65  73 20 2a 2a 2a 0d 38 f4  | Messages ***.8.|
000072c0  05 3a 0d 38 fe 27 dc 20  22 41 20 70 65 6e 74 6f  |.:.8.'. "A pento|
000072d0  6d 69 6e 6f 20 6d 75 73  74 20 68 61 76 65 20 35  |mino must have 5|
000072e0  20 73 71 75 61 72 65 73  22 0d 39 08 20 dc 20 22  | squares".9. . "|
000072f0  53 71 75 61 72 65 73 20  6d 75 73 74 20 62 65 20  |Squares must be |
00007300  74 6f 75 63 68 69 6e 67  22 0d 39 12 25 dc 20 22  |touching".9.%. "|
00007310  54 68 69 73 20 70 65 6e  74 6f 6d 69 6e 6f 20 61  |This pentomino a|
00007320  6c 72 65 61 64 79 20 65  78 69 73 74 73 22 0d 39  |lready exists".9|
00007330  1c 26 dc 20 22 41 20 68  65 78 6f 6d 69 6e 6f 20  |.&. "A hexomino |
00007340  6d 75 73 74 20 68 61 76  65 20 36 20 73 71 75 61  |must have 6 squa|
00007350  72 65 73 22 0d 39 26 20  dc 20 22 53 71 75 61 72  |res".9& . "Squar|
00007360  65 73 20 6d 75 73 74 20  62 65 20 74 6f 75 63 68  |es must be touch|
00007370  69 6e 67 22 0d 39 30 24  dc 20 22 54 68 69 73 20  |ing".90$. "This |
00007380  68 65 78 6f 6d 69 6e 6f  20 61 6c 72 65 61 64 79  |hexomino already|
00007390  20 65 78 69 73 74 73 22  0d 39 3a 2b dc 20 22 54  | exists".9:+. "T|
000073a0  68 65 20 70 65 6e 74 6f  6d 69 6e 6f 20 6d 75 73  |he pentomino mus|
000073b0  74 20 6c 69 65 20 6f 6e  20 74 68 65 20 73 68 61  |t lie on the sha|
000073c0  70 65 22 0d 39 44 24 dc  20 22 50 65 6e 74 6f 6d  |pe".9D$. "Pentom|
000073d0  69 6e 6f 65 73 20 6d 75  73 74 20 6e 6f 74 20 6f  |inoes must not o|
000073e0  76 65 72 6c 61 70 22 0d  39 4e 29 dc 20 22 54 68  |verlap".9N). "Th|
000073f0  69 73 20 70 65 6e 74 6f  6d 69 6e 6f 20 68 61 73  |is pentomino has|
00007400  20 6e 6f 74 20 62 65 65  6e 20 46 49 58 65 64 22  | not been FIXed"|
00007410  0d 39 58 29 dc 20 22 43  6c 69 63 6b 20 6f 6e 20  |.9X). "Click on |
00007420  61 20 70 65 6e 74 6f 6d  69 6e 6f 20 74 6f 20 72  |a pentomino to r|
00007430  65 6d 6f 76 65 20 69 74  22 0d 39 62 05 3a 0d 39  |emove it".9b.:.9|
00007440  6c 05 3a 0d 39 76 17 f4  20 2a 2a 2a 20 4d 65 6e  |l.:.9v.. *** Men|
00007450  75 20 44 61 74 61 20 2a  2a 2a 0d 39 80 05 3a 0d  |u Data ***.9..:.|
00007460  39 8a 15 dc 20 34 38 30  2c 31 30 30 2c 37 36 30  |9... 480,100,760|
00007470  2c 31 36 30 0d 39 94 49  dc 20 22 41 63 63 65 73  |,160.9.I. "Acces|
00007480  73 20 43 6f 64 65 22 2c  34 36 34 2c 38 34 30 2c  |s Code",464,840,|
00007490  22 48 65 6c 70 22 2c 35  37 36 2c 37 35 30 2c 22  |"Help",576,750,"|
000074a0  46 6c 69 70 22 2c 35 37  36 2c 36 36 30 2c 22 20  |Flip",576,660," |
000074b0  20 20 20 20 22 2c 35 36  30 2c 35 37 30 0d 39 9e  |    ",560,570.9.|
000074c0  0d dc 20 22 7a 22 2c 31  2c 31 0d 39 a8 05 3a 0d  |.. "z",1,1.9..:.|
000074d0  39 b2 14 dc 20 33 33 30  2c 36 30 2c 36 32 30 2c  |9... 330,60,620,|
000074e0  38 30 30 0d 39 bc 35 dc  20 22 54 75 74 6f 72 69  |800.9.5. "Tutori|
000074f0  61 6c 22 2c 35 31 32 2c  38 34 30 2c 22 50 65 6e  |al",512,840,"Pen|
00007500  74 6f 6d 69 6e 6f 20 44  65 73 69 67 6e 65 72 22  |tomino Designer"|
00007510  2c 33 35 32 2c 37 35 30  0d 39 c6 36 dc 20 22 48  |,352,750.9.6. "H|
00007520  65 78 6f 6d 69 6e 6f 20  44 65 73 69 67 6e 65 72  |exomino Designer|
00007530  22 2c 33 36 38 2c 36 36  30 2c 22 52 65 63 74 61  |",368,660,"Recta|
00007540  6e 67 6c 65 73 22 2c 34  38 30 2c 35 37 30 0d 39  |ngles",480,570.9|
00007550  d0 31 dc 20 22 50 65 6e  74 41 6e 69 6d 61 6c 73  |.1. "PentAnimals|
00007560  22 2c 34 36 34 2c 34 38  30 2c 22 50 65 6e 74 6f  |",464,480,"Pento|
00007570  53 68 61 70 65 73 22 2c  34 36 34 2c 33 39 30 0d  |Shapes",464,390.|
00007580  39 da 37 dc 20 22 54 65  73 73 65 6c 6c 61 74 69  |9.7. "Tessellati|
00007590  6f 6e 73 22 2c 34 33 32  2c 33 30 30 2c 22 54 65  |ons",432,300,"Te|
000075a0  61 63 68 65 72 20 43 6f  6e 74 72 6f 6c 22 2c 34  |acher Control",4|
000075b0  30 30 2c 32 31 30 0d 39  e4 1c dc 20 22 51 55 49  |00,210.9... "QUI|
000075c0  54 22 2c 35 37 36 2c 31  32 30 2c 22 7a 22 2c 31  |T",576,120,"z",1|
000075d0  2c 31 0d 39 ee 05 3a 0d  39 f8 15 dc 20 34 38 30  |,1.9..:.9... 480|
000075e0  2c 31 30 30 2c 33 32 30  2c 38 30 30 0d 3a 02 38  |,100,320,800.:.8|
000075f0  dc 20 22 44 6f 67 22 2c  35 39 32 2c 38 34 30 2c  |. "Dog",592,840,|
00007600  22 50 65 6e 67 75 69 6e  22 2c 35 32 38 2c 37 35  |"Penguin",528,75|
00007610  30 2c 22 45 6c 65 70 68  61 6e 74 22 2c 35 31 32  |0,"Elephant",512|
00007620  2c 36 36 30 0d 3a 0c 39  dc 20 22 50 69 67 22 2c  |,660.:.9. "Pig",|
00007630  35 39 32 2c 35 37 30 2c  22 43 6f 63 6b 65 72 65  |592,570,"Cockere|
00007640  6c 22 2c 35 31 32 2c 34  38 30 2c 22 4b 61 6e 67  |l",512,480,"Kang|
00007650  65 72 6f 6f 22 2c 35 31  32 2c 33 39 30 0d 3a 16  |eroo",512,390.:.|
00007660  24 dc 20 22 43 61 6d 65  6c 22 2c 35 36 30 2c 33  |$. "Camel",560,3|
00007670  30 30 2c 22 44 6f 76 65  22 2c 35 37 36 2c 32 31  |00,"Dove",576,21|
00007680  30 0d 3a 20 21 dc 20 22  4d 61 69 6e 20 4d 65 6e  |0.: !. "Main Men|
00007690  75 22 2c 34 39 36 2c 31  32 30 2c 22 7a 22 2c 31  |u",496,120,"z",1|
000076a0  2c 31 0d 3a 2a 05 3a 0d  3a 34 15 dc 20 34 30 30  |,1.:*.:.:4.. 400|
000076b0  2c 34 34 30 2c 34 38 30  2c 34 34 30 0d 3a 3e 37  |,440,480,440.:>7|
000076c0  dc 20 22 36 78 31 30 20  52 65 63 74 61 6e 67 6c  |. "6x10 Rectangl|
000076d0  65 22 2c 34 31 36 2c 38  34 30 2c 22 35 78 31 32  |e",416,840,"5x12|
000076e0  20 52 65 63 74 61 6e 67  6c 65 22 2c 34 31 36 2c  | Rectangle",416,|
000076f0  37 35 30 0d 3a 48 1e dc  20 22 34 78 31 35 20 52  |750.:H.. "4x15 R|
00007700  65 63 74 61 6e 67 6c 65  22 2c 34 31 36 2c 36 36  |ectangle",416,66|
00007710  30 0d 3a 52 21 dc 20 22  4d 61 69 6e 20 4d 65 6e  |0.:R!. "Main Men|
00007720  75 22 2c 34 39 36 2c 35  37 30 2c 22 7a 22 2c 31  |u",496,570,"z",1|
00007730  2c 31 0d 3a 5c 05 3a 0d  3a 66 15 dc 20 34 38 30  |,1.:\.:.:f.. 480|
00007740  2c 33 35 30 2c 33 32 30  2c 35 33 30 0d 3a 70 39  |,350,320,530.:p9|
00007750  dc 20 22 50 79 72 61 6d  69 64 22 2c 35 32 38 2c  |. "Pyramid",528,|
00007760  38 34 30 2c 22 44 69 61  6d 6f 6e 64 22 2c 35 32  |840,"Diamond",52|
00007770  38 2c 37 35 30 2c 22 43  72 6f 73 73 22 2c 35 36  |8,750,"Cross",56|
00007780  30 2c 36 36 30 0d 3a 7a  2b dc 20 22 27 43 69 72  |0,660.:z+. "'Cir|
00007790  63 6c 65 27 22 2c 35 31  32 2c 35 37 30 2c 22 42  |cle'",512,570,"B|
000077a0  65 65 2d 48 69 76 65 22  2c 35 31 32 2c 34 38 30  |ee-Hive",512,480|
000077b0  0d 3a 84 21 dc 20 22 4d  61 69 6e 20 4d 65 6e 75  |.:.!. "Main Menu|
000077c0  22 2c 34 39 36 2c 33 39  30 2c 22 7a 22 2c 31 2c  |",496,390,"z",1,|
000077d0  31 0d 3a 8e 05 3a 0d 3a  98 15 dc 20 39 39 39 2c  |1.:..:.:... 999,|
000077e0  39 39 39 2c 39 39 39 2c  39 39 39 0d 3a a2 2c dc  |999,999,999.:.,.|
000077f0  20 22 54 52 59 22 2c 31  30 34 38 2c 36 35 30 2c  | "TRY",1048,650,|
00007800  22 51 55 49 54 22 2c 31  30 33 32 2c 35 36 30 2c  |"QUIT",1032,560,|
00007810  22 7a 22 2c 31 2c 31 0d  3a ac 05 3a 0d 3a b6 15  |"z",1,1.:..:.:..|
00007820  dc 20 39 39 39 2c 39 39  39 2c 39 39 39 2c 39 39  |. 999,999,999,99|
00007830  39 0d 3a c0 2c dc 20 22  54 52 59 22 2c 31 30 38  |9.:.,. "TRY",108|
00007840  30 2c 36 30 30 2c 22 51  55 49 54 22 2c 31 30 36  |0,600,"QUIT",106|
00007850  34 2c 35 31 30 2c 22 7a  22 2c 31 2c 31 0d 3a ca  |4,510,"z",1,1.:.|
00007860  05 3a 0d 3a d4 13 dc 20  37 39 30 2c 31 30 2c 31  |.:.:... 790,10,1|
00007870  34 30 2c 35 30 0d 3a de  23 dc 20 22 79 22 2c 37  |40,50.:.#. "y",7|
00007880  39 32 2c 35 30 2c 22 6e  22 2c 38 38 38 2c 35 30  |92,50,"n",888,50|
00007890  2c 22 7a 22 2c 31 2c 31  0d 3a e8 05 3a 0d 3a f2  |,"z",1,1.:..:.:.|
000078a0  13 dc 20 35 31 30 2c 31  30 2c 32 36 30 2c 35 30  |.. 510,10,260,50|
000078b0  0d 3a fc 1f dc 20 22 43  4f 4e 54 49 4e 55 45 22  |.:... "CONTINUE"|
000078c0  2c 35 31 34 2c 35 30 2c  22 7a 22 2c 31 2c 31 0d  |,514,50,"z",1,1.|
000078d0  3b 06 05 3a 0d 3b 10 15  dc 20 34 38 30 2c 31 30  |;..:.;... 480,10|
000078e0  30 2c 37 36 30 2c 31 36  30 0d 3b 1a 35 dc 20 22  |0,760,160.;.5. "|
000078f0  88 22 2c 37 30 30 2c 32  30 30 2c 22 89 22 2c 37  |.",700,200,".",7|
00007900  38 30 2c 32 30 30 2c 22  8a 22 2c 37 34 30 2c 31  |80,200,".",740,1|
00007910  36 30 2c 22 8b 22 2c 37  34 30 2c 32 34 30 0d 3b  |60,".",740,240.;|
00007920  24 44 dc 20 22 46 69 78  22 2c 39 30 38 2c 32 34  |$D. "Fix",908,24|
00007930  30 2c 22 52 65 6d 6f 76  65 22 2c 38 36 30 2c 31  |0,"Remove",860,1|
00007940  36 30 2c 22 46 6c 69 70  22 2c 31 31 30 30 2c 32  |60,"Flip",1100,2|
00007950  34 30 2c 22 51 75 69 74  22 2c 31 31 30 30 2c 31  |40,"Quit",1100,1|
00007960  36 30 0d 3b 2e 2d dc 20  22 88 50 69 63 6b 22 2c  |60.;.-. ".Pick",|
00007970  34 38 30 2c 32 34 30 2c  22 20 20 20 20 20 22 2c  |480,240,"     ",|
00007980  34 38 30 2c 31 36 30 2c  22 7a 22 2c 31 2c 31 0d  |480,160,"z",1,1.|
00007990  3b 38 05 3a 0d 3b 42 05  3a 0d 3b 4c 23 f4 20 2a  |;8.:.;B.:.;L#. *|
000079a0  2a 2a 20 44 61 74 61 20  66 6f 72 20 74 68 65 20  |** Data for the |
000079b0  54 75 74 6f 72 69 61 6c  20 2a 2a 2a 0d 3b 56 05  |Tutorial ***.;V.|
000079c0  3a 0d 3b 60 1f dc 20 22  36 33 57 68 61 74 20 69  |:.;`.. "63What i|
000079d0  73 20 61 20 50 4f 4c 59  4f 4d 49 4e 4f 20 3f 22  |s a POLYOMINO ?"|
000079e0  0d 3b 6a 09 dc 20 22 21  22 0d 3b 74 32 dc 20 22  |.;j.. "!".;t2. "|
000079f0  36 30 49 74 20 69 73 6e  27 74 20 61 20 77 6f 72  |60It isn't a wor|
00007a00  64 20 77 65 20 75 73 65  20 65 76 65 72 79 20 64  |d we use every d|
00007a10  61 79 2c 20 62 75 74 20  77 65 22 0d 3b 7e 32 dc  |ay, but we".;~2.|
00007a20  20 22 36 30 61 6c 6c 20  68 61 76 65 20 68 65 61  | "60all have hea|
00007a30  72 64 20 6f 66 20 6f 6e  65 20 73 6f 72 74 20 6f  |rd of one sort o|
00007a40  66 20 70 6f 6c 79 6f 6d  69 6e 6f 2e 22 0d 3b 88  |f polyomino.".;.|
00007a50  09 dc 20 22 21 22 0d 3b  92 32 dc 20 22 31 32 49  |.. "!".;.2. "12I|
00007a60  74 27 73 20 74 68 65 20  73 69 6d 70 6c 69 73 74  |t's the simplist|
00007a70  20 6b 69 6e 64 2c 20 63  61 6c 6c 65 64 20 61 20  | kind, called a |
00007a80  44 4f 4d 49 4e 4f 2e 22  0d 3b 9c 09 dc 20 22 21  |DOMINO.".;... "!|
00007a90  22 0d 3b a6 30 dc 20 22  36 30 4e 6f 20 64 6f 75  |".;.0. "60No dou|
00007aa0  62 74 20 79 6f 75 27 76  65 20 61 6c 6c 20 70 6c  |bt you've all pl|
00007ab0  61 79 65 64 20 64 6f 6d  69 6e 6f 65 73 20 61 74  |ayed dominoes at|
00007ac0  22 0d 3b b0 1f dc 20 22  36 30 73 6f 6d 65 20 74  |".;... "60some t|
00007ad0  69 6d 65 20 6f 72 20 61  6e 6f 74 68 65 72 2e 22  |ime or another."|
00007ae0  0d 3b ba 0d dc 20 22 23  22 2c 22 40 22 0d 3b c4  |.;... "#","@".;.|
00007af0  30 dc 20 22 31 32 41 20  64 6f 6d 69 6e 6f 20 69  |0. "12A domino i|
00007b00  73 20 61 20 72 65 63 74  61 6e 67 6c 65 20 73 70  |s a rectangle sp|
00007b10  6c 69 74 20 69 6e 74 6f  20 74 77 6f 22 0d 3b ce  |lit into two".;.|
00007b20  30 dc 20 22 31 32 73 71  75 61 72 65 73 2c 20 6a  |0. "12squares, j|
00007b30  6f 69 6e 65 64 20 61 74  20 6f 6e 65 20 6f 66 20  |oined at one of |
00007b40  74 68 65 69 72 20 65 64  67 65 73 2e 22 0d 3b d8  |their edges.".;.|
00007b50  0d dc 20 22 23 22 2c 22  24 22 0d 3b e2 32 dc 20  |.. "#","$".;.2. |
00007b60  22 36 30 54 68 65 72 65  66 6f 72 65 2c 20 61 20  |"60Therefore, a |
00007b70  54 52 49 4f 4d 49 4e 4f  20 77 6f 75 6c 64 20 62  |TRIOMINO would b|
00007b80  65 20 6d 61 64 65 20 6f  66 20 33 22 0d 3b ec 31  |e made of 3".;.1|
00007b90  dc 20 22 36 30 73 71 75  61 72 65 73 20 6a 6f 69  |. "60squares joi|
00007ba0  6e 65 64 20 61 74 20 74  68 65 69 72 20 65 64 67  |ned at their edg|
00007bb0  65 73 2c 20 61 73 20 73  68 6f 77 6e 22 0d 3b f6  |es, as shown".;.|
00007bc0  28 dc 20 22 36 30 62 65  6c 6f 77 3a 2d 20 54 68  |(. "60below:- Th|
00007bd0  65 72 65 20 61 72 65 20  32 20 54 52 49 4f 4d 49  |ere are 2 TRIOMI|
00007be0  4e 4f 45 53 22 0d 3c 00  1d dc 20 22 23 22 2c 22  |NOES".<... "#","|
00007bf0  25 22 2c 22 23 22 2c 22  21 22 2c 22 21 22 2c 22  |%","#","!","!","|
00007c00  21 22 0d 3c 0a 32 dc 20  22 31 32 41 20 51 55 41  |!".<.2. "12A QUA|
00007c10  44 52 4f 4d 49 4e 4f 20  69 73 20 6d 61 64 65 20  |DROMINO is made |
00007c20  6f 66 20 34 20 73 71 75  61 72 65 73 20 6a 6f 69  |of 4 squares joi|
00007c30  6e 65 64 22 0d 3c 14 30  dc 20 22 31 32 61 74 20  |ned".<.0. "12at |
00007c40  74 68 65 69 72 20 65 64  67 65 73 2e 20 54 68 65  |their edges. The|
00007c50  72 65 20 61 72 65 20 35  20 69 6e 20 61 6c 6c 2e  |re are 5 in all.|
00007c60  2e 2e 2e 22 0d 3c 1e 15  dc 20 22 23 22 2c 22 5e  |...".<... "#","^|
00007c70  22 2c 22 23 22 2c 22 24  22 0d 3c 28 32 dc 20 22  |","#","$".<(2. "|
00007c80  36 30 49 66 20 79 6f 75  20 74 61 6b 65 20 35 20  |60If you take 5 |
00007c90  73 71 75 61 72 65 73 20  61 6e 64 20 6a 6f 69 6e  |squares and join|
00007ca0  20 74 68 65 6d 20 65 64  67 65 22 0d 3c 32 2b dc  | them edge".<2+.|
00007cb0  20 22 36 30 74 6f 20 65  64 67 65 20 79 6f 75 20  | "60to edge you |
00007cc0  66 6f 72 6d 20 61 20 50  45 4e 54 4f 4d 49 4e 4f  |form a PENTOMINO|
00007cd0  2e 22 2c 22 21 22 0d 3c  3c 32 dc 20 22 31 32 53  |.","!".<<2. "12S|
00007ce0  69 6d 69 6c 61 72 6c 79  2c 20 69 66 20 79 6f 75  |imilarly, if you|
00007cf0  20 75 73 65 20 36 20 73  71 75 61 72 65 73 20 79  | use 6 squares y|
00007d00  6f 75 20 66 6f 72 6d 22  0d 3c 46 19 dc 20 22 31  |ou form".<F.. "1|
00007d10  32 61 20 48 45 58 4f 4d  49 4e 4f 2e 22 2c 22 21  |2a HEXOMINO.","!|
00007d20  22 0d 3c 50 2e dc 20 22  36 30 54 68 65 72 65 20  |".<P.. "60There |
00007d30  61 72 65 20 31 32 20 50  65 6e 74 6f 6d 69 6e 6f  |are 12 Pentomino|
00007d40  65 73 20 61 6e 64 20 73  6f 6d 65 20 33 35 22 0d  |es and some 35".|
00007d50  3c 5a 1e dc 20 22 36 30  48 65 78 6f 6d 69 6e 6f  |<Z.. "60Hexomino|
00007d60  65 73 21 21 22 2c 22 21  22 2c 22 23 22 0d 3c 64  |es!!","!","#".<d|
00007d70  30 dc 20 22 31 32 54 68  69 73 20 70 72 6f 67 72  |0. "12This progr|
00007d80  61 6d 20 61 6c 6c 6f 77  73 20 79 6f 75 20 74 6f  |am allows you to|
00007d90  20 64 65 73 69 67 6e 20  62 6f 74 68 22 0d 3c 6e  | design both".<n|
00007da0  29 dc 20 22 31 32 74 68  65 20 70 65 6e 74 6f 6d  |). "12the pentom|
00007db0  69 6e 6f 65 73 20 61 6e  64 20 68 65 78 6f 6d 69  |inoes and hexomi|
00007dc0  6e 6f 65 73 2e 22 0d 3c  78 09 dc 20 22 21 22 0d  |noes.".<x.. "!".|
00007dd0  3c 82 2f dc 20 22 36 30  54 68 65 72 65 20 61 72  |<./. "60There ar|
00007de0  65 20 61 6c 73 6f 20 6d  61 6e 79 20 61 63 74 69  |e also many acti|
00007df0  76 69 74 69 65 73 20 6d  61 6b 69 6e 67 22 0d 3c  |vities making".<|
00007e00  8c 28 dc 20 22 36 30 75  73 65 20 6f 66 20 74 68  |.(. "60use of th|
00007e10  65 20 31 32 20 70 65 6e  74 6f 6d 69 6e 6f 65 73  |e 12 pentominoes|
00007e20  2e 22 2c 22 21 22 0d 3c  96 32 dc 20 22 36 33 45  |.","!".<.2. "63E|
00007e30  4e 4a 4f 59 20 20 45 4e  4a 4f 59 20 20 45 4e 4a  |NJOY  ENJOY  ENJ|
00007e40  4f 59 20 20 45 4e 4a 4f  59 20 20 45 4e 4a 4f 59  |OY  ENJOY  ENJOY|
00007e50  20 20 45 4e 4a 4f 59 22  0d 3c a0 0b dc 20 22 7a  |  ENJOY".<... "z|
00007e60  7a 7a 22 0d 3c aa 05 3a  0d 3c b4 05 3a 0d 3c be  |zz".<..:.<..:.<.|
00007e70  30 f4 20 2a 2a 2a 20 44  61 74 61 20 66 6f 72 20  |0. *** Data for |
00007e80  50 65 6e 74 6f 6d 69 6e  6f 20 52 6f 74 61 74 69  |Pentomino Rotati|
00007e90  6f 6e 73 2f 46 6c 69 70  73 20 2a 2a 2a 0d 3c c8  |ons/Flips ***.<.|
00007ea0  05 3a 0d 3c d2 20 dc 20  22 31 33 22 2c 22 31 35  |.:.<. . "13","15|
00007eb0  34 37 32 36 33 38 22 2c  22 31 35 34 38 32 37 33  |472638","1548273|
00007ec0  36 22 0d 3c dc 22 dc 20  22 31 32 33 34 22 2c 22  |6".<.". "1234","|
00007ed0  31 33 32 35 22 2c 22 31  22 2c 22 31 35 34 38 32  |1325","1","15482|
00007ee0  37 33 36 22 0d 3c e6 22  dc 20 22 31 34 32 33 22  |736".<.". "1423"|
00007ef0  2c 22 31 36 34 37 32 38  33 35 22 2c 22 31 35 34  |,"16472835","154|
00007f00  38 32 37 33 36 22 0d 3c  f0 13 dc 20 22 31 35 33  |82736".<... "153|
00007f10  36 22 2c 22 31 32 34 33  22 0d ff                 |6","1243"..|
00007f1b