start tok64 d64-TvmsST 1 pg$="fifteen":au$="lary cameron":bg$="joystick button" 3 : 4 REM can you get this puzzle in order? 5 REM 6 : 10 REM 90 GOTO62000 100 vx=vic:cg=vx+8192:sb=cg+2048:vb=vx+3328:vm=48*1024:sp=vm+1016 110 b=832:cf=b+137 120 r1=58:c1=72:ro=14:co=15 130 DIMbd(15),tr(16),tl$(15),jd(15),mu(21) 140 cl$="{black}{white}{red}{cyan}{156}{green}{blue}{yellow}{orange}{brown}{pink}{dark gray}{gray}{light green}{light blue}{light gray}":dn$="{home}{down*24}" 150 yn$(0)="yes no":yn$(1)="{reverse on}yes{reverse off} no":yn$(2)="yes {reverse on}no{reverse off}" 160 FORi=0TO15:READjd(i):NEXT:DATA0,0,0,0,0,0,0,2,0,0,0,4,0,3,1,0 170 DEFFNj(x)=jd(PEEK(js+x)AND15):DEFFNb(x)=(PEEK(js+x)AND16)=0 180 sid=54272:FORi=0TO28:POKEsid+i,0:NEXT 190 FORi=1TO21:READmu(i):NEXT 200 DATA44,33,50,56,0,44,33,42,44,0,37,30,44,42,33,50,44,33,42,44,0 210 v0=35:v1=1:v2=16:PRINT 220 POKE253,vx/256:POKE254,cg/256 230 GOSUB1580:GOSUB1650 240 GOSUB1580:FORi=0TO63:POKE251,i:POKE252,i:SYScf:NEXTi 250 GOSUB1580:FORi=128TO128+63:POKE251,i:POKE252,i:SYScf:NEXTi 260 GOSUB1580:FORi=64TO127:POKE251,i:POKE252,i+128:SYScf:NEXTi 270 POKE251,160:POKE252,160:SYScf 280 FORi=0TO15:READn:a=sb+64*i 290 FORj=0TOn-1:READt:POKEa+j,t:GOSUB1560:NEXT 300 FORj=nTO63:POKEa+j,0:GOSUB1560:NEXT 310 NEXTi:POKEvic+16,0 320 POKEvic+23,1:POKEvic+29,1:POKEvic+27,0 330 t0=(sb/64)AND255 340 POKEsp,t0:POKEvic+40,15 350 POKEvic+1,0:POKEvic+3,0:POKEvic+21,3 360 FORi=1TO73:READa:a=cg+8*a 370 GOSUB1580 380 FORj=0TO7:READt:POKEa+j,t:NEXT 390 NEXTi 400 POKE251,234:POKE252,220:SYScf 420 FORi=0TO15 430 READa$,b$,c$ 440 z$=MID$(cl$,i+1,1) 450 t$=z$+"{reverse on} {down}{left*6} {reverse off}{light gray}" 460 tl$(i)=z$+"{reverse on}{space*5}"+t$+a$+t$+b$+t$+c$+t$+z$+"{reverse on}{space*5}" 470 NEXTi 480 POKEsid,32:POKEsid+2,8:POKEsid+6,249:POKEsid+4,73 490 POKEsid+8,32:POKEsid+12,208:POKEsid+13,240:POKEsid+11,128 500 POKEsid+14,32:POKEsid+15,7:POKEsid+19,208:POKEsid+20,240 510 POKEsid+17,8:POKEsid+18,64 520 POKEsid+24,15 530 POKEvic+17,PEEK(vic+17)ANDNOT16 540 POKEvic+24,((vm/1024)AND15)*16+((cg/2048)AND7)*2:POKE648,vm/256 550 PRINT"{clear}":POKEvb,0 560 POKEvic+17,PEEK(vic+17)OR16 570 POKEvic+32,0:POKEvic+33,0 580 FORi=1TO16:tr(i)=i:NEXT 590 FORi=15TO2STEP-1:j=INT(RND(1)*i)+1:t=tr(j):tr(j)=tr(i):tr(i)=t:NEXTi 600 FORi=0TO15:bd(i)=tr(i+1):IFbd(i)=16THENbs=i:bd(i)=0 610 NEXTi 620 c=0:FORi=1TO16 630 IFtr(i)<>iTHENt=tr(i):tr(i)=tr(t):tr(t)=t:c=c+1:GOTO630 640 NEXTi 650 IF(cAND1)=0THEN690 660 i=INT(RND(1)*16):IFbd(i)=0THEN660 670 j=INT(RND(1)*16):IFbd(j)=0ORi=jTHEN670 680 t=bd(i):bd(i)=bd(j):bd(j)=t 690 r=INT(bs/4):c=bs-4*r:mv=0 700 POKEsid+19,208:POKEsid+14,32:POKEsid+15,7:POKEsid+18,64:POKEsid+24,15 710 PRINT"{home}";TAB(5);"{white}{reverse on}O{cm y*27}P"; 720 FORi=0TO3:PRINT 730 PRINTTAB(5);"{white}{reverse on}{cm h}{left}{down}{cm h}{left}{down}{cm h}{left}{down}{cm h}{left}{down}{cm h}{left}{down}{cm h}{up*5}{reverse off}"; 740 FORj=0TO3 750 PRINTtl$(bd(4*i+j));"{up*4}{right}"; 760 NEXTj 770 PRINT"{left}{white}{reverse on}{cm n}{down}{left}{cm n}{down}{left}{cm n}{down}{left}{cm n}{down}{left}{cm n}{down}{left}{cm n}{up}" 780 NEXTi 790 PRINTTAB(5);"{reverse on}L{cm p*27}{sh @}{home}" 800 PRINT"{home}";TAB(12);" you may begin " 810 GETq$:IFq$="q"THENqu=1:GOTO1290 820 jd=FNj(0):IFjd=0THEN810 830 PRINT"{home}";TAB(12);"{reverse on}{cm y*15}" 840 ONjdGOTO880,1040,850,1070 850 IFr=0THEN810 860 en=r1+r*48:bg=en-48 870 nr=r-1:nb=bs-4:GOTO910 880 IFr=3THEN810 890 en=r1+r*48:bg=en+48 900 nr=r+1:nb=bs+4:GOTO910 910 POKEvic+39,bd(nb):POKEsp+1,t0+bd(nb) 920 POKEvic,c1+c*56:POKEvic+2,c1+c*56+co 930 POKEvic+3,bg+ro:POKEvic+1,bg 940 PRINTLEFT$(dn$,nr*6+2);TAB(6+7*c);tl$(0) 950 ss=SGN(en-bg) 960 POKEsid+11,129:POKEsid+18,65 970 POKE251,1:POKE252,ro:POKE253,bg:POKE254,en:SYScf-3 980 POKEsid+4,65:POKEsid+11,128:POKEsid+18,64 990 POKE254,en-ss:SYScf-3:POKE254,en:SYScf-3 1000 PRINTLEFT$(dn$,r*6+2);TAB(6+7*c);tl$(bd(nb)) 1010 POKEsid+4,73 1020 r=nr:bd(bs)=bd(nb):bd(nb)=0:bs=nb 1030 POKEvic+1,0:POKEvic+3,0:GOTO1230 1040 IFc=0THEN810 1050 en=c1+c*56:bg=en-56 1060 nc=c-1:nb=bs-1:GOTO1100 1070 IFc=3THEN810 1080 en=c1+c*56:bg=en+56 1090 nc=c+1:nb=bs+1:GOTO1100 1100 POKEvic+39,bd(nb):POKEsp+1,t0+bd(nb) 1110 POKEvic+2,bg+co:POKEvic,bg 1120 POKEvic+1,r1+r*48:POKEvic+3,r1+r*48+ro 1130 PRINTLEFT$(dn$,r*6+2);TAB(6+7*nc);tl$(0) 1140 ss=SGN(en-bg) 1150 POKEsid+11,129:POKEsid+18,65 1160 POKE251,0:POKE252,co:POKE253,bg:POKE254,en:SYScf-3 1170 POKEsid+4,65:POKEsid+11,128:POKEsid+18,64 1180 POKE254,en-ss:SYScf-3:POKE254,en:SYScf-3 1190 PRINTLEFT$(dn$,r*6+2);TAB(6+7*c);tl$(bd(nb)) 1200 POKEsid+4,73 1210 c=nc:bd(bs)=bd(nb):bd(nb)=0:bs=nb 1220 POKEvic+1,0:POKEvic+3,0 1230 mv=mv+1 1240 PRINT"{home}{white}move":PRINTmv 1250 FORi=0TO14:IFbd(i)<>i+1THEN810 1260 NEXTi 1270 qu=0 1280 POKEsid+19,0:POKEsid+14,0:POKEsid+15,0:POKEsid+18,65 1290 t1=0:t2=0:tm=0:mu=1:s1=2:s2=1:an=1 1300 IFquTHEN1390 1310 POKEsid+18,65 1320 IFti0THEN1350 1330 POKE646,s1:PRINT"{home}";TAB(14);"{reverse on}you did it!" 1340 t1=ti+15:s1=s1+1:IFs1>15THENs1=1 1350 IFti21THENPOKEsid+18,0:GOTO1390 1380 GOTO1320 1390 IFti0THEN1420 1400 POKE646,s1:PRINT"{home}";TAB(14);"{reverse on}you did it!" 1410 t1=ti+15:s1=s1+1:IFs1>15THENs1=1 1420 IFti<=t2THEN1440 1430 PRINTdn$;TAB(11);"{white}try again? ";yn$(an*s2);"{home}":s2=1-s2:t2=ti+15 1440 jd=PEEK(js):IF(jdAND16)=0THEN1480 1450 jd=jd(jdAND15):IFjd=2THENan=2:s2=1:t2=0 1460 IFjd=4THENan=1:s2=1:t2=0 1470 GOTO1390 1480 POKEsid+24,0:IFan=1THENPRINT"{clear}":GOTO580 1490 POKEvic+17,PEEK(vic+17)ANDNOT16 1500 POKEvic+24,21:POKE648,4:POKEvb,3 1510 POKEvic+17,PEEK(vic+17)OR16 1520 POKEvic+21,0:GOTO60600 1530 tm=ti+60 1540 IFti0THENRETURN 1570 v2=16 1580 PRINTLEFT$("{up}{reverse on}setting up{.*3}{space*22}",v0+2); 1590 PRINTMID$("{reverse off} {reverse off}{cm h}{reverse off}{cm k}{reverse on}{cm n}",v1,2) 1600 v1=v1-2:IFv1<1THENv0=v0-1:v1=7 1610 RETURN 1620 v2=v2-1:IFv2=0THENv2=16:GOSUB1580 1630 RETURN 1640 END 1650 z=0 1660 READv:IFv=-1THENRETURN 1670 POKEb+z,v:z=z+1:GOTO1660 1680 DATA160,255,56,165,254,229,253,48,2,160,1,132,98,166,251 1690 DATA24,165,253,101,98,133,253,24,157,0,208,101,252,157 1700 DATA2,208,165,253,197,254,240,14,160,255,204,27,212,208 1710 DATA251,204,27,212,240,251,208,220,96,176,202,169,0,133 1720 DATA98,133,99,133,100,133,101,165,251,10,38,99,10,38 1730 DATA99,10,38,99,133,98,24,165,99,101,253,133,99,165,252 1740 DATA10,38,101,10,38,101,10,38,101,133,100,24,165,101,101 1750 DATA254,133,101,120,169,1,141,13,220,169,51,133,1,160 1760 DATA7,177,98,145,100,136,16,249,169,55,133,1,169,129 1770 DATA141,13,220,88,96,56,176,171,56,176,170,-1 1780 DATA60,255,255,255,255,255,255,255,255,255,255,255,255,240,0,15,240,0,15 1790 DATA240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0 1800 DATA15,240,0,15,240,0,15,255,255,255,255,255,255,255,255,255,255,255,255 1810 DATA35,0,192,0,1,192,0,7,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1 1820 DATA192,0,1,192,0,1,192,0,7,240 1830 DATA35,3,240,0,6,56,0,15,28,0,6,28,0,0,28,0,0,56,0,0,224,0,3,128,0,7,0,0 1840 DATA14,4,0,14,12,0,15,252 1850 DATA35,3,240,0,6,56,0,15,28,0,6,28,0,0,56,0,1,224,0,0,56,0,0,28,0,6,28,0 1860 DATA15,28,0,6,56,0,3,240 1870 DATA35,0,24,0,0,56,0,0,120,0,0,248,0,1,184,0,3,56,0,6,56,0,12,56,0,15,252 1880 DATA0,0,56,0,0,56,0,0,124 1890 DATA35,15,252,0,14,12,0,14,4,0,14,0,0,15,240,0,15,56,0,0,28,0,0,28,0,6,28 1900 DATA0,15,28,0,6,56,0,3,240 1910 DATA35,3,240,0,7,24,0,6,60,0,14,24,0,14,0,0,15,240,0,15,56,0,14,28,0,14 1920 DATA28,0,6,28,0,7,56,0,3,240 1930 DATA35,15,252,0,12,24,0,8,48,0,0,96,0,0,224,0,0,192,0,1,192,0,1,192,0,3 1940 DATA192,0,3,192,0,3,192,0,1,128 1950 DATA35,7,240,0,14,56,0,12,24,0,14,24,0,15,48,0,7,224,0,3,240,0,6,120,0,12 1960 DATA56,0,12,24,0,14,56,0,7,240 1970 DATA35,3,240,0,7,56,0,14,24,0,14,28,0,14,28,0,7,60,0,3,252,0,0,28,0,6,28 1980 DATA0,15,24,0,6,56,0,3,240 1990 DATA35,24,63,0,56,115,128,248,97,128,56,225,192,56,225,192,56,225,192,56 2000 DATA225,192,56,225,192,56,225,192,56,97,128,56,115,128,254,63 2010 DATA35,12,12,0,28,28,0,124,124,0,28,28,0,28,28,0,28,28,0,28,28,0,28,28,0 2020 DATA28,28,0,28,28,0,28,28,0,127,127 2030 DATA36,24,63,0,56,99,128,248,241,192,56,97,192,56,1,192,56,3,128,56,14,0 2040 DATA56,56,0,56,112,0,56,224,64,56,224,192,254,255,192 2050 DATA35,24,63,0,56,99,128,248,241,192,56,97,192,56,3,128,56,30,0,56,3,128 2060 DATA56,1,192,56,97,192,56,241,192,56,99,128,254,63 2070 DATA36,24,1,128,56,3,128,248,7,128,56,15,128,56,27,128,56,51,128,56,99 2080 DATA128,56,195,128,56,255,192,56,3,128,56,3,128,254,7,192 2090 DATA35,24,255,192,56,224,192,248,224,64,56,224,0,56,255,0,56,243,128,56,1 2100 DATA192,56,1,192,56,97,192,56,241,192,56,99,128,254,63 2110 DATA0,0,128,128,128,128,128,128,0 2120 DATA27,128,128,128,0,0,0,0,128 2130 DATA28,128,128,0,0,0,0,0,0 2140 DATA29,128,128,0,0,0,128,128,128 2150 DATA30,0,0,0,0,0,0,128,0 2160 DATA31,0,128,0,0,0,0,0,0 2170 DATA60,1,0,0,0,0,0,0,0 2180 DATA61,0,1,0,0,0,0,0,0 2190 DATA62,128,0,0,0,128,128,128,128 2200 DATA64,0,0,0,0,0,0,1,3 2210 DATA65,0,0,0,0,0,0,128,128 2220 DATA66,0,0,0,0,0,0,7,12 2230 DATA67,0,0,0,0,0,0,224,48 2240 DATA68,0,0,0,0,0,0,7,14 2250 DATA69,0,0,0,0,0,0,224,112 2260 DATA70,0,0,0,0,0,0,48,112 2270 DATA71,0,0,0,0,0,0,31,24 2280 DATA72,0,0,0,0,0,0,248,24 2290 DATA73,0,0,0,0,0,0,31,28 2300 DATA74,0,0,0,0,0,0,248,48 2310 DATA75,0,0,0,0,0,0,15,28 2320 DATA76,0,0,0,0,0,0,126,231 2330 DATA77,0,0,0,0,0,0,24,56 2340 DATA78,0,0,0,0,0,0,126,199 2350 DATA79,0,0,0,0,0,0,3,7 2360 DATA80,3,15,0,0,0,0,0,0 2370 DATA81,128,224,0,0,0,0,0,0 2380 DATA82,12,7,0,0,0,0,0,0 2390 DATA83,112,252,0,0,0,0,0,0 2400 DATA84,14,7,0,0,0,0,0,0 2410 DATA85,112,224,0,0,0,0,0,0 2420 DATA86,112,248,0,0,0,0,0,0 2430 DATA87,7,15,0,0,0,0,0,0 2440 DATA88,24,248,0,0,0,0,0,0 2450 DATA89,28,31,0,0,0,0,0,0 2460 DATA90,128,0,0,0,0,0,0,0 2470 DATA91,28,15,0,0,0,0,0,0 2480 DATA92,231,126,0,0,0,0,0,0 2490 DATA93,56,254,0,0,0,0,0,0 2500 DATA94,199,126,0,0,0,0,0,0 2510 DATA95,7,3,0,0,0,0,0,0 2520 DATA96,0,0,0,0,0,0,49,113 2530 DATA97,0,0,0,0,0,0,255,193 2540 DATA98,15,3,3,3,3,3,3,3 2550 DATA99,128,128,128,128,128,128,128,128 2560 DATA100,30,12,0,0,1,7,14,28 2570 DATA101,56,56,56,112,192,0,0,8 2580 DATA102,30,12,0,3,0,0,12,30 2590 DATA103,56,56,112,192,112,56,56,56 2600 DATA104,0,1,3,6,12,24,31,0 2610 DATA105,240,240,112,112,112,112,248,112 2620 DATA106,28,28,31,30,0,0,12,30 2630 DATA107,8,0,224,112,56,56,56,56 2640 DATA108,12,28,28,31,30,28,28,12 2650 DATA109,120,48,0,224,112,56,56,56 2660 DATA110,16,0,1,1,3,3,7,7 2670 DATA111,96,192,192,128,128,128,128,128 2680 DATA112,113,253,0,0,0,0,0,0 2690 DATA113,193,255,0,0,0,0,0,0 2700 DATA114,24,28,30,15,7,12,24,24 2710 DATA115,48,48,96,192,224,240,112,48 2720 DATA116,28,28,28,14,7,0,12,30 2730 DATA117,48,56,56,120,248,56,56,48 2740 DATA118,240,113,113,113,113,113,113,112 2750 DATA119,195,195,195,195,195,195,195,195 2760 DATA120,248,56,56,56,56,56,56,56 2770 DATA121,241,112,112,112,112,112,112,113 2780 DATA122,227,195,3,7,28,112,224,192 2790 DATA123,227,195,7,60,7,3,195,227 2800 DATA124,240,112,112,112,112,113,113,112 2810 DATA125,15,31,55,103,199,135,255,7 2820 DATA126,241,113,113,113,112,112,112,113 2830 DATA127,192,192,254,231,3,3,195,227 2840 DATA"{space*4}","{space*4}","{space*4}" 2850 DATA" {sh asterisk}A "," {cm i}{cm t} "," PQ " 2860 DATA" BE "," {cm @}{cm g} "," YX " 2870 DATA" BE "," {cm +}{cm m} "," RU " 2880 DATA"{space*2}F "," {cm pound}{sh pound} ","{space*2}V " 2890 DATA" IH "," {cm n}{cm q} "," RU " 2900 DATA" DC "," {cm d}{cm z} "," TU " 2910 DATA" GJ "," {cm s}{cm p} "," {cm asterisk}Z " 2920 DATA" KE "," {cm r}{cm w} "," {sh +}U " 2930 DATA" DE "," {cm h}{cm j} "," RU " 2940 DATA" FL ","<{cm l}{cm y}@","=S{cm -} " 2950 DATA" MM "," {cm u*2} "," {sh -*2} " 2960 DATA" FN ","<{cm d}{sh @}[","={cm a}{cm e}{pound}" 2970 DATA" FN ","<{cm d}{cm f}]","=S{pi} " 2980 DATA" FO ","<{cm c}{cm x}^","=SW{arrow left}" 2990 DATA" {sh space}{cm k}A","<{cm v}{cm b}>","=S{pi} " 60000 in$="":zt=ti:zc=2:zd$=CHR$(20) 60010 GETz$:IFz$<>""THEN60070 60020 IF zt<=ti THEN PRINT MID$(" {cm +}",zc,1);"{left}";:zc=3-zc:zt=ti+15 60030 GOTO60010 60070 z=ASC(z$):zl=LEN(in$):IF(zAND127)<32THENPRINT" {left}";:GOTO60110 60090 IFzl>=qiTHEN60010 60100 in$=in$+z$:PRINTz$;zd$;z$; 60110 IFz=13THENPRINTcr$;:RETURN 60120 IFz=20ANDzl>0THENin$=LEFT$(in$,zl-1):PRINT"{left}";:GOTO60010 60130 IFz=141THENz$=CHR$(-20*(zl>0)):FORz=1TOzl:PRINTz$;:NEXT:GOTO60000 60140 GOTO60010 60200 zj=ti+30:zt=ti:zs=2:PRINTLEFT$(jc$,1);pr$;"{up}" 60210 IF(PEEK(js)AND16)=0THENzs=2:GOSUB60280:PRINT:RETURN 60215 GOSUB60500 60220 IFti>=ztTHENGOSUB60280:zt=ti+15:zs=3-zs 60230 z=PEEK(js)AND12:IFz=12THENzj=0:GOTO60210 60240 IFti1THENin=in-1:GOTO60200 60270 GOTO60210 60280 PRINTTAB(jt+jw*(in-1));MID$(jc$,zs,1);MID$(pr$,jt+jw*(in-1)+1,jw);"{up}" 60290 RETURN 60500 GETz$:IFz$<>"q"THENRETURN 60600 GETz$:IFz$<>""THEN60600 60605 POKEvic+24,21:POKEvic+21,0:PRINTCHR$(9); 60610 GOSUB61000:POKEvic+33,6:POKEvic+32,14:POKEsid+24,0:PRINT"{clear}{light blue}":END 61000 crt=1024:vic=53248:wd=40:cr$=CHR$(13):sid=54272:js=56320:cm=55296 61010 jc$="{light blue}{light gray}":ql=214:qi=255:RETURN 62000 l0=LEN(pg$)+2:l1=LEN(au$)+2:l2=LEN(a2$)+2:IFl1""THENPRINT"{reverse on}";TAB(FNt(LEN(a2$)));a2$:PRINTTAB(t1);b1$ 62090 bg$="press "+bg$+" to begin":t0=FNt(LEN(bg$)+2) 62100 ln$=LEFT$("{sh asterisk*40}",LEN(bg$)) 62110 PRINTTAB(t0);"{down*2}{red}{down}{sh -}{up}{left}{cm a}";ln$;"{cm s}{down}{left}{sh -}" 62120 PRINTTAB(t0);"{cm z}";ln$;"{cm x}" 62140 PRINTTAB(3);"{down*4}{156}can you get this puzzle in order?" 62150 l1=LEN(bg$):i=1:PRINT"{up*8}" 62160 PRINTSPC(t0+1);MID$("{156}{cyan}",i,1);LEFT$(bg$,l1);"{up}" 62170 l1=l1+1:IFl1>LEN(bg$)THENl1=1:i=3-i 62180 GETt$:IFt$<>""THEN62200 62190 IFPEEK(js)AND16THEN62160 62200 CLR:GOSUB61000:PRINT"{clear}{white}":GOTO100 stop tok64 (bastext 1.0)