Hello l4-hackers,

My name is Robert (Bob) A. James I'm VERY new to the L4Re world. This is also my first foray into systems programming having come from the Medical Device and Enterprise areas during my career. I am now retired and developing a full Operating System based on L4Re/Fiasco.OC.

I’m looking for guidance on the canonical way to wire an interactive text console (stdin/stdout) for a user program under L4Re/Fiasco.OC on amd64-plain.

Context

What I’ve tried (and where I’m stuck)

  1. Vcon + cons (almost there)

  2. GOOS/Framebuffer route

What would help

Environment / details

One of my simple boot variants (for reference):

modules.list (simplified)

entry starforth
kernel fiasco -serial_esc
roottask moe rom/quark.cfg
module l4re
module ned
module cons
module quark.cfg
module starforth
quark.cfg --> I think this is about what I had.
-- rom/quark.cfg
local L4 = require("L4")
local ld = L4.default_loader

-- Start cons; feed it to the real serial logger (fe = L4.Env.log)
local cons_ctl = ld:new_channel()
ld:start({
   caps = {
   cons = cons_ctl:svr(),  -- server gate for cons' factory
   fe   = L4.Env.log,      -- cons frontend goes to serial/log
   },
}, "rom/cons -m l4re -f fe -a -t -c StarForth")  -- ← added -c StarForth

-- Ask cons to create a Vcon client for StarForth and pass it in as 'tty'
-- (Capabilities are first-class in Ned; calling 'create' on caps is supported.)
local tty = cons_ctl:create(L4.Proto.Log, "StarForth", "show", "key=1", "bufsz=65536")

-- Start StarForth with that Vcon as its TTY
ld:start({
   caps = {
   tty = tty,  -- the Vcon client for StarForth
   },
}, "rom/starforth")
I can share a minimal reproducible case (sources, build logs, QEMU output) off-list if that helps.

Thanks in advance for any pointers to the “right way,” or to a maintained example I can follow.

Best regards,
R. A. “Bob” James (rajames440@gmail.com)

Kubuntu 25.04 • amd64-plain • QEMU/VirtualBox • GRUB2 boot targets