summaryrefslogtreecommitdiffstats
path: root/rsdos/src/main.rs
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-08-01 19:34:40 +0200
committersalmonik <salmonik@tuta.io>2026-08-01 19:34:40 +0200
commit9b9758e5ee2564b04685eadf2b9ce23dd1060b86 (patch)
tree57fce9e715510ec70df70dc399b4440f3480fd77 /rsdos/src/main.rs
parentfix pi-lens warnings: unwraps, shell SC2046, dup code (fmtbuf/scripts/hexdump... (diff)
downloadrs-dos-9b9758e5ee2564b04685eadf2b9ce23dd1060b86.tar.gz
rs-dos-9b9758e5ee2564b04685eadf2b9ce23dd1060b86.zip
rsnix v0.4.0: GUI input foundation — PS/2 mouse + scheduler message queues
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 <id>` routes real IRQ12 events into a task's queue, jobs shows q=. `make test-msg` + `make test-disk` regression pass.
Diffstat (limited to 'rsdos/src/main.rs')
-rw-r--r--rsdos/src/main.rs5
1 files changed, 5 insertions, 0 deletions
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
138 rsnix::serial_println!("serial: COM1 115200 8N1"); 138 rsnix::serial_println!("serial: COM1 115200 8N1");
139 rsnix::ps2::init(); 139 rsnix::ps2::init();
140 rsnix::serial_println!("ps2: keyboard initialized"); 140 rsnix::serial_println!("ps2: keyboard initialized");
141 if rsnix::ps2::mouse_init() {
142 rsnix::serial_println!("ps2: mouse ready (IRQ12, stream mode)");
143 } else {
144 rsnix::serial_println!("ps2: mouse not present");
145 }
141 if rsnix::gdt::init() { 146 if rsnix::gdt::init() {
142 rsnix::serial_println!("gdt: own GDT + TSS (IST: page-fault/double-fault)"); 147 rsnix::serial_println!("gdt: own GDT + TSS (IST: page-fault/double-fault)");
143 } else { 148 } else {