Listing of file='RUBIK.BAS;02' on disk='vmedia/games-sector.ccvf'
0 REM RUBIK'S CUBE by ROGER E SAFFORD 5 REM 15 SAFFORD AVE 10 REM PERRY, N.Y. 14530 15 REM Mod by CTeo 19/10/82 COLORCUE JUNE/JULY 82 20 CLEAR 1000:OUT 8,255:OUT 8,199:GOTO 865 25 REM Draw complete cube 30 Z= Z+ 1:PLOT 6,C(Z),2,X,Y,242,X,Y- 6:RETURN 35 Z= Z+ 1:PLOT 6,C(Z),2,X,Y,242,X,Y- 1:PRINT A$:RETURN 40 Z= 0:FOR T= 1TO 3:FOR U= 1TO 3 45 X= (T+ U)* 6+ 39:Y= 112+ (U- T)* 6:GOSUB 35 50 X= T* 6+ 40:Y= 81+ U* 10- T* 6:GOSUB 30:PRINT B$ 55 X= T* 6+ 58:Y= 60+ U* 10+ T* 6:GOSUB 30:PRINT C$ 60 X= T* 6+ 86:Y= 78+ U* 10+ T* 6:GOSUB 30:PRINT C$ 65 X= T* 6+ 104:Y= 99+ U* 10- T* 6:GOSUB 30:PRINT B$ 70 X= (T+ U)* 6+ 85:Y= 82+ (U- T)* 6:GOSUB 35 75 NEXT U,T:RETURN 80 REM Rotational data for cube 85 DATA 9,33,45,21,44,43,10,24,15,51 90 DATA 39,3,50,49,4,42,38,37,16,6 95 DATA 7,31,43,19,35,34,33,32,1,13 100 DATA 49,37,50,53,52,51,14,17,16,15 105 DATA 32,44,20,8,19,9,48,47,2,14 110 DATA 50,38,1,15,42,41,3,54,53,37 115 DATA 11,35,47,23,46,7,8,36,5,17 120 DATA 53,41,40,13,14,54,18,52,1,2 125 DATA 6,18,54,42,12,36,48,24,22,23 130 DATA 20,21,2,3,4,5,38,39,40,41 135 DATA 4,16,52,40,10,34,46,22,11,12 140 DATA 45,31,5,6,51,13,17,18,39,49 145 REM Rotation Routine 150 FOR I= 1TO 5:READ P,Q,R,S:ON UGOTO 155,165,160 155 T= C(S):C(S)= C(R):C(R)= C(Q):C(Q)= C(P):C(P)= T:GOTO 170 160 T= C(P):C(P)= C(Q):C(Q)= C(R):C(R)= C(S):C(S)= T:GOTO 170 165 T= C(S):C(S)= C(Q):C(Q)= T:T= C(P):C(P)= C(R):C(R)= T 170 NEXT I:RETURN 175 GOSUB 40:IF PS= 2THEN PLOT 3,26,29:PRINT "PAUSE AT ";M$;CHR$ (P1+ 48):GOSUB 1955 180 D= LEN (D$)- 2:IF D< 0THEN RETURN 185 M$= LEFT$ (D$,1):U= VAL (MID$ (D$,2,1)):D$= MID$ (D$,3,D) 190 IF M$= "D"THEN RESTORE 125:GOTO 225 195 IF M$= "U"THEN RESTORE 95:GOTO 225 200 IF M$= "R"THEN RESTORE 85:GOTO 225 205 IF M$= "L"THEN RESTORE 115:GOTO 225 210 IF M$= "F"THEN RESTORE 105:GOTO 225 215 IF M$= "B"THEN RESTORE 135:GOTO 225 220 GOTO 230 225 IF U> 0AND U< 4THEN GOSUB 150:P1= U:ON FGOTO 180,175 230 PLOT 3,21,29:PRINT M$;RIGHT$ (STR$ (U),1); 235 PRINT " IS AN INVALID MOVE" 240 GOSUB 1955:RETURN 245 REM Corner ident. data 250 DATA 6,39,4,18,40,5,42,38,3,54,41,2 255 DATA 1,14,53,13,17,52,49,16,51,37,15,50 260 REM Edgie ident. data 265 DATA 8,47,9,44,10,45,11,46,36,23,12,22 270 DATA 24,21,48,20,7,35,31,34,43,33,19,32 275 REM Build the moves 280 D$= "D2" 285 D$= D$+ I$+ "1D2"+ I$+ "3" 290 D$= D$+ "D2" 295 D$= D$+ F$+ "3D1"+ F$+ "1":RETURN 300 D$= F$+ "3D3"+ F$+ "1" 305 D$= D$+ "D2" 310 D$= D$+ I$+ "1D3"+ I$+ "3":RETURN 315 D$= "D3" 320 D$= D$+ I$+ "1" 325 D$= D$+ "U1"+ H$+ "3U3":RETURN 330 D$= "D3" 335 D$= D$+ I$+ "2":RETURN 340 D$= "D1":GOTO 310 345 D$= "D3":GOTO 310 350 D$= F$+ "3" 355 D$= D$+ I$+ "3":RETURN 360 D$= "U3"+ F$+ "3U1":RETURN 365 D$= G$+ "1" 370 D$= D$+ "U2"+ G$+ "3U2":RETURN 375 D$= "D1":GOTO 335 380 D$= H$+ "1D2"+ H$+ "3":GOTO 310 385 D$= G$+ "3D2"+ G$+ "1":GOTO 305 390 D$= H$+ "3D3"+ H$+ "1":GOTO 310 395 D$= I$+ "3D2"+ I$+ "1":GOTO 310 400 D$= "D1":GOTO 285 405 D$= F$+ "3" 410 D$= D$+ "U3"+ F$+ "1U1":RETURN 415 D$= "D2":GOTO 320 420 D$= "D1":GOTO 320 425 D$= "D2":GOTO 335 430 D$= H$+ "1":GOTO 325 435 D$= G$+ "1" 440 D$= D$+ "U1"+ H$+ "1U3":RETURN 445 D$= H$+ "1" 450 D$= D$+ I$+ "1":RETURN 455 D$= I$+ "3":GOTO 325 460 D$= G$+ "3D2"+ G$+ "1":GOTO 295 465 D$= "D1":GOTO 295 470 D$= "D3":GOTO 295 475 D$= "D3":GOTO 285 480 D$= "U2"+ G$+ "1U2" 485 RETURN 490 D$= G$+ "1D1"+ G$+ "3":GOTO 305 495 D$= F$+ "1D2"+ F$+ "3":GOTO 295 500 D$= G$+ "1D1"+ G$+ "3":GOTO 295 505 D$= H$+ "1D2"+ H$+ "3":GOTO 290 510 D$= I$+ "1D1"+ I$+ "3":GOTO 290 515 D$= "":ON CMGOTO 485,340,310,345,305,280,485,355,360,370 520 ON CM- 10GOTO 325,375,380,300,385,390,395,400,405,315,415 525 ON CM- 21GOTO 420,320,425,485,485,485,485,485,485,430,350 530 ON CM- 32GOTO 435,445,455,335,460,290,465,295,470,475,365 535 ON CM- 43GOTO 480,440,450,410,330,490,495,500,505,510,285 540 D$= "":ON CMGOTO 380,305,340,310,345,475,430,325,355,360 545 ON CM- 10GOTO 370,425,490,395,300,385,390,280,485,320,315 550 ON CM- 21GOTO 415,420,330,485,485,485,485,485,485,365,455 555 ON CM- 32GOTO 350,435,445,375,485,470,290,465,295,285,405 560 ON CM- 43GOTO 410,480,440,450,335,460,510,495,500,505,400 565 D$= "":ON CMGOTO 490,345,305,340,310,285,365,370,325,355 570 ON CM- 10GOTO 360,330,460,390,395,300,385,475,430,420,320 575 ON CM- 21GOTO 315,415,335,485,485,485,485,485,485,405,445 580 ON CM- 32GOTO 455,350,435,425,380,295,470,290,465,400,485 585 ON CM- 43GOTO 450,410,480,440,375,485,505,510,495,500,280 590 D$= "":ON CMGOTO 460,310,345,305,340,400,405,360,370,325 595 ON CM- 10GOTO 355,335,485,385,390,395,300,285,365,415,420 600 ON CM- 21GOTO 320,315,375,485,485,485,485,485,485,485,435 605 ON CM- 32GOTO 445,455,350,330,490,465,295,470,290,280,430 610 ON CM- 43GOTO 440,450,410,480,425,380,500,505,510,495,475 615 D$= "":ON SGOTO 640,640,645,635,645,645,645,635 620 ON S- 8GOTO 635,645,635,640,630,640,645,645,645 625 ON S- 17GOTO 635,635,645,645,635,635,640,645,630 630 F$= "B":G$= "L":GOTO 650 635 F$= "L":G$= "F":GOTO 650 640 F$= "F":G$= "R":GOTO 650 645 F$= "R":G$= "B" 650 D$= F$+ "1D3" 655 D$= D$+ F$+ "3"+ G$+ "1"+ F$+ "3"+ G$+ "3"+ F$+ "1" 660 RETURN 665 D$= F$+ "1D2"+ F$+ "3D3"+ F$+ "1D2":GOTO 655 670 D$= "":R= 2:ON CM- 7GOTO 715,720,725,730,710 675 R= 1:ON CM- 19GOTO 700,705,710,695 680 R= 2:IF CM= 24GOTO 705 685 IF CM= 36GOTO 695 690 ON CM- 43GOTO 735,740,745,750,700 695 D$= "L1U1D3B1U1D3R3U2D2L3":ON RGOTO 725,740 700 D$= "F1U1D3L1U1D3B3U2D2F3":ON RGOTO 730,745 705 D$= "R1U1D3F1U1D3L3U2D2R3":ON RGOTO 715,750 710 D$= "B1U1D3R1U1D3F3U2D2B3":ON RGOTO 720,735 715 D$= D$+ J$+ "F1U1D3L1U1D3B3U2D2F3"+ K$:RETURN 720 D$= D$+ J$+ "D1R1U1D3F1U1D3L3U2D2R3D3"+ K$:RETURN 725 D$= D$+ J$+ "F3U2D2B1U1D3R3U1D3F1"+ K$:RETURN 730 D$= D$+ J$+ "F1U1D3L2U1D3B2U2D2F3"+ K$:RETURN 735 D$= D$+ J$+ "F1U1D3L3U1D3B1U2D2F3"+ K$:RETURN 740 D$= D$+ J$+ "F1U3D1B2U3D1L2U2D2F3"+ K$:RETURN 745 D$= D$+ J$+ "F1U2D2B1U3D1L3U3D1F3"+ K$:RETURN 750 D$= D$+ J$+ "D3L1U1D3B3U1D3R1U2D2L3D1"+ K$:RETURN 755 ON R- 1GOTO 760,765,770,775,780,785,790,795,800,805,810 760 D$= "R2U3D1B2U1D3":RETURN 765 D$= "B2U1D3R2U3D1":RETURN 770 D$= "U2D2F2U2D2B2":RETURN 775 D$= "F2U3D1R2U1D3":RETURN 780 D$= "L2U3D1F2U1D3":RETURN 785 D$= "R2U1D3F2U3D1":RETURN 790 D$= "B2U3D1L2U1D3":RETURN 795 D$= "R2L2U1D3F2B2U3D1":RETURN 800 D$= "F2U1D3L2U3D1":RETURN 805 D$= "L2U1D3B2U3D1":RETURN 810 D$= "R2U2D2L2U2D2":RETURN 815 D$= "R3L1U1R3L1F1R3L1D1R2L2U1R3L1F1R3L1D1R3L1B2":RETURN 820 D$= "R1L1U1R3L1F1R3L1D1R2L2U1R3L1F1R3L1D1R3L1B2R2":RETURN 825 D$= "B3F1D1B3F1L1B3F1U1B2F2D1B3F1L1B3F1U1B3F1R2":RETURN 830 D$= "B3F1U1B3F1R1B3F1D1B2F2U1B3F1R1B3F1D1B3F1L2":RETURN 835 D$= "R3L3U1R3L1F1R3L1D1R2L2U1R3L1F1R3L1D1R3L1B2L2":RETURN 840 D$= "" 845 D$= D$+ "R3L1D1R3L1B1R3L1U1R2L2D1R3L1B1" 850 D$= D$+ "R3L1U1R3L1F2":RETURN 855 GOSUB 815:PLOT 3,0,WW,6,7:WW= WW+ 1:PRINT D$:GOTO 845 860 REM Start here 865 DIM C(54),V$(6) 870 V$(0)= " RED":V$(1)= " GREEN":V$(2)= " YELLOW":V$(3)= " BLUE" 875 V$(4)= " PURPLE":V$(5)= " INVALID":V$(6)= " WHITE" 880 A$= CHR$ (240)+ "eeeDVVV"+ CHR$ (255) 885 B$= CHR$ (240)+ "fff"+ CHR$ (255) 890 C$= CHR$ (240)+ "UUU"+ CHR$ (255) 895 DM= 1:REM NO DEMO 900 FOR Z= 1TO 49STEP 6:C(Z)= 3 905 C(Z+ 1)= 1:C(Z+ 2)= 7:C(Z+ 3)= 5:C(Z+ 4)= 4 910 C(Z+ 5)= 2:NEXT Z 915 PLOT 27,24,6,6,14,12 920 PLOT 3,35,1:PRINT "UP BACK LEFT" 925 PLOT 3,21,14:PRINT "FRONT RIGHT DOWN" 930 PLOT 3,2,2,6,3:PRINT "R U B I K ' S" 935 PLOT 3,11,4,6,4:PRINT "C U B E":GOSUB 40 940 PLOT 15,6,2,3,0,7:PRINT "0 - DEMO MODE":PRINT "1 - INSTRUCTIONS" 945 PRINT "2 - MIX & PLAY":PRINT "3 - MATCH & SOLVE" 950 OUT 8,255:PRINT :INPUT " SELECT ";D$ 955 IF D$= "0"THEN DM= 2:E= 2:U= 17:GOTO 1000 960 IF D$= "1"GOTO 1815 965 IF D$< > "2"AND D$< > "3"GOTO 915 970 PLOT 3,0,16 975 OUT 8,255:INPUT "DISPLAY EACH MOVE ( Y/N )? ";E$ 980 E= 1:IF E$= "Y"THEN E= 2 985 IF D$= "3"GOTO 1075 990 REM Mix and Play 995 OUT 8,255:INPUT "HOW MANY MIXES ? ";U 1000 M$= "RUBLDF":D$= "":PS= 1:F= 1:IF U> 31THEN U= 31 1005 FOR J= 1TO U:D= INT (RND (8)* 6+ 1) 1010 D$= D$+ MID$ (M$,D,1) 1015 D$= D$+ RIGHT$ (STR$ (INT (RND (8)* 3+ 1)),1) 1020 NEXT J:GOSUB 180:GOSUB 40 1025 PLOT 8:PRINT "COMMAND U B L F R D S" 1030 PLOT 3,0,17,11,28,11 1035 IF DM= 2THEN GOSUB 1740:GOTO 1100 1040 OUT 8,255:PLOT 3,4,16:INPUT "ENTER MOVE ( TYPE 'Q' TO END ) ";D$ 1045 IF D$= "Q"THEN RUN 1050 IF D$= "S"THEN GOSUB 1740:GOTO 1085 1055 F= E:GOSUB 180:IF F= 1THEN GOSUB 40 1060 GOSUB 1965 1065 GOTO 1030 1070 REM Match and Solve 1075 GOSUB 1625 1080 REM Solve TOP edgies 1085 IF E< > 2THEN PS= 1:GOTO 1100 1090 OUT 8,255:PLOT 3,0,17,11,28,11,3,4,16:INPUT "PAUSE AT EACH DISPLAY ( Y/N ) ";WW$ 1095 PLOT 28,11:PS= 1:IF WW$= "Y"THEN PS= 2 1100 WW= 16:F= E:F$= "R":G$= "B":H$= "L":I$= "F":FOR EG= 1TO 4 1105 RESTORE 265:EX= C(25+ EG)* C(25):FOR EY= 1TO 12:READ R,S 1110 IF EX< > C(R)* C(S)THEN NEXT EY:EY= C(25):GOTO 1755 1115 W1= C(25):W2= C(25+ EG):EY= 12:NEXT EY:CM= R:IF C(S)= C(25)THEN CM= S 1120 WW$= "SOLVING TOP":GOSUB 2100:WW$= WW$+ " EDGIE":GOSUB 2090 1125 ON EGGOSUB 540,565,590,515:IF D$= ""GOTO 1135 1130 PLOT 3,0,7+ EG,6,3:PRINT D$:GOSUB 180:GOSUB 40 1135 D$= F$:F$= G$:G$= H$:H$= I$:I$= D$:NEXT EG 1140 REM Solve TOP corners 1145 FOR EG= 1TO 4:RESTORE 250:EX= C(25)* C(26)* C(29) 1150 IF EG< 4THEN EX= C(25)* C(25+ EG)* C(26+ EG) 1155 FOR EY= 1TO 8:READ R,S,T:Q= C(R)* C(S)* C(T) 1160 IF EX< > QTHEN NEXT EY:CE= 25:GOTO 1780 1165 W1= C(25):W2= C(25+ EG):W3= EX/ W1/ W2+ .1:WW$= "SOLVING TOP":GOSUB 2100 1170 WW$= WW$+ V$(W3- 1)+ " CORNER":GOSUB 2090 1175 EY= 8:NEXT EY:CM= T:IF C(R)= C(25)THEN CM= R 1180 IF C(S)= C(25)THEN CM= S 1185 ON EGGOSUB 540,565,590,515:IF D$= ""GOTO 1195 1190 PLOT 3,0,11+ EG,6,6:PRINT D$:GOSUB 180:GOSUB 40 1195 IF C(EG+ 25)< > C(EG+ 49)THEN CE= 25:GOTO 1775 1200 D$= F$:F$= G$:G$= H$:H$= I$:I$= D$:NEXT EG 1205 REM Check for valid corner colors 1210 FOR EG= 1TO 4:RESTORE 250:EX= C(30)* C(26)* C(29) 1215 IF EG< 4THEN EX= C(30)* C(25+ EG)* C(26+ EG) 1220 FOR EY= 1TO 4:READ R,S,T:Q= C(R)* C(S)* C(T) 1225 IF EX< > QTHEN NEXT EY:CE= 30:GOTO 1780 1230 EY= 4:NEXT EY,EG 1235 REM Pattern to flip bottom corner 1240 S= 0:RESTORE 250:FOR I= 0TO 2:FOR J= 0TO 2 1245 READ R:IF C(R)= C(30)THEN S= S+ 3^ I* J:I1= I 1250 NEXT J,I:IF S= 0GOTO 1285 1255 RESTORE 250:FOR I= 0TO I1:READ W1,W2,W3:NEXT 1260 W1= C(W1):W2= C(W2):W3= C(W3):WW$= "FLIP BOTTOM":GOSUB 2100 1265 WW$= WW$+ V$(W3- 1)+ " CORNER":GOSUB 2090 1270 PLOT 3,0,WW,6,2:WW= WW+ 1:GOSUB 615:PRINT D$ 1275 IF WW> 20THEN PLOT 3,0,28:PRINT "NO SOLUTION":GOTO 1795 1280 GOSUB 180:GOSUB 40:GOTO 1240 1285 FOR CM= 2TO 5:IF C(CM)= C(CM+ 36)GOTO 1305 1290 NEXT CM:GOSUB 665:PLOT 3,0,WW,6,2:WW= WW+ 1:PRINT D$ 1295 WW$= "POSITION BOTTOM CORNER":GOSUB 2090 1300 GOSUB 180:GOSUB 40:GOTO 1285 1305 FOR J= 26TO 29:IF C(CM)< > C(J)THEN NEXT J 1310 EG= J- CM- 24:IF EG< 0THEN EG= EG+ 4 1315 WW$= "RESTORE BOTTOM"+ V$(C(J)- 1)+ " FACE":GOSUB 2090 1320 ON CM- 2GOTO 1335,1340,1345 1325 IF C(4)= C(40)GOTO 1360 1330 F$= "B":G$= "L":GOTO 1350 1335 F$= "L":G$= "F":GOTO 1350 1340 F$= "F":G$= "R":GOTO 1350 1345 F$= "R":G$= "B" 1350 GOSUB 665:PLOT 3,0,WW,6,2:WW= WW+ 1:PRINT D$ 1355 GOSUB 180:GOSUB 40 1360 IF EG= 0GOTO 1380 1365 D$= "D"+ RIGHT$ (STR$ (EG),1):PLOT 3,0,WW,6,2:WW= WW+ 1 1370 PRINT D$:GOSUB 180:GOSUB 40 1375 REM Final corner cubie check 1380 FOR EG= 1TO 4:IF C(EG+ 37)= C(25+ EG)THEN NEXT :GOTO 1400 1385 EY= C(26+ EG):IF EG= 4THEN EY= C(26) 1390 EX= C(30)* C(25+ EG)* EY:CE= 30:GOTO 1775 1395 REM Solve bottom edgies 1400 FOR EG= 1TO 4:RESTORE 265:EX= C(25+ EG)* C(30) 1405 FOR EY= 1TO 8:READ R,S 1410 IF EX< > C(R)* C(S)THEN NEXT EY:EY= C(30):GOTO 1755 1415 W1= C(30):W2= C(25+ EG):WW$= "SOLVING BOTTOM":GOSUB 2100:WW$= WW$+ " EDGIE":GOSUB 2090 1420 EY= 8:NEXT EY:CM= R:IF C(S)= C(30)THEN CM= S 1425 R= INT (EG* EG* EG/ 3- EG* EG* 1.5+ EG/ 6+ 5.1) 1430 IF CM= 12* RGOTO 1455 1435 J$= "":IF EG> 1THEN J$= "D"+ RIGHT$ (STR$ (5- EG),1) 1440 K$= "":IF EG> 1THEN K$= "D"+ RIGHT$ (STR$ (EG- 1),1) 1445 GOSUB 670:IF D$= ""GOTO 1455 1450 PLOT 3,0,WW,6,5:WW= WW+ 1:PRINT D$:GOSUB 180:GOSUB 40 1455 NEXT EG 1460 REM Check for valid edgie colors 1465 RESTORE 265:Q= C(26)* C(29):FOR I= 0TO 3:READ R,S 1470 IF Q< > C(R)* C(S)THEN NEXT I:EY= C(29):EG= 1:GOTO 1755 1475 Q= I:I= 3:NEXT I:FOR EG= 1TO 3:RESTORE 265 1480 P= C(EG+ 25)* C(EG+ 26):FOR EY= 1TO 4:READ R,S 1485 IF P< > C(R)* C(S)THEN NEXT EY:EY= C(EG+ 26):GOTO 1755 1490 EY= 4:NEXT EY,EG 1495 REM Position centre edgies 1500 RESTORE 265:P= C(26)* C(27):FOR I= 0TO 3:READ R,S 1505 IF P< > C(R)* C(S)THEN NEXT I:END 1510 R= Q* 3+ I:IF I< QTHEN R= R+ 1 1515 I= 3:NEXT I:IF R= 1GOTO 1545 1520 W1= C(26):W2= C(27):WW$= "POSITION CENTRE":GOSUB 2100 1525 WW$= WW$+ " EDGIE":GOSUB 2090 1530 GOSUB 755 1535 PLOT 3,0,WW,6,7:WW= WW+ 1:PRINT D$:GOSUB 180:GOSUB 40 1540 REM Flip centre edgies 1545 R= 1:IF C(8)< > C(26)THEN R= R+ 4:W1= C(8):W2= C(26) 1550 IF C(9)< > C(27)THEN R= R+ 2:W1= C(9):W2= C(27) 1555 IF C(10)< > C(28)THEN R= R+ 1:W1= C(10):W2= C(28) 1560 IF R= 1GOTO 1595 1565 WW$= "FLIP CENTRE":GOSUB 2100 1570 WW$= WW$+ " EDGIE":GOSUB 2090 1575 ON R- 1GOSUB 815,820,825,830,835,840,855 1580 PLOT 3,0,WW:IF LEN (D$)> 50THEN PRINT RIGHT$ (D$,42) 1585 PLOT 6,7:IF LEN (D$)< 50THEN PRINT D$ 1590 GOSUB 180:GOSUB 40 1595 FOR EG= 26TO 29:IF C(EG)< > C(EG+ 18)GOTO 1795 1600 NEXT EG 1605 PLOT 3,26,29:PRINT "ALL DONE" 1610 IF DM= 2THEN D$= "0":GOTO 955 1615 GOSUB 1955:RUN 1620 REM Set cubie colors 1625 PLOT 3,4,17:PRINT "ENTER COLORS VIA COLORED KEYS" 1630 FOR S= 0TO 5:FOR T= 0TO 2:FOR U= 0TO 2:Z= S+ U* 6+ T* 18 1635 ON SGOTO 1645,1650,1655,1665,1675 1640 X= (T+ U)* 6+ 51:Y= 112+ (U- T)* 6:GOTO 1680 1645 X= T* 6+ 46:Y= 85+ U* 10- T* 6:GOTO 1670 1650 X= T* 6+ 64:Y= 76+ U* 10+ T* 6:GOTO 1660 1655 X= T* 6+ 92:Y= 94+ U* 10+ T* 6 1660 GOSUB 1690:GOSUB 30:PRINT C$:GOTO 1685 1665 X= T* 6+ 110:Y= 103+ U* 10- T* 6 1670 GOSUB 1690:GOSUB 30:PRINT B$:GOTO 1685 1675 X= (T+ U)* 6+ 97:Y= 82+ (U- T)* 6 1680 GOSUB 1690:GOSUB 35 1685 NEXT U,T,S:GOTO 1730 1690 OUT 8,255:X1= INT (X/ 2)- 1:Y1= 32- INT (Y/ 4):KB= 33278 1695 PLOT 3,X1,Y1,6,0,32,26:POKE KB,0 1700 WW= PEEK (KB):IF WW= 0GOTO 1700 1705 IF WW= 13THEN RETURN 1710 WW= WW- 16:IF WW> 7THEN WW= WW- 64 1715 IF WW< 1OR WW> 7GOTO 1695 1720 IF WW< > 6THEN C(Z+ 1)= WW:RETURN 1725 GOTO 1695 1730 OUT 8,255:PLOT 3,4,17:INPUT "ANY FURTHER CHANGES ( Y/N ) ";WW$ 1735 IF LEFT$ (WW$,1)= "Y"THEN PLOT 11,28,11:GOTO 1625 1740 OUT 8,199:FOR EG= 7TO 15:PLOT 3,0,EG:PRINT SPC( 20):PRINT :NEXT EG 1745 FOR EG= 16TO 31:PLOT 3,0,EG,11:NEXT EG:RETURN 1750 REM Error messages 1755 PLOT 3,0,29,6,66:PRINT "CANNOT FIND"; 1760 GOSUB 1805:EY= C(25+ EG):GOSUB 1805:PRINT " EDGIE" 1765 PLOT 6,2:PRINT "SOMEONE SWITCHED THE STICKERS" 1770 GOTO 1615 1775 PLOT 3,0,29,6,66:PRINT "SWAPPED COLORS AT";:GOTO 1785 1780 PLOT 3,0,29,6,66:PRINT "CANNOT FIND"; 1785 EY= C(CE):GOSUB 1805:EY= C(25+ EG):GOSUB 1805 1790 EY= EX/ C(CE)/ EY+ .1:GOSUB 1805:PRINT " CORNER":GOTO 1765 1795 PLOT 3,0,29,6,66:PRINT "YOUR CUBE MUST BE DISASSEMBLED" 1800 PLOT 6,2:PRINT "AND PUT TOGETHER CORRECTLY!":GOTO 1615 1805 PRINT V$(EY- 1);:RETURN 1810 REM Instructions 1815 PLOT 3,0,16:PRINT "MODES OF PLAY" 1820 PRINT :PRINT "SELECT MIX & PLAY AND I'LL MIX THE CUBE FOR YOU TO SOLVE." 1825 PRINT :PRINT "SELECT MATCH & SOLVE AND YOU CAN MATCH MY DISPLAYS TO" 1830 PRINT "YOUR HAND HELD CUBE THEN I'LL GIVE YOU A LIST OF MOVES" 1835 PRINT "WHICH WILL SOLVE THE CUBE FROM THAT POSITION OR LET YOU" 1840 PRINT "KNOW YOU HAVE AN INVALID CUBE!" 1845 GOSUB 1955:GOSUB 1745 1850 PLOT 3,0,16:PRINT "HOW TO ENTER MOVES" 1855 PRINT :PRINT "MOVES ARE ENCODED BY USING THE FIRST LETTER OF FACE TO BE" 1860 PRINT "ROTATED. THIS IS FOLLOWED BY A NUMBER FROM ONE (1) TO" 1865 PRINT "THREE (3) TO INDICATE THE NUMBER OF QUARTER TURNS IN A" 1870 PRINT "CLOCKWISE DIRECTION AS YOU FACE THAT SIDE." 1875 PRINT 1880 PRINT "FOR EXAMPLE: F3 TURNS THE FRONT FACE THREE (3) QUARTER" 1885 PRINT "TURNS. ( WHICH EQUALS ONE CCW TURN )":PRINT 1890 PRINT "MULTIPLE MOVES MAY BE WRITTEN AS FOLLOWS:" 1895 PRINT " D1U3R2D3U1 ( NOTICE NO SPACES! )" 1900 GOSUB 1955:GOSUB 1745 1905 PLOT 3,0,16:PRINT "MISC. FUNCTIONS:":PRINT 1910 PRINT "A 'YES' RESPONSE TO THE DISPLAY EACH MOVE QUERY WILL DO" 1915 PRINT "JUST THAT AND ALLOW YOU TO SEE EACH MOVE. HOWEVER, WHEN" 1920 PRINT "DONE IN MATCH AND SOLVE MODE, MY SOLUTION SPEED IS" 1925 PRINT "GREATLY REDUCED.":PRINT 1930 PRINT "IN MATCH & SOLVE MODE COLORS ARE SET BY PRESSING THE" 1935 PRINT "COLOR KEY PAD (OR THE COLORED KEYS OF THE STD. KEYBOARD)." 1940 PRINT "THE BLACK CURSOR WILL INDICATE THE CHANGE LOCATION." 1945 GOSUB 1955:RUN 1950 REM Pause 1955 OUT 8,255:PLOT 3,35,30:INPUT "HIT RETURN TO CONTINUE";WW$ 1957 OUT 8,199:PLOT 28,11,28,11:RETURN 1960 REM Check if cubie is completed 1965 FOR EG= 1TO 4:RESTORE 250:EX= C(30)* C(26)* C(29):REM CORNER 1970 IF EG< 4THEN EX= C(30)* C(25+ EG)* C(26+ EG) 1975 FOR EY= 1TO 4:READ R,S,T:Q= C(R)* C(S)* C(T) 1980 IF EX< > QTHEN NEXT EY:GOTO 2085 1985 EY= 4:NEXT EY,EG 1990 FOR EG= 1TO 4:IF C(EG+ 37)< > C(25+ EG)GOTO 2085:REM FINAL CORNER CHECK 1995 NEXT EG 2000 RESTORE 265:Q= C(26)* C(29):FOR I= 0TO 3:READ R,S:REM EDGIE 2005 IF Q< > C(R)* C(S)THEN NEXT I:GOTO 2085 2010 Q= I:I= 3:NEXT I:FOR EG= 1TO 3:RESTORE 265 2015 P= C(EG+ 25)* C(EG+ 26):FOR EY= 1TO 4:READ R,S 2020 IF P< > C(R)* C(S)THEN NEXT EY:GOTO 2085 2025 EY= 4:NEXT EY,EG 2030 FOR EG= 26TO 29:IF C(EG)< > C(EG+ 18)GOTO 2085:REM FINAL EDGIE CHECK 2035 NEXT EG 2040 PLOT 3,0,18:PRINT " SKILL LEVELS" 2045 PRINT 2050 PRINT " STAR ONE SIDE ANY FASHION" 2055 PRINT " EXPERT ONE SIDE RIGHT WAY" 2060 PRINT " MASTER TWO ADJACENT SIDES" 2065 PRINT " GRANDMASTER EIGHT CORNERS" 2070 PRINT " CUBIST ALL SIX SIDES" 2075 PRINT :PRINT :PRINT " HOORAY ... YOU SOLVED IT!" 2080 GOSUB 1955:RUN 2085 RETURN 2090 X2= INT ((64- LEN (WW$))/ 2):PLOT 3,0,31,11,3,X2,31:PRINT WW$:RETURN 2095 X2= INT ((64- LEN (WD$))/ 2):PLOT 3,0,YD,11,3,X2,YD:PRINT WD$:RETURN 2100 WW$= WW$+ V$(W1- 1)+ V$(W2- 1):RETURN