add basic kernel

This commit is contained in:
abbie 2023-07-25 23:43:57 +01:00
parent e089223284
commit 041a6d0ded
Signed by: threeoh6000
GPG key ID: 801FE4AD456E922C

115
raven.lua Normal file
View file

@ -0,0 +1,115 @@
_G._KERNEL_VERSION = "0.1.0"
_G._KERNEL_NAME = "Raven"
_G.raven = {}
_G._OS_INFO = "Raven kernel operating system"
_G._OS_VERSION = 0
colors = {}
colors.white = 1
colors.orange = 2
colors.magenta = 4
colors.lightBlue = 8
colors.yellow = 16
colors.lime = 32
colors.pink = 64
colors.gray = 128
colors.lightGray = 256
colors.cyan = 512
colors.purple = 1024
colors.blue = 2048
colors.brown = 4096
colors.green = 8192
colors.red = 16384
colors.black = 32768
colours = {}
setmetatable(colours, {__index = colors})
colours.grey = colors.gray
colours.lightGrey = colors.lightGray
term.clear()
term.setCursorPos(1, 1)
print("Raven kernel " .. _G._KERNEL_VERSION .. " booting.")
if _G._FEATHER_VERSION or _G._PELICAN_VERSION then
print("Removing S1 and S2 version numbers from the env.")
_G._FEATHER_VERSION = nil
_G._PELICAN_VERSION = nil
end
print("Initalising error handler.")
function raven.writeColour(colour, text)
local precolour = term.getTextColour()
term.setTextColour(colour)
write(text)
term.setTextColour(precolour)
return
end
function raven.writeColor(color, text)
raven.writeColour(color, text)
return
end
function error(e)
raven.writeColour(0x4000, "An error has occured: ")
term.setTextColour(0x1)
if e then
write(e .. "\n")
else
write("Undefined error." .. "\n")
end
return
end
print("Initialising benign API functions.")
function raven.fullTermClear()
term.clear()
term.setCursorPos(1, 1)
end
print("Initialising execution functions.")
function raven.run(path, env, ...)
local _ARGS = {...}
env._ARGS = _ARGS
local file, e = loadfile(path, env)
if file then
file()
return true
else
error(e)
return false
end
end
function raven.exec(path, ...)
local sandbox = {}
setmetatable(sandbox, {__index = _G})
if raven.run(path, sandbox, ...) then
return true
else
return false
end
end
print("Loading kernel configuration.")
dofile(fs.combine(_G._KERNEL_ROOT, "/boot/raven.conf.lua"))
if _G._SHELL then
print("Executing shell.")
dofile(fs.combine(_G._KERNEL_ROOT, _G._SHELL))
else
print("Shell not defined in configuration file.")
print("Entering basic kernel-level shell.")
print("Programs can be executed with the direct path.")
print("Programs will most likely exist within /bin/.")
while true do
write("> ")
local exec = read()
if fs.exists(fs.combine(_G._KERNEL_ROOT, exec)) and not fs.isDir(fs.combine(_G._KERNEL_ROOT, exec)) then
raven.exec(fs.combine(_G._KERNEL_ROOT, exec))
else
error("Program not found.")
end
end
end