Listing of file='22002200' on disk='vmedia/games-droz01.wvd.zip'
# Sector 778, program filename = '22002200'
0000 DEFFN'0 "PRINT HEX(03):LISTSD10,";HEX(0D)
0001 DEFFN' 16"SCRATCHT";HEX(22);"22002200";HEX(22);":SAVET()";HEX(22);"220022
00";HEX(220D)
0002 DEFFN'126"PRINT HEX(03): LISTSD 0 ,"
0003 DEFFN M(N)=3*N^2-2*N^3
0010 REM 22002200 RELEASE 1.2 (09/18/80)
0020 DIM A$(3)124,B$(3)124,X$2,W$2,L$2,T$2,V$2,I$1,J$1,K$1
0030 PRINT HEX(0202020F03)
: F,S,E1,E2,E3,E4,E5,E6,E7,E8,E9,E0,C5,C6=0
: A,B=1
: C,D,C1,D1=3
: V$=HEX(C0C0)
: R1$=HEX(F7FB)
: R2$=HEX(FFFF)
: R3$=HEX(F7FB)
: A1=-1
: A2=24
: H=79
: C$="COMPUTER 1"
0040 PRINT HEX(0306);AT(0,22);"COMPUTER 1 VERSES COMPUTER 2"
: PRINT
0050 PRINT
: E$="1000"
: LINPUT "SELECT SPEED: 0<=E<=1000",E$
: CONVERT E$ TO E
: ERRORGOTO 50
0060 IF E<0 OR E>1000 THEN 50
0070 PRINT AT(5,0);
: J1$="30"
: LINPUT "SELECT DISPLAY DURATION: 0<=D<=100",J1$
: CONVERT J1$ TO J1
: ERRORGOTO 70
0080 IF J1<0 OR J1>100 THEN 70
0090 GOSUB 590
0100 IF R$<>"DE" THEN GOSUB 560
0110 KEYIN I$,110,110
: RETURN CLEAR ALL
: T$=HEX(0000)
: V,F1,F2,C3,C7=0
: A,B=1
: X,W=22
: IF R$="DE" THEN X,W=23
: Y=17
: Z=61
: IF R$="DE" THEN PRINT HEX(0306);BOX (24,79);
: C=C1
: D=D1
: J$="Q"
: H=79
0120 IF R$<>"DE" THEN GOSUB 580
0130 A$(),B$()=ALL(00)
: STR(A$(),,1),STR(B$(),,1)=BIN(23)
: STR(A$(),2,1)=BIN(17)
: STR(B$(),2,1)=BIN(61)
: STR(A$(),3)=A$()
: STR(B$(),3)=B$()
: STR(A$(),2*C+1),STR(B$(),2*D+1)=ALL(00)
0140 X=X-1
: IF X=A1 THEN 740
: GOSUB 410
: GOTO 220
0150 Y=Y-2
: IF Y=-1 THEN 740
: GOSUB 410
: GOTO 220
0160 X=X+1
: IF X=A2 THEN 740
: GOSUB 410
: GOTO 220
0170 Y=Y+2
: IF Y=79 THEN 740
: GOSUB 410
: GOTO 220
0180 W=W-1
: IF W=A1 THEN 640
: GOSUB 450
: GOTO 300
0190 Z=Z-2
: IF Z=-1 THEN 640
: GOSUB 450
: GOTO 300
0200 W=W+1
: IF W=A2 THEN 640
: GOSUB 450
: GOTO 300
0210 Z=Z+2
: IF Z=79 THEN 640
: GOSUB 450
: GOTO 300
0220 IF E=1000 THEN 230
: FOR J=1 TO 1000-E
: $BREAK 1
: NEXT J
0230 IF H<79 THEN 250
: C2=C2+1
: IF C2>20*RND(1) THEN 690
: GOTO 290
0240 REM TARGET SEEKING CODE
0250 IF W=G AND Z=H THEN 290
: IF B=1 OR B=3 THEN 260
: IF W=G AND B=3+SGN(H-Z) THEN 290
: IF W=G THEN 280
: F1=1
: IF G>W THEN B=3
: ELSE B=1
: GOTO 290
0260 IF Z=H AND B=2+SGN(G-W) THEN 290
: IF Z=H THEN 270
: F1=1
: IF Z>H THEN B=2
: ELSE B=4
: GOTO 290
0270 F1=1
: IF Z>39 THEN B=2
: ELSE B=4
: GOTO 290
0280 F1=1
: IF W>12 THEN B=1
: ELSE B=3
0290 RETURN CLEAR ALL
: ON B GOTO 180,190,200,210
0300 IF H<79 THEN 310
: C4=C4+1
: IF C4>20*RND(1) THEN 790
: GOTO 350
0310 IF X=G AND Y=H THEN 350
: IF A=1 OR A=3 THEN 320
: IF X=G AND A=3+SGN(H-Y) THEN 350
: IF X=G THEN 340
: F2=1
: IF G>X THEN A=3
: ELSE A=1
: GOTO 350
0320 IF Y=H AND A=2+SGN(G-X) THEN 350
: IF Y=H THEN 330
: F2=1
: IF Y>H THEN A=2
: ELSE A=4
: GOTO 350
0330 F2=1
: IF Y>39 THEN A=2
: ELSE A=4
: GOTO 350
0340 F2=1
: IF X>12 THEN A=1
: ELSE A=3
0350 IF 1001*RND(1)<985 THEN 400
0360 PRINT AT(G,H);V$;
0370 G=INT(22*RND(1))+1
: H=2*INT(39*RND(1))+1
0380 IF R$<>"DE" THEN GOSUB 570
0390 T$=BIN(G)
: STR(T$,2)=BIN(H)
: MAT SEARCH STR(A$(),,2*C),=T$ TO L$ STEP 2
: IF L$<>HEX(0000) THEN 370
: MAT SEARCH STR(B$(),,2*D),=T$ TO L$ STEP 2
: IF L$<>HEX(0000) THEN 370
: PRINT AT(G,H);R1$;
0400 RETURN CLEAR ALL
: ON A GOTO 140,150,160,170
0410 X$ = BIN(X)
: STR(X$,2)=BIN(Y)
: IF X$=T$ THEN GOSUB 490
0420 MAT SEARCH STR(A$(),,2*C),=X$ TO L$ STEP 2
: IF L$<>HEX(0000) THEN GOTO 740
: MAT SEARCH STR(B$(),,2*D),=X$ TO L$ STEP 2
: IF L$<>HEX(0000) THEN GOTO 740
0430 MAT COPY -STR(A$(),,2*C) TO -STR(A$(),,2*C+2)
: STR(A$(),,1) = BIN(X)
: STR(A$(),2,1)=BIN(Y)
0440 F2=0
: C7=0
: PRINT AT(X,Y);R2$;AT(VAL(STR(A$(),2*C+1,1)),VAL(STR(A$(),2*C+2,1)));V$;
: RETURN
0450 W$ = BIN(W)
: STR(W$,2)=BIN(Z)
: IF W$=T$ THEN GOSUB 500
0460 MAT SEARCH STR(B$(),,2*D),=W$ TO L$ STEP 2
: IF L$<>HEX(0000) THEN GOTO 640
: MAT SEARCH STR(A$(),,2*C),=W$ TO L$ STEP 2
: IF L$<>HEX(0000) THEN GOTO 640
0470 MAT COPY -STR(B$(),,2*D) TO -STR(B$(),,2*D+2)
: STR(B$(),,1) = BIN(W)
: STR(B$(),2,1)=BIN(Z)
0480 F1=0
: C3=0
: PRINT AT(W,Z);R3$;AT(VAL(STR(B$(),2*D+1,1)),VAL(STR(B$(),2*D+2,1)));V$;
: RETURN
0490 H=79
: T$=HEX(FFFF)
: K=INT(17*RND(1))
: F=F+5
: C=C+INT(K/4)+1
: RETURN
0500 H=79
: T$=HEX(FFFF)
: K=INT(17*RND(1))
: S=S+5
: D=D+INT(K/4)+1
: RETURN
0510 FOR J=1 TO J1
: $BREAK 255
: NEXT J
: PRINT HEX(0306);AT(0,0),"COMPUTER 1 TRAPPED ITSELF!"
: C5=C5+1
: F=F-20
: GOTO 530
0520 FOR J=1 TO J1
: $BREAK 255
: NEXT J
: PRINT HEX(0306);AT(0,0),"COMPUTER 2 TRAPPED ITSELF!"
: C6=C6+1
: S=S-20
0530 PRINT
: PRINT "COMPUTER 1 ";F;" COMPUTER 2 ";S;
: FOR J=1 TO J1
: $BREAK 255
: NEXT J
0540 GOTO 110
0550 DEFFN'31
: LOAD T"START"
0560 A1=0
: A2=23
: V$=HEX(2020)
: R1$=HEX(8B)
: R2$=HEX(58)
: R3$=HEX(4F)
: RETURN
0570 G=INT(21*RND(1))+1
: H=2*INT(39*RND(1))+1
: RETURN
0580 PRINT HEX(0306)
: FOR J=0 TO 23
: PRINT AT(J,79);HEX(86);
: NEXT J
: FOR J=79 TO 0 STEP -1
: PRINT AT(23,J);HEX(2D);
: NEXT J
: FOR J=23 TO 0 STEP -1
: PRINT AT(J,0);HEX(86);
: NEXT J
: FOR J=0 TO 79
: PRINT AT(0,J);HEX(2D);
: NEXT J
: RETURN
0590 KEYIN Q6$,590,590
0600 PRINT HEX(0208090F)
: Q8=0
: Q9=190
: Q6$,Q7$=" "
0610 KEYIN Q7$,620,620
: IF Q8>Q9 THEN 630
: Q8=Q8+1
: GOTO 610
0620 Q6$=Q6$&Q7$
: IF Q7$<>HEX(0D) THEN 610
0630 IF STR(Q6$,,8)=" *2236DE" THEN R$="DE"
: ELSE R$="D"
: RETURN
0640 REM RESTORE SNAKE
: ON B GOTO 650,660,670,680
0650 W=W+1
: GOSUB 720
: GOTO 690
0660 Z=Z+2
: GOSUB 720
: GOTO 690
0670 W=W-1
: GOSUB 720
: GOTO 690
0680 Z=Z-2
: GOSUB 720
0690 REM CHANGE DIRECTION RANDOMLY, FAVORING CENTRALIZATION
: F1=1
: C2=0
: IF B=1 OR B=3 THEN 710
0700 IF RND(1)<FNM((24-W)/24) THEN B=3
: ELSE B=1
: GOTO 290
0710 IF RND(1)<FNM((79-Z)/79) THEN B=4
: ELSE B=2
: GOTO 290
0720 W$=BIN(W)
: STR(W$,2)=BIN(Z)
: IF F1=1 THEN 730
: RETURN
0730 C3=C3+1
: IF C3=4 THEN 520
: B=MOD(B,4)+1
: GOTO 290
0740 REM RESTORE SNAKE
: ON A GOTO 750,760,770,780
0750 X=X+1
: GOSUB 820
: GOTO 790
0760 Y=Y+2
: GOSUB 820
: GOTO 790
0770 X=X-1
: GOSUB 820
: GOTO 790
0780 Y=Y-2
: GOSUB 820
0790 REM CHANGE DIRECTION RANDOMLY, FAVORING CENTRALIZATION
: F2=1
: C4=0
: IF A=1 OR A=3 THEN 810
0800 IF RND(1)<FNM((24-X)/24) THEN A=3
: ELSE A=1
: GOTO 400
0810 IF RND(1)<FNM((79-Y)/79) THEN A=4
: ELSE A=2
: GOTO 400
0820 X$=BIN(X)
: STR(X$,2)=BIN(Y)
: IF F2=1 THEN 830
: RETURN
0830 C7=C7+1
: IF C7=4 THEN 510
: A=MOD(A,4)+1
: GOTO 400