Rev 1309 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1309 | Rev 1328 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 8.12.2009 IgorA |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 23.12.2009 IgorA |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
Line 5... | Line 5... | ||
5 | 5 | ||
6 | 6 | ||
Line 2213... | Line 2213... | ||
2213 | mov esi,dword[ebp+12] |
2213 | mov esi,dword[ebp+12] |
2214 | mov edi,dword[ebp+20] |
2214 | mov edi,dword[ebp+20] |
Line 2215... | Line 2215... | ||
2215 | 2215 | ||
2216 | cmp dword[ebp+16],0 ;add mode |
2216 | cmp dword[ebp+16],0 ;add mode |
2217 | je @f |
2217 | je @f |
2218 | .beg_cycle: |
- | |
2219 | cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
2218 | push dword edi |
- | 2219 | push dword esi |
|
2220 | jne @f |
2220 | call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
2221 | xor ebx,ebx |
- | |
2222 | mov bx,word[esi+4] |
- | |
2223 | imul ebx,dword[esi+6] |
- | |
2224 | add ebx,tl_save_load_heder_size |
2221 | pop ebx |
2225 | add esi,ebx |
- | |
2226 | jmp .beg_cycle |
2222 | add esi,ebx |
Line 2227... | Line 2223... | ||
2227 | @@: |
2223 | @@: |
2228 | 2224 | ||
Line 2326... | Line 2322... | ||
2326 | 2322 | ||
2327 | xor ecx,ecx |
2323 | xor ecx,ecx |
2328 | mov cx,word[ebp+16] |
2324 | mov cx,word[ebp+16] |
2329 | cmp cx,0 ;load in array mode |
2325 | cmp cx,0 ;load in array mode |
- | 2326 | je @f |
|
- | 2327 | ; push dword edi |
|
- | 2328 | ; push dword esi |
|
- | 2329 | ; call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
|
- | 2330 | ; pop ebx |
|
2330 | je @f |
2331 | ; add esi,ebx |
2331 | .beg_cycle: |
2332 | .beg_cycle: |
2332 | cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
2333 | cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
2333 | jne .no_tree |
2334 | jne .no_tree |
2334 | xor ebx,ebx |
2335 | xor ebx,ebx |
- | 2336 | mov bx,word[esi+4] |
|
2335 | mov bx,word[esi+4] |
2337 | add bx,8 |
2336 | imul ebx,dword[esi+6] |
2338 | imul ebx,dword[esi+6] |
2337 | add ebx,tl_save_load_heder_size |
2339 | add ebx,tl_save_load_heder_size |
2338 | add esi,ebx |
2340 | add esi,ebx |
2339 | loop .beg_cycle |
2341 | loop .beg_cycle |
Line 2393... | Line 2395... | ||
2393 | .end_f: |
2395 | .end_f: |
2394 | pop esi edi edx ecx ebx eax |
2396 | pop esi edi edx ecx ebx eax |
2395 | pop ebp |
2397 | pop ebp |
2396 | ret 12 |
2398 | ret 12 |
Line -... | Line 2399... | ||
- | 2399 | ||
- | 2400 | ;input: |
|
- | 2401 | ;dword[ebp+ 8] - pointer to memory |
|
- | 2402 | ;dword[ebp+12] - pointer to 'TreeList' struct |
|
- | 2403 | ;output: |
|
- | 2404 | ;dword[ebp+ 8] - error code |
|
- | 2405 | align 4 |
|
- | 2406 | tl_get_mem_size: ;áåðåò ðàçìåð ïàìÿòè çàíÿòîé ôóíêöèåé tl_save_mem ïðè ñîõðàíåíèè ýëåìåíòîâ |
|
- | 2407 | push ebp |
|
- | 2408 | mov ebp,esp |
|
- | 2409 | push ebx edi esi |
|
- | 2410 | mov esi,dword[ebp+ 8] |
|
- | 2411 | mov edi,dword[ebp+12] |
|
- | 2412 | @@: |
|
- | 2413 | cmp dword[esi],0x65657274 ;0x65657274 = 'tree' |
|
- | 2414 | jne @f |
|
- | 2415 | xor ebx,ebx |
|
- | 2416 | mov bx,word[esi+4] |
|
- | 2417 | add bx,8 ;ðàçìåð äîïîëíèòåëüíîé èíôîðìàöèè îá óçëå (èíäåêñ çàïèñè; èíäåêñ èêîíêè, óðîâåíü, ...) |
|
- | 2418 | imul ebx,dword[esi+6] |
|
- | 2419 | add ebx,tl_save_load_heder_size |
|
- | 2420 | add esi,ebx |
|
- | 2421 | jmp @b |
|
- | 2422 | @@: |
|
- | 2423 | sub esi,dword[ebp+ 8] |
|
- | 2424 | mov dword[ebp+12],esi ;âîçâðàùàåì ðàçìåð áëîêà ïàìÿòè |
|
- | 2425 | pop esi edi edx |
|
- | 2426 | pop ebp |
|
- | 2427 | ret 4 |
|
- | 2428 | ||
2397 | 2429 | ||
2398 | ;ascii scan key |
2430 | ;ascii scan key |
2399 | ; 13 28 Enter |
2431 | ; 13 28 Enter |
2400 | ; 32 57 Space |
2432 | ; 32 57 Space |
2401 | ; 178 72 Up |
2433 | ; 178 72 Up |