1 REM **** HP BASIC PROGRAM LIBRARY ************************************** 2 REM 3 REM LANDER: ROCKET LANDING VEHICLE 4 REM 5 REM 36684 REV A -- 10/73 6 REM 7 REM **** CONTRIBUTED PROGRAM ************************************** 100 REM PROGRAM LANDER 110 REM 120 DIM A$[6] 130 REM 200 PRINT "WELCOME TO THE PUC SCHOOL FOR BUDDING ASTRONAUTS!" 210 PRINT 220 PRINT " DO YOU WANT INSTRUCTIONS (YES OR NO) "; 230 INPUT A$[1,1] 240 PRINT 250 IF A$[1,1]="N" THEN 1000 300 PRINT "YOU ARE AT THE CONTROLS OF A ROCKET LANDING VEHICLE." 310 PRINT 320 PRINT "INITIALLY YOU ARE A GIVEN DISTANCE ABOVE THE SURFACE "; 330 PRINT "MOVING" 335 PRINT "DOWNWARD (VELOCITY IS NEGATIVE)." 350 PRINT "YOU CHOOSE THE AMOUNT OF FUEL TO BE BURNED DURING THE NEXT "; 360 PRINT "ONE SECOND" 370 PRINT "OF TIME." 400 PRINT 410 PRINT " IF YOU BURN ZERO, THEN YOU WILL FALL FASTER BECAUSE OF "; 420 PRINT "GRAVITY." 430 PRINT " IF YOU BURN EXACTLY THAT REQUIRED TO OVERCOME GRAVITY, "; 440 PRINT "THEN" 445 PRINT "YOUR VELOCITY WILL BE CONSTANT." 450 PRINT " IF YOU BURN MORE, THEN YOU WILL SLOW DOWN OR EVEN START "; 460 PRINT "TO MOVE" 470 PRINT "UPWARD (VELOCITY IS POSITIVE)!" 475 PRINT 480 PRINT "THE IDEA IS TO GET THE LANDER DOWN TO THE SURFACE, LANDING "; 490 PRINT "WITH AS" 495 PRINT "LITTLE VELOCITY AS POSSIBLE." 500 PRINT "THERE IS MORE THAN ENOUGH FUEL, BUT BE CAREFUL NOT TO WASTE "; 510 PRINT "IT!" 600 PRINT 700 PRINT "LANDING ON THE MOON IS EASIER, TRY THAT FIRST." 720 PRINT 730 PRINT 1000 PRINT "GOOD LUCK AND HAPPY LANDINGS!" 1005 REM 1006 LET X0=V0=0 1007 PRINT 1010 PRINT 1030 PRINT "LOCATION: MOON OR EARTH "; 1040 INPUT A$[1,6] 1042 PRINT 1043 LET K=0 1045 IF A$[1,1]="M" THEN 1060 1047 LET K=1 1048 IF A$[1,1]="E" THEN 1060 1050 PRINT "THAT LOCATION IS NOT RECOGNIZED." 1055 GOTO 1030 1060 LET G=5+27*K 1070 LET M=30+60*K 1075 IF X0>0 THEN 1100 1080 LET X=X0=500+1500*K 1090 LET V=V0=-50-100*K 1100 PRINT "INITIAL CONDITIONS: STANDARD, OLD, OR NEW "; 1110 INPUT A$[1,1] 1120 IF A$[1,1]#"S" THEN 1150 1130 LET X=500+1500*K 1140 LET V=-50-100*K 1145 GOTO 1200 1150 IF A$[1,1]#"O" THEN 1170 1155 LET X=X0 1160 LET V=V0 1165 GOTO 1200 1170 LET X=INT(RND(0)*(100+K*100))*10+100 1180 LET V=-INT(RND(0)*(10+K*10))*5 1190 IF V*V>2*(M-G)*X THEN 1180 1200 LET X0=X 1210 LET V0=V 1290 LET F=INT(SQR(M*(V^2+2*G*X)/(M-G))*.13+.5)*10 1300 PRINT 1302 PRINT "INITIAL HEIGHT: ";X;"FEET" 1303 PRINT "INITIAL VELOCITY: ";V;"FEET/SEC" 1305 PRINT "TOTAL FUEL SUPPLY: ";F;"UNITS" 1307 PRINT "MAXIMUM BURN: ";M;"UNITS/SEC" 1308 PRINT "AMOUNT OF BURN TO CANCEL GRAVITY: ";G;"UNITS/SEC" 1320 PRINT 1330 PRINT 1340 PRINT "TIME","HEIGHT","VELOCITY","FUEL","BURN" 1350 PRINT 2000 LET T=-1 2010 LET T=T+1 2020 PRINT T,X,V,F," "; 2030 INPUT B 2040 LET B1=ABS(B) 2050 IF B1 <= M THEN 2080 2060 PRINT " ","MAX BURN IS ";M;"BURN "; 2070 GOTO 2030 2080 LET T9=T8=2 2090 IF B1=0 THEN 2110 2100 LET T9=F/B1 2110 LET A=B-G 2120 LET R=V*V-2*A*X 2140 IF R<0 THEN 2200 2150 IF A=0 THEN 2180 2160 LET T8=-(V+SQR(R))/A 2170 GOTO 2200 2180 IF V >= 0 THEN 2200 2190 LET T8=-X/V 2200 IF (T8>0 AND T8 <= 1) OR T9 <= 1 THEN 2300 2210 LET X=X+V+A/2 2220 LET V=V+A 2230 LET F=F-B1 2235 IF X>.0001 THEN 2010 2240 LET T=T+1 2245 GOTO 2630 2300 IF T8>0 AND T8 <= T9 THEN 2600 2310 PRINT T+T9,"OUT OF FUEL" 2320 LET F=B1=0 2330 LET X=X+V*T9+A*T9^2/2 2340 LET V=V+A*T9 2350 LET A=-G 2360 LET T8=(V+SQR(V*V-2*A*X))/G 2370 IF T8<1-T9 THEN 2500 2380 LET X=X+V*(1-T9)+A*(1-T9)^2/2 2390 LET V=V+A*(1-T9) 2400 LET T=T+1 2410 PRINT T,X,V 2420 LET T8=(V+SQR(V^2-2*A*X))/G 2430 IF T8 <= 1 THEN 2600 2440 LET X=X+V+A/2 2450 LET V=V+A 2460 GOTO 2400 2500 LET T=T+T9 2600 LET F=F-B1*T8 2610 LET T=T+T8 2620 LET V=V+A*T8 2630 PRINT T,0,V,F 2640 PRINT 2650 PRINT 2700 IF V<-1 THEN 2800 2710 GOTO INT(RND(0)*5+1) OF 2720,2730,2740,2750,2760 2720 PRINT "YOU ARE NOW A QUALIFIED ASTRONAUT." 2725 GOTO 1007 2730 PRINT "AS GENTLE AS A KITTEN'S PURR!!" 2735 GOTO 1007 2740 PRINT "A BUTTERFLY COULDN'T HAVE DONE BETTER!" 2745 GOTO 1007 2750 PRINT "AS SOFT AS A SNOWFLAKE!" 2755 GOTO 1007 2760 PRINT "MR. SPOCK WOULD BE PROUD OF YOU!!!" 2765 GOTO 1007 2800 IF V<-5 THEN 2900 2810 GOTO INT(RND(0)*4+1) OF 2820,2830,2840,2850 2820 PRINT "A BIT ROUGH, BUT YOU ARE STILL IN ONE PIECE!" 2825 GOTO 1007 2830 PRINT "IF YOU HAD BEEN DRIVING A 1970 LTD, THAT WOULD HAVE COST"; 2831 PRINT " YOU $500!" 2835 GOTO 1007 2840 PRINT "ANY FASTER AND YOU WOULD HAVE BOUNCED!" 2845 GOTO 1007 2850 PRINT "YOU HAD BETTER CHECK YOU LANDING GEAR!!" 2855 GOTO 1007 2900 IF V<-10 THEN 3000 2910 GOTO INT(RND(0)*5+1) OF 2920,2930,2940,2950,2960 2920 PRINT "IS YOUR MEDICAL INSURANCE PAID UP??" 2925 GOTO 1007 2930 PRINT "YOU GOT DOWN, BUT YOU WILL NEVER BE AN ASTRONAUT!" 2935 GOTO 1007 2940 PRINT "NEIL ARMSTRONG DID IT THE FIRST TIME!!" 2945 GOTO 1007 2950 PRINT "THE BEST LAID SCHEMES OF MICE AND MEN," 2951 PRINT " OFT' GO ASTRAY." 2955 GOTO 1007 2960 PRINT "HAVE YOU EVER THOUGHT OF A DIFFERENT LINE OF WORK??" 2965 GOTO 1007 3000 GOTO INT(RND(0)*3+1) OF 3010,3020,3030 3010 PRINT "YOUR NEXT OF KIN WILL BE NOTIFIED." 3015 GOTO 1007 3020 PRINT "YOU JUST CREAMED A 29 MEGABUCK LANDER!" 3025 GOTO 1007 3030 PRINT "AREN'T YOU GLAD THIS IS ONLY A COMPUTER SIMULATION!!" 3035 GOTO 1007 9999 END