mirror of
https://github.com/NeoFlock/neonucleus.git
synced 2025-09-24 09:03:32 +02:00
fix
This commit is contained in:
commit
3b733e0708
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,4 +3,4 @@ zig-out/
|
||||
!data/.gitkeep
|
||||
.vscode/
|
||||
raylib/
|
||||
lua/
|
||||
*.log
|
||||
|
1
TODO.md
1
TODO.md
@ -1,6 +1,5 @@
|
||||
# Parity with Vanilla OC (only the stuff that makes sense for an emulator)
|
||||
|
||||
- Unmanaged drives (the `drive` component)
|
||||
- `computer` component
|
||||
- `modem` component
|
||||
- `tunnel` component
|
||||
|
35
build.zig
35
build.zig
@ -63,6 +63,13 @@ fn compileTheRightLua(b: *std.Build, c: *std.Build.Step.Compile, version: LuaVer
|
||||
.files = files.items,
|
||||
});
|
||||
}
|
||||
fn getSharedEngineName(os: std.Target.Os.Tag) []const u8 {
|
||||
if (os == .windows) {
|
||||
return "neonucleusdll";
|
||||
} else {
|
||||
return "neonucleus";
|
||||
}
|
||||
}
|
||||
|
||||
pub fn build(b: *std.Build) void {
|
||||
const os = builtin.target.os.tag;
|
||||
@ -80,27 +87,21 @@ pub fn build(b: *std.Build) void {
|
||||
|
||||
addEngineSources(engineStatic);
|
||||
|
||||
const install = b.getInstallStep();
|
||||
|
||||
b.installArtifact(engineStatic);
|
||||
|
||||
const engineShared = b.addSharedLibrary(.{
|
||||
.name = "neonucleus",
|
||||
.name = getSharedEngineName(os),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
addEngineSources(engineShared);
|
||||
|
||||
b.installArtifact(engineShared);
|
||||
|
||||
const engineStep = b.step("engine", "Builds the engine as a static library");
|
||||
engineStep.dependOn(&engineStatic.step);
|
||||
engineStep.dependOn(install);
|
||||
engineStep.dependOn(&b.addInstallArtifact(engineStatic, .{}).step);
|
||||
|
||||
const sharedStep = b.step("shared", "Builds the engine as a shared library");
|
||||
sharedStep.dependOn(&engineShared.step);
|
||||
sharedStep.dependOn(install);
|
||||
sharedStep.dependOn(&b.addInstallArtifact(engineShared, .{}).step);
|
||||
|
||||
const emulator = b.addExecutable(.{
|
||||
.name = "neonucleus",
|
||||
@ -110,10 +111,12 @@ pub fn build(b: *std.Build) void {
|
||||
emulator.linkLibC();
|
||||
|
||||
if (os == .windows) {
|
||||
// use the msvc win64 dll versions and copy them to raylib/ and lua/
|
||||
// use the mingw-w64 version and copy files to raylib/
|
||||
// get raylib from https://github.com/raysan5/raylib/releases
|
||||
emulator.addIncludePath(b.path("raylib/include"));
|
||||
emulator.addObjectFile(b.path("raylib/lib/raylibdll.lib"));
|
||||
emulator.addObjectFile(b.path("raylib/lib/libraylib.a"));
|
||||
emulator.linkSystemLibrary("GDI32");
|
||||
emulator.linkSystemLibrary("WinMM");
|
||||
} else {
|
||||
emulator.linkSystemLibrary("raylib");
|
||||
}
|
||||
@ -129,18 +132,18 @@ pub fn build(b: *std.Build) void {
|
||||
// forces us to link in everything too
|
||||
emulator.linkLibrary(engineStatic);
|
||||
|
||||
b.installArtifact(emulator);
|
||||
b.step("emulator", "Builds the emulator").dependOn(&emulator.step);
|
||||
const emulatorStep = b.step("emulator", "Builds the emulator");
|
||||
emulatorStep.dependOn(&emulator.step);
|
||||
emulatorStep.dependOn(&b.addInstallArtifact(emulator, .{}).step);
|
||||
|
||||
const run_cmd = b.addRunArtifact(emulator);
|
||||
|
||||
run_cmd.step.dependOn(install);
|
||||
var run_cmd = b.addRunArtifact(emulator);
|
||||
|
||||
if (b.args) |args| {
|
||||
run_cmd.addArgs(args);
|
||||
}
|
||||
|
||||
const run_step = b.step("run", "Run the emulator");
|
||||
run_step.dependOn(emulatorStep);
|
||||
run_step.dependOn(&run_cmd.step);
|
||||
|
||||
const lib_unit_tests = b.addTest(.{
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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")
|
||||
|
0
data/OpenOS/etc/edit.cfg
Normal file
0
data/OpenOS/etc/edit.cfg
Normal 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)
|
||||
|
@ -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
|
||||
|
@ -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 = {}
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
|
@ -1,44 +0,0 @@
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
||||
boot/91_gpu.lua:14: attempt to call a nil value (field 'getDepth')
|
4
run.bat
4
run.bat
@ -1,4 +0,0 @@
|
||||
@echo off
|
||||
zig build
|
||||
copy raylib\lib\raylib.dll zig-out\bin
|
||||
zig build run
|
@ -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");
|
||||
|
Loading…
x
Reference in New Issue
Block a user