From af8d5aa4538ac71f11a5418ef94ae478868a0484 Mon Sep 17 00:00:00 2001 From: salmonik Date: Fri, 31 Jul 2026 02:28:10 +0200 Subject: interrupts: IDT, PIC remap, PIT timer, PS/2 keyboard IRQ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - IDT with 256 entries, loaded via lidt (CS read from current context) - PIC 8259A remapped to vectors 32-47, timer+keyboard IRQs unmasked - PIT channel 0 at ~100 Hz (mode 2, rate generator) - PS/2 keyboard IRQ (IRQ1 → vector 33): reads port 0x60, pushes byte to lock-free SPSC ring buffer - Timer IRQ (IRQ0 → vector 32): sends EOI, increments tick counter - ps2::poll_key() now reads from ring buffer with cli/sti+hlt for race-free sleep (instead of busy-polling the data port) - build.rs: use idiomatic Result<_, Box> return type - tools/qemu.sh: fix SC2207 shellcheck warning --- build.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'build.rs') diff --git a/build.rs b/build.rs index 44e6344..35447e9 100644 --- a/build.rs +++ b/build.rs @@ -26,8 +26,8 @@ fn main() -> Result<(), Box> { return Err("not a PSF2 font".into()); } - let hdr_size = u32::from_le_bytes(raw[8..12].try_into()?) as usize; - let num_glyphs = u32::from_le_bytes(raw[16..20].try_into()?) as usize; + let hdr_size = u32::from_le_bytes(raw[8..12].try_into()?) as usize; + let num_glyphs = u32::from_le_bytes(raw[16..20].try_into()?) as usize; let bytes_per_glyph = u32::from_le_bytes(raw[20..24].try_into()?) as usize; if num_glyphs != 256 { -- cgit v1.2.3