¿Alguien tiene un Spectrum real con DivMMC o similar?

Foro dedicado a la programación en todo tipo de sistemas clásicos.
mad3001
Dragon 32
Dragon 32
Mensajes: 18
Registrado: 31 Ago 2016, 21:36
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sony PlayStation 1
Primera consola: Sony PlayStation 1
Gracias dadas: 1 vez
Gracias recibidas: 11 veces

Re: ¿Alguien tiene un Spectrum real con DivMMC o similar?

Mensajepor mad3001 » 01 Feb 2021, 19:22

Raster escribió:Pues sí, se ve perfecto. Se quedan las 24 filas.

¡¡Muchas gracias!!

Por cierto, si te bajas el es.pectrum, en ese lo probé también y los timings del 48 y 128 parecen ser muy muy precisos.... y también se veía correctamente.

Además en modo debug puedes "ver" por donde va el traceado en pantalla en cada instrucción, lo cual para depurar código y rutinas de pantalla es una maravilla

http://www.habisoft.com/espectrum/

Avatar de Usuario
Raster
Spectrum 48K Plus
Spectrum 48K Plus
Mensajes: 37
Registrado: 25 Ene 2021, 21:28
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameBoy
Primera consola: Nintendo GameBoy
Gracias dadas: 10 veces
Gracias recibidas: 1 vez
Contactar:

Re: ¿Alguien tiene un Spectrum real con DivMMC o similar?

Mensajepor Raster » 01 Feb 2021, 22:17

Pues lo probaré. A ver si funciona con Wine. Gracias!

Avatar de Usuario
Raster
Spectrum 48K Plus
Spectrum 48K Plus
Mensajes: 37
Registrado: 25 Ene 2021, 21:28
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameBoy
Primera consola: Nintendo GameBoy
Gracias dadas: 10 veces
Gracias recibidas: 1 vez
Contactar:

Re: ¿Alguien tiene un Spectrum real con DivMMC o similar?

Mensajepor Raster » 01 Feb 2021, 23:06

Acabo de probarlo, y el resultado es... extraño. Me explico: se supone que la contienda bloquea cualquier acceso a memoria en los primeros 16K de RAM si no cae en los dos últimos Testados de cada acceso de la ULA, que dura 8Testados. Eso significa que una instrucción que intente acceder en cualquiera de los primeros 6 Testados se verá retrasada.

Yo tengo una ristra de 32 LDIs para copiar una fila entera de la pantalla, y se supone que LSI dura 16Testados, que es un múltiplo de 8, lo que significa que debería retrasarse sólo la primera, y el resto deberían encajar con precisión en los Testados que deja la ULA. Sin embargo, en Es.pectrum veo que cuando los LDIs caen durante la generación de la imagen, tardan 24Testados en lugar de 16... se retrasan ocho Testados completos...

¿Alguien sabe por qué ocurre esto? Ya tuve la precaución de poner el origen de los datos en los 32Kbytes superiores para que sólo la escritura sufra la contienda...

Avatar de Usuario
Kyp
Commodore 128
Commodore 128
Mensajes: 87
Registrado: 31 Dic 2013, 12:42
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: Vectrex
Gracias dadas: 6 veces
Gracias recibidas: 4 veces

Re: ¿Alguien tiene un Spectrum real con DivMMC o similar?

Mensajepor Kyp » 01 Feb 2021, 23:26

Raster escribió:se supone que la contienda bloquea cualquier acceso a memoria en los primeros 16K de RAM si no cae en los dos últimos Testados de cada acceso de la ULA, que dura 8Testados. Eso significa que una instrucción que intente acceder en cualquiera de los primeros 6 Testados se verá retrasada.

De cada 8 estados la ULA bloquea los 6 últimos y deja libre a la CPU los dos primeros. Al menos la ULA real lo hace así, desde el punto de vista de un emulador igual es diferente, pero no creo.

Avatar de Usuario
Raster
Spectrum 48K Plus
Spectrum 48K Plus
Mensajes: 37
Registrado: 25 Ene 2021, 21:28
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameBoy
Primera consola: Nintendo GameBoy
Gracias dadas: 10 veces
Gracias recibidas: 1 vez
Contactar:

Re: ¿Alguien tiene un Spectrum real con DivMMC o similar?

Mensajepor Raster » 02 Feb 2021, 00:07

Sí, sí... pero una vez que ha retrasado una instrucción, el resto deberían encajar en los huecos siguientes porque duran 16Testados. De todas formas creo que ya se por qué ocurre: parece que LDI deja la dirección de DE durante los últimos 5 Testados de la instrucción, cuando lo normal es que esté sólo durante 3. Eso debe liar a la ULA y disparar el retardo. Lo que significa que LDI no es la manera más rápida de copiar a pantalla porque necesita 24 Testados.

Se que la ULA se basa únicamente en las señales A14 y A15, y MREQ para decidir cuando hacer contienda. Por eso sospecho que debe ser eso.
Última edición por Raster el 02 Feb 2021, 01:17, editado 1 vez en total.

Avatar de Usuario
Raster
Spectrum 48K Plus
Spectrum 48K Plus
Mensajes: 37
Registrado: 25 Ene 2021, 21:28
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameBoy
Primera consola: Nintendo GameBoy
Gracias dadas: 10 veces
Gracias recibidas: 1 vez
Contactar:

Re: ¿Alguien tiene un Spectrum real con DivMMC o similar?

Mensajepor Raster » 02 Feb 2021, 00:09

De hecho, me estoy mirando los "casos raros" y son un montón. Eso puede explicar por qué mi emulador no consigue buena precisión de la pantalla. https://sinclair.wiki.zxnet.co.uk/wiki/Contended_memory


Volver a “Programación”

¿Quién está conectado?

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