Compucolor.org – Virtual Media

Listing of file='RACE.BAS;01' on disk='vmedia/air_raid-sector.ccvf'

100 REM  COPYRIGHT (C) 1979 BY COMPUCOLOR CORPORATION
110 REM  RACE BY A.W. GROGONO
120 TM= 256* PEEK (32941)+ PEEK (32940)
130 Z= TM+ 8:AD= 33283
140 ZZ= INT (Z/ 256):POKE AD,Z- 256* ZZ:POKE AD+ 1,ZZ
150 CLEAR 400:RESTORE 190:DIM W(17,3)
160 PLOT 29,27,24,15,2,255,6,39,12,3,10,9,14
170 PRINT "C O M P U C O L O R   R A C E T R A C K"
180 PLOT 3,80,0:FOR X= 1TO 1000:NEXT
190 DATA " ","d","d","d","d":REM CARS
200 FOR I= 0TO 4:READ CR$(I):NEXT I
210 DATA "~JqbbXb JpaaXa|
","|JbbbXs JaaaXr~":READ UP$,DN$
220 PLOT 6,2,12,3,0,5,14:INPUT "ENTER NUMBER OF DRIVERS (1-4): ";M
230 FOR I= 1TO M:R(I)= I:NEXT I
240 FOR I= 1TO M:R= 1+ INT ((M+ 1- I)* RND (1)):N(I)= R(R)
250 FOR J= RTO M:R(J)= R(J+ 1):NEXT J:NEXT I
260 IF M< 1OR M> 4THEN 220
270 FOR I= 1TO M:PLOT 3,8,I* 4+ 9:PRINT "ENTER NAME, NUMBER";I;
280 INPUT ": ";N$(N(I)):NEXT I
290 BL$= "":FOR I= 0TO 63:BL$= BL$+ " ":NEXT I
300 DATA 60,24,2,0,2,1,2,2,2,3,2,4,2,5,2,6,-1,64,24,0,7,0,31,-1
310 DATA 23,10,0,8,63,8,-1,13,10,8,13,16,7,39,13,47,19,55,13,-1
320 DATA 32,24,8,25,24,13,-1,16,24,16,19,-1,-2
330 DATA 8,7,20,1,8,15,12,1,8,15,24,9,20,38,24,9:REM FIELDS
340 DATA 14,38,24,32,14,38,18,17,8,23,18,17,8,62,12,17
350 DATA 8,62,30,56,26,62,30,48,14,54,30,48,14,54,18,40
360 DATA 14,46,30,40,26,46,30,1,8,7,30,1,8,7,22,1
370 PLOT 15,6,0,12,6,18:READ Y
380 ON - (Y= - 2)GOTO 410:L$= LEFT$ (BL$,Y)
390 READ A:PLOT 27,A
400 READ X,Y:ON - (X= - 1)GOTO 380:PLOT 3,X,Y:PRINT L$:GOTO 400
410 PLOT 6,2,14,3,2,17:PRINT UP$:PLOT 3,10,19:PRINT DN$:PLOT 15
420 FOR I= 1TO 16:FOR J= 0TO 3:READ W(I,J):NEXT J:NEXT I
430 DEF FN X(F)= (W(F,3)= < XAND X= < W(F,1))
440 DEF FN Y(F)= (W(F,0)= < YAND Y= < W(F,2))
450 DEF FN P(F)= FN X(F)AND FN Y(F)
460 DEF FN B(F)= FN P(F)AND FN P(G)
470 FOR I= 1TO 5:PRINT :PLOT 6,2,3,24,I:PRINT SPC( 14):NEXT I
480 PLOT 3,26,2:PRINT "COMPUCOLOR"
490 PLOT 3,26,4:PRINT "RACE-TRACK":PLOT 6,10
500 D$(0)= "neeeeeo":D$(1)= "a     b"
510 D$(2)= "a     b":D$(3)= "lm"
520 FOR I= 0TO 3:PLOT 3,54,3+ I:PRINT D$(I):NEXT I
530 PLOT 6,16,3,55,2:PRINT "TIME:"
540 FOR I= 1TO 6:PRINT :PLOT 6,38,3,4,I:PRINT SPC( 18):NEXT I
550 PLOT 3,7,1:PRINT "#  DRIVER":FOR I= 1TO M:PLOT 3,5,I+ 2
560 PRINT CR$(I);:PLOT 6,38:PRINT I;"  ";N$(I):NEXT I
570 FOR I= 1TO 6:PRINT :PLOT 6,2,3,40,I:PRINT SPC( 12):NEXT I
580 PLOT 6,3,3,42,2:PRINT "NOTICES"
590 PLOT 15,3,1,21:PRINT " START "
600 FOR I= 1TO M:X(I)= 2* I- 1:Y(I)= 20:NEXT I
610 FOR I= 1TO M:PLOT 3,X(I),Y(I):PRINT CR$(I):NEXT I
620 FOR I= 1TO M:VX(I)= 0:VY(I)= 0:AX(I)= 0:AY(I)= 0
630 FOR I= 1TO M:F(I)= 1:NEXT I
640 DATA "          ","          ","          "
650 DATA " NOW  USE ","  NUMBER  ","   KEYS   "
660 DATA "  PRESS   ","  RETURN  "," TO START "
670 DATA "          ","  CRASH ! ","          "
680 DATA "    MISS  ","   THIS   ","   TURN   "
690 DATA "  IN THE  ","  FINAL   "," STRAIGHT "
700 DATA "   THE    ","  WINNER  ","          "
710 DATA "          "," YOU HAVE "," FINISHED "
720 DATA "M FOR MENU","OR  RETURN"," TO  PLAY "
730 DIM IN$(8,2)
740 FOR I= 0TO 8:FOR J= 0TO 2:READ IN$(I,J):NEXT J:NEXT I
750 I= 1:K(I)= 2:GOSUB 1090:Q= CALL (2):IF Q< > 13THEN 750
760 FOR I= 1TO M:K(I)= 1:NEXT I
770 POKE 33210,0:POKE 33209,0
780 FOR I= 1TO M:PLOT 27,10,6,38,3,5,3,32,32,32,32,27,24
790 IF K(I)> 5THEN 1030
800 PLOT 6,0,3,5,I+ 2:PRINT CR$(I)
810 T= - 100* (K(I)= 4):F= F(I):G= F+ 1:GOSUB 1090
820 IF K(I)= 4THEN K(I)= 0:GOTO 1030
830 OUT 8,255
840 Q= CALL (2)- 1:ON - (Q= 9)GOTO 1070:IF Q< 48OR Q> 56THEN 840
850 OUT 8,247
860 K(I)= 0:PLOT 6,18,3,64,30
870 VX(I)= VX(I)+ Q- 3* INT (Q/ 3)- 1
880 VY(I)= VY(I)+ 17- INT (Q/ 3)
890 VX= VX(I):VY= VY(I):X= X(I)+ VX:Y= Y(I)+ VY
900 IF FN B(F)THEN F(I)= F(I)+ 1:GOTO 980
910 IF FN P(F)THEN 980
920 VX(I)= 0:VY(I)= 0:K(I)= 3
930 IF VX= 0THEN Y= Y- SGN (VY):ON - FN Y(F)GOTO 900:GOTO 930
940 IF VY= 0THEN X= X- SGN (VX):ON - FN X(F)GOTO 900:GOTO 940
950 VR= VY/ VX:IF ABS (VR)> 1THEN 970
960 X= X- SGN (VX):Y= INT (.5+ Y(I)+ (X- X(I))* VR):GOTO 900
970 Y= Y- SGN (VY):X= INT (.5+ X(I)+ (Y- Y(I))/ VR):GOTO 900
980 PLOT 3,X(I),Y(I):PRINT CR$(0):PLOT 3,X,Y:PRINT CR$(I)
990 IF K(I)= 3THEN T= 100:GOSUB 1090:K(I)= - 4* (M> 1)
1000 PLOT 6,18,3,64,30:X(I)= X:Y(I)= Y
1010 ON - (F(I)= 16)GOSUB 1040:IF F(I)< > 14OR K(I)= 4THEN 1030
1020 K(I)= 5:PLOT 3,1,21:PRINT "FINISH."
1030 NEXT I:GOTO 780
1040 TF= TF+ 1:T= 200
1050 GOSUB 1130:IF TF= 1THEN K(I)= 6:GOSUB 1090:FOR ZZ= 1TO 100:NEXT
1060 K(I)= 7:GOSUB 1090:IF TF< MTHEN RETURN
1070 OUT 8,255:K(I)= 8:GOSUB 1090:Z$= CHR$ (CALL (2))
1080 ON - (Z$< > "M")GOTO 100:LOAD "MENU":RUN
1090 PLOT 6,0:FOR J= 0TO 2:PLOT 3,41,4+ J
1100 PRINT IN$(K(I),J):NEXT J:PLOT 3,0,0,6,0
1110 IF K(I)= 4THEN PLOT 3,43,4:PRINT CR$(I)
1120 T= T- 1:ON - (T> 1)GOTO 1120:RETURN
1130 TM= PEEK (33210):S= PEEK (33209)
1140 T$= STR$ (TM):S$= STR$ (S):L= LEN (S$)
1150 S$= "0"+ RIGHT$ (S$,L- 1):T$= T$+ ":"+ RIGHT$ (S$,2)
1160 PLOT 14,6,11,3,55,5:PRINT T$:PLOT 15:RETURN