avrforth uses round robin cooperative multitasking. To execute a word
in its own task, first allocate enough memory for the task's stacks.
Next, initialize the task using task-init
and make it
active with task-queue
.
word | stack | description |
---|---|---|
task-init | ( xt rs ds task -- ) | initialize a task structure. xt = word to execute within task. rs = return stack size. ds = data stack size. task = address of task structure. |
task-queue | ( a -- ) | add a task to the round robin queue. |
pause | ( -- ) | yield to other tasks. |
me | ( -- a ) | fetch task pointer. |
single | ( -- ) | stop all tasks except the interpreter. |