home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug003.ark / LEM.BAS < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  6.6 KB  |  240 lines

  1.       PRINT
  2.       PRINT
  3.       PRINT
  4.       PRINT
  5.       PRINT
  6.       PRINT
  7.             PRINT "          L    U    N    A    R"
  8.       PRINT 
  9.       PRINT "                    L    A    N    D    E    R"
  10.       PRINT
  11.       PRINT
  12.       PRINT TAB(25);"LUNAR LANDING SIMULATION"
  13.       PRINT CHR$(7)
  14.       PRINT TAB(15);"-------HOUSTON CALLING LUNAR MODULE-------"
  15.       PRINT TAB(15);
  16.       PRINT TAB(15);"YOU MAY SET THE FUEL RATE (K) TO ZERO OR ANY VALUE"
  17.       PRINT TAB(15);"BETWEEN 8 AND 200 LBS PER SECOND.  A NEGATIVE FUEL"
  18.       PRINT TAB(15);"RATE WILL ABORT THE MISSION."
  19.       PRINT
  20.       PRINT TAB(15);"YOU HAVE 16000 LBS OF FUEL."
  21.       PRINT TAB(15);"ESTIMATED FREE FALL IMPACT TIME IS 120 SECONDS."
  22.       PRINT TAB(15);"CAPSULE WEIGHT IS 32,500 LBS."
  23. 90    PRINT
  24.       PRINT TAB(20);"FIRST RADAR CHECK COMING UP..."
  25.       PRINT TAB(20);"BEGIN LANDING PROCEDURE" :PRINT:PRINT
  26.       PRINT "TIME(SECS)","HEIGHT(MI)","VELOCITY(MPH)","FUEL(LBS)","FUEL RATE"
  27.       LET L=0:LET A=120:LET V=1:LET M=32500:LET N=16500
  28.       LET G=.001:LET Z=1.8
  29. 210      PRINT INT(L+.5),A,V*3600,M-N,"K  ";
  30.       INPUT K
  31.       LET T=10
  32. 230   IF K<0 THEN GO TO 590
  33.       IF K=0 THEN GO TO 310
  34.       IF K<8 THEN 260
  35.       IF K<=200 THEN GO TO 310
  36. 260   PRINT TAB(9);"INVALID BURN RATE - RETRY";TAB(57);"K  ";
  37.       INPUT K:  GO TO 230
  38. 310   IF M-N-.001 <0 THEN GO TO 410
  39.       IF T<.001 THEN GO TO 210
  40.       S=T
  41.       IF N +S*K <=M THEN GO TO 350
  42.       S=(M-N) /K
  43. 350   I0 =1
  44.       GO TO 900
  45. 360   IF I <=0 THEN GO TO 710
  46.       IF V <=0 THEN GO TO 380
  47.       IF J <0 THEN GO TO 810
  48. 380   I0=1
  49.       GO TO 600
  50. 410   REM
  51.       PRINT
  52.       PRINT "FUEL OUT AT " ;L;" SECS"
  53.       S=(-V+SQR(V*V+2*A*G))/G
  54.       V =V+G*S
  55.       L=L+S
  56. 510   REM
  57.       PRINT
  58.       PRINT TAB(10);"----------- 'THE EAGLE HAS LANDED!' -----------"
  59.       PRINT
  60.       PRINT TAB(10);"ON THE MOON AT ";L;" SECS"
  61.       W=3600*V
  62.       PRINT TAB(10);"IMPACT VELOCITY OF ";W;" MPH"
  63.       PRINT TAB(10);"FUEL LEFT "; M-N;" LBS"
  64.     IF W>=60 THEN \
  65.         GOSUB 1100 :\
  66.         GOTO 590
  67.     IF W>=25 THEN \
  68.         WWW=INT((W/5))-4 :\
  69.         GOSUB 5000 :\        REM ON GOSUB
  70.         GOTO 590
  71.     ON INT(W+.5)+1 GOSUB 2000,2100,2200,2300,2400,2500,2600, \
  72.                  2700,2800,2900,3000,3100,3200,3300, \
  73.                  3400,3500,3600,3700,3800,3900,4000, \
  74.                  4100,4200,4300,4400,4400 
  75.     GOTO 590
  76.     PRINT "<ON> STMT ERROR"
  77. 1100    REM-----  W>=60-----
  78.     PRINT TAB(10);"SORRY, THERE WERE NO SURVIVORS"
  79.     PRINT TAB(10);"IN FACT, YOU BLASTED A NEW LUNAR CRATER ";
  80.     PRINT W*.277777;" FEET DEEP!"
  81.     RETURN
  82. 1200    REM----- 25<=W<30
  83.     PRINT TAB(10);"UNSAFE LANDING WITH MINOR CRAFT DAMAGE"
  84.     RETURN
  85. 1300    REM----- 30<=W<35
  86.     PRINT TAB(10);"LANDING GEAR DAMAGED"
  87.     RETURN
  88. 1400    REM----- 35<=W<40
  89.     PRINT TAB(10);"DAMAGE SIGNIFICANT. UNABLE TO TAKE OFF"
  90.     RETURN
  91. 1500    REM----- 40<=W<45
  92.     PRINT TAB(10);"MAJOR DAMAGE.  CREW INJURED."
  93.     RETURN
  94. 1600    REM----- 45<=W<50
  95.     PRINT TAB(10);"IMPACT SEVERE.  CRAFT DESTROYED."
  96.     RETURN
  97. 1700    REM----- 50<=W<55
  98.     PRINT TAB(10);"LANDING CRAFT DISINTEGRATED ON IMPACT."
  99.     RETURN
  100. 1800    REM----- 55<=W<60
  101.     PRINT TAB(10);"TOTAL LOSS"
  102.     RETURN
  103. 2000    REM----- 0<=W<.5
  104.     PRINT CHR$(7);TAB(10);"----------------------------------------"
  105.     PRINT TAB(10);"     P   E   R   F   E   C   T   !"
  106.     PRINT CHR$(7);TAB(10);"----------------------------------------"
  107.     PRINT 
  108.     RETURN
  109. 2100    REM----- .5<=W<1.5
  110.     PRINT TAB(10);"G R E A T       L A N D I N G"
  111.     PRINT
  112.     RETURN
  113. 2200    REM----- 1.5<=W<2.5
  114.     PRINT TAB(10);"EXCELLENT LANDING, CAPTAIN"
  115.     RETURN
  116. 2300    REM----- 2.5<=W<3.5
  117.     PRINT TAB(10);"ONE OF THE BEST LANDINGS I'VE SEEN"
  118.     RETURN
  119. 2400    REM----- 3.5<=W<4.5
  120.     PRINT TAB(10);"VERY GOOD, SIR.  ALMOST THERE"
  121.     RETURN
  122. 2500    REM----- 4.5<=W<5.5
  123.     PRINT TAB(10);"GOOD LANDING"
  124.     RETURN
  125. 2600    REM----- 5.5<=W<6.5
  126.     PRINT TAB(10);"SOFT LANDING"
  127.     RETURN
  128. 2700    REM----- 6.5<=W<7.5
  129.     PRINT TAB(10);"SOFT LANDING BUT THE CREW IS SHAKEN"
  130.     RETURN
  131. 2800    REM----- 7.5<=W<8.5
  132.     PRINT TAB(10);"OK LANDING BUT HOUSTON IS COMPLAINING"
  133.     RETURN
  134. 2900    REM----- 8.5<=W<9.5
  135.     PRINT TAB(10);"FENDER BENDER"
  136.     RETURN
  137. 3000    REM----- 9.5<=W<10.5
  138.     PRINT TAB(10);"ARE YOUR HANDS SWEATING?"
  139.     RETURN
  140. 3100    REM----- 10.5<=W<11.5
  141.     PRINT TAB(10);"WHEW. . .  THAT WAS CLOSE!"
  142.     RETURN
  143. 3200    REM----- 11.5<=W<12.5
  144.     PRINT TAB(10);"GETTING BETTER"
  145.     RETURN
  146. 3300    REM----- 12.5<=W<13.5
  147.     PRINT TAB(10);"IMPACT VELOCITY APPROACHING SAFETY LIMITS"
  148.     RETURN
  149. 3400    REM----- 13.5<=W<14.5
  150.     PRINT TAB(10);"NEIL ARMSTRONG COULD DO BETTER"
  151.     RETURN
  152. 3500    REM----- 14.5<=W<15.5
  153.     PRINT TAB(10);"ANY FASTER AND THE PRESIDENT WON'T TELEPHONE YOU"
  154.     RETURN
  155. 3600    REM----- 15.5<=W<16.5
  156.     PRINT TAB(10);"HOUSTON: 'ARE YOU ALL RIGHT UP THERE?!?'"
  157.     RETURN
  158. 3700    REM----- 16.5<=W<17.5
  159.     PRINT TAB(10);"AT LEAST YOU MADE IT"
  160.     RETURN
  161. 3800    REM----- 17.5<=W<18.5
  162.     PRINT TAB(10);"WELL, THAT'S BETTER THAN THE RUSSIANS DID"
  163.     RETURN
  164. 3900    REM----- 18.5<=W<19.5
  165.     PRINT TAB(10);"POSSIBLE DAMAGE TO CRAFT"
  166.     RETURN
  167. 4000    REM----- 19.5<=W<20.5
  168.     PRINT TAB(10);"HOUSTON IS REVOKING YOUR PILOTS LICENSE"
  169.     RETURN
  170. 4100    REM----- 20.5<=W<21.5
  171.     PRINT TAB(10);"AFTER THAT IMPACT, THE LANDER WILL NEED AN OVERHAUL!"
  172.     RETURN
  173. 4200    REM----- 21.5<=W<22.5
  174.     PRINT TAB(10);"SCIENTIFIC PAYLOAD PACKAGE DAMAGED"
  175.     RETURN
  176. 4300    REM----- 22.5<=W<23.5
  177.     PRINT TAB(10);"EXTERNAL ANTENNA DID NOT SURVIVE THE IMPACT"
  178.     RETURN
  179. 4400    REM----- 23.5<=W<24.5
  180.     PRINT TAB(10);"EVA WILL REVEAL DAMAGE TO LANDING GEAR"
  181.     RETURN
  182.     PRINT:PRINT
  183. 590    REM
  184.       PRINT TAB(20);"TRY AGAIN?  (Y OR N)  ";
  185.      INPUT R$
  186.       IF LEFT$(R$,1)="Y" THEN GO TO 90
  187.     IF LEFT$(R$,1)<>"N" THEN \
  188.         PRINT TAB(20);"HOUSTON: 'I DIDN'T COPY. REPEAT'" :\
  189.         GOTO 590
  190.       PRINT
  191.       PRINT
  192.       PRINT TAB(10);"THIS IS HOUSTON SIGNING OFF"
  193.       STOP
  194. 600   L=L+S
  195.       T=T-S
  196.       M=M-S*K
  197.       A=I
  198.       V=J
  199.       IF I0=1 THEN GO TO 310
  200.       IF I0=3 THEN GO TO 850
  201. 710   IF S<.005 THEN GO TO 510
  202. TEMP1=(G-Z*K/M)
  203. TEMP=V*V+2*A*(TEMP1)
  204. S=2*A/(V+SQR(TEMP))
  205.       I0=2
  206.       GO TO 900
  207. 810   W=(1-M*G/(Z*K))/2
  208. TEMP1=(W*W+V/Z)
  209. TEMPT=(W+SQR(TEMP1))
  210. TEMPT2=(Z*K*(TEMPT))
  211. S=M*V/TEMPT2+.05
  212.       I0=3
  213.       GO TO 900
  214. 830   IF I<=0 THEN GOTO 710
  215.       GO TO 600
  216. 850   IF J>=0 THEN GO TO 310
  217.       IF V<=0 THEN GO TO 310
  218.       GO TO 810
  219. 900   Q=S*K/M
  220.       IF Q<=0 THEN GO TO 1000
  221. TEMP=(1/4+Q*(1/5))
  222. TEMP1=(1/3+Q*(TEMP))
  223. TEMP2=(1/2+Q*(TEMP1))
  224. TEMP3=(1+Q*(TEMP2))
  225. J=V+G*S+Z*(-Q*(TEMP3))
  226. TEMP=(1/20 +Q*(1/30))
  227. TEMP1=(1/6+Q*(1/12+Q*TEMP))
  228. TEMP2=(1/2+Q*(TEMP1))
  229. TEMP3=(Q*(TEMP2))
  230. I=A-G*S*S/2-V*S+Z*S*(TEMP3)
  231. 930   IF I0=1 THEN GO TO 360
  232.       IF I0=2 THEN GO TO 600
  233.        IF I0=3 THEN GO TO 830
  234. 1000   J=V+G*S
  235.       I=A-G*S*S/2-V*S
  236.       GO TO 930
  237. 5000    REM-----ON GOSUB
  238.     ON WWW GOSUB 1200,1300,1400,1500,1600,1700,1800
  239.     RETURN
  240.