Skip to content

GUI Subsystem

kazah-png edited this page Jul 11, 2026 · 2 revisions

GUI Subsystem

Windowed compositor with 1024×768 32bpp framebuffer, 32 windows, taskbar, Start menu, 4 workspaces.

See also: Drivers, Filesystem, Architecture, Boot Process

VBE framebuffer (vbe.c)

Bochs VBE extensions, LFB at 0xE0000000. fb.c provides put_pixel, fill_rect, blit, draw_char.

Bitmap font (font.c)

IBM VGA 8×16 ROM font, 256 glyphs.

Compositor (compositor.c)

Windows in z-order, per-workspace, with titlebar drag, resize, minimize, close. Yields CPU when idle (sleep 5 ms). Foreground TUI programs (exec) now render live — the compositor repaints the desktop at ~16 fps while the child runs preemptively, so top and edit are visible in the GUI window in real time.

Terminal screen mode

The GUI terminal supports cursor-addressed "screen mode" for full-screen TUIs:

  • CSI parser: collects numeric params inside ESC[... sequences; recognizes ESC[row;colH (position), ESC[2J (clear), ESC[K (clear to EOL)
  • Block cursor: the editing point is rendered as an inverted cell
  • Reset: when the command exits, the terminal reverts to scrollback mode
  • Ctrl keys mapped: Ctrl-A..Z → 0x01..0x1A (Ctrl-C → SIGINT) for editor bindings

Built-in apps

  • Terminal: 80×24 grid, scrollback, tab-completion, per-shell CWD, command history, CSI screen mode for TUIs. See Shell.
  • Text Editor: File open/save, cursor nav, click-to-position, scroll
  • File Manager: VFS browsing, copy/paste, drag-drop into folders, context menu, search
  • Image Viewer: Test pattern, zoom/pan, grid overlay
  • Sound Test: PC speaker beep/melody/alarm + SB16 sine/square/sweep
  • Calculator: Basic arithmetic
  • Task Manager: Process list
  • DOOM: VGA mode 13h port (requires doom1.wad)
  • Paint: Freehand drawing with mouse

Clone this wiki locally