Auto High Performance

Developer(s): David Hill
Date: 1985
Type: Program
Platform(s): TS 2068
Tags: Hobby

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 c and DEF 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 p and DEF 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 example USR 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,8 and reads capital letters; the calculators switch it off again.
  • A RANDOMIZE USR 2217 ROM 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.

Related Content

Image Gallery

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 RESERVED

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.