From f69c0c90395f83716f0f85ca814e786ce84c5a14 Mon Sep 17 00:00:00 2001 From: JJ Bliss Date: Tue, 5 May 2026 11:16:28 -0400 Subject: [PATCH] Add Fkey handling --- src/main.ha | 17 +++++++++++------ uxn/uxn.ha | 5 ++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main.ha b/src/main.ha index f5b6171..f881978 100644 --- a/src/main.ha +++ b/src/main.ha @@ -200,7 +200,7 @@ export fn main() void = { case sdl3::EventType::QUIT => run = false; case sdl3::EventType::WINDOW_RESIZED => - let dims = uxn::get_window_size(state); + const dims = uxn::get_window_size(state); let w = ev.window.data1 / scale: i32; let h = ev.window.data2 / scale: i32; const wmod = w % scale: i32; @@ -285,12 +285,17 @@ export fn main() void = { const mods = ev.key.mod; const sym = sdl3::GetKeyFromScancode(scancode,mods,false); uxn::set_key_down(sym: u8,state); - // Handle Debug - if(key == sdl3::K_F2){ - fmt::println("Debug Print:")!; - uxn::print_stack_debug(state); + // Handle F Keys + if(key == sdl3::K_F1){ + scale = (scale % 3) + 1; + const dims = uxn::get_window_size(state); + sdl3::SetWindowSize(win,dims.width: i32*scale: i32,dims.height: i32*scale: i32)!; + }else if(key == sdl3::K_F2){ + uxn::emu_deo(0x0e,0x01,state); + }else if(key == sdl3::K_F3){ + state.dev[0x0f] = 0xff; }; - //Handle keyboard controller keys + // Handle keyboard controller keys // Ctrl -> A 0x01 if(key == sdl3::K_LCTRL || key == sdl3::K_RCTRL){ uxn::set_controller_down(0x01,state); diff --git a/uxn/uxn.ha b/uxn/uxn.ha index f1bd2f7..8a5d10b 100644 --- a/uxn/uxn.ha +++ b/uxn/uxn.ha @@ -168,7 +168,7 @@ fn emu_dei(port: u8, state: *uxn) u8 = { }; -fn emu_deo(port: u8, value: u8, state: *uxn) void = { +export 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) { @@ -176,6 +176,8 @@ fn emu_deo(port: u8, value: u8, state: *uxn) void = { state.ptr[0] = value; case 0x05 => state.ptr[1] = value; + case 0x0e => + print_stack_debug(state); case 0x11 => let high = state.dev[0x10]; let low = value; @@ -422,6 +424,7 @@ fn get_instruction(byte: u8) (instruction | error) = { }; export fn print_stack_debug(state: *uxn) void = { + //TODO follow standard form fmt::println("Working Stack:")!; print_stack(false,state);