Subversion Repositories Kolibri OS

Rev

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