Si te fijas index cuando tiene valor 2, entra al if inmediato, que lo que hace es cargar la palabra en el buffer, y actualizar el index a 0 nuevamente, lo mismo para buffer_index, cuando llega a 1024 no se utiliza como índice del arreglo sino que se lo actualiza a cero para que actúe como "circular".
por lo tanto nunca se llega a asignaciones
palabra[2] :=
o
buffer[1024] :=