I have been using Splat controller for quite a while. www.splatco.com.au
They have a very simple cooperative OS with semaphores.
Quite a bit of free downloadable material their site.
Anyway, this is my first C program, so there is quite a bit of syntax learning to be had.
I'm using Protothread as my "OS" as it appears to be nice and simple (AND completely in C) and I'm just doing a bunch of tasks doing different things to get my head around C.
As I have an Duemilanove (8bit) and Chipkit Max32 (Pic32 bit) board, I can have the same program running on both. :-)
Task1 is just the blinking LED, task2 is button press with LED on using bit(), task3 is a star delta motor starter, task4 to task8 to be decided.
Trying to use all the Protothread timing functions to understand them.