Game of Life into one GW-BASIC program, listed 11-06-2005 10 ' conwaygw.bas - FreeWare 2005 20 GOTO 120 ' begin 30 SAVE "conwaygw.bas",A:LIST-120 40 GOTO 630 ' wait for key 50 GOTO 660 ' centered text 60 GOTO 680 ' line 1 70 GOTO 690 ' line 2 80 GOTO 720 ' line 3 90 GOTO 730 ' line 4 100 GOTO 760 ' reset zero 110 GOTO 1230 ' generate screen 120 SCREEN 9:CLS ' compile with screen 12 in QB or PB 130 DEFINT A-K,S-Z:DEFSTR M,Q:Q=MKI$(0):SH=120:SV=90 140 DIM U(SH,SV),V(SH,SV) 150 DATA 0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0 160 M(1)="GAME OF LIFE ideas by Hans Lauwerier" 170 M(2)="GW-BASIC by Eric Tchong" 180 M(3)="Press any key for this menu" 190 M(4)="<1> Traffic light in 8 steps" 200 M(5)="<2> Evolution of random cells" 210 M(6)="<3> Evolution of the R pentomino" 220 M(7)="<4> Glider gun in 150 generations" 230 M(8)="Choose 1..4 -1 = stop program " 240 FOR I=1 TO 8 250 GOSUB 50:IF I=3 OR I=7 THEN PRINT 260 NEXT 270 LOCATE 11,29:INPUT CH 280 IF CH=-1 THEN SCREEN 0,0,0:CLS:END 290 IF CH<1 OR CH>4 THEN 270 300 CLS:ON CH GOTO 320,830,950,1080 310 ' program 1 320 SH=20:SV=15:K=0:KMAX=8 ' was 16 330 WINDOW (3*SH-320,3*SV-240)-(3*SH+319,3*SV+239) 340 LINE (-4,-3)-(6*SH+4,6*SV+3),9,B:RESTORE 350 FOR J=SV/2+2 TO SV/2-2 STEP -1 360 FOR I=SH/2-2 TO SH/2+2 370 READ U(I,J) 380 IF U(I,J)=1 THEN GOSUB 60 ' line 1 390 NEXT 400 NEXT 410 WHILE K3 OR S<2 THEN GOSUB 70:V(I,J)=0 ' line 2 500 IF S0=0 AND S=3 THEN GOSUB 60:V(I,J)=1 ' line 1 510 NEXT 520 NEXT 530 FOR I=1 TO SH-1 540 FOR J=1 TO SV-1 550 U(I,J)=V(I,J) 560 IF U(I,J)=1 THEN GOSUB 60 ' line 1 570 NEXT 580 NEXT 590 K=K+1:LOCATE 1,1:PRINT K:GOSUB 40 600 WEND:GOSUB 100 ' reset zero 610 CLS:GOTO 240 620 ' wait for key 630 LSET Q=MKI$(0) 640 WHILE CVI(Q)=0:MID$(Q,1)=INKEY$:WEND:RETURN 650 ' centered text 660 X=(80-LEN(M(I)))/2:PRINT TAB(X) M(I):RETURN 670 ' line 1 680 LINE (6*I-1,6*J-1)-(6*I+1,6*J+1),10,BF:RETURN 690 ' line 2 700 LINE (6*I-1,6*J-1)-(6*I+1,6*J+1),0 ,BF:RETURN 710 ' line 3 720 LINE (4*I-1,4*J-1)-(4*I+1,4*J+1),10,BF:RETURN 730 ' line 4 740 LINE (4*I-1,4*J-1)-(4*I+1,4*J+1),0 ,BF:RETURN 750 ' reset zero 760 FOR I=1 TO SH-1 770 FOR J=1 TO SV-1 780 IF U(I,J)=1 THEN U(I,J)=0 790 NEXT 800 NEXT 810 RETURN 820 ' program 2 830 RANDOMIZE 11:PROC=20:SH=120:SV=90 840 K=1:KMAX=1000:P=PROC/100 850 WINDOW (2*SH-320,2*SV-240)-(2*SH+319,2*SV+239) 860 LINE (-4,-3)-(4*SH+4,4*SV+3),9,B 870 FOR I=1 TO SH-1 880 FOR J=1 TO SV-1 890 R=RND 900 IF R

3 OR S<2 THEN GOSUB 90:V(I,J)=0 ' line 4 1330 IF S0=0 AND S=3 THEN GOSUB 80:V(I,J)=1 ' line 3 1340 NEXT 1350 NEXT 1360 FOR I=1 TO SH-1 1370 FOR J=1 TO SV-1 1380 U(I,J)=V(I,J) 1390 IF U(I,J)=1 THEN GOSUB 80 ' line 3 1400 NEXT 1410 NEXT:K=K+1 1420 WEND:RETURN