C64 funciona en el descubrimiento STM32F429

Ha habido varias reencarnaciones del Commodore C64 a lo largo de los años, y [Dave Van Wagner] creó uno que se puede ejecutar en la placa de desarrollo STM32F429ZI. Estas placas de software han existido durante bastantes años y tienen una pantalla LCD TFT a color de 2,4 pulgadas además de los circuitos de E / S típicos, y tienen un valor bastante bueno. [Dave] dice que actualmente se venden por menos de $ 30 por distribución.

El proyecto comenzó a principios de este año cuando [Dave] comenzó a escribir un programa de línea de comandos en C #, que copió C64 Basic. Había escrito un emulador 6502 muchos años antes, pero no lo había probado. [Dave] estaba programado para marzo y lo inició durante un fin de semana muy largo. Más tarde decidió agregar soporte para VIC-20, TED y PET también.

Aunque [Dave] dice que C # es un buen lenguaje, luego llevó el programa en C (¿lenguaje feo?) para ejecutarlo en la placa Discovery, cambiando la interfaz del terminal de línea de comandos por un video LCD real y un teclado USB. También hay una versión de Arduino (solo interfaz de terminal final). Funciona un 15% más lento que un C64 real, y todavía existen algunas limitaciones como la ausencia de SID. Pero en general, este es un gran proyecto y una forma económica de copiar C64 en formato incrustado. Si desea explorar más, aquí está el proyecto Mbed para el STM32F429, y puede encontrar las versiones de Arduino y C # en su página de GitHub. Puedes recordar [Dave] del truco de video C128 sobre el que escribimos el año pasado.

  • Miguel dice:

    "Aunque [Dave] dice que C # es un buen lenguaje, luego ejecutó el programa en C (¿lenguaje feo?) "
    Uh ... ¿Sabes de qué se trata C # o Python? Es C / C ++

    • codificación posterior a la hora dice:

      Eso realmente no dice nada sobre el lenguaje de programación C #. Además, tú también estás equivocado. C # se compila en un lenguaje intermedio con mayor frecuencia, como Java, que a su vez es interpretado por el tiempo de ejecución nativo. La mayoría de las veces no se trata de código C / C ++ (dependiendo de lo que necesite hacer su aplicación). Eso es en su mayor parte ... Soy consciente de la compilación en interrupciones nativas y C / C ++ y demás, pero eso no es lo que la mayoría de los desarrolladores de C # hacen en su trabajo diario. ¡Es posible que muchos jóvenes ni siquiera conozcan esos rasgos!

      • X dice:

        Java es un JIT compilado, no interpretado.

        • bbp dice:

          Creo que la codificación de código postal es una terminología confusa porque es lo mismo para C # (o cualquier .NET). Está compilado en un lenguaje intermedio, que se traduce mediante una compilación oportuna al código nativo.

    • pelrun dice:

      Uh, solo porque un compilador para un idioma esté escrito en otro idioma no hace que los idiomas sean idénticos ...

      Su argumento parece fusionar la belleza con la habilidad. Todos estos lenguajes son completamente complicados, pero eso no significa que no haya una ventaja en usar uno sobre otro. De lo contrario, seguiríamos escribiendo todo haciendo clic en los interruptores del panel frontal de Altair para cargar el código de la máquina.

    • Daid dice:

      > Uh ... ¿Sabes siquiera qué hay debajo del capó para C # o Python? Es C / C ++

      Excepto cuando no lo es. Por ejemplo, el tiempo de ejecución de pypy-python está escrito en python, no en C / C ++.

  • Leland Clayton dice:

    C / C ++ es un lenguaje de bajo nivel que se compila en código máquina. C # es un lenguaje de objetos avanzado que se compila en CLR (Common Language Runtime), que es interpretado por JIT en ASP.NET. En otras palabras, con C / C ++ puede crear programas independientes mientras que C # no puede.

    • menotu dice:

      Eso no significa alto nivel versus bajo nivel. Te daré ejemplos:
      Lenguajes de bajo nivel: código de máquina
      Idiomas avanzados: todo lo que la gente pueda leer ... es decir; BASIC, C, Pascal, Fortran, Java, COBOL, Modular, etc ... literalmente todo lo demás. Incluso un macroensamblaje se considera un lenguaje de alto nivel.

      Aquí está la definición de edificio:
      “Un lenguaje de programación de bajo nivel es un lenguaje de programación que ofrece poca o ninguna abstracción de la arquitectura ar instruccional de una computadora: comandos o funciones en el mapa del lenguaje cerca de las instrucciones del procesador. Generalmente esto se refiere a código máquina o lenguaje ensamblador. "

      Me referí específicamente a un conjunto de macros anterior porque proporciona una abstracción del metal puro debido al sistema de macros integrado, pero un conjunto RAW no lo hace.

    • X dice:

      No puede crear programas en C "independientes", incluso "hola" requiere cargar varias bibliotecas. Simplemente use main () para necesitar una biblioteca.

    • Kes dice:

      C # se puede compilar en código nativo. Tiene durante las últimas versiones. Entonces sí, con C # puede crear programas "independientes".

  • menotu dice:

    oooh! programador batalla !!! definitivamente veremos algunos cachorros aquí ...: P

  • Daños severos a los neumáticos dice:

    No soportaré la conmoción C / c # que ya ha comenzado.

    ¡Qué hermoso proyecto! El resultado final no me emociona mucho (C64), pero obtener un emulador 6502 como ese y resaltar otra variante de STM32 es inspiración, ¡y eso es lo que todos venimos a La-Tecnologia!

    Acerca de C / C ++ # Elegiré un buen C antiguo en cualquier momento. De lo contrario, dame Haskell. Sin embargo, en serio, el cambio a C fue que ciertamente me impulsó lo que era compatible con el entorno Mbed, y creo que es muy apropiado para un proyecto integrado como este.

  • Zerg dice:

    Un proyecto genial.

    Lástima que alguien tuvo que hacer estallar una junta y tener miedo de percibir un golpe en la lengua de su mascota.

  • Tom Hargrave dice:

    Sorprendentemente, toda esta discusión y ninguna mención de Visual Basic., Hasta ahora ...

  • Gregg Eshelman dice:

    ¿Cuál de ellos es un 15% más lento que un C64 real y no tiene copia de SID? ¿Arduino o la versión F4?

  • Nick P. dice:

    SCHEMA / LISP sigue siendo el idioma más feo que he encontrado. Puedes probar CARV, ya que me equivoco, pero a CDR me importa menos.

  • fanoush dice:

    ¿Ese chip tiene un reloj a 180Mhz? Todavía tengo un emulador de Frodo ejecutándose en PalmOS Tungsten T2 (OMAP1510 - 168MHz ARM) y funciona a toda velocidad con sonido. La emulación no es un ciclo preciso, por lo que los cargadores de velocidad de disco no funcionan, pero por lo demás los juegos solo funcionan.

  • desagradable dice:

    ¿Dónde pongo mi cartucho Jumpman Jr.?

  • Dave VW dice:

    Creador de proyecto destacado aquí. Escuché que mi proyecto fue publicado. Gracias por todos los maravillosos comentarios y comprensión.

    Mi puerto C64 más nuevo hoy [November 2020] hasta Teensy 4.1 (600MHz) alcanzó una velocidad de CPU del 1263%, en comparación con aproximadamente el 85% de velocidad de la CPU en el STM32F429 [April 2020]. Revisión de código de bienvenida, solicitudes de extracción y punteros para más rápido que 12.6x. github.com/davervw/c-simple-emu6502-cbm/tree/teensy_lcd

    ¡Y todos los lenguajes basados ​​en C son hermosos! Disfruto de todos. ¿Alguien ama AWK tanto como yo?

    • Mella dice:

      Aplaudo tu trabajo, Dave, especialmente porque me resulta mucho más fácil acumular programas que HACER algo con ellos. ¡De hecho, tengo a STM32 y Teensy esperando un proyecto genial como este! ¿Existe la posibilidad de que se pueda extraer un poco más de velocidad (o sonido) del STM32?

      • Mella dice:

        Lo siento, eso tiene que decir "lo encuentro mucho más fácil ..."

        Odio, ODIO escribir en una pantalla táctil.

Alberto Gimenez
Alberto Gimenez

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *