Cacharreando con el clon de Superfo ;)

Si por algo se caracteriza el Spectrum es por su gran variedad de periféricos (clásicos y modernos)

Moderador: Sir Cilve Sinclair

Re: Cacharreando con el clon de Superfo ;)

Notapor mcleod_ideafix el Mar Abr 03, 2012 9:57 pm

flopping escribió:¿Has visto algo de ese trabajo de los alemanes sobre el acid? Y si es verdad que lo tenían, ¿Por que no lo enseñan antes de que otro lo saque a la luz?, en fin, lo dicho hablar de que tengo esto o lo otro es muy sencillo, pero demostrarlo, ya no lo es tanto, ¿No crees?


Antes de que liberara el código en Verilog, lo que sabía era esto:
- Que No$Cash había sacado el algoritmo en que se basa el ACID por ingeniería inversa y lo había publicado.
- Que dos tíos en no-se-qué party habían implementado el ACID en una CPLD y había fotos del invento funcionando, o medio funcionando, pero ni una sola noticia en los foros "oficiales".
- Que esos mismos dos tíos escriben en un foro de Amstrad y dicen lo del ACID en la CPLD de pasada, y por supuesto sin liberar código ni decir nada más.

Tras sacar yo lo del ACID y publicar la descripción Verilog en mi web:
- Los dos notas, arropados por parte de este foro del que te hablo, se erigen en "los primeros" que lo hicieron, y muestran un código, también Verilog, con la descripción de su ACID. Dicha descripción por lo que pude leer, tenía cantidad de código de depuración (no mi descripción, que es "final": funciona y punto)
- Sacan además otra solución, muy imaginativa debo decir, por la cual aprovechando cierto bug del ASIC del CPC464+ se consigue que el aparato funcione sin meter ningún ACID (ni original ni clonado).

Estas dos cosas... ¿Dónde estaban? ¿Por qué no las sacaron a la luz? ¿Que ganaban con ocultarlas? Ni idea, y la verdad, no me importa.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3158
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Sevilla

Re: Cacharreando con el clon de Superfo ;)

Notapor mcleod_ideafix el Mar Abr 03, 2012 9:59 pm

flopping escribió:Muy buen trabajo si señor, supongo que no habras podido probar aun la compatibilidad, ¿no?

Dejando aparte el tema de que el Z80 no tiene todas todas todas las instrucciones del original, lo demás es 100% Spectrum 128K. Las cosas que no funcionen no lo harán por culpa del soft-core del Z80.

flopping escribió:Pues nada, a seguir "investigando", aunque ya te queda "poco" que hacer, ¿quiza un spectrum con 512k, compatible conpentagon, escorpion y demas clones rusos?, por soñar que no quede, jejejeje, salu2.

Bueno, teniendo espacio en la FPGA, el límite es el cielo, que dirían los americanos. Pero no, no van por ahí mis intereses. Luego lo explicaré.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3158
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Sevilla

Re: Cacharreando con el clon de Superfo ;)

Notapor mcleod_ideafix el Mar Abr 03, 2012 10:15 pm

sromero escribió:Ahora bien, al respecto de lo que está haciendo mcleod_ideafix, a mí me basta y sobra con que lo está haciendo. Y lo está haciendo PORQUE SÍ. Porque cada pasito que da, desentraña un poco más los misterios del Spectrum, a un nivel parecido al libro de la ULA de Chris Smith, al nivel de que como resultado de todo lo que hace, quede totalmente documentada hasta la última coma del Spectrum, de donde sale cada ciclo, qué aspecto tiene cada señal, cuándo se produce qué y por qué ...


Hombre! Alguien que ha captado la esencia de todo esto :)

A ver: voy a aclarar un poco las cosas para evitar que cunda un "hype" que no pretendía:

Este hilo va de cacharrear con el clon de Superfo. Ahora bien, cacharrear se puede hacer de muchas formas. Yo he escogido una que podemos denominar "de guante blanco".

Consiste en que en lugar de montar una placa, y luego llenarla de cable wire-wrapping, cortes en pistas, placas arriba y abajo con remiendos, chips, y tal, hago todos esos remiendos, pruebas y demás en una versión Verilog de la placa, que es lo que he estado haciendo.

A partir de un Spectrum 48K 100% Verilog, comienzo a probar cosas (como por ejemplo lo del Timex). Algunas de estas pruebas darán lugar a añadidos a la ULA o al sistema en general que tendrá sentido incorporar al clon de Superfo. Otras de estas pruebas nunca verán la luz (por mi parte) en dicho clon, y se quedarán en su descripción Verilog, o directamente se comentarán en el código.

En ningún momento he pretendido insinuar que de esto salga un "Spectrum-on-a-chip". Eso es algo que quizás haga, quizás no, o quizás haga otra persona. Ahora mismo, ni me lo planteo. El único momento en que me lo he planteado desde que comencé esto es para estimar el precio de dicho "superclon", y mi estimación ha sido eso, 80 euros (por lo bajo) y en ningún momento he hablado de SD ni mucho menos salida VGA. Al clon que estoy haciendo en Verilog igual le pongo soporte de SD compatible ZXMMC, pero no será antes de convertirlo en un +2A con el soporte de paginación "especial" de Amstrad. Ponerle una SD a un 48K no sirve de nada salvo que exista alguna versión de la ROM de 48K que permita usar la SD, navegar por los ficheros, etc. Que yo sepa no existe, y no seré yo el que escriba tal código.

Todo esto que estoy haciendo es por tanto usar la FPGA como una "sand box", es decir, como una herramienta para probar de forma rápida modificaciones al diseño. ¿Para qué? Por varios motivos:
- En mi teis doctoral uso lógica configurable y necesito "entrenarme" realizando sistemas completos.
- Tenía ganas de hacerme un clon FPGA :)
- Para algunas de estas modificaciones SI que tengo intención de implementarlas en la placa del clon Superfo, usando para ello una CPLD. Si el resultado es bueno y hay demanda, no descarto que los interesados nos pongamos de acuerdo para solicitar una pequeña tirada de la plaquita que haga, para que quien así lo desee incorpore estas (u otras) modificaciones a su clon.

Pues eso :)
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3158
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Sevilla

Re: Cacharreando con el clon de Superfo ;)

Notapor flopping el Mie Abr 04, 2012 8:01 pm

¿Algun avance nuevo?, es que como nos has "mal acostumbrado" a tener novedades todos los dias, se me hace "raro" el no ver nada posteado, jajajaja....
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, debido a la esquizofrenia paranoide que tengo.
(C) 1982-2013, 31 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente"
Avatar de Usuario
flopping
Freddy Hardest
 
Mensajes: 839
Registrado: Vie Jul 16, 2010 9:54 am

Re: Cacharreando con el clon de Superfo ;)

Notapor mcleod_ideafix el Mie Abr 04, 2012 10:38 pm

Pues que he empezado a modificar la ULA para que sea ULA+ . De momento he empezado por convertir las salidas RGB de digitales a analógicas usando tres codificadores sigma-delta funcionando a 56MHz (lo mínimo que se despacha para poder convertir una señal digital de 3 bits que puede llegar a tener una frecuencia de 3.5MHz). Ahora el cable no hace ninguna mezcla de brillo con color, sino que la mezcla se hace digitalmente en la FPGA, y ésta siempre saca 3 bits por cada color primario, indpendientemente de que esté comportándose como ULA o como ULA+. Con 3 bits de color además modelo un ratio de intensidad no brillo/brillo más cercana a la original de Sinclair (un 70%). Un color sin brillo saldrá con el valor 101 (5), y si tiene brillo, 111 (7). El ratio es 5/7 = 71.42%

Luego he incorporado al diseño una pequeña RAM de 64 bytes, donde irá la paleta. Esta RAM la he inicializado con los valores de una paleta de tonos de verde. Así cuando active la ULA+ deberé ver, si lo he hecho todo bien, una imagen como en verde y negro. Esto de poder darle datos iniciales a la RAM lo puedo hacer aquí porque esa RAM va dentro de la FPGA, y todo lo que va dentro de la FPGA puede tener un valor inicial (como los 32K de ROM que en realidad son RAM a la que se le ha "cortado" el pin de escritura)

He hecho también un cambio en el comportamiento interno de la ULA. Resulta que cuando toca leer la memoria de pantalla primero se lee un byte de bitmap y acto seguido, uno de atributos. Pues bien, he invertido esa secuencia, para que primero se lea un byte de atributos y luego el de bitmap. Con esto consigo que mientras se lee el bitmap (cosa que dura unos 285ns) en paralelo estoy realizando dos accesos seguidos a la memoria de paleta para obtener el color actual de paper y el de ink, y los cargo en sendos registros, que viajan en paralelo a los valores de bitmap y de atributo "normal". Este cambio de orden no afecta para nada ni a la contención ni a los efectos hicolor.
Haciéndolo así (y si lo del borde que explicaré a continuación no lo impide) sólo necesito una memoria estática que tenga un tiempo de acceso de unos 120ns o menor para implementar la paleta. Con una memoria 6116 voy sobrado :)

Preveo que lo más complicado de implementar va a ser el color del borde en la ULA+. El problema es que el color del borde se está consultando continuamente cuando se está pintando. Si cambias en la paleta la entrada que le corresponde al color del borde que se está pintando en ese momento, ese cambio debe reflejarse en el momento, y no la próxima vez que hagas un OUT al puerto 254 para cambiar el valor del borde. Conseguir que esto funcione es más peliagudo (al menos para mi).

Ah! el soporte de ULA+ irá parejo al soporte hicolor compatible Timex. Esto significa que la definición en color será aún mejor que con la ULA+ "normal". Estas dos cosas son las que espero poder incorporar fisicamente a la placa de Superfo.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3158
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Sevilla

Re: Cacharreando con el clon de Superfo ;)

Notapor Z80user el Jue Abr 05, 2012 12:20 am

mcleod_ideafix escribió:Preveo que lo más complicado de implementar va a ser el color del borde en la ULA+. El problema es que el color del borde se está consultando continuamente cuando se está pintando. Si cambias en la paleta la entrada que le corresponde al color del borde que se está pintando en ese momento, ese cambio debe reflejarse en el momento, y no la próxima vez que hagas un OUT al puerto 254 para cambiar el valor del borde. Conseguir que esto funcione es más peliagudo (al menos para mi).
Por esto es por lo que decia que se necesitaba una RAM de doble puerto, en una FGPA, hay algunos modelos que lo implementan, pero con electronica mas normalita ...

El valor del OUT (#FE), se utiliza para direccionar el color de la ULA+ y se guarda en el registro adicional.
Si se escribe un valor de cambio de color en la ULA+, se compara con el valor actual del color, si son identicos, se guardan en el registro adicional, ademas de en la ULA+.

El material adicional para el clon, es reducido, 1 comparador, 1 registro, y 1 multiplexores. aproximadamente, puede ser necesario crear alguna señal de control adicional. Esto una vez se tenga la logica de la implementacion de la ULA+
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.
Z80user
Jack The Nipper
 
Mensajes: 186
Registrado: Vie Jun 08, 2007 9:42 am
Ubicación: En un lugar de la mancha

Re: Cacharreando con el clon de Superfo ;)

Notapor mcleod_ideafix el Jue Abr 05, 2012 1:50 am

Z80user escribió:Por esto es por lo que decia que se necesitaba una RAM de doble puerto, en una FGPA, hay algunos modelos que lo implementan, pero con electronica mas normalita ...

Las de Xilinx implementan memoria de doble puerto "verdadera". Las de Altera, por lo visto no. De todas formas estoy seguro de poder conseguirlo usando unicamente una RAM estática estándar. Es así de hecho como lo estoy haciendo. Nada de memoria de doble puerto.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3158
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Sevilla

Re: Cacharreando con el clon de Superfo ;)

Notapor sromero el Jue Abr 05, 2012 8:40 am

mcleod_ideafix escribió:
Z80user escribió:De todas formas estoy seguro de poder conseguirlo usando unicamente una RAM estática estándar. Es así de hecho como lo estoy haciendo. Nada de memoria de doble puerto.


Ese tipo de estrujamientos de cabeza son los que hicieron posible el llevar a las casas los ordenadores en los 80s a precios asequibles ¿Para qué poner una memoria simple y barata si con una de doble puerto acabamos antes sin complicarnos? Hoy en día ya nadie se preocupa de esos detalles, se va "a lo fácil". Y hacerlo así es casi artesanía.

A ver si lo consigues. :-)
NoP / Compiler
Avatar de Usuario
sromero
Nonamed
 
Mensajes: 1206
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia

Re: Cacharreando con el clon de Superfo ;)

Notapor Z80user el Jue Abr 05, 2012 9:18 am

Ya le has cambiado el dueño a la frase :-)
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.
Z80user
Jack The Nipper
 
Mensajes: 186
Registrado: Vie Jun 08, 2007 9:42 am
Ubicación: En un lugar de la mancha

Re: Cacharreando con el clon de Superfo ;)

Notapor Scooter el Jue Abr 05, 2012 12:21 pm

Mira que me entero de poco, pero con una ram de doble puerto en la que quepa un cuadro entero, un contador y un DAC hasta yo hago una "tarjeta gráfica" la gracia es hacerlo "con puertas nand"
En su día estuve mirando memorias fifo de carga paralelo y salida serie para guardar una línea, si no me equivoco el jupiter tiene algo parecido con un simple registro de desplazamiento, el z80 no pinta los pixels de 8 en 8.
Aquellos chalados en sus viejos cacharros...
Avatar de Usuario
Scooter
Freddy Hardest
 
Mensajes: 519
Registrado: Jue Nov 11, 2010 11:17 pm

Re: Cacharreando con el clon de Superfo ;)

Notapor mcleod_ideafix el Jue Abr 05, 2012 8:49 pm

Primeras pruebas con ULA+. Aun tengo errores esporádicos de escritura. No sé si aún si el problema es que se escriben cosas incorrectas cuando se direcciona un registro de paleta, o si es que la escritura está afectando a más de un registro. Por lo menos tengo el soporte completo (incluyendo el borde, que era lo peliagudo) y usando una memoria normal.

Aquí van las pruebas que he hecho hasta ahora. En alguna de ellas (por ejemplo en la de Lena) se notan algunos cuadraditos con un color que no se corresponde con los cuadros vecinos. Otras imágenes, como la de Sinclair, creo que están perfectas :)

Lena (demo 24bit color de la página de ULA+)
Imagen

Sinclair (demo 24bit color de la página de ULA+)
Imagen

Multicolor demo (de la página de ULA+)
Imagen
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3158
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Sevilla

Re: Cacharreando con el clon de Superfo ;)

Notapor mcleod_ideafix el Vie Abr 06, 2012 1:06 am

Creo que ya le he cogido el truco a esto...

Combinando el modo Timex Hicolor con la paleta de 64 colores de la ULA+ he hecho un pequeño slideshow que muestra las siguientes imágenes (no son de emulador, son fotos directas del monitor)

Imagen

El TAP del SlideShow

Un video donde se muestra el final de la carga de una imagen del slideshow, sobre otra anterior. La gracia está en que la imagen se carga con la paleta de la imagen anterior, por lo que llega a verse, pero con los colores falseados. Al aplicar la paleta (lo hago desde BASIC con un bucle) paulatinamente va "apareciendo" la imagen correcta. Como efecto queda bastante chulo :)
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3158
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Sevilla

Re: Cacharreando con el clon de Superfo ;)

Notapor Scooter el Vie Abr 06, 2012 10:44 am

¡ Que nivel! Eso se ve mejor que un Amiga... (o casi)
Aquellos chalados en sus viejos cacharros...
Avatar de Usuario
Scooter
Freddy Hardest
 
Mensajes: 519
Registrado: Jue Nov 11, 2010 11:17 pm

Re: Cacharreando con el clon de Superfo ;)

Notapor mcleod_ideafix el Vie Abr 06, 2012 12:01 pm

mcleod_ideafix escribió:
radastan escribió:en cuanto logres meterle la interfaz SD y la posibilidad de usar un ratón (imprescindible para poder jugar a Operation Wolf y a Bloodwych en sus versiones adaptadas) va a ser lo más deseado de los espectrumeros.

Madre mía.


Depende... ¿cuántos de esos spectrumeros estarían dispuestos a pagar unos 80€ mínimo por un clon así? (carcasa aparte)


Mira, no me equivoqué en el precio (bueno, si lo pones en libras, claro :D )

La plaquita de tus sueños ya existe...
http://www.retroleum.co.uk/v6z80p/
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3158
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Sevilla

Re: Cacharreando con el clon de Superfo ;)

Notapor flopping el Vie Abr 06, 2012 2:27 pm

Muy buen trabajo, se ven de vicio, si esto tambien se puede aplicar a los juegos, ya seria la leche.

Oye Mcleod una cosita, estas imagenes que nos estas mostrando, si lo he entendido bien, son en el modo de alta resolucion de los timex, pero con los colores de la ula plus, ¿no?, osea que solo lo podemos ver con algunos emuladores, ya que fisicamente aun no se puede cargar en ninguna maquina, excepto en la tuya claro, ¿es correcto o estoy equivocado en algo?.

Por cierto, que emulador me recomiendas para poder ver estas cosas que estas sacando, ya que hay tantos que no se cual es el mejor o uno bastante bueno para cargar cositas y ver mas "alla", muchas gracias.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, debido a la esquizofrenia paranoide que tengo.
(C) 1982-2013, 31 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente"
Avatar de Usuario
flopping
Freddy Hardest
 
Mensajes: 839
Registrado: Vie Jul 16, 2010 9:54 am

PrevioSiguiente

Volver a Hardware

¿Quién está conectado?

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