mirror of
https://github.com/Adorable-Catgirl/Zorya-NEO.git
synced 2024-11-23 10:48:06 +11:00
commit
bc9617228f
35
mods/loader_cynosure/init.lua
Normal file
35
mods/loader_cynosure/init.lua
Normal file
@ -0,0 +1,35 @@
|
||||
-- cynosure 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 monolith_count = 0
|
||||
return function(addr)
|
||||
local fs = component.proxy(addr)
|
||||
thd.add("cynosure$"..monolith_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("cynosure_dead")
|
||||
end)
|
||||
while true do
|
||||
if computer.pullSignal() == "cynosure_dead" then
|
||||
utils.debug_log("Got signal.")
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
12
util/OpenOS/config.d/06_cynosure.lua
Normal file
12
util/OpenOS/config.d/06_cynosure.lua
Normal file
@ -0,0 +1,12 @@
|
||||
local cfgadd = ...
|
||||
local component = require("component")
|
||||
for fs in component.list("filesystem") do
|
||||
if component.invoke(fs, "exists", "/boot/cynosure.lua") then
|
||||
print("Cynosure kernel discovered on " .. fs)
|
||||
cfgadd(string.format([[
|
||||
menu.add("Cynosure kernel on %s", function()
|
||||
return loadmod("loader_cynosure")("%s")
|
||||
end)
|
||||
]], fs:sub(1,3), fs))
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user