function 71.2

git-svn-id: svn://kolibrios.org@6802 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
pathoswithin 2016-12-21 09:11:27 +00:00
parent fb9e611d64
commit 4ded9c23de
4 changed files with 39 additions and 25 deletions

View File

@ -427,11 +427,9 @@ struct PROC
io_map_1 rd 1 io_map_1 rd 1
ht_lock rd 1 ht_lock rd 1
ht_free rd 1 ;htab[0] stdin ht_free rd 1 ;htab[0] stdin
ht_next rd 1 ;htab[1] stdout ht_next rd 1 ;htab[1] stdout
htab rd (4096-$)/4 ;htab[2] stderr htab rd 1024-PROC.htab/4 ;htab[2] stderr
; htab rd (4096+3072-$)/4 ;htab[2] stderr
; workdir rb 1024
pdt_0 rd 1024 pdt_0 rd 1024
ends ends
@ -492,7 +490,6 @@ struct APPDATA
draw_bgr_x dd ? ;+116 draw_bgr_x dd ? ;+116
draw_bgr_y dd ? ;+120 draw_bgr_y dd ? ;+120
dd ? ;+124 dd ? ;+124
wnd_shape dd ? ;+128 wnd_shape dd ? ;+128
wnd_shape_scale dd ? ;+132 wnd_shape_scale dd ? ;+132
dd ? ;+136 dd ? ;+136
@ -504,7 +501,8 @@ struct APPDATA
debugger_slot dd ? ;+172 debugger_slot dd ? ;+172
terminate_protection dd ? ;+176 terminate_protection dd ? ;+176
keyboard_mode db ? ;+180 keyboard_mode db ? ;+180
rb 3 captionEncoding db ?
rb 2
exec_params dd ? ;+184 exec_params dd ? ;+184
dbg_event_mem dd ? ;+188 dbg_event_mem dd ? ;+188
dbg_regs DBG_REGS ;+192 dbg_regs DBG_REGS ;+192

View File

@ -4346,22 +4346,24 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
eax - SF_FILE (70) eax - SF_FILE (70)
[ebx] - SSF_CREATE_FOLDER (9) [ebx] - SSF_CREATE_FOLDER (9)
====================================================================== ======================================================================
=== Функция 71, подфункция 1 - установить заголовок окна программы. == ========== Функция 71 - установить заголовок окна программы ==========
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 71 - номер функции * eax = 71 - номер функции
* ebx = 1 - номер подфункции * ebx = 1
* ecx = адрес строки заголовка,
строка может начинаться с байта кодировки:
1 = cp866
2 = UTF-16LE
3 = UTF-8
или:
* ebx = 2
* ecx = адрес строки заголовка * ecx = адрес строки заголовка
* dl = кодировка строки
Возвращаемое значение: Возвращаемое значение:
* функция не возвращает значения * функция не возвращает значения
Замечания: Замечания:
* Строка заголовка должна заканчиваться нулём. * Строка заголовка должна заканчиваться нулём.
* Можно указать кодировку заголовка,
поместив в начале строки байт со значениями:
1 = cp866
2 = UTF-16LE
3 = UTF-8
иначе будет использоваться cp866.
* Чтобы убрать заголовок, передайте NULL в ecx. * Чтобы убрать заголовок, передайте NULL в ecx.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------

View File

@ -4301,21 +4301,23 @@ Remarks:
eax - SF_FILE (70) eax - SF_FILE (70)
[ebx] - SSF_CREATE_FOLDER (9) [ebx] - SSF_CREATE_FOLDER (9)
====================================================================== ======================================================================
========== Function 71, subfunction 1 - set window caption. ========== ================== Function 71 - set window caption ==================
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 71 - function number * eax = 71 - function number
* ebx = 1 - subfunction number * ebx = 1
* ecx = pointer to zero terminated string * ecx = pointer to zero terminated string,
Returned value: the string may start with an encoding byte:
* 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:
1 = cp866 1 = cp866
2 = UTF-16LE 2 = UTF-16LE
3 = UTF-8 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. * Pass NULL in ecx to remove caption.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------

View File

@ -361,8 +361,17 @@ syscall_window_settings: ;///// system function 71 ////////////////////////////
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
mov edi, [CURRENT_TASK] mov edi, [CURRENT_TASK]
shl edi, 5 shl edi, 5
mov [edi * 8 + SLOT_BASE + APPDATA.wnd_caption], ecx
or [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION 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 jmp window._.draw_window_caption
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
align 4 align 4
@ -2244,6 +2253,9 @@ align 4
mov esi, eax mov esi, eax
add ebx, ebp add ebx, ebp
mov ecx, [common_colours + 16] mov ecx, [common_colours + 16]
mov al, [edi*8 + SLOT_BASE + APPDATA.captionEncoding]
test al, al
jnz @f
mov al, 1 mov al, 1
cmp byte [edx], 4 cmp byte [edx], 4
jnc @f jnc @f