Autor Tema: Emulación de disketera usando sólo arduino (mega)  (Leído 8006 veces)

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Emulación de disketera usando sólo arduino (mega)
« en: Enero 14, 2018, 23:54:31 »
Al fiiiinn...Después de muchos cabezazos, he conseguido cargar 1 juego usando sólo un arduino mega, con un lector de tarjetas SD!!!

Sí, sé que está el uno2iec, pero éste requiere del pc para enviar los d64.El arduino sólo se ocupa del protocolo serie.

Esto debería haber estado terminado el JULIO pasado, pero había algún error de timing que me estaba volviendo loco, y no lo conseguia encontrar. En medio de la transmisión, el c64 dejaba de dar ack de los bytes que le enviaba.
Hoy me ha dado por retomarlo...Y aunque la documentación indica que el tiempo que hay que mantener un bit activo para ser leído por el c64 es de 60us, hasta que no lo he subido a 80, no ha funcionado.


Aún no está para distribuirlo (el d64 a cargar está puesto a capón, el fichero a cargar, también, no se soporta ningún otro comando que "load" ), pero, al menos, algún juego arranca!!!

La idea es hacer que esté medio estable, y meter el código de pantalla táctil que hice para el tapuino.


danytoon

  • Visitante
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #1 en: Enero 15, 2018, 01:42:23 »
Pues enhorabuena! Y ahora prepárate para pegarte con los diferentes tipos de turbo :)

Naibor

  • Commodore Master
  • *****
  • Mensajes: 1108
  • LOAD "*",8,1
    • Ver Perfil
    • Commodore 64 Full
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #2 en: Enero 15, 2018, 07:16:14 »
Que interesante Dashiad , ánimo con el proyecto !!!
Jack Tramiel - "If there's one thing a Commodore 64 can't do, it's nothing"

https://www.youtube.com/@commodore64full

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #3 en: Enero 20, 2018, 21:29:54 »
Actualizacion del proyecto:

He fusionado mi código con el port del tapuino que ya hice (con pantalla táctil de 3 pulgadas), y ahora carga .TAP y .D64 con el mismo cacharro.

Aún dice el compilador que he usado el 17% del espacio disponible, así que aún queda espacio para meter un manejo de disco más avanzado, y poner un interface de usuario medio presentable.

Lógicamente, con los fastloaders de disco, no va. A ver si mirando el código del sd2iec puedo adaptarlo.

Lo interesante es que el único hw que se necesita (aparte del arduino mega y la pantalla.
La pantalla es esta:
https://www.aliexpress.com/item/Free-shipping-LCD-module-TFT-2-4-inch-TFT-LCD-screen-for-Arduino-UNO-R3-Board/32550066433.html?spm=2114.search0104.8.38.3668b5deWgqb6n&priceBeautifyAB=5

Más el arduino:

https://www.aliexpress.com/item/Mega-2560-CH340G-ATmega2560-16AU-Compatible-for-Arduino-Mega-2560/32517341214.html?spm=2114.search0104.3.1.6de12f2carX2o9&ws_ab_test=searchweb0_0,searchweb201602_3_10152_10151_10065_10068_10344_10547_10342_10343_10340_10548_10341_10084_10083_10307_10615_10301_10303_10313_10059_10184_10534_100031_10604_10103_10142,searchweb201603_1,ppcSwitch_5&algo_expid=3a7b8ac3-ca27-4d6f-9a1f-0bb5aceddc8c-0&algo_pvid=3a7b8ac3-ca27-4d6f-9a1f-0bb5aceddc8c&priceBeautifyAB=5

Hace un total de poco más de 10 euros.
El único HW que es necesario aparte de eso,es 1 optocoupler + resistencia para el detector del motor, más los conectores al c64.
Como el resto de controles va en pantalla, no son necesarios botones, etc.

Conocéis alguna fuente de información sobre fastloaders, aparte del código fuente del sd2iec?

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #4 en: Enero 20, 2018, 23:51:24 »
Demo video del cacharro funcionando:

https://youtu.be/2Wsa2gebmeo


josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #5 en: Enero 21, 2018, 12:39:34 »
Mola!

Parece que en cualquier momento va a saltar una chispa y volar todo ;)

www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #6 en: Enero 21, 2018, 23:13:48 »
Si, hehe, es por falta de espacio...Lo tengo montado todo en un escritorio que, si utilizo los conectores de detrás del c64, no cabría...Así que los conectores de video, serie y casette, los tengo en la placa esa que se ve sobre el c64...Una vez que tenga claro cómo montarlo, ya le pondré cajita y conectores.

Acabo de descubrir https://github.com/Larswad/sd2iec_mega2560 .. que es sd2iec portado al mega 2560..con lo que sólo tendría que adaptarlo para funcionar con la pantalla y que se lleve bien con el tapuino..

Pero bueno, me lo he pasado bien escribiendo mi código de IEC, aunque no vaya a servir para nada :-D

mjj

  • Commodore Master
  • *****
  • Mensajes: 456
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #7 en: Mayo 20, 2018, 23:03:37 »
Han publicado el código fuente del pi1541 (emulador de 1541 para raspi 3).

http://github.com/pi1541/Pi1541

Empieza la cuenta atrás para que alguien consiga portarlo a esto:

https://www.aliexpress.com/item/1-pices-STM32F103C8T6-ARM-STM32-Minimum-System-Development-Board-Module-For-arduino-Sensing-Evaluation-for-Skiller/32765534610.html

Te animas??

Yo voy a intentarlo, hay un 99% de posibilidades de fracaso total o de que alguien lo consiga antes, pero será divertido :D

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #8 en: Mayo 21, 2018, 00:12:12 »
Hehehee, si, si esa emulación ha llamado mucho mi atención...
Pero, si entiendo por donde vas, lo que dices significaría:
- Eliminar la salida a monitor para el arduino
- darle soporte completo de SD2IEC para sustituir el UI
Y aún quedaría ver si cabría o no...

Lo que me llama la atención es que el autor, en la página, dice que ha trabajado para hacer el hardware lo más simple y barato posible...Pero sólo menciona soporte para una raspi 3
Por qué no una raspi zero? Porque no lo ha intentado? Porque no es posible?
Una raspi zero podría meterse dentro del c64..
Aún así, sigue el problema del UI: tiene que ser el del SDIEC, y eso yo lo veo una tortura, especialmente por las listas de multidiscos, velocidad de pintado...

Tú tienes claro que se puede meter en ese arduino (a nivel de RAM disponible, procesador,etc?)

danytoon

  • Visitante
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #9 en: Mayo 21, 2018, 06:26:25 »
Esa es la única emulación de C64 que SI me interesa :)

mjj

  • Commodore Master
  • *****
  • Mensajes: 456
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #10 en: Mayo 21, 2018, 09:36:48 »
- Eliminar la salida a monitor para el arduino
- darle soporte completo de SD2IEC para sustituir el UI
Y aún quedaría ver si cabría o no...

Eso es, quitar todo el UI pantalla/teclado y manejarlo con el mismo juego de comandos que el SD2IEC (cosa que ya hace).

Citar
Lo que me llama la atención es que el autor, en la página, dice que ha trabajado para hacer el hardware lo más simple y barato posible...Pero sólo menciona soporte para una raspi 3
Por qué no una raspi zero? Porque no lo ha intentado? Porque no es posible?

Porque ahora mismo necesita 2 cores: uno para el emulador (que corre en un bucle sin interrupciones) y otro para las interrupciones USB y actualizar la pantalla.

Citar
Tú tienes claro que se puede meter en ese arduino (a nivel de RAM disponible, procesador,etc?)

NO :D  Pero otros ya lo han hecho así que se debe poder:

https://satoshinm.github.io/blog/180113_stm32_6502_pill_6502_8_bit_6502_cpu_and_6850_acia_emulation_on_the_stm32_blue_pill_to_run_microsoft_basic_from_1977.html

En teoría para emular un 6502 a 1 MHz se necesitan 7,7 MHz de un cortex-m3, y ese chip va a 72 MHz. El resto es para I/O, la codificación GCR, emular la VIA 6522 y no sé si me dejo algo. Ahora mismo estoy intentando al menos que corran el emulador de la CPU y la VIA, luego veré cuánta CPU queda libre.

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #11 en: Mayo 21, 2018, 09:56:54 »
Pues habrá que echarle un ojo...El emulador viene con las herramientas de desarrollo que menciona el autor?

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #12 en: Mayo 22, 2018, 03:29:47 »
Ah, no , ok, leí mal..El emulador del que hablas es el 6502 para el STM32..No conocía estas placas, pero tienen una pinta impresionante, asi que me he pillado tres.
He visto en youtube la comparación de rendimiento con arduino , usando las demos de las librerias LCD de Adafruit, y da munchisimo más rendimiento.
Sin embargo, para esta aplicación en concreto, 64k de programa y 20KB de ram no me parece mucho..Va a estar muy justo..

mjj

  • Commodore Master
  • *****
  • Mensajes: 456
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #13 en: Mayo 22, 2018, 09:44:54 »
Píllate también un programador STLINK V2 (https://es.aliexpress.com/w/wholesale-stlink.html), con él se puede debuggear paso a paso y es la mejor manera de subirle código.

Curiosamente el chip lleva 128 KB aunque la especificación oficial diga 64 KB. Otra cosa interesante es que todos los pines son tolerantes a 5V.

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Emulación de disketera usando sólo arduino (mega)
« Respuesta #14 en: Mayo 31, 2018, 19:30:38 »
Ya me llegaron los cacharritos  y el programador...A ver si esta noche le echo un ojo