mirror of
https://github.com/20kdc/OC-KittenOS.git
synced 2024-11-01 08:10:58 +11:00
NEO r2p1 system changes
This commit is contained in:
parent
7092b41f78
commit
d5405685dd
7
.gitignore
vendored
7
.gitignore
vendored
@ -20,6 +20,13 @@ repobuild/*/*
|
|||||||
repobuild/*/*/
|
repobuild/*/*/
|
||||||
repobuild/*/*/*
|
repobuild/*/*/*
|
||||||
|
|
||||||
|
laboratory/*/
|
||||||
|
laboratory/*/*
|
||||||
|
laboratory/*/*/
|
||||||
|
laboratory/*/*/*
|
||||||
|
laboratory/*/*/*/
|
||||||
|
laboratory/*/*/*/*
|
||||||
|
|
||||||
inst.lua
|
inst.lua
|
||||||
# Available as the respective release
|
# Available as the respective release
|
||||||
inst-gold.lua
|
inst-gold.lua
|
||||||
|
@ -269,7 +269,7 @@ local function moveSurface(surface, m, x, y, w, h, force)
|
|||||||
monitorResetBF(monitors[m])
|
monitorResetBF(monitors[m])
|
||||||
end
|
end
|
||||||
if cb then
|
if cb then
|
||||||
cb.copy(ox, oy, w, h, x - ox, y - oy)
|
pcall(cb.copy, ox, oy, w, h, x - ox, y - oy)
|
||||||
if surface == surfaces[1] then
|
if surface == surfaces[1] then
|
||||||
local cacheControl = {}
|
local cacheControl = {}
|
||||||
for i = 1, h do
|
for i = 1, h do
|
||||||
|
@ -34,18 +34,20 @@ nexus = {
|
|||||||
neo.emergency("icecap nexus prereg issue")
|
neo.emergency("icecap nexus prereg issue")
|
||||||
theEventHandler("k.registration", "x.neo.pub.window")
|
theEventHandler("k.registration", "x.neo.pub.window")
|
||||||
end
|
end
|
||||||
local dw = e(w, h, t)
|
local dwo, dw = pcall(e, w, h, t)
|
||||||
|
if not dwo then
|
||||||
|
addOnReg("x.neo.pub.window", cb)
|
||||||
|
return
|
||||||
|
end
|
||||||
c(dw)
|
c(dw)
|
||||||
everestWindows[dw.id] = function (...)
|
everestWindows[dw.id] = function (...)
|
||||||
return c(dw, ...)
|
return c(dw, ...)
|
||||||
end
|
end
|
||||||
return true
|
else
|
||||||
|
addOnReg("x.neo.pub.window", cb)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not cb() then
|
cb()
|
||||||
addOnReg("x.neo.pub.window", cb)
|
|
||||||
end
|
|
||||||
return dw
|
|
||||||
end,
|
end,
|
||||||
windows = everestWindows,
|
windows = everestWindows,
|
||||||
startDialog = function (tx, ti)
|
startDialog = function (tx, ti)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
return {
|
return {
|
||||||
["neo"] = {
|
["neo"] = {
|
||||||
desc = "KittenOS NEO Kernel & Base Libs",
|
desc = "KittenOS NEO Kernel & Base Libs",
|
||||||
v = 2,
|
v = 3,
|
||||||
deps = {
|
deps = {
|
||||||
},
|
},
|
||||||
dirs = {
|
dirs = {
|
||||||
@ -54,7 +54,7 @@ return {
|
|||||||
},
|
},
|
||||||
["neo-everest"] = {
|
["neo-everest"] = {
|
||||||
desc = "KittenOS NEO / Everest (windowing)",
|
desc = "KittenOS NEO / Everest (windowing)",
|
||||||
v = 2,
|
v = 3,
|
||||||
deps = {
|
deps = {
|
||||||
"neo"
|
"neo"
|
||||||
},
|
},
|
||||||
@ -67,7 +67,7 @@ return {
|
|||||||
},
|
},
|
||||||
["neo-icecap"] = {
|
["neo-icecap"] = {
|
||||||
desc = "KittenOS NEO / Icecap",
|
desc = "KittenOS NEO / Icecap",
|
||||||
v = 2,
|
v = 3,
|
||||||
deps = {
|
deps = {
|
||||||
"neo"
|
"neo"
|
||||||
},
|
},
|
||||||
|
@ -134,7 +134,7 @@ function wrapMeta(t)
|
|||||||
end,
|
end,
|
||||||
__pairs = function ()
|
__pairs = function ()
|
||||||
return function (x, key)
|
return function (x, key)
|
||||||
local k, v = next(t, k)
|
local k, v = next(t, key)
|
||||||
if k then return k, wrapMeta(v) end
|
if k then return k, wrapMeta(v) end
|
||||||
end, 9, nil
|
end, 9, nil
|
||||||
end,
|
end,
|
||||||
@ -166,7 +166,7 @@ function ensureType(a, t)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function ensurePathComponent(s)
|
function ensurePathComponent(s)
|
||||||
if not string.match(s, "^[a-zA-Z0-9_%-%+%,%.%#%~%@%'%;%[%]%(%)%&%%%$%! %=%{%}%^]+$") then error("chars disallowed: " .. s) end
|
if not string.match(s, "^[a-zA-Z0-9_%-%+%,%.%#%~%@%'%;%[%]%(%)%&%%%$%! %=%{%}%^\x80-\xFF]+$") then error("chars disallowed: " .. s) end
|
||||||
if s == "." then error("single dot disallowed") end
|
if s == "." then error("single dot disallowed") end
|
||||||
if s == ".." then error("double dot disallowed") end
|
if s == ".." then error("double dot disallowed") end
|
||||||
end
|
end
|
||||||
@ -302,7 +302,6 @@ baseProcEnvCore = {
|
|||||||
utf8 = wrapUtf8,
|
utf8 = wrapUtf8,
|
||||||
require = loadLibraryInner,
|
require = loadLibraryInner,
|
||||||
assert = assert, ipairs = ipairs,
|
assert = assert, ipairs = ipairs,
|
||||||
load = load,
|
|
||||||
next = function (t, k)
|
next = function (t, k)
|
||||||
local mt = getmetatable(t)
|
local mt = getmetatable(t)
|
||||||
if mt == uniqueNEOProtectionObject then error("NEO-Protected Object") end
|
if mt == uniqueNEOProtectionObject then error("NEO-Protected Object") end
|
||||||
@ -314,14 +313,15 @@ baseProcEnvCore = {
|
|||||||
tonumber = tonumber, tostring = tostring,
|
tonumber = tonumber, tostring = tostring,
|
||||||
setmetatable = setmetatable, getmetatable = function (n)
|
setmetatable = setmetatable, getmetatable = function (n)
|
||||||
local mt = getmetatable(n)
|
local mt = getmetatable(n)
|
||||||
if mt == uniqueNEOProtectionObject then return "NEO-Protected Object" end
|
if rawequal(mt, uniqueNEOProtectionObject) then return "NEO-Protected Object" end
|
||||||
return mt
|
return mt
|
||||||
end,
|
end,
|
||||||
rawset = function (t, i, v)
|
rawset = function (t, i, v)
|
||||||
local mt = getmetatable(t)
|
local mt = getmetatable(t)
|
||||||
if mt == uniqueNEOProtectionObject then error("NEO-Protected Object") end
|
if rawequal(mt, uniqueNEOProtectionObject) then error("NEO-Protected Object") end
|
||||||
return rawset(t, i, v)
|
return rawset(t, i, v)
|
||||||
end, rawget = rawget, rawlen = rawlen, rawequal = rawequal,
|
end, rawget = rawget, rawlen = rawlen, rawequal = rawequal,
|
||||||
|
checkArg = checkArg
|
||||||
}
|
}
|
||||||
baseProcNeo = {
|
baseProcNeo = {
|
||||||
emergency = emergencyFunction,
|
emergency = emergencyFunction,
|
||||||
@ -357,6 +357,12 @@ baseProcNeoMT = {
|
|||||||
|
|
||||||
function baseProcEnv()
|
function baseProcEnv()
|
||||||
local pe = setmetatable({}, baseProcEnvMT)
|
local pe = setmetatable({}, baseProcEnvMT)
|
||||||
|
pe.load = function (a, b, c, d, ...)
|
||||||
|
if rawequal(d, nil) then
|
||||||
|
d = pe
|
||||||
|
end
|
||||||
|
return load(a, b, c, d, ...)
|
||||||
|
end
|
||||||
pe.neo = setmetatable({}, baseProcNeoMT)
|
pe.neo = setmetatable({}, baseProcNeoMT)
|
||||||
pe._G = pe
|
pe._G = pe
|
||||||
return pe
|
return pe
|
||||||
@ -490,6 +496,7 @@ end
|
|||||||
function start(pkg, ppkg, ppid, ...)
|
function start(pkg, ppkg, ppid, ...)
|
||||||
local proc = {}
|
local proc = {}
|
||||||
local pid = lastPID
|
local pid = lastPID
|
||||||
|
emergencyFunction("starting:", pkg)
|
||||||
lastPID = lastPID + 1
|
lastPID = lastPID + 1
|
||||||
|
|
||||||
local function startFromUser(ipkg, ...)
|
local function startFromUser(ipkg, ...)
|
||||||
|
10
laboratory/launch.sh
Executable file
10
laboratory/launch.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This is released into the public domain.
|
||||||
|
# No warranty is provided, implied or otherwise.
|
||||||
|
|
||||||
|
XPWD=`pwd`
|
||||||
|
export XPWD
|
||||||
|
|
||||||
|
cd "$OCEMU/src"
|
||||||
|
./boot.lua "$XPWD"
|
140
laboratory/ocemu.cfg
Normal file
140
laboratory/ocemu.cfg
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
--OCEmu configuration. Designed to mimic HOCON syntax, but is not exactly HOCON
|
||||||
|
--syntax.
|
||||||
|
ocemu {
|
||||||
|
|
||||||
|
--Client side settings, presentation and performance related stuff.
|
||||||
|
client {
|
||||||
|
|
||||||
|
--The sample rate used for generating beeps of computers' internal speakers.
|
||||||
|
--Use custom values at your own responsibility here; if it breaks OC you'll
|
||||||
|
--get no support. Some potentially reasonable lower values are 16000 or even
|
||||||
|
--8000 (which was the old default, but leads to artifacting on certain
|
||||||
|
--frequencies).
|
||||||
|
beepSampleRate=44100
|
||||||
|
|
||||||
|
--The base volume of beeps generated by computers. This may be in a range of
|
||||||
|
--[0, 127], where 0 means mute (the sound will not even be generated), and
|
||||||
|
--127 means maximum amplitude / volume.
|
||||||
|
beepVolume=32
|
||||||
|
|
||||||
|
--The color of monochrome text (i.e. displayed when in 1-bit color depth,
|
||||||
|
--e.g. tier one screens / GPUs, or higher tier set to 1-bit color depth).
|
||||||
|
--Defaults to white, feel free to make it some other color, tho!
|
||||||
|
monochromeColor="0xFFFFFF"
|
||||||
|
}
|
||||||
|
|
||||||
|
--Computer related settings, concerns server performance and security.
|
||||||
|
computer {
|
||||||
|
|
||||||
|
--The maximum size of the byte array that can be stored on EEPROMs as
|
||||||
|
--configuration data.
|
||||||
|
eepromDataSize=256
|
||||||
|
|
||||||
|
--The maximum size of the byte array that can be stored on EEPROMs as
|
||||||
|
--executable data..
|
||||||
|
eepromSize=4096
|
||||||
|
|
||||||
|
--Settings specific to the Lua architecture.
|
||||||
|
lua {
|
||||||
|
|
||||||
|
--Whether to allow loading precompiled bytecode via Lua's `load` function,
|
||||||
|
--or related functions (`loadfile`, `dofile`). Enable this only if you
|
||||||
|
--absolutely trust all users on your server and all Lua code you run. This
|
||||||
|
--can be a MASSIVE SECURITY RISK, since precompiled code can easily be
|
||||||
|
--used for exploits, running arbitrary code on the real server! I cannot
|
||||||
|
--stress this enough: only enable this is you know what you're doing.
|
||||||
|
allowBytecode=false
|
||||||
|
|
||||||
|
--Whether to allow user defined __gc callbacks, i.e. __gc callbacks
|
||||||
|
--defined *inside* the sandbox. Since garbage collection callbacks are not
|
||||||
|
--sandboxed (hooks are disabled while they run), this is not recommended.
|
||||||
|
allowGC=false
|
||||||
|
}
|
||||||
|
|
||||||
|
--The time in seconds a program may run without yielding before it is
|
||||||
|
--forcibly aborted. This is used to avoid stupidly written or malicious
|
||||||
|
--programs blocking other computers by locking down the executor threads.
|
||||||
|
--Note that changing this won't have any effect on computers that are
|
||||||
|
--already running - they'll have to be rebooted for this to take effect.
|
||||||
|
timeout=5
|
||||||
|
}
|
||||||
|
|
||||||
|
--Emulator related settings. Components, accuracy, and debugging.
|
||||||
|
emulator {
|
||||||
|
|
||||||
|
--Default components available to the computer.
|
||||||
|
components {
|
||||||
|
|
||||||
|
{"gpu", "c1-gpu-tier3", 0, 160, 50, 3},
|
||||||
|
{"gpu", "c1-gpu-tier1", 0, 50, 16, 1},
|
||||||
|
{"screen_sdl2", "c1-screen-tier3", -1, 160, 50, 3},
|
||||||
|
{"screen_sdl2", "c1-screen-tier1", -1, 50, 16, 1},
|
||||||
|
{"modem", "c1-modem", 1, false},
|
||||||
|
{"eeprom", "c1-eeprom", 9, "lua/bios.lua"},
|
||||||
|
{"filesystem", "c1-tmpfs", -1, "tmpfs", "tmpfs", false, 5},
|
||||||
|
{"filesystem", "c1-sda", 5, nil, "Workbench", false, 4},
|
||||||
|
{"filesystem", "c1-sdb", 5, nil, "Repository", false, 4},
|
||||||
|
{"filesystem", "openos", 0, "loot/openos", "openos", true, 1},
|
||||||
|
{"internet", "c1-internet", 2},
|
||||||
|
{"computer", "c1-computer", -1},
|
||||||
|
{"ocemu", "c1-ocemu", -1},
|
||||||
|
{"keyboard_sdl2", "c1-keyboard", -1}
|
||||||
|
}
|
||||||
|
|
||||||
|
--Whether to enable the emulator's extremely verbose logging.
|
||||||
|
debug=false
|
||||||
|
|
||||||
|
--Whether to choose performance over timing-accuracy.
|
||||||
|
fast=false
|
||||||
|
|
||||||
|
--Whether to return vague error messages like OpenComputers.
|
||||||
|
vague=false
|
||||||
|
}
|
||||||
|
|
||||||
|
filesystem {
|
||||||
|
|
||||||
|
--The maximum block size that can be read in one 'read' call on a file
|
||||||
|
--system. This is used to limit the amount of memory a call from a user
|
||||||
|
--program can cause to be allocated on the host side: when 'read' is, called
|
||||||
|
--a byte array with the specified size has to be allocated. So if this
|
||||||
|
--weren't limited, a Lua program could trigger massive memory allocations
|
||||||
|
--regardless of the amount of RAM installed in the computer it runs on. As a
|
||||||
|
--side effect this pretty much determines the read performance of file
|
||||||
|
--systems.
|
||||||
|
maxReadBuffer=2048
|
||||||
|
}
|
||||||
|
|
||||||
|
internet {
|
||||||
|
|
||||||
|
--Whether to allow HTTP requests via internet cards. When enabled, the
|
||||||
|
--`request` method on internet card components becomes available.
|
||||||
|
enableHttp=true
|
||||||
|
|
||||||
|
--Whether to allow TCP connections via internet cards. When enabled, the
|
||||||
|
--`connect` method on internet card components becomes available.
|
||||||
|
enableTcp=true
|
||||||
|
}
|
||||||
|
|
||||||
|
--Other settings that you might find useful to tweak.
|
||||||
|
misc {
|
||||||
|
|
||||||
|
--The maximum size of network packets to allow sending via network cards.
|
||||||
|
--This has *nothing to do* with real network traffic, it's just a limit for
|
||||||
|
--the network cards, mostly to reduce the chance of computer with a lot of
|
||||||
|
--RAM killing those with less by sending huge packets. This does not apply
|
||||||
|
--to HTTP traffic.
|
||||||
|
maxNetworkPacketSize=8192
|
||||||
|
|
||||||
|
--The maximum distance a wireless message can be sent. In other words, this
|
||||||
|
--is the maximum signal strength a wireless network card supports. This is
|
||||||
|
--used to limit the search range in which to check for modems, which may or
|
||||||
|
--may not lead to performance issues for ridiculous ranges - like, you know,
|
||||||
|
--more than the loaded area. See also: `wirelessCostPerRange`.
|
||||||
|
maxWirelessRange=400
|
||||||
|
}
|
||||||
|
|
||||||
|
--The configuration version this config was generated at. This is used to
|
||||||
|
--allow the emulator to reset/migrate parts of the config when their meaning
|
||||||
|
--has changed across versions.
|
||||||
|
version=3
|
||||||
|
}
|
28
laboratory/ocemu.cfg.default
Normal file
28
laboratory/ocemu.cfg.default
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
ocemu {
|
||||||
|
emulator {
|
||||||
|
components {
|
||||||
|
{"gpu", "c1-gpu-tier3", 0, 160, 50, 3},
|
||||||
|
{"gpu", "c1-gpu-tier1", 0, 50, 16, 1},
|
||||||
|
{"screen_sdl2", "c1-screen-tier3", -1, 160, 50, 3},
|
||||||
|
{"screen_sdl2", "c1-screen-tier1", -1, 50, 16, 1},
|
||||||
|
{"modem", "c1-modem", 1, false},
|
||||||
|
{"eeprom", "c1-eeprom", 9, "lua/bios.lua"},
|
||||||
|
{"filesystem", "c1-tmpfs", -1, "tmpfs", "tmpfs", false, 5},
|
||||||
|
{"filesystem", "c1-sda", 5, nil, "Workbench", false, 4},
|
||||||
|
{"filesystem", "c1-sdb", 5, nil, "Repository", false, 4},
|
||||||
|
{"filesystem", "openos", 0,"loot/openos","openos",true,1},
|
||||||
|
{"internet", "c1-internet", 2},
|
||||||
|
{"computer", "c1-computer", -1},
|
||||||
|
{"ocemu", "c1-ocemu", -1},
|
||||||
|
{"keyboard_sdl2", "c1-keyboard", -1}
|
||||||
|
}
|
||||||
|
debug=false
|
||||||
|
fast=false
|
||||||
|
vague=false
|
||||||
|
}
|
||||||
|
internet {
|
||||||
|
enableHttp=true
|
||||||
|
enableTcp=true
|
||||||
|
}
|
||||||
|
version=3
|
||||||
|
}
|
13
laboratory/reset.sh
Executable file
13
laboratory/reset.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This is released into the public domain.
|
||||||
|
# No warranty is provided, implied or otherwise.
|
||||||
|
|
||||||
|
cp ocemu.cfg.default ocemu.cfg && rm -rf c1-sda c1-sdb tmpfs
|
||||||
|
mkdir c1-sda c1-sdb
|
||||||
|
echo -n c1-sda > c1-eeprom/data.bin
|
||||||
|
cd ..
|
||||||
|
cp -r code/* laboratory/c1-sdb/
|
||||||
|
cp -r repository/* laboratory/c1-sdb/
|
||||||
|
lua clawmerge.lua repository/data/app-claw/local.lua code/data/app-claw/local.lua > laboratory/c1-sdb/data/app-claw/local.lua
|
||||||
|
cp -r laboratory/c1-sdb/* laboratory/c1-sda/
|
Loading…
Reference in New Issue
Block a user