Nombres de core en flash

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Nombres de core en flash

Mensaje por Uto » 25 Nov 2016, 23:11

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?

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nombres de core en flash

Mensaje por antoniovillena » 25 Nov 2016, 23:33

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.

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Nombres de core en flash

Mensaje por Uto » 25 Nov 2016, 23:38

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.
O sea que lo correcto es rellenar de $20 hasta los 32 caracteres ¿no?

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nombres de core en flash

Mensaje por antoniovillena » 26 Nov 2016, 02:17

Uto escribió: O sea que lo correcto es rellenar de $20 hasta los 32 caracteres ¿no?
Exacto

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Nombres de core en flash

Mensaje por Uto » 26 Nov 2016, 12:08

antoniovillena escribió:
Uto escribió: O sea que lo correcto es rellenar de $20 hasta los 32 caracteres ¿no?
Exacto

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>
 
Por ejemplo

Código: Seleccionar todo

 .COREUPGR 7 C64
 
Esto grabaría el fichero C64.ZX1 en el slot 7 de cores, y llamaría al core "C64". Adicionalmente, si el fichero C64.ZX1 no se encuentra en el path actual, lo busca en /CORES/.

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 :-D

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nombres de core en flash

Mensaje por antoniovillena » 26 Nov 2016, 14:13

¿Has tenido en cuenta que el nombre tenga espacios? Es que no sé si ESXDOS permite comillas en parámetros.

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Nombres de core en flash

Mensaje por Uto » 26 Nov 2016, 14:52

antoniovillena escribió:¿Has tenido en cuenta que el nombre tenga espacios? Es que no sé si ESXDOS permite comillas en parámetros.
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.

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 :-D

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...

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nombres de core en flash

Mensaje por antoniovillena » 26 Nov 2016, 15:55

add hl, de sí que existe

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Nombres de core en flash

Mensaje por Uto » 26 Nov 2016, 16:29

antoniovillena escribió:add hl, de sí que existe
Hmmm... Entonces es add de,hl lo que tengo. probaré a darle la vuelta a la lógica , ¡gracias!

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nombres de core en flash

Mensaje por antoniovillena » 26 Nov 2016, 16:33

Uto escribió:
antoniovillena escribió:add hl, de sí que existe
Hmmm... Entonces es add de,hl lo que tengo. probaré a darle la vuelta a la lógica , ¡gracias!
Hombre, puedes usar macros como esta:

Código: Seleccionar todo

        ex      de, hl
        add     hl, de
        ex      de, hl
Pero lo lógico es que te adaptes al algoritmo que tengas usando las mínimas instrucciones posibles.

Responder