Humble48 - Clon Spectrum 48k

Proyectos de hardware con sus esquemáticos y si llevan software en fuente

Moderadores: cacharreo, Fundadores

Reglas del Foro
Aquí solo tienen cabida proyectos de hardware que incluyan siempre al menos sus esquemáticos para poder reproducirlos si llevan componentes electrónicos, y si es posible los ficheros del programa en que se hacen, los diseños de las placas, los gerber, etc. Si llevan algún tipo de software asociado debe estar diponible el código fuente

Para los que no cumplen estas condiciones se debe postear en el foro de proyectos generales.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 30 times
Been thanked: 163 times

Re: Humble48 - Clon Spectrum 48k

Mensaje por Kyp »

zx81 escribió: 23 Ene 2018, 12:53 Como sé que lo conoces, en el repo SVN del ZX-Uno tienes un directorio llamado software/tests donde, entre otros muchos programas tienes el floatspy.tap. Vale tanto para 48k como para 128k. El que no tienen en ese repo es el IR_Contention, te lo puedo enviar a ti o a quien corresponda para que lo añada al repo.
Me lo he bajado pero yo no puedo subir archivos. A ver si nos lee AntonioVillena y nos hace el favor. Y si no te pediré que me lo mandes.
zx81 escribió: 23 Ene 2018, 12:53 A ver, porque creo que con los timings tienes un pequeño lío. La interrupción salta en el instante T-0, justo en el momento en que comienza un nuevo cuadro de imagen. En el instante T-14336 o T-14337, según sea early o late timing, se dibuja el primer byte de pantalla, que no es lo mismo. Creo que el Timex permite cambiar la interrupción, o la tiene, no sé bien, para que suceda justo cuando va a dibujar la pantalla, pero eso no es estándar Spectrum.
Aunque si es verdad que no lo tengo claro del todo, es un lio pero no todo es cosa mía :)) :)) :))

Lo que pasa es que la ULA funciona a su manera. Como te decía, la ULA lleva un par de contadores que funcionan como coordenadas X,Y de pantalla. El eje X va de 0 a 447 y el eje Y de 0 a 311. El origen de coordenadas no está al comienzo de un nuevo cuadro sino que está en el punto correspondiente al primer pixel visible. Me refiero al pixel 0,0 del bitmap de pantalla, al primer pixel de la dirección de pantalla 16384. Empieza a componer la imagen desde ahí, pinta 256 pixeles de la primera línea, luego el borde derecho, blanking horizontal, el borde izquierdo de la segunda línea, y ahí termina de contar y vuelve a 0. Repite 192 líneas, luego borde inferior, blanking vertical, borde superior del siguiente cuadro, y termina con el borde izquierdo de la primera línea. Es antiintuitivo pero funciona así por simplicidad desde el punto de vista electrónico. Por eso, para activar la interrupción en el comienzo del cuadro que sería cuando empieza el blanking vertical, hay que contar 192 líneas de bitmap, más 56 de borde inferior... 248 en vertical, y en horizontal 0 para early-timing o 2 para late-timing.
zx81 escribió: 23 Ene 2018, 12:53 La INT se mantiene activa 32 ciclos de reloj Z80 (36 ciclos en el 128/+2, pero no en los +2a/+3) porque, en el peor caso, la instrucción más costosa en tiempo del Z80 creo que eran 24 ciclos, no recuerdo exactamente ahora, y eso sin contención. Como la INT se samplea al final de la ejecución de cada instrucción, el peor caso es empezar la ejecución de esa instrucción en el último ciclo del cuadro anterior.
Como la INT, a diferencia de NMI, se atiende por nivel y no pr flanco, hay que tener cuidado para no activar las interrupciones antes de hora o te volvería a saltar.
Vale, entonces lo hago bien en el ZX-Uno. Son 64 porque cuento ciclos de ULA que va el doble de rápido que la CPU. Pero la ULA del Humble está mal porque dura 32 ciclos de ULA, no de CPU.
zx81 escribió: 23 Ene 2018, 12:53 Lo de early-late timing no tiene mucha importancia. Mis dos emuladores son early y van ni más apañaos. :D
Mi manía por el late-timing es porque en el foro del ZX-Uno, en el hilo de mi core, un usuario me hizo un TAP con una aplicación que pinta en el borde y está calibrada para late-timing. La probé en mis Spectrums reales y todos son late-timing. Bueno, realmente uno en frío es early-timing y cuando lleva un rato y se calienta la ULA empieza a funcionar como late-timing. Es curioso ver como cambia :D
Avatar de Usuario
antoniovillena
Demonio segundo orden
Demonio segundo orden
Mensajes: 1596
Registrado: 02 Abr 2013, 19:06
Been thanked: 1 time

Re: Humble48 - Clon Spectrum 48k

Mensaje por antoniovillena »

Kyp escribió: 23 Ene 2018, 23:02 Me lo he bajado pero yo no puedo subir archivos. A ver si nos lee AntonioVillena y nos hace el favor. Y si no te pediré que me lo mandes
Sí, pásame los archivos por aquí (o a mi email info arroba antoniovillena punto es) y los subo al repositorio.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 30 times
Been thanked: 163 times

Re: Humble48 - Clon Spectrum 48k

Mensaje por Kyp »

He modificado el código de la ULA con los cambios que decía del momento y duración de la interrupción. No he probado mucho, pero parece que ahora si sale todo en su sitio :D
Adjunto el código con los cambios y el JED para reprogamar la ULA:
humble ula.zip
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
BCH
Demonio tercer orden
Demonio tercer orden
Mensajes: 973
Registrado: 06 Sep 2014, 12:10
Ubicación: Barcelona
Been thanked: 4 times

Re: Humble48 - Clon Spectrum 48k

Mensaje por BCH »

Kyp escribió: 24 Ene 2018, 11:08 He modificado el código de la ULA con los cambios que decía del momento y duración de la interrupción. No he probado mucho, pero parece que ahora si sale todo en su sitio :D
Adjunto el código con los cambios y el JED para reprogamar la ULA: humble ula.zip
Genial!! :D

A ver si encuentro un rato para probarlo
Avatar de Usuario
zx81
Demonio tercer orden
Demonio tercer orden
Mensajes: 502
Registrado: 19 Oct 2013, 16:27
Ubicación: Valencia
Has thanked: 15 times
Been thanked: 6 times
Contactar:

Re: Humble48 - Clon Spectrum 48k

Mensaje por zx81 »

antoniovillena escribió: 24 Ene 2018, 00:22
Kyp escribió: 23 Ene 2018, 23:02 Me lo he bajado pero yo no puedo subir archivos. A ver si nos lee AntonioVillena y nos hace el favor. Y si no te pediré que me lo mandes
Sí, pásame los archivos por aquí (o a mi email info arroba antoniovillena punto es) y los subo al repositorio.
Lo he encontrado en la web de Jan: IR_Contention.tap
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 30 times
Been thanked: 163 times

Re: Humble48 - Clon Spectrum 48k

Mensaje por Kyp »

Probado el IR_contention. Salen en su sitio y perfectamente simétricas las barras :D
No se ve exactamente igual, los espacios entre bandas salen con borde blanco en vez de negro por el tema de la instrucción OUT que funciona diferente en CMOS que NMOS, pero quitando eso salen bien.
Avatar de Usuario
zx81
Demonio tercer orden
Demonio tercer orden
Mensajes: 502
Registrado: 19 Oct 2013, 16:27
Ubicación: Valencia
Has thanked: 15 times
Been thanked: 6 times
Contactar:

Re: Humble48 - Clon Spectrum 48k

Mensaje por zx81 »

Kyp escribió: 24 Ene 2018, 12:42 Probado el IR_contention. Salen en su sitio y perfectamente simétricas las barras :D
No se ve exactamente igual por el tema de la instrucción OUT que funciona diferente en CMOS que NMOS, pero quitando eso salen bien.
El funcionamiento completo de ese test incluye efecto snow en pantalla. No sé si el Humble48 es capaz de reproducir eso también. Y para cuando tengas eso, aún me queda munición, pero de bazooka. El Brightminer de Woodster (aka Mark Woodmass). Pero conseguir eso ya son palabras muy mayores...
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
BCH
Demonio tercer orden
Demonio tercer orden
Mensajes: 973
Registrado: 06 Sep 2014, 12:10
Ubicación: Barcelona
Been thanked: 4 times

Re: Humble48 - Clon Spectrum 48k

Mensaje por BCH »

Kyp escribió: 24 Ene 2018, 12:42 Probado el IR_contention. Salen en su sitio y perfectamente simétricas las barras :D
No se ve exactamente igual, los espacios entre bandas salen con borde blanco en vez de negro por el tema de la instrucción OUT que funciona diferente en CMOS que NMOS, pero quitando eso salen bien.
Intentare encontrar un rato para cambiar el valor de las resistancias y ver si asi funciona con un Z80 NMOS.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 30 times
Been thanked: 163 times

Re: Humble48 - Clon Spectrum 48k

Mensaje por Kyp »

zx81 escribió: 24 Ene 2018, 12:52 El funcionamiento completo de ese test incluye efecto snow en pantalla. No sé si el Humble48 es capaz de reproducir eso también. Y para cuando tengas eso, aún me queda munición, pero de bazooka. El Brightminer de Woodster (aka Mark Woodmass). Pero conseguir eso ya son palabras muy mayores...
No, el snow no está implementado. Estoy buscando la demo esa pero no la encuentro.
Avatar de Usuario
zx81
Demonio tercer orden
Demonio tercer orden
Mensajes: 502
Registrado: 19 Oct 2013, 16:27
Ubicación: Valencia
Has thanked: 15 times
Been thanked: 6 times
Contactar:

Re: Humble48 - Clon Spectrum 48k

Mensaje por zx81 »

Kyp escribió: 24 Ene 2018, 13:55
zx81 escribió: 24 Ene 2018, 12:52 El funcionamiento completo de ese test incluye efecto snow en pantalla. No sé si el Humble48 es capaz de reproducir eso también. Y para cuando tengas eso, aún me queda munición, pero de bazooka. El Brightminer de Woodster (aka Mark Woodmass). Pero conseguir eso ya son palabras muy mayores...
No, el snow no está implementado. Estoy buscando la demo esa pero no la encuentro.
Mejor que no la encuentres, porque es tan retorcido y maquiavélico que parece mentira que funcione (y funciona, la probé el pasado fin de semana en un Spectrum+ real). Hacerlo en emulador es muy complicado y en hardware, a saber. Creo que vosotros os generáis vuestra imagen, así que a lo mejor se puede. Pero si hay algún chip por el medio como el AD724, ya no sé yo...

A ver si luego tengo un momento y la dejo por aquí. Pero no me digas que no te avisé.... mohahahahaha (risa absolutamente demoniaca). :twisted:
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
Responder

Volver a “Proyectos de hardware abiertos”