diff --git a/programs/develop/ktcc/trunk/libc.obj/samples/fasm/sprintf_test.asm b/programs/develop/ktcc/trunk/libc.obj/samples/fasm/sprintf_test.asm index 9c859e627a..e52d969de7 100644 --- a/programs/develop/ktcc/trunk/libc.obj/samples/fasm/sprintf_test.asm +++ b/programs/develop/ktcc/trunk/libc.obj/samples/fasm/sprintf_test.asm @@ -1,81 +1,100 @@ -format binary as "kex" - -use32 - org 0x0 - db 'MENUET01' - dd 0x01 - dd START - dd IM_END - dd MEM - dd MEM - dd 0 - dd 0 - -include '../../../../../macros.inc' -include '../../../../../proc32.inc' -include '../../../../../KOSfuncs.inc' -include '../../../../../dll.inc' -;include '../../../../../debug-fdo.inc' - -;__DEBUG__ = 1 -;__DEBUG_LEVEL__ = 2 - -START: - stdcall dll.Load, @IMPORT - test eax, eax - jnz exit - - cinvoke libc_strlen, test_str1 - ;DEBUGF 2, "%d", eax - mcall SF_SYS_MISC, SSF_MEM_ALLOC, eax - mov [test_str2], eax - - cinvoke libc_sprintf, [test_str2], format_str, str_var, [dec_var], dword [float_var], dword[float_var+4], [hex_var] - cinvoke libc_puts, test_str1 - cinvoke libc_puts, [test_str2] - - cinvoke libc_strcmp, test_str1, [test_str2] - - test eax, eax - jz print_succ - jmp print_fail - -print_succ: - cinvoke libc_puts, success_msg - jmp exit - -print_fail: - cinvoke libc_puts, failed_msg - -exit: - mcall SF_SYS_MISC, SSF_MEM_FREE, [test_str2] - mcall SF_TERMINATE_PROCESS - -; data - -format_str db "%s %d %f 0x%x", 0 -test_str1 db "Test 463 -26.432100 0x9d81", 0 -test_str2 dd 0 - -str_var db "Test",0 -dec_var dd 463 -float_var dq -26.4321 -hex_var dd 40321 - -success_msg db "Test successful!", 0 -failed_msg db "Test failed!", 0 - -align 4 - -@IMPORT: -library libc, 'libc.obj' -import libc, \ - libc_sprintf, 'sprintf', \ - libc_strcmp, 'strcmp', \ - libc_strlen, 'strlen', \ - libc_puts, 'puts' - -IM_END: -align 4 -rb 1024 ; stack -MEM: +; 2022, Edited by Coldy +; Added changes for auto load & linking + +format binary as "kex" + +use32 + org 0x0 + db 'MENUET01' + dd 0x02 ; 2 - for enable autoload feature + dd START + dd IM_END + dd MEM + dd MEM + dd 0 + dd 0 + + ; { Begin of KX header (this need for recognition by dll.obj) + + db 'KX',0 ; Signature/Magic + db 0 ; Revision + db 1000000b ; Flags0 (user app w/import) + db 0 ; Flags1 + dw 0 ; Reserved + + dd @IMPORT ; Pointer to import table + + ; } End of KX header + +include '../../../../../../macros.inc' +include '../../../../../../proc32.inc' +include '../../../../../../KOSfuncs.inc' + +; no needed for autolod +;include '../../../../../dll.inc' +;include '../../../../../debug-fdo.inc' + +;__DEBUG__ = 1 +;__DEBUG_LEVEL__ = 2 + +START: + ; Disabled, dll.obj doing this + ;stdcall dll.Load, @IMPORT + ;test eax, eax + ;jnz exit + + cinvoke libc_strlen, test_str1 + ;DEBUGF 2, "%d", eax + mcall SF_SYS_MISC, SSF_MEM_ALLOC, eax + mov [test_str2], eax + + cinvoke libc_sprintf, [test_str2], format_str, str_var, [dec_var], dword [float_var], dword[float_var+4], [hex_var] + cinvoke libc_puts, test_str1 + cinvoke libc_puts, [test_str2] + + cinvoke libc_strcmp, test_str1, [test_str2] + + test eax, eax + jz print_succ + jmp print_fail + +print_succ: + cinvoke libc_puts, success_msg + jmp exit + +print_fail: + cinvoke libc_puts, failed_msg + +exit: + mcall SF_SYS_MISC, SSF_MEM_FREE, [test_str2] + //mcall SF_TERMINATE_PROCESS - disabled, dll.obj also doing this + ret + +; data + +format_str db "%s %d %f 0x%x", 0 +test_str1 db "Test 463 -26.432100 0x9d81", 0 +test_str2 dd 0 + +str_var db "Test",0 +dec_var dd 463 +float_var dq -26.4321 +hex_var dd 40321 + +success_msg db "Test successful!", 0 +failed_msg db "Test failed!", 0 + +align 4 + +@IMPORT: +library libc, 'libc.obj' +import libc, \ + libc_sprintf, 'sprintf', \ + libc_strcmp, 'strcmp', \ + libc_strlen, 'strlen', \ + libc_puts, 'puts' + +IM_END: +align 4 +rb 1024 ; stack +MEM: