Debugger?
Debugger?
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!
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!
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Debugger?
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.
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.
Re: Debugger?
Hola Antonio!
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.
Gracias por la contestación!
Hmm... ya. Pero eso no es exactamente lo mismo. :/antoniovillena escribió:Puedes usar cualquier monitor que funcione de forma nativa en un spectrum.
Esto es lo que no sabía y por eso preguntaba. De ese tema no tengo ni idea. Pez total.antoniovillena escribió:Pero meter funciones de depuración en la FPGA requeriría muchos recursos.
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ó: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.
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.
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.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.
Gracias por la contestación!
- mcleod_ideafix
- Mensajes: 831
- Registrado: 27 Sep 2015, 00:14
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Debugger?
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
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Debugger?
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ó:Hola Antonio!
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ó: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.
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.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.
Re: Debugger?
Buenas!
Está claro que no es igual que un debugger-monitor "externo" como el que hablaba, pero, oye, ya es algo.
Gracias por la info!
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.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.
Está claro que no es igual que un debugger-monitor "externo" como el que hablaba, pero, oye, ya es algo.
Gracias por la info!
Re: Debugger?
Pues estamos buenos...antoniovillena escribió:
Yo también estoy un poco pez en ese sentido.
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!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.
(Que más que "atrever" es que se pueda realmente, igual no se puede y fin del asunto).
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 Spectrum esto no pasa porque los emuladores son exactos.
No conozco este tipo de emulación. Interesante.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.
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Debugger?
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ó: 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)
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...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.
Re: Debugger?
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ó: 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.
Eso es realmente maravilloso, tener esa información - documentación. Pero no solo de ULA vive el Spectrum. Hay mucho más hardware.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...
Y hablando de floating bus... tengo otra duda, pero la pongo en otro hilo.
Re: Debugger?
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