Bueno al lio, que esto le va a gustar a mas de uno
como podeis ver por los post previos el cpm "NO FUNCIONABA" ni en tarjetas mayores de 2Gb ni en tarjetas mixtas +3DOS/FAT32
pero esto ha cambiado
con mi reciente adquisicion de un DIVTIESUS, pues he estado jugando un poquillo con una tarjeta mixta a raiz del comando .go3e (que tambien he modificado, esto al final tambien lo explicaré)
he echo un cargador nuevo, basado en el cargador de Otivax pero que solo funciona en Interfaces DIVMMC, ya que como en el zxuno fallaba a veces, no compruebo que interface hay conectado y directamente cargo solo el driver DIVMMC (tambien modificado)
el driver DIVMMC ha sido modificado en estos dos parametros.
se la ha quitado que compruebe si esta funcionando en en DIVMMC, por si acaso le da por fallar esa comprobacion en el zxuno.
se comprueba si la firma de la particion PLUSIDEDOS esta en el sector 0
pero si no esta en el sector 0 se comprueba si esta en el sector 128 y si tampoco esta entonces da el error de particion no encontrada
ahora el LOADERD.BAS
que podeis bajar de aqui
https://mega.nz/file/6csi2BSZ#gElsBR3Lc ... xOhOKZ5NHU
es un unico fichero basic con un cargador en ensamblador dentro que puede estar en cualquier unidad y partición......
tiene bastantes cosas y usa rutinas de +DOS y de +IDE_DOS (+3e)
lo primero que hace es cambiar los colores, borrar la pantalla y escribir el mensaje usando las rutinas de la rom del BASIC.
hace una copia de la pantalla principal en la pantalla shadow y muestra la shadow para toquetear en toda la RAM
comprueba desde que unidad estamos cargando para saber si es A: B: C: D: etc
si es A o B asume que estamos en disquetera e intenta cargar el fichero S10CPM3.EMS desde A o B
pero si es otra unidad el fichero S10CPM3.EMS es cargado desde la particion CP/M
para lo cual hace lo siguiente
primero desmapea la particion en la cual esta de la unidad desde la que este cargando.
busca la particion CP/M en el disco duro y la mapea a la unidad desde la que se este cargando C: D:, etc
ahora carga el fichero S10CPM3.EMS desde la particion CP/M mapeada en la unidad y si lo carga bien seguimos, si no da error....
y ahora viene lo bueno.
uso una llamada del +IDE_3DOS llamada IDE_IDENTIFY para cargar los 512 bytes de la geometria del disco en #4000
y compruebo el numero de sectores del disco en CHS
si el numero de sectores es mayor de 16384, asumo que va a usar LBA como modo de acceso y modifico el Driver DIVMMC de Otivax desactivandole la rutina de multiplicacion de sectores con un RET en el inicio de la rutina ya que si no lo haria doble por eso no funciona en discos grandes
si el numero de sectores es menor dejo el DRIVER con su rutina original.
yo lo he probado con tres tarjetas, una de 2GB, otra de 4GB y otra de 8GB y en las tres me han funcionado a la primera tanto en el DIVTIESUS como en el ZXUNO.
todas las tarjetas me funcionan en los dos sistemas.
tambien las he probado en los emuladores Fuse y en es.pectrum ambos con resultados positivos
ahora solo falta que lo pruebe mas gente y me diga que tal va
el fichero LOADERD.BAS se puede copiar en cualquier particion de +3dos con el programa 3e de Mcleod
por ejemplo mi imagen de tarjeta la tengo en mi pc con windows en D: se llama zxmmc_fat.img
para ver las particiones +3dos uso el comando asi:
3e "d:\zxmmc_fat.img" showptable
que muestra una lista con las particiones y el numero que le corresponde a cada una
por ejemplo mi particion UTILS del workbench la tengo en el numero 71
para copiar el fichero LOADERD.BAS como CPM a dicha particion se haria con este comando
3e "d:\zxmmc_fat.img" put "LOADERD.BAS" "71:CPM"
donde:
3e es el comando 3e.exe
"d:\zxmmc_fat.img" es la ruta a mi imagen de la tarjeta sd en mi disco duro de windows
put es el comando para meter el fichero
"LOADERD.BAS" es el nombre del fichero que tengo en mi disco duro de windows en el mismo directorio donde tengo el 3e.exe
"71:CPM" 71: es el numero de la particion 3DOS dentro de la imagen de la SD y CPM es el nombre del fichero que quiero que se cree en dicha partición
luego para cargar el CPM basta con hacer el load "CPM" y tiene que tener el fichero "S10CPM3.EMS" dentro de la particion CP/M
ambos ficheros se copian en modo binario, el archivo LOADERD.BAS ya tiene la cabecera +3DOS no hay que volverla a añadir, el fichero "S10CPM3.EMS" tiene que ir sin ella.
--------------------------------------
ahora un poquito del DIVTIESUS
el comando go3e sin pausa lo podeis descargar de aqui
https://mega.nz/file/GAcUXI6Y#zZmt-jIhJ ... ISRiGhR_3I
dicho programa es de Mcleod/Ideafix y acabo de descrubir que los fuentes estan en su github, jajajaja
https://github.com/mcleod-ideafix/divtiesus_utils
la modificacion esta echa mediante desemsamblado, modificacion, re-emsamblado (no sabia que estaban los fuentes disponibles)
yo le he quitado el mensaje que imprime inserte tarjeta y pulse tecla, los cambios de color del borde, etc.
solo carga el fichero de la rom y la ejecuta. solo dará error si no encuentra el fichero de la rom en el directorio /bin
la idea del DIVTIESUS es que arranca en modo ESXDOS en la SD en FAT32 y al ejecutar el comando .go3e carga de la SD la rom del +3E en la memoria del DIVMMC y nos pide cambiar la tarjeta por la formateada a +3DOS para arrancar con la nueva tarjeta.
pero si tenemos una tarjeta mixta la cual no hay que cambiar, porque vamos a esperar...
entonces he modificado el .go3e para que cargue la rom directamente y la ejecute, al estar las dos particiones +3DOS y FAT32 a la vez en la tarjeta
----------------
NOTA IMPORTANTE
para que funcione tanto el +3DOS como FAT32 en la misma tarjeta
la firma PLUSIDEDOS de la particion +3DOS tiene que estar en el sector 128, algunos gestores de particiones crean la primera particion en el sector 2048,
aunque al ZX le da igual, si el sector 0 es una tabla de particiones de Disco el ZX va a escribir su firma en el sector 128 sin importarle lo que diga la tabla de particiones de donde empieza la particion 1.
para que no den problemas la utilidades 3e, strosaw etc, la tabla de particiones tiene que ser correcta.
osea si la tabla de particiones esta creada con windows y dice que la particion 1 (+3DOS) empieza en 2048, al ZX le va a dar igual porque no mira la tabla de particiones busca la firma en el sector 128, pero las utilidades de gestion de ficheros de windows si miran la tabla de particiones de la SD para localizar la particion +3DOS y debe coincidir que en la tabla de particiones ponga que empieza en el sector 128.
mas info sobre la creacion de discos compartidos en la web del proyecto +3e en español.
https://worldofspectrum.org/zxplus3e/es ... disks.html
y una vez abierta la caja de pandora id contando como os va y si habeis conseguido echarlo a andar en una tarjeta de mas de 2gb
ojo que creo que el nuevo limite esta en 16gb. con mas de 16gb dudo que funcione os dejo las pruebas a vosotros