-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
rockt2.bas
245 lines (245 loc) · 6.25 KB
/
rockt2.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
7 REM LUNAR 1 IS A INTERACTIVE GAME THAT STIMULATES A LUNAR
8 REM LANDING SIMILAR TO THAT OF THE APOLLO PROGRAM.
9 REM THERE IS ABSOLUTELY NO CHANCE INVOLVED.
10 LET Z$="GO"
11 DIM N$(11)
15 LET B1=1
20 LET M=17.95
25 LET F1=5.25
30 LET N=7.5
35 LET R0=926
40 LET V0=1.29
45 LET T=0
50 LET H0=60
55 LET R=R0+H0
60 LET A=-3.425
65 LET R1=0
70 LET A1=8.84361E-04
75 LET R3=0
80 LET A3=0
85 LET M1=7.45
90 LET M0=M1
95 LET B=750
100 LET T1=0
105 LET F=0
110 LET P=0
115 LET N=1
120 LET M2=0
125 LET S=0
130 LET C=0
135 IF Z$="YES" THEN 1150
140 PRINT
145 PRINT "LUNAR LANDING SIMULATION"
150 PRINT
155 PRINT "HAVE YOU FLOWN ON AN APOLLO/LEM MISSION BEFORE#";
160 PRINT "(YES OR NO)";
165 INPUT Q$
170 IF Q$="YES" THEN 190
175 IF Q$="NO" THEN 205
180 PRINT "JUST ANSWER THE QUESTION, PLEASE";
185 GOTO 160
190 PRINT
195 PRINT "ENTER MEASUREMENT OPTION NUMBER";
200 GOTO 225
205 PRINT
210 PRINT "WHICH SYSTEM OF MEASUREMENT DO YOU PREFER?"
215 PRINT " 1=METRIC 0=ENGLISH"
220 PRINT "ENTER THE APPROPRIATE NUMBER";
225 INPUT K
230 PRINT
235 IF K=0 THEN 280
240 IF K=1 THEN 250
245 GOTO 220
250 LET Z=1852.8
255 LET M$="METERS"
260 LET G3=3.6
265 LET N$=" KILOMETERS"
270 LET G5=1000
275 GOTO 305
280 LET Z=6080
285 LET M$="FEET"
290 LET G3=.592
295 LET N$=" MILES"
300 LET G5=Z
305 IF B1=3 THEN 670
310 IF Q$="YES" THEN 485
315 PRINT
320 PRINT " YOU ARE ON A LUNAR LANDING MISSION. AS THE PILOT OF"
325 PRINT "THE LUNAR EXCURSION MODULE, YOU WILL BE EXPECTED TO"
330 PRINT "GIVE CERTAIN COMMANDS TO THE MODULE NAVIGATION SYSTEM."
335 PRINT " THE ON BOARD COMPUTER WILL GIVE A RUNNING ACCOUNT"
340 PRINT "OF INFORMATION NEEDED TO NAVIGATE THE SHIP."
345 PRINT
350 PRINT
355 PRINT "THE ATTITUDE ANGLE CALLED FOR IS DESCRIBED AS FOLLOWS-"
360 PRINT "+ OR -180 DEGREES IS DIRECTLY AWAY FROM THE MOON"
365 PRINT "-90 DEGREES IS ON A TANGENT IN THE DIRECTION OF ORBIT"
370 PRINT "90 DEGREES IS ON A TANGENT FROM THE DIRECTION OF ORBIT"
375 PRINT "0 (ZERO) DEGREES IS DIRECTLY TOWARD THE MOON"
380 PRINT
385 PRINT TAB(30);"-180,180"
390 PRINT TAB(34);"^"
395 PRINT TAB(27);"-90 < -+- > 90"
400 PRINT TAB(34);"!"
405 PRINT TAB(34);"0"
410 PRINT TAB(23);"<< DIRECTION OF ORBIT <<"
415 PRINT
420 PRINT TAB(27);"SURFACE OF MOON"
425 PRINT
430 PRINT
435 PRINT "ALL ANGLES BETWEEN -180 AND 180 DEGREES ARE ACCEPTED."
440 PRINT
445 PRINT "1 FUEL UNIT = 1 SEC. AT MAX. THRUST"
450 PRINT "ANY DISCREPANCIES ARE ACCOUNTED FOR IN THE USE OF FUEL"
455 PRINT "FOR AN ATTITUDE CHANGE."
460 PRINT "AVAILABLE ENGINE POWER: 0 (ZERO) AND ANY VALUE BETWEEN"
465 PRINT "10 AND 100 PERCENT"
470 PRINT
475 PRINT "NEGATIVE THRUST OR TIME IS PROHIBITED"
480 PRINT
485 PRINT
490 PRINT "INPUT: TIME INTERVAL IN SECONDS ------ (T)"
495 PRINT " PERCENTAGE OF THRUST ---------- (P)"
500 PRINT " ATTITUDE ANGLE IN DEGREES ----- (A)"
505 PRINT
510 IF Q$="YES" THEN 535
515 PRINT "FOR EXAMPLE:"
520 PRINT "T,P,A?10,65,-60"
525 PRINT "TO ABORT THE MISSION AT ANY TIME, ENTER 0,0,0"
530 PRINT
535 PRINT "OUTPUT: TOTAL TIME ELAPSED IN SECONDS"
540 PRINT " HEIGHT IN ";M$
545 PRINT " DISTANCE FROM LANDING SITE IN ";M$
550 PRINT " VERTICAL VELOCITY IN ";M$;"/SECOND"
555 PRINT " HORIZONTAL VELOCITY IN ";M$;"/SECOND"
560 PRINT " FUEL UNITS REMAINING"
565 PRINT
570 GOTO 670
575 PRINT
580 PRINT "T,P,A";
585 INPUT T1,F,P
590 LET F=F/100
595 IF T1<0 THEN 905
600 IF T1=0 THEN 1090
605 IF ABS(F-.05)>1 THEN 945
610 IF ABS(F-.05)<.05 THEN 945
615 IF ABS(P)>180 THEN 925
620 LET N=20
625 IF T1<400 THEN 635
630 LET N=T1/20
635 LET T1=T1/N
640 LET P=P*3.14159/180
645 LET S=SIN(P)
650 LET C=COS(P)
655 LET M2=M0*T1*F/B
660 LET R3=-.5*R0*((V0/R)^2)+R*A1*A1
665 LET A3=-2*R1*A1/R
670 FOR I=1 TO N
675 IF M1=0 THEN 715
680 LET M1=M1-M2
685 IF M1>0 THEN 725
690 LET F=F*(1+M1/M2)
695 LET M2=M1+M2
700 PRINT "YOU ARE OUT OF FUEL"
705 LET M1=0
710 GOTO 725
715 LET F=0
720 LET M2=0
725 LET M=M-.5*M2
730 LET R4=R3
735 LET R3=-.5*R0*((V0/R)^2)+R*A1*A1
740 LET R2=(3*R3-R4)/2+.00526*F1*F*C/M
745 LET A4=A3
750 LET A3=-2*R1*A1/R
755 LET A2=(3*A3-A4)/2+.00526*F1*F*S/(M*R)
760 LET X=R1*T1+.5*R2*T1*T1
765 LET R=R+X
770 LET H0=H0+X
775 LET R1=R1+R2*T1
780 LET A=A+A1*T1+.5*A2*T1*T1
785 LET A1=A1+A2*T1
790 LET M=M-.5*M2
795 LET T=T+T1
800 IF H0<3.287828E-04 THEN 810
805 NEXT I
810 LET H=H0*Z
815 LET H1=R1*Z
820 LET D=R0*A*Z
825 LET D1=R*A1*Z
830 LET T2=M1*B/M0
835 PRINT TAB(1);T;TAB(10);H;TAB(23);D;
840 PRINT TAB(37);H1;TAB(49);D1;TAB(60);T2
845 IF H0<3.287828E-04 THEN 880
850 IF R0*A>164.4736 THEN 1050
855 IF M1>0 THEN 580
860 LET T1=22
865 LET F=0
870 LET P=0
875 GOTO 620
880 IF R1<-8.21957E-04 THEN 1020
885 IF ABS(R*A1)>4.931742E-04 THEN 1020
890 IF H0<-3.287828E-04 THEN 1020
895 IF ABS(D)>10*Z THEN 1065
900 GOTO 995
905 PRINT
910 PRINT "THIS SPACECRAFT IS NOT ABLE TO VIOLATE THE SPACE-";
915 PRINT "TIME CONTINUM"
920 GOTO 575
925 PRINT
930 PRINT "IF YOU WANT TO SPIN AROUND, GO OUTSIDE THE MODULE";
935 PRINT "FOR AN E.V.A"
940 GOTO 575
945 PRINT
950 PRINT "IMPOSSIBLE THRUST-VALUE ";
955 IF F<0 THEN 985
960 IF F-.05<.05 THEN 975
965 PRINT "TOO LARGE"
970 GOTO 575
975 PRINT "TOO SMALL"
980 GOTO 575
985 PRINT "NEGATIVE"
990 GOTO 575
995 PRINT
1000 PRINT "TRANQUILITY BASE HERE -- THE EAGLE HAS LANDED"
1005 PRINT "CONGRATULATIONS - THERE WAS NO SPACECRAFT DAMAGE"
1010 PRINT "YOU MAY NOW PROCEED WITH SURFACE EXPLORATION."
1015 GOTO 1100
1020 PRINT
1025 PRINT "CRASH !!!!!!!!!!"
1030 PRINT "YOUR IMPACT CREATED A CRATER";ABS(H);M$;" DEEP"
1035 X1=SQR(D1*D1+H1*H1)*G3
1040 PRINT "AT CONTACT YOU WERE TRAVELLING";X1;N$;"/HR."
1045 GOTO 1100
1050 PRINT
1055 PRINT "YOU HAVE BEEN LOST IN SPACE WITH NO HOPE OF RECOVERY"
1060 GOTO 1100
1065 PRINT "YOU ARE DOWN SAFELY - "
1075 PRINT
1080 PRINT "BUT MISSED THE LANDING SITE BY";ABS(D/G5);N$
1085 GOTO 1100
1090 PRINT
1095 PRINT "MISSION ABORTED"
1100 PRINT
1105 PRINT "DO YOU WANT TO FLY IT AGAIN ? (YES OR NO)";
1110 INPUT Z$
1115 IF Z$="YES" THEN 20
1120 IF Z$="NO" THEN 1130
1125 GOTO 1105
1130 PRINT
1135 PRINT "TOO BAD, THE SPACE PROGRAM HATES TO LOSE EXPERIENCED";
1140 PRINT " ASTRONAUTS."
1145 STOP
1150 PRINT
1155 PRINT "OK, DO YOU WANT THE COMPLETE INSTRUCTIONS OR THE INPUT-"
1160 PRINT "OUTPUT STATEMENTS ?"
1165 PRINT "1=COMPLETE INSTRUCTIONS"
1170 PRINT "2=INPUT-OUTPUT STATEMENTS"
1175 PRINT "3=NEITHER"
1180 INPUT B1
1185 LET Q$="NO"
1190 IF B1=1 THEN 205
1195 LET Q$="YES"
1200 IF B1=2 THEN 190
1205 IF B1=3 THEN 190
1210 GOTO 1165
1215 END