Emulación del puerto $FF

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Emulación del puerto $FF

Mensajepor mcleod_ideafix » 06 Ene 2014 16:10

Último mensaje de la página anterior:

zx81 escribió:La estructura interna del TAP es LSB de modo que un lector debe estar escrito de forma que eso no importe

Debería, pero en este caso no es así. En el código se deferencian punteros a enteros y a short ints, simplemente haciéndolos apuntar a determinadas partes de la cabecera del TAP.

Código: Seleccionar todo

char *cabecera;
int variable;
...
...
variable = *(int *)(cabecera+24);


Por lo que lo que se lee de ellos se guarda siempre en little endian en las variables que se asignan. En un sistema big endian, la asignación dará un resultado erróneo. Por ejemplo, si en cabecera+24 se guardan los bytes AA, BB, CC y DD, el código anterior hará que en "variable" se guarde el resultado 0xAABBCCDD en un sistema big endian, y el valor 0xDDCCBBAA en un sistema little endian.

zx81 escribió:Se podría, por ejemplo, emular la contended-memory sin problemas (no sé si ticks hace eso).

Creo que no.

zx81 escribió:No parece que haya mucho interés en sistemas no-Windows porque hasta ahora nadie había dicho ni Pamplona al respecto. Y de Java, mejor no hablamos. ;)

Hombre, interés en sistemas no-Windows creo que sí hay. Lo que no sé es cuán grande es el conjunto [ usuarios de ticks  usuarios de sistemas no Windows ]. Yo hasta que AntonioVillena no lo ha dicho en un hilo de WOS sobre optimizar una rutina para hacer la función ABS() no conocía ticks, y creo que otros usuarios de WOS t ambién la han conocido allí.

De Java... es que se presta a muchos chistes :D Por ejemplo (este ya es viejo):

- Tock, tock.
- ¿Quien es?
( pausa larga...)
- JAVA
-rofl

O este otro (que no conocía):

Decir que JAVA es bueno porque se puede ejecutar en múltiples sistemas operativos es como decir que el sexo anal es bueno porque se puede practicar con todos los géneros
-rofl

No offense intended
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
antoniovillena
Mensajes: 122
Registrado: 18 Ago 2012 13:06

Re: Emulación del puerto $FF

Mensajepor antoniovillena » 06 Ene 2014 16:21

zx81 escribió:
A lo largo del tiempo que llevo desarrollando el emulador he ido recopilando un montón de utilidades con propósitos muy diversos que, en algunos casos, son imposibles de encontrar ahora (o muy difíciles). Alguna vez he pensado que deberían juntarse y subirse a una web o similar, como una forma de backup de mi mismo. :)


Por eso tengo mi foro en retrolandia.net y mi repositorio en sourceforge. Por un lado me despreocupo por si se me borran accidentalmente los fuentes; por otro lado el código está disponible para cualquiera que lo quiera usar o mejorar.

zx81 escribió:Por cierto, no es un tema on-topic, pero anteayer estuve intentando compilar el ticks en Linux y me costó un rato. No sé si te interesa saber lo que tuve que modificar, ni si esas modificaciones son aplicables al programa directamente para que siga compilando en Windows (que no es estándar en todo, ese es el problema). Mirándolo, dan ganas de pasarlo a Java para que fuera utilizable directamente desde cualquier plataforma. ¿Tienes algún tipo de archivos que permitan hacer tests del ticks para saber si el ejecutable generado es correcto?.


Sí. Te lo he creado partiendo de unas desprotecciones que tenía hechas. Básicamente tienes que ejecutar esto en línea de comandos:

Código: Seleccionar todo

ticks 48rp.rom -t Cobra.wav -e af10 -o Cobra.sna -c -1
fc /b CobraBueno.sna Cobra.sna


Ojo, que en Linux no existe fc (file compare), tendrías que trasladar este comando. Los archivos auxiliares te los subo aquí
Adjuntos
test_ticks.zip
(236.66 KiB) Descargado 76 veces

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Emulación del puerto $FF

Mensajepor mcleod_ideafix » 06 Ene 2014 16:26

antoniovillena escribió:Ojo, que en Linux no existe fc (file compare), tendrías que trasladar este comando. Los archivos auxiliares te los subo aquí

En UNIX, usa cmp o diff.
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
antoniovillena
Mensajes: 122
Registrado: 18 Ago 2012 13:06

Re: Emulación del puerto $FF

Mensajepor antoniovillena » 06 Ene 2014 16:53

Voy a intentar responder a todas las cuestiones del tirón, si se me queda alguna atrás re-pregúntamela.

Ticks lo hice en un principio con la idea de optimizar la velocidad del descompresor exomizer. Más adelante le fui añadiendo funcionalidades con la idea de usarlo para desproteger juegos. En principio Ticks no estaba pensado para ZX Spectrum, pero como no lo he usado para otras plataformas al final le he añadido formatos centrados en ZX Spectrum como el .SNA. No implementa memoria contenida ni modos de paginación 128k, puesto que no está centrada en emular un spectrum. Es básicamente una máquina virtual con 64K de RAM pero que se puede trucar para parecer un spectrum 48K metiéndole una ROM como archivo de entrada.

Como muestra McLeod el código está bastante ofuscado, principalmente debido a que no fue un desarrollo desde cero, sino que partí del core del jbacteria que ya tenía esos falsos ifs. Esos falsos ifs (sentencias encadenadas con &&) sólo te deberían de dar warnings en el compilador.

El tema del stricmp no es necesario en Linux porque los archivos (por ende las extensiones) son case sensitive. El único sitio en que uso dicha función es para comprobar la extensión de un archivo, porque el archivo podría ser .sna ó .SNA.

Por otro lado el tema de los archivos TAP es litle endian por lo que en principio habría que generalizarlo. Lo que pasa es que el soporte TAP está sólo en versiones más antiguas, en un momento dado decidí quitar dicho soporte y tirar de herramientas externas tipo TAP2WAV o TZX2WAV. Pero seguimos en las mismas porque los campos del archivo WAV también se leen en little endian.

Respecto al número de usuarios que usan Ticks sinceramente creo que no lo conoce ni el tato. Es una herramienta con fines muy específicos y tampoco le he dado mucha difusión. A veces es mejor no pensar en un público potencial, es decir, hacer las cosas simplemente porque te gustan o porque las necesitas para tí (ese fue el caso de ticks) y luego publicarlas por si a alguien le pudiera ser útil en un futuro. Tu caso es distinto porque sí tienes medios para ejecutar Ticks, supongo que a las malas en wine.

Como tú lo veas. Eso sí las modificaciones hazlas en la última versión del archivo:

http://sourceforge.net/p/emuscriptoria/ ... ot/ticks.c

Y usa compilación condicional para que el mismo fuente compile tanto en Linux como en Windows. Por supuesto añade tu nombre de alguna manera para que quedes reflejado en los créditos.

Avatar de Usuario
zx81
Mensajes: 134
Registrado: 23 Feb 2013 21:31

Re: Emulación del puerto $FF

Mensajepor zx81 » 06 Ene 2014 23:25

mcleod_ideafix escribió:
zx81 escribió:La estructura interna del TAP es LSB de modo que un lector debe estar escrito de forma que eso no importe

Debería, pero en este caso no es así. En el código se deferencian punteros a enteros y a short ints, simplemente haciéndolos apuntar a determinadas partes de la cabecera del TAP.

Código: Seleccionar todo

char *cabecera;
int variable;
...
...
variable = *(int *)(cabecera+24);


Por lo que lo que se lee de ellos se guarda siempre en little endian en las variables que se asignan. En un sistema big endian, la asignación dará un resultado erróneo. Por ejemplo, si en cabecera+24 se guardan los bytes AA, BB, CC y DD, el código anterior hará que en "variable" se guarde el resultado 0xAABBCCDD en un sistema big endian, y el valor 0xDDCCBBAA en un sistema little endian.


El problema lo conozco bien porque tengo que bregar con él en el curro todos los días. Afortunadamente, es fácil de solucionar si hiciera falta.

mcleod_ideafix escribió:
zx81 escribió:No parece que haya mucho interés en sistemas no-Windows porque hasta ahora nadie había dicho ni Pamplona al respecto. Y de Java, mejor no hablamos. ;)

Hombre, interés en sistemas no-Windows creo que sí hay. Lo que no sé es cuán grande es el conjunto [ usuarios de ticks  usuarios de sistemas no Windows ]. Yo hasta que AntonioVillena no lo ha dicho en un hilo de WOS sobre optimizar una rutina para hacer la función ABS() no conocía ticks, y creo que otros usuarios de WOS t ambién la han conocido allí.

De Java... es que se presta a muchos chistes :D Por ejemplo (este ya es viejo):

- Tock, tock.
- ¿Quien es?
( pausa larga...)
- JAVA
-rofl

O este otro (que no conocía):

Decir que JAVA es bueno porque se puede ejecutar en múltiples sistemas operativos es como decir que el sexo anal es bueno porque se puede practicar con todos los géneros
-rofl

No offense intended


Hay una frase que popular que dice cuando un tonto sigue una linde, la linde se acaba pero el tonto sigue. La primera gracieta tenía bastantes visos de razón.... hace más de diez años. Pero aún sigue ahí cada vez que hay que atacar a Java, que le vamos a hacer. La segunda frase está sacada diréctamente de las cocinas infernales de M$. Lo increíble no es que dijeran semejante memez, tan evidentemente interesada, sino que en ciertos círculos técnicos se les siga haciendo caso como si fuera ley escrita en piedra, mientras se corre en círculos alrededor de putoNET, que reúne lo peor de todo, incluido Java.

Pero como el trabajo a realizar no requiere de velocidades extremas sino que el objetivo es manifiestamente otro, la rajada contra Java me parece fuera de lugar hasta como chiste, aunque me venga de perlas para ponerla como ejemplo de lo que yo decía. A mi sí me parece una ventaja que la misma herramienta sirva para varias plataformas sin complicarse la vida pero oye, allá cada cual. A mi me pasa muchas veces que veo utilidades que, aún dando las gracias a sus autores, me parece que se les sacaría más provecho si fueran más fáciles de usar desde otros sistemas, porque muchas de ellas son para Güindous. Evidentemente, no puedo reprogramarlas todas, pero es que en este caso tengo una buena parte del trabajo hecho. Por eso lo dije. Ahora bien, si la conclusión es que Louis Hamilton es un mal piloto de F1 porque es negro, pues apaga y vámonos.

Sin acritud. ;)
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Empieza a jugar sin tener que compilar: Emulador JSpeccy

Avatar de Usuario
zx81
Mensajes: 134
Registrado: 23 Feb 2013 21:31

Re: Emulación del puerto $FF

Mensajepor zx81 » 06 Ene 2014 23:28

antoniovillena escribió:
zx81 escribió:
A lo largo del tiempo que llevo desarrollando el emulador he ido recopilando un montón de utilidades con propósitos muy diversos que, en algunos casos, son imposibles de encontrar ahora (o muy difíciles). Alguna vez he pensado que deberían juntarse y subirse a una web o similar, como una forma de backup de mi mismo. :)


Por eso tengo mi foro en retrolandia.net y mi repositorio en sourceforge. Por un lado me despreocupo por si se me borran accidentalmente los fuentes; por otro lado el código está disponible para cualquiera que lo quiera usar o mejorar.

zx81 escribió:Por cierto, no es un tema on-topic, pero anteayer estuve intentando compilar el ticks en Linux y me costó un rato. No sé si te interesa saber lo que tuve que modificar, ni si esas modificaciones son aplicables al programa directamente para que siga compilando en Windows (que no es estándar en todo, ese es el problema). Mirándolo, dan ganas de pasarlo a Java para que fuera utilizable directamente desde cualquier plataforma. ¿Tienes algún tipo de archivos que permitan hacer tests del ticks para saber si el ejecutable generado es correcto?.


Sí. Te lo he creado partiendo de unas desprotecciones que tenía hechas. Básicamente tienes que ejecutar esto en línea de comandos:

Código: Seleccionar todo

ticks 48rp.rom -t Cobra.wav -e af10 -o Cobra.sna -c -1
fc /b CobraBueno.sna Cobra.sna


Ojo, que en Linux no existe fc (file compare), tendrías que trasladar este comando. Los archivos auxiliares te los subo aquí


Gracias Antonio, intentaré probarlo mañana por la tarde. Por el fc no te preocupes, si hay un sistema con saturación de utilidades para cualquier cosa imaginable, ese debe ser unix. :D
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Empieza a jugar sin tener que compilar: Emulador JSpeccy

Avatar de Usuario
zx81
Mensajes: 134
Registrado: 23 Feb 2013 21:31

Re: Emulación del puerto $FF

Mensajepor zx81 » 06 Ene 2014 23:55

antoniovillena escribió:Voy a intentar responder a todas las cuestiones del tirón, si se me queda alguna atrás re-pregúntamela.


Más que preguntas son curiosidades, como porqué decidiste quitar el soporte de archivos TAP, que son más fáciles de leer en beneficio de los wav, más problemáticos y con más variantes. Es evidente que no se pretendía hacer un emulador (trabajo en el que tienes más experiencia que yo), pero precisamente por eso, la tarea de hacer todo un core Z80 en C me parece tremenda (alguna vez he pensado en portar el mío de Java a C++ y es que me entra una desgana.... :D ).

En principio, el interés en que compile en Linux (lo probaría también en Solaris Sparc y x86 con los compiladores de Oracle, que con tanto rollo de gcc, la gente se olvida de que escribir código estándar C es más xungo de lo que parece), es que no uso Wine y VirtualBox lo evito si puedo (cada vez que toco un Güindous en cualquiera de sus formas se me hacen úlceras entre los dedos de los pies).

antoniovillena escribió:Y usa compilación condicional para que el mismo fuente compile tanto en Linux como en Windows. Por supuesto añade tu nombre de alguna manera para que quedes reflejado en los créditos.


No se trata de romper nada, aunque una vez modificado tendrías que probar a compilarlo en tus PC, porque yo ni tengo Win, ni tengo compilador para Win, y usar gcc para probar me parecería una tontería, de modo que mejor te lo paso de alguna forma y ya está. Por los créditos no te preocupes, no tengo intención de modificar 4 cosas y adjudicarme el 50% del mérito del programa, hay que hacer algo más que eso para decir que una contribución ha sido relevante. ;)
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Empieza a jugar sin tener que compilar: Emulador JSpeccy

Avatar de Usuario
antoniovillena
Mensajes: 122
Registrado: 18 Ago 2012 13:06

Re: Emulación del puerto $FF

Mensajepor antoniovillena » 07 Ene 2014 10:05

zx81 escribió:Más que preguntas son curiosidades, como porqué decidiste quitar el soporte de archivos TAP, que son más fáciles de leer en beneficio de los wav, más problemáticos y con más variantes. Es evidente que no se pretendía hacer un emulador (trabajo en el que tienes más experiencia que yo), pero precisamente por eso, la tarea de hacer todo un core Z80 en C me parece tremenda (alguna vez he pensado en portar el mío de Java a C++ y es que me entra una desgana.... :D ).


Había varias razones. Una de ellas era que el TAP debía funcionar con rutinas que no estuviesen en ROM, para lo cual habría que pasar a onda o algo parecido de todas formas. Otra es que el fichero WAV es sencillo e independiente de la máquina, cualquiera puede exportar el código a otra máquina con tal de cambiar el puerto de acceso. Las variantes del WAV no son ningún problema porque me ciño a ficheros PCM Mono de 8 bits y 44100Hz, por suerte es el fichero más estándar que sacan las herramientas tipo TAP2WAV o TZX2WAV. Por último con el fichero WAV cubres el poder usar cualquier formato que exista, puesto que siempre hay herramientas que pasan a dicho formato, para Spectrum y para otras máquinas.

zx81 escribió:No se trata de romper nada, aunque una vez modificado tendrías que probar a compilarlo en tus PC, porque yo ni tengo Win, ni tengo compilador para Win, y usar gcc para probar me parecería una tontería, de modo que mejor te lo paso de alguna forma y ya está. Por los créditos no te preocupes, no tengo intención de modificar 4 cosas y adjudicarme el 50% del mérito del programa, hay que hacer algo más que eso para decir que una contribución ha sido relevante. ;)


Por eso no te preocupes que yo lo pruebo luego en Windows. No te decía que te pusieras como coautor, sino como responsable de la adaptación a Linux.

sejuan
Mensajes: 434
Registrado: 09 Nov 2010 16:29
Agradecido : 2 veces
Agradecimiento recibido: 4 veces

Re: Emulación del puerto $FF

Mensajepor sejuan » 07 Ene 2014 12:38

Creo que este hilo merece un artículo en la próxima RW. O ponerlo en algún sitio destacado no sé. Que grande sois !!!

Avatar de Usuario
zx81
Mensajes: 134
Registrado: 23 Feb 2013 21:31

Re: Emulación del puerto $FF

Mensajepor zx81 » 07 Ene 2014 19:03

Ya he podido probarlo en Linux y Solaris 10 x86, con gcc y Oracle Solaris Studio como compiladores respectivos. Funciona en 32 y 64 bits y solo hace falta añadir al ticks que tienes en sourceforge lo que sigue:

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifndef stricmp
#define stricmp strcasecmp
#endif


La primera línea ya la tienes puesta, hay que añadir las demás y probar a compilar en Windows. Lo único que no sé es porqué Fuse no carga el Cobra.wav y sí lo hace Specemu (Fuse 1.1.1 en Linux y Specemu en Windows, claro). Prueba añadiendo esas líneas y ver qué pasa.

Mientras esta tarde pegaba unas pedaladas iba pensando en ticks (pensando en algo que no sea la bici se te hacen más cortos los Km) y en las funcionalidades que podría tener, porque potencial tiene. Y cuando he llegado al Km 25 me he dado cuenta de que en realidad lo que hace falta, y yo no conozco ninguno, es un emulador orientado a los desarrolladores, que tenga funcionalidades que quizá hagan ir más lenta a la emulación pero que permitan hacer análisis que ahora son complicados de llevar a cabo o directamente imposibles. La verdad es que se me han ocurrido un montón de cosas chulas, ahora solo falta tiempo y ganas para hacerlas.... :D
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Empieza a jugar sin tener que compilar: Emulador JSpeccy

Avatar de Usuario
ron
Mensajes: 16952
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 428 veces
Agradecimiento recibido: 446 veces

Re: Emulación del puerto $FF

Mensajepor ron » 07 Ene 2014 19:03

sejuan escribió:Creo que este hilo merece un artículo en la próxima RW. O ponerlo en algún sitio destacado no sé. Que grande sois !!!


Si lees por atrás lo he tildado de " CLASE MAGISTRAL ", es un espectáculo de lectura, no quiero que se acabe !!! -drinks

Avatar de Usuario
antoniovillena
Mensajes: 122
Registrado: 18 Ago 2012 13:06

Re: Emulación del puerto $FF

Mensajepor antoniovillena » 07 Ene 2014 20:26

Ya está, le he hecho una ligera modificación porque el preprocesador no tiene ni idea de si existe tal función o no. En Windows funciona.

Comparte tus ideas si quieres. Ahora mismo la velocidad no es ningún problema (va bastante rápido), así que si se pierde algo de velocidad no pasa nada.

Avatar de Usuario
zx81
Mensajes: 134
Registrado: 23 Feb 2013 21:31

Re: Emulación del puerto $FF

Mensajepor zx81 » 07 Ene 2014 21:11

antoniovillena escribió:Ya está, le he hecho una ligera modificación porque el preprocesador no tiene ni idea de si existe tal función o no. En Windows funciona.

Comparte tus ideas si quieres. Ahora mismo la velocidad no es ningún problema (va bastante rápido), así que si se pierde algo de velocidad no pasa nada.


Tienes razón, visto lo visto tengo más oxidado el C de lo que pensaba. Y mira que tengo líneas de C y C++ que mantener en la oficina!!!. Lo que no sé es si ese WIN32 existirá en Windows de 64 bits, eso tendrás que averiguarlo tú. ;)

De entrada yo pensaba en un emulador completo, con el que puedas interactuar más o menos normalmente, es decir, que pudieras usarlo durante 2, 3, 5 o 10 minutos de juego (o de lo que sea) para luego sacar conclusiones. Una cosa chula (o a mi me lo parece) sería que se llevara la cuenta de accesos en ejecución, lectura y escritura para, al finalizar la ejecución, poder mostrar un mapa de la memoria del Spectrum desde el punto de vista de los accesos (ejecutarlo no cuenta como leerlo). De esa forma se sabría, incluso en programas no desarrollados por uno mismo, donde están los hot-spots, o sea, los lugares que más se ejecutan, los que más se leen, etc y hasta donde están las rutinas que se automodifican porque serían posiciones de memoria con muchas ejecuciones y con escrituras. Si ese mapa lo pintas de colorillos (usando una expresión de mi hija pequeña) puede quedar de lo más mono. :D

También se puede trazar automáticamente las direcciones desde donde se hacen in/outs, a qué puertos y que valores se envían/reciben. O el tiempo en ciclos de reloj en los que el programa está con las interrupciones deshabilitadas y cuantos ciclos con las int. habilitadas. O cuanto tiempo esás esperando un HALT para sincronizarte con las ints.

Si te apoyas en archivos de tipo SYM, podrías trazar los tiempos de todas las rutinas del programa, diferenciando incluso por ejecuciones. Todo esto generaría una cantidad brutal de datos, es obvio. Pero creo que la utilidad de esa información es innegable.

En fin, ya he lanzado algunas de las ideas más peregrinas, pero puedo seguir pensando en otras. -lol
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Empieza a jugar sin tener que compilar: Emulador JSpeccy

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Emulación del puerto $FF

Mensajepor mcleod_ideafix » 08 Ene 2014 03:58

zx81 escribió:
antoniovillena escribió:Ya está, le he hecho una ligera modificación porque el preprocesador no tiene ni idea de si existe tal función o no. En Windows funciona.

Comparte tus ideas si quieres. Ahora mismo la velocidad no es ningún problema (va bastante rápido), así que si se pierde algo de velocidad no pasa nada.


No creo si quiera que sea necesaria la compilación condicional para Windows. El único compilador que no reconoce strcasecmp() es Visual Studio (ya le vale). Tanto MingW2.95 como Pelles C tienen librerías POSIX con sus correspondientes funciones, listas para ser usadas en Windows. Pero si te quieres curar en salud, usa el símbolo _WIN32 para comprobar si estás en ese entorno o no.
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
antoniovillena
Mensajes: 122
Registrado: 18 Ago 2012 13:06

Re: Emulación del puerto $FF

Mensajepor antoniovillena » 08 Ene 2014 10:55

zx81 escribió:De entrada yo pensaba en un emulador completo, con el que puedas interactuar más o menos normalmente, es decir, que pudieras usarlo durante 2, 3, 5 o 10 minutos de juego (o de lo que sea) para luego sacar conclusiones. Una cosa chula (o a mi me lo parece) sería que se llevara la cuenta de accesos en ejecución, lectura y escritura para, al finalizar la ejecución, poder mostrar un mapa de la memoria del Spectrum desde el punto de vista de los accesos (ejecutarlo no cuenta como leerlo). De esa forma se sabría, incluso en programas no desarrollados por uno mismo, donde están los hot-spots, o sea, los lugares que más se ejecutan, los que más se leen, etc y hasta donde están las rutinas que se automodifican porque serían posiciones de memoria con muchas ejecuciones y con escrituras. Si ese mapa lo pintas de colorillos (usando una expresión de mi hija pequeña) puede quedar de lo más mono. :D

También se puede trazar automáticamente las direcciones desde donde se hacen in/outs, a qué puertos y que valores se envían/reciben. O el tiempo en ciclos de reloj en los que el programa está con las interrupciones deshabilitadas y cuantos ciclos con las int. habilitadas. O cuanto tiempo esás esperando un HALT para sincronizarte con las ints.

Si te apoyas en archivos de tipo SYM, podrías trazar los tiempos de todas las rutinas del programa, diferenciando incluso por ejecuciones. Todo esto generaría una cantidad brutal de datos, es obvio. Pero creo que la utilidad de esa información es innegable.

En fin, ya he lanzado algunas de las ideas más peregrinas, pero puedo seguir pensando en otras. -lol


Están muy bien pero, ¿no te sería más facil hacer la modificación sobre emulador completo como Fuse?. Lo digo porque Ticks no emula nada que no sea el Z80 y completarlo para convertirlo en un emulador completo te va a llevar más tiempo que partiendo de otro. Desde luego sería una utilidad interesante porque hasta hoy que yo sepa nadie lo ha hecho. Otra cosa sería cuántos usuarios estarían dispuestos a utilizarla y cuáles serían sus usos prácticos, pero ya te digo sólo con que la utilices tú y sólo por el mero hecho de hacerla es suficiente para darte por satisfecho.

Avatar de Usuario
antoniovillena
Mensajes: 122
Registrado: 18 Ago 2012 13:06

Re: Emulación del puerto $FF

Mensajepor antoniovillena » 08 Ene 2014 10:59

mcleod_ideafix escribió:No creo si quiera que sea necesaria la compilación condicional para Windows. El único compilador que no reconoce strcasecmp() es Visual Studio (ya le vale). Tanto MingW2.95 como Pelles C tienen librerías POSIX con sus correspondientes funciones, listas para ser usadas en Windows. Pero si te quieres curar en salud, usa el símbolo _WIN32 para comprobar si estás en ese entorno o no.


Pues yo uso el dmc.exe (compilador en C de digital mars) y tampoco me reconoce el strcasecmp. Mi compilador me reconoce (está definida) tanto WIN32 como _WIN32, ¿me recomiendas entonces que cambie WIN32 por _WIN32 para que funcione en más compiladores?

Avatar de Usuario
zx81
Mensajes: 134
Registrado: 23 Feb 2013 21:31

Re: Emulación del puerto $FF

Mensajepor zx81 » 08 Ene 2014 11:21

antoniovillena escribió:Están muy bien pero, ¿no te sería más facil hacer la modificación sobre emulador completo como Fuse?. Lo digo porque Ticks no emula nada que no sea el Z80 y completarlo para convertirlo en un emulador completo te va a llevar más tiempo que partiendo de otro. Desde luego sería una utilidad interesante porque hasta hoy que yo sepa nadie lo ha hecho. Otra cosa sería cuántos usuarios estarían dispuestos a utilizarla y cuáles serían sus usos prácticos, pero ya te digo sólo con que la utilices tú y sólo por el mero hecho de hacerla es suficiente para darte por satisfecho.


Desde el principio he dicho que quizá lo mejor sería tener un emulador, no modificar directamente ticks. A fin de cuentas, ticks es uno de tus niños y tú decides lo que le pones. Afortunadamente, tampoco necesito modificar Fuse, para lo que además necesitaría la autorización de su autor, porque para eso tengo mi propio emulador. :)

Sobre cuanta gente lo gastaría sería poca, eso seguro, porque los que desarrolláis para el Spectrum sois muchos menos de los que solo juegan. Me interesa más la opinión de los expertos del foro, si les parece útil o no y en qué forma. Lo de hacerlo o no... ya veríamos. Siempre he tenido el convencimiento de que el core Z80 que tiene JSpeccy debería ser bastante distinto dependiendo de la situación. Si es para jugar, uno. Si es para desarrollar, otro. El de "jugar" está más centrado en conseguir velocidad a toda costa, el otro debería hacer más fácil la depuración y traza de programas, y no es trivial.
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Empieza a jugar sin tener que compilar: Emulador JSpeccy


Volver a “Software Spectrum”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado