Adds a full GPU driver framework, Virtual 8086 monitor for real-mode BIOS calls, BGA (Bochs Graphics Adapter) support, runtime resolution switching, and a boot splash screen.
Key Changes
GPU Framework & Drivers
gpu.pas — Priority-ordered GPU driver registry with mode-change callback system. After setMode, fires callbacks (video → LVGL → desktop) for decoupled resolution updates.
bga.pas — Bochs/VMware SVGA driver via PCI auto-detection. Programs display via I/O ports, supports arbitrary resolutions.
vesa.pas — Registered as GPU fallback (priority 50), uses V86 INT 10h for VBE mode switching.
setres.pas — SETRES console command for runtime resolution switching.
V86 Monitor
v86.pas (775 lines) — Full Virtual 8086 mode monitor for executing real-mode BIOS interrupts from protected mode. Naked GPF handler with instruction emulation (INT, IRET, CLI, STI, PUSHF/POPF, IN/OUT, HLT, 0x66 prefix).
vmemorymanager.pas — map_page_user() for identity-mapping first 4MB with User bit (V86 IVT/BDA/video ROM access).
Boot Splash Screen
splash.pas — LVGL-based splash with embedded TGA logo (50% scaled), progress bar, and status text. Manually drives LVGL+video.Flush since gfxd isn't running yet.
splash_tga.asm — NASM incbin stub embedding asuro.tga into .rodata.
desktop.pas — relayout procedure + GPU callback for automatic dock/watermark repositioning on resolution change. Live GPU/resolution info in System Information.
- desktop: Resolution/Graphics fields now read from video frontbuffer
and gpu.activeDriverName instead of static multiboot/hardcoded values
- gpu: markAvailable sets ActiveName when no driver is active yet, so
the initial VBE boot driver is reported before any setMode call
- kernel: whitespace cleanup
- New splash unit (src/prog/splash.pas) displays a centered logo,
progress bar and status label during kernel boot. Manually drives
LVGL rendering + video.Flush since gfxd isn't running yet.
- Embed img/asuro.tga into the kernel via NASM incbin stub
(src/stub/splash_tga.asm), assembled in compile_stub.sh.
- Build an lv_image_dsc_t at runtime from the decoded TGA pixel data
and display it at 50% scale using lv_image_set_scale(128).
- Move LVGL init earlier in kernel.pas (right after video enable) so
the splash screen is available before VFS/drivers/network init.
- Sprinkle splash.update() calls throughout kmain to show boot
progress (VFS → drivers → buses → network → tests → desktop).
- Fix targa.pas parser: rename Magic→IDLength, remove erroneous Data
pointer field, compute pixel offset correctly (buffer+18+IDLength),
advance source pointer per pixel, handle bottom-to-top origin flip.
- Unit tests moved before desktop.init; splash.teardown called at 100%
just before handing off to the desktop environment.
- Remove diskcmd, diskutil, notepad, partcmd, volcmd init calls and
uses from kernel.pas — these are programs, not kernel subsystems.
- Move their initialization into progmanager.init() alongside the
other baked-in programs (md5sum, base64_prog, dhclient, etc.).
- Remove diskcmd, diskutil, notepad from kernel's uses clause.
- Add a splash.update() call for the auto-mount volumes step.
- Suppress FPC warnings in compile_sources.sh (-v0e instead of -v0ew).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
GPU Stack, V8086 Monitor & BGA Driver
Branch:
feature/gpu-stack-v8086-bga→developFiles changed: 17 | +2,049 / -67
Summary
Adds a full GPU driver framework, Virtual 8086 monitor for real-mode BIOS calls, BGA (Bochs Graphics Adapter) support, runtime resolution switching, and a boot splash screen.
Key Changes
GPU Framework & Drivers
setMode, fires callbacks (video → LVGL → desktop) for decoupled resolution updates.INT 10hfor VBE mode switching.SETRESconsole command for runtime resolution switching.V86 Monitor
map_page_user()for identity-mapping first 4MB with User bit (V86 IVT/BDA/video ROM access).Boot Splash Screen
incbinstub embedding asuro.tga into.rodata.Desktop & Video
relayoutprocedure + GPU callback for automatic dock/watermark repositioning on resolution change. Live GPU/resolution info in System Information.Housekeeping