add external libraries and update stm version
[mTask.git] / int / nucleo-f767-blinky / src / interpret.c
index 4238f44..ad9cdad 100644 (file)
@@ -3,14 +3,15 @@
 
 #include "mTaskSymbols.h"
 #include "interpret.h"
-#include "misc.h"
+#include "interface.h"
 #include "task.h"
 #include "sds.h"
 
-#ifdef ARDUINO
+#ifdef STM32F767xx
 #define trace(op, ...) ;
 #else
-#define trace(op, ...) printf("pc: %d, sp: %d, op: " op, pc, sp, ##__VA_ARGS__);
+#define trace(op, ...) ;
+//printf("pc: %d, sp: %d, op: " op, pc, sp, ##__VA_ARGS__);
 #endif
 
 void run_task(struct task *t)
@@ -20,10 +21,10 @@ void run_task(struct task *t)
        int pc = 0;
        int sp = 0;
        char stack[STACKSIZE] = {0};
-       printf("Running task with length: %d\n", plen);
+       debug("Running task with length: %d\n", plen);
        while(pc != plen){
-               printf("program: %d\n", program[pc]);
-               printf("stack: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
+               debug("program: %d\n", program[pc]);
+               debug("stack: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
                        stack[0], stack[1], stack[2], stack[3], stack[4],
                        stack[5], stack[6], stack[7], stack[8], stack[9]);
 
@@ -120,16 +121,18 @@ void run_task(struct task *t)
                case BCSERIALPARSEINT: trace("SerialParseInt()\n");
                        break;
                case BCANALOGREAD: trace("AnalogRead(%d)\n", program[pc]);
-                       pc++;
+                       stack[sp++] = read_apin(program[pc++]);
                        break;
                case BCANALOGWRITE: trace("AnalogWrite(%d)\n", program[pc]);
-                       pc++;
+                       write_apin(program[pc++], stack[sp-1]);
+                       sp--;
                        break;
                case BCDIGITALREAD: trace("DigitalRead(%d)\n", program[pc]);
-                       pc++;
+                       stack[sp++] = read_dpin(program[pc++]);
                        break;
                case BCDIGITALWRITE: trace("DigitalWrite(%d)\n", program[pc]);
-                       pc++;
+                       write_dpin(program[pc++], stack[sp-1]);
+                       sp--;
                        break;
                default:
                        trace("unrecognized\n");