Coco 3/Dragon 32
Coco 3/Dragon 32
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...
¿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.
Re: Coco 3/Dragon 32
A mi el Dragon 32 me llama un montón. Ánimo que una implementación de Dragon molaría.
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: RE: Coco 3/Dragon 32
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 portgacaffe 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...
Re: Coco 3/Dragon 32
No, del "coco" nada, ni tengo tampoco bajado ninguno.
Re: Coco 3/Dragon 32
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
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
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Coco 3/Dragon 32
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).
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
Re: Coco 3/Dragon 32
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.
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.
Re: Coco 3/Dragon 32
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:bakoulis escribió:I just found this on github for CoCo3 on fpga:
https://github.com/richard42/CoCo3FPGA
- 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.
- 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
*****************************************************
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...
Re: Coco 3/Dragon 32
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!
CoCo/Dragon and CPC cores are the most awaited to our community.
I hope you do it!