Sobre implementación de archivo base de datos Arduino

Bueno. Si ha quedado ilustrativo mereció la pena el esfuerzo de hacerlo en excel ;).
Efectivamente, la tabla de índices está es inamovible. El proceso de aumentar espacio para índices no es difícil de dirimir, ya que tenemos almacenada la posición de inicio de bloques de datos, y sabiendo el número de índices válidos:

  if ( (_head.dataStart - HEAD_SIZE - (FPOINTER_SIZE * _head.filledRecords)) < FPOINTER_SIZE ) {
    _AumentaEspacioIndex();
  }

Evidentemente, para un tamaño pequeño de registro, este proceso se va a repetir con más frecuencia al agregar registros. Incluso ahora me doy cuenta de que si el tamaño registro es menor a cuatro bytes (lo que sería un mal uso de la librería por otra parte) se corromperían los datos al no abrirse suficiente espacio para un índice con una sola operación _AumentaEspacioIndex. La solución sería cambiar if por while, aunque como digo, usar la librería en esa situación sería un contrasentido. En cuanto a localizar el índice correspondiente al registro que vamos a mover, hay que hacer una búsqueda de dicho índice.