MMBasic Web
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.
Credits
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).