Debugger en ZesarUX

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Debugger en ZesarUX

Mensaje por Uto » 05 Ene 2017, 14:51

chernandezba escribió:Si, es lo que decía. Cada vez que se hace hard reset, se vuelve a establecer la velocidad turbo (aun incluso si está velocidad 1x). ...

Pues precisamente esta última llamada
zxuno_set_emulator_setting_scandblctrl();
Cachis... tenía que ser el último.. ayer estuve mirando esas funciones pero me cansé antes con un "bah, aqui no va a ser, esto solo son los registros" X-D
chernandezba escribió: Por cierto, luego la propia bios se pone a cambiar el modo turbo para acelerar las rutinas de inicio en la bios. PERO en ZEsarUX 4.2 y adelante, los cambios de turbo desde la bios los tengo "interceptados" y no se cambia el modo turbo (puedes verlo fácilmente comparando el tiempo de arranque en zxuno real y en ZEsarUX). Puedes ver como lo hago en la misma función zxuno_set_emulator_setting_scandblctrl
Sí, precisamente te iba a preguntar por qué tarda tanto en arrancar, no he pensado que fuera por eso ¿por qué no le dejas que vaya al modo turbo? Si no es muy largo de explicar :-D
Última edición por Uto el 05 Ene 2017, 16:22, editado 1 vez en total.

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

Re: Debugger en ZesarUX

Mensaje por chernandezba » 05 Ene 2017, 15:33

Pues no le dejo que vaya al modo turbo por la simple razón de que consume mas cpu (si es turbo x2, consume x2 de cpu), y creo que la bios pone x8.
Esto, en mis equipos de escritorio por ejemplo, acaba saturando mi cpu física. Luego que le sucede al emulador? Pues que empieza a hacer frameskip, y entrar en la bios y moverse por los menús con, por ejemplo, 10 FPS, es muy feo.
Esto del modo turbo ya lo comenté con el equipo del zxuno, pero bueno, ellos quieren hacerlos así, y a mi en el emulador no me gusta.
Siempre puedes quitar este parche mio y dejar que salte el turbo de la bios.
De hecho, haplo lo tiene así :silbando:
----

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: Debugger en ZesarUX

Mensaje por Uto » 05 Ene 2017, 16:41

chernandezba escribió:Pues no le dejo que vaya al modo turbo por la simple razón de que consume mas cpu (si es turbo x2, consume x2 de cpu), y creo que la bios pone x8.
Esto, en mis equipos de escritorio por ejemplo, acaba saturando mi cpu física. Luego que le sucede al emulador? Pues que empieza a hacer frameskip, y entrar en la bios y moverse por los menús con, por ejemplo, 10 FPS, es muy feo.
Esto del modo turbo ya lo comenté con el equipo del zxuno, pero bueno, ellos quieren hacerlos así, y a mi en el emulador no me gusta.
Siempre puedes quitar este parche mio y dejar que salte el turbo de la bios.
De hecho, haplo lo tiene así :silbando:

Supongo que es cuestión de probar a ver que tal va con mi máquina. Ayer por cierto le metí otro cambio, para poder hacer un poco de debug: ahora en mi versión si haces OUT 65535, X genera log en consola a nivel VERBOSE_WARN con el valor de X, su representación como caracter, y debajo el estado de los registros. Es el sistema de debug que planteaba en otro hilo.

Código: Seleccionar todo

Warning: ==================================================
Warning: Write to ZX-Uno Debugger with value $21 [!] 
PC=1e7f SP=ff52 BC=ffff A= 21 HL=5cde DE=5ce3 IX= 3d4 IY=5c3a A'= 0 BC'=1721 HL'=ffff DE'=369b I= 3f R= 50  F= Z P H   F
Warning: ==================================================
Los Warning con los símbolos = los pongo para encuadrar cada traza, aunque el último lo tuve que poner porque sino no me salia lo de los registros hasta que no hubiera otra traza. Supongo que la funcion que llamo (scr_debug_registers) solo encola el texto en un buffer y luego hay que hacer algo para que lo suelte. De todos modos con lo de meter otro warning detrás se soluciona. :-?
Última edición por Uto el 05 Ene 2017, 17:04, editado 2 veces en total.

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

Re: Debugger en ZesarUX

Mensaje por Uto » 05 Ene 2017, 17:03

Pues la verdad es que he conseguido que se pare en PC<10 al arrancar pero no en la BIOS, por el contenido sospecho que en la boot ROM. Si le doy a salir del debug parece que me deshabilita el breakpoint otra vez, y por tanto al llegar a la BIOS ROM, tampoco para :veoestrellas:

Seguiré investigando, pero va por buen camino, quizá sea cuestión de ponerle a la BIOS ROM una instruccion inocua al principio que no esté en la boot ROM y pararlo por opcode ...

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

Re: Debugger en ZesarUX

Mensaje por chernandezba » 15 Feb 2017, 20:23

Uto escribió:¿hay alguna manera de pasar los breakpoints por linea de comandos?

Estoy tratando de hacer debug de un dot command, lo que implica que cada vez de compilo tengo que montar la SD virtual, copiar el fichero compilado, desmontar la SD, arrancar ZEsarUX (y si algo falla salir de ZEsarUX). Esto me obliga a que cada vez que entro tengo que poner otra vez el breakpoint de turno, si monto y desmonto la unidad con ZEsarUX abierto no pilla los cambios.

Si al menos pudiera hacer algo como ---breakpoints "PC=8192, HL=0"...
Hola

La última versión de código fuente que acabo de subir ya permite hacer esto.
Dos ejemplos de breakpoints desde linea de comandos son:

--set-breakpoint 3 "pc=8000 and sp=32000"
--set-breakpoint 4 "de=32767"

el 3 y el 4 son indices a la tabla de breakpoints (la misma que sale en el menú, puede valer entre 1 y 10).

:teclando..:

Saludos
César
----

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

Responder