10 REM WAR-PLAN
20 GOSUB 380
30 SYMBOL AFTER 129
40 SYMBOL 129,0,32,96,120,96,112,136,112
50 SYMBOL 130,0,0,0,0,0,0,0,0
60 SYMBOL 131,0,62,62,62,32,32,32,32
70 SYMBOL 132,0,136,80,32,32,32,80,136
80 GOSUB 440
90 GOSUB 510
100 GOSUB 860
110 GOSUB 1010
120 GOSUB 1170
125 CLS
130 IF NME(X,Y)=0 THEN GOSUB 1210:GOTO 160
140 IF NME(X,Y)=-1 THEN GOSUB 1240:GOTO 160
150 GOSUB 1320
160 IF NME(X,Y)=0 THEN GOSUB 1460 ELSE GOSUB 1380
170 SR=SR-1: IF SR>0 THEN M$="You have "+STR$(SR)+" shots left":GOSUB 630:PRINT
180 IF SR>0 AND ER>0 THEN GOTO 110
190 REM PLAYER IS OUT OF SHOTS
200 REM OR HAS DESTROYED ALL NME UNITS
210 IF ER=0 THEN GOSUB 1540:GOTO 90
220 M$="Central Office advises you.":GOSUB 630:PRINT
230 M$="You have used up all our missiles":GOSUB 630:PRINT
240 M$="This is where the enemy was hiding":GOSUB 630:PRINT
250 WINDOW 1,40,1,20:GOSUB 930:WINDOW 1,40,21,25
260 M$="You have scored :"+STR$(sc):GOSUB 630:PRINT:FOR L=1 TO 1000:NEXT L
270 IF SC>HS THEN M$="Which is the high score":GOSUB 630:HS$=N$:HS=SC:PRINT
280 REM Ask IF PLAYER WANTS ANOTHER GAME
290 WINDOW 1,40,1,25:CLS:LOCATE 1,11
300 M$="Commander "+HS$+" has the high score":GOSUB 630
310 LOCATE 1,13:M$="Which is "+STR$(hs)+" points":GOSUB 630
320 LOCATE 1,17: LET M$="Does anyone want another game (Y/N) ?":GOSUB 630
330 I$=INKEY$:IF I$<>"" THEN GOTO 330
340 I$=INKEY$:IF I$="" THEN GOTO 340
350 IF I$="y" OR I$="Y" THEN GOTO 80
360 IF I$="n" OR I$="N" THEN WINDOW 1,40,1,25:CLS:END
370 GOTO 330
380 REM SET UP FOR NEW GAME
390 HS=0:HS$=""
400 MODE 1
410 BORDER 13
420 DIM NME(14,24)
430 RETURN
440 REM SET UP FOR A NEW PLAYER
450 WINDOW 1,40,1,25
460 SC=0:CLS
470 LOCATE 6,11:PRINT"What is your name";
480 INPUT n$:IF N$="" THEN GOTO 470
490 WV=1
500 RETURN
510 REM SET UP FOR NEW WAVE
520 WINDOW 1,40,1,25:CLS:LOCATE 1,9:M$="Commander "+N$+".":GOSUB 630
530 LOCATE 1,11:M$="Central Office advises you.":GOSUB 630
540 LOCATE 1,13:M$="Attack enemy immediately.":GOSUB 630
550 LOCATE 1,15:M$="Repeat, ATTACK. ATTACK.":GOSUB 630
560 LOCATE 1,21:M$="":FOR L=1 TO 10:M$=M$+CHR$(10):NEXT L:GOSUB 630
570 FOR X=1 TO 14:FOR Y=1 TO 24:NME(X,Y)=0:NEXT Y:NEXT X
580 ER=20:FOR L=1 TO ER
590 X=INT(RND(1)*10+3):Y=INT(RND(1)*20+3):IF NME(X,Y)<>0 THEN GOTO 590
600 IF L<3 THEN NME(X,Y)=-1 ELSE NME(X,Y)=1
610 NEXT L:SR=50
620 RETURN
630 REM Teletype emulator
640 FOR L=1 TO LEN(M$)
650 PRINT MID$(M$,L,1);
660 SOUND 1,0,5,7,0,0,10:SOUND 1,0,3
670 IF SQ(1)>127 THEN GOTO 670
680 NEXT L
690 RETURN
700 REM SCAN LOCALLY
710 NN=0
720 FOR X=TX-1 TO TX+1
730 FOR Y=TY-1 TO TY+1
740 NN=NN+ABS(NME(X,Y))
750 NEXT Y:NEXT X
760 NN=NN-ABS(NME(TX,TY))
770 RETURN
780 REM SCAN LARGER AREA
790 NN=0
800 FOR X=TX-2 TO TX+2
810 FOR Y=TY-2 TO TY+2
820 NN=NN+ABS(NME(X,Y))
830 NEXT Y:NEXT X
840 NN=NN-ABS(NME(TX,TY))
850 RETURN
860 REM LABEL MAP AREA
870 WINDOW 1,40,1,20:CLS
880 LOCATE 12,1:PRINT "11111111112":LOCATE 3,2:PRINT "12345678901234567890"
890 LOCATE 1,3
900 FOR L=ASC("A") TO ASC("J")
910 PRINT CHR$(L):NEXT L
920 RETURN
930 REM FILL IN ALL NME UNITS
940 FOR X=3 TO 12
950 LOCATE 3,X
960 FOR Y=3 TO 22
970 PRINT CHR$(130+NME(X,Y));
980 NEXT Y
990 NEXT X
1000 RETURN
1010 REM GET A LEGAL SHOT
1020 WINDOW 1,40,21,25:M$="Enter target for missile          ":GOSUB 630:PRINT
1030 X=1:A=1:B=0:C=1:WINDOW 1,40,1,20
1040 LOCATE 11,15:PRINT"[ ";CHR$(64+X);"  ";A+B;" ]  ";
1050 I$=INKEY$:IF I$<>"" THEN GOTO 1050
1060 I$=INKEY$:IF I$="" THEN GOTO 1060
1070 IF I$<"0" OR I$>"9" THEN GOTO 1100
1080 IF C=1 THEN B=A*10:A=ASC(I$)-ASC("0"):c=0:GOTO 1040
1090 C=1:B=A*10:A=ASC(I$)-ASC("0"):GOTO 1040
1100 IF I$=CHR$(13) THEN GOTO 1140
1110 IF I$>="a" AND i$<="j" THEN i$=CHR$(ASC(i$)-ASC("a")+ASC("A"))
1120 IF i$<"A" OR I$>"J" THEN PRINT CHR$(7):GOTO 1040
1130 X=ASC(I$)-ASC("A")+1:GOTO 1040
1140 Y=A+B+2:X=X+2:IF X=2 OR Y<3 OR Y>22 THEN A=1:B=0:X=0:PRINT CHR$(7);:GOTO 1030
1150 LOCATE 11,15:PRINT"               ";:WINDOW 1,40,21,25
1160 RETURN
1170 REM UPDATE MAP
1180 WINDOW 1,40,1,20:LOCATE Y,X:PRINT CHR$(132);
1190 WINDOW 1,40,21,25
1200 RETURN
1210 REM PLAYER MISSED
1220 M$="The missile missed the enemy":GOSUB 630:PRINT
1230 RETURN
1240 REM PLAYER HIT A COMMAND BASE
1250 M$=" You have hit the command base":GOSUB 630:PRINT
1260 IF er> 2 THEN m$="...but it is not destroyed":GOSUB 630:PRINT:GOTO 1310
1270 M$="...and you destroyed it":GOSUB 630:PRINT
1280 SC=SC+500
1290 NME(X,Y)=0
1300 ER=ER-1
1310 RETURN
1320 REM PLAYER HIT AN ENEMY UNIT
1330 NME(X,Y)=0
1340 M$="You have hit an enemy unit":GOSUB 630:PRINT
1350 M$="and it is destroyed":GOSUB 630:PRINT:ER=ER-1
1360 SC=SC+20
1370 RETURN
1380 REM SEARCH AROUND NEARBY
1390 M$="Intelligence reports :                "+CHR$(13)+CHR$(10)
1400 tx=x:TY=Y:GOSUB 700
1410 IF NN=0 THEN M$=M$+"no nearby activity"
1420 IF nn>0 AND nn<3 THEN m$=m$+"A small amount of nearby activity"
1430 IF nn>=3 THEN m$=m$+"A large amount of nearby activity"
1440 WINDOW 1,40,21,25:GOSUB 630:PRINT
1450 RETURN
1460 REM search around after a hit
1470 m$="intelligence reports :                "+CHR$(13)+CHR$(10)
1480 tx=x:ty=y:GOSUB 780
1490 IF nn=0 THEN M$=M$+"no local activity"
1500 IF nn>0 AND nn<6 THEN m$=m$+"a small amount of local activity"
1510 IF nn>5 THEN m$=m$+"a large amount of local activity"
1520 WINDOW 1,40,21,25:GOSUB 630:PRINT
1530 RETURN
1540 REM PLAYER HAS WIPED OUT A WAVE
1550 WINDOW 1,40,1,25:CLS
1560 LOCATE 1,11:M$="Cental Office advises you.":GOSUB 630
1570 LOCATE 1,13:m$="Forthcoming enemy counter attack.":GOSUB 630
1580 LOCATE 1,15:m$="Prevent at all costs.":GOSUB 630
1590 LOCATE 1,19:m$="Your score so far is         :"+STR$(sc)+" points.":GOSUB 630
1600 LOCATE 1,21:m$="":FOR l=1 TO 10:m$=m$+CHR$(10):NEXT l:GOSUB 630
1610 RETURN