Subversion Repositories Kolibri OS

Rev

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

  1. use32   ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
  2. org 0x0 ;  ¤à¥á æ¨ï á ­ã«ï
  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 '../../../../develop/libraries/box_lib/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 ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ® ­ ç «¥ ®âà¨á®¢ª¨
  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.         mcall SF_DRAW_NUMBER, (1 shl 16)+1, strategy, <90,10>, 0
  131.         mcall , (5 shl 16)+1, m0size, <90,20>
  132.         mcall , (5 shl 16)+1, m1size, <90,30>
  133.         mcall , (5 shl 16)+1, m2size, <90,120>
  134.         ;mov ecx,(1 shl 31)
  135.         mov esi,[m2size]
  136.         cmp esi,95
  137.         jle @f
  138.                 mov esi,95
  139.         @@:
  140.         mcall SF_DRAW_TEXT, <10,130>, 0, [m2]
  141.  
  142.         mov esi,7
  143.         mov ebx,(10 shl 16)+45 ;(x shl 16)+y
  144.         mov edx,buf
  145.         .cycle1: ;rows
  146.                 mcall SF_DRAW_TEXT,, (1 shl 31)
  147.                 add ebx,10
  148.                 add edx,32*3
  149.         dec esi
  150.         jnz .cycle1
  151.  
  152.     mcall SF_REDRAW, SSF_END_DRAW ; äã­ªæ¨ï 12.2, § ª®­ç¨«¨ à¨á®¢ âì
  153.     ret
  154.  
  155. align 4
  156. test_code:
  157.         stdcall [deflateInit2], my_strm,\
  158.                 -1, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, [strategy]
  159. ;‘âà â¥£¨ï:
  160. ; Z_DEFAULT_STRATEGY, Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED
  161.  
  162.         mov eax,my_strm
  163.         mov [eax+z_stream.next_in],m0 ;ãáâ ­ ¢«¨¢ ¥¬ ¯ ¬ïâì ¤«ï ᦠâ¨ï
  164.         mov ecx,[m0size]
  165.         mov word[eax+z_stream.avail_in],cx ;à §¬¥à ᦨ¬ ¥¬ë¦ ¤ ­­ëå
  166.         mov [eax+z_stream.next_out],m1 ;ãáâ ­ ¢«¨¢ ¥¬ ¡ãä¥à ¤«ï ᦠâ¨ï
  167.         mov word[eax+z_stream.avail_out],1024 ;à §¬¥à ¡ãä¥à  ¤«ï ᦠâ¨ï
  168.  
  169.         ;call print_z_struct
  170.  
  171.         stdcall [deflate], my_strm, Z_FINISH ;Z_NO_FLUSH
  172.  
  173.         ;call print_z_struct
  174.  
  175.         ;à §¬¥à ᦠâëå ¤ ­­ëå: 1024-word[eax+z_stream.avail_out]
  176.         mov eax,my_strm
  177.         mov ecx,1024
  178.         sub cx,word[eax+z_stream.avail_out]
  179.         mov [m1size],ecx
  180.  
  181. ;assert(ret != Z_STREAM_ERROR)
  182. ;while (strm.avail_out == 0)
  183.  
  184.         mov ebx,[m1size]
  185.         mov esi,m1
  186.         mov edi,buf
  187.         mov edx,7
  188.         .cycle1: ;rows
  189.         mov ecx,32
  190.         .cycle0: ;cols
  191.                 stdcall hex_in_str, edi,[esi],2
  192.                 add edi,2
  193.                 inc esi
  194.                 mov byte[edi],' ' ;format space
  195.                 dec ebx
  196.                 jz .cycle1end ;if end file
  197.                 inc edi
  198.                 loop .cycle0
  199.         mov byte[edi-1],0
  200.         dec edx
  201.         jnz .cycle1
  202.  
  203.         .cycle1end:
  204.         mov byte[edi],0
  205.  
  206.         mcall SF_SYS_MISC,SSF_MEM_FREE,[m2]
  207.        
  208.         mov eax,[m1size]
  209.         sub eax,2 ;;; 2? or 6?
  210.         mov [m2size],eax
  211.         mov eax,m1
  212.         add eax,2
  213.         stdcall [deflate_unpack],eax,m2size
  214.         mov [m2],eax
  215.         mov ecx,[m0size] ;;; ???
  216.         mov [m2size],ecx
  217.         ret
  218.  
  219. align 4
  220. proc print_z_struct uses eax ebx
  221.         mov eax,my_strm
  222.         mov ebx,[eax+z_stream.state]
  223.         stdcall debug_fields,eax,sv_2
  224.         stdcall debug_fields,ebx,sv_3
  225.         ret
  226. endp
  227.  
  228. sc system_colors
  229.  
  230. title db 'Zlib test, press on [Up], [Down], [Left], [Right]',0
  231.  
  232. align 4
  233. import_archiver:
  234.         deflate_unpack dd sz_deflate_unpack
  235.         dd 0,0
  236.         sz_deflate_unpack db 'deflate_unpack',0
  237.  
  238. align 4
  239. import_zlib:
  240. ;       dd sz_lib_init
  241.         deflateInit             dd sz_deflateInit
  242.         deflateInit2    dd sz_deflateInit2
  243.         deflateReset    dd sz_deflateReset
  244.         deflate                 dd sz_deflate
  245.         deflateEnd              dd sz_deflateEnd
  246.  
  247.         dd 0,0
  248.  
  249. ;       sz_lib_init db 'lib_init',0
  250.         sz_deflateInit db 'deflateInit',0
  251.         sz_deflateInit2 db 'deflateInit2',0
  252.         sz_deflateReset db 'deflateReset',0
  253.         sz_deflate db 'deflate',0
  254.         sz_deflateEnd db 'deflateEnd',0
  255. ;--------------------------------------------------
  256. system_dir_0 db '/sys/lib/'
  257. lib_name_0 db 'archiver.obj',0
  258.  
  259. system_dir_1 db '/sys/lib/'
  260. lib_name_1 db 'zlib.obj',0
  261.  
  262. err_message_found_lib0 db 'Sorry I cannot load library archiver.obj',0
  263. err_message_found_lib1 db 'Sorry I cannot load library zlib.obj',0
  264. head_f_i:
  265. head_f_l db 'System error',0
  266. err_message_import0 db 'Error on load import library archiver.obj',0
  267. err_message_import1 db 'Error on load import library zlib.obj',0
  268.  
  269. l_libs_start:
  270.         lib0 l_libs lib_name_0, cur_dir_path, library_path, system_dir_0,\
  271.                 err_message_found_lib0, head_f_l, import_archiver,err_message_import0, head_f_i
  272.         lib1 l_libs lib_name_1, cur_dir_path, library_path, system_dir_1,\
  273.                 err_message_found_lib1, head_f_l, import_zlib, err_message_import1, head_f_i
  274. load_lib_end:
  275. ;---------------------------------------------------------------------
  276.  
  277. align 16
  278. I_END:
  279. my_strm z_stream
  280.         rd 4096
  281. align 16
  282. STACKTOP:
  283. cur_dir_path:
  284.         rb 4096
  285. library_path:
  286.         rb 4096
  287. MEM:
  288.