Compucolor.org – Virtual Media

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

100 REM COPYRIGHT (C) 1979 BY COMPUCOLOR CORPORTION
110 REM ROVER ROBOT ADAPTED BY DON MILLER
120 CLEAR 100
130 TM= 256* PEEK (32941)+ PEEK (32940)
140 Z= TM+ 8:AD= 33283:GOSUB 190:TM= TM+ 1
150 X= 41:Y= 20:H= 8:W= 20:C= 1
160 Z= 28672+ 128* Y+ X+ X:AD= TM+ 126:GOSUB 190
170 Z= 128- W- W:AD= TM+ 149:GOSUB 190:POKE TM+ 129,H- 1
180 POKE TM+ 131,W* (C+ 1):POKE TM+ 143,35* (1- C):GOTO 200
190 ZZ= INT (Z/ 256):POKE AD,Z- 256* ZZ:POKE AD+ 1,ZZ:RETURN
200 PLOT 6,32,12,15,27,24
210 PLOT 6,54
220 PLOT 2,0,0,242,0,127,127,127,127,0,0,0,255
230 PLOT 6,27:FOR I= 40TO 61:PLOT 3,I,19,32:NEXT I
240 FOR I= 61TO 40STEP - 1:PLOT 3,I,28,32:NEXT I
250 FOR J= 20TO 27:PLOT 3,40,J,32:NEXT J
260 FOR J= 27TO 20STEP - 1:PLOT 3,61,J,32:NEXT J
270 PLOT 6,9:FOR I= 40TO 61:PLOT 3,I,7,32:NEXT I
280 FOR I= 61TO 40STEP - 1:PLOT 3,I,16,32:NEXT I
290 FOR J= 8TO 15:PLOT 3,40,J,32:NEXT J
300 FOR J= 15TO 8STEP - 1:PLOT 3,61,J,32:NEXT J
310 PLOT 6,2,15,27,24
320 GOSUB 3660
330 PLOT 6,25:FOR I= 1TO 8:GOSUB 4660:PRINT "ROVER               ":NEXT I
340 PLOT 6,46
350 FOR I= 1TO 8:GOSUB 4660:PRINT "               ROBOT":NEXT I
360 PLOT 6,35
370 FOR I= 1TO 8:GOSUB 4660:PRINT "     ROVERROBOT     ":NEXT I
380 DIM F(9,9)
390 REM
400 REM
410 R= 9:CL= 9
420 NN= 0:OO= 0:SZ= 0
430 D$= "SCLMIE"
440 E$= "NRE"
450 P= 0:S= 1:YR= 2:XR= 3
460 SP= 0
470 REM
480 PLOT 6,38:FOR I= 1TO 8:GOSUB 3230:NEXT I
490 GOSUB 640
500 PLOT 6,38
510 GOSUB 1060
520 PLOT 6,38
530 GOSUB 1370
540 PLOT 6,38:FOR I= 1TO 8:GOSUB 3230:NEXT I
550 PLOT 15
560 GOSUB 4660:INPUT "TRY ANOTHER GAME?";M$
570 PLOT 15
580 IF LEFT$ (M$,1)< > "Y"THEN 630
590 REM
600 N= NN:GOSUB 3920:GOSUB 3990:BB= 0:GOSUB 4050:GOSUB 4340
610 PLOT 15,6,52,3,40,5:PRINT NN;" IN";SZ;" STEPS      "
620 GOTO 390
630 PLOT 6,2,12,27,11,1
640 REM
650 PLOT 6,38:GOSUB 3230
660 PLOT 15
670 GOSUB 4660:PRINT "WHICH GRID DO YOU   "
680 PLOT 15:GOSUB 3230
690 GOSUB 4660:PRINT "WANT....NOVICE,     "
700 PLOT 15:GOSUB 3230
710 GOSUB 4660:PRINT "REGULAR OR EXPERT?  "
720 PLOT 15:GOSUB 3230
730 GOSUB 4660:INPUT " (N,R,E)";M$
740 PLOT 15
750 IF LEFT$ (M$,1)= "N"THEN L1= 1:GOTO 790
760 IF LEFT$ (M$,1)= "R"THEN L1= 2:GOTO 790
770 IF LEFT$ (M$,1)= "E"THEN L1= 3:GOTO 790
780 GOTO 650
790 REM
800 PLOT 14,31,6,57,3,40,3
810 IF L1= 1THEN PRINT "        NOVICE        "
820 IF L1= 2THEN PRINT "        REGULAR       "
830 IF L1= 3THEN PRINT "        EXPERT        "
840 P1= 0
850 PLOT 15
860 Z1= .8- L1/ 10
870 J= PEEK (33209):FOR I= 0TO J:Q9= RND (1):NEXT I
880 FOR I= 1TO R
890 SC= 0
900 FOR J= 1TO CL
910 F(I,J)= INT (RND (1)+ Z1)
920 IF F(I,J)= 1THEN SC= 0:GOTO 950
930 P1= P1+ 1:SC= SC+ 1
940 IF SC> 3THEN SC= 0:P1= P1- 1:F(I,J)= 1
950 NEXT J
960 NEXT I
970 FOR I= 1TO CL
980 IF (F(R- 2,I)= P)OR (F(R- 1,I)= P)OR (F(R,I)= P)THEN 1010
990 F(R- 2+ INT (3* RND (1)),I)= P
1000 P1= P1+ 1
1010 NEXT I
1020 K1= INT (P1/ 3)
1030 M1= INT (P1/ 10)
1040 Z9= 0
1050 RETURN
1060 REM
1070 REM
1080 R1= 0:C1= 0
1090 PLOT 6,38
1100 GOSUB 3230
1110 PLOT 15
1120 GOSUB 4660:INPUT "LIKE A HINT (Y/N) ?";M$
1130 PLOT 15
1140 IF LEFT$ (M$,1)< > "Y"THEN 1260
1150 FOR I= 1TO 9
1160 N= I+ 9:PK= N:GO= 1
1170 IF F(1,I)< > STHEN 1190
1180 GOSUB 3920:GOSUB 3990:BB= 64:GOSUB 4050
1190 NEXT I
1200 FOR I= 1TO 1000:NEXT I
1210 FOR I= 1TO 9
1220 IF F(1,I)< > STHEN 1250
1230 N= I+ 9:PK= N
1240 GOSUB 3920:GOSUB 3990:BB= 0:GOSUB 4050
1250 NEXT I
1260 PLOT 6,33,3,41,8:PRINT "COMMANDS      # LEFT"
1270 PLOT 6,25,3,41,9:PRINT " STEP (S)           "
1280 PLOT 3,41,10:PRINT "                    "
1290 PLOT 3,41,10:PRINT " MAP (M)       ";M1
1300 PLOT 3,41,11:PRINT "                    "
1310 PLOT 3,41,11:PRINT " CHECK (C)     ";K1
1320 PLOT 3,41,12:PRINT " LOOK (L)           "
1330 PLOT 3,41,13:PRINT " END (E)            "
1340 PLOT 3,41,14:PRINT "                    "
1350 PLOT 3,41,15:PRINT "THERE ARE ";P1;" STOPS "
1360 RETURN
1370 REM
1380 PLOT 6,38
1390 GOSUB 3230
1400 PLOT 15
1410 GOSUB 4660:INPUT "NEXT COMMAND ?";M$
1420 PLOT 15
1430 GOSUB 3230
1440 IF LEFT$ (M$,1)= "S"THEN I= 1:GOTO 1530
1450 IF LEFT$ (M$,1)= "C"THEN I= 2:GOTO 1530
1460 IF LEFT$ (M$,1)= "L"THEN I= 3:GOTO 1530
1470 IF LEFT$ (M$,1)= "M"THEN I= 4:GOTO 1530
1480 IF LEFT$ (M$,1)= "#"THEN I= 5:GOTO 1530
1490 IF LEFT$ (M$,1)= "E"THEN I= 6:GOTO 1530
1500 IF LEFT$ (M$,1)= "0"THEN GOSUB 2630:GOTO 1540
1510 GOSUB 4660:PRINT "WHAT DID YOU SAY?   "
1520 GOSUB 4660:GOTO 1400
1530 ON IGOSUB 1560,1800,1990,2170,2290,2520
1540 IF Z9= 0THEN 1370
1550 RETURN
1560 REM
1570 GOSUB 2360
1580 IF (NN= 0)AND (N< 19)THEN R1= R9:C1= C9:NN= N:GOTO 1710
1590 IF (NN= 0)AND (N> 18)THEN 1680
1600 IF (ABS (N- NN)> 10)THEN 1680
1610 IF (ABS (N- NN)< 8)AND (ABS (N- NN)> 1)THEN 1680
1620 IF (INT (NN/ 9)= (NN/ 9))AND (N= NN+ 1)THEN 1680
1630 IF (INT (NN/ 9)= (NN/ 9))AND (N= NN- 8)THEN 1680
1640 N1= NN- 1
1650 IF (INT (N1/ 9)= (N1/ 9))AND (N= NN+ 8)THEN 1680
1660 IF (INT (N1/ 9)= (N1/ 9))AND (N= NN- 1)THEN 1680
1670 GOTO 1700
1680 GOSUB 4660:PRINT "ILLEGAL MOVE !!!!!!!"
1690 GOSUB 4660:GOSUB 4660:GOTO 1560
1700 R1= R9:C1= C9:NT= N:N= NN:GOSUB 3920:GOSUB 3990:BB= 0:GOSUB 4050:GOSUB 4340:NN= NT
1710 SZ= SZ+ 1
1720 N= NN:GOSUB 3920:GOSUB 4450:PLOT 6,38
1730 IF F(R1,C1)= PTHEN 3240
1740 F(R1,C1)= YR
1750 N= NN:GOSUB 3920:GOSUB 4450
1760 PLOT 6,38
1770 IF NN> 81THEN 3480
1780 PLOT 6,38
1790 RETURN
1800 REM
1810 IF K1> = 1THEN 1860
1820 PLOT 6,38
1830 GOSUB 4660:PRINT "SORRY!   NONE LEFT !"
1840 FOR I= 1TO 1000:NEXT I
1850 RETURN
1860 K1= K1- 1
1870 PLOT 6,38,3,56,11:PRINT K1;" "
1880 GOSUB 2360
1890 Z1= F(R9,C9)
1900 GOSUB 3920
1910 IF Z1= PTHEN GO= 0:GOSUB 4150:GOTO 1940
1920 IF Z1= STHEN GO= 1:GOSUB 4150:GOTO 1940
1930 IF Z1= YRTHEN GOSUB 4450:GOTO 1940
1940 FOR I= 1TO 500:NEXT I
1950 IF GO= 1THEN PK= N
1960 IF N= NNTHEN RETURN
1970 GOSUB 3990:BB= 0:GOSUB 4050:GOSUB 4340
1980 RETURN
1990 REM
2000 IF R1* C1= 0THEN GOSUB 4660:PRINT "ROVER HASN'T STARTED":GOTO 2160
2010 Z1= 0
2020 FOR I= R1+ 1TO R
2030 IF F(I,C1)< > PTHEN 2050
2040 Z1= Z1+ 1
2050 NEXT I
2060 PLOT 6,38
2080 GOSUB 4660:PRINT Z1;" STOPS DOWNWARD   "
2090 Z1= 0
2100 FOR I= 1TO CL
2110 IF F(R1,I)< > PTHEN 2130
2120 Z1= Z1+ 1
2130 NEXT I
2140 GOSUB 3230
2150 GOSUB 4660:PRINT Z1;" STOPS IN THIS ROW"
2160 FOR I= 1TO 1000:NEXT I:RETURN
2170 REM
2180 GOSUB 3230
2190 IF M1> = 1THEN 2230
2200 GOSUB 4660:PRINT "SORRY!   NONE LEFT !"
2210 FOR I= 1TO 1000:NEXT I
2220 RETURN
2230 M1= M1- 1
2240 PLOT 6,38,3,56,10:PRINT M1;" "
2250 R9= R1
2260 GOSUB 2730
2270 REM
2280 RETURN
2290 REM
2300 GOSUB 3230
2310 IF NN< > 0THEN RETURN
2320 N= 90:NN= N:SP= 1
2330 GOSUB 2820
2340 NN= 0:SP= 0
2350 RETURN
2360 REM
2370 REM
2380 PLOT 6,38
2390 PLOT 15
2400 GOSUB 4660:INPUT "SQUARE NUMBER?";N
2410 PLOT 15
2420 N= INT (N)
2430 IF (N< 10)OR (N> 90)THEN 2500
2440 REM
2450 R9= 0:Q= N
2460 R9= R9+ 1:Q= Q- 9:IF Q< 10THEN 2480
2470 GOTO 2460
2480 C9= N- R9* 9
2490 RETURN
2500 GOSUB 4660:PRINT N;" NOT IN GRID"
2510 GOSUB 4660:GOSUB 4660:GOTO 2360
2520 REM
2530 FOR I= 1TO 3:GOSUB 3230:NEXT I
2540 Z9= 1
2550 PLOT 6,38
2560 FOR I= 1TO 4:GOSUB 3230:NEXT I
2570 PLOT 15
2580 GOSUB 4660:PRINT "GAME IS OVER        "
2590 PLOT 15
2600 FOR I= 1TO 1000:NEXT I
2610 N= NN
2620 GOTO 3340
2630 REM
2640 REM
2650 REM
2660 REM
2670 GOSUB 3230
2680 N= PK
2690 Z9= 0
2700 GOSUB 2420
2710 GOSUB 1580
2720 RETURN
2730 REM
2740 IF NN< > 0THEN 2820
2750 PLOT 6,38
2760 GOSUB 3230
2770 GOSUB 4660:PRINT "ROVER HASN'T STARTED"
2780 PLOT 15
2790 FOR I= 1TO 1000:NEXT I
2800 M1= M1+ 1:R1= R9
2810 RETURN
2820 IF SP= 1THEN NZ= 90:N= 90:GOTO 2840
2830 NZ= NN
2840 IF INT (NZ/ 9)= (NZ/ 9)THEN 2860
2850 NZ= NZ+ 1:GOTO 2840
2860 REM
2870 NY= NZ
2880 NX= N
2890 X9= 1
2900 Z8= 0
2910 FOR II= 10TO NY
2920 Z8= Z8+ 1:IF Z8> 9THEN Z8= 1:X9= X9+ 1
2930 N= II
2940 Y9= II- X9* 9
2950 Z1= F(X9,Y9)
2960 IF Z1< > STHEN 2990
2970 GOSUB 3920:GOSUB 3990:GO= 1:GOSUB 4150
2980 GOTO 3080
2990 IF Z1< > PTHEN 3020
3000 GOSUB 3920:GOSUB 3990:GO= 0:GOSUB 4150
3010 GOTO 3080
3020 IF Z1< > YRTHEN 3050
3030 GOSUB 3920:GOSUB 4450
3040 GOTO 3080
3050 REM
3060 OO= 1
3070 GOTO 3030
3080 NEXT II
3090 IF SP= 1THEN 3120
3100 TT= INT ((NN- 1)/ 9):TT= TT* 500
3110 FOR I= 1TO TT:NEXT I
3120 NY= NZ
3130 FOR II= NYTO 10STEP - 1
3140 N= II
3150 IF N< > NNTHEN 3180
3160 IF SP= 1THEN 3180
3170 GOTO 3190
3180 GOSUB 3920:GOSUB 3990:BB= 0:GOSUB 4050:GOSUB 4340
3190 NEXT II
3200 N= NX
3210 PLOT 6,38
3220 RETURN
3230 GOSUB 4660:PRINT "                    ":RETURN
3240 REM
3250 Z9= 1
3260 PLOT 6,38
3270 FOR I= 1TO 4:GOSUB 3230:NEXT I
3280 GOSUB 4660:PRINT "     WHOOPS !!!     "
3290 GOSUB 4660:PRINT "ROVER LANDED ON A   "
3300 GOSUB 4660:PRINT "STOP SQUARE. GAME IS"
3310 GOSUB 4660:PRINT "OVER.               "
3320 FOR I= 1TO 4:GOSUB 3230:NEXT I
3330 FOR I= 1TO 1000:NEXT I
3340 OO= 1:GOSUB 3920:GOSUB 4450:OO= 0
3350 FOR I= 1TO 8:GOSUB 3230:NEXT I
3360 PLOT 15
3370 GOSUB 4660:INPUT "FINAL MAP (Y/N)?";M$
3380 PLOT 15
3390 IF LEFT$ (M$,1)= "Y"THEN 3410
3400 RETURN
3410 FOR I= 1TO 500:NEXT I
3420 SP= 1
3430 IF R1* C1= 0THEN 3460
3440 F(R1,C1)= XR
3450 R9= R
3460 GOSUB 2730
3470 RETURN
3480 REM
3490 Z9= 1
3500 PLOT 6,38
3510 FOR I= 1TO 4:GOSUB 3230:NEXT I
3520 GOSUB 4660:PRINT "HOORAY! ROVER ROBOT "
3530 GOSUB 4660:PRINT " MADE IT !          "
3540 FOR I= 1TO 4:GOSUB 3230:NEXT I
3550 FOR I= 1TO 2000:NEXT I
3560 OO= 2:GOSUB 3920:GOSUB 4450
3570 GOSUB 4660:INPUT "FINAL MAP (Y/N)?";M$
3580 IF LEFT$ (M$,1)= "Y"THEN 3600
3590 RETURN
3600 R9= R
3610 SP= 1
3620 GOSUB 2730
3630 RETURN
3640 RETURN
3650 FOR I= 1TO 1000:NEXT I:PLOT 6,2,15,27,11:END
3660 REM
3670 N= 10
3680 CC= 38
3690 XX= 2
3700 YY= 2
3710 FOR XX= 2TO 34STEP 4
3720 PLOT 6,CC
3730 PLOT 3,XX,YY:PRINT "neeo"
3740 YY= YY+ 1
3750 IF CC= 38OR CC= 14THEN C1= CC- 3:GOTO 3770
3760 C1= CC- 5
3770 PLOT 6,C1,3,XX,YY:PRINT N
3780 PLOT 6,CC
3790 PLOT 3,XX,YY:PRINT "a"
3800 PLOT 3,XX+ 3,YY:PRINT "b"
3810 N= N+ 1
3820 YY= YY+ 1
3830 PLOT 3,XX,YY:PRINT "lm"
3840 GOSUB 4590
3850 YY= YY- 2
3860 NEXT XX
3870 IF YY> 25THEN 3910
3880 XX= 2
3890 YY= YY+ 3
3900 GOTO 3710
3910 RETURN
3920 REM
3930 IF N< 10OR N> 90THEN N= 10
3940 NS= N
3950 YY= 3* INT ((N- 1)/ 9)- 1
3960 XX= 2+ 4* (N- (INT ((N- 10)/ 9)* 9)- 10):GOTO 3970
3970 N= NS
3980 RETURN
3990 REM
4000 IF INT ((N- 6)/ 4)= ((N- 6)/ 4)THEN CC= 38:GOTO 4040
4010 IF INT ((N- 7)/ 4)= ((N- 7)/ 4)THEN CC= 30:GOTO 4040
4020 IF INT ((N- 8)/ 4)= ((N- 8)/ 4)THEN CC= 14:GOTO 4040
4030 CC= 62
4040 RETURN
4050 REM
4060 REM
4070 REM
4080 REM
4090 PLOT 6,CC+ BB
4100 PLOT 3,XX,YY:PRINT "neeo"
4110 PLOT 3,XX,YY+ 1:PRINT "a"
4120 PLOT 3,XX+ 3,YY+ 1:PRINT "b"
4130 PLOT 3,XX,YY+ 2:PRINT "lm"
4140 RETURN
4150 REM
4160 REM
4170 REM
4180 REM
4190 IF GO= 0THEN CC= 8:GOTO 4210
4200 CC= 16
4210 PLOT 6,CC
4220 PLOT 3,XX,YY,32,32,32,32
4230 PLOT 3,XX,YY+ 2,32,32,32,32
4240 PLOT 29:IF GO= 1THEN PLOT 30:GOTO 4270
4250 PLOT 3,XX,YY+ 2,124,32,32,126
4260 PLOT 6,1,3,XX,YY,126:PLOT 3,XX+ 3,YY,124:PLOT 6,CC
4270 PLOT 31
4280 IF GO= 0THEN PLOT 6,14,3,XX,YY+ 1:PRINT "STOP":GOTO 4330
4290 PLOT 6,2
4300 PLOT 29:PLOT 3,XX,YY,116:PLOT 3,XX+ 3,YY,117
4310 PLOT 3,XX,YY+ 2,118:PLOT 3,XX+ 3,YY+ 2,119
4320 PLOT 6,21,3,XX,YY+ 1:PRINT " GO "
4330 RETURN
4340 REM
4350 REM
4360 REM
4370 REM
4380 PLOT 15
4390 IF CC= 38OR CC= 14THEN CD= CC- 3:GOTO 4410
4400 CD= CC- 5
4410 PLOT 6,CD
4420 PLOT 3,XX,YY+ 1:PRINT N
4430 PLOT 6,CC,3,XX,YY+ 1:PRINT "a"
4440 RETURN
4450 REM
4460 REM
4470 PLOT 6,70
4480 IF OO= 1THEN PLOT 6,65
4490 IF OO= 2THEN PLOT 6,66
4500 PLOT 3,XX,YY:PRINT " vw "
4510 PLOT 3,XX,YY+ 1:PRINT "q  p"
4520 PLOT 3,XX,YY+ 2:PRINT "baba"
4530 PLOT 6,112,3,XX+ 1,YY+ 1:PRINT "  "
4540 IF OO= 1THEN PLOT 6,72,3,XX+ 1,YY+ 1:PRINT "  "
4550 IF OO= 2THEN PLOT 6,80,3,XX+ 1,YY+ 1:PRINT "  "
4560 OO= 0
4570 PLOT 6,38
4580 RETURN
4590 REM
4600 IF CC= 38THEN CC= 30:GOTO 4640
4610 IF CC= 30THEN CC= 14:GOTO 4640
4620 IF CC= 14THEN CC= 62:GOTO 4640
4630 CC= 38
4640 REM
4650 RETURN
4660 REM
4670 A= CALL (1)
4680 PLOT 3,X,Y+ H- 1:PRINT SPC( W)""
4690 PLOT 3,X,Y+ H- 1
4700 RETURN