hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/bridge
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-10-07 21:43:38 +0200
committerhachem <im@hachem.wtf>2026-10-07 21:43:38 +0200
commite55291a32a8b3f7b5c105cd79e86f3c19f19b3d4 (patch)
tree0a52300c63a011683ceba1642e6f7c24e4d367ef /bridge
parent5d4a723a5f157c0ed38a348099a600d1d21c3c2b (diff)
feat: tty and ttf, you'd think somethn starting with tt would be fun to do...
Diffstat (limited to 'bridge')
-rw-r--r--bridge/bridge.zig2
-rw-r--r--bridge/hosts.zig32
2 files changed, 34 insertions, 0 deletions
diff --git a/bridge/bridge.zig b/bridge/bridge.zig
index 87548eb..56cfc7f 100644
--- a/bridge/bridge.zig
+++ b/bridge/bridge.zig
@@ -29,7 +29,9 @@ const init_program = blk: {
for (gils_embedded) |g| s = s ++ @embedFile("k_gils_" ++ g) ++ "\n";
s = s ++ @embedFile("k_proc") ++ "\n" ++
+ @embedFile("k_ttf") ++ "\n" ++
@embedFile("k_shell") ++ "\n" ++
+ @embedFile("k_tty") ++ "\n" ++
@embedFile("k_input") ++ "\n" ++
@embedFile("k_main");
break :blk s;
diff --git a/bridge/hosts.zig b/bridge/hosts.zig
index 51362dc..5f401aa 100644
--- a/bridge/hosts.zig
+++ b/bridge/hosts.zig
@@ -67,6 +67,11 @@ pub const KernelOps = struct {
disk_read: *const fn (u64, u64) u64, // lba, phys buf -> 1 ok / 0 fail
disk_write: *const fn (u64, u64) u64, // lba, phys buf -> 1 ok / 0 fail
alloc_contig: *const fn (u64) u64, // n contiguous pages -> phys base, 0 on fail
+
+ font_count: *const fn () u64,
+ font_phys: *const fn (u64) u64,
+ font_name: *const fn (u64) []const u8,
+ font_size: *const fn (u64) u64,
};
var g_kops: ?KernelOps = null;
@@ -281,6 +286,29 @@ fn hostProgSize(args: []const revo.Value, _: *revo.VM) anyerror!HostResult {
}
// pass shit to revo
+fn hostFontCount(_: []const revo.Value, _: *revo.VM) anyerror!HostResult {
+ return HostResult.data(Data.new.num(kops().font_count()));
+}
+
+// pass shit to revo
+fn hostFontPhys(args: []const revo.Value, _: *revo.VM) anyerror!HostResult {
+ const i = argInt(u64, args, 0) orelse return HostResult.other("font_phys: bad index");
+ return HostResult.data(Data.new.num(kops().font_phys(i)));
+}
+
+// pass shit to revo
+fn hostFontName(args: []const revo.Value, vm: *revo.VM) anyerror!HostResult {
+ const i = argInt(u64, args, 0) orelse return HostResult.other("font_name: bad index");
+ return HostResult.data(try vm.ownValueString(kops().font_name(i)));
+}
+
+// pass shit to revo
+fn hostFontSize(args: []const revo.Value, _: *revo.VM) anyerror!HostResult {
+ const i = argInt(u64, args, 0) orelse return HostResult.other("font_size: bad index");
+ return HostResult.data(Data.new.num(kops().font_size(i)));
+}
+
+// pass shit to revo
fn hostTaskMax(_: []const revo.Value, _: *revo.VM) anyerror!HostResult {
return HostResult.data(Data.new.num(kops().task_max()));
}
@@ -436,6 +464,10 @@ pub fn passShitToRevo(vm: *revo.VM) !void {
try vm.registerGlobal("prog_phys", try vm.installHost("prog_phys", define(&[_]T{.number}, hostProgPhys)));
try vm.registerGlobal("prog_name", try vm.installHost("prog_name", define(&[_]T{.number}, hostProgName)));
try vm.registerGlobal("prog_size", try vm.installHost("prog_size", define(&[_]T{.number}, hostProgSize)));
+ try vm.registerGlobal("font_count", try vm.installHost("font_count", define(&[_]T{}, hostFontCount)));
+ try vm.registerGlobal("font_phys", try vm.installHost("font_phys", define(&[_]T{.number}, hostFontPhys)));
+ try vm.registerGlobal("font_name", try vm.installHost("font_name", define(&[_]T{.number}, hostFontName)));
+ try vm.registerGlobal("font_size", try vm.installHost("font_size", define(&[_]T{.number}, hostFontSize)));
try vm.registerGlobal("task_max", try vm.installHost("task_max", define(&[_]T{}, hostTaskMax)));
try vm.registerGlobal("task_state", try vm.installHost("task_state", define(&[_]T{.number}, hostTaskState)));
try vm.registerGlobal("memmap_count", try vm.installHost("memmap_count", define(&[_]T{}, hostMemmapCount)));