Paul told me it was difficult, but not impossible, to make an AVR USB bootloader that fits in
512 256 words of Flash (coincidentally, the size of the smallest configurable boot block on most of the USB-enabled AVR chips). So of course I had to try. But along the way, I needed an AVR serial programmer (to burn the boot block) but I didn't have one. However, I did have the broken Teensy Paul gave me (which had a few spare GPIOs after the Avago Yow! project) and Ward has been showing off his Txtzyme interpreter, so...
Add a little Perl, and viola:
a Teensy running Txtzyme that can flash an AT90USB1287 on my Atmel ATUSBKey dev board! Once I get my own USB bootloader running, I'll be able to go the other direction: load Txtzyme on the ATUSBKey and use it to flash my bootloader back onto the Teensy.
BTW, Ward, I had to increase the size of the line buffer in Txtzyme to 1K (plus a few other changes to make that work). Each Serial Programmer command takes about 600 bytes of Txtzyme code to send/receive, and I wanted to do it at a steady pace, rather than mixing the SPI wiggling with USB I/O.