I don't know about other devices but the GBAMP and probably lots of others boot _BOOT_MP.NDS when they start up. If you are using DSLua as your _BOOT_MP.NDS (like when you're developing) and you want to switch it back to something else like your bootloader (moonshell, DSorganize), but you don't have access to a computer, I've created a program that fixes this problem. I made it because this happened to me. I used DSLua as the _BOOT_MP and the next day when I was going on a trip I forgot to switch it back to moonshell and so the whole trip I could only play DSLua games that I had on my CF card. Anyway, here is the program. You rename a program to _BOOT_MP2.NDS on your CF card, it can be any DS program. I would put moonshell as _BOOT_MP2.NDS. Then when DSLua is _BOOT_MP.NDS, this program will overwrite _BOOT_MP.NDS with whatever code is in _BOOT_MP2.NDS. Since this is the Examples/Tutorials forum and no one's written a files tutorial yet I'll comment the lines to explain what they do and you might learn something.
bootmp2 = io.open( "_BOOT_MP2.NDS", "rb" ) -- gets _BOOT_MP2.NDS ready. "rb" means read (r) in binary (b).
bootmp = io.open( "_BOOT_MP.NDS", "wb" ) -- same as above but the "wb" means the file will be written to in binary.
bootmp2_code = bootmp2:read( "*all" ) -- copies everything inside the _BOOT_MP2.NDS file to a variable called bootmp2_code
bootmp:write( bootmp2_code ) -- overwrites all the code inside bootmp2_code to _BOOT_MP.NDS.