Skip to content

MSXnano v2.0 — RP2040 companion, MSX mouse, one BIOS with a switchable menu

Latest

Choose a tag to compare

@Papipapito Papipapito released this 04 Sep 15:30

MSX2+ on a Tang Nano 20K. This release replaces the onboard BL616 with an RP2040 companion, adds an MSX mouse, and merges the two BIOS builds into one with the boot menu as a setting.


What's new

🕹️ RP2040 companion — better keyboards, and a mouse

The onboard BL616 is no longer used. USB keyboard, joystick and mouse are served by an RP2040 (Pico Zero) over a single wire.

This removes the biggest compatibility headache of previous versions. Tang Nano 20K boards made since 2024 (marked 3921) ship a BL616 in a secure-boot state that often could not run the companion firmware, leaving you without a keyboard and needing an external M0S Dock. With the RP2040 that is gone — every board behaves the same.

And it adds what the BL616 never did: a real MSX mouse, from any USB mouse.

🎛️ One BIOS, and the menu is now a setting

There used to be two BIOS builds — one booting straight to MSX, one with the SD browser — so you had to choose which to flash. There is now a single BIOS: press S at boot, tick Menu al arrancar, Save & Restart. Untick it and you boot straight into MSX again. The choice is stored in flash.

📥 Downloads from the boot menu

With WiFi connected, press F in the browser to search and download ROMs and disk images straight to the SD card, without a PC.

🖥️ Optional companion screen

Alongside WiFi you can fit an ESP32-C6 with a 240×240 LCD showing connection status, clock and Turbo state, plus an animated MSX boot logo. The ESP-01S is still supported if you only want WiFi.

🧹 Removed

The virtual cassette is gone — the project feeding it was discontinued. Pins 26 and 32 are now free.


Wiring

All three companions are optional and independent. Fit at least the RP2040, or you have no keyboard.

RP2040 (keyboard, joystick, mouse)

Pico Zero Tang Nano 20K
GP15 (TX) pin 31
GND GND
VBUS 5V

Plug the USB keyboard, gamepad or mouse into the Pico's own USB port (a hub works).

ESP-01S (WiFi only)

ESP-01S Tang Nano 20K
RX pin 27
TX pin 28
VCC 3.3V
GND GND

ESP32-C6 (WiFi + status screen) — replaces the ESP-01S on the same UART, plus one wire for Turbo.

ESP32-C6 Tang Nano 20K Signal
GPIO17 (RX) pin 27 FPGA → C6
GPIO16 (TX) pin 28 C6 → FPGA
GPIO3 pin 29 Turbo status
GND GND

Board: Waveshare ESP32-C6-LCD-1.3.


How to flash

Step File Address Tool
1 msxnano_v2.0.fs 0x000000 Gowin ProgrammerExternal Flash mode
2 BIOS pack 0x200000 Gowin Programmer — exFlash C Bin Erase, Program thru GAO-Bridge
3 rp2040_keyboard.uf2 Hold BOOTSEL, plug the Pico in, drag the file onto the RPI-RP2 drive
4 firmware_esp32c6_v2.0_merged.bin 0x000000 esptool, over the C6's own USB-C — only if you fit one

Step 3 uses rp2040_keyboard.uf2 for the Waveshare RP2040-Zero (the usual one) or rp2040_keyboard_pico.uf2 for a plain Raspberry Pi Pico.

Step 4 is a single merged image — no Arduino IDE, nothing to compile:

esptool --chip esp32c6 --port COMx write_flash 0x0 firmware_esp32c6_v2.0_merged.bin

Source: ESP32-for-FPGA (branch c6), derived from ducasp/ESP32-UNAPI-Firmware under LGPL-2.1.

⚠️ Re-flash both the bitstream and the BIOS pack. The v2.0 menu and the v2.0 core go together.

⚠️ The BIOS pack contains copyrighted MSX system ROMs (MSX2+ BIOS, sub-ROM, kanji), so it is not distributed here. Build it from your own dumps.


First boot

The menu is off by default: the machine boots straight into MSX. Press S at boot, tick Menu al arrancar, then Save & Restart.

Settings shows Version FPGA (.fs): 2.0. If it says 1.9, you are still running the old bitstream.


Notes

Built with Gowin V1.9.12.03. clock_54m closes at 61.6 MHz against a 54 MHz constraint, with no violations.

Turbo is not a key any more: set it in Settings (Boot Turbo) or from software through the Panasonic ports $40/$41.