100 CLS:PRINT"PLEASE WAIT..."
110 DIMA(29,63),L(1,8),X,Y,XL,XP,YL,YP,NO,HX,LX,HY,LY,WN,ZE,MX,MY,NY,NX,N1,T2,T3,GN,P2,MC
115 MC=16863:REM CHANGE MC=1503 FOR COCO
120 GOTO500
124 A(Y,X)=WN:RETURN
126 A(Y,X)=ZE:RETURN
128 SET(X,Y,WN):RETURN
150 XL=X-WN:IFXL=N1 THENXL=HX
160 XP=X+WN:IFXP=MX THENXP=ZE
170 YL=Y-WN:IFYL=N1 THENYL=HY
180 YP=Y+WN:IFYP=MY THENYP=ZE
190 NO=POINT(XL,YL)+POINT(X,YL)+POINT(XP,YL)+POINT(XL,Y)+POINT(XP,Y)+POINT(XL,YP)+POINT(X,YP)+POINT(XP,YP)
200 ONL(POINT(X,Y),NO)GOSUB124,126
210 RETURN
230 I$="GENERATION: 0              "+CHR$(192):PRINT@P2,I$;
240 X=ZE:XL=HX:XP=X+WN:FORY=WN TO NY:YL=Y-WN:YP=Y+WN:GOSUB190:NEXTY
250 X=HX:XL=X-WN:XP=ZE:FORY=WN TO NY:YL=Y-WN:YP=Y+WN:GOSUB190:NEXTY
260 Y=ZE:YL=HY:YP=Y+WN:FORX=WN TO NX:XL=X-WN:XP=X+WN:GOSUB190:NEXTX
270 Y=HY:YL=Y-WN:YP=ZE:FORX=WN TO NX:XL=X-WN:XP=X+WN:GOSUB190:NEXTX
280 X=ZE:Y=ZE:GOSUB150:Y=HY:GOSUB150:X=HX:GOSUB150:Y=ZE:GOSUB150
290 FORY=WN TO NY:FORX=WN TO NX:XL=X-WN:XP=X+WN:YL=Y-WN:YP=Y+WN
300 NO=POINT(XL,YL)+POINT(X,YL)+POINT(XP,YL)+POINT(XL,Y)+POINT(XP,Y)+POINT(XL,YP)+POINT(X,YP)+POINT(XP,YP)
320 ONL(POINT(X,Y),NO)GOSUB124,126
410 NEXTX:POKEMC+Y,PEEK(MC+Y)-MX:NEXTY
420 CLSZE:PRINT@P2,I$;:PRINT@P2,"GENERATION:";GN;:GN=GN+WN
430 FORY=LY TO HY:FORX=LX TO HX
440 ONA(Y,X)GOSUB128
450 NEXTX,Y:GOTO240
500 HX=63:LX=0:HY=29:LY=0:WN=1:N1=-1:ZE=0:MX=64:MY=30
505 NY=28:NX=62
510 T2=2:T3=3:GN=1:P2=480
520 FORX=0TO1:FORY=0TO8:READNO:L(X,Y)=NO
525 NEXTY,X
530 CLS:PRINTTAB(6);"JOHN CONWAY'S LIFE":PRINT:PRINT"RUN THE R PENTOMINO (Y/N)?"
540 I$=INKEY$:IFI$=""THEN540
550 IFI$="Y"THENCLS0:FORNO=1TO5:READX,Y:SET(X,Y,WN):A(Y,X)=WN:NEXTNO:GOTO230
560 IFI$<>"N"THEN540
565 PRINT:PRINT"RUN THE GLIDER (Y/N)?"
570 I$=INKEY$:IFI$=""THEN570
575 IFI$="Y"THENCLS0:FORNO=1TO5:READX,Y:NEXTNO:FORNO=1TO5:READX,Y:SET(X,Y,WN):A(Y,X)=WN:NEXTNO:GOTO230
580 IFI$="N"THEN600
585 GOTO570
587 DATA0,0,0,1,0,0,0,0,0
588 DATA2,2,0,0,2,2,2,2,2
590 DATA31,10,32,10,31,11,30,11,31,12,32,25,33,26,33,27,32,27,31,27
600 CLS0
610 PRINT@448,"";
620 INPUT"X,Y:";X,Y
630 IFX=-1THENPRINT@448,"";:FORX=1TO32:PRINTCHR$(128);:NEXTX:GOTO230
640 SET(X,Y,WN):A(Y,X)=WN
650 PRINT@452,"       ";
660 GOTO610
