Files
k-os/crates/bins/display-qemu/src/main.rs
Gabriel Kaszewski a3b15e5264 feat: playable snake game via UART terminal rendering
Snake renders using ANSI escape codes via debug_putchar syscall,
bypassing the VirtIO GPU (which has a QEMU 11.x legacy MMIO bug
where transfer_to_host_2d succeeds but doesn't transfer data).

Full microkernel stack running end-to-end:
  adapter → init → storage-server IPC → load snake from disk →
  input-server IPC (UART keyboard) → snake game logic →
  debug_putchar syscall → UART → terminal display

Controls: WASD to steer, runs at 0.2s tick rate.
Green O=head, o=body, red @=food, #=border.
2026-10-18 22:08:52 +02:00

17 lines
411 B
Rust

#![no_std]
#![no_main]
extern crate userspace_rt;
use driver_framebuffer_virtio::VirtioFramebuffer;
use types::bounded::CapSlot;
#[unsafe(no_mangle)]
extern "C" fn main() {
let fb = VirtioFramebuffer::new();
let mut srv = display_server::server::DisplayServer::new(fb);
let ep = CapSlot::new(0).unwrap();
server_framework::serve(&mut srv, ep);
loop { userspace::syscall::yield_now(); }
}