1 'RACWY2.BA Modified PC Derby Jan 87, PC magazine (Rev. 11/13/89) 8 CLS:CALL 17001:PRINT@2," Choose HEAT from RRUN files: ":CALL 17006:FILES:DEFINT A-Z 9 ON ERROR GOTO 4000 10 CLEAR 5000:DIM X(45),Y(45),C(10) 17 GOSUB 3000::GOSUB 1000:'Get HEAT # & Max. Laps 20 CLS:CALL16959:CALL17001:PRINT@2," NEW MESA RACEWAY ":CALL17006 25 PRINT@40,"qqqq";:FOR I=0 TO 35:PRINT@40+(I+4),CHR$(243);:NEXT 30 FOR I=1 TO 6:PRINT@40+I*40,USING"#";I:NEXT 40 FOR I=1 TO 45:READ X(I),Y(I):NEXT 50 X=4:FOR Y=8 TO 48 STEP 8 60 FOR I=1 TO 45:PSET(X+X(I),Y+Y(I)):NEXT:NEXT 70 LINE(26,16)-(26,63):LINE(28,12)-(28,63) 75 FOR I=0TO9:C(I)=99:NEXT 80 GOSUB 3145 87 FOR I=1 TO 20:SOUND 11836,1:NEXT 88 GOSUB 1500 90 PRINT@21,SPACE$(24):PRINT@21,"Replay of HEAT";F$ 100 LINE(26,16)-(26,63),0:LINE(28,12)-(28,63),0 110 GOSUB 3200 115 PP=P(H):P(H)=P(H)+L:IF P(H)>216 THENP(H)=216 120 IF PP=0 THEN PRINT@41,"Laps":LINE(6,((H+1)*8)+8)-(36,(H+1)*8+15),0,BF ELSE LINE ((PP-1)*(U)+10,((H+1)*8)+8)-((PP-1)*(U)+30,(H+1)*8+15),0,BF 130 X=(P(H)-1)*(U)+12:Y=(H+1)*8 140 FOR I=1 TO 45:PSET (X+X(I),Y+Y(I)):NEXT 150 IF L(CAR)>1 THEN PRINT@41+(H+1)*40,L(CAR) 160 GOTO 110 910 DATA 9,9,10,9,11,9,2,10,3,10,4,10,5,10,6,10,7,10,8,10,10,10,11,10,12,10,14,10,15,10,16,10,3,11,4 920 DATA 11,5,11,7,11,8,11,10,11,11,11,12,11,13,11,14,11,16,11,17,11,4,12,5,12,7,12,8,12,9,12,10,12 930 DATA 11,12,12,12,13,12,14,12,16,12,17,12,18,12,5,13,6,13,14,13 940 DATA 15,13 1000 'SET MAX LAPS 1040 IF TTL>105 THEN U=1:RETURN 1050 IF TTL>70 THEN U=2:RETURN 1060 IF TTL>53 THEN U=3:RETURN 1070 IF TTL>42 THEN U=4:RETURN 1080 IF TTL>35 THEN U=5:RETURN 1090 IF TTL>30 THEN U=6:RETURN 1100 IF TTL>27 THEN U=7:RETURN 1110 IF TTL>24 THEN U=8:RETURN 1120 IF TTL>21 THEN U=9:RETURN 1130 IF TTL>20 THEN U=10:RETURN 1140 IF TTL>18 THEN U=11:RETURN 1150 IF TTL>17 THEN U=12:RETURN 1160 IF TTL>15 THEN U=13:RETURN 1170 IF TTL=15 THEN U=14:RETURN 1180 IF TTL>12 THEN U=16:RETURN 1190 IF TTL>10 THEN U=18:RETURN 1192 IF TTL>8 THEN U=23:RETURN 1195 IF TTL>7 THEN U=25:RETURN 1200 IF TTL>6 THEN U=32:RETURN 1210 IF TTL>0 THEN U=40:RETURN 1500 'Draw finish line 1510 FIN=(TTL-1)*U+28:IF FIN>237 THEN FIN=237 1520 LINE(FIN,12)-(FIN,63) 1525 LINE(FIN+2,12)-(FIN+2,63) 1530 RETURN 2000 PRINT@169,"Hit ANY Key to Start Race!": 2010 X$=INKEY$:IF X$="" THEN 2010 2020 PRINT@169,SPACE$(26) 2900 RETURN 3000 'GET HEAT NO. 3005 PRINT@210,"HEAT number";:INPUT F$ 3010 CLS 3020 IF LEN(F$)>2 THEN SOUND 10000,20:PRINT@170,"2 Characters max.!":GOTO 3000 3040 A$="RRUN"+F$+".DO" 3045 OPEN A$ FOR INPUT AS 1 3047 PRINT@170,"Loading ";A$ 3050 PRINT@215,N:N=N+1:LINE INPUT #1,Z$ 3060 IF EOF(1) THEN GOTO 3080 3070 GOTO 3050 3080 CLOSE 3090 DIM D$(N),D(N) 3100 OPEN A$ FOR INPUT AS 1 3110 LINE INPUT #1,U$:TTL=VAL(U$) 3115 FOR I=2 TO N 3120 LINE INPUT #1,D$(I-1) 3130 NEXT I 3140 CLOSE 1:RETURN 3145 'CHANGE CAR ASSIGNMENT 3146 PRINT@134,"Cars 1-6 ok?" 3147 PRINT@176,"Yes=";CHR$(34);"Y";CHR$(34):PRINT@216,"No=";CHR$(34);"N";CHR$(34) 3150 R$=INKEY$:IF R$="Y" OR R$="y" THEN LINE(40,20)-(200,50),0,BF:FOR I=1 TO 6:C(I)=I:NEXT:GOSUB 2000:RETURN ELSE IF R$="N" OR R$="n" THEN LINE(40,20)-(200,50),0,BF:GOSUB 6000 ELSE 3150 3155 GOSUB 2000 3160 RETURN 3200 M=M+1 3210 IF LEFT$(D$(M),1)="T" THEN GOTO 5000 ELSE IF LEFT$(D$(M),1)="E" THEN GOTO 8000 3220 D(M)=VAL(D$(M)) 3230 CAR=(D(M)-INT(D(M))) 3240 D(M)=D(M)-CAR:CAR=CAR*10 3245 IF C(CAR)=99 THEN GOTO 3200 3247 L(CAR)=L(CAR)+1 3250 L=1:H=C(CAR)-1:RETURN 4000 IF ERR=52 THEN CLS:FILES:PRINT@170,A$;" Not found":RESUME 3000 4005 IF ERR=5 THEN PRINT@130,"Exceeded";TTL;"laps max.":PRINT@167,"CHECK first record of ";A$:END 4010 PRINT@170,"Error ";ERR;" Rerun":RESUME 3000 5000 ' 5010 CAR$=MID$(D$(M),3,1) 5020 PS=C(VAL(CAR$)) 5030 LAP$=MID$(D$(M),6,2):LAP=VAL(LAP$) 5035 TM$="" 5037 FOR I=8 TO LEN(D$(M)) 5038 H$=MID$(D$(M),I,1) 5040 IF H$=" " THEN 5042 ELSE IF H$=":" THEN TM$=TM$+"." ELSE TM$=TM$+H$ 5042 NEXT 5045 IF PS>9 THEN GOTO 3200 5050 PRINT@41+PS*40,USING"###";LAP;:PRINT"/";TM$;" " 5520 GOTO 3200 6000 PRINT@130,"Enter Car no.(0-9):" 6020 FOR I=1 TO 6:PRINT@172,"Position #";I;"=Car #"; 7000 R$="" 7010 R$=INKEY$:IF R$="" THEN 7010 ELSE R=ASC(R$):IF R<48 OR R>57 THEN BEEP:R$="":GOTO 7010 ELSE C(R-48)=I:PRINT@40+I*40,USING"#";R-48:NEXT 7020 LINE(40,20)-(200,50),0,BF:RETURN 8000 'END ROUTINE 8010 T$=RIGHT$(D$(M),2) 8020 PRINT@12," HEAT";F$;" Winner is Car #";T$; 8200 PRINT@0,"";:BEEP:BEEP 8210 CALL 16964 9999 END