develop/libraries/fontslib: Post-SVN tidy

- Move source code from `trunk` into program root directory.
- Update ASM include paths.
- Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden.
This commit is contained in:
2025-05-25 14:29:58 +01:00
parent e0e82faa87
commit efcc0e85f1
7 changed files with 451 additions and 445 deletions

View File

@@ -42,10 +42,10 @@ use32 ;
dd mem ; à á¯®«®¦¨¬ ¯®§¨æ¨î á⥪  ¢ ®¡« á⨠¯ ¬ïâ¨, áà §ã §  ⥫®¬ ¯à®£à ¬¬ë. ‚¥à設  á⥪  ¢ ¤¨ ¯ §®­¥ ¯ ¬ïâ¨, 㪠§ ­­®¬ ¢ëè¥ dd mem ; à á¯®«®¦¨¬ ¯®§¨æ¨î á⥪  ¢ ®¡« á⨠¯ ¬ïâ¨, áà §ã §  ⥫®¬ ¯à®£à ¬¬ë. ‚¥à設  á⥪  ¢ ¤¨ ¯ §®­¥ ¯ ¬ïâ¨, 㪠§ ­­®¬ ¢ëè¥
dd 0x0 ; 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨. dd 0x0 ; 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨.
dd way_of_ini dd way_of_ini
include '../../../../macros.inc' include '../../../macros.inc'
include '../../../../KOSfuncs.inc' include '../../../KOSfuncs.inc'
include '../../../../load_lib.mac' include '../../../load_lib.mac'
include '../../box_lib/box_lib.mac' include '../box_lib/box_lib.mac'
@use_library ;use load lib macros @use_library ;use load lib macros
start: start:
;universal load library/librarys ;universal load library/librarys

View File

@@ -1,441 +1,447 @@
; Copyright (c) 2009, <Lrz> ; SPDX-License-Identifier: NOASSERTION
; All rights reserved. ;
;
; Redistribution and use in source and binary forms, with or without ; Text encoded with Code Page Windows 1251 - Cyrillic
; 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. ; Copyright (c) 2009, <Lrz>
; * Redistributions in binary form must reproduce the above copyright ; All rights reserved.
; notice, this list of conditions and the following disclaimer in the ;
; documentation and/or other materials provided with the distribution. ; Redistribution and use in source and binary forms, with or without
; * Neither the name of the <organization> nor the ; modification, are permitted provided that the following conditions are met:
; names of its contributors may be used to endorse or promote products ; * Redistributions of source code must retain the above copyright
; derived from this software without specific prior written permission. ; notice, this list of conditions and the following disclaimer.
; ; * Redistributions in binary form must reproduce the above copyright
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname <Lrz> ''AS IS'' AND ANY ; notice, this list of conditions and the following disclaimer in the
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ; documentation and/or other materials provided with the distribution.
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ; * Neither the name of the <organization> nor the
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY ; names of its contributors may be used to endorse or promote products
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ; derived from this software without specific prior written permission.
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ;
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname <Lrz> ''AS IS'' AND ANY
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ; DISCLAIMED. IN NO EVENT SHALL <copyright holder> 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
format MS COFF ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
public EXPORTS ;*****************************************************************************
section '.flat' code readable align 16 ;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Get info about format MS COFF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
include '../../../../macros.inc' public EXPORTS
align 4
initialization_font: section '.flat' code readable align 16
; esp+0 = dd back ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; çàïîëíÿåì ìàññèâ - ñòðóêòó äëÿ ïîëó÷åíèÿ êîë-âà ôàéëîâ ;Get info about
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
pushad include '../../../macros.inc'
xor eax,eax align 4
inc eax initialization_font:
mov [number_function],eax ; esp+0 = dd back
;structure is completed ; çàïîëíÿåì ìàññèâ - ñòðóêòó äëÿ ïîëó÷åíèÿ êîë-âà ôàéëîâ
mov eax,70
mov ebx,dword struct_f_info pushad
mcall xor eax,eax
;IF ERROR FT then exit inc eax
test eax,eax mov [number_function],eax
jnz .exit ;structure is completed
;IF ERROR folder is not found then exit mov eax,70
test ebx,ebx mov ebx,dword struct_f_info
mov eax,ebx mcall
jnz .exit ;IF ERROR FT then exit
test eax,eax
;Get quantity files jnz .exit
mov eax,[buffer_32.quantity_files] ;IF ERROR folder is not found then exit
imul eax,304 test ebx,ebx
add eax,32 ; ?? mov eax,ebx
push eax ;save eax â eax ðàçìåð íóæíîé íàì ïàìÿòè â áàéòàõ jnz .exit
;init memory
mov eax,68 ;Get quantity files
mov ebx,11 mov eax,[buffer_32.quantity_files]
mcall imul eax,304
test eax,eax add eax,32 ; ??
jz .exit push eax ;save eax â eax ðàçìåð íóæíîé íàì ïàìÿòè â áàéòàõ
inc ebx ;âûäåëèòü áëîê â ecx áàéò ;init memory
mov eax,68
pop ecx mov ebx,11
mov eax,68 mcall
mcall test eax,eax
mov dword [fulder_array_point],eax ;save point for memory's fulder jz .exit
;â eax óêàçàòåëü íà áëîê inc ebx ;âûäåëèòü áëîê â ecx áàéò
mov [buffer_read_d],eax ;point to new array
mov eax,[buffer_32.quantity_files] pop ecx
mov [read_block],eax mov eax,68
;get in buffer info of files and sub dir current dir mcall
mov eax,70 mov dword [fulder_array_point],eax ;save point for memory's fulder
mov ebx,dword struct_f_info ;â eax óêàçàòåëü íà áëîê
mcall mov [buffer_read_d],eax ;point to new array
;ïîëó÷èëè èíôîðìàöèþ î ôàéëàõ. mov eax,[buffer_32.quantity_files]
mov ebp, dword [buffer_read_d] ;point to structure mov [read_block],eax
mov ecx, dword [ebp+4] ;êîë-âî áëîêîâ ÁÄÂÊ ;get in buffer info of files and sub dir current dir
mov dword [save_ecx],ecx mov eax,70
add ebp, 32 ;ñìåùàåìñÿ äî ÁÄÂÊ mov ebx,dword struct_f_info
mov dword [save_ebp],ebp mcall
cld ;óñòàíîâêà ôëàãà íàïðàâëåíèÿ ;ïîëó÷èëè èíôîðìàöèþ î ôàéëàõ.
align 4 mov ebp, dword [buffer_read_d] ;point to structure
.start_loop: mov ecx, dword [ebp+4] ;êîë-âî áëîêîâ ÁÄÂÊ
push ecx mov dword [save_ecx],ecx
lea edi,[ebp+0x28] ;â edi óêàçàòåëü íà íà÷àëî èìåíè. add ebp, 32 ;ñìåùàåìñÿ äî ÁÄÂÊ
xor eax,eax mov dword [save_ebp],ebp
mov ecx,263 cld ;óñòàíîâêà ôëàãà íàïðàâëåíèÿ
repne scasb ;íàéäåì êîíåö ñòðîêè align 4
;;;;;;;;;;;;;;;;;;;;;;; .start_loop:
sub edi,5 ;.ksf,0 push ecx
lea esi,[name_font] lea edi,[ebp+0x28] ;â edi óêàçàòåëü íà íà÷àëî èìåíè.
mov eax,dword[edi] xor eax,eax
or eax,0x20202000 ; ñäåëàåì ðàñøèðåíèå ñòðî÷íûìè áóêâàìè. mov ecx,263
cmp eax,dword[esi] repne scasb ;íàéäåì êîíåö ñòðîêè
jnz @f ;;;;;;;;;;;;;;;;;;;;;;;
sub edi,5 ;.ksf,0
;;;;;;;; óðà ýòî íàø ôàéë ò.å. íàø øðèôò ìû íàøëè íóæíûé ôàéëèê )) lea esi,[name_font]
;òåïåðü íóæíî òî÷íî óáåäèòüñÿ ÷òî ýòî íàø è òîëüêî íàø ôàéëèê mov eax,dword[edi]
;çàãðóçèì çàãîëîâîê ôàéëà è óçíàåì åãî ðàçìåð ãëèôà. or eax,0x20202000 ; ñäåëàåì ðàñøèðåíèå ñòðî÷íûìè áóêâàìè.
cmp eax,dword[esi]
call alloc_mem ; âûäåëèì îçó ñâîèõ ïåðåìåííûõ jnz @f
; ñåé÷àñ íàì íóæíî ñôîðìèðîâàòü èìÿ ôàéëà ñ ïîëíûì ïóòåì
mov eax,dword [alloc_memory_point] ;;;;;;;; óðà ýòî íàø ôàéë ò.å. íàø øðèôò ìû íàøëè íóæíûé ôàéëèê ))
lea edi,dword [eax+4] ;òåïåðü íóæíî òî÷íî óáåäèòüñÿ ÷òî ýòî íàø è òîëüêî íàø ôàéëèê
lea esi,[name_fulder] ;çàãðóçèì çàãîëîâîê ôàéëà è óçíàåì åãî ðàçìåð ãëèôà.
mov ecx,name_fuld_end
rep movsb ;ïåðåíîñèì ïóòü call alloc_mem ; âûäåëèì îçó ñâîèõ ïåðåìåííûõ
mov al,'/' ; ñåé÷àñ íàì íóæíî ñôîðìèðîâàòü èìÿ ôàéëà ñ ïîëíûì ïóòåì
stosb mov eax,dword [alloc_memory_point]
lea esi,[ebp+0x28] ;â esi óêàçàòåëü íà íà÷àëî èìåíè. lea edi,dword [eax+4]
align 4 lea esi,[name_fulder]
.loop_b: mov ecx,name_fuld_end
lodsb rep movsb ;ïåðåíîñèì ïóòü
stosb mov al,'/'
test al,al stosb
jnz .loop_b lea esi,[ebp+0x28] ;â esi óêàçàòåëü íà íà÷àëî èìåíè.
align 4
; mov edi,name_of_file ; [ebp+0x28] ;â edi óêàçàòåëü íà íà÷àëî èìåíè. .loop_b:
;get in buffer info above own file lodsb
xor eax,eax stosb
mov dword [number_function],eax test al,al
mov dword [index_start_block],eax ;ïîçèöèÿ â ôàéëå äëÿ ÷òåíèÿ äàííûõ jnz .loop_b
mov dword [flags_],eax ;ñòàðøàÿ ïîçèöèÿ äëÿ ÷òåíèÿ äàííûõ
mov dword [read_block],8 ;ñêîëüêî áàéò ÷èòàòü íàì íóæíî 8 áàéò ; mov edi,name_of_file ; [ebp+0x28] ;â edi óêàçàòåëü íà íà÷àëî èìåíè.
mov dword [buffer_read_d],file_buffer ; óêàçàòåëü íà áóôåð êóäà áóäóò çàïèñàíû äàííûå ;get in buffer info above own file
xor eax,eax
mov eax,dword [alloc_memory_point] mov dword [number_function],eax
lea edi,dword [eax+4] mov dword [index_start_block],eax ;ïîçèöèÿ â ôàéëå äëÿ ÷òåíèÿ äàííûõ
mov dword [offset_to_string],edi mov dword [flags_],eax ;ñòàðøàÿ ïîçèöèÿ äëÿ ÷òåíèÿ äàííûõ
mov dword [read_block],8 ;ñêîëüêî áàéò ÷èòàòü íàì íóæíî 8 áàéò
mov eax,70 mov dword [buffer_read_d],file_buffer ; óêàçàòåëü íà áóôåð êóäà áóäóò çàïèñàíû äàííûå
mov ebx,dword struct_f_info
mcall mov eax,dword [alloc_memory_point]
;;;;;;;;;;;;;;;; ïðîâåðèì ôîðìàò çàãîëîâêà lea edi,dword [eax+4]
mov eax,ebx mov dword [offset_to_string],edi
mov eax,dword [file_buffer]
mov ebx,dword [type_fnt] mov eax,70
cmp eax,ebx mov ebx,dword struct_f_info
jnz @f mcall
;;;;;;;;;;;;;;;; ïðîâåðèì ôîðìàò çàãîëîâêà
;;;;;;; îòëè÷íî ñåé÷àñ ïðîâåðèëè ÷òî çàãîëîâîê èìåííî òîò êîòîðûé íàì íóæåí mov eax,ebx
; ñåé÷àñ íóæíî ïåðåðàñïðåäåëèòü áëîêè ò.å. ïî ìåðå íàõîæäåíèÿ áóäåì ïåðåíîñèòü áëîêè mov eax,dword [file_buffer]
; â íà÷àëî áóôåðà mov ebx,dword [type_fnt]
cmp eax,ebx
mov dword [save_point_nt],ebp jnz @f
pop ecx
xor eax,eax ;;;;;;; îòëè÷íî ñåé÷àñ ïðîâåðèëè ÷òî çàãîëîâîê èìåííî òîò êîòîðûé íàì íóæåí
jmp .exit ; ñåé÷àñ íóæíî ïåðåðàñïðåäåëèòü áëîêè ò.å. ïî ìåðå íàõîæäåíèÿ áóäåì ïåðåíîñèòü áëîêè
; â íà÷àëî áóôåðà
align 4
@@: pop ecx mov dword [save_point_nt],ebp
add ebp,304 pop ecx
dec ecx xor eax,eax
jnz .start_loop jmp .exit
; loop .start_loop
or eax,-1 align 4
;;;;;;;; ïðîøëèñü - âñå èíòåðåñóùþùèå øðèôòû ïåðåìåñòèëè â íà÷àëî áëîêà. @@: pop ecx
add ebp,304
align 4 dec ecx
.exit: mov dword [esp+28],eax jnz .start_loop
popad ; loop .start_loop
ret or eax,-1
;;;;;;;; ïðîøëèñü - âñå èíòåðåñóùþùèå øðèôòû ïåðåìåñòèëè â íà÷àëî áëîêà.
align 4 align 4
get_font: .exit: mov dword [esp+28],eax
; ïîèñê â ìàññèâå øðèôòà ïðè ñîâïàäåíèè ócëîâèé çàãðóçêà øðèôòà popad
; esp+4 = dd width font shl 16 +hight font ret
; esp+0 = dd back
;pop eax
; pop dword [font_x_y] align 4
;push eax get_font:
pushad ; ïîèñê â ìàññèâå øðèôòà ïðè ñîâïàäåíèè ócëîâèé çàãðóçêà øðèôòà
mov eax,dword [esp+32+4] ; esp+4 = dd width font shl 16 +hight font
mov dword [font_x_y],eax ; esp+0 = dd back
xor eax,eax ;pop eax
mov dword [number_function],eax ; pop dword [font_x_y]
mov dword [index_start_block],eax ;ïîçèöèÿ â ôàéëå äëÿ ÷òåíèÿ äàííûõ ;push eax
mov dword [flags_],eax ;ñòàðøàÿ ïîçèöèÿ äëÿ ÷òåíèÿ äàííûõ pushad
mov dword [read_block],8 ;ñêîëüêî áàéò ÷èòàòü íàì íóæíî 8 áàéò mov eax,dword [esp+32+4]
mov dword [buffer_read_d],file_buffer ; óêàçàòåëü íà áóôåð êóäà áóäóò çàïèñàíû äàííûå mov dword [font_x_y],eax
xor eax,eax
mov eax,dword [alloc_memory_point] mov dword [number_function],eax
lea edi,dword [eax+4] mov dword [index_start_block],eax ;ïîçèöèÿ â ôàéëå äëÿ ÷òåíèÿ äàííûõ
mov dword [offset_to_string],edi mov dword [flags_],eax ;ñòàðøàÿ ïîçèöèÿ äëÿ ÷òåíèÿ äàííûõ
mov dword [read_block],8 ;ñêîëüêî áàéò ÷èòàòü íàì íóæíî 8 áàéò
mov dword [buffer_read_d],file_buffer ; óêàçàòåëü íà áóôåð êóäà áóäóò çàïèñàíû äàííûå
mov eax,70
mov ebx,dword struct_f_info mov eax,dword [alloc_memory_point]
mcall lea edi,dword [eax+4]
;;;;;;;;;;;;;;;; ïðîâåðèì ôîðìàò çàãîëîâêà mov dword [offset_to_string],edi
mov eax,ebx
mov eax,dword [file_buffer]
mov ebx,dword [type_fnt] mov eax,70
cmp eax,ebx mov ebx,dword struct_f_info
mcall
mov ecx,dword [file_buffer.font_size] ;;;;;;;;;;;;;;;; ïðîâåðèì ôîðìàò çàãîëîâêà
mov edx,dword [font_x_y] mov eax,ebx
cmp ecx,edx mov eax,dword [file_buffer]
mov ebx,dword [type_fnt]
mov ecx, 4096;dword [ebp+32] ;ðàçìåð ôàéëà äî 4294967296 áàéò ò.å. 4 Ãá cmp eax,ebx
mov dword [read_block],ecx mov ecx,dword [file_buffer.font_size]
mov eax,68 mov edx,dword [font_x_y]
mov ebx,12 cmp ecx,edx
mcall
mov ecx, 4096;dword [ebp+32] ;ðàçìåð ôàéëà äî 4294967296 áàéò ò.å. 4 Ãá
mov dword [font_array_point],eax ;save point to array
mov dword [buffer_read_d],eax mov dword [read_block],ecx
mov eax,68
;load font mov ebx,12
mov ebx,dword struct_f_info mcall
mov eax,70
mcall mov dword [font_array_point],eax ;save point to array
test eax,eax mov dword [buffer_read_d],eax
jnz .exit
;load font
lea eax,[buffer_read_d] mov ebx,dword struct_f_info
mov eax,dword [eax] mov eax,70
mov ebx,dword [eax+8] mcall
add eax,ebx test eax,eax
; add eax,dword [eax+8] jnz .exit
; add eax,dword [buffer_read_d]
mov dword [font_array_data],eax lea eax,[buffer_read_d]
xor eax,eax mov eax,dword [eax]
jmp .ok mov ebx,dword [eax+8]
add eax,ebx
;here error file system ; add eax,dword [eax+8]
align 4 ; add eax,dword [buffer_read_d]
.exit: mov dword [font_array_data],eax
or eax,-1 xor eax,eax
align 4 jmp .ok
.ok: mov dword [esp+28],eax ;âåðíåì îøèáêó
popad ;here error file system
ret 4 align 4
.exit:
or eax,-1
; ïîèñê âûâîä ñòîðî÷êè ïî ñèìâîëüíî ñôîðèðîâàííîãî øðèôòîì òåêñòà align 4
; esp+12= dd x shl 16 + y x- êîîðäèíàòà ïî Õ, y - êîîðäèíàòà ïî Y .ok: mov dword [esp+28],eax ;âåðíåì îøèáêó
; esp+8 = dd point to color of background and font popad
; esp+4 = dd point to ASCIIZ ret 4
; esp+0 = dd back
align 4
font_draw_on_string: ; ïîèñê âûâîä ñòîðî÷êè ïî ñèìâîëüíî ñôîðèðîâàííîãî øðèôòîì òåêñòà
pushad ; esp+12= dd x shl 16 + y x- êîîðäèíàòà ïî Õ, y - êîîðäèíàòà ïî Y
; esp+8 = dd point to color of background and font
mov esi,dword [esp+4+32] ;ASCIIZ ; esp+4 = dd point to ASCIIZ
mov edx,dword [esp+12+32] ; x shl 16 +y ; esp+0 = dd back
mov ecx,dword [font_x_y] ;ðàçìåð ãëèôà x shl 16 +y align 4
mov edi,dword [esp+8+32] ;óêàçàòåëü íà ïàëèòðó èç öâåòà è ôîíà font_draw_on_string:
xor ebp,ebp ;ñì 65 ôóíêöèþ )) pushad
cld
align 4 mov esi,dword [esp+4+32] ;ASCIIZ
@@: ;pushad mov edx,dword [esp+12+32] ; x shl 16 +y
xor eax,eax mov ecx,dword [font_x_y] ;ðàçìåð ãëèôà x shl 16 +y
lodsb mov edi,dword [esp+8+32] ;óêàçàòåëü íà ïàëèòðó èç öâåòà è ôîíà
test al,al xor ebp,ebp ;ñì 65 ôóíêöèþ ))
jz .return cld
shl eax,4 ;óìíîæàåì íà 16 ò.ê. ýòî âûñîòà ãëèôà align 4
@@: ;pushad
mov ebx,dword [font_array_data] ; òóò ðàñïîëîãàþòñÿ ãëèôû ñèìâîëîâ xor eax,eax
add ebx,eax lodsb
push esi test al,al
mov esi,1 jz .return
mov eax,65 shl eax,4 ;óìíîæàåì íà 16 ò.ê. ýòî âûñîòà ãëèôà
mcall
pop esi mov ebx,dword [font_array_data] ; òóò ðàñïîëîãàþòñÿ ãëèôû ñèìâîëîâ
add edx,8 shl 16 ;ñëåäóþùèé ñèìâîë øèðèíà ñèìâîëà = 8 òî÷êàì add ebx,eax
jmp @b push esi
mov esi,1
align 4 mov eax,65
.return: mcall
popad pop esi
ret 12 add edx,8 shl 16 ;ñëåäóþùèé ñèìâîë øèðèíà ñèìâîëà = 8 òî÷êàì
jmp @b
align 4 align 4
; esp+4 = dd point to color of background and font .return:
show_all_glif: popad
pushad ret 12
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 align 4
mov edi,dword [esp+4+32] ;óêàçàòåëü íà ïàëèòðó èç öâåòà è ôîíà ; esp+4 = dd point to color of background and font
xor ebp,ebp ;ñì 65 ôóíêöèþ )) show_all_glif:
pushad
align 4
@@: mov edx,10 shl 16+20 ;dword [esp+12+32] ; x shl 16 +y
mov ebx,dword [font_array_data] ; òóò ðàñïîëîãàþòñÿ ãëèôû ñèìâîëîâ mov ecx,128 shl 16 +256;dword [font_x_y] ;ðàçìåð ãëèôà x shl 16 +y
mov esi,1 mov edi,dword [esp+4+32] ;óêàçàòåëü íà ïàëèòðó èç öâåòà è ôîíà
mov eax,65 xor ebp,ebp ;ñì 65 ôóíêöèþ ))
mcall
popad align 4
ret 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 align 4
mcall free_fulder_info:
test eax,eax ;îñâîáîäèòü ïàìÿòü âûäåëåíóþ äëÿ ïîëó÷åíèÿ áëîêîâ ÁÄÂÊ
; jnz @f pushad
mov dword [esp+28],eax ;âåðíåì îøèáêó mov ecx, dword [fulder_array_point]
;align 4 mov eax,68
;@@: mov ebx,13
popad mcall
ret test eax,eax
align 4 ; jnz @f
free_font: mov dword [esp+28],eax ;âåðíåì îøèáêó
;îñâîáîäèòü ïàìÿòü âûäåëåíóþ äëÿ ïîëó÷åíèÿ áëîêîâ ÁÄÂÊ ;align 4
pushad ;@@:
mov ecx, dword [font_array_point] popad
mov eax,68 ret
mov ebx,13 align 4
mcall free_font:
test eax,eax ;îñâîáîäèòü ïàìÿòü âûäåëåíóþ äëÿ ïîëó÷åíèÿ áëîêîâ ÁÄÂÊ
; jnz @f pushad
mov dword [esp+28],eax ;âåðíåì îøèáêó mov ecx, dword [font_array_point]
;align 4 mov eax,68
;@@: mov ebx,13
popad mcall
ret test eax,eax
; jnz @f
align 4 mov dword [esp+28],eax ;âåðíåì îøèáêó
; alloc mem get 4 Kb for own data ;align 4
alloc_mem: ;@@:
pushad popad
mov eax, dword [alloc_memory_point] ret
test eax,eax
jnz .mem_allocating align 4
mov eax,68 ; alloc mem get 4 Kb for own data
mov ebx,12 alloc_mem:
mov ecx,4096 pushad
mcall mov eax, dword [alloc_memory_point]
mov dword [alloc_memory_point],eax ; ïðè ïåðâîì âõîæäåíèè âûäåëÿåì 4 êá ÎÇÓ è ñîõðàíÿåì óêàçàòåëü test eax,eax
mov dword [eax],-1 jnz .mem_allocating
popad mov eax,68
ret mov ebx,12
align 4 mov ecx,4096
.mem_allocating: mcall
mov ebp, dword [eax] mov dword [alloc_memory_point],eax ; ïðè ïåðâîì âõîæäåíèè âûäåëÿåì 4 êá ÎÇÓ è ñîõðàíÿåì óêàçàòåëü
mov eax,ebp mov dword [eax],-1
cmp eax, -1 popad
jnz .mem_allocating ret
align 4
mov eax,68 .mem_allocating:
mov ebx,12 mov ebp, dword [eax]
mov ecx,4096 mov eax,ebp
mcall cmp eax, -1
mov dword [ebp],eax ; ïðè ïåðâîì âõîæäåíèè âûäåëÿåì 4 êá ÎÇÓ è ñîõðàíÿåì óêàçàòåëü jnz .mem_allocating
mov dword [ebp],-1
popad mov eax,68
ret mov ebx,12
mov ecx,4096
align 16 mcall
EXPORTS: mov dword [ebp],eax ; ïðè ïåðâîì âõîæäåíèè âûäåëÿåì 4 êá ÎÇÓ è ñîõðàíÿåì óêàçàòåëü
mov dword [ebp],-1
dd sz_initialization_font, initialization_font popad
dd sz_get_font, get_font ret
dd sz_free_fulder_info, free_fulder_info
dd sz_free_font, free_font align 16
dd sz_font_draw_on_string, font_draw_on_string EXPORTS:
dd sz_show_all_glif, show_all_glif
; dd szVersion_ch, 0x00000001 dd sz_initialization_font, initialization_font
; dd sz_option_box_draw, option_box_draw dd sz_get_font, get_font
; dd sz_option_box_mouse, option_box_mouse dd sz_free_fulder_info, free_fulder_info
dd szVersion_fn, 0x00000001 dd sz_free_font, free_font
dd 0,0 dd sz_font_draw_on_string, font_draw_on_string
dd sz_show_all_glif, show_all_glif
sz_initialization_font db 'initialization_font',0 ; dd szVersion_ch, 0x00000001
sz_get_font db 'get_font',0 ; dd sz_option_box_draw, option_box_draw
sz_free_fulder_info db 'free_fulder_info',0 ; dd sz_option_box_mouse, option_box_mouse
sz_free_font db 'free_font',0 dd szVersion_fn, 0x00000001
sz_font_draw_on_string db 'font_draw_on_string',0 dd 0,0
sz_show_all_glif db 'show_all_glif',0
;sz_check_box_mouse db 'check_box_mouse',0 sz_initialization_font db 'initialization_font',0
;szVersion_ch db 'version_ch',0 sz_get_font db 'get_font',0
;sz_option_box_draw db 'option_box_draw',0 sz_free_fulder_info db 'free_fulder_info',0
;sz_option_box_mouse db 'option_box_mouse',0 sz_free_font db 'free_font',0
szVersion_fn db 'version_fn',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
;;Data ;szVersion_ch db 'version_ch',0
;;;;;;;;;;; ;sz_option_box_draw db 'option_box_draw',0
align 4 ;sz_option_box_mouse db 'option_box_mouse',0
;buffer_font file 'font_8x16.fon' ;øðèôò êîòîðûì áóäåì âûâîäèòü raw ôîðìàò 1bpp szVersion_fn db 'version_fn',0
save_ecx dd 0x0
;buffer_font file 'font01.ksf' ;øðèôò êîòîðûì áóäåì âûâîäèòü raw ôîðìàò 1bpp ;;;;;;;;;;;
alloc_memory_point dd 0x0 ; point to mem block in RAM 4096-4 ;;Data
;ñòðóêòóðà òàêàÿ â íà÷àëå âûäåëåíîãî áëîêà ðàçìåùàåòñÿ óêàçàòåëü íà äðóãîé âûäåëëíûé áëîê â 4096-4, åñëè ýòî áëîê ïîñëåäíèé, òî dd -1 ;;;;;;;;;;;
font_x_y dd 0x0 align 4
fulder_array_point dd 0x0 ;buffer_font file 'font_8x16.fon' ;øðèôò êîòîðûì áóäåì âûâîäèòü raw ôîðìàò 1bpp
font_array_point dd 0x0 save_ecx dd 0x0
font_array_data dd 0x0 ; ðåàëüíûå äàííûå ò.å. ìàòðèöà øðèôòà ;buffer_font file 'font01.ksf' ;øðèôò êîòîðûì áóäåì âûâîäèòü raw ôîðìàò 1bpp
save_ebp dd 0x0 alloc_memory_point dd 0x0 ; point to mem block in RAM 4096-4
save_point_nt dd 0x0 ;ñòðóêòóðà òàêàÿ â íà÷àëå âûäåëåíîãî áëîêà ðàçìåùàåòñÿ óêàçàòåëü íà äðóãîé âûäåëëíûé áëîê â 4096-4, åñëè ýòî áëîê ïîñëåäíèé, òî dd -1
name_fulder db '/sys/FONTS',0 font_x_y dd 0x0
name_fuld_end= ($-name_fulder) -1 fulder_array_point dd 0x0
name_font db '.ksf',0 font_array_point dd 0x0
type_fnt db 'kf01' font_array_data dd 0x0 ; ðåàëüíûå äàííûå ò.å. ìàòðèöà øðèôòà
save_ebp dd 0x0
save_point_nt dd 0x0
name_fulder db '/sys/FONTS',0
align 16 name_fuld_end= ($-name_fulder) -1
struct_f_info: name_font db '.ksf',0
number_function dd 0x0 type_fnt db 'kf01'
index_start_block dd 0x0
flags_ dd 0x0
read_block dd 0x0
buffer_read_d dd buffer_32 align 16
free_byte db 0x0 struct_f_info:
offset_to_string dd name_fulder number_function dd 0x0
index_start_block dd 0x0
align 16 flags_ dd 0x0
file_buffer: read_block dd 0x0
.type_fnt dd 0x0 buffer_read_d dd buffer_32
.font_size dd 0x0 free_byte db 0x0
offset_to_string dd name_fulder
align 16
buffer_32: align 16
.head dd ? file_buffer:
.quantity_block dd ? .type_fnt dd 0x0
.quantity_files dd ? .font_size dd 0x0
rb 20
align 16
buffer_32:
.head dd ?
.quantity_block dd ?
.quantity_files dd ?
rb 20