From f93ccccdbec5a9c62fcb0179bc77bdfe64e18515 Mon Sep 17 00:00:00 2001 From: IgorA Date: Thu, 3 Apr 2025 22:01:25 +0300 Subject: [PATCH] fix for calling tl_on_enter function, stack fix --- .../libraries/box_lib/trunk/tree_list.asm | 1 + programs/network/ftpc/ftpc.asm | 9 ++++--- programs/network/ftpc/gui.inc | 25 +++++++++++++++---- programs/network/ftpc/servercommands.inc | 1 + 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/programs/develop/libraries/box_lib/trunk/tree_list.asm b/programs/develop/libraries/box_lib/trunk/tree_list.asm index b2e7553ad..0ebf8476c 100644 --- a/programs/develop/libraries/box_lib/trunk/tree_list.asm +++ b/programs/develop/libraries/box_lib/trunk/tree_list.asm @@ -125,6 +125,7 @@ proc tl_key uses ebx ecx edi, tlist:dword cmp tl_on_press,0 je @f call tl_on_press + jmp .no_edit @@: cmp ah,byte[ecx+1] ;Space jne @f diff --git a/programs/network/ftpc/ftpc.asm b/programs/network/ftpc/ftpc.asm index 793a82a68..f8b3c185d 100644 --- a/programs/network/ftpc/ftpc.asm +++ b/programs/network/ftpc/ftpc.asm @@ -36,8 +36,8 @@ use32 dd 1 ; header version dd start ; entry point dd i_end ; initialized size - dd mem+0x1000 ; required memory - dd mem+0x1000 ; stack pointer + dd mem ; required memory + dd stacktop ; stack pointer dd buf_cmd ; parameters dd path ; path @@ -971,6 +971,7 @@ param_path rb 1024 param_port rb 6 sc system_colors -rb 2048 - +align 16 +rb 4096 +stacktop: mem: diff --git a/programs/network/ftpc/gui.inc b/programs/network/ftpc/gui.inc index a5e3cea28..fcca08a6f 100755 --- a/programs/network/ftpc/gui.inc +++ b/programs/network/ftpc/gui.inc @@ -7,6 +7,7 @@ include '../../load_lib.mac' icon_tl_sys dd 0 icon_tl_nod dd 0 +lbl_after_enter dd 0 show_log db 0 ; 0 - hide log, 1 - show log TLIST_SZ = 325+16 ;=341. 16 is x-size of scroll bar @@ -266,8 +267,13 @@ gui: ;////////////////////////////////////////////////////////////////////////// jmp .still .no_edit: + mov [lbl_after_enter], 0 stdcall [tl_mouse], tree1 stdcall [tl_mouse], tree2 + cmp [lbl_after_enter], 0 + jz @f + jmp [lbl_after_enter] + @@: stdcall [edit_box_mouse], edit_mkd stdcall [edit_box_mouse], edit_volume stdcall [edit_box_mouse], edit_search @@ -276,8 +282,13 @@ gui: ;////////////////////////////////////////////////////////////////////////// align 16 .key: mcall SF_GET_KEY + mov [lbl_after_enter], 0 stdcall [tl_key], tree1 stdcall [tl_key], tree2 + cmp [lbl_after_enter], 0 + jz @f + jmp [lbl_after_enter] + @@: stdcall [edit_box_key], edit_mkd stdcall [edit_box_key], edit_volume stdcall [edit_box_key], edit_search @@ -335,7 +346,7 @@ gui: ;////////////////////////////////////////////////////////////////////////// @@: cmp ah, 1 je .exit - + jmp .still .print: @@ -610,7 +621,8 @@ fun_on_enter: cmp byte[esi], 0 jne @b mov word[edi], 0x000a - jmp cmd_stor + mov [lbl_after_enter], cmd_stor + ret ; Function to call when you press [Enter] @@ -623,7 +635,8 @@ fun_on_enter2: cmp dword[esi], 0x2E2E jne @f mov [auto_list], 1 - jmp cmd_cdup + mov [lbl_after_enter], cmd_cdup + ret @@: cmp word[eax], 'fo' @@ -642,12 +655,14 @@ fun_on_enter2: ; newline in console code cmp word[eax], 'fo' je @f - jmp cmd_retr + mov [lbl_after_enter], cmd_retr + ret @@: stdcall [tl_info_clear], tree2 mov [auto_list], 1 - jmp cmd_cwd + mov [lbl_after_enter], cmd_cwd + ret ;;================================================================================================;; diff --git a/programs/network/ftpc/servercommands.inc b/programs/network/ftpc/servercommands.inc index 75f7a540f..607b3ec9e 100644 --- a/programs/network/ftpc/servercommands.inc +++ b/programs/network/ftpc/servercommands.inc @@ -194,6 +194,7 @@ data_loop: test eax, eax jz @f call error_fs + add esp, 4 ; fix stack jmp close_datacon @@: pop eax