str terminal_namespace = "/dev/term/0"; str prompt = "Enter a string:"; str new_line = "\n"; function main () { real a; int i; int mode; str term; int zero; int decrement; real five; // do (i = 5000; i >= 0, i = i - 1) load_immediate 5.0 -> a; load_immediate 5000 -> i; load_immediate 0 -> zero; load_immediate -1 -> decrement; load_immediate 5.0 -> five; loop loop_body { add_real a five -> a; add_int i decrement -> i; jump_ge_int loop_body i zero; } load_address terminal_namespace -> term; load_immediate 0 -> mode; syscall OPEN term mode term; // Terminal term = open("/dev/term/0", 0); nat b; str prompt_str; nat prompt_len; real_to_nat a -> b; load_address prompt -> prompt_str; string_length prompt_str -> prompt_len; syscall WRITE term prompt_str prompt_len; // print prompt str user_string; nat user_max_string_size; load_immediate 32 -> user_max_string_size; malloc user_max_string_size -> user_string; syscall READ term user_string user_max_string_size; // read in max 32 byte string str b_string; str a_string; call pln (user_string); nat_to_string b -> b_string; call pln (b_string); real_to_string a -> a_string; call pln (a_string); exit 0; } function pln (str message) { ptr term; int msg_length; str nl; int nl_length; int mode; str term_ns; load_immediate 0 -> mode; load_address terminal_namespace -> term_ns; syscall OPEN term_ns mode term; string_length message -> msg_length; syscall WRITE term message msg_length; load_address new_line -> nl; string_length nl -> nl_length; syscall WRITE term nl nl_length; return; }