0 REM  ÌÁÓÅÒ ÇÕÎÎÅÒ®Ö²                 ›1 REM  Áî åîãèáîãåíåîô ïæ Ìáóåò Çõîîåò ›2 REM  éî Éóóõå ³° ïæ ÃÏÍÐÕÔÅ¡         ›3 REM  Ôèå ðòïçòáí áììï÷ óéíõôáîåïõó   ›4 REM  íïôéïî ïæ ôèå íéóóéìåó õóéîç ôèå›5 REM  öåòôéãìå âìáîë ðåòéïä®          ›6 REM  Äåöåìïðåä âù Ôèïíáó Á® Íáòóèáìì ›7 REM  Áìâõñõåòñõ嬠ÎÍ ¸·±²³           ›10 GOSUB 1400›20 RESTORE ›100 DIM PM$(2048):GRAPHICS 2+16›110 DIM ALIEN$(11),PLAYER$(11),NULL$(11),EXPLODE$(12*9),TARGET(20)›120 FOR I=1 TO 11:NULL$(I)=CHR$(0):NEXT I›130 LEVEL=15:CNT=15:REM DECREASE LEVEL FOR A HARDER GAME›140 A=ADR(PM$):REM RAW ADDRESS›150 PMBASE=INT(A/1024)*1024:REM NEAREST 1 K BOUNDARY›160 IF PMBASERY THEN POKE 53253,MH-I*2›480 IF PEEK(53279)>6 THEN NEXT I›490 PM$(MS+RY+10,MS+RY+10)=CHR$(0)›500 FOR I=110 TO 32 STEP -1:PM$(P1+I,P1+I+11)=ALIEN$:IF PEEK(53279)>6 THEN NEXT I›510 IF PEEK(53279)>=7 THEN 450›515 POSITION 9,5:? #6;" ":POSITION 9,6:? #6;" "›520 IF PEEK(53279)=3 THEN FOR I=0 TO 4:POKE 53248+I,0:NEXT I:GRAPHICS 0:END ›530 DATA 0,0,224,48,120,63,120,48,224,0,0›540 FOR I=1 TO 11:READ A:PLAYER$(I)=CHR$(A):NEXT I›550 PY=60:REM SET PLAYER'S VERITCAL LOCATION›560 PM$(P0+PY,P0+PY+11)=PLAYER$›570 PM$(P1,P1)=CHR$(0):PM$(P1+127,P1+127)=CHR$(0):PM$(P1+2,P1+127)=PM$(P1)›580 AY=INT(78*RND(0)+32):PM$(P1+AY,P1+AY+11)=ALIEN$:REM RESET ALIEN›590 POKE 53256,1:REM PLAYER 0 DOUBLE-WIDTH›600 POKE 53248,64:REM HORIZONTAL POSITION OF PLAYER 0›610 POKE 704,26:REM COLOR OF PLAYER 0›620 POKE 53260,1:REM MISSILE 0 DOUBLE-WIDTH›630 ST=STICK(0):IF ST<>15 THEN DIR=ST:F=2:SOUND 0,100,0,8›635 IF PEEK(CMPFLG)=1 THEN PM$(TMS,TMS)=CHR$(0):POKE CMPFLG,0:REM THE MISSILES HIT EACH OTHER›636 IF PEEK(COLFLG)=1 THEN POKE COLFLG,0:GOTO 900:REM THE ALIEN MISSILE HIT THE WALL OR ZONE›640 PY=PY-(DIR=14)*(PY>32)*F+(DIR=13)*(PY<110)*F:F=1:REM UPDATE PLAYER›650 PM$(P0+PY,P0+PY+11)=PLAYER$:SOUND 0,0,0,0›660 IF PEEK(M0FLG)=1 THEN GOSUB 1310:REM ERASE THE PLAYER'S MISSILE›670 IF PEEK(TRIGFLG)=0 THEN GOSUB 1310:POKE M0FLG,0:TMS=MS+PY+5:GOSUB 1300:POKE TRIGFLG,1:REM THE TRIGGER WAS PRESSED›720 IF PEEK(HITFLG)<>0 THEN 790:REM NO COLLISION›725 REM THE PLAYER'S MISSILE HIT THE ALIEN›730 SCR=SCR+10:POSITION 11-LEN(STR$(SCR))/2,5:? #6;SCR›735 PM$(TMS,TMS)=CHR$(0):POKE M0FLG,1:POKE HITFLG,1:POKE 53278,0›740 AY=AY+1:P=PEEK(705):REM PRESERVE COLOR OF ALIEN›750 FOR I=0 TO 11:Z=I*9:PM$(P1+AY,P1+AY+9)=EXPLODE$(Z+1,Z+9)›760 POKE 705,PEEK(53770):POKE 53279,0:SOUND 0,I*2,0,15-I:FOR W=1 TO 2:NEXT W:NEXT I›770 POSITION 5,5:? #6;" ":REM ERASE SCORE›780 SOUND 0,0,0,0:POKE 705,P:GOTO 570›790 IF AY=PY THEN 870:REM TOO CLOSE FOR COMFORT›800 IF TARGET=0 THEN GOSUB 950:TARGET=TARGET(INDEX):REM SELECT A TARGET›810 IF AY<>TARGET THEN 840›820 CNT=CNT-1:IF CNT THEN 630›830 CNT=LEVEL:GOTO 870›840 AY=AY+SGN(TARGET-AY):REM MOVE TOWARDS TARGET›850 PM$(P1+AY,P1+AY+11)=ALIEN$›860 GOTO 630›870 IF ABS(AY-PY)<10 THEN GOSUB 970›875 IF PEEK(ALIEFLG)=0 THEN 630›880 POKE ALIEFLG,0:TM1S=MS+AY+5:GOSUB 1320:TTAY=AY:GOTO 630›900 P=ASC(PM$(P2+TTAY+5))*2-256:GOSUB 1330:POKE 53278,0:REM CUT HOLE IN WALL›910 IF P<0 THEN 1000:REM WALL DESTROYED›920 PM$(P2+TTAY+5,P2+TTAY+5)=CHR$(P)›930 GOTO 630›940 REM PICK A TARGET›950 INDEX=INDEX+1:TARGET(INDEX)=INT(78*RND(0)+32):RETURN ›970 IF INDEX=1 THEN 950›980 TARGET=TARGET(INT(INDEX*RND(0)+1)):RETURN ›990 REM DESTRUCTION OF PLAYER›1000 FOR I=1 TO 100:Z1=TTAY+5+I:Z2=TTAY+5-I›1005 PM$(TMS,TMS)=CHR$(0):POKE M0FLG,1:POKE M0PFLG,72›1010 IF Z1<126 THEN PM$(P2+Z1,P2+Z1)=CHR$(0)›1020 IF Z2>30 THEN PM$(P2+Z2,P2+Z2)=CHR$(0)›1030 IF Z1<126 OR Z2>30 THEN NEXT I›1040 FOR I=30 TO 1 STEP -1:FOR J=0 TO 20 STEP 3:SOUND 0,J+1,10,8:POKE 707,PEEK(53770):NEXT J:NEXT I›1050 SOUND 0,0,0,0:SOUND 1,0,0,0:POKE 707,14:FOR W=1 TO 50:NEXT W:POKE 707,0›1060 FOR I=0 TO 15 STEP 0.2:SOUND 0,I,8,I:POKE 704,16+I:NEXT I›1070 SOUND 0,0,0,0›1080 Z1=PY:Z2=PY:INCR=0›1090 Z1=Z1+INCR*(Z1<128):Z2=Z2-INCR*(Z2>=0):POKE 704,PEEK(53770)›1100 PM$(P0+Z1,P0+Z1)=CHR$(255):PM$(P0+Z2,P0+Z2)=CHR$(255):POKE 53279,0›1110 INCR=INCR+0.5:IF Z1<127 OR Z2>0 THEN 1090›1120 FOR I=1 TO 100:POKE 704,PEEK(53770):NEXT I›1130 FOR I=0 TO 7:POKE 53248+I,0:NEXT I:GRAPHICS 18›1140 POSITION 4,0:? #6;"ìáóåò çõîîåò":POSITION 3,5:? #6;"your score was:";›1150 POSITION 10-LEN(STR$(SCR))/2,7:? #6;SCR›1160 FOR I=15 TO 0 STEP -0.2:SOUND 0,10+10*RND(0),0,I:SOUND 1,100+10*RND(0),16,I›1170 SETCOLOR 4,3,14*RND(0):NEXT I›1280 RUN ›1299 REM  Í° ÓÅÔ ›1300 Q=USR(ANORA,ASC(PM$(TMS,TMS)),3,2):PM$(TMS,TMS)=CHR$(Q):RETURN ›1309 REM  Í° ÃÌÅÁÒ ›1310 Q=USR(ANORA,ASC(PM$(TMS,TMS)),12,1):PM$(TMS,TMS)=CHR$(Q):RETURN ›1319 REM  Í± ÓÅÔ ›1320 Q=USR(ANORA,ASC(PM$(TM1S,TM1S)),12,2):PM$(TM1S,TM1S)=CHR$(Q):RETURN ›1329 REM  Í± ÃÌÅÁÒ ›1330 Q=USR(ANORA,ASC(PM$(TM1S,TM1S)),3,1):PM$(TM1S,TM1S)=CHR$(Q):RETURN ›1400 TRIGFLG=1546:HITFLG=1547:M0FLG=1548:TMS=1:TM1S=1›1410 ALIEFLG=1550:COLFLG=1551›1420 ANORA=1753:CMPFLG=1553›1430 IF PEEK(1753)=104 THEN RETURN ›1440 GRAPHICS 18:? #6;"INITIALIZING"›1450 RESTORE 1500:GOSUB 1500›1460 A=USR(1536):RETURN ›1500 FOR I=1536 TO 1552:READ A:POKE I,A:NEXT I›1509 REM  ÉÎÉÔ ±µ³¶ ÔÏ ±µµ² ›1510 DATA 104,169,6,170,160,22,32,92,228,96,1,1,1,72,1,0,180›1520 FOR I=1558 TO 1709:READ A:POKE I,A:NEXT I›1530 REM  ÍÉÓÓÉÌÅ ÍÏÖÉÎÇ ÒÏÕÔÉÎÅ ›1540 DATA 173,132,2,201,0,240,2,208,12,205,12,6,240,12,169,0,141,10,6,240›1550 DATA 58,205,12,6,240,53,238,13,6,238,13,6,173,13,6,141,4,208,173,8›1560 DATA 208,41,2,208,9,173,13,6,201,190,144,27,176,15,173,13,6,201,170,144›1570 DATA 18,169,0,141,30,208,141,11,6,169,1,141,12,6,169,72,141,13,6,173›1580 DATA 14,6,201,0,208,63,173,9,208,41,1,208,21,173,9,208,41,12,208,29›1590 DATA 206,16,6,206,16,6,173,16,6,141,5,208,208,35,169,1,141,17,6,141›1600 DATA 12,6,169,72,141,13,6,208,5,169,1,141,15,6,169,0,141,30,208,169›1610 DATA 1,141,14,6,169,180,141,16,6,76,95,228›1620 FOR I=1753 TO 1791:READ A:POKE I,A:NEXT I›1630 REM   ÁÎÄ­ÏÒ ÒÏÕÔÉÎÅÓ ›1640 DATA 104,104,104,141,215,6,104,104,141,216,6,104,104,201,1,208,9,173,215,6›1650 DATA 45,216,6,76,249,6,173,215,6,13,216,6,133,212,169,0,133,213,96›1660 RETURN ›