Compucolor.org – Virtual Media

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

0 GOTO 65000
1 CLEAR 100
2 PLOT 6,32,12,15,27,24
3 PLOT 6,54,2,0,0,242,0,127,127,127,127,0,0,0,255
10 PLOT 6,27:FOR I= 40TO 61:PLOT 3,I,19,32:NEXT I
12 FOR I= 61TO 40STEP - 1:PLOT 3,I,28,32:NEXT I
14 FOR J= 20TO 27:PLOT 3,40,J,32:NEXT J
16 FOR J= 27TO 20STEP - 1:PLOT 3,61,J,32:NEXT J
20 PLOT 6,9:FOR I= 40TO 61:PLOT 3,I,7,32:NEXT I
22 FOR I= 61TO 40STEP - 1:PLOT 3,I,16,32:NEXT I
24 FOR J= 8TO 15:PLOT 3,40,J,32:NEXT J
26 FOR J= 15TO 8STEP - 1:PLOT 3,61,J,32:NEXT J
99 PLOT 6,2,15,27,24
100 GOSUB 50000
102 X= 41:Y= 8:H= 8:W= 20:C= 1:GOSUB 64000
104 PLOT 6,25:FOR I= 1TO 8:GOSUB 60000:PRINT "ROVER               ":NEXT I
105 PLOT 6,46
106 FOR I= 1TO 8:GOSUB 60000:PRINT "               ROBOT":NEXT I
107 PLOT 6,35
108 FOR I= 1TO 8:GOSUB 60000:PRINT "     ROVERROBOT     ":NEXT I
120 X= 41:Y= 20:H= 8:W= 20:C= 1:GOSUB 64000
140 DIM F(9,9)
700 REM  ******** BEGINNING OF TRUE ROVER *********
705 REM
710 R= 9:CL= 9
712 NN= 0:OO= 0:SZ= 0
715 D$= "SCLMIE"
720 E$= "NRE"
725 P= 0:S= 1:YR= 2:XR= 3
728 GOSUB 30000
729 PLOT 6,38:FOR I= 1TO 8:GOSUB 39000:NEXT I
730 PLOT 14:GOSUB 60000:INPUT "INSTRUCTIONS (Y/N)?";Q$
731 PLOT 15
732 GOSUB 39000
735 IF LEFT$ (Q$,1)< > "Y"THEN 745
740 GOSUB 30118
742 PLOT 6,38
745 GOSUB 32000
747 PLOT 6,38
750 GOSUB 33000
757 PLOT 6,38
760 GOSUB 34000
761 PLOT 6,38:FOR I= 1TO 8:GOSUB 39000:NEXT I
763 PLOT 14
765 GOSUB 60000:INPUT "TRY ANOTHER GAME?";M$
766 PLOT 15
770 IF LEFT$ (M$,1)< > "Y"THEN 29999
775 REM  CLEAN UP BEFORE NEXT GAME
780 N= NN:GOSUB 51000:GOSUB 52000:BB= 0:GOSUB 53000:GOSUB 55000
785 PLOT 15,6,52,3,40,5:PRINT NN;" IN";SZ;" STEPS      "
790 GOTO 700
29999 PLOT 6,2,15,27,11:END
30000 REM  *** INSTRUCTIONS ***
30010 PLOT 6,14:FOR I= 1TO 4:GOSUB 39000:NEXT I
30020 PLOT 14
30100 GOSUB 60000:PRINT "    ROVER ROBOT     "
30105 PLOT 15
30110 FOR I= 1TO 4:GOSUB 39000:NEXT I
30115 FOR I= 1TO 200:NEXT I
30117 RETURN
30118 PLOT 15,6,38
30120 GOSUB 60000:PRINT "HELP ROVER CROSS THE"
30130 GOSUB 60000:PRINT "GRID. EACH SQUARE IS"
30140 GOSUB 60000:PRINT "EITHER GO OR STOP.  "
30150 GOSUB 60000:PRINT "ROVER CANNOT LAND ON"
30160 GOSUB 60000:PRINT "A STOP SQUARE. ROVER"
30170 GOSUB 60000:PRINT "MAY START ON ANY N0."
30180 GOSUB 60000:PRINT "IN ROW ONE (10-18). "
30182 GOSUB 39000
30185 FOR I= 1TO 10000:NEXT I
30190 GOSUB 60000:PRINT "HE'S TRYING TO GET  "
30200 GOSUB 60000:PRINT "TO THE BOTTOM ROW.  "
30300 GOSUB 60000:PRINT "YOU CAN CHECK ANY   "
30310 GOSUB 60000:PRINT "SQUARE TO SEE IF IT "
30320 GOSUB 60000:PRINT "IS GO OR STOP.  BUT "
30330 GOSUB 60000:PRINT "YOU CAN ONLY CHECK A"
30340 GOSUB 60000:PRINT "LIMITED NUMBER OF   "
30350 GOSUB 60000:PRINT "TIMES.  OK?         "
30360 FOR I= 1TO 10000:NEXT I
30370 GOSUB 60000:PRINT "YOU WILL ALSO GET A "
30380 GOSUB 60000:PRINT "MAP OPTION, TO SHOW "
30390 GOSUB 60000:PRINT "YOU WHERE ROVER HAS "
30400 GOSUB 60000:PRINT "BEEN AND ALL THE    "
30410 GOSUB 60000:PRINT "STOPS UP TO THE     "
30420 GOSUB 60000:PRINT "CURRENT ROW SO THAT "
30430 GOSUB 60000:PRINT "YOU MAY MOVE ROVER  "
30440 GOSUB 60000:PRINT "AROUND DEAD ENDS.   "
30450 FOR I= 1TO 10000:NEXT I
30460 GOSUB 60000:PRINT "BUT, YOU ONLY GET A "
30470 GOSUB 60000:PRINT "LIMITED NUMBER OF   "
30480 GOSUB 60000:PRINT "MAPS.  OK?          "
30490 GOSUB 60000:PRINT "                    "
30500 GOSUB 60000:PRINT "    HERE ARE THE    "
30510 GOSUB 60000:PRINT "COMMANDS AVAILABLE  "
30520 GOSUB 60000:PRINT "AND WHAT EACH ONE   "
30530 GOSUB 60000:PRINT "DOES.  THERE ARE 5. "
30535 FOR I= 1TO 10000:NEXT I
30540 GOSUB 60000:PRINT "                    "
30550 GOSUB 60000:PRINT "1. STEP (S)         "
30560 GOSUB 60000:PRINT "ROVER CAN MOVE TO A "
30570 GOSUB 60000:PRINT "TOUCHING SQUARE--   "
30580 GOSUB 60000:PRINT "HORIZONTAL,VERTICAL "
30590 GOSUB 60000:PRINT "OR DIAGONAL.  I'LL  "
30600 GOSUB 60000:PRINT "ASK FOR THE NUMBER  "
30610 GOSUB 60000:PRINT "OF THE SQUARE YOU   "
30620 GOSUB 60000:PRINT "WANT TO MOVE TO.    "
30630 FOR I= 1TO 10000:NEXT I
30640 GOSUB 60000:PRINT "2. CHECK (C)        "
30650 GOSUB 60000:PRINT "YOU MAY CHECK ANY   "
30660 GOSUB 60000:PRINT "SQUARE TO SEE IF IT "
30670 GOSUB 60000:PRINT "IS A GO OR STOP.I'LL"
30680 GOSUB 60000:PRINT "ASK FOR THE NUMBER  "
30690 GOSUB 60000:PRINT "OF THE SQUARE YOU   "
30700 GOSUB 60000:PRINT "WANT TO CHECK.      "
30710 GOSUB 60000:PRINT "LIMITED NUMBER CHECK"
30720 FOR I= 1TO 10000:NEXT I
30730 GOSUB 60000:PRINT "3. LOOK (L)         "
30740 GOSUB 60000:PRINT "YOU MAY LOOK AT THE "
30750 GOSUB 60000:PRINT "NUMBER OF STOPS     "
30760 GOSUB 60000:PRINT "STRAIGHT AHEAD FROM "
30770 GOSUB 60000:PRINT "WHERE ROVER IS TO   "
30780 GOSUB 60000:PRINT "THE LAST ROW AND THE"
30790 GOSUB 60000:PRINT "NUMBER OF STOPS IN  "
30800 GOSUB 60000:PRINT "THE NEXT ROW.ANYTIME"
30810 FOR I= 1TO 10000:NEXT I
30820 GOSUB 60000:PRINT "4. MAP (M)          "
30830 GOSUB 60000:PRINT "DRAWS A MAP FROM ROW"
30840 GOSUB 60000:PRINT "1 TO CURRENT ROW    "
30850 GOSUB 60000:PRINT "SHOWING ROVER'S PATH"
30860 GOSUB 60000:PRINT "AND EVERY GO OR STOP"
30870 GOSUB 60000:PRINT "SQUARE IN THOSE ROWS"
30880 GOSUB 60000:PRINT "LIMITED NUMBER MAPS "
30890 GOSUB 60000:PRINT "                    "
30900 FOR I= 1TO 10000:NEXT I
30910 GOSUB 60000:PRINT "5. END (E)          "
30920 GOSUB 60000:PRINT "TO END THE GAME.    "
30950 GOSUB 60000:PRINT "                    "
30960 GOSUB 60000:PRINT "                    "
30990 FOR I= 1TO 2000:NEXT I
30999 RETURN
32000 REM  *** SUBROUTINE TO INITIALIZE GRID, CHECKS, MAPS
32100 PLOT 6,38:GOSUB 39000
32105 PLOT 14
32110 GOSUB 60000:PRINT "WHICH GRID DO YOU   "
32115 PLOT 15:GOSUB 39000:PLOT 14
32120 GOSUB 60000:PRINT "WANT....NOVICE,     "
32125 PLOT 15:GOSUB 39000:PLOT 14
32130 GOSUB 60000:PRINT "REGULAR OR EXPERT?  "
32135 PLOT 15:GOSUB 39000:PLOT 14
32140 GOSUB 60000:INPUT " (N,R,E)";M$
32145 PLOT 15
32150 IF LEFT$ (M$,1)= "N"THEN L1= 1:GOTO 32190
32160 IF LEFT$ (M$,1)= "R"THEN L1= 2:GOTO 32190
32170 IF LEFT$ (M$,1)= "E"THEN L1= 3:GOTO 32190
32175 GOTO 32100
32190 REM
32192 PLOT 14,31,6,57,3,40,3
32194 IF L1= 1THEN PRINT "        NOVICE        "
32196 IF L1= 2THEN PRINT "        REGULAR       "
32198 IF L1= 3THEN PRINT "        EXPERT        "
32200 P1= 0
32205 PLOT 15
32210 Z1= .8- L1/ 10
32215 J= PEEK (33209):FOR I= 0TO J:Q9= RND (1):NEXT I
32220 FOR I= 1TO R
32225 SC= 0
32230 FOR J= 1TO CL
32240 F(I,J)= INT (RND (1)+ Z1)
32250 IF F(I,J)= 1THEN SC= 0:GOTO 32270
32260 P1= P1+ 1:SC= SC+ 1
32262 IF SC> 3THEN SC= 0:P1= P1- 1:F(I,J)= 1
32270 NEXT J
32280 NEXT I
32290 FOR I= 1TO CL
32300 IF (F(R- 2,I)= P)OR (F(R- 1,I)= P)OR (F(R,I)= P)THEN 32330
32310 F(R- 2+ INT (3* RND (1)),I)= P
32320 P1= P1+ 1
32330 NEXT I
32340 K1= INT (P1/ 3)
32350 M1= INT (P1/ 10)
32360 Z9= 0
32999 RETURN
33000 REM  *** SUBROUTINE TO FIND A GO STARTING POSITION AND
33010 REM      GIVE INFO
33100 R1= 0:C1= 0
33110 PLOT 6,38
33120 GOSUB 39000
33130 PLOT 14
33140 GOSUB 60000:INPUT "LIKE A HINT (Y/N) ?";M$
33145 PLOT 15
33150 IF LEFT$ (M$,1)< > "Y"THEN 33205
33160 Z1= INT (9* RND (1)+ 1)
33165 N= Z1+ 9
33166 PK= N:GO= 1
33170 IF F(1,Z1)= STHEN 33200
33180 F(1,Z1)= S
33190 P1= P1- 1
33200 GOSUB 51000:GOSUB 52000:BB= 64:GOSUB 53000
33202 FOR I= 1TO 1000:NEXT I
33204 BB= 0:GOSUB 53000
33205 PLOT 6,33,3,41,8:PRINT "COMMANDS      # LEFT"
33206 PLOT 6,25,3,41,9:PRINT " STEP (S)           "
33207 PLOT 3,41,10:PRINT "                    "
33210 PLOT 3,41,10:PRINT " MAP (M)       ";M1
33213 PLOT 3,41,11:PRINT "                    "
33215 PLOT 3,41,11:PRINT " CHECK (C)     ";K1
33220 PLOT 3,41,12:PRINT " LOOK (L)           "
33222 PLOT 3,41,13:PRINT " END (E)            "
33225 PLOT 3,41,14:PRINT "                    "
33230 PLOT 3,41,15:PRINT "THERE ARE ";P1;" STOPS "
33999 RETURN
34000 REM  *** SUBROUTINE TO PROCESS NEXT COMMAND
34100 PLOT 6,38
34110 GOSUB 39000
34115 PLOT 14
34120 GOSUB 60000:INPUT "NEXT COMMAND ?";M$
34125 PLOT 15
34126 GOSUB 39000
34130 IF LEFT$ (M$,1)= "S"THEN I= 1:GOTO 34300
34140 IF LEFT$ (M$,1)= "C"THEN I= 2:GOTO 34300
34150 IF LEFT$ (M$,1)= "L"THEN I= 3:GOTO 34300
34160 IF LEFT$ (M$,1)= "M"THEN I= 4:GOTO 34300
34170 IF LEFT$ (M$,1)= "#"THEN I= 5:GOTO 34300
34180 IF LEFT$ (M$,1)= "E"THEN I= 6:GOTO 34300
34182 IF LEFT$ (M$,1)= "0"THEN GOSUB 36000:GOTO 34310
34190 GOSUB 60000:PRINT "WHAT DID YOU SAY?   "
34200 GOTO 34120
34300 ON IGOSUB 34400,34500,34600,34700,34800,35000
34310 IF Z9= 0THEN 34000
34399 RETURN
34400 REM  *** SUBROUTINE TO PROCESS STEP COMMAND ***
34410 GOSUB 34900
34415 IF (NN= 0)AND (N< 19)THEN R1= R9:C1= C9:NN= N:GOTO 34451
34417 IF (NN= 0)AND (N> 18)THEN 34440
34420 IF (ABS (N- NN)> 10)THEN 34440
34425 IF (ABS (N- NN)< 8)AND (ABS (N- NN)> 1)THEN 34440
34430 IF (INT (NN/ 9)= (NN/ 9))AND (N= NN+ 1)THEN 34440
34431 IF (INT (NN/ 9)= (NN/ 9))AND (N= NN- 8)THEN 34440
34432 N1= NN- 1
34435 IF (INT (N1/ 9)= (N1/ 9))AND (N= NN+ 8)THEN 34440
34436 IF (INT (N1/ 9)= (N1/ 9))AND (N= NN- 1)THEN 34440
34437 GOTO 34450
34440 GOSUB 60000:PRINT "ILLEGAL MOVE !!!!!!!"
34445 GOTO 34400
34450 R1= R9:C1= C9:NT= N:N= NN:GOSUB 51000:GOSUB 52000:BB= 0:GOSUB 53000:GOSUB 55000:NN= NT
34451 SZ= SZ+ 1
34452 N= NN:GOSUB 51000:GOSUB 56000:PLOT 6,38
34455 IF F(R1,C1)= PTHEN 39100
34460 F(R1,C1)= YR
34461 N= NN:GOSUB 51000:GOSUB 56000
34462 PLOT 6,38
34465 IF NN> 81THEN 39500:REM  *** MADE IT TO LAST ROW
34466 PLOT 6,38
34499 RETURN
34500 REM  *** SUBROUTINE TO PROCESS CHECK COMMAND ***
34510 IF K1> = 1THEN 34530
34511 PLOT 6,38
34515 GOSUB 60000:PRINT "SORRY!   NONE LEFT !"
34516 FOR I= 1TO 1000:NEXT I
34520 RETURN
34530 K1= K1- 1
34535 PLOT 6,38,3,56,11:PRINT K1;" "
34540 GOSUB 34900
34545 Z1= F(R9,C9)
34550 GOSUB 51000
34560 IF Z1= PTHEN GO= 0:GOSUB 54000:GOTO 34570
34565 IF Z1= STHEN GO= 1:GOSUB 54000:GOTO 34570
34566 IF Z1= YRTHEN GOSUB 56000:GOTO 34570
34570 FOR I= 1TO 500:NEXT I
34571 IF GO= 1THEN PK= N
34572 IF N= NNTHEN RETURN
34575 GOSUB 52000:BB= 0:GOSUB 53000:GOSUB 55000
34580 RETURN
34600 REM  *** SUBROUTINE TO PROCESS LOOK COMMAND ***
34605 IF R1* C1= 0THEN GOSUB 60000:PRINT "ROVER HASN'T STARTED":GOTO 34698
34610 Z1= 0
34620 FOR I= R1+ 1TO R
34630 IF F(I,C1)< > PTHEN 34650
34640 Z1= Z1+ 1
34650 NEXT I
34660 PLOT 6,38
34665 GOSUB 39000:GOSUB 39000
34670 GOSUB 60000:PRINT Z1;" STOPS DOWNWARD   "
34680 Z1= 0
34690 FOR I= 1TO CL
34691 IF F(R1,I)< > PTHEN 34693
34692 Z1= Z1+ 1
34693 NEXT I
34694 GOSUB 39000:GOSUB 39000
34696 GOSUB 60000:PRINT Z1;" STOPS IN THIS ROW"
34698 FOR I= 1TO 2000:NEXT I:RETURN
34700 REM  *** SUBROUTINE TO PROCESS MAP COMMAND ***
34702 GOSUB 39000
34710 IF M1> = 1THEN 34750
34720 GOSUB 60000:PRINT "SORRY!   NONE LEFT !"
34730 FOR I= 1TO 1000:NEXT I
34740 RETURN
34750 M1= M1- 1
34760 PLOT 6,38,3,56,10:PRINT M1;" "
34770 R9= R1
34780 GOSUB 38000
34785 GOSUB 39000
34790 RETURN
34800 REM  *** UNADVERTISED SUBROUTINE TO SNEAK A PEEK AT GRID***
34802 GOSUB 39000
34810 IF NN< > 0THEN RETURN
34820 N= 90:NN= N:SP= 1
34830 GOSUB 38100
34840 NN= 0:SP= 0
34899 RETURN
34900 REM  *** SUBROUTINE TO INPUT SQUARE NUMBER AFTER STEP OR
34901 REM      OR CHECK COMMAND
34902 PLOT 6,38
34903 PLOT 14
34905 GOSUB 60000:INPUT "SQUARE NUMBER?";N
34907 PLOT 15
34910 N= INT (N)
34915 IF (N< 10)OR (N> 90)THEN 34930
34916 REM  *** CONVERT NUMBER TO COORDINATES ***
34917 R9= 0:Q= N
34918 R9= R9+ 1:Q= Q- 9:IF Q< 10THEN 34920
34919 GOTO 34918
34920 C9= N- R9* 9
34929 RETURN
34930 GOSUB 60000:PRINT N;" NOT IN GRID"
34935 GOTO 34900
35000 REM  *** SUBROUTINE TO END GAME ***
35010 FOR I= 1TO 3:GOSUB 39000:NEXT I
35100 Z9= 1
35105 PLOT 6,38
35110 FOR I= 1TO 4:GOSUB 39000:NEXT I
35115 PLOT 14
35120 GOSUB 60000:PRINT "GAME IS OVER        "
35125 PLOT 15
35130 FOR I= 1TO 1000:NEXT I
35135 N= NN
35140 GOTO 39200
36000 REM  *** SHORTCUT ROUTINE TO PROCESS RETURN AS STEP TO
36010 REM      LAST SUCCESSFUL CHECK POSITION (I.E.,GO SQUARE)
36020 REM      WITHOUT HAVING TO ENTER S, RETURN AND THEN SQUARE
36030 REM      NUMBER
36040 GOSUB 39000
36100 N= PK
36105 Z9= 0
36110 GOSUB 34910
36120 GOSUB 34415
36200 RETURN
38000 REM  *** CONTINUATION OF MAP COMMAND PROCESSING ***
38010 IF NN< > 0THEN 38100
38015 PLOT 6,38
38020 GOSUB 39000:PLOT 14
38030 GOSUB 60000:PRINT "ROVER HASN'T STARTED"
38035 PLOT 15
38040 FOR I= 1TO 1000:NEXT I
38050 M1= M1+ 1:R1= R9
38060 RETURN
38100 IF SP= 1THEN NZ= 90:N= 90:GOTO 38110
38105 NZ= NN
38110 IF INT (NZ/ 9)= (NZ/ 9)THEN 38200
38120 NZ= NZ+ 1:GOTO 38110
38200 REM  NZ NOW EQUALS END OF LAST ROW ROBOT HAS ENTERED
38210 NY= NZ
38220 NX= N
38228 X9= 1
38229 Z8= 0
38230 FOR II= 10TO NY
38232 Z8= Z8+ 1:IF Z8> 9THEN Z8= 1:X9= X9+ 1
38240 N= II
38280 Y9= II- X9* 9
38400 Z1= F(X9,Y9)
38410 IF Z1< > STHEN 38500
38420 GOSUB 51000:GOSUB 52000:GO= 1:GOSUB 54000
38430 GOTO 38700
38500 IF Z1< > PTHEN 38600
38510 GOSUB 51000:GOSUB 52000:GO= 0:GOSUB 54000
38520 GOTO 38700
38600 IF Z1< > YRTHEN 38630
38610 GOSUB 51000:GOSUB 56000
38620 GOTO 38700
38630 REM  THIS SQUARE IS WHERE ROVER GOT STOPPED
38635 OO= 1
38640 GOTO 38610
38700 NEXT II
38702 IF SP= 1THEN 38800
38705 TT= INT ((NN- 1)/ 9):TT= TT* 500
38710 FOR I= 1TO TT:NEXT I
38800 NY= NZ
38810 FOR II= NYTO 10STEP - 1
38820 N= II
38825 IF N< > NNTHEN 38830
38826 IF SP= 1THEN 38830
38827 GOTO 38840
38830 GOSUB 51000:GOSUB 52000:BB= 0:GOSUB 53000:GOSUB 55000
38840 NEXT II
38850 N= NX
38855 PLOT 6,38
38860 RETURN
39000 GOSUB 60000:PRINT "                    ":RETURN
39100 REM  *** SUBROUTINE WHEN ROVER LANDS ON STOP ***
39105 Z9= 1
39107 PLOT 6,38
39110 FOR I= 1TO 4:GOSUB 39000:NEXT I
39112 GOSUB 60000:PRINT "     WHOOPS !!!     "
39115 GOSUB 60000:PRINT "ROVER LANDED ON A   "
39120 GOSUB 60000:PRINT "STOP SQUARE. GAME IS"
39125 GOSUB 60000:PRINT "OVER.               "
39130 FOR I= 1TO 4:GOSUB 39000:NEXT I
39135 FOR I= 1TO 1000:NEXT I
39200 OO= 1:GOSUB 51000:GOSUB 56000:OO= 0
39201 FOR I= 1TO 8:GOSUB 39000:NEXT I
39204 PLOT 14
39205 GOSUB 60000:INPUT "FINAL MAP (Y/N)?";M$
39206 PLOT 15
39210 IF LEFT$ (M$,1)= "Y"THEN 39250
39220 RETURN
39250 FOR I= 1TO 500:NEXT I
39255 SP= 1
39260 IF R1* C1= 0THEN 39300
39270 F(R1,C1)= XR
39280 R9= R
39300 GOSUB 38000
39310 RETURN
39500 REM  *** SUBROUTINE ROVER MADE IT TO LAST ROW ***
39510 Z9= 1
39515 PLOT 6,38
39520 FOR I= 1TO 4:GOSUB 39000:NEXT I
39530 GOSUB 60000:PRINT "HOORAY! ROVER ROBOT "
39540 GOSUB 60000:PRINT " MADE IT !          "
39550 FOR I= 1TO 4:GOSUB 39000:NEXT I
39560 FOR I= 1TO 2000:NEXT I
39562 OO= 2:GOSUB 51000:GOSUB 56000
39570 GOSUB 60000:INPUT "FINAL MAP (Y/N)?";M$
39580 IF LEFT$ (M$,1)= "Y"THEN 39600
39590 RETURN
39600 R9= R
39605 SP= 1
39610 GOSUB 38000
39620 RETURN
39999 RETURN
49999 FOR I= 1TO 1000:NEXT I:PLOT 6,2,15,27,11:END
50000 REM  *** SUBROUNTINE TO DRAW 9 X 9 GRID
50100 N= 10
50110 CC= 38
50120 XX= 2
50130 YY= 2
50200 FOR XX= 2TO 34STEP 4
50300 PLOT 6,CC
50320 PLOT 3,XX,YY:PRINT "neeo"
50410 YY= YY+ 1
50412 IF CC= 38OR CC= 14THEN C1= CC- 3:GOTO 50420
50414 C1= CC- 5
50420 PLOT 6,C1,3,XX,YY:PRINT N
50425 PLOT 6,CC
50426 PLOT 3,XX,YY:PRINT "a"
50435 PLOT 3,XX+ 3,YY:PRINT "b"
50440 N= N+ 1
50510 YY= YY+ 1
50534 PLOT 3,XX,YY:PRINT "lm"
50540 GOSUB 59000
50545 YY= YY- 2
50550 NEXT XX
50560 IF YY> 25THEN 50999
50600 XX= 2
50610 YY= YY+ 3
50630 GOTO 50200
50999 RETURN
51000 REM  *** SUBROUTINE TO FIND X AND Y FROM NUMBER 10 TO 90 **
51002 IF N< 10OR N> 90THEN GOSUB 60000:PRINT "     HELP!!!!!!     ":GOTO 29999
51005 NS= N
51100 YY= 3* INT ((N- 1)/ 9)- 1
51105 XX= 2+ 4* (N- (INT ((N- 10)/ 9)* 9)- 10):GOTO 51300
51300 N= NS
51999 RETURN
52000 REM  *** SUBROUTINE TO FIND COLOR OF GRID FROM NO. 10 TO 90
52100 IF INT ((N- 6)/ 4)= ((N- 6)/ 4)THEN CC= 38:GOTO 52999
52200 IF INT ((N- 7)/ 4)= ((N- 7)/ 4)THEN CC= 30:GOTO 52999
52300 IF INT ((N- 8)/ 4)= ((N- 8)/ 4)THEN CC= 14:GOTO 52999
52400 CC= 62
52999 RETURN
53000 REM  *** SUBROUTINE TO BLINK BORDER OF A GRID
53010 REM      COMING IN, C=COLOR, X AND Y ARE SET TO UPPER
53020 REM      LEFT HAND CORNER OF GRID, AND TO BLINK BB=64
53030 REM      TO NOT BLINK, COMING IN BB=0
53100 PLOT 6,CC+ BB
53200 PLOT 3,XX,YY:PRINT "neeo"
53210 PLOT 3,XX,YY+ 1:PRINT "a"
53220 PLOT 3,XX+ 3,YY+ 1:PRINT "b"
53230 PLOT 3,XX,YY+ 2:PRINT "lm"
53999 RETURN
54000 REM  *** SUBROUTINE TO CHANGE GRID TO GREEN FOR GO   OR
54010 REM      TO RED FOR STOP
54100 REM      COMING IN, GO=0 FOR STOP, 1 FOR GO
54110 REM                 X AND Y HAVE BEEN SET
54200 IF GO= 0THEN CC= 8:GOTO 54215:REM  RED FOR STOP
54210 CC= 16:REM  GREEN FOR GO
54215 PLOT 6,CC
54220 PLOT 3,XX,YY,32,32,32,32
54230 PLOT 3,XX,YY+ 2,32,32,32,32
54235 PLOT 31
54240 IF GO= 0THEN PLOT 6,14,3,XX,YY+ 1:PRINT "STOP":GOTO 54999
54250 PLOT 6,21,3,XX,YY+ 1:PRINT " GO "
54999 RETURN
55000 REM  *** SUBROUTINE TO RESTORE COLOR AND NUMBER OF 2
55010 REM      CENTER POSITIONS ONLY
55020 REM      COMING IN, X AND Y SET, COLOR SET AND BORDER HAS
55030 REM      HAS BEEN RESTORED
55040 PLOT 15
55100 IF CC= 38OR CC= 14THEN CD= CC- 3:GOTO 55115
55110 CD= CC- 5
55115 PLOT 6,CD
55200 PLOT 3,XX,YY+ 1:PRINT N
55210 PLOT 6,CC,3,XX,YY+ 1:PRINT "a"
55999 RETURN
56000 REM  SUBROUTINE TO PUT ROBOT IN A SPECIFIC GRID
56010 REM       COMING IN, X AND Y ARE SET
56100 PLOT 6,70
56110 IF OO= 1THEN PLOT 6,65
56115 IF OO= 2THEN PLOT 6,66
56200 PLOT 3,XX,YY:PRINT " vw "
56300 PLOT 3,XX,YY+ 1:PRINT "q  p"
56400 PLOT 3,XX,YY+ 2:PRINT "baba"
56500 PLOT 6,112,3,XX+ 1,YY+ 1:PRINT "  "
56510 IF OO= 1THEN PLOT 6,72,3,XX+ 1,YY+ 1:PRINT "  "
56515 IF OO= 2THEN PLOT 6,80,3,XX+ 1,YY+ 1:PRINT "  "
56516 OO= 0
56520 PLOT 6,38
56999 RETURN
59000 REM  *** SUBROUTINE TO CHANGE COLORS***
59100 IF CC= 38THEN CC= 30:GOTO 59200
59110 IF CC= 30THEN CC= 14:GOTO 59200
59120 IF CC= 14THEN CC= 62:GOTO 59200
59130 CC= 38
59200 REM
59999 RETURN
60000 REM  *** SUBROUTINE FOR SCROLLING ***
60100 A= CALL (0)
60110 PLOT 3,X,Y+ H- 1:PRINT SPC( W)""
60120 PLOT 3,X,Y+ H- 1
60999 RETURN
64000 GOSUB 65410
64010 Z= 28672+ 128* Y+ X+ X:AD= TM+ 2:GOSUB 65400
64015 Z= 128- W- W:AD= TM+ 25:GOSUB 65400
64020 POKE TM+ 5,H- 1:POKE TM+ 7,W* (C+ 1):POKE TM+ 19,35* (1- C)
64030 RETURN
64040 REM
65000 GOSUB 65410:RESTORE 65030
65030 DATA 33,-1,-1,6,-1,14,-1,17,128,0,25,126
65040 DATA 17,128,255,25,119,35,-1,13,194,-1,-1
65050 DATA 17,-1,-1,25,5,194,-1,-1,201
65055 IF TM> 65503THEN TM= TM- 32:GOTO 65080
65060 FOR I= 1TO 32:READ A
65065 IF A> = 0AND A< > PEEK (TM+ 1)THEN I= 32:TM= TM- 32
65070 NEXT
65080 RESTORE 65030
65090 FOR I= 1TO 32:READ A:POKE TM+ I,A- (A< 0):NEXT
65100 Z= TM+ 1:AD= 33283:GOSUB 65400
65110 Z= TM:AD= ER:GOSUB 65400
65120 Z= TM+ 6:AD= TM+ 30:GOSUB 65400
65130 Z= TM+ 8:AD= TM+ 22:GOSUB 65400
65190 CLEAR 25:GOTO 1
65400 ZZ= INT (Z/ 256):POKE AD,Z- 256* ZZ:POKE AD+ 1,ZZ:RETURN
65410 ER= 32940:TM= 256* PEEK (ER+ 1)+ PEEK (ER):RETURN
65500 END