Subversion Repositories Kolibri OS

Rev

Rev 6617 | Rev 6673 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. format MS COFF
  2. public EXPORTS
  3.  
  4. section '.flat' code readable align 16
  5.  
  6. include '../../../../proc32.inc'
  7. include '../../../../macros.inc'
  8. include '../../../../KOSfuncs.inc'
  9.  
  10. FASTEST equ 1
  11. GEN_TREES_H equ 0
  12. DEBUG equ 0
  13. DYNAMIC_CRC_TABLE equ 1
  14. Z_SOLO equ 0
  15.  
  16. ; define NO_GZIP when compiling if you want to disable gzip header and
  17. ; trailer creation by deflate().  NO_GZIP would be used to avoid linking in
  18. ; the crc code when it is not needed.  For shared libraries, gzip encoding
  19. ; should be left enabled.
  20. GZIP equ 1
  21.  
  22. macro zlib_debug fmt,p1
  23. {
  24. if DEBUG eq 1
  25.         zlib_assert fmt,p1
  26. end if
  27. }
  28.  
  29. macro zlib_assert fmt,p1
  30. {
  31.         local .end_t
  32.         local .m_fmt
  33.         jmp .end_t
  34.         .m_fmt db fmt,13,10,0
  35. align 4
  36.         .end_t:
  37. if p1 eq
  38.         stdcall dbg_print,0,.m_fmt
  39. else
  40.         stdcall str_format_dbg, buf_param,.m_fmt,p1
  41. end if
  42. }
  43.  
  44. include 'zlib.inc'
  45. include 'deflate.inc'
  46. include 'zutil.asm'
  47. include '../kfar_arc/crc.inc'
  48. include 'crc32.asm'
  49. include 'adler32.asm'
  50. include 'trees.asm'
  51. include 'deflate.asm'
  52.  
  53. align 4
  54. buf_param rb 80
  55.  
  56. align 4
  57. proc dbg_print, fun:dword, mes:dword
  58. pushad
  59.         mov eax,SF_BOARD
  60.         mov ebx,SSF_DEBUG_WRITE
  61.  
  62.         mov esi,[fun]
  63.         cmp esi,0
  64.         je .end0
  65.         @@:
  66.                 mov cl,byte[esi]
  67.                 int 0x40
  68.                 inc esi
  69.                 cmp byte[esi],0
  70.                 jne @b
  71.         mov cl,':'
  72.         int 0x40
  73.         mov cl,' '
  74.         int 0x40
  75.         .end0:
  76.         mov esi,[mes]
  77.         cmp esi,0
  78.         je .end_f
  79.         @@:
  80.                 mov cl,byte[esi]
  81.                 cmp cl,0
  82.                 je .end_f
  83.                 int 0x40
  84.                 inc esi
  85.                 jmp @b
  86.         .end_f:
  87. popad
  88.         ret
  89. endp
  90.  
  91. align 4
  92. proc str_format_dbg, buf:dword, fmt:dword, p1:dword
  93. pushad
  94.         mov esi,[fmt]
  95.         mov edi,[buf]
  96.         mov ecx,80-1
  97.         .cycle0:
  98.                 lodsb
  99.                 cmp al,'%'
  100.                 jne .no_param
  101.                         lodsb
  102.                         dec ecx
  103.                         cmp al,0
  104.                         je .cycle0end
  105.                         cmp al,'d'
  106.                         je @f
  107.                         cmp al,'u'
  108.                         je @f
  109.                         cmp al,'l'
  110.                         je .end1
  111.                                 jmp .end0
  112.                         .end1: ;%lu %lx
  113.                                 lodsb
  114.                                 dec ecx
  115.                                 cmp al,'u'
  116.                                 jne .end0
  117.                         @@:
  118.                                 mov eax,[p1]
  119.                                 stdcall convert_int_to_str,ecx
  120.                                 xor al,al
  121.                                 repne scasb
  122.                                 dec edi
  123.                         .end0:
  124.                         loop .cycle0
  125.                 .no_param:
  126.                 stosb
  127.                 cmp al,0
  128.                 je .cycle0end
  129.                 loop .cycle0
  130.         .cycle0end:
  131.         xor al,al
  132.         stosb
  133.         stdcall dbg_print,0,[buf]
  134. popad
  135.         ret
  136. endp
  137.  
  138. ;input:
  139. ; eax - число
  140. ; edi - буфер для строки
  141. ; len - длинна буфера
  142. ;output:
  143. align 4
  144. proc convert_int_to_str, len:dword
  145. pushad
  146.         mov esi,[len]
  147.         add esi,edi
  148.         dec esi
  149.         call .str
  150. popad
  151.         ret
  152. endp
  153.  
  154. align 4
  155. .str:
  156.         mov ecx,0x0a
  157.         cmp eax,ecx
  158.         jb @f
  159.                 xor edx,edx
  160.                 div ecx
  161.                 push edx
  162.                 call .str
  163.                 pop eax
  164.         @@:
  165.         cmp edi,esi
  166.         jge @f
  167.                 or al,0x30
  168.                 stosb
  169.                 mov byte[edi],0
  170.         @@:
  171.         ret
  172.  
  173. ; export table
  174. align 4
  175. EXPORTS:
  176.         dd      adeflateInit,   deflateInit
  177.         dd      adeflateInit2,  deflateInit2
  178.         dd      adeflateReset,  deflateReset
  179.         dd      adeflate,       deflate
  180.         dd      adeflateEnd,    deflateEnd
  181.         dd      adeflateCopy,   deflateCopy
  182.         dd      azError,        zError
  183.         dd      acalc_crc32,    calc_crc32
  184.         dd      0
  185.  
  186. ; exported names
  187. adeflateInit    db      'deflateInit',0
  188. adeflateInit2   db      'deflateInit2',0
  189. adeflateReset   db      'deflateReset',0
  190. adeflate        db      'deflate',0
  191. adeflateEnd     db      'deflateEnd',0
  192. adeflateCopy    db      'deflateCopy',0
  193. azError db      'zError',0
  194. acalc_crc32     db      'calc_crc32',0
  195.