uzn/src/main.zig

38 lines
1.1 KiB
Zig
Raw Normal View History

2024-04-20 06:05:30 -06:00
const std = @import("std");
const Uxn = @import("uxn.zig");
2025-03-04 22:01:36 -07:00
const Varvara = @import("varvara.zig");
const DEBUG = true;
2024-04-20 06:05:30 -06:00
pub fn main() !void {
2024-04-21 07:04:15 -06:00
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();
2024-04-22 10:55:25 -06:00
const rom = try file.readToEndAlloc(allocator, 0xFF00);
2024-04-21 07:04:15 -06:00
defer allocator.free(rom);
Uxn.setDebug(DEBUG);
var varvara = try Varvara.init(allocator, rom);
defer varvara.deinit();
2024-04-20 06:05:30 -06:00
while (varvara.uxn.eval()) {
if (DEBUG) std.debug.print("{s}\t\tpc {X}, code {X}\n", .{
Uxn.fmtInstrs(varvara.uxn.mem.m[varvara.uxn.pc .. varvara.uxn.pc +% 1]),
2025-03-04 22:01:36 -07:00
varvara.uxn.pc,
varvara.uxn.mem.m[varvara.uxn.pc],
});
2024-04-22 02:48:55 -06:00
}
2024-04-21 07:04:15 -06:00
} else return error.NoRom;
2024-04-20 06:05:30 -06:00
}