diff --git a/sysdata/libraries/stn/src/string.hb b/sysdata/libraries/stn/src/string.hb index ab4e5fe3..8abed242 100644 --- a/sysdata/libraries/stn/src/string.hb +++ b/sysdata/libraries/stn/src/string.hb @@ -7,8 +7,7 @@ length := fn(ptr: ^u8): int { return len; } -display_int := fn(num: int): ^u8 { - p := page; +display_int := fn(num: int, p: ^u8): ^u8 { i := 0; if num == 0 { set(p, 48); diff --git a/sysdata/programs/time_driver/src/main.hb b/sysdata/programs/time_driver/src/main.hb index 78a24960..91d2d7e4 100644 --- a/sysdata/programs/time_driver/src/main.hb +++ b/sysdata/programs/time_driver/src/main.hb @@ -1,64 +1,21 @@ stn := @use("../../../libraries/stn/src/lib.hb"); log := stn.log; mem := stn.memory; +s := stn.string; page := 0 main := fn(): void { page += mem.request_page(1); - port_str := "\0\{46}\0"; + port_str := "\0\{47}\0"; a := @eca(u8, 3, 3, port_str, 2); - log.debug(&a); + n := 5000000; loop { if n == 0 break; n -= 1; stack_reclamation_edge_case := 0; } - td := display_int(100); + td := s.display_int(a, page); log.debug(td); return; } - -display_int := fn(num: int): ^u8 { - p := page; - 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: ^int, new: int): void { - *(change) = new; - return; -}