moonshot

technical

punkt

punkt draws directly to a linear region of video memory. on top of that sits a hand-written font renderer that paints moonshot's own characters into that memory.

getting a framebuffer

the kernel's Multiboot header asks the bootloader for 1024×768 at 32 bits per pixel, and GRUB sets the hardware into it before the kernel runs. punkt maps the framebuffer GRUB reports into the kernel's page tables through jenna. when no framebuffer is granted, the kernel falls back to VGA text mode.

the font

the font is an original 8×8 bitmap with uppercase, lowercase, digits and punctuation. a ring-3 program can ask for a glyph through SYS_GLYPH and draw text into its own frame, which is how utsikt sets a page in the same face the shell uses.

the console

above the raw pixels sits a character-cell console, a 128×96 grid of 8×8 cells with newline, wrapping, backspace, tab stops and scrolling. punkt also draws rectangles and lines, and kakel builds its tiled windows on them, while punkt stays the single owner of the real framebuffer.