update spec to support normal io pins
[mTask.git] / client / interpret.c
index 9862e7b..08a20df 100644 (file)
 
 #define f16(p) program[pc]*265+program[pc+1]
 
+uint16_t stack[STACKSIZE] = {0};
+
 void run_task(struct task *t)
 {
        uint8_t *program = t->bc;
-       int plen = t->tlen;
+       int plen = t->tasklength;
        int pc = 0;
        int sp = 0;
-       char stack[STACKSIZE] = {0};
        debug("Running task with length: %d", plen);
        while(pc < plen){
                switch(program[pc++]){
@@ -161,6 +162,10 @@ void run_task(struct task *t)
                        sp--;
                        break;
 #endif
+               case BCRETURN: trace("Return");
+                       debug("Task returned");
+                       task_delete(t->taskid);
+                       return;
                default:
                        trace("unrecognized");
                        die("Unrecognized command: %d", program[pc-1]);