Merge pull request #14 from speedy-lex/main

fix gpu + update openos
This commit is contained in:
Quantum Tomato 2025-07-03 10:47:44 +02:00 committed by GitHub
commit 835b355568
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 37 additions and 31 deletions

View File

@ -15,6 +15,8 @@ end
local function printRom()
local eeprom = component.eeprom
io.write(eeprom.get())
return nil
end
local function readRom()
@ -37,6 +39,8 @@ local function readRom()
if not options.q then
io.write("All done!\nThe label is '" .. eeprom.getLabel() .. "'.\n")
end
return nil
end
local function writeRom()
@ -60,7 +64,10 @@ local function writeRom()
io.write("Please do NOT power down or restart your computer during this operation!\n")
end
eeprom.set(bios)
local result, reason = eeprom.set(bios)
if reason then
return nil, reason
end
local label = args[2]
if not options.q and not label then
@ -68,7 +75,11 @@ local function writeRom()
label = io.read()
end
if label and #label > 0 then
eeprom.setLabel(label)
local result, reason = eeprom.setLabel(label)
if reason then
return nil, reason
end
if not options.q then
io.write("Set label to '" .. eeprom.getLabel() .. "'.\n")
end
@ -77,12 +88,19 @@ local function writeRom()
if not options.q then
io.write("All done! You can remove the EEPROM and re-insert the previous one now.\n")
end
return nil
end
local result, reason
if options.l then
printRom()
result, reason = printRom()
elseif options.r then
readRom()
result, reason = readRom()
else
writeRom()
result, reason = writeRom()
end
if reason then
io.stderr:write(reason..'\n')
return 1
end

View File

@ -3,16 +3,11 @@ local tty = require("tty")
local text = require("text")
local sh = require("sh")
debugprint("a")
local args = shell.parse(...)
shell.prime()
debugprint("b")
if #args == 0 then
debugprint("c")
local has_profile
local input_handler = {hint = sh.hintHandler}
while true do

View File

@ -73,7 +73,6 @@ end
function component.setPrimary(componentType, address)
checkArg(1, componentType, "string")
checkArg(2, address, "string", "nil")
debugprint("setPrimary", componentType, address)
if address ~= nil then
address = component.get(address, componentType)
assert(address, "no such component")

View File

@ -14,13 +14,10 @@ do
end
while true do
debugprint("grabbing shell")
local result, reason = xpcall(assert(require("shell").getShell()), function(msg)
local result, reason = xpcall(require("shell").getShell(), function(msg)
return tostring(msg).."\n"..debug.traceback()
end)
debugprint("resumed", result, reason)
if not result then
debugprint((reason ~= nil and tostring(reason) or "unknown error") .. "\n")
io.stderr:write((reason ~= nil and tostring(reason) or "unknown error") .. "\n")
io.write("Press any key to continue.\n")
os.sleep(0.5)

View File

@ -1,7 +1,7 @@
-- called from /init.lua
local raw_loadfile = ...
_G._OSVERSION = "OpenOS 1.8.8"
_G._OSVERSION = "OpenOS 1.8.9"
-- luacheck: globals component computer unicode _OSVERSION
local component = component
@ -73,7 +73,12 @@ local function dofile(file)
status("> " .. file)
local program, reason = raw_loadfile(file)
if program then
return program()
local result = table.pack(pcall(program))
if result[1] then
return table.unpack(result, 2, result.n)
else
error(result[2])
end
else
error(reason)
end
@ -139,12 +144,6 @@ end
status("Initializing system...")
require("event").listen("component_added", debugprint)
require("event").listen("component_available", debugprint)
require("event").listen("term_available", debugprint)
computer.pushSignal("init") -- so libs know components are initialized.
require("event").pull(1, "init") -- Allow init processing.
require("tty").bind(component.gpu)
_G.runlevel = 1

View File

@ -1,14 +1,8 @@
debugprint("loading cursor")
local unicode = require("unicode")
debugprint("loaded unicode")
local kb = require("keyboard")
debugprint("loaded keyboard")
local tty = require("tty")
debugprint("loaded tty")
local text = require("text")
debugprint("loaded text")
local computer = require("computer")
debugprint("loaded computer")
local keys = kb.keys
local core_cursor = {}

View File

@ -143,7 +143,7 @@ function event.pullFiltered(...)
local deadline = computer.uptime() + (seconds or math.huge)
repeat
local waitTime = deadline - computer.uptime()
if waitTime <= 0 then
if waitTime < 0 then
break
end
local signal = table.pack(computer.pullSignal(waitTime))

View File

@ -221,7 +221,7 @@ function tty.keyboard()
-- changes to this design should avoid this on every key hit
-- this is expensive (slow!)
window.keyboard = assert(component.invoke(screen, "getKeyboards"))[1] or system_keyboard
window.keyboard = component.invoke(screen, "getKeyboards")[1] or system_keyboard
end
return window.keyboard

View File

@ -413,6 +413,9 @@ void nni_gpu_getViewport(nni_gpu *gpu, void *_, nn_component *component, nn_comp
nn_return(computer, nn_values_integer(w));
nn_return(computer, nn_values_integer(h));
}
void nni_gpu_getDepth(nni_gpu *gpu, void *_, nn_component *component, nn_computer *computer) {
nn_return(computer, nn_values_integer(8));
}
void nn_loadGraphicsCardTable(nn_universe *universe) {
nn_componentTable *gpuTable = nn_newComponentTable(nn_getAllocator(universe), "gpu", NULL, NULL, (void *)nni_gpuDeinit);
@ -429,6 +432,7 @@ void nn_loadGraphicsCardTable(nn_universe *universe) {
nn_defineMethod(gpuTable, "setForeground", true, (void *)nni_gpu_setForeground, NULL, "setForeground(color: integer, isPalette: boolean): integer, integer? - Sets the current foreground color. Returns the old one and palette index if applicable.");
nn_defineMethod(gpuTable, "getBackground", true, (void *)nni_gpu_getBackground, NULL, "setBackground(color: integer, isPalette: boolean): integer, integer? - Sets the current background color. Returns the old one and palette index if applicable.");
nn_defineMethod(gpuTable, "getForeground", true, (void *)nni_gpu_getForeground, NULL, "setForeground(color: integer, isPalette: boolean): integer, integer? - Sets the current foreground color. Returns the old one and palette index if applicable.");
nn_defineMethod(gpuTable, "getDepth", true, (void *)nni_gpu_getDepth, NULL, "getDepth(): number - The currently set color depth of the GPU/screen, in bits. Can be 1, 4 or 8.");
nn_defineMethod(gpuTable, "fill", true, (void *)nni_gpu_fill, NULL, "fill(x: integer, y: integer, w: integer, h: integer, s: string)");
nn_defineMethod(gpuTable, "copy", true, (void *)nni_gpu_copy, NULL, "copy(x: integer, y: integer, w: integer, h: integer, tx: integer, ty: integer) - Copies stuff");
nn_defineMethod(gpuTable, "getViewport", true, (void *)nni_gpu_getViewport, NULL, "getViewport(): integer, integer - Gets the current viewport resolution");