Coco 3/Dragon 32

Cores de los que existe documentación pero no se ha intentado aún portarlos al ZX-Uno / Cores for which documentation or source code exists, but no ports have been attempted to the ZX-Uno yet
Avatar de Usuario
gacaffe
Mensajes: 17
Registrado: 20 Nov 2015, 19:53
Contactar:

Coco 3/Dragon 32

Mensaje por gacaffe » 08 Nov 2016, 17:34

Hola,

¿Hay alguien trabajando en migrar implementaciones de Coco/Dragon al ZX-UNO?
A mi me gustaría echarle un tiento, aunque sin prisa.

¿Cómo lo véis? He visto algún proyecto muy interesante por la web...
Última edición por gacaffe el 08 Nov 2016, 18:20, editado 1 vez en total.
A bit of this, a byte of that

http://biolab.uspceu.com/~gabriel/retro.htm
@gacaffe

Avatar de Usuario
jsj
Mensajes: 336
Registrado: 21 Nov 2015, 12:48

Re: Coco 3/Dragon 32

Mensaje por jsj » 08 Nov 2016, 18:18

A mi el Dragon 32 me llama un montón. Ánimo que una implementación de Dragon molaría.

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

Re: RE: Coco 3/Dragon 32

Mensaje por antoniovillena » 08 Nov 2016, 18:36

gacaffe escribió:Hola,

¿Hay alguien trabajando en migrar implementaciones de Coco/Dragon al ZX-UNO?
A mi me gustaría echarle un tiento, aunque sin prisa.

¿Cómo lo véis? He visto algún proyecto muy interesante por la web...
Que yo sepa nadie lo ha intentado aún. Pero pregunta a jepalza o a Quest, que ellos a lo mejor saben indicarte cuál es el mejor proyecto para empezar el port

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: Coco 3/Dragon 32

Mensaje por jepalza » 08 Nov 2016, 19:24

No, del "coco" nada, ni tengo tampoco bajado ninguno.

Avatar de Usuario
gacaffe
Mensajes: 17
Registrado: 20 Nov 2015, 19:53
Contactar:

Re: Coco 3/Dragon 32

Mensaje por gacaffe » 14 Nov 2016, 17:11

Hola,

Estoy mirando al final el Coco3FPGA. Tengo una duda fundamental acerca de la EPROM.
El Coco3FPGA está pensado para placas de Terasic Altera (DE1, DE2, DE2-115) y usan la EPROM para almacenar los datos de la ROM del coco (64 KB, me dicen...). Se me ocurren 3 opciones:

1. En el ZX-UNO veo que la EPROM se usa para almacenar los bitstreams de los distintos cores. ¿Cómo veis que use varios slots para la ROM del Coco y luego acceda desde el core del Coco3? Como sólo haría lectura, no hay riesgo de que corrompa la EPROM. Lo que pasa es que no se me ocurre cómo sabe el sistema la posición de memoria donde esta la ROM del Coco3 en la EPROM.

2. Otra opción es usar los blockRAMs de la Spartan 6 para implementar la ROM, pero todavía no he mirado si el core necesita memorias embebidas. Esta es la opción que se usó en el Apple2FPGA (al menos en la versión para la DE2/DE2-115).

3. Almacenar la ROM en una SD card y transferirla a memoria SRAM justo después del reset.

¿Alguna recomendación?

Gracias.

PD.- Hay más cosas que modificar, pero no creo que sean muy complicadas. Creo que me va a llevar un tiempo migrar el core :(
A bit of this, a byte of that

http://biolab.uspceu.com/~gabriel/retro.htm
@gacaffe

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

Re: Coco 3/Dragon 32

Mensaje por antoniovillena » 14 Nov 2016, 17:28

Sin duda tiraría por la segunda opción. Es lo más fácil y tienes hasta 64Kb.

La opción 1 requiere compartir ROMs de 16K con el core de Spectrum, y tampoco tendrías una dirección fija. O bien tener dirección fija pero perder un core completo (336Kb).

La opción 3 es la más flexible, pero también la más compleja de implementar. Por ejemplo es la opción que suele usar Fabio en sus cores, con el inconveniente de que no funciona en FAT32 (porque requiere más implementación).
gacaffe escribió:Hola,

Estoy mirando al final el Coco3FPGA. Tengo una duda fundamental acerca de la EPROM.
El Coco3FPGA está pensado para placas de Terasic Altera (DE1, DE2, DE2-115) y usan la EPROM para almacenar los datos de la ROM del coco (64 KB, me dicen...). Se me ocurren 3 opciones:

1. En el ZX-UNO veo que la EPROM se usa para almacenar los bitstreams de los distintos cores. ¿Cómo veis que use varios slots para la ROM del Coco y luego acceda desde el core del Coco3? Como sólo haría lectura, no hay riesgo de que corrompa la EPROM. Lo que pasa es que no se me ocurre cómo sabe el sistema la posición de memoria donde esta la ROM del Coco3 en la EPROM.

2. Otra opción es usar los blockRAMs de la Spartan 6 para implementar la ROM, pero todavía no he mirado si el core necesita memorias embebidas. Esta es la opción que se usó en el Apple2FPGA (al menos en la versión para la DE2/DE2-115).

3. Almacenar la ROM en una SD card y transferirla a memoria SRAM justo después del reset.

¿Alguna recomendación?

Gracias.

PD.- Hay más cosas que modificar, pero no creo que sean muy complicadas. Creo que me va a llevar un tiempo migrar el core :(

Avatar de Usuario
bakoulis
Mensajes: 187
Registrado: 12 Sep 2016, 10:36

Re: Coco 3/Dragon 32

Mensaje por bakoulis » 27 Feb 2017, 00:16

I just found this on github for CoCo3 on fpga:
https://github.com/richard42/CoCo3FPGA

Also CoCo1 and TRS-80 must be somewhat easier to port on ZXUNO:
http://zxgate.sourceforge.net/index.html
http://members.iinet.net.au/~msmcdoug/pace/so/de1/

When someone with proper skills decide to spent some time for Tandy machines, we will have 2-3 different Tandy cores for ZXUNO.
:llamarada:

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: Coco 3/Dragon 32

Mensaje por jotego » 28 Mar 2017, 12:24

bakoulis escribió:I just found this on github for CoCo3 on fpga:
https://github.com/richard42/CoCo3FPGA
Acabo de mirar ese código y efectivamente usa el módulo de M6809 de John E. Kent. Ese es el mismo que yo he usado en el pasado para correr el subsistema de sonido del arcade Gryzor/Contra y probar el JT51. He contactado alguna vez con el autor y siempre me ha respondido muy amablemente. Sin embargo, hay algunas cosas de ese módulo que no me gustan:
  • No respeta los ciclos de reloj del original. En general las instrucciones necesitan menos ciclos que el original así que no es posible un clon exacto al ciclo de reloj.
  • No tiene jerarquía. Es imposible abrirlo en vista esquemático.
  • Tarda la misma vida en sintentizar y el Xilinx Webpack no es capaz de usar RAM para sintetizar la máquina de estados así que ocupa bastante lógica.
Estos factores y que tengo muchísima curiosidad por hacer una CPU con microcódigo, sumado a que quería un descanso de chips de sonido, me han puesto a trabajar en el JT6809. Que será un módulo compatible Motorola 6809 con estas características:
  • Microcódigo para que se sintetice usando RAM de la FPGA en vez de LUTs
  • Idénticos ciclos de reloj al original
  • Diseño jerárquico
  • Sin warnings de síntesis en herramientas de Xilinx o Altera
  • Posible uso de primitivas de las FPGA de ZX-UNO y MiST a través de directivas de precompilacion `JT6809_ZXUNO y `JT6809_MIST
  • Interfaz para poder conectar a cachés.
  • Testado con Verilator
Esa es mi lista de objetivos. Este procesador se usó en varios sistemas domésticos y arcade. Es también la base de la CPU encriptada KONAMI-1, que se usó en varias recreativas (y que desencriptó Manuel Abadía). Si hago un buen trabajo aquí, gracias al microcódigo sería fácil extenderlo a 6309 y KONAMI-1.

*****************************************************
Nota: el poder conectarlo a cachés sirve para aliviar el acceso a la memoria externa de ZX-UNO/MiST y poder sintetizar más fácilmente muchos bloques que compartan la SRAM. Las cachés ayudarían a que no estén todos los bloques esperando el acceso a memoria. Bueno este es un tema que quiero estudiar más adelante...

honda
Mensajes: 73
Registrado: 10 Mar 2017, 13:09

Re: Coco 3/Dragon 32

Mensaje por honda » 28 Mar 2017, 13:53


Avatar de Usuario
bakoulis
Mensajes: 187
Registrado: 12 Sep 2016, 10:36

Re: Coco 3/Dragon 32

Mensaje por bakoulis » 28 Mar 2017, 14:16

I wish you have success to your project.
CoCo/Dragon and CPC cores are the most awaited to our community.
I hope you do it!

Responder