Hola.
Le he estado echando un vistazo a esto y poniendo algo de debug en la implementación del FS, y parece que la copia siempre se rompe en el mismo sitio, independientemente de lo grande que sea el disco duro (imagen en mi caso). Veo esto en unix.c:
block_t totalDiskSize = 100000; /* TODO: get this number from the
actual hard drive */
Lo que limita el formateo a esa cantidad de bloques. Como cada bloque de este sistema de ficheros es de 512 bytes, eso supone unos 50MB si mis cuentas no están equivocadas. Por eso daba igual lo grande que fuera mi imagen, que siempre llegaba como mucho a tu directorio de ROMs: AS-AT
Lo ideal sería, como dice ahí, calcular el tamaño a partir del disco o la imagen. Luego por la tarde intento ver como se puede hacer de modo que funcione tanto en un dispositivo físico como en una imagen, supongo que con un fseek hasta el final o algo así.
De momento, si quieres puedes probar a cambiar ese totalDiskSize a un valor mayor y ver si así llega más adelante. Calcúlalo como tamaño del disco en bytes / 512, recompila (haz de nuevo make en el directorio unix) y prueba con el nuevo iecata (tienes que volver a formatear, que es lo que va a cambiar con el nuevo iecata).
He hecho una pequeña chapuza en el script para que te deje elegir el directorio de ROMs de cualquier sitio, de manera que si le pasas:
upload.sh /tmp/ROMS c64.img
meterá en el disco lo que hay a partir de /tmp/ROMS correctamente ajustando los paths (eliminando el /tmp/ROMS del directorio destino). No es muy elegante pero no se me ocurrió nada mejor.
Solo tienes que cambiar el comando find + awk que genera los comandos por esto:
find $INPUT_DIR -type f | \
sed -e "s%$INPUT_DIR[\/]*%%g" -e '/^ *$/d' | \
awk -F'/' -v inputDir="$INPUT_DIR" '{
for (i=1; i<NF; i++) {
print "mkdir",$i
print "cd",$i
}
printf("import %s/%s %s\n",inputDir, $0,$NF)
for (i=1; i<NF; i++) {
print "cd .."
}
}
END { print "q" } ' > $TMPFILE
Es decir, metemos un sed en medio que elimina la parte del INPUT_DIR (mas un / opcional al final) y también las líneas vacías que puedan quedar tras hacer esto. Por otro lado hay que pasar el INPUT_DIR al awk para que sepa recomponer el path origen del fichero.