Debugger?

Dudas, cuestiones, sugerencias y peticiones en general sobre el proyecto / Questions and requests about the project
Avatar de Usuario
Ramones
Mensajes: 17
Registrado: 01 Feb 2017, 13:48

Debugger?

Mensaje por Ramones » 02 Feb 2017, 17:42

Hi!

English:

As usual, maybe my question it's an old question or answered question:

What about debugger on ZX core mode?

I see that there are "rooted" ZX core ROMs where you can "poke" memory using NMI. Would be possible add a monitor - debugger?


Spanish:

Buenas! Como de costumbre, quizás esto sea una pregunta que ya se ha realizado, perdón por adelantado:


¿Se podría añadir un debugger en los rooted modes? He visto que en los rooted se puede, mediante la NMI introducir POKES. ¿Sería muy complicado hacer un monitor - depurador? Sería algo muy muy deseado por los programadores. :) Depurador - monitor mediante NMI, externo y en máquina real.


Thanks in advance!

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

Re: Debugger?

Mensaje por antoniovillena » 02 Feb 2017, 18:19

Puedes usar cualquier monitor que funcione de forma nativa en un spectrum. Pero meter funciones de depuración en la FPGA requeriría muchos recursos. Habría que tirar de OSD para mostrar datos por pantalla y cosas por el estilo. Supongo que técnicamente es posible sacrificando funcionalidades del core, pero yo por lo menos no lo veo útil. Para eso están los PCs y los emuladores. Un desarrollador de juegos retro normalmente usa editores en PC, ensambladores/compiladores cruzados y emuladores.

Si te vale como solución intermedia, en el hilo del core PC/XT un usuario consiguió ejecutar el emulador Z80 v2.00 de Gerton Lunter. Si añades a esto un editor y un compilador para MS-DOS, ya tendrías lo necesario para desarrollar sin necesidad de sacar la SD del ZX-Uno.

Avatar de Usuario
Ramones
Mensajes: 17
Registrado: 01 Feb 2017, 13:48

Re: Debugger?

Mensaje por Ramones » 02 Feb 2017, 18:37

Hola Antonio!
antoniovillena escribió:Puedes usar cualquier monitor que funcione de forma nativa en un spectrum.
Hmm... ya. Pero eso no es exactamente lo mismo. :/

antoniovillena escribió:Pero meter funciones de depuración en la FPGA requeriría muchos recursos.
Esto es lo que no sabía y por eso preguntaba. De ese tema no tengo ni idea. Pez total. :)

antoniovillena escribió:Habría que tirar de OSD para mostrar datos por pantalla y cosas por el estilo. Supongo que técnicamente es posible sacrificando funcionalidades del core, pero yo por lo menos no lo veo útil.
Si, claro un OSD sería lo suyo. ¿Util? Pues yo creo que si lo es, y bastante, pero claro... eso pienso yo. ¿Qué funcionalidades exactamente habría que sacrificar?

antoniovillena escribió:Para eso están los PCs y los emuladores. Un desarrollador de juegos retro normalmente usa editores en PC, ensambladores/compiladores cruzados y emuladores.

En efecto. Y en Spectrum parece que todos los emuladores son bastante precisos. Pero no sería la primera vez que, al probar en la máquina real, me he llevado más de una desagradable sorpresa. Y haber tenido un debugger-monitor por NMI hubiese ayudado mucho, muchísimo. Hubiese pagado por ello. ;)

antoniovillena escribió:Si te vale como solución intermedia, en el hilo del core PC/XT un usuario consiguió ejecutar el emulador Z80 v2.00 de Gerton Lunter. Si añades a esto un editor y un compilador para MS-DOS, ya tendrías lo necesario para desarrollar sin necesidad de sacar la SD del ZX-Uno.
Pues, como idea, no está mal. Me has leído el pensamiento. La idea sería no tener que "salir" del ZX-Uno para programar. ;)

Gracias por la contestación!

Avatar de Usuario
mcleod_ideafix
Mensajes: 828
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Debugger?

Mensaje por mcleod_ideafix » 02 Feb 2017, 19:59

Hay un comando, MON, para ESXDOS, que hace las veces de monitor/desensamblador. No lo he probado, pero por lo visto te permite depurar incluso código del propio ESXDOS. Su autor creo que es Velesoft. El comando en cuestión lo tienes en el repositorio, sección software/monitor_debugger_esxdos. Tan sólo has de copiar el fichero MON al /BIN de tu tarjeta SD para tenerlo disponible.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

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

Re: Debugger?

Mensaje por antoniovillena » 02 Feb 2017, 20:10

Ramones escribió:Hola Antonio!
antoniovillena escribió:Habría que tirar de OSD para mostrar datos por pantalla y cosas por el estilo. Supongo que técnicamente es posible sacrificando funcionalidades del core, pero yo por lo menos no lo veo útil.
Si, claro un OSD sería lo suyo. ¿Util? Pues yo creo que si lo es, y bastante, pero claro... eso pienso yo. ¿Qué funcionalidades exactamente habría que sacrificar?
Yo también estoy un poco pez en ese sentido. Un ejemplo de core básico es el core de Kyp, que no tiene ninguna mejora moderna salvo DivMMC. Habría que ver la ocupación de la FPGA en el caso del core de Kyp para ver hasta qué punto se puede recortar. Si por ejemplo la ocupación es de un 60%, eso significa que te sobra un 40% para meter el OSD y las funciones de depuración. Aparte del OSD y de algún tipo de procesador (distinto del depurado) para generar el video que muestra el OSD, debe haber un mecanismo en el core de la CPU que dispare los eventos de depuración. Que yo sepa no hay ningún core Z80 preparado con este mecanismo de depuración, así que un primer paso sería diseñar estos mecanismos y la comunicación con el procesador que maneja el OSD.

Ramones escribió: En efecto. Y en Spectrum parece que todos los emuladores son bastante precisos. Pero no sería la primera vez que, al probar en la máquina real, me he llevado más de una desagradable sorpresa. Y haber tenido un debugger-monitor por NMI hubiese ayudado mucho, muchísimo. Hubiese pagado por ello. ;)
En Spectrum esto no pasa porque los emuladores son exactos. En otras máquinas sí que sería aplicable. Para eso están los emuladores in-circuit, que son la solución profesional, si no me equivoco también basados en FPGA.

Avatar de Usuario
Ramones
Mensajes: 17
Registrado: 01 Feb 2017, 13:48

Re: Debugger?

Mensaje por Ramones » 02 Feb 2017, 20:51

Buenas!
mcleod_ideafix escribió:Hay un comando, MON, para ESXDOS, que hace las veces de monitor/desensamblador. No lo he probado, pero por lo visto te permite depurar incluso código del propio ESXDOS. Su autor creo que es Velesoft. El comando en cuestión lo tienes en el repositorio, sección software/monitor_debugger_esxdos. Tan sólo has de copiar el fichero MON al /BIN de tu tarjeta SD para tenerlo disponible.
Wow! Acabo de probarlo y si, ya es interesante. Lo que pasa es que no me aclaro con los comandos. Imagino que será (si no es) el viejo MON del DevPac. Buscaré información de sus hotkeys. :)

Está claro que no es igual que un debugger-monitor "externo" como el que hablaba, pero, oye, ya es algo.

Gracias por la info!

Avatar de Usuario
Ramones
Mensajes: 17
Registrado: 01 Feb 2017, 13:48

Re: Debugger?

Mensaje por Ramones » 02 Feb 2017, 20:55

antoniovillena escribió:
Yo también estoy un poco pez en ese sentido.
Pues estamos buenos... :mrgreen:
antoniovillena escribió: Un ejemplo de core básico es el core de Kyp, que no tiene ninguna mejora moderna salvo DivMMC. Habría que ver la ocupación de la FPGA en el caso del core de Kyp para ver hasta qué punto se puede recortar. Si por ejemplo la ocupación es de un 60%, eso significa que te sobra un 40% para meter el OSD y las funciones de depuración. Aparte del OSD y de algún tipo de procesador (distinto del depurado) para generar el video que muestra el OSD, debe haber un mecanismo en el core de la CPU que dispare los eventos de depuración. Que yo sepa no hay ningún core Z80 preparado con este mecanismo de depuración, así que un primer paso sería diseñar estos mecanismos y la comunicación con el procesador que maneja el OSD.
Tal como lo pintas... suena hasta divertido! Pero claro, es que no tengo ni idea de programar FPGAs y similares. En fin, si alguien se atreve a implementarlo algún día, aquí tendrá un fan! :)
(Que más que "atrever" es que se pueda realmente, igual no se puede y fin del asunto).
antoniovillena escribió: En Spectrum esto no pasa porque los emuladores son exactos.
Si? Pues me parece impresionante. :) Es decir, que sabía que eran muy precisos, pero tanto como exactos-perfectos... imaginaba que alguna cosa se podría escapar todavía, respecto a una máquina real.
antoniovillena escribió: En otras máquinas sí que sería aplicable. Para eso están los emuladores in-circuit, que son la solución profesional, si no me equivoco también basados en FPGA.
No conozco este tipo de emulación. Interesante.

:gracias!:

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

Re: Debugger?

Mensaje por antoniovillena » 02 Feb 2017, 21:08

Ramones escribió: Tal como lo pintas... suena hasta divertido! Pero claro, es que no tengo ni idea de programar FPGAs y similares. En fin, si alguien se atreve a implementarlo algún día, aquí tendrá un fan! :)
(Que más que "atrever" es que se pueda realmente, igual no se puede y fin del asunto)
Poder se puede, pero me temo que será de las últimas cosas que se plantee hacer un desarrollador de cores. La razón es que es algo muy costoso para el beneficio que se obtiene. Es mi opinión aunque no soy desarrollador de cores. Tendrías que encontrar a alguien que desarrolle cores y vea en lo del depurador algo prioritario.
Ramones escribió: Si? Pues me parece impresionante. :) Es decir, que sabía que eran muy precisos, pero tanto como exactos-perfectos... imaginaba que alguna cosa se podría escapar todavía, respecto a una máquina real.
Pues sí, aunque es una excepción. Porque es una máquina bastante sencilla y porque hace casi 10 años Chris Smith consiguió destripar la ULA. No todos los emuladores son exactos-perfectos, pero pueden serlo si el programador se esfuerza. Hay bastantes programas de test para verificar que el emulador es fiel: contienda, z80 hasta el más mínimo detalle no documentado, etc...

Avatar de Usuario
Ramones
Mensajes: 17
Registrado: 01 Feb 2017, 13:48

Re: Debugger?

Mensaje por Ramones » 03 Feb 2017, 08:18

antoniovillena escribió: Poder se puede, pero me temo que será de las últimas cosas que se plantee hacer un desarrollador de cores. La razón es que es algo muy costoso para el beneficio que se obtiene. Es mi opinión aunque no soy desarrollador de cores. Tendrías que encontrar a alguien que desarrolle cores y vea en lo del depurador algo prioritario.
Es algo habitual, en efecto. Cuando se hace un emulador, primero se intenta que funcionen bien "los juegos". Normalmente quien pide un debugger es el programador. No suelen ser muy buenos, además, los debugger-monitor implementados, a grandes rasgos (siempre hay excepciones).
antoniovillena escribió: Pues sí, aunque es una excepción. Porque es una máquina bastante sencilla y porque hace casi 10 años Chris Smith consiguió destripar la ULA. No todos los emuladores son exactos-perfectos, pero pueden serlo si el programador se esfuerza. Hay bastantes programas de test para verificar que el emulador es fiel: contienda, z80 hasta el más mínimo detalle no documentado, etc...
Eso es realmente maravilloso, tener esa información - documentación. Pero no solo de ULA vive el Spectrum. Hay mucho más hardware. :silbando:

Y hablando de floating bus... tengo otra duda, pero la pongo en otro hilo.

thEpOpE
Mensajes: 41
Registrado: 10 Oct 2016, 21:35

Re: Debugger?

Mensaje por thEpOpE » 04 Feb 2017, 16:15

Yo he usado Mon, y puedes lanzarlo en el momento de cargar un snapshot. En este post puse algo más de información: viewtopic.php?f=12&t=507&p=12378#p12378

Responder