diff --git a/programs/develop/libraries/fontslib/trunk/Tupfile.lua b/programs/develop/libraries/fontslib/Tupfile.lua similarity index 100% rename from programs/develop/libraries/fontslib/trunk/Tupfile.lua rename to programs/develop/libraries/fontslib/Tupfile.lua diff --git a/programs/develop/libraries/fontslib/trunk/build.bat b/programs/develop/libraries/fontslib/build.bat similarity index 100% rename from programs/develop/libraries/fontslib/trunk/build.bat rename to programs/develop/libraries/fontslib/build.bat diff --git a/programs/develop/libraries/fontslib/trunk/font_.asm b/programs/develop/libraries/fontslib/font_.asm similarity index 100% rename from programs/develop/libraries/fontslib/trunk/font_.asm rename to programs/develop/libraries/fontslib/font_.asm diff --git a/programs/develop/libraries/fontslib/trunk/font_8x16.fon b/programs/develop/libraries/fontslib/font_8x16.fon similarity index 100% rename from programs/develop/libraries/fontslib/trunk/font_8x16.fon rename to programs/develop/libraries/fontslib/font_8x16.fon diff --git a/programs/develop/libraries/fontslib/trunk/font_ex.asm b/programs/develop/libraries/fontslib/font_ex.asm similarity index 97% rename from programs/develop/libraries/fontslib/trunk/font_ex.asm rename to programs/develop/libraries/fontslib/font_ex.asm index 98853e172..227a9fda3 100644 --- a/programs/develop/libraries/fontslib/trunk/font_ex.asm +++ b/programs/develop/libraries/fontslib/font_ex.asm @@ -42,10 +42,10 @@ use32 ; dd mem ; а бЇ®«®¦Ё¬ Ї®§ЁжЁо б⥪  ў ®Ў« бвЁ Ї ¬пвЁ, ба §г §  ⥫®¬ Їа®Ја ¬¬л. ‚ҐаиЁ­  б⥪  ў ¤Ё Ї §®­Ґ Ї ¬пвЁ, гЄ § ­­®¬ ўлиҐ dd 0x0 ; гЄ § вҐ«м ­  бва®Єг б Ї а ¬Ґва ¬Ё. dd way_of_ini -include '../../../../macros.inc' -include '../../../../KOSfuncs.inc' -include '../../../../load_lib.mac' -include '../../box_lib/box_lib.mac' +include '../../../macros.inc' +include '../../../KOSfuncs.inc' +include '../../../load_lib.mac' +include '../box_lib/box_lib.mac' @use_library ;use load lib macros start: ;universal load library/librarys diff --git a/programs/develop/libraries/fontslib/trunk/fonts_lib.asm b/programs/develop/libraries/fontslib/fonts_lib.asm similarity index 92% rename from programs/develop/libraries/fontslib/trunk/fonts_lib.asm rename to programs/develop/libraries/fontslib/fonts_lib.asm index 73dd572a7..e8fdd8207 100644 --- a/programs/develop/libraries/fontslib/trunk/fonts_lib.asm +++ b/programs/develop/libraries/fontslib/fonts_lib.asm @@ -1,441 +1,447 @@ -; Copyright (c) 2009, -; All rights reserved. -; -; Redistribution and use in source and binary forms, with or without -; modification, are permitted provided that the following conditions are met: -; * Redistributions of source code must retain the above copyright -; notice, this list of conditions and the following disclaimer. -; * Redistributions in binary form must reproduce the above copyright -; notice, this list of conditions and the following disclaimer in the -; documentation and/or other materials provided with the distribution. -; * Neither the name of the nor the -; names of its contributors may be used to endorse or promote products -; derived from this software without specific prior written permission. -; -; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname ''AS IS'' AND ANY -; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -; DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -;***************************************************************************** - -;;;;;;;;;;;;;;;;;; - -format MS COFF - -public EXPORTS - -section '.flat' code readable align 16 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;Get info about -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -include '../../../../macros.inc' -align 4 -initialization_font: -; esp+0 = dd back -; заполняем массив - структу для получения кол-ва файлов - -pushad - xor eax,eax - inc eax - mov [number_function],eax -;structure is completed - mov eax,70 - mov ebx,dword struct_f_info - mcall -;IF ERROR FT then exit - test eax,eax - jnz .exit -;IF ERROR folder is not found then exit - test ebx,ebx - mov eax,ebx - jnz .exit - -;Get quantity files - mov eax,[buffer_32.quantity_files] - imul eax,304 - add eax,32 ; ?? - push eax ;save eax в eax размер нужной нам памяти в байтах -;init memory - mov eax,68 - mov ebx,11 - mcall - test eax,eax - jz .exit - inc ebx ;выделить блок в ecx байт - - pop ecx - mov eax,68 - mcall - mov dword [fulder_array_point],eax ;save point for memory's fulder -;в eax указатель на блок - mov [buffer_read_d],eax ;point to new array - mov eax,[buffer_32.quantity_files] - mov [read_block],eax -;get in buffer info of files and sub dir current dir - mov eax,70 - mov ebx,dword struct_f_info - mcall -;получили информацию о файлах. - mov ebp, dword [buffer_read_d] ;point to structure - mov ecx, dword [ebp+4] ;кол-во блоков БДВК - mov dword [save_ecx],ecx - add ebp, 32 ;смещаемся до БДВК - mov dword [save_ebp],ebp - cld ;установка флага направления -align 4 -.start_loop: - push ecx - lea edi,[ebp+0x28] ;в edi указатель на начало имени. - xor eax,eax - mov ecx,263 - repne scasb ;найдем конец строки -;;;;;;;;;;;;;;;;;;;;;;; - sub edi,5 ;.ksf,0 - lea esi,[name_font] - mov eax,dword[edi] - or eax,0x20202000 ; сделаем расширение строчными буквами. - cmp eax,dword[esi] - jnz @f - -;;;;;;;; ура это наш файл т.е. наш шрифт мы нашли нужный файлик )) -;теперь нужно точно убедиться что это наш и только наш файлик -;загрузим заголовок файла и узнаем его размер глифа. - - call alloc_mem ; выделим озу своих переменных -; сейчас нам нужно сформировать имя файла с полным путем - mov eax,dword [alloc_memory_point] - lea edi,dword [eax+4] - lea esi,[name_fulder] - mov ecx,name_fuld_end - rep movsb ;переносим путь - mov al,'/' - stosb - lea esi,[ebp+0x28] ;в esi указатель на начало имени. -align 4 -.loop_b: - lodsb - stosb - test al,al - jnz .loop_b - -; mov edi,name_of_file ; [ebp+0x28] ;в edi указатель на начало имени. -;get in buffer info above own file - xor eax,eax - mov dword [number_function],eax - mov dword [index_start_block],eax ;позиция в файле для чтения данных - mov dword [flags_],eax ;старшая позиция для чтения данных - mov dword [read_block],8 ;сколько байт читать нам нужно 8 байт - mov dword [buffer_read_d],file_buffer ; указатель на буфер куда будут записаны данные - - mov eax,dword [alloc_memory_point] - lea edi,dword [eax+4] - mov dword [offset_to_string],edi - - mov eax,70 - mov ebx,dword struct_f_info - mcall -;;;;;;;;;;;;;;;; проверим формат заголовка - mov eax,ebx - mov eax,dword [file_buffer] - mov ebx,dword [type_fnt] - cmp eax,ebx - jnz @f - -;;;;;;; отлично сейчас проверили что заголовок именно тот который нам нужен -; сейчас нужно перераспределить блоки т.е. по мере нахождения будем переносить блоки -; в начало буфера - - mov dword [save_point_nt],ebp - pop ecx - xor eax,eax - jmp .exit - -align 4 -@@: pop ecx - add ebp,304 - dec ecx - jnz .start_loop -; loop .start_loop - or eax,-1 -;;;;;;;; прошлись - все интересущющие шрифты переместили в начало блока. - -align 4 -.exit: mov dword [esp+28],eax -popad -ret - - -align 4 -get_font: -; поиск в массиве шрифта при совпадении уcловий загрузка шрифта -; esp+4 = dd width font shl 16 +hight font -; esp+0 = dd back -;pop eax -; pop dword [font_x_y] -;push eax -pushad - mov eax,dword [esp+32+4] - mov dword [font_x_y],eax - xor eax,eax - mov dword [number_function],eax - mov dword [index_start_block],eax ;позиция в файле для чтения данных - mov dword [flags_],eax ;старшая позиция для чтения данных - mov dword [read_block],8 ;сколько байт читать нам нужно 8 байт - mov dword [buffer_read_d],file_buffer ; указатель на буфер куда будут записаны данные - - mov eax,dword [alloc_memory_point] - lea edi,dword [eax+4] - mov dword [offset_to_string],edi - - - mov eax,70 - mov ebx,dword struct_f_info - mcall -;;;;;;;;;;;;;;;; проверим формат заголовка - mov eax,ebx - mov eax,dword [file_buffer] - mov ebx,dword [type_fnt] - cmp eax,ebx - - mov ecx,dword [file_buffer.font_size] - mov edx,dword [font_x_y] - cmp ecx,edx - - mov ecx, 4096;dword [ebp+32] ;размер файла до 4294967296 байт т.е. 4 Гб - - mov dword [read_block],ecx - mov eax,68 - mov ebx,12 - mcall - - mov dword [font_array_point],eax ;save point to array - mov dword [buffer_read_d],eax - -;load font - mov ebx,dword struct_f_info - mov eax,70 - mcall - test eax,eax - jnz .exit - - lea eax,[buffer_read_d] - mov eax,dword [eax] - mov ebx,dword [eax+8] - add eax,ebx -; add eax,dword [eax+8] -; add eax,dword [buffer_read_d] - mov dword [font_array_data],eax - xor eax,eax - jmp .ok - -;here error file system -align 4 -.exit: - or eax,-1 -align 4 -.ok: mov dword [esp+28],eax ;вернем ошибку - popad - ret 4 - - -; поиск вывод сторочки по символьно сфорированного шрифтом текста -; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y -; esp+8 = dd point to color of background and font -; esp+4 = dd point to ASCIIZ -; esp+0 = dd back -align 4 -font_draw_on_string: -pushad - - mov esi,dword [esp+4+32] ;ASCIIZ - mov edx,dword [esp+12+32] ; x shl 16 +y - mov ecx,dword [font_x_y] ;размер глифа x shl 16 +y - mov edi,dword [esp+8+32] ;указатель на палитру из цвета и фона - xor ebp,ebp ;см 65 функцию )) - cld -align 4 -@@: ;pushad - xor eax,eax - lodsb - test al,al - jz .return - shl eax,4 ;умножаем на 16 т.к. это высота глифа - - mov ebx,dword [font_array_data] ; тут распологаются глифы символов - add ebx,eax - push esi - mov esi,1 - mov eax,65 - mcall - pop esi - add edx,8 shl 16 ;следующий символ ширина символа = 8 точкам - jmp @b - -align 4 -.return: -popad -ret 12 - - -align 4 -; esp+4 = dd point to color of background and font -show_all_glif: -pushad - - mov edx,10 shl 16+20 ;dword [esp+12+32] ; x shl 16 +y - mov ecx,128 shl 16 +256;dword [font_x_y] ;размер глифа x shl 16 +y - mov edi,dword [esp+4+32] ;указатель на палитру из цвета и фона - xor ebp,ebp ;см 65 функцию )) - -align 4 -@@: - mov ebx,dword [font_array_data] ; тут распологаются глифы символов - mov esi,1 - mov eax,65 - mcall -popad -ret 4 - - - - - - -align 4 -free_fulder_info: -;освободить память выделеную для получения блоков БДВК -pushad - mov ecx, dword [fulder_array_point] - mov eax,68 - mov ebx,13 - mcall - test eax,eax -; jnz @f - mov dword [esp+28],eax ;вернем ошибку -;align 4 -;@@: -popad - ret -align 4 -free_font: -;освободить память выделеную для получения блоков БДВК -pushad - mov ecx, dword [font_array_point] - mov eax,68 - mov ebx,13 - mcall - test eax,eax -; jnz @f - mov dword [esp+28],eax ;вернем ошибку -;align 4 -;@@: -popad - ret - -align 4 -; alloc mem get 4 Kb for own data -alloc_mem: - pushad - mov eax, dword [alloc_memory_point] - test eax,eax - jnz .mem_allocating - mov eax,68 - mov ebx,12 - mov ecx,4096 - mcall - mov dword [alloc_memory_point],eax ; при первом вхождении выделяем 4 кб ОЗУ и сохраняем указатель - mov dword [eax],-1 - popad - ret -align 4 -.mem_allocating: - mov ebp, dword [eax] - mov eax,ebp - cmp eax, -1 - jnz .mem_allocating - - mov eax,68 - mov ebx,12 - mov ecx,4096 - mcall - mov dword [ebp],eax ; при первом вхождении выделяем 4 кб ОЗУ и сохраняем указатель - mov dword [ebp],-1 - popad - ret - -align 16 -EXPORTS: - - dd sz_initialization_font, initialization_font - dd sz_get_font, get_font - dd sz_free_fulder_info, free_fulder_info - dd sz_free_font, free_font - dd sz_font_draw_on_string, font_draw_on_string - dd sz_show_all_glif, show_all_glif -; dd szVersion_ch, 0x00000001 -; dd sz_option_box_draw, option_box_draw -; dd sz_option_box_mouse, option_box_mouse - dd szVersion_fn, 0x00000001 - dd 0,0 - -sz_initialization_font db 'initialization_font',0 -sz_get_font db 'get_font',0 -sz_free_fulder_info db 'free_fulder_info',0 -sz_free_font db 'free_font',0 -sz_font_draw_on_string db 'font_draw_on_string',0 -sz_show_all_glif db 'show_all_glif',0 -;sz_check_box_mouse db 'check_box_mouse',0 -;szVersion_ch db 'version_ch',0 -;sz_option_box_draw db 'option_box_draw',0 -;sz_option_box_mouse db 'option_box_mouse',0 -szVersion_fn db 'version_fn',0 - -;;;;;;;;;;; -;;Data -;;;;;;;;;;; -align 4 -;buffer_font file 'font_8x16.fon' ;шрифт которым будем выводить raw формат 1bpp -save_ecx dd 0x0 -;buffer_font file 'font01.ksf' ;шрифт которым будем выводить raw формат 1bpp -alloc_memory_point dd 0x0 ; point to mem block in RAM 4096-4 -;структура такая в начале выделеного блока размещается указатель на другой выделлный блок в 4096-4, если это блок последний, то dd -1 -font_x_y dd 0x0 -fulder_array_point dd 0x0 -font_array_point dd 0x0 -font_array_data dd 0x0 ; реальные данные т.е. матрица шрифта -save_ebp dd 0x0 -save_point_nt dd 0x0 -name_fulder db '/sys/FONTS',0 -name_fuld_end= ($-name_fulder) -1 -name_font db '.ksf',0 -type_fnt db 'kf01' - - - -align 16 -struct_f_info: -number_function dd 0x0 -index_start_block dd 0x0 -flags_ dd 0x0 -read_block dd 0x0 -buffer_read_d dd buffer_32 -free_byte db 0x0 -offset_to_string dd name_fulder - -align 16 -file_buffer: -.type_fnt dd 0x0 -.font_size dd 0x0 - -align 16 -buffer_32: -.head dd ? -.quantity_block dd ? -.quantity_files dd ? - rb 20 +; SPDX-License-Identifier: NOASSERTION +; + +; Text encoded with Code Page Windows 1251 - Cyrillic + + +; Copyright (c) 2009, +; All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of the nor the +; names of its contributors may be used to endorse or promote products +; derived from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname ''AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +; DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;***************************************************************************** + +;;;;;;;;;;;;;;;;;; + +format MS COFF + +public EXPORTS + +section '.flat' code readable align 16 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Get info about +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +include '../../../macros.inc' +align 4 +initialization_font: +; esp+0 = dd back +; заполняем массив - структу для получения кол-ва файлов + +pushad + xor eax,eax + inc eax + mov [number_function],eax +;structure is completed + mov eax,70 + mov ebx,dword struct_f_info + mcall +;IF ERROR FT then exit + test eax,eax + jnz .exit +;IF ERROR folder is not found then exit + test ebx,ebx + mov eax,ebx + jnz .exit + +;Get quantity files + mov eax,[buffer_32.quantity_files] + imul eax,304 + add eax,32 ; ?? + push eax ;save eax в eax размер нужной нам памяти в байтах +;init memory + mov eax,68 + mov ebx,11 + mcall + test eax,eax + jz .exit + inc ebx ;выделить блок в ecx байт + + pop ecx + mov eax,68 + mcall + mov dword [fulder_array_point],eax ;save point for memory's fulder +;в eax указатель на блок + mov [buffer_read_d],eax ;point to new array + mov eax,[buffer_32.quantity_files] + mov [read_block],eax +;get in buffer info of files and sub dir current dir + mov eax,70 + mov ebx,dword struct_f_info + mcall +;получили информацию о файлах. + mov ebp, dword [buffer_read_d] ;point to structure + mov ecx, dword [ebp+4] ;кол-во блоков БДВК + mov dword [save_ecx],ecx + add ebp, 32 ;смещаемся до БДВК + mov dword [save_ebp],ebp + cld ;установка флага направления +align 4 +.start_loop: + push ecx + lea edi,[ebp+0x28] ;в edi указатель на начало имени. + xor eax,eax + mov ecx,263 + repne scasb ;найдем конец строки +;;;;;;;;;;;;;;;;;;;;;;; + sub edi,5 ;.ksf,0 + lea esi,[name_font] + mov eax,dword[edi] + or eax,0x20202000 ; сделаем расширение строчными буквами. + cmp eax,dword[esi] + jnz @f + +;;;;;;;; ура это наш файл т.е. наш шрифт мы нашли нужный файлик )) +;теперь нужно точно убедиться что это наш и только наш файлик +;загрузим заголовок файла и узнаем его размер глифа. + + call alloc_mem ; выделим озу своих переменных +; сейчас нам нужно сформировать имя файла с полным путем + mov eax,dword [alloc_memory_point] + lea edi,dword [eax+4] + lea esi,[name_fulder] + mov ecx,name_fuld_end + rep movsb ;переносим путь + mov al,'/' + stosb + lea esi,[ebp+0x28] ;в esi указатель на начало имени. +align 4 +.loop_b: + lodsb + stosb + test al,al + jnz .loop_b + +; mov edi,name_of_file ; [ebp+0x28] ;в edi указатель на начало имени. +;get in buffer info above own file + xor eax,eax + mov dword [number_function],eax + mov dword [index_start_block],eax ;позиция в файле для чтения данных + mov dword [flags_],eax ;старшая позиция для чтения данных + mov dword [read_block],8 ;сколько байт читать нам нужно 8 байт + mov dword [buffer_read_d],file_buffer ; указатель на буфер куда будут записаны данные + + mov eax,dword [alloc_memory_point] + lea edi,dword [eax+4] + mov dword [offset_to_string],edi + + mov eax,70 + mov ebx,dword struct_f_info + mcall +;;;;;;;;;;;;;;;; проверим формат заголовка + mov eax,ebx + mov eax,dword [file_buffer] + mov ebx,dword [type_fnt] + cmp eax,ebx + jnz @f + +;;;;;;; отлично сейчас проверили что заголовок именно тот который нам нужен +; сейчас нужно перераспределить блоки т.е. по мере нахождения будем переносить блоки +; в начало буфера + + mov dword [save_point_nt],ebp + pop ecx + xor eax,eax + jmp .exit + +align 4 +@@: pop ecx + add ebp,304 + dec ecx + jnz .start_loop +; loop .start_loop + or eax,-1 +;;;;;;;; прошлись - все интересущющие шрифты переместили в начало блока. + +align 4 +.exit: mov dword [esp+28],eax +popad +ret + + +align 4 +get_font: +; поиск в массиве шрифта при совпадении уcловий загрузка шрифта +; esp+4 = dd width font shl 16 +hight font +; esp+0 = dd back +;pop eax +; pop dword [font_x_y] +;push eax +pushad + mov eax,dword [esp+32+4] + mov dword [font_x_y],eax + xor eax,eax + mov dword [number_function],eax + mov dword [index_start_block],eax ;позиция в файле для чтения данных + mov dword [flags_],eax ;старшая позиция для чтения данных + mov dword [read_block],8 ;сколько байт читать нам нужно 8 байт + mov dword [buffer_read_d],file_buffer ; указатель на буфер куда будут записаны данные + + mov eax,dword [alloc_memory_point] + lea edi,dword [eax+4] + mov dword [offset_to_string],edi + + + mov eax,70 + mov ebx,dword struct_f_info + mcall +;;;;;;;;;;;;;;;; проверим формат заголовка + mov eax,ebx + mov eax,dword [file_buffer] + mov ebx,dword [type_fnt] + cmp eax,ebx + + mov ecx,dword [file_buffer.font_size] + mov edx,dword [font_x_y] + cmp ecx,edx + + mov ecx, 4096;dword [ebp+32] ;размер файла до 4294967296 байт т.е. 4 Гб + + mov dword [read_block],ecx + mov eax,68 + mov ebx,12 + mcall + + mov dword [font_array_point],eax ;save point to array + mov dword [buffer_read_d],eax + +;load font + mov ebx,dword struct_f_info + mov eax,70 + mcall + test eax,eax + jnz .exit + + lea eax,[buffer_read_d] + mov eax,dword [eax] + mov ebx,dword [eax+8] + add eax,ebx +; add eax,dword [eax+8] +; add eax,dword [buffer_read_d] + mov dword [font_array_data],eax + xor eax,eax + jmp .ok + +;here error file system +align 4 +.exit: + or eax,-1 +align 4 +.ok: mov dword [esp+28],eax ;вернем ошибку + popad + ret 4 + + +; поиск вывод сторочки по символьно сфорированного шрифтом текста +; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y +; esp+8 = dd point to color of background and font +; esp+4 = dd point to ASCIIZ +; esp+0 = dd back +align 4 +font_draw_on_string: +pushad + + mov esi,dword [esp+4+32] ;ASCIIZ + mov edx,dword [esp+12+32] ; x shl 16 +y + mov ecx,dword [font_x_y] ;размер глифа x shl 16 +y + mov edi,dword [esp+8+32] ;указатель на палитру из цвета и фона + xor ebp,ebp ;см 65 функцию )) + cld +align 4 +@@: ;pushad + xor eax,eax + lodsb + test al,al + jz .return + shl eax,4 ;умножаем на 16 т.к. это высота глифа + + mov ebx,dword [font_array_data] ; тут распологаются глифы символов + add ebx,eax + push esi + mov esi,1 + mov eax,65 + mcall + pop esi + add edx,8 shl 16 ;следующий символ ширина символа = 8 точкам + jmp @b + +align 4 +.return: +popad +ret 12 + + +align 4 +; esp+4 = dd point to color of background and font +show_all_glif: +pushad + + mov edx,10 shl 16+20 ;dword [esp+12+32] ; x shl 16 +y + mov ecx,128 shl 16 +256;dword [font_x_y] ;размер глифа x shl 16 +y + mov edi,dword [esp+4+32] ;указатель на палитру из цвета и фона + xor ebp,ebp ;см 65 функцию )) + +align 4 +@@: + mov ebx,dword [font_array_data] ; тут распологаются глифы символов + mov esi,1 + mov eax,65 + mcall +popad +ret 4 + + + + + + +align 4 +free_fulder_info: +;освободить память выделеную для получения блоков БДВК +pushad + mov ecx, dword [fulder_array_point] + mov eax,68 + mov ebx,13 + mcall + test eax,eax +; jnz @f + mov dword [esp+28],eax ;вернем ошибку +;align 4 +;@@: +popad + ret +align 4 +free_font: +;освободить память выделеную для получения блоков БДВК +pushad + mov ecx, dword [font_array_point] + mov eax,68 + mov ebx,13 + mcall + test eax,eax +; jnz @f + mov dword [esp+28],eax ;вернем ошибку +;align 4 +;@@: +popad + ret + +align 4 +; alloc mem get 4 Kb for own data +alloc_mem: + pushad + mov eax, dword [alloc_memory_point] + test eax,eax + jnz .mem_allocating + mov eax,68 + mov ebx,12 + mov ecx,4096 + mcall + mov dword [alloc_memory_point],eax ; при первом вхождении выделяем 4 кб ОЗУ и сохраняем указатель + mov dword [eax],-1 + popad + ret +align 4 +.mem_allocating: + mov ebp, dword [eax] + mov eax,ebp + cmp eax, -1 + jnz .mem_allocating + + mov eax,68 + mov ebx,12 + mov ecx,4096 + mcall + mov dword [ebp],eax ; при первом вхождении выделяем 4 кб ОЗУ и сохраняем указатель + mov dword [ebp],-1 + popad + ret + +align 16 +EXPORTS: + + dd sz_initialization_font, initialization_font + dd sz_get_font, get_font + dd sz_free_fulder_info, free_fulder_info + dd sz_free_font, free_font + dd sz_font_draw_on_string, font_draw_on_string + dd sz_show_all_glif, show_all_glif +; dd szVersion_ch, 0x00000001 +; dd sz_option_box_draw, option_box_draw +; dd sz_option_box_mouse, option_box_mouse + dd szVersion_fn, 0x00000001 + dd 0,0 + +sz_initialization_font db 'initialization_font',0 +sz_get_font db 'get_font',0 +sz_free_fulder_info db 'free_fulder_info',0 +sz_free_font db 'free_font',0 +sz_font_draw_on_string db 'font_draw_on_string',0 +sz_show_all_glif db 'show_all_glif',0 +;sz_check_box_mouse db 'check_box_mouse',0 +;szVersion_ch db 'version_ch',0 +;sz_option_box_draw db 'option_box_draw',0 +;sz_option_box_mouse db 'option_box_mouse',0 +szVersion_fn db 'version_fn',0 + +;;;;;;;;;;; +;;Data +;;;;;;;;;;; +align 4 +;buffer_font file 'font_8x16.fon' ;шрифт которым будем выводить raw формат 1bpp +save_ecx dd 0x0 +;buffer_font file 'font01.ksf' ;шрифт которым будем выводить raw формат 1bpp +alloc_memory_point dd 0x0 ; point to mem block in RAM 4096-4 +;структура такая в начале выделеного блока размещается указатель на другой выделлный блок в 4096-4, если это блок последний, то dd -1 +font_x_y dd 0x0 +fulder_array_point dd 0x0 +font_array_point dd 0x0 +font_array_data dd 0x0 ; реальные данные т.е. матрица шрифта +save_ebp dd 0x0 +save_point_nt dd 0x0 +name_fulder db '/sys/FONTS',0 +name_fuld_end= ($-name_fulder) -1 +name_font db '.ksf',0 +type_fnt db 'kf01' + + + +align 16 +struct_f_info: +number_function dd 0x0 +index_start_block dd 0x0 +flags_ dd 0x0 +read_block dd 0x0 +buffer_read_d dd buffer_32 +free_byte db 0x0 +offset_to_string dd name_fulder + +align 16 +file_buffer: +.type_fnt dd 0x0 +.font_size dd 0x0 + +align 16 +buffer_32: +.head dd ? +.quantity_block dd ? +.quantity_files dd ? + rb 20 diff --git a/programs/develop/libraries/fontslib/trunk/readme.txt b/programs/develop/libraries/fontslib/readme.txt similarity index 100% rename from programs/develop/libraries/fontslib/trunk/readme.txt rename to programs/develop/libraries/fontslib/readme.txt