health check on an ISR please - COMPLETE - THANKS

How does the compiler know that a routine is an ISR - is it clever enough to determine this through the Timer1 class invocation?

There are specific names for the various interrupt vectors. The Timer1::attachInterrupt method adds code to a specific vector to call the specified function. There is nothing magic about how it works, nor does the compiler do anything clever to make a routine into an ISR.