' BELTS.BAS ' DogBasic program to calculate belt lengths/axle centres ' then chop to 2 decimal places PI = 3.1415926535895#: CLS : DEFDBL A-M: N% = 0 START: PRINT INPUT "First pulley diameter? - ", A INPUT "Second pulley diameter? - ", B C = (A + B) / 2 OPTIONS: INPUT "Calculate Axle spacing or Belt length? Enter A or B - ", F$ IF F$ = "A" OR F$ = "a" GOTO AXLES IF F$ = "B" OR F$ = "b" GOTO BELT GOTO OPTIONS AXLES: INPUT "Enter belt length: ", D E = D / 2 BODGE: GOSUB CALCULATE F = G - D E = E - F / 2 N% = N% + 1: PRINT N%; "Times round loop. Error ="; F IF E < C THEN PRINT "Too short - Try again:": GOTO AXLES IF ABS(F) > .000000000000001# GOTO BODGE PRINT "Axle centre spacing ="; : PRINT USING "#######.##"; E GOTO STARTAGAIN BELT: INPUT "Enter axle distance: ", E IF E < C THEN PRINT "Too close - Try again:": GOTO BELT GOSUB CALCULATE PRINT "Length of belt ="; : PRINT USING "#######.##"; G GOTO STARTAGAIN CALCULATE: H = A / 2 - B / 2: REM Where A = 1st pulley diameter, B = 2nd J = SQR(E ^ 2 - H ^ 2): REM Where E = axle distance M = ATN(H / J) K = A * PI / 2 + M * A L = B * PI / 2 - M * B G = 2 * J + K + L RETURN STARTAGAIN: N% = 0 PRINT PRINT "Again? (B from beginning, P for same pulleys or Q to quit) "; INPUT "", Q$ IF Q$ = "P" OR Q$ = "p" THEN PRINT : GOTO OPTIONS IF Q$ = "B" OR Q$ = "b" THEN CLS : GOTO START IF Q$ = "Q" OR Q$ = "q" THEN END GOTO STARTAGAIN 10000 REM Subroutine to calculate belt length 10010 REM Where A = 1st pulley diameter, B = 2nd pulley dia' 10020 REM and E = spacing between axle centres. 10030 REM Returns with belt length = G 10040 H = A / 2 - B / 2 10050 J = SQR(E ^ 2 - H ^ 2) 10060 M = ATN(H / J) 10070 K = A * PI / 2 + M * A 10080 L = B * PI / 2 - M * B 10090 G = 2 * J + K + L 10100 RETURN