Página 1 de 4

Simplificando el Spectrum. Duda tecnica.

Publicado: 15 Sep 2018, 23:39
por Namek
Hola,

Estoy programando un emulador de Spectrum básico usando FreeBASIC y me he dado cuenta que la mayor parte del meollo se lo lleva el Z80, por tanto me ha surgido la duda:

¿Como de simple y barato podría ser un circuito o un integrado programable para generar la señal de video del Spectrum a partir de una RAM, ¡OJO! No estoy hablando de diseñar un sustituto de la ULA ni conseguir los timings exactos del Spectrum, sería un circuito o integrado que exclusivamente generaría la señal de video, sin ningún tipo de sincronización ni nada y mientras mas simple y barato mejor, por supuesto tendría que compartir el acceso a RAM con el Z80 pero ignorando tambien por completo el tema de la contención original del Spectrum, si tiene que tener contención porque es mas facil vale y si no pues mejor.

Como supongo que habreis imaginado la idea sería la posibilidad de montar una placa con una EPROM, una RAM, un Z80 y este circuito de video o integrado o lo que sea con lo cual obtendríamos algo compatible con el Spectrum, la cuestión sería como de compatible. Supongo que el teclado, el beeper y la entrada de audio pueden ir directamente al Z80, ¿o no?

A ver que me podeis decir los que entendeis del tema... :mrgreen:

Re: Simplificando el Spectrum. Duda tecnica.

Publicado: 16 Sep 2018, 00:23
por Bubu
¡Jarl! No veo cómo vas a colocar el teclado, la salida de sonido, la entrada de sonido, etc, direstamente en el Z80. Yo lo veo más que complicao.
Por otra parte, mi emulador básico de Spectrum lo estoy haciendo en QBasic 64 (QB64), y la parte del Z80 me está siendo mmmmmuy fácil, lo jodido va a ser la ULA. Ahí es donde está para mí el meollo...

Re: Simplificando el Spectrum. Duda tecnica.

Publicado: 16 Sep 2018, 01:04
por Namek
Bubu escribió:¡Jarl! No veo cómo vas a colocar el teclado, la salida de sonido, la entrada de sonido, etc, direstamente en el Z80. Yo lo veo más que complicao.
Por otra parte, mi emulador básico de Spectrum lo estoy haciendo en QBasic 64 (QB64), y la parte del Z80 me está siendo mmmmmuy fácil, lo jodido va a ser la ULA. Ahí es donde está para mí el meollo...

El sonido del Spectrum 48K es simplemente 1 bit, osea un circuito electrico que se abre o se cierra, como mucho haria falta amplificar la señal, y el teclado son 5 bits para cada tecla de las semifilas de 5 teclas y 8 bits para las 8 semifilas, por tanto creo que puede ir cableado directamente al Z80, que me corrijan si me equivoco.

Aun no entiendo tu planteamiento, si estas haciendo un emulador "BASICO" que pretendes emular de la ULA?

Re: Simplificando el Spectrum. Duda tecnica.

Publicado: 16 Sep 2018, 01:37
por Bubu
El sonido serán 1's y y 0's, sí, pero, ¿a qué frecuencia?

Yo entiendo un emulador "básico" aquel que: no emula las cintas ni el bus de expansión. Todo lo demás es básico: pantalla, teclado, sonido, etc. Y todo eso lo lleva la ULA.
Tú creo que lo que estás haciendo es emular la CPU solamente, ¿nor?

Re: Simplificando el Spectrum. Duda tecnica.

Publicado: 16 Sep 2018, 01:39
por Bubu
Y respecto a tu montaje, piensa en cómo le vas a conectar el teclado direstamente a la CPU. ¿Al bus de datos? Ahora imagina que la CPU está leyendo la memoria RAM, y en ese momento pulsas una tecla. ¿Qué ocurriría en el bus de datos? Habría colisión de la información. Pues para eso está la ULA.

Re: Simplificando el Spectrum. Duda tecnica.

Publicado: 16 Sep 2018, 01:50
por Namek
Bubu escribió:El sonido serán 1's y y 0's, sí, pero, ¿a qué frecuencia?
A la frecuencia que se le programe con el Z80.
Bubu escribió:Yo entiendo un emulador "básico" aquel que: no emula las cintas ni el bus de expansión. Todo lo demás es básico: pantalla, teclado, sonido, etc. Y todo eso lo lleva la ULA.
Tú creo que lo que estás haciendo es emular la CPU solamente, ¿nor?
Correcto, solo emulo el Z80 y represento la memoria de video del spectrum en pantalla y cuando el Z80 hace un OUT cambio el color del borde en consecuencia y cuando hace un IN le paso los bits correspondientes si se ha pulsado una tecla y "Voila", parece un Spectrum, huele como un Spectrum, incluso sabe como un Spectrum, pero no lo es... :roll:

Re: Simplificando el Spectrum. Duda tecnica.

Publicado: 16 Sep 2018, 01:51
por Namek
Bubu escribió:Y respecto a tu montaje, piensa en cómo le vas a conectar el teclado direstamente a la CPU. ¿Al bus de datos? Ahora imagina que la CPU está leyendo la memoria RAM, y en ese momento pulsas una tecla. ¿Qué ocurriría en el bus de datos? Habría colisión de la información. Pues para eso está la ULA.
El Z80 tiene una señal para determinar a donde apunta el bus de datos y el bus de direcciones, puede ser a la RAM o puede ser a un puerto de comunicaciones externo, cuando esa señal este activa es cuando el bus de datos se conectaria con los cablecitos del teclado, el altavoz y los del jack de la entrada de audio.

Re: Simplificando el Spectrum. Duda tecnica.

Publicado: 16 Sep 2018, 02:21
por Bubu
¿Y quién decide cuando astivar o desastivar esa señal?

Re: Simplificando el Spectrum. Duda tecnica.

Publicado: 16 Sep 2018, 10:53
por Namek
Bubu escribió:¿Y quién decide cuando astivar o desastivar esa señal?
Esa señal se activa cuando el Z80 ejecuta un IN o un OUT, de esa forma los OUT no afectan a la RAM ni los IN leen de la RAM cuando deben leer de los puertos.

Re: Simplificando el Spectrum. Duda tecnica.

Publicado: 16 Sep 2018, 17:27
por Kyp
Namek escribió:Hola,
¿Como de simple y barato podría ser un circuito o un integrado programable para generar la señal de video del Spectrum a partir de una RAM

Ya existe un reemplazo de ULA perfecto basado en una CPLD Xilinx XC95144XL que vale unos 10 y 15 euros. Incluso hay algunos Spectrums montados como el que dices: http://www.zxuno.com/forum/viewtopic.php?t=1749
Yo tengo uno :mrgreen: