Página 2 de 3

Re: Coco 3/Dragon 32

Publicado: 28 Mar 2017, 16:53
por jotego
Esa página tiene un ensamblador moderno para 6809. Me será muy útil. :holaa!:

Re: Coco 3/Dragon 32

Publicado: 28 Mar 2017, 16:54
por jotego
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!

Re: Coco 3/Dragon 32

Publicado: 28 Mar 2017, 17:34
por gacaffe
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

Re: Coco 3/Dragon 32

Publicado: 28 Mar 2017, 21:16
por Higgy
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.

Re: Coco 3/Dragon 32

Publicado: 28 Mar 2017, 21:27
por Higgy
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.

Re: Coco 3/Dragon 32

Publicado: 29 Mar 2017, 13:06
por jotego
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.

Re: Coco 3/Dragon 32

Publicado: 20 Abr 2017, 13:22
por jotego
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.

Re: Coco 3/Dragon 32

Publicado: 20 Abr 2017, 14:00
por bakoulis
Do you work for a CoCo/Dragon core, or something else?
Is not clear what you working for.

Re: Coco 3/Dragon 32

Publicado: 21 Abr 2017, 07:46
por jotego
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)

Re: Coco 3/Dragon 32

Publicado: 21 Abr 2017, 10:37
por vlait
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.