Listing of file='TIC-TAC' on disk='vmedia/more_games.wvd.zip'
# Sector 1421, program filename = 'TIC-TAC' 0010 REM %TIC-TAC 0015 LOAD DC T#6,"GAMES" 0020 DIM C(8),B(9) 0030 L$=HEX(010A0A0A0A0A0A0A0A0A0A0A0A0A0A0A) 0040 INIT(09)P$ 0050 PRINT HEX(03);STR(L$,1,6);STR(P$,1,15) 0060 PRINT " LET'S PLAY TIC TAC TOE";HEX(0A0A0A) 0070 PRINT "TO TELL ME YOUR MOVE, KEY THE # OF THE SPACE AND EXECUTE" 0080 FOR G=1TO 750 : NEXT G 0090 PRINT HEX(0A);,"TO BEGIN YOU CAN GO FIRST" : FOR G=1TO 500 : NEXT G 0100 GOSUB 1520 : PRINT HEX(030A) : INPUT " PLAY AGAIN? TO RECALL GAMES MENU KEY 'N' (Y/N)",A$ : IF A$="N"THEN 1900 0110 FOR K=1TO 9 : B(K)=0 : NEXT K : PRINT HEX(0A);," I'LL GO FIRST" : FOR G=1TO 500 : NEXT G : GOSUB 140 0120 PRINT HEX(030A) : INPUT " PLAY AGAIN? TO RECALL GAMES MENU KEY 'N' (Y/N)",A$ : IF A$="N"THEN 1900 0130 PRINT HEX(0A);," O.K. YOU START." : FOR G=1TO 500 : NEXT G : GOTO 100 0140 REM %'BEGIN COMPUTER START' 0150 PRINT HEX(03) : GOSUB 1010 : FOR G=1TO 300 : NEXT G 0160 B(1)=-1 : GOSUB 1010 : GOSUB 170 : GOTO 250 0170 GOSUB 1390 : INPUT "YOUR MOVE",M : IF M<1THEN 190 : IF M>9THEN 190 0180 IF B(M)<>0THEN 190 : B(M)=1 : GOTO 200 0190 S1$="***RUBBISH***" : GOSUB 1300 : GOTO 170 0200 PRINT STR(L$,1,14);STR(P$,1,15);STR(P$,1,15); 0210 PRINT STR(P$,1,13);" " 0220 GOSUB 1010 0230 FOR N=1TO 300 : NEXT N 0240 RETURN 0250 IF M=5 THEN 260 : GOTO 670 0260 GOSUB 980 : PRINT "9" : B(9)=-1 : GOSUB 1010 0270 GOSUB 170 : IF M=3THEN 280 : IF M=7THEN 320 : GOTO 360 0280 GOSUB 980 : PRINT "7" : B(7)=-1 : GOSUB 1010 0290 GOSUB 170 : IF M=4THEN 310 0300 GOSUB 980 : PRINT "4" : B(4)=-1 : GOSUB 1010 : GOTO 400 0310 GOSUB 980 : PRINT "8" : B(8)=-1 : GOSUB 1010 : GOTO 400 0320 GOSUB 980 : PRINT "3" : B(3)=-1 : GOSUB 1010 0330 GOSUB 170 : IF M=2THEN 350 0340 GOSUB 980 : PRINT "2" : B(2)=-1 : GOSUB 1010 : GOTO 400 0350 GOSUB 980 : PRINT "6" : B(6)=-1 : GOSUB 1010 : GOTO 400 0360 IF M=2THEN 370 : IF M=6THEN 460 : IF M=4THEN 530 : GOTO 600 0370 GOSUB 980 : PRINT "8" : B(8)=-1 : GOSUB 1010 0380 GOSUB 170 : IF M=7THEN 410 0390 GOSUB 980 : PRINT "7" : B(7)=-1 : GOSUB 1010 0400 FOR E=1TO 300 : NEXT E : GOSUB 990 : GOSUB 970 : RETURN 0410 GOSUB 980 : PRINT "3" : B(3)=-1 : GOSUB 1010 0420 GOSUB 170 : IF M=6THEN 440 0430 GOSUB 980 : PRINT "6" : B(6)=-1 : GOSUB 1010 : GOTO 400 0440 GOSUB 980 : PRINT "4" : B(4)=-1 : GOSUB 1010 0450 GOSUB 1000 : GOSUB 970 : RETURN 0460 GOSUB 980 : PRINT "4" : B(4)=-1 : GOSUB 1010 0470 GOSUB 170 : IF M=7THEN 490 0480 GOSUB 980 : PRINT "7" : B(7)=-1 : GOSUB 1010 : GOTO 400 0490 GOSUB 980 : PRINT "3" : B(3)=-1 : GOSUB 1010 0500 GOSUB 170 : IF M=2THEN 520 0510 GOSUB 980 : PRINT "2" : B(2)=-1 : GOSUB 1010 : GOTO 400 0520 GOSUB 980 : PRINT "8" : B(8)=-1 : GOSUB 1010 : GOTO 450 0530 GOSUB 980 : PRINT "6" : B(6)=-1 : GOSUB 1010 0540 GOSUB 170 : IF M=3THEN 560 0550 GOSUB 980 : PRINT "3" : B(3)=-1 : GOSUB 1010 : GOTO 400 0560 GOSUB 980 : PRINT "7" : B(7)=-1 : GOSUB 1010 0570 GOSUB 170 : IF M=8THEN 590 0580 GOSUB 980 : PRINT "8" : B(8)=-1 : GOSUB 1010 : GOTO 400 0590 GOSUB 980 : PRINT "2" : B(2)=-1 : GOSUB 1010 : GOTO 450 0600 GOSUB 980 : PRINT "2" : B(2)=-1 : GOSUB 1010 0610 GOSUB 170 : IF M=3THEN 630 0620 GOSUB 980 : PRINT "3" : B(3)=-1 : GOSUB 1010 : GOTO 400 0630 GOSUB 980 : PRINT "7" : B(7)=-1 : GOSUB 1010 0640 GOSUB 170 : IF M=4THEN 660 0650 GOSUB 980 : PRINT "4" : B(4)=-1 : GOSUB 1010 : GOTO 400 0660 GOSUB 980 : PRINT "6" : B(6)=-1 : GOSUB 1010 : GOTO 450 0670 IF M=2THEN 680 : IF M=3THEN 680 : GOTO 750 0680 GOSUB 980 : PRINT "7" : B(7)=-1 : GOSUB 1010 0690 GOSUB 170 : IF M=4THEN 710 0700 GOSUB 980 : PRINT "4" : B(4)=-1 : GOSUB 1010 : GOTO 400 0710 GOSUB 980 : PRINT "9" : B(9)=-1 : GOSUB 1010 0720 GOSUB 170 : IF M=5THEN 740 0730 GOSUB 980 : PRINT "5" : B(5)=-1 : GOSUB 1010 : GOTO 400 0740 GOSUB 980 : PRINT "8" : B(8)=-1 : GOSUB 1010 : GOTO 400 0750 IF M=6THEN 760 : IF M=9THEN 760 : GOTO 830 0760 GOSUB 980 : PRINT "3" : B(3)=-1 : GOSUB 1010 0770 GOSUB 170 : IF M=2THEN 790 0780 GOSUB 980 : PRINT "2" : B(2)=-1 : GOSUB 1010 : GOTO 400 0790 GOSUB 980 : PRINT "7" : B(7)=-1 : GOSUB 1010 0800 GOSUB 170 : IF M=5THEN 820 0810 GOSUB 980 : PRINT "5" : B(5)=-1 : GOSUB 1010 : GOTO 400 0820 GOSUB 980 : PRINT "4" : B(4)=-1 : GOSUB 1010 : GOTO 400 0830 IF M=8 THEN 900 : GOSUB 980 : PRINT "3" : B(3)=-1 : GOSUB 1010 0840 GOSUB 170 : IF M=2THEN 860 0850 GOSUB 980 : PRINT "2" : B(2)=-1 : GOSUB 1010 : GOTO 400 0860 GOSUB 980 : PRINT "9" : B(9)=-1 : GOSUB 1010 0870 GOSUB 170 : IF M=5THEN 890 0880 GOSUB 980 : PRINT "5" : B(5)=-1 : GOSUB 1010 : GOTO 400 0890 GOSUB 980 : PRINT "6" : B(6)=-1 : GOSUB 1010 : GOTO 400 0900 GOSUB 980 : PRINT "7" : B(7)=-1 : GOSUB 1010 0910 GOSUB 170 : IF M=4 THEN 930 0920 GOSUB 980 : PRINT "4" : B(4)=-1 : GOSUB 1010 : GOTO 400 0930 GOSUB 980 : PRINT "3" : B(3)=-1 : GOSUB 1010 0940 GOSUB 170 : IF M=5 THEN 960 0950 GOSUB 980 : PRINT "5" : B(5)=-1 : GOSUB 1010 : GOTO 400 0960 GOSUB 980 : PRINT "2" : B(2)=-1 : GOSUB 1010 : GOTO 400 0970 FOR Y=1TO 9 : B(Y)=0 : NEXT Y : RETURN 0980 PRINT STR(L$,1,14);"I MOVE TO "; : RETURN 0990 S1$="***I WIN***" : GOSUB 1300 : RETURN 1000 S1$="****DRAW****" : GOSUB 1300 : RETURN 1010 DIM B(9) 1020 PRINT HEX(01) 1030 DIM A(3) 1040 FOR X=1TO 3 : A(X)=B(X) : NEXT X 1050 GOSUB 1280 : GOSUB 1140 1060 GOSUB 1280 : GOSUB 1260 : GOSUB 1280 1070 FOR Z=4TO 6 : A(Z-3)=B(Z) 1080 NEXT Z 1090 GOSUB 1140 : GOSUB 1280 : GOSUB 1260 : GOSUB 1280 1100 FOR Z=7TO 9 : LET A(Z-6)=B(Z) : NEXT Z 1110 GOSUB 1140 : GOSUB 1280 : PRINT : PRINT : PRINT : RETURN 1120 IF A<>0 THEN 1130 : PRINT "O" : RETURN 1130 PRINT "X" : RETURN 1140 PRINT " "; 1150 IF A(1)<>0 THEN 1160 : PRINT " . "; : GOTO 1200 1160 IF A(1)>0 THEN 1180 : PRINT "O . "; 1170 GOTO 1200 1180 PRINT "X . "; 1190 GOTO 1200 1200 IF A(2)<>0 THEN 1210 : PRINT " . "; : GOTO 1230 1210 IF A(2)>0 THEN 1220 : PRINT "O . "; : GOTO 1230 1220 PRINT "X . "; : GOTO 1230 1230 IF A(3)<>0 THEN 1240 : PRINT " " : RETURN 1240 IF A(3)>0 THEN 1250 : PRINT "O" : RETURN 1250 PRINT "X" : RETURN 1260 PRINT " . . . . . . . . . . . . ." 1270 RETURN 1280 PRINT " . ." 1290 RETURN 1300 PRINT STR(L$,1,14) 1310 FOR I7=1TO 3 1320 FOR I8=1TO 40 1330 PRINT TAB(I8);S1$;" ";HEX(0D); : NEXT I8 1340 FOR I8=40TO 1STEP -1 1350 PRINT TAB(I8);S1$;" ";HEX(0D); : NEXT I8 1360 NEXT I7 1370 PRINT STR(L$,1,14);TAB(64) 1380 RETURN 1390 REM 'BOARD NUMBER PRINT' 1400 PRINT HEX(01) : GOSUB 1510 : GOSUB 1280 : GOSUB 1510 1410 PRINT " 1 . 2 . 3" 1420 GOSUB 1510 : GOSUB 1280 : GOSUB 1510 : GOSUB 1260 : GOSUB 1510 1430 GOSUB 1280 : GOSUB 1510 1440 PRINT " 4 . 5 . 6" 1450 GOSUB 1510 : GOSUB 1280 : GOSUB 1510 : GOSUB 1260 : GOSUB 1510 1460 GOSUB 1280 : GOSUB 1510 1470 PRINT " 7 . 8 . 9" 1480 GOSUB 1510 : GOSUB 1280 1490 PRINT STR(L$,1,14); : GOSUB 1510 1500 RETURN 1510 FOR I=1TO 4 : PRINT STR(P$,1,8); : NEXT I : RETURN 1520 REM 'BEGIN PLAYER FIRST' : PRINT HEX(03) 1530 C=0 : M1=0 1540 F=0 : PRINT HEX(01) : GOSUB 1850 : GOSUB 1890 1550 GOSUB 170 1560 IF M1=0THEN 1860 1570 C(1)=B(1)+B(2)+B(3) : C(2)=B(4)+B(5)+B(6) : C(3)=B(7)+B(8)+B(9) 1580 C(4)=B(1)+B(4)+B(7) : C(5)=B(2)+B(5)+B(8) : C(6)=B(3)+B(6)+B(9) 1590 C(7)=B(1)+B(5)+B(9) : C(8)=B(3)+B(5)+B(7) 1600 FOR H=1TO 8 : IF C(H)=3THEN 1650 : IF C(H)=-3THEN 1670 1610 NEXT H : IF F=1THEN 1540 : FOR H=1TO 8 1620 IF C(H)=-2THEN 1680 : IF C(H)=2THEN 1790 1630 NEXT H 1640 GOTO 1800 1650 S1$="***YOU WIN***" : GOSUB 1300 : RETURN 1660 GOTO 1000 1670 GOSUB 990 : RETURN 1680 IF H=1THEN 1700 : IF H=2THEN 1710 : IF H=3THEN 1720 : IF H=4THEN 1730 1690 IF H=5THEN 1740 : IF H=6THEN 1750 : IF H=7THEN 1760 : IF H=8THEN 1770 1700 FOR J=1TO 3 : IF B(J)=0THEN 1780 : NEXT J 1710 FOR J=4TO 6 : IF B(J)=0THEN 1780 : NEXT J 1720 FOR J=7TO 9 : IF B(J)=0THEN 1780 : NEXT J 1730 FOR J=1TO 7STEP 3 : IF B(J)=0THEN 1780 : NEXT J 1740 FOR J=2TO 8STEP 3 : IF B(J)=0THEN 1780 : NEXT J 1750 FOR J=3TO 9STEP 3 : IF B(J)=0THEN 1780 : NEXT J 1760 FOR J=1TO 9STEP 4 : IF B(J)=0THEN 1780 : NEXT J 1770 FOR J=3TO 7STEP 2 : IF B(J)=0THEN 1780 : NEXT J 1780 B(J)=-1 : GOSUB 1850 : F=1 : C=C+1 : IF C=5THEN 1660 : GOTO 1570 1790 GOTO 1680 1800 REM RANDOM GEN AND CHECK 1810 C=C+1 : IF C=5THEN 1660 1820 S=INT(RND(1)*9) 1830 IF S=0THEN 1820 : IF S>9THEN 1820 : IF B(S)<>0THEN 1820 1840 B(S)=-1 : GOSUB 1850 : GOTO 1540 1850 GOSUB 1010 : RETURN 1860 M1=M1+1 : IF M=5THEN 1880 1870 IF M<>1THEN 1570 : J=5 : GOTO 1780 1880 J=1 : GOTO 1780 1890 GOSUB 1390 : RETURN 1900 LOAD DC T#6,"GAMES"