Auto High Performance is a workshop calculator for the car enthusiast. Its menu offers eight tools: the new rate of a coil spring after it has been cut, bolt torque tables for grade 5, 7 and 8 bolts (dry and oiled), carburettor CFM for street and strip use, front and rear weight distribution, engine displacement from bore, stroke and cylinder count, the octane of two mixed fuels, gearing against miles per hour, and a suspension-tuning chart. Each calculator keeps a running table of your results on screen, lets you change one value and recalculate, and copies the screen to a printer. A final option gathers the latest figures from every section onto one totals page, on the screen or the printer.
The title screen, a red muscle car, reads “© 1985 D.A.HILL”, and the program’s REM credits David A. Hill; its menu is headed “Total Performance Software”. Hill, a certified mechanic, describes the program and his reasons for writing it in his letter to Tom Bent. He also published the FD-68 User newsletter for AERCO disk owners, and the program was distributed on an AERCO DOS-64 disk.
Program Analysis
The BASIC program HIGH (about 550 lines) holds every calculator; a 3,935-byte code block PERF at 61600 supplies two custom character sets and a few screen routines. Each section starts with GO SUB 5530 or GO SUB 5540, which POKE the system variable CHARS (23606/23607) to switch between a wide and a narrow font in the code block, and with an ON ERR GO TO pointing at its own first line, so a bad entry simply restarts that screen.
The calculations
- Carburettor CFM: cubic inches × maximum RPM ÷ 3456, taken at 85% for a street engine and 100% for the strip (
DEF FN candDEF FN q, lines 340–350). - Displacement: bore² × 0.7854 × stroke × cylinders (
DEF FN s, line 790). - Spring cutting: the fraction of the length removed is added to the old rate (
DEF FN pandDEF FN f, lines 1370–1380). - Mixed fuels: the gallon-weighted average of the two octane ratings, rounded to two places (line 2030).
- Weight distribution: front weight as a percentage of the total, with the rear as the remainder and a rounding fix so the two always add to 100 (lines 2630–2640).
- Gearing: MPH = RPM × tire diameter ÷ (gear ratio × 333), with RPM kept in thousands; any one of the four values can be solved from the other three (lines 3360–3390, 4031–4034).
- Bolt torque: three tables of foot-pound values held in DATA statements at lines 4660–4720, shown with a grade-marking symbol drawn from user-defined graphics.
Notable Techniques
- Results tables are drawn with PLOT and DRAW (line 4180) and filled row by row; when a table is full, machine code routines in
PERF(for exampleUSR 65054) clear it. - The totals page (lines 4740–5500) prints to the screen or, after
OPEN #2,"P", sends the same PRINT statements to the printer. - The menu sets CAPS LOCK with
POKE 23658,8and reads capital letters; the calculators switch it off again. - A
RANDOMIZE USR 2217ROM call comes before most prompts, apparently to clear the lower screen. - The program is saved with a worked example in its variables, which the totals page shows until you enter your own figures. Line 5550 re-dimensions all the result arrays.
Potential Issues
- The spring calculation adds the cut fraction to the rate (cutting 14 in. to 12 in. turns 400 into 457). The usual rule multiplies the rate by the length ratio, which gives about 467, so the result appears to be a little low.
- Displacement is rounded with
INT(…)+1, which adds one cubic inch even when the result is already a whole number. - Line 4830,
IF H$<>"D" OR H$<>"P", is always true. It does no harm, because the D and P cases are handled on the lines before it.
This copy came from an AERCO FD-68 disk in Joe’s collection and was converted to load from tape on a stock TS2068: a new loader replaces the disk’s boot program and loads the title screen, and line 5520’s disk command CAT "PERF.BIN", became LOAD "PERF"CODE. Nothing else was changed. Every menu option was tested in ZEsarUX; the printer output was not. The download also holds the original AERCO disk image.
Source Code
1 REM AUTO HIGH PERFORMANCE * 1985 by David A. Hill
5 CLEAR 61599: PAPER 0: INK 0: BORDER 0: CLS : LOAD "FALCON"SCREEN$ : LOAD "HIGH"
0 REM AUTO HIGH PERFORMANCE * 1985 BY DAVID A. HILL ALL RIGHTS RESERVED
10 GO SUB 5540: ON ERR RESET : BORDER 1: PAPER 0: INK 5: CLS : LET menu=10
20 LET i$="APPLY FIRST CHOICE TO COLUMN? "
30 DIM q$(3,6)
40 LET q$(1)="SPRING": LET q$(2)="BEFORE": LET q$(3)="AFTER"
50 LET c$=" CHANGE WHICH COLUMN? "
60 LET d$=" "
70 LET e$="PRESS ""C"" TO COPY ""M"" FOR MENU"
80 LET g$=" GALLONS OR OCTANE (G/O)? "
90 PRINT AT 1,2; PAPER 3; INK 2;":'''''''''''''''''''''''''''''''''''''''''''''''''''''':";AT 2,2; PAPER 3; INK 2;": "; PAPER 4; INK 0;"TOTAL PERFORMANCE SOFTWARE"; PAPER 3; INK 2;" :";AT 3,2; PAPER 3; INK 2;":......................................................:"
100 POKE 23658,8: POKE 23609,30
110 PRINT '" A} COIL SPRING RATE AFTER CUT"
120 PRINT '" B} BOLT TORQUE SPECIFICATIONS"
130 PRINT '" C} CARB CFM REQUIREMENTS"
140 PRINT '" D} WEIGHT DISTRIBUTION"
150 PRINT '" E} ENGINE DISPLACEMENT"
160 PRINT '" F} MIXING FUELS "
170 PRINT '" G} GEARING -VS- MILES PER HOUR"
180 PRINT '" H} SUSPENSION TUNING"
190 PRINT '" I} PRINT TOTALS THIS SESSION"
200 RANDOMIZE USR 2217: PRINT #1;" PRESS THE LETTER OF YOUR CHOICE"
210 IF INKEY$="" THEN GO TO 210
220 IF INKEY$="A" THEN GO TO 1350
230 IF INKEY$="B" THEN GO TO 4280
240 IF INKEY$="C" THEN GO TO 320
250 IF INKEY$="D" THEN GO TO 2540
260 IF INKEY$="E" THEN GO TO 780
270 IF INKEY$="F" THEN GO TO 1950
280 IF INKEY$="G" THEN GO TO 3350
290 IF INKEY$="H" THEN GO TO 3070
300 IF INKEY$="I" THEN GO TO 4740
310 GO TO 200
320 GO SUB 5530: ON ERR GO TO 320
330 BORDER 4: PAPER 6: INK 0: CLS
340 DEF FN c(a,b)=INT (((a*b)/3456)*.85)
350 DEF FN q(t,v)=INT ((t*v)/3456)
360 POKE 23658,0: LET exit=1: LET ln=7
370 GO SUB 4180
380 PRINT AT 1,2; PAPER 5; INK 0;"GUIDE TO PROPER CARBURETION"
390 PRINT AT 4,8;"MAX";AT 4,15;"STREET";AT 4,24;"STRIP"
400 PRINT AT 5,1;"CID";AT 5,8;"RPM";AT 5,16;"CARB";AT 5,24;"CARB"
410 GO TO 660
420 INK 7: PRINT AT 3,1; PAPER 1;" 1 ";AT 3,8; PAPER 2;" 2 ";AT 3,15; PAPER 3;" ";AT 3,24; PAPER 4;" "
430 LET e1=e: LET r1=r: LET cfm1=cfm: LET strip1=strip
440 PRINT AT 20,1; PAPER 5; INK 0;c$: GO SUB 4730
450 IF INKEY$="" THEN GO TO 450
460 IF INKEY$<>"" THEN LET a$=INKEY$
470 IF a$="1" THEN RANDOMIZE USR 2217: GO TO 530
480 IF a$="2" THEN RANDOMIZE USR 2217: GO TO 560
490 IF a$="c" OR a$="C" THEN COPY : GO TO 440
500 IF a$="v" OR a$="V" THEN GO TO 3980
510 IF a$="m" OR a$="M" THEN LET c(1)=e: LET c(2)=r: LET c(3)=cfm: LET c(4)=strip: GO TO menu
520 GO TO 450
530 PRINT AT 20,1; PAPER 6;d$
540 FLASH 1: PRINT AT 3,1; PAPER 1;" 1 ": FLASH 0
550 INPUT "ENTER ENGINE CID ";e: GO TO 590
560 PRINT AT 20,1; PAPER 5; INK 0;c$
570 FLASH 1: PRINT AT 3,8; PAPER 2;" 2 ": FLASH 0
580 INPUT "ENTER MAXIMUM RPM ";r
590 LET cfm=FN c(e,r)
600 LET strip=FN q(e,r)
610 IF ln=19 THEN GO TO 3980
620 PAPER 6: INK 0: PRINT AT ln-1,1;e1;AT ln-1,8;r1;AT ln-1,16;cfm1;AT ln-1,25;strip1
630 PAPER 1: INK 7: PRINT AT ln,1;e;AT ln,8;r;AT ln,16;cfm;AT ln,25;strip
640 LET ln=ln+1
650 GO TO 420
660 IF C(1)<>0 THEN GO SUB 770
670 IF C(1)=0 THEN GO TO 710
680 IF INKEY$="" THEN GO TO 680
690 IF INKEY$="c" THEN GO TO 630
700 IF INKEY$<>"c" AND INKEY$<>"n" THEN GO TO 660
710 PRINT AT 20,1; PAPER 6;d$: INPUT "ENTER ENGINE CID ";e: PRINT AT ln,1; PAPER 1; INK 7;e
720 INPUT "ENTER MAXIMUM RPM ";r: PRINT AT ln,8; PAPER 1; INK 7;r
730 LET cfm=FN c(e,r)
740 LET strip=FN q(e,r)
750 PAPER 1: INK 7: PRINT AT ln,16;cfm;AT ln,25;strip
760 GO TO 630
770 FLASH 1: PRINT AT 20,1; PAPER 5; INK 0;" NEW DATA OR CONTINUE (N/C) ": FLASH 0: RETURN
780 GO SUB 5530: ON ERR GO TO 780: BORDER 4: PAPER 6: CLS : POKE 23658,0
790 DEF FN s(x,y)=(x^2*.7854*y)
800 GO SUB 4180
810 INK 0: PRINT AT 1,2; PAPER 5;"FIGURING ENGINE DISPLACEMENT"
820 INK 7: PRINT AT 3,1; PAPER 1;" 1 ";AT 3,8; PAPER 2;" 2 ";AT 3,16; PAPER 3;" 3 ";AT 3,24; PAPER 4;" "
830 PAPER 6: INK 0: PRINT AT 4,1;"BORE";AT 4,15;"NO.OF";AT 4,24;"CUBIC"
840 PRINT AT 5,1;"DIA.";AT 5,7;"STROKE";AT 5,15;"CYL.";AT 5,24;"INCHES"
850 LET exit=2: LET ln=7: GO TO 1210
860 LET cid=INT (FN s(a,b)*c)+1
870 INK 7: PRINT AT 3,1; PAPER 1;" 1 ";AT 3,8; PAPER 2;" 2 ";AT 3,16; PAPER 3;" 3 "
880 IF ln=19 THEN GO TO 3980
890 PRINT AT 20,1; PAPER 6; INK 6;d$
900 PAPER 6: INK 0: IF INT a1=a1 THEN PRINT AT ln-1,1;a1;".00"
910 PRINT AT ln-1,1;a1
920 IF INT b1=b1 THEN PRINT AT ln-1,8;b1;".00"
930 PRINT AT ln-1,8;b1
940 PRINT AT ln-1,17;c1;AT ln-1,25;cid1
950 PAPER 1: INK 7: IF INT a=a THEN PRINT AT ln,1;a;".00"
960 PRINT AT ln,1;a
970 IF INT b=b THEN PRINT AT ln,8;b;".00"
980 PRINT AT ln,8;b
990 PRINT AT ln,17;c;AT ln,25;cid
1000 LET a1=a: LET b1=b: LET c1=c: LET cid1=cid
1010 LET ln=ln+1
1020 PRINT AT 20,1; PAPER 5; INK 0;c$: GO SUB 4730
1030 IF INKEY$="" THEN GO TO 1030
1040 IF INKEY$<>"" THEN LET a$=INKEY$
1050 IF a$="1" THEN INK 7: GO TO 1120
1060 IF a$="2" THEN INK 7: GO TO 1150
1070 IF a$="3" THEN INK 7: GO TO 1180
1080 IF a$="c" OR a$="C" THEN COPY : GO TO 1000
1090 IF a$="m" OR a$="M" THEN LET e(1)=a: LET e(2)=b: LET e(3)=c: LET E(4)=cid: GO TO menu
1100 IF a$="v" OR a$="V" THEN GO TO 3980
1110 GO TO 1000
1120 PRINT AT 20,1; PAPER 6;d$
1130 FLASH 1: PRINT AT 3,1; PAPER 1;" 1 ": FLASH 0
1140 INPUT "ENTER THE BORE DIA. ";a: GO TO 860
1150 PRINT AT 20,1; PAPER 6;d$
1160 FLASH 1: PRINT AT 3,8; PAPER 2;" 2 ": FLASH 0
1170 INPUT "ENTER STROKE LENGTH ";b: GO TO 860
1180 PRINT AT 20,1; PAPER 6;d$
1190 FLASH 1: PRINT AT 3,16; PAPER 3;" 3 ": FLASH 0
1200 INPUT "HOW MANY CYLINDERS? ";c: GO TO 860
1210 IF E(1)<>0 THEN GO SUB 770
1220 IF E(1)=0 THEN GO TO 1260
1230 IF INKEY$="" THEN GO TO 1230
1240 IF INKEY$="c" THEN GO TO 950
1250 IF INKEY$<>"c" AND INKEY$<>"n" THEN GO TO 1230
1260 PRINT AT 20,1; PAPER 6;D$: INPUT "ENTER THE BORE DIA. ";a
1270 PAPER 1: INK 7: IF INT a=a THEN PRINT AT ln,1;a;".00"
1280 PRINT AT ln,1;a
1290 INPUT "ENTER STROKE LENGTH ";b
1300 IF INT b=b THEN PRINT AT ln,8;b;".00"
1310 PRINT AT ln,8;b
1320 INPUT "HOW MANY CYLINDERS? ";c: PRINT AT ln,17;c
1330 LET cid=INT (FN s(a,b)*c)+1
1340 GO TO 950
1350 POKE 23658,0: GO SUB 5530: ON ERR GO TO 1350
1360 LET ln=7
1370 DEF FN p(a,b)=1-(a/b)
1380 DEF FN f(c,d)=c+(d*c)
1390 BORDER 4: PAPER 6: INK 0: CLS
1400 GO SUB 1790
1410 PRINT AT 1,7; PAPER 5;"RATING SPRING CUTS"
1420 PRINT AT 3,1;q$(1);" LENGTH";AT 3,18;q$(1);" RATE"
1430 PRINT AT 5,1;q$(2);AT 5,9;q$(3);AT 5,17;q$(2);AT 5,25;q$(3)
1440 GO TO 1830
1450 LET per=FN p(wla,wlb)
1460 LET sp=FN f(ee,per)
1470 IF ln=19 THEN GO TO 1940
1480 PAPER 6: INK 0
1490 PRINT AT ln-1,1;wlb1;AT ln-1,9;wla1;AT ln-1,17;e1;AT ln-1,25;INT sp1
1500 PAPER 6: INK 0: PRINT AT 3,1;q$(1);" LENGTH";AT 3,18;q$(1);" RATE"
1510 PRINT AT 5,1;q$(2);AT 5,9;q$(3);AT 5,17;q$(2);AT 5,25;q$(3)
1520 PAPER 1: INK 7
1530 PRINT AT ln,1;wlb;AT ln,9;wla;AT ln,17;ee;AT ln,25;INT sp
1540 LET wlb1=wlb: LET wla1=wla: LET e1=ee: LET sp1=sp
1550 LET ln=ln+1
1560 PRINT AT 20,1; PAPER 5; INK 0;" CHANGE LENGTH OR RATE (L/R)? ": GO SUB 4730
1570 IF INKEY$="" THEN GO TO 1570
1580 IF INKEY$<>"" THEN LET a$=INKEY$
1590 IF a$="C" OR a$="c" THEN COPY : GO TO 1560
1600 IF a$="L" OR a$="l" THEN RANDOMIZE USR 2217: GO TO 1650
1610 IF a$="R" OR a$="r" THEN RANDOMIZE USR 2217: GO TO 1760
1620 IF a$="V" OR a$="v" THEN GO TO 1940
1630 IF a$="M" OR a$="m" THEN LET s(1)=wlb: LET s(2)=wla: LET s(3)=ee: LET s(4)=sp: GO TO menu
1640 GO TO 1560
1650 PRINT AT 3,1; PAPER 2; INK 7;q$(1);" LENGTH"
1660 PRINT AT 20,1; PAPER 5; INK 0;" BEFORE OR AFTER CUT (B/A)? "
1670 IF INKEY$="" THEN GO TO 1670
1680 IF INKEY$<>"" THEN LET x$=INKEY$
1690 IF x$="B" OR x$="b" THEN GO TO 1720
1700 IF x$="A" OR x$="a" THEN GO TO 1740
1710 GO TO 1650
1720 FLASH 1: PRINT AT 5,1; PAPER 1; INK 7;q$(2): FLASH 0
1730 INPUT "LENGTH BEFORE CUTTING? ";wlb: GO TO 1450
1740 FLASH 1: PRINT AT 5,9; PAPER 1; INK 7;q$(3): FLASH 0
1750 INPUT "LENGTH AFTER CUTTING? ";wla: GO TO 1450
1760 PRINT AT 3,18; PAPER 2; INK 7;q$(1);" RATE"
1770 FLASH 1: PRINT AT 5,17; PAPER 1; INK 7;q$(2): FLASH 0: PRINT AT 20,1; PAPER 6;d$
1780 INPUT "RATE BEFORE CUTTING? ";ee: GO TO 1450
1790 INK 0: PLOT 0,0: DRAW 0,175: DRAW 255,0: DRAW 0,-175: DRAW -255,0
1800 PLOT 0,155: DRAW 255,0: PLOT 0,140: DRAW 255,0: PLOT 0,123: DRAW 255,0: PLOT 0,23: DRAW 255,0
1810 PLOT 63,140: DRAW 0,-117: PLOT 127,155: DRAW 0,-132: PLOT 192,140: DRAW 0,-117
1820 RETURN
1830 IF S(1)<>0 THEN GO SUB 770
1840 IF S(1)=0 THEN GO TO 1880
1850 IF INKEY$="" THEN GO TO 1850
1860 IF INKEY$="c" THEN GO TO 1500
1870 IF INKEY$<>"c" AND INKEY$<>"n" THEN GO TO 1850
1880 PRINT AT 20,1; PAPER 6;d$: PAPER 1: INK 7: INPUT "LENGTH BEFORE CUTTING? ";wlb: PRINT AT ln,1;wlb
1890 INPUT "LENGTH AFTER CUTTING? ";wla: PRINT AT ln,9;wla
1900 INPUT "RATE BEFORE CUTTING? ";ee: PRINT AT ln,17;ee
1910 LET per=FN p(wla,wlb)
1920 LET sp=FN f(ee,per)
1930 PRINT AT ln,25;INT sp: GO TO 1500
1940 PAPER 6: PRINT AT 7,0: LET cl=USR 65054: LET ln=7: GO TO 1500
1950 GO SUB 5530: ON ERR GO TO 1950: POKE 23658,0: DEF FN e(b,c,d)=(b+c)/d
1960 PAPER 6: INK 0: BORDER 4: LET ln=7: CLS
1970 GO SUB 2500
1980 PRINT AT 1,1; PAPER 5;"OCTANE RATINGS OF MIXED FUELS"
1990 PRINT AT 3,3;"FUEL A";AT 3,14;"FUEL B";AT 4,23;"COMBINED"
2000 PRINT AT 5,1;"GAL.";AT 5,7;"OCT.";AT 5,12;"GAL.";AT 5,18;"OCT.";AT 5,24;"OCTANE"
2010 GO TO 2390
2020 PAPER 6: INK 0: PRINT AT 3,3;"FUEL A";AT 3,14;"FUEL B"
2030 LET oca=ga*oa: LET ocb=gb*ob: LET tg=ga+gb: LET noc=FN e(oca,ocb,tg): LET noc=INT (noc*100+.5)/100
2040 PRINT AT 5,1;"GAL.";AT 5,7;"OCT.";AT 5,12;"GAL.";AT 5,18;"OCT."
2050 IF ln=19 THEN GO TO 2530
2060 PAPER 6: INK 0: PRINT AT ln-1,1;ga1;AT ln-1,7;oa1;AT ln-1,12;gb1;AT ln-1,18;ob1;AT ln-1,25;noc1
2070 PAPER 1: INK 7: PRINT AT ln,1;ga;AT ln,7;oa;AT ln,12;gb;AT ln,18;ob;AT ln,25;noc
2080 LET ln=ln+1
2090 LET ga1=ga: LET oa1=oa: LET gb1=gb: LET ob1=ob: LET noc1=noc
2100 PRINT AT 20,1; PAPER 5; INK 0;" Change Which Fuel? (a/b) ": GO SUB 4730
2110 IF INKEY$="" THEN GO TO 2110
2120 IF INKEY$<>"" THEN LET a$=INKEY$
2130 IF a$="B" OR a$="b" THEN RANDOMIZE USR 2217: GO TO 2290
2140 IF a$="A" OR a$="a" THEN RANDOMIZE USR 2217: GO TO 2190
2150 IF a$="M" OR a$="m" THEN LET o(1)=Ga: LET o(2)=oA: LET o(3)=gB: LET o(4)=Ob: LET o(5)=noc: GO TO menu
2160 IF a$="v" OR a$="V" THEN GO TO 2530
2170 IF a$="c" OR a$="C" THEN COPY : GO TO 2530
2180 GO TO 2100
2190 PRINT AT 3,3; PAPER 2; INK 7;"FUEL A": PRINT AT 20,1; PAPER 5; INK 0;g$
2200 IF INKEY$="" THEN GO TO 2200
2210 IF INKEY$<>"" THEN LET b$=INKEY$
2220 IF b$="O" OR b$="o" THEN GO TO 2270
2230 IF b$="G" OR b$="g" THEN GO TO 2250
2240 GO TO 2190
2250 FLASH 1: PRINT AT 5,1; PAPER 1; INK 7;"GAL.": FLASH 0: PRINT AT 20,1; PAPER 6;d$
2260 INPUT "Gallons of Fuel -A- ";ga: GO TO 2020
2270 FLASH 1: PRINT AT 5,7; PAPER 1; INK 7;"OCT.": FLASH 0: PRINT AT 20,1; PAPER 6;d$
2280 INPUT "Octane Rating of Fuel -A- ";oa: GO TO 2020
2290 PRINT AT 3,14; PAPER 2; INK 7;"FUEL B": PRINT AT 20,1; PAPER 5; INK 0;g$
2300 IF INKEY$="" THEN GO TO 2300
2310 IF INKEY$<>"" THEN LET b$=INKEY$
2320 IF b$="G" OR b$="g" THEN GO TO 2350
2330 IF b$="O" OR b$="o" THEN GO TO 2370
2340 GO TO 2290
2350 FLASH 1: PRINT AT 5,12; PAPER 1; INK 7;"GAL.": FLASH 0: PRINT AT 20,1; PAPER 6;d$
2360 INPUT "Gallons of Fuel -B- ";gb: GO TO 2020
2370 FLASH 1: PRINT AT 5,18; PAPER 1; INK 7;"OCT.": FLASH 0: PRINT AT 20,1; PAPER 6;d$
2380 INPUT "Octane Rating of Fuel -B- ";ob: GO TO 2020
2390 IF o(1)<>0 THEN GO SUB 770
2400 IF o(1)=0 THEN GO TO 2440
2410 IF INKEY$="" THEN GO TO 2410
2420 IF INKEY$="c" THEN GO TO 2070
2430 IF INKEY$<>"c" AND INKEY$<>"n" THEN GO TO 2410
2440 PRINT AT 20,1; PAPER 6;d$: INPUT "Gallons of Fuel -A- ";ga: PAPER 1: INK 7: PRINT AT ln,1;ga
2450 INPUT "Octane of Fuel -A- ";oa: PRINT AT ln,7;oa
2460 INPUT "Gallons of Fuel -B- ";gb: PRINT AT ln,12;gb
2470 INPUT "Octane of Fuel -B- ";ob: PRINT AT ln,18;ob
2480 LET oca=ga*oa: LET ocb=gb*ob: LET tg=ga+gb: LET noc=FN e(oca,ocb,tg): LET noc=INT (noc*100+.5)/100
2490 PRINT AT ln,25;noc: GO TO 2080
2500 INK 0: PLOT 0,0: DRAW 0,175: DRAW 255,0: DRAW 0,-175: DRAW -255,0
2510 PLOT 0,155: DRAW 255,0: PLOT 0,140: DRAW 179,0: PLOT 0,123: DRAW 255,0: PLOT 0,23: DRAW 255,0
2520 PLOT 46,140: DRAW 0,-117: PLOT 90,155: DRAW 0,-132: PLOT 133,140: DRAW 0,-117: PLOT 179,155: DRAW 0,-132: RETURN
2530 PAPER 6: PRINT AT 7,0: LET y=USR 64849: LET ln=7: GO TO 2070
2540 GO SUB 5530: ON ERR GO TO 2540: BORDER 4: PAPER 6: INK 0: CLS : POKE 23658,0
2550 DEF FN h(a,b)=a/b
2560 GO SUB 3000
2570 LET ln=7
2580 PRINT AT 1,6; PAPER 5;"WEIGHT DISTRIBUTION"
2590 PRINT AT 3,1; PAPER 1;" ";AT 3,9; PAPER 2;" ";AT 3,17; PAPER 3;" ";AT 3,25; PAPER 4;" "
2600 PRINT AT 4,1;"TOTAL";AT 4,9;"FRONT";AT 4,17;"FRONT";AT 4,25;"REAR"
2610 PRINT AT 5,1;"WEIGHT";AT 5,9;"WEIGHT";AT 5,17;"BIAS";AT 5,25;"BIAS"
2620 GO TO 2840
2630 LET front=FN h(few,vw)*100: LET rear=100-front: LET front =INT front: LET rear=INT rear
2640 IF front+rear<>100 THEN LET front=front+(100-(front+rear))
2650 LET ln=ln-1: PAPER 6: INK 0
2660 PRINT AT 4,1;"TOTAL";AT 4,9;"FRONT"
2670 PRINT AT 5,1;"WEIGHT";AT 5,9;"WEIGHT"
2680 IF ln=18 THEN GO TO 3040
2690 PAPER 6: INK 0
2700 PRINT AT ln,2;vwb;AT ln,10;fewb;AT ln,17;frontb;" %";AT ln,25;rearb;" %"
2710 LET ln=ln+1
2720 LET vwb=vw: LET fewb=few: LET frontb=front: LET rearb=rear
2730 PRINT AT 20,1; PAPER 5; INK 0;" CHANGE TOTAL or FRONT (T/F) ": GO SUB 4730
2740 IF INKEY$="" THEN GO TO 2740
2750 IF INKEY$<>"" THEN LET a$=INKEY$
2760 IF a$="F" OR a$="f" THEN FLASH 1: PRINT AT 4,9; PAPER 2; INK 7;"FRONT";AT 5,9; PAPER 2; INK 7;"WEIGHT": FLASH 0: GO TO 2830
2770 IF a$="M" OR a$="m" THEN LET w(1)=vw: LET w(2)=few: LET w(3)=front: LET w(4)=rear: GO TO menu
2780 IF a$="c" OR a$="C" THEN COPY : GO TO 2720
2790 IF a$="v" OR a$="V" THEN GO TO 3040
2800 IF a$="T" OR a$="t" THEN FLASH 1: PRINT AT 4,1; PAPER 2; INK 7;"TOTAL";AT 5,1; PAPER 2; INK 7;"WEIGHT": FLASH 0: GO TO 2820
2810 GO TO 2720
2820 PRINT AT 20,1; PAPER 6;d$: INPUT "TOTAL VEHICLE WEIGHT ";vw: GO TO 2940
2830 PRINT AT 20,1; PAPER 6;d$: INPUT "FRONT END WEIGHT ";few: GO TO 2940
2840 IF w(1)<>0 THEN GO SUB 770
2850 IF w(1)=0 THEN GO TO 2890
2860 IF INKEY$="" THEN GO TO 2860
2870 IF INKEY$="c" THEN GO TO 2930
2880 IF INKEY$<>"c" AND INKEY$<>"n" THEN GO TO 2860
2890 PRINT AT 20,1; PAPER 6;d$: PAPER 1: INK 7: INPUT "TOTAL VEHICLE WEIGHT ";vw: PRINT AT ln,2;vw
2900 INPUT "FRONT END WEIGHT ";few: PRINT AT ln,10;few
2910 LET front=FN h(few,vw)*100: LET rear=100-front: LET front =INT front: LET rear=INT rear
2920 IF front+rear<>100 THEN LET front=front+(100-(front+rear))
2930 PAPER 1: INK 7: PRINT AT ln,2;vw;AT ln,10;few;AT ln,17;front;" %";AT ln,25;rear;" %": GO TO 2720
2940 PAPER 1: INK 7: LET ln=ln+1
2950 IF ln=19 THEN LET ln=7: GO TO 3040
2960 LET front=FN h(few,vw)*100: LET rear=100-front: LET front =INT front: LET rear=INT rear
2970 IF front+rear<>100 THEN LET front=front+(100-(front+rear))
2980 PRINT AT ln,2;vw;AT ln,10;few;AT ln,17;front;" %";AT ln,25;rear;" %"
2990 GO TO 2650
3000 INK 0: PLOT 0,0: DRAW 0,175: DRAW 255,0: DRAW 0,-175: DRAW -255,0
3010 PLOT 0,155: DRAW 255,0: PLOT 0,123: DRAW 255,0: PLOT 0,23: DRAW 255,0
3020 PLOT 63,155: DRAW 0,-132: PLOT 127,155: DRAW 0,-132: PLOT 187,155: DRAW 0,-132
3030 RETURN
3040 PAPER 6: PRINT AT 7,0: LET cl=USR 65054: LET ln=7
3050 IF a$="v" OR a$="V" THEN GO TO 2930
3060 GO TO 2730
3070 GO SUB 5540: ON ERR GO TO 3070: BORDER 0: PAPER 1: INK 1: CLS
3080 PRINT " SUSPENSION TUNING"
3090 PLOT 56,167: DRAW 137,0: PLOT 56,166: DRAW 137,0
3100 PRINT '" COMP.";TAB 11;"INCREASE";TAB 23;"INCREASE"
3110 PRINT " ADJUST";TAB 11;"UNDERSTEER";TAB 23;"OVERSTEER"
3120 PLOT 8,143: DRAW 48,0: PLOT 88,143: DRAW 80,0: PLOT 184,143: DRAW 70,0
3130 PRINT '"(F) Camber";TAB 13;"More Pos";TAB 24;"More Neg"
3140 PLOT 8,142: DRAW 48,0: PLOT 88,142: DRAW 80,0: PLOT 184,142: DRAW 70,0
3150 PRINT "(R) Camber";TAB 13;"More Neg";TAB 24;"More Pos"
3160 PRINT "(F) Springs";TAB 13;"Stiffer";TAB 24;"Softer"
3170 PRINT "(R) Springs";TAB 13;"Softer";TAB 24;"Stiffer"
3180 PRINT "(F) Swaybar";TAB 13;"Thicker";TAB 24;"Thinner"
3190 PRINT "(R) Swaybar";TAB 13;"Thinner";TAB 24;"Thicker"
3200 PRINT "Weight Dist";TAB 13;"More (F)";TAB 24;"More (R)"
3210 PRINT '"-TIRES-"
3220 PRINT '"(F) PSI";TAB 13;"Lower";TAB 24;"Higher"
3230 PRINT "(R) PSI";TAB 13;"Higher";TAB 24;"Lower"
3240 PRINT "(F) Section";TAB 13;"Smaller";TAB 24;"Larger"
3250 PRINT "(R) Section";TAB 13;"Larger";TAB 24;"Smaller"
3260 PRINT AT 20,1;e$
3270 GO SUB 3330
3280 IF INKEY$<>"" THEN GO TO 3280
3290 IF INKEY$="" THEN GO TO 3290
3300 IF INKEY$="c" OR INKEY$="C" THEN COPY : GO SUB 3280
3310 IF INKEY$="m" OR INKEY$="M" THEN GO TO 3340
3320 GO TO 3280
3330 LET cl=USR 65243: RETURN
3340 FOR N=0 TO 21: PRINT AT n,0; INK 2;" ": BEEP .002,1: PRINT AT N,0,,: NEXT n: PRINT AT 2,0: GO TO menu
3350 GO SUB 5530: ON ERR GO TO 3350: POKE 23658,0: IF g(1)=0 THEN GO TO 4070
3360 DEF FN m(q,v,u)=(q*v*3)/u
3370 DEF FN d(a,b,c)=(a*b)/(c*3)
3380 DEF FN r(h,i,j)=(h*i)/(j*3)
3390 DEF FN g(n,o,p)=(n*o*3)/p
3400 LET ln=7
3410 BORDER 4: PAPER 6: INK 0: CLS
3420 LET exit=3
3430 GO SUB 4180
3440 PRINT AT 1,3; PAPER 5; INK 0;"GEARING VS. MILES PER HOUR"
3450 PAPER 6: INK 0: PRINT AT 4,16;"TIRE";AT 4,24;"GEAR"
3460 PRINT AT 5,1;"MPH";AT 5,8;"RPM";AT 5,16;"DIA.";AT 5,24;"RATIO"
3470 INK 7: PRINT AT 3,1; PAPER 1;" 1 ";AT 3,8; PAPER 2;" 2 ";AT 3,16; PAPER 3;" bc ";AT 3,24; PAPER 4;" hi "
3480 IF p$<>"w" THEN GO SUB 770
3490 IF p$="w" THEN GO TO 3570
3500 IF INKEY$="" THEN GO TO 3500
3510 IF INKEY$="n" THEN GO TO 4070
3520 IF INKEY$="c" THEN LET p$=INKEY$: LET ln=7: GO TO 3570
3530 IF INKEY$<>"c" AND INKEY$<>"n" THEN GO TO 3500
3540 IF ln>=19 THEN GO TO 3980
3550 LET p$="n"
3560 IF p$<>"c" OR p$="n" THEN PAPER 6: INK 0: PRINT AT ln-1,1;mph1;AT ln-1,8;rpm1*1000;AT ln-1,16;td1;AT ln-1,24;gr1;":1"
3570 PAPER 1: INK 7: PRINT AT ln,1;mph;AT ln,8;rpm*1000;AT ln,16;td;AT ln,24;gr;":1"
3580 LET mph1=mph: LET rpm1=rpm: LET td1=td: LET gr1=gr
3590 PAPER 6: INK 0: PRINT AT 4,16;"TIRE";AT 4,24;"GEAR"
3600 PRINT AT 5,1;"MPH";AT 5,8;"RPM";AT 5,16;"DIA.";AT 5,24;"RATIO"
3610 INK 7: PRINT AT 3,1; PAPER 1;" 1 ";AT 3,8; PAPER 2;" 2 ";AT 3,16; PAPER 3;" bc ";AT 3,24; PAPER 4;" hi "
3620 LET ln=ln+1
3630 PRINT AT 20,1; PAPER 5; INK 0;c$: GO SUB 4730
3640 IF INKEY$="" THEN GO TO 3640
3650 IF INKEY$<>"" THEN LET a$=INKEY$
3660 IF a$="1" THEN RANDOMIZE USR 2217: GO TO 3740
3670 IF a$="2" THEN RANDOMIZE USR 2217: GO TO 3800
3680 IF a$="3" THEN RANDOMIZE USR 2217: GO TO 3860
3690 IF a$="4" THEN RANDOMIZE USR 2217: GO TO 3920
3700 IF a$="c" OR a$="C" THEN COPY : GO TO 3630
3710 IF a$="v" OR a$="V" THEN GO TO 3980
3720 IF a$="m" OR a$="M" THEN LET G(1)=mph: LET G(2)=rpm: LET G(3)=td: LET G(4)=gr: GO TO menu
3730 GO TO 3630
3740 PRINT AT 20,1; PAPER 6;d$: FLASH 1: PRINT AT 5,1; PAPER 1;"MPH": FLASH 0
3750 PRINT AT 20,1; PAPER 5; INK 0;i$
3760 IF INKEY$<>"" THEN GO TO 3760
3765 IF INKEY$="" THEN GO TO 3765
3770 IF CODE INKEY$<50 OR CODE INKEY$>52 THEN GO TO 3760
3780 LET x=CODE INKEY$-48: GO SUB 4220
3790 INPUT "ENTER NEW MPH ";mph: GO TO x+4030
3800 PRINT AT 20,1; PAPER 6;d$: FLASH 1: PRINT AT 5,8; PAPER 2;"RPM": FLASH 0
3810 PRINT AT 20,1; PAPER 5; INK 0;i$
3820 IF INKEY$="" OR INKEY$="2" THEN GO TO 3820
3830 IF CODE INKEY$<49 OR CODE INKEY$>52 THEN GO TO 3820
3840 IF INKEY$<>"" THEN LET x=CODE INKEY$-48: GO SUB 4220
3850 INPUT "ENTER NEW RPM ";rpm: LET rpm=rpm/1000: GO TO x+4030
3860 PRINT AT 20,1; PAPER 6;d$: FLASH 1: PRINT AT 4,16; PAPER 3;"TIRE";AT 5,16; PAPER 3;"DIA.": FLASH 0
3870 PRINT AT 20,1; PAPER 5; INK 0;i$
3880 IF INKEY$="" OR INKEY$="3" THEN GO TO 3880
3890 IF CODE INKEY$<49 OR CODE INKEY$>52 THEN GO TO 3880
3900 IF INKEY$<>"" THEN LET x=CODE INKEY$-48: GO SUB 4220
3910 INPUT "ENTER NEW TIRE DIAMETER ";td: GO TO x+4030
3920 PRINT AT 20,1; PAPER 6;d$: FLASH 1: PRINT AT 4,24; PAPER 4;"GEAR";AT 5,24; PAPER 4;"RATIO": FLASH 0
3930 PRINT AT 20,1; PAPER 5; INK 0;i$
3940 IF INKEY$="" OR INKEY$="4" THEN GO TO 3940
3950 IF CODE INKEY$<49 OR CODE INKEY$>51 THEN GO TO 3950
3960 IF INKEY$<>"" THEN LET x=CODE INKEY$-48: GO SUB 4220
3970 INPUT "ENTER NEW GEAR RATIO ";gr: GO TO x+4030
3980 PAPER 6: PRINT AT 7,0;: LET cl=USR 64660
3990 LET ln=7: IF exit=1 THEN GO TO 630
4000 IF exit=2 THEN GO TO 950
4010 IF exit=3 THEN GO TO 3570
4020 RETURN
4031 LET mph=INT FN m(rpm,td,gr): GO TO 3540
4032 LET rpm=FN r(mph,gr,td): LET rpm=INT (rpm*100+.5)/100: GO TO 3540
4033 LET td=FN d(mph,gr,rpm): LET td=INT ((td*100)+.5)/100: GO TO 3540
4034 LET gr=FN g(rpm,td,mph): LET gr=INT ((gr*100)+.5)/100: GO TO 3540
4070 GO SUB 5540: ON ERR GO TO 4070: BORDER 1: PAPER 2: INK 7: CLS : PRINT ''''" To start this section you willneed to enter 2 variables."''"The Loaded Tire Diameter and theFinal Gear Ratio."
4080 LET p$="w": LET rpm=0: LET mph=0
4090 PRINT ''" TIRE DIAMETER"
4100 PRINT '" GEAR RATIO"
4110 INPUT "ENTER THE TIRE DIAMETER ";td: PRINT AT 11,20;td;" in."
4120 INPUT "ENTER THE FINAL GEAR RATIO ";gr: PRINT AT 13,21;gr;":1"
4130 PRINT AT 20,0;"IS THIS CORRECT (Y/N)": PAUSE 0
4140 IF INKEY$="" THEN GO TO 4140
4150 IF INKEY$="y" OR INKEY$="Y" THEN LET mph1=mph: LET rpm1=rpm: LET td1=td: LET gr1=gr: GO SUB 5530: GO TO 3360
4160 IF INKEY$="N" OR INKEY$="n" THEN PRINT AT 11,20;" ";AT 13,20;" ";AT 20,0;" ": GO TO 4110
4170 GO TO 4130
4180 INK 0: PLOT 0,0: DRAW 0,175: DRAW 255,0: DRAW 0,-175: DRAW -255,0
4190 PLOT 0,155: DRAW 255,0: PLOT 0,123: DRAW 255,0: PLOT 0,23: DRAW 255,0
4200 PLOT 48,155: DRAW 0,-132: PLOT 110,155: DRAW 0,-132: PLOT 177,155: DRAW 0,-132
4210 RETURN
4220 PRINT AT 20,1; PAPER 6;d$
4230 IF x=1 THEN PRINT AT 3,1; PAPER 6; INK 0;" 1 ";AT 5,1; PAPER X; INK 7;"MPH"
4240 IF x=2 THEN PRINT AT 3,8; PAPER 6; INK 0;" 2 ";AT 5,8; PAPER x; INK 7;"RPM"
4250 IF x=3 THEN PRINT AT 3,16; PAPER 6; INK 0;" bc ";AT 4,16; PAPER x; INK 7;"TIRE";AT 5,16;"DIA."
4260 IF x=4 THEN PRINT AT 3,24; PAPER 6; INK 0;" hi ";AT 4,24; PAPER X; INK 7;"GEAR";AT 5,24;"RATIO"
4270 RETURN
4280 GO SUB 5540: ON ERR GO TO 4280: RESTORE 4660: CLS
4290 PRINT AT 1,2; PAPER 3; INK 2;":'''''''''''''''''''''''''''''''''''''''''''''''''''''':"
4300 PRINT AT 2,2; PAPER 3; INK 2;": "; PAPER 4; INK 0;"BOLT TORQUE SPECIFICATIONS"; PAPER 3; INK 2;" :"
4310 PRINT AT 3,2; PAPER 3; INK 2;":......................................................:"
4320 PRINT AT 5,7; PAPER 3; INK 2;":'''''''''''''''''''''''''''''''''':"
4330 PRINT AT 6,7; PAPER 3; INK 2;": "; PAPER 4; INK 0;"TENSILE STRENGTH"; PAPER 3; INK 2;" :"
4340 PRINT AT 7,7; PAPER 3; INK 2;":..................................:"
4350 PRINT '"(5) GRADE 5 -- 120,000 psi jk"
4360 PRINT " THREE SLASH MARKS -- lm"
4370 PRINT ''"(7) GRADE 7 -- 133,000 psi rs"
4380 PRINT " FIVE SLASH MARKS -- tu"
4390 PRINT ''"(8) GRADE 8 -- 150,000 psi no"
4400 PRINT " SIX SLASH MARKS -- pq"
4410 PRINT AT 20,1;e$
4420 PRINT #1;" MAKE SELECTION (5,7,8)"
4430 IF INKEY$="" THEN GO TO 4430
4440 IF INKEY$="M" OR INKEY$="m" THEN GO TO menu
4450 IF INKEY$="C" OR INKEY$="c" THEN COPY : GO TO 4430
4460 IF INKEY$<>"" THEN LET d=CODE INKEY$-48
4470 IF d<>5 AND d<>7 AND d<>8 THEN GO TO 4430
4480 GO SUB 5530: CLS : PRINT " DIA.";TAB 7;"THREADS";TAB 18;"DRY";TAB 25;"OILED"
4490 PLOT 0,167: DRAW 255,0
4500 PRINT
4510 FOR x=1 TO 10: READ a$: READ aa: READ bb: PRINT TAB 1;a$;TAB 9;aa'TAB 1;a$;TAB 9;bb: NEXT x
4520 IF d=5 THEN RESTORE 4670
4530 IF d=7 THEN RESTORE 4690
4540 IF d=8 THEN RESTORE 4710
4550 FOR y=2 TO 21: READ aa: READ bb: PRINT AT y,18;aa;TAB 26;bb: NEXT y
4560 IF D=5 THEN PRINT AT 2,29;"jk";AT 3,29;"lm"
4570 IF D=7 THEN PRINT AT 2,29;"rs";AT 3,29;"tu"
4580 IF D=8 THEN PRINT AT 2,29;"no";AT 3,29;"pq"
4590 PLOT 50,175: DRAW 0,-175: PLOT 122,175: DRAW 0,-175: PLOT 186,175: DRAW 0,-175
4600 READ a$: PRINT #1;a$
4610 PLOT 0,0: DRAW 0,175: DRAW 255,0: DRAW 0,-175: DRAW -255,0
4620 IF INKEY$="" THEN GO TO 4620
4630 IF INKEY$="M" OR INKEY$="m" THEN GO TO 4280
4640 IF INKEY$="C" OR INKEY$="c" THEN COPY : GO TO 4280
4650 GO TO 4620
4660 DATA "1/4",20,28,"5/16",18,24,"3/8",16,24,"7/16",14,20,"1/2",13,20,"9/16",12,18,"5/8",11,18,"3/4",10,16,"7/8",9,14,"1",8,12
4670 DATA 8,6,10,7,17,13,19,14,30,23,35,25,50,35,55,40,75,55,90,65,110,80,120,90,150,110,180,130,260,200,300,220,430,320,470,360,640,480,710,530
4680 DATA " TORQUE SPECS OF GRADE 5 BOLTS"
4690 DATA 10,8,12,9,21,16,24,18,40,30,45,30,60,45,70,50,95,70,100,80,135,100,150,110,190,140,210,160,320,240,360,280,520,400,580,440,800,600,860,666
4700 DATA " TORQUE SPECS OF GRADE 7 BOLTS"
4710 DATA 12,9,14,10,25,18,25,20,45,35,50,35,70,55,80,60,110,80,120,90,150,110,170,130,220,170,240,180,380,280,420,320,600,460,600,500,900,680,1000,740
4720 DATA " TORQUE SPECS OF GRADE 8 BOLTS"
4730 RANDOMIZE USR 2217: PRINT #1;" ""V""-CLEAR ""M""-MENU ""C""-COPY": RETURN
4740 CLOSE #2: REM PRINT TOTALS
4750 GO SUB 5530: ON ERR GO TO 4740
4760 LET t$=" PRESS ANY KEY TO CONTINUE"
4770 PRINT AT 21,0; FLASH 1; PAPER 2; INK 7;"OUTPUT TO DISPLAY/PRINTER (D/P) ": FLASH 0
4780 IF INKEY$<>"" THEN GO TO 4780
4790 IF INKEY$="" THEN GO TO 4790
4800 LET H$=INKEY$
4810 IF H$="P" THEN RANDOMIZE USR 2217: PRINT AT 21,0; FLASH 1; PAPER 2; INK 7;"**** PRINTING **** PRINTING ****"; FLASH 0: OPEN #2,"P": GO TO 4850
4820 IF H$="D" THEN CLS : BORDER 2: GO TO 4840
4830 IF H$<>"D" OR H$<>"P" THEN GO TO 4780
4840 PAPER 2: INK 7: CLS
4850 IF E(1)<>0 THEN GO SUB 4920
4860 IF C(1)<>0 THEN GO SUB 5030
4870 IF O(1)<>0 THEN GO SUB 5130
4880 IF G(1)<>0 THEN GO SUB 5230
4890 IF S(1)<>0 THEN GO SUB 5330
4900 IF W(1)<>0 THEN GO SUB 5430
4910 CLOSE #2: GO TO MENU
4920 PRINT 'TAB 5;"[```````````````````\"
4930 PRINT TAB 5;"*ENGINE DISPLACEMENT{"
4940 PRINT TAB 5;"]___________________^"
4950 PRINT "[`````@````````@```````@```````\"
4960 PRINT "*BORE # # NO.OF # CUBIC {"
4970 PRINT "*DIA. # STROKE # CYL. # INCHES{"
4980 PRINT "'`````<````````<```````<```````z"
4990 PRINT "*";E(1);TAB 6;"# ";E(2);TAB 15;"# ";e(3);TAB 23;"# ";e(4);TAB 31;"{"
5000 PRINT "]_____&________&_______&_______^"
5010 IF H$="D" AND C(1)=0 THEN GO SUB 5110
5020 RETURN
5030 PRINT 'TAB 4;"[`````````````````````\"
5040 PRINT TAB 4;"*CARB CFM REQUIREMENTS{";TAB 4;"]_____________________^"
5050 PRINT "[`````@```````@````````@```````\"
5060 PRINT "* # MAX # STREET # STRIP {"
5070 PRINT "*CID # RPM # CARB # CARB {"
5080 PRINT "'`````<```````<````````<```````z"
5090 PRINT "*";C(1);TAB 6;"# ";C(2);TAB 14;"# ";C(3);TAB 23;"# ";C(4);TAB 31;"{"
5100 PRINT "]_____&_______&________&_______^"
5110 IF H$="D" THEN PRINT #1;T$: PAUSE 0: CLS : RETURN
5120 RETURN
5130 PRINT 'TAB 5;"[```````````````````\"
5140 PRINT TAB 5;"*FINAL OCTANE RATING{";TAB 5;"]___________________^"
5150 PRINT "[``````````@``````````@````````\";"* FUEL A # FUEL B # {"
5160 PRINT "'````@`````<````@`````$COMBINED{"
5170 PRINT "*GAL.# OCT.#GAL.# OCT.# OCTANE {"
5180 PRINT "'````<`````<````<`````<````````z"
5190 PRINT "*";o(1);TAB 5;"# ";o(2);TAB 11;"#";o(3);TAB 16;"# ";o(4);TAB 22;"# ";o(5);TAB 31;"{"
5200 PRINT "]____&_____&____&_____&________^"
5210 IF H$="D" AND G(1)=0 THEN GO SUB 5110
5220 RETURN
5230 PRINT 'TAB 7;"[```````````````\"
5240 PRINT TAB 7;"*GEARING VS. MPH{";TAB 7;"]_______________^"
5250 PRINT "[`````@``````@````````@````````\"
5260 PRINT "* # # TIRE # GEAR {"
5270 PRINT "* MPH # RPM # DIA. # RATIO {"
5280 PRINT "'`````<``````<````````<````````z"
5290 PRINT "* ";G(1);TAB 6;"# ";G(2)*1000;TAB 13;"# ";G(3);TAB 22;"# ";G(4);":1";TAB 31;"{"
5300 PRINT "]_____&______&________&________^"
5310 IF H$="D" THEN PRINT #1;T$: PAUSE 0: CLS : RETURN
5320 RETURN
5330 PRINT 'TAB 5;"[```````````````````\";TAB 5;"*COIL SPRING CUTTING{";TAB 5;"]___________________^"
5340 PRINT "[```````````````@``````````````\"
5350 PRINT "* SPRING LENGTH # SPRING RATE {"
5360 PRINT "'```````@```````<```````@``````z"
5370 PRINT "*BEFORE # AFTER #BEFORE # AFTER{"
5380 PRINT "'```````<```````<```````<``````z"
5390 PRINT "* ";s(1);TAB 8;"# ";s(2);TAB 16;"# ";s(3);TAB 24;"# ";INT s(4);TAB 31;"{"
5400 PRINT "]_______&_______&_______&______^"
5410 IF H$="D" AND W(1)=0 THEN GO SUB 5110
5420 RETURN
5430 PRINT 'TAB 6;"[```````````````````\";TAB 6;"*WEIGHT DISTRIBUTION{";TAB 6;"]___________________^"
5440 PRINT "[```````@```````@```````@``````\"
5450 PRINT "*TOTAL # FRONT # FRONT # REAR {"
5460 PRINT "*WEIGHT # WEIGHT# BIAS # BIAS {"
5470 PRINT "'```````<```````<```````<``````z"
5480 PRINT "* ";W(1);TAB 8;"# ";W(2);TAB 16;"# ";INT W(3);" %";TAB 24;"# ";INT W(4);" %";TAB 31;"{"
5490 PRINT "]_______&_______&_______&______^"
5500 IF H$="D" THEN PRINT #1;T$: PAUSE 0: RETURN
5510 RETURN
5520 LOAD "PERF"CODE : GO TO 10
5530 POKE 23606,255: POKE 23607,247: RETURN
5540 POKE 23606,160: POKE 23607,240: RETURN
5550 DIM C(4): DIM E(4): DIM S(4): DIM O(5): DIM W(4): DIM G(4): GO TO 10
5555 REM AUTO HIGH PERFORMANCE * 1985 BY DAVID A. HILL ALL RIGHTS RESERVEDNote: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.




