1  REM ***  HP BASIC PROGRAM LIBRARY *****************************
2  REM
3  REM      WHEELS:  AUTO PURCHASE AND MAINTENANCE SYSTEM
4  REM
5  REM      36187  REV B   10/73
6  REM
7  REM ***  CONTRIBUTED PROGRAM ********************************
8  REM
9  REM
10  DIM G[29],H[29],I[29],J[29]
15  DIM A$[5]
20  DIM M[15],N[15],P[15],Q[15],A[29],B[29],C[29],D[29],E[29],F[29]
22  Z8=20
24  PRINT "CODE? ";
26  ENTER Z8,Z9,A$
27  PRINT 
28  IF Z9=-256 THEN 2370
29  IF A$#'1'21'20'13 THEN 2370
30  FOR J=1 TO 14
40  READ J,M[J],N[J],P[J],Q[J]
50  NEXT J
60  FOR K=1 TO 29
70  READ K,A[K],B[K],C[K],D[K],E[K],F[K],G[K],H[K],I[K],J[K]
80  NEXT K
83  IF A$#'1'21'20'13 THEN 2370
85  X=1
90  GOSUB 1980
91  IF K9#1 THEN 420
100  PRINT "WELCOME TO THE QUICKIE COMPUTER CAR CHOOSING PARLOR"
110  PRINT "***************************************************"
120  PRINT 
130  PRINT "SO YOU WANT TO BUY A CAR. WELL, MAYBE I CAN HELP YOU TO"
140  PRINT "MAKE A GOOD CHOICE."
162  IF A$#'1'21'20'13 THEN 2370
300  PRINT "DO YOU NEED INSTRUCTIONS? TYPE 1 FOR YES, 0 FOR NO.";
310  INPUT Z
320  IF Z=1 THEN 370
330  IF Z=0 THEN 420
340  PRINT "I SAID 1 OR 0, NOTHING MORE, NOTHING LESS,"
350  PRINT " NOTHING ELSE. TRY AGAIN."
360  GOTO 300
370  PRINT "YOU SHOULD HAVE BEEN GIVEN A ROLE NUMBER"
380  PRINT "FROM 1 TO 15 AND ALSO A CAR DESCRIPTION"
390  PRINT "SHEET. WHEN I ASK YOU, ENTER YOUR ROLE"
400  PRINT "NUMBER FOLLOWED BY A COMMA AND THEN THE "
410  PRINT "CAR NUMBER OF YOUR CHOICE."
420  PRINT "ENTER ROLE NUMBER, COMMA AND CAR CHOICE NOW.",
430  INPUT R,I
436  IF A$#'1'21'20'13 THEN 2370
440  IF R=15 THEN 930
450  IF R=INT(R) THEN 470
460  GOTO 580
470  IF R>0 THEN 490
480  GOTO 580
490  IF R<15 THEN 510
500  GOTO 600
510  IF I=INT(I) THEN 530
520  GOTO 580
530  IF I>0 THEN 550
540  GOTO 580
550  IF I<30 THEN 620
560  PRINT "THERE AREN'T THAT MANY CARS, KNUCKLEHEAD. TRY AGAIN."
570  GOTO 420
580  PRINT "ENTRIES MUST BE POSITIVE WHOLE NUMBERS. TRY AGAIN."
590  GOTO 420
600  PRINT "THERE ARE ONLY 15 ROLES. TRY ONE OF THEM, INSTEAD."
610  GOTO 420
620  PRINT 
630  PRINT "ROLE NUMBER"R"CAR NUMBER"I
633  IF A$#'1'21'20'13 THEN 2370
640  PRINT "REPORT FOR MONTH NUMBER"K9
650  PRINT 
660  LET X1=INT(M[R]+200*RND(X))
670  LET X2=INT(A[I]*X1+.5)
680  PRINT "YOU DROVE"X1"MILES THIS MONTH."
690  PRINT "RUNNING EXPENSES (GAS, OIL, WEAR, ETC.) AMOUNT TO $"X2
700  PRINT 
710  PRINT "MAJOR REPAIRS REPORT"
720  PRINT "***** ******* ******"
730  GOSUB 1150
740  PRINT 
750  PRINT "ACCIDENT REPORT"
760  PRINT "******** ******"
770  GOSUB 1680
780  PRINT 
790  PRINT "UNEXPECTED EVENTS"
800  PRINT "********** ******"
810  GOSUB 2300
820  PRINT 
821  GOTO 910
830  PRINT "WHAT WAS YOUR TOTAL INCOME THIS MONTH? ENTER"
840  PRINT "THE AMOUNT IN DOLLARS.",
850  INPUT T3
860  PRINT "WHAT WAS THE TOTAL OF YOUR EXPENSES? ENTER THE "
870  PRINT "AMOUNT IN DOLLARS.",
880  INPUT T4
890  PRINT "YOU SPENT"INT(T4/T3*100+.5)"PER CENT OF YOUR INCOME"
900  PRINT "THIS MONTH."
910  PRINT "TRY HARDER NEXT MONTH. GOOD-BYE FOR NOW."
915  PRINT '10'10'10'10'10'10'10'10'10'10
920  GOTO 90
930  PRINT "YOU ARE NOT PLAYING ONE OF THE 14 ASSIGNED ROLES, SO"
940  PRINT "I MUST KNOW ABOUT HOW MANY MILES YOU EXPECT TO DRIVE"
950  PRINT "THIS MONTH. ENTER AN ESTIMATE OF HOW MANY MILES AS A"
960  PRINT "POSITIVE WHOLE NUMBER.",
970  INPUT M3
978  IF A$#'1'21'20'13 THEN 2370
980  IF M3=INT(M3) THEN 1000
990  GOTO 1010
1000  IF M3>0 THEN 1030
1010  PRINT "I SAID POSITIVE WHOLE NUMBER. BE NICE NOW."
1020  GOTO 930
1030  LET M[15]=M3-100
1040  LET N[15]=70
1050  LET P[15]=20
1060  LET Q[15]=2
1070  IF I=INT(I) THEN 1090
1080  GOTO 1120
1090  IF I>0 THEN 1110
1100  GOTO 1120
1110  IF I<30 THEN 620
1120  PRINT "YOU GOOFED ON YOUR ENTRY. TRY AGAIN."
1130  GOTO 420
1150  LET A5=INT(90*RND(X)+1)
1160  LET K8=0
1170  FOR T=1 TO 9
1180  LET A6=INT(100*RND(X)+1)
1190  IF A5>A6 THEN 1210
1200  GOTO 1580
1210  GOTO T OF 1220,1260,1300,1340,1380,1420,1460,1500,1540
1220  IF A5 <= A6+B[I] THEN 1240
1230  GOTO 1580
1240  PRINT "EXHAUST SYSTEM NEEDS REPAIR. COST = $"30+INT(31*RND(X))
1250  GOTO 1570
1260  IF A5 <= A6+D[I] THEN 1280
1270  GOTO 1580
1280  PRINT "YOUR BRAKES GAVE OUT. REPAIRS COST $"35+INT(36*RND(X))
1290  GOTO 1570
1300  IF A5 <= A6+D[I] THEN 1320
1310  GOTO 1580
1320  PRINT "TRANSMISSION ON BUM. BILL AMOUNTS TO $"100+INT(201*RND(X))
1330  GOTO 1570
1340  IF A5 <= A6+E[I] THEN 1360
1350  GOTO 1580
1360  PRINT "BODY EXTERIOR NEEDS SPRUCING UP. COST = $"50+INT(151*RND(X))
1370  GOTO 1570
1380  IF A5 <= A6+F[I] THEN 1400
1390  GOTO 1580
1400  PRINT "MECHANICAL PROBLEMS IN ENGINE. BILL = $"60+INT(141*RND(X))
1410  GOTO 1570
1420  IF A5 <= A6+G[I] THEN 1440
1430  GOTO 1580
1440  PRINT "ELECTRICAL SYSTEM NEEDS REPAIR. COST $"30+INT(71*RND(X))
1450  GOTO 1570
1460  IF A5 <= A6+H[I] THEN 1480
1470  GOTO 1580
1480  PRINT "DRIVE LINE PROBLEMS. THIS WILL COST $"100+INT(101*RND(X))
1490  GOTO 1570
1500  IF A5 <= A6+I[I] THEN 1520
1510  GOTO 1580
1520  PRINT "FUEL SYSTEM DIFFICULTIES. TOTAL BILL $"10+INT(51*RND(X))
1530  GOTO 1570
1540  IF A5 <= A6+J[I] THEN 1560
1550  GOTO 1580
1560  PRINT "SUSPENSION SYSTEM TROUBLE. COST = $"15+INT(86*RND(X))
1570  LET K8=K8+1
1580  NEXT T
1590  IF K8>0 THEN 1670
1600  LET Z2=INT(3*RND(X)+1)
1610  GOTO Z2 OF 1620,1640,1660
1620  PRINT "NO MAJOR REPAIRS THIS MONTH."
1630  GOTO 1670
1640  PRINT "YOU'RE IN LUCK. NO MAJOR REPAIRS NEEDED."
1650  GOTO 1670
1660  PRINT "NOTHING NEEDS FIXING. THINGS O.K. THIS MONTH."
1670  RETURN 
1680  LET A3=INT(800*RND(X)+1)
1690  LET K6=0
1700  FOR L=1 TO 3
1710  LET A4=INT(1000*RND(X)+1)
1720  IF A3>A4 THEN 1740
1730  GOTO 1880
1740  GOTO L OF 1750,1790,1830
1750  IF A3 <= A4+N[R] THEN 1770
1760  GOTO 1880
1770  PRINT "YOU HAVE BEEN IN A FENDER-BENDER. COST = $"10+INT(66*RND(X))
1780  GOTO 1870
1790  IF A3 <= A4+P[R] THEN 1810
1800  GOTO 1880
1810  PRINT "YOU HAD AN ACCIDENT WITH DAMAGE $"100+INT(201*RND(X))
1811  PRINT "YOUR INSURANCE RATE GOES UP 25 PER CENT"
1820  GOTO 1870
1830  IF A3 <= A4+Q[R] THEN 1850
1840  GOTO 1880
1850  PRINT "OH. OH. BAD ACCIDENT.DAMAGE TO CAR = $"300+INT(401*RND(X))
1860  PRINT "AS A RESULT, YOUR INSURANCE GOES UP 50 PER CENT."
1870  LET K6=K6+1
1880  NEXT L
1890  IF K6>0 THEN 1970
1900  LET Z3=INT(3*RND(X)+1)
1910  GOTO Z3 OF 1920,1940,1960
1920  PRINT "NO ACCIDENTS.THANK GOODNESS."
1930  GOTO 1970
1940  PRINT "IT MUST BE YOUR CAREFUL DRIVING OR LUCK. NO ACCIDENTS."
1950  GOTO 1970
1960  PRINT "NO ACCIDENTS THIS MONTH, NOT EVEN A LITTLE DENT."
1970  RETURN 
1980  PRINT "TYPE MONTH NUMBER 1-12";
2000  INPUT K9
2010  IF K9<1 THEN 2040
2030  IF INT(K9)=K9 THEN 2050
2040  PRINT "ENTRIES MUST BE POSITIVE WHOLE NUMBERS. TRY AGAIN."
2045  GOTO 1980
2050  IF K9<13 THEN 2100
2060  PRINT "A YEAR HAS ONLY 12 MONTHS. TRY AGAIN."
2070  GOTO 1980
2100  RETURN 
2110  DATA 1,600,25,15,5,2,500,25,10,5,3,300,30,20,5,4,800,75,25,5
2120  DATA 5,900,100,75,50,6,600,300,150,75,7,900,150,50,30,8,800,50,40,20
2130  DATA 9,700,200,90,50,10,400,70,20,10,11,400,80,50,25,12,300,20,10,5
2140  DATA 13,800,100,50,40,14,750,70,50,10
2150  DATA 1,.05,7,1,4,1,1,1,1,8,6,2,.098,1,6,5,1,1,1,1,6,3
2160  DATA 3,.051,7,1,4,1,1,1,1,8,6,4,.113,3,1,3,1,1,5,1,3,1
2170  DATA 5,.079,4,3,5,5,1,3,1,4,3,6,.11,4,6,3,6,4,1,3,4,6
2180  DATA 7,.14,4,6,4,4,3,1,1,4,3,8,.135,1,2,1,1,2,4,1,2,2
2190  DATA 9,.13,6,4,4,3,6,6,1,6,3,10,.098,1,3,3,6,6,6,4,1,6
2200  DATA 11,.03,3,1,1,8,8,8,1,1,4,12,.045,3,1,1,6,6,6,1,1,4
2210  DATA 13,.045,3,4,4,6,6,6,1,1,3,14,.03,2,4,3,7,6,6,1,1,2
2220  DATA 15,.035,1,3,2,4,3,3,1,1,1,16,.085,3,1,3,3,3,3,6,3,6
2230  DATA 17,.052,4,1,4,6,6,6,1,4,9,18,.072,4,1,3,6,3,3,1,6,6
2240  DATA 19,.072,4,1,3,6,4,4,1,4,6,20,.05,3,4,3,4,4,4,1,3,3
2250  DATA 21,.072,4,3,6,6,3,3,1,4,6,22,.091,4,6,6,3,4,4,1,4,6
2260  DATA 23,.063,4,1,6,4,3,3,1,3,4,24,.072,3,1,6,6,3,3,1,3,4
2270  DATA 25,.089,4,7,2,3,7,1,1,4,5,26,.091,4,7,2,3,7,1,1,4,5
2280  DATA 27,.06,5,2,5,7,2,5,1,5,7,28,.055,4,4,6,4,6,4,1,4,6
2290  DATA 29,.065,4,4,6,6,4,4,1,4,6
2300  LET Z6=INT(50*RND(X)+1)
2310  IF Z6>30 THEN 2350
2320  PRINT "YOU HAVE ENCOUNTERED EVENT NUMBER..................."Z6
2330  PRINT "CHECK TO SEE WHAT HAPPENED."
2340  GOTO 2360
2350  PRINT "NONE THIS MONTH"
2360  RETURN 
2370  END 
