X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=client%2Finterpret.c;h=08a20df648a79d81550143eedf1ac6f6e036f552;hb=6d956995e169ae8fd44d62e26e35d499a9660225;hp=51e295177360215580c690c0e03a270649e03f20;hpb=7ab8606c3d22a2bc2743eae7a398407c84d502f2;p=mTask.git diff --git a/client/interpret.c b/client/interpret.c index 51e2951..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; @@ -138,6 +134,7 @@ void run_task(struct task *t) break; case BCSERIALPARSEINT: trace("SerialParseInt()"); break; +#if HAVEAIO == 1 case BCANALOGREAD: trace("AnalogRead(%d)", program[pc]); stack[sp++] = read_apin(program[pc++]); break; @@ -145,6 +142,8 @@ void run_task(struct task *t) write_apin(program[pc++], stack[sp-1]); sp--; break; +#endif +#if HAVEDIO == 1 case BCDIGITALREAD: trace("DigitalRead(%d)", program[pc]); stack[sp++] = read_dpin(program[pc++]); break; @@ -152,6 +151,8 @@ void run_task(struct task *t) write_dpin(program[pc++], stack[sp-1]); sp--; break; +#endif +#if HAVELED == 1 case BCLEDON: trace("LedOn(%d)", program[pc]); led_on(stack[sp-1]); sp--; @@ -160,6 +161,11 @@ void run_task(struct task *t) led_off(stack[sp-1]); 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]);