10 REM LEM.ECB 20 REM PROGRAM: LEM 30 REM FROM CREATIVE COMPUTING-NOV-DEC 1976 40 REM AUTHOR UNKNOWN 100 PRINT "THIS IS A LUNAR LANDING PROGRAM" 110 PRINT "DO YOU WISH INSTRUCTIONS"; 120 INPUT V$ 130 IF V$(1,1)="N" THEN 330 140 PRINT "THIS IS THE LANDING ZONE" 150 PRINT TAB(10);" ^ Y-AXIS (+)" 160 FOR I=1 TO 4 170 PRINT TAB(10);" I" 180 NEXT I 190 PRINT "----------+----------> X AXIS (+)" 200 FOR I=1 TO 5 210 PRINT TAB(10);" I" 220 NEXT I 230 PRINT "THE POSITIVE Z-AXIS IS OUT OF THE PAPER" 240 PRINT "YOU ARE TRYING TO LAND ON THE CROSS." 250 PRINT "YOU HAVE CONTROL OF YOUR VERTICAL(Z),HORIZONTAL(Y)," 260 PRINT "AND TRANSVERSE(X) VELOCITYS. YOU ALSO HAVE THE" 270 PRINT "ADDITIONAL ABILITY TO CONTROL TIME OF BURN." 280 PRINT "YOU WILL SUPPLY ALL INITIAL DATA. ALL UNITS" 290 PRINT "ARE METRIC." 300 PRINT 320 PRINT 330 PRINT "INITIAL ALTITUDE"; 340 INPUT A3 350 PRINT "INITIAL VERTICAL VELOCITY"; 360 INPUT V6 370 PRINT "INITIAL DISTANCE Y"; 380 INPUT D4 390 PRINT "INITIAL Y VELOCITY"; 400 INPUT V4 410 PRINT "INITIAL DISTANCE X"; 420 INPUT D5 430 PRINT "INITIAL X VELOCITY"; 440 INPUT V5 450 PRINT "MAXIMUM BURN RATE"; 460 INPUT M 470 PRINT "AMOUNT OF FUEL"; 480 INPUT F3 490 PRINT "GRAVITATIONAL CONSTANT"; 500 INPUT G 510 PRINT "NAME OF YOUR LANDER"; 520 INPUT N1$ 530 PRINT 540 PRINT "CONTROL TO ";N1$;" COMMENCE LANDING." 550 GOSUB 1900 560 LET V=V6 570 LET V1=V4 580 LET V2=V5 590 LET T=0 600 LET F=F3 610 LET A=A3 620 LET D1=D4 630 LET D2=D5 640 LET T3=T3+T 650 GOSUB 2080 660 PRINT "TIME =";T3;" SECONDS." 670 PRINT "ALTITUDE =";A;" METRES. VELOCITY =";V;" METRES/SECOND." 680 PRINT "DIST. X =";D2;" METRES. VELOCITY X =";V2;" METRES/SECOND." 690 PRINT "DIST. Y =";D1;" METRES. VELOCITY Y =";V1;" METRES/SECOND." 700 PRINT "FUEL =";F;" UNITS" 705 PRINT 710 PRINT "TIME INTERVAL"; 720 INPUT T 730 PRINT "VERTICAL BURN"; 740 INPUT B 750 PRINT "TRANSVERSE(X) BURN"; 760 INPUT B2 770 LET B2=-B2 780 PRINT "HORIZONTAL(Y) BURN"; 790 INPUT B1 800 LET B1=-B1 810 PRINT 820 GOTO 1340 830 LET F1=F 840 LET A1=A 850 IF F<=0 THEN 1190 860 LET A=A-V*T-((G-B)*T)/2 870 IF A<=0 THEN 910 880 LET V=V+(G-B)*T 890 GOSUB 2010 900 GOTO 640 910 LET G1=G-B 920 LET T1=((-2*V)+SQR(ABS(4*ABS(V)^2+8*A1*G)))/(2*G) 930 LET V=V+(G1*T1) 940 GOSUB 2010 950 LET T4=T3+T1 960 IF V<3 THEN 990 970 PRINT "AT TIME=";T4;" THE ";N1$;" CRASHED WITH A DESCENT "; 971 PRINT "VELOCITY OF";V;" METRES/SECOND" 972 PRINT "IT WAS AT (";D2;" ,";D1;" )," 973 PRINT (SQR(ABS(V1)^2+ABS(V2)^2));" METRES FROM THE"; 974 PRINT " LANDING SITE." 975 GOTO 1800 980 GOTO 1000 990 PRINT "AT TIME=";T4;" THE ";N1$;" LANDED WITH A DESCENT "; 1000 PRINT "VELOCITY OF";V;" METRES/SECOND" 1010 LET R=SQR(ABS(V1)^2+ABS(V2)^2) 1020 IF R>5 THEN 1050 1030 PRINT "AND A HORIZONTAL VELOCITY OF";R;" METRES/SECOND" 1040 GOTO 1080 1050 LET P9=1 1060 PRINT "AND FLIPPED OVER WITH A HORIZONTAL VELOCITY" 1065 PRINT "OF";R;" METRES/SECOND" 1070 LET P9=1 1080 PRINT "THE LANDING POINT WAS (";D2;" ,";D1;" )" 1090 LET D=SQR(D1^2+D2^2) 1100 IF R<=5 THEN 1140 1110 PRINT D;" METRES FROM TH LANDING SITE." 1120 GOTO 1790 1130 IF P9=1 THEN 1790 1140 IF D>100 THEN 1170 1150 PRINT "BEAUTIFUL ";N1$;" . YOU WERE";D;" METRES FROM THE" 1155 PRINT "LANDING SITE." 1160 GOTO 1790 1170 PRINT "GOOD LANDING ";N1$;" , BUT YOU WERE";D;" METRES OFF" 1180 GOTO 1790 1190 LET T=F1/(ABS(B)+ABS(B1)+ABS(B2)) 1200 LET A=A-(V*((G-B)/2)) 1210 LET V=V+(G-B) 1220 LET T1=((-2*V)+SQR(ABS(4*ABS(V)^2+8*A1*G)))/(2*G) 1230 LET V=V+G*T1 1240 GOSUB 2010 1250 LET D1=D1+V1*(T1-T) 1260 LET D2=D2+V2*(T1-T) 1270 IF V<3 THEN 950 1280 LET T4=T3+T1 1290 PRINT "THE ";N1$;" CRASHED AT";T4;" SECONDS AT THE" 1295 PRINT "POINT (";D2;" ,";D1;" )" 1300 LET R=SQR(V1^2+V2^2) 1310 PRINT "WITH A DOWNWARD VELOCITY OF";V;" ,AND A FORWARD" 1315 PRINT "VELOCITY OF";P 1320 PRINT "CRASH DUE TO LACK OF FUEL" 1330 GOTO 1790 1340 IF ABS(B)<=M THEN 1400 1350 IF B<0 THEN 1380 1360 LET B=M 1370 GOTO 1390 1380 LET B=-M 1390 LET Z=Z+1 1400 IF ABS(B1)<=M THEN 1460 1410 IF B1<0 THEN 1440 1420 LET B1=M 1430 GOTO 1450 1440 LET B1=-M 1450 LET Z1=Z1+1 1460 IF ABS(B2)<=M THEN 1520 1470 IF B2<0 THEN 1500 1480 LET B2=M 1490 GOTO 1510 1500 LET B2=-M 1510 LET Z2=Z2+1 1520 LET F=F-((ABS(B)+ABS(B1)+ABS(B2))*T) 1530 IF Z=1 THEN 1600 1540 IF Z=2 THEN 1780 1550 IF Z1=1 THEN 1660 1560 IF Z1=2 THEN 1780 1570 IF Z2=1 THEN 1720 1580 IF Z2=2 THEN 1780 1590 GOTO 840 1600 IF B=0 THEN 1550 1610 LET E=E-1 1620 IF E=0 THEN 1780 1630 GOSUB 1880 1640 PRINT "VERTICAL ENGINE WILL BLOW IN";E;" BURN(S)" 1650 GOTO 1550 1660 IF B1=0 THEN 1570 1670 LET E1=E1-1 1680 IF E1=0 THEN 1780 1690 GOSUB 1880 1700 PRINT "HORIZONTAL ENGINE WILL BLOW IN";E1;" BURN(S)" 1710 GOTO 1570 1720 IF B2=0 THEN 840 1730 LET E2=E2-1 1740 IF E2=0 THEN 1780 1750 GOSUB 1880 1760 PRINT "TRANSVERSE ENGINE WILL BLOW IN";E2;" BURN(S)" 1770 GOTO 840 1780 PRINT " BANG.AN ENGINE BLEW. YOU BLEW UP." 1790 PRINT 1800 PRINT "WOULD YOU LIKE TO TRY AGAIN"; 1810 INPUT V$ 1820 IF V$="N" THEN 1870 1830 PRINT "SAME INITIAL VALUES"; 1840 INPUT V$ 1850 IF V$="Y" THEN 530 1860 GOTO 320 1870 STOP 1880 PRINT "*******"; 1890 RETURN 1900 LET T3=0 1910 LET Z=0 1920 LET Z1=0 1930 LET Z2=0 1940 LET E=11 1950 LET E1=11 1960 LET E2=11 1970 LET P9=0 1980 RETURN 2010 LET V7=V1-B1*T 2020 LET D1=D1+(V1*T)+(T*(V1-V7))/2 2030 LET V8=V2-B2*T 2040 LET D2=D2+(V2*T)+(T*(V2-V8))/2 2050 LET V1=V7 2060 LET V2=V8 2070 RETURN 2080 IF A>100 THEN 2410 2090 IF D2>50 OR D2<-50 THEN 2410 2100 IF D1>50 OR D1<-50 THEN 2410 2110 LET Q1=INT(D2/10+.5) 2120 LET Q2=INT(D1/10+.5) 2130 FOR Q=5 TO -5 STEP -1 2140 IF Q=0 THEN 2180 2150 IF Q=Q1 THEN 2330 2160 PRINT TAB(10);" I" 2170 GOTO 2400 2180 IF Q1=0 THEN 2210 2190 PRINT "----------+----------" 2200 GOTO 2400 2210 FOR Q3=-5 TO 5 STEP .5 2220 IF Q3=0 THEN 2260 2230 IF Q3=Q2 THEN 2290 2240 PRINT "-"; 2250 GOTO 2300 2260 IF Q2=0 THEN 2290 2270 PRINT "+"; 2280 GOTO 2300 2290 PRINT "X"; 2300 NEXT Q3 2310 PRINT " " 2320 GOTO 2400 2330 IF Q2<0 THEN 2370 2340 IF Q2>0 THEN 2390 2350 PRINT TAB(10);" X" 2360 GOTO 2400 2370 PRINT TAB((Q2+6)*2-2);" X";TAB(10);" I" 2380 GOTO 2400 2390 PRINT TAB(10);" I";TAB((Q2+6)*2-2);" X" 2400 NEXT Q 2410 RETURN 2420 END