There are two threads: the first one blinks on pin C5 (eight times, with a 500ms period), and the second one blinks on pin C6 (forever, each second). Each thread has its own stack and can yield to the scheduler at any point.
It works by abusing setjmp/longjmp functions and swapping the stack pointer register. This can likely fail in a multitude of obscure and interesting ways, so use it at your own caution. But hey, it blinks!
Check out project Github page for latest code and build instructions!
Silica Gel
Salvador Mendoza
Keith
Cliffweb03