Página 1 de 3

Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 20:39
por zx81
Hola a todos,

He publicado un vídrio en yutup, el primero de mi canal, donde enseño el pequeño proyecto que ando perfilando antes de hacerlo público de verdad.

Aquí va la URL:

Se agradecerían opiniones y puede que hasta algún ofrecimiento de betatesters, que de eso siempre anda uno escaso.

No tengo guatsap, ni tuity, pero me podéis encontrar en el canal #spectrum del IRC-Hispano, que eso aún existe y es de lo más retro... ;)

Re: Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 21:06
por rcmolina
Yo me ofrezco a ser betatester para tu proyecto zxbaremulator :D

Re: Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 21:07
por shikitin
Pues d.p.m. :)
Veo que has resuelto el tema del teclado via usb, el proyecto de Antonio Villena lo dejé aparcado por eso, por que habia que hacerse teclado via gpios.
Espero que lo saques pronto y nos cuentes mas cosas, como cargas, snas, taps, etc., audio out y todo eso.
Muy buena noticia, enhorabuena. ;)

Re: Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 21:31
por javier2112
Gran trabajo. Hacer un emulador ¿sin usar sistema operativo? debe de ser aún más complicado, aunque me imagino que de alguna base habrás partido ¿O es que te has programado también un núcleo para la raspberry?

Por cierto, quizá vendría bien alguna explicación, porque sólo con el vídeo no se aprecia bien de qué se trata.


Saludos.


PD. Algo parecido existe para PC: ZX Emulator by Emanuele Cammarata, aunque no recuerdo que se pudiera cargar software de ninguna manera como en el tuyo.

Re: Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 22:07
por zx81
Es exactamente lo que parece, un emulador bare-metal para las Raspberry PI. Como dijo Isaac Newton, si pude ver más lejos es porque me subí a hombros de gigantes. Y así ha sido esta vez. Llevaba tiempo colaborando con el autor de una librería escrita en C++ que permite desarrollar aplicaciones bare-metal para la PI, la librería Circle. Una vez tuve el core Z80 en C++, ya ha sido cuestión de días. Aún me quedan por acabar algunos detallitos para sacar la versión 1.0, pero lo que va, va bien.

En lo que menos esperanza tenía era en el sonido, principalmente porque absolutamente nadie sabe cómo usar el HDMI para sacar sonido por la tele, que podría ser estéreo a 192 kHz de sampling con muestras de 24 bits, una animalada. Pero, ya que eso es imposible a día de hoy, he tenido que conformarme con el sonido por PWM. Y hasta el autor de la librería está agradablemente sorprendido del buen resultado obtenido, porque el soporte es de lo más básico (y he peleado de lo lindo con ello).

La idea del emulador era, sobre todo, conseguir una precisión muy alta, imposible de conseguir con un S.O. de propósito general como Linux. De hecho, estimo que la precisión en tiempos anda por los +/- 2 o 3 microsegundos por frame. Ojito, que la capa USB es delicada y ella sola te puede quitar la CPU cuando quiere por lo menos un milisegundo.

Parte de eso lo he resuelto en la PI 2/3 dejándole a la CPU-0 manejar las interrupciones y el USB y utilizando la CPU-1 para el núcleo de la emulación. De momento, los núcleos 2 y 3 los dejo durmiendo el sueño de los justos.

Supongo que esto debería ser un proyecto a medio-largo plazo, porque dependiendo de la funcionalidad que se le de, habría mucho o muchísimo trabajo por hacer. Y eso que a nivel de emulación está como mi emulador Java, aunque limitado al 48k: emulación exacta del Z80, memoria contenida, bus flotante, dibujado con precisión tanto del borde como de la pantalla (y sin dobles buffers). Pasa todos los tests que conozco y, para ser bare-metal, funciona durante horas sin colgarse.

Lo que carga son TAP's de forma acelerada (lo que de el núcleo de la PI), así se conserva la pantalla de carga al menos, que siempre mola verla.

En su momento lo avisaré, pero los betatesters que sepan que necesitaré comprobar el acceso a la SD, y puede que más de una se quede inoperativa pá los restos. Esto es bare-metal y los errores se pagan a conciencia.

Si todo va bien, espero sacar la versión 1.0 para finales de mes como mucho. Porque si me ciego a ir añadiéndole cosas, no veréis nada hasta las navidades de 2031... :D

Re: Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 22:29
por wilco2009
Moooola!!! :o

¿Funciona en una Pi Zero?

Re: Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 22:35
por zx81
wilco2009 escribió:Moooola!!! :o

¿Funciona en una Pi Zero?
Sep, pero debo recordar que la PI Zero no tiene salida de audio, como las otras. Por lo demás, es como una B+ pero con la CPU a 1 Ghz en lugar de a 700 Mhz. De hecho, lo han probado en una Zero, porque yo no tengo.

Re: Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 22:48
por javier2112
zx81 escribió:Es exactamente lo que parece, un emulador bare-metal para las Raspberry PI.
(...)
Lo he mirado en la wikipedia. Nunca había oído ese término. Me refería a que quizá haya personas que no sepan de qué va eso.


Saludos.

Re: Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 23:02
por zx81
javier2112 escribió:
zx81 escribió:Es exactamente lo que parece, un emulador bare-metal para las Raspberry PI.
(...)
Lo he mirado en la wikipedia. Nunca había oído ese término. Me refería a que quizá haya personas que no sepan de qué va eso.


Saludos.
Se refiere, como ya ha comentado el propio Carmeloco, de un emulador que NO necesita sistema operativo instalado para funcionar. Simplemente, copias el "kernel" a la SD y arrancas la PI directamente en el emulador. El término "bare-metal" se podría traducir como "metal desnudo", o sea, manejarse con el hardware a pelo. Eso es, paradójicamente, bastante complicado de hacer en la PI porque la documentación del hardware es muy poca y llena de erratas. Por eso, alguna gente se ha pasado a la BeagleBone Black, está muchísimo mejor documentada para jugar como un bestia con casi todo. Tentado estoy yo de hacerme con una, ahora que vuelve a haber stock...

Re: Este es mi último proyecto Spectrumaniaco

Publicado: 21 Feb 2017, 23:15
por alvaroalea
zx81 escribió:
wilco2009 escribió:Moooola!!! :o

¿Funciona en una Pi Zero?
Sep, pero debo recordar que la PI Zero no tiene salida de audio, como las otras. Por lo demás, es como una B+ pero con la CPU a 1 Ghz en lugar de a 700 Mhz. De hecho, lo han probado en una Zero, porque yo no tengo.
Por tocar los OO un poco, hasta donde yo se la salida de sonido "analogica" de los raspberry pi, es por medio de dos gpio usando PWM, con una red RC, en el raspberry pi zero, esta red no esta, pero si unas gpio similares, por lo que es muy facil añadir la salida de audio analogico al raspberry pi Zero:
https://learn.adafruit.com/introducing- ... io-outputs
https://learn.adafruit.com/adding-basic ... o/overview
https://learn.adafruit.com/adding-basic ... -pwm-audio