diff options
| author | hachem <im@hachem.wtf> | 2026-10-06 12:49:46 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-10-06 12:49:46 +0200 |
| commit | 5d4a723a5f157c0ed38a348099a600d1d21c3c2b (patch) | |
| tree | 70e5fdf560a64cd0eb3a13d88ce046ddd29fd077 /bridge/bridge.zig | |
| parent | 52dab7fc85d877e80e3032f0afabae906adebad8 (diff) | |
feat: gils core utils and other shit
Diffstat (limited to 'bridge/bridge.zig')
| -rw-r--r-- | bridge/bridge.zig | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/bridge/bridge.zig b/bridge/bridge.zig index 71f7023..87548eb 100644 --- a/bridge/bridge.zig +++ b/bridge/bridge.zig @@ -15,16 +15,25 @@ pub const KernelOps = hosts.KernelOps; // the vm outlives boot() now, so we juts make this hoe static var g_vm: ?*revo.VM = null; -const init_program = @embedFile("k_font") ++ "\n" ++ - @embedFile("k_console") ++ "\n" ++ - @embedFile("k_vmm") ++ "\n" ++ - @embedFile("k_fs") ++ "\n" ++ - @embedFile("k_vfs") ++ "\n" ++ - @embedFile("k_seed") ++ "\n" ++ - @embedFile("k_proc") ++ "\n" ++ - @embedFile("k_shell") ++ "\n" ++ - @embedFile("k_input") ++ "\n" ++ - @embedFile("k_main"); +// NOTE: ORDER MATTERS +const init_program = blk: { + var s: []const u8 = @embedFile("k_font") ++ "\n" ++ + @embedFile("k_console") ++ "\n" ++ + @embedFile("k_vmm") ++ "\n" ++ + @embedFile("k_fs") ++ "\n" ++ + @embedFile("k_vfs") ++ "\n" ++ + @embedFile("k_seed") ++ "\n"; + + // gils shit + const gils_embedded = .{ "gils", "ed" }; + for (gils_embedded) |g| s = s ++ @embedFile("k_gils_" ++ g) ++ "\n"; + + s = s ++ @embedFile("k_proc") ++ "\n" ++ + @embedFile("k_shell") ++ "\n" ++ + @embedFile("k_input") ++ "\n" ++ + @embedFile("k_main"); + break :blk s; +}; pub fn boot(alloc: std.mem.Allocator, out: Sink, fb: ?Fb, ops: ?KernelOps) void { serial.setSink(out); @@ -50,7 +59,7 @@ pub fn boot(alloc: std.mem.Allocator, out: Sink, fb: ?Fb, ops: ?KernelOps) void }; out("bridge: revo VM up\r\n"); - hosts.registerPrimitives(vm) catch { + hosts.passShitToRevo(vm) catch { out("bridge: registering primitives failed\r\n"); return; }; @@ -64,7 +73,7 @@ pub fn boot(alloc: std.mem.Allocator, out: Sink, fb: ?Fb, ops: ?KernelOps) void .err => |failure| { out("bridge: compile error: "); var sw = serial.SinkWriter.init(); - revo.lang.renderError(alloc, &sw.interface, .{ .name = "kernel", .text = init_program }, failure) catch {}; + revo.lang.renderError(alloc, &sw.interface, .{ .name = "kernel", .text = init_program }, failure, .{}) catch {}; out("\r\n"); return; }, @@ -86,7 +95,7 @@ pub fn boot(alloc: std.mem.Allocator, out: Sink, fb: ?Fb, ops: ?KernelOps) void .err => |failure| { out("\r\nbridge: runtime error: "); var sw = serial.SinkWriter.init(); - failure.render(alloc, &sw.interface, init_program) catch {}; + failure.render(alloc, &sw.interface, init_program, false) catch {}; out("\r\n"); }, } |
