Wow. Thats impressive.

I'm sending strings of data. But of course that can be easily accomplished with sending bytes in a loop.

The other interrupt handlers are mostly short. But i guess thats a relative term. Most of them just record an input, or an event and the time that it occurred, and throw that data in a circular buffer to be handled when the main program gets around to it .