Random game
Random demo
Random game
Magic Square Magic Square Magic Square Magic Square Magic Square Magic Square
Listing 1
1 REM MAGIC SQUARE
2 REM AUTHOR UNKNOWN
3 REM COPYRIGHT FOR DISSEMINATION BY CUE,​ INC 1982
4 REM SOFTSWAP (415)363-5472
5 REM 333 MAIN STREET,​ REDWOOD CITY,​
6 REM CA. 94063
10 REM NUMBER SQUARE GAME
11 V0=0:​V1=1:​V2=2:​V3=3:​V4=4:​V5=5:​V6=6:​V7=7:​V8=8:​V9=9:​V10=10:​V11=11:​V12=12:​V16=16:​V18=18:​V20=20
12 AA=1:​BB=2:​CC=3:​DD=4:​EE=0:​SND2=30:​N1=0:​N2=0:​N3=0:​EBD1=0
13 OPEN #1,​4,​0,​"K:​":​SW=0:​R2=0:​GOTO 30
15 I=B(XP,​YP):​GOSUB 4230
16 IF I=16 THEN X1=XP:​Y1=YP
17 XIO V18,​#6,​V0,​V0,​"S:​":​X=AX(XP):​Y=AY(YP):​GOSUB 3000+I*V20:​GOSUB 4240:​RETURN
20 SUMA(V1)=B(V1,​V1)+B(V1,​V2)+B(V1,​V3)+B(V1,​V4):​SUMA(V2)=B(V2,​V1)+B(V2,​V2)+B(V2,​V3)+B(V2,​V4)
21 SUMA(V3)=B(V3,​V1)+B(V3,​V2)+B(V3,​V3)+B(V3,​V4):​SUMA(V4)=B(V4,​V1)+B(V4,​V2)+B(V4,​V3)+B(V4,​V4)
22 SUMA(V5)=B(V1,​V1)+B(V2,​V1)+B(V3,​V1)+B(V4,​V1):​SUMA(V6)=B(V1,​V2)+B(V2,​V2)+B(V3,​V2)+B(V4,​V2)
23 SUMA(V7)=B(V1,​V3)+B(V2,​V3)+B(V3,​V3)+B(V4,​V3):​SUMA(V8)=B(V1,​V4)+B(V2,​V4)+B(V3,​V4)+B(V4,​V4)
24 SUMA(V9)=B(V1,​V1)+B(V2,​V2)+B(V3,​V3)+B(V4,​V4):​SUMA(V10)=B(V1,​V4)+B(V2,​V3)+B(V3,​V2)+B(V4,​V1)
25 SUM=0:​FOR II=V1 TO V10:​SUM=SUM+ABS(SUMA(II)-30):​NEXT II
26 RETURN
30 DIM B(4,​4),​ANS$(1),​SUMA(10),​SUMB(10),​NAM$(15),​OPT$(5),​DIFF$(5)
33 NAM$=" ":​OPT$=" ":​DIFF$=" ":​NAM$=" ":​OPT$=" ":​DIFF$=" "
40 DIM AX(5),​AY(5),​XCOR(10),​YCOR(10)
42 AX(1)=5:​AX(2)=30:​AX(3)=55:​AX(4)=80:​AY(1)=5:​AY(2)=24:​AY(3)=43:​AY(4)=62
44 DIM SOND(24)
45 SOND(1)=108:​SOND(2)=108:​SOND(3)=108:​SOND(4)=81:​SOND(5)=53:​SOND(6)=60:​SOND(7)=64:​SOND(8)=72
46 SOND(9)=40:​SOND(10)=53:​SOND(11)=60:​SOND(12)=64:​SOND(13)=72:​SOND(14)=40:​SOND(15)=53:​SOND(16)=60
47 SOND(17)=64:​SOND(18)=60:​SOND(19)=72:​SOND(20)=108
51 XCOR(1)=7:​XCOR(2)=32:​XCOR(3)=57:​XCOR(4)=82:​XCOR(5)=103:​XCOR(6)=103:​XCOR(7)=103:​XCOR(8)=103:​XCOR(9)=114
54 XCOR(10)=118:​YCOR(1)=80:​YCOR(2)=80:​YCOR(3)=80:​YCOR(4)=80:​YCOR(5)=8:​YCOR(6)=27:​YCOR(7)=46:​YCOR(8)=65
57 YCOR(9)=80:​YCOR(10)=1
68 GRAPHICS 0
70 SETCOLOR 4,​4,​4:​SETCOLOR 2,​11,​6:​SETCOLOR 3,​12,​8:​SETCOLOR 1,​12,​2
71 POKE 752,​1:​POKE 82,​7
72 GOSUB 1100
73 POSITION 11,​8:​SOUND 1,​72,​10,​10
74 ? #6;"This program is provided"
76 ? #6;"for everyone's enjoyment."
78 ? #6;"No copyright restrictions "
80 ? #6;"are enforced or intended."
82 ? #6;" I wish to acknowledge the"
84 ? #6;"use of the basic Magic Square"
86 ? #6;"algorithm as developed by"
88 ? #6;"Marc I. Leavey,​ in the June"
90 ? #6;"1981 issue of Microcomputing."
91 ? #6;" "
93 POSITION 4,​23
94 ? #6;"Push  to go on"
95 POKE 82,​2:​GOSUB 4240:​GET #1,​X
150 GOSUB 750
160 IF T=1 THEN 360
210 FOR I=1 TO 4:​FOR J=1 TO 4:​READ DA:​B(I,​J)=DA:​NEXT J:​NEXT I
270 DATA 1,​6,​15,​8,​12,​11,​2,​5,​10,​13,​4,​3,​7,​16,​9,​14
280 I1=4:​J1=2:​GOTO 430
360 FOR I=1 TO 4:​FOR J=1 TO 4:​B(I,​J)=(I-1)*4+J:​NEXT J:​NEXT I:​I1=4:​J1=4
430 R1=20/DD
480 FOR Q=1 TO DD
490 M=INT(1+RND(0)*4)
500 ON M GOTO 510,​560,​610,​660
510 IF I1=1 THEN GOTO 490
512 B(I1,​J1)=B(I1-1,​J1):​B(I1-1,​J1)=16:​I1=I1-1:​GOTO 700
560 IF I1=4 THEN GOTO 490
562 B(I1,​J1)=B(I1+1,​J1):​B(I1+1,​J1)=16:​I1=I1+1:​GOTO 700
610 IF J1=1 THEN GOTO 490
612 B(I1,​J1)=B(I1,​J1-1):​B(I1,​J1-1)=16:​J1=J1-1:​GOTO 700
660 IF J1=4 THEN GOTO 490
662 B(I1,​J1)=B(I1,​J1+1):​B(I1,​J1+1)=16:​J1=J1+1
700 GOSUB 4210:​R2=R2+R1:​FOR II=2 TO INT(R2):​POSITION 34,​II+2:​? #6;""
710 NEXT II
711 NEXT Q
712 GOSUB 4240
720 POSITION 34,​22:​? #6;"":​POSITION 8,​21:​? #6;"COMPLETE":​GET #1,​X:​GOTO 1500
750 GRAPHICS 1+16
751 SOUND 1,​108,​10,​10
765 IF EBD1=1 THEN N2=0:​N3=0:​GOTO 811
770 POSITION 4,​0:​? #6;"magic square":​POSITION 3,​3:​? #6;"THIS MAGIC SQUARE":​? #6;"GAME HAS TWO OPTIONS"
776 POSITION 0,​7:​? #6;".-ARRANGE":​? #6;" 15 NUMBERS IN":​? #6;" SEQUENTIAL ORDER"
782 POSITION 0,​12:​? #6;".-ARRANGE 15":​? #6;" NUMBERS SO THAT":​? #6;" 4 ROWS,​ 4 COLUMNS"
794 ? #6;" AND 2 DIAGONALS":​POSITION 2,​16:​? #6;"EACH ADD UP TO 30":​POSITION 2,​19:​? #6;"requires joystick"
806 GOSUB 4240
807 POSITION 0,​21:​? #6;" HIT RETURN TO GO ON":​GET #1,​X
811 GOSUB 4240:​? #6;""
812 POSITION 4,​1:​? #6;"magic square":​POSITION 3,​5:​? #6;"":​POSITION 6,​6:​? #6;""
820 POSITION 0,​8:​? #6;" ";NAM$:​POSITION 6,​9:​? #6;"^^^^^^^^^^^^^":​POSITION 3,​10:​? #6;""
831 POSITION 8,​13:​? #6;""
832 POSITION 0,​12:​? #6;" ";OPT$:​POSITION 3,​14:​? #6;"":​POSITION 12,​17:​? #6;""
844 POSITION 0,​16:​? #6;" ";DIFF$:​POSITION 3,​18:​? #6;""
856 POSITION 0,​22:​? #6;"hit  to go on"
858 IF EBD1=1 THEN POSITION 8,​13:​? #6;"^^^":​EBD1=0
860 IF N1=1 THEN GOTO 880
863 TRAP 863:​GET #1,​X:​IF X<>126 THEN 870
864 IF LEN(NAM$)=1 THEN 820
865 NAM$=NAM$(1,​LEN(NAM$)-1):​POSITION 0,​8:​? #6;" ":​GOTO 820
870 IF X=155 THEN N1=1:​POSITION 8,​13:​? #6;"^^^":​GOTO 880
871 IF X=32 THEN GOTO 873
872 IF X<65 OR X>90 THEN GOTO 863
873 IF LEN(NAM$)=14 THEN GOTO 863
874 NAM$(LEN(NAM$)+1)=CHR$(X)
875 GOSUB 4220:​GOSUB 4240
876 GOTO 820
880 IF N2=1 THEN GOTO 904
884 TRAP 884:​GET #1,​X
886 IF X<>126 THEN GOTO 892
887 IF LEN(OPT$)=1 THEN 890
888 OPT$=OPT$(1,​LEN(OPT$)-1)
890 POSITION 0,​12:​? #6;" ":​GOTO 832
892 IF X=155 THEN GOTO 902
894 IF X=32 THEN GOTO 897
896 IF X<65 OR X>90 THEN GOTO 884
897 IF LEN(OPT$)=4 THEN GOTO 884
898 OPT$(LEN(OPT$)+1)=CHR$(X)
899 GOSUB 4220:​GOSUB 4240
900 GOTO 832
902 N2=1
903 POSITION 12,​17:​? #6;"^^^"
904 IF N3=1 THEN GOTO 926
908 TRAP 908:​GET #1,​X
909 DIFF$(1,​1)=" "
910 IF X<>126 THEN GOTO 916
911 IF LEN(DIFF$)=1 THEN 914
912 DIFF$=DIFF$(1,​LEN(DIFF$)-1)
914 POSITION 0,​16:​? #6;" ":​GOTO 844
916 IF X=155 THEN GOTO 924
917 IF X=32 THEN GOTO 919
918 IF X<48 OR X>58 THEN GOTO 908
919 IF LEN(DIFF$)=4 THEN GOTO 908
920 DIFF$(LEN(DIFF$)+1)=CHR$(X)
921 IF VAL(DIFF$)>500 THEN 912
922 GOSUB 4220:​GOSUB 4240
923 GOTO 844
924 N3=1
926 DD=VAL(DIFF$)
929 IF OPT$(2,​2)="S" THEN T=1:​GOTO 932
930 T=2
932 TRAP 40000:​GRAPHICS 0
934 SETCOLOR 4,​4,​4:​SETCOLOR 2,​11,​6:​SETCOLOR 1,​12,​2:​SETCOLOR 3,​8,​4:​POKE 752,​1
950 GOSUB 1100
951 IF T=1 THEN 1000
953 SOUND 1,​128,​10,​10
954 POSITION 3,​5
956 ? #6;" This game is played by"
958 ? #6;"arranging 15 numbers in a"
960 ? #6;"4X4 matrix so that the 4"
962 ? #6;"rows,​ 4 columns,​ and 2 "
964 ? #6;"diagonals each add up to"
966 ? #6;"30. Using the joystick in"
968 ? #6;"the first from left port,​"
969 ? #6;"numbers can be moved into"
970 ? #6;"the zero square(identified"
971 ? #6;"by a small '0'). Pushing"
972 ? #6;"the trigger (and holding"
973 ? #6;"it down) will produce"
974 ? #6;"helpful data-but only once"
975 ? #6;"per move. The program is"
976 ? #6;"generating the matrix."
977 ? #6;"Push  when the count-"
978 ? #6;"down on the right is done."
979 GOSUB 4240
980 GOSUB 990:​RETURN
990 FOR I=1 TO 20:​POSITION 33,​I+3
991 IF I=20 THEN ? #6;" -GO":​GOTO 993
992 ? #6;" ";I-20
993 NEXT I
994 POSITION 33,​3:​? #6;"":​RETURN
1000 POSITION 3,​6
1001 SOUND 1,​128,​10,​10
1002 ? #6;" This game is played by"
1004 ? #6;"arranging 15 numbers in"
1006 ? #6;"sequential order on a 4x4"
1008 ? #6;"matrix. Using the joy-"
1010 ? #6;"stick in the first port"
1012 ? #6;"from the left,​ move num-"
1014 ? #6;"bers into the blank square."
1015 ? #6;"Arrange the numbers top to"
1016 ? #6;"bottom and left to right."
1017 ? #6;"The program is now calcu-"
1018 ? #6;"lating the matrix. The"
1019 ? #6;"trigger has no effect. Push"
1020 ? #6;"the  key when the"
1022 ? #6;"countdown on the right is"
1024 ? #6;"complete."
1025 GOSUB 4240
1026 GOSUB 990:​RETURN
1100 POSITION 4,​1:​? #6;"   "
1101 POSITION 4,​2:​? #6;"      "
1102 POSITION 4,​3:​? #6;"     ":​RETURN
1500 GRAPHICS 7+16:​POKE 765,​3:​SETCOLOR 0,​5,​2:​SETCOLOR 1,​6,​4:​SETCOLOR 2,​9,​8:​SETCOLOR 3,​12,​0
1550 SETCOLOR 4,​4,​8:​C=0:​X1=0:​Y1=0:​COLOR AA
1602 PLOT 1,​1:​DRAWTO 26,​1:​DRAWTO 26,​77:​DRAWTO 51,​77:​DRAWTO 51,​1:​DRAWTO 76,​1:​DRAWTO 76,​77:​DRAWTO 101,​77
1604 DRAWTO 101,​58:​DRAWTO 76,​58:​POSITION 76,​77:​XP=V4:​YP=V4:​GOSUB 15
1650 PLOT 76,​58:​DRAWTO 26,​58:​POSITION 26,​77:​XP=V2:​YP=V4:​GOSUB 15
1670 PLOT 26,​58:​DRAWTO 1,​58:​DRAWTO 1,​39:​PLOT 26,​39:​DRAWTO 1,​39:​POSITION 1,​58:​XP=V1:​YP=V3:​GOSUB 15
1710 PLOT 51,​39:​DRAWTO 26,​39:​POSITION 26,​58:​XP=V2:​YP=V3:​GOSUB 15
1830 PLOT 76,​39:​DRAWTO 51,​39:​POSITION 51,​58:​XP=V3:​YP=V3:​GOSUB 15
1865 PLOT 76,​39:​DRAWTO 101,​39:​DRAWTO 101,​20:​DRAWTO 76,​20:​POSITION 76,​39:​XP=V4:​YP=V2:​GOSUB 15
1910 PLOT 76,​20:​DRAWTO 51,​20:​POSITION 51,​39:​XP=V3:​YP=V2:​GOSUB 15
1945 PLOT 51,​20:​DRAWTO 26,​20:​POSITION 26,​39:​XP=V2:​YP=V2:​GOSUB 15
1980 PLOT 26,​20:​DRAWTO 1,​20:​DRAWTO 1,​1:​POSITION 1,​20:​XP=V1:​YP=V1:​GOSUB 15
2020 PLOT 51,​1:​DRAWTO 26,​1:​POSITION 26,​20:​XP=V2:​YP=V1:​GOSUB 15
2052 PLOT 76,​1:​DRAWTO 51,​1:​POSITION 51,​20:​XP=V3:​YP=V1:​GOSUB 15
2080 PLOT 101,​20:​DRAWTO 101,​1:​DRAWTO 76,​1:​POSITION 76,​20:​XP=V4:​YP=V1:​GOSUB 15
2120 PLOT 101,​58:​DRAWTO 101,​39:​DRAWTO 76,​39:​POSITION 76,​58:​XP=V4:​YP=V3:​GOSUB 15
2155 PLOT 76,​77:​DRAWTO 51,​77:​PLOT 76,​58:​DRAWTO 51,​58:​POSITION 51,​77:​XP=V3:​YP=V4:​GOSUB 15
2190 PLOT 26,​77:​DRAWTO 1,​77:​DRAWTO 1,​58:​PLOT 26,​58:​DRAWTO 1,​58:​POSITION 1,​77:​XP=V1:​YP=V4:​GOSUB 15
2240 PLOT 1,​39:​DRAWTO 1,​20:​PLOT 26,​20:​DRAWTO 1,​20:​POSITION 1,​39:​XP=V1:​YP=V2:​GOSUB 15
2283 GOSUB 4240
2284 GOSUB 4840:​GOSUB 20:​DIR=5:​SEC=0
2285 POKE 18,​0:​POKE 19,​0:​POKE 20,​0
2300 IF SEC=2 THEN 2311
2303 IF T=1 THEN 2311
2305 IF STRIG(0)=0 THEN GOTO 4000
2311 RED=0:​POKE 77,​0
2315 IF HNT<>1 THEN GOTO 2319
2316 COLOR EE:​GOSUB 4705:​HNT=0
2317 GOSUB 4800:​GOSUB 4100
2319 DIR=5:​STK=STICK(0)
2320 IF STK=15 THEN 2700
2322 SEC=0
2325 IF STK<>11 THEN 2400
2336 IF X1=4 THEN 2400
2337 SW=SW+1
2338 SOUND 1,​72,​10,​10
2339 I=B(X1+1,​Y1)
2342 COLOR CC
2345 X=AX(X1+1):​Y=AY(Y1)
2348 GOSUB 3000+I*20
2351 I=16:​X=AX(X1)
2354 GOSUB 3000+I*20
2357 COLOR AA
2360 X=AX(X1+1)
2363 GOSUB 3000+I*20
2366 I=B(X1+1,​Y1)
2369 X=AX(X1)
2372 GOSUB 3000+I*20
2375 B(X1,​Y1)=I
2378 B(X1+1,​Y1)=16
2381 X1=X1+1
2382 GOSUB 4240
2384 GOSUB 3400:​REM *CALCULATE SUMS*
2400 IF STK<>14 THEN 2500
2425 IF Y1=4 THEN 2500
2427 SW=SW+1
2428 SOUND 1,​91,​10,​10
2430 I=B(X1,​Y1+1)
2433 COLOR CC
2436 X=AX(X1):​Y=AY(Y1+1)
2439 GOSUB 3000+I*20
2442 I=16:​Y=AY(Y1)
2445 GOSUB 3000+I*20
2448 COLOR AA
2451 Y=AY(Y1+1)
2454 GOSUB 3000+I*20
2457 I=B(X1,​Y1+1)
2460 Y=AY(Y1)
2463 GOSUB 3000+I*20
2466 B(X1,​Y1)=I
2469 B(X1,​Y1+1)=16
2472 Y1=Y1+1
2473 GOSUB 4240
2475 GOSUB 3400:​REM *CALCULATE SUMS*
2500 IF STK<>7 THEN 2600
2525 IF X1=1 THEN 2600
2527 SW=SW+1
2528 SOUND 1,​108,​10,​10
2530 I=B(X1-1,​Y1)
2533 COLOR CC
2536 X=AX(X1-1):​Y=AY(Y1)
2539 GOSUB 3000+I*20
2542 I=16:​X=AX(X1)
2545 GOSUB 3000+I*20
2548 COLOR AA
2551 X=AX(X1-1)
2554 GOSUB 3000+I*20
2557 I=B(X1-1,​Y1)
2560 X=AX(X1)
2563 GOSUB 3000+I*20
2566 B(X1,​Y1)=I
2569 B(X1-1,​Y1)=16
2572 X1=X1-1
2573 GOSUB 4240
2575 GOSUB 3400:​REM *CALCULATE SUM*
2600 IF STK<>13 THEN GOTO 2700
2625 IF Y1=1 THEN 2700
2627 SW=SW+1
2628 SOUND 1,​128,​10,​10
2630 I=B(X1,​Y1-1)
2633 COLOR CC
2636 X=AX(X1):​Y=AY(Y1-1)
2639 GOSUB 3000+I*20
2642 I=16:​Y=AY(Y1)
2645 GOSUB 3000+I*20
2648 COLOR AA
2651 Y=AY(Y1-1)
2654 GOSUB 3000+I*20
2657 I=B(X1,​Y1-1)
2660 Y=AY(Y1)
2663 GOSUB 3000+I*20
2666 B(X1,​Y1)=I
2669 B(X1,​Y1-1)=16
2672 Y1=Y1-1
2673 GOSUB 4240
2675 GOSUB 3400
2700 GOTO 2300
2702 GOTO 2300
3020 PLOT X+6,​Y+3
3021 DRAWTO X+9,​Y:​DRAWTO X+9,​Y+10:​PLOT X+6,​Y+10:​DRAWTO X+12,​Y+10:​RETURN
3040 PLOT X+6,​Y+2
3041 DRAWTO X+8,​Y:​DRAWTO X+10,​Y:​DRAWTO X+12,​Y+2:​DRAWTO X+12,​Y+4:​DRAWTO X+6,​Y+7:​DRAWTO X+6,​Y+10
3047 DRAWTO X+12,​Y+10:​RETURN
3060 PLOT X+6,​Y
3061 DRAWTO X+12,​Y:​DRAWTO X+7,​Y+3:​DRAWTO X+12,​Y+6:​DRAWTO X+12,​Y+9:​DRAWTO X+11,​Y+10
3066 DRAWTO X+7,​Y+10:​DRAWTO X+6,​Y+9:​RETURN
3080 PLOT X+12,​Y+7
3081 DRAWTO X+6,​Y+7:​DRAWTO X+10,​Y:​DRAWTO X+10,​Y+10:​RETURN
3100 PLOT X+12,​Y
3101 DRAWTO X+6,​Y:​DRAWTO X+6,​Y+3:​DRAWTO X+12,​Y+5:​DRAWTO X+12,​Y+8:​DRAWTO X+10,​Y+10
3106 DRAWTO X+8,​Y+10:​DRAWTO X+6,​Y+8:​RETURN
3120 PLOT X+11,​Y
3121 DRAWTO X+9,​Y:​DRAWTO X+6,​Y+3:​DRAWTO X+6,​Y+8:​DRAWTO X+8,​Y+10:​DRAWTO X+10,​Y+10:​DRAWTO X+10,​Y+10:​DRAWTO X+12,​Y+8:​DRAWTO X+12,​Y+6
3129 DRAWTO X+10,​Y+4:​DRAWTO X+8,​Y+4:​DRAWTO X+6,​Y+6:​RETURN
3140 PLOT X+6,​Y
3141 DRAWTO X+12,​Y:​DRAWTO X+7,​Y+10:​RETURN
3160 PLOT X+8,​Y+5
3161 DRAWTO X+6,​Y+3:​DRAWTO X+6,​Y+2:​DRAWTO X+8,​Y:​DRAWTO X+10,​Y:​DRAWTO X+12,​Y+2:​DRAWTO X+12,​Y+3
3167 DRAWTO X+10,​Y+5:​DRAWTO X+8,​Y+5:​DRAWTO X+6,​Y+7:​DRAWTO X+6,​Y+8:​DRAWTO X+8,​Y+10:​DRAWTO X+10,​Y+10:​DRAWTO X+12,​Y+8:​DRAWTO X+12,​Y+7
3175 DRAWTO X+8,​Y+5:​RETURN
3180 PLOT X+7,​Y+10
3181 DRAWTO X+9,​Y+10:​DRAWTO X+12,​Y+7:​DRAWTO X+12,​Y+2:​DRAWTO X+10,​Y:​DRAWTO X+8,​Y:​DRAWTO X+6,​Y+2:​DRAWTO X+6,​Y+4:​DRAWTO X+8,​Y+6
3189 DRAWTO X+10,​Y+6:​DRAWTO X+12,​Y+4:​RETURN
3200 PLOT X,​Y+3
3201 DRAWTO X+3,​Y:​DRAWTO X+3,​Y+10:​PLOT X,​Y+10:​DRAWTO X+6,​Y+10:​PLOT X+10,​Y+2:​DRAWTO X+12,​Y:​DRAWTO X+14,​Y:​DRAWTO X+16,​Y+2
3209 DRAWTO X+16,​Y+8:​DRAWTO X+14,​Y+10:​DRAWTO X+12,​Y+10:​DRAWTO X+10,​Y+8:​DRAWTO X+10,​Y+3:​RETURN
3220 XSAVE=X:​X=X-6
3221 GOSUB 3020:​X=X+10:​GOSUB 3020:​X=XSAVE:​RETURN
3240 XSAVE=X:​X=X-6
3241 GOSUB 3020:​X=X+10:​GOSUB 3040:​X=XSAVE:​RETURN
3260 XSAVE=X:​X=X-6
3261 GOSUB 3020:​X=X+10:​GOSUB 3060:​X=XSAVE:​RETURN
3280 XSAVE=X:​X=X-6
3281 GOSUB 3020:​X=X+10:​GOSUB 3080:​X=XSAVE:​RETURN
3300 XSAVE=X:​X=X-6
3301 GOSUB 3020:​X=X+10:​GOSUB 3100:​X=XSAVE:​RETURN
3320 IF T=1 THEN 3329
3321 PLOT X+12,​Y
3322 DRAWTO X+12,​Y+2:​DRAWTO X+13,​Y+3:​DRAWTO X+14,​Y+3:​DRAWTO X+15,​Y+2:​DRAWTO X+15,​Y:​DRAWTO X+14,​Y-1:​DRAWTO X+13,​Y-1
3329 C=1:​RETURN
3400 IF T=2 THEN 3410
3401 CCC=0
3402 FOR I=1 TO 4:​FOR J=1 TO 4
3403 IF B(I,​J)<CCC THEN POP:​RETURN
3404 CCC=B(I,​J)
3405 NEXT J:​NEXT I
3406 GOTO 3432
3410 B(X1,​Y1)=0:​GOSUB 20
3420 IF SUM=0 THEN GOTO 3432
3425 B(X1,​Y1)=16
3430 RETURN
3432 COLOR AA
3433 PLOT 109,​39:​DRAWTO 109,​71:​DRAWTO 159,​71:​DRAWTO 159,​39:​DRAWTO 109,​39:​A=0:​GOSUB 3450:​GOSUB 6400
3434 FOR J=1 TO 16 STEP 5:​FOR I=1 TO 3:​SETCOLOR 2,​J+2,​6:​SOUND 1,​SOND(I+J-1),​10,​10
3436 FOR W=1 TO 8:​NEXT W:​SOUND 1,​0,​0,​0
3439 A=INT(RND(0)*3+1):​COLOR A:​PLOT 110+I,​70:​DRAWTO 110+I*2,​40:​PLOT 160-I,​70:​DRAWTO 160-I*2,​40:​NEXT I
3440 FOR I=5 TO 22:​A=INT(RND(0)*3+1):​COLOR A:​PLOT 110+I,​70:​DRAWTO 110+INT(I*34/25),​60
3441 IF I=5 THEN SOUND 1,​SOND(J+3),​10,​10
3442 IF I=14 THEN SOUND 1,​SOND(J+4),​10,​10
3443 PLOT 110+INT(I*40/25),​50:​DRAWTO 110+I*2,​40:​PLOT 158-I,​70:​DRAWTO 158-INT(I*34/25),​60
3444 PLOT 158-INT(I*40/25),​50:​DRAWTO 158-I*2,​40:​NEXT I:​SOUND 1,​0,​0,​0:​NEXT J
3445 FOR W=1 TO 70:​NEXT W:​GOSUB 4240:​GOTO 6000
3450 PLOT 117,​52:​DRAWTO 118,​57:​DRAWTO 119,​54:​DRAWTO 120,​57:​DRAWTO 121,​52
3452 X=123:​Y=52:​GOSUB 4961
3454 X=129:​GOSUB 3490
3456 X=135:​GOSUB 3490
3458 X=141:​GOSUB 4966
3460 X=147:​GOSUB 4963:​RETURN
3490 PLOT X,​Y+5:​DRAWTO X,​Y:​DRAWTO X+4,​Y+5:​DRAWTO X+4,​Y:​RETURN
3498 RETURN
3500 RETURN
3600 FOR W=1 TO 10:​NEXT W
3601 GOTO 2300
4000 IF RED=1 THEN GOTO 4010
4002 SEC=2
4003 GOSUB 4300:​RED=1
4010 IF BLK=0 THEN BLK=1:​COLOR AA:​GOTO 4030
4020 COLOR EE:​BLK=0
4030 GOSUB 4100
4032 IF STRIG(0)=0 THEN GOTO 4000
4034 GOTO 2305
4100 ON DIR GOTO 4110,​4130,​4150,​4170,​4180
4110 PLOT 133,​52:​DRAWTO 133,​56:​DRAWTO 147,​56:​DRAWTO 147,​58:​DRAWTO 151,​54:​DRAWTO 147,​50:​DRAWTO 147,​52:​DRAWTO 133,​52:​GOTO 4190
4130 PLOT 141,​60:​DRAWTO 137,​56:​DRAWTO 139,​56:​DRAWTO 139,​44:​DRAWTO 143,​44:​DRAWTO 143,​56:​DRAWTO 145,​56:​DRAWTO 141,​60:​GOTO 4190
4150 PLOT 131,​54:​DRAWTO 135,​50:​DRAWTO 135,​52:​DRAWTO 149,​52:​DRAWTO 149,​56:​DRAWTO 135,​56:​DRAWTO 135,​58:​DRAWTO 131,​54:​GOTO 4190
4170 PLOT 139,​58:​DRAWTO 139,​44:​DRAWTO 137,​44:​DRAWTO 141,​40:​DRAWTO 145,​44:​DRAWTO 143,​44:​DRAWTO 143,​58:​DRAWTO 139,​58
4175 GOTO 4190
4180 PLOT 136,​63:​DRAWTO 136,​57:​DRAWTO 140,​63:​DRAWTO 140,​57:​PLOT 142,​57:​DRAWTO 142,​63:​DRAWTO 146,​63:​DRAWTO 146,​57:​DRAWTO 142,​57
4190 RETURN
4210 IF SND<>0 THEN 4216
4212 SND1=INT(RND(0)*40)+25:​SOUND 1,​SND1,​10,​10:​RETURN
4216 SOUND 1,​SND,​10,​10:​SND=0:​RETURN
4220 IF SND<>0 THEN 4226
4222 SND1=INT(RND(0)*40)+25:​SOUND 2,​SND1,​10,​10:​RETURN
4226 SOUND 2,​SND,​10,​10:​SND=0:​RETURN
4230 SND2=SND2+3:​IF SND2>120 THEN SND2=40
4232 SOUND 1,​SND2,​10,​10:​RETURN
4240 SOUND 1,​0,​0,​0:​SOUND 2,​0,​0,​0:​RETURN
4300 B(X1,​Y1)=0
4302 SUMB(1)=B(1,​1)+B(1,​2)+B(1,​3)+B(1,​4)
4304 SUMB(2)=B(2,​1)+B(2,​2)+B(2,​3)+B(2,​4)
4305 SUMB(3)=B(3,​1)+B(3,​2)+B(3,​3)+B(3,​4)
4306 SUMB(4)=B(4,​1)+B(4,​2)+B(4,​3)+B(4,​4)
4308 SUMB(5)=B(1,​1)+B(2,​1)+B(3,​1)+B(4,​1)
4310 SUMB(6)=B(1,​2)+B(2,​2)+B(3,​2)+B(4,​2)
4312 SUMB(7)=B(1,​3)+B(2,​3)+B(3,​3)+B(4,​3)
4314 SUMB(8)=B(1,​4)+B(2,​4)+B(3,​4)+B(4,​4)
4316 SUMB(9)=B(1,​1)+B(2,​2)+B(3,​3)+B(4,​4)
4318 SUMB(10)=B(1,​4)+B(2,​3)+B(3,​2)+B(4,​1)
4340 GOSUB V20:​SUMS1=SUM
4350 IF X1=V4 THEN GOTO 4400
4355 B(X1,​Y1)=B(X1+V1,​Y1)
4360 B(X1+V1,​Y1)=0
4365 GOSUB V20
4375 IF SUM>=SUMS1 THEN 4385
4380 DIR=V3:​SUMS1=SUM
4385 B(X1+V1,​Y1)=B(X1,​Y1)
4390 B(X1,​Y1)=V0
4400 FOR I=V1 TO V10
4401 TONES=INT(SUMB(I))
4402 TENS=INT(SUMB(I)/10)
4403 IF TONES<V10 THEN GOTO 4405
4404 TONES=TONES-V10:​GOTO 4403
4405 COLOR AA
4406 X=XCOR(I)+V6:​Y=YCOR(I)
4407 GOSUB 5000+TONES*V20
4408 IF TENS=V0 THEN GOTO 4412
4409 X=XCOR(I):​Y=YCOR(I)
4410 GOSUB 5000+TENS*20
4412 NEXT I
4430 IF X1=V1 THEN GOTO 4500
4435 B(X1,​Y1)=B(X1-V1,​Y1)
4440 B(X1-V1,​Y1)=0
4445 GOSUB V20
4455 IF SUM>=SUMS1 THEN 4465
4460 DIR=V1:​SUMS1=SUM
4465 B(X1-V1,​Y1)=B(X1,​Y1)
4490 B(X1,​Y1)=V0
4500 GOTO 4530
4530 IF Y1=V4 THEN GOTO 4600
4535 B(X1,​Y1)=B(X1,​Y1+V1)
4540 B(X1,​Y1+V1)=0
4545 GOSUB V20
4555 IF SUM>=SUMS1 THEN 4565
4560 DIR=V4:​SUMS1=SUM
4565 B(X1,​Y1+V1)=B(X1,​Y1)
4590 B(X1,​Y1)=V0
4600 GOTO 4630
4630 IF Y1=V1 THEN GOTO 4700
4635 B(X1,​Y1)=B(X1,​Y1-V1)
4640 B(X1,​Y1-V1)=0
4645 GOSUB V20
4655 IF SUM>=SUMS1 THEN 4665
4660 DIR=V2:​SUMS1=SUM
4665 B(X1,​Y1-V1)=B(X1,​Y1)
4700 B(X1,​Y1)=V16:​COLOR AA
4705 PLOT 130,​65:​DRAWTO 130,​71:​PLOT 130,​68:​DRAWTO 134,​68:​PLOT 134,​65:​DRAWTO 134,​71
4728 PLOT 136,​65:​DRAWTO 140,​65:​PLOT 136,​71:​DRAWTO 140,​71:​PLOT 138,​65:​DRAWTO 138,​71:​PLOT 142,​71
4742 DRAWTO 142,​65:​DRAWTO 146,​71:​DRAWTO 146,​65:​PLOT 148,​65:​DRAWTO 152,​65:​PLOT 150,​65:​DRAWTO 150,​71
4756 HNT=V1:​RETURN
4800 FOR I=1 TO 10
4801 TONES=SUMB(I)
4802 TENS=INT(SUMB(I)/10)
4804 IF TONES<10 THEN GOTO 4808
4806 TONES=TONES-10:​GOTO 4804
4808 X=XCOR(I)+6:​Y=YCOR(I)
4810 GOSUB 5000+TONES*V20
4812 IF TENS=0 THEN GOTO 4818
4814 X=XCOR(I):​Y=YCOR(I)
4816 GOSUB 5000+TENS*20
4818 NEXT I
4820 RETURN
4840 PLOT 115,​19:​DRAWTO 115,​35:​DRAWTO 155,​35:​DRAWTO 155,​19:​DRAWTO 115,​19:​POSITION 115,​35:​POKE 765,​2
4856 XIO 18,​#6,​0,​0,​"S:​"
4858 COLOR 4
4860 PLOT 121,​26:​DRAWTO 121,​21:​DRAWTO 123,​23:​DRAWTO 125,​21:​DRAWTO 125,​26:​PLOT 127,​26:​DRAWTO 128,​21
4873 DRAWTO 130,​21:​DRAWTO 131,​26:​PLOT 128,​24:​DRAWTO 130,​24:​PLOT 137,​22:​DRAWTO 136,​21:​DRAWTO 134,​21
4882 DRAWTO 133,​22:​DRAWTO 133,​25:​DRAWTO 134,​26:​DRAWTO 136,​26:​DRAWTO 137,​25:​DRAWTO 137,​24:​DRAWTO 135,​24
4883 X=139:​Y=21:​GOSUB 4961
4897 PLOT 149,​22:​DRAWTO 148,​21:​DRAWTO 146,​21:​DRAWTO 145,​22:​DRAWTO 145,​25:​DRAWTO 146,​26:​DRAWTO 148,​26
4905 DRAWTO 149,​25:​PLOT 122,​28:​DRAWTO 121,​28:​DRAWTO 119,​28:​DRAWTO 118,​29:​DRAWTO 119,​30:​DRAWTO 121,​30
4913 DRAWTO 122,​31:​DRAWTO 122,​32:​DRAWTO 121,​33:​DRAWTO 119,​33:​DRAWTO 118,​32:​PLOT 125,​28:​DRAWTO 124,​29
4921 DRAWTO 124,​32:​DRAWTO 125,​33:​DRAWTO 127,​33:​DRAWTO 128,​32:​DRAWTO 128,​29:​DRAWTO 127,​28:​DRAWTO 125,​28
4928 PLOT 127,​32:​DRAWTO 128,​33:​PLOT 130,​28:​DRAWTO 130,​32:​DRAWTO 131,​33:​DRAWTO 133,​33:​DRAWTO 134,​32
4936 DRAWTO 134,​28:​DRAWTO 134,​33:​PLOT 136,​33:​DRAWTO 137,​28:​DRAWTO 139,​28:​DRAWTO 140,​33:​PLOT 137,​31
4943 DRAWTO 139,​31
4944 X=142:​Y=28:​GOSUB 4963
4953 X=148:​Y=28:​GOSUB 4966
4960 RETURN
4961 PLOT X,​Y:​DRAWTO X+4,​Y:​PLOT X,​Y+5:​DRAWTO X+4,​Y+5:​PLOT X+2,​Y:​DRAWTO X+2,​Y+5:​RETURN
4963 PLOT X,​Y+5:​DRAWTO X,​Y:​DRAWTO X+3,​Y:​DRAWTO X+4,​Y+1:​DRAWTO X+4,​Y+2:​DRAWTO X+3,​Y+3:​DRAWTO X,​Y+3
4964 PLOT X+1,​Y+3:​DRAWTO X+3,​Y+5:​RETURN
4966 PLOT X+4,​Y:​DRAWTO X,​Y:​DRAWTO X,​Y+5:​DRAWTO X+4,​Y+5:​PLOT X,​Y+3:​DRAWTO X+3,​Y+3:​RETURN
4999 RETURN
5000 PLOT X+1,​Y:​DRAWTO X,​Y+1:​DRAWTO X,​Y+4:​DRAWTO X+1,​Y+5:​DRAWTO X+3,​Y+5:​DRAWTO X+4,​Y+4:​DRAWTO X+4,​Y+1
5014 DRAWTO X+3,​Y:​DRAWTO X+1,​Y:​RETURN
5020 PLOT X,​Y+2:​DRAWTO X+2,​Y:​DRAWTO X+2,​Y+5:​PLOT X,​Y+5:​DRAWTO X+4,​Y+5:​RETURN
5040 PLOT X,​Y+1:​DRAWTO X+1,​Y:​DRAWTO X+3,​Y:​DRAWTO X+4,​Y+1:​DRAWTO X+4,​Y+2:​DRAWTO X,​Y+4
5052 DRAWTO X,​Y+5:​DRAWTO X+4,​Y+5:​RETURN
5060 PLOT X,​Y:​DRAWTO X+4,​Y:​DRAWTO X+2,​Y+1:​DRAWTO X+4,​Y+2:​DRAWTO X+4,​Y+4
5070 DRAWTO X+3,​Y+5:​DRAWTO X+1,​Y+5:​DRAWTO X,​Y+4:​RETURN
5080 PLOT X+4,​Y+3:​DRAWTO X,​Y+3:​DRAWTO X+3,​Y:​DRAWTO X+3,​Y+5:​RETURN
5100 PLOT X+4,​Y:​DRAWTO X,​Y:​DRAWTO X,​Y+2:​DRAWTO X+3,​Y+2:​DRAWTO X+4,​Y+3:​DRAWTO X+4,​Y+4
5112 DRAWTO X+3,​Y+5:​DRAWTO X+1,​Y+5:​DRAWTO X,​Y+4:​RETURN
5120 PLOT X+3,​Y:​DRAWTO X+1,​Y:​DRAWTO X,​Y+1:​DRAWTO X,​Y+4:​DRAWTO X+1,​Y+5:​DRAWTO X+3,​Y+5:​DRAWTO X+4,​Y+4
5134 DRAWTO X+4,​Y+3:​DRAWTO X+3,​Y+2:​DRAWTO X+1,​Y+2:​DRAWTO X,​Y+3:​RETURN
5140 PLOT X,​Y:​DRAWTO X+4,​Y:​DRAWTO X+1,​Y+5:​RETURN
5160 PLOT X+1,​Y+2:​DRAWTO X,​Y+1:​DRAWTO X+1,​Y:​DRAWTO X+3,​Y:​DRAWTO X+4,​Y+1:​DRAWTO X+3,​Y+2:​DRAWTO X+1,​Y+2:​DRAWTO X,​Y+4
5173 DRAWTO X+1,​Y+5:​DRAWTO X+3,​Y+5:​DRAWTO X+4,​Y+4:​DRAWTO X+3,​Y+2:​RETURN
5180 PLOT X+1,​Y+5:​DRAWTO X+2,​Y+5:​DRAWTO X+4,​Y+3:​DRAWTO X+4,​Y+1:​DRAWTO X+3,​Y:​DRAWTO X+1,​Y:​DRAWTO X,​Y+1
5194 DRAWTO X,​Y+2:​DRAWTO X+1,​Y+3:​DRAWTO X+3,​Y+3:​DRAWTO X+4,​Y+2:​RETURN
6000 GRAPHICS 0
6005 SETCOLOR 4,​3,​6:​SETCOLOR 2,​14,​6:​SETCOLOR 1,​12,​2:​POKE 752,​1:​GOSUB 1100:​POKE 82,​5:​GOSUB 4220
6035 ? #6;" "
6040 ? #6;" Congratulations ";NAM$
6050 ? #6;"You just solved the Magic"
6060 ? #6;"Square game."
6070 ? #6;" "
6080 ? #6;"It took you ";SW;" moves."
6082 ? #6;"The time to solve the Magic"
6084 ? #6;"Square was ";HRS;" hrs,​ ";MIN;" mins"
6086 ? #6;"and ";SEC;" secs."
6087 ? #6;" "
6088 ? #6;"The difficulty was ";DIFF$
6090 POSITION 6,​22
6200 ? #6;"Push  to play again"
6201 ? #6;" Push any other key to end"
6205 POKE 82,​2:​GOSUB 4240:​GET #1,​X
6206 IF X<>155 THEN 6500
6207 OPT$=" ":​OPT$=" ":​DIFF$=" ":​DIFF$=" ":​EBD1=1:​SND2=30:​R2=0:​SW=0:​RESTORE:​GOTO 150
6400 TIME=(PEEK(18)*256+PEEK(19)+PEEK(20)/256)*4.28571428
6410 HRS=INT(TIME/3600)
6420 MIN1=(TIME/3600-INT(TIME/3600))*3600
6430 MIN=INT(MIN1/60)
6440 SEC1=(MIN1/60-INT(MIN1/60))*60
6450 SEC=INT(SEC1)
6499 RETURN
6500 GRAPHICS 0:​RUN "D:​MENU"	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!