5 REM COPYRIGHT(C) 1983 ICONOGRAPHICS INC.,ALL RIGHTS RESERVED›10 N1=1:DIM A$(N1)›15 CLEAR=31700:GOSUB CLEAR:POKE 580,N1›20 GOTO 30000›200 REM ›210 XA=764:XB=255:YA=103›220 FOR JA=N1 TO YA STEP N3:S$=NT$(JA,JA+N2):GOSUB 500:IF PEEK(XA)=XB AND STRIG(N0) AND STRIG(N1) THEN NEXT JA›230 IF JA<=YA AND PEEK(XA)=XB THEN POKE 764,N0›240 SOUND N0,N0,N0,N0:RETURN ›300 REM ›310 FOR JA=N1 TO LEN(ST$) STEP N3:S$=ST$(JA,JA+N2):GOSUB 500:NEXT JA›320 SOUND N0,N0,N0,N0:RETURN ›500 D=N6*ASC(S$(N2)):C$(N1,N1)=S$(N1):L=VAL(S$(N3))/10›510 IF C$<>"X" THEN PI=ASC(P$(ASC(C$))):SOUND N0,PI,N14,N6:POKE 540,(N1-L)*D:SOUND N0,PI,N14,N6+N6›520 IF C$="X" THEN SOUND N0,N0,N0,N0:POKE 540,D:L=N0›530 IF PEEK(540) THEN 530›540 IF L=N0 THEN RETURN ›550 H=L*D:POKE 540,H:D=12/H›560 L=PEEK(540):SOUND N0,PI,N14,L*D:IF L<>N0 THEN 560›570 RETURN ›1000 REM ›1010 XA=N1:V3=-999999999›1030 FOR I=N1 TO N6:FOR J=N1 TO N6›1040 S7=S8(I,J):IF SGN(S7)=-T OR ABS(S7)>N2 THEN 1110›1050 IF T=N1 THEN ID=I8(I,J):I1=I8(I-N1,J):I2=I8(I,J-N1):I3=I8(I+N1,J):I4=I8(I,J+N1)›1055 IF T=-N1 THEN ID=J8(I,J):I1=J8(I-N1,J):I2=J8(I,J-N1):I3=J8(I+N1,J):I4=J8(I,J+N1)›1060 IF I1=N2 OR I2=N2 OR I3=N2 OR I4=N2 THEN GOSUB 6500›1070 IF T=N1 THEN V7=D1(ID)+A1(I1)+A1(I2)+A1(I3)+A1(I4)+P1(L8(I,J))›1080 IF T=-N1 THEN V7=D2(ID)+A2(I1)+A2(I2)+A2(I3)+A2(I4)+P2(L8(I,J))›1090 IF V7>V3 THEN X=I:Y=J:V3=V7›1100 IF V7=V3 THEN XA=XA+N1:IF RND(N0)<(N1/XA) THEN X=I:Y=J›1110 NEXT J:NEXT I›1120 RETURN ›1500 REM ›1520 D7=K:IF D7<=-N2 THEN D7=-N2›1530 IF D7>=N2 THEN D7=N2›1540 ID=N5*SGN(Z)+D7›1550 I8(U,V)=ID+N7:J8(U,V)=-ID+N7›1560 RETURN ›2000 REM ›2010 IF U>N6 OR UN6 OR VSGN(C) OR SGN(Z)<>SGN(K)) THEN GOSUB 9500›2080 IF Z OR SGN(K)=SGN(C) THEN RETURN ›2090 REM ›2100 IF C THEN GOSUB 9050›2110 IF K THEN GOSUB 9000›2120 RETURN ›2500 REM ›2510 S=S8(I,J):Z=S+Q:S8(I,J)=Z›2520 C=C8(I,J):K=C+Q:C8(I,J)=K›2530 U=I:V=J›2540 GOSUB 1500›2550 REM ›2560 IF S=N0 AND C THEN GOSUB 9050›2570 REM ›2580 IF Z THEN GOSUB 8300›2586 IF SW$="T" AND Z AND ((S AND SGN(S)<>SGN(C)) OR SGN(Z)<>SGN(K)) THEN GOSUB 9500›2590 REM ›2600 IF Z=N0 THEN GOSUB 8400:GOSUB 9000›2610 PN=2000›2620 U=I-N1:V=J:GOSUB PN›2630 U=I:V=J-N1:GOSUB PN›2640 U=I+N1:V=J:GOSUB PN›2650 U=I:V=J+N1:GOSUB PN›2660 RETURN ›3000 REM ›3010 IF S8(I,J)*C8(I,J)>=N0 THEN RETURN ›3020 X=I:Y=J:Q=-S8(I,J)›3030 GOSUB 2500›3040 GOSUB 3500›3050 RETURN ›3500 REM ›3510 P=P+N1:SX(P)=X:SY(P)=Y›3515 PN=3000›3520 I=X-N1:J=Y:GOSUB PN›3530 I=X:J=Y-N1:GOSUB PN›3540 I=X+N1:J=Y:GOSUB PN›3550 I=X:J=Y+N1:GOSUB PN›3560 I=X:J=Y:GOSUB PN›3570 P=P-N1:X=SX(P):Y=SY(P)›3580 RETURN ›4000 REM ›4010 I=X:J=Y:Q=T›4020 GOSUB 2500›4030 P=N0:SX(P)=X:SY(P)=Y›4040 GOSUB 3500›4050 RETURN ›4500 REM ›4510 GOSUB 8200›4520 XA=XX-N6-N6:XB=XX+N6+N6:YA=YY-N6-N6:YB=YY+N1›4530 PLOT XA,YB:DRAWTO XA,YA:DRAWTO XB,YA:DRAWTO XB,YB:DRAWTO XA,YB›4540 RETURN ›5000 REM ›5010 V3=N0:FOR I=N1 TO N6:FOR J=N1 TO N6:S=T*S8(I,J):IF SN2 THEN NEXT J:NEXT I:V3=-999999999:RETURN ›5020 POP :POP ›5030 GOSUB 5500›5040 IF S8(X,Y)*T=N3 THEN ? "ý";:GOTO 5030›5060 RETURN ›5500 REM ›5510 CL=764:POKE 702,N4*N16:POKE 694,N0›5520 JA=(-T+N1)/N2:IF P1$=P2$ THEN JA=N0›5530 BK=N1:U=X:V=Y:PN=4500›5540 COLOR DG:GOSUB PN›5550 IF T=N1 THEN COLOR WH:GOSUB PN›5560 IF T=-N1 THEN COLOR BL:GOSUB PN›5570 C=PEEK(CL):IF C<>255 THEN 5700›5580 IF STRIG(JA)=N0 THEN 5690›5590 I1=STICK(JA)-N5›5600 IF I1=N5+N5 AND BK<>N1 THEN 5570›5610 IF I1=N5+N5 THEN 5540›5620 BK=N0:I=X+DX(I1):J=Y-DY(I1)›5625 POKE 77,N0›5630 POKE CL,N0:GET #N2,C›5640 IF IN6 OR JN6 THEN 5540›5650 COLOR DG:GOSUB PN›5660 U=I:V=J:X=I:Y=J›5670 GOTO 5550›5690 COLOR DG:GOSUB PN:RETURN ›5700 REM ›5710 IF C=N30+N30 OR C=N23+N16 THEN 5580›5720 GET #N2,C›5730 C$=CHR$(C):BK=N0:I=X:J=Y›5740 IF C$="" OR C$="+" THEN I=I-N1›5750 IF C$="" OR C$="*" THEN I=I+N1›5760 IF C$="" OR C$="-" THEN J=J+N1›5770 IF C$="" OR C$="=" THEN J=J-N1›5780 IF I<>X OR J<>Y THEN 5640›5790 IF C$=" " OR C=155 THEN 5690›5800 IF C$="" THEN POP :POP :POP :RETURN ›5810 IF C$="S" THEN U=X:V=Y:GOSUB 1000:COLOR DG:GOSUB PN:GOTO 5530›5820 GOTO 5570›6000 REM ›6110 REM ›6120 I=L8(X,Y):HP(I)=HP(I)+T›6130 IF T=N1 THEN ID=I8(X,Y):I1=I8(X-N1,Y):I2=I8(X,Y-N1):I3=I8(X+N1,Y):I4=I8(X,Y+N1)›6140 IF T=-N1 THEN ID=J8(X,Y):I1=J8(X-N1,Y):I2=J8(X,Y-N1):I3=J8(X+N1,Y):I4=J8(X,Y+N1)›6150 IF I1=N2 OR I2=N2 OR I3=N2 OR I4=N2 THEN I=X:J=Y:GOSUB 6500›6160 HD(ID)=HD(ID)+T›6170 HA(I1)=HA(I1)+T:HA(I2)=HA(I2)+T›6180 HA(I3)=HA(I3)+T:HA(I4)=HA(I4)+T›6190 RETURN ›6500 REM ›6510 D7=C8(I,J)›6520 IF I1=N2 THEN D7=D7-S8(I-N1,J)›6530 IF I2=N2 THEN D7=D7-S8(I,J-N1)›6540 IF I3=N2 THEN D7=D7-S8(I+N1,J)›6550 IF I4=N2 THEN D7=D7-S8(I,J+N1)›6560 IF D7<=-N2 THEN D7=-N2›6570 IF D7>=N2 THEN D7=N2›6580 D7=N5*SGN(S8(I,J))+D7›6610 RETURN ›7000 REM ›7020 CL=656:POKE CL,N2›7030 POKE CL+N1,N23+N5:? ;VW;" ";›7040 POKE CL+N1,N30+N5:? ;VB;" ";›7050 POKE CL,N1:POKE CL+N1,N7›7055 IF T THEN ? L9;" of ";LN›7060 IF T=N1 THEN ? MW$›7070 IF T=-N1 THEN ? MB$›7080 IF T THEN RETURN ›7100 REM ›7170 YA=N5+N5:IF VW>VB THEN YA=LEN(NW$)›7175 IF VWVB THEN ? NW$;" WINS ";VW;" to ";VB›7200 IF VWT THEN V9=N5/(V9+T)›7540 E9=N0›7550 FOR I=N0 TO N14:E9=E9+HA(I)*HA(I)+HD(I)*HD(I):NEXT I›7560 FOR I=N0 TO N5:E9=E9+HP(I)*HP(I):NEXT I›7570 E9=V9/E9›7580 FOR I=N0 TO N14:A0(I)=A0(I)+E9*HA(I):D0(I)=D0(I)+E9*HD(I):NEXT I›7590 FOR I=N0 TO N5:P0(I)=P0(I)+E9*HP(I):NEXT I›7600 GOSUB 20300›7610 RETURN ›8000 REM ›8010 XA=41:A$(XA)="ÿ":A$(3119)=A$(XA):A$(XA+N1)=A$(XA)›8020 COLOR DG›8030 XX=159:YY=79:FOR I=N0 TO N7:PLOT I,N0:DRAWTO I,YY:PLOT XX-I,N0:DRAWTO XX-I,YY:NEXT I›8040 PLOT N7+N1,N0:DRAWTO N7+N1,YY›8050 XX=YY+N1:YY=N7+N6:YA=N0:V=151:FOR I=N0 TO N5›8060 PLOT N4+N5,YA:DRAWTO V,YA›8070 PLOT XX,YA:DRAWTO XX,YA+YY›8080 FOR J=N1 TO N2:U=J*N4*N6:PLOT XX-U,YA:DRAWTO XX-U,YA+YY:PLOT XX+U,YA:DRAWTO XX+U,YA+YY:NEXT J›8085 YA=YA+YY:NEXT I›8090 PLOT N5+N4,YA:DRAWTO V,YA›8095 RETURN ›8100 VW=N0:VB=N0›8115 X=N3:Y=N3›8117 POKE 755,N0›8120 POKE 656,N1:POKE 657,N2:? ;"œœœTURN";›8140 POKE 657,N23+N3:? ;"WHITE BLACK";›8150 RETURN ›8200 REM ›8210 XX=-N4+24*U:YY=90-13*V›8220 RETURN ›8300 REM ›8310 REM ›8320 IF Z>=N1 THEN COLOR WH:ST$="03"›8330 IF Z<=-N1 THEN COLOR BL:ST$="30"›8335 GOSUB 300›8340 IF Z=N1 THEN VW=VW+N1›8350 IF Z=-N1 THEN VB=VB+N1›8360 U=I:V=J:GOSUB 8200›8370 ON ABS(Z) GOSUB 8500,8700,8800›8390 RETURN ›8400 REM ›8410 ST$="00":GOSUB 300›8420 IF S>=N1 THEN VW=VW-N1›8430 IF S<=-N1 THEN VB=VB-N1›8440 COLOR LG›8450 U=I:V=J:GOSUB 8200›8455 IF ABS(S)=N3 THEN GOSUB 8800›8460 IF ABS(S)>=N2 THEN GOSUB 8700›8465 GOSUB 9550:GOSUB 8500›8470 ST$="0X000":GOSUB 300›8480 RETURN ›8500 REM ›8520 REM ›8525 XA=XX-N4-N4:XB=XX+N4+N4›8530 PLOT XA,YY:DRAWTO XX-N2,YY›8540 PLOT XB,YY:DRAWTO XX+N2,YY›8550 PLOT XA,YY-N1:DRAWTO XX-N2,YY-N1›8560 PLOT XB,YY-N1:DRAWTO XX+N2,YY-N1›8570 PLOT XA,YY-N2:DRAWTO XB,YY-N2›8573 PLOT XA,YY-N3:DRAWTO XX-N6,YY-N3›8576 PLOT XB,YY-N3:DRAWTO XX+N6,YY-N3›8580 PLOT XA,YY-N4:PLOT XX-N6,YY-N4›8590 PLOT XB,YY-N4:PLOT XX+N6,YY-N4›8600 PLOT XX-N4,YY-N3:PLOT XX-N2,YY-N3:PLOT XX,YY-N3:PLOT XX+N2,YY-N3:PLOT XX+N4,YY-N3›8610 PLOT XX-N5-N4,YY-N5:DRAWTO XX-N5,YY-N5›8620 PLOT XX+N5+N4,YY-N5:DRAWTO XX+N5,YY-N5›8630 PLOT XA,YY-N6:DRAWTO XX-N6,YY-N6›8640 PLOT XB,YY-N6:DRAWTO XX+N6,YY-N6›8650 PLOT XX-N7,YY-N7:PLOT XX+N7,YY-N7›8660 RETURN ›8700 REM ›8705 YA=YY-N4-N4:YB=YY-N3-N4›8710 PLOT XX-N2,YY-N3:DRAWTO XX-N2,YA›8720 PLOT XX+N2,YY-N3:DRAWTO XX+N2,YA›8730 PLOT XX-N1,YY-N3:DRAWTO XX-N1,YY-N5›8740 PLOT XX+N1,YY-N3:DRAWTO XX+N1,YY-N5›8760 PLOT XX,YY-N5:DRAWTO XX,YA›8765 DRAWTO XX-N1,YB:DRAWTO XX+N1,YB›8770 RETURN ›8800 REM ›8805 YA=YY-N4-N4:YB=YY-N5-N5›8810 PLOT XX-N3,YA:DRAWTO XX+N3,YA›8820 PLOT XX-N2,YA-N1:DRAWTO XX+N2,YA-N1›8830 PLOT XX-N1,YB:DRAWTO XX+N1,YB›8840 PLOT XX,YB-N1›8845 PLOT XX-N1,YA+N2:DRAWTO XX+N1,YA+N2›8850 COLOR LG›8860 PLOT XX-N1,YA+N1:PLOT XX+N1,YA+N1›8880 RETURN ›9000 REM ›9010 IF K>=N1 THEN COLOR WH:VW=VW+N1›9020 IF K<=-N1 THEN COLOR BL:VB=VB+N1›9030 GOSUB 9100›9040 RETURN ›9050 REM ›9053 IF C>=N1 THEN VW=VW-N1›9056 IF C<=-N1 THEN VB=VB-N1›9060 COLOR LG›9070 GOSUB 9100›9080 RETURN ›9100 REM ›9110 GOSUB 8200›9120 REM ›9130 PLOT XX,YY:DRAWTO XX,YY-N6›9140 PLOT XX+N1,YY-N5:DRAWTO XX+N2,YY-N5›9150 PLOT XX+N2,YY-N4:DRAWTO XX+N4,YY-N4›9160 RETURN ›9500 REM ›9510 GOSUB 8200›9520 IF SGN(Z)=N1 THEN COLOR WH›9530 IF SGN(Z)=-N1 THEN COLOR BL›9540 IF SGN(K)=SGN(Z) THEN COLOR LG›9550 PLOT XX-N1,YY:DRAWTO XX+N1,YY›9560 PLOT XX-N1,YY-N1:DRAWTO XX+N1,YY-N1›9570 RETURN ›11000 REM ›11010 NM$=STR$(I):S$=" ":S$(N3)=NM$›11020 S$=S$(N3-Z+LEN(NM$)):? S$;›11030 RETURN ›11100 REM ›11110 XA=N23+N4:XB=N23+N5:YA=N23+N6›11120 I1=ASC(H$(XA,XA)):I3=ASC(H$(XB,XB)):I4=ASC(H$(YA,YA)):I2=I4-I1-I3›11130 Z=N2:ID=11000›11140 I=I1:GOSUB ID:? "";›11150 I=I2:GOSUB ID:? "";›11160 I=I3:GOSUB ID:? "";›11170 I=I4:GOSUB ID›11180 RETURN ›11200 REM ›11210 POKE 752,N1›11220 ? ;"ÿþ";›11230 J=N7+N2:POSITION RM(MU),CM(MU)›11240 GET #N6,I:IF (J=N30+N2 OR J=160) AND (I=N30+N2 OR I=160) THEN 11270›11250 ? ;"";:PUT #N6,I+128›11260 J=I:IF PEEK(85)N1 THEN ? ;"~";:I=I-N1:S$(I)=""›12573 IF CL>=N3 AND I>N1 THEN RETURN ›12575 IF CL>=N3 AND S$="" THEN 12540›12580 IF C=155 THEN RETURN ›12590 IF CH$="" THEN S$="":RETURN ›12600 GOTO 12540›12700 IF ((C>=65 AND C<=90) OR (((C>=48 AND C<=57) OR C=32) AND I>N1)) AND I<=20 THEN PUT #N6,C:S$(I)=CH$:I=I+N1›12710 RETURN ›12720 IF C>=N3*N16 AND C<=57 AND I<=N2 THEN PUT #N6,C:S$(I)=CH$:I=I+N1›12730 RETURN ›12740 IF (CH$="Y" OR CH$="N") AND I<=N1 THEN PUT #N6,C:S$(I)=CH$:I=I+N1›12750 RETURN ›12760 IF (CH$="H" OR CH$="C") AND I<=N1 THEN PUT #N6,C:S$(I)=CH$:I=I+N1›12770 RETURN ›12900 REM ›12910 POKE 702,N4*N16:POKE 694,N0›12920 C=PEEK(764):IF C<>255 AND C<>N30+N30 AND C<>N23+N16 THEN GET #N2,C›12930 POKE 702,64:POKE 694,N0›12940 C=PEEK(764):IF C<>255 AND C<>N30+N30 AND C<>39 THEN GET #N2,C:CH$=CHR$(C):RETURN ›12950 IF STRIG(N0)=N0 OR STRIG(N1)=N0 THEN POKE 764,N0:GET #N2,C:CH$=CHR$(C):RETURN ›12960 GOTO 12940›14000 REM ›14010 S=PEEK(142)+N16*N16*PEEK(143)›14020 DEEP=-N2:GOSUB 14050›14030 RETURN ›14040 REM ›14050 DEEP=DEEP+N1›14060 IF PEEK(S)<>N0 THEN S=S+N14+N2:GOTO 14050›14070 YY=PEEK(S+N1)+N16*N16*PEEK(S+N2)›14080 S=S+N4:IF YY=14020 THEN RETURN ›14090 GOTO 14050›14500 REM ›14510 DATA 5,4,3,3,4,5›14520 DATA 4,2,1,1,2,4›14530 DATA 3,1,0,0,1,3›14540 DATA 3,1,0,0,1,3›14550 DATA 4,2,1,1,2,4›14560 DATA 5,4,3,3,4,5›14570 REM ›14580 DATA 1,1, 1,-1, 1,0, 9,9, -1,1›14590 DATA -1,-1,-1,0, 9,9, 0,1, 0,-1›14600 REM ›14610 DATA 2,11, 2,13, 2,15, 2,17, 21,11, 21,13, 21,15, 21,17›14810 DATA 0X000X000333033303330X300X00033 300X00X0›14820 DATA 0 0X00X000X000333033303330X000X00033 30X0›14830 DATA 00X00 0X30X000X0030X30X000X0030X3X3X300X000X000›14840 DATA X000X003 030300330X3 3 0303030303330333›14850 DATA 0X000X00033 3X000X00X00 0X3›15000 REM ›15010 S$=" ":S$(N23)=S$:S$(N2)=S$:S$(N1,LEN(NP$))=NP$›15020 OPEN #N1,N4,N0,RO$›15030 INPUT #N1;R$:Z=VAL(R$)›15040 IF Z<>N0 THEN FOR X=N1 TO Z:INPUT #N1;R$:IF R$<>S$ THEN NEXT X›15050 CLOSE #N1›15060 IF Z=N0 OR X=Z+N1 THEN X=-N1›15070 RETURN ›15100 REM ›15120 GOSUB 15000›15130 IF X<>-N1 THEN RETURN ›15140 IF Z=50 THEN EF=222:GOTO 32020›15150 XIO N30+N6,#N1,N0,N0,RO$›15160 OPEN #N1,N14-N2,N0,RO$›15170 R$=B10$:R$(N1,LEN(STR$(Z+N1)))=STR$(Z+N1)›15180 ? #N1;R$›15190 IF Z<>N0 THEN FOR I=N1 TO Z:INPUT #N1;R$:NEXT I›15200 ? #N1;S$›15250 CLOSE #N1›15260 XIO N30+N5,#N1,N0,N0,RO$›15280 RETURN ›15300 REM ›15320 OPEN #N1,N4,N0,RO$›15330 INPUT #N1;R$:Z=VAL(R$)›15335 IF Z=N0 THEN CLOSE #N1:RETURN ›15340 J=N1:FOR X=N1 TO Z:INPUT #N1;R$:A$(J,J+N23-N1)=R$:J=J+N23:NEXT X:CLOSE #N1›15350 A$(J)="":RETURN ›15500 REM ›15510 S$=" ":S$(N23)=S$:S$(N2)=S$:S$(N1,LEN(NP$))=NP$›15520 GOSUB 15300›15535 IF Z=N0 THEN X=-N1:RETURN ›15550 J=N1:FOR X=N1 TO Z:IF A$(J,J+N23-N1)<>S$ THEN J=J+N23:NEXT X›15560 IF X=Z+N1 THEN X=-N1:RETURN ›15580 Z=Z-N1:IF LEN(A$)>J+N23 THEN A$(J)=A$(J+N23)›15600 XIO N30+N6,#N1,N0,N0,RO$›15610 OPEN #N1,N14-N2,N0,RO$›15620 R$=B10$:R$(N1,LEN(STR$(Z)))=STR$(Z)›15630 ? #N1;R$›15640 J=N1:IF Z<>N0 THEN FOR I=N1 TO Z:? #N1;A$(J,J+N23-N1):J=J+N23:NEXT I›15650 CLOSE #1›15660 XIO N30+N5,#N1,N0,N0,RO$›15670 RETURN ›16000 REM ›16010 I=20500:J=20300›16020 IF WP=N1 AND BP=N0 THEN PN=N2:GOSUB I:PN=N1:GOSUB J›16030 IF (WP=N0 AND BP=N1) OR P1$=P2$ THEN PN=N1:GOSUB I:PN=N2:GOSUB J›16040 REM ›16045 GOSUB 8100›16050 FOR I=N0 TO N7:FOR J=N0 TO N7:S8(I,J)=N0:C8(I,J)=N0:NEXT J:NEXT I›16060 T=FM:L9=N1:GOSUB 7000›16063 XA=N5+N5›16065 FOR I=N1 TO N6:FOR J=N1 TO N6:I8(I,J)=N7:J8(I,J)=N7:NEXT J:NEXT I›16070 FOR I=0 TO N7:I8(I,N0)=XA:J8(I,N0)=XA:I8(I,N7)=XA:J8(I,N7)=XA:NEXT I›16080 FOR I=0 TO N7:I8(N0,I)=XA:J8(N0,I)=XA:I8(N7,I)=XA:J8(N7,I)=XA:NEXT I›16100 FOR I=N0 TO N14:HA(I)=N0:HD(I)=N0:NEXT I›16110 FOR I=N0 TO N5:HP(I)=N0:NEXT I›16120 REM ›16130 GOSUB 8000›16200 REM ›16210 FOR L9=N1 TO LN›16220 T=FM:GOSUB 16500›16230 T=-FM:GOSUB 16500›16240 NEXT L9›16250 REM ›16260 T=N0:GOSUB 7000›16300 REM ›16310 IF WP=N0 THEN T=N1:PN=N1:F$=P1$:GOSUB 7500›16320 IF BP=N0 AND P1$<>P2$ THEN T=-N1:PN=N2:F$=P2$:GOSUB 7500›16400 FM=-FM›16490 RETURN ›16500 REM ›16510 POKE 77,N0›16520 C=PEEK(764):IF C<>255 AND C<>N30+N30 AND C<>N23+N16 THEN GET #N2,C:IF CHR$(C)="" THEN POP :POP :RETURN ›16530 GOSUB 7000›16540 CL=WP:IF T=-N1 THEN CL=BP›16543 IF L9=LN AND T=-FM THEN GOSUB 16700›16550 IF CL=N0 THEN GOSUB 1000›16560 IF CL=N1 THEN GOSUB 5000›16563 IF L9=LN AND T=-FM THEN E9=-E9:GOSUB 16900›16565 IF V3=-999999999 THEN RETURN ›16570 GOSUB 6000›16580 GOSUB 4000›16590 RETURN ›16700 REM ›16710 IF T=N1 THEN E9=A1(N2):GOTO 16900›16720 IF T=-N1 THEN E9=A2(N2):GOTO 16900›16730 REM ›16900 REM ›16910 IF T=N1 THEN A1(N2)=A1(N2)+E9:A1(N6)=A1(N6)+E9/N4:A1(N7)=A1(N7)+E9/N4:D1(N6)=D1(N6)+E9:D1(N7)=D1(N7)+E9/N2›16920 IF T=-N1 THEN A2(N2)=A2(N2)+E9:A2(N6)=A2(N6)+E9/N4:A2(N7)=A2(N7)+E9/N4:D2(N6)=D2(N6)+E9:D2(N7)=D2(N7)+E9/N2›16930 RETURN ›17000 REM ›17010 MW$=B27$:MW$(N1,LEN(NW$))=NW$›17015 MB$=B27$:MB$(N1,LEN(NB$))=NB$›17020 WP=N1:IF P1$(N3,N3)="C" THEN WP=N0›17030 BP=N1:IF P2$(N3,N3)="C" THEN BP=N0›17040 FM=N1›17050 GRAPHICS N7›17055 I=PEEK(N16):IF I>127 THEN I=I-128:POKE N16,I:POKE 53774,I›17060 SETCOLOR N2,N14-N1,N6›17070 SETCOLOR N4,N14-N1,N4›17080 SETCOLOR N1,N0,N14+N1›17090 SETCOLOR N0,N0,N0›17150 GMS=N0:WW=N0:WB=N0›17200 REM ›17210 GOSUB 16000›17215 IF L9<=LN THEN ? "œœGAME TERMINATED"›17220 IF L9>LN THEN GOSUB 17500›17225 IF GMS=15 THEN ? "œEND OF TOURNAMENT [ANY]-FOR REPORT";:GOSUB 200:GOSUB 12930:GOTO 17300›17230 ? "œ [ESC]-END SERIES [OTHER]-NEW GAME";:GOSUB 200:GOSUB 12930›17240 IF CH$="" THEN 17300›17250 GOTO 17200›17300 REM ›17310 H$(N23+N1,N23+N1)=CHR$(LN):H$(N23+N6,N23+N6)=CHR$(GMS)›17320 H$(N23+N4,N23+N4)=CHR$(WW):H$(N23+N5,N23+N5)=CHR$(WB)›17330 H$(N23+N7,N23+N7)=SW$›17350 F$=P2$:PN=N2:GOSUB 20500›17440 RETURN ›17500 REM ›17510 GMS=GMS+N1›17520 IF VW>VB THEN WW=WW+N1›17530 IF VW=N7 THEN 18700›18525 IF X>LEN(S$) THEN 18600›18530 FOR I=X TO LEN(S$):IF S$(I,I)=" " THEN X=I+N1:GOTO 18550›18540 NEXT I›18550 F$(LEN(F$)+N1)=S$(X,X):X=X+N1›18560 GOTO 18520›18600 REM ›18610 J=J+N1:X=N0:FOR I=N1 TO J›18620 X=X+N1:IF S$(X,X)=" " THEN X=X+N1›18630 IF X>=LEN(S$) THEN 18700›18640 NEXT I›18650 F$(J)=S$(X,X):X=X+N1:GOTO 18520›18700 REM ›18710 S$=F$:F$(N4)=S$:F$(N1,N2)="D:"›18720 I=LEN(NP$)-N1:F$(N3,N3)=NP$(I,I)›18730 F$(LEN(F$)+N1)=".FE"›18740 RETURN ›19000 REM ›19040 F$(LEN(F$)-N2)=".FI"›19050 XIO N30+N6,#N1,N0,N0,F$›19060 OPEN #N1,N6+N6,N0,F$›19070 POSITION N2,N23-N1:? "UPDATING STRATEGY TABLES ";›19080 ? #N1;G0›19090 FOR I=N0 TO N14:? #N1;A0(I):NEXT I›19100 FOR I=N0 TO N14:? #N1;D0(I):NEXT I›19110 FOR I=N0 TO N5:? #N1;P0(I):NEXT I›19120 REM ›19130 XIO N30+N5,#N1,N0,N0,F$›19140 CLOSE #N1›19150 ? "œ";›19160 RETURN ›20000 REM ›20030 F$(LEN(F$)-N2)=".FI"›20040 OPEN #N1,N4,N0,F$›20050 REM ›20060 IF MU<>-N1 THEN POSITION N2,N23-N1:? "READING STRATEGY TABLES ";›20070 INPUT #N1;G0›20080 FOR I=N0 TO N14:INPUT #N1;J:A0(I)=J:NEXT I›20090 FOR I=N0 TO N14:INPUT #N1;J:D0(I)=J:NEXT I›20100 FOR I=N0 TO N5:INPUT #N1;J:P0(I)=J:NEXT I›20110 REM ›20120 CLOSE #N1›20130 IF MU<>-N1 THEN ? "œ";›20140 RETURN ›20300 REM ›20310 ON PN GOTO 20330,20400›20320 REM ›20330 FOR I=N0 TO N14:A1(I)=A0(I):D1(I)=D0(I):NEXT I›20340 FOR I=N0 TO N5:P1(I)=P0(I):NEXT I:G1=G0›20390 RETURN ›20400 FOR I=N0 TO N14:A2(I)=A0(I):D2(I)=D0(I):NEXT I›20410 FOR I=N0 TO N5:P2(I)=P0(I):NEXT I:G2=G0›20420 RETURN ›20500 REM ›20510 ON PN GOTO 20530,20600›20520 REM ›20530 FOR I=N0 TO N14:A0(I)=A1(I):D0(I)=D1(I):NEXT I›20540 FOR I=N0 TO N5:P0(I)=P1(I):NEXT I:G0=G1›20590 RETURN ›20600 FOR I=N0 TO N14:A0(I)=A2(I):D0(I)=D2(I):NEXT I›20610 FOR I=N0 TO N5:P0(I)=P2(I):NEXT I:G0=G2›20620 RETURN ›20700 REM ›20710 FOR I=N0 TO N14:A0(I)=N0:D0(I)=N0:NEXT I›20720 FOR I=N0 TO N5:P0(I)=N0:NEXT I:G0=N0›20730 A$=" ":A$(2053)=A$:A$(N2)=A$›20740 A$(N23+N1,N23+N1)="0"›20750 A$(N30+N4,N30+N4)="0"›20760 RETURN ›21100 REM ›21110 F$(LEN(F$)-N2)=".FE"›21113 A$(N1,N1)=" ":A$(N2,N23)=A$›21116 A$(N1,LEN(NP$))=NP$:K=N2›21120 OPEN #N1,N7+N1,N0,F$:K=N3›21130 ? #N1;A$(N1,N23):? #N1;A$(N23+N1,N30+N3):? #N1;A$(N30+N4,43)›21140 J=N30+N14:FOR I=N1 TO N30:? #N1;A$(J,J+66):J=J+67:NEXT I›21150 CLOSE #N1›21160 XIO N30+N5,#N1,N0,N0,F$›21170 RETURN ›21200 REM ›21205 A$=" ":A$(2053)=A$:A$(N2)=A$›21210 F$(LEN(F$)-N2)=".FE"›21220 OPEN #N1,N4,N0,F$›21225 POSITION N2,N23-N1:? "READING HISTORY ";›21230 INPUT #N1;R$:A$(N1)=R$›21240 INPUT #N1;R$:A$(N23+N1)=R$›21250 INPUT #N1;R$:A$(N30+N4)=R$›21260 J=N30+N14:FOR I=N1 TO N30:INPUT #N1;H$:A$(J)=H$:J=J+67:NEXT I›21270 CLOSE #N1›21280 ? "œ";›21290 RETURN ›21300 REM ›21310 A$=" ":A$(43)=" ":A$(N2)=A$›21330 F$(LEN(F$)-N2)=".FE"›21340 OPEN #N1,N4,N0,F$›21345 POSITION N2,N23-N1:? "UPDATING HISTORY ";›21350 INPUT #N1;S$:INPUT #N1;R$:T=VAL(R$):INPUT #N1;R$:G=VAL(R$)›21360 CLOSE #N1›21370 T=T+N1:G=G+GMS:IF H=N1 THEN ST$=STR$(G-GMS)›21375 S$=B10$:S$(N1,LEN(ST$))=ST$:H$(N30+N1,N30+N7)=S$(N1,N7)›21380 S$=STR$(T):A$(N23+N1,N23+N1+LEN(S$))=S$›21390 S$=STR$(G):A$(N30+N4,N30+N4+LEN(S$))=S$›21400 XIO N30+N6,#N1,N0,N0,F$›21410 OPEN #N1,N14-N2,N0,F$›21420 INPUT #N1,S$:? #N1;A$(N23+N1,N30+N3):? #N1;A$(N30+N4,43)›21430 T=T-INT(T/N30)*N30›21440 IF T<>N0 THEN FOR I=N1 TO T:INPUT #N1;A$:NEXT I›21445 IF LEN(H$)<67 THEN FOR I=LEN(H$)+N1 TO 67:H$(I)=" ":NEXT I›21450 ? #N1;H$›21460 CLOSE #N1›21470 XIO N30+N5,#N1,N0,N0,F$›21480 ? "œ";›21490 RETURN ›22000 REM ›22010 GOSUB 20700›22040 REM ›22045 POSITION N2,N23-N1:? "CREATING PLAYER ";›22050 GOSUB 21100›22055 IF F$(N3,N3)="H" THEN RETURN ›22060 F$(LEN(F$)-N2)=".FI"›22070 OPEN #N1,N7+N1,N0,F$:K=N5›22080 FOR I=N1 TO N30+N7:? #N1;N0:NEXT I›22090 ? #N1;A$(74,499)›22100 CLOSE #N1:K=N0›22110 XIO N30+N5,#N1,N0,N0,F$›22120 ? "œ";›22130 RETURN ›23000 REM ›23010 GOSUB CLEAR›23015 ? ""›23020 ? "| FORTRESS |"›23025 ? ""›23030 ? " A Game of Strategic Deployment"›23040 ? " and Fortification"›23050 ? " by: JIM TEMPLEMANandPATTY DENBROOK"›23052 ? " Published by"›23054 ? "STRATEGIC SIMULATIONS INC"›23060 ? "Copyright (c) 1983 Iconographics Inc"›23070 RETURN ›23500 REM ›23510 POSITION N2,N14+N6:? "Enter":? "Your Name: ";›23520 FOR JA=N1 TO LEN(NT$) STEP N3:S$=NT$(JA,JA+N2):GOSUB 500:IF PEEK(764)=255 THEN NEXT JA›23530 IF JA>LEN(NT$) THEN 23520›23540 SOUND N0,N0,N0,N0›23550 CL=N1:GOSUB TOKEN:IF S$="" THEN 23500›23560 ? " ";:NP$=S$:S$="H"›23570 GOSUB 18300›23580 GOSUB 18500›23590 NW$=NP$:P1$=F$›23600 RETURN ›24000 REM ›24010 GOSUB 17000›24020 IF GMS=N0 THEN POP :GOTO MENU›24100 REM ›24110 GOSUB CLEAR›24120 ? " TOURNAMENT RESULTS"›24130 ? :? WP$:? " ";NW$›24140 ? :? BP$:? " ";NB$›24150 ? "Game Length: ";LN›24160 ? "Siege Warning: ON";:IF SW$="F" THEN ? "FF";›24170 ? :? " White Victories"›24190 ? " Tie Games"›24210 ? " Black Victories "›24230 ? "œ Total Games"›24240 POSITION N23-N3,N14-N2:GOSUB 11100›24250 GOSUB 11500›24260 REM ›24270 PN=N1:NP$=NW$:F$=P1$:ST$=STR$(G1):GOSUB 24400:GOSUB 24600›24280 CH$=H$(XA,XA):H$(XA,XA)=H$(XB,XB):H$(XB,XB)=CH$›24290 IF NW$<>NB$ THEN PN=N2:NP$=NB$:F$=P2$:ST$=STR$(G2):GOSUB 24400:GOSUB 24600›24300 POSITION N3,N23:? "Hit Any Key to Return to Menu ";›24310 GOSUB KEYIN›24320 POP :GOTO MENU›24400 REM ›24410 POSITION N2,N14+N4:? B27$:? B27$:? B27$:? "For ";NP$›24420 H=N0:IF F$(N3,N3)="H" THEN H=N1:U=N0:GOTO 24500›24430 ? " Update Learning(Y/N)? ";›24440 CL=N3:GOSUB TOKEN›24450 XX=N23+N3:IF S$="N" THEN H$(XX,XX)="N":U=N0›24460 IF S$<>"N" THEN H$(XX,XX)="Y":U=N1›24500 REM ›24510 POSITION N4,N23-N3-H:? "Record History (Y/N)? ";›24520 CL=N3:GOSUB TOKEN›24530 V=N1:IF S$<>"Y" THEN V=N0:RETURN ›24540 R$=" ":R$(N23)=R$:R$(N2)=R$›24550 YB=N23+N2:IF PN=N1 THEN R$(N1,LEN(NB$))=NB$:H$(YB,YB)="W"›24560 IF PN=N2 THEN R$(N1,LEN(NW$))=NW$:H$(YB,YB)="B"›24570 H$(N23+N7,N23+N7)=SW$›24580 H$(N1,N23)=R$›24590 RETURN ›24600 REM ›24610 IF U=N0 AND V=N0 THEN RETURN ›24620 POSITION N2,N23-N1:? "Insert Disk- Proceed (Y/N)? ";›24630 CL=N3:GOSUB TOKEN:? "œ";:IF S$<>"Y" THEN RETURN ›24640 ER=24650:GOSUB DEPTH›24650 GOSUB 15100›24660 IF X=-N1 THEN GOSUB 22000›24670 IF U<>N1 THEN 24680›24672 IF PN=1 THEN G1=G1+GMS›24674 IF PN=2 THEN G2=G2+GMS›24676 GOSUB 20500:GOSUB 19000›24680 IF V=N1 THEN GOSUB 21300›24690 RETURN ›25000 REM ›25010 GOSUB CLEAR›25020 ? " FORTRESS"›25030 ? " A Game of Strategic Deployment"›25040 ? " and Fortification"›25050 ? :? "Copyright (c) 1983 Iconographics Inc"›25060 ? :? " ";WP$;NW$›25070 ? " ";BP$;NB$›25080 ? " GAME LENGTH: ";LN›25083 POSITION N23-N2,N14-N5:? "SIEGE WARNING:";:IF SW$="F" THEN ? "OFF"›25086 IF SW$="T" THEN ? "ON"›25090 ? :? "[1]BEGIN PLAY"›25100 POSITION RM(N5),CM(N5):? "[5]COPY PLAYER"›25110 ? :? "[2]CHANGE PLAYERS"›25115 POSITION RM(N6),CM(N6):? "[6]REMOVE PLAYER"›25120 ? :? "[3]PLAYER ROSTER"›25130 POSITION RM(N7),CM(N7):? "[7]SET GAME LENGTH"›25140 ? :? "[4]REPORT HISTORY"›25150 POSITION RM(N7+N1),CM(N7+N1):? "[8]WARN OF SIEGE"›25160 REM ›25170 POSITION N2,N14+N5:? ;"œœœœEnter Number of Menu Item ";›25180 GOSUB KEYIN+N30›25190 MU=C-48›25200 IF MUN7+N1 THEN 25180›25210 GOSUB 11200›25220 POSITION N2,N14+N5:? "œ"›25230 REM ›25240 ON MU GOSUB 24000,25500,26000,26500,27000,27500,28000,28500›25250 GOSUB 11200:GOTO 25160›25500 REM ›25510 TP$=WP$:PN=N1:EC=N0:GOSUB 25600›25520 IF EC=N0 THEN NW$=NP$:P1$=F$›25530 TP$=BP$:PN=N2:EC=N0:GOSUB 25600›25540 IF EC=N0 THEN NB$=NP$:P2$=F$›25550 RETURN ›25600 REM ›25610 GOSUB 12000›25620 IF S$="" THEN EC=N1:RETURN ›25640 IF F$(N3,N3)="H" THEN GOTO 25780›25670 ER=25690:GOSUB DEPTH›25690 GOSUB 15000›25700 IF X<>-N1 THEN 25750›25710 POSITION N3,N23-N1:? "ýNew Player (Y/N)? ";:CL=N3:GOSUB TOKEN:? "œ";›25720 IF S$="Y" THEN GOSUB 20700:GOTO 25760›25730 IF S$<>"Y" THEN EF=220:GOTO 32020›25750 GOSUB 20000›25760 GOSUB 20300›25770 REM ›25780 POSITION N16,N6+PN:? NP$;DL$;›25790 RETURN ›26000 REM ›26010 ER=26030:GOSUB DEPTH›26030 GOSUB 15300›26040 Y=N0:J=N1›26050 GOSUB CLEAR›26060 ? " PLAYER ROSTER"›26070 ? " -------------"›26100 REM ›26110 FOR I=N1 TO 20:Y=Y+N1›26120 IF Y>Z THEN 26200›26130 ? " ";A$(J,J+N23-N1):J=J+N23›26140 NEXT I›26150 POSITION N2,N23:? "[ESC]-Menu [OTHER]-Contine Roster ";›26160 GOSUB KEYIN›26170 IF CH$="" THEN POP :GOTO MENU›26190 GOTO 26050›26200 POSITION N3,N23:? "End of Roster - Any Key for Menu ";›26210 GOSUB KEYIN›26220 POP :GOTO MENU›26500 REM ›26510 TP$="PLAYER:"›26520 GOSUB 12000›26530 IF S$="" THEN RETURN ›26560 ER=26580:GOSUB DEPTH›26580 GOSUB 15000›26590 IF X=-N1 THEN EF=220:GOTO 32020›26610 GOSUB 21200›26620 T=VAL(A$(N23+N1,N30+N3)):X=T-INT(T/N30)*N30›26630 Y=X*67+N30+N14:H$=A$(Y,Y+66)›26635 H=N0:IF F$(N3,N3)="H" THEN H=N1›26640 IF H=N1 THEN G0=VAL(A$(N30+N4,43)):GOTO 26660›26645 ER=26650:GOSUB DEPTH›26650 GOSUB 20000›26660 GOSUB 26800›26670 IF T=N0 THEN POSITION N2,N23-N4:? "HIT ANY KEY FOR MENU ";:GOSUB KEYIN:POP :GOTO MENU›26680 WW=N1:WB=T:IF T>=N30 THEN WW=N0:WB=N30-N1›26690 XX=X:D7=T-X›26700 REM ›26710 POSITION N30+N7,N23:? " ";›26720 GOSUB KEYIN+N30›26730 IF CH$="" THEN POP :GOTO MENU›26740 IF CH$<>"B" AND CH$<>"F" THEN 26720›26750 IF CH$="B" THEN X=X-N1:IF XWB THEN X=WW›26770 T=X+D7:IF X>XX THEN T=T-N30›26780 Y=X*67+44:H$=A$(Y,Y+66)›26790 GOSUB 11300›26795 GOTO 26700›26800 REM ›26810 GOSUB CLEAR›26820 ? " History for ";NP$›26830 ? "Total Experience: ";G0;" games"›26835 IF T=N0 THEN ? "The Player has no Recorded History":RETURN ›26840 ? "Tournament Number"›26850 ? " Opponent:"›26860 ? " Game Length:"›26870 ? " Siege Warning:"›26875 ? " Prior Experience:"›26880 ? :IF H=N0 THEN ? " Learning Updated:";›26890 ? :? " Summary: VictoriesTiesDefeatsTotal"›26900 POSITION N2,N23›26910 ? "[ESC]-MENU [B]-BACK [F]-FOREWARD";›26920 GOSUB 11300›26930 RETURN ›27000 REM ›27010 TP$="Copy From:"›27020 GOSUB 12000›27030 IF S$<>"" THEN 27070›27040 GOSUB 20700›27050 TP$="New Player:"›27060 GOSUB 12000›27063 IF S$="" THEN RETURN ›27065 GOTO 27180›27070 ER=27090:GOSUB DEPTH›27090 GOSUB 15000›27100 IF X=-N1 THEN EF=220:GOTO 32020›27120 GOSUB 21200›27130 IF F$(N3,N3)="C" THEN GOSUB 20000›27140 POSITION N2,N23-N3:? " To: ";:CL=N1:GOSUB TOKEN:NP$=S$:S$=F$(N3,N3)›27150 IF NP$="" THEN RETURN ›27160 GOSUB 18300›27165 ? "œ To: ";NP$;" ";›27170 GOSUB 18500›27180 ER=27200:GOSUB DEPTH›27200 GOSUB 15000›27210 IF X=-N1 THEN 27250›27220 POSITION N2,N23-N1:? "ý Player Already Exists"›27230 ? " PERFORM COPY (Y/N)? ";:CL=N3:GOSUB TOKEN:? "œœ"›27240 IF S$="N" THEN RETURN ›27250 GOSUB 15100›27260 IF X=-N1 THEN GOSUB 22040›27270 IF X<>-N1 THEN XIO N30+N6,#N1,N0,N0,F$:GOSUB 21100›27280 IF F$(N3,N3)="H" THEN RETURN ›27290 GOSUB 19000›27300 RETURN ›27500 REM ›27510 TP$="PLAYER:"›27520 GOSUB 12000›27525 IF S$="" THEN RETURN ›27530 ER=27550:GOSUB DEPTH›27550 GOSUB 15500›27560 IF X=-N1 THEN EF=220:GOTO 32020›27570 POSITION N2,N23-N1:? "REMOVING PLAYER ";›27580 XA=N30+N3:F$(LEN(F$)-N2)=".FE"›27590 XIO XA+N3,#N1,N0,N0,F$›27600 XIO XA,#N1,N0,N0,F$›27610 IF F$(N3,N3)="H" THEN RETURN ›27620 F$(LEN(F$)-N2)=".FI"›27630 XIO XA+N3,#N1,N0,N0,F$›27640 XIO XA,#N1,N0,N0,F$›27650 ? "œ";›27660 RETURN ›28000 REM ›28010 POSITION N2,N14+N5:? "Enter":? "Game Length (Standard=21): þþþ";›28020 CL=N2:GOSUB TOKEN›28030 IF S$="" THEN RETURN ›28040 X=VAL(S$):IF X=N0 THEN X=N23-N2›28050 IF X>54 THEN ? "œThe Maximum Game Length is 54";:GOTO 28000›28060 POSITION N14+N3,N7+N2:? ;X;" ";›28070 LN=X:RETURN ›28500 REM ›28510 POSITION N5*N7,N14-N5›28520 IF SW$="T" THEN ? "OFF";:S$="F"›28530 IF SW$="F" THEN ? "ON ";:S$="T"›28540 SW$=S$:RETURN ›30000 REM ›30005 N0=N1-N1:N2=N1+N1:N3=N2+N1:N4=N2+N2:N5=N3+N2:N6=N3+N3:N7=N4+N3:N14=N7+N7:N16=N14+N2:N23=N16+N7:N30=N23+N7›30007 TRAP 32500›30010 DIM A0(N14),D0(N14),P0(N5)›30020 DIM A1(N14),D1(N14),P1(N5)›30030 DIM A2(N14),D2(N14),P2(N5)›30040 DIM HA(N14),HD(N14),HP(N5)›30050 DIM I8(N7,N7),J8(N7,N7)›30060 DIM S8(N7,N7),C8(N7,N7),L8(N6,N6)›30070 DIM SX(N14+N4),SY(N14+N4),DX(N5+N4),DY(N5+N4)›30080 DIM MW$(N23),MB$(N23),C$(N3)›30090 DIM P$(N5+N4):P$="€rl`UQG@"›30100 DIM F$(N14),NW$(N23),NB$(N23),CH$(N1),H$(67),P1$(N14),P2$(N14),B27$(27),S$(N23),ST$(N23),NT$(456),SW$(N1)›30110 DIM WP$(N14),BP$(N14),TP$(N14),RO$(N14),NM$(N3)›30120 DIM R$(N23),NP$(N23)›30130 DIM RM(N7+N1),CM(N7+N1),DL$(N23-N3),B10$(N7+N3)›30200 REM ›30205 U=134:V=N16*N16›30210 YY=PEEK(U)+PEEK(U+N1)*V›30220 YA=PEEK(U+N6)+PEEK(U+N7)*V›30230 GRAPHICS N7:SETCOLOR N4,N5+N4,N4›30235 I=PEEK(N16):IF I>127 THEN I=I-128:POKE N16,I:POKE 53774,I›30240 YB=PEEK(88)+PEEK(89)*V›30260 GOSUB CLEAR›30265 ? " ARMING FORTRESS: PLEASE STAND BY ";›30270 Y=YB-YA:XB=INT(Y/V):XA=Y-XB*V›30280 POKE YY+N2,XA:POKE YY+N3,XB›30290 POKE YY+N6,N30+N2:POKE YY+N7,N14-N1›30310 TOKEN=12500:DEPTH=14000:KEYIN=12900:MENU=25000›30320 RO$="D:ROSTER.FO":WP$="WHITE PLAYER:":BP$="BLACK PLAYER:"›30340 NB$="COUNT VAUBAN(C)"›30350 DL$="þþþþþþþþþþþþþþþþþþþþ":B10$="0 "›30400 REM ›30410 OPEN #N2,N4,N0,"K:"›30420 LG=N3:DG=N0:WH=N2:BL=N1›30430 SW$="T":B27$=" "›30450 NW$="JIM(H)":P1$="D:H"›30460 NB$="COUNT VAUBAN(C)":P2$="D:CCVAUBAN.FE"›30470 F$=P2$:PN=N2:MU=-N1:GOSUB 20000:GOSUB 20300›30510 FOR I=N1 TO N6:FOR J=N1 TO N6:READ I1:L8(I,J)=I1:NEXT J:NEXT I›30520 FOR I=N0 TO 9:READ U,V:DX(I)=U:DY(I)=V:NEXT I›30530 FOR I=N1 TO 8:READ U,V:RM(I)=U:CM(I)=V:NEXT I›30540 FOR JA=N1 TO 401 STEP 100:READ A$:NT$(JA,JA+LEN(A$)-N1)=A$:NEXT JA›30600 REM ›30610 LN=N23-N2›30630 P2$="D:CCVAUBAN.FE":P1$=P2$›30710 GOSUB 23000›30720 GOSUB 23500›30740 TRAP 32000›30750 GOSUB MENU›30770 GOSUB 17000›30780 GOSUB 19000›30790 END ›31700 REM ›31710 GRAPHICS N0:SETCOLOR N4,N5+N4,N4›31720 I=PEEK(N16):IF I>127 THEN I=I-128:POKE N16,I:POKE 53774,I›31730 RETURN ›31900 REM ›31910 CLOSE #N1›31920 XIO N30+N6,#N1,N0,N0,S$›31930 XIO N30+N3,#N1,N0,N0,S$›31940 RETURN ›32000 REM ›32010 EF=PEEK(195)›32020 EC=N0:POSITION N2,N23-N1:? "œý";:CLOSE #N1›32030 ST$="TRY AGAIN":CL=32150›32040 IF EF=144 THEN ? " Disk Access Problem":GOTO CL›32050 IF EF=138 OR EF=139 THEN ? " Disk Not Connected":GOTO CL›32060 IF EF=N7+N1 OR EF=137 THEN ? " File Type Mismatch":GOTO CL›32070 ST$="INSERT ANOTHER DISK"›32080 IF EF=222 THEN ? " Roster Full":GOTO CL›32090 IF EF=220 THEN ? " Player Not Found":GOTO 32200›32100 IF EF=170 OR EF=136 THEN 32250›32110 IF EF=162 OR EF=169 THEN ? " Disk Full ";:GOTO 32300›32120 REM ›32130 ? "Error ";EF;" at Line ";PEEK(186)+N16*N16*PEEK(187);›32140 GOTO 32140›32150 POSITION N4,N23:? "œ ";ST$;" (Y/N)? ";:CL=N3:GOSUB TOKEN›32160 IF S$="N" THEN EC=N1›32170 GOTO 32400›32200 POSITION N4,N23:? "REENTER NAME: ";:CL=N1:GOSUB TOKEN›32210 IF S$="" THEN EC=N1:GOTO 32400›32220 R$=S$:S$=NP$(LEN(NP$)-N1):S$(N2)="":NP$=R$›32225 GOSUB 18300›32227 GOSUB 18500›32230 ? "œœœœœ";TP$;" ";NP$›32240 GOTO 32400›32250 A$(2055)=" "›32260 TRAP 32000:K=N0›32270 OPEN #N1,N7+N1,N0,RO$:K=N1›32273 ? "CREATING NEW ROSTER ";›32275 ? #N1;B10$:? #N1,A$(N1,1200)›32280 CLOSE #N1›32285 XIO N30+N5,#N1,N0,N0,RO$›32287 ? "œ";›32290 GOTO 32410›32300 REM ›32310 IF K=N1 THEN S$=RO$:GOSUB 31900›32320 IF K=N3 THEN S$=F$:S$(LEN(S$)-N2)=".FE":GOSUB 31900›32360 IF K=N5 THEN S$(LEN(S$)-N2)=".FI":GOSUB 31900›32380 GOTO 32150›32400 POSITION N2,N23-N1:? "œœ"›32410 TRAP 32000›32420 C=DEEP:GOSUB DEPTH:P=DEEP-C:DEEP=C›32440 IF P>N0 THEN POP :IF P>N1 THEN POP :IF P>N2 THEN POP :IF P>N3 THEN POP ›32450 IF EC=N1 THEN RETURN ›32460 GOTO ER›32500 REM ›32510 EF=PEEK(195)›32530 POSITION N3,N23-N2›32540 ? "INITIALIZATION FAILURE"›32550 ? " Error ";EF;" at Line ";PEEK(186)+256*PEEK(187)›32560 ? " TRY REBOOTING THE SYSTEM ";›32570 GOTO 32570›32710 REM ›32720 END ›32730 POKE PEEK(138)+256*PEEK(139)+2,0:SAVE "D:FOE"›32740 END ›