Nombres de core en flash
Nombres de core en flash
Hola,
En la descripción de la flash veo que los nombres de core se almacenan en $007100, 32 bytes por core, total 256 bytes.
Si abro el fichero zxuno.flash que va con ZesarUX, aunque supongo que un FLASH.ZX1 creado con .backup será igual, en esa dirección veo los nombres de los cores efectivamente, pero pasa una cosa curiosa: Por ejemplo el "Sam Coupe" tiene los caracters de "Sam Coupe" seguido 13 espacios, luego un ASCII 0, y luego otros 9 espacios, y así todos, en el byte 23 tienen el cero, en lugar de tenerlo justo detrás del últim carácter.
¿Hay alguna razón para rellenar con espacios o no hay ninguna? ¿Realmente se podría llegar hasta el caracter 32? ¿Que pasa si el nombre de un core tiene justo 32 caracteres y no cabe el 0? ¿Es posible o el máximo real son 31?
En la descripción de la flash veo que los nombres de core se almacenan en $007100, 32 bytes por core, total 256 bytes.
Si abro el fichero zxuno.flash que va con ZesarUX, aunque supongo que un FLASH.ZX1 creado con .backup será igual, en esa dirección veo los nombres de los cores efectivamente, pero pasa una cosa curiosa: Por ejemplo el "Sam Coupe" tiene los caracters de "Sam Coupe" seguido 13 espacios, luego un ASCII 0, y luego otros 9 espacios, y así todos, en el byte 23 tienen el cero, en lugar de tenerlo justo detrás del últim carácter.
¿Hay alguna razón para rellenar con espacios o no hay ninguna? ¿Realmente se podría llegar hasta el caracter 32? ¿Que pasa si el nombre de un core tiene justo 32 caracteres y no cabe el 0? ¿Es posible o el máximo real son 31?
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Nombres de core en flash
Se puede llegar hasta el caracter 32. Debido a un bug la flash inserta un 0 en el caracter 23. No debería haber ningún caracter a 0 en los 32 bytes del nombre. En las últimas versiones del firmware está solucionado el bug, pero vamos sólo se manifiesta a nivel interno, así que no merece la pena actualizar.
Re: Nombres de core en flash
O sea que lo correcto es rellenar de $20 hasta los 32 caracteres ¿no?antoniovillena escribió:Se puede llegar hasta el caracter 32. Debido a un bug la flash inserta un 0 en el caracter 23. No debería haber ningún caracter a 0 en los 32 bytes del nombre. En las últimas versiones del firmware está solucionado el bug, pero vamos sólo se manifiesta a nivel interno, así que no merece la pena actualizar.
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Nombres de core en flash
ExactoUto escribió: O sea que lo correcto es rellenar de $20 hasta los 32 caracteres ¿no?
Re: Nombres de core en flash
antoniovillena escribió:ExactoUto escribió: O sea que lo correcto es rellenar de $20 hasta los 32 caracteres ¿no?
Perfecto, gracias.
Estoy trabajando el el .COREUPGR por cierto, para poder actualizar un core que no sea el de Spectrum desde el propio Spectrum (con ROM rooted) y con cualquier fichero.
La idea es poder hacer
Código: Seleccionar todo
.COREUPGR <corenum> <file>
Código: Seleccionar todo
.COREUPGR 7 C64
Esos son los planes, que lo consiga o no depende sobre todo del tiempo que tenga para concentrarme en hacerlo, va bastante avanzado pero llevo semanas con ello, y aunque tiempo tengo, tiempo con la concentración necesaria que necesito, no mucho
Obviamente he partido de una mezcla del .UPGRADE y el .ROMSUPGR, pero tiene bastante más chicha que meterle
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Nombres de core en flash
¿Has tenido en cuenta que el nombre tenga espacios? Es que no sé si ESXDOS permite comillas en parámetros.
Re: Nombres de core en flash
La utilidad va a usar el nombre del fichero para el nombre del core, por hacerlo más sencillo (al menos en primera versión). Es decir, si flasheas el C64.ZX1 se llamará C64 y si flasheas el MSXBETA4.ZX1 se llamár MSXBETA4.antoniovillena escribió:¿Has tenido en cuenta que el nombre tenga espacios? Es que no sé si ESXDOS permite comillas en parámetros.
He intentado crear un fichero " PRUEBA" (con un espacio delante) y ESXDOS da error, por lo que entiendo que no será posible tener un fichero llamado "SPEC T25.ZX1", y si existe porque lo grabas desde un PC, va a dar error al hacer el FOPEN probablemente. En cualquier caso, tal y como está la utilidad dará error porque .COREUPGR 3 "PRUEBA 2.ZX1" son 3 parámetros: [3] , ["PRUEBA] y [2.ZX1"]
Esto es así porque ESXDOS no es que soporte comillas o no, es que no soporta "parámetros" en el sentido de tener un argc y argv, simplemente te pasa el string que va detrás del comando por lo que queda en tus manos soportar las comillas o no, y tal como está el programa ahora no las soporta.
Quizá en una futura versión meta un tercer parámetro <nombre del core> y en ese caso sí tenga que soportar comillas, pero vamos primero a por la primera versión
Acabo de compilar por primera vez y aparte de unos cuantos JR que voy a tener que cambiar a JP, solo había puesto un par de mnemonicos que no existen, ambos ADD DE, nnnn. Tengo que ver como hacer eso porque parece que no es tan sencillo, tampoco existen ADD HL, DE, ni ADD DE, HL...
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Nombres de core en flash
Hmmm... Entonces es add de,hl lo que tengo. probaré a darle la vuelta a la lógica , ¡gracias!antoniovillena escribió:add hl, de sí que existe
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Nombres de core en flash
Hombre, puedes usar macros como esta:Uto escribió:Hmmm... Entonces es add de,hl lo que tengo. probaré a darle la vuelta a la lógica , ¡gracias!antoniovillena escribió:add hl, de sí que existe
Código: Seleccionar todo
ex de, hl
add hl, de
ex de, hl