The #cardputer looks like a really nice device:
dualcore ESP32 240MHz cpu, keyboard, wifi, 8MB flash, 240x135 display. speaker, mike, USB-C.
The 512kb RAM are to small to run #NetBSD .. but made me thinking if SD-card could be used instead of RAM. I mean, NetBSD runs on PDP which had slow core memory..

I saw the device researching for alternatives for a laptop, when doing FT8 / #HAMradio on a mountain summit. There is even code to run a radio transceiver!

Emulador de Amstrad GX4000 con M5Stack Cardputer

En este artículo vamos a emular el único intento de Amstrad de irrumpir en el mercado de las consolas sobre un Cardputer de M5Stack.

Amstrad Retroinformática

Sobre Amstrad GX4000

La GX4000 es una consola lanzada en 1990 como la evolución del CPC 464 hacia el mundo de las videoconsolas, de modo similar al que Commodore hiciera con su 64 Games System, aprovechando el vasto catálogo de juegos para sus ordenadores. Una llegada tardía a aquel mercado evitó que fuera un éxito comercial.

Su arquitectura hardware se basaba en un Zilog Z80A a 4 MHz, 64 KB de RAM, un circuito específico para gestión de sprites y desplazamiento en pantalla Amstrad 40057 y un procesador de sonido AY-3-8912.

Entorno e instalación del emulador

Elementos

Vamos a necesitar el siguiente elemento:

  • M5Stack Cardputer
  • Tarjeta microSD con formato FAT32

Instalación

Vamos a utilizar el software de M5Stack M5Burner. Una vez arrancada la aplicación, conectaremos el Cardputer al PC vía USB y seleccionaremos este dispositivo en el menú de la izquierda.

Buscaremos la aplicación Game Station Emulators en el catálogo para este dispositivo.

Para descargar la aplicación, pulsaremos el botón de [Download] y, una vez finalizada la descarga, en [Burn].

Emulación

Una vez realizados los pasos anteriores, desconectamos la Cardputer del PC, le introducimos una microSD con las ROM para este modelo de consola y la encendemos. Aparecerá una pantalla que indica la versión del emulador.

Tras unos segundos de espera, nos aparece el listado de ROM compatibles.

Tras pulsar una tecla, podemos seleccionar el juego deseado que, para este modelo de consola, tendrá la extensión .CPR.

Pulsamos [Enter] y comienza la carga de la ROM.

Una vez cargada la ROM del juego, nos aparece un recordatorio de las teclas asociadas a este.

Pulsamos cualquier tecla y el juego se inicia, mostrando la presentación.

Una vez iniciado, la partida podrá comenzarse.

Y simplemente nos queda recordar viejos tiempos.

#1990 #Amstrad #Amstrad40057 #Cardputer #GIAY38912 #ZilogZ80A

Emulador de Coleco ColecoVision con M5Stack Cardputer

En este artículo vamos a emular una de las consolas más icónicas, la ColecoVision, sobre un Cardputer de M5Stack.

Sobre la Coleco ColecoVision

La ColecoVision es una consola lanzada en 1982 tuvo mucha popularidad en su época.

Su arquitectura hardware se basaba en un Zilog Z80A a 3,58 MHz, 1 KB de RAM, 16 KB de VRAM, un procesador de vídeo Texas Instruments TMS9918A y otro de sonido SN76489A.

Entorno e instalación del emulador

Elementos

Vamos a necesitar el siguiente elemento:

  • M5Stack Cardputer
  • Tarjeta microSD con formato FAT32

Instalación

Vamos a utilizar el software de M5Stack M5Burner. Una vez arrancada la aplicación, conectaremos el Cardputer al PC vía USB y seleccionaremos este dispositivo en el menú de la izquierda.

Buscaremos la aplicación Game Station Emulators en el catálogo para este dispositivo.

Para descargar la aplicación, pulsaremos el botón de [Download] y, una vez finalizada la descarga, en [Burn].

Emulación

Una vez realizados los pasos anteriores, desconectamos la Cardputer del PC, le introducimos una microSD con las ROM para este modelo de consola y la encendemos. Aparecerá una pantalla que indica la versión del emulador.

Tras unos segundos de espera, nos aparece el listado de ROM compatibles.

Tras pulsar una tecla, podemos seleccionar el juego deseado que, para este modelo de consola, tendrá la extensión .COL. Nótese que normalmente los archivos para ColecoVision se distribuyen con la extensión .BIN, basta con renombrar.

Pulsamos [Enter] y comienza la carga de la ROM.

Una vez cargada la ROM del juego, nos aparece un recordatorio de las teclas asociadas a este.

Pulsamos cualquier tecla y el juego se inicia, mostrando la presentación.

Una vez cargado, nos pedirá seleccionar el nivel de la partida.

Por fin podremos jugar.

Y simplemente nos queda recordar viejos tiempos.

#1982 #Cardputer #Coleco #TISN76489A #TITMS9918A #Videoconsolas #ZilogZ80A

First time running a #meshtastic node today.

#cardputer #offgrid #m5stack #LoRa

Messing around with #Cardputer & IDF while using another one as a web radio walkman.

#esp32 #m5stack #embedded #music

RE: https://chaos.social/@alexglow/116290732583697250

Going #live with @alexglow in about two hours! In #DayGlow Episode 9, we will be #hacking on Pocket #PenTesting Platforms, including the #DevKitty #CutieCat, the #FlipperZero, the #M5Stack #Cardputer, and the #LILYGO T-embed. Alex Lynd from DevKitty will also be giving away a free CutieCat to one lucky winner! Join the chaos at 3pm Eastern! 🤘🐬🤘

https://www.youtube.com/watch?v=M9a5mjuKl4c

#DayGlowShow #MakersOfMastodon #HackThePlanet

This Thursday: #DayGlowShow Ep. 9 – Pocket #Pentesting Platforms! Multi-hour live-build with @ishotjr & myself (plus some cool extras from @alexlynd ) 🛠️✨

#DevKitty, #FlipperZero, LILYGO T-Embed, M5Stack #Cardputer, and more... plenty to dig into! See you in the chat :)

Mar. 26, noon PDT / 8pm UTC:
▶️ https://www.youtube.com/watch?v=gqbiKvXl_7s&list=PLwWiFinxwDlgomKdWjfaavDbMRdhHhfqQ&index=1
▶️ https://www.linkedin.com/events/7442331052607430656
▶️ https://www.twitch.tv/glowascii

// #Electronics #Maker #Hardware #Security

Having way too much fun with this thing.

#m5stack #cardputer #hacking #infosec #security

#Cardputer ADV has a nice SSH client with many terminal capabilities, although the `screen` utility seems to be glitching at times during screen redraw. But irssi works just fine.

Emulador de Commodore 16 con M5Stack Cardputer

En este artículo utilizaremos un Cardputer de M5Stack para emular un Commodore 16.

Sobre el Commodore 16

El Commodore 16 fue el intento del fabricante de competir con los ordenadores low-cost que empezaron a surgir en la primera mitad de los años 80. Prácticamente compartiendo estética con el Commodore 64, logró reducir precio a base de una simplificación de su diseño y una mayor fragilidad.

Así, a nivel hardware, sustituiría los chips de vídeo y sonido, VIC-II y SID, por el TED. Además, prescindía de la CIA, cuyas funciones eran mayoritariamente asumidas por TED. También cambió de procesador, MOS 7501 a 1,76 MHz (posteriormente MOS 8501) y se redujo la RAM a 16 KB.

Emulador

Utilizaremos como base el emulador para Commodore 64 sobre esta misma plataforma que ya utilizamos en otro artículo.

Cambio de arquitectura

En el emulador de C16 hubo que tener en cuenta la nueva arquitectura, por lo que se prescindió del código fuente referido a VIC, CIA y SID:

  • CIA (CIA.h/.cpp) reemplazado por timers/IRQ TED.
  • VIC (VIC.h/.cpp) reemplazado por TED.h/.cpp.
  • CPU C64 (CPUC64.h/.cpp) reemplazado por CPUC16.h/.cpp.
  • Orquestador C64 (C64.h/.cpp) reemplazado por C16.h/.cpp.
  • SID/reSID retirado en la iteración actual (audio C16 pendiente).

Habría que destacar las funciones siguientes:

  • C16::run(const std::string& path): orquesta memoria, CPU, TED, teclado y tareas FreeRTOS.
  • tedRefresh(void*): actualiza estado de TED.
  • Reemplazo de la capa de vídeo/IRQ del C64 por implementación de TED para C16.

Procesador y memoria

El archivo CPUC16.cpp incluye la gestión de memoria del C16, destacándose estas funciones:

  • uint8_t CPUC16::getMem(uint16_t addr): lectura con prioridad TED y ROM banking del C16.
  • void CPUC16::setMem(uint16_t addr, uint8_t val): escritura de RAM, registros TED y control $FF3E/$FF3F.
  • void CPUC16::tickTimers(uint8_t cycles): temporizadores del TED (sustituyen a los temporizadores de la CIA).
  • void IRAM_ATTR CPUC16::run(): bucle CPU por línea de barrido, IRQ raster/timer y NMI RESTORE.
  • void CPUC16::initMemAndRegs(): estado de reset C16, iflag=true, vector reset KERNAL.
  • void CPUC16::init(...): inyección de dependencias y estado inicial.
  • void CPUC16::setPC(uint16_t), cmd6502illegal(), getters getA/getX/getY/getSP/getSR/getPC.

Respecto al C64, se implementan estos cambios de comportamiento:

  • RAM física de 16 KB con protección para accesos altos.
  • ROM BASIC 3.5 en $8000-$BFFF y KERNAL en $C000-$FFFF.
  • Registros TED en $FF00-$FF3F siempre visibles.

Instalación

Vamos a descargar el código fuente del emulador M5Cardputer C16 Emulator desde GitHub en nuestro directorio de trabajo:

$ git clone https://github.com/RafaGS/M5Cardputer-C16-Emulator.git

Si no hemos instalado aún PlatformIO, procederemos a ello:

$ paru -Ss platformio platformio-udev-rules

Entramos al directorio donde acabamos de descargar los fuentes del emulador del Commodore 16.

$ cd M5Cardputer-C16-Emulator

Conectamos el Cardputer al PC y procedemos a generar y subir los binarios.

$ pio run --target upload

También puede instalarse directamente desde M5Burner.

Emulación

Una vez realizada la subida, automáticamente se inicia el emulador, dándonos opción a ejecutar el intérprete BASIC o algún programa que proporcionemos vía microSD (aún por implementar).

Seleccionamos BASIC y, aunque tengamos que forzar un poco la vista, veremos cómo aparece la pantalla de presentación de este ordenador.

Para paliar el problema de visualización, que además empeora a la necesidad de escalado, se implementa una función de ampliación. Así, la pulsación de [fn][1] amplía el primer cuarto de la pantalla, [fn][2], [fn][3], [fn][4] amplían las demás partes de la pantalla, respectivamente. [fn][0] vuelve a la relación pantalla original.

Por fin podemos introducir códigos en BASIC que nos hagan recordar otros tiempos.

#1984 #Cardputer #Commodore #ESP32 #MOS7360TED #MOS7501