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.
17 lines
411 B
Rust
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(); }
|
|
}
|