Nuevas características para un emulador
Re: Nuevas características para un emulador
Desde PASMO, SJASM y demás podría usarse fácilmente con un par de macros WRITECHAR y WRITENUM o algo así, de modo que no se hagan los OUT directamente. Cuando se va a generar la versión final se borra el contenido de la macro y así desaparecen todos los OUT del código final (o se pone un ifdef en la macro vamos)
Yo lo veo muy especialmente útil para hacer debug de cosas complicadas, como comandos dot de ESXDOS, que a veces es muy delicado y los temas de puntos de entrada bastante "tricky".
Obviamente es algo que se puede hacer también com métodos más tradicionales, como cambiar el color de borde, o escribir algo en pantalla, pero lo primero es muy limitado y lo segundo con según que cosa puede ser inconveniente porque metes texto en la propia pantalla del Spectrum, que pueden descolocar cosas.
Esto unido a la posibilidad de cambiar la velocidad de CPU podría ayudar bastante (por ejemplo cambiando la velocidad al 10% temporalmente para ir viendo el output en consola)
Yo lo veo muy especialmente útil para hacer debug de cosas complicadas, como comandos dot de ESXDOS, que a veces es muy delicado y los temas de puntos de entrada bastante "tricky".
Obviamente es algo que se puede hacer también com métodos más tradicionales, como cambiar el color de borde, o escribir algo en pantalla, pero lo primero es muy limitado y lo segundo con según que cosa puede ser inconveniente porque metes texto en la propia pantalla del Spectrum, que pueden descolocar cosas.
Esto unido a la posibilidad de cambiar la velocidad de CPU podría ayudar bastante (por ejemplo cambiando la velocidad al 10% temporalmente para ir viendo el output en consola)
Re: Nuevas características para un emulador
Yo todo lo que ayude al debug siempre lo agradeceré
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas características para un emulador
Uto escribió:Refloto esto porque acaba de ocurrirseme algo, que no se si tiene ZEsarUX pero por los menús no lo veo: un hardware de debug.
¿Que quiere decir eso?
Bueno, pues ya nos hemos dado cuenta de que algunos juegos no iban bien en ZX-Uno porque algun sistema debug viejuno dejó instrucciones OUT que daba la casualidad de que activaban modos Timex. Pues mi propuesta es hacer algo como eso, que permita a los programadores hacer debug "clásico" sin afectar al Spectrum en sí.
¿Como? Pues creando un puerto de debug, que todo lo que se escriba vaya a parar a la consola, así de sencillo, haces OUT 55555, 65 y aparece una A en la consola que ha lanzado ZesarUX. Alternativamente se podría poner algun puerto más, que lo escrito se interprete como un número, por ejemplo que si haces OUT 55556,65 no escriba una A, sino 65.
Esto permitiría hacer debug "clásico"en plan "he llegado hasta aqui" o pintar el valor de un byte sin tener que andar ejecutando paso a paso, todo mientra el programa de Spectrum sigue ejecutándose.
Ale, implementado
Usando los puertos 12291 para escribir un caracter ASCII y el 12295 para mostrar un número, ambos acaban apareciendo en la consola del equipo.
Estos puertos son los primeros que me he inventado y que no entran en conflicto con ningún dispositivo de Spectrum (o eso creo )
Por defecto están desactivados y hay que habilitarlos desde el menu settings->debug o por linea de comandos con --hardware-debug-ports
Gracias a Uto por la sugerencia.
Quien quiera probarlo deberá compilar el último código fuente, pues esto no está en las betas que he subido hoy y ayer
Saludos
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
Re: Nuevas características para un emulador
Yo voy a bajar la ultima beta... la que tiene este nombre tan chulo: ZEsarUX_win-pthreads-4.3-22022017-2.zip
Link: https://sourceforge.net/projects/zesaru ... _versions/
Link: https://sourceforge.net/projects/zesaru ... _versions/
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
Re: Nuevas características para un emulador
Genial, es una tonteria pero a veces el "cutredebug" de toda la vida (que en otros lenguajes sería con un print, write, echo) es lo más rápidochernandezba escribió: Ale, implementado
Usando los puertos 12291 para escribir un caracter ASCII y el 12295 para mostrar un número, ambos acaban apareciendo en la consola del equipo.
Estos puertos son los primeros que me he inventado y que no entran en conflicto con ningún dispositivo de Spectrum (o eso creo )
Por defecto están desactivados y hay que habilitarlos desde el menu settings->debug o por linea de comandos con --hardware-debug-ports
Gracias a Uto por la sugerencia.
Quien quiera probarlo deberá compilar el último código fuente, pues esto no está en las betas que he subido hoy y ayer
Saludos
Re: Nuevas características para un emulador
Pues me parece una idea estupenda!
Esto me recuerda una cosa que igual ya está implementada: imprimir el contenido de una o varias posiciones de memoria en la consola.
Esto me recuerda una cosa que igual ya está implementada: imprimir el contenido de una o varias posiciones de memoria en la consola.
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas características para un emulador
Bueno lo mas seguro es que cambie los puertos y la manera de usarlos, porque estoy usando dos puertos aleatorios con eso, y otro puerto más inventado que ya usaba para un tema del Inves. Y he solicitado un par de puertos dentro del ZXI standard
http://faqwiki.zxnet.co.uk/wiki/ZXI_standard
Y la manera de acceder será al estilo del ZX-Uno: un puerto para seleccionar registro de control, y otro puerto para escribir el valor.
En cuanto me contesten con los puertos ya asignados lo modificaré.
De esta manera quedan los puertos registrados, para que no haya conflictos con nada ni nadie, pese a que sólo serán para el emulador y no para un dispositivo físico, es mejor así
Saludos
César
http://faqwiki.zxnet.co.uk/wiki/ZXI_standard
Y la manera de acceder será al estilo del ZX-Uno: un puerto para seleccionar registro de control, y otro puerto para escribir el valor.
En cuanto me contesten con los puertos ya asignados lo modificaré.
De esta manera quedan los puertos registrados, para que no haya conflictos con nada ni nadie, pese a que sólo serán para el emulador y no para un dispositivo físico, es mejor así
Saludos
César
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas características para un emulador
Por cierto, alguien sabe cuanto tardan en contestar los del ZXI? Porque me he suscrito a la mailing list, enviado solicitud, y estoy esperando respuesta.
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
Re: Nuevas características para un emulador
Eso si estaría de narices... poder "enviar a la consola" algún tipo de debug... como dice @Haplo igual está implementado y aún no me he percatado.Haplo escribió:Pues me parece una idea estupenda!
Esto me recuerda una cosa que igual ya está implementada: imprimir el contenido de una o varias posiciones de memoria en la consola.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nuevas características para un emulador
Eso ya se puede hacer mediante el protolo remoto, comando "read-mapped-memory"Hark0 escribió:Eso si estaría de narices... poder "enviar a la consola" algún tipo de debug... como dice @Haplo igual está implementado y aún no me he percatado.Haplo escribió:Pues me parece una idea estupenda!
Esto me recuerda una cosa que igual ya está implementada: imprimir el contenido de una o varias posiciones de memoria en la consola.