Two more LCARS widgets complete the Lumen UI kit: lcars_scrollbar (proportional thumb + black track, 3-case oracle PASS) and lcars_menu_item (right-click context menu cell, orange+tan selected / black+ltblue normal, 8-char AA label, purple separator). sigil-drivers adds PCI configuration space (i440FX host bridge, 4-device bus 0 enum, CLS_BUS_PCI) and Bochs BGA display driver (1024×768×32 + 800×600×32 mode-set, XRES/YRES/BPP/ENABLE r/w, CLS_DISPLAY). (sigil-video f6dd8e4, 51f6eab; sigil-drivers f34debe, 6e12d4e)
lcars_scrollbar — Vertical Scroll Bar Widget (f6dd8e4)
lcars_scrollbar(fb, pitch, x, y, w, h, view, total, offset, color) draws a vertical scrollbar with a proportional thumb positioned to reflect the current scroll offset within a content range.
- Black track background fills the full bar area first.
- Proportional thumb:
thumb_h = h * view / total, floored at 4 px minimum so the thumb is always grabbable. - Thumb position:
thumb_y = y + offset * (h - thumb_h) / (total - view)— the thumb travels the full track range as offset goes from 0 tototal - view. - Full-fill case: when
view >= total, a full-height thumb is drawn (no scrolling needed). - Caller passes
lcars_gold()orlcars_blue()as color, or any ARGB value. - GPU path:
gpu_submitrect-fill (CAP_ACCEL; silicon-pending). SW path:fill_spanrows.
Test: 3 cases — offset=0 (thumb at top), offset=75 (thumb at bottom), view=total (full-height thumb). 6 oracles: thumb/track pixels verified at all three positions. LCARS-SCROLLBAR-PASS top_thumb=ok top_track=ok bot_thumb=ok bot_track=ok full=ok.
lcars_menu_item — Right-Click Context Menu Cell (51f6eab)
lcars_menu_item(fb, pitch, fbw, fbh, x, y, w, h, selected, sep, c0..c7) draws a single menu cell with full LCARS styling. The OS stacks cells vertically to build right-click context menus on the Lumen desktop.
lcars_gch_cov (AA cov_blend path). Left-padded 4 px.GPU path: gpu_submit rect-fill + lcars_gch_cov per glyph (CAP_ACCEL; silicon-pending). Test: 2 stacked items — selected "O" (orange+tan+purple sep) + normal "S" (black+ltblue). 5 oracles: sel_bg, sel_sep, sel_glyph, norm_bg, norm_glyph. LCARS-MENU-PASS.
The Complete Lumen LCARS UI Kit
With lcars_scrollbar and lcars_menu_item landed, the Lumen LCARS UI kit is now complete across all desktop surface categories — 17 public functions, plus utility widgets bringing the total to 20+ functions.
| Category | Functions |
|---|---|
| Primitives | fill_rect, fill_circle, fill_qcircle_br, hbar, elbow, border_rect, resize_handle |
| Desktop chrome | panel_header, statusbar, boot_banner, boot_progress |
| Window chrome | window_chrome, wchrome_title, focus_chrome |
| WM interaction | resize_feedback, snap_zones |
| App UI | taskbar_item, scrollbar, menu_item |
The lcars_label / lcars_progress / lcars_data_strip utility widgets extend the kit to a complete design-language API. Any Lumen app can be built entirely from these primitives and remain visually consistent with the LCARS desktop chrome.
PCI Configuration Space — sigil-drivers (f34debe)
drivers/bus/pci-cfg implements PCI configuration space access via the standard x86 I/O port pair.
- Address port
0xCF8, data port0xCFC. Address format: bit 31 = enable, bits 23–16 = bus, bits 15–11 = device, bits 10–8 = function, bits 7–2 = register. pci_read(bus, dev, fn, reg)/pci_write(bus, dev, fn, reg, val)viaoutd/ind.- Live QEMU: i440FX host bridge at 0:0:0 (vendor=0x8086, device=0x1237), class=bridge (0x06).
pci_enum(bus=0, dev=0..31)finds 4 devices on bus 0.- CLS_BUS_PCI dispatcher: OP_READ / WRITE / INIT / PROBE / CTL_ENUM. State at
0x880000.
Significance: PCI config space enumeration enables NVMe, e1000, and AHCI device discovery. Without it, the kernel cannot find any expansion devices at boot — every bus-connected peripheral is invisible until config space is readable.
Bochs BGA Display Driver — sigil-drivers (6e12d4e)
drivers/display/bga implements the Bochs VBE Extensions (BGA) display driver, enabling native framebuffer mode-setting in QEMU without BIOS or VESA calls.
- I/O ports
0x1CE(index) and0x1CF(data) — 16-bitoutw/inw. - Registers: VBE_DISPI_INDEX_ID (0), XRES (1), YRES (2), BPP (3), ENABLE (4), BANK (5), VIRT_W (6), VIRT_H (7), X_OFFSET (8), Y_OFFSET (9).
- Live QEMU: BGA ID = 0xB0C5. XRES/YRES/BPP/ENABLE read/write round-trips verified.
- Mode-set sequence: ENABLE=0 (disable) → write XRES/YRES/BPP → ENABLE=65 (LFB enabled + 8-bit DAC).
- Tested modes: 1024×768×32 and 800×600×32.
- CLS_DISPLAY dispatcher: CTL_SET_MODE / CTL_GET_ID. State at
0x890000.
Significance: The BGA driver enables framebuffer mode-setting without BIOS/VESA calls. Combined with the PCI enumerator, the kernel can find the Bochs display device, read its BGA ID, and set a native resolution before any UEFI/GOP path is available. This is the x86 display bootstrap path.
Driver summary — batch
| Driver | Commit | Repo | Class | State addr |
|---|---|---|---|---|
lcars_scrollbar | f6dd8e4 | sigil-video | UI widget | — |
lcars_menu_item | 51f6eab | sigil-video | UI widget | — |
pci-cfg | f34debe | sigil-drivers | CLS_BUS_PCI | 0x880000 |
bga | 6e12d4e | sigil-drivers | CLS_DISPLAY | 0x890000 |