global str terminal_namespace = "/dev/term/0" global str prompt = "Enter a string:" global str new_line = "\n" function main () real a $0 int i $1 int mode $11 str term $10 load_immediate 5.0 -> a load_immediate 5000 -> i load_immediate 0 -> $2 load_immediate -1 -> $3 load_immediate 5.0 -> $5 loop loop_body add_real a $5 -> a add_int i $3 -> i jump_ge_int loop_body i $2 load_immediate terminal_namespace -> term load_immediate 0 -> mode syscall OPEN term mode -> term // Terminal term = open("/dev/term/0", 0); nat b $1 real_to_nat a -> b load_immediate prompt -> $7 string_length $7 -> $8 syscall WRITE term $7 $8 // print prompt str user_string $9 load_immediate 32 -> $8 malloc $8 -> user_string syscall READ term user_string $8 // read in max 32 byte string call pln user_string -> void nat_to_string b -> $4 call pln $4 -> void real_to_string a -> $3 call pln $3 -> void exit 0 function pln (str message $0) str ts $1 int mode $5 int msg_length $2 str nl $3 int nl_length $4 load_immediate terminal_namespace -> ts load_immediate 0 -> mode syscall OPEN ts mode -> ts strlen message -> msg_length syscall WRITE ts message msg_length load_immediate new_line -> nl strlen nl -> nl_length syscall WRITE ts nl nl_length return