System/wsr rst and state now work
This commit is contained in:
+16
-4
@@ -79,9 +79,15 @@ export fn set_window_size(w: u16, h: u16, state: *uxn) void = {
|
||||
};
|
||||
|
||||
fn emu_dei(port: u8, state: *uxn) u8 = {
|
||||
let val = state.dev[port];
|
||||
switch(port) {
|
||||
case 0x04 =>
|
||||
return state.ptr[0];
|
||||
case 0x05 =>
|
||||
return state.ptr[1];
|
||||
case =>
|
||||
return state.dev[port];
|
||||
// fmt::printfln("Read {:x} from port {:x}", val, port)!;
|
||||
return val;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -89,6 +95,10 @@ fn emu_deo(port: u8, value: u8, state: *uxn) void = {
|
||||
// fmt::printfln("Writing {:x} to port {:x}", value, port)!;
|
||||
state.dev[port] = value;
|
||||
switch(port) {
|
||||
case 0x04 =>
|
||||
state.ptr[0] = value;
|
||||
case 0x05 =>
|
||||
state.ptr[1] = value;
|
||||
case 0x11 =>
|
||||
let high = state.dev[0x10];
|
||||
let low = value;
|
||||
@@ -375,6 +385,7 @@ export fn get_color(x: u16, y: u16, state: *uxn) u16 = {
|
||||
|
||||
export type evalerror = !void;
|
||||
export type unhandled = !u8;
|
||||
export type quit = void;
|
||||
|
||||
export type error = !(evalerror | unhandled);
|
||||
|
||||
@@ -606,13 +617,14 @@ fn pop_or_get(inst: normal_op, off: u8, state: *uxn) (u8 | u16) = {
|
||||
yield get_stack_val(inst.ret,inst.short, off,state);
|
||||
};
|
||||
};
|
||||
export fn uxn_eval(new_pc: u16, state: *uxn) (done | error ) = {
|
||||
export fn uxn_eval(new_pc: u16, state: *uxn) (done | quit | error ) = {
|
||||
// let a: u16 = 0, b: u16 = 0, c: u16 = 0, x: [2]u16 = [0...], y: [2]u16 = [0...], z: [2]u16 = [0...];
|
||||
state.pc = new_pc;
|
||||
state.running = true;
|
||||
for(state.running){
|
||||
uxn_step(state)?;
|
||||
};
|
||||
if(state.dev[0x0f] != 0) return quit;
|
||||
return done;
|
||||
};
|
||||
|
||||
@@ -1007,7 +1019,7 @@ export fn console_input(c: u8, ctype: u8, state: *uxn) (done | error) = {
|
||||
|
||||
|
||||
// Converts an error into a user-friendly string
|
||||
fn strerror(err: error) str = {
|
||||
export fn strerror(err: error) str = {
|
||||
match (err) {
|
||||
case evalerror =>
|
||||
return "Reached unexpected part of eval code";
|
||||
|
||||
Reference in New Issue
Block a user