10 REM /////// 20 REM / SAM / 30 REM /////// 40 REM BY KHOA TON 50 REM //DATA FOR ALIENS// 60 DATA 1092BA547CC6FE92,423C2418187E1818,7CD67CFEC6AAFE00,00183C667E5A42C3,008199FFDBFFBD18,BAFED67C7C442800 70 DATA 60983C243C7E42E7,003C66FF3C182442,00001866FF180000 80 REM //DATA FOR SONG// 90 DATA 20,890,21,110,18,220,14,330,15,440,16,550,17,660,31,220,34,330,20,440,22,550 100 DATA 10,660,10,550,60,440,20,330,100,110,1,40000 110 REM //OPENING SCREEN// 120 CALL CLEAR 130 CALL SCREEN(15) 140 PRINT TAB(8);"S * URFACE TO"::TAB(8);"A * IR"::TAB(8);"M * ISSILES"::::::::: 150 PRINT "DO YOU REQUIRE INSTRUCTIONS?" 160 FOR S=99 TO 125 STEP 3 170 CALL VCHAR(7,S-94,S) 180 NEXT S 190 CALL SOUND(100,660,9) 200 CALL KEY(0,K,S) 210 IF (K=78)+(K=89)THEN 230 ELSE 200 220 REM //INITIALIZE// 230 CALL COLOR(10,5,1) 240 CALL COLOR(11,13,1) 250 CALL COLOR(12,2,1) 260 CALL COLOR(2,13,1) 270 CALL COLOR(9,7,1) 280 CALL CHAR(42,"FFFFFFFFFFFFFFFF") 290 CALL CHAR(96,"1010102838387CEE") 300 CALL CHAR(125,"163F36488CDBE729") 310 CALL CHAR(101,"00000080CD75FE7E") 320 CALL CHAR(113,"3C24183C24183C24") 330 REM //CREATE CHARACTERS// 340 FOR I=99 TO 123 STEP 3 350 READ A$ 360 CALL CHAR(I,A$) 370 FOR J=15 TO 1 STEP -2 380 C$=C$&SEG$(A$,J,2) 390 NEXT J 400 CALL CHAR(I+1,C$) 410 C$="" 420 NEXT I 430 CALL CLEAR 440 IF K=78 THEN 570 450 REM //INSTRUCTIONS// 460 PRINT TAB(10);" ******** ":TAB(10);"* S.A.M. *":"********** **********":" THE PURPOSE OF THIS GAME" 470 PRINT "IS TO UTILIZE YOUR NINETEEN SURFACE-TO-AIR MISSILES TO SHOOT DOWN ALIEN SABOTEURS.": 480 PRINT " TO LAUNCH A MISSILE, PRESS ""SPACE"". YOUR MISSILES WILL":"BE LAUNCHED FROM RIGHT TO":"LEFT." 490 PRINT " TO COMPLETELY DESTROY THE":"ALIEN FORCE, YOU MUST HIT":"EVERY DIFFERENT KIND OF THE INVADERS." 500 PRINT " ALIENS ARE SCORED ACCORDING":"TO HEIGHT AND THE SECOND":"ALIEN OF EACH KIND WILL" 510 PRINT "COUNT DOUBLE IN SCORE.":"USE ""SPACE"" TO GUIDE MISSILE":" GOOD LUCK ..."::" PRESS ANY KEY." 520 CALL VCHAR(3,2,42,22) 530 CALL VCHAR(3,31,42,22) 540 CALL HCHAR(24,3,42,29) 550 CALL KEY(0,K,S) 560 IF S=0 THEN 550 570 A$="***** ****" 580 CALL SCREEN(12) 590 CALL CLEAR 600 REM ///START/// 610 K=27 620 T=8 630 FI=0 640 SC=0 650 LA=1 660 REM //BASE// 670 PRINT A$:A$:A$:A$:A$ 680 CALL VCHAR(19,31,42,6) 690 PRINT "*****G**G**G**G**G**G**G****" 700 CALL HCHAR(24,3,42,29) 710 FOR I=8 TO 26 720 CALL SOUND(1,110,0,-3,0) 730 CALL VCHAR(22,I,96) 740 NEXT I 750 GOTO 890 760 REM //MAIN CORE// 770 RANDOMIZE 780 IF K>T THEN 810 790 CALL VCHAR(IX,IY,32) 800 GOTO 1690 810 LA=LA+1 820 IF LA<2 THEN 840 830 FI=1 840 IY=INT(RND*2) 850 IF IY THEN 890 860 RY=-1 870 IY=31 880 GOTO 910 890 RY=1 900 IY=2 910 OX=1 920 OY=1 930 IX=INT(RND*17+1) 940 CH=INT(IX/2)*3+99 950 CALL VCHAR(1,32,32,48) 960 IF (IY>31)+(IY<2)THEN 770 970 GOTO 1190 980 CALL KEY(0,X,S) 990 IF X<>32 THEN 960 1000 CALL SOUND(-200,-5,27) 1010 IF K=T THEN 790 1020 K=K-1 1030 FOR ML=21 TO 1 STEP -1 1040 CALL VCHAR(ML+1,K,32) 1050 IF (IY=K)*(IX=ML)THEN 1420 1060 CALL VCHAR(ML,K,96) 1070 IF INT((K-8)/3)<>(K-8)/3 THEN 1100 1080 CALL KEY(0,X,S) 1090 IF X=32 THEN 1340 1100 IF ML/2<>INT(ML/2)THEN 1150 1110 GOTO 1340 1120 IF (IY>31)+(IY<2)=0 THEN 1150 1130 CALL VCHAR(ML,K,32) 1140 ML=1 1150 NEXT ML 1160 CALL VCHAR(ML+1,K,32) 1170 GOTO 960 1180 REM ///ALIENS/// 1190 CALL SOUND(-900,IX*150,20,-5,25) 1200 CALL KEY(0,X,S) 1210 IF X=32 THEN 1000 1220 IF (FI)*(IY=T)=0 THEN 1340 1230 REM //SHOOT?// 1240 IF INT(RND*2)THEN 1340 1250 REM //YES!!// 1260 CALL SOUND(-100,790,0,-6,15) 1270 CALL VCHAR(IX+1,T,113,21-IX) 1280 CALL VCHAR(22,T,101) 1290 CALL SOUND(800,110,0,-5,0) 1300 CALL VCHAR(IX+1,T,32,21-IX) 1310 FI=0 1320 T=T+1 1330 REM //MOVE ALIEN// 1340 IY=IY+RY 1350 CALL VCHAR(OX,OY,32) 1360 CALL VCHAR(IX,IY,CH) 1370 OX=IX 1380 OY=IY 1390 IF ML=0 THEN 980 1400 IF (IY=K)*(IX=ML)THEN 1420 ELSE 1120 1410 REM //BANG!// 1420 CALL SOUND(300,110,8,-5,0) 1430 CALL VCHAR(ML,K,125) 1440 A$=STR$(((99-CH)/3+10)*5) 1450 X1=20 1460 X=28 1470 GOSUB 2360 1480 CALL SOUND(50,-4,1) 1490 CALL VCHAR(ML,K,CH+1) 1500 CALL SOUND(50,-5,5) 1510 CALL VCHAR(ML,K,CH) 1520 CALL SOUND(50,-7,12) 1530 CALL VCHAR(ML,K,CH+1) 1540 REM //ALIEN FALL// 1550 FOR I=ML+1 TO 23 1560 CALL SOUND(-150,1000-I*10,30-I) 1570 CALL VCHAR(I-1,K,32) 1580 CALL VCHAR(I,K,CH+1) 1590 NEXT I 1600 FOR I=1 TO 29 STEP 2 1610 CALL SOUND(I*10,110,I+1,-5,I) 1620 NEXT I 1630 IY=1 1640 LA=0 1650 FI=0 1660 GOTO 1140 1670 REM ///GAME END/// 1680 REM //COMPUTE SCORE// 1690 FOR I=8 TO 26 1700 CALL GCHAR(23,I,CH) 1710 IF (CH=42)+(CH=71)THEN 1980 1720 CH=CH-1 1730 SC=SC+((99-CH)/3+10)*5 1740 FOR J=9 TO 25 STEP 2 1750 J1=8 1760 CALL GCHAR(J1,J,CH1) 1770 IF CH1=32 THEN 1890 1780 IF CH1<>CH THEN 1970 1790 REM //COUNT ALIENS// 1800 J1=J1+1 1810 CALL GCHAR(J1,J,CH1) 1820 IF CH1=CH THEN 1800 1830 SC=SC+((99-CH)/3+10)*5 1840 CALL SOUND(100,321,0) 1850 CALL SOUND(200,562,0) 1860 CALL SOUND(183,456,0) 1870 CALL SOUND(177,331,0) 1880 CALL SOUND(323,721,0) 1890 CALL VCHAR(J1,J,CH) 1900 CALL SOUND(-200,110,4,-3,0) 1910 CALL VCHAR(23,I,42) 1920 A$=STR$(SC) 1930 X1=20 1940 X=3 1950 GOSUB 2360 1960 J=25 1970 NEXT J 1980 NEXT I 1990 CALL GCHAR(8,25,CH) 2000 IF CH=32 THEN 2220 2010 REM //GOT THEM ALL!// 2020 X1=3 2030 X=9 2040 A$="YOU DID IT!!" 2050 GOSUB 2360 2060 RESTORE 90 2070 FOR I=1 TO 16 2080 READ X,K 2090 CALL SOUND(90+10*X,K*5,0,110,4,K,10) 2100 CALL SCREEN(I) 2110 NEXT I 2120 X1=X1+1 2130 X=6 2140 A$="YOU HAVE WIPED OUT" 2150 GOSUB 2360 2160 X1=X1+1 2170 X=2 2180 A$="THE WHOLE ALIEN ATTACK FORCE" 2190 GOSUB 2360 2200 SC=SC+200 2210 REM //END MESSAGE// 2220 A$="TO TAKE ON ANOTHER WAVE" 2230 X=5 2240 X1=17 2250 GOSUB 2360 2260 A$="PRESS 'ENTER'" 2270 X=10 2280 X1=18 2290 GOSUB 2360 2300 CALL KEY(0,X,S) 2310 IF X=13 THEN 570 2320 IF S=0 THEN 2300 2330 CALL CLEAR 2340 END 2350 REM //PRINTS SCORE// 2360 FOR A=1 TO LEN(A$) 2370 CALL VCHAR(X1,A+X,ASC(SEG$(A$,A,1))) 2380 NEXT A 2390 RETURN