heh my help was small yours help is better heh thanks. I understand it more now.
I am glad you are enjoying it.
So it would be best to cut my code into sections like you did with the blink ...
You need to cut the code into sections/states. If you do not tasks will not run on time. That is the big pain with this sort of system. But it is not that hard to do when you understand it.
Like when sending characters send about 2 to lcd then run back to main and then if free time then it will resume until all characters are sent. since this is fast most likey it shouldnt bother.
The LCD is not a fast device. LCD drivers generally either delay after each character or wait for the LCD to indicate it is ready for the next. In a multitasking system we NEVER wait or delay. Instead we yield to the next task. If your code needs to wait or delay end the state instead. If it is a delay set a kTimer to allow the the task to run after the time is up. If you are waiting setup some code to let the task run after the flag is set.
You need to write one char in the state then yield. That allows other tasks to run while the LCD is doing its job. That is where this type of multitasking shines. Instead of wasting the time waiting we are off doing other tasks.
Also instead of 2 characters maybe around 5 at a time before yielding and checking if another item needs time.
As I said above write just the one character in the state.