I found a cleaner way to store a “magic word” to tell the ISR that we’re in bootloader mode and not application mode. This allows for hardware like Little Wire that aren’t connected to the INT0 line to use the bootloader. Excerpt from the Details page:
I came up with a cleaner way to quickly determine if the application or bootloader is running, that didn’t feel like as much of a hack. The bootloader pushes a “magic word” (0xB007 for “BOOT”) onto the stack right after the stack is initialized. This word is always at a fixed location at the end of RAM, so the ISR can do two quick reads from RAM. The ISR compares the word in RAM to the magic word, and if the values match, the bootloader is running, if not, the application is running. This is fast enough to allow the same interrupt to be used for USB in the application and bootloader, allowing the application to use the pin change interrupt for USB.
There are now two precompiled binaries supporting two different hardware configurations in the release, see details in the Readmet.txt file and on the Overview page.
The new release is available here: