Nuevas opciones debugger para ZEsarUX 4.1
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Nuevas opciones debugger para ZEsarUX 4.1
Hola!
Bueno según petición popular...
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 ....
Saludos
César
Bueno según petición popular...
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 ....
Saludos
César
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas opciones debugger para ZEsarUX 4.1
Actualizo: He subido nuevas versiones beta Win/Mac con estos cambios en la ruta habitual:
https://sourceforge.net/projects/zesaru ... _versions/
https://sourceforge.net/projects/zesaru ... _versions/
Re: Nuevas opciones debugger para ZEsarUX 4.1
Oh yeah!
Ahora sí que se puede debuggear a gusto!
Ahora sí que se puede debuggear a gusto!
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas opciones debugger para ZEsarUX 4.1
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
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
Re: Nuevas opciones debugger para ZEsarUX 4.1
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?
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?
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas opciones debugger para ZEsarUX 4.1
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
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
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas opciones debugger para ZEsarUX 4.1
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
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
Re: Nuevas opciones debugger para ZEsarUX 4.1
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.
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas opciones debugger para ZEsarUX 4.1
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
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
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas opciones debugger para ZEsarUX 4.1
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