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

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

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

Mensaje por antoniovillena » 02 May 2017, 23:30

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.

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

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

Mensaje por Uto » 03 May 2017, 12:31

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

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

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

Mensaje por chernandezba » 03 May 2017, 14:11

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

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

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

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

Mensaje por Uto » 03 May 2017, 14:34

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

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

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

Mensaje por chernandezba » 03 May 2017, 16:17

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

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

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

Mensaje por chernandezba » 03 May 2017, 20:08

----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

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

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

Mensaje por Uto » 05 May 2017, 11:44

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?

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

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

Mensaje por antoniovillena » 05 May 2017, 12:16

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?

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

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

Mensaje por Uto » 05 May 2017, 13:20

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

Responder