length := fn(ptr: ^u8): int { len := 0 loop if *ptr == 0 break else { len += 1 ptr += 1 } return len } display_int := fn(num: int, p: ^u8): ^u8 { i := 0 if num == 0 { set(p, 48) return p } loop { if num == 0 break set(p + i, num % 10 + 48) num /= 10 i += 1 } reverse(p) //null terminate set(p + i, 0) return p } reverse := fn(s: ^u8): void { //reverse a string, don't remove digits len := 0 loop { if *(s + len) == 0 break len += 1 } i := 0 j := len - 1 loop { if i >= j break temp := *(s + i); *(s + i) = *(s + j); *(s + j) = temp i += 1 j -= 1 } return } set := fn(change: ^u8, new: int): void { *change = new return }