#include <eForth1.h>
///
/// Enter the following Forth code into Serial Monitor input
/// : flip 0 CALL ; \ ( -- ) toggle the red LED
/// : red 5 1 CALL ; \ ( -- ) turn on red LED
/// : blue 6 1 CALL ; \ ( -- ) turn on blue LED
/// : on? 2 CALL ; \ ( n -- ) read the value on given pin
/// flip \ toggle red LED to on
/// 5 on? \ is red LED (pin 5) on?
///
void led_flip() { /// ( -- ) no input
digitalWrite(5, digitalRead(5) ^ 1);
}
void led_write() { /// ( n -- ) take one input from stack
int t = vm_pop();
digitalWrite(t, HIGH);
}
void led_read() { /// ( n -- v ) one input, and one output
int t = vm_pop();
int v = digitalRead(t);
vm_push(v);
}
void setup() {
Serial.begin(115200);
while(!Serial);
ef_setup();
vm_cfunc(0, led_flip);
vm_cfunc(1, led_write);
vm_cfunc(2, led_read);
}
void loop() {
ef_run();
}