The Reload Emulator is open source and published to GitHub. It's possible to make your own build of the emulator and include different .dsk disk image files that are loaded by holding the left OS key and pressing the keys F2-F8.
To build the emulator, first clone the project and get sub modules and dependencies using these commands.
git clone https://github.com/adafruit/reload-emulator.git cd reload-emulator git submodule update --init cd ./platforms/rp2040/lib/pico-sdk git submodule update --init cd lib/tinyusb ./tools/get_deps.py rp2040
Now go back to the reload-emulator/ directory. Either open a new terminal there, or use this command to change directories back up to it if you followed the commands above.
cd ../../../../../../
Customizing .dsk Files
Customizing the disk images that are preloaded into the build requires modifying the mkdisk.py file. Open that file in your favorite text editor, scroll down past the functions and look for this section of code:
do_dsk("prodos", "https://archive.org/download/ProDOS_2_4_1/ProDOS_2_4_1.dsk", "sha1", "88d0d66867e607d6ee1117f61b83f8fe37d29f69", False)
do_dsk("moon_patrol", "https://archive.org/download/Moon_Patrol/Moon_Patrol.dsk", "sha1", "edd50462f044fa416d19bdc43f61ab7b881de067", False)
do_dsk("oregon_trail1", "https://archive.org/download/Oregon_Trail_Disk_1_of_2/Oregon_Trail_Disk_1_of_2.dsk", "sha1", "fb0c887c7902106a72327f9797cdd14a254e3228", False)
do_dsk("reader_rabbit", "https://archive.org/download/ReaderRabbit11Ivyrea/Reader%20Rabbit.dsk", "sha1", "f8061c96227ccb6d230b76981f52533f74a3068c", False)
do_dsk("kraken", "https://archive.org/download/kraken_a_deep_sea_quest_apple_ii_1989/playable.dsk", "sha1", "80ea82becdd6c948b3810f34c1614eee396ee68c", False)
do_dsk("zork", "https://archive.org/download/a2_Zork_I_The_Great_Underground_Empire_1980_Infocom_PASCAL/Zork_I_The_Great_Underground_Empire_1980_Infocom_PASCAL.dsk", "sha1", "088d970ddcc97ed0fac4ce661b784533b9440b49", False)
# do_dsk("", "", "sha1", "", False)
# local file path to .dsk file instead of URL
# do_dsk("number_munchers", "Number Munchers (v1.3-64K-1986).dsk", "sha1", "4725fc7e170d315b57fa91edb68fdcf16d32077b", False)
There are 8 total disk image slots available, and ProDOS uses the first one leaving another 7 that can be customized. In the default build, 6 slots are used for games downloaded from archive.org. You can add up to two more without removing any, or replace any of the existing ones with different games.
Each disk definition looks like this.
do_dsk("name", "URL", "sha1", "hash", False)
The "name", "URL", and "hash" argument values should be replaced by with a name, URL pointing to a .dsk file, and the SHA1 hash of the .dsk respectively. For URL, you can use a path to a local .dsk file downloaded to the computer instead of a remote URL as shown in the commented lines below all of the pre-loaded URL do_dsk() calls.
To find the SHA1 hash of a file on Raspberry Pi and other Linux computers a command like this one.
sha1sum path/to/file.dsk
./fruitjam-build.sh
This warning about a variable that is defined but not used gets printed, but does not cause any trouble for the build. It can be safely ignored.
If you see the [100%] Built target apple2e output near the end of the messages printed by the build script, it indicates the build was successful and it will create a UF2 file that can be loaded onto the Fruit Jam. To copy it to your device, first boot into to the bootloader by holding button 1 and pressing the reset button. Then copy or drag the file build/systems/apple2e/apple2e.uf2 to the RP2350 drive.
Once the UF2 is loaded, access the updated disk images using the left OS key and the F key with the number associated with their order in the list within mkdisk.py
Page last edited October 15, 2025
Text editor powered by tinymce.