uzn/src/main.zig

44 lines
1.3 KiB
Zig
Raw Normal View History

2024-04-20 06:05:30 -06:00
const std = @import("std");
2024-04-22 02:48:55 -06:00
const silkdot = @import("silkdot");
2024-04-20 06:05:30 -06:00
const Uxn = @import("uxn.zig");
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);
var uxn = Uxn{ .pc = 0x100 };
@memcpy(uxn.mem.m[0x100 .. rom.len + 0x100], rom);
2024-04-20 06:05:30 -06:00
// var term = try silkdot.Terminal.init(allocator);
// defer term.deinit();
2024-04-22 02:48:55 -06:00
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();
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
}