1,6 → 1,6 |
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
; ýëåìåíò TreeList äëÿ Kolibri OS |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 8.12.2009 IgorA |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 23.12.2009 IgorA |
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
|
|
2215,15 → 2215,11 |
|
cmp dword[ebp+16],0 ;add mode |
je @f |
.beg_cycle: |
cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
jne @f |
xor ebx,ebx |
mov bx,word[esi+4] |
imul ebx,dword[esi+6] |
add ebx,tl_save_load_heder_size |
push dword edi |
push dword esi |
call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
pop ebx |
add esi,ebx |
jmp .beg_cycle |
@@: |
|
xor ebx,ebx |
2328,11 → 2324,17 |
mov cx,word[ebp+16] |
cmp cx,0 ;load in array mode |
je @f |
; push dword edi |
; push dword esi |
; call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
; pop ebx |
; add esi,ebx |
.beg_cycle: |
cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
jne .no_tree |
xor ebx,ebx |
mov bx,word[esi+4] |
add bx,8 |
imul ebx,dword[esi+6] |
add ebx,tl_save_load_heder_size |
add esi,ebx |
2395,6 → 2397,36 |
pop ebp |
ret 12 |
|
;input: |
;dword[ebp+ 8] - pointer to memory |
;dword[ebp+12] - pointer to 'TreeList' struct |
;output: |
;dword[ebp+ 8] - error code |
align 4 |
tl_get_mem_size: ;áåðåò ðàçìåð ïàìÿòè çàíÿòîé ôóíêöèåé tl_save_mem ïðè ñîõðàíåíèè ýëåìåíòîâ |
push ebp |
mov ebp,esp |
push ebx edi esi |
mov esi,dword[ebp+ 8] |
mov edi,dword[ebp+12] |
@@: |
cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
jne @f |
xor ebx,ebx |
mov bx,word[esi+4] |
add bx,8 ;ðàçìåð äîïîëíèòåëüíîé èíôîðìàöèè îá óçëå (èíäåêñ çàïèñè; èíäåêñ èêîíêè, óðîâåíü, ...) |
imul ebx,dword[esi+6] |
add ebx,tl_save_load_heder_size |
add esi,ebx |
jmp @b |
@@: |
sub esi,dword[ebp+ 8] |
mov dword[ebp+12],esi ;âîçâðàùàåì ðàçìåð áëîêà ïàìÿòè |
pop esi edi edx |
pop ebp |
ret 4 |
|
|
;ascii scan key |
; 13 28 Enter |
; 32 57 Space |