ROCKET48.BAS
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.
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