Commodore manía

Commodore 64 => General => Mensaje iniciado por: Dashiad en Enero 14, 2018, 23:54:31

Título: Emulación de disketera usando sólo arduino (mega)
Publicado por: Dashiad 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.

Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: danytoon en Enero 15, 2018, 01:42:23
Pues enhorabuena! Y ahora prepárate para pegarte con los diferentes tipos de turbo :)
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: Naibor en Enero 15, 2018, 07:16:14
Que interesante Dashiad , ánimo con el proyecto !!!
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: Dashiad 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?
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: Dashiad en Enero 20, 2018, 23:51:24
Demo video del cacharro funcionando:

https://youtu.be/2Wsa2gebmeo

Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: josepzin en Enero 21, 2018, 12:39:34
Mola!

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

Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: Dashiad 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
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: mjj 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 (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 (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
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: Dashiad 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?)
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: danytoon en Mayo 21, 2018, 06:26:25
Esa es la única emulación de C64 que SI me interesa :)
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: mjj 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.
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: Dashiad 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?
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: Dashiad 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..
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: mjj 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.
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: Dashiad en Mayo 31, 2018, 19:30:38
Ya me llegaron los cacharritos  y el programador...A ver si esta noche le echo un ojo
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: mjj en Junio 01, 2018, 01:10:45
Conseguí compilar la parte del Pi1541 que emula el 6502 y las 2 VIAs pero la emulación es demasiado lenta, equivalente a unos 0,15 MHz. Hay emuladores del 6502 más optimizados (a6502) pero sin las VIAs. Quizá en verano intente algo porque lo de tener un emulador de 1541 por 2€ molaría bastante. Para empezar a jugar un poco puedes probar a meterle este emulador de 6502 con el BASIC de 1977 de Microsoft :)

https://github.com/satoshinm/pill_6502
Título: Re:Emulación de disketera usando sólo arduino (mega)
Publicado por: Dashiad en Junio 01, 2018, 13:23:11
Otra cosa interesante, es investigar algo esto:

https://github.com/markusC64/1541ultimate2

Por lo que he visto en fotos, la FPGA que utiliza la ultimate2 no es tan grande ni tan cara (logicamente, la U2 tiene más cosas que simplemente la FPGA), pero entre hacer un fork de la Pi1541 (que aún está muy en desarrollo, según el log de github), e investigar si es posible sacar sólo la parte de disco de la U2 e implementarla para una FPGA pequeñita...No sé, las dos cosas están interesantes.