Compucolor.org – Virtual Media

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