From 52273f14a91af4656beb35bd3fa1c9a66c7f07b1 Mon Sep 17 00:00:00 2001 From: wires Date: Wed, 8 Oct 2025 07:12:34 -0400 Subject: formatted printing --- src/main.zig | 4 ++-- src/mini_uart.zig | 31 ++++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main.zig b/src/main.zig index 3ef9cad..89130f5 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,8 +1,8 @@ const mini_uart = @import("mini_uart.zig"); -export fn main() void { +export fn main(dt_addr: u32) void { mini_uart.enable(); - mini_uart.writeString(" hello, world!\n"); + mini_uart.print("meow\n0x{x}\n", .{dt_addr}); while (true) {} } 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