10 REM* RACE 20 REM***BY CHRIS HOOK 30 REM***MARIN COMPUTER CENTER 35 REM***COPYRIGHT BY CREATIVE COMPUTING 40 LET I1=252 50 DIM N(24),E(24): LET Y=32,Y1=160,Z5=1 60 PRINT "&K": CURSOR 6,27: PRINT "<-*RACE*->": CURSOR 15,0: PRINT "Do you want instructions? "; 70 IF INP(I1)=89 THEN 2320 80 IF INP(I1)<>78 THEN 70 90 PRINT "&K": INPUT ,(1,0)"What speed would you like, 1 is the FASTEST, 7 the SLOWEST ",S$ 100 IF ASC(S$)>55 OR ASC(S$)<49 THEN 90 ELSE LET S=VAL(S$)-1 110 PRINT "&K": PRINT "Which course do you want? (A, B, or C) "; 120 LET G8=INP(I1)-64: IF G8>3 OR G8<1 THEN 120 130 IF G8=1 THEN LET Q=52917 140 IF G8=2 THEN LET Q=52422 150 IF G8=3 THEN LET Q=52747 160 LET F=48,F1=48,F2=48,F3=48,F4=48,L=48,L1=48,L2=48 170 PRINT "&K" 180 FOR A=52224 TO 52234: READ B: POKE A,B: NEXT 190 DATA 84,73,77,69,32,48,48,48,48,48,32,160,210,193,195,197 200 FOR A=52253 TO 52258: READ B: POKE A,B: NEXT 210 FOR A=52275 TO 52286: READ B: POKE A,B: NEXT 220 DATA 160,68,73,83,84,65,78,67,69,32,48,48,48 230 IF G8=2 THEN 1400 240 IF G8=3 THEN 1780 250 FOR A1=1 TO 47: READ M3,M1,M2 260 FOR A=M3 TO M1 STEP M2: POKE A+52224,Y1: NEXT : NEXT 270 DATA 64,127,1,127,1023,64,1023,960,-1,960,64,-64 280 DATA 194,834,64,195,835,64,196,836,64 290 DATA 134,390,64,135,455,64,392,520,64,457,585,64 300 DATA 522,714,64,587,715,64,517,837,64,582,838,64 310 DATA 647,839,64,712,840,64,841,844,1,525,845,64 320 DATA 266,526,65,330,460,65,202,202,1,140,143,1 330 DATA 267,273,1,209,229,1,168,174,1,293,310,1,241,246,1 340 DATA 400,405,1,341,917,64,469,480,1,282,346,64 350 DATA 351,415,64,480,608,64,603,731,64,731,741,1,357,741,64 360 DATA 796,860,64,804,868,64,864,929,64,492,940,64,493,497,1 370 DATA 374,630,64,625,630,1,689,817,64,756,767,1,881,885,1 380 POKE 52468,153: LET E9=52404: LET E8=52403: POKE 52340,153 390 LET B=52539: POKE B,11: LET S8=52332: LET S9=52415 400 FOR Z9=1 TO 24: READ N(Z9): NEXT 410 GOSUB 2510 420 LET K=INP(I1)-48: IF K=79 THEN 2280 430 IF K=91 THEN 1300 440 IF K<1 OR K>9 THEN 620 450 ON KGOTO 560480540520620460580500600 460 IF PEEK(B+1)<>Y AND B<>E8 THEN 740 470 LET B=B+1: POKE B,9: POKE B-1,Y: GOTO 620 480 IF PEEK(B+64)<>Y THEN 740 490 LET B=B+64: POKE B,11: POKE B-64,Y: GOTO 620 500 IF PEEK(B-64)<>Y AND B<>E8 THEN 740 510 LET B=B-64: POKE B,94: POKE B+64,Y: GOTO 620 520 IF PEEK(B-1)<>Y AND B<>E8 THEN 740 530 LET B=B-1: POKE B,13: POKE B+1,Y: GOTO 620 540 IF PEEK(B+65)<>Y THEN 740 550 LET B=B+65: POKE B,92: POKE B-65,Y: GOTO 620 560 IF PEEK(B+63)<>Y THEN 740 570 LET B=B+63: POKE B,47: POKE B-63,Y: GOTO 620 580 IF PEEK(B-65)<>Y THEN 740 590 LET B=B-65: POKE B,92: POKE B+65,Y: GOTO 620 600 IF PEEK(B-63)<>Y THEN 740 610 LET B=B-63: POKE B,47: POKE B+63,Y: GOTO 620 620 PAUSE S: LET F=F+1: IF F>57 THEN LET F1=F1+1,F=48 630 IF F1=58 THEN LET F2=F2+1,F1=48 640 IF F2=58 THEN LET F3=F3+1,F2=48 650 POKE 52233,F: POKE 52230,F3: POKE 52231,F2: POKE 52232,F1 660 IF Q=52917 THEN RESTORE 1090 670 IF Q=52422 THEN RESTORE 1760 680 IF Q=52747 THEN RESTORE 2150 690 IF Q=B THEN LET L=L+1: READ Q 700 IF L>57 THEN LET L2=L2+1,L=48 710 POKE 52284,L2: POKE 52285,L 720 IF L2=49 THEN 1110 730 GOTO 420 740 POKE 52229,F4: POKE 52230,F3: POKE 52231,F2 750 POKE 52233,F: POKE 52232,F1 760 FOR N1=1 TO 24: LET E(N1)=PEEK(N(N1)+B): NEXT 770 LET N5=N5+1 780 POKE B,5 790 DATA 1,2,3,-1,-2,-3,64,128,192,-64,-128,-192,63,126 800 DATA 189,-63,-126,-189,65,130,195,-65,-130,-195 810 LET X=B+1,X2=B+64,X3=B-64,X1=B-1,X4=B+65 820 LET X5=B-65,X6=B+63,X7=B-63,F1=F1+2,F=48 830 IF F1>57 THEN LET F2=F2+1,F1=48 840 IF F2=58 THEN LET F3=F3+1,F2=48 850 IF Z=3 THEN LET Z=0: GOTO 420 860 POKE X,42: POKE X4,42: POKE X1,42: POKE X6,42: POKE X2,42 870 IF B>52352+((Z5-1)*64) THEN POKE X3,42: POKE X7,42: POKE X5,42 880 IF X-B>2 THEN 910 890 LET X4=X4+65,X5=X5-65,X6=X6+63,X7=X7-63 900 LET X=X+1,X1=X1-1,X2=X2+64,X3=X3-64,Z=Z+1 910 GOSUB 930 920 GOTO 850 930 IF Z5=2 THEN GOTO 1000 940 IF Z5=3 THEN GOTO 1050 950 POKE X-1,E(1): POKE X1+1,E(4): POKE X2-64,E(7) 960 POKE X3+64,E(10): POKE X6-63,E(13): POKE X7+63,E(16) 970 POKE X4-65,E(19): POKE X5+65,E(22) 980 LET Z5=Z5+1 990 RETURN 1000 POKE X-1,E(2): POKE X1+1,E(5): POKE X2-64,E(8) 1010 POKE X3+64,E(11): POKE X6-63,E(14): POKE X7+63,E(17) 1020 POKE X4-65,E(20): POKE X5+65,E(23) 1030 LET Z5=Z5+1 1040 RETURN 1050 POKE X,E(3): POKE X1,E(6): POKE X2,E(9): POKE X3,E(12) 1060 POKE X6,E(15): POKE X7,E(18) 1070 POKE X4,E(21): POKE X5,E(24): LET Z5=1 1080 LET Z=Z+1: RETURN 1090 DATA 52784,52896,53131,52801,52353,52613,52812,52430,52405 1100 DATA 52917 1110 RESTORE 190 1120 FOR A=52224 TO 52227: READ H: POKE A,H+128: NEXT 1130 RESTORE 2170 1140 FOR A=52235 TO 52243: READ H: POKE A,H+128: NEXT 1150 PAUSE 50: PRINT "&K" 1160 CURSOR 0,25: PRINT "<<<-*RACE*->>>": PRINT 1170 LET A=F-48+10*(F1-48)+100*(F2-48)+1000*(F3-48) 1180 PRINT "You have done 1 lap (100 dekameters) in ";A;" Seconds." 1190 IF N5=1 THEN PRINT "You had 1 crash." 1200 IF N5=1 THEN GOTO 1220 1210 PRINT "You had ";N5;" crashes." 1220 PRINT : PRINT "RATING FOR SPEED";S+1;" ON COURSE ";CHR(G8+64): PRINT "==============================" 1230 LET N5=0 1240 GOSUB 2180 1250 PRINT : PRINT : PRINT "Do you want to play again? "; 1260 IF INP(I1)=89 THEN 1290 1270 IF INP(I1)<>78 THEN 1260 1280 PRINT : GOTO 2300 1290 RESTORE 190: GOTO 90 1300 LET F=48,F1=48,F2=48,F3=48,F4=48,L=48,L2=48,L1=48 1310 POKE B,32: LET N5=0 1320 POKE 52230,F: POKE 52231,F: POKE 52232,F: POKE 52233,F 1330 POKE 52286,F: POKE 52285,F: POKE 52284,F 1340 IF G8=2 OR G8=3 THEN LET B=52354 1350 IF G8=1 THEN LET Q=52917 1360 IF G8=2 THEN LET Q=52422 1370 IF G8=3 THEN LET Q=52747 1380 IF G8=1 THEN LET B=52540: POKE B,11: GOTO 420 1390 POKE B,9: GOTO 420 1400 FOR A=52288 TO 53247: POKE A,Y1: NEXT A 1410 RESTORE 1470 1420 POKE 52803,153: POKE 52675,153 1430 FOR A=1 TO 274: READ L5: POKE L5+52000,Y: NEXT A 1440 LET B=52354: LET E9=52739: POKE B,9: RESTORE 790 1450 LET E8=52740: LET S8=52677: LET S9=52352 1460 GOTO 400 1470 DATA 354,355,356,357,422,486,550,614,615,616,617 1480 DATA 553,489,425,361,362,363,364,428,492,556,620,621,622 1490 DATA 623,559,495,431,367,368,369,370,371,436 1500 DATA 566,631,632,567,502,437,372,437,502 1510 DATA 705,706,770,771,772,773,774,710,711,712,648,584,520 1520 DATA 632,633,634,635,571,507,443,444,445 1530 DATA 446,447,448,449,450,451,452,517,581,580 1540 DATA 579,578,577,576,575,574,638,702,703,704 1550 DATA 456,392,393,394,395,396,397,461,525,589,652,716,780 1560 DATA 845,846,847,848,784,720,656,592,528,464,400 1570 DATA 401,402,403,404.405,406,407,408,409,473 1580 DATA 537,536,535,534,533,597,661,662,663,664 1590 DATA 665,729,793,792,791,790,789,853,917,918,919,920 1600 DATA 921,985,1049,1113,1112,1111,1110 1610 DATA 1108,1107,1043,979,978,977,976,975,974,1038 1620 DATA 1102,1166,1230,1229,1228,1227,1163,1098,1033 1630 DATA 968,903,902,967,1032,1097,1162,901,900,899,898 1640 DATA 962,1026,1090,1089,1088,1087,1023,959,895,831 1650 DATA 830,829,828,827,891,955,1019,1083,1147,1146,1145 1660 DATA 1144,1143,1142,1141,1140,1076,1012,1013,1014 1670 DATA 1015,1016,952,888,887,886,885,884,883,882,881 1680 DATA 945,1009,1073,1137,1136,1135,1134,1133,1132,1131 1690 DATA 1067,1003,1002,1001,1000,1064,1128,1127,1126,1125 1700 DATA 1124,1060,996,932,868,869,870,871,872,873,874,875 1710 DATA 811,747,746,745,744,743,742,741,740,739,738 1720 DATA 674,610,546,482,418 1730 LET B=52354: POKE B,9: POKE 52803,153: POKE 52675,153 1740 RESTORE 790: LET Q=52422: GOTO 400 1750 DATA 358,438,503,453,588,844,405,1109 1760 DATA 52623,52632,52579,52711,52846 1770 DATA 52919,52902,52955,52738,52422 1780 RESTORE 1790 1790 DATA 354,355,356,357,358,359,423,487,488,552,616 1800 DATA 617,681,745,746,747,684,620,555,491,490,426,362 1810 DATA 363,364,365,366,367,368,369,370,371,372,373,374,375 1820 DATA 376,377,440,503,566,629,692,755,756,693,630,567 1830 DATA 504,441,757,758,759,760,697,634,571,508,445,382 1840 DATA 509,572,635,698,761,446,383,384,385,450,449,513 1850 DATA 577,578,642,705,769,768,832,896,897,898,899,900 1860 DATA 901,837,773,709,710,711,712,776,840,841,842,843 1870 DATA 844,780,716,652,588,587,586,585,584,583,582,518 1880 DATA 454,390,391,392,393,394,458,459,460,461,397,398 1890 DATA 399,400,401.465,529,593,592,656,720,721,722,723 1900 DATA 724,725,726,790,854,853,852,851,850,849,913,977 1910 DATA 978,979,980,981,982,983,984,985,921,857,793,729 1920 DATA 665,601,600,599,535,471,407,408,409,410,474,475 1930 DATA 539,540,541,605,669,733,732,796,860,861,862,926 1940 DATA 990,1054,1053,1052,1051,1115,1114,1113,1112,1111,1175 1950 DATA 1174,1173,1172,1171,1170,1169,1104,1039,974,973 1960 DATA 1038,1103,1168,972,971,1035,1100,1165,1164,1099 1970 DATA 1034,969,1163,1162,1161,1160,1159,1158,1157,1156 1980 DATA 1155,1154,1153,1088,1087,1086,1085,1149,1148,1147 1990 DATA 1146,1145,1081,1017,0953,0954,0955,891,890,889,888 2000 DATA 887,886,885,884,948,1012,1075,1074,1073,1009,945 2010 DATA 881,817,753,689,562,499,498,497,496,495,494,493 2020 DATA 558,623,687,751,815,879,943,1007,1071,1070,1069 2030 DATA 1068,1067,1066,1002,938,937,936,935,998,1061,1124 2040 DATA 1123,1060,997,934,997,1122,1121,1057,993,929,865 2050 DATA 801,802,803,804,740,676 2060 DATA 675,674,673,609,545,481,417,353 2070 FOR A=52288 TO 53247: POKE A,Y1: NEXT A 2080 FOR A=1 TO 320: READ G9: POKE G9+52000,Y: NEXT A 2090 FOR A=1 TO 2: READ G9: POKE G9+52000,Y1: NEXT A 2100 POKE 52610,153: POKE 52738,153: LET E9=52674: LET E8=52675 2110 LET S8=52546: LET S9=52288 2120 LET B=52354: POKE B,9: RESTORE 790: GOTO 400 2130 DATA 748,619,706,465,1089,622,625,626,1076 2140 DATA 755,969,1034 2150 DATA 52758,52513,52460,52471,53159,53017,52497,52935,52673 2160 DATA 52747 2170 DATA 71,97,109,101,32,111,118,101,114 2180 REM*RATINGS* 2190 IF G8=2 THEN LET A=A-50 2200 IF G8=3 THEN LET A=A-100 2210 IF A<300 THEN PRINT "You have qualified for the GRAND PRIX!!" 2220 IF A>299 AND A<450 THEN PRINT "You ALMOST made the Grand Prix.": PRINT TAB(20);"(Keep working at it.)" 2230 IF A>449 AND A<600 THEN PRINT "You have a way to go before driving professionally." 2240 IF A>599 AND A<900 THEN PRINT "You'll NEVER sell STP OIL TREATMENT on television!" 2250 IF A>899 AND A<1250 THEN PRINT "BACKSEAT DRIVER." 2260 IF A>1249 THEN PRINT "DRUNKEN DRIVER." 2270 RETURN 2280 PRINT "&K" 2290 PRINT "....and car";INT(RND(0)*9)+1;" has fallen out of the race..." 2300 PRINT : PRINT TAB(17);"Thank you for RACING with me!" 2310 PRINT : PRINT TAB(10);"Type `RUN' and press `RETURN' to play again.": PRINT : END 2320 PRINT "&K": CURSOR 0,20: PRINT "<**INSTRUCTIONS**>": PRINT 2330 PRINT "You will be driving a `car' around 1 of 3 tracks." 2340 PRINT "A is the easiest, B is intermediate," 2350 PRINT "and C is the advanced course." 2360 PRINT : PRINT "To move, you use the calculator numbers on the side." 2370 PRINT "The numbers move you as follows:" 2380 PRINT : PRINT TAB(28);"7 8 9" 2390 PRINT TAB(29);"\ ^ /" 2400 PRINT TAB(28);"4";: SET DB=13: PRINT " 5 ";CHR(9);"6" 2410 PRINT TAB(29);"/ ";: SET DB=11: PRINT " \" 2420 PRINT TAB(28);"1 2 3" 2430 CURSOR 15,1: INPUT "Press `RETURN' to go on.",A$ 2440 PRINT "&K": PRINT : PRINT : PRINT "Try to do your lap as fast as possible." 2450 PRINT "Drive your car in the direction it is first pointed in." 2460 PRINT "To restart game press `CLEAR'." 2470 PRINT "To end game press `DEL'." 2480 PRINT "Make sure the upper case light is lit before starting." 2490 CURSOR 11,26: PRINT "GOOD LUCK!" 2500 CURSOR 15,1: INPUT "Press `RETURN' to go on.",A$: GOTO 90 2510 POKE E9,127 2520 RESTORE 2560: FOR F9=S8 TO S8+5: READ F8: POKE F9,F8: NEXT 2530 FOR F9=S9 TO S9+256 STEP 64: READ F8: POKE F9,F8: NEXT 2540 PAUSE 20: FOR F9=S9 TO S9+256 STEP 64: PAUSE 10: POKE F9,160: NEXT 2550 RETURN 2560 DATA 198,201,206,201,211,200,181,180,179,178,177