const std = @import("std"); const silkdot = @import("silkdot"); const Uxn = @import("uxn.zig"); pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer _ = gpa.deinit(); const allocator = gpa.allocator(); var args = try std.process.argsWithAllocator(allocator); defer args.deinit(); _ = args.next(); const rom_path = args.next(); if (rom_path) |path| { var file = try std.fs.cwd().openFile(path, .{}); defer file.close(); const rom = try file.readToEndAlloc(allocator, 0xFF00); defer allocator.free(rom); var uxn = Uxn{ .pc = 0x100 }; @memcpy(uxn.mem.m[0x100 .. rom.len + 0x100], rom); // var term = try silkdot.Terminal.init(allocator); // defer term.deinit(); var running = true; while (running) { // const events = try term.getEvents(); // defer allocator.free(events); // for (events) |ev| switch (ev) { // .keyboard => { // if (ev.keyboard.code == 'q') running = false; // }, // else => {}, // }; std.debug.print("{any} {X}\n", .{ uxn.pc, uxn.mem.m[uxn.pc] }); if (uxn.eval()) running = false; // try term.draw(); } } else return error.NoRom; }