Primeros pasos para pogramar un emulador

Foro dedicado a la emulación de sistemas clásicos en el PC o en otros sistemas.
ZX-81
Commodore 128
Commodore 128
Mensajes: 102
Registrado: 04 Ene 2013, 16:43
Sistema Favorito: Spectrum +2
primer_sistema: ZX81
consola_favorita: Nintendo DS/3DS
Primera consola: Sega Genesis/Megadrive
Ubicación: La orilla del mar Mediterráneo
Gracias dadas: 11 veces
Gracias recibidas: 19 veces
Contactar:

Re: Primeros pasos para pogramar un emulador

Mensajepor ZX-81 » 21 Oct 2018, 00:09

Con los fuentes del emulador Fuse va un programa de test llamado, como no, fusetest. Utiliza un programa muy simple para ir ejecutando las instrucciones una a una y comparar los resultados contra un archivo de idem que también va con el test.

Como no ejecuta ninguna ROM, sino que es externo e independiente del Spectrum, solo tendrías que crearte el programa que use tu core Z80 y hacer que vaya ejecutando test a test. Yo lo usé bastante cuando programé mi primer core Z80 en Java.
Todo espacio de dimensión finita distinta de cero con producto interno tiene una base ortonormal. Tiene sentido, cuando no piensas sobre ello.
Profesor de Matemáticas U.C. Berkeley

Empieza a jugar sin tener que compilar: JSpeccy
Emulador bare-metal para la Raspberry PI 2/3: ZXBaremulator

Avatar de Usuario
Bubu
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 584
Registrado: 04 Abr 2018, 23:10
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Atari 2600
Primera consola: Nintendo GameBoy
Gracias dadas: 13 veces
Gracias recibidas: 19 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor Bubu » 21 Oct 2018, 18:47

Descargado el fuse de aquí (el source, vaya): https://sourceforge.net/projects/fuse-emulator/

y no hay ningún archivo ni carpeta llamada fusetest. Sólo una carpeta test, pero está en C, y creo que es para probar este emulador, no el Z80. ¿Tú me podrías pasar un enlace donde venga el fusetest?
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!

Avatar de Usuario
PabloMarmol
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 144
Registrado: 03 Sep 2012, 17:32
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
Primera consola: Nintendo NES/Clónica
Ubicación: León, España
Gracias dadas: 6 veces
Gracias recibidas: 6 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor PabloMarmol » 21 Oct 2018, 20:06


Avatar de Usuario
Bubu
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 584
Registrado: 04 Abr 2018, 23:10
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Atari 2600
Primera consola: Nintendo GameBoy
Gracias dadas: 13 veces
Gracias recibidas: 19 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor Bubu » 21 Oct 2018, 20:47

Nada. Al compilar el fusetest.asm da error en el archivo tests.asm pues se define 2 veces la misma etiqueta: _data


Ya podían haber distribuido el fusetest.z80 compilado, y no el fuente pa tener que compilarlo, leñe.
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!

ZX-81
Commodore 128
Commodore 128
Mensajes: 102
Registrado: 04 Ene 2013, 16:43
Sistema Favorito: Spectrum +2
primer_sistema: ZX81
consola_favorita: Nintendo DS/3DS
Primera consola: Sega Genesis/Megadrive
Ubicación: La orilla del mar Mediterráneo
Gracias dadas: 11 veces
Gracias recibidas: 19 veces
Contactar:

Re: Primeros pasos para pogramar un emulador

Mensajepor ZX-81 » 23 Oct 2018, 23:34

Ains, es lo que pasa por contestar de memoria. Está aquí: https://sourceforge.net/p/fuse-emulator ... /tree/z80/

y se llama coretest.c, y el fichero de pruebas está en el subdirectorio "test" con el nombre "tests.in".

El fusetest.asm forma parte de otros programas de test para el Spectrum, pero el coretest solo evalúa el core Z80, sin Spectrum que valga.

I'm sorry....
Todo espacio de dimensión finita distinta de cero con producto interno tiene una base ortonormal. Tiene sentido, cuando no piensas sobre ello.
Profesor de Matemáticas U.C. Berkeley

Empieza a jugar sin tener que compilar: JSpeccy
Emulador bare-metal para la Raspberry PI 2/3: ZXBaremulator

Avatar de Usuario
Bubu
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 584
Registrado: 04 Abr 2018, 23:10
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Atari 2600
Primera consola: Nintendo GameBoy
Gracias dadas: 13 veces
Gracias recibidas: 19 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor Bubu » 23 Oct 2018, 23:44

Pero, torpedo, el coretest.c está en C, no en Z80. Lo que yo ando buscando es un pograma en lenguaje ensamblador del Z80 (un pograma en .z80, vaya) de tal manera que se lo trague direstamente el emulador que sea, y que en pantalla me diga si está emulando bien las instrucciones z80 o no.
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!

Avatar de Usuario
chernandezba
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 221
Registrado: 11 Mar 2015, 10:42
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: ZX81
consola_favorita: NeoGeo
Primera consola: Atari 2600
Gracias dadas: 10 veces
Gracias recibidas: 60 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor chernandezba » 24 Oct 2018, 09:25

Bubu escribió:Pero, torpedo, el coretest.c está en C, no en Z80. Lo que yo ando buscando es un pograma en lenguaje ensamblador del Z80 (un pograma en .z80, vaya) de tal manera que se lo trague direstamente el emulador que sea, y que en pantalla me diga si está emulando bien las instrucciones z80 o no.



https://github.com/chernandezba/zesarux ... trum/tests
Los que empiezan con el nombre z80*

Mi preferido es el z80tests.tap
https://github.com/chernandezba/zesarux ... 0tests.tap
----

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

ZX-81
Commodore 128
Commodore 128
Mensajes: 102
Registrado: 04 Ene 2013, 16:43
Sistema Favorito: Spectrum +2
primer_sistema: ZX81
consola_favorita: Nintendo DS/3DS
Primera consola: Sega Genesis/Megadrive
Ubicación: La orilla del mar Mediterráneo
Gracias dadas: 11 veces
Gracias recibidas: 19 veces
Contactar:

Re: Primeros pasos para pogramar un emulador

Mensajepor ZX-81 » 25 Oct 2018, 20:01

Bubu escribió:Pero, torpedo, el coretest.c está en C, no en Z80. Lo que yo ando buscando es un pograma en lenguaje ensamblador del Z80 (un pograma en .z80, vaya) de tal manera que se lo trague direstamente el emulador que sea, y que en pantalla me diga si está emulando bien las instrucciones z80 o no.


A ver, perlita de Huelva, olvídate del Spectrum de momento. Lo que tú necesitas ahora es algo que te permita probar tu core Z80 con independencia de todo lo demás. Casi todos los test basados en el Spectrum necesitan la ROM del Spectrum y si ni siquiera te arranca la ROM mal lo tienes.

La idea que te daba es que convirtieras el coretest de C a BASIC y que usaras el test.in para comprobar instrucción a instrucción, con independencia total de tu emulación básica del Spectrum, que a saber si está bien o no.

Otra opción es esta: https://github.com/jsanchezv/z80cpp/tree/master/example

Es un núcleo mínimo que permite ejecutar un programa de test escrito para CP/M... sin CP/M. Y con él ejecutas el programa ZEXALL.BIN que es un binario de Z80 tal y como lo necesita CP/M. Tendrías que convertir el programa z80sim.cpp de C++ a BASIC, unirlo a tu core Z80 y ejecutar el ZEXALL.BIN. Eso sí, te advierto que el test de Patrick Rak intenta ser (y es) una mejora sustancial al ZEXALL y su pareja ZEXDOC, siendo más fino y rápido. Pero el z80sim.cpp es muy simple, puedes implementarlo en BASIC en un pis-pas y al menos te dará una idea de en qué bloques de instrucciones tienes problemas. Una vez tengas un core Z80 mínimamente depurado, quizás puedas intentarlo con el test de Patrick.

O aislas las fuentes de los problemas o te volverás loco, avisado estás. :mrgreen:
Todo espacio de dimensión finita distinta de cero con producto interno tiene una base ortonormal. Tiene sentido, cuando no piensas sobre ello.
Profesor de Matemáticas U.C. Berkeley

Empieza a jugar sin tener que compilar: JSpeccy
Emulador bare-metal para la Raspberry PI 2/3: ZXBaremulator

Avatar de Usuario
Namek
Atari 1040 STf
Atari 1040 STf
Mensajes: 648
Registrado: 11 Jul 2011, 13:13
Gracias dadas: 12 veces
Gracias recibidas: 32 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor Namek » 25 Oct 2018, 23:57

Para probar todos los posibles resultados de DAA:

org 30000
ld bc,0
ld de,0
loop:
push bc
pop af
daa
ld e,a
djnz loop
ret

Para ver las variantes con los flags C y H habria que cambiar el "ld bc,0" a 1 para C, a 16 para H y a 17 para C y H.


Volver a “Emuladores”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados