image of READY prompt

Wang2200.org

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"