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