Adelanto de en lo que estoy trabajando

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Adelanto de en lo que estoy trabajando

Mensaje por mcleod_ideafix » 09 Mar 2017, 18:40

En pocas palabras: DMA. DMA para hacer transferencias de memoria a memoria, de memoria a I/O, de I/O a memoria, o incluso de I/O a I/O. Estas son las caracter'isticas actuales (sujetas a modificación según salgan las pruebas):

- Memoria a memoria: hasta 64KB de datos, desde cualquier dirección a cualquier dirección, dentro del espacio direccionable por la CPU, con una tasa de transferencia de 6,675 MB/s. Una pantalla estándar (6912 bytes) se transfiere desde cualquier parte de la memoria en menos de 1 milisegundo.

- Memoria a I/O e I/O a memoria: puede transferir un bloque de memoria de hasta 64KB a un único puerto de I/O. La velocidad de transferencia, suponiendo que el periférico no inserte estados de espera, es de 5,34 MB/s. Por ejemplo, leer un sector de una tarjeta SD se haría en menos de 100 microsegundos.

- Todas las transferencias pueden ser o bien en modo ráfaga, en donde el controlador DMA toma el control del bus parando a la CPU durante la transferencia, y haciendo ésta a la máxima velocidad, o bien en modo temporizado, en donde se especifica con qué frecuencia (cuantos bytes por segundo) se hará. Esta frecuencia se programa mediante un preescaler, que opera con la fómula: preescaler = 28000000 / frecuencia

- En el caso de las transferencias temporizadas, se puede especificar si se quiere que el controlador autocomience de nuevo la transferencia una vez que la termina, o no. La ventaja de este método es que no para a la CPU, así que la transferencia DMA y la CPU siguen funcionando a la par.

- También se puede especificar una dirección de memoria, fuente o destino, de tal forma que cuando el controlador de DMA llega a esa dirección de memoria, se activa un flag en un registro de estado que puede ser consultado por el procesador. Esto permite a un programa saber cuándo el DMA ha comenzado, o terminado de transferir una parte de un buffer. Con esta información, y la capacidad de la DMA de autorrecomenzar una transferencia, es posible implementar bufferes DMA circulares que son actualizados por el software a medida que la DMA los va usando.

He escrito un comando ESXDOS que permite reproducir ficheros WAV de 8 bits y que tengan una frecuencia de muestreo de 15.625 kHz usando para ello otra de las novedades que ya de hecho estaba en las últimas revisiones del T24, el SpecDrum. El programa puede mejorarse para que acepte otros formatos, pero de momento, lo que quería era ver que funcionaba. La frecuencia de muestreo es esa porque en su primera encarnación, este comando no usaba DMA para el sonido, sino la interrupción ráster, que puede funcionar con una velocidad máxima de una interrupción por scanline de pantalla, de ahí que fuera esa la frecuencia usada :)

El nuevo comando (con su código fuente), en el directorio software/dma
El core experimental está en la parte de cores de Spectrum, y es el EXP25 (EXP de experimental). El .ZX1, y .BIT están en v4 como siempre.

Este core es experimental. No deberíais usarlo como core principal, salvo que tengais a mano alguna herramienta para desbrickear el aparato en caso de comportamientos extraños.

Si escuchais chasquidos durante la reproducción, se debe a ESXDOS, que se empeña en usar un registro de E/S del ZX Badaloc, y que aquí no existe, claro está. Lo malo es que el Badaloc usa los mismos puertos que SpecDrum, y colisionan. Se puede solucionar esto usando el UnoDOS de Andrew Owen, que no usa para nada esos puertos, o parcheando la ROM de ESXDOS. Si alguien prefiere seguir usando ESXDOS, le cuento cómo parchearla, que es sencillo.

phpBB [media]
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

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

Re: Adelanto de en lo que estoy trabajando

Mensaje por chernandezba » 09 Mar 2017, 19:05

Bien!!!! Especificaciones de esto para que pueda emularlo?
----

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

Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Re: Adelanto de en lo que estoy trabajando

Mensaje por carmeloco » 09 Mar 2017, 19:38

Vaya curro. Entiendo que el DMA, solo lo usaría software nuevo.

Por cierto, lo del parcheo de la rom de EsxDOS me interesa. ;)

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Adelanto de en lo que estoy trabajando

Mensaje por mcleod_ideafix » 09 Mar 2017, 20:46

carmeloco escribió:Vaya curro. Entiendo que el DMA, solo lo usaría software nuevo.
Obviamente, como muchas de las cosas que tiene nuevas el ZX-UNO :D
carmeloco escribió:Por cierto, lo del parcheo de la rom de EsxDOS me interesa. ;)
Luego pongo detalles.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Adelanto de en lo que estoy trabajando

Mensaje por mcleod_ideafix » 09 Mar 2017, 20:48

chernandezba escribió:Bien!!!! Especificaciones de esto para que pueda emularlo?
Puedes hacerte una idea mirando el código fuente del nuevo comando, pero de todas formas, en cuanto la especificación esté terminada y esto pase a ser un Txx en lugar de un EXPxx entonces publicaré las especificaciones en la wiki, como siempre.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

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

Re: Adelanto de en lo que estoy trabajando

Mensaje por chernandezba » 09 Mar 2017, 20:50

mcleod_ideafix escribió:
chernandezba escribió:Bien!!!! Especificaciones de esto para que pueda emularlo?
Puedes hacerte una idea mirando el código fuente del nuevo comando, pero de todas formas, en cuanto la especificación esté terminada y esto pase a ser un Txx en lugar de un EXPxx entonces publicaré las especificaciones en la wiki, como siempre.

Ok me esperaré entonces :)

Gracias!
----

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

Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: Adelanto de en lo que estoy trabajando

Mensaje por desUBIKado » 09 Mar 2017, 21:30

mcleod_ideafix escribió:Se puede solucionar esto usando el UnoDOS de Andrew Owen, que no usa para nada esos puertos, o parcheando la ROM de ESXDOS.
Los que estáis usando el UnoDOS 3 (beta 3) de Andrew Owen en lugar del ESXDOS del "crowdfunding", ¿lo consideráis suficientemente estable? y ¿qué cosas se ganan y qué cosas se pierden por pasar a usar el UnoDOS 3? Gracias.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Adelanto de en lo que estoy trabajando

Mensaje por antoniovillena » 09 Mar 2017, 22:17

Si necesitáis parchear ESXDOS aquí tenéis un desensamblado funcional de la versión 0.8.5

https://sourceforge.net/p/emuscriptoria ... ee/esxdos/

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Adelanto de en lo que estoy trabajando

Mensaje por mcleod_ideafix » 09 Mar 2017, 23:02

Para parchear la ROM del ESXDOS: se necesita un editor hexadecimal, tal como por ejemplo, HxD
https://mh-nexus.de/en/hxd/

Abrid el firmware de ESXDOS (esxmmc.bin) que quereis parchear con el editor.

Haced una búsqueda hexadecimal de la siguiente secuencia
01 DF 24
(en HxD se pondría así separado, o todo junto, como querais)

En la ventana principal del editor, a continuación de la primera vez que aparece, tienes la secuencia ED 79. Sustituye esa secuencia por 00 00. Se sobreeescriben los valores. Nunca se insertan o borran.

Dale a que busque la siguiente ocurrencia de la secuencia a buscar (normalmente esto se hace pulsando F3)

Después de la segunda vez que la encuentra, hay una secuencia que es ED 78. Esa no la tocamos, pero si miramos un poquito más adelante encontramos otro ED 79. Como en el caso anterior, sustituir por 00 00.

Y listo. Se graban los cambios, se renombra el fichero como ESXDOS.ZX1 y se vuelve a grabar en la Flash desde la BIOS.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Adelanto de en lo que estoy trabajando

Mensaje por mcleod_ideafix » 09 Mar 2017, 23:05

desUBIKado escribió:
mcleod_ideafix escribió:Se puede solucionar esto usando el UnoDOS de Andrew Owen, que no usa para nada esos puertos, o parcheando la ROM de ESXDOS.
Los que estáis usando el UnoDOS 3 (beta 3) de Andrew Owen en lugar del ESXDOS del "crowdfunding", ¿lo consideráis suficientemente estable? y ¿qué cosas se ganan y qué cosas se pierden por pasar a usar el UnoDOS 3? Gracias.
Esa pregunta es para Andrew Owen. A ver si se pasa por este hilo y te puede contestar. Una de las cosas que sé que se gana, es que ya no necesitas ningún fichero en la SD para que arramque UnoDOS. Tiene todo lo que se necesita en el firmware. Algunos comandos se han hecho internos. Su intención es usarlo junto con su Open SE.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Responder