From 52273f14a91af4656beb35bd3fa1c9a66c7f07b1 Mon Sep 17 00:00:00 2001 From: wires Date: Wed, 8 Oct 2025 07:12:34 -0400 Subject: formatted printing --- src/mini_uart.zig | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'src/mini_uart.zig') diff --git a/src/mini_uart.zig b/src/mini_uart.zig index 6f15031..be364b2 100644 --- a/src/mini_uart.zig +++ b/src/mini_uart.zig @@ -45,7 +45,7 @@ fn writeByte(b: u8) void { mmio.write(IO, b); } -pub fn writeString(str: []const u8) void { +fn writeString(str: []const u8) void { for (str) |b| { if (b == '\n') { writeByte('\r'); @@ -53,3 +53,32 @@ pub fn writeString(str: []const u8) void { writeByte(b); } } + +const Writer = std.Io.Writer; + +fn drain( + w: *Writer, + data: []const []const u8, + _: usize, +) Writer.Error!usize { + var written: usize = 0; + writeString(w.buffer[0..w.end]); + written += w.end; + w.end = 0; + for (data) |slice| { + writeString(slice); + written += slice.len; + } + return written; +} + +var buf: [1024]u8 = undefined; +var writer: Writer = .{ + .vtable = &.{ .drain = drain }, + .buffer = &buf, +}; + +pub fn print(comptime fmt: []const u8, args: anytype) void { + writer.print(fmt, args) catch {}; + writer.flush() catch {}; +} -- cgit 1.4.1