Hello,
I have been trying to redirect emit from within a task in a forth
multitasking setup. Redirection works perfectly for me in a word run
from the interpreter but when I try to do it from a task I fail to get
it to work. Below is a stripped down example which aims to redirect
emit to drop - so nothing should be output. The result of go! is
either a mcu reset or a hang. Without the redirection line, the task
runs and I can use the interpreter. Any ideas as to where I am going
wrong very gratefully received.
Regards,
Tristan
\ include ms.frt \ with pause
\ include avr-values.frt
\ include multitask.frt
' emit defer@ Evalue emit.amforth
' emit? defer@ Evalue emit?amforth
: +noop ['] drop is emit ['] true is emit? ;
: -noop emit.amforth is emit emit?amforth is emit? ;
$20 $20 0 task: task1
: tx1.ex
task1 tib>tcb activate
begin
+buzz 1000 ms
\ uncomment one of three lines below
\ 1 +noop . -noop \ works in the interpreter
1 +noop . -noop \ resets the mcu in task
\ +noop -noop \ does not reset mcu in task
-buzz 1000 ms
again
;
: go!
buzz.init
task1 task-init
tx1.ex
onlytask
task1 tib>tcb alsotask
multi
;
_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
[email protected]
https://lists.sourceforge.net/lists/listinfo/amforth-devel