aboutsummaryrefslogtreecommitdiffstats
path: root/src/script.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/script.c')
-rw-r--r--src/script.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/script.c b/src/script.c
index 049608b..733bc4a 100644
--- a/src/script.c
+++ b/src/script.c
@@ -26,11 +26,12 @@
#include <display_draw.h>
#include <heap.h>
#include <initrd.h>
+#include <it/string.h>
+#include <keypad.h>
+#include <math.h>
#include <random.h>
#include <serial.h>
#include <stdlib.h>
-#include <it/string.h>
-#include <keypad.h>
#define igetarg_integer(it, n) ((int)igetarg(it, n)->value.f)
@@ -48,8 +49,12 @@ int script_pixel(instance *it);
int script_menu(instance *it);
int script_filemenu(instance *it);
+int math_sin(instance *it);
+
void script_loadlib(instance *it)
{
+ inew_number(it, "pi", 3.1415926f);
+
inew_cfunc(it, "print", script_puts);
inew_cfunc(it, "putchar", script_putchar);
inew_cfunc(it, "gets", script_gets);
@@ -66,6 +71,16 @@ void script_loadlib(instance *it)
inew_cfunc(it, "menu", script_menu);
inew_cfunc(it, "filemenu", script_filemenu);
+
+ inew_cfunc(it, "sin", math_sin);
+}
+
+int math_sin(instance *it)
+{
+ variable *n = igetarg(it, 0);
+ variable *v = make_varf(0, sinf(n->value.f));
+ ipush(it, (uint32_t)v);
+ return 0;
}
int script_menu(instance *it)