Moon Lander

Date: 198x
Type: Program
Platform(s): TS 2068

Land your lander safely on the Moon.

Appears on

Capital Area Timex Sinclair User Group’s Library Tape.
Library tape of the Indiana Sinclair Timex User’s Group.

Gallery

Moon Lander

Source Code

    1 REM USE LIST 2d RETURN :H\\ NEW o AND g GO SUB i{= CLEAR GO SUB a{= CLEAR LIST \   RETURN :H\\ NEW o AND g GO SUB i{= CLEAR GO SUB a{= CLEAR LIST <>oo
   10 BORDER 5: PAPER 5: LET a=2: LET b=7: CLS 
   20 FOR i=0 TO 21
   30 PRINT AT i,8; INK a; PAPER b;" STOP THE TAPE "
   40 LET c=a: LET a=b: LET b=c: NEXT i
   50 PRINT #1;AT 1,0; INK 9;"        PRESS ANY KEY      "
   60 RANDOMIZE USR 26727
   70 IF INKEY$="" THEN GO TO 60
   80 GO SUB 370
   90 GO SUB 520: GO SUB 400
  100 LET z$=INKEY$: BEEP 0.05,.05+(12 AND fuel<100)
  110 LET angle=angle+(z$="0")-(z$="9")
  120 IF angle=8 THEN LET angle=0
  130 IF angle=-1 THEN LET angle=7
  140 POKE 40006,PEEK 40151: POKE 40151,angle
  150 LET thrust=thrust+(z$="1")-(z$="2" AND thrust>0)
  160 IF fuel<=0 THEN LET fuel=0: LET thrust=0
  170 LET sx=sx+.03-.01*thrust*COS (2*PI*angle/8)
  180 LET sy=sy+.01*thrust*SIN (2*PI*angle/8)
  190 LET x=x+sx
  200 LET y=y+sy
  210 POKE 40038,PEEK 40183
  220 POKE 40020,PEEK 40165
  230 POKE 40183,x
  240 POKE 40165,y
  250 LET fuel=fuel-thrust
  260 PRINT AT 20,2; PAPER 1;fuel;" ";AT 20,9;INT (sx*10);" ";AT 20,15;INT (sy*10);" ";AT 20,21;thrust;" "
  270 LET v=USR 40000
  280 LET v=USR 40145
  290 IF v=0 THEN GO TO 100
  300 IF (INT x)<>48 OR y<170 OR y>204 OR sx>.3 OR sy>.2 THEN LET v=USR 40145: FOR n=8 TO 11: POKE 40006,n: LET v=USR 40000: LET v=USR 40300: LET v=USR 40000: NEXT n: FOR n=1 TO 21: LET v=USR 40550: BEEP 0.02,21-n: NEXT n: PRINT #1;AT 0,0; INK 2; PAPER 6;"  CRASH !!!!    Press a key     ": PAUSE NOT PI: GO TO 320
  310 PRINT #1;AT 0,0; INK 2; PAPER 6;"  ******* SAFE LANDING *******  ": PAUSE NOT PI
  320 FOR n=0 TO 18: PRINT AT n,0; OVER 1; PAPER 0; INK 7,,: NEXT n
  330 IF INKEY$<>"" THEN GO TO 330
  340 PRINT #1;AT 0,0;" Q to QUIT or ANY to play again ": PAUSE NOT PI
  350 IF INKEY$="Q" OR INKEY$="q" THEN STOP 
  360 GO SUB 520: INPUT "": GO SUB 470: GO TO 100
  370 BORDER 0: PAPER 0: INK 9: CLS : PRINT AT 0,0;" *** M O O N L A N D E R ***   "''"       By PETER COOKE"
  380 PRINT AT 5,0;"Use the keys "'"9 turn left"'"0 turn right"'"1 increase thrust"'"2 decrease thrust"''"land your L.E.M. on the pad     (in yellow)."
  390 PRINT AT 20,0;"      press a key to start      ": PAUSE NOT PI: RETURN 
  400 PAPER 0: INK 7: BORDER 0: CLS : FOR n=19 TO 21: PRINT AT n,0; PAPER 1,,: NEXT n
  410 PLOT 0,0: DRAW 255,0: DRAW 0,175: DRAW -255,0: DRAW 0,-175
  420 PLOT 30,175: DRAW 70,-110,.9: DRAW 30,70,.9: DRAW 60,30,-1: DRAW 65,-60,-1.3
  430 PLOT 1,160: DRAW 100,-130,1.3: DRAW 70,90,1: DRAW 40,0: DRAW 44,-60,1
  440 POKE 40452,31: POKE 40454,074: RANDOMIZE USR 40451
  450 REM POKE 40401,51: POKE 40403,175: RANDOMIZE USR 40400
  460 POKE 40401,1: POKE 40403,25: RANDOMIZE USR 40400
  470 PRINT AT 19,2; PAPER 1;"fuel   hsi   vsi   thrust"
  480 PRINT AT 20,2; PAPER 1;fuel;" ";AT 20,9;sx;" ";AT 20,15;sy;" ";AT 20,21;thrust;" "
  490 RANDOMIZE USR 40145
  500 PRINT AT 7,21; INK 6; OVER 1;"      "
  510 RETURN 
  520 LET x=2: LET y=x
  530 LET fuel=2000
  540 LET thrust=0
  550 LET angle=thrust
  560 LET sx=0: LET sy=sx
  570 POKE 40006,angle
  580 POKE 40151,angle
  590 POKE 40020,y: POKE 40165,y
  600 POKE 40038,x: POKE 40183,x
  610 RETURN 
  620 CLEAR 39999: PRINT INK 9;AT 10,2;" HANG ABOUT - STILL LOADING ": LOAD "moonland C"CODE : POKE 23676,166: POKE 23675,104: RUN 
  630 SAVE "Moonland" LINE 620: BEEP .2,22: SAVE "moonland C"CODE 40000,2768: BEEP .2,22

People

No people associated with this content.

Scroll to Top