diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-01 19:34:40 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-01 19:34:40 +0200 |
| commit | 9b9758e5ee2564b04685eadf2b9ce23dd1060b86 (patch) | |
| tree | 57fce9e715510ec70df70dc399b4440f3480fd77 /rsdos | |
| parent | fix pi-lens warnings: unwraps, shell SC2046, dup code (fmtbuf/scripts/hexdump... (diff) | |
| download | rs-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')
| -rw-r--r-- | rsdos/src/main.rs | 5 |
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 { |
