INVASION
The future of your planet is in your hands.
Yours is the last alpha base left; everything else has been destroyed by the Astro Fleet.
You can still defeat the warring aliens, but it will take skill and cunning on your part.
Only one multi-directional laser is still operational, but due to a computer malfunction, you cannot move the laser and fire it at the same time.
Z moves your base left, X moves it right; , moves your turret left and . moves it right.
Fire your laser with the space bar.
Remember, existence as you know it depends on you.
Good luck!
SCREENSHOTS
SOURCE
A type-in BASIC program by Alex Kiernan and Peter Lear converted for Tandy Color Computers with 16K RAM and Extended Color BASIC by Derek Simonson, 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 DIM S2(5),S1(5),S3(5),AL(5),EB(6),NN(5) 20 CLS:PRINT:PRINT 30 FORMC=0TO9 40 READCH 50 FORGP=22TO12STEP-1 60 DATA33,73,78,86,65,83,73,79,78,33 70 POKEGP+1054+MC,CH 80 IFMC=9THENPOKEGP+1055+MC,96 90 NEXT:NEXT 100 PRINT:PRINTTAB(8)"BY ALEX KIERNAN" 110 PRINT" CONVERSION BY DEREK SIMONSON" 120 PRINT:PRINT"ENTER: 1-->FOR KEYBOARD 2-->FOR RIGHT JOYSTICK" 130 GOSUB910:JK=VAL(A$):IFJK<1ORJK>2THEN130 140 PRINT:PRINT"INSTRUCTIONS(Y/N)" 150 GOSUB910:IFA$="Y"THEN160ELSE300 160 CLS:PRINTTAB(12)"!INVASION!" 170 PRINT:PRINT"YOU ARE IN CONTROL OF THE SOLE REMAINING ALPHA BASE ON THE TERRAN PLANET EARTH IT IS YOUR JOB TO PREVENT THE WARRING BATTLE FLEET FROM INVADING THE PLANET" 180 PRINT" DUE TO PREVIOUS ATTACKS THE COMPUTER HAS MALFUNCTIONED DISABLING MOVEMENT OF THE BASE AND GUN AT THE SAME TIME *HIT ENTER TO SEE CONTROLS*" 190 GOSUB 910 200 CLS 210 ON JK GOTO220,250 220 PRINTTAB(7)"<<<<<CONTROLS>>>>>" 230 PRINTTAB(6)"BASE TURRET LEFT RIGHT LEFT RIGHT Z X , . SPACE-FIRES" 240 GOTO300 250 PRINT@43,"JOYSTICK" 260 PRINT:PRINTTAB(l2)"TURRET" 270 PRINTTAB(44)" LEFT" 280 PRINT"MOVE LEFT MIDDLE RIGHT" 290 PRINTTAB(12)" RIGHT" 300 PRINT:PRINT" DIFFICULTY 1:HARD - 9:EASY" 310 GOSUB910 320 V=VAL(A$):IFV<1 OR V>9THEN310 330 PRINT"WHAT'S YOUR MARKSMANSHIP RATING 1:EXCELLENT - 5:POOR" 340 GOSUB910 350 X=VAL(A$):IFX<1ORX>5THEN340 360 IX=RND(230)+10:IY=11:LX=IX:LY=IY:PB=RND(230)+10:LB=PB:NN=9:TP=2 370 PMODE3,1:PCLS5 380 SX=21:SY=20 390 DRAW"BM20,20E5R3U5D5R2F5" 400 GET(SX,SY)-(SX+14,SY-10),S2,G 410 PCLS:DRAW"BM20,20E5R3H5F5R2F5" 420 GET(SX,SY)-(SX+14,SY-10),S1,G 430 PCLS:DRAW"BM20,20E5R2E5G5R3F5":GET(SX,SY)-(SX+14,SY-10),S3,G:PCLS 440 PCLS:DRAW"BM20,20C6E2R9L9E3R5F5" 450 PAINT(26,16),6,6:GET(SX,SY)-(SX+15,SY-10),AL,G 460 PCLS:GET(SX,SY)-(SX+15,SY-10),EB 470 PCLS:SCREEN1,1 480 FORA=1TO255STEP9 490 CIRCLE(A,192),15,8 500 NEXT 510 FORA=120TO1+(V*X)STEP-1:PSET(RND(240)+10,RND(165),7):NEXT 520 IX=IX+RND(20)-10 530 IY=IY+RND(9)-INT(V/2) 540 IFIX<10THENIX=15ELSEIFIX>240THENIX=238 550 IFIY<10THENIY=10 560 PUT(LX,LY)-(LX+15,LY+10),EB,PSET 570 PUT(IX,IY)-(IX+15,IY+10),AL,PSET 580 LX=IX:LY=IY 590 IFIY>162THEN870 600 ON JK GOTO610,650 610 A$=INKEY$ 620 IFA$="" THEN 520 630 IF A$="Z"THENPB=PB-V ELSEIFA$="X"THENPB=PB+V ELSEIFA$=","THENTP=TP-1ELSEIFA$="."THENTP=TP+1ELSEIFA$=CHR$(32)THENLB=PB:GOSUB750 640 GOTO680 650 I=PEEK(65280):IFI=126ORI=254THENLB=PB:GOSUB750 660 LE=JOYSTK(0):VO=JOYSTK(1):IFLE<22 THEN PB=PB-V ELSE IF LE>41 THENPB=PB+V 670 IF VO<22THENTP=1ELSEIFVO<44THENTP=2ELSETP=3 680 IFTP=4THENTP=3ELSEIFTP=0THENTP=1 690 IFPB<10THENPB=10ELSEIFPB>240THENPB=240 700 PUT(LB,165)-(LB+14,175),EB,PSET 710 ON TP GOSUB820,830,840 720 LB=PB 730 IF NN=0THEN850 740 GOTO520 750 IFTP=1THENMX=PB+2ELSEIFTP=2THENMX=PB+8ELSEMX=PB+12 760 MY=165 770 IFMX<1ORMY<1ORMX>255THENRETURN 780 IF MY<IY THENRETURN 790 IF MY<IY+10 AND MY>IY THENA=PPOINT(MX-(TP*4-8),MY+4):MC=PPOINT(MX-(TP*2-4),MY+2):E=PPOINT(MX,MY):IFE=7ORMC=7ORA=7THENRETURNELSEIFE=6ORMC=6ORA=6THEN810 800 PSET(MX,MY,8):PSET(BX,BY,5):BX=MX:BY=MY:MX=MX+(TP*6-12):MY=MY-6:GOTO770 810 NN=NN-1:IX=RND(230)+10:IY=15:SCREEN1,0:PLAY"T30V10BV20CV30D":SCREEN1,1:RETURN 820 PUT(PB,165)-(PB+14,175),S1,PSET:RETURN 830 PUT(PB,165)-(PB+14,175),S2,PSET:RETURN 840 PUT(PB,165)-(PB+14,175),S3,PSET:RETURN 850 PLAY"ABCDEF" 860 CLS:PRINT" YOU HAVE DESTROYED ALL THE ALIENS AND HAVE SAVED EARTH":GOTO890 870 FORA=1TO10:SCREEN1,RND(2)-1:PLAY"T50ABCDEFG":NEXT 880 CLS:PRINTTAB(7);"!!!!YOU'RE DEAD!!!! -NUMBER OF INVADERS DESTROYED-":PRINTTAB(14)9-NN 890 PRINT" ------>PLAY AGAIN<------" 900 GOSUB910: IFA$="Y"THEN300ELSEEND 910 A$=INKEY$:IFA$=""THEN910ELSERETURN
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 add the following to the end of line 900 to restore normal speed before exit:
... :POKE65494,0:END
RUNNING IN EMULATORS
You can type-in and run the BASIC directly from command line with XRoar:
$ xroar -machine cocous INVASION.BAS
You can create a virtual floppy disk to load and run from in MAME:
$ decb dskini INVASION.DSK $ decb copy INVASION.BAS INVASION.DSK,INVASION.BAS -t $ mame cocoe -ramsize 16K -window -resolution 1920x1080 -skip_gameinfo -flop1 INVASION.DSK RUN"INVASION
Requires a cocoe.zip ROM pack in ${HOME}/mame/roms and the Toolshed utilities to build the DECB disk image.