summaryrefslogtreecommitdiff
path: root/stage3/font.c
diff options
context:
space:
mode:
Diffstat (limited to 'stage3/font.c')
-rw-r--r--stage3/font.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/stage3/font.c b/stage3/font.c
index 9e315e6..69017ca 100644
--- a/stage3/font.c
+++ b/stage3/font.c
@@ -142,37 +142,41 @@ void print_char(char c)
fix_cursor();
}
-void print(const char *line)
+void print(str line)
{
- while (*line != '\0')
- print_char(*line++);
+ for (usize i = 0; i < line.len; i++)
+ print_char(line.data[i]);
}
-void printn(const char *line, usize len)
+void print_num_pad(u64 x, u8 base, u8 pad_len, char pad_char)
{
- for (usize i = 0; i < len; i++)
- print_char(*line++);
-}
-
-void print_padded(u64 x, u8 base, u8 pad_len, char pad_char)
-{
- char digit[65];
- char *ptr = &digit[64];
- *ptr = '\0';
+ char buffer[64];
+ usize idx = 64;
do {
u8 digit = x % base;
- *--ptr = digit + (digit < 10 ? '0' : ('A' - 10));
+ buffer[--idx] = digit + (digit < 10 ? '0' : ('A' - 10));
x /= base;
} while (x != 0);
- while (ptr > digit + 64 - pad_len)
- *--ptr = pad_char;
+ while (idx > (usize) (64 - pad_len))
+ buffer[--idx] = pad_char;
+
+ print((str) { 64 - idx, &buffer[idx] });
+}
+
+void print_num(u64 x, u8 base)
+{
+ print_num_pad(x, base, 0, ' ');
+}
- print(ptr);
+void print_dec(u64 x)
+{
+ print_num(x, 10);
}
-void print_num(u64 x, u8 base, u8 pad)
+void print_hex(u64 x)
{
- print_padded(x, base, pad, ' ');
+ print_num(x, 16);
}
+