((code (label main (load-immediate $0 5.0) (load-immediate $1 5000) (load-immediate $2 0) (load-immediate $3 -1) (load-immediate $5 5.0) (label loop-body (add-real $0 $0 $5) (add-int $1 $1 $3) (jump-ge-int &loop-body $1 $2)) (load-immediate $10 &terminal-namespace) (load-immediate $11 0) (syscall OPEN $10 $10 $11) ; Terminal term = open(namespace, flags) (real-to-nat $1 $0) (load-immediate $7 &prompt) (string-length $8 $7) (syscall WRITE $10 $7 $8) ; print prompt (load-immediate $8 32) (malloc $11 $8) (syscall READ $10 $11 $8) ; read in max 32 byte string (call &pln ($11) nil) (nat-to-string $4 $1) (call &pln ($4) nil) (real-to-string $3 $0) (call &pln ($3) nil) (halt 0)) (label pln (load-immediate $1 &terminal-namespace) ; get terminal device (load-immediate $11 0) (syscall OPEN $1 $1 $11) (load-immediate $3 &new-line) (string-length $2 $0) (syscall WRITE $1 $0 $2) (string-length $4 $3) (syscall WRITE $1 $3 $4) (return nil))) (data (label terminal-namespace "/dev/term/0") (label prompt "Enter a string: ") (label new-line "\n")))