Home » Archimedes archive » Archimedes World » AW-1991-04.adf » April91 » !AWApr91/Goodies/LoShang/!LoShang/SHANG1

!AWApr91/Goodies/LoShang/!LoShang/SHANG1

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-1991-04.adf » April91
Filename: !AWApr91/Goodies/LoShang/!LoShang/SHANG1
Read OK:
File size: 3E60 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM --------------------------- LO-SHANG ---------------------------------
   20REM ----------------------- WRITTEN BY D.A.PEDDER ----- 18/12/89 ---------
   30MODE15
   40VDU23,1,0,0,0,0,0,0,0,0
   50PRINTTAB(33,17)"PLEASE WAIT"
   60*SNEW
   70*SLOAD BLOCKBITS.BLOCK15
   80replay%=TRUE:return%=FALSE
   90type%=0:undo%=FALSE:tileoff%=0
  100valid%=TRUE:finished%=FALSE
  110DIM PIECES$(4,36)
  120DIM tilevalid$(42),tilecoords%(42,3)
  130DIM boardpos$(6,15,8)
  140dummy=RND(-TIME)
  150MOUSE ON 1
  160REM ----------------------- MAIN PROGRAM LOOP -----------------------------
  170REPEAT
  180IF replay%=TRUE THEN
  190PRINTTAB(33,17)"PLEASE WAIT"
  200noofbits%=144
  210PROCdefbits
  220replay%=FALSE
  230PROCsetboard(Z%,X%,Y%)
  240CLS:PROCdraw
  250ENDIF
  260REPEAT
  270return%=FALSE
  280PRINTTAB(18,3)"PICK A TILE";SPC(30)
  290REPEAT
  300first$="-99":second$="-66"
  310doublesvalid%=TRUE
  320PROCpointer
  330doublesvalid%=FALSE
  340IFreplay%=FALSE AND return%=FALSE THEN
  350firstx%=xvalue%:firsty%=yvalue%:firstz%=zlayer%
  360first$=boardpos$(firstz%,firstx%,firsty%)
  370PROCtilevalid(0)
  380IF valid%=TRUE THEN PROChilight(1)
  390ENDIF
  400UNTIL valid%=TRUE OR replay%=TRUE OR return%=TRUE
  410IF replay%=FALSE AND return%=FALSE THEN
  420REPEAT
  430PRINTTAB(18,3)"PICK A SECOND TILE";SPC(25)
  440REPEAT
  450PROCpointer
  460secondx%=xvalue%:secondy%=yvalue%:secondz%=zlayer%
  470second$=boardpos$(secondz%,secondx%,secondy%)
  480PROCtilevalid(0)
  490UNTIL valid%=TRUE OR replay%=TRUE OR return%=TRUE
  500IF valid%=TRUE AND replay%=FALSE AND return%=FALSE THEN
  510IF VAL(first$)<5 AND VAL(second$)<5 THEN first$=second$
  520IF (VAL(first$)-1)DIV4=1 AND (VAL(second$)-1)DIV4=1 THEN first$=second$
  530sametile%=FALSE
  540IF firstx%=secondx% AND firsty%=secondy% AND firstz%=secondz% THEN sametile%=TRUE:PROChilight(0)
  550IF first$=second$ AND sametile%=FALSE THEN
  560noofbits%=noofbits%-2
  570PROCremove
  580xvalue%=firstx%:yvalue%=firsty%:zlayer%=firstz%
  590PROCremove
  600ELSE
  610PROChilight(0):VDU7
  620ENDIF
  630ENDIF
  640UNTIL first$=second$ OR replay%=TRUE OR return%=TRUE
  650ENDIF
  660UNTIL noofbits%=0 OR replay%=TRUE
  670IF noofbits%=0 AND finished%=FALSE THEN PROCdoneit
  680UNTILreplay%=FALSE OR finished%=TRUE
  690END
  700REM -----------------------------------------------------------------------
  710DEFPROCdefbits
  720FOR group%=0 TO 1
  730FOR singles%=1 TO 4
  740PIECES$(singles%,(group%+1))=STR$(singles%+(group%*4))
  750NEXT singles%
  760NEXT group%
  770FOR double=1 TO 4
  780FOR loop1 =3 TO 36
  790PIECES$(double,loop1)=STR$(loop1+6)
  800NEXT loop1
  810NEXTdouble
  820ENDPROC
  830REM -----------------------------------------------------------------------
  840DEFPROCsetboard(Z%,X%,Y%)
  850FOR X%=6 TO 9
  860FOR Y%=3 TO 6
  870PROCpickabit(3,X%,Y%)
  880NEXTY%
  890NEXTX%
  900FOR X%=5 TO 10
  910FOR Y%=2 TO 7
  920PROCpickabit(2,X%,Y%)
  930NEXTY%
  940NEXTX%
  950FOR X%=14 TO 15
  960PROCpickabit(1,X%,4)
  970NEXTX%
  980FOR X%=4 TO 11
  990FOR Y%=1 TO 8
 1000PROCpickabit(1,X%,Y%)
 1010NEXTY%
 1020NEXTX%
 1030PROCpickabit(1,1,4)
 1040FORY%=1 TO 8 STEP 7
 1050FOR X%=2 TO 3
 1060PROCpickabit(1,X%,Y%)
 1070NEXTX%
 1080FOR X%=12 TO 13
 1090PROCpickabit(1,X%,Y%)
 1100NEXTX%
 1110NEXTY%
 1120FORX%=3 TO 12 STEP 9
 1130FOR Y%=3 TO 6
 1140PROCpickabit(1,X%,Y%)
 1150NEXTY%
 1160NEXTX%
 1170FORX%=2 TO 13 STEP 11
 1180FOR Y%=4 TO 5
 1190PROCpickabit(1,X%,Y%)
 1200NEXTY%
 1210NEXTX%
 1220FOR X%=7 TO 8
 1230FOR Y%=4 TO 5
 1240PROCpickabit(4,X%,Y%)
 1250NEXTY%
 1260NEXTX%
 1270Z%=5:X%=7:Y%=4:PROCpickabit(5,7,4)
 1280ENDPROC
 1290REM ---------------------------------------------------------------------
 1300DEFPROCpickabit(Z%,X%,Y%)
 1310gotone=FALSE
 1320REPEAT
 1330duble%=RND(4):bitno%=RND(36)
 1340IF PIECES$(duble%,bitno%)<>"0" THEN
 1350gotone=TRUE
 1360boardpos$(Z%,X%,Y%)=PIECES$(duble%,bitno%)
 1370IF Z%<=2 AND gotone=TRUE THEN
 1380IF boardpos$(Z%+1,X%,Y%)=boardpos$(Z%,X%,Y%) THEN gotone=FALSE
 1390IF boardpos$(Z%,X%-1,Y%)=boardpos$(Z%,X%,Y%) THEN gotone=FALSE
 1400ENDIF
 1410ENDIF
 1420UNTIL gotone=TRUE
 1430PIECES$(duble%,bitno%)="0"
 1440ENDPROC
 1450REM ----------------------------------------------------------------------
 1460DEFPROCdraw
 1470VDU23,1,0,0,0,0,0,0,0,0
 1480GCOL8,0
 1490PROCplot(0,42,15,14,4,4,1)
 1500PROCplot(0,0,13,2,8,1,1)
 1510PROCplot(0,0,10,5,7,2,2)
 1520PROCplot(0,0,9,6,6,3,3)
 1530PROCplot(0,0,8,7,5,4,4)
 1540IF boardpos$(1,2,4)>"0" THEN
 1550VDU 23,27,0,98,0,0,0,0,0,0
 1560PLOT &ED,92,344
 1570ENDIF
 1580PROCplot(0,42,1,1,4,4,1)
 1590zlayer%=4:yvalue%=4:xvalue%=7
 1600IF boardpos$(4,7,4)>"0" THEN
 1610VDU 23,27,0,VAL(boardpos$(4,7,4)),0,0,0,0,0,0
 1620PLOT &ED,536,368
 1630ENDIF
 1640PROCplottop
 1650PRINTTAB(18,5)"NUMBER OF TILES REMAINING=";noofbits%;"   "
 1660ENDPROC
 1670REM ---------------------------------------------------------------------
 1680DEFPROCplot(xdisp%,ydisp%,xmax%,xmin%,ymax%,ymin%,zlevel%)
 1690zlayer%=zlevel%
 1700FOR y%=ymax% TO ymin% STEP-1
 1710FOR x%=xmax% TO xmin% STEP-1
 1720IF boardpos$(zlayer%,x%,y%)>"0" THEN
 1730IF boardpos$(zlayer%+1,x%,y%)<="0" THEN
 1740VDU 23,27,0,VAL(boardpos$(zlayer%,x%,y%)),0,0,0,0,0,0
 1750PLOT &ED,(84*(x%-1))+(zlayer%*8)+xdisp%,(84*y%)+(zlayer%*8)+ydisp%
 1760ENDIF
 1770IF boardpos$(zlayer%,x%,y%-1) <="0" THEN
 1780VDU 23,27,0,99,0,0,0,0,0,0
 1790PLOT &ED,(84*(x%-1))+(zlayer%*8)+xdisp%,(84*y%)+(zlayer%*8)+ydisp%
 1800ENDIF
 1810IF boardpos$(zlayer%,x%-1,y%) <="0" THEN
 1820VDU 23,27,0,98,0,0,0,0,0,0
 1830PLOT &ED,(84*(x%-1))+(zlayer%*8)+xdisp%,(84*y%)+(zlayer%*8)+ydisp%
 1840ENDIF
 1850ENDIF
 1860NEXT x%
 1870NEXT y%
 1880ENDPROC
 1890REM ---------------------------------------------------------------------
 1900DEFPROCpointer
 1910REPEAT
 1920blocktop=TRUE
 1930REPEAT:MOUSEx%,y%,button%:UNTIL button%=0
 1940REPEAT:MOUSEx%,y%,button%:UNTIL button%<>0
 1950CASE button% OF
 1960WHEN 4
 1970loop%=0
 1980gotone%=FALSE
 1990RESTORE 2280
 2000REPEAT
 2010READ ztmp%,xtmp%,ytmp%,xlow%,ylow%
 2020IF boardpos$(ztmp%,xtmp%,ytmp%)>"0" THEN
 2030IFx%>=xlow% AND x%<xlow%+84 AND y%>=ylow% ANDy%<ylow%+84 THEN
 2040zlayer%=ztmp%:xvalue%=xtmp%:yvalue%=ytmp%
 2050gotone%=TRUE
 2060ENDIF
 2070ENDIF
 2080loop%=loop%+1
 2090UNTIL gotone%=TRUE OR loop%=57
 2100IF gotone%=FALSE THEN
 2110yvalue%=(y%-10)DIV84
 2120IF yvalue%>8 THEN yvalue%=0:zlayer%=0
 2130xvalue%=((x%-10)DIV84)+1
 2140IF xvalue%>15 THEN xvalue%=0:zlayer%=0
 2150IF boardpos$(1,xvalue%,yvalue%)>"0" THEN zlayer%=1 ELSE zlayer%=0
 2160IF xvalue%=1 OR xvalue%>13 THEN
 2170zlayer%=0
 2180IF y%>391 AND y%<468 THEN
 2190yvalue%=4
 2200IF boardpos$(1,xvalue%,4)>"0" THEN zlayer%=1
 2210ENDIF
 2220ENDIF
 2230ENDIF
 2240WHEN 2
 2250PROCmenu(0)
 2260IF replay%=FALSE AND return%=FALSE THEN blocktop=FALSE
 2270 ENDCASE
 2280DATA 5,7,4,594,421,4,7,4,545,376,4,7,5,545,460,4,8,4,629,376,4,8,5,629,460
 2290DATA 3,6,3,453,284,3,6,4,453,368,3,6,5,453,452,3,6,6,453,536
 2300DATA 3,7,3,537,284,3,7,4,537,368,3,7,5,537,452,3,7,6,537,536
 2310DATA 3,8,3,621,284,3,8,4,621,368,3,8,5,621,452,3,8,6,621,536
 2320DATA 3,9,3,705,284,3,9,4,705,368,3,9,5,705,452,3,9,6,705,536
 2330DATA 2,5,2,361,192,2,5,3,361,276,2,5,4,361,360,2,5,5,361,444,2,5,6,361,528
 2340DATA 2,6,2,445,192,2,6,3,445,276,2,6,4,445,360,2,6,5,445,444,2,6,6,445,528
 2350DATA 2,7,2,529,192,2,7,3,529,276,2,7,4,529,360,2,7,5,529,444,2,7,6,529,528
 2360DATA 2,8,2,613,192,2,8,3,613,276,2,8,4,613,360,2,8,5,613,444,2,8,6,613,528
 2370DATA 2,9,2,696,192,2,9,3,696,276,2,9,4,696,360,2,9,5,696,444,2,9,6,696,528
 2380DATA 2,10,2,781,192,2,10,3,781,276,2,10,4,781,360,2,10,5,781,444,2,10,6,781,528
 2390DATA 2,5,7,361,612,2,6,7,445,612,2,7,7,529,612,2,8,7,613,612,2,9,7,697,612
 2400DATA 2,10,7,781,612
 2410IF zlayer%<4 THEN
 2420IF boardpos$(zlayer%+1,xvalue%,yvalue%)>"0"THEN blocktop=FALSE
 2430ENDIF
 2440UNTIL blocktop=TRUE
 2450ENDPROC
 2460REM ---------------------------------------------------------------------
 2470DEFPROCremove
 2480boardpos$(zlayer%,xvalue%,yvalue%)="0"
 2490PROCdeleteblock
 2500PROCdrawsection
 2510CASE xvalue% OF
 2520WHEN 1
 2530VDU 23,27,0,98,0,0,0,0,0,0
 2540PLOT &ED,92,428
 2550WHEN 15
 2560IF boardpos$(1,12,3)<>"0" THEN
 2570VDU 23,27,0,VAL(boardpos$(1,12,3)),0,0,0,0,0,0
 2580PLOT &ED,932,260
 2590ENDIF
 2600ENDCASE
 2610PRINTTAB(18,5)"NUMBER OF TILES REMAINING=";noofbits%;"   "
 2620ENDPROC
 2630REM
 2640REM ---------------------------------------------------------------------
 2650DEFPROChilight(action%)
 2660ydelta%=0
 2670IF action%=0 THEN GCOL6,64 ELSE GCOL1,64
 2680CASE zlayer% OF
 2690WHEN 5
 2700IFboardpos$(5,7,4)>"0" THEN
 2710RECTANGLE FILL 594,422,80,80
 2720ENDIF
 2730WHEN 4
 2740PROCrectangle(0)
 2750WHEN 0
 2760OTHERWISE
 2770CASE xvalue% OF
 2780WHEN 1,14,15
 2790IF boardpos$(1,xvalue%,4)>"0" THEN PROCrectangle(44)
 2800WHEN 2,3,4,12,13
 2810PROCrectangle(0)
 2820OTHERWISE
 2830IFzlayer%=yvalue% OR zlayer%=xvalue%-3 THEN
 2840 PROCrectangle(0)
 2850 ELSE
 2860 PROChardhilight
 2870ENDIF
 2880ENDCASE
 2890ENDCASE
 2900GCOL0,127
 2910ENDPROC
 2920 REM -------------------------------------------------------------------
 2930DEFPROCrectangle(ydelta%)
 2940RECTANGLE FILL (xvalue%-1)*84+zlayer%*8+7,(yvalue%*84)+zlayer%*8+5+ydelta%,80,80
 2950ENDPROC
 2960REM ----------------------------------------------------------------------
 2970DEFPROChardhilight
 2980xdatum%=(xvalue%-1)*84+(zlayer%+1)*8
 2990ydatum%=(yvalue%*84)+(zlayer%+1)*8
 3000cx%=xdatum%+80
 3010cy%=ydatum%+76
 3020left%=-1:below%=-1:stack%=-1
 3030REPEAT
 3040left%=left%+1
 3050UNTIL boardpos$(left%+1,xvalue%-1,yvalue%)<="0"
 3060IF left%>=zlayer% THEN
 3070ytri1%=ydatum%+(left%-zlayer%)*8
 3080xtri1%=xdatum%+(left%-zlayer%)*8
 3090ELSE
 3100xtri1%=xdatum%:ytri1%=ydatum%
 3110ENDIF
 3120REPEAT
 3130below%=below%+1
 3140UNTIL boardpos$(below%+1,xvalue%,yvalue%-1)<="0"
 3150IF below%>=zlayer% THEN
 3160ytri2%=ydatum%+(below%-zlayer%)*8
 3170xtri2%=xdatum%+(below%-zlayer%)*8
 3180ELSE
 3190xtri2%=xdatum%:ytri2%=ydatum%
 3200ENDIF
 3220MOVE xtri1%,ytri1%
 3230MOVE xtri1%,cy%
 3240PLOT85,cx%,cy%
 3250MOVEcx%,cy%
 3260MOVE cx%,ytri2%
 3270PLOT85,xtri2%,ytri2%
 3280GCOL6,64
 3290REPEAT
 3300stack%=stack%+1
 3310UNTIL boardpos$(stack%+1,xvalue%-1,yvalue%-1)<="0"
 3320xtri3%=(xvalue%-2)*84+stack%*8+88
 3330ytri3%=(yvalue%-1)*84+stack%*8+88
 3340IF xtri3%>xtri1% THEN
 3350MOVE xtri1%,ytri1%
 3360MOVE xtri1%,ytri3%
 3370PLOT 85,xtri3%,ytri3%
 3380ENDIF
 3390IF ytri3%>ytri2% THEN
 3400MOVE xtri2%,ytri2%
 3410MOVE xtri3%,ytri2%
 3420PLOT 85,xtri3%,ytri3%
 3430ENDIF
 3440ENDPROC
 3450REM ----------------------------------------------------------------------
 3460DEFPROCtilevalid(type%)
 3470valid%=TRUE
 3480IF type%=0 THEN PRINTTAB(18,3) SPC(40)
 3490IF zlayer%>0 THEN
 3500IF xvalue%>1 AND xvalue%<15 THEN
 3510IF boardpos$(zlayer%,xvalue%+1,yvalue%)>"0" AND boardpos$(zlayer%,xvalue%-1,yvalue%)>"0" THEN valid%=FALSE
 3520IF boardpos$(5,7,4)>"0" AND zlayer%=4 THEN valid%=FALSE
 3530IF zlayer%=1 AND xvalue%=2 AND (yvalue%=4 OR yvalue%=5) AND boardpos$(1,1,4)>"0" THEN valid%=FALSE
 3540IF zlayer%=1 AND xvalue%=13 AND (yvalue%=4 OR yvalue%=5) AND boardpos$(1,14,4)>"0" THEN valid%=FALSE
 3550IFvalid%=FALSE AND type%=0 THEN
 3560PRINTTAB(18,3)"THAT TILE IS NOT FREE - PICK ANOTHER ONE"
 3570VDU7
 3580ENDIF
 3590ENDIF
 3600ELSE
 3610valid%=FALSE
 3620 IF type%=0 THEN PRINTTAB(18,3)"POINTER NOT ON A TILE !"
 3630ENDIF
 3640ENDPROC
 3650REM ----------------------------------------------------------------------
 3660DEFPROCdeleteblock
 3670CASE zlayer% OF
 3680WHEN 5
 3690PROCplot(0,0,8,7,5,4,4)
 3700OTHERWISE
 3710GCOL0,0
 3720VDU 23,27,0,100,0,0,0,0,0,0
 3730CASE xvalue% OF
 3740WHEN 1
 3750PLOT &ED,0,84*(yvalue%)+(zlayer%*8)+42
 3760WHEN 14
 3770PLOT &ED,1108,(84*(yvalue%))+50
 3780WHEN 15
 3790PLOT &ED,1192,(84*(yvalue%))+50
 3800PLOT &ED,1186,(84*(yvalue%-1))+50
 3810OTHERWISE
 3820PLOT &ED,(84*(xvalue%-1))+(zlayer%*8),(84*yvalue%)+(zlayer%*8)
 3830ENDCASE
 3840GCOL8,0
 3850ENDCASE
 3860ENDPROC
 3870REM ----------------------------------------------------------------------
 3880DEFPROCplottop
 3890IF boardpos$(5,7,4)<>"0" THEN
 3900VDU 23,27,0,VAL(boardpos$(5,7,4)),0,0,0,0,0,0
 3910PLOT &ED,584,416
 3920VDU 23,27,0,99,0,0,0,0,0,0
 3930PLOT &ED,584,416
 3940VDU 23,27,0,98,0,0,0,0,0,0
 3950PLOT &ED,584,416
 3960ENDIF
 3970ENDPROC
 3980REM ----------------------------------------------------------------------
 3990DEFPROCdrawsection
 4000PRINT TAB(3,3) SPC(50)
 4010xlow%=(84*(xvalue%-1)):IF xlow%<0 xlow%=0
 4020xhigh%=(84*(xvalue%-1))+130
 4030ylow%=(84*yvalue%):IF ylow%<0 ylow%=0
 4040yhigh%=(84*yvalue%)+120
 4050VDU24,xlow%;ylow%;xhigh%;yhigh%;
 4060xmax%=xvalue%+1:xmin%=xvalue%-2:ymax%=yvalue%+1:ymin%=yvalue%-2
 4070IF xmin%<2 xmin%=2
 4080IF ymin%<1 ymin%=1
 4090IF xmax%>13 xmax%=13
 4100IF ymax%>8 ymax%=8
 4110FOR zloop%=1 TO 4
 4120PROCplot(0,0,xmax%,xmin%,ymax%,ymin%,zloop%)
 4130NEXTzloop%
 4140PROCplottop
 4150VDU26
 4160ENDPROC
 4170REM ---------------------------------------------------------------------
 4180DEFPROCshowallbits
 4190CLS
 4200margin%=160
 4210VDU5
 4220MOVE 0,765:GCOL0,127:PRINT"FLOWERS   1 of":MOVE 160,730:PRINT"each"
 4230FOR loop%=1 TO 4
 4240VDU 23,27,0,loop%,0,0,0,0,0,0
 4250PLOT &ED,margin%+(loop%*100),700
 4260NEXT loop%
 4270MOVE 0,665:PRINT"SEASONS   1 of":MOVE 160,630:PRINT"each"
 4280FOR loop%=1 TO 4
 4290VDU 23,27,0,4+loop%,0,0,0,0,0,0
 4300PLOT &ED,margin%+(loop%*100),600
 4310NEXT loop%
 4320MOVE 0,565:PRINT"DRAGONS   4 of":MOVE 160,530:PRINT"each"
 4330FOR loop%=1 TO 3
 4340VDU 23,27,0,8+loop%,0,0,0,0,0,0
 4350PLOT &ED,margin%+(loop%*100),500
 4360NEXT loop%
 4370MOVE 0,465:PRINT"WINDS     4 of":MOVE 160,430:PRINT"each"
 4380FOR loop%=1 TO 4
 4390VDU 23,27,0,38+loop%,0,0,0,0,0,0
 4400PLOT &ED,margin%+(loop%*100),400
 4410NEXT loop%
 4420RESTORE 4430
 4430DATA 365,SPOTS     4 of,265,CRAKS     4 of,165,BAMS      4 of
 4440FOR group%=0 TO 2
 4450READyposition%,string$
 4460MOVE0,yposition%:PRINTstring$
 4470MOVE160,yposition%-35:PRINT"each"
 4480FOR loop%=1 TO 9
 4490VDU 23,27,0,(11+loop%)+(group%*9),0,0,0,0,0,0
 4500PLOT &ED,margin%+(loop%*100),300-(group%*100)
 4510NEXT loop%
 4520NEXT group%
 4530MOVE 700,780:PRINT"ANY TWO FLOWERS CAN BE"
 4540MOVE 700,740:PRINT"SELECTED AS A PAIR"
 4550MOVE 700,680:PRINT"ANY TWO SEASONS CAN BE"
 4560MOVE 700,640:PRINT"SELECTED AS A PAIR"
 4570REPEAT:MOUSEx%,y%,button%:UNTIL button%=0
 4580VDU4
 4590VDU23,1,0,0,0,0,0,0,0,0
 4600 PRINTTAB(3,2)"The game is played using 'MAH JONG' tiles , as displayed below."
 4610 PRINTTAB(3,3)"The object is to remove tiles , in pairs , until none remain."
 4620PRINTTAB(3,4)"Tiles can only be removed if :"
 4630PRINTTAB(8,5)" EITHER   There is no tile to it's right on the same level."
 4640PRINTTAB(8,6)" OR       There is no tile to it's left on the same level."
 4650PRINTTAB(15,30)"PRESS ANY BUTTON TO RETURN TO GAME"
 4660REPEAT:MOUSEx%,y%,button%:UNTIL button%<>0
 4670return%=TRUE
 4680CLS:PROCdraw
 4690ENDPROC
 4700REM ---------------------------------------------------------------------
 4710DEFPROCmenu(type%)
 4720GCOL0,20:VDU5
 4730RECTANGLE FILL 20,940,1200,58
 4740IF type%=0 THEN
 4750IF doublesvalid%=TRUE THEN
 4760RESTORE 4770
 4770DATA MENU OFF,SHOW MOVES,NEW GAME,INFORMATION,QUIT
 4780ELSE RESTORE 4790
 4790DATA MENU OFF,,NEW GAME,,QUIT
 4800ENDIF
 4810ENDIF
 4820IF type%=1 THEN
 4830RESTORE 4840
 4840DATA BACK TO GAME,SHOW NEXT,NEW GAME,INFORMATION,QUIT
 4850ENDIF
 4860FOR boxloop%=1 TO 5
 4870GCOL0,42
 4880READmess1$
 4890menupos%=30+(240*(boxloop%-1))
 4900RECTANGLE FILL menupos%,950,220,40
 4910MOVE 10+menupos%,980:GCOL0,0:PRINT mess1$
 4920NEXTboxloop%
 4930REPEAT:MOUSEx%,y%,button%:UNTIL button%=0
 4940REPEAT:MOUSEx%,y%,button%:UNTIL button%<>0
 4950selectvalid%=0
 4960IF y%>950 AND y%<990 AND button%<>2 THEN
 4970 IF type%=0 THEN
 4980IF x%>31 AND x%<250 THEN RECTANGLE FILL 20,940,1200,58
 4990IF x%>271 AND x%<490 THEN
 5000IF doublesvalid%=TRUE THEN
 5010selectvalid%=1:PROCshowmoves
 5020ELSE
 5030selectvalid%=0 :VDU7
 5040ENDIF
 5050ENDIF
 5060ENDIF
 5070IF type%=1 AND y%>950 AND y%<990 AND button%<>2 THEN
 5080IF x%>31 AND x%<250 THEN selectvalid%=1:undo%=FALSE
 5090IF x%>271 AND x%<490 THEN selectvalid%=1:undo%=TRUE
 5100ENDIF
 5110IFy%>950 AND y%<990 AND button%<>2 THEN
 5120IF x%>511 AND x%<730 THEN selectvalid%=1:CLS:replay%=TRUE
 5130IF x%>751 AND x%<970 THEN
 5140IF doublesvalid%=TRUE THEN
 5150IF type%=0 THEN
 5160selectvalid%=1:PROCshowallbits
 5170ELSE
 5180selectvalid%=1
 5190ENDIF
 5200ELSE
 5210selectvalid%=0 :VDU7
 5220ENDIF
 5230ENDIF
 5240IF x%>991 AND x%<1210 THEN CLS:VDU4:COLOUR127:PRINTTAB(20,20)"BYE!":PRINTTAB(12,22)"Programmer D.A.Pedder":replay%=TRUE:finished%=TRUE
 5250ENDIF
 5260ENDIF
 5270IF selectvalid%<>1 THEN RECTANGLE FILL 20,940,1200,58
 5280VDU4
 5290VDU23,1,0,0,0,0,0,0,0,0
 5300yvalue%=0
 5310ENDPROC
 5320REM ---------------------------------------------------------------------
 5330DEFPROCshowmoves
 5340REM button%=0
 5350VDU4
 5360VDU23,1,0,0,0,0,0,0,0,0
 5370PRINTTAB(12,3)SPC(60)
 5380showloop%=0
 5390FOR xshow%=1 TO 15
 5400FOR yshow%=1 TO 8
 5410FOR zshow%=1 TO 5
 5420IF boardpos$(zshow%,xshow%,yshow%)>"0" THEN
 5430zlayer%=zshow%:xvalue%=xshow%:yvalue%=yshow%
 5440valid%=FALSE
 5450PROCtilevalid(1)
 5460IF valid%=TRUE AND boardpos$(zshow%+1,xshow%,yshow%)<="0" THEN
 5470tilevalid$(showloop%)=boardpos$(zshow%,xshow%,yshow%)
 5480IF VAL(tilevalid$(showloop%))<9 AND VAL(tilevalid$(showloop%))>0 THEN
 5490IF VAL(tilevalid$(showloop%))<5 THEN
 5500tilevalid$(showloop%)="1"
 5510ELSE
 5520tilevalid$(showloop%)="2"
 5530ENDIF
 5540ENDIF
 5550tilecoords%(showloop%,1)=zshow%
 5560tilecoords%(showloop%,2)=xshow%
 5570tilecoords%(showloop%,3)=yshow%
 5580showloop%=showloop%+1
 5590ENDIF
 5600ENDIF
 5610NEXT zshow%
 5620NEXT yshow%
 5630NEXT xshow%
 5640checkloop%=0
 5650REPEAT
 5660undo%=FALSE
 5670doublesfound%=FALSE
 5680doubloop%=checkloop%+1
 5690REPEAT
 5700IF tilevalid$(checkloop%)>"0" AND tilevalid$(checkloop%)=tilevalid$(doubloop%) THEN
 5710zlayer%=tilecoords%(checkloop%,1)
 5720xvalue%=tilecoords%(checkloop%,2)
 5730yvalue%=tilecoords%(checkloop%,3)
 5740PROChilight(1)
 5750zlayer%=tilecoords%(doubloop%,1)
 5760xvalue%=tilecoords%(doubloop%,2)
 5770yvalue%=tilecoords%(doubloop%,3)
 5780PROChilight(1)
 5790doublesfound%=TRUE
 5800ENDIF
 5810doubloop%=doubloop%+1
 5820UNTIL doubloop%>=showloop%
 5830IF doublesfound%=TRUE THEN
 5840PROCmenu(1)
 5850checking$=tilevalid$(checkloop%)
 5860FOR tileoff%=checkloop% TO showloop%
 5870IF tilevalid$(tileoff%)>"0" AND tilevalid$(tileoff%)=checking$ THEN
 5880zlayer%=tilecoords%(tileoff%,1)
 5890xvalue%=tilecoords%(tileoff%,2)
 5900yvalue%=tilecoords%(tileoff%,3)
 5910PROChilight(0)
 5920tilevalid$(tileoff%)="0"
 5930ENDIF
 5940NEXT tileoff%
 5950IF undo%=FALSE THEN checkloop%=showloop%-1
 5960ENDIF
 5970checkloop%=checkloop%+1
 5980UNTIL checkloop%>=showloop%-1
 5990GCOL0,0:RECTANGLE FILL 20,940,1200,58
 6000IF undo%=TRUE OR doublesfound%=FALSE THEN
 6010REPEAT:MOUSEx%,y%,button%:UNTIL button%=0
 6020PRINTTAB(12,3)"NO MORE MOVES ---- PRESS ANY BUTTON TO RETURN TO GAME"
 6030REPEAT:MOUSEx%,y%,button%:UNTIL button%<>0
 6040ENDIF
 6050PRINTTAB(12,3)SPC(60)
 6060PRINTTAB(18,3)"PICK A TILE";SPC(30)
 6070VDU7
 6080ENDPROC
 6090REM --------------------------------------------------------------------
 6100DEFPROCdoneit
 6110PRINTTAB(12,12)"WELL DONE YOU HAVE REMOVED ALL TILES"
 6120REPEAT:MOUSEx%,y%,button%:UNTIL button%=0
 6130PRINTTAB(4,2)"PRESS MIDDLE BUTTON TO PLAY AGAIN -- RIGHT BUTTON TO QUIT"
 6140REPEAT
 6150MOUSEx%,y%,button%
 6160xhooray%=RND(1180):yhooray%=RND(800)
 6170VDU 23,27,0,RND(36),0,0,0,0,0,0
 6180PLOT &ED,xhooray%,yhooray%
 6190VDU 23,27,0,101,0,0,0,0,0,0
 6200PLOT &ED,xhooray%,yhooray%
 6210UNTIL button%<>0
 6220IF button%=2 THEN replay%=TRUE ELSE replay%=FALSE
 6230ENDPROC

L� --------------------------- LO-SHANG ---------------------------------
L� ----------------------- WRITTEN BY D.A.PEDDER ----- 18/12/89 ---------
�15
(�23,1,0,0,0,0,0,0,0,0
2�33,17)"PLEASE WAIT"
<	*SNEW
F*SLOAD BLOCKBITS.BLOCK15
Preplay%=�:return%=�
Ztype%=0:undo%=�:tileoff%=0
dvalid%=�:finished%=�
n� PIECES$(4,36)
x&� tilevalid$(42),tilecoords%(42,3)
�� boardpos$(6,15,8)
�dummy=�(-�)
�
ȗ � 1
�M� ----------------------- MAIN PROGRAM LOOP -----------------------------
��
�� replay%=� �
��33,17)"PLEASE WAIT"
�noofbits%=144
��defbits
�
replay%=�
��setboard(Z%,X%,Y%)
��:�draw
��
�

return%=�
�18,3)"PICK A TILE";�(30)
"�
,first$="-99":second$="-66"
6doublesvalid%=�
@�pointer
Jdoublesvalid%=�
T�replay%=� � return%=� �
^3firstx%=xvalue%:firsty%=yvalue%:firstz%=zlayer%
h-first$=boardpos$(firstz%,firstx%,firsty%)
r�tilevalid(0)
|� valid%=� � �hilight(1)
��
�&� valid%=� � replay%=� � return%=�
�� replay%=� � return%=� �
��
�%�18,3)"PICK A SECOND TILE";�(25)
��
��pointer
�6secondx%=xvalue%:secondy%=yvalue%:secondz%=zlayer%
�1second$=boardpos$(secondz%,secondx%,secondy%)
��tilevalid(0)
�&� valid%=� � replay%=� � return%=�
�(� valid%=� � replay%=� � return%=� �
�1� �(first$)<5 � �(second$)<5 � first$=second$
=� (�(first$)-1)�4=1 � (�(second$)-1)�4=1 � first$=second$
sametile%=�
V� firstx%=secondx% � firsty%=secondy% � firstz%=secondz% � sametile%=�:�hilight(0)
&$� first$=second$ � sametile%=� �
0noofbits%=noofbits%-2
:�remove
D3xvalue%=firstx%:yvalue%=firsty%:zlayer%=firstz%
N�remove
X�
b�hilight(0):�7
l�
v�
�,� first$=second$ � replay%=� � return%=�
��
�� noofbits%=0 � replay%=�
�)� noofbits%=0 � finished%=� � �doneit
��replay%=� � finished%=�
��
�M� -----------------------------------------------------------------------
�
��defbits
�� group%=0 � 1
�� singles%=1 � 4
�7PIECES$(singles%,(group%+1))=�(singles%+(group%*4))
�� singles%
�� group%
� double=1 � 4
� loop1 =3 � 36
$PIECES$(double,loop1)=�(loop1+6)
 � loop1
*�double
4�
>M� -----------------------------------------------------------------------
H��setboard(Z%,X%,Y%)
R� X%=6 � 9
\� Y%=3 � 6
f�pickabit(3,X%,Y%)
p�Y%
z�X%
�� X%=5 � 10
�� Y%=2 � 7
��pickabit(2,X%,Y%)
��Y%
��X%
�� X%=14 � 15
��pickabit(1,X%,4)
��X%
�� X%=4 � 11
�� Y%=1 � 8
��pickabit(1,X%,Y%)
��Y%
��X%
�pickabit(1,1,4)
�Y%=1 � 8 � 7
� X%=2 � 3
$�pickabit(1,X%,Y%)
.�X%
8� X%=12 � 13
B�pickabit(1,X%,Y%)
L�X%
V�Y%
`�X%=3 � 12 � 9
j� Y%=3 � 6
t�pickabit(1,X%,Y%)
~�Y%
��X%
��X%=2 � 13 � 11
�� Y%=4 � 5
��pickabit(1,X%,Y%)
��Y%
��X%
�� X%=7 � 8
�� Y%=4 � 5
��pickabit(4,X%,Y%)
��Y%
��X%
�#Z%=5:X%=7:Y%=4:�pickabit(5,7,4)
�

K� ---------------------------------------------------------------------
��pickabit(Z%,X%,Y%)
gotone=�
(�
2duble%=�(4):bitno%=�(36)
<#� PIECES$(duble%,bitno%)<>"0" �
Fgotone=�
P.boardpos$(Z%,X%,Y%)=PIECES$(duble%,bitno%)
Z� Z%<=2 � gotone=� �
d:� boardpos$(Z%+1,X%,Y%)=boardpos$(Z%,X%,Y%) � gotone=�
n:� boardpos$(Z%,X%-1,Y%)=boardpos$(Z%,X%,Y%) � gotone=�
x�
��
�� gotone=�
�PIECES$(duble%,bitno%)="0"
��
�L� ----------------------------------------------------------------------
�
��draw
��23,1,0,0,0,0,0,0,0,0
��8,0
��plot(0,42,15,14,4,4,1)
��plot(0,0,13,2,8,1,1)
��plot(0,0,10,5,7,2,2)
��plot(0,0,9,6,6,3,3)
��plot(0,0,8,7,5,4,4)
� boardpos$(1,2,4)>"0" �
� 23,27,0,98,0,0,0,0,0,0
� &ED,92,344
"�
,�plot(0,42,1,1,4,4,1)
6!zlayer%=4:yvalue%=4:xvalue%=7
@� boardpos$(4,7,4)>"0" �
J-� 23,27,0,�(boardpos$(4,7,4)),0,0,0,0,0,0
T� &ED,536,368
^�
h�plottop
r7�18,5)"NUMBER OF TILES REMAINING=";noofbits%;"   "
|�
�K� ---------------------------------------------------------------------
�9��plot(xdisp%,ydisp%,xmax%,xmin%,ymax%,ymin%,zlevel%)
�zlayer%=zlevel%
�� y%=ymax% � ymin% �-1
�� x%=xmax% � xmin% �-1
�$� boardpos$(zlayer%,x%,y%)>"0" �
�'� boardpos$(zlayer%+1,x%,y%)<="0" �
�5� 23,27,0,�(boardpos$(zlayer%,x%,y%)),0,0,0,0,0,0
�C� &ED,(84*(x%-1))+(zlayer%*8)+xdisp%,(84*y%)+(zlayer%*8)+ydisp%
��
�(� boardpos$(zlayer%,x%,y%-1) <="0" �
�� 23,27,0,99,0,0,0,0,0,0
�C� &ED,(84*(x%-1))+(zlayer%*8)+xdisp%,(84*y%)+(zlayer%*8)+ydisp%
�
(� boardpos$(zlayer%,x%-1,y%) <="0" �
� 23,27,0,98,0,0,0,0,0,0
&C� &ED,(84*(x%-1))+(zlayer%*8)+xdisp%,(84*y%)+(zlayer%*8)+ydisp%
0�
:�
D� x%
N� y%
X�
bK� ---------------------------------------------------------------------
l
��pointer
v�
�blocktop=�
�!�:ȗx%,y%,button%:� button%=0
�"�:ȗx%,y%,button%:� button%<>0
�Ȏ button% �
�� 4
�loop%=0
�
gotone%=�
�
� �dhH
��
�#� ztmp%,xtmp%,ytmp%,xlow%,ylow%
�(� boardpos$(ztmp%,xtmp%,ytmp%)>"0" �
�7�x%>=xlow% � x%<xlow%+84 � y%>=ylow% �y%<ylow%+84 �
�-zlayer%=ztmp%:xvalue%=xtmp%:yvalue%=ytmp%

gotone%=�
�
�
 loop%=loop%+1
*� gotone%=� � loop%=57
4� gotone%=� �
>yvalue%=(y%-10)�84
H%� yvalue%>8 � yvalue%=0:zlayer%=0
Rxvalue%=((x%-10)�84)+1
\&� xvalue%>15 � xvalue%=0:zlayer%=0
f>� boardpos$(1,xvalue%,yvalue%)>"0" � zlayer%=1 � zlayer%=0
p� xvalue%=1 � xvalue%>13 �
z
zlayer%=0
�� y%>391 � y%<468 �
�
yvalue%=4
�,� boardpos$(1,xvalue%,4)>"0" � zlayer%=1
��
��
��
�� 2
��menu(0)
�(� replay%=� � return%=� � blocktop=�
� �
�K� 5,7,4,594,421,4,7,4,545,376,4,7,5,545,460,4,8,4,629,376,4,8,5,629,460
�=� 3,6,3,453,284,3,6,4,453,368,3,6,5,453,452,3,6,6,453,536
�=� 3,7,3,537,284,3,7,4,537,368,3,7,5,537,452,3,7,6,537,536
	=� 3,8,3,621,284,3,8,4,621,368,3,8,5,621,452,3,8,6,621,536
	=� 3,9,3,705,284,3,9,4,705,368,3,9,5,705,452,3,9,6,705,536
	K� 2,5,2,361,192,2,5,3,361,276,2,5,4,361,360,2,5,5,361,444,2,5,6,361,528
	$K� 2,6,2,445,192,2,6,3,445,276,2,6,4,445,360,2,6,5,445,444,2,6,6,445,528
	.K� 2,7,2,529,192,2,7,3,529,276,2,7,4,529,360,2,7,5,529,444,2,7,6,529,528
	8K� 2,8,2,613,192,2,8,3,613,276,2,8,4,613,360,2,8,5,613,444,2,8,6,613,528
	BK� 2,9,2,696,192,2,9,3,696,276,2,9,4,696,360,2,9,5,696,444,2,9,6,696,528
	LP� 2,10,2,781,192,2,10,3,781,276,2,10,4,781,360,2,10,5,781,444,2,10,6,781,528
	VK� 2,5,7,361,612,2,6,7,445,612,2,7,7,529,612,2,8,7,613,612,2,9,7,697,612
	`� 2,10,7,781,612
	j� zlayer%<4 �
	t:� boardpos$(zlayer%+1,xvalue%,yvalue%)>"0"� blocktop=�
	~�
	�� blocktop=�
	��
	�K� ---------------------------------------------------------------------
	���remove
	�*boardpos$(zlayer%,xvalue%,yvalue%)="0"
	��deleteblock
	��drawsection
	�Ȏ xvalue% �
	�� 1
	�� 23,27,0,98,0,0,0,0,0,0
	�� &ED,92,428
	�� 15
� boardpos$(1,12,3)<>"0" �

.� 23,27,0,�(boardpos$(1,12,3)),0,0,0,0,0,0
� &ED,932,260
�
(�
27�18,5)"NUMBER OF TILES REMAINING=";noofbits%;"   "
<�
F�
PK� ---------------------------------------------------------------------
Z��hilight(action%)
d
ydelta%=0
n� action%=0 � �6,64 � �1,64
xȎ zlayer% �
�� 5
��boardpos$(5,7,4)>"0" �
�ȓ Ȑ 594,422,80,80
��
�� 4
��rectangle(0)
�� 0
�
�Ȏ xvalue% �
�
� 1,14,15
�1� boardpos$(1,xvalue%,4)>"0" � �rectangle(44)
�� 2,3,4,12,13
��rectangle(0)

*�zlayer%=yvalue% � zlayer%=xvalue%-3 �
 �rectangle(0)
" �
, �hardhilight
6�
@�
J�
T
�0,127
^�
hJ � -------------------------------------------------------------------
r��rectangle(ydelta%)
|Kȓ Ȑ (xvalue%-1)*84+zlayer%*8+7,(yvalue%*84)+zlayer%*8+5+ydelta%,80,80
��
�L� ----------------------------------------------------------------------
���hardhilight
�(xdatum%=(xvalue%-1)*84+(zlayer%+1)*8
�&ydatum%=(yvalue%*84)+(zlayer%+1)*8
�cx%=xdatum%+80
�cy%=ydatum%+76
� left%=-1:below%=-1:stack%=-1
��
�left%=left%+1
�/� boardpos$(left%+1,xvalue%-1,yvalue%)<="0"
�� left%>=zlayer% �
�$ytri1%=ydatum%+(left%-zlayer%)*8
$xtri1%=xdatum%+(left%-zlayer%)*8
�
!xtri1%=xdatum%:ytri1%=ydatum%
&�
0�
:below%=below%+1
D0� boardpos$(below%+1,xvalue%,yvalue%-1)<="0"
N� below%>=zlayer% �
X%ytri2%=ydatum%+(below%-zlayer%)*8
b%xtri2%=xdatum%+(below%-zlayer%)*8
l�
v!xtri2%=xdatum%:ytri2%=ydatum%
��
�� xtri1%,ytri1%
�� xtri1%,cy%
��85,cx%,cy%
��cx%,cy%
�� cx%,ytri2%
��85,xtri2%,ytri2%
�	�6,64
��
�stack%=stack%+1
�2� boardpos$(stack%+1,xvalue%-1,yvalue%-1)<="0"
�%xtri3%=(xvalue%-2)*84+stack%*8+88

%ytri3%=(yvalue%-1)*84+stack%*8+88

� xtri3%>xtri1% �

� xtri1%,ytri1%

 � xtri1%,ytri3%

*� 85,xtri3%,ytri3%

4�

>� ytri3%>ytri2% �

H� xtri2%,ytri2%

R� xtri3%,ytri2%

\� 85,xtri3%,ytri3%

f�

p�

zL� ----------------------------------------------------------------------

���tilevalid(type%)

�valid%=�

�� type%=0 � �18,3) �(40)

�� zlayer%>0 �

�� xvalue%>1 � xvalue%<15 �

�d� boardpos$(zlayer%,xvalue%+1,yvalue%)>"0" � boardpos$(zlayer%,xvalue%-1,yvalue%)>"0" � valid%=�

�1� boardpos$(5,7,4)>"0" � zlayer%=4 � valid%=�

�W� zlayer%=1 � xvalue%=2 � (yvalue%=4 � yvalue%=5) � boardpos$(1,1,4)>"0" � valid%=�

�Y� zlayer%=1 � xvalue%=13 � (yvalue%=4 � yvalue%=5) � boardpos$(1,14,4)>"0" � valid%=�

��valid%=� � type%=0 �

�5�18,3)"THAT TILE IS NOT FREE - PICK ANOTHER ONE"

��7

��
�
�
valid%=�
$1 � type%=0 � �18,3)"POINTER NOT ON A TILE !"
.�
8�
BL� ----------------------------------------------------------------------
L��deleteblock
VȎ zlayer% �
`� 5
j�plot(0,0,8,7,5,4,4)
t
~�0,0
�� 23,27,0,100,0,0,0,0,0,0
�Ȏ xvalue% �
�� 1
�'� &ED,0,84*(yvalue%)+(zlayer%*8)+42
�� 14
� � &ED,1108,(84*(yvalue%))+50
�� 15
� � &ED,1192,(84*(yvalue%))+50
�"� &ED,1186,(84*(yvalue%-1))+50
�
�?� &ED,(84*(xvalue%-1))+(zlayer%*8),(84*yvalue%)+(zlayer%*8)
��
�8,0

�
�
L� ----------------------------------------------------------------------
(
��plottop
2� boardpos$(5,7,4)<>"0" �
<-� 23,27,0,�(boardpos$(5,7,4)),0,0,0,0,0,0
F� &ED,584,416
P� 23,27,0,99,0,0,0,0,0,0
Z� &ED,584,416
d� 23,27,0,98,0,0,0,0,0,0
n� &ED,584,416
x�
��
�L� ----------------------------------------------------------------------
���drawsection
�� �3,3) �(50)
�,xlow%=(84*(xvalue%-1)):� xlow%<0 xlow%=0
�xhigh%=(84*(xvalue%-1))+130
�(ylow%=(84*yvalue%):� ylow%<0 ylow%=0
�yhigh%=(84*yvalue%)+120
�"�24,xlow%;ylow%;xhigh%;yhigh%;
�Cxmax%=xvalue%+1:xmin%=xvalue%-2:ymax%=yvalue%+1:ymin%=yvalue%-2
�� xmin%<2 xmin%=2
�� ymin%<1 ymin%=1
�� xmax%>13 xmax%=13
� ymax%>8 ymax%=8
� zloop%=1 � 4
-�plot(0,0,xmax%,xmin%,ymax%,ymin%,zloop%)
"�zloop%
,�plottop
6�26
@�
JK� ---------------------------------------------------------------------
T��showallbits
^�
hmargin%=160
r�5
|6� 0,765:�0,127:�"FLOWERS   1 of":� 160,730:�"each"
�� loop%=1 � 4
�� 23,27,0,loop%,0,0,0,0,0,0
�!� &ED,margin%+(loop%*100),700
�� loop%
�/� 0,665:�"SEASONS   1 of":� 160,630:�"each"
�� loop%=1 � 4
�!� 23,27,0,4+loop%,0,0,0,0,0,0
�!� &ED,margin%+(loop%*100),600
�� loop%
�/� 0,565:�"DRAGONS   4 of":� 160,530:�"each"
�� loop%=1 � 3
�!� 23,27,0,8+loop%,0,0,0,0,0,0
�!� &ED,margin%+(loop%*100),500
� loop%
/� 0,465:�"WINDS     4 of":� 160,430:�"each"
� loop%=1 � 4
&"� 23,27,0,38+loop%,0,0,0,0,0,0
0!� &ED,margin%+(loop%*100),400
:� loop%
D
� �DNQ
N>� 365,SPOTS     4 of,265,CRAKS     4 of,165,BAMS      4 of
X� group%=0 � 2
b�yposition%,string$
l�0,yposition%:�string$
v�160,yposition%-35:�"each"
�� loop%=1 � 9
�/� 23,27,0,(11+loop%)+(group%*9),0,0,0,0,0,0
�.� &ED,margin%+(loop%*100),300-(group%*100)
�� loop%
�� group%
�'� 700,780:�"ANY TWO FLOWERS CAN BE"
�#� 700,740:�"SELECTED AS A PAIR"
�'� 700,680:�"ANY TWO SEASONS CAN BE"
�#� 700,640:�"SELECTED AS A PAIR"
�!�:ȗx%,y%,button%:� button%=0
��4
��23,1,0,0,0,0,0,0,0,0
�L �3,2)"The game is played using 'MAH JONG' tiles , as displayed below."
J �3,3)"The object is to remove tiles , in pairs , until none remain."
*�3,4)"Tiles can only be removed if :"
G�8,5)" EITHER   There is no tile to it's right on the same level."
 F�8,6)" OR       There is no tile to it's left on the same level."
*0�15,30)"PRESS ANY BUTTON TO RETURN TO GAME"
4"�:ȗx%,y%,button%:� button%<>0
>
return%=�
H�:�draw
R�
\K� ---------------------------------------------------------------------
f��menu(type%)
p�0,20:�5
zȓ Ȑ 20,940,1200,58
�� type%=0 �
�� doublesvalid%=� �
�
� �tbR
�3� MENU OFF,SHOW MOVES,NEW GAME,INFORMATION,QUIT
�� � �tvR
�� MENU OFF,,NEW GAME,,QUIT
��
��
�� type%=1 �
�
� �dhR
�6� BACK TO GAME,SHOW NEXT,NEW GAME,INFORMATION,QUIT
��
�� boxloop%=1 � 5
	�0,42
�mess1$
"menupos%=30+(240*(boxloop%-1))
$ȓ Ȑ menupos%,950,220,40
.#� 10+menupos%,980:�0,0:� mess1$
8
�boxloop%
B!�:ȗx%,y%,button%:� button%=0
L"�:ȗx%,y%,button%:� button%<>0
Vselectvalid%=0
`$� y%>950 � y%<990 � button%<>2 �
j � type%=0 �
t+� x%>31 � x%<250 � ȓ Ȑ 20,940,1200,58
~� x%>271 � x%<490 �
�� doublesvalid%=� �
�selectvalid%=1:�showmoves
��
�selectvalid%=0 :�7
��
��
��
�.� type%=1 � y%>950 � y%<990 � button%<>2 �
�-� x%>31 � x%<250 � selectvalid%=1:undo%=�
�.� x%>271 � x%<490 � selectvalid%=1:undo%=�
��
�#�y%>950 � y%<990 � button%<>2 �
2� x%>511 � x%<730 � selectvalid%=1:�:replay%=�

� x%>751 � x%<970 �
� doublesvalid%=� �
� type%=0 �
(selectvalid%=1:�showallbits
2�
<selectvalid%=1
F�
P�
Zselectvalid%=0 :�7
d�
n�
xg� x%>991 � x%<1210 � �:�4:�127:�20,20)"BYE!":�12,22)"Programmer D.A.Pedder":replay%=�:finished%=�
��
��
�,� selectvalid%<>1 � ȓ Ȑ 20,940,1200,58
��4
��23,1,0,0,0,0,0,0,0,0
�
yvalue%=0
��
�K� ---------------------------------------------------------------------
���showmoves
�� button%=0
��4
��23,1,0,0,0,0,0,0,0,0
��12,3)�(60)
showloop%=0
� xshow%=1 � 15
� yshow%=1 � 8
"� zshow%=1 � 5
,+� boardpos$(zshow%,xshow%,yshow%)>"0" �
60zlayer%=zshow%:xvalue%=xshow%:yvalue%=yshow%
@valid%=�
J�tilevalid(1)
T9� valid%=� � boardpos$(zshow%+1,xshow%,yshow%)<="0" �
^9tilevalid$(showloop%)=boardpos$(zshow%,xshow%,yshow%)
h?� �(tilevalid$(showloop%))<9 � �(tilevalid$(showloop%))>0 �
r"� �(tilevalid$(showloop%))<5 �
|tilevalid$(showloop%)="1"
��
�tilevalid$(showloop%)="2"
��
��
�#tilecoords%(showloop%,1)=zshow%
�#tilecoords%(showloop%,2)=xshow%
�#tilecoords%(showloop%,3)=yshow%
�showloop%=showloop%+1
��
��
�� zshow%
�� yshow%
�� xshow%
checkloop%=0
�
undo%=�
&doublesfound%=�
0doubloop%=checkloop%+1
:�
DQ� tilevalid$(checkloop%)>"0" � tilevalid$(checkloop%)=tilevalid$(doubloop%) �
N%zlayer%=tilecoords%(checkloop%,1)
X%xvalue%=tilecoords%(checkloop%,2)
b%yvalue%=tilecoords%(checkloop%,3)
l�hilight(1)
v$zlayer%=tilecoords%(doubloop%,1)
�$xvalue%=tilecoords%(doubloop%,2)
�$yvalue%=tilecoords%(doubloop%,3)
��hilight(1)
�doublesfound%=�
��
�doubloop%=doubloop%+1
�� doubloop%>=showloop%
�� doublesfound%=� �
��menu(1)
�$checking$=tilevalid$(checkloop%)
�%� tileoff%=checkloop% � showloop%
�A� tilevalid$(tileoff%)>"0" � tilevalid$(tileoff%)=checking$ �
�#zlayer%=tilecoords%(tileoff%,1)
#xvalue%=tilecoords%(tileoff%,2)
#yvalue%=tilecoords%(tileoff%,3)
�hilight(0)
 tilevalid$(tileoff%)="0"
*�
4� tileoff%
>&� undo%=� � checkloop%=showloop%-1
H�
Rcheckloop%=checkloop%+1
\� checkloop%>=showloop%-1
f�0,0:ȓ Ȑ 20,940,1200,58
p!� undo%=� � doublesfound%=� �
z!�:ȗx%,y%,button%:� button%=0
�B�12,3)"NO MORE MOVES ---- PRESS ANY BUTTON TO RETURN TO GAME"
�"�:ȗx%,y%,button%:� button%<>0
��
��12,3)�(60)
��18,3)"PICK A TILE";�(30)
��7
��
�J� --------------------------------------------------------------------
���doneit
�2�12,12)"WELL DONE YOU HAVE REMOVED ALL TILES"
�!�:ȗx%,y%,button%:� button%=0
�E�4,2)"PRESS MIDDLE BUTTON TO PLAY AGAIN -- RIGHT BUTTON TO QUIT"
��
ȗx%,y%,button%
$xhooray%=�(1180):yhooray%=�(800)
� 23,27,0,�(36),0,0,0,0,0,0
$� &ED,xhooray%,yhooray%
.� 23,27,0,101,0,0,0,0,0,0
8� &ED,xhooray%,yhooray%
B� button%<>0
L'� button%=2 � replay%=� � replay%=�
V�
�
00000000  0d 00 0a 4c f4 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...L. ----------|
00000010  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000020  2d 20 4c 4f 2d 53 48 41  4e 47 20 2d 2d 2d 2d 2d  |- LO-SHANG -----|
00000030  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000040  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 14 4c  |------------...L|
00000050  f4 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |. --------------|
00000060  2d 2d 2d 2d 2d 2d 2d 2d  2d 20 57 52 49 54 54 45  |--------- WRITTE|
00000070  4e 20 42 59 20 44 2e 41  2e 50 45 44 44 45 52 20  |N BY D.A.PEDDER |
00000080  2d 2d 2d 2d 2d 20 31 38  2f 31 32 2f 38 39 20 2d  |----- 18/12/89 -|
00000090  2d 2d 2d 2d 2d 2d 2d 2d  0d 00 1e 07 eb 31 35 0d  |--------.....15.|
000000a0  00 28 19 ef 32 33 2c 31  2c 30 2c 30 2c 30 2c 30  |.(..23,1,0,0,0,0|
000000b0  2c 30 2c 30 2c 30 2c 30  0d 00 32 19 f1 8a 33 33  |,0,0,0,0..2...33|
000000c0  2c 31 37 29 22 50 4c 45  41 53 45 20 57 41 49 54  |,17)"PLEASE WAIT|
000000d0  22 0d 00 3c 09 2a 53 4e  45 57 0d 00 46 1c 2a 53  |"..<.*SNEW..F.*S|
000000e0  4c 4f 41 44 20 42 4c 4f  43 4b 42 49 54 53 2e 42  |LOAD BLOCKBITS.B|
000000f0  4c 4f 43 4b 31 35 0d 00  50 17 72 65 70 6c 61 79  |LOCK15..P.replay|
00000100  25 3d b9 3a 72 65 74 75  72 6e 25 3d a3 0d 00 5a  |%=.:return%=...Z|
00000110  1e 74 79 70 65 25 3d 30  3a 75 6e 64 6f 25 3d a3  |.type%=0:undo%=.|
00000120  3a 74 69 6c 65 6f 66 66  25 3d 30 0d 00 64 18 76  |:tileoff%=0..d.v|
00000130  61 6c 69 64 25 3d b9 3a  66 69 6e 69 73 68 65 64  |alid%=.:finished|
00000140  25 3d a3 0d 00 6e 13 de  20 50 49 45 43 45 53 24  |%=...n.. PIECES$|
00000150  28 34 2c 33 36 29 0d 00  78 26 de 20 74 69 6c 65  |(4,36)..x&. tile|
00000160  76 61 6c 69 64 24 28 34  32 29 2c 74 69 6c 65 63  |valid$(42),tilec|
00000170  6f 6f 72 64 73 25 28 34  32 2c 33 29 0d 00 82 17  |oords%(42,3)....|
00000180  de 20 62 6f 61 72 64 70  6f 73 24 28 36 2c 31 35  |. boardpos$(6,15|
00000190  2c 38 29 0d 00 8c 0f 64  75 6d 6d 79 3d b3 28 2d  |,8)....dummy=.(-|
000001a0  91 29 0d 00 96 0a c8 97  20 ee 20 31 0d 00 a0 4d  |.)...... . 1...M|
000001b0  f4 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |. --------------|
000001c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 20 4d 41 49 4e 20 50  |--------- MAIN P|
000001d0  52 4f 47 52 41 4d 20 4c  4f 4f 50 20 2d 2d 2d 2d  |ROGRAM LOOP ----|
000001e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000001f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 00 aa 05 f5 0d 00  |---------.......|
00000200  b4 11 e7 20 72 65 70 6c  61 79 25 3d b9 20 8c 0d  |... replay%=. ..|
00000210  00 be 19 f1 8a 33 33 2c  31 37 29 22 50 4c 45 41  |.....33,17)"PLEA|
00000220  53 45 20 57 41 49 54 22  0d 00 c8 11 6e 6f 6f 66  |SE WAIT"....noof|
00000230  62 69 74 73 25 3d 31 34  34 0d 00 d2 0c f2 64 65  |bits%=144.....de|
00000240  66 62 69 74 73 0d 00 dc  0d 72 65 70 6c 61 79 25  |fbits....replay%|
00000250  3d a3 0d 00 e6 17 f2 73  65 74 62 6f 61 72 64 28  |=......setboard(|
00000260  5a 25 2c 58 25 2c 59 25  29 0d 00 f0 0b db 3a f2  |Z%,X%,Y%).....:.|
00000270  64 72 61 77 0d 00 fa 05  cd 0d 01 04 05 f5 0d 01  |draw............|
00000280  0e 0d 72 65 74 75 72 6e  25 3d a3 0d 01 18 1e f1  |..return%=......|
00000290  8a 31 38 2c 33 29 22 50  49 43 4b 20 41 20 54 49  |.18,3)"PICK A TI|
000002a0  4c 45 22 3b 89 28 33 30  29 0d 01 22 05 f5 0d 01  |LE";.(30).."....|
000002b0  2c 1e 66 69 72 73 74 24  3d 22 2d 39 39 22 3a 73  |,.first$="-99":s|
000002c0  65 63 6f 6e 64 24 3d 22  2d 36 36 22 0d 01 36 13  |econd$="-66"..6.|
000002d0  64 6f 75 62 6c 65 73 76  61 6c 69 64 25 3d b9 0d  |doublesvalid%=..|
000002e0  01 40 0c f2 70 6f 69 6e  74 65 72 0d 01 4a 13 64  |.@..pointer..J.d|
000002f0  6f 75 62 6c 65 73 76 61  6c 69 64 25 3d a3 0d 01  |oublesvalid%=...|
00000300  54 1c e7 72 65 70 6c 61  79 25 3d a3 20 80 20 72  |T..replay%=. . r|
00000310  65 74 75 72 6e 25 3d a3  20 8c 0d 01 5e 33 66 69  |eturn%=. ...^3fi|
00000320  72 73 74 78 25 3d 78 76  61 6c 75 65 25 3a 66 69  |rstx%=xvalue%:fi|
00000330  72 73 74 79 25 3d 79 76  61 6c 75 65 25 3a 66 69  |rsty%=yvalue%:fi|
00000340  72 73 74 7a 25 3d 7a 6c  61 79 65 72 25 0d 01 68  |rstz%=zlayer%..h|
00000350  2d 66 69 72 73 74 24 3d  62 6f 61 72 64 70 6f 73  |-first$=boardpos|
00000360  24 28 66 69 72 73 74 7a  25 2c 66 69 72 73 74 78  |$(firstz%,firstx|
00000370  25 2c 66 69 72 73 74 79  25 29 0d 01 72 11 f2 74  |%,firsty%)..r..t|
00000380  69 6c 65 76 61 6c 69 64  28 30 29 0d 01 7c 1c e7  |ilevalid(0)..|..|
00000390  20 76 61 6c 69 64 25 3d  b9 20 8c 20 f2 68 69 6c  | valid%=. . .hil|
000003a0  69 67 68 74 28 31 29 0d  01 86 05 cd 0d 01 90 26  |ight(1)........&|
000003b0  fd 20 76 61 6c 69 64 25  3d b9 20 84 20 72 65 70  |. valid%=. . rep|
000003c0  6c 61 79 25 3d b9 20 84  20 72 65 74 75 72 6e 25  |lay%=. . return%|
000003d0  3d b9 0d 01 9a 1d e7 20  72 65 70 6c 61 79 25 3d  |=...... replay%=|
000003e0  a3 20 80 20 72 65 74 75  72 6e 25 3d a3 20 8c 0d  |. . return%=. ..|
000003f0  01 a4 05 f5 0d 01 ae 25  f1 8a 31 38 2c 33 29 22  |.......%..18,3)"|
00000400  50 49 43 4b 20 41 20 53  45 43 4f 4e 44 20 54 49  |PICK A SECOND TI|
00000410  4c 45 22 3b 89 28 32 35  29 0d 01 b8 05 f5 0d 01  |LE";.(25).......|
00000420  c2 0c f2 70 6f 69 6e 74  65 72 0d 01 cc 36 73 65  |...pointer...6se|
00000430  63 6f 6e 64 78 25 3d 78  76 61 6c 75 65 25 3a 73  |condx%=xvalue%:s|
00000440  65 63 6f 6e 64 79 25 3d  79 76 61 6c 75 65 25 3a  |econdy%=yvalue%:|
00000450  73 65 63 6f 6e 64 7a 25  3d 7a 6c 61 79 65 72 25  |secondz%=zlayer%|
00000460  0d 01 d6 31 73 65 63 6f  6e 64 24 3d 62 6f 61 72  |...1second$=boar|
00000470  64 70 6f 73 24 28 73 65  63 6f 6e 64 7a 25 2c 73  |dpos$(secondz%,s|
00000480  65 63 6f 6e 64 78 25 2c  73 65 63 6f 6e 64 79 25  |econdx%,secondy%|
00000490  29 0d 01 e0 11 f2 74 69  6c 65 76 61 6c 69 64 28  |).....tilevalid(|
000004a0  30 29 0d 01 ea 26 fd 20  76 61 6c 69 64 25 3d b9  |0)...&. valid%=.|
000004b0  20 84 20 72 65 70 6c 61  79 25 3d b9 20 84 20 72  | . replay%=. . r|
000004c0  65 74 75 72 6e 25 3d b9  0d 01 f4 28 e7 20 76 61  |eturn%=....(. va|
000004d0  6c 69 64 25 3d b9 20 80  20 72 65 70 6c 61 79 25  |lid%=. . replay%|
000004e0  3d a3 20 80 20 72 65 74  75 72 6e 25 3d a3 20 8c  |=. . return%=. .|
000004f0  0d 01 fe 31 e7 20 bb 28  66 69 72 73 74 24 29 3c  |...1. .(first$)<|
00000500  35 20 80 20 bb 28 73 65  63 6f 6e 64 24 29 3c 35  |5 . .(second$)<5|
00000510  20 8c 20 66 69 72 73 74  24 3d 73 65 63 6f 6e 64  | . first$=second|
00000520  24 0d 02 08 3d e7 20 28  bb 28 66 69 72 73 74 24  |$...=. (.(first$|
00000530  29 2d 31 29 81 34 3d 31  20 80 20 28 bb 28 73 65  |)-1).4=1 . (.(se|
00000540  63 6f 6e 64 24 29 2d 31  29 81 34 3d 31 20 8c 20  |cond$)-1).4=1 . |
00000550  66 69 72 73 74 24 3d 73  65 63 6f 6e 64 24 0d 02  |first$=second$..|
00000560  12 0f 73 61 6d 65 74 69  6c 65 25 3d a3 0d 02 1c  |..sametile%=....|
00000570  56 e7 20 66 69 72 73 74  78 25 3d 73 65 63 6f 6e  |V. firstx%=secon|
00000580  64 78 25 20 80 20 66 69  72 73 74 79 25 3d 73 65  |dx% . firsty%=se|
00000590  63 6f 6e 64 79 25 20 80  20 66 69 72 73 74 7a 25  |condy% . firstz%|
000005a0  3d 73 65 63 6f 6e 64 7a  25 20 8c 20 73 61 6d 65  |=secondz% . same|
000005b0  74 69 6c 65 25 3d b9 3a  f2 68 69 6c 69 67 68 74  |tile%=.:.hilight|
000005c0  28 30 29 0d 02 26 24 e7  20 66 69 72 73 74 24 3d  |(0)..&$. first$=|
000005d0  73 65 63 6f 6e 64 24 20  80 20 73 61 6d 65 74 69  |second$ . sameti|
000005e0  6c 65 25 3d a3 20 8c 0d  02 30 19 6e 6f 6f 66 62  |le%=. ...0.noofb|
000005f0  69 74 73 25 3d 6e 6f 6f  66 62 69 74 73 25 2d 32  |its%=noofbits%-2|
00000600  0d 02 3a 0b f2 72 65 6d  6f 76 65 0d 02 44 33 78  |..:..remove..D3x|
00000610  76 61 6c 75 65 25 3d 66  69 72 73 74 78 25 3a 79  |value%=firstx%:y|
00000620  76 61 6c 75 65 25 3d 66  69 72 73 74 79 25 3a 7a  |value%=firsty%:z|
00000630  6c 61 79 65 72 25 3d 66  69 72 73 74 7a 25 0d 02  |layer%=firstz%..|
00000640  4e 0b f2 72 65 6d 6f 76  65 0d 02 58 05 cc 0d 02  |N..remove..X....|
00000650  62 12 f2 68 69 6c 69 67  68 74 28 30 29 3a ef 37  |b..hilight(0):.7|
00000660  0d 02 6c 05 cd 0d 02 76  05 cd 0d 02 80 2c fd 20  |..l....v.....,. |
00000670  66 69 72 73 74 24 3d 73  65 63 6f 6e 64 24 20 84  |first$=second$ .|
00000680  20 72 65 70 6c 61 79 25  3d b9 20 84 20 72 65 74  | replay%=. . ret|
00000690  75 72 6e 25 3d b9 0d 02  8a 05 cd 0d 02 94 1d fd  |urn%=...........|
000006a0  20 6e 6f 6f 66 62 69 74  73 25 3d 30 20 84 20 72  | noofbits%=0 . r|
000006b0  65 70 6c 61 79 25 3d b9  0d 02 9e 29 e7 20 6e 6f  |eplay%=....). no|
000006c0  6f 66 62 69 74 73 25 3d  30 20 80 20 66 69 6e 69  |ofbits%=0 . fini|
000006d0  73 68 65 64 25 3d a3 20  8c 20 f2 64 6f 6e 65 69  |shed%=. . .donei|
000006e0  74 0d 02 a8 1c fd 72 65  70 6c 61 79 25 3d a3 20  |t.....replay%=. |
000006f0  84 20 66 69 6e 69 73 68  65 64 25 3d b9 0d 02 b2  |. finished%=....|
00000700  05 e0 0d 02 bc 4d f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |.....M. --------|
00000710  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000740  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00000750  02 c6 0d dd f2 64 65 66  62 69 74 73 0d 02 d0 12  |.....defbits....|
00000760  e3 20 67 72 6f 75 70 25  3d 30 20 b8 20 31 0d 02  |. group%=0 . 1..|
00000770  da 14 e3 20 73 69 6e 67  6c 65 73 25 3d 31 20 b8  |... singles%=1 .|
00000780  20 34 0d 02 e4 37 50 49  45 43 45 53 24 28 73 69  | 4...7PIECES$(si|
00000790  6e 67 6c 65 73 25 2c 28  67 72 6f 75 70 25 2b 31  |ngles%,(group%+1|
000007a0  29 29 3d c3 28 73 69 6e  67 6c 65 73 25 2b 28 67  |))=.(singles%+(g|
000007b0  72 6f 75 70 25 2a 34 29  29 0d 02 ee 0e ed 20 73  |roup%*4))..... s|
000007c0  69 6e 67 6c 65 73 25 0d  02 f8 0c ed 20 67 72 6f  |ingles%..... gro|
000007d0  75 70 25 0d 03 02 12 e3  20 64 6f 75 62 6c 65 3d  |up%..... double=|
000007e0  31 20 b8 20 34 0d 03 0c  13 e3 20 6c 6f 6f 70 31  |1 . 4..... loop1|
000007f0  20 3d 33 20 b8 20 33 36  0d 03 16 24 50 49 45 43  | =3 . 36...$PIEC|
00000800  45 53 24 28 64 6f 75 62  6c 65 2c 6c 6f 6f 70 31  |ES$(double,loop1|
00000810  29 3d c3 28 6c 6f 6f 70  31 2b 36 29 0d 03 20 0b  |)=.(loop1+6).. .|
00000820  ed 20 6c 6f 6f 70 31 0d  03 2a 0b ed 64 6f 75 62  |. loop1..*..doub|
00000830  6c 65 0d 03 34 05 e1 0d  03 3e 4d f4 20 2d 2d 2d  |le..4....>M. ---|
00000840  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000880  2d 2d 2d 2d 0d 03 48 18  dd f2 73 65 74 62 6f 61  |----..H...setboa|
00000890  72 64 28 5a 25 2c 58 25  2c 59 25 29 0d 03 52 0e  |rd(Z%,X%,Y%)..R.|
000008a0  e3 20 58 25 3d 36 20 b8  20 39 0d 03 5c 0e e3 20  |. X%=6 . 9..\.. |
000008b0  59 25 3d 33 20 b8 20 36  0d 03 66 16 f2 70 69 63  |Y%=3 . 6..f..pic|
000008c0  6b 61 62 69 74 28 33 2c  58 25 2c 59 25 29 0d 03  |kabit(3,X%,Y%)..|
000008d0  70 07 ed 59 25 0d 03 7a  07 ed 58 25 0d 03 84 0f  |p..Y%..z..X%....|
000008e0  e3 20 58 25 3d 35 20 b8  20 31 30 0d 03 8e 0e e3  |. X%=5 . 10.....|
000008f0  20 59 25 3d 32 20 b8 20  37 0d 03 98 16 f2 70 69  | Y%=2 . 7.....pi|
00000900  63 6b 61 62 69 74 28 32  2c 58 25 2c 59 25 29 0d  |ckabit(2,X%,Y%).|
00000910  03 a2 07 ed 59 25 0d 03  ac 07 ed 58 25 0d 03 b6  |....Y%.....X%...|
00000920  10 e3 20 58 25 3d 31 34  20 b8 20 31 35 0d 03 c0  |.. X%=14 . 15...|
00000930  15 f2 70 69 63 6b 61 62  69 74 28 31 2c 58 25 2c  |..pickabit(1,X%,|
00000940  34 29 0d 03 ca 07 ed 58  25 0d 03 d4 0f e3 20 58  |4).....X%..... X|
00000950  25 3d 34 20 b8 20 31 31  0d 03 de 0e e3 20 59 25  |%=4 . 11..... Y%|
00000960  3d 31 20 b8 20 38 0d 03  e8 16 f2 70 69 63 6b 61  |=1 . 8.....picka|
00000970  62 69 74 28 31 2c 58 25  2c 59 25 29 0d 03 f2 07  |bit(1,X%,Y%)....|
00000980  ed 59 25 0d 03 fc 07 ed  58 25 0d 04 06 14 f2 70  |.Y%.....X%.....p|
00000990  69 63 6b 61 62 69 74 28  31 2c 31 2c 34 29 0d 04  |ickabit(1,1,4)..|
000009a0  10 11 e3 59 25 3d 31 20  b8 20 38 20 88 20 37 0d  |...Y%=1 . 8 . 7.|
000009b0  04 1a 0e e3 20 58 25 3d  32 20 b8 20 33 0d 04 24  |.... X%=2 . 3..$|
000009c0  16 f2 70 69 63 6b 61 62  69 74 28 31 2c 58 25 2c  |..pickabit(1,X%,|
000009d0  59 25 29 0d 04 2e 07 ed  58 25 0d 04 38 10 e3 20  |Y%).....X%..8.. |
000009e0  58 25 3d 31 32 20 b8 20  31 33 0d 04 42 16 f2 70  |X%=12 . 13..B..p|
000009f0  69 63 6b 61 62 69 74 28  31 2c 58 25 2c 59 25 29  |ickabit(1,X%,Y%)|
00000a00  0d 04 4c 07 ed 58 25 0d  04 56 07 ed 59 25 0d 04  |..L..X%..V..Y%..|
00000a10  60 12 e3 58 25 3d 33 20  b8 20 31 32 20 88 20 39  |`..X%=3 . 12 . 9|
00000a20  0d 04 6a 0e e3 20 59 25  3d 33 20 b8 20 36 0d 04  |..j.. Y%=3 . 6..|
00000a30  74 16 f2 70 69 63 6b 61  62 69 74 28 31 2c 58 25  |t..pickabit(1,X%|
00000a40  2c 59 25 29 0d 04 7e 07  ed 59 25 0d 04 88 07 ed  |,Y%)..~..Y%.....|
00000a50  58 25 0d 04 92 13 e3 58  25 3d 32 20 b8 20 31 33  |X%.....X%=2 . 13|
00000a60  20 88 20 31 31 0d 04 9c  0e e3 20 59 25 3d 34 20  | . 11..... Y%=4 |
00000a70  b8 20 35 0d 04 a6 16 f2  70 69 63 6b 61 62 69 74  |. 5.....pickabit|
00000a80  28 31 2c 58 25 2c 59 25  29 0d 04 b0 07 ed 59 25  |(1,X%,Y%).....Y%|
00000a90  0d 04 ba 07 ed 58 25 0d  04 c4 0e e3 20 58 25 3d  |.....X%..... X%=|
00000aa0  37 20 b8 20 38 0d 04 ce  0e e3 20 59 25 3d 34 20  |7 . 8..... Y%=4 |
00000ab0  b8 20 35 0d 04 d8 16 f2  70 69 63 6b 61 62 69 74  |. 5.....pickabit|
00000ac0  28 34 2c 58 25 2c 59 25  29 0d 04 e2 07 ed 59 25  |(4,X%,Y%).....Y%|
00000ad0  0d 04 ec 07 ed 58 25 0d  04 f6 23 5a 25 3d 35 3a  |.....X%...#Z%=5:|
00000ae0  58 25 3d 37 3a 59 25 3d  34 3a f2 70 69 63 6b 61  |X%=7:Y%=4:.picka|
00000af0  62 69 74 28 35 2c 37 2c  34 29 0d 05 00 05 e1 0d  |bit(5,7,4)......|
00000b00  05 0a 4b f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..K. -----------|
00000b10  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000b40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 05 14 18 dd f2  |----------......|
00000b50  70 69 63 6b 61 62 69 74  28 5a 25 2c 58 25 2c 59  |pickabit(Z%,X%,Y|
00000b60  25 29 0d 05 1e 0c 67 6f  74 6f 6e 65 3d a3 0d 05  |%)....gotone=...|
00000b70  28 05 f5 0d 05 32 1c 64  75 62 6c 65 25 3d b3 28  |(....2.duble%=.(|
00000b80  34 29 3a 62 69 74 6e 6f  25 3d b3 28 33 36 29 0d  |4):bitno%=.(36).|
00000b90  05 3c 23 e7 20 50 49 45  43 45 53 24 28 64 75 62  |.<#. PIECES$(dub|
00000ba0  6c 65 25 2c 62 69 74 6e  6f 25 29 3c 3e 22 30 22  |le%,bitno%)<>"0"|
00000bb0  20 8c 0d 05 46 0c 67 6f  74 6f 6e 65 3d b9 0d 05  | ...F.gotone=...|
00000bc0  50 2e 62 6f 61 72 64 70  6f 73 24 28 5a 25 2c 58  |P.boardpos$(Z%,X|
00000bd0  25 2c 59 25 29 3d 50 49  45 43 45 53 24 28 64 75  |%,Y%)=PIECES$(du|
00000be0  62 6c 65 25 2c 62 69 74  6e 6f 25 29 0d 05 5a 18  |ble%,bitno%)..Z.|
00000bf0  e7 20 5a 25 3c 3d 32 20  80 20 67 6f 74 6f 6e 65  |. Z%<=2 . gotone|
00000c00  3d b9 20 8c 0d 05 64 3a  e7 20 62 6f 61 72 64 70  |=. ...d:. boardp|
00000c10  6f 73 24 28 5a 25 2b 31  2c 58 25 2c 59 25 29 3d  |os$(Z%+1,X%,Y%)=|
00000c20  62 6f 61 72 64 70 6f 73  24 28 5a 25 2c 58 25 2c  |boardpos$(Z%,X%,|
00000c30  59 25 29 20 8c 20 67 6f  74 6f 6e 65 3d a3 0d 05  |Y%) . gotone=...|
00000c40  6e 3a e7 20 62 6f 61 72  64 70 6f 73 24 28 5a 25  |n:. boardpos$(Z%|
00000c50  2c 58 25 2d 31 2c 59 25  29 3d 62 6f 61 72 64 70  |,X%-1,Y%)=boardp|
00000c60  6f 73 24 28 5a 25 2c 58  25 2c 59 25 29 20 8c 20  |os$(Z%,X%,Y%) . |
00000c70  67 6f 74 6f 6e 65 3d a3  0d 05 78 05 cd 0d 05 82  |gotone=...x.....|
00000c80  05 cd 0d 05 8c 0e fd 20  67 6f 74 6f 6e 65 3d b9  |....... gotone=.|
00000c90  0d 05 96 1e 50 49 45 43  45 53 24 28 64 75 62 6c  |....PIECES$(dubl|
00000ca0  65 25 2c 62 69 74 6e 6f  25 29 3d 22 30 22 0d 05  |e%,bitno%)="0"..|
00000cb0  a0 05 e1 0d 05 aa 4c f4  20 2d 2d 2d 2d 2d 2d 2d  |......L. -------|
00000cc0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000cf0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00000d00  05 b4 0a dd f2 64 72 61  77 0d 05 be 19 ef 32 33  |.....draw.....23|
00000d10  2c 31 2c 30 2c 30 2c 30  2c 30 2c 30 2c 30 2c 30  |,1,0,0,0,0,0,0,0|
00000d20  2c 30 0d 05 c8 08 e6 38  2c 30 0d 05 d2 1b f2 70  |,0.....8,0.....p|
00000d30  6c 6f 74 28 30 2c 34 32  2c 31 35 2c 31 34 2c 34  |lot(0,42,15,14,4|
00000d40  2c 34 2c 31 29 0d 05 dc  19 f2 70 6c 6f 74 28 30  |,4,1).....plot(0|
00000d50  2c 30 2c 31 33 2c 32 2c  38 2c 31 2c 31 29 0d 05  |,0,13,2,8,1,1)..|
00000d60  e6 19 f2 70 6c 6f 74 28  30 2c 30 2c 31 30 2c 35  |...plot(0,0,10,5|
00000d70  2c 37 2c 32 2c 32 29 0d  05 f0 18 f2 70 6c 6f 74  |,7,2,2).....plot|
00000d80  28 30 2c 30 2c 39 2c 36  2c 36 2c 33 2c 33 29 0d  |(0,0,9,6,6,3,3).|
00000d90  05 fa 18 f2 70 6c 6f 74  28 30 2c 30 2c 38 2c 37  |....plot(0,0,8,7|
00000da0  2c 35 2c 34 2c 34 29 0d  06 04 1c e7 20 62 6f 61  |,5,4,4)..... boa|
00000db0  72 64 70 6f 73 24 28 31  2c 32 2c 34 29 3e 22 30  |rdpos$(1,2,4)>"0|
00000dc0  22 20 8c 0d 06 0e 1c ef  20 32 33 2c 32 37 2c 30  |" ...... 23,27,0|
00000dd0  2c 39 38 2c 30 2c 30 2c  30 2c 30 2c 30 2c 30 0d  |,98,0,0,0,0,0,0.|
00000de0  06 18 10 f0 20 26 45 44  2c 39 32 2c 33 34 34 0d  |.... &ED,92,344.|
00000df0  06 22 05 cd 0d 06 2c 19  f2 70 6c 6f 74 28 30 2c  |."....,..plot(0,|
00000e00  34 32 2c 31 2c 31 2c 34  2c 34 2c 31 29 0d 06 36  |42,1,1,4,4,1)..6|
00000e10  21 7a 6c 61 79 65 72 25  3d 34 3a 79 76 61 6c 75  |!zlayer%=4:yvalu|
00000e20  65 25 3d 34 3a 78 76 61  6c 75 65 25 3d 37 0d 06  |e%=4:xvalue%=7..|
00000e30  40 1c e7 20 62 6f 61 72  64 70 6f 73 24 28 34 2c  |@.. boardpos$(4,|
00000e40  37 2c 34 29 3e 22 30 22  20 8c 0d 06 4a 2d ef 20  |7,4)>"0" ...J-. |
00000e50  32 33 2c 32 37 2c 30 2c  bb 28 62 6f 61 72 64 70  |23,27,0,.(boardp|
00000e60  6f 73 24 28 34 2c 37 2c  34 29 29 2c 30 2c 30 2c  |os$(4,7,4)),0,0,|
00000e70  30 2c 30 2c 30 2c 30 0d  06 54 11 f0 20 26 45 44  |0,0,0,0..T.. &ED|
00000e80  2c 35 33 36 2c 33 36 38  0d 06 5e 05 cd 0d 06 68  |,536,368..^....h|
00000e90  0c f2 70 6c 6f 74 74 6f  70 0d 06 72 37 f1 8a 31  |..plottop..r7..1|
00000ea0  38 2c 35 29 22 4e 55 4d  42 45 52 20 4f 46 20 54  |8,5)"NUMBER OF T|
00000eb0  49 4c 45 53 20 52 45 4d  41 49 4e 49 4e 47 3d 22  |ILES REMAINING="|
00000ec0  3b 6e 6f 6f 66 62 69 74  73 25 3b 22 20 20 20 22  |;noofbits%;"   "|
00000ed0  0d 06 7c 05 e1 0d 06 86  4b f4 20 2d 2d 2d 2d 2d  |..|.....K. -----|
00000ee0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000f20  0d 06 90 39 dd f2 70 6c  6f 74 28 78 64 69 73 70  |...9..plot(xdisp|
00000f30  25 2c 79 64 69 73 70 25  2c 78 6d 61 78 25 2c 78  |%,ydisp%,xmax%,x|
00000f40  6d 69 6e 25 2c 79 6d 61  78 25 2c 79 6d 69 6e 25  |min%,ymax%,ymin%|
00000f50  2c 7a 6c 65 76 65 6c 25  29 0d 06 9a 13 7a 6c 61  |,zlevel%)....zla|
00000f60  79 65 72 25 3d 7a 6c 65  76 65 6c 25 0d 06 a4 1a  |yer%=zlevel%....|
00000f70  e3 20 79 25 3d 79 6d 61  78 25 20 b8 20 79 6d 69  |. y%=ymax% . ymi|
00000f80  6e 25 20 88 2d 31 0d 06  ae 1a e3 20 78 25 3d 78  |n% .-1..... x%=x|
00000f90  6d 61 78 25 20 b8 20 78  6d 69 6e 25 20 88 2d 31  |max% . xmin% .-1|
00000fa0  0d 06 b8 24 e7 20 62 6f  61 72 64 70 6f 73 24 28  |...$. boardpos$(|
00000fb0  7a 6c 61 79 65 72 25 2c  78 25 2c 79 25 29 3e 22  |zlayer%,x%,y%)>"|
00000fc0  30 22 20 8c 0d 06 c2 27  e7 20 62 6f 61 72 64 70  |0" ....'. boardp|
00000fd0  6f 73 24 28 7a 6c 61 79  65 72 25 2b 31 2c 78 25  |os$(zlayer%+1,x%|
00000fe0  2c 79 25 29 3c 3d 22 30  22 20 8c 0d 06 cc 35 ef  |,y%)<="0" ....5.|
00000ff0  20 32 33 2c 32 37 2c 30  2c bb 28 62 6f 61 72 64  | 23,27,0,.(board|
00001000  70 6f 73 24 28 7a 6c 61  79 65 72 25 2c 78 25 2c  |pos$(zlayer%,x%,|
00001010  79 25 29 29 2c 30 2c 30  2c 30 2c 30 2c 30 2c 30  |y%)),0,0,0,0,0,0|
00001020  0d 06 d6 43 f0 20 26 45  44 2c 28 38 34 2a 28 78  |...C. &ED,(84*(x|
00001030  25 2d 31 29 29 2b 28 7a  6c 61 79 65 72 25 2a 38  |%-1))+(zlayer%*8|
00001040  29 2b 78 64 69 73 70 25  2c 28 38 34 2a 79 25 29  |)+xdisp%,(84*y%)|
00001050  2b 28 7a 6c 61 79 65 72  25 2a 38 29 2b 79 64 69  |+(zlayer%*8)+ydi|
00001060  73 70 25 0d 06 e0 05 cd  0d 06 ea 28 e7 20 62 6f  |sp%........(. bo|
00001070  61 72 64 70 6f 73 24 28  7a 6c 61 79 65 72 25 2c  |ardpos$(zlayer%,|
00001080  78 25 2c 79 25 2d 31 29  20 3c 3d 22 30 22 20 8c  |x%,y%-1) <="0" .|
00001090  0d 06 f4 1c ef 20 32 33  2c 32 37 2c 30 2c 39 39  |..... 23,27,0,99|
000010a0  2c 30 2c 30 2c 30 2c 30  2c 30 2c 30 0d 06 fe 43  |,0,0,0,0,0,0...C|
000010b0  f0 20 26 45 44 2c 28 38  34 2a 28 78 25 2d 31 29  |. &ED,(84*(x%-1)|
000010c0  29 2b 28 7a 6c 61 79 65  72 25 2a 38 29 2b 78 64  |)+(zlayer%*8)+xd|
000010d0  69 73 70 25 2c 28 38 34  2a 79 25 29 2b 28 7a 6c  |isp%,(84*y%)+(zl|
000010e0  61 79 65 72 25 2a 38 29  2b 79 64 69 73 70 25 0d  |ayer%*8)+ydisp%.|
000010f0  07 08 05 cd 0d 07 12 28  e7 20 62 6f 61 72 64 70  |.......(. boardp|
00001100  6f 73 24 28 7a 6c 61 79  65 72 25 2c 78 25 2d 31  |os$(zlayer%,x%-1|
00001110  2c 79 25 29 20 3c 3d 22  30 22 20 8c 0d 07 1c 1c  |,y%) <="0" .....|
00001120  ef 20 32 33 2c 32 37 2c  30 2c 39 38 2c 30 2c 30  |. 23,27,0,98,0,0|
00001130  2c 30 2c 30 2c 30 2c 30  0d 07 26 43 f0 20 26 45  |,0,0,0,0..&C. &E|
00001140  44 2c 28 38 34 2a 28 78  25 2d 31 29 29 2b 28 7a  |D,(84*(x%-1))+(z|
00001150  6c 61 79 65 72 25 2a 38  29 2b 78 64 69 73 70 25  |layer%*8)+xdisp%|
00001160  2c 28 38 34 2a 79 25 29  2b 28 7a 6c 61 79 65 72  |,(84*y%)+(zlayer|
00001170  25 2a 38 29 2b 79 64 69  73 70 25 0d 07 30 05 cd  |%*8)+ydisp%..0..|
00001180  0d 07 3a 05 cd 0d 07 44  08 ed 20 78 25 0d 07 4e  |..:....D.. x%..N|
00001190  08 ed 20 79 25 0d 07 58  05 e1 0d 07 62 4b f4 20  |.. y%..X....bK. |
000011a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000011e0  2d 2d 2d 2d 2d 0d 07 6c  0d dd f2 70 6f 69 6e 74  |-----..l...point|
000011f0  65 72 0d 07 76 05 f5 0d  07 80 0e 62 6c 6f 63 6b  |er..v......block|
00001200  74 6f 70 3d b9 0d 07 8a  21 f5 3a c8 97 78 25 2c  |top=....!.:..x%,|
00001210  79 25 2c 62 75 74 74 6f  6e 25 3a fd 20 62 75 74  |y%,button%:. but|
00001220  74 6f 6e 25 3d 30 0d 07  94 22 f5 3a c8 97 78 25  |ton%=0...".:..x%|
00001230  2c 79 25 2c 62 75 74 74  6f 6e 25 3a fd 20 62 75  |,y%,button%:. bu|
00001240  74 74 6f 6e 25 3c 3e 30  0d 07 9e 10 c8 8e 20 62  |tton%<>0...... b|
00001250  75 74 74 6f 6e 25 20 ca  0d 07 a8 07 c9 20 34 0d  |utton% ...... 4.|
00001260  07 b2 0b 6c 6f 6f 70 25  3d 30 0d 07 bc 0d 67 6f  |...loop%=0....go|
00001270  74 6f 6e 65 25 3d a3 0d  07 c6 0a f7 20 8d 64 68  |tone%=...... .dh|
00001280  48 0d 07 d0 05 f5 0d 07  da 23 f3 20 7a 74 6d 70  |H........#. ztmp|
00001290  25 2c 78 74 6d 70 25 2c  79 74 6d 70 25 2c 78 6c  |%,xtmp%,ytmp%,xl|
000012a0  6f 77 25 2c 79 6c 6f 77  25 0d 07 e4 28 e7 20 62  |ow%,ylow%...(. b|
000012b0  6f 61 72 64 70 6f 73 24  28 7a 74 6d 70 25 2c 78  |oardpos$(ztmp%,x|
000012c0  74 6d 70 25 2c 79 74 6d  70 25 29 3e 22 30 22 20  |tmp%,ytmp%)>"0" |
000012d0  8c 0d 07 ee 37 e7 78 25  3e 3d 78 6c 6f 77 25 20  |....7.x%>=xlow% |
000012e0  80 20 78 25 3c 78 6c 6f  77 25 2b 38 34 20 80 20  |. x%<xlow%+84 . |
000012f0  79 25 3e 3d 79 6c 6f 77  25 20 80 79 25 3c 79 6c  |y%>=ylow% .y%<yl|
00001300  6f 77 25 2b 38 34 20 8c  0d 07 f8 2d 7a 6c 61 79  |ow%+84 ....-zlay|
00001310  65 72 25 3d 7a 74 6d 70  25 3a 78 76 61 6c 75 65  |er%=ztmp%:xvalue|
00001320  25 3d 78 74 6d 70 25 3a  79 76 61 6c 75 65 25 3d  |%=xtmp%:yvalue%=|
00001330  79 74 6d 70 25 0d 08 02  0d 67 6f 74 6f 6e 65 25  |ytmp%....gotone%|
00001340  3d b9 0d 08 0c 05 cd 0d  08 16 05 cd 0d 08 20 11  |=............. .|
00001350  6c 6f 6f 70 25 3d 6c 6f  6f 70 25 2b 31 0d 08 2a  |loop%=loop%+1..*|
00001360  1a fd 20 67 6f 74 6f 6e  65 25 3d b9 20 84 20 6c  |.. gotone%=. . l|
00001370  6f 6f 70 25 3d 35 37 0d  08 34 11 e7 20 67 6f 74  |oop%=57..4.. got|
00001380  6f 6e 65 25 3d a3 20 8c  0d 08 3e 16 79 76 61 6c  |one%=. ...>.yval|
00001390  75 65 25 3d 28 79 25 2d  31 30 29 81 38 34 0d 08  |ue%=(y%-10).84..|
000013a0  48 25 e7 20 79 76 61 6c  75 65 25 3e 38 20 8c 20  |H%. yvalue%>8 . |
000013b0  79 76 61 6c 75 65 25 3d  30 3a 7a 6c 61 79 65 72  |yvalue%=0:zlayer|
000013c0  25 3d 30 0d 08 52 1a 78  76 61 6c 75 65 25 3d 28  |%=0..R.xvalue%=(|
000013d0  28 78 25 2d 31 30 29 81  38 34 29 2b 31 0d 08 5c  |(x%-10).84)+1..\|
000013e0  26 e7 20 78 76 61 6c 75  65 25 3e 31 35 20 8c 20  |&. xvalue%>15 . |
000013f0  78 76 61 6c 75 65 25 3d  30 3a 7a 6c 61 79 65 72  |xvalue%=0:zlayer|
00001400  25 3d 30 0d 08 66 3e e7  20 62 6f 61 72 64 70 6f  |%=0..f>. boardpo|
00001410  73 24 28 31 2c 78 76 61  6c 75 65 25 2c 79 76 61  |s$(1,xvalue%,yva|
00001420  6c 75 65 25 29 3e 22 30  22 20 8c 20 7a 6c 61 79  |lue%)>"0" . zlay|
00001430  65 72 25 3d 31 20 8b 20  7a 6c 61 79 65 72 25 3d  |er%=1 . zlayer%=|
00001440  30 0d 08 70 1e e7 20 78  76 61 6c 75 65 25 3d 31  |0..p.. xvalue%=1|
00001450  20 84 20 78 76 61 6c 75  65 25 3e 31 33 20 8c 0d  | . xvalue%>13 ..|
00001460  08 7a 0d 7a 6c 61 79 65  72 25 3d 30 0d 08 84 17  |.z.zlayer%=0....|
00001470  e7 20 79 25 3e 33 39 31  20 80 20 79 25 3c 34 36  |. y%>391 . y%<46|
00001480  38 20 8c 0d 08 8e 0d 79  76 61 6c 75 65 25 3d 34  |8 .....yvalue%=4|
00001490  0d 08 98 2c e7 20 62 6f  61 72 64 70 6f 73 24 28  |...,. boardpos$(|
000014a0  31 2c 78 76 61 6c 75 65  25 2c 34 29 3e 22 30 22  |1,xvalue%,4)>"0"|
000014b0  20 8c 20 7a 6c 61 79 65  72 25 3d 31 0d 08 a2 05  | . zlayer%=1....|
000014c0  cd 0d 08 ac 05 cd 0d 08  b6 05 cd 0d 08 c0 07 c9  |................|
000014d0  20 32 0d 08 ca 0c f2 6d  65 6e 75 28 30 29 0d 08  | 2.....menu(0)..|
000014e0  d4 28 e7 20 72 65 70 6c  61 79 25 3d a3 20 80 20  |.(. replay%=. . |
000014f0  72 65 74 75 72 6e 25 3d  a3 20 8c 20 62 6c 6f 63  |return%=. . bloc|
00001500  6b 74 6f 70 3d a3 0d 08  de 06 20 cb 0d 08 e8 4b  |ktop=..... ....K|
00001510  dc 20 35 2c 37 2c 34 2c  35 39 34 2c 34 32 31 2c  |. 5,7,4,594,421,|
00001520  34 2c 37 2c 34 2c 35 34  35 2c 33 37 36 2c 34 2c  |4,7,4,545,376,4,|
00001530  37 2c 35 2c 35 34 35 2c  34 36 30 2c 34 2c 38 2c  |7,5,545,460,4,8,|
00001540  34 2c 36 32 39 2c 33 37  36 2c 34 2c 38 2c 35 2c  |4,629,376,4,8,5,|
00001550  36 32 39 2c 34 36 30 0d  08 f2 3d dc 20 33 2c 36  |629,460...=. 3,6|
00001560  2c 33 2c 34 35 33 2c 32  38 34 2c 33 2c 36 2c 34  |,3,453,284,3,6,4|
00001570  2c 34 35 33 2c 33 36 38  2c 33 2c 36 2c 35 2c 34  |,453,368,3,6,5,4|
00001580  35 33 2c 34 35 32 2c 33  2c 36 2c 36 2c 34 35 33  |53,452,3,6,6,453|
00001590  2c 35 33 36 0d 08 fc 3d  dc 20 33 2c 37 2c 33 2c  |,536...=. 3,7,3,|
000015a0  35 33 37 2c 32 38 34 2c  33 2c 37 2c 34 2c 35 33  |537,284,3,7,4,53|
000015b0  37 2c 33 36 38 2c 33 2c  37 2c 35 2c 35 33 37 2c  |7,368,3,7,5,537,|
000015c0  34 35 32 2c 33 2c 37 2c  36 2c 35 33 37 2c 35 33  |452,3,7,6,537,53|
000015d0  36 0d 09 06 3d dc 20 33  2c 38 2c 33 2c 36 32 31  |6...=. 3,8,3,621|
000015e0  2c 32 38 34 2c 33 2c 38  2c 34 2c 36 32 31 2c 33  |,284,3,8,4,621,3|
000015f0  36 38 2c 33 2c 38 2c 35  2c 36 32 31 2c 34 35 32  |68,3,8,5,621,452|
00001600  2c 33 2c 38 2c 36 2c 36  32 31 2c 35 33 36 0d 09  |,3,8,6,621,536..|
00001610  10 3d dc 20 33 2c 39 2c  33 2c 37 30 35 2c 32 38  |.=. 3,9,3,705,28|
00001620  34 2c 33 2c 39 2c 34 2c  37 30 35 2c 33 36 38 2c  |4,3,9,4,705,368,|
00001630  33 2c 39 2c 35 2c 37 30  35 2c 34 35 32 2c 33 2c  |3,9,5,705,452,3,|
00001640  39 2c 36 2c 37 30 35 2c  35 33 36 0d 09 1a 4b dc  |9,6,705,536...K.|
00001650  20 32 2c 35 2c 32 2c 33  36 31 2c 31 39 32 2c 32  | 2,5,2,361,192,2|
00001660  2c 35 2c 33 2c 33 36 31  2c 32 37 36 2c 32 2c 35  |,5,3,361,276,2,5|
00001670  2c 34 2c 33 36 31 2c 33  36 30 2c 32 2c 35 2c 35  |,4,361,360,2,5,5|
00001680  2c 33 36 31 2c 34 34 34  2c 32 2c 35 2c 36 2c 33  |,361,444,2,5,6,3|
00001690  36 31 2c 35 32 38 0d 09  24 4b dc 20 32 2c 36 2c  |61,528..$K. 2,6,|
000016a0  32 2c 34 34 35 2c 31 39  32 2c 32 2c 36 2c 33 2c  |2,445,192,2,6,3,|
000016b0  34 34 35 2c 32 37 36 2c  32 2c 36 2c 34 2c 34 34  |445,276,2,6,4,44|
000016c0  35 2c 33 36 30 2c 32 2c  36 2c 35 2c 34 34 35 2c  |5,360,2,6,5,445,|
000016d0  34 34 34 2c 32 2c 36 2c  36 2c 34 34 35 2c 35 32  |444,2,6,6,445,52|
000016e0  38 0d 09 2e 4b dc 20 32  2c 37 2c 32 2c 35 32 39  |8...K. 2,7,2,529|
000016f0  2c 31 39 32 2c 32 2c 37  2c 33 2c 35 32 39 2c 32  |,192,2,7,3,529,2|
00001700  37 36 2c 32 2c 37 2c 34  2c 35 32 39 2c 33 36 30  |76,2,7,4,529,360|
00001710  2c 32 2c 37 2c 35 2c 35  32 39 2c 34 34 34 2c 32  |,2,7,5,529,444,2|
00001720  2c 37 2c 36 2c 35 32 39  2c 35 32 38 0d 09 38 4b  |,7,6,529,528..8K|
00001730  dc 20 32 2c 38 2c 32 2c  36 31 33 2c 31 39 32 2c  |. 2,8,2,613,192,|
00001740  32 2c 38 2c 33 2c 36 31  33 2c 32 37 36 2c 32 2c  |2,8,3,613,276,2,|
00001750  38 2c 34 2c 36 31 33 2c  33 36 30 2c 32 2c 38 2c  |8,4,613,360,2,8,|
00001760  35 2c 36 31 33 2c 34 34  34 2c 32 2c 38 2c 36 2c  |5,613,444,2,8,6,|
00001770  36 31 33 2c 35 32 38 0d  09 42 4b dc 20 32 2c 39  |613,528..BK. 2,9|
00001780  2c 32 2c 36 39 36 2c 31  39 32 2c 32 2c 39 2c 33  |,2,696,192,2,9,3|
00001790  2c 36 39 36 2c 32 37 36  2c 32 2c 39 2c 34 2c 36  |,696,276,2,9,4,6|
000017a0  39 36 2c 33 36 30 2c 32  2c 39 2c 35 2c 36 39 36  |96,360,2,9,5,696|
000017b0  2c 34 34 34 2c 32 2c 39  2c 36 2c 36 39 36 2c 35  |,444,2,9,6,696,5|
000017c0  32 38 0d 09 4c 50 dc 20  32 2c 31 30 2c 32 2c 37  |28..LP. 2,10,2,7|
000017d0  38 31 2c 31 39 32 2c 32  2c 31 30 2c 33 2c 37 38  |81,192,2,10,3,78|
000017e0  31 2c 32 37 36 2c 32 2c  31 30 2c 34 2c 37 38 31  |1,276,2,10,4,781|
000017f0  2c 33 36 30 2c 32 2c 31  30 2c 35 2c 37 38 31 2c  |,360,2,10,5,781,|
00001800  34 34 34 2c 32 2c 31 30  2c 36 2c 37 38 31 2c 35  |444,2,10,6,781,5|
00001810  32 38 0d 09 56 4b dc 20  32 2c 35 2c 37 2c 33 36  |28..VK. 2,5,7,36|
00001820  31 2c 36 31 32 2c 32 2c  36 2c 37 2c 34 34 35 2c  |1,612,2,6,7,445,|
00001830  36 31 32 2c 32 2c 37 2c  37 2c 35 32 39 2c 36 31  |612,2,7,7,529,61|
00001840  32 2c 32 2c 38 2c 37 2c  36 31 33 2c 36 31 32 2c  |2,2,8,7,613,612,|
00001850  32 2c 39 2c 37 2c 36 39  37 2c 36 31 32 0d 09 60  |2,9,7,697,612..`|
00001860  14 dc 20 32 2c 31 30 2c  37 2c 37 38 31 2c 36 31  |.. 2,10,7,781,61|
00001870  32 0d 09 6a 11 e7 20 7a  6c 61 79 65 72 25 3c 34  |2..j.. zlayer%<4|
00001880  20 8c 0d 09 74 3a e7 20  62 6f 61 72 64 70 6f 73  | ...t:. boardpos|
00001890  24 28 7a 6c 61 79 65 72  25 2b 31 2c 78 76 61 6c  |$(zlayer%+1,xval|
000018a0  75 65 25 2c 79 76 61 6c  75 65 25 29 3e 22 30 22  |ue%,yvalue%)>"0"|
000018b0  8c 20 62 6c 6f 63 6b 74  6f 70 3d a3 0d 09 7e 05  |. blocktop=...~.|
000018c0  cd 0d 09 88 10 fd 20 62  6c 6f 63 6b 74 6f 70 3d  |...... blocktop=|
000018d0  b9 0d 09 92 05 e1 0d 09  9c 4b f4 20 2d 2d 2d 2d  |.........K. ----|
000018e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001920  2d 0d 09 a6 0c dd f2 72  65 6d 6f 76 65 0d 09 b0  |-......remove...|
00001930  2a 62 6f 61 72 64 70 6f  73 24 28 7a 6c 61 79 65  |*boardpos$(zlaye|
00001940  72 25 2c 78 76 61 6c 75  65 25 2c 79 76 61 6c 75  |r%,xvalue%,yvalu|
00001950  65 25 29 3d 22 30 22 0d  09 ba 10 f2 64 65 6c 65  |e%)="0".....dele|
00001960  74 65 62 6c 6f 63 6b 0d  09 c4 10 f2 64 72 61 77  |teblock.....draw|
00001970  73 65 63 74 69 6f 6e 0d  09 ce 10 c8 8e 20 78 76  |section...... xv|
00001980  61 6c 75 65 25 20 ca 0d  09 d8 07 c9 20 31 0d 09  |alue% ...... 1..|
00001990  e2 1c ef 20 32 33 2c 32  37 2c 30 2c 39 38 2c 30  |... 23,27,0,98,0|
000019a0  2c 30 2c 30 2c 30 2c 30  2c 30 0d 09 ec 10 f0 20  |,0,0,0,0,0..... |
000019b0  26 45 44 2c 39 32 2c 34  32 38 0d 09 f6 08 c9 20  |&ED,92,428..... |
000019c0  31 35 0d 0a 00 1e e7 20  62 6f 61 72 64 70 6f 73  |15..... boardpos|
000019d0  24 28 31 2c 31 32 2c 33  29 3c 3e 22 30 22 20 8c  |$(1,12,3)<>"0" .|
000019e0  0d 0a 0a 2e ef 20 32 33  2c 32 37 2c 30 2c bb 28  |..... 23,27,0,.(|
000019f0  62 6f 61 72 64 70 6f 73  24 28 31 2c 31 32 2c 33  |boardpos$(1,12,3|
00001a00  29 29 2c 30 2c 30 2c 30  2c 30 2c 30 2c 30 0d 0a  |)),0,0,0,0,0,0..|
00001a10  14 11 f0 20 26 45 44 2c  39 33 32 2c 32 36 30 0d  |... &ED,932,260.|
00001a20  0a 1e 05 cd 0d 0a 28 05  cb 0d 0a 32 37 f1 8a 31  |......(....27..1|
00001a30  38 2c 35 29 22 4e 55 4d  42 45 52 20 4f 46 20 54  |8,5)"NUMBER OF T|
00001a40  49 4c 45 53 20 52 45 4d  41 49 4e 49 4e 47 3d 22  |ILES REMAINING="|
00001a50  3b 6e 6f 6f 66 62 69 74  73 25 3b 22 20 20 20 22  |;noofbits%;"   "|
00001a60  0d 0a 3c 05 e1 0d 0a 46  05 f4 0d 0a 50 4b f4 20  |..<....F....PK. |
00001a70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001ab0  2d 2d 2d 2d 2d 0d 0a 5a  16 dd f2 68 69 6c 69 67  |-----..Z...hilig|
00001ac0  68 74 28 61 63 74 69 6f  6e 25 29 0d 0a 64 0d 79  |ht(action%)..d.y|
00001ad0  64 65 6c 74 61 25 3d 30  0d 0a 6e 1f e7 20 61 63  |delta%=0..n.. ac|
00001ae0  74 69 6f 6e 25 3d 30 20  8c 20 e6 36 2c 36 34 20  |tion%=0 . .6,64 |
00001af0  8b 20 e6 31 2c 36 34 0d  0a 78 10 c8 8e 20 7a 6c  |. .1,64..x... zl|
00001b00  61 79 65 72 25 20 ca 0d  0a 82 07 c9 20 35 0d 0a  |ayer% ...... 5..|
00001b10  8c 1b e7 62 6f 61 72 64  70 6f 73 24 28 35 2c 37  |...boardpos$(5,7|
00001b20  2c 34 29 3e 22 30 22 20  8c 0d 0a 96 17 c8 93 20  |,4)>"0" ....... |
00001b30  c8 90 20 35 39 34 2c 34  32 32 2c 38 30 2c 38 30  |.. 594,422,80,80|
00001b40  0d 0a a0 05 cd 0d 0a aa  07 c9 20 34 0d 0a b4 11  |.......... 4....|
00001b50  f2 72 65 63 74 61 6e 67  6c 65 28 30 29 0d 0a be  |.rectangle(0)...|
00001b60  07 c9 20 30 0d 0a c8 05  7f 0d 0a d2 10 c8 8e 20  |.. 0........... |
00001b70  78 76 61 6c 75 65 25 20  ca 0d 0a dc 0d c9 20 31  |xvalue% ...... 1|
00001b80  2c 31 34 2c 31 35 0d 0a  e6 31 e7 20 62 6f 61 72  |,14,15...1. boar|
00001b90  64 70 6f 73 24 28 31 2c  78 76 61 6c 75 65 25 2c  |dpos$(1,xvalue%,|
00001ba0  34 29 3e 22 30 22 20 8c  20 f2 72 65 63 74 61 6e  |4)>"0" . .rectan|
00001bb0  67 6c 65 28 34 34 29 0d  0a f0 11 c9 20 32 2c 33  |gle(44)..... 2,3|
00001bc0  2c 34 2c 31 32 2c 31 33  0d 0a fa 11 f2 72 65 63  |,4,12,13.....rec|
00001bd0  74 61 6e 67 6c 65 28 30  29 0d 0b 04 05 7f 0d 0b  |tangle(0).......|
00001be0  0e 2a e7 7a 6c 61 79 65  72 25 3d 79 76 61 6c 75  |.*.zlayer%=yvalu|
00001bf0  65 25 20 84 20 7a 6c 61  79 65 72 25 3d 78 76 61  |e% . zlayer%=xva|
00001c00  6c 75 65 25 2d 33 20 8c  0d 0b 18 12 20 f2 72 65  |lue%-3 ..... .re|
00001c10  63 74 61 6e 67 6c 65 28  30 29 0d 0b 22 06 20 cc  |ctangle(0)..". .|
00001c20  0d 0b 2c 11 20 f2 68 61  72 64 68 69 6c 69 67 68  |..,. .hardhiligh|
00001c30  74 0d 0b 36 05 cd 0d 0b  40 05 cb 0d 0b 4a 05 cb  |t..6....@....J..|
00001c40  0d 0b 54 0a e6 30 2c 31  32 37 0d 0b 5e 05 e1 0d  |..T..0,127..^...|
00001c50  0b 68 4a 20 f4 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.hJ . ----------|
00001c60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001c90  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 0b 72 18 dd f2 72  |---------..r...r|
00001ca0  65 63 74 61 6e 67 6c 65  28 79 64 65 6c 74 61 25  |ectangle(ydelta%|
00001cb0  29 0d 0b 7c 4b c8 93 20  c8 90 20 28 78 76 61 6c  |)..|K.. .. (xval|
00001cc0  75 65 25 2d 31 29 2a 38  34 2b 7a 6c 61 79 65 72  |ue%-1)*84+zlayer|
00001cd0  25 2a 38 2b 37 2c 28 79  76 61 6c 75 65 25 2a 38  |%*8+7,(yvalue%*8|
00001ce0  34 29 2b 7a 6c 61 79 65  72 25 2a 38 2b 35 2b 79  |4)+zlayer%*8+5+y|
00001cf0  64 65 6c 74 61 25 2c 38  30 2c 38 30 0d 0b 86 05  |delta%,80,80....|
00001d00  e1 0d 0b 90 4c f4 20 2d  2d 2d 2d 2d 2d 2d 2d 2d  |....L. ---------|
00001d10  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001d40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 0b 9a  |-------------...|
00001d50  11 dd f2 68 61 72 64 68  69 6c 69 67 68 74 0d 0b  |...hardhilight..|
00001d60  a4 28 78 64 61 74 75 6d  25 3d 28 78 76 61 6c 75  |.(xdatum%=(xvalu|
00001d70  65 25 2d 31 29 2a 38 34  2b 28 7a 6c 61 79 65 72  |e%-1)*84+(zlayer|
00001d80  25 2b 31 29 2a 38 0d 0b  ae 26 79 64 61 74 75 6d  |%+1)*8...&ydatum|
00001d90  25 3d 28 79 76 61 6c 75  65 25 2a 38 34 29 2b 28  |%=(yvalue%*84)+(|
00001da0  7a 6c 61 79 65 72 25 2b  31 29 2a 38 0d 0b b8 12  |zlayer%+1)*8....|
00001db0  63 78 25 3d 78 64 61 74  75 6d 25 2b 38 30 0d 0b  |cx%=xdatum%+80..|
00001dc0  c2 12 63 79 25 3d 79 64  61 74 75 6d 25 2b 37 36  |..cy%=ydatum%+76|
00001dd0  0d 0b cc 20 6c 65 66 74  25 3d 2d 31 3a 62 65 6c  |... left%=-1:bel|
00001de0  6f 77 25 3d 2d 31 3a 73  74 61 63 6b 25 3d 2d 31  |ow%=-1:stack%=-1|
00001df0  0d 0b d6 05 f5 0d 0b e0  11 6c 65 66 74 25 3d 6c  |.........left%=l|
00001e00  65 66 74 25 2b 31 0d 0b  ea 2f fd 20 62 6f 61 72  |eft%+1.../. boar|
00001e10  64 70 6f 73 24 28 6c 65  66 74 25 2b 31 2c 78 76  |dpos$(left%+1,xv|
00001e20  61 6c 75 65 25 2d 31 2c  79 76 61 6c 75 65 25 29  |alue%-1,yvalue%)|
00001e30  3c 3d 22 30 22 0d 0b f4  16 e7 20 6c 65 66 74 25  |<="0"..... left%|
00001e40  3e 3d 7a 6c 61 79 65 72  25 20 8c 0d 0b fe 24 79  |>=zlayer% ....$y|
00001e50  74 72 69 31 25 3d 79 64  61 74 75 6d 25 2b 28 6c  |tri1%=ydatum%+(l|
00001e60  65 66 74 25 2d 7a 6c 61  79 65 72 25 29 2a 38 0d  |eft%-zlayer%)*8.|
00001e70  0c 08 24 78 74 72 69 31  25 3d 78 64 61 74 75 6d  |..$xtri1%=xdatum|
00001e80  25 2b 28 6c 65 66 74 25  2d 7a 6c 61 79 65 72 25  |%+(left%-zlayer%|
00001e90  29 2a 38 0d 0c 12 05 cc  0d 0c 1c 21 78 74 72 69  |)*8........!xtri|
00001ea0  31 25 3d 78 64 61 74 75  6d 25 3a 79 74 72 69 31  |1%=xdatum%:ytri1|
00001eb0  25 3d 79 64 61 74 75 6d  25 0d 0c 26 05 cd 0d 0c  |%=ydatum%..&....|
00001ec0  30 05 f5 0d 0c 3a 13 62  65 6c 6f 77 25 3d 62 65  |0....:.below%=be|
00001ed0  6c 6f 77 25 2b 31 0d 0c  44 30 fd 20 62 6f 61 72  |low%+1..D0. boar|
00001ee0  64 70 6f 73 24 28 62 65  6c 6f 77 25 2b 31 2c 78  |dpos$(below%+1,x|
00001ef0  76 61 6c 75 65 25 2c 79  76 61 6c 75 65 25 2d 31  |value%,yvalue%-1|
00001f00  29 3c 3d 22 30 22 0d 0c  4e 17 e7 20 62 65 6c 6f  |)<="0"..N.. belo|
00001f10  77 25 3e 3d 7a 6c 61 79  65 72 25 20 8c 0d 0c 58  |w%>=zlayer% ...X|
00001f20  25 79 74 72 69 32 25 3d  79 64 61 74 75 6d 25 2b  |%ytri2%=ydatum%+|
00001f30  28 62 65 6c 6f 77 25 2d  7a 6c 61 79 65 72 25 29  |(below%-zlayer%)|
00001f40  2a 38 0d 0c 62 25 78 74  72 69 32 25 3d 78 64 61  |*8..b%xtri2%=xda|
00001f50  74 75 6d 25 2b 28 62 65  6c 6f 77 25 2d 7a 6c 61  |tum%+(below%-zla|
00001f60  79 65 72 25 29 2a 38 0d  0c 6c 05 cc 0d 0c 76 21  |yer%)*8..l....v!|
00001f70  78 74 72 69 32 25 3d 78  64 61 74 75 6d 25 3a 79  |xtri2%=xdatum%:y|
00001f80  74 72 69 32 25 3d 79 64  61 74 75 6d 25 0d 0c 80  |tri2%=ydatum%...|
00001f90  05 cd 0d 0c 94 13 ec 20  78 74 72 69 31 25 2c 79  |....... xtri1%,y|
00001fa0  74 72 69 31 25 0d 0c 9e  10 ec 20 78 74 72 69 31  |tri1%..... xtri1|
00001fb0  25 2c 63 79 25 0d 0c a8  0f f0 38 35 2c 63 78 25  |%,cy%.....85,cx%|
00001fc0  2c 63 79 25 0d 0c b2 0c  ec 63 78 25 2c 63 79 25  |,cy%.....cx%,cy%|
00001fd0  0d 0c bc 10 ec 20 63 78  25 2c 79 74 72 69 32 25  |..... cx%,ytri2%|
00001fe0  0d 0c c6 15 f0 38 35 2c  78 74 72 69 32 25 2c 79  |.....85,xtri2%,y|
00001ff0  74 72 69 32 25 0d 0c d0  09 e6 36 2c 36 34 0d 0c  |tri2%.....6,64..|
00002000  da 05 f5 0d 0c e4 13 73  74 61 63 6b 25 3d 73 74  |.......stack%=st|
00002010  61 63 6b 25 2b 31 0d 0c  ee 32 fd 20 62 6f 61 72  |ack%+1...2. boar|
00002020  64 70 6f 73 24 28 73 74  61 63 6b 25 2b 31 2c 78  |dpos$(stack%+1,x|
00002030  76 61 6c 75 65 25 2d 31  2c 79 76 61 6c 75 65 25  |value%-1,yvalue%|
00002040  2d 31 29 3c 3d 22 30 22  0d 0c f8 25 78 74 72 69  |-1)<="0"...%xtri|
00002050  33 25 3d 28 78 76 61 6c  75 65 25 2d 32 29 2a 38  |3%=(xvalue%-2)*8|
00002060  34 2b 73 74 61 63 6b 25  2a 38 2b 38 38 0d 0d 02  |4+stack%*8+88...|
00002070  25 79 74 72 69 33 25 3d  28 79 76 61 6c 75 65 25  |%ytri3%=(yvalue%|
00002080  2d 31 29 2a 38 34 2b 73  74 61 63 6b 25 2a 38 2b  |-1)*84+stack%*8+|
00002090  38 38 0d 0d 0c 15 e7 20  78 74 72 69 33 25 3e 78  |88..... xtri3%>x|
000020a0  74 72 69 31 25 20 8c 0d  0d 16 13 ec 20 78 74 72  |tri1% ...... xtr|
000020b0  69 31 25 2c 79 74 72 69  31 25 0d 0d 20 13 ec 20  |i1%,ytri1%.. .. |
000020c0  78 74 72 69 31 25 2c 79  74 72 69 33 25 0d 0d 2a  |xtri1%,ytri3%..*|
000020d0  16 f0 20 38 35 2c 78 74  72 69 33 25 2c 79 74 72  |.. 85,xtri3%,ytr|
000020e0  69 33 25 0d 0d 34 05 cd  0d 0d 3e 15 e7 20 79 74  |i3%..4....>.. yt|
000020f0  72 69 33 25 3e 79 74 72  69 32 25 20 8c 0d 0d 48  |ri3%>ytri2% ...H|
00002100  13 ec 20 78 74 72 69 32  25 2c 79 74 72 69 32 25  |.. xtri2%,ytri2%|
00002110  0d 0d 52 13 ec 20 78 74  72 69 33 25 2c 79 74 72  |..R.. xtri3%,ytr|
00002120  69 32 25 0d 0d 5c 16 f0  20 38 35 2c 78 74 72 69  |i2%..\.. 85,xtri|
00002130  33 25 2c 79 74 72 69 33  25 0d 0d 66 05 cd 0d 0d  |3%,ytri3%..f....|
00002140  70 05 e1 0d 0d 7a 4c f4  20 2d 2d 2d 2d 2d 2d 2d  |p....zL. -------|
00002150  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002180  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00002190  0d 84 16 dd f2 74 69 6c  65 76 61 6c 69 64 28 74  |.....tilevalid(t|
000021a0  79 70 65 25 29 0d 0d 8e  0c 76 61 6c 69 64 25 3d  |ype%)....valid%=|
000021b0  b9 0d 0d 98 1d e7 20 74  79 70 65 25 3d 30 20 8c  |...... type%=0 .|
000021c0  20 f1 8a 31 38 2c 33 29  20 89 28 34 30 29 0d 0d  | ..18,3) .(40)..|
000021d0  a2 11 e7 20 7a 6c 61 79  65 72 25 3e 30 20 8c 0d  |... zlayer%>0 ..|
000021e0  0d ac 1e e7 20 78 76 61  6c 75 65 25 3e 31 20 80  |.... xvalue%>1 .|
000021f0  20 78 76 61 6c 75 65 25  3c 31 35 20 8c 0d 0d b6  | xvalue%<15 ....|
00002200  64 e7 20 62 6f 61 72 64  70 6f 73 24 28 7a 6c 61  |d. boardpos$(zla|
00002210  79 65 72 25 2c 78 76 61  6c 75 65 25 2b 31 2c 79  |yer%,xvalue%+1,y|
00002220  76 61 6c 75 65 25 29 3e  22 30 22 20 80 20 62 6f  |value%)>"0" . bo|
00002230  61 72 64 70 6f 73 24 28  7a 6c 61 79 65 72 25 2c  |ardpos$(zlayer%,|
00002240  78 76 61 6c 75 65 25 2d  31 2c 79 76 61 6c 75 65  |xvalue%-1,yvalue|
00002250  25 29 3e 22 30 22 20 8c  20 76 61 6c 69 64 25 3d  |%)>"0" . valid%=|
00002260  a3 0d 0d c0 31 e7 20 62  6f 61 72 64 70 6f 73 24  |....1. boardpos$|
00002270  28 35 2c 37 2c 34 29 3e  22 30 22 20 80 20 7a 6c  |(5,7,4)>"0" . zl|
00002280  61 79 65 72 25 3d 34 20  8c 20 76 61 6c 69 64 25  |ayer%=4 . valid%|
00002290  3d a3 0d 0d ca 57 e7 20  7a 6c 61 79 65 72 25 3d  |=....W. zlayer%=|
000022a0  31 20 80 20 78 76 61 6c  75 65 25 3d 32 20 80 20  |1 . xvalue%=2 . |
000022b0  28 79 76 61 6c 75 65 25  3d 34 20 84 20 79 76 61  |(yvalue%=4 . yva|
000022c0  6c 75 65 25 3d 35 29 20  80 20 62 6f 61 72 64 70  |lue%=5) . boardp|
000022d0  6f 73 24 28 31 2c 31 2c  34 29 3e 22 30 22 20 8c  |os$(1,1,4)>"0" .|
000022e0  20 76 61 6c 69 64 25 3d  a3 0d 0d d4 59 e7 20 7a  | valid%=....Y. z|
000022f0  6c 61 79 65 72 25 3d 31  20 80 20 78 76 61 6c 75  |layer%=1 . xvalu|
00002300  65 25 3d 31 33 20 80 20  28 79 76 61 6c 75 65 25  |e%=13 . (yvalue%|
00002310  3d 34 20 84 20 79 76 61  6c 75 65 25 3d 35 29 20  |=4 . yvalue%=5) |
00002320  80 20 62 6f 61 72 64 70  6f 73 24 28 31 2c 31 34  |. boardpos$(1,14|
00002330  2c 34 29 3e 22 30 22 20  8c 20 76 61 6c 69 64 25  |,4)>"0" . valid%|
00002340  3d a3 0d 0d de 19 e7 76  61 6c 69 64 25 3d a3 20  |=......valid%=. |
00002350  80 20 74 79 70 65 25 3d  30 20 8c 0d 0d e8 35 f1  |. type%=0 ....5.|
00002360  8a 31 38 2c 33 29 22 54  48 41 54 20 54 49 4c 45  |.18,3)"THAT TILE|
00002370  20 49 53 20 4e 4f 54 20  46 52 45 45 20 2d 20 50  | IS NOT FREE - P|
00002380  49 43 4b 20 41 4e 4f 54  48 45 52 20 4f 4e 45 22  |ICK ANOTHER ONE"|
00002390  0d 0d f2 06 ef 37 0d 0d  fc 05 cd 0d 0e 06 05 cd  |.....7..........|
000023a0  0d 0e 10 05 cc 0d 0e 1a  0c 76 61 6c 69 64 25 3d  |.........valid%=|
000023b0  a3 0d 0e 24 31 20 e7 20  74 79 70 65 25 3d 30 20  |...$1 . type%=0 |
000023c0  8c 20 f1 8a 31 38 2c 33  29 22 50 4f 49 4e 54 45  |. ..18,3)"POINTE|
000023d0  52 20 4e 4f 54 20 4f 4e  20 41 20 54 49 4c 45 20  |R NOT ON A TILE |
000023e0  21 22 0d 0e 2e 05 cd 0d  0e 38 05 e1 0d 0e 42 4c  |!".......8....BL|
000023f0  f4 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |. --------------|
00002400  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002430  2d 2d 2d 2d 2d 2d 2d 2d  0d 0e 4c 11 dd f2 64 65  |--------..L...de|
00002440  6c 65 74 65 62 6c 6f 63  6b 0d 0e 56 10 c8 8e 20  |leteblock..V... |
00002450  7a 6c 61 79 65 72 25 20  ca 0d 0e 60 07 c9 20 35  |zlayer% ...`.. 5|
00002460  0d 0e 6a 18 f2 70 6c 6f  74 28 30 2c 30 2c 38 2c  |..j..plot(0,0,8,|
00002470  37 2c 35 2c 34 2c 34 29  0d 0e 74 05 7f 0d 0e 7e  |7,5,4,4)..t....~|
00002480  08 e6 30 2c 30 0d 0e 88  1d ef 20 32 33 2c 32 37  |..0,0..... 23,27|
00002490  2c 30 2c 31 30 30 2c 30  2c 30 2c 30 2c 30 2c 30  |,0,100,0,0,0,0,0|
000024a0  2c 30 0d 0e 92 10 c8 8e  20 78 76 61 6c 75 65 25  |,0...... xvalue%|
000024b0  20 ca 0d 0e 9c 07 c9 20  31 0d 0e a6 27 f0 20 26  | ...... 1...'. &|
000024c0  45 44 2c 30 2c 38 34 2a  28 79 76 61 6c 75 65 25  |ED,0,84*(yvalue%|
000024d0  29 2b 28 7a 6c 61 79 65  72 25 2a 38 29 2b 34 32  |)+(zlayer%*8)+42|
000024e0  0d 0e b0 08 c9 20 31 34  0d 0e ba 20 f0 20 26 45  |..... 14... . &E|
000024f0  44 2c 31 31 30 38 2c 28  38 34 2a 28 79 76 61 6c  |D,1108,(84*(yval|
00002500  75 65 25 29 29 2b 35 30  0d 0e c4 08 c9 20 31 35  |ue%))+50..... 15|
00002510  0d 0e ce 20 f0 20 26 45  44 2c 31 31 39 32 2c 28  |... . &ED,1192,(|
00002520  38 34 2a 28 79 76 61 6c  75 65 25 29 29 2b 35 30  |84*(yvalue%))+50|
00002530  0d 0e d8 22 f0 20 26 45  44 2c 31 31 38 36 2c 28  |...". &ED,1186,(|
00002540  38 34 2a 28 79 76 61 6c  75 65 25 2d 31 29 29 2b  |84*(yvalue%-1))+|
00002550  35 30 0d 0e e2 05 7f 0d  0e ec 3f f0 20 26 45 44  |50........?. &ED|
00002560  2c 28 38 34 2a 28 78 76  61 6c 75 65 25 2d 31 29  |,(84*(xvalue%-1)|
00002570  29 2b 28 7a 6c 61 79 65  72 25 2a 38 29 2c 28 38  |)+(zlayer%*8),(8|
00002580  34 2a 79 76 61 6c 75 65  25 29 2b 28 7a 6c 61 79  |4*yvalue%)+(zlay|
00002590  65 72 25 2a 38 29 0d 0e  f6 05 cb 0d 0f 00 08 e6  |er%*8)..........|
000025a0  38 2c 30 0d 0f 0a 05 cb  0d 0f 14 05 e1 0d 0f 1e  |8,0.............|
000025b0  4c f4 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |L. -------------|
000025c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000025f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 0f 28 0d dd f2 70  |---------..(...p|
00002600  6c 6f 74 74 6f 70 0d 0f  32 1d e7 20 62 6f 61 72  |lottop..2.. boar|
00002610  64 70 6f 73 24 28 35 2c  37 2c 34 29 3c 3e 22 30  |dpos$(5,7,4)<>"0|
00002620  22 20 8c 0d 0f 3c 2d ef  20 32 33 2c 32 37 2c 30  |" ...<-. 23,27,0|
00002630  2c bb 28 62 6f 61 72 64  70 6f 73 24 28 35 2c 37  |,.(boardpos$(5,7|
00002640  2c 34 29 29 2c 30 2c 30  2c 30 2c 30 2c 30 2c 30  |,4)),0,0,0,0,0,0|
00002650  0d 0f 46 11 f0 20 26 45  44 2c 35 38 34 2c 34 31  |..F.. &ED,584,41|
00002660  36 0d 0f 50 1c ef 20 32  33 2c 32 37 2c 30 2c 39  |6..P.. 23,27,0,9|
00002670  39 2c 30 2c 30 2c 30 2c  30 2c 30 2c 30 0d 0f 5a  |9,0,0,0,0,0,0..Z|
00002680  11 f0 20 26 45 44 2c 35  38 34 2c 34 31 36 0d 0f  |.. &ED,584,416..|
00002690  64 1c ef 20 32 33 2c 32  37 2c 30 2c 39 38 2c 30  |d.. 23,27,0,98,0|
000026a0  2c 30 2c 30 2c 30 2c 30  2c 30 0d 0f 6e 11 f0 20  |,0,0,0,0,0..n.. |
000026b0  26 45 44 2c 35 38 34 2c  34 31 36 0d 0f 78 05 cd  |&ED,584,416..x..|
000026c0  0d 0f 82 05 e1 0d 0f 8c  4c f4 20 2d 2d 2d 2d 2d  |........L. -----|
000026d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002710  2d 0d 0f 96 11 dd f2 64  72 61 77 73 65 63 74 69  |-......drawsecti|
00002720  6f 6e 0d 0f a0 11 f1 20  8a 33 2c 33 29 20 89 28  |on..... .3,3) .(|
00002730  35 30 29 0d 0f aa 2c 78  6c 6f 77 25 3d 28 38 34  |50)...,xlow%=(84|
00002740  2a 28 78 76 61 6c 75 65  25 2d 31 29 29 3a e7 20  |*(xvalue%-1)):. |
00002750  78 6c 6f 77 25 3c 30 20  78 6c 6f 77 25 3d 30 0d  |xlow%<0 xlow%=0.|
00002760  0f b4 1f 78 68 69 67 68  25 3d 28 38 34 2a 28 78  |...xhigh%=(84*(x|
00002770  76 61 6c 75 65 25 2d 31  29 29 2b 31 33 30 0d 0f  |value%-1))+130..|
00002780  be 28 79 6c 6f 77 25 3d  28 38 34 2a 79 76 61 6c  |.(ylow%=(84*yval|
00002790  75 65 25 29 3a e7 20 79  6c 6f 77 25 3c 30 20 79  |ue%):. ylow%<0 y|
000027a0  6c 6f 77 25 3d 30 0d 0f  c8 1b 79 68 69 67 68 25  |low%=0....yhigh%|
000027b0  3d 28 38 34 2a 79 76 61  6c 75 65 25 29 2b 31 32  |=(84*yvalue%)+12|
000027c0  30 0d 0f d2 22 ef 32 34  2c 78 6c 6f 77 25 3b 79  |0...".24,xlow%;y|
000027d0  6c 6f 77 25 3b 78 68 69  67 68 25 3b 79 68 69 67  |low%;xhigh%;yhig|
000027e0  68 25 3b 0d 0f dc 43 78  6d 61 78 25 3d 78 76 61  |h%;...Cxmax%=xva|
000027f0  6c 75 65 25 2b 31 3a 78  6d 69 6e 25 3d 78 76 61  |lue%+1:xmin%=xva|
00002800  6c 75 65 25 2d 32 3a 79  6d 61 78 25 3d 79 76 61  |lue%-2:ymax%=yva|
00002810  6c 75 65 25 2b 31 3a 79  6d 69 6e 25 3d 79 76 61  |lue%+1:ymin%=yva|
00002820  6c 75 65 25 2d 32 0d 0f  e6 15 e7 20 78 6d 69 6e  |lue%-2..... xmin|
00002830  25 3c 32 20 78 6d 69 6e  25 3d 32 0d 0f f0 15 e7  |%<2 xmin%=2.....|
00002840  20 79 6d 69 6e 25 3c 31  20 79 6d 69 6e 25 3d 31  | ymin%<1 ymin%=1|
00002850  0d 0f fa 17 e7 20 78 6d  61 78 25 3e 31 33 20 78  |..... xmax%>13 x|
00002860  6d 61 78 25 3d 31 33 0d  10 04 15 e7 20 79 6d 61  |max%=13..... yma|
00002870  78 25 3e 38 20 79 6d 61  78 25 3d 38 0d 10 0e 12  |x%>8 ymax%=8....|
00002880  e3 20 7a 6c 6f 6f 70 25  3d 31 20 b8 20 34 0d 10  |. zloop%=1 . 4..|
00002890  18 2d f2 70 6c 6f 74 28  30 2c 30 2c 78 6d 61 78  |.-.plot(0,0,xmax|
000028a0  25 2c 78 6d 69 6e 25 2c  79 6d 61 78 25 2c 79 6d  |%,xmin%,ymax%,ym|
000028b0  69 6e 25 2c 7a 6c 6f 6f  70 25 29 0d 10 22 0b ed  |in%,zloop%).."..|
000028c0  7a 6c 6f 6f 70 25 0d 10  2c 0c f2 70 6c 6f 74 74  |zloop%..,..plott|
000028d0  6f 70 0d 10 36 07 ef 32  36 0d 10 40 05 e1 0d 10  |op..6..26..@....|
000028e0  4a 4b f4 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |JK. ------------|
000028f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002920  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 10 54 11 dd f2 73  |---------..T...s|
00002930  68 6f 77 61 6c 6c 62 69  74 73 0d 10 5e 05 db 0d  |howallbits..^...|
00002940  10 68 0f 6d 61 72 67 69  6e 25 3d 31 36 30 0d 10  |.h.margin%=160..|
00002950  72 06 ef 35 0d 10 7c 36  ec 20 30 2c 37 36 35 3a  |r..5..|6. 0,765:|
00002960  e6 30 2c 31 32 37 3a f1  22 46 4c 4f 57 45 52 53  |.0,127:."FLOWERS|
00002970  20 20 20 31 20 6f 66 22  3a ec 20 31 36 30 2c 37  |   1 of":. 160,7|
00002980  33 30 3a f1 22 65 61 63  68 22 0d 10 86 11 e3 20  |30:."each"..... |
00002990  6c 6f 6f 70 25 3d 31 20  b8 20 34 0d 10 90 1f ef  |loop%=1 . 4.....|
000029a0  20 32 33 2c 32 37 2c 30  2c 6c 6f 6f 70 25 2c 30  | 23,27,0,loop%,0|
000029b0  2c 30 2c 30 2c 30 2c 30  2c 30 0d 10 9a 21 f0 20  |,0,0,0,0,0...!. |
000029c0  26 45 44 2c 6d 61 72 67  69 6e 25 2b 28 6c 6f 6f  |&ED,margin%+(loo|
000029d0  70 25 2a 31 30 30 29 2c  37 30 30 0d 10 a4 0b ed  |p%*100),700.....|
000029e0  20 6c 6f 6f 70 25 0d 10  ae 2f ec 20 30 2c 36 36  | loop%.../. 0,66|
000029f0  35 3a f1 22 53 45 41 53  4f 4e 53 20 20 20 31 20  |5:."SEASONS   1 |
00002a00  6f 66 22 3a ec 20 31 36  30 2c 36 33 30 3a f1 22  |of":. 160,630:."|
00002a10  65 61 63 68 22 0d 10 b8  11 e3 20 6c 6f 6f 70 25  |each"..... loop%|
00002a20  3d 31 20 b8 20 34 0d 10  c2 21 ef 20 32 33 2c 32  |=1 . 4...!. 23,2|
00002a30  37 2c 30 2c 34 2b 6c 6f  6f 70 25 2c 30 2c 30 2c  |7,0,4+loop%,0,0,|
00002a40  30 2c 30 2c 30 2c 30 0d  10 cc 21 f0 20 26 45 44  |0,0,0,0...!. &ED|
00002a50  2c 6d 61 72 67 69 6e 25  2b 28 6c 6f 6f 70 25 2a  |,margin%+(loop%*|
00002a60  31 30 30 29 2c 36 30 30  0d 10 d6 0b ed 20 6c 6f  |100),600..... lo|
00002a70  6f 70 25 0d 10 e0 2f ec  20 30 2c 35 36 35 3a f1  |op%.../. 0,565:.|
00002a80  22 44 52 41 47 4f 4e 53  20 20 20 34 20 6f 66 22  |"DRAGONS   4 of"|
00002a90  3a ec 20 31 36 30 2c 35  33 30 3a f1 22 65 61 63  |:. 160,530:."eac|
00002aa0  68 22 0d 10 ea 11 e3 20  6c 6f 6f 70 25 3d 31 20  |h"..... loop%=1 |
00002ab0  b8 20 33 0d 10 f4 21 ef  20 32 33 2c 32 37 2c 30  |. 3...!. 23,27,0|
00002ac0  2c 38 2b 6c 6f 6f 70 25  2c 30 2c 30 2c 30 2c 30  |,8+loop%,0,0,0,0|
00002ad0  2c 30 2c 30 0d 10 fe 21  f0 20 26 45 44 2c 6d 61  |,0,0...!. &ED,ma|
00002ae0  72 67 69 6e 25 2b 28 6c  6f 6f 70 25 2a 31 30 30  |rgin%+(loop%*100|
00002af0  29 2c 35 30 30 0d 11 08  0b ed 20 6c 6f 6f 70 25  |),500..... loop%|
00002b00  0d 11 12 2f ec 20 30 2c  34 36 35 3a f1 22 57 49  |.../. 0,465:."WI|
00002b10  4e 44 53 20 20 20 20 20  34 20 6f 66 22 3a ec 20  |NDS     4 of":. |
00002b20  31 36 30 2c 34 33 30 3a  f1 22 65 61 63 68 22 0d  |160,430:."each".|
00002b30  11 1c 11 e3 20 6c 6f 6f  70 25 3d 31 20 b8 20 34  |.... loop%=1 . 4|
00002b40  0d 11 26 22 ef 20 32 33  2c 32 37 2c 30 2c 33 38  |..&". 23,27,0,38|
00002b50  2b 6c 6f 6f 70 25 2c 30  2c 30 2c 30 2c 30 2c 30  |+loop%,0,0,0,0,0|
00002b60  2c 30 0d 11 30 21 f0 20  26 45 44 2c 6d 61 72 67  |,0..0!. &ED,marg|
00002b70  69 6e 25 2b 28 6c 6f 6f  70 25 2a 31 30 30 29 2c  |in%+(loop%*100),|
00002b80  34 30 30 0d 11 3a 0b ed  20 6c 6f 6f 70 25 0d 11  |400..:.. loop%..|
00002b90  44 0a f7 20 8d 44 4e 51  0d 11 4e 3e dc 20 33 36  |D.. .DNQ..N>. 36|
00002ba0  35 2c 53 50 4f 54 53 20  20 20 20 20 34 20 6f 66  |5,SPOTS     4 of|
00002bb0  2c 32 36 35 2c 43 52 41  4b 53 20 20 20 20 20 34  |,265,CRAKS     4|
00002bc0  20 6f 66 2c 31 36 35 2c  42 41 4d 53 20 20 20 20  | of,165,BAMS    |
00002bd0  20 20 34 20 6f 66 0d 11  58 12 e3 20 67 72 6f 75  |  4 of..X.. grou|
00002be0  70 25 3d 30 20 b8 20 32  0d 11 62 17 f3 79 70 6f  |p%=0 . 2..b..ypo|
00002bf0  73 69 74 69 6f 6e 25 2c  73 74 72 69 6e 67 24 0d  |sition%,string$.|
00002c00  11 6c 1a ec 30 2c 79 70  6f 73 69 74 69 6f 6e 25  |.l..0,yposition%|
00002c10  3a f1 73 74 72 69 6e 67  24 0d 11 76 1e ec 31 36  |:.string$..v..16|
00002c20  30 2c 79 70 6f 73 69 74  69 6f 6e 25 2d 33 35 3a  |0,yposition%-35:|
00002c30  f1 22 65 61 63 68 22 0d  11 80 11 e3 20 6c 6f 6f  |."each"..... loo|
00002c40  70 25 3d 31 20 b8 20 39  0d 11 8a 2f ef 20 32 33  |p%=1 . 9.../. 23|
00002c50  2c 32 37 2c 30 2c 28 31  31 2b 6c 6f 6f 70 25 29  |,27,0,(11+loop%)|
00002c60  2b 28 67 72 6f 75 70 25  2a 39 29 2c 30 2c 30 2c  |+(group%*9),0,0,|
00002c70  30 2c 30 2c 30 2c 30 0d  11 94 2e f0 20 26 45 44  |0,0,0,0..... &ED|
00002c80  2c 6d 61 72 67 69 6e 25  2b 28 6c 6f 6f 70 25 2a  |,margin%+(loop%*|
00002c90  31 30 30 29 2c 33 30 30  2d 28 67 72 6f 75 70 25  |100),300-(group%|
00002ca0  2a 31 30 30 29 0d 11 9e  0b ed 20 6c 6f 6f 70 25  |*100)..... loop%|
00002cb0  0d 11 a8 0c ed 20 67 72  6f 75 70 25 0d 11 b2 27  |..... group%...'|
00002cc0  ec 20 37 30 30 2c 37 38  30 3a f1 22 41 4e 59 20  |. 700,780:."ANY |
00002cd0  54 57 4f 20 46 4c 4f 57  45 52 53 20 43 41 4e 20  |TWO FLOWERS CAN |
00002ce0  42 45 22 0d 11 bc 23 ec  20 37 30 30 2c 37 34 30  |BE"...#. 700,740|
00002cf0  3a f1 22 53 45 4c 45 43  54 45 44 20 41 53 20 41  |:."SELECTED AS A|
00002d00  20 50 41 49 52 22 0d 11  c6 27 ec 20 37 30 30 2c  | PAIR"...'. 700,|
00002d10  36 38 30 3a f1 22 41 4e  59 20 54 57 4f 20 53 45  |680:."ANY TWO SE|
00002d20  41 53 4f 4e 53 20 43 41  4e 20 42 45 22 0d 11 d0  |ASONS CAN BE"...|
00002d30  23 ec 20 37 30 30 2c 36  34 30 3a f1 22 53 45 4c  |#. 700,640:."SEL|
00002d40  45 43 54 45 44 20 41 53  20 41 20 50 41 49 52 22  |ECTED AS A PAIR"|
00002d50  0d 11 da 21 f5 3a c8 97  78 25 2c 79 25 2c 62 75  |...!.:..x%,y%,bu|
00002d60  74 74 6f 6e 25 3a fd 20  62 75 74 74 6f 6e 25 3d  |tton%:. button%=|
00002d70  30 0d 11 e4 06 ef 34 0d  11 ee 19 ef 32 33 2c 31  |0.....4.....23,1|
00002d80  2c 30 2c 30 2c 30 2c 30  2c 30 2c 30 2c 30 2c 30  |,0,0,0,0,0,0,0,0|
00002d90  0d 11 f8 4c 20 f1 8a 33  2c 32 29 22 54 68 65 20  |...L ..3,2)"The |
00002da0  67 61 6d 65 20 69 73 20  70 6c 61 79 65 64 20 75  |game is played u|
00002db0  73 69 6e 67 20 27 4d 41  48 20 4a 4f 4e 47 27 20  |sing 'MAH JONG' |
00002dc0  74 69 6c 65 73 20 2c 20  61 73 20 64 69 73 70 6c  |tiles , as displ|
00002dd0  61 79 65 64 20 62 65 6c  6f 77 2e 22 0d 12 02 4a  |ayed below."...J|
00002de0  20 f1 8a 33 2c 33 29 22  54 68 65 20 6f 62 6a 65  | ..3,3)"The obje|
00002df0  63 74 20 69 73 20 74 6f  20 72 65 6d 6f 76 65 20  |ct is to remove |
00002e00  74 69 6c 65 73 20 2c 20  69 6e 20 70 61 69 72 73  |tiles , in pairs|
00002e10  20 2c 20 75 6e 74 69 6c  20 6e 6f 6e 65 20 72 65  | , until none re|
00002e20  6d 61 69 6e 2e 22 0d 12  0c 2a f1 8a 33 2c 34 29  |main."...*..3,4)|
00002e30  22 54 69 6c 65 73 20 63  61 6e 20 6f 6e 6c 79 20  |"Tiles can only |
00002e40  62 65 20 72 65 6d 6f 76  65 64 20 69 66 20 3a 22  |be removed if :"|
00002e50  0d 12 16 47 f1 8a 38 2c  35 29 22 20 45 49 54 48  |...G..8,5)" EITH|
00002e60  45 52 20 20 20 54 68 65  72 65 20 69 73 20 6e 6f  |ER   There is no|
00002e70  20 74 69 6c 65 20 74 6f  20 69 74 27 73 20 72 69  | tile to it's ri|
00002e80  67 68 74 20 6f 6e 20 74  68 65 20 73 61 6d 65 20  |ght on the same |
00002e90  6c 65 76 65 6c 2e 22 0d  12 20 46 f1 8a 38 2c 36  |level.".. F..8,6|
00002ea0  29 22 20 4f 52 20 20 20  20 20 20 20 54 68 65 72  |)" OR       Ther|
00002eb0  65 20 69 73 20 6e 6f 20  74 69 6c 65 20 74 6f 20  |e is no tile to |
00002ec0  69 74 27 73 20 6c 65 66  74 20 6f 6e 20 74 68 65  |it's left on the|
00002ed0  20 73 61 6d 65 20 6c 65  76 65 6c 2e 22 0d 12 2a  | same level."..*|
00002ee0  30 f1 8a 31 35 2c 33 30  29 22 50 52 45 53 53 20  |0..15,30)"PRESS |
00002ef0  41 4e 59 20 42 55 54 54  4f 4e 20 54 4f 20 52 45  |ANY BUTTON TO RE|
00002f00  54 55 52 4e 20 54 4f 20  47 41 4d 45 22 0d 12 34  |TURN TO GAME"..4|
00002f10  22 f5 3a c8 97 78 25 2c  79 25 2c 62 75 74 74 6f  |".:..x%,y%,butto|
00002f20  6e 25 3a fd 20 62 75 74  74 6f 6e 25 3c 3e 30 0d  |n%:. button%<>0.|
00002f30  12 3e 0d 72 65 74 75 72  6e 25 3d b9 0d 12 48 0b  |.>.return%=...H.|
00002f40  db 3a f2 64 72 61 77 0d  12 52 05 e1 0d 12 5c 4b  |.:.draw..R....\K|
00002f50  f4 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |. --------------|
00002f60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002f90  2d 2d 2d 2d 2d 2d 2d 0d  12 66 11 dd f2 6d 65 6e  |-------..f...men|
00002fa0  75 28 74 79 70 65 25 29  0d 12 70 0c e6 30 2c 32  |u(type%)..p..0,2|
00002fb0  30 3a ef 35 0d 12 7a 18  c8 93 20 c8 90 20 32 30  |0:.5..z... .. 20|
00002fc0  2c 39 34 30 2c 31 32 30  30 2c 35 38 0d 12 84 0f  |,940,1200,58....|
00002fd0  e7 20 74 79 70 65 25 3d  30 20 8c 0d 12 8e 17 e7  |. type%=0 ......|
00002fe0  20 64 6f 75 62 6c 65 73  76 61 6c 69 64 25 3d b9  | doublesvalid%=.|
00002ff0  20 8c 0d 12 98 0a f7 20  8d 74 62 52 0d 12 a2 33  | ...... .tbR...3|
00003000  dc 20 4d 45 4e 55 20 4f  46 46 2c 53 48 4f 57 20  |. MENU OFF,SHOW |
00003010  4d 4f 56 45 53 2c 4e 45  57 20 47 41 4d 45 2c 49  |MOVES,NEW GAME,I|
00003020  4e 46 4f 52 4d 41 54 49  4f 4e 2c 51 55 49 54 0d  |NFORMATION,QUIT.|
00003030  12 ac 0c cc 20 f7 20 8d  74 76 52 0d 12 b6 1e dc  |.... . .tvR.....|
00003040  20 4d 45 4e 55 20 4f 46  46 2c 2c 4e 45 57 20 47  | MENU OFF,,NEW G|
00003050  41 4d 45 2c 2c 51 55 49  54 0d 12 c0 05 cd 0d 12  |AME,,QUIT.......|
00003060  ca 05 cd 0d 12 d4 0f e7  20 74 79 70 65 25 3d 31  |........ type%=1|
00003070  20 8c 0d 12 de 0a f7 20  8d 64 68 52 0d 12 e8 36  | ...... .dhR...6|
00003080  dc 20 42 41 43 4b 20 54  4f 20 47 41 4d 45 2c 53  |. BACK TO GAME,S|
00003090  48 4f 57 20 4e 45 58 54  2c 4e 45 57 20 47 41 4d  |HOW NEXT,NEW GAM|
000030a0  45 2c 49 4e 46 4f 52 4d  41 54 49 4f 4e 2c 51 55  |E,INFORMATION,QU|
000030b0  49 54 0d 12 f2 05 cd 0d  12 fc 14 e3 20 62 6f 78  |IT.......... box|
000030c0  6c 6f 6f 70 25 3d 31 20  b8 20 35 0d 13 06 09 e6  |loop%=1 . 5.....|
000030d0  30 2c 34 32 0d 13 10 0b  f3 6d 65 73 73 31 24 0d  |0,42.....mess1$.|
000030e0  13 1a 22 6d 65 6e 75 70  6f 73 25 3d 33 30 2b 28  |.."menupos%=30+(|
000030f0  32 34 30 2a 28 62 6f 78  6c 6f 6f 70 25 2d 31 29  |240*(boxloop%-1)|
00003100  29 0d 13 24 1d c8 93 20  c8 90 20 6d 65 6e 75 70  |)..$... .. menup|
00003110  6f 73 25 2c 39 35 30 2c  32 32 30 2c 34 30 0d 13  |os%,950,220,40..|
00003120  2e 23 ec 20 31 30 2b 6d  65 6e 75 70 6f 73 25 2c  |.#. 10+menupos%,|
00003130  39 38 30 3a e6 30 2c 30  3a f1 20 6d 65 73 73 31  |980:.0,0:. mess1|
00003140  24 0d 13 38 0d ed 62 6f  78 6c 6f 6f 70 25 0d 13  |$..8..boxloop%..|
00003150  42 21 f5 3a c8 97 78 25  2c 79 25 2c 62 75 74 74  |B!.:..x%,y%,butt|
00003160  6f 6e 25 3a fd 20 62 75  74 74 6f 6e 25 3d 30 0d  |on%:. button%=0.|
00003170  13 4c 22 f5 3a c8 97 78  25 2c 79 25 2c 62 75 74  |.L".:..x%,y%,but|
00003180  74 6f 6e 25 3a fd 20 62  75 74 74 6f 6e 25 3c 3e  |ton%:. button%<>|
00003190  30 0d 13 56 12 73 65 6c  65 63 74 76 61 6c 69 64  |0..V.selectvalid|
000031a0  25 3d 30 0d 13 60 24 e7  20 79 25 3e 39 35 30 20  |%=0..`$. y%>950 |
000031b0  80 20 79 25 3c 39 39 30  20 80 20 62 75 74 74 6f  |. y%<990 . butto|
000031c0  6e 25 3c 3e 32 20 8c 0d  13 6a 10 20 e7 20 74 79  |n%<>2 ...j. . ty|
000031d0  70 65 25 3d 30 20 8c 0d  13 74 2b e7 20 78 25 3e  |pe%=0 ...t+. x%>|
000031e0  33 31 20 80 20 78 25 3c  32 35 30 20 8c 20 c8 93  |31 . x%<250 . ..|
000031f0  20 c8 90 20 32 30 2c 39  34 30 2c 31 32 30 30 2c  | .. 20,940,1200,|
00003200  35 38 0d 13 7e 17 e7 20  78 25 3e 32 37 31 20 80  |58..~.. x%>271 .|
00003210  20 78 25 3c 34 39 30 20  8c 0d 13 88 17 e7 20 64  | x%<490 ...... d|
00003220  6f 75 62 6c 65 73 76 61  6c 69 64 25 3d b9 20 8c  |oublesvalid%=. .|
00003230  0d 13 92 1d 73 65 6c 65  63 74 76 61 6c 69 64 25  |....selectvalid%|
00003240  3d 31 3a f2 73 68 6f 77  6d 6f 76 65 73 0d 13 9c  |=1:.showmoves...|
00003250  05 cc 0d 13 a6 16 73 65  6c 65 63 74 76 61 6c 69  |......selectvali|
00003260  64 25 3d 30 20 3a ef 37  0d 13 b0 05 cd 0d 13 ba  |d%=0 :.7........|
00003270  05 cd 0d 13 c4 05 cd 0d  13 ce 2e e7 20 74 79 70  |............ typ|
00003280  65 25 3d 31 20 80 20 79  25 3e 39 35 30 20 80 20  |e%=1 . y%>950 . |
00003290  79 25 3c 39 39 30 20 80  20 62 75 74 74 6f 6e 25  |y%<990 . button%|
000032a0  3c 3e 32 20 8c 0d 13 d8  2d e7 20 78 25 3e 33 31  |<>2 ....-. x%>31|
000032b0  20 80 20 78 25 3c 32 35  30 20 8c 20 73 65 6c 65  | . x%<250 . sele|
000032c0  63 74 76 61 6c 69 64 25  3d 31 3a 75 6e 64 6f 25  |ctvalid%=1:undo%|
000032d0  3d a3 0d 13 e2 2e e7 20  78 25 3e 32 37 31 20 80  |=...... x%>271 .|
000032e0  20 78 25 3c 34 39 30 20  8c 20 73 65 6c 65 63 74  | x%<490 . select|
000032f0  76 61 6c 69 64 25 3d 31  3a 75 6e 64 6f 25 3d b9  |valid%=1:undo%=.|
00003300  0d 13 ec 05 cd 0d 13 f6  23 e7 79 25 3e 39 35 30  |........#.y%>950|
00003310  20 80 20 79 25 3c 39 39  30 20 80 20 62 75 74 74  | . y%<990 . butt|
00003320  6f 6e 25 3c 3e 32 20 8c  0d 14 00 32 e7 20 78 25  |on%<>2 ....2. x%|
00003330  3e 35 31 31 20 80 20 78  25 3c 37 33 30 20 8c 20  |>511 . x%<730 . |
00003340  73 65 6c 65 63 74 76 61  6c 69 64 25 3d 31 3a db  |selectvalid%=1:.|
00003350  3a 72 65 70 6c 61 79 25  3d b9 0d 14 0a 17 e7 20  |:replay%=...... |
00003360  78 25 3e 37 35 31 20 80  20 78 25 3c 39 37 30 20  |x%>751 . x%<970 |
00003370  8c 0d 14 14 17 e7 20 64  6f 75 62 6c 65 73 76 61  |...... doublesva|
00003380  6c 69 64 25 3d b9 20 8c  0d 14 1e 0f e7 20 74 79  |lid%=. ...... ty|
00003390  70 65 25 3d 30 20 8c 0d  14 28 1f 73 65 6c 65 63  |pe%=0 ...(.selec|
000033a0  74 76 61 6c 69 64 25 3d  31 3a f2 73 68 6f 77 61  |tvalid%=1:.showa|
000033b0  6c 6c 62 69 74 73 0d 14  32 05 cc 0d 14 3c 12 73  |llbits..2....<.s|
000033c0  65 6c 65 63 74 76 61 6c  69 64 25 3d 31 0d 14 46  |electvalid%=1..F|
000033d0  05 cd 0d 14 50 05 cc 0d  14 5a 16 73 65 6c 65 63  |....P....Z.selec|
000033e0  74 76 61 6c 69 64 25 3d  30 20 3a ef 37 0d 14 64  |tvalid%=0 :.7..d|
000033f0  05 cd 0d 14 6e 05 cd 0d  14 78 67 e7 20 78 25 3e  |....n....xg. x%>|
00003400  39 39 31 20 80 20 78 25  3c 31 32 31 30 20 8c 20  |991 . x%<1210 . |
00003410  db 3a ef 34 3a fb 31 32  37 3a f1 8a 32 30 2c 32  |.:.4:.127:..20,2|
00003420  30 29 22 42 59 45 21 22  3a f1 8a 31 32 2c 32 32  |0)"BYE!":..12,22|
00003430  29 22 50 72 6f 67 72 61  6d 6d 65 72 20 44 2e 41  |)"Programmer D.A|
00003440  2e 50 65 64 64 65 72 22  3a 72 65 70 6c 61 79 25  |.Pedder":replay%|
00003450  3d b9 3a 66 69 6e 69 73  68 65 64 25 3d b9 0d 14  |=.:finished%=...|
00003460  82 05 cd 0d 14 8c 05 cd  0d 14 96 2c e7 20 73 65  |...........,. se|
00003470  6c 65 63 74 76 61 6c 69  64 25 3c 3e 31 20 8c 20  |lectvalid%<>1 . |
00003480  c8 93 20 c8 90 20 32 30  2c 39 34 30 2c 31 32 30  |.. .. 20,940,120|
00003490  30 2c 35 38 0d 14 a0 06  ef 34 0d 14 aa 19 ef 32  |0,58.....4.....2|
000034a0  33 2c 31 2c 30 2c 30 2c  30 2c 30 2c 30 2c 30 2c  |3,1,0,0,0,0,0,0,|
000034b0  30 2c 30 0d 14 b4 0d 79  76 61 6c 75 65 25 3d 30  |0,0....yvalue%=0|
000034c0  0d 14 be 05 e1 0d 14 c8  4b f4 20 2d 2d 2d 2d 2d  |........K. -----|
000034d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003510  0d 14 d2 0f dd f2 73 68  6f 77 6d 6f 76 65 73 0d  |......showmoves.|
00003520  14 dc 0f f4 20 62 75 74  74 6f 6e 25 3d 30 0d 14  |.... button%=0..|
00003530  e6 06 ef 34 0d 14 f0 19  ef 32 33 2c 31 2c 30 2c  |...4.....23,1,0,|
00003540  30 2c 30 2c 30 2c 30 2c  30 2c 30 2c 30 0d 14 fa  |0,0,0,0,0,0,0...|
00003550  10 f1 8a 31 32 2c 33 29  89 28 36 30 29 0d 15 04  |...12,3).(60)...|
00003560  0f 73 68 6f 77 6c 6f 6f  70 25 3d 30 0d 15 0e 13  |.showloop%=0....|
00003570  e3 20 78 73 68 6f 77 25  3d 31 20 b8 20 31 35 0d  |. xshow%=1 . 15.|
00003580  15 18 12 e3 20 79 73 68  6f 77 25 3d 31 20 b8 20  |.... yshow%=1 . |
00003590  38 0d 15 22 12 e3 20 7a  73 68 6f 77 25 3d 31 20  |8..".. zshow%=1 |
000035a0  b8 20 35 0d 15 2c 2b e7  20 62 6f 61 72 64 70 6f  |. 5..,+. boardpo|
000035b0  73 24 28 7a 73 68 6f 77  25 2c 78 73 68 6f 77 25  |s$(zshow%,xshow%|
000035c0  2c 79 73 68 6f 77 25 29  3e 22 30 22 20 8c 0d 15  |,yshow%)>"0" ...|
000035d0  36 30 7a 6c 61 79 65 72  25 3d 7a 73 68 6f 77 25  |60zlayer%=zshow%|
000035e0  3a 78 76 61 6c 75 65 25  3d 78 73 68 6f 77 25 3a  |:xvalue%=xshow%:|
000035f0  79 76 61 6c 75 65 25 3d  79 73 68 6f 77 25 0d 15  |yvalue%=yshow%..|
00003600  40 0c 76 61 6c 69 64 25  3d a3 0d 15 4a 11 f2 74  |@.valid%=...J..t|
00003610  69 6c 65 76 61 6c 69 64  28 31 29 0d 15 54 39 e7  |ilevalid(1)..T9.|
00003620  20 76 61 6c 69 64 25 3d  b9 20 80 20 62 6f 61 72  | valid%=. . boar|
00003630  64 70 6f 73 24 28 7a 73  68 6f 77 25 2b 31 2c 78  |dpos$(zshow%+1,x|
00003640  73 68 6f 77 25 2c 79 73  68 6f 77 25 29 3c 3d 22  |show%,yshow%)<="|
00003650  30 22 20 8c 0d 15 5e 39  74 69 6c 65 76 61 6c 69  |0" ...^9tilevali|
00003660  64 24 28 73 68 6f 77 6c  6f 6f 70 25 29 3d 62 6f  |d$(showloop%)=bo|
00003670  61 72 64 70 6f 73 24 28  7a 73 68 6f 77 25 2c 78  |ardpos$(zshow%,x|
00003680  73 68 6f 77 25 2c 79 73  68 6f 77 25 29 0d 15 68  |show%,yshow%)..h|
00003690  3f e7 20 bb 28 74 69 6c  65 76 61 6c 69 64 24 28  |?. .(tilevalid$(|
000036a0  73 68 6f 77 6c 6f 6f 70  25 29 29 3c 39 20 80 20  |showloop%))<9 . |
000036b0  bb 28 74 69 6c 65 76 61  6c 69 64 24 28 73 68 6f  |.(tilevalid$(sho|
000036c0  77 6c 6f 6f 70 25 29 29  3e 30 20 8c 0d 15 72 22  |wloop%))>0 ...r"|
000036d0  e7 20 bb 28 74 69 6c 65  76 61 6c 69 64 24 28 73  |. .(tilevalid$(s|
000036e0  68 6f 77 6c 6f 6f 70 25  29 29 3c 35 20 8c 0d 15  |howloop%))<5 ...|
000036f0  7c 1d 74 69 6c 65 76 61  6c 69 64 24 28 73 68 6f  ||.tilevalid$(sho|
00003700  77 6c 6f 6f 70 25 29 3d  22 31 22 0d 15 86 05 cc  |wloop%)="1".....|
00003710  0d 15 90 1d 74 69 6c 65  76 61 6c 69 64 24 28 73  |....tilevalid$(s|
00003720  68 6f 77 6c 6f 6f 70 25  29 3d 22 32 22 0d 15 9a  |howloop%)="2"...|
00003730  05 cd 0d 15 a4 05 cd 0d  15 ae 23 74 69 6c 65 63  |..........#tilec|
00003740  6f 6f 72 64 73 25 28 73  68 6f 77 6c 6f 6f 70 25  |oords%(showloop%|
00003750  2c 31 29 3d 7a 73 68 6f  77 25 0d 15 b8 23 74 69  |,1)=zshow%...#ti|
00003760  6c 65 63 6f 6f 72 64 73  25 28 73 68 6f 77 6c 6f  |lecoords%(showlo|
00003770  6f 70 25 2c 32 29 3d 78  73 68 6f 77 25 0d 15 c2  |op%,2)=xshow%...|
00003780  23 74 69 6c 65 63 6f 6f  72 64 73 25 28 73 68 6f  |#tilecoords%(sho|
00003790  77 6c 6f 6f 70 25 2c 33  29 3d 79 73 68 6f 77 25  |wloop%,3)=yshow%|
000037a0  0d 15 cc 19 73 68 6f 77  6c 6f 6f 70 25 3d 73 68  |....showloop%=sh|
000037b0  6f 77 6c 6f 6f 70 25 2b  31 0d 15 d6 05 cd 0d 15  |owloop%+1.......|
000037c0  e0 05 cd 0d 15 ea 0c ed  20 7a 73 68 6f 77 25 0d  |........ zshow%.|
000037d0  15 f4 0c ed 20 79 73 68  6f 77 25 0d 15 fe 0c ed  |.... yshow%.....|
000037e0  20 78 73 68 6f 77 25 0d  16 08 10 63 68 65 63 6b  | xshow%....check|
000037f0  6c 6f 6f 70 25 3d 30 0d  16 12 05 f5 0d 16 1c 0b  |loop%=0.........|
00003800  75 6e 64 6f 25 3d a3 0d  16 26 13 64 6f 75 62 6c  |undo%=...&.doubl|
00003810  65 73 66 6f 75 6e 64 25  3d a3 0d 16 30 1a 64 6f  |esfound%=...0.do|
00003820  75 62 6c 6f 6f 70 25 3d  63 68 65 63 6b 6c 6f 6f  |ubloop%=checkloo|
00003830  70 25 2b 31 0d 16 3a 05  f5 0d 16 44 51 e7 20 74  |p%+1..:....DQ. t|
00003840  69 6c 65 76 61 6c 69 64  24 28 63 68 65 63 6b 6c  |ilevalid$(checkl|
00003850  6f 6f 70 25 29 3e 22 30  22 20 80 20 74 69 6c 65  |oop%)>"0" . tile|
00003860  76 61 6c 69 64 24 28 63  68 65 63 6b 6c 6f 6f 70  |valid$(checkloop|
00003870  25 29 3d 74 69 6c 65 76  61 6c 69 64 24 28 64 6f  |%)=tilevalid$(do|
00003880  75 62 6c 6f 6f 70 25 29  20 8c 0d 16 4e 25 7a 6c  |ubloop%) ...N%zl|
00003890  61 79 65 72 25 3d 74 69  6c 65 63 6f 6f 72 64 73  |ayer%=tilecoords|
000038a0  25 28 63 68 65 63 6b 6c  6f 6f 70 25 2c 31 29 0d  |%(checkloop%,1).|
000038b0  16 58 25 78 76 61 6c 75  65 25 3d 74 69 6c 65 63  |.X%xvalue%=tilec|
000038c0  6f 6f 72 64 73 25 28 63  68 65 63 6b 6c 6f 6f 70  |oords%(checkloop|
000038d0  25 2c 32 29 0d 16 62 25  79 76 61 6c 75 65 25 3d  |%,2)..b%yvalue%=|
000038e0  74 69 6c 65 63 6f 6f 72  64 73 25 28 63 68 65 63  |tilecoords%(chec|
000038f0  6b 6c 6f 6f 70 25 2c 33  29 0d 16 6c 0f f2 68 69  |kloop%,3)..l..hi|
00003900  6c 69 67 68 74 28 31 29  0d 16 76 24 7a 6c 61 79  |light(1)..v$zlay|
00003910  65 72 25 3d 74 69 6c 65  63 6f 6f 72 64 73 25 28  |er%=tilecoords%(|
00003920  64 6f 75 62 6c 6f 6f 70  25 2c 31 29 0d 16 80 24  |doubloop%,1)...$|
00003930  78 76 61 6c 75 65 25 3d  74 69 6c 65 63 6f 6f 72  |xvalue%=tilecoor|
00003940  64 73 25 28 64 6f 75 62  6c 6f 6f 70 25 2c 32 29  |ds%(doubloop%,2)|
00003950  0d 16 8a 24 79 76 61 6c  75 65 25 3d 74 69 6c 65  |...$yvalue%=tile|
00003960  63 6f 6f 72 64 73 25 28  64 6f 75 62 6c 6f 6f 70  |coords%(doubloop|
00003970  25 2c 33 29 0d 16 94 0f  f2 68 69 6c 69 67 68 74  |%,3).....hilight|
00003980  28 31 29 0d 16 9e 13 64  6f 75 62 6c 65 73 66 6f  |(1)....doublesfo|
00003990  75 6e 64 25 3d b9 0d 16  a8 05 cd 0d 16 b2 19 64  |und%=..........d|
000039a0  6f 75 62 6c 6f 6f 70 25  3d 64 6f 75 62 6c 6f 6f  |oubloop%=doubloo|
000039b0  70 25 2b 31 0d 16 bc 1a  fd 20 64 6f 75 62 6c 6f  |p%+1..... doublo|
000039c0  6f 70 25 3e 3d 73 68 6f  77 6c 6f 6f 70 25 0d 16  |op%>=showloop%..|
000039d0  c6 17 e7 20 64 6f 75 62  6c 65 73 66 6f 75 6e 64  |... doublesfound|
000039e0  25 3d b9 20 8c 0d 16 d0  0c f2 6d 65 6e 75 28 31  |%=. ......menu(1|
000039f0  29 0d 16 da 24 63 68 65  63 6b 69 6e 67 24 3d 74  |)...$checking$=t|
00003a00  69 6c 65 76 61 6c 69 64  24 28 63 68 65 63 6b 6c  |ilevalid$(checkl|
00003a10  6f 6f 70 25 29 0d 16 e4  25 e3 20 74 69 6c 65 6f  |oop%)...%. tileo|
00003a20  66 66 25 3d 63 68 65 63  6b 6c 6f 6f 70 25 20 b8  |ff%=checkloop% .|
00003a30  20 73 68 6f 77 6c 6f 6f  70 25 0d 16 ee 41 e7 20  | showloop%...A. |
00003a40  74 69 6c 65 76 61 6c 69  64 24 28 74 69 6c 65 6f  |tilevalid$(tileo|
00003a50  66 66 25 29 3e 22 30 22  20 80 20 74 69 6c 65 76  |ff%)>"0" . tilev|
00003a60  61 6c 69 64 24 28 74 69  6c 65 6f 66 66 25 29 3d  |alid$(tileoff%)=|
00003a70  63 68 65 63 6b 69 6e 67  24 20 8c 0d 16 f8 23 7a  |checking$ ....#z|
00003a80  6c 61 79 65 72 25 3d 74  69 6c 65 63 6f 6f 72 64  |layer%=tilecoord|
00003a90  73 25 28 74 69 6c 65 6f  66 66 25 2c 31 29 0d 17  |s%(tileoff%,1)..|
00003aa0  02 23 78 76 61 6c 75 65  25 3d 74 69 6c 65 63 6f  |.#xvalue%=tileco|
00003ab0  6f 72 64 73 25 28 74 69  6c 65 6f 66 66 25 2c 32  |ords%(tileoff%,2|
00003ac0  29 0d 17 0c 23 79 76 61  6c 75 65 25 3d 74 69 6c  |)...#yvalue%=til|
00003ad0  65 63 6f 6f 72 64 73 25  28 74 69 6c 65 6f 66 66  |ecoords%(tileoff|
00003ae0  25 2c 33 29 0d 17 16 0f  f2 68 69 6c 69 67 68 74  |%,3).....hilight|
00003af0  28 30 29 0d 17 20 1c 74  69 6c 65 76 61 6c 69 64  |(0).. .tilevalid|
00003b00  24 28 74 69 6c 65 6f 66  66 25 29 3d 22 30 22 0d  |$(tileoff%)="0".|
00003b10  17 2a 05 cd 0d 17 34 0e  ed 20 74 69 6c 65 6f 66  |.*....4.. tileof|
00003b20  66 25 0d 17 3e 26 e7 20  75 6e 64 6f 25 3d a3 20  |f%..>&. undo%=. |
00003b30  8c 20 63 68 65 63 6b 6c  6f 6f 70 25 3d 73 68 6f  |. checkloop%=sho|
00003b40  77 6c 6f 6f 70 25 2d 31  0d 17 48 05 cd 0d 17 52  |wloop%-1..H....R|
00003b50  1b 63 68 65 63 6b 6c 6f  6f 70 25 3d 63 68 65 63  |.checkloop%=chec|
00003b60  6b 6c 6f 6f 70 25 2b 31  0d 17 5c 1d fd 20 63 68  |kloop%+1..\.. ch|
00003b70  65 63 6b 6c 6f 6f 70 25  3e 3d 73 68 6f 77 6c 6f  |eckloop%>=showlo|
00003b80  6f 70 25 2d 31 0d 17 66  1d e6 30 2c 30 3a c8 93  |op%-1..f..0,0:..|
00003b90  20 c8 90 20 32 30 2c 39  34 30 2c 31 32 30 30 2c  | .. 20,940,1200,|
00003ba0  35 38 0d 17 70 21 e7 20  75 6e 64 6f 25 3d b9 20  |58..p!. undo%=. |
00003bb0  84 20 64 6f 75 62 6c 65  73 66 6f 75 6e 64 25 3d  |. doublesfound%=|
00003bc0  a3 20 8c 0d 17 7a 21 f5  3a c8 97 78 25 2c 79 25  |. ...z!.:..x%,y%|
00003bd0  2c 62 75 74 74 6f 6e 25  3a fd 20 62 75 74 74 6f  |,button%:. butto|
00003be0  6e 25 3d 30 0d 17 84 42  f1 8a 31 32 2c 33 29 22  |n%=0...B..12,3)"|
00003bf0  4e 4f 20 4d 4f 52 45 20  4d 4f 56 45 53 20 2d 2d  |NO MORE MOVES --|
00003c00  2d 2d 20 50 52 45 53 53  20 41 4e 59 20 42 55 54  |-- PRESS ANY BUT|
00003c10  54 4f 4e 20 54 4f 20 52  45 54 55 52 4e 20 54 4f  |TON TO RETURN TO|
00003c20  20 47 41 4d 45 22 0d 17  8e 22 f5 3a c8 97 78 25  | GAME"...".:..x%|
00003c30  2c 79 25 2c 62 75 74 74  6f 6e 25 3a fd 20 62 75  |,y%,button%:. bu|
00003c40  74 74 6f 6e 25 3c 3e 30  0d 17 98 05 cd 0d 17 a2  |tton%<>0........|
00003c50  10 f1 8a 31 32 2c 33 29  89 28 36 30 29 0d 17 ac  |...12,3).(60)...|
00003c60  1e f1 8a 31 38 2c 33 29  22 50 49 43 4b 20 41 20  |...18,3)"PICK A |
00003c70  54 49 4c 45 22 3b 89 28  33 30 29 0d 17 b6 06 ef  |TILE";.(30).....|
00003c80  37 0d 17 c0 05 e1 0d 17  ca 4a f4 20 2d 2d 2d 2d  |7........J. ----|
00003c90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003cd0  0d 17 d4 0c dd f2 64 6f  6e 65 69 74 0d 17 de 32  |......doneit...2|
00003ce0  f1 8a 31 32 2c 31 32 29  22 57 45 4c 4c 20 44 4f  |..12,12)"WELL DO|
00003cf0  4e 45 20 59 4f 55 20 48  41 56 45 20 52 45 4d 4f  |NE YOU HAVE REMO|
00003d00  56 45 44 20 41 4c 4c 20  54 49 4c 45 53 22 0d 17  |VED ALL TILES"..|
00003d10  e8 21 f5 3a c8 97 78 25  2c 79 25 2c 62 75 74 74  |.!.:..x%,y%,butt|
00003d20  6f 6e 25 3a fd 20 62 75  74 74 6f 6e 25 3d 30 0d  |on%:. button%=0.|
00003d30  17 f2 45 f1 8a 34 2c 32  29 22 50 52 45 53 53 20  |..E..4,2)"PRESS |
00003d40  4d 49 44 44 4c 45 20 42  55 54 54 4f 4e 20 54 4f  |MIDDLE BUTTON TO|
00003d50  20 50 4c 41 59 20 41 47  41 49 4e 20 2d 2d 20 52  | PLAY AGAIN -- R|
00003d60  49 47 48 54 20 42 55 54  54 4f 4e 20 54 4f 20 51  |IGHT BUTTON TO Q|
00003d70  55 49 54 22 0d 17 fc 05  f5 0d 18 06 13 c8 97 78  |UIT"...........x|
00003d80  25 2c 79 25 2c 62 75 74  74 6f 6e 25 0d 18 10 24  |%,y%,button%...$|
00003d90  78 68 6f 6f 72 61 79 25  3d b3 28 31 31 38 30 29  |xhooray%=.(1180)|
00003da0  3a 79 68 6f 6f 72 61 79  25 3d b3 28 38 30 30 29  |:yhooray%=.(800)|
00003db0  0d 18 1a 1f ef 20 32 33  2c 32 37 2c 30 2c b3 28  |..... 23,27,0,.(|
00003dc0  33 36 29 2c 30 2c 30 2c  30 2c 30 2c 30 2c 30 0d  |36),0,0,0,0,0,0.|
00003dd0  18 24 1b f0 20 26 45 44  2c 78 68 6f 6f 72 61 79  |.$.. &ED,xhooray|
00003de0  25 2c 79 68 6f 6f 72 61  79 25 0d 18 2e 1d ef 20  |%,yhooray%..... |
00003df0  32 33 2c 32 37 2c 30 2c  31 30 31 2c 30 2c 30 2c  |23,27,0,101,0,0,|
00003e00  30 2c 30 2c 30 2c 30 0d  18 38 1b f0 20 26 45 44  |0,0,0,0..8.. &ED|
00003e10  2c 78 68 6f 6f 72 61 79  25 2c 79 68 6f 6f 72 61  |,xhooray%,yhoora|
00003e20  79 25 0d 18 42 10 fd 20  62 75 74 74 6f 6e 25 3c  |y%..B.. button%<|
00003e30  3e 30 0d 18 4c 27 e7 20  62 75 74 74 6f 6e 25 3d  |>0..L'. button%=|
00003e40  32 20 8c 20 72 65 70 6c  61 79 25 3d b9 20 8b 20  |2 . replay%=. . |
00003e50  72 65 70 6c 61 79 25 3d  a3 0d 18 56 05 e1 0d ff  |replay%=...V....|
00003e60