This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page,
please contact me immediatelly so I can remove it!
|
|
|
-
Entry name:Defense
-
Category:Games
-
Publisher/Developer:BELLCOM - Public Domain Library
Listing 1
10 OPEN #1,4,0,"S":GOSUB 10000 15 DIM A(2,41),B(4),C(4),D(4),E(4),F(4),SH(2),SC(2),A$(21),H$(5),R(4),AL(2) 20 REM 24 SC(1)=0:SC(2)=0:FOR I=0 TO 4:B(I)=-1:C(I)=0:D(I)=0:E(I)=0:R(I)=0:NEXT I 30 FOR I=1 TO 2:FOR J=1 TO 20:A(I,J)=INT(RND(0)*16):NEXT J:NEXT I 40 SH(1)=3:SH(2)=3:SC(1)=0:SC(2)=0:AL(1)=5:AL(2)=5:F(1)=5:F(2)=5:F(3)=0:F(4)=0:XC=0 50 GOSUB 6000 100 TT=TT+1:IF TT=4 THEN TT=1 105 IF GS>1 THEN H$=A$(1,GS):A$=A$(GS+1,20):A$(LEN(A$)+1)=H$:POSITION 0,20:? #6;A$; 110 S=STICK(JP):IF S=15 THEN 150 120 Y1=Y:IF S/2=INT(S/2) AND Y>6 THEN Y=Y-1 125 IF (S=5 OR S=9 OR S=13) THEN Y=Y+1:IF Y=20 THEN GOTO 3000 130 POSITION 1,Y1:? #6;" ";:POSITION 1,Y:? #6;""; 135 IF S>4 AND S<8 AND GS<2 THEN GS=GS+0.05 140 IF S>8 AND S<12 THEN GS=GS-0.05:IF GS<0 THEN GS=0 150 IF STRIG(JP)=1 THEN SL=0:GOTO 200 155 IF SL=1 THEN 200 160 SOUND 1,20,4,15:POSITION 3,Y:? #6;"";:FOR I=1 TO 3:IF B(I)>2 AND INT(C(I))=Y THEN 4000 161 REM LINE 160 :16<CTRL>'' 162 NEXT I 165 POSITION 3,Y:? #6;" ";:SOUND 1,0,0,0:SOUND 2,0,0,0:SL=1 170 IF AL(PL)<1 THEN 4060 200 XC=XC+1:IF XC=F(PL)+1 THEN XC=1 210 IF A(PL,XC)>-5 THEN A(PL,XC)=A(PL,XC)-(GS):IF A(PL,XC)<=0 THEN 1000 220 IF B(TT)=-1 THEN 300 230 POSITION INT(B(TT)),INT(C(TT)):? #6;" ";:B(TT)=B(TT)-GS-0.5:IF B(TT)<0 THEN B(TT)=-1:A(PL,R(TT))=15:GOTO 300 240 IF E(TT)>4 THEN 2000 250 C(TT)=C(TT)+D(TT):IF C(TT)<6 OR C(TT)>19 THEN C(TT)=C(TT)-D(TT):D(TT)=-D(TT) 255 IF INT(B(TT))>=0 AND INT(B(TT))<=2 THEN IF INT(C(TT))=Y THEN 3000 260 POSITION INT(B(TT)),INT(C(TT)):GOSUB 260+E(TT)*5:GOTO 300 265 ? #6;"Z";:RETURN 270 ? #6;"z";:RETURN 275 ? #6;"";:RETURN 280 ? #6;"";:RETURN 285 ? #6;"";:RETURN 290 ? #6;"t";:RETURN 300 GOTO 100 750 FOR I=1 TO PP:IF SC(I)>HSC THEN HSC=SC(I) 760 NEXT I:GOTO 7055 1000 FOR I=1 TO 3:IF B(I)=-1 THEN 1010 1005 NEXT I:A(PL,XC)=15:GOTO 220 1010 C(I)=INT(RND(0)*12)+7:D(I)=RND(0)+0.1-1.5*(RND(0)<0.5) 1020 E(I)=INT(RND(0)*6)+1:R(I)=XC:A(PL,XC)=-10:B(I)=17:IF E(I)>4 THEN B(I)=11 1025 GOTO 220 1048 POKE ST+392+X,A:NEXT X:FOR X=0 TO 7:READ A:POKE ST+256+X,A:NEXT X 2000 IF C(TT)<Y THEN D(TT)=1:GOTO 250 2010 IF C(TT)>=Y THEN D(TT)=-1:GOTO 250 3000 FOR I=6 TO 19:POSITION 0,I:? #6;" ";:NEXT I 3010 FOR I=1 TO 3:IF B(I)>0 THEN A(PL,R(I))=15:B(I)=-1 3015 NEXT I:FOR I=0 TO 3:SOUND I,0,0,0:NEXT I 3020 POSITION 1,Y:? #6;"";:FOR I=2 TO 8 STEP 0.1:SETCOLOR 2,4,I:NEXT I 3025 SOUND 0,20,8,15:POSITION 1,Y:? #6;"";:FOR I=15 TO 0 STEP -0.2 3030 SOUND 0,20,8,I:SOUND 1,75,8,I+1:SOUND 2,175,8,I+3:SOUND 3,255,8,I+5 3040 IF I=12 THEN POSITION 0,Y-1:? #6;" ";:POSITION 0,Y:? #6;"::";:POSITION 1,Y+1:? #6;""; 3045 IF I=8 THEN POSITION 0,Y-1:? #6;"";:POSITION 0,Y:? #6;"++";:POSITION 0,Y+1:? #6;""; 3050 IF I=4 THEN POSITION 0,Y-1:? #6;"";:POSITION 0,Y:? #6;"++";:POSITION 1,Y+1:? #6;""; 3055 IF I=1 THEN POSITION 0,Y-1:? #6;" ";:POSITION 0,Y:? #6;" ";:POSITION 0,Y+1:? #6;" "; 3060 NEXT I:FOR I=0 TO 3:SOUND I,0,0,0:NEXT I:POSITION 1,Y:? #6;" "; 3061 GS=0:SH(PL)=SH(PL)-1:XD=4:I=1:IF PL=2 THEN XD=14:I=-1 3062 GOSUB 6200 3063 IF SH(PL)=0 THEN GOSUB 7000 3065 IF SH(PL-1+2*(PL=1))>0 THEN PL=PL+1:IF PL>PP THEN PL=1 3070 GOSUB 5000:FOR I=1 TO 1000:NEXT I:GOSUB 6000:XC=0:GOTO 100 4000 SOUND 2,RND(0)*200+50,10,10:POSITION INT(B(I)),INT(C(I)):? #6;:IF E(I)>4 THEN 4020 4010 ? #6;E(I)*10;:SC(PL)=SC(PL)+E(I)*10:GOTO 4030 4020 ? #6;(E(I)-4)*100;:SC(PL)=SC(PL)+(E(I)-4)*100 4030 B(I)=-1:A(PL,R(I))=-5:POSITION 2,3:? #6;SC(1);:IF PP=2 THEN POSITION 14,3:? #6;SC(2); 4040 AL(PL)=AL(PL)-1:POSITION 2,22:? #6;"t=";AL(PL);" "; 4050 NEXT I:GOTO 165 4060 GOSUB 6900:SOUND 0,200,10,10:SOUND 1,201,10,10:SOUND 2,0,0,0:FOR I=1 TO 7+F(PL+2)+1:POSITION I,12:? #6;""; 4065 FOR X=1 TO 50:NEXT X:POSITION I,12:? #6;" ";:NEXT I:POSITION I,20:GET #1,A:GOSUB 6910:GOTO 4070 4066 ? #6;"z";:RETURN 4067 ? #6;"Z";:RETURN 4068 ? #6;"";:RETURN 4069 ? #6;"";:RETURN 4070 SOUND 3,100,10,5:FOR X=13 TO 21:POSITION I,X:? #6;"";:FOR J=1 TO 30:NEXT J:NEXT X 4075 POSITION I,22:? #6;"";:POSITION I,23:? #6;"";:SOUND 3,25,10,5:FOR J=1 TO 50:NEXT J:SOUND 3,0,0,0 4080 FOR X=21 TO 13 STEP -1:IF X=20 THEN POSITION I,X:? #6;CHR$(A);:GOTO 4085 4082 POSITION I,X:? #6;" "; 4085 FOR J=1 TO 30:NEXT J:NEXT X:GOSUB 6910 4090 FOR X=I TO 19:POSITION X,12:? #6;"";:FOR J=1 TO 50:NEXT J:POSITION X,12:? #6;" ":NEXT X 4100 GRAPHICS 17:POKE 765,224:F(PL+2)=F(PL+2)+1:POSITION 8,10:? #6;"attack":? #6;" wave ";F(PL+2); 4110 ? #6;" destroyed":? #6:SOUND 0,200,10,10:SOUND 1,201,10,10:SOUND 2,0,0,0 4120 ? #6;" ";SH(PL)*500:SC(PL)=SC(PL)+SH(PL)*500 4123 IF F(PL+2)/4=INT(F(PL+2)/4) THEN SH(PL)=SH(PL)+1:? #6:? #6;" " 4125 AL(PL)=F(PL)+5:F(PL)=F(PL)+5:IF F(PL)>40 THEN F(PL)=40:AL(PL)=40 4130 FOR J=1 TO AL(PL):A(PL,J)=INT(RND(0)*16):NEXT J 4135 FOR I=1 TO 1500:NEXT I:GOSUB 6000:GOTO 100 5000 POKE 77,0:GRAPHICS 18:POKE 756,224:POSITION 4,5:? #6;"PLAYER ";PL:JP=PL-1 5005 POSITION 4,6:? #6;"":RETURN 6000 GRAPHICS 17:POKE 756,ST/256:FOR X=0 TO 3:SOUND X,0,0,0:NEXT X 6020 POSITION 6,0:? #6;"":POSITION 3,2:? #6;"#1 #2":POSITION (18-LEN(STR$(HSC)))/2,1:? #6;HSC; 6030 POSITION 2,3:? #6;SC(1);:POSITION 3,4:? #6;SH(1); 6040 IF PP=2 THEN POSITION 14,3:? #6;SC(2);:POSITION 15,4:? #6;SH(2); 6045 POSITION 2,22:? #6;"t=";AL(PL);:FOR I=1 TO F(PL+2)+1:POSITION 7+I,22:? #6;"";:POSITION 7+I,23:? #6;"";:NEXT I 6050 FOR I=0 TO 19:POSITION I,5:? #6;"W";:NEXT I 6060 FOR I=1 TO 20:A$(I,I)="@":NEXT I:A$(10,11)="UV":A$(2,3)="UV":A$(19,20)="UV" 6070 POSITION 0,20:? #6;A$;:Y=12:POSITION 1,Y:? #6;"";:SOUND 0,75,8,4 6080 POSITION 9,4:? #6;"t";:FOR I=1 TO 100:NEXT I:XD=9:IF PL=1 THEN I=-1:GOTO 6100 6090 I=1 6100 POSITION XD,4:? #6;" ";:XD=XD+I:IF XD=4 OR XD=14 THEN POSITION XD,4:? #6;"t":RETURN 6110 POSITION XD,4:? #6;"t";:FOR X=1 TO 50:NEXT X:GOTO 6100 6200 POSITION XD,4:? #6;" ";:XD=XD+I:IF XD=9+I THEN POSITION XD,4:? #6;"t";:POSITION 9,4:? #6;SH(PL);:GOTO 6220 6210 POSITION XD,4:? #6;"t";:FOR X=1 TO 50:NEXT X:GOTO 6200 6220 FOR X=1 TO 100:NEXT X:IF I=1 THEN I=-1:GOTO 6240 6230 I=1 6240 POSITION XD,4:? #6;" ";:POSITION XD+I,4:? #6;" ";:XD=XD+I:IF XD=14 OR XD=4 THEN 6260 6250 POSITION XD,4:? #6;"t";:POSITION XD+I,4:? #6;SH(PL);:FOR X=1 TO 50:NEXT X:GOTO 6240 6260 POSITION XD,4:? #6;"t";:POSITION XD+I,4:? #6;SH(PL);:FOR I=1 TO 200:NEXT I:RETURN 6900 FOR I=6 TO 19:POSITION 0,I:? #6;" ";:NEXT I:RETURN 6910 FOR J=1 TO 12:FOR X=1 TO 4:POSITION I,12:GOSUB 4065+X:NEXT X:NEXT J:RETURN 7000 POKE 756,224:GRAPHICS 18:POSITION 5,5:? #6;" ";CHR$(PL+176);:POSITION 5,6:? #6;"game over"; 7005 POSITION 4,8:? #6;" = ";SC(PL); 7010 FOR I=1 TO 400:NEXT I:IF SH(1)=0 AND SH(PP)=0 THEN 750 7020 RETURN 7050 FOR I=1 TO 400:NEXT I 7055 POP:GOSUB 11000:J=22:GOSUB 11100:IF I=1001 THEN 7055 7060 GOTO 20 10000 POKE 106,PEEK(106)-5:GRAPHICS 0:GOSUB 11000 10010 ST=(PEEK(106)+1)*256 10020 FOR X=0 TO 1023:POKE ST+X,PEEK(57344+X):NEXT X 10025 J=22:GOSUB 11100:IF I=1001 THEN 10025 10030 FOR X=0 TO 23:READ A:POKE ST+448+X,A:NEXT X:FOR X=0 TO 15:POKE ST+424+X,PEEK(ST+560+X):NEXT X 10040 FOR X=0 TO 7:POKE ST+440+X,PEEK(ST+656+X):NEXT X 10045 FOR X=0 TO 7:READ A:POKE ST+416+X,A:NEXT X:FOR X=0 TO 7:READ A:POKE ST+288+X,A:NEXT X 10046 FOR X=0 TO 7:READ A:POKE ST+296+X,A:NEXT X:FOR X=0 TO 7:READ A:POKE ST+304+X,A:NEXT X 10047 FOR X=0 TO 7:READ A:POKE ST+368+X,A:NEXT X:FOR X=0 TO 7:READ A:POKE ST+408+X,A:NEXT X:FOR X=0 TO 7:READ A 10048 POKE ST+392+X,A:NEXT X:FOR X=0 TO 7:READ A:POKE ST+472+X,A:NEXT X 10050 FOR X=0 TO 6:POKE ST+256+X,0:NEXT X:POKE ST+263,255:FOR X=0 TO 7:POKE ST+264+X,255:NEXT X 10055 GRAPHICS 1:POKE 756,ST/256:RETURN 11000 GRAPHICS 17:POKE 752,1:POSITION 7,0:? #6;"":? #6:? #6:? #6;" evil aliens from" 11010 ? #6;" beyond earth have invaded the moon.":? #6:? #6 11020 ? #6;" YOUR MISSION IS TO DESTROY AS MANY ATTACKING WAVES OF THOSE ALIENS BEFORE"; 11030 ? #6;" THEY LAUNCH THEIR FLEETS TO CONQUER THE EARTH.":? #6:? #6 11040 ? #6;" " 11050 RETURN 11100 POSITION 5,J:? #6;"":X=11:J=J+1:POSITION 11,J:? #6;"-" 11110 FOR I=1 TO 1000 STEP 2:FOR S=0 TO 1:P=STICK(S):IF STRIG(S)=1 AND P=15 THEN NEXT S:NEXT I:I=1001:RETURN 11115 IF STRIG(S)=0 THEN 11170 11120 IF P>4 AND P<8 THEN X=X+5 11130 IF P>8 AND P<12 THEN X=X-5 11140 IF X<11 THEN X=16 11150 IF X>16 THEN X=11 11160 POSITION 11,J:? #6;" ":POSITION 16,J:? #6;" ":POSITION X,J:? #6;"-":FOR W=1 TO 50:NEXT W:NEXT S:NEXT I:I=1001:RETURN 11170 PP=1:IF X=16 THEN PP=2 11180 PL=1:GOSUB 5000:RETURN 20050 STOP 20060 DATA 0,0,0,0,30,15,7,7,0,0,0,0,0,192,252,255,0,8,28,62,127,42,20,34 20070 DATA 0,126,153,153,255,189,195,126 20080 DATA 0,124,110,110,110,126,124,0,0,126,96,120,96,126,126,0,0,126,126,112,124,112,112,0 20090 DATA 0,115,123,127,127,119,115,0,0,62,126,96,126,6,126,124,0,0,0,16,24,28,30,31,24,24,24,24,24,24,24,24
References
Listing downloads
Downloads
Copyright holder
