stuff
This commit is contained in:
parent
8cb37452fb
commit
43d7b290fd
3 changed files with 70 additions and 8 deletions
26
src/uxn.zig
26
src/uxn.zig
|
@ -7,6 +7,16 @@ rs: Stack = .{ .s = undefined },
|
|||
dev: [0x100]u8 = undefined,
|
||||
pc: u16,
|
||||
|
||||
deo8: *const fn (*Uxn, *Stack, u8, u8) void = deo8Stub,
|
||||
deo16: *const fn (*Uxn, *Stack, u8, u16) void = deo16Stub,
|
||||
dei8: *const fn (*Uxn, *Stack, u8) void = dei8Stub,
|
||||
dei16: *const fn (*Uxn, *Stack, u8) void = dei16Stub,
|
||||
|
||||
fn deo8Stub(_: *Uxn, _: *Stack, _: u8, _: u8) void {}
|
||||
fn deo16Stub(_: *Uxn, _: *Stack, _: u8, _: u16) void {}
|
||||
fn dei8Stub(_: *Uxn, _: *Stack, _: u8) void {}
|
||||
fn dei16Stub(_: *Uxn, _: *Stack, _: u8) void {}
|
||||
|
||||
const Memory = struct {
|
||||
m: [0x10000]u8,
|
||||
|
||||
|
@ -503,21 +513,29 @@ fn sta(self: *Uxn, stack: *Stack, comptime T: type, comptime keep: bool) void {
|
|||
|
||||
fn dei(self: *Uxn, stack: *Stack, comptime T: type, comptime keep: bool) void {
|
||||
const d = if (keep) stack.peek(u8) else stack.pop(u8);
|
||||
switch (T) {
|
||||
u8 => self.dei8(self, stack, d),
|
||||
u16 => self.dei16(self, stack, d),
|
||||
else => @compileError("expected u8 or u16, got " + @typeName(T)),
|
||||
}
|
||||
stack.push(T, self.dev[d]);
|
||||
}
|
||||
|
||||
fn deo(self: *Uxn, stack: *Stack, comptime T: type, comptime keep: bool) void {
|
||||
std.debug.print("DEO: {any} ", .{stack.s});
|
||||
const d = if (keep) stack.peek(u8) else stack.pop(u8);
|
||||
const v = if (keep) stack.peek(T) else stack.pop(T);
|
||||
std.debug.print("v{X} d{X}\n", .{ v, d });
|
||||
std.debug.print("DEO: dev {X}, val {X}\n", .{ d, v });
|
||||
switch (T) {
|
||||
u8 => self.dev[d] = v,
|
||||
u8 => {
|
||||
self.dev[d] = v;
|
||||
self.deo8(self, stack, d, v);
|
||||
},
|
||||
u16 => {
|
||||
self.dev[d] = @truncate(v >> 8);
|
||||
self.dev[d +% 1] = @truncate(v & 0xFF);
|
||||
self.deo16(self, stack, d, v);
|
||||
},
|
||||
else => unreachable,
|
||||
else => @compileError("expected u8 or u16, got " + @typeName(T)),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue