image of READY prompt

Wang2200.org

Listing of file='3DTTT' on disk='vmedia/gamesall.wvd.zip'

# Sector 3, program filename = '3DTTT'
0010 REM 3 DIMENSIONAL TIC TAC TOE MIN.C+OP2,5 12K  M BLOMME 02/02/76 DISK VER
     SION
0020 COM L$(4,46)2,X$(4,46)1,X1$(17,4)1,A$1,J$46,M7$(16)2,L1$(19,16)2,T2$(19,1
     6)1,J1$46,N$(2)8,K$(2,3),M(3),M$(2),T1$(22)4,P$(1)4,P1$(4)1,T3$(17),L3$(7
     6)2,T4$(1),O9$2,T5$(4,4)1,T6$(16)1,L2$(76)2
   : COM P1(4),P2(4),T$(19,16)1
   : SELECT #1005
0030 IF L$(1,1)<>HEX(20)THEN 100
   : DATA LOAD DC OPEN T"MOVEDATA"
   : DATA LOAD DC L$(),L1$(),M7$()
0040 DEFFN'14
   : ON INT(RND(1)*6+1)GOTO 100,50,60,70,80,90,100
0050 GOSUB '55(1,257,129)
   : GOTO 100
0060 GOSUB '55(129,257,1)
   : GOTO 100
0070 GOSUB '55(129,1,257)
   : GOTO 100
0080 GOSUB '55(257,1,129)
   : GOTO 100
0090 GOSUB '55(257,129,1)
   : GOTO 100
0100 J$="*****1**********2**********3**********4*****"
   : STR(J$,45,2)=HEX(0A0D)
   : INIT(09)J1$
   : M$(1)="X"
   : M$(2)="O"
   : O9$=HEX(0000)
   : FOR A=1TO 16
   : FOR B=1TO 4
   : BIN(A$)=A-1
   : ROTATE(A$,4)
   : BIN(P1$(1))=B
   : ADD(A$,P1$(1))
   : X1$(A,B)=A$
   : NEXT B
   : NEXT A
   : MAT MOVE X1$(),L1$(1,1)TO T2$(1,1)
0110 X1$(1,1)=" "
   : MAT COPY X1$()TO X1$()<2,67>
   : A1,B1=1
   : SELECT P
   : X$(1,1)=HEX(00)
   : MAT COPY X$()TO X$()<2,183>
   : INIT(00)L3$(),L2$()
   : INIT(20)T$()
   : X1$(17,1)=" "
   : X1$(17,2)="#"
   : X1$(17,3)=HEX(0A)
   : X1$(17,4)=HEX(0D)
0120 PRINT HEX(03)
   : GOSUB '50
   : FOR A=1TO 8
   : PRINT ,,HEX(7F)
   : NEXT A
   : PRINT ,,HEX(7F01)
   : PRINT J1$;"PLAYER,2200 (1)"
   : PRINT J1$;"2200,PLAYER (2)"
   : PRINT J1$;"PLAYER,PLAYER (3)"
   : PRINT J1$;
   : INPUT P
   : ON PGOTO 130,140,150
   : GOTO 120
0130 N$(1)="PLAYER"
   : N$(2)="2200"
   : PRINT
   : PRINT
   : RESTORE
   : GOTO 160
0140 N$(2)="PLAYER"
   : N$(1)="2200"
   : PRINT
   : PRINT
   : RESTORE 40
   : GOTO 160
0150 PRINT J1$;
   : INPUT "1ST NAME",N$(1)
   : PRINT J1$;
   : INPUT "2ND NAME",N$(2)
   : RESTORE
0160 FOR A=1TO 22
   : READ T1$(A)
   : NEXT A
   : FOR A=1TO 17
   : READ T3$(A)
   : NEXT A
   : PRINT ,N$(1)
   : PRINT HEX(0C);J1$;N$(2)
   : ON PGOTO 170,380,400
0170 GOSUB '32(A1,B1,P)
   : IF P=1THEN 180
   : B1=B1+7
   : IF B1<29THEN 180
   : B1=1
   : A1=A1+1
0180 MAT MOVE X1$(),L1$(1,1)TO T$(1,1)
   : GOSUB '35(1,22)
   : IF D0=0THEN 380
0190 ON T1GOTO 720,730,200,200,200,200,200,200,200,200,220,220,220,220,220,220
     ,300,300,300,300,300,300
   : STOP "T1>22"
0200 P1=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))
   : MAT COPY T$()<P1,4>TO P$()
   : P1=P1+POS(P$(1)=20)-1
   : MAT COPY T2$()<P1,1>TO P1$()
   : GOSUB '36(P1$(1))
   : IF T1>6THEN 210
   : ON PGOTO 760,740
0210 IF P=2THEN 170
   : B1=B1+7
   : IF B1<29THEN 170
   : B1=1
   : A1=A1+1
   : GOTO 170
0220 T4=T1
   : MAT COPY L2$()<1,152>TO L3$()<1,152>
0230 P1=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))
   : MAT COPY T$()<P1,4>TO P$()
   : P3=POS(P$(1)=20)
   : P1=P1+P3-1
   : MAT COPY T2$()<P1,1>TO P1$()<1,1>
   : P2=P1+POS(STR(P$(1),P3+1,4-P3)=20)
   : MAT COPY T2$()<P2,1>TO P1$()<2,1>
   : GOTO 250
0240 GOSUB '35(T1,16)
   : IF D0=0THEN 360
   : MAT COPY -L2$()<1,150>TO -L2$()<3,150>
0250 FOR A=2TO 76
   : P1=VAL(STR(L2$(A),1,1))*256+VAL(STR(L2$(A),2,1))
   : IF P1<>0THEN 270
   : A=76
   : NEXT A
0260 IF T1=16THEN 360
   : T1=T1+1
   : GOTO 240
0270 MAT COPY T$()<P1,4>TO P$()
   : P3=POS(P$(1)=20)
   : P1=P1+P3-1
   : MAT COPY T2$()<P1,1>TO P1$()<3,1>
   : P2=P1+POS(STR(P$(1),P3+1,4-P3)=20)
   : MAT COPY T2$()<P2,1>TO P1$()<4,1>
   : IF P1$(1)=P1$(3)THEN 280
   : IF P1$(2)=P1$(4)THEN 290
   : IF P1$(1)=P1$(4)THEN 280
   : IF P1$(2)=P1$(3)THEN 290
   : NEXT A
   : GOTO 260
0280 A=76
   : NEXT A
   : GOSUB '36(P1$(1))
   : GOTO 210
0290 GOSUB '36(P1$(2))
   : GOTO 210
0300 T4=T1
   : MAT COPY L2$()<1,152>TO L3$()<1,152>
0310 P1=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))
   : MAT COPY T$()<P1,4>TO P$()
   : P3=POS(P$(1)=20)
   : P1=P1+P3-1
   : MAT COPY T2$()<P1,1>TO P1$()<1,1>
   : P2=P1+POS(STR(P$(1),P3+1,4-P3)=20)
   : MAT COPY T2$()<P2,1>TO P1$()<2,1>
   : GOTO 330
0320 GOSUB '35(T1,22)
   : IF D0=0THEN 360
   : MAT COPY -L2$()<1,150>TO -L2$()<3,150>
0330 FOR A=2TO 76
   : P1=VAL(STR(L2$(A),1,1))*256+VAL(STR(L2$(A),2,1))
   : IF P1<>0THEN 350
   : A=76
   : NEXT A
0340 IF T1=22THEN 360
   : T1=T1+1
   : GOTO 320
0350 MAT COPY T$()<P1,4>TO P$()
   : P3=POS(P$(1)=20)
   : P1=P1+P3-1
   : MAT COPY T2$()<P1,1>TO P1$()<3,1>
   : P2=P1+POS(STR(P$(1),P3+1,4-P3)=20)
   : MAT COPY T2$()<P2,1>TO P1$()<4,1>
   : IF P1$(1)=P1$(3)THEN 280
   : IF P1$(2)=P1$(4)THEN 290
   : IF P1$(1)=P1$(4)THEN 280
   : IF P1$(2)=P1$(3)THEN 290
   : NEXT A
   : GOTO 340
0360 IF L3$(2)<>HEX(0000)THEN 370
   : T4=T4+1
   : IF T4=23THEN 380
   : GOSUB '35(T4,22)
   : IF D0=0THEN 380
   : GOTO 190
0370 T1=T4
   : MAT COPY L3$()<3,150>TO L2$()<1,150>
   : MAT COPY L2$()TO L3$()
   : ON T4-10GOTO 230,230,230,230,230,230,310,310,310,310,310,310
   : STOP "T4>22"
0380 INIT(00)L3$()
   : GOSUB '38
   : IF D0=1THEN 390
   : GOSUB '37
   : IF D0=1THEN 390
   : GOSUB '33(A1,B1,3-P)
0390 IF P=2THEN 170
   : B1=B1+7
   : IF B1<29THEN 170
   : B1=1
   : A1=A1+1
   : GOTO 170
0400 GOSUB '32(A1,B1,1)
   : MAT MOVE X1$(),L1$(1,1)TO T$(1,1)
   : MAT SEARCHT$(),=T1$(1)TO L2$()STEP 4
   : IF L2$(1)<>HEX(0000)THEN 740
   : GOSUB '32(A1,B1,2)
   : MAT MOVE X1$(),L1$(1,1)TO T$(1,1)
   : MAT SEARCHT$(),=T1$(2)TO L2$()STEP 4
   : IF L2$(1)<>HEX(0000)THEN 760
   : B1=B1+7
   : IF B1<29THEN 400
   : B1=1
   : A1=A1+1
   : GOTO 400
0410 DEFFN'50
   : MAT MOVE X1$(),L$(1,1)TO X$(1,1)
   : $GIO#1(410141204120410A410DA200,B$)J$
   : $GIO#1(A200,B$)X$()
   : $GIO#1(A200,B$)J$
   : RETURN
0420 DEFFN'32(A,B,C)
0430 PRINT HEX(010A0A0A0A0A0A0A);
   : FOR D=1TO A
   : PRINT
   : NEXT D
   : PRINT STR(J1$,1,B);
   : IF C=1THEN 440
   : PRINT STR(J1$,1,33);
0440 FOR D=1TO 3
0450 KEYIN K$(C,D),460,450
   : GOTO 450
0460 IF K$(C,D)<"1"THEN 450
   : IF K$(C,D)>"4"THEN 450
   : CONVERT K$(C,D)TO M(D)
   : PRINT K$(C,D);",";
   : NEXT D
   : IF X1$((M(1)-1)*4+M(3),M(2))<>" "THEN 430
   : X1$((M(1)-1)*4+M(3),M(2))=M$(C)
   : GOSUB '50
   : PRINT HEX(010A0A0A0A0A0A0A);"Y OR N?";
0470 KEYIN A$,480,470
   : GOTO 470
0480 PRINT
   : IF A$<>"N"THEN 490
   : X1$((M(1)-1)*4+M(3),M(2))=" "
   : GOSUB '50
   : GOTO 430
0490 IF P=3THEN 500
   : PRINT HEX(0C);"I'M THINKING";HEX(0C)
   : RETURN
0500 PRINT HEX(0C);TAB(10);HEX(0C)
   : RETURN
0510 DEFFN'33(A,B,C)
   : PRINT HEX(010A0A0A0A0A0A0A2020202020202020202020200D);
   : FOR D=1TO A
   : PRINT
   : NEXT D
   : PRINT STR(J1$,1,B);
   : IF C=1THEN 520
   : PRINT STR(J1$,1,33);
0520 FOR D=1TO 3
   : M(D)=INT(RND(1)*4)+1
   : NEXT D
   : IF X1$((M(1)-1)*4+M(3),M(2))<>" "THEN 520
   : X1$((M(1)-1)*4+M(3),M(2))=M$(C)
   : FOR D=1TO 3
   : CONVERT M(D)TO K$(C,D),(#)
   : PRINT K$(C,D);",";
   : NEXT D
   : GOSUB '50
   : RETURN
0530 DEFFN'34(A,B,C,P2,P3)
   : PRINT HEX(010A0A0A0A0A0A0A2020202020202020202020200D);
   : FOR D=1TO A
   : PRINT
   : NEXT D
   : PRINT STR(J1$,1,B);
   : IF C=1THEN 540
   : PRINT STR(J1$,1,33);
0540 M(1)=INT((P2-1)/4)+1
   : M(3)=P2-(M(1)-1)*4
   : M(2)=P3
   : FOR D=1TO 3
   : CONVERT M(D)TO K$(C,D),(#)
   : PRINT K$(C,D);",";
   : NEXT D
   : GOSUB '50
   : RETURN
0550 DEFFN'35(T2,T3)
   : FOR T=T2TO T3
   : MAT SEARCHT$(),=STR(T1$(T),1,4)TO L2$()STEP 4
   : IF L2$(1)<>HEX(0000)THEN 560
   : NEXT T
   : D0=0
   : RETURN
0560 T1=T
   : T=T3
   : NEXT T
   : D0=1
   : RETURN
0570 DEFFN'36(P1$(1))
   : A$=P1$(1)
   : ROTATE(P1$(1),4)
   : AND (P1$(1),0F)
   : P2=VAL(P1$(1))+1
   : AND (A$,0F)
   : P3=VAL(A$)
   : X1$(P2,P3)=M$(3-P)
   : GOSUB '34(A1,B1,3-P,P2,P3)
   : RETURN
0580 DEFFN'37
   : FOR T=1TO 17
   : MAT SEARCHT$(),=STR(T3$(T),1,16)TO L2$()STEP 16
   : IF L2$(1)<>HEX(0000)THEN 590
   : NEXT T
   : D0=0
   : RETURN
0590 IF T=17THEN 610
   : T4$(1)=HEX(20202020200000202000002020200000)
   : XOR (T4$(1),T3$(T))
   : P1=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))+POS(T4$(1)=20)-1
0600 MAT COPY T2$()<P1,1>TO P1$()
   : GOSUB '36(P1$(1))
   : D0=1
   : RETURN
0610 ON INT(RND(1)*4+1)GOTO 620,630,640,650
0620 P1=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))+5
   : GOTO 600
0630 P1=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))+6
   : GOTO 600
0640 P1=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))+9
   : GOTO 600
0650 P1=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))+10
   : GOTO 600
0660 DEFFN'38
   : INIT(FF)L2$()
   : FOR A=1TO 273STEP 16
   : MAT SEARCHT$()<A,16>,=M$(P)TO L2$()
   : MAT SEARCHL2$(),=O9$TO L3$()STEP 2
   : Z1=(VAL(STR(L3$(1),2,1))-1)/2
   : MAT SEARCHT$()<A,16>,=M$(3-P)TO L2$()
   : MAT SEARCHL2$(),=O9$TO L3$()STEP 2
   : Z2=(VAL(STR(L3$(1),2,1))-1)/2
   : IF Z1-2>Z2THEN 680
0670 NEXT A
   : D0=0
   : RETURN
0680 MAT COPY T$()<A,16>TO T5$()
   : MAT MOVE T5$(),M7$(1)TO T6$(1)
   : MAT COPY T6$()TO T4$()
   : P1=POS(T4$(1)=20)
   : IF P1=0THEN 670
   : IF P1=16THEN 700
   : IF RND(1)>.5THEN 700
0690 P2=POS(STR(T4$(1),P1+1,16-P1)=20)
   : IF INT((P1+P2-1)/4)<>INT((P1-1)/4)THEN 700
   : P1=P1+P2
   : IF P1=16THEN 700
   : IF RND(1)<.5THEN 690
0700 MAT COPY T2$()<A,16>TO T5$()
   : MAT MOVE T5$(),M7$(1)TO T6$(1)
   : MAT COPY T6$()<P1,1>TO P1$()
   : A=273
   : NEXT A
   : PRINT HEX(0133)
   : GOSUB '36(P1$(1))
   : D0=1
   : RETURN
0710 DEFFN'51(P1$(1))
   : A$=P1$(1)
   : ROTATE(P1$(1),4)
   : AND (P1$(1),0F)
   : P1(A)=VAL(P1$(1))+1
   : AND (A$,0F)
   : P2(A)=VAL(A$)
   : RETURN
0720 ON PGOTO 740,760
0730 ON PGOTO 760,740
0740 A=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))
   : MAT COPY T2$()<A,4>TO P1$()
   : FOR A=1TO 4
   : GOSUB '51(P1$(A))
   : NEXT A
0750 SELECT P1
   : PRINT HEX(01);"**** ";N$(1);" WON ****"
   : FOR A=1TO 4
   : X1$(P1(A),P2(A))=" "
   : NEXT A
   : GOSUB '50
   : PRINT HEX(01);"                       "
   : FOR A=1TO 4
   : X1$(P1(A),P2(A))="X"
   : NEXT A
   : GOSUB '50
   : GOTO 750
0760 A=VAL(STR(L2$(1),1,1))*256+VAL(STR(L2$(1),2,1))
   : MAT COPY T2$()<A,4>TO P1$()
   : FOR A=1TO 4
   : GOSUB '51(P1$(A))
   : NEXT A
0770 SELECT P1
   : PRINT HEX(01);"**** ";N$(2);" WON ****"
   : FOR A=1TO 4
   : X1$(P1(A),P2(A))=" "
   : NEXT A
   : GOSUB '50
   : PRINT HEX(01);"                       "
   : FOR A=1TO 4
   : X1$(P1(A),P2(A))="O"
   : NEXT A
   : GOSUB '50
   : GOTO 770
0780 DEFFN'55(A,B,C)
   : IF A=1THEN 800
   : MAT COPY L1$()<1,128>TO L2$()
   : MAT COPY L1$()<A,128>TO L1$()<1,128>
0800 IF B=129THEN 820
   : IF B=1THEN 810
   : MAT COPY L1$()<129,128>TO L3$()
   : MAT COPY L1$()<257,128>TO L1$()<129,128>
   : GOTO 820
0810 MAT COPY L1$()<129,128>TO L3$()
   : MAT COPY L2$()<1,128>TO L1$()<129,128>
0820 IF C=257THEN 840
   : IF C=129THEN 830
   : MAT COPY L2$()<1,128>TO L1$()<257,128>
   : GOTO 840
0830 MAT COPY L3$()<1,128>TO L1$()<257,128>
0840 RETURN
0850 DATA "XXXX","OOOO","OOO ","OO O","O OO"," OOO","XXX ","XX X","X XX"," XXX
     ","OO  ","O O ","O  O"," OO "," O O","  OO","XX  ","X X ","X  X"," XX ","
      X X","  XX"
0860 DATA "  X  OO  OO   O ","     OO  OO     ","     OO  O      ","     OO
     O     ","     O   OO     "
0870 DATA "      O  OO     ","     OO         ","     O   O      ","     O
     O     ","      O   O     ","      O  O      ","         OO     ","     O
              ","      O         "
   : DATA "         O      ","          O     ","                "
0880 DATA "OOOO","XXXX","XXX ","XX X","X XX"," XXX","OOO ","OO O","O OO"," OOO
     ","XX  ","X X ","X  X"," XX "," X X","  XX","OO  ","O O ","O  O"," OO ","
      O O","  OO"
0890 DATA "  O  XX  XX   X ","     XX  XX     ","     XX  X      ","     XX
     X     ","     X   XX     "
0900 DATA "      X  XX     ","     XX         ","     X   X      ","     X
     X     ","      X   X     ","      X  X      ","         XX     ","     X
              ","      X         "
   : DATA "         X      ","          X     ","                "