hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/bridge
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-10-12 23:08:48 +0200
committerhachem <im@hachem.wtf>2026-10-12 23:08:48 +0200
commit6a5543bb8f1f535ca49737bcd7be0cafca3b2a08 (patch)
treebb137b732a1d122aeace46c550733f4793d84601 /bridge
parent59794d0b999e544a94230d9562bf2b99d2ed74c7 (diff)
feat: lib seaHEADmain
Diffstat (limited to 'bridge')
-rw-r--r--bridge/hosts.zig50
1 files changed, 26 insertions, 24 deletions
diff --git a/bridge/hosts.zig b/bridge/hosts.zig
index caf8b0d..5148ca8 100644
--- a/bridge/hosts.zig
+++ b/bridge/hosts.zig
@@ -8,31 +8,11 @@ const Data = convert.Data;
const argInt = convert.argInt;
const emit = serial.emit;
-// gils shit
-const Script = struct { name: []const u8, src: []const u8 };
-const scripts = [_]Script{
- .{ .name = "ls", .src = @embedFile("k_gils_ls") },
- .{ .name = "tree", .src = @embedFile("k_gils_tree") },
- .{ .name = "cat", .src = @embedFile("k_gils_cat") },
- .{ .name = "rm", .src = @embedFile("k_gils_rm") },
- .{ .name = "mkdir", .src = @embedFile("k_gils_mkdir") },
- .{ .name = "touch", .src = @embedFile("k_gils_touch") },
- .{ .name = "cp", .src = @embedFile("k_gils_cp") },
- .{ .name = "mv", .src = @embedFile("k_gils_mv") },
- .{ .name = "wc", .src = @embedFile("k_gils_wc") },
- .{ .name = "head", .src = @embedFile("k_gils_head") },
- .{ .name = "tail", .src = @embedFile("k_gils_tail") },
-};
-
-// /etc/ shit
-const EtcFile = struct { name: []const u8, src: []const u8 };
-const etc_files = [_]EtcFile{
- .{ .name = "motd", .src = @embedFile("k_etc_motd") },
- .{ .name = "profile", .src = @embedFile("k_etc_profile") },
- .{ .name = "lung", .src = @embedFile("k_etc_lung") },
-};
+const basset = @import("basset");
+const scripts = basset.gils;
+const etc_files = basset.etc;
+const include_files = basset.include;
-// the actual framebuffer, the data layout feels pretty self explanatory
pub const Fb = struct {
ptr: [*]u8,
width: usize,
@@ -452,6 +432,25 @@ fn hostEtcSrc(args: []const revo.Value, vm: *revo.VM) anyerror!HostResult {
}
// pass shit to revo
+fn hostIncCount(_: []const revo.Value, _: *revo.VM) anyerror!HostResult {
+ return HostResult.data(Data.new.num(include_files.len));
+}
+
+// pass shit to revo
+fn hostIncName(args: []const revo.Value, vm: *revo.VM) anyerror!HostResult {
+ const i = argInt(usize, args, 0) orelse return HostResult.other("inc_name: bad index");
+ if (i >= include_files.len) return HostResult.other("inc_name: out of range");
+ return HostResult.data(try vm.ownValueString(include_files[i].name));
+}
+
+// pass shit to revo
+fn hostIncSrc(args: []const revo.Value, vm: *revo.VM) anyerror!HostResult {
+ const i = argInt(usize, args, 0) orelse return HostResult.other("inc_src: bad index");
+ if (i >= include_files.len) return HostResult.other("inc_src: out of range");
+ return HostResult.data(try vm.ownValueString(include_files[i].src));
+}
+
+// pass shit to revo
fn hostEvalScript(args: []const revo.Value, vm: *revo.VM) anyerror!HostResult {
const sid = args[0].asString() orelse return HostResult.other("eval_script: not a string");
const src = vm.stringValue(sid);
@@ -517,6 +516,9 @@ pub fn passShitToRevo(vm: *revo.VM) !void {
try vm.registerGlobal("etc_count", try vm.installHost("etc_count", define(&[_]T{}, hostEtcCount)));
try vm.registerGlobal("etc_name", try vm.installHost("etc_name", define(&[_]T{.number}, hostEtcName)));
try vm.registerGlobal("etc_src", try vm.installHost("etc_src", define(&[_]T{.number}, hostEtcSrc)));
+ try vm.registerGlobal("inc_count", try vm.installHost("inc_count", define(&[_]T{}, hostIncCount)));
+ try vm.registerGlobal("inc_name", try vm.installHost("inc_name", define(&[_]T{.number}, hostIncName)));
+ try vm.registerGlobal("inc_src", try vm.installHost("inc_src", define(&[_]T{.number}, hostIncSrc)));
try vm.registerGlobal("alloc_contig", try vm.installHost("alloc_contig", define(&[_]T{.number}, hostAllocContig)));
try vm.registerGlobal("blit_str", try vm.installHost("blit_str", define(&[_]T{ .number, .string }, hostBlitStr)));
try vm.registerGlobal("phys_to_str", try vm.installHost("phys_to_str", define(&[_]T{ .number, .number }, hostPhysToStr)));