diff --git a/mods/loader_ulos.lua b/mods/loader_ulos.lua new file mode 100644 index 0000000..92164d6 --- /dev/null +++ b/mods/loader_ulos.lua @@ -0,0 +1,35 @@ +-- ULOS loader -- +local zy = krequire("zorya") +local utils = krequire("utils") +local thd = krequire("thd") +local vdev = krequire("util_vcomponent") +local function proxytable(t) + return setmetatable({}, {__index=function(self, i) + if (type(t[i]) == "table") then + self[i] = proxytable(t[i]) + return rawget(self, i) + else + return t[i] + end + end}) +end +local ulos_count = 0 +return function(addr) + local fs = component.proxy(addr) + thd.add("ulos$"..ulos_count, function() + local env = utils.make_env() + function env.computer.getBootAddress() + return addr + end + function env.computer.setBootAddress()end + local old_dl = utils.debug_log + load(utils.readfile(fs.address, fs.open("/boot/cynosure.lua")), "=/boot/cynosure.lua", "t", env)() + computer.pushSignal("ulos_dead") + end) + while true do + if computer.pullSignal() == "ulos_dead" then + utils.debug_log("Got signal.") + break + end + end +end