mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-21 03:23:57 +00:00
170 lines
5.5 KiB
QBasic
170 lines
5.5 KiB
QBasic
7 TEXT:HOME
|
|
10 REM PRINT CHR$(4);"BLOAD GLOBE.HGR,A$2000"
|
|
20 AN$="ZURGTROYD":S=3
|
|
95 G=-9.8
|
|
100 EN(1)=1:ST(1)=1:FT(1)=1
|
|
101 EN(2)=2:ST(2)=2:FT(2)=1
|
|
102 EN(3)=3:ST(3)=3:FT(3)=1
|
|
103 LN=0:CQ=0:OM=0
|
|
110 HIMEM:7925
|
|
120 POKE 232,245:POKE 233,30
|
|
130 FOR L=7925 TO 8175: READ B:POKE L,B:NEXT L
|
|
1000 PRINT "ROCKET SUMMARY:":PRINT
|
|
1005 FOR I=1 TO S
|
|
1010 EM(I)=EN(I)*1.5+ST(I)*FT(I)*0.5
|
|
1012 IF I=1 THEN EM(I)=EM(I)+1.0
|
|
1014 FM(I)=ST(I)*FT(I)*4.0
|
|
1015 SF(I)=FM(I)
|
|
1016 SM(I)=EM(I)+FM(I)
|
|
1020 TM(I)=0
|
|
1022 FOR J=1 TO I
|
|
1025 TM(I)=TM(I)+SM(J)
|
|
1030 NEXT J
|
|
1035 TH(I)=EN(I)*168
|
|
1040 DV(I)=270*-G*LOG(TM(I)/(TM(I)-FM(I)))
|
|
1050 TW(I)=TH(I)/(TM(I)*-G)
|
|
1055 FF(I)=TH(I)/(270*-G)
|
|
1990 PRINT "STAGE: ";4-I
|
|
1991 PRINT " TANKS=";ST(I)*FT(I);" ENGINES=";EN(I)
|
|
1992 PRINT " STAGE MASS=";SM(I);" TOTAL MASS=";TM(I)
|
|
1993 PRINT " DELTAV=";DV(I)
|
|
1995 PRINT " TWR=";TW(I)
|
|
2000 NEXT I
|
|
2999 GET A$
|
|
3000 AN=0:GX=0:GY=-9.8:GA=0:V=0:VX=0:VY=0:AX=0:AY=0:KR=600000
|
|
3016 RX=0:RY=KR+10:RA=KR+10:TR=0:T=0
|
|
3020 HGR:ROT=0:SCALE=2:H=0
|
|
3030 REM ** LAUNCHPAD **
|
|
3035 PRINT:PRINT CHR$(4);"BLOAD LAUNCHPAD.HGR,A$2000"
|
|
3038 HCOLOR=1:HPLOT 1,80 TO 132,80: HPLOT 148,80 TO 247,80
|
|
3039 HCOLOR=3:HPLOT 110,110 TO 110,60:HPLOT TO 130,60: HPLOT 110,70 TO 130,70
|
|
3040 XDRAW 1+((S-1)*2)+TR AT 140,80
|
|
4000 REM ** LOOP **
|
|
4002 IF LN=0 GOTO 5032
|
|
4003 RR=RA-KR
|
|
4004 IF OM=1 GOTO 4018
|
|
4005 IF RR>1800 OR OM=1 THEN GOTO 4012
|
|
4007 HCOLOR=0:HPLOT 1,80+H TO 132,80+H:HPLOT 148,80+H TO 247,80+H
|
|
4010 H=RR/20:HCOLOR=1:HPLOT 1,80+H TO 132,80+H:HPLOT 148,80+H TO 247,80+H
|
|
4012 IF RR<40000 AND CQ<>0 THEN GOSUB 7600
|
|
4014 IF RR<40000 GOTO 4018
|
|
4016 IF RR>40000 AND CQ<>1 THEN GOSUB 7700
|
|
4018 FL=FM(S)*100/SF(S)
|
|
4020 IF TR<>1 THEN GOTO 4050
|
|
4025 IF FM(S)<0.1 THEN FM(S)=0:AX=0:AY=0:GOTO 4050
|
|
4030 AX=(TH(S)/TM(S))*SIN(AN):AY=(TH(S)/TM(S))*COS(AN)
|
|
4040 FM(S)=FM(S)-FF(S):TM(S)=TM(S)-FF(S)
|
|
4047 GOTO 4060
|
|
4050 REM NOT THRUSTING
|
|
4055 AX=0:AY=0
|
|
4060 GA=ATN(RX/RY)
|
|
4065 IF RY<0 THEN GA=GA+3.14
|
|
4070 GY=COS(GA)*G:GX=SIN(GA)*G
|
|
4080 AY=AY+GY:AX=AX+GX
|
|
4090 ZX=VX:ZY=VY
|
|
5000 VY=ZY+AY:VX=ZX+AX
|
|
5010 V=SQR(VX*VX+VY*VY)
|
|
5012 RY=RY+0.5*(ZY+VY):RX=RX+0.5*(ZX+VX)
|
|
5018 RA=SQR(RX*RX+RY*RY)
|
|
5020 IF RA<KR THEN GOTO 8000
|
|
5030 G=-9.8/((RA/KR)*(RA/KR))
|
|
5032 VTAB 21
|
|
5040 PRINT "TIME: ";T,"STAGE: ";4-S;" ";AN$
|
|
5045 PRINT "ALT: ";INT((RA-KR)/1000);"KM ";AN;" "
|
|
5060 PRINT "VEL: ";INT(V);"M/S","FUEL: ";INT(FL);"% "
|
|
5113 IF OM<>1 THEN XDRAW 1+((S-1)*2)+TR AT 140,80
|
|
5115 Q=PEEK(-16384):IF Q<128 THEN GOTO 6080
|
|
6000 A$=CHR$(Q-128):POKE 49168,0
|
|
6060 IF A$="Q" THEN END
|
|
6061 IF A$="A" THEN R=R-8:AN=AN-0.7853
|
|
6062 IF A$="D" THEN R=R+8:AN=AN+0.7853
|
|
6063 IF A$="C" THEN GOTO 8000
|
|
6064 IF A$="Z" THEN TH=1
|
|
6065 IF A$="V" THEN RA=RA+100
|
|
6066 IF A$="X" THEN TH=0
|
|
6067 IF A$="M" THEN GOTO 6300
|
|
6068 IF A$=" " AND LN=1 THEN S=S-1:XX=PEEK(-16336)
|
|
6069 IF A$=" " AND LN=0 THEN GOSUB 7500
|
|
6070 IF A$="E" THEN GOSUB 8100
|
|
6073 IF R=64 THEN R=0:AN=0
|
|
6074 IF R=-8 THEN R=56
|
|
6075 IF S<1 THEN S=1
|
|
6080 ROT=R
|
|
6090 IF OM<>1 THEN XDRAW 1+((S-1)*2)+TR AT 140,80
|
|
6095 IF OM=1 THEN HX=INT(RX/25000)+140:HY=INT(-RY/25000)+85:HCOLOR=3:HPLOT HX,HY
|
|
6118 T=T+1
|
|
6200 GOTO 4000
|
|
6300 IF OM=1 THEN OM=0:CQ=-1:GOTO 4000
|
|
6310 OM=1:HOME:PRINT:PRINT CHR$(4);"BLOAD GLOBE.HGR,A$2000":GOTO 6095
|
|
7200 DATA 6,0,14,0,42,0,77,0,113,0
|
|
7201 DATA 156,0,200,0,219,36,36,44,44,44
|
|
7202 DATA 53,53,53,54,54,54,54,63,63,45
|
|
7203 DATA 46,46,62,63,63,39,37,37,63,36
|
|
7204 DATA 36,0,219,36,36,44,44,44,53,53
|
|
7205 DATA 53,54,54,54,54,63,63,45,46,46
|
|
7206 DATA 62,63,127,73,62,54,62,39,36,39
|
|
7207 DATA 39,37,37,63,36,36,0,219,36,36
|
|
7208 DATA 36,36,44,44,44,53,53,53,54,54
|
|
7209 DATA 54,54,54,54,54,54,63,63,45,46
|
|
7210 DATA 46,62,63,63,39,37,37,63,36,36
|
|
7211 DATA 36,36,0,219,36,36,36,36,44,44
|
|
7212 DATA 44,53,53,53,54,54,54,54,54,54
|
|
7213 DATA 54,54,63,63,45,46,46,62,63,127
|
|
7214 DATA 73,62,54,62,39,36,39,39,37,37
|
|
7215 DATA 63,36,36,36,36,0,219,36,36,36
|
|
7216 DATA 36,36,36,44,44,44,53,53,53,54
|
|
7217 DATA 54,54,54,54,54,54,54,54,54,54
|
|
7218 DATA 54,63,63,45,46,46,62,63,63,39
|
|
7219 DATA 37,37,63,36,36,36,36,36,36,0
|
|
7220 DATA 219,36,36,36,36,36,36,44,44,44
|
|
7221 DATA 53,53,53,54,54,54,54,54,54,54
|
|
7222 DATA 54,54,54,54,54,63,63,45,46,46
|
|
7223 DATA 62,63,127,73,62,54,62,39,36,39
|
|
7224 DATA 39,37,37,63,36,36,36,36,36,36
|
|
7225 DATA 0
|
|
7500 REM *** LAUNCH ***
|
|
7510 HCOLOR=0:HPLOT 110,110 TO 110,60:HPLOT TO 130,60: HPLOT 110,70 TO 130,70
|
|
7520 XX=PEEK(-16336)
|
|
7530 TR=1:LN=1
|
|
7535 GOSUB 8220
|
|
7540 RETURN
|
|
7600 REM *** GROUND ***
|
|
7610 HOME:PRINT:PRINT CHR$(4);"BLOAD LAUNCHPAD.HGR,A$2000"
|
|
7615 XDRAW 1+((S-1)*2)+TR AT 140,80
|
|
7620 CQ=0
|
|
7650 RETURN
|
|
7700 REM *** SPACE_UP ***
|
|
7710 HOME:PRINT:PRINT CHR$(4);"BLOAD ORBIT_TOP.HGR,A$2000"
|
|
7715 XDRAW 1+((S-1)*2)+TR AT 140,80
|
|
7720 CQ=1
|
|
7750 RETURN
|
|
8000 REM *** CRASH ***
|
|
8010 SCALE=3
|
|
8015 GOSUB 8200
|
|
8020 FOR I=0 TO 64 STEP 8: ROT=I:XDRAW 1+((S-1)*2)+TH AT 140,80: XX=PEEK(-16336):NEXT I
|
|
8030 FOR I=1 TO 50
|
|
8040 X=INT(RND(1)*80)+1:Y=INT(RND(1)*80)+1
|
|
8050 C=INT(RND(1)*7)+1:HCOLOR=C
|
|
8060 HPLOT 140,80 TO 100+X,40+Y
|
|
8070 XX=PEEK(-16336)
|
|
8080 NEXT I
|
|
8090 END
|
|
8100 REM *** KERBAL EYES ***
|
|
8105 HCOLOR=3:HPLOT 258,150 TO 263,150:HPLOT 265,150 TO 270,150
|
|
8110 KE=INT(RND(1)*3)
|
|
8120 HCOLOR=0:HPLOT 258+(2*KE),150 TO 259+(2*KE),150
|
|
8125 HPLOT 265+(2*KE),150 TO 266+(2*KE),150
|
|
8130 RETURN
|
|
8200 REM *** KERBAL FROWN ***
|
|
8205 HCOLOR=1:HPLOT 259,155 TO 271,155:HPLOT 259,156 TO 271,156
|
|
8206 HCOLOR=0:HPLOT 261,155 TO 269,155:HPLOT 259,156 TO 271,156
|
|
8207 RETURN
|
|
8210 REM *** KERBAL NEUTRAL ***
|
|
8215 HCOLOR=1:HPLOT 259,155 TO 271,155:HPLOT 259,156 TO 271,156
|
|
8216 HCOLOR=0:HPLOT 259,155 TO 271,155
|
|
8217 RETURN
|
|
8220 REM *** KERBAL SMILE ***
|
|
8225 HCOLOR=1:HPLOT 259,155 TO 271,155:HPLOT 259,156 TO 271,156
|
|
8226 HCOLOR=0:HPLOT 259,155 TO 271,155:HPLOT 261,156 TO 269,156
|
|
8227 RETURN
|