PicoDOS is a lightweight, interactive shell operating system environment built in MicroPython for the Raspberry Pi Pico. It provides a CLI, filesystem commands, and support for running simple .psh scripts and MicroPython apps. Note: Pico# (pico sharp, psh) is an interpreted language that I've written in MicroPython. It is tailored to the Pico and supports variables, conditions, primitive types, functions, iteration, standard input/output, and light recursion. I plan on making a seperate repository to document this language.
- Interactive terminal with command history, scrolling, and editing
- Basic file system commands:
DIR,CDR,DEL,RNM,MDR - Runs custom
.pshscript files with an embedded interpreter - Nano-style text editor for
.txtand.pshfiles - Simple games playable with joystick and buttons
- Runs on Raspberry Pi Pico with MicroPython firmware, however it can be compiled to
.mpyand uf2 format to run without dependencies. - Designed for ease of use and expandability. This repo contains its MicroPython source code. On the Pi, it's cross-compiled into
.mpybinaries usingmpy-cross.
| Command | Description |
|---|---|
| DIR | List files and directories |
| CDR | Change directory |
| DEL | Delete a file (only .txt/.psh) |
| RNM | Rename a file or directory |
| MDR | Make a new directory |
| RUN | Run a .psh script |
| OPN -R/W | Open file in the built-in editor |
- The joystick is mainly used for navigation and gaming.
- Buttons:
A— the ENTER key and typically start/stop in gamesB— goes up a directory in file explorer, also used to restart a gameX— exit current app or shellY— return to picoDOS home menu
- Keyboard:
- A 4x4 matrix keypad
- The first row is normal, all rows succeeding it have their last key reserved as a toggle button. This is similar to how SHIFT and NUMBER LOCK work on standard keyboards.
- Flash Raspberry Pi Pico with official MicroPython firmware.
- Clone the repo and compile the files into
.mpybinaries using thempy-crosscross compiler. - If you want to take it a step further, you could inject the binaries into the MicroPython firmware and freeze it, condensing PicoDOS into a single
uf2file. Note that this would remove the ability to modify the PicoOS source files.
- Port picoDOS to C++ for better performance and bare-metal control
- Add multitasking and more advanced filesystem support
- Integrate more apps and network-based tools and services
Thanks to the Raspberry Pi Foundation and MicroPython community for making embedded development accessible.
MIT License © Satej Gandre

