10 DIM F$(20,30) 20 DIM N$(20,30) 30 LET INIT=.5 40 LET F=.02 50 LET P=.05 60 PRINT AT 0,1;"[FOREST FIRE FOR ROSETTA CODE]" 70 FOR I=0 TO 21 80 PRINT AT I,0;"[ ]" 90 PRINT AT I,31;"[ ]" 100 NEXT I 110 FOR I=1 TO 30 120 PRINT AT 21,I;"[ ]" 130 NEXT I 140 LET G=0 150 LET T=0 160 PRINT AT 21,1;"[GENERATION 0]" 170 PRINT AT 21,20;"[COVER]" 180 FOR I=1 TO 20 190 FOR J=1 TO 30 200 IF RND>=INIT THEN GOTO 240 210 PRINT AT I,J;"0" 220 LET F$(I,J)="0" 230 LET T=T+1 240 NEXT J 250 NEXT I 300 PRINT AT 21,26;"[ ]" 310 LET N=INT (.5+T/6) 320 GOSUB 1000 330 PRINT AT 21,26;I$;"[ PC]" 340 FOR I=1 TO 20 350 PRINT AT I,0;"[>]" 360 FOR J=1 TO 30 380 IF F$(I,J)<>"[a]" THEN GOTO 410 390 LET N$(I,J)=" " 400 GOTO 530 410 IF F$(I,J)<>" " THEN GOTO 433 420 IF RND<=P THEN LET N$(I,J)="0" 430 GOTO 530 433 LET N$(I,J)=CHR$ (1+CODE F$(I,J)) 437 IF N$(I,J)>"Z" THEN LET N$(I,J)="£" 440 FOR K=I-1 TO I+1 450 FOR L=J-1 TO J+1 460 IF K=0 OR L=0 OR K=21 OR L=21 THEN GOTO 480 470 IF F$(K,L)="[a]" THEN GOTO 510 480 NEXT L 490 NEXT K 500 GOTO 520 510 LET N$(I,J)="[a]" 520 IF RND<=F THEN LET N$(I,J)="[a]" 530 NEXT J 540 PRINT AT I,0;"[ ]" 550 NEXT I 552 LET G=G+1 554 LET N=G 556 GOSUB 1000 558 PRINT AT 21,12;I$ 560 LET T=0 570 FOR I=1 TO 20 575 PRINT AT I,31;"[<]" 580 FOR J=1 TO 30 590 IF N$(I,J)<>"[a]" AND N$(I,J)<>" " THEN LET T=T+1 600 NEXT J 610 LET F$(I)=N$(I) 620 PRINT AT I,1;F$(I) 625 PRINT AT I,31;"[ ]" 630 GOTO 300 1000 LET S$=STR$ N 1010 LET I$="" 1020 FOR K=1 TO LEN S$ 1030 LET I$=I$+CHR$ (128+CODE S$(K)) 1040 NEXT K 1050 RETURN