Ok...
Function the same as before. Changed the default grid density to 32 x 24
You may still choose the higher grid densities.
Choose 32 x 24 as a compromise, decently fast grid update vs grid complexity.
To just get to it. Press Enter, Enter after starting.
I've got the preliminary UI code for user choice of living cells but not the actual
selection code. See what's its going to look like but if you go that
Code: Select all
REM If a cell is ON and has fewer than two neighbors that are ON, it turns OFF
REM If a cell is ON and has either two or three neighbors that are ON, it remains ON.
REM If a cell is ON and has more than three neighbors that are ON, it turns OFF.
REM If a cell is OFF and has exactly three neighbors that are ON, it turns ON.
10 SCREEN $80
80 GOSUB 2000
90 P1=1:P2=2
100 C1=$05:C2 = $10
110 X = RND(-TI)
130 DIM GC%(2,GX,GY)
140 GOSUB 900 : REM INITGRID
150 GOSUB 300
155 GOSUB 400
160 GOSUB 300
165 IF LL = O THEN PRINT "NO LIVING CELLS !!! ":END
170 GOTO 155
199 GOTO 8000
REM INITGRID
200 COLOR 1,0:CLS:COLOR 1,11:LOCATE 2,2:PRINT " INITIALIZING "
202 LOCATE 3,2:PRINT " "
205 FOR X = 1 TO GX
210 FOR Y = 1 TO GY
211 IF Y=1 THEN LOCATE 4,2:PRINT " "
215 LOCATE 4,2:PRINT " X: ";
216 COLOR 7:PRINT X;" ";:COLOR 1:PRINT "Y: ";
218 COLOR 7:PRINT Y;:COLOR 1
220 GC%(P1,X,Y)= 0
230 J = INT(RND(1)*10)
240 IF J < 2 THEN GC%(P1,X,Y)= 1
250 NEXT Y
260 NEXT X
270 COLOR 1,0:CLS:RETURN
299 REM DRAWGRID
300 LOCATE 2,2:PRINT "DRAWING THE GRID "
305 FOR Y = 1 TO GY
310 FOR X = 1 TO GX
320 IF GC%(P1,X,Y) = 1 THEN CC = C1
330 IF GC%(P1,X,Y) = 0 THEN CC = C2
340 X1 = (X*XS)-XS:Y1=(Y*YS)-XS
350 RECT X1,Y1,X1+XS-1,Y1+YS-1,CC
355 IF GX<=64 THEN FRAME X1,Y1,X1+XS-1,Y1+YS-1,$8A
360 NEXT X
370 NEXT Y
380 RETURN
400 LOCATE 3,2:PRINT "UPDATING CORNER CELLS"
405 LL = 0
410 S = GC%(P1,2,1) + GC%(P1,1,2) + GC%(P1,2,2)
430 IF GC%(P1,1,1) = 1 AND S=2 OR S= 3 THEN GC%(P2,1,1)=1:LL=LL+1
440 IF GC%(P1,1,1) = 1 AND S<2 THEN GC%(P2,1,1)=0
450 IF GC%(P1,1,1) = 0 AND S=3 THEN GC%(P2,1,1)=1:LL=LL+1
460 IF GC%(P1,1,1) = 0 AND S< 3 THEN GC%(P2,1,1)=0
470 S = GC%(P1,GX-1,1) + GC%(P1,GX-1,2) + GC%(P1,GX,2)
480 IF GC%(P1,GX,1) = 1 AND S=2 OR S= 3 THEN GC%(P2,GX,1)=1:LL=LL+1
490 IF GC%(P1,GX,1) = 1 AND S<2 THEN GC%(P2,GX,1)=0
500 IF GC%(P1,GX,1) = 0 AND S=3 THEN GC%(P2,GX,1)=1:LL=LL+1
505 IF GC%(P1,GX,1) = 0 AND S< 3 THEN GC%(P2,GX,1)=0
510 S = GC%(P1,2,GY) + GC%(P1,1,GY-1) + GC%(P1,2,GY-1)
515 IF GC%(P1,1,GY) = 1 AND S=2 OR S= 3 THEN GC%(P2,1,GY)=1:LL=LL+1
520 IF GC%(P1,1,GY) = 1 AND S<2 THEN GC%(P2,1,GY)=0
525 IF GC%(P1,1,GY) = 0 AND S=3 THEN GC%(P2,1,GY)=1:LL=LL+1
530 IF GC%(P1,1,GY) = 0 AND S< 3 THEN GC%(P2,1,GY)=0
535 S = GC%(P1,GX-1,GY) + GC%(P1,GX-1,GY-1) + GC%(P1,GX,GY-1)
540 IF GC%(P1,GX,GY) = 1 AND S=2 OR S= 3 THEN GC%(P2,GX,GY)=1:LL=LL+1
550 IF GC%(P1,GX,GY) = 1 AND S<2 THEN GC%(P2,GX,GY)=0
555 IF GC%(P1,GX,GY) = 0 AND S=3 THEN GC%(P2,GX,GY)=1:LL=LL+1
560 IF GC%(P1,GX,GY) = 0 AND S<3 THEN GC%(P2,GX,GY)=0
565 LOCATE 3,2:PRINT "UPDATING OUTSIDE COLUMNS."
566 COLOR 1
568 LOCATE 6,2:PRINT "#LIVING CELLS:";
569 COLOR 7:PRINT LL:COLOR 1
570 X = 1
575 FOR Y = 2 TO GY - 1
580 S = GC%(P1,X,Y-1) + GC%(P1,X-1,Y-1)+GC%(P1,X+1,Y)
585 S = S + GC%(P1,X,Y+1) + GC%(P1,X+1,Y+1)
590 IF GC%(P1,X,Y) = 1 AND S=2 OR S= 3 THEN GC%(P2,X,Y)=1:LL=LL+1
595 IF S<2 THEN GC%(P2,X,Y)=0
600 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1
610 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
615 IF S>3 THEN GC%(P2,X,Y)=0
620 NEXT Y
625 X = GX
630 FOR Y = 2 TO GY - 1
635 S = GC%(P1,X-1,Y-1) + GC%(P1,X,Y-1)+GC%(P1,X-1,Y)
640 S = S + GC%(P1,X-1,Y+1) + GC%(P1,X,Y+1)
645 IF GC%(P1,X,Y) = 1 AND S=2 OR S= 3 THEN GC%(P2,X,Y)=1:LL=LL+1
650 IF S<2 THEN GC%(P2,X,Y)=0
655 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1
660 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
665 IF S>3 THEN GC%(P2,X,Y)=0
670 NEXT Y
685 LOCATE 3,2:PRINT "UPDATING TOP AND BOTTOM ROW.":COLOR 1
690 LOCATE 6,2:PRINT "#LIVING CELLS:";:COLOR 7:PRINT LL;:COLOR 1
695 Y = 1
700 FOR X = 2 TO GX - 1
705 S = GC%(P1,X-1,Y) + GC%(P1,X+1,Y)+GC%(P1,X-1,Y+1)
710 S = S + GC%(P1,X,Y+1) + GC%(P1,X+1,Y+1)
715 IF GC%(P1,X,Y) = 1 AND S=2 OR S= 3 THEN GC%(P2,X,Y)=1:LL=LL+1
720 IF S<2 THEN GC%(P2,X,Y)=0
725 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1
730 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
735 IF S>3 THEN GC%(P2,X,Y)=0
740 NEXT X
742 LOCATE 6,2:PRINT "#LIVING CELLS:";:COLOR 7:PRINT LL;:COLOR 1
745 Y = GY
750 FOR X = 2 TO GX - 1
755 S = GC%(P1,X-1,Y-1) + GC%(P1,X,Y-1)+GC%(P1,X+1,Y-1)
760 S = S + GC%(P1,X-1,Y) + GC%(P1,X+1,Y)
765 IF GC%(P1,X,Y) = 1 AND S=2 OR S= 3 THEN GC%(P2,X,Y)=1:LL=LL+1
770 IF S<2 THEN GC%(P2,X,Y)=0
775 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1
780 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
785 IF S>3 THEN GC%(P2,X,Y)=0
790 NEXT X
795 LOCATE 3,2:PRINT "BORDER IS DONE "
796 LOCATE 4,2 :PRINT "UPDATING CORE GRID"
800 LOCATE 6,2:PRINT "#LIVING CELLS:";CHR$($9D);LL;CHR$($05)
810 FOR Y = 2 TO GY-1
815 FOR X = 2 TO GX - 1
820 S = GC%(P1,X-1,Y-1) + GC%(P1,X,Y-1)+GC%(P1,X+1,Y-1)
825 S = S + GC%(P1,X-1,Y) + GC%(P1,X+1,Y)
830 S = S + GC%(P1,X-1,Y+1)+GC%(P1,X,Y+1)+GC%(P1,X+1,Y+1)
835 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1:GOTO 860
840 IF S<2 THEN GC%(P2,X,Y)=0:GOTO 860
845 IF S>3 THEN GC%(P2,X,Y)=0:GOTO 860
850 IF GC%(P1,X,Y) = 1 AND S=2 THEN GC%(P2,X,Y)=1:LL=LL+1:GOTO 860
855 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
860 NEXT X
865 LOCATE 5,2:PRINT " UPDATED ROW:";:COLOR 7:PRINT Y:COLOR 1
866 LOCATE 6,2::PRINT " LIVING CELLS:";:COLOR 7:PRINT LL:COLOR 1
870 NEXT Y
875 P3 = P1
880 P1 = P2
885 P2 = P3
890 CLS:RETURN
900 RECT 0,0,319,239,$10
905 COLOR 7,0:CLS:S=1
910 LOCATE 2,2:PRINT "1.";:COLOR 5:PRINT " RANDOM FILL OF CELLS";:COLOR 7
915 LOCATE 4,2:PRINT "2.";:COLOR 5:PRINT " USER SELECTION";:COLOR 7
916 LOCATE 7,2:PRINT "<";:COLOR 5: PRINT "ARROWS TO CHOOSE";:COLOR 7:PRINT ">";
917 LOCATE 9,2:COLOR 7:PRINT "<";:COLOR 5:PRINT "ENTER TO PROCEED";:COLOR 7
918 PRINT ">";
920 X = 4:GOTO 922
921 FRAME X,Y,X+200,Y + 11,$10
922 IF S=3 THEN S=1:IF S=0 THEN S=2
925 IF S = 2 THEN Y = 21
930 IF S = 1 THEN Y = 6
935 FRAME X,Y,X+200,Y + 11,1
940 GET K$:IF K$="" THEN 940
950 K = ASC(K$)
960 IF K=49 THEN S = 1:GOTO 921
970 IF K=50 THEN S = 2:GOTO 921
980 IF K=157 OR K=17 THEN S = S + 1:GOTO 921
990 IF K=145 OR K=29 THEN S = S - 1:GOTO 921
1000 IF K=27 THEN END
1005 IF K=13 THEN GOTO 1020
1010 GOTO 940
1020 FRAME X,Y,X+200,Y + 11,$10
1025 IF S = 1 THEN:GOSUB 200:RETURN
1030 CLS:COLOR 5
1035 LOCATE 2,1:PRINT " THE NEXT SCREEN IS MOSTLY BLANK !";
1040 LOCATE 4,1:PRINT " SELECT YOUR CELL WITH THE";:COLOR 7:PRINT" ARROW KEYS";
1045 COLOR 5:LOCATE 6,1:PRINT " TOGGLE ITS LIFE STATE WITH";:COLOR 7
1050 PRINT " SPACE BAR";:LOCATE 8,1:PRINT " ENTER ";:COLOR 5
1055 PRINT "PROCEEDS WITH THE GRID";:LOCATE 10,1:COLOR 7
1056 PRINT " ESC";:COLOR 5:PRINT" ABORTS PROGRAM";
1060 LOCATE 15,10:COLOR 7:PRINT "<";:COLOR 5:PRINT "ANY KEY TO CONTINUE";
1065 COLOR 7:PRINT ">";
1070 PRINT:PRINT:GOSUB 8000:GOSUB 1800:END
1800 CLS:COLOR 7
1805 LOCATE 1,3:PRINT "MAKING ALL THE CELLS DEAD";
1805 FOR X = 1 TO GX
REM If a cell is ON and has fewer than two neighbors that are ON, it turns OFF
REM If a cell is ON and has either two or three neighbors that are ON, it remains ON.
REM If a cell is ON and has more than three neighbors that are ON, it turns OFF.
REM If a cell is OFF and has exactly three neighbors that are ON, it turns ON.
10 SCREEN $80
80 GOSUB 2000
90 P1=1:P2=2
100 C1=$05:C2 = $10
110 X = RND(-TI)
130 DIM GC%(2,GX,GY)
140 GOSUB 900 : REM INITGRID
150 GOSUB 300
155 GOSUB 400
160 GOSUB 300
165 IF LL = O THEN PRINT "NO LIVING CELLS !!! ":END
170 GOTO 155
199 GOTO 8000
REM INITGRID
200 COLOR 1,0:CLS:COLOR 1,11:LOCATE 2,2:PRINT " INITIALIZING "
202 LOCATE 3,2:PRINT " "
205 FOR X = 1 TO GX
210 FOR Y = 1 TO GY
211 IF Y=1 THEN LOCATE 4,2:PRINT " "
215 LOCATE 4,2:PRINT " X: ";
216 COLOR 7:PRINT X;" ";:COLOR 1:PRINT "Y: ";
218 COLOR 7:PRINT Y;:COLOR 1
220 GC%(P1,X,Y)= 0
230 J = INT(RND(1)*10)
240 IF J < 2 THEN GC%(P1,X,Y)= 1
250 NEXT Y
260 NEXT X
270 COLOR 1,0:CLS:RETURN
299 REM DRAWGRID
300 LOCATE 2,2:PRINT "DRAWING THE GRID "
305 FOR Y = 1 TO GY
310 FOR X = 1 TO GX
320 IF GC%(P1,X,Y) = 1 THEN CC = C1
330 IF GC%(P1,X,Y) = 0 THEN CC = C2
340 X1 = (X*XS)-XS:Y1=(Y*YS)-XS
350 RECT X1,Y1,X1+XS-1,Y1+YS-1,CC
355 IF GX<=64 THEN FRAME X1,Y1,X1+XS-1,Y1+YS-1,$8A
360 NEXT X
370 NEXT Y
380 RETURN
400 LOCATE 3,2:PRINT "UPDATING CORNER CELLS"
405 LL = 0
410 S = GC%(P1,2,1) + GC%(P1,1,2) + GC%(P1,2,2)
430 IF GC%(P1,1,1) = 1 AND S=2 OR S= 3 THEN GC%(P2,1,1)=1:LL=LL+1
440 IF GC%(P1,1,1) = 1 AND S<2 THEN GC%(P2,1,1)=0
450 IF GC%(P1,1,1) = 0 AND S=3 THEN GC%(P2,1,1)=1:LL=LL+1
460 IF GC%(P1,1,1) = 0 AND S< 3 THEN GC%(P2,1,1)=0
470 S = GC%(P1,GX-1,1) + GC%(P1,GX-1,2) + GC%(P1,GX,2)
480 IF GC%(P1,GX,1) = 1 AND S=2 OR S= 3 THEN GC%(P2,GX,1)=1:LL=LL+1
490 IF GC%(P1,GX,1) = 1 AND S<2 THEN GC%(P2,GX,1)=0
500 IF GC%(P1,GX,1) = 0 AND S=3 THEN GC%(P2,GX,1)=1:LL=LL+1
505 IF GC%(P1,GX,1) = 0 AND S< 3 THEN GC%(P2,GX,1)=0
510 S = GC%(P1,2,GY) + GC%(P1,1,GY-1) + GC%(P1,2,GY-1)
515 IF GC%(P1,1,GY) = 1 AND S=2 OR S= 3 THEN GC%(P2,1,GY)=1:LL=LL+1
520 IF GC%(P1,1,GY) = 1 AND S<2 THEN GC%(P2,1,GY)=0
525 IF GC%(P1,1,GY) = 0 AND S=3 THEN GC%(P2,1,GY)=1:LL=LL+1
530 IF GC%(P1,1,GY) = 0 AND S< 3 THEN GC%(P2,1,GY)=0
535 S = GC%(P1,GX-1,GY) + GC%(P1,GX-1,GY-1) + GC%(P1,GX,GY-1)
540 IF GC%(P1,GX,GY) = 1 AND S=2 OR S= 3 THEN GC%(P2,GX,GY)=1:LL=LL+1
550 IF GC%(P1,GX,GY) = 1 AND S<2 THEN GC%(P2,GX,GY)=0
555 IF GC%(P1,GX,GY) = 0 AND S=3 THEN GC%(P2,GX,GY)=1:LL=LL+1
560 IF GC%(P1,GX,GY) = 0 AND S<3 THEN GC%(P2,GX,GY)=0
565 LOCATE 3,2:PRINT "UPDATING OUTSIDE COLUMNS."
566 COLOR 1
568 LOCATE 6,2:PRINT "#LIVING CELLS:";
569 COLOR 7:PRINT LL:COLOR 1
570 X = 1
575 FOR Y = 2 TO GY - 1
580 S = GC%(P1,X,Y-1) + GC%(P1,X-1,Y-1)+GC%(P1,X+1,Y)
585 S = S + GC%(P1,X,Y+1) + GC%(P1,X+1,Y+1)
590 IF GC%(P1,X,Y) = 1 AND S=2 OR S= 3 THEN GC%(P2,X,Y)=1:LL=LL+1
595 IF S<2 THEN GC%(P2,X,Y)=0
600 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1
610 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
615 IF S>3 THEN GC%(P2,X,Y)=0
620 NEXT Y
625 X = GX
630 FOR Y = 2 TO GY - 1
635 S = GC%(P1,X-1,Y-1) + GC%(P1,X,Y-1)+GC%(P1,X-1,Y)
640 S = S + GC%(P1,X-1,Y+1) + GC%(P1,X,Y+1)
645 IF GC%(P1,X,Y) = 1 AND S=2 OR S= 3 THEN GC%(P2,X,Y)=1:LL=LL+1
650 IF S<2 THEN GC%(P2,X,Y)=0
655 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1
660 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
665 IF S>3 THEN GC%(P2,X,Y)=0
670 NEXT Y
685 LOCATE 3,2:PRINT "UPDATING TOP AND BOTTOM ROW.":COLOR 1
690 LOCATE 6,2:PRINT "#LIVING CELLS:";:COLOR 7:PRINT LL;:COLOR 1
695 Y = 1
700 FOR X = 2 TO GX - 1
705 S = GC%(P1,X-1,Y) + GC%(P1,X+1,Y)+GC%(P1,X-1,Y+1)
710 S = S + GC%(P1,X,Y+1) + GC%(P1,X+1,Y+1)
715 IF GC%(P1,X,Y) = 1 AND S=2 OR S= 3 THEN GC%(P2,X,Y)=1:LL=LL+1
720 IF S<2 THEN GC%(P2,X,Y)=0
725 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1
730 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
735 IF S>3 THEN GC%(P2,X,Y)=0
740 NEXT X
742 LOCATE 6,2:PRINT "#LIVING CELLS:";:COLOR 7:PRINT LL;:COLOR 1
745 Y = GY
750 FOR X = 2 TO GX - 1
755 S = GC%(P1,X-1,Y-1) + GC%(P1,X,Y-1)+GC%(P1,X+1,Y-1)
760 S = S + GC%(P1,X-1,Y) + GC%(P1,X+1,Y)
765 IF GC%(P1,X,Y) = 1 AND S=2 OR S= 3 THEN GC%(P2,X,Y)=1:LL=LL+1
770 IF S<2 THEN GC%(P2,X,Y)=0
775 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1
780 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
785 IF S>3 THEN GC%(P2,X,Y)=0
790 NEXT X
795 LOCATE 3,2:PRINT "BORDER IS DONE "
796 LOCATE 4,2 :PRINT "UPDATING CORE GRID"
800 LOCATE 6,2:PRINT "#LIVING CELLS:";CHR$($9D);LL;CHR$($05)
810 FOR Y = 2 TO GY-1
815 FOR X = 2 TO GX - 1
820 S = GC%(P1,X-1,Y-1) + GC%(P1,X,Y-1)+GC%(P1,X+1,Y-1)
825 S = S + GC%(P1,X-1,Y) + GC%(P1,X+1,Y)
830 S = S + GC%(P1,X-1,Y+1)+GC%(P1,X,Y+1)+GC%(P1,X+1,Y+1)
835 IF S=3 THEN GC%(P2,X,Y)=1:LL=LL+1:GOTO 860
840 IF S<2 THEN GC%(P2,X,Y)=0:GOTO 860
845 IF S>3 THEN GC%(P2,X,Y)=0:GOTO 860
850 IF GC%(P1,X,Y) = 1 AND S=2 THEN GC%(P2,X,Y)=1:LL=LL+1:GOTO 860
855 IF GC%(P1,X,Y) = 0 AND S< 3 THEN GC%(P2,X,Y)=0
860 NEXT X
865 LOCATE 5,2:PRINT " UPDATED ROW:";:COLOR 7:PRINT Y:COLOR 1
866 LOCATE 6,2::PRINT " LIVING CELLS:";:COLOR 7:PRINT LL:COLOR 1
870 NEXT Y
875 P3 = P1
880 P1 = P2
885 P2 = P3
890 CLS:RETURN
900 RECT 0,0,319,239,$10
905 COLOR 7,0:CLS:S=1
910 LOCATE 2,2:PRINT "1.";:COLOR 5:PRINT " RANDOM FILL OF CELLS";:COLOR 7
915 LOCATE 4,2:PRINT "2.";:COLOR 5:PRINT " USER SELECTION";:COLOR 7
916 LOCATE 7,2:PRINT "<";:COLOR 5: PRINT "ARROWS TO CHOOSE";:COLOR 7:PRINT ">";
917 LOCATE 9,2:COLOR 7:PRINT "<";:COLOR 5:PRINT "ENTER TO PROCEED";:COLOR 7
918 PRINT ">";
920 X = 4:GOTO 922
921 FRAME X,Y,X+200,Y + 11,$10
922 IF S=3 THEN S=1:IF S=0 THEN S=2
925 IF S = 2 THEN Y = 21
930 IF S = 1 THEN Y = 6
935 FRAME X,Y,X+200,Y + 11,1
940 GET K$:IF K$="" THEN 940
950 K = ASC(K$)
960 IF K=49 THEN S = 1:GOTO 921
970 IF K=50 THEN S = 2:GOTO 921
980 IF K=157 OR K=17 THEN S = S + 1:GOTO 921
990 IF K=145 OR K=29 THEN S = S - 1:GOTO 921
1000 IF K=27 THEN END
1005 IF K=13 THEN GOTO 1020
1010 GOTO 940
1020 FRAME X,Y,X+200,Y + 11,$10
1025 IF S = 1 THEN:GOSUB 200:RETURN
1030 CLS:COLOR 5
1035 LOCATE 2,1:PRINT " THE NEXT SCREEN IS MOSTLY BLANK !";
1040 LOCATE 4,1:PRINT " SELECT YOUR CELL WITH THE";:COLOR 7:PRINT" ARROW KEYS";
1045 COLOR 5:LOCATE 6,1:PRINT " TOGGLE ITS LIFE STATE WITH";:COLOR 7
1050 PRINT " SPACE BAR";:LOCATE 8,1:PRINT " ENTER ";:COLOR 5
1055 PRINT "PROCEEDS WITH THE GRID";:LOCATE 10,1:COLOR 7
1056 PRINT " ESC";:COLOR 5:PRINT" ABORTS PROGRAM";
1060 LOCATE 15,10:COLOR 7:PRINT "<";:COLOR 5:PRINT "ANY KEY TO CONTINUE";
1065 COLOR 7:PRINT ">";
1070 PRINT:PRINT:GOSUB 8000:GOSUB 1800:END
1800 CLS:COLOR 7
1805 LOCATE 9,3:PRINT "MAKING ALL THE CELLS DEAD";
1810 FOR X = 1 TO GX
1815 LOCATE 19,2:PRINT X;
1820 FOR Y = 1 TO GY
1825 GC%(P1,X,Y) = 0
1830 NEXT Y
1840 NEXT X
1850 LOCATE 11,3:PRINT "DONE WITH THE SLAUGHTER":PRINT
1855 INPUT X$
1860 RETURN
2000 IX = 3:COLOR 1,0:CLS
2020 IF IX > 5 THEN IX = 1
2025 IF IX < 1 THEN IX = 5
2030 IF IX = 5 THEN GX = 80:GY=60
2035 IF IX = 4 THEN GX = 64:GY=48
2040 IF IX = 3 THEN GX = 32:GY=24
2045 IF IX = 2 THEN GX = 16:GY=12
2050 IF IX = 1 THEN GX = 8:GY = 6
2055 XS = 320/GX:YS=240/GY
2060 RECT 0,0,319,239,$10
2065 FRAME 0,0,319,239, $01
2070 FOR X = XS TO 320-XS STEP XS
2075 LINE X,0,X,239,$01
2080 NEXT X
2085 FOR Y = YS TO 240-YS STEP YS
2090 LINE 0,Y,319,Y,$01
2095 NEXT Y
2100 COLOR 1,11
2102 LOCATE 2,2:PRINT " ";
2105 LOCATE 3,2:PRINT " ";
2110 LOCATE 4,2:PRINT " ";
2115 LOCATE 5,2:PRINT " ";
2120 LOCATE 6,2:PRINT " ";
2135 LOCATE 3,3:PRINT "CHANGE GRID DENSITY";:COLOR 7:PRINT " <ARROW KEYS>"
2140 COLOR 1:LOCATE 4,3:PRINT "CURRENT: ";
2142 COLOR 7:PRINT GX;:COLOR 1:PRINT " X ";:COLOR 7:PRINT GY;
2145 COLOR 7:LOCATE 6,3:PRINT "<";:COLOR 5:PRINT "ENTER TO CHOOSE";:COLOR 7
2146 PRINT ">";
2150 GET K$
2155 K = ASC(K$)
2160 IF K=157 OR K=17 THEN IX = IX + 1:GOTO 2020
2165 IF K=145 OR K=29 THEN IX = IX - 1:GOTO 2020
2170 IF K=13 THEN COLOR 1,0:CLS:RETURN
2175 IF K=27 THEN END
2180 GOTO 2150
8000 GET X$:IF X$<>"" THEN GOTO 8000 : REM FLUSH KEYBOARD BUFFER
8010 GET X$:IF X$="" THEN GOTO 8010 : REM WAIT FOR KEY
8020 RETURN