Página 2 de 2

Re: ¿qué está mal en este código?

Publicado: 02 May 2017, 23:30
por antoniovillena
Uto escribió:Hmmm... estoy mirando un fichero FIRMWARE.ZX1 y aunque le sobra mucho espacio no parece que le sobre al final, al final parece que hay algo. Mirando el fuente veo varios pseudonemonicos BLOCK que colocan cosas en sitios específicos.

Esto hace que simplemente concatenar el prefirmware con el firmware y cortar a 16K probablemente no funcione. Imagino que algo parecido se podría hacer comprimiendo el firmware antes de concatenarlo, y luego descomprimiendolo en lugar de simplemente copiarlo en la ROM. No es que sea mucho más complicado, pero se puede hacer.

Ya por mera curiosidad ¿por qué? :-?
La razón de esos block es que las rutinas CargandoLeches necesitan van en una dirección fija que está casi al final. Para no dejar un hueco pequeño al final, rellené ese espacio con otra rutina (la de impresión), y así solo queda un bloque grande vacío.

Re: ¿qué está mal en este código?

Publicado: 03 May 2017, 12:31
por Uto
antoniovillena escribió:
Uto escribió:Hmmm... estoy mirando un fichero FIRMWARE.ZX1 y aunque le sobra mucho espacio no parece que le sobre al final, al final parece que hay algo. Mirando el fuente veo varios pseudonemonicos BLOCK que colocan cosas en sitios específicos.

Esto hace que simplemente concatenar el prefirmware con el firmware y cortar a 16K probablemente no funcione. Imagino que algo parecido se podría hacer comprimiendo el firmware antes de concatenarlo, y luego descomprimiendolo en lugar de simplemente copiarlo en la ROM. No es que sea mucho más complicado, pero se puede hacer.

Ya por mera curiosidad ¿por qué? :-?
La razón de esos block es que las rutinas CargandoLeches necesitan van en una dirección fija que está casi al final. Para no dejar un hueco pequeño al final, rellené ese espacio con otra rutina (la de impresión), y así solo queda un bloque grande vacío.
Entendido. Bueno, cuando tenga un rato haré una versión similar pero que use compresión con el firmware original, así seguramente me cabe el "preparche" y el firmware comprimido en menos de 16K (me tocará rellenar).

Le he estado dando vueltas y creo que incluso podría hacer que el preparche hiciera algunas funciones que hace mi firmware alternativo (como lo del sincronismo PAL y lo del asterisco para arrancar en modo rooted). El truco está en que una vez restauras el firmware original en la ROM meterle un trap a la RST $28 e interceptar determinadas escrituras de los registros del ZX-Uno (a SCANDBCTRL o MASTERCONF por ejemplo en el caso del segundo si el asterisco estaba pulsado al arrancar).

Re: ¿qué está mal en este código?

Publicado: 03 May 2017, 14:11
por chernandezba
Hola
Sin haber leído mucho de que va todo esto, pero como he visto referencias a ZEsarUX, me pregunto:

1) Por qué no puedes hacer debug con ZEsarUX?
2) Si lo que quieres es modificar el boot loader de zxuno, debes modificar el archivo zxuno_bootloader.rom. Si quieres modificar la bios u otras cosas (como el firmware divmmc) debes modificar zxuno.flash. Esta flash se puede modificar desde el propio zxuno siempre que habilites permisos para hacerlo (desde el menu de zesarux settings-storage-zxuno spi disk write)

Saludos

Re: ¿qué está mal en este código?

Publicado: 03 May 2017, 14:34
por Uto
Uto escribió:Hmmm... estoy mirando un fichero FIRMWARE.ZX1 y aunque le sobra mucho espacio no parece que le sobre al final, al final parece que hay algo. Mirando el fuente veo varios pseudonemonicos BLOCK que colocan cosas en sitios específicos.

Esto hace que simplemente concatenar el prefirmware con el firmware y cortar a 16K probablemente no funcione. Imagino que algo parecido se podría hacer comprimiendo el firmware antes de concatenarlo, y luego descomprimiendolo en lugar de simplemente copiarlo en la ROM. No es que sea mucho más complicado, pero se puede hacer.

Ya por mera curiosidad ¿por qué? :-?
Creo que te lo comenté en otro hilo, el breakpoint de PC=0000 no funciona en la BIOS, y tampoco PC=0003 (siguiente instruccion) ni nada parecido, solo se para cuando entras ya a la ROM de Spectrum. Lo mismo está arreglado en la última versión, yo es que desde que me hice el fork no actualizo, porque no me apetece mucho tener que parchear otra vez y recompilar.

Lo de parchear la flash no es un problema, de hecho tengo un firmwarepatch.exe que hace eso exactamente, parchear el zxuno.flash. Esto ha sido muy útil para poder trastear con el firmware sin jugarmela a brickear un ZX-Uno real (o al menos a tener que hacer recovery).

Re: ¿qué está mal en este código?

Publicado: 03 May 2017, 16:17
por chernandezba
Me suena... si, creo que es porque al hacer hard reset se desactivan los breakpoints, es un efecto secundario del cambio de modo turbo que hace la bios del zxuno. Me lo apuntaré para corregirlo.

En cuanto a tu parche, creo que puedes aplicarlo también a la versión 5 sin tener que modificar el archivo de parche. El comando "patch" tiene cienta inteligencia y es capaz de aplicar parches aunque el código se haya modificado (siempre modificaciones mínimas, claro)

Saludos

Re: ¿qué está mal en este código?

Publicado: 03 May 2017, 20:08
por chernandezba

Re: ¿qué está mal en este código?

Publicado: 05 May 2017, 11:44
por Uto
No consigo usar la compresión zx7. He intentado comprimir con el ejecutable que se usa para el firmware, y luego descomprimir con la rutina zx7bd que hay en el firmware también, pero algo no va bien . ¿Está lo que es el descompresor y el compresor en algun sitio desligado del ZX-Uno?

¿hay algún otro sistema de compresión spectrumiano?

Re: ¿qué está mal en este código?

Publicado: 05 May 2017, 12:16
por antoniovillena
Aquí tienes el original en el que me basé:
http://www.worldofspectrum.org/infoseek ... id=0027996

Ojo, son incompatibles a nivel binario, por lo que tendrás que cambiar tanto compresor como descompresor. Hay más sistemas de compresión pero este es el más sencillo con diferencia.
Uto escribió:No consigo usar la compresión zx7. He intentado comprimir con el ejecutable que se usa para el firmware, y luego descomprimir con la rutina zx7bd que hay en el firmware también, pero algo no va bien . ¿Está lo que es el descompresor y el compresor en algun sitio desligado del ZX-Uno?

¿hay algún otro sistema de compresión spectrumiano?

Re: ¿qué está mal en este código?

Publicado: 05 May 2017, 13:20
por Uto
antoniovillena escribió:Aquí tienes el original en el que me basé:
http://www.worldofspectrum.org/infoseek ... id=0027996
Gracias, le echo un ojo :-)