Formatear tarjeta en FAT16 y que funcione con el core de BBC Micro

Responder
Vanfanel
Mensajes: 276
Registrado: 16 Oct 2016, 15:50

Formatear tarjeta en FAT16 y que funcione con el core de BBC Micro

Mensaje por Vanfanel » 28 Sep 2017, 03:02

Buenas zx-uneros!

Suelo usar una tarjeta de 4GB a FAT16 y una sola partición, y de ese modo vale para casi todos los cores (ZX Spectrum, MSX, Atari 800XL...)
Sin embargo, para que el core de BBC Micro lea bien el archivo BEEB.MMB, tengo que formatearla a FAT32... :veoestrellas:
Normalmente uso GPARTED o FDISK desde la consola, y he probado FAT16 "normal" (tipo número 6) y FAT16 "W95 LBA" (tipo número e), y luego le meto un "mkfs.vfat -F16", y funciona con todos los cores que soportan FAT16, menos con este del BBC Micro.
Así que, ¿sabeis que comandos de GNU/Linux puedo usar para formatearla a FAT16 de tal manera que el core de BBC Micro lea bien el BEEB.MMB?

Zup
Mensajes: 112
Registrado: 16 Sep 2016, 20:22

Re: Formatear tarjeta en FAT16 y que funcione con el core de BBC Micro

Mensaje por Zup » 28 Sep 2017, 07:30

Varias preguntas que se me ocurren...
- ¿El core de BBC realmente soporta FAT16? ¿Has probado con tarjetas de menos capacidad?
- Si mal no recuerdo, FAT16 tenía un límite de 2 gigas... tirando de calculadora, veo que para hacer un sistema FAT16 de 2 gigas el tamaño de cluster debe ser de 64K ¿eso es legal en FAT16? (parece que Microsoft lo admite) ¿Y si es legal, el core de BBC admite ese tamaño de cluster? (recuerdo que algunos cartuchos de NDS tenían problemas si el tamaño de clúster no era uno de los que admitían).
- Y, bueno, ya lo sabrás (y por eso formateas en Linux) que el fichero BEEB.MMB tiene que ser siempre el primero que se grabe a la tarjeta. No sé si habrá algún tipo de programa que reordene los ficheros y te pueda "recolocar" ese fichero, pero si vuelcas los ficheros a lo bruto (sin respetar el orden) el core no responderá.

Vanfanel
Mensajes: 276
Registrado: 16 Oct 2016, 15:50

Re: Formatear tarjeta en FAT16 y que funcione con el core de BBC Micro

Mensaje por Vanfanel » 28 Sep 2017, 11:57

@Zup:
-Se supone que sí que soporta FAT16, o eso dice aquí: viewtopic.php?f=43&t=145
Específicamente, Quest dice: "1- Formatear una SD (si no es muy grande, mejor) en FAT o FAT32, pero NO en formato rápido (en Windows, desmarcar la casilla de formato rápido). Esto es muy importante." De ahí deduzco yo que funciona en FAT16, y que yo sepa el mkfs.vfat de GNU/Linux no hace ese "formato rápido" de Windows sino que realmente formatea la partición.

-Voy a probar con otros tamaños de cluster a ver

-Sí, el fichero BEEB.MMB va el primero siempre, e incluso sincronizo el sistema de ficheros antes de meter lo demás. Para las pruebas en FAT16, lo que hago es meter sólo ese fichero, claro. SI no me funciona estando solo, malamente me va a funcionar junto con los demás.

Vanfanel
Mensajes: 276
Registrado: 16 Oct 2016, 15:50

Re: Formatear tarjeta en FAT16 y que funcione con el core de BBC Micro

Mensaje por Vanfanel » 28 Sep 2017, 16:38

Vale, me respondo a mí mismo: hay que crear una partición de un tamaño máximo de 1024M con fdisk, y luego usar mkdosfs con un tamaño de cluster de 64 sectores por cluster.
O sea, que creamos la partición con fdisk de tipo FAT16 normal (tipo número 6) de 1024M, y luego formateamos con:
sudo mkdosfs -s 64 -F 16 /dev/sdb1

Y funciona! De tal manera que ahora puedo usar la misma SD para los cores de ZX Spectrum. BBC Micro, Atari 800XL y MSX.

Zup
Mensajes: 112
Registrado: 16 Sep 2016, 20:22

Re: Formatear tarjeta en FAT16 y que funcione con el core de BBC Micro

Mensaje por Zup » 29 Sep 2017, 19:41

Perdón por tardar mucho...
Vanfanel escribió:hay que crear una partición de un tamaño máximo de 1024M con fdisk
El tamaño "natural" de cluster para menos de 1024 megas es 16K (es decir, 32 sectores).
Vanfanel escribió:y luego usar mkdosfs con un tamaño de cluster de 64 sectores por cluster.
Eso son 32K de tamaño de cluster. Es interesante, porque los tamaños máximos para sistemas de ficheros FAT16 serían algo menos de 1 giga (para 16K) o algo menos de dos gigas (para 32K). Ese "algo menos" viene porque hay ciertos números "mágicos" de cluster, un sistema FAT16 nunca puede tener los 65536 clústeres ocupados. Con las tarjetas no es problema, ya que nunca llegan a tener justo el tamaño que dicen.

Indirectamente te están diciendo que el tamaño máximo de partición (o de tarjeta) serían 2 gigas (tamaño de cluster 32K). Oficialmente (fuente: esta página de Microsoft), el tamaño máximo de partición FAT16 en una SD serían 4 gigas, pero ya hemos visto que el core no lo admite (¿has probado a crear una partición de 800 megas con tamaño de clúster 64K a ver si lo soporta?). Según la página que he enlazado, se podrían hacer tamaños superiores pero solo si el disco tiene sectores de 4K y casi ningún sistema operativo lo soportaría (excepción interesante... NT 4.0 lo soportaba años antes de que los discos migraran a 4K). Tengo curiosidad de si un Linux soportaría hacer ese tipo de burradas.

Probablemente el problema es que la "librería" (¿cómo se llaman esas cosas cuando se usan FPGAs?) que se encarga de las lecturas no tiene soporte para clusteres de 64K, y no puede leer una partición con esos datos.
Vanfanel escribió:Y funciona! De tal manera que ahora puedo usar la misma SD para los cores de ZX Spectrum. BBC Micro, Atari 800XL y MSX.
Bueno, yo creo que es más interesante tener las tarjetas de ZX Spectrum, MSX y PC separadas (porque cada una tiene ficheros "especiales" que deben ir en sitios específicos). La de BBC Micro puede compartir espacio con cualquier tarjeta excepto la de PC, pero las tarjetas son relativamente baratas (y las de pocos gigas incluso te las pueden dar algún pariente) como para tenerlas separadas.

Vanfanel
Mensajes: 276
Registrado: 16 Oct 2016, 15:50

Re: Formatear tarjeta en FAT16 y que funcione con el core de BBC Micro

Mensaje por Vanfanel » 29 Sep 2017, 20:32

@zup: no, no he probado particiones de 800MB con tamaño de cluster de 64KB, a ver si el fin de semana que viene con algo que tiempo me pongo a hacer esos experimentos diabólicos :D

A mi me parece práctico tener la misma SD para todos los cores posibles, porque así no la tengo que andar metiendo y sacando si quiere probar todas las versones del Manic Miner, por poner un ejemplo :P

Responder