A WebAssembly port of PicoMite, the Raspberry Pi
Pico build of MMBasic. The full interpreter plus its
bytecode VM, running in your browser. No backend, no emulation layer.
Install
- Chrome: use the install icon in the address
bar when shown, or open the browser menu and choose
Cast, save, and share →
Install page as app.
- Edge: open the browser menu and choose
Apps → Install this site as an app.
- Safari: on macOS, choose
File → Add to Dock. On iPhone or iPad, use
Share → Add to Home Screen.
- Firefox: desktop Firefox does not install PWAs
directly; use the Progressive Web Apps for Firefox
extension, or use Firefox for Android's menu install option.
Credits
- MMBasic is written by Geoff Graham and maintained
together with Peter Mather; it's a BASIC dialect for
microcontrollers with decades of heritage.
- PicoMite (the Pico flavour) and related ports are
by Peter Mather. His upstream is at
UKTailwind/PicoMiteAllVersions.
- This web port is maintained at
jvanderberg/PicoMiteAllVersions.
Interface
- Left sidebar: files on the virtual SD card
(
/sd/). Drag files onto the page to import; hover a
row for pencil (edit), download, and trash icons. The folder
icon at top navigates into directories.
- Main canvas: the MMBasic display and REPL.
Click it to give it keyboard focus (the highlight ring appears
around the edge).
- Top-right cog: settings for framebuffer
resolution, heap size, per-statement slowdown.
- Editor: opens on the right when you click the
pencil. ▶ runs via the interpreter, ⚡ runs via the bytecode VM
(much faster for tight loops), 💾 saves, ✕ closes. Ctrl/⌘+S,
F5, Shift+F5, and Esc all work as shortcuts.
MMBasic basics
FILES: list files in the current directory
LOAD "name.bas": load a program
RUN "name.bas": run via interpreter
FRUN "name.bas": run via the bytecode VM (faster)
EDIT "name.bas": open in MMBasic's built-in
editor (or just click the pencil in the sidebar)
LIST: print the loaded program
NEW: clear the program buffer
HELP: browse the command list
Why?
Strictly speaking this web version doesn't need to be
based on PicoMite. The port replaces the whole Pico SDK HAL
(flash, SPI, DMA, LCD, USB, ADC, PIO, audio, filesystem) with
a browser-side HAL, so nothing Pico-specific is running.
What's shared with PicoMite is the parts that matter:
the MMBasic parser, interpreter, command set, and bytecode
VM.
The point is a fast iteration loop for writing MMBasic
programs, especially games. Edit a file in the browser,
hit ▶ or ⚡, see the result instantly; no SD-card swap,
no flash cycle, no serial console, no separate toolchain.
When a program runs here, it'll run on a real PicoMite
(within the limits of whatever peripherals the program
touches).