10 REM DEFEND
20 REM à PAUL STANLEY
30 MODE 1:BORDER 0:INK 0,0:INK 1,24:INK 2,20:INK 3,6:WINDOW #1,1,40,1,25:PAPER #1,0:PEN #1,1:CLS #1
40 GOSUB 1360
50 HL=10:LI=2
60 HS=0
70 GOSUB 1200
80 WINDOW #0,5,36,1,25:PAPER #0,0:PEN #0,1:CLS #0
90 GOSUB 1110:GOSUB 840
100 GOSUB 1080:SOUND 1,120,3
110 LOCATE 9,22:PRINT CHR$(18);:LOCATE 9,22:PEN 3:PRINT "FUEL:";:PEN 1:PRINT LEFT$(C$,10-HL);:PEN 3:LOCATE 14,1:PRINT CHR$(24);"HI:";CHR$(24);:PEN 1:PRINT HS;:PEN 3:LOCATE 16,Y+1:PRINT B$;:PEN 1
120 PLOT 272,48,3:DRAWR 160,0,3:DRAWR 0,14,3:DRAWR -160,0,3:DRAWR 0,-14,3:IF LI=2 THEN LOCATE 2,22:PRINT CHR$(233);CHR$(234);
130 PEN 2:LOCATE A+1,B+1:PRINT CHR$(232);:LOCATE A+1,B+2:PRINT A$;:PEN 1
140 LOCATE 1,1:PRINT CHR$(24);"CAPTURES: ";CHR$(24);:PEN 3:PRINT CAP;:PEN 2:LOCATE 22,1:PRINT CHR$(24);"SCORE:";CHR$(24);:PEN 1:PRINT SC;
150 IF RND<0.08 AND B<=LT THEN GOSUB 620
160 PEN 0:LOCATE A+1,B+1:PRINT CHR$(232);:LOCATE A+1,B+2:PRINT A$;:PEN 1
170 LOCATE A+1,B+3:CALL 360:LL=PEEK(367):IF LL=231 AND A$=" " THEN A$=CHR$(231):C=C+1:M=1:LOCATE A+1,B+3:PRINT " ";
180 IF M=1 THEN B=B-INT(RND*3):GOTO 210
190 LOCATE A+1,B+3:CALL 360:LL=PEEK(367):IF LL=32 THEN B=B+INT(RND*2)
200 LOCATE A+1,B:CALL 360:LL=PEEK(367):IF LL<>32 THEN M=1:C=C+1
210 IF B<1 THEN B=1
220 IF C=8 OR B>17 THEN CLS:GOSUB 840:GOTO 110
230 A=A-1
240 IF A=-1 THEN A=31:M=0:IF A$=CHR$(231) THEN CAP=CAP+1:FOR XS=-3 TO 6:SOUND 2,(XS+20),3:NEXT:A$=" "
250 PEN 0:LOCATE 16,Y+1:PRINT B$;:PEN 1
260 Y=Y-(INKEY(2)=0 AND Y<=LT)+(INKEY(0)=0 AND Y>1)
270 IF INKEY(47)=0 THEN IF B$=CHR$(233)+CHR$(234) THEN B$=CHR$(235)+CHR$(236):GOTO 290
280 IF INKEY(47)=0 THEN B$=CHR$(233)+CHR$(234)
290 PEN 3:LOCATE 16,Y+1:PRINT B$;:PEN 1
300 IF CAP=3 OR HL=10 THEN LOCATE 10,1:PRINT CAP;:GOTO 780
310 IF INKEY(9)=0 THEN GOSUB 330
320 GOTO 130
330 I=-119*(B$=CHR$(235)+CHR$(236))-136*(B$=CHR$(233)+CHR$(234)):J=(21-Y)*8+3
340 PLOT I*2+64,J*2+48,2
350 IF B$=CHR$(233)+CHR$(234) THEN SOUND 1,130,3:DRAWR 180,0,2:SOUND 1,90,3:PLOT I*2+64,J*2+48,0:DRAWR 180,0,0
360 IF B$=CHR$(235)+CHR$(236) THEN SOUND 1,130,3:DRAWR -180,0,2:SOUND 1,90,3:PLOT I*2+64,J*2+48,0:DRAWR -180,0,0
370 IF Y=B AND((B$=CHR$(233)+CHR$(234) AND A>16 AND A<29) OR(B$=CHR$(235)+CHR$(236) AND A<15 AND A>2)) THEN IF A$=CHR$(231) THEN GOTO 450 ELSE 390
380 RETURN
390 M=0:LOCATE A+1,B+1:PRINT CHR$(237);:SOUND 1,120,3:LOCATE A+1,B+1:PRINT CHR$(24);CHR$(237);CHR$(24);
400 LOCATE A+1,B+1:PRINT CHR$(237);:SOUND 1,120,3:LOCATE A+1,B+1:PRINT CHR$(24);CHR$(237);CHR$(24);
410 LOCATE A+1,B+1:PRINT CHR$(237);:SOUND 1,120,3:LOCATE A+1,B+1:PRINT CHR$(24);CHR$(237);CHR$(24);:LOCATE A+1,B+1:PRINT " ";:B=1+INT(RND*14):A=31
420 SC=SC+10
430 A$=" "
440 RETURN
450 SOUND 1,180,3:LOCATE A+1,B+1:PRINT CHR$(237);:SOUND 1,120,3:LOCATE A+1,B+1:PRINT CHR$(24);CHR$(237);CHR$(24);:LOCATE A+1,B+1:PRINT " ";
460 F=0:FOR D=B+1 TO 19
470 LOCATE A+1,D+1:PRINT CHR$(231);:SOUND 1,20*D,3
480 F=F+1
490 LOCATE A+1,D+1:PRINT " ";
500 LOCATE A+1,D+2:CALL 360:CL=PEEK(367):IF CL<>32 THEN 530
510 NEXT D
520 GOTO 570
530 O=RND:IF 0>0.35 AND F>9 THEN SC=SC+50*(SC>=50)+SC*(SC<50):FOR F=-30 TO 1:LOCATE A+1,D+2:PRINT CHR$(237);:SOUND 1,F+40,1:NEXT F:LOCATE A+1,D+2:PRINT " ";:GOTO 550
540 LOCATE A+1,D+2:PRINT CHR$(231);
550 IF O<=0.35 THEN 580
560 M=0
570 A$=" ":A=31:B=INT(RND*14)+1:RETURN
580 FOR F=1 TO 4
590 LOCATE A+1,D+2:PRINT CHR$(231);:SOUND 1,180,3:LOCATE A+1,D+2:PRINT " ";:SOUND 1,120,3:LOCATE A+1,D+2:PRINT CHR$(231);:SOUND 1,180,3:LOCATE A+1,D+2:PRINT " " ;:SOUND 1,120,3:NEXT
600 LOCATE A+1,D+2:PRINT CHR$(231);
610 LOCATE A-1,D:PRINT "I'M OK!";:LOCATE A+1,D+1:PRINT CHR$(149);:FOR F=0 TO 300: NEXT:LOCATE A-1,D:PRINT "       ":LOCATE A+1,D+1:PRINT " ";:GOTO 560
620 IF A>15 THEN DIR=-80:STX=A*8-1
630 IF A<=15 THEN DIR=80:STX=A*8+8
640 PLOT STX*2+64,(21-B)*16+51,3:SOUND 1,180,3:DRAWR 2*DIR,0,3
650 PLOT STX*2+64,(21-B)*16+51,0:SOUND 1,180,3:DRAWR 2*DIR,0,0
660 IF B=Y THEN IF (A<27 AND DIR=-80) OR (A>4 AND DIR=80) THEN GOTO 680
670 RETURN
680 LOCATE 16,Y+1:PRINT " ";:A=15
690 PLOT 304,(21-Y)*16+51:DRAWR 14,0
700 Y=-Y*(Y>=3)-3*(Y<3)
710 FOR V=1 TO 6
720 LOCATE A+V+1,Y+V/2+1:PRINT CHR$(233);:LOCATE A+V+1,Y-V/2+1:PRINT CHR$(234);:LOCATE A-V+1,Y+V/2+1:PRINT CHR$(235);:LOCATE A-V+1,Y-V/2+1:PRINT CHR$(236);
730 SOUND 1,80,3
740 LOCATE A+V+1,Y+V/2+1:PRINT " ";:LOCATE A+V+1,Y-V/2+1:PRINT " ";:LOCATE A-V+1,Y +V/2+1:PRINT " ";:LOCATE A-V+1,Y-V/2+1:PRINT " ";
750 NEXT V
760 LI=LI-1
770 IF LI>0 THEN CLS: GOSUB 840:GOTO 110
780 FOR FF=-5 TO 5:FOR GG=5 TO 10:SOUND 2,FF+10*(15-GG),3:SOUND 1,GG*2,3:NEXT GG ,FF
790 PEN 2:LOCATE 8,11:PRINT CHR$(24);"G A M E   O V E R";CHR$(24);:PEN 1:LOCATE 1,22:PEN 3:PRINT CHR$(24);"   PRESS ANYKEY TO TRY AGAIN   ";CHR$(24);:PEN 1
800 IF SC>HS THEN HS=SC
810 IF INKEY$<>""THEN 810
820 IF INKEY$="" THEN 830 ELSE CLS:GOTO 90
830 GOTO 810
840 HL=HL+2:Y=50:X=0
850 PLOT X*2+64,Y*2+48,2
860 A=INT(RND*20):B=INT(RND*20-RND*20)
870 X=X+A:Y=Y+B
880 IF X>251 THEN 920
890 IF Y<10 OR Y>60 THEN X=X-A:Y=Y-B:GOTO 860
900 DRAWR A*2,B*2,2
910 GOTO 860
920 FOR X=0 TO 24 STEP 3
930 A=INT(RND*6+X)
940 F=20
950 FOR B=4 TO 21
960 LOCATE A+1,B+1:CALL 360:CL=PEEK(367) :IF CL<>32 THEN LOCATE A+1,B+1:PRINT CHR$(231);:B=B+2
970 NEXT B,X
980 FOR F=11 TO 17:FOR Y=0 TO 31:LOCATE Y+1,F+1:CALL 360:CL=PEEK(367):IF CL<>32 THEN LT=F-1:GOTO 1000
990 NEXT Y,F
1000 Y=5:C=0
1010 B$=CHR$(233)+CHR$(234)
1020 A=31:B=1
1030 A$=" ":C$=STRING$(10,143)
1040 M=0
1050 LOCATE 2,22:PRINT " ";
1060 IF LI=2 THEN LOCATE 2,22:PRINT CHR$(233);CHR$(234);
1070 RETURN
1080 SC=0:CAP=0:C=0
1090 HL=0:LI=2
1100 RETURN
1110 SYMBOL AFTER 230
1120 SYMBOL 231,28,28,8,62,8,8,20,34
1130 SYMBOL 232,0,24,60,66,255,126,66,102
1140 SYMBOL 233,0,0,199,204,255,255,3,0
1150 SYMBOL 234,0,0,240,24,255,252,224,0
1160 SYMBOL 235,0,0,15,24,255,63,7,0
1170 SYMBOL 236,0,0,227,51,255,255,192,0
1180 SYMBOL 237,196,9,176,6,208,74,145,10
1190 RETURN
1200 PEN 3:PRINT CHR$(24);"              D E F E N D               ";CHR$(24);:PEN 1
1210 LOCATE 1,4
1220 PEN 2:PRINT "A fleet of aliens has managed to get    past defensive lines on Earth.          One by one they fly in with the sole    intent of picking up Humanoids which    have climbed to the top of the hills to see what is happening.":PEN 1
1230 PEN 3:PRINT:PRINT "Your job is to prevent the fleet from   capturing the Humanoids.                You have a powerful laser with which to shoot down the aliens":PEN 1
1240 PEN 2:PRINT:PRINT:PRINT:PRINT CHR$(24);" UP ARROW...UP       DOWN ARROW...DOWN  ";CHR$(24);:PEN 1
1250 PEN 3:PRINT CHR$(24);"SPACEBAR..CHANGE DIRECTION   FIRE...COPY";CHR$(24);:PEN 1
1260 LOCATE 8,23:PRINT CHR$(24);"PRESS ANY KEY TO CONTINUE.";CHR$(24);:PEN 1
1270 IF INKEY$<>"" THEN 1270
1280 IF INKEY$="" THEN 1280 ELSE CLS
1290 PEN 3:PRINT CHR$(24);"              D E F E N D               ";CHR$(24);:PEN 1
1300 PEN 2:LOCATE 1,5:PRINT "You have been defeated when 3 humanoids have been captured.                     It is alright to shoot at an alien whichis clutching a Humanoid as long as he   does not fall too far (IF HE DOES YOU   FORFEIT 50 POINTS.)":PEN 1

1310 PRINT: PRINT:PRINT "Don't underestimate your enemy invader, he may have a trick up his sleeve...... Every so often the computer will take   you  to  a  new  location at the expenseof some of your fuel which,if zero, willend the game."
1320 PEN 3:PRINT:PRINT:PRINT CHR$(24);"        PRESS ANY KEY TO CONTINUE       ";CHR$(24);:PEN 1
1330 IF INKEY$<>"" THEN 1330
1340 IF INKEY$="" THEN 1340 ELSE CLS
1350 RETURN
1360 RESTORE 1370:FOR XX=360 TO 366:READ ZZ:POKE XX,ZZ:NEXT:RESTORE:RETURN
1370 DATA 205,96,187,50,111,1,201
1380 FOR SS=231 TO 241:PRINT CHR$(SS);" ";:NEXT