Word Processor Cart: WordGrinder
Boot Without Cart Inserted: Thonny
Current Options Under Consideration:
I have a few ideas on how I might get the Pi to boot into an OS stored on a ROM chip connected to GPIO. I know the ideal solution is a bit of a stretch, but I feel it's well worth investigating.
1) Boot from Flash Memory Over GPIO Pins (Ideal Solution)
OS and program code are stored on SD NAND chips, connected to the SDIO GPIO port. GPIO Boot Mode would tell the Pi to boot from SDIO, which would load the minimal OS and program code.
GPIO Boot Mode holds some clues, and then there's this GitHub link, referring to booting from EEPROM over SPI on the GPIO ports. It is possible, but not implemented, because the developers don't have a compelling reason to implement it. I have yet to find a way to actually implement this and will start elsewhere first.
2) Install a Program to Load and Manage PiCart Hardware
A special program is made to load the carts that could run on boot, and is installed into the main OS. That would be less reliable, as there are so many OS varieties that people could be running, and you'd have to install something. I often run into problems with software I installed, so this is far from ideal, but would likely be the easiest to implement, and therefor, the most likely to get done. Starting here.
3) Boot from a Custom OS to Load and Manage PiCart Hardware
Use a special SD card that just loads a minimal OS that looks for the cartridges to boot. This would require swapping SD cards, which is a hassle and would risk wearing out the SD car slot prematurely. This is my least favorite option, but one I will explore. This would be ideal for children and education use as there would be no software to install. Once a minimal OS is chosen, a custom image will be made for use with these carts.
4) Bootable USB Drive
Have a tiny USB flash drive that boots the cart load OS, and just leave it plugged into one of the USB ports at all times. USB ports are more robust, so I wouldn't feel as bad about plugging and unplugging it regularly. You could program the flash drive with a standardized cart boot OS, then use the GPIO Boot Mode to tell the Pi to boot from USB if I PiCart is detected. Otherwise, the system would boot from the usual boot device. If the developer of the cart needed to add code to the Cart Load OS, the OS could check for a certain code in the cart ROM and install it to the OS flash drive, updating the OS via cart. This would allow developers to add whatever features they want, and wouldn't be nearly as limited by the OS. The problem with that is that there would be a chance of bugs developing in the OS. It might actually be best to just write protect the USB drive and force developers to load everything they need into RAM.
This system is essentially two parts right now: ROM cart and boot drive. The hardware should be simple enough, but the software to getting working in the ideal manner is a bit beyond me at the moment. I plan to keep it all open source, of course, and just want to see it happen.