MOONSHUTTLE

Five…four …three…two…one… lift off!

You have just left Phobos, one of the two moons of the planet Mars, and now you must land on Deimos, the other moon.

But landing here isn't an easy task.

You must navigate your moonshuttle through a deadly asteroid field.

Using your four thrusters, U to go up, J to move right, H to move left and N to go down, you can maneuver through your descent and avoid the asteroids.

To keep track of your fuel and energy consumption, read-outs of this information are given periodically.

SCREENSHOTS

Startup:

Instructions:

Playing:

SOURCE

A type-in BASIC program by P.A. Roberts and converted to 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 PCLEAR5
20 DIM SH(20),BL(20),B(36)
30 SY=9
40 E=30
50 FORGP=0TO35:READB(GP):NEXT
60 DATA28,147,50,30,36,188,72,90,16,182,30,120,112,111,130,20,140,169,164,50,174,65,196,20,204,135,219,40,180,185,203,60,84,172,97,60
70 CLS:PRINT:PRINT
80 FORMC=1TO11
90 READCH
100 FORGP=22TO10STEP-1
110 DATA77,79,79,78,83,72,85,84,84,76,69
120 POKEGP+1054+MC,CH
130 IFMC=11THENPOKEGP+1055+MC,96
140 NEXT:NEXT
150 PRINT:PRINT:PRINT"       BY P.A. ROBERTS"
160 PRINT"  CONVERSION BY DEREK SIMONSON"
170 PRINT:PRINTTAB(6)"INSTRUCTIONS(Y/N)"
180 RE$=INKEY$:IFRE$=""THEN180ELSEIFRE$="Y"THENGOSUB1030
190 PMODE3,1:PCLS
200 DRAW"BM20,20C6R2F2D4G2BR2BD1U1BL2L2BL2BD1U1BR2H2U4E2"
210 PAINT(22,22),6,6
220 GET(17,20)-(26,29),SH,G
230 PUT(50,50)-(59,59),SH,PSET
240 PCLS:GET(16,20)-(25,29),BL,G
250 COLOR8,5:FORGP=0TO35STEP4:LINE(B(GP),B(GP+1))-(B(GP+2),B(GP+1)),PSET:NEXT
260 DRAW"BM0,2S4C6R4L4D2R2L2D2BR9BD1R60U6L60D6"
270 DRAW"BM0,100C7R6F8D12F12D16R20U28H8U12E16R3E12F3D4F8D4G16D16F4D8F8D8G16L6H8L24G8D16R16F6R32E16R12U10E16U4H13U20E6F8R16E8R4F6R4F6G8L4F12G12L8D22R24E16R4H6E12H8E20H30E4U8R24D8F12D4F8G26F12R16F4G16L6G8D4H6G16F8R24E10F4E10F4E8R8U36H6E6U36G4U8G4U6E8R8"
280 PAINT(1,101),7,7
290 IFAF=1THEN320
300 PRINTTAB(10)"LEVEL(1-9)";
310 RE$=INKEY$:IFRE$=""THEN310ELSEL=VAL(RE$)
320 PMODE0,5:PCLS:SCREEN1,1:FORGP=5TO1STEP-1
330 IFGP=5THENA$="BR2L2D2R2D2L2"
340 IFGP=4THENA$="D2R2U2D4"
350 IFGP=3THENA$="R2D2L1R1D2L2"
360 IFGP=2THENA$="R2D2L2D2R2"
370 IFGP=1THENA$="BR2D4"
380 PCLS:DRAW"BM127,95S12;XA$;"
390 SOUND20*GP,5
400 NEXT
410 GP=RND(230)+10
420 LX=GP:LY=SY
430 PMODE3,1:SCREEN1,1
440 FORSX=240TO GP STEP-1
450 PUT(SX+1,SY)-(SX+11,SY+9),BL,PSET
460 PUT(SX,SY)-(SX+9,SY+9),SH,PSET
470 NEXT
480 FORGP=1TO2*L:CIRCLE(RND(255),RND(70)),4,7:NEXT
490 RE$=INKEY$
500 IFRE$="U"THEN560
510 IFRE$="J"THEN620
520 IFRE$="H"THEN680
530 IFRE$="N"THEN740
540 SY=SY+1:GOSUB800
550 GOTO490
560 GOSUB860:IFV=2THEN540
570 SY=SY-3
580 IFSY<9THENSY=9
590 GOSUB800
600 IFV=2THEN930
610 IFINKEY$<>"U"THEN490ELSE560
620 GOSUB 860:IFV=2THEN540
630 SX=SX+3
640 IFSX>240THENSX=240
650 GOSUB800
660 IFV=2THEN930
670 IFINKEY$<>"J"THEN490ELSE620
680 GOSUB860:IFV=2THEN540
690 SX=SX-3
700 IFSX<1THENSX=1
710 GOSUB800
720 IFV=2THEN930
730 IFINKEY$<>"H"THEN490ELSE680
740 GOSUB860:IFV=2THEN540
750 SY=SY+2
760 IFSY>240THENSY=240
770 GOSUB800
780 IFV=2THEN930
790 IFINKEY$<>"N"THEN490ELSE740
800 IF PPOINT(SX+9,SY+9)=7ORPPOINT(SX,SY+9)=7ORPPOINT(SX,SY)=7ORPPOINT(SX+9,SY)=7THEN910
810 IFPPOINT(SX+9,SY+9)=8 OR PPOINT(SX,SY+9)=8THEN930
820 PUT(LX,LY)-(LX+9,LY+9),BL,PSET
830 PUT(SX,SY)-(SX+9,SY+9),SH,PSET
840 LX=SX : LY=SY
850 RETURN
860 E=E-1 : IFE<=0THENV=2:E=0
870 IFE>57THENE=57
880 LINE(11,4)-(67,4),PRESET
890 LINE(11,4)-(11+E,4),PSET
900 RETURN
910 FORX=1TO60STEP4:CIRCLE(SX+4,SY+4),X,RND(3)+5:SOUNDX,1:NEXT
920 CLS:PRINT" YOU CRASHED YOUR SHUTTLE":PRINT"FINAL SCORE->"SC:GOTO1010
930 PLAY"T10DEFFED"
940 FORGP=0TO35STEP4:IFSY+9=B(GP+1)THENPT=B(GP+3):SC=SC+PT:E=E+10:ELSENEXT
950 CLS:PRINT"AMOUNT OF FUEL REMANING->"E
960 PRINT"POINTS FOR THIS LANDING->"PT
970 PRINT"CURRENT SCORE->"SC
980 PRINT"HIT <ENTER> WHEN READY FOR NEXT MISSION"
990 SY=9
1000 IFINKEY$=CHR$(13)THENAF=1:GOTO240ELSE1000
1010 PRINT"WOULD YOU LIKE TO PLAY AGAIN Y/N"
1020 RE$=INKEY$ : IFRE$=""THEN1020ELSEIFRE$="Y"THENRUNELSEEND
1030 CLS:PRINTTAB(9)"INSTRUCTIONS"
1040 PRINT:PRINTTAB(7)"DEPARTURE-PHOBOS"
1050 PRINTTAB(6)"DESTINATION-DEIMOS"
1060 PRINT:PRINTTAB(11)"ASSIGNMENT":PRINT"NAVIGATE YOUR SHUTTLE THROUGH   ASTEROID FIELD WATCH YOUR ENERGY  CONSUMPTION WHILE ATTEMPTING         TO LAND ON FLAT AREAS"
1070 PRINT" USE THESE KEYS FOR THRUSTING":PRINTTAB(15)"U":PRINTTAB(14)"H J":PRINTTAB(15)"N"
1080 RETURN

Line 270 has an addtional “8” at the end of the draw statement to finish drawing to the screen edge so that the PAINT statement on the next line (280) does not flood the screen.

Line 1060 spacing is changed to break up the words on the screen differently, and the typographical error of the spelling of asteroid was corrected.

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 restore normal speed on exit:

1015 POKE65494,0

RUNNING IN EMULATORS

You can type-in and run the BASIC directly from command line with XRoar:

$ xroar -machine cocous MOONSHUT.BAS

You can create a virtual floppy disk to load and run from in MAME:

$ decb dskini MOONSHUT.DSK
$ decb copy MOONSHUT.BAS MOONSHUT.DSK,MOONSHUT.BAS -t
$ mame cocoe -ramsize 16K -window -resolution 1920x1080 -skip_gameinfo -flop1 MOONSHUT.DSK
RUN"MOONSHUT

Requires a cocoe.zip ROM pack in ${HOME}/mame/roms and the Toolshed utilities to build the DECB disk image.

RTS

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies