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
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: Coco 3/Dragon 32

Mensaje por jotego » 28 Mar 2017, 16:53

Esa página tiene un ensamblador moderno para 6809. Me será muy útil. :holaa!:

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, 16:54

bakoulis escribió: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!
Thanks!

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

Re: Coco 3/Dragon 32

Mensaje por gacaffe » 28 Mar 2017, 17:34

jotego escribió:
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...
A mi también me pareció muy raro lo de que las instrucciones no respeten los ciclos. Si te animas sería genial , además veo que quieres hacerlo bien (porque en hardware eso de hacer las cosas rápido y con pinzas, al final pasa factura ;) )

Un saludo
A bit of this, a byte of that

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

Avatar de Usuario
Higgy
Mensajes: 63
Registrado: 30 Dic 2016, 23:57
Ubicación: Oxfordshire, England
Contactar:

Re: Coco 3/Dragon 32

Mensaje por Higgy » 28 Mar 2017, 21:16

I have an actual Dragon 64 (Dragon 64 boots into 32 mode, you have to activate 64k) if it helps for testing anything.

Cassettes seemed to be more common than disks for the Dragon.

The Dragon is fussy about tape images. Some may work on an emulator but not on a real Dragon. I recommend using files from this website for testing:

http://archive.worldofdragon.org/archiv ... dir=Tapes/

I have a SD card loader for my Dragon and I have had great results loading in their tape images.

Good luck, as people have said this would be a welcome Core.

Avatar de Usuario
Higgy
Mensajes: 63
Registrado: 30 Dic 2016, 23:57
Ubicación: Oxfordshire, England
Contactar:

Re: Coco 3/Dragon 32

Mensaje por Higgy » 28 Mar 2017, 21:27

I know it is very early days. But don't worry about the Dragon having analogue joystick controls.

Most games are ports of Spectrum etc games that were originally designed for digital controls.

I followed an Internet guide and built a couple of digital to analogue converters so I can use standard 9- pin joysticks, and games control better.

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

Re: Coco 3/Dragon 32

Mensaje por jotego » 29 Mar 2017, 13:06

Me han comunicado por correo que se publicó hace poco un core de 6809 compatible a ciclo de reloj y con todas las señales del bus. De hecho, está probado en máquinas reales y funciona. Leer la documentación y sobre todo la sección de testado es una auténtica delicia. Es un trabajo muy bien hecho. Os recomiendo mirarlo.

Este core sigue sin usar microcódigo y tiene un esquema de relojes que no es ideal para la FPGA. El autor también ha preferido usar un solo fichero de 4000 líneas que, evidentemente, es difícil de seguir. No he probado a sintetizarlo aun. La verdad es que me lo estoy pasando muy bien resolviendo el problema del microcódigo y el 6809 y me atrae mucho poder comparar las dos implementaciones así que en principio seguiré haciendo el jt6809. Al menos, mientras vea que en síntesis la versión de microcódigo aporta ventajas. Este otro core me servirá de referencia para las señales.

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

Re: Coco 3/Dragon 32

Mensaje por jotego » 20 Abr 2017, 13:22

Bueno, pues probé el core exacto de Greg Miller al que hago referencia en la entrada anterior. He hablado con él por correo, es un extrabajador de Commodore con mucha experiencia. El core funciona muy bien. Hay que dedicar un rato a entender cómo usa el reloj y cómo conectar la memoria pero al final conseguí emplearlo en la parte de sonido de la máquina del Contra y oír la música con la nueva version 1.1 del JT51. Eso sí, el core ocupaba bastante de la FPGA así que el incentivo hacia una solución más económica usando microcódigo sigue estando ahí y seguramente volveré a ello más adelante.

Ahora estoy tratando de hacer una caché para el 6809 y conectarlo a la memoria externa a través de la caché. La ventaja está en que la caché la hago con dos puertos: uno a la velocidad del 6809 y otro a la máxima de la memoria externa. Así es más fácil multiplexar la memoria externa entre varios dispositivos incluso si usamos una dinámica. Montar una caché de este tipo puede ser muy útil para muchos otros cores así que si lo consigo la explicaré en el blog.

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

Re: Coco 3/Dragon 32

Mensaje por bakoulis » 20 Abr 2017, 14:00

Do you work for a CoCo/Dragon core, or something else?
Is not clear what you working for.

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

Re: Coco 3/Dragon 32

Mensaje por jotego » 21 Abr 2017, 07:46

bakoulis escribió:Do you work for a CoCo/Dragon core, or something else?
Is not clear what you working for.
I have several topics open and some of them have in common building a 6809 based system. I am trying to solve the common problems first. Then, hopefully, making a Dragon core will just be a matter of putting together the building blocks. The Dragon is interesting to me because it is still a relatively small computer with the 6809 but I am also interested in the Ghosts'n Goblins arcade (6809+Z80) and the Contra arcade (two 6809 CPUs)

vlait
Mensajes: 6
Registrado: 13 Nov 2015, 07:54

Re: Coco 3/Dragon 32

Mensaje por vlait » 21 Abr 2017, 10:37

Hi, not really related to the port but if looking for cross-development tools you might want to take a look at
lwtools assembler (http://lwtools.projects.l-w.ca/)
The extras even contain patches for gcc (linux binaries may be available on some repo, compiles on cygwin too)
If an 'almost' c compiler is ok theres cmoc (https://perso.b2b2c.ca/~sarrazip/dev/cmoc.html) which might actually be more suited to small environments than gcc.

none of the above are coco3-only even if they are mostly targeted for it, i've used lwtools/gcc to write quick and dirty stuff for early williams boards without issues and since cmoc already is able to produce vectrex code i'd imagine "bare metal" code should be doable.

Responder