function life ( m, n )

  k = 0;

  while ( true )
%
%  Initialize, or update.
%
    if ( k == 0 )
      board_old = zeros ( m, n );
      board_new = randi ( [ 0, 1 ], m, n );
    else
      board_old = board_new;
      board_new = life_step ( board_old );
    end
%
%  Print the current board.
%
    board_new
%
%  Count the number of changes, and who's alive.
%
    changes = sum ( sum ( ( board_new ~= board_old ) ) );
    alive = sum ( sum ( board_new ) );
    fprintf ( 'Step %d, Alive = %d, Changes = %d\n', k, alive, changes );
%
%  Terminate if no changes.
%
    if ( changes == 0 )
      fprintf ( 'No changes, terminate.\n' );
      break
    end

    pause
    k = k + 1;

  end

  return
end