10 REM LUNAR.ECB 100 REM ... 4 LUNARLANDER GAMES (COMBINED) RALPH HOPKINS 12-15-78 110 SET DS=0: REM ........ LAST CHANGE 12-06-78 120 DIM P(50,15),M3$(50),M4$(25),M5$(30),S$(25) 130 DATA "Y","N"," M.P.H."," SEC. " 140 DATA "**** TYPE IN ANY LETTER TO SEE MORE **** ---=>" 150 DATA "(*) ON THE MOON AT ","+X*X+ RAN OUT OF FUEL AT " 160 READ Y$,Y2$,M1$,M2$,M3$,M4$,M5$ 170 PRINT "&K&J&J&J" 180 PRINT TAB(15);"***********************" 190 PRINT TAB(14);"*** LUNARLANDER GAMES ***" 200 PRINT TAB(15);"***********************" 210 PRINT 220 PRINT " 1 ... LUNARLANDER (LAND A CAPSULE ON THE MOON)" 230 PRINT " 2 ... LUNAR (LAND A CAPSULE ON THE MOON)" 240 PRINT " 3 ... LUNAR-MODULE (CONTROL THE LUNAR MODULE)" 250 PRINT " 4 ... LEM (CONTROL THE 'LEM' LANDER)" 260 PRINT 270 PRINT 280 PRINT "*** PICK A GAME (1-4) ---=>"; 290 INPUT (1,0)X 300 PRINT 310 LET X=INT(X) 320 IF X<1 OR X>4 THEN 170 ELSE PRINT 330 ON X GOTO 1000,3000,4000,5000 340 REM 350 REM 1000 REM ====== LAST MODIFIED 07/23/77 R.E.H. 1010 REM ====== LUNAR LANDER SIMULATOR 1020 PRINT "&K&J" 1030 PRINT TAB(10);" *** L U N A R L A N D E R ***" 1040 PRINT 1050 PRINT "CONTROL CALLING LUNAR MODULE." 1060 PRINT 1070 PRINT " YOU MAY SET THE FUEL RATE (K) TO ZERO OR ANY" 1080 PRINT " VALUE BETWEEN 8 AND 200 LBS PER SECOND." 1090 PRINT " A NEGATIVE FUEL RATE WILL ABORT THE LANDING." 1100 PRINT " You have 16,000 lbs of fuel." 1110 PRINT " ESTIMATED FREE FALL IMPACT TIME IS 120 SEC'S." 1120 PRINT 1130 PRINT M3$; 1140 INPUT (1,200)I$ 1150 PRINT 1160 PRINT " CAPSULE WEIGHT IS 32,500 LBS." 1170 PRINT 1180 PRINT " FIRST RADAR CHECK COMING UP ........" 1190 PRINT 1200 PRINT 1210 PRINT " COMMENCE LANDING PROCEDURE." 1220 PRINT 1230 DEF FNA(X)=INT(X*100)/100 1240 PRINT " TIME ALTITUDE VELOCITY FUEL LEFT FUEL RATE" 1250 PRINT " SECS MILES MPH LBS LBS/SEC" 1260 LET F(1)=0 1270 LET A=120 1280 LET V=1 1290 LET F(2)=32500 1300 LET F(4)=16500 1310 LET G=0.001 1320 LET Z=1.8 1330 PRINT 1340 PRINT INT(F(1)+0.5);TAB(8);FNA(A);TAB(18);FNA(V*3600); 1350 PRINT TAB(28);FNA(F(2)-F(4)); 1360 PRINT TAB(40);" K= "; 1370 INPUT K 1380 LET T=10 1390 IF K<0 THEN 1790 ELSE IF K=0 THEN 1430 1400 IF K-8<0 THEN 1410 ELSE IF K-200<=0 THEN 1430 1410 PRINT "THAT FUEL RATE IS NOT POSSIBLE ......" 1420 GOTO 1360 1430 IF F(2)-F(4)-0.001<0 THEN 1540 1440 IF T-0.001<0 THEN 1340 1450 LET S=T 1460 IF F(4)+S*K-F(2)<=0 THEN 1480 1470 LET S=(F(2)-F(4))/K 1480 GOSUB 2080 1490 IF F(4)<=0 THEN 1900 1500 IF V<=0 THEN 1520 1510 IF F(5)<0 THEN 1950 1520 GOSUB 2020 1530 GOTO 1430 1540 PRINT 1550 PRINT M5$;FNA(F(1));M2$ 1560 LET S=(-V+SQR(V*V+2*A*G))/G 1570 LET V=V+G*S 1580 LET F(1)=F(1)+S 1590 PRINT 1600 PRINT M4$;FNA(F(1));M2$ 1610 LET W=3600*V 1620 PAUSE 10: GOSUB 7000: GOSUB 7100: IF W-60>0 THEN GOSUB 7200 1625 PRINT "IMPACT VELOCITY OF ";W;" M.P.H." 1630 PRINT "FUEL LEFT = ";FNA(F(2)-F(4));" LBS." 1640 IF W-1>0 THEN 1670 1650 PRINT "PERFECT LANDING, CONGRATULATIONS." 1660 GOTO 1790 1670 IF W-10>0 THEN 1700 1680 PRINT "GOOD LANDING, COULD BE BETTER." 1690 GOTO 1790 1700 IF W-25>0 THEN 1730 1710 PRINT "..... SUGGEST YOU PRACTICE A LITTLE MORE." 1720 GOTO 1790 1730 IF W-60>0 THEN 1760 1740 PRINT "CRAFT DAMAGE. HEY DO YOU REALLY HAVE A LICENCE?" 1750 GOTO 1790 1760 PRINT "SORRY -- NO SURVIVORS!!" 1770 PRINT "IN FACT YOU BLASTED A NEW LUNAR CRATER "; 1780 PRINT FNA(W*0.277777);" FEET DEEP." 1790 PRINT 1800 PRINT "TRY AGAIN (YES OR NO) "; 1810 INPUT (1,200)A$ 1820 IF A$=Y$ THEN 1870 ELSE IF A$<>Y2$ THEN 1790 1830 PRINT 1840 PRINT "CONTROL OUT." 1850 PRINT 1860 GOTO 2120 1870 PRINT 1880 PRINT 1890 GOTO 1170 1900 IF S-0.005<0 THEN 1590 1910 LET S=2*A/(V+SQR(V*V+2*A*(G-Z*K/F(2)))) 1920 GOSUB 2080 1930 GOSUB 2020 1940 GOTO 1900 1950 LET W=(1-F(2)*G/(Z*K))/2 1960 LET S=F(2)*V/(Z*K*(W+SQR(W*W+V/Z)))+0.05 1970 GOSUB 2080 1980 IF F(4)<=0 THEN 1900 1990 GOSUB 2020 2000 IF F(5)>=0 THEN 1430 2010 IF V<=0 THEN 1430 ELSE ,1950 2020 LET F(1)=F(1)+S 2030 LET T=T-S 2040 LET F(2)=F(2)-S*K 2050 LET A=F(4) 2060 LET V=F(5) 2070 RETURN 2080 LET Q=S*K/F(2) 2090 LET F(5)=V+G*S+Z*(-Q-Q*Q/2-Q*Q*Q/3-Q*Q*Q*Q/4-Q*Q*Q*Q*Q/5) 2100 LET F(4)=A-G*S*S/2-V*S+Z*S*(Q/2+Q*Q/6+Q*Q*Q/12+Q*Q*Q*Q/20+Q*Q*Q*Q*Q/30) 2110 RETURN 2120 GOTO 6230 3000 REM ====== LAST MOD. 07/23/77 R.E.H. 3010 PRINT " *** L U N A R ***" 3020 PRINT 3040 PRINT " ON-BOARD AND GROUND COMPUTERS HAVE" 3050 PRINT " SIMULTANEOUSLY MALFUNCTIONED." 3060 PRINT " MANUAL CONTROL IS NECESSARY." 3070 PRINT " CAPSULE WEIGHT 32,500 LBS." 3080 PRINT " AVAILABLE FUEL 16,500 LBS." 3090 PRINT " ESTIMATED FREE FALL IMPACT TIME 120 SECONDS" 3100 PRINT 3110 PRINT M3$; 3120 INPUT (1,200)I$ 3130 PRINT 3140 PRINT " SET RETRO ROCKET BURN RATE EVERY 10 SECONDS" 3150 PRINT " TO ANY VALUE BETWEEN 0 LBS/SEC (FREE FALL)" 3160 PRINT " AND 200 LBS/SEC (STRONG BRAKING)" 3170 PRINT 3180 PRINT "GOOD LUCK !!!" 3190 PRINT 3200 PRINT M2$,"MI + FT",M1$,"LB FUEL BURN RATE" 3210 PRINT 3220 LET A=120 3230 LET V=1 3240 LET M=33000 3250 LET N=16500 3260 LET G=.001 3270 LET Z=1.8 3280 PRINT L,INT(A);INT(5280*(A-INT(A))),3600*V,M-N, 3290 INPUT K 3300 LET T=10 3310 IF M-N<.001 THEN 3420 3320 IF T<.001 THEN 3280 3330 LET S=T 3340 IF M>=N+S*K THEN 3360 3350 LET S=(M-N)/K 3360 GOSUB 3800 3370 IF I<=0 THEN 3660 3380 IF V<=0 THEN 3400 3390 IF J<0 THEN 3720 3400 GOSUB 3600 3410 GOTO 3310 3420 PRINT M5$;L;M2$: PAUSE 10 3430 LET S=(-V+SQR(V*V+2*A*G))/G 3440 LET V=V+G*S 3450 LET L=L+S 3460 LET W=3600*V 3470 GOSUB 7000: GOSUB 7100: IF W>60 THEN GOSUB 7200 3475 PRINT M4$;L;M2$;" - IMPACT VELOCITY ";W;M1$ 3480 IF W>1.2 THEN 3510 3490 PRINT "PERFECT LANDING! (LUCKY)" 3500 GOTO 3840 3510 IF W>10 THEN 3540 3520 PRINT "GOOD LANDING (COULD BE BETTER)" 3530 GOTO 3840 3540 IF W>60 THEN 3570 3550 PRINT "ARRIVES. HOPE YOUR OXYGEN HOLDS OUT!" 3560 GOTO 3840 3570 PRINT " SORRY..., THERE WERE NO SURVIVORS" 3580 PRINT " ------- YOU BLEW IT!" 3590 GOTO 3840 3600 LET L=L+S 3610 LET T=T-S 3620 LET M=M-S*K 3630 LET A=I 3640 LET V=J 3650 RETURN 3660 IF S<.005 THEN 3460 3670 LET D=V+SQR(V*V+2*A*(G-Z*K/M)) 3680 LET S=2*A/D 3690 GOSUB 3800 3700 GOSUB 3600 3710 GOTO 3660 3720 LET W=(1-M*G/(Z*K))/2 3730 LET A=I 3740 GOSUB 3800 3750 IF I<=0 THEN 3660 3760 GOSUB 3600 3770 IF J>0 THEN 3310 3780 IF V>0 THEN 3720 3790 GOTO 3310 3800 LET Q=S*K/M 3810 LET J=V+G*S-Z*Q*(1+Q*(.5+Q*(1/3+Q*(.25+Q/5)))) 3820 LET I=A-G*S*S/2-V*S+Z*S*Q*(.5+Q*(1/6+Q*(1/12+Q/20))) 3830 RETURN 3840 GOTO 6230 4000 REMARKABLE LUNAR LANDING SIMULATION 4010 REM ...Converted for UNIVAC by Mike Van Pelt 4020 REM ...STOLEN BY J. EMMETT BLACK AND IMPLEMENTED 4030 REM ...COURTESY OF THE DEMONSTRATION PROGRAM PEOPLE 4040 REM ...AT THE UNIVERSITY OF ALABAMA. ROLL TIDE! 4050 REM ====== LAST MOD. 07/23/77 R.E.H. 4060 PRINT "&K&J" 4070 PRINT TAB(10);"*** L U N A R - M O D U L E ***" 4080 PRINT 4090 PRINT "#*# Ground Control calling Lunar Module...&J" 4100 PRINT "ON BOARD COMPUTER AND GROUND COMPUTER HAVE" 4110 PRINT "SIMULTANEOUSLY MALFUNCTIONED." 4120 PRINT "MANUAL CONTROL IS NECESSARY" 4130 PRINT "ESITMATED FREE FALL IMPACT TIME 60 SECONDS." 4140 PRINT "SET RETRO-ROCKET BURN RATE EVERY 10 SECONDS." 4150 PRINT "TO ANY VALUE BETWEEN 0 LBS/SEC (FREE FALL) AND" 4160 PRINT " 200 lbs/sec." 4165 PRINT "Sec. Miles + Feet FT/sec lb Fuel" 4170 LET A=60 4180 LET V=1 4190 LET M=32500 4200 LET N=16000 4210 LET G=0.001 4220 LET Z=1.8 4230 PRINT L,INT(A);" ";INT(5280*(A-INT(A))),5280*V,M-N; 4240 INPUT " ...K= ",K 4250 IF K<=200 THEN 4290 4260 PRINT " TOO HIGH A BURN RATE, HOW DOES IT FEEL TO BE" 4270 PRINT " SQUASHED. &J TRY AGAIN WITH SOMETHING REASONABLE&J" 4280 GOTO 4240 4290 IF K>=0 THEN 4330 4300 PRINT "&JHave you got a MATTER TRANSMUTER aboard ?&J" 4310 PRINT "WHAT DO YOU THINK THIS IS, A GAME??,,TRY AGAIN" 4320 GOTO 4240 4330 LET T=10 4340 IF M-N<0.001 THEN 4450 4350 IF T<0.001 THEN 4230 4360 LET S=T 4370 IF M>=N+S*K THEN 4390 4380 LET S=(M-N)/K 4390 GOSUB 4940 4400 IF I<=0 THEN 4800 4410 IF V<=0 THEN 4430 4420 IF J<0 THEN 4860 4430 GOSUB 4740 4440 GOTO 4340 4450 PRINT M5$;L;M2$: PAUSE 5 4460 LET S=(-V+SQR(V*V+2*A*G))/G 4470 LET V=V+G*S 4480 LET L=L+S 4490 LET W=3600*V 4500 PAUSE 10: GOSUB 7000: GOSUB 7100: IF W>60 THEN GOSUB 7200 4505 PRINT M4$;L;M2$;" - IMPACT VEL. ";W;M1$ 4510 IF M-N<0 THEN 4530 4520 PRINT "FUEL LEFT: ";M-N;" LBS." 4530 IF W>1.2 THEN 4610 4540 PRINT "&JPERFECT LANDING!!!!!!!!!!!&J" 4550 PRINT "DO YOU WANT TO PLAY AGAIN, ANSWER 'YES' OR 'NO'." 4560 INPUT (1,200)N$ 4570 LET L=0 4580 LET V=J 4590 IF N$=Y$ THEN 4160 4600 GOTO 4980 4610 IF W>10 THEN 4640 4620 PRINT "GOOD LANDING. COULD HAVE BEEN BETTER" 4630 GOTO 4550 4640 IF W>60 THEN 4690 4650 PRINT "CRAFT DAMAGE. YOU'RE STRANDED THERE UNTIL" 4660 PRINT " A RESCUE MISSION ARRIVES" 4670 GOTO 4550 4680 GOTO 4980 4690 PRINT "Sorry...&J But there were NO survivers.&J You blew it!&J" 4700 PRINT "IN FACT, YOU BLASTED A NEW LUNAR CRATER " 4710 PRINT LOG(W*100)*3;" FT. DEEP." 4720 GOTO 4550 4730 GOTO 4980 4740 LET L=L+S 4750 LET T=T-S 4760 LET M=M-S*K 4770 LET A=I 4780 LET V=J 4790 RETURN 4800 IF S<0.05 THEN 4490 4810 LET D=V+SQR(V*V+2*A*(G-Z*K/M)) 4820 LET S=2*A/D 4830 GOSUB 4940 4840 GOSUB 4740 4850 GOTO 4800 4860 LET W=(1-M*G/(Z*K))/2 4870 LET S=M*V/(Z*K*(W+SQR(W*W+V/Z)))+0.05 4880 GOSUB 4940 4890 IF I<=0 THEN 4800 4900 GOSUB 4740 4910 IF J>0 THEN 4340 4920 IF V>0 THEN 4860 4930 GOTO 4340 4940 LET Q=S*K/M 4950 LET J=V+G*S-Z*Q*(1+Q*(0.5+Q*(1/3+Q*(0.25+Q/5)))) 4960 LET I=A-G*S*S/2-V*S+Z*S*Q*(0.5+Q*(1/6+Q*(1/12+Q/20))) 4970 RETURN 4980 GOTO 6230 4990 REM 5000 REM== Last modified 07/27/77 R.E.H. 5010 REM== ADAPTED TO DECISION ** 9-72 ** P.ROWE *** 5020 REM== LUNARLANDER ** ORIG. ALGORITHM BY DAVE AHL, DEC 5030 PRINT "&K&J": PRINT TAB(26);"-------" 5040 PRINT TAB(25);"/ /" 5050 PRINT TAB(10);" ======================" 5060 PRINT TAB(5);"--<<<== L E M ===" 5070 PRINT TAB(10);" ======================" 5080 PRINT TAB(25);"\ USA \" 5090 PRINT TAB(26);"-------" 5100 PRINT 5110 PRINT "READY FOR--- FIRST RADAR CHECK ?..."; 5120 INPUT (1,200)I$ 5130 PRINT 5140 PRINT "CONTROL CALLING LUNAR MODULE....&J&J" 5150 PRINT " MANUAL OPERATION IS NECESSARY. You may reset" 5160 PRINT " BURN RATE K each 10 secs to 0 or any value" 5170 PRINT " between 8 and 200 lbs/sec. You have 16500 lbs." 5180 PRINT " of fuel. Estimated free fall impact time is" 5190 PRINT " 120 sec. CAPSULE WEIGHT = 32500 lbs.&J" 5200 PRINT M3$; 5210 INPUT (1,200)I$ 5220 PRINT 5230 PRINT "COMMENCE LANDING PROCEDURE:" 5240 PRINT 5250 PRINT " TIME ALTITUDE VELOCITY FUEL BURN" 5260 PRINT "(SECS) (MILES FEET) (MPH) (LBS) RATE" 5270 LET L=0 5280 LET A=120 5290 LET V=1 5300 LET M=33000 5310 LET N=16500 5320 LET G=.001 5330 LET Z=1.8 5340 PRINT TAB(2);INT(L);TAB(8);INT(A);TAB(13); 5350 PRINT INT(5280*(A-INT(A))); 5360 PRINT TAB(22);3600*V;TAB(34);M-N;TAB(45);"K="; 5370 INPUT K 5380 PRINT 5390 IF K=0 THEN 5460 5400 IF INT(K-8)<>ABS(K-8) THEN 5420 5410 IF K<=200 THEN 5460 5420 PRINT " COMMAND ERROR....... BAD BURN RATE." 5430 PRINT "&J .... Burn rate set to zero.&J" 5440 LET K=0 5450 GOTO 5460 5460 LET T=10 5470 IF M-N<.001 THEN 5580 5480 IF T<.001 THEN 5340 5490 LET S=T 5500 IF M>=N+S*K THEN 5520 5510 LET S=(M-N)/K 5520 GOSUB 6150 5530 IF I<=0 THEN 5970 5540 IF V<=0 THEN 5560 5550 IF J<0 THEN 6070 5560 GOSUB 5910 5570 GOTO 5470 5580 PRINT M5$;L;M2$: PAUSE 10 5590 LET S=(-V+SQR(V*V+2*A*G))/G 5600 LET V=V+G*S 5610 LET L=L+S 5620 LET W=3600*V 5630 PRINT M4$;L;M2$: PAUSE 10 5640 GOSUB 7000: GOSUB 7100: IF W>=60 THEN GOSUB 7200 5645 PRINT " ---- IMPACT VELOCITY ";W;M1$ 5650 IF INT(M-N)=0 THEN 5670 5660 PRINT INT(M-N);" lbs of fuel left." 5670 PRINT 5680 IF W>=1 THEN 5710 5690 PRINT "PERFECT LANDING !!" 5700 GOTO 5850 5710 IF W>=10 THEN 5740 5720 PRINT "GOOD LANDING. NO CASUALITIES." 5730 GOTO 5850 5740 IF W>=25 THEN 5780 5750 PRINT " *** BAD JOLT ***" 5760 PRINT "... RESULTING IN MINOR DAMAGE TO LUNAR CRAFT." 5770 GOTO 5850 5780 IF W>=60 THEN 5820 5790 PRINT " *** MAJOR CRAFT DAMAGE ***" 5800 PRINT "....... MINOR INJURIES SUSTAINED BY CREW." 5810 GOTO 5850 5820 PRINT "THERE WERE NO SURVIVORS," 5830 PRINT " AND YOU BLASTED A NEW LUNAR CRATER..." 5840 PRINT "....ABOUT..";W*.27777;" FEET DEEP !!" 5850 PRINT 5860 PRINT "TRY AGAIN?"; 5870 INPUT (1,200)A$ 5880 PRINT 5890 IF A$=Y$ THEN 5220 5900 GOTO 6230 5910 LET L=L+S 5920 LET T=T-S 5930 LET M=INT(M-S*K+.5) 5940 LET A=I 5950 LET V=J 5960 RETURN 5970 IF S<.005 THEN 5620 5980 LET D=V*V+2*A*(G-Z*K/M) 5990 LET S=D 6000 IF S<0 THEN 6010 6010 GOTO 6030 6020 LET S=0 6030 LET S=2*A/(V+SQR(S)) 6040 GOSUB 6150 6050 GOSUB 5910 6060 GOTO 5970 6070 LET W=(1-M*G/(Z*K))/2 6080 LET S=M*V/(Z*K*(W+SQR(W*W+V/Z)))+.05 6090 GOSUB 6150 6100 IF I<=0 THEN 5970 6110 GOSUB 5910 6120 IF J>=0 THEN 5470 6130 IF V<=0 THEN 5470 6140 GOTO 6070 6150 LET Q=S*K/M 6160 LET I=A-G*S*S/2-V*S 6170 LET J=V+G*S 6180 FOR X=1 TO 5 6190 LET I=I+Z*S*Q^X/((X*X)+X) 6200 LET J=J-Z*Q^X/X 6210 NEXT X 6220 RETURN 6230 PRINT 6240 PRINT "<+*+> HOW ABOUT A DIFFERNT GAME ? (Y OR N) ---=>"; 6250 INPUT (1,200)I$ 6260 IF I$=Y$ THEN 170 ELSE PRINT 6270 PRINT TAB(15);"+X*X+ T H A T S A L L F O L K S +X*X+" 6280 GOTO 9000 7000 PRINT "&K": REM ....draw stars + moon 7010 FOR X=1 TO 10 7020 CURSOR INT(RND(0)*10)+1,INT(RND(0)*60)+1 7030 IF RND(0)>.7 THEN LET S$="*" ELSE LET S$=CHR(25) 7040 IF RND(0)>.3 THEN LET S$="." 7050 PRINT S$; 7060 NEXT X 7070 CURSOR 12,1 7080 FOR X=1 TO 60: PRINT "-";: NEXT X 7090 RETURN 7100 LET X=INT(RND(0)*30)+20: REM .....LAND ship 7110 FOR Y=1 TO 12 7120 CURSOR Y,X: PRINT CHR(7); 7130 IF Y>1 THEN CURSOR Y-1,X: PRINT " "; 7140 CURSOR 13,1: PAUSE Y 7150 NEXT Y 7160 CURSOR 13,1 7190 RETURN 7200 CURSOR 12,X: PRINT "-"; 7210 LET S$=" ----- (*) ": GOSUB 8000 7220 LET S$=" -+*+- (*) ": GOSUB 8000 7230 LET S$=" +*+ -*#*- (*) ": GOSUB 8000 7240 LET S$=" +*+ *#* *#@#* (*) ": GOSUB 8000 7250 LET S$=" .+. +++ *+.+*+*#*+((*))": GOSUB 8000 7260 LET S$="*+ +*: :+. .+*#.#*(***)": GOSUB 8000 7270 LET S$=" . . . +. .+* *(###)": GOSUB 8000 7280 LET S$=" \.../": GOSUB 8000 7290 CURSOR 14,1: RETURN 8000 CURSOR 9,X-2: PRINT S$(1,5); 8010 CURSOR 10,X-2: PRINT S$(6,10); 8020 CURSOR 11,X-2: PRINT S$(11,15); 8030 CURSOR 12,X-2: PRINT S$(16,20); 8040 CURSOR 13,X-2: PRINT S$(21,25); 8060 RETURN 9000 END