From 9b9758e5ee2564b04685eadf2b9ce23dd1060b86 Mon Sep 17 00:00:00 2001 From: salmonik Date: Sat, 1 Aug 2026 19:34:40 +0200 Subject: rsnix v0.4.0: GUI input foundation — PS/2 mouse + scheduler message queues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mouse (IRQ12, stream mode): ByteRing generalized for both PS/2 devices, ISR routes data-port bytes by the controller's aux bit; mouse_init with bounded-ACK handshake (boots without a mouse); packet decoder with bit-3 resync, screen-relative deltas, buttons. Exposed as /dev/mouse, the `mouse` stream command, and `make test-mouse`. Message queues (ADR 0003's GUI-era primitive): every task gets a static 16-slot TaskMsg ring; send/recv/recv_blocking with direct wake + tick scan safety net for the lost-wakeup race; `msgrecv`/`send` commands, `mouse ` routes real IRQ12 events into a task's queue, jobs shows q=. `make test-msg` + `make test-disk` regression pass. --- rsdos/src/main.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'rsdos/src') diff --git a/rsdos/src/main.rs b/rsdos/src/main.rs index 700dcc7..fc47c82 100644 --- a/rsdos/src/main.rs +++ b/rsdos/src/main.rs @@ -138,6 +138,11 @@ pub unsafe extern "efiapi" fn efi_main(image_handle: Handle, system_table: *mut rsnix::serial_println!("serial: COM1 115200 8N1"); rsnix::ps2::init(); rsnix::serial_println!("ps2: keyboard initialized"); + if rsnix::ps2::mouse_init() { + rsnix::serial_println!("ps2: mouse ready (IRQ12, stream mode)"); + } else { + rsnix::serial_println!("ps2: mouse not present"); + } if rsnix::gdt::init() { rsnix::serial_println!("gdt: own GDT + TSS (IST: page-fault/double-fault)"); } else { -- cgit v1.2.3