X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=client%2Finterpret.c;h=08a20df648a79d81550143eedf1ac6f6e036f552;hb=9b185b6f0d9d08bd5e3305ee9ebc50e1ff3737a9;hp=b9d0c88eddae750ea93400e50ab1f0a01ce58fc3;hpb=2b50c2537dbb28d062938a6c217f5ba27fed23d9;p=mTask.git diff --git a/client/interpret.c b/client/interpret.c index b9d0c88..08a20df 100644 --- a/client/interpret.c +++ b/client/interpret.c @@ -16,20 +16,16 @@ #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){ -// debug("program: %d", program[pc]); -// debug("stack: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x", -// stack[0], stack[1], stack[2], stack[3], stack[4], -// stack[5], stack[6], stack[7], stack[8], stack[9]); - switch(program[pc++]){ case BCNOP: trace("nop"); break; @@ -166,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]);