diff --git a/pycardium/main.c b/pycardium/main.c index 2943b12655103682d163474da8bafe0e54bad772..7aa126186b81699a1d714e44bf8716581c90dc71 100644 --- a/pycardium/main.c +++ b/pycardium/main.c @@ -50,44 +50,41 @@ int main(void) mp_stack_set_top(&__StackTop); mp_stack_set_limit((mp_int_t)&__StackLimit); - while (1) { - gc_init(&__HeapBase + 1024 * 10, &__HeapLimit); - - mp_init(); - - readline_init0(); - interrupt_init0(); - - /* request by badge.team */ - mp_obj_list_init(mp_sys_path, 0); - mp_obj_list_append(mp_sys_path, MP_ROM_QSTR(MP_QSTR_)); - mp_obj_list_append( - mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_lib) - ); - mp_obj_list_append( - mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_apps) - ); - - if (cnt > 0) { - pyexec_file_if_exists(script_name); - } + gc_init(&__HeapBase + 1024 * 10, &__HeapLimit); + + mp_init(); + + readline_init0(); + interrupt_init0(); + + /* request by badge.team */ + mp_obj_list_init(mp_sys_path, 0); + mp_obj_list_append(mp_sys_path, MP_ROM_QSTR(MP_QSTR_)); + mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_lib)); + mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_apps)); + + if (cnt > 0) { + pyexec_file_if_exists(script_name); - epic_uart_write_str(header, sizeof(header)); - - for (;;) { - if (pyexec_mode_kind == PYEXEC_MODE_RAW_REPL) { - if (pyexec_raw_repl() != 0) { - break; - } - } else { - if (pyexec_friendly_repl() != 0) { - break; - } + /* Drop to REPL by reloading Pycardium */ + epic_exec(""); + } + + for (;;) { + if (pyexec_mode_kind == PYEXEC_MODE_RAW_REPL) { + if (pyexec_raw_repl() != 0) { + break; + } + } else { + if (pyexec_friendly_repl() != 0) { + break; } } - - mp_deinit(); } + + mp_deinit(); + + epic_exit(0); } void HardFault_Handler(void)