rumpk/npl/glyph/glyph.nim

40 lines
1.1 KiB
Nim

# SPDX-License-Identifier: LUL-1.0
# Copyright (c) 2026 Markus Maiwald
# Stewardship: Self Sovereign Society Foundation
#
# This file is part of the Nexus SDK.
# See legal/LICENSE_UNBOUND.md for license terms.
# core/rumpk/npl/glyph/glyph.nim
# Phase 35c: The Glyph - Surface Manager Test Client
import ../../libs/membrane/libc
proc main() =
# 1. Create Surface
let sid = sys_surface_create(640, 480)
if sid < 0:
return
# 2. Get buffer pointer (directly mapped)
# In Sv39, this would be a userland address.
# For now, it's a physical address (identity mapped).
let fb_ptr = cast[ptr UncheckedArray[uint32]](sys_surface_get_ptr(sid))
var frame = 0
while true:
# 3. Draw something: Color Cycle
let color = uint32(0xFF000000'u32) or (uint32(frame and 0xFF) shl 8)
for i in 0 ..< (640 * 480):
fb_ptr[i] = color
# 4. Flip (Notify compositor)
sys_surface_flip(sid)
frame += 1
# Yield to let compositor blit
# libc.yield()? We'll use the syscall directly if needed or just loop
# The kernel scheduler will preempt us anyway.
main()