From 020a6c7d60124a5320c856b213ab38ad40239232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gr=C3=A9goire?= Date: Sat, 27 Jun 2026 16:29:55 -0400 Subject: [PATCH] pl: add debug_read --- src/platform/pc/impl.zig | 7 +++++++ src/platform/root.zig | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/platform/pc/impl.zig b/src/platform/pc/impl.zig index f27381c..bac6276 100644 --- a/src/platform/pc/impl.zig +++ b/src/platform/pc/impl.zig @@ -102,6 +102,13 @@ pub fn debug_write(c: u8) void { com1_write(c); } +pub fn debug_read() u8 { + while ((amd64.inb(com1 + 0x5) & 0x01) == 0) { + std.atomic.spinLoopHint(); + } + return amd64.inb(com1); +} + pub fn arm_timer(deadline: r.Nanoseconds) void { apic.arm_timer(deadline); } diff --git a/src/platform/root.zig b/src/platform/root.zig index bdc5947..7f20079 100644 --- a/src/platform/root.zig +++ b/src/platform/root.zig @@ -27,6 +27,11 @@ pub inline fn debug_write(c: u8) void { return impl.debug_write(c); } +/// Read a single character from the debug console. +pub inline fn debug_read() u8 { + return impl.debug_read(); +} + /// Arm a one-shot timer to fire in `ns` nanoseconds. pub inline fn arm_timer(ns: u64) void { return impl.arm_timer(ns);