From 76ac2daa98767f22fcaf4571b7bf231f5bff80d8 Mon Sep 17 00:00:00 2001 From: sweetbread Date: Mon, 19 Jun 2023 00:44:01 +0300 Subject: [PATCH] Offset fix --- src/lib.rs | 3 ++- src/sys.rs | 4 ++-- src/syscalls.S | 27 ++++++++++++--------------- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 79dcdf6..59ff7ce 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -59,6 +59,7 @@ pub fn define_window(start: Dot, width: u32, height: u32, params: WindowParams<' start.y * 65536 + height, params.color.as_rgb_val() | (RELATIVE_FLAG | (params.title.is_some() as u32) << 4 | params.kind as u32) << 24, + 0, params .title .map(|s| s.as_ptr()) @@ -82,8 +83,8 @@ pub fn display_message(start: Dot, params: WindowTextParams<'_>) { start.x * 65536 + start.y, params.color.as_rgb_val() | BG_FLAG * params.bg_color.is_some() as u32 | UTF8_FLAG, params.text.as_ptr() as u32, - 0, params.text.len() as u32, + 0, ); } } diff --git a/src/sys.rs b/src/sys.rs index 3347f46..6abf83b 100644 --- a/src/sys.rs +++ b/src/sys.rs @@ -10,9 +10,9 @@ extern "C" { pub fn exit() -> !; #[link_name = "_define_window"] - pub fn define_window(ebx: u32, ecx: u32, edx: u32, edi: u32); + pub fn define_window(ebx: u32, ecx: u32, edx: u32, esi: u32, edi: u32); #[link_name = "_display_message"] - pub fn display_message(ebx: u32, ecx: u32, edx: u32, edi: u32, esi: u32); + pub fn display_message(ebx: u32, ecx: u32, edx: u32, esi: u32, edi: u32); #[link_name = "_wait_event"] pub fn wait_event() -> u32; diff --git a/src/syscalls.S b/src/syscalls.S index cf8ae8a..029bfe8 100644 --- a/src/syscalls.S +++ b/src/syscalls.S @@ -27,31 +27,28 @@ _end_window_draw: _define_window: push edi - push ebx + push esi xor eax, eax - mov ebx, dword [esp + 0x14] - mov ecx, dword [esp + 0x18] - mov edx, dword [esp + 0x1c] - mov edi, dword [esp + 0x20] - mov ebx, 2 + mov ebx, dword [esp + 0x0c] + mov ecx, dword [esp + 0x10] + mov edx, dword [esp + 0x14] + mov esi, dword [esp + 0x18] + mov edi, dword [esp + 0x1c] int 0x40 - pop ebx + pop esi pop edi ret _display_message: push edi push esi - push ebx mov eax, 4 - mov ebx, dword [esp + 0x14] - mov ecx, dword [esp + 0x18] - mov edx, dword [esp + 0x1c] - mov esi, dword [esp + 0x20] - mov edi, dword [esp + 0x24] - mov ebx, 2 + mov ebx, dword [esp + 0x0c] + mov ecx, dword [esp + 0x10] + mov edx, dword [esp + 0x14] + mov esi, dword [esp + 0x18] + mov edi, dword [esp + 0x1c] int 0x40 - pop ebx pop esi pop edi ret