const std = @import("std"); const Uxn = @import("uxn.zig"); const Varvara = @import("varvara.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 varvara = Varvara.init(rom); var running = true; while (running) { std.debug.print("pc={X} code={X} op={s}\n", .{ varvara.uxn.pc, varvara.uxn.mem.m[varvara.uxn.pc], Uxn.fmtInstrs(varvara.uxn.mem.m[varvara.uxn.pc .. varvara.uxn.pc +% 1]), }); if (varvara.uxn.eval()) running = false; } } else return error.NoRom; }