10 REM RACE2.ECB 20 REM ...:C IS DRAG FROM WIND 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) 200 PRINT "WOULD YOU LIKE INSTRUCTIONS" 210 INPUT "(1=YES 0=NO)---=>",I9 220 IF I9=0 THEN 290 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 LET P(1)=600 340 LET E(1)=5.9 350 LET W(1)=22 360 LET D(1)=3.9 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 "HORSEPOWER="; 490 INPUT P(2) 500 PRINT "REAR END RATIO="; 510 INPUT E(2) 520 PRINT "TIRE WIDTH="; 530 INPUT W(2) 540 PRINT "TIRE DIAMETER="; 550 INPUT D(2) 560 PRINT 570 PRINT "GO!" 580 LET K1=500 590 LET K2=1.6 600 LET K3=2 610 LET K4=.0006 620 LET K5=.00006 630 LET K6=.2 640 LET K7=4 650 LET K8=.00015 660 LET Q(1)=0: LET Q(2)=0 670 LET S(1)=0: LET S(2)=0 680 LET X(1)=0: LET X(2)=0 690 FOR J=1 TO 2 700 REM ...:M IS MASS 710 LET M(J)=(K1+K2*P(J)+K3*W(J)*D(J)+(K7*D(J)*D(J)))/32.2 730 LET C(J)=K4*((M(J)*M(J))/3)+(K8*W(J)*D(J)) 740 REM ...:B IS THE MAX ACCELERATION WITHOUT BURNING 750 LET 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 LET 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 LET R=60*S(J)*E(J)/(3.14159*D(J)) 900 REM ...:L0 IS ENGINE TORQUE 910 LET I8=(R/Y(J)): LET I8=I8*I8*I8 915 LET L0=(P(J)/42.5)*(50+.0078*(R/Y(J))-4.E-10*I8) 920 REM ...:L1 IS TORQUE FROM FRICTION 930 LET L1=P(J)*(K5*R+K6) 940 REM ...:L2 IS REAR AXEL TORQUE 950 LET L2=E(J)*(L0-L1) 960 REM ...:F IS FORCE ON ROAD FROM TIRES 970 LET F=2*L2/D(J) 980 REM ...:TEST FOR BURN 990 IF F>M(J)*B(J) THEN 1060 1000 REM ...:A=ACCELEARTION 1010 IF Q(J)<>0 THEN 1040 1020 PRINT "CAR # ";J;" STOPS BURNING RUBBER" 1030 LET Q(J)=1 1040 LET A=(F-C(J)*(S(J)*S(J)))/M(J) 1050 GOTO 1080 1060 LET A=B(J)-C(J)*(S(J)*S(J))/M(J) 1070 REM ...:S=SPEED IN FT/SEC 1080 LET S(J)=S(J)+A*.01 1090 REM ...:X=DISTANCE IN FT 1100 LET X(J)=X(J)+S(J)*.01 1110 NEXT J 1120 REM ...:TEST FOR FINISH 1130 IF X(1)>=5280/4 THEN 1210 1140 IF X(2)>=5280/4 THEN 1210 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 1360 1200 REM ...:BRANCH TO WINNER 1210 IF X(1)>X(2) THEN 1290 1220 LET T3=(X(2)-5280/4)/S(2) 1230 LET T=T+INT((T1/100-T3)*10)/10 1240 LET X(2)=5280/4 1250 LET 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 1350 1290 LET T3=(X(1)-5280/4)/S(1) 1300 LET T=T+INT((T1/100-T3)*10)/10 1310 LET X(1)=5280/4 1320 LET 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 290 1390 PRINT 1400 PRINT "THANK YOU FOR THE RACE." 1420 END