Subversion Repositories Kolibri OS

Rev

Rev 6874 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. use32
  2. org 0
  3.         db 'MENUET01'
  4.         dd 1,START,I_END,MEM,STACKTOP,0,cur_dir_path
  5.  
  6. include '../../../../proc32.inc'
  7. include '../../../../macros.inc'
  8. include '../../../../KOSfuncs.inc'
  9. include '../../../../load_lib.mac'
  10.  
  11. include 'deflate.inc'
  12. include 'debug.inc'
  13. include 'zlib.inc'
  14.  
  15. @use_library
  16.  
  17. align 4
  18. m0size dd 90 ;à §¬¥à ¤ ­­ëå ¤«ï 㯠ª®¢ª¨
  19. m1size dd 1024 ;à §¬¥à ¡ãä¥à  ¤ ­­ëå ¤«ï 㯠ª®¢ª¨
  20. m2size dd 0 ;à §¬¥à à á¯ ª®¢ ­­ëå ¤ ­­ëå
  21.  
  22. align 4
  23. m0: ;¤ ­­ë¥ ¤«ï 㯠ª®¢ª¨
  24. file 'zlib.txt'
  25.  
  26. align 4
  27. m1 rb 1024 ;¡ãä¥à ¤«ï 㯠ª®¢ ­­ëå ¤ ­­ëå
  28. m2 dd 0 ;㪠§ â¥«ì ­  à á¯ ª®¢ ­­ë¥ ¤ ­­ë¥
  29.  
  30. buf rb 1024 ;¡ãä¥à ¤«ï ¢ë¢®¤  ᦠâëå ¤ ­­ëå ¢ ®ª­®
  31. strategy dd Z_DEFAULT_STRATEGY ;áâà â¥£¨ï ᦠâ¨ï
  32.  
  33. align 4
  34. START:
  35. load_libraries l_libs_start,load_lib_end
  36. mov     ebp,lib0
  37. .test_lib_open:
  38.         cmp     dword [ebp+ll_struc_size-4],0
  39.         jz      @f
  40.         mcall SF_TERMINATE_PROCESS ;exit not correct
  41. @@:
  42.         add ebp,ll_struc_size
  43.         cmp ebp,load_lib_end
  44.         jl .test_lib_open
  45.  
  46. ;       mcall SF_SYS_MISC, SSF_HEAP_INIT
  47.  
  48.         call test_code
  49.  
  50. align 4
  51. red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
  52.     call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
  53.  
  54. align 4
  55. still:
  56.     mcall SF_WAIT_EVENT
  57.     cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
  58.     je   red
  59.     cmp  eax,2          ; ­ ¦ â  ª« ¢¨è  ?
  60.     je   key
  61.     cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
  62.     je   button
  63.     jmp  still
  64.  
  65. align 4
  66. key:
  67.     mcall SF_GET_KEY
  68.  
  69.         cmp ah,178 ;Up
  70.         jne @f
  71.                 cmp dword[strategy],0
  72.                 jle @f
  73.                 dec dword[strategy]
  74.                 call test_code
  75.                 call draw_window
  76.         @@:
  77.         cmp ah,177 ;Down
  78.         jne @f
  79.                 cmp dword[strategy],4
  80.                 jge @f
  81.                 inc dword[strategy]
  82.                 call test_code
  83.                 call draw_window
  84.         @@:
  85.         cmp ah,176 ;Left
  86.         jne @f
  87.                 cmp dword[m0size],8
  88.                 jl @f
  89.                 dec dword[m0size]
  90.                 call test_code
  91.                 call draw_window
  92.         @@:
  93.         cmp ah,179 ;Right
  94.         jne @f
  95.                 inc dword[m0size]
  96.                 call test_code
  97.                 call draw_window
  98.         @@:
  99.     jmp  still          ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  100.  
  101. ;---------------------------------------------------------------------
  102. align 4
  103. button:
  104.         mcall SF_GET_BUTTON
  105.  
  106.         cmp ah,1
  107.         jne still
  108.  
  109. .exit: ; ª®­¥æ ¯à®£à ¬¬ë
  110.         mcall SF_SYS_MISC,SSF_MEM_FREE,[m2]
  111.     mcall SF_TERMINATE_PROCESS
  112.  
  113. align 4
  114. draw_window:
  115.     mcall SF_REDRAW, SSF_BEGIN_DRAW
  116.     mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc,sizeof.system_colors
  117.     mov   edx, [sc.work]         ; 梥â ä®­ 
  118.     or    edx, 0x33000000        ; ¨ ⨯ ®ª­  3
  119.     mcall SF_CREATE_WINDOW, <50,600>, <50,180>, , ,title
  120.  
  121.         cStr edx,'Strategy:'
  122.         mcall SF_DRAW_TEXT, <10,10>,0x40f0,,9
  123.         cStr edx,'Input size:'
  124.         mcall , <10,20>,,,11
  125.         cStr edx,'Compr. size:'
  126.         mcall , <10,30>,,,12
  127.         cStr edx,'Outp. size:'
  128.         mcall , <10,120>,,,11
  129.  
  130.         mov edx,[strategy]
  131.         imul edx,12
  132.         add edx,capt_strateg
  133.         mcall , <90,10>,0,,12
  134.  
  135.         mcall SF_DRAW_NUMBER, (5 shl 16)+1, m0size, <90,20>
  136.         mcall , (5 shl 16)+1, m1size, <90,30>
  137.         mcall , (5 shl 16)+1, m2size, <90,120>
  138.         ;mov ecx,(1 shl 31)
  139.         mov esi,[m2size]
  140.         cmp esi,95
  141.         jle @f
  142.                 mov esi,95
  143.         @@:
  144.         mcall SF_DRAW_TEXT, <10,130>, 0, [m2]
  145.  
  146.         mov esi,7
  147.         mov ebx,(10 shl 16)+45 ;(x shl 16)+y
  148.         mov edx,buf
  149.         .cycle1: ;rows
  150.                 mcall SF_DRAW_TEXT,, (1 shl 31)
  151.                 add ebx,10
  152.                 add edx,32*3
  153.         dec esi
  154.         jnz .cycle1
  155.  
  156.     mcall SF_REDRAW, SSF_END_DRAW
  157.     ret
  158.  
  159. align 4
  160. test_code:
  161.         stdcall [deflateInit2], my_strm,\
  162.                 -1, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, [strategy]
  163. ;‘âà â¥£¨ï:
  164. ; Z_DEFAULT_STRATEGY, Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED
  165.  
  166.         mov eax,my_strm
  167.         mov [eax+z_stream.next_in],m0 ;ãáâ ­ ¢«¨¢ ¥¬ ¯ ¬ïâì ¤«ï ᦠâ¨ï
  168.         mov ecx,[m0size]
  169.         mov [eax+z_stream.avail_in],ecx ;à §¬¥à ᦨ¬ ¥¬ë¦ ¤ ­­ëå
  170.         mov [eax+z_stream.next_out],m1 ;ãáâ ­ ¢«¨¢ ¥¬ ¡ãä¥à ¤«ï ᦠâ¨ï
  171.         mov dword[eax+z_stream.avail_out],1024 ;à §¬¥à ¡ãä¥à  ¤«ï ᦠâ¨ï (¬ ªá¨¬ã¬ 16 Š¡)
  172.  
  173.         stdcall [deflate], my_strm, Z_FINISH
  174.  
  175.         ;à §¬¥à ᦠâëå ¤ ­­ëå: 1024-[my_strm.avail_out]
  176.         mov ecx,1024
  177.         sub ecx,[my_strm.avail_out]
  178.         mov [m1size],ecx
  179.  
  180.         ;assert(ret != Z_STREAM_ERROR)
  181.         ;while (strm.avail_out == 0)
  182.  
  183.         ;ä®à¬¨à®¢ ­¨¥ ⥪áâ  ¤«ï ®â®¡à ¦¥­¨ï ᦠâëå ¤ ­­ëå
  184.         ;¢ 16-à¨ç­®¬ ¢¨¤¥, ­ã¦­® ⮫쪮 ¤«ï ¯à¨¬¥à 
  185.         mov ebx,[m1size]
  186.         mov esi,m1
  187.         mov edi,buf
  188.         mov edx,7
  189. align 4
  190.         .cycle1: ;rows
  191.         mov ecx,32
  192. align 4
  193.         .cycle0: ;cols
  194.                 stdcall hex_in_str, edi,[esi],2
  195.                 add edi,2
  196.                 inc esi
  197.                 mov byte[edi],' ' ;format space
  198.                 dec ebx
  199.                 jz .cycle1end ;if end file
  200.                 inc edi
  201.                 loop .cycle0
  202.         mov byte[edi-1],0
  203.         dec edx
  204.         jnz .cycle1
  205.         .cycle1end:
  206.         mov byte[edi],0
  207.  
  208.         ;㤠«¥­¨¥ ¡ãä¥à  á à ­¥¥ à á¯ ª®¢ ­­ë¬¨ ¤ ­­ë¬¨
  209.         mcall SF_SYS_MISC,SSF_MEM_FREE,[m2]
  210.        
  211.         mov eax,[m1size]
  212.         sub eax,2 ;;; 2? or 6?
  213.         mov [m2size],eax
  214.         mov eax,m1
  215.         add eax,2
  216.         stdcall [deflate_unpack],eax,m2size
  217.         mov [m2],eax ;§ ¯¨áì ­®¢ëå à á¯ ª®¢ ­­ëå ¤ ­­ëå
  218.         mov ecx,[m0size] ;;; ???
  219.         mov [m2size],ecx
  220.         ret
  221.  
  222. align 4
  223. proc print_z_struct uses eax ebx
  224.         mov eax,my_strm
  225.         mov ebx,[eax+z_stream.state]
  226.         stdcall debug_fields,eax,sv_2
  227.         stdcall debug_fields,ebx,sv_3
  228.         ret
  229. endp
  230.  
  231. align 4
  232. sc system_colors
  233. align 4
  234. title db 'Zlib test, press on [Up], [Down], [Left], [Right]',0
  235.  
  236. align 4
  237. capt_strateg db '0) Default ',0
  238. db '1) Filtered',0
  239. db '2) Huffman ',0
  240. db '3) Rle     ',0
  241. db '4) Fixed   ',0
  242.  
  243. align 4
  244. import_archiver:
  245.         deflate_unpack dd sz_deflate_unpack
  246.         deflateInit             dd sz_deflateInit
  247.         deflateInit2    dd sz_deflateInit2
  248.         deflateReset    dd sz_deflateReset
  249.         deflate                 dd sz_deflate
  250.         deflateEnd              dd sz_deflateEnd
  251.         calc_crc32              dd sz_calc_crc32
  252.         dd 0,0
  253.         sz_deflate_unpack db 'deflate_unpack',0
  254.         sz_deflateInit db 'deflateInit',0
  255.         sz_deflateInit2 db 'deflateInit2',0
  256.         sz_deflateReset db 'deflateReset',0
  257.         sz_deflate db 'deflate',0
  258.         sz_deflateEnd db 'deflateEnd',0
  259.         sz_calc_crc32 db 'calc_crc32',0
  260.  
  261. ;--------------------------------------------------
  262. system_dir_0 db '/sys/lib/'
  263. lib_name_0 db 'archiver.obj',0
  264.  
  265. l_libs_start:
  266.         lib0 l_libs lib_name_0, library_path, system_dir_0, import_archiver
  267. load_lib_end:
  268. ;---------------------------------------------------------------------
  269.  
  270. align 16
  271. I_END:
  272. my_strm z_stream
  273.         rd 4096
  274. align 16
  275. STACKTOP:
  276. cur_dir_path:
  277.         rb 4096
  278. library_path:
  279.         rb 4096
  280. MEM:
  281.