diff --git a/kernel/trunk/const.inc b/kernel/trunk/const.inc index 827b320da2..cea68fa203 100644 --- a/kernel/trunk/const.inc +++ b/kernel/trunk/const.inc @@ -427,11 +427,9 @@ struct PROC io_map_1 rd 1 ht_lock rd 1 - ht_free rd 1 ;htab[0] stdin - ht_next rd 1 ;htab[1] stdout - htab rd (4096-$)/4 ;htab[2] stderr -; htab rd (4096+3072-$)/4 ;htab[2] stderr -; workdir rb 1024 + ht_free rd 1 ;htab[0] stdin + ht_next rd 1 ;htab[1] stdout + htab rd 1024-PROC.htab/4 ;htab[2] stderr pdt_0 rd 1024 ends @@ -492,7 +490,6 @@ struct APPDATA draw_bgr_x dd ? ;+116 draw_bgr_y dd ? ;+120 dd ? ;+124 - wnd_shape dd ? ;+128 wnd_shape_scale dd ? ;+132 dd ? ;+136 @@ -504,7 +501,8 @@ struct APPDATA debugger_slot dd ? ;+172 terminate_protection dd ? ;+176 keyboard_mode db ? ;+180 - rb 3 + captionEncoding db ? + rb 2 exec_params dd ? ;+184 dbg_event_mem dd ? ;+188 dbg_regs DBG_REGS ;+192 diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 4198ce709d..c2b4af4da2 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -4346,22 +4346,24 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); eax - SF_FILE (70) [ebx] - SSF_CREATE_FOLDER (9) ====================================================================== -=== Функция 71, подфункция 1 - установить заголовок окна программы. == +========== Функция 71 - установить заголовок окна программы ========== ====================================================================== Параметры: * eax = 71 - номер функции - * ebx = 1 - номер подфункции + * ebx = 1 + * ecx = адрес строки заголовка, + строка может начинаться с байта кодировки: + 1 = cp866 + 2 = UTF-16LE + 3 = UTF-8 + или: + * ebx = 2 * ecx = адрес строки заголовка + * dl = кодировка строки Возвращаемое значение: * функция не возвращает значения Замечания: * Строка заголовка должна заканчиваться нулём. - * Можно указать кодировку заголовка, - поместив в начале строки байт со значениями: - 1 = cp866 - 2 = UTF-16LE - 3 = UTF-8 - иначе будет использоваться cp866. * Чтобы убрать заголовок, передайте NULL в ecx. ---------------------- Константы для регистров: ---------------------- diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 21a1c3b0a9..b262ea7cd7 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -4301,21 +4301,23 @@ Remarks: eax - SF_FILE (70) [ebx] - SSF_CREATE_FOLDER (9) ====================================================================== -========== Function 71, subfunction 1 - set window caption. ========== +================== Function 71 - set window caption ================== ====================================================================== Parameters: * eax = 71 - function number - * ebx = 1 - subfunction number - * ecx = pointer to zero terminated string -Returned value: - * function does not return value -Remarks: - * You may set the caption string encoding by putting - at the start of the string a byte with next values: + * ebx = 1 + * ecx = pointer to zero terminated string, + the string may start with an encoding byte: 1 = cp866 2 = UTF-16LE 3 = UTF-8 - otherwise will be used cp866. + or: + * ebx = 2 + * ecx = pointer to zero terminated string + * dl = string encoding +Returned value: + * function does not return value +Remarks: * Pass NULL in ecx to remove caption. ---------------------- Constants for registers: ---------------------- diff --git a/kernel/trunk/gui/window.inc b/kernel/trunk/gui/window.inc index d09948bee3..cca83d3fa0 100644 --- a/kernel/trunk/gui/window.inc +++ b/kernel/trunk/gui/window.inc @@ -361,8 +361,17 @@ syscall_window_settings: ;///// system function 71 //////////////////////////// ;------------------------------------------------------------------------------ mov edi, [CURRENT_TASK] shl edi, 5 - mov [edi * 8 + SLOT_BASE + APPDATA.wnd_caption], ecx or [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION + cmp ebx, 2 + jz @f + xor edx, edx +@@: + cmp dl, 4 + jc @f + xor edx, edx +@@: + mov [edi*8 + SLOT_BASE + APPDATA.wnd_caption], ecx + mov [edi*8 + SLOT_BASE + APPDATA.captionEncoding], dl jmp window._.draw_window_caption ;------------------------------------------------------------------------------ align 4 @@ -2244,6 +2253,9 @@ align 4 mov esi, eax add ebx, ebp mov ecx, [common_colours + 16] + mov al, [edi*8 + SLOT_BASE + APPDATA.captionEncoding] + test al, al + jnz @f mov al, 1 cmp byte [edx], 4 jnc @f