ALIEN ATTACK
You await your doom inside the crippled space station.
The aliens will be attacking in clusters.
There are eight different ways that they can get in.
When they do come, the station's force shields will protect you from at least three blasts on each side.
Then, if you're lucky, you will figure out how to operate the malfunctioning laser cannon and fight back.
There are several controls that could do it - your joystick and some keys.
Try T, Y, U, G, J, B, N and M.
Maybe by destroying enough attackers you will be able to recharge your shield and save the space station and your life.
Note: Try pressing H, C and other keys after the game
SCREENSHOTS
SOURCE
A type-in BASIC program by Peter Lear converted for Tandy Color Computers with 16K RAM and Extended Color BASIC by Scott McCann, published in TRS-80 Colour Computer Space Adventures.
Please note - this played through without crashing but there may still be typoes in this code.
10 'ALIEN ATTACK': BY PETER LEAR ADAPTED FOR 16K TRS-80 EXTENDED COLOR COMPUTER BY SCOTT MCCANN 20 DIMA(5,5),B(9,9),C(10,10),M(8),D(9,9) 30 CLS:PRINT@10, "ALIEN ATTACK" 40 PLAY"T12DEFDEFP5DEFP5DEFGGP2DEFFEEFFGFDFGEDT255T255" 50 PRINT:PRINT" - SHIELDS REPLACED WHEN INDICATOR REACHES TOP.":PRINT 60 INPUT"SHOTS FACTOR (1-9)";JJ:IF JJ>9 ORJJ<1THEN60 70 RESTORE 80 XX=0:YY=0:X=0:Y=0 90 FOR J=1TO8:READU(J),V(J):NEXT 100 FOR I=1 TO 8:READN(I):NEXT 110 A$="qTYUJMNBG" 120 INPUT"(1) JOYSTICKS OR (2) KEYS";A:IF A<>1ANDA<>2THEN120 ELSECLS 130 IF A=2 THEN PRINT@0,"TO MOVE USE:":PRINT" TYU":PRINT" G J":PRINT" BNM":IF INKEY$=""THEN130 140 CLS:PRINT@233,"GOOD LUCK"; 150 SC=0:CS=0:POKE65494,0:FORW=1TO8:M(W)=0:NEXT 160 PMODE 4,1:PCLS 170 DRAW"S4BM12,10":GOSUB180:GOTO190 180 DRAW"G2R4H2D2G2E2F2":GET(10,10)-(15,15),A,G:RETURN 190 DRAW"BM40,40NF9BD5NR9BD4NE9BR4NU9BR4NH9":LINE(42,42)-(47,47),PSET,BF:GET(40,40)-(49,49),D,G 200 DRAW"BM21,20R3F1L4D1R4D1L4F1R3":GET(21,20)-(26,25),B,G 210 DRAW"BM43,40ND10R1ND10BR2ND10R1D10":GET(40,40)-(50,50),C,G 220 PCLS:GOSUB780 230 DRAW"BM4,36S4NR5D120R5U120BR2NR7NE2F2" 240 SCREEN1,1:IFA=1THEN300 250 FORDD=1TOJJ:I=INSTR(A$,INKEY$) 260 IF I>1 THEN I=I-1:GOSUB 430 270 NEXT 280 GOSUB 560 290 GOTO250 300 FORDD=1TOJJ:A=JOYSTK(0):B=JOYSTK(1) 310 IF A<21ANDB<21 THEN I=1 320 IF A>20ANDA<41ANDB<21THENI=2 330 IFA>41ANDB<21THENI=3 340 IFA>40ANDB>21ANDB<41THENI=4 350 IFA>40ANDB>40THENI=5 360 IFA>20ANDA<41ANDB>40THENI=6 370 IFA<21ANDB>40THENI=7 380 IFA<21ANDB>21ANDB<41THENI=8 390 IF A>20ANDA<41ANDB>20ANDB<41THEN 410 400 GOSUB430 410 NEXT 420 GOSUB560:GOTO300 430 X=U(I)*1.3+128:Y=V(I)*1.3+96:PUT(X-2,Y-2)-(X+3,Y+3),A,PSET:PLAY"O4EDF" 440 XX=128+9.8*U(I):YY=96+9.8*V(I) 450 PUT(XX-2,YY-2)-(XX+2,YY+2),B,PSET:LINE(XX-2,YY-2)-(XX+2,YY+2),PRESET,BF 460 XX=XX+U(I):YY=YY+V(I):IFXX<42ORXX>220ORYY<5ORYY>182 THEN 520 470 IF PPOINT(XX,YY)=5 THEN490 480 GOTO 450 490 IF I/2=INT(I/2) THENS=75 ELSES=50 500 SC=SC+S:CS=CS+S:M(I)=0:IF SC>1199 THENGOSUB780:SC=0:LINE(6,156)-(7,37),PRESET,BF:PLAY"O2DO4DO2DO4DO3DFO1DFEGO4DEFGO2DEFFGO1DFFGCCA" 510 PLAY"O1FDE" 520 LINE(X-2,Y-2)-(X+2,Y+2),PRESET,BF 530 X=U(I)*17+128:Y=V(I)*17+96:LINE(X-5,Y-5)-(X+4,Y+4),PRESET,BF 540 LINE(6,156)-(7,156-INT(SC/10)),PSET,BF 550 RETURN 560 FORDD=3TOJJ/3 STEP-1:J=RND(8) 570 IF M(J)=2 THEN GOSUB 630 580 IF M(J)=1 THEN M(J)=2:GOSUB620 590 IF M(J)=0 THEN M(J)=1 600 NEXT 610 RETURN 620 X=U(J)*17+128:Y=V(J)*17+96:PUT(X-5,Y-5)-(X+4,Y+4),D,PSET:RETURN 630 XX=U(J)*14+128:YY=V(J)*14+96 640 I=N(J) 650 LINE(XX,YY)-(XX+U(I)/5,YY+V(I)/5),PSET:LINE(XX,YY)-(XX+U(I)/5,YY+V(I)/5),PRESET 660 IF H THEN H=0:LINE(XX-6,YY-6)-(XX+6,YY+6),PSET,BF:LINE(XX-6,YY-6)-(XX+6,YY+6),PRESET,BF:PLAY"O1FF":RETURN 670 IF XX=128ANDYY=96THEN700 680 XX=XX+U(I)*2:YY=YY+V(I)*2:IFPPOINT(XX,YY)ORPPOINT(XX+U(I),YY+V(I))THEN H=1 690 GOTO650 700 FORW=1TO44:SCREEN1,RND(2)-1:NEXT:SCREEN1,1 710 FORW=1TO18:PLAY"V"+STR$(W+12)+"O1C":CIRCLE(128,96),W,5:NEXT:FORW=18TO1STEP-1:PLAY"V"+STR$(W+12)+"DC":CIRCLE(128,96),W,0:NEXT 720 DRAW"BM125,93S4":GOSUB180:FORW=1TO100:NEXT:FORW=1TO36STEP4:DRAW"BM125,93;S"+STR$(W):GOSUB180:NEXT 730 PCLS:CLS:FORW=1TO50:NEXT:SCREEN1,0:PRINT@0,"TIME-";INT(TIMER/33):PRINT:PRINT"SCORE-";CS 740 IFCS>S(JJ)THENS(JJ)=CS 750 A$=INKEY$:IFA$="H"THENCLS:PRINT@10,"high scores":PRINT:FORW=1TO9:PRINT"LEVEL"W;TAB((16-LEN(STR$(S(W)))/2));S(W):NEXT:FORW=1TO1000:NEXT:GOTO30 760 IF A$="C" THEN30ELSE IFA$<>"" THEN CLS:GOTO140 770 GOTO750 780 FORW=4TO12STEP4 790 DRAW"BM128,96;S"+STR$(W)+";BU15R5F10D10G10L10H10U10E10R5" 800 NEXT:RETURN 810 DATA -5,-5,0,-5,5,-5,5,0,5,5,0,5,-5,5,-5,0 820 DATA 5,6,7,8,1,2,3,4
SPEEDING UP
Add the following lines at the top to disable BREAK key checking and switch the SAM into high-speed mode:
1 IF PEEK(&H3EB9)<>&H32 THEN CLEAR200,&H3EB0:FOR I=&H82B9 TO &H831E:POKE I-&H4400,PEEK(I):NEXT ELSE 6 2 FORI=0TO2:POKE &H3EBD+I,18:NEXT:I=&H3F1E 3 POKE I,&H26:POKE I+1,3:POKE I+2,&H7E:POKE I+3,&H83:POKE I+4,&H22:POKE I+5,&H7E 4 POKE I+6,&HA4:POKE I+7,&H4C 5 POKE &H019A,&H39:POKE &H019B,&H3E:POKE &H019C,&HB9:POKE &H019A,&H7E 6 POKE 65495,0
And remove the following from line 150 to avoid normal speed in the game:
... :POKE65494,0
RUNNING IN EMULATORS
You can type-in and run the BASIC directly from command line with XRoar:
$ xroar -machine cocous ALIENATT.BAS
You can create a virtual floppy disk to load and run from in MAME:
$ decb dskini ALIENATT.DSK $ decb copy ALIENATT.BAS ALIENATT.DSK,ALIENATT.BAS -t $ mame cocoe -ramsize 16K -window -resolution 1920x1080 -skip_gameinfo -flop1 ALIENATT.DSK RUN"ALIENATT
Requires a cocoe.zip ROM pack in ${HOME}/mame/roms and the Toolshed utilities to build the DECB disk image.