ROCKET48.BAS Rocket48.bas

Return to Spaceflight


Multistage Rocket Simulation Program

Downloading the hard way


This is a multistage rocket simulation program. It is listed here as preformated text. You can down load this file by clicking "save as" on your browser file menu, then using a text viewer to clean up the file and remove the extra carrage returns in the program lines.

You should also download the rocket program instruction file which explains how to use this program.

Rocket program instruction file

10 PRINT "TEXAS SPACELINES INC.   SPACE TRANSPORTATION FOR THE REST OF US!"
20 PRINT "HTTP://WEB.WT.NET/~MARKGOLL/   MARKGOLL@WT.NET"
30 PRINT "ROCKET 4.19 BY MARK GOLL 1987-00 SEND IMPROVEMENTS TO 1210 651
6558"
40 INPUT "REDEFINE VEHICLE? (Y/N/V) V=SATURN V SKYLAB"; A$
50 IF A$ = "Y" THEN 80 ELSE 60
60 IF A$ = "V" THEN 490 ELSE 70
70 IF A$ = "N" THEN 550 ELSE 40
80 REM _R=(_T VACUUM - _T SEA LEVEL)
90 REM _D=AREA IN SQ FT * DRAG COFECIENT
100 REM STRUCTURE # = FUEL #/ MR - 1
110 PRINT "START & STOP TIMES IN SEQUENCE"
120 PRINT "FOR NO BOOSTER ENTER ALL ZEROS FOR S0 VALUES"
130 INPUT "S0 ENGINE #"; BE
140 INPUT "S0 TANK #"; BW
150 INPUT "S0 PROPELANT #"; BP
160 INPUT "S0 PFLOW #/SEC"; BF
170 INPUT "S0 THRUST #"; BT
180 INPUT "S0 ERATIO THRUST INCREASE"; BR
190 INPUT "S0 EQUIV. DRAG AREA"; BD
200 INPUT "S0 STOP SEC"; BS: BS = BS * 10
210 INPUT "S1 ENGINE #"; FE
220 INPUT "S1 TANK #"; FW
230 INPUT "S1 PROPELANT #"; FP
240 INPUT "S1 PFLOW #/SEC"; FF
250 INPUT "S1 THRUST #"; FT
260 INPUT "S1 ERATIO THRUST INCREASE"; FR
270 INPUT "S1 BEGIN SEC."; FB: FB = FB * 10
280 INPUT "S1 STOP SEC"; FS: FS = FS * 10
290 PRINT "FOR NO UPPER STAGES ENTER ZEROS & ADD 1 SEC FOR EACH START &
STOP"
300 INPUT "S2 DRY WEIGHT #"; SW
310 INPUT "S2 PROPELANT #"; SP
320 INPUT "S2 PFLOW #/SEC"; SF
330 INPUT "S2 THRUST #"; ST
340 INPUT "S2 BEGIN SEC."; SB: SB = SB * 10
350 INPUT "S2 STOP SEC"; SS: SS = SS * 10
360 INPUT "S3 DRY WEIGHT #"; TW
370 INPUT "S3 PROPELANT #"; TP
380 INPUT "S3 PFLOW #/SEC"; TF
390 INPUT "S3 THRUST #"; TT
400 INPUT "S3 BEGIN SEC."; TB: TB = TB * 10
410 INPUT "S3 STOP SEC"; TS: TS = TS * 10
420 INPUT "PAYLOAD WEIGHT #"; PW
430 INPUT "PAYLOAD FARING #"; PF
440 INPUT "PAYLOAD STACK EQUIV. DRAG AREA"; PD
450 INPUT "GUIDANCE LOFT FACTOR (TYP 100)"; LF
460 INPUT "PROCESSOR DELAY (486-33=1)"; DL
470 GOTO 560
480 REM SATURN V SKYLAB
490 BE = 0: BW = 0: BP = 0: BF = 5768: BT = 1500000!: BD = 240: BS = 1350
500 BR = 400000!: FE = 0: FW = 286600!: FP = 4585560!: FF = 23072: FT = 6000000!
510 FB = 0: FS = 1650: FR = 1600000!: SW = 0: SP = 799890!: SF = 2730
520 ST = 1150000!: SB = 1700: SS = 4630: TW = 78750!: TP = 201228!
530 TF = 2184: TT = 920000!: TB = 4640: TS = 5560
540 PW = 205450!: PF = 26000!: PD = 616: LF = 50: DL = 1
550 REM MODEL ATMOSPHERE DATA
560 DATA 2.381E-3,2.30E-3,2.25E-3,2.175E-3,2.125E-3,2.06E-3,2.0E-3,1.93E-3,1.88E-3,1.82E-
3
570 DATA 1.744E-3,1.25E-3,8.797E-4,6.021E-4,3.837E-4,2.364E-4,8.861E-5
580 DATA 5.353E-5,3.294E-5,2.062E-5,1.312E-5,8.472E-6,5.565E-6,3.781E-6,2.569E-6
590 DATA 1.747E-6,1.188E-6,8.795E-7,5.777E-7,3.999E-7,2.711E-7,1.797E-7,1.160E-7
600 DATA 7.273E-8,4.159E-8
610 DATA 2.312E-8,1.344E-8,8.189E-9,5.213E-9,3.456E-9,2.381E-9,1.679E-9
620 DATA 1.148E-9,7.938E-10,5.553E-10,3.926E-10,2.804E-10,2.022E-10,1.471E-10
630 DATA 1.079E-10,7.785E-11,5.953E-11,4.471E-11,3.381E-11,2.574E-11,1.972E-11
640 DATA 1.520E-11,1.179E-11,9.180E-12,8.000E-12
650 DATA 7.0E-12,6.0E-12,5.0E-12,4.0E-12,3.0E-12,2.0E-12,1.0E-12,5.0E-13,1.0E-14,0
660 REM DIMENSION ATMOSPHERE DATA
670 DIM A(10), B(60)
680 FOR X = 0 TO 9
690 READ A(X)
700 NEXT X
710 FOR X = 0 TO 59
720 READ B(X)
730 NEXT X
740 REM FREE SPACE!
750 CO = 0: HD = 0: AK = 0: FA = 0: TI = 0: FC = 0: TC = O: FJ = 0: HV = 0: VV = 0: DR = 0: AL
= 0: VA = 0: HA = 0: OV = 25610
760 REM STOP/CONT
770 PRINT "CHANGE VARIABLES OR CONT"
780 STOP
790 RW = BE + BW + BP + FE + FW + FP + SW + SP + TW + TP + PW + PF
800 CLS
810 REM MAIN PROGRAM  *************************
820 GOSUB 1040
830 LOCATE 20, 1
840 PRINT "TOP DISPLAY IS ATTITUDE, BOTTOM IS VELOCITY"
850 INPUT "LAUNCH Y-N ? AFTER LAUNCH A=ABORT"; B$
860 IF B$ = "Y" THEN 880 ELSE 870
870 IF B$ = "N" THEN 780 ELSE 850
880 REM GO TO ATMOSPHERE SUBROUTINE ******
890 GOSUB 2540
900 REM GO TO STAGING SUBROUTINE *********
910 GOSUB 1470
920 REM GO TO FORCES SUBROUTINE **********
930 GOSUB 2370
940 REM GO TO MASS REDUCTION SUBROUTINE **
950 GOSUB 2950
960 REM USE DISPLAY SUB TO INSERT NUMBERS*
970 GOSUB 1040
980 REM TIME DELAY LOOP
990 FOR X = 0 TO DL
1000 Y = 1 / 10
1010 NEXT X
1020 IF INKEY$ = "A" THEN 740 ELSE 880
1030 END
1040 REM DISPLAY SUBROUTINE ***************
1050 SCREEN 2
1060 LOCATE 2, 1
1070 PRINT , "STAGES BURNING"
1080 HK = INT(HD / 5280)
1090 RK = INT(RW)
1100 TK = INT(TI)
1110 DK = INT(DR)
1120 TA = INT(SQR((VA * VA) + (HA * HA)))
1130 VK = INT(SQR((VV * VV) + (HV * HV)))
1140 LOCATE 7, 15: PRINT , CO
1150 LOCATE 7, 1: PRINT , "COSINE"
1160 LOCATE 8, 15: PRINT , RK
1170 LOCATE 8, 1: PRINT , "WEIGHT"
1180 LOCATE 9, 15: PRINT , TC
1190 LOCATE 9, 1: PRINT , "TIME1/10S"
1200 LOCATE 10, 15: PRINT , TA
1210 LOCATE 10, 1: PRINT , "ACCEL"
1220 LOCATE 11, 15: PRINT , DK
1230 LOCATE 11, 1: PRINT , "DRAG"
1240 LOCATE 12, 15: PRINT , TK
1250 LOCATE 12, 1: PRINT , "THRUST"
1260 LOCATE 13, 15: PRINT , AL
1270 LOCATE 13, 1: PRINT , "ALTITUDE"
1280 LOCATE 14, 15: PRINT , HK
1290 LOCATE 14, 1: PRINT , "RANGE"
1300 LOCATE 15, 15: PRINT , VK
1310 LOCATE 15, 1: PRINT , "VELOCITY"
1320 REM LINE DRAWING OF ATTITUDE & FLIGHT ANGLE
1330 XA = INT(100 * CO)
1340 YA = (INT(SQR(10000 - (XA * XA)))) * .43
1350 X = 510 - XA
1360 Y = 50 - YA
1370 LINE (510, 50)-(X, Y), 1
1380 IF TV = 0 THEN 1460
1390 IF AL <= 0 THEN 1460
1400 CF = HV / TV
1410 XB = INT(100 * CF)
1420 YB = ((INT(SQR(10000 - (XB * XB)))) * .43) * (VV / (ABS(VV)))
1430 X = 510 - XB
1440 Y = 120 - YB
1450 LINE (510, 120)-(X, Y), 2
1460 RETURN
1470 REM STAGING SUBROUTINE ******
1480 IF TC = 0 THEN GOSUB 1650
1490 IF TC = FB THEN GOSUB 1780
1500 IF TC = BS THEN GOSUB 1840
1510 IF TC = FS THEN GOSUB 1920
1520 IF TC < BS THEN 1530 ELSE 1550
1530 TI = 0
1540 TI = BX
1550 IF TC >= FB AND TC < FS THEN 1560 ELSE 1580
1560 IF TC >= BS THEN TI = 0
1570 TI = FX + TI
1580 IF TC = SB THEN GOSUB 1980
1590 IF TC > SB AND AT > 20 THEN GOSUB 2050
1600 IF TC = SS THEN GOSUB 2100
1610 IF TC = TB THEN GOSUB 2160
1620 IF TC = TS THEN GOSUB 2230
1630 IF TC > TS THEN GOSUB 2310
1640 RETURN
1650 REM STAGE 0 IGNITION SUBROUTINE ******
1660 FA = FA + BP
1670 CT = PD + BD
1680 FC = FC + BF
1690 LOCATE 3, 1
1700 PRINT , "0"
1710 IF FB = 0 THEN 1720 ELSE 1760
1720 REM STAGE 1 PAD IGNITION
1730 FA = FA + FP: FC = FC + FF
1740 LOCATE 4, 1
1750 PRINT , "1"
1760 RETURN
1770 REM STAGE 1 DELAYED IGNITION SUBROUTINE ******
1780 IF FB = 0 THEN 1830
1790 FA = FA + FP
1800 FC = FC + FF
1810 LOCATE 4, 1
1820 PRINT , "1"
1830 RETURN
1840 REM STAGE 0 SEPERATION SUBROUTINE ******
1850 RW = (RW - BE) - BW
1860 CT = CT - BD
1870 TI = TI - BX
1880 FC = FC - BF
1890 LOCATE 3, 1
1900 PRINT , " "
1910 RETURN
1920 REM STAGE 1 SEPERATION SUBROUTINE ******
1930 RW = (RW - FE) - FW
1940 TI = 0: FC = 0: FA = 0
1950 LOCATE 4, 1
1960 PRINT , " "
1970 RETURN
1980 REM STAGE 2 IGNITION SUBROUTINE ******
1990 TI = ST
2000 FA = SP
2010 FC = SF
2020 LOCATE 5, 1
2030 PRINT , "2"
2040 RETURN
2050 REM PAYLOAD FARING SEPERATION SUBROUTINE ****
2060 IF FJ = 0 THEN 2070 ELSE 2090
2070 FJ = 1
2080 RW = RW - PF
2090 RETURN
2100 REM STAGE 2 SEPERATION SUBROUTINE *****
2110 TI = 0: FC = 0: FA = 0
2120 RW = RW - SW
2130 LOCATE 5, 1
2140 PRINT , " "
2150 RETURN
2160 REM STAGE 3 IGNITION SUBROUTINE *******
2170 TI = TT
2180 FA = TP
2190 FC = TF
2200 LOCATE 6, 1
2210 PRINT , "3"
2220 RETURN
2230 REM STAGE 3 SEPERATION SUBROUTINE ******
2240 TI = 0: FA = 0: FC = 0
2250 RW = RW - TW
2260 LOCATE 6, 1
2270 PRINT , " "
2280 LOCATE 17, 1
2290 PRINT "COMPLETE"
2300 RETURN
2310 REM ORBIT = 25610 FT/SEC AT 600K FT ALTITUDE
2320 IF VK > 25610 AND AK > 600 THEN 2330 ELSE 2360
2330 LOCATE 16, 1
2340 PRINT "ORBIT"
2350 GOTO 740
2360 RETURN
2370 REM FORCES SUBROUTINE ******
2380 HI = TI * CO
2390 VI = SQR((TI * TI) - (HI * HI))
2400 VA = ((VI - DV) / (RW / 32)) - 32
2410 HA = (HI - DH) / (RW / 32)
2420 VV = VV + ((VA * .1) + ((HV / OV) * 3.2))
2430 HV = HV + (HA * .1)
2440 AL = AL + ((VV * .1) + ((VA * .1) / 2))
2450 HD = HD + ((HV * .1) + ((HA * .1) / 2))
2460 TC = TC + 1
2470 REM VEHICLE CRASH
2480 IF AL < 0 THEN 2490 ELSE 2520
2490 LOCATE 18, 1
2500 PRINT , "CRASH"
2510 GOTO 740
2520 RETURN
2530 REM ATMOSPHERE SUBROUTINE *****
2540 AK = INT(AL / 1000)
2550 AT = INT(AL / 10000)
2560 TV = SQR((VV * VV) + (HV * HV))
2570 REM GUIDANCE FORMULA OPTIONS, CO RANGE 0 TO 1 FOR VEHICLE ATTITUDE
2580 REM ATMOSPHERIC DENSITY (PARABOLIC)
2590 REM CO=ABS((AD/.002381)-1)
2600 REM VELOCITY
2610 REM CO=VK/25610
2620 REM ALTITUDE (LINEAR)
2630 REM CO=AL/600000: IF AL>600000 THEN CO=1
2640 REM SOUNDING ROCKET (CONSTANT ANGLE)
2650 REM IF TC>1 THEN CO=.707 ELSE CO=.01
2660 REM ADDITIONAL LOFT FACTOR, AK/(AK+LF) RAISES 45DEG ANGLE POINT
2670 REM HIGH ALTITUDE LAY OVER
2680 REM IF CO=1 THEN (DV)
2690 REM IF AT>40 THEN (NEXT) ELSE (DV)
2700 REM CO=1
2710 REM GO TO (DV)
2720 IF AK < 0 THEN 2870
2730 IF AT > 60 THEN GOTO 2760
2740 IF AK < 10 THEN GOSUB 2880
2750 IF AT > 1 THEN GOSUB 2910
2760 REM INSERT GUIDANCE FORMULAS HERE
2770 IF CO = 1 THEN 2820
2780 IF AL > 700000! THEN 2790 ELSE 2810
2790 CO = 1
2800 GOTO 2820
2810 CO = (ABS((AD / .002381) - 1)) * (AK / (AK + LF))
2820 DV = .25 * (AD * ((VV * ABS(VV)) * CT))
2830 DH = .25 * (AD * ((HV * HV) * CT))
2840 DR = SQR((DV * DV) + (DH * DH))
2850 FX = FT + (FR * (ABS((AD - .002381) / .002381)))
2860 BX = BT + (BR * (ABS((AD - .002381) / .002381)))
2870 RETURN
2880 REM LOW ALTITUDE BY 1 000 FT
2890 AD = A(AK)
2900 RETURN
2910 REM HIGH ALTITUDE BY 10 000 FT
2920 AD = B(AT)
2930 RETURN
2940 REM MASS RUDUCTION SUBROUTINE *****
2950 RW = RW - (FC * .1)
2960 FA = FA - (FC * .1)
2970 IF FA < 0 THEN 2980 ELSE 3010
2980 LOCATE 19, 1
2990 PRINT , "OUT OF PROPELLANTS"
3000 GOTO 740
3010 RETURN