|
|
@@ -3,26 +3,63 @@
|
|
|
|
|
|
extern PikaObj* __pikaMain;
|
|
|
void PikaStdTask_Task___init__(PikaObj* self) {
|
|
|
+ /*
|
|
|
obj_run(self,
|
|
|
"calls.__init__()\n"
|
|
|
"is_period = 0\n");
|
|
|
+ */
|
|
|
+ const uint8_t bytes[] = {
|
|
|
+ 0x0c, 0x00, /* instruct array size */
|
|
|
+ 0x00, 0x82, 0x01, 0x00, 0x00, 0x85, 0x10, 0x00, 0x00, 0x04, 0x12, 0x00,
|
|
|
+ /* instruct array */
|
|
|
+ 0x1c, 0x00, /* const pool size */
|
|
|
+ 0x00, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x2e, 0x5f, 0x5f, 0x69, 0x6e, 0x69,
|
|
|
+ 0x74, 0x5f, 0x5f, 0x00, 0x30, 0x00, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72,
|
|
|
+ 0x69, 0x6f, 0x64, 0x00, /* const pool */
|
|
|
+ };
|
|
|
+ pikaVM_runByteCode(self, (uint8_t*)bytes);
|
|
|
obj_setPtr(__pikaMain, "__calls", obj_getPtr(self, "calls"));
|
|
|
}
|
|
|
|
|
|
void PikaStdTask_Task_call_always(PikaObj* self, Arg* fun_todo) {
|
|
|
obj_setArg(self, "fun_todo", fun_todo);
|
|
|
- obj_run(self,
|
|
|
- "calls.append('always')\n"
|
|
|
- "calls.append(fun_todo)\n");
|
|
|
+ // obj_run(self,
|
|
|
+ // "calls.append('always')\n"
|
|
|
+ // "calls.append(fun_todo)\n");
|
|
|
+ const uint8_t bytes[] = {
|
|
|
+ 0x10, 0x00, /* instruct array size */
|
|
|
+ 0x10, 0x83, 0x01, 0x00, 0x00, 0x02, 0x08, 0x00, 0x10, 0x81, 0x15,
|
|
|
+ 0x00, 0x00, 0x02, 0x08, 0x00, /* instruct array */
|
|
|
+ 0x1e, 0x00, /* const pool size */
|
|
|
+ 0x00, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x00, 0x63, 0x61, 0x6c,
|
|
|
+ 0x6c, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x00, 0x66,
|
|
|
+ 0x75, 0x6e, 0x5f, 0x74, 0x6f, 0x64, 0x6f, 0x00, /* const pool */
|
|
|
+ };
|
|
|
+ pikaVM_runByteCode(self, (uint8_t*)bytes);
|
|
|
}
|
|
|
|
|
|
void PikaStdTask_Task_call_when(PikaObj* self, Arg* fun_todo, Arg* fun_when) {
|
|
|
obj_setArg(self, "fun_todo", fun_todo);
|
|
|
obj_setArg(self, "fun_when", fun_when);
|
|
|
+ /*
|
|
|
obj_run(self,
|
|
|
"calls.append('when')\n"
|
|
|
"calls.append(fun_when)\n"
|
|
|
"calls.append(fun_todo)\n");
|
|
|
+ */
|
|
|
+ const uint8_t bytes[] = {
|
|
|
+ 0x18, 0x00, /* instruct array size */
|
|
|
+ 0x10, 0x83, 0x01, 0x00, 0x00, 0x02, 0x06, 0x00, 0x10, 0x81, 0x13, 0x00,
|
|
|
+ 0x00, 0x02, 0x06, 0x00, 0x10, 0x81, 0x1c, 0x00, 0x00, 0x02, 0x06, 0x00,
|
|
|
+ /* instruct array */
|
|
|
+ 0x25, 0x00, /* const pool size */
|
|
|
+ 0x00, 0x77, 0x68, 0x65, 0x6e, 0x00, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x2e,
|
|
|
+ 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x00, 0x66, 0x75, 0x6e, 0x5f, 0x77,
|
|
|
+ 0x68, 0x65, 0x6e, 0x00, 0x66, 0x75, 0x6e, 0x5f, 0x74, 0x6f, 0x64, 0x6f,
|
|
|
+ 0x00,
|
|
|
+ /* const pool */
|
|
|
+ };
|
|
|
+ pikaVM_runByteCode(self, (uint8_t*)bytes);
|
|
|
}
|
|
|
|
|
|
void PikaStdTask_Task_call_period_ms(PikaObj* self,
|
|
|
@@ -30,12 +67,29 @@ void PikaStdTask_Task_call_period_ms(PikaObj* self,
|
|
|
int period_ms) {
|
|
|
obj_setArg(self, "fun_todo", fun_todo);
|
|
|
obj_setInt(self, "period_ms", period_ms);
|
|
|
+ /*
|
|
|
obj_run(self,
|
|
|
"calls.append('period_ms')\n"
|
|
|
"calls.append(period_ms)\n"
|
|
|
"calls.append(fun_todo)\n"
|
|
|
"calls.append(0)\n"
|
|
|
"is_period = 1\n");
|
|
|
+ */
|
|
|
+ const uint8_t bytes[] =
|
|
|
+ {
|
|
|
+ 0x28, 0x00, /* instruct array size */
|
|
|
+ 0x10, 0x83, 0x01, 0x00, 0x00, 0x02, 0x0b, 0x00, 0x10, 0x81, 0x01,
|
|
|
+ 0x00, 0x00, 0x02, 0x0b, 0x00, 0x10, 0x81, 0x18, 0x00, 0x00, 0x02,
|
|
|
+ 0x0b, 0x00, 0x10, 0x85, 0x21, 0x00, 0x00, 0x02, 0x0b, 0x00, 0x00,
|
|
|
+ 0x85, 0x23, 0x00, 0x00, 0x04, 0x25, 0x00, /* instruct array */
|
|
|
+ 0x2f, 0x00, /* const pool size */
|
|
|
+ 0x00, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x6d, 0x73, 0x00,
|
|
|
+ 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
|
|
|
+ 0x64, 0x00, 0x66, 0x75, 0x6e, 0x5f, 0x74, 0x6f, 0x64, 0x6f, 0x00,
|
|
|
+ 0x30, 0x00, 0x31, 0x00, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x69,
|
|
|
+ 0x6f, 0x64, 0x00, /* const pool */
|
|
|
+ };
|
|
|
+ pikaVM_runByteCode(self, (uint8_t*)bytes);
|
|
|
}
|
|
|
|
|
|
void PikaStdTask_Task_run_once(PikaObj* self) {
|
|
|
@@ -148,7 +202,17 @@ void PikaStdTask_Task_run_once(PikaObj* self) {
|
|
|
|
|
|
void __Task_update_tick(PikaObj* self) {
|
|
|
if (obj_getInt(self, "is_perod")) {
|
|
|
- pikaVM_runAsm(self, "B0\n0 RUN platformGetTick\n");
|
|
|
+ /*
|
|
|
+ pikaVM_run(self, "platformGetTick()");
|
|
|
+ */
|
|
|
+ const uint8_t bytes[] = {
|
|
|
+ 0x04, 0x00, /* instruct array size */
|
|
|
+ 0x00, 0x82, 0x01, 0x00, /* instruct array */
|
|
|
+ 0x11, 0x00, /* const pool size */
|
|
|
+ 0x00, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
|
|
|
+ 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x00, /* const pool */
|
|
|
+ };
|
|
|
+ pikaVM_runByteCode(self, (uint8_t*)bytes);
|
|
|
}
|
|
|
}
|
|
|
|