Hi everyone,
I’ve been building KotoOS, a lightweight PDA environment and small-app runtime for the PicoCalc, and it’s now open source (MIT/Apache-2.0):
GitHub: GitHub - siska-tech/KotoOS: KotoOS: a lightweight Japanese PDA environment and small-app runtime for the ClockworkPi PicoCalc (RP2040), written in Rust · GitHub
Release (UF2 + SD card zip): Release KotoOS v0.1.0 — first public release · siska-tech/KotoOS · GitHub
What it is
- A launcher shell with app details, status strip, and battery/SD indicators
- A bytecode app runtime with its own small high-level language (“Koto”) and host-side compiler — apps are compiled to compact bytecode and streamed from PSRAM through a windowed code cache, so games run well beyond the RP2040’s SRAM
- A Japanese SKK-style IME running entirely on the device, with an original CC0-licensed dictionary (2,771 readings / 4,982 words) read directly from SD — as far as I know, the first Japanese input method on a PicoCalc
- A dual-core audio service: core 1 renders KotoMML music + SFX while core 0 runs the game loop
- Seven bundled apps: KotoBlocks, KotoRun, KotoRogue, KotoSnake, KotoShogi, KotoMines, Sokoban, plus a memo app with the IME
Try it (hardware)
- Copy the contents of
kotoos-sdcard-v0.1.0.zipto the root of a FAT32 SD card - Flash
kotoos-firmware-v0.1.0.uf2to the stock Pico (1H) via BOOTSEL - Boot — arrow keys navigate the launcher, Enter launches, F-keys drive app functions
Try it (no hardware needed)
The repo includes KotoSim, a desktop simulator that shares the same core crates as the firmware — cargo run -p koto-sim -- --window gives you the same shell and apps on your PC, and the whole app-development loop (compile → package → run → screenshot) works host-side.
Tech notes, for the curious
- 100% Rust (Embassy on RP2040); the renderer never allocates a full framebuffer — it paints 16-line RGB565 strips and converts to the panel’s wire format on the fly
- PSRAM is treated as block-transfer storage (not memory-mapped), with a two-tile code window cache for bytecode
- Retained-mode graphics with dirty-rect derivation keeps most game frames partial — KotoRun runs at ~20-40 fps depending on scene
- Everything is validated by host-side harnesses (golden frames, budget gates, fixture scripts) before it touches hardware
Current limitations
- Stock Pico 1H (RP2040) only — no RP2350/Pico 2 support yet
- UI text is Japanese (it is a Japanese PDA
) — the games are perfectly playable without reading it - Keyboard backlight, Wi-Fi (Pico W), and power management are not integrated yet
Feedback, issues, and questions are very welcome — especially from anyone who tries the IME or wants to write an app in the Koto language.




