10 REM ...DRAGR.BS5 20 REM ...Modified for SOL BASIC5 by Ralph Hopkins; May 2003 30 REM ...from MECC : GAME 12-15-77 100 REM **** HP BASIC PROGRAM LIBRARY ********************* 110 REM 120 REM DRAG: SIMULATES A DRAG RACE 130 REM 140 REM 36601 REV B 10/73 150 REM 160 REM **** CONTRIBUTED PROGRAM ************************** 170 REM 180 DIM P(2),E(2),W(2),S(2),X(2),M(2),C(2),B(2),Y(2),Q(2) 190 PRINT "&K&J&J&JWELCOME TO THE DRAG STRIP.&J" 200 PRINT "WOULD YOU LIKE INSTRUCTIONS?"; 210 INPUT " (1=Yes, 0=No) --=>",I9 220 IF I9=0 THEN 00290 230 PRINT 240 PRINT "YOU MAY RACE AGAINST ONE OF YOUR FRIENDS OR YOU MAY RACE" 250 PRINT "AGAINST MY DRAGSTER. YOU WILL BE ASKED TO DESIGN YOUR" 260 PRINT "OWN MACHINE, SPECIFYING HORSEPOWER, REAR END RATIO (X:1)," 270 PRINT "TIRE WIDTH IN INCHES, AND TIRE DIAMETER IN FEET." 280 PRINT 290 PRINT "DO YOU WANT TO RACE AGAINST ME?"; 300 INPUT " (1=Yes, 0=No) --=>",I9 310 IF I9=0 THEN 380 320 PRINT "I WILL HAVE CAR # 1." 330 P(1)=600: PRINT "My horsepower is ";P(1) 340 E(1)=5.9: PRINT "My rear ratio is ";E(1) 350 W(1)=22 : PRINT "My tire width is ";W(1) 360 D(1)=3.9: PRINT "My tire diam. is ";D(1) 370 GOTO 470 380 PRINT "DESIGN CAR # 1:" 390 PRINT "HORSEPOWER="; 400 INPUT ""P(1) 410 PRINT "REAR END RATIO="; 420 INPUT ""E(1) 430 PRINT "TIRE WIDTH="; 440 INPUT ""W(1) 450 PRINT "TIRE DIAMETER="; 460 INPUT ""D(1) 470 PRINT "DESIGN CAR # 2:" 480 PRINT "(Example: 600) HORSEPOWER?"; 490 INPUT " --=>"P(2) 500 PRINT "(Example: 5.9) REAR RATIO?"; 510 INPUT " --=>"E(2) 520 PRINT "(Example: 22) TIRE WIDTH?"; 530 INPUT " --=>"W(2) 540 PRINT "(Example: 3.9) TIRE DIAMETER"; 550 INPUT " --=>"D(2) 560 PRINT 570 PRINT "GO!" 580 K1=500 590 K2=1.6 600 K3=2 610 K4=.0006 620 K5=.00006 630 K6=.2 640 K7=4 650 K8=.00015 660 Q(1)=0: Q(2)=0 670 S(1)=0: S(2)=0 680 X(1)=0: X(2)=0 690 FOR J=1 TO 2 700 REM :M IS MASS 710 M(J)=(K1+K2*P(J)+K3*W(J)*D(J)+(K7*D(J)*D(J)))/32.2 720 REM :C IS DRAG FROM WIND 730 C(J)=K4*((M(J)*M(J))/3)+(K8*W(J)*D(J)) 740 REM :B IS THE MAX ACCELERATION WITHOUT BURNING 750 B(J)=15+28*W(J)*D(J)/((W(J)+6)*(D(J)+1)) 760 REM :Y IS THE SCALE FACTOR FOR RPM VS POWER 770 Y(J)=3.7-.0033*P(J) 780 NEXT J 790 PRINT 800 PRINT 810 PRINT "ELAPSED";TAB(15);"CAR # 1";TAB(39);"CAR # 2" 820 PRINT "TIME SPEED DISTANCE SPEED DISTANCE" 830 PRINT "(SEC) (MPH) (FT) (MPH) (FT)" 840 PRINT 850 FOR T=0 TO 50 STEP 1 860 FOR T1=1 TO 100 STEP 1 870 FOR J=1 TO 2 880 REM :R IS RPM 890 R=60*S(J)*E(J)/(3.14159*D(J)) 900 REM :L0 IS ENGINE TORQUE 910 I8=(R/Y(J)): I8=I8*I8*I8 915 L0=(P(J)/42.5)*(50+.0078*(R/Y(J))-4.E-10*I8) 920 REM :L1 IS TORQUE FROM FRICTION 930 L1=P(J)*(K5*R+K6) 940 REM :L2 IS REAR AXEL TORQUE 950 L2=E(J)*(L0-L1) 960 REM :F IS FORCE ON ROAD FROM TIRES 970 F=2*L2/D(J) 980 REM :TEST FOR BURN 990 IF F>M(J)*B(J) THEN 01060 1000 REM :A=ACCELEARTION 1010 IF Q(J)<>0 THEN 01040 1020 PRINT "CAR # ";J;" STOPS BURNING RUBBER" 1030 Q(J)=1 1040 A=(F-C(J)*(S(J)*S(J)))/M(J) 1050 GOTO 01080 1060 A=B(J)-C(J)*(S(J)*S(J))/M(J) 1070 REM :S=SPEED IN FT/SEC 1080 S(J)=S(J)+A*.01 1090 REM :X=DISTANCE IN FT 1100 X(J)=X(J)+S(J)*.01 1110 NEXT J 1120 REM :TEST FOR FINISH 1130 IF X(1)=>5280/4 THEN 01210 1140 IF X(2)=>5280/4 THEN 01210 1150 NEXT T1 1160 PRINT T+1;S(1)*3600/5280,X(1),S(2)*3600/5280,X(2) 1170 NEXT T 1180 PRINT "TURTLE RACE TERMINATED." 1190 GOTO 01360 1200 REM :BRANCH TO WINNER 1210 IF X(1)>X(2) THEN 01290 1220 T3=(X(2)-5280/4)/S(2) 1230 T=T+INT((T1/100-T3)*10)/10 1240 X(2)=5280/4 1250 X(1)=X(1)-S(1)*T3 1260 PRINT T;S(1)*3600/5280,X(1),S(2)*3600/5280,X(2) 1270 PRINT TAB(40),"-WINNER-" 1280 GOTO 01350 1290 T3=(X(1)-5280/4)/S(1) 1300 T=T+INT((T1/100-T3)*10)/10 1310 X(1)=5280/4 1320 X(2)=X(2)-S(2)*T3 1330 PRINT T;S(1)*3600/5280,X(1),S(2)*3600/5280,X(2) 1340 PRINT TAB(10),"-WINNER-" 1350 PRINT 1360 PRINT "DO YOU WANT TO TRY AGAIN?" 1370 INPUT " (1=Yes, 0=No) --=>",I9 1380 IF I9=1 THEN 00290 1390 PRINT 1400 PRINT "THANK YOU FOR THE RACE." 1420 END