-- vim:set ft=lua: -- This script shall start mag. For that we need a frame-buffer and io to -- get access to the required hardware resources. Target platform is ARM -- Real-View as used with QEmu. require("L4"); local l = L4.default_loader; local io_buses = { gui = l:new_channel(); fbdrv = l:new_channel(); }; l:start({ caps = { gui = io_buses.gui:svr(), fbdrv = io_buses.fbdrv:svr(), icu = L4.Env.icu, sigma0 = L4.cast(L4.Proto.Factory, L4.Env.sigma0):create(L4.Proto.Sigma0), }, log = { "IO", "y" }, l4re_dbg = L4.Dbg.Warn, }, "rom/io rom/arm-rv-eb.devs rom/arm-rv-lcd.io"); local fbdrv_fb = l:new_channel(); l:startv({ caps = { vbus = io_buses.fbdrv, fb = fbdrv_fb:svr(), }, log = { "fbdrv", "r" }, l4re_dbg = L4.Dbg.Warn, }, "rom/fb-drv", "-c", "1024 565 bgr"); local mag_caps = { mag = l:new_channel(), svc = l:new_channel(), }; l:start({ caps = { vbus = io_buses.gui, fb = fbdrv_fb, mag = mag_caps.mag:svr(), svc = mag_caps.svc:svr(), }, log = { "mag", "g" }, l4re_dbg = L4.Dbg.Warn, -- scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0xa0, 0x80), }, "rom/mag"); e = l:start({ caps = { fb = mag_caps.svc:create(L4.Proto.Goos, "640x480"), }, log = { "spectrum", "b" }, l4re_dbg = L4.Dbg.Warn, -- scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x18, 0x8), }, "rom/ex_fb_spectrum"); print("ex_fb_spectrum exited with: " .. e:wait());