Nuevas opciones debugger para ZEsarUX 4.1

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Avatar de Usuario
chernandezba
Mensajes: 831
Registrado: 02 Oct 2015, 23:35

Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por chernandezba » 17 Mar 2016, 18:50

Hola!

Bueno según petición popular... :plasplas:

He agregado nuevas condiciones de debug, entre ellas poder activar un punto de paro cuando se escribe en una dirección concreta, como por ejemplo en la rom. Estas nuevas pseudo variables del debugger tienen el siguiente significado:

MRV: value returned on read memory operation
MWV: value written on write memory operation
MRA: address used on read memory operation
MWA: address used on write memory operation
PRV: value returned on read port operation
PWV: value written on write port operation
PRA: address used on read port operation
PWA: address used on write port operation

Así , por ejemplo, una condición de breakpoint tipo:
MWA=32768
Hará saltar un breakpoint cuando hagamos un poke en la dirección 32768
Otro ejemplo:
MWA=32768 and MWV=100
Hará saltar un breakpoint cuando se haga este poke: POKE 32768,100
Otro mas:
MWA<16384
Hará saltar un breakpoint cuando se intente escribir en el espacio de la ROM
He agregado dos mas también:

TSTATES: t-states total in a frame
TSTATESL: t-states in a scanline

Y además hay otra novedad, se permiten agregar "watches", o sea, variables y registros que se muestran en pantalla en tiempo real, aún con el menú cerrado. El nombre "watches" es el mismo nombre que se le daba a la misma función en Turbo Pascal/Turbo C si no recuerdo mal.

Así pues, podemos meter un watch como:
A ROM BC

Que nos mostrará en pantalla el valor del registro A, el número de ROM mapeada y el registro BC

He subido un video demostrativo con todo esto:
https://youtu.be/UyFZ4qUtVik

Recordad como siempre que esto está en el último código fuente, que lo podréis ver cuando suba una nueva beta o para quien quiera compilarlo de código.

Si se os ocurre alguna condición mas que pueda agregar .... :silbando:

Saludos
César
----

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

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

Re: Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por chernandezba » 17 Mar 2016, 20:20

Actualizo: He subido nuevas versiones beta Win/Mac con estos cambios en la ruta habitual:

https://sourceforge.net/projects/zesaru ... _versions/
----

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

Avatar de Usuario
Haplo
Mensajes: 366
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por Haplo » 17 Mar 2016, 23:17

Oh yeah!

Ahora sí que se puede debuggear a gusto! :mrgreen: :gracias!:

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

Re: Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por chernandezba » 18 Mar 2016, 00:25

Jeje de nada!
De hecho he corregido también un bug, cuando se usaba el registro IY en los breakpoints condicionales, en vez de leer el IY, se leía el IX!

Saludos
César
----

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

Avatar de Usuario
Haplo
Mensajes: 366
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por Haplo » 19 Mar 2016, 00:17

No sé si esto está ya implementado, pero me gustaría poder saber cuánto ciclos (t-states) consume una determinada parte del código.
Algo así como poner un crono en marcha cuando se ejecute la instrucción que hay en cierta posición de memoria y luego se pare cuando llegue a otra posición determinada, no sé si me explico. O hay algún sistema indirecto para averiguarlo?

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

Re: Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por chernandezba » 19 Mar 2016, 08:49

Me parece muy buena idea esto de saber la duración de una sección de código.
Hay dos contadores de t-estados, uno que te dice los estados relativos a un frame de pantalla y el otro relativos a un scanline.
Para un trozo de código que no exceda de un frame te bastaría con restar el valor inicial al final, pero esto es un poco incómodo y además no sabrías si ese trozo de código ha durado 3 frames enteros por ejemplo.
Debería haber un contador en la pantalla de debug que te permita consultarlo y ponerlo a cero. Pese a que dicha pantalla ya la tengo muy llena de texto, intentare hacerle un hueco para esto, pues me parece muy practico.
Luego teniendo un contador que puedas resetear y consultar, ya lo tienes todo. Para indicar el punto de inicio y final puedes poner dos breakpoints tipo PC=dirección y en cuanto salte pues resetear el contador o lo consultas.

Voy a echarle una pensada de cómo meter esto y te digo.

Gracias!
Saludos
César
----

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

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

Re: Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por chernandezba » 19 Mar 2016, 18:35

Ale, pues ya está.
Agregado nuevo contador tstatesp que funciona como contador parcial de t-estados. Se puede resetear a 0, ver en la ventana de depuración, y usarse como breakpoint o como watches (aunque los watches están limitados a valores de 16 bits)

El contador tstatesp tiene un máximo visible de 999999999 (9 cifras). Ten en cuenta que el total de un frame de pantalla en un 48k es de 69888 (5 cifras). Por lo que el contador da para bastante (para 14308 frames, o lo que es lo mismo, 286 segundos) ;)

Saludos
César
----

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

Avatar de Usuario
Haplo
Mensajes: 366
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por Haplo » 19 Mar 2016, 19:00

:maestro: :maestro: :maestro:

En cuanto haya una versión compilada lo pruebo!

P.D: Por cierto, no me había fijado la cantidad de descargas que tiene la versión 4 respecto a las anteriores, bestial.

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

Re: Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por chernandezba » 19 Mar 2016, 20:49

jeje ok un dia de estos genero una nueva Beta.

Pues viendo ahora la gráfica, sí que ha subido un poco:

https://sourceforge.net/projects/zesaru ... 2016-03-19

Incluso un poco mas que cuando saqué la 3.0 (Julio 2015) en que hice la primera versión para Windows... ahí sí que se incrementaron de manera considerable ;)

Saludos
César
----

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

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

Re: Nuevas opciones debugger para ZEsarUX 4.1

Mensaje por chernandezba » 19 Mar 2016, 20:50

Quizá también tenga que ver que la 4.0 soporta nuevas máquinas, como el CPC 464, Prism, Chloe.... y he hecho propaganda en algunos foros de esas máquinas ;)
----

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

Responder