Subversion Repositories Kolibri OS

Rev

Rev 6704 | Rev 6801 | 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 [eax+z_stream.avail_in],ecx ;à §¬¥à ᦨ¬ ¥¬ë¦ ¤ ­­ëå
  166.         mov [eax+z_stream.next_out],m1 ;ãáâ ­ ¢«¨¢ ¥¬ ¡ãä¥à ¤«ï ᦠâ¨ï
  167.         mov dword[eax+z_stream.avail_out],1024 ;à §¬¥à ¡ãä¥à  ¤«ï ᦠâ¨ï (¬ ªá¨¬ã¬ 16 Š¡)
  168.  
  169.         ;¢ëç¨á«ï¥¬ crc ¤«ï ᦨ¬ ¥¬ë¦ ¤ ­­ëå
  170.         stdcall [calc_crc32], 0,m0,ecx
  171.         mov edx,eax
  172.  
  173.         ;call print_z_struct
  174.  
  175.         stdcall [deflate], my_strm, Z_FINISH ;Z_NO_FLUSH
  176.  
  177.         ;call print_z_struct
  178.  
  179.         ;à §¬¥à ᦠâëå ¤ ­­ëå: 1024-[my_strm.avail_out]
  180.         mov ecx,1024
  181.         sub ecx,[my_strm.avail_out]
  182.         mov [m1size],ecx
  183.  
  184.         ;assert(ret != Z_STREAM_ERROR)
  185.         ;while (strm.avail_out == 0)
  186.  
  187.         ;áâ ¢¨¬ crc ­  ᦠâë¥ ¤ ­­ë¥
  188.         mov ecx,[m1size]
  189.         sub ecx,4
  190.         add ecx,m1
  191.         mov [ecx],edx
  192.  
  193.         ;ä®à¬¨à®¢ ­¨¥ ⥪áâ  ¤«ï ®â®¡à ¦¥­¨ï ᦠâëå ¤ ­­ëå
  194.         ;¢ 16-à¨ç­®¬ ¢¨¤¥, ­ã¦­® ⮫쪮 ¤«ï ¯à¨¬¥à 
  195.         mov ebx,[m1size]
  196.         mov esi,m1
  197.         mov edi,buf
  198.         mov edx,7
  199. align 4
  200.         .cycle1: ;rows
  201.         mov ecx,32
  202. align 4
  203.         .cycle0: ;cols
  204.                 stdcall hex_in_str, edi,[esi],2
  205.                 add edi,2
  206.                 inc esi
  207.                 mov byte[edi],' ' ;format space
  208.                 dec ebx
  209.                 jz .cycle1end ;if end file
  210.                 inc edi
  211.                 loop .cycle0
  212.         mov byte[edi-1],0
  213.         dec edx
  214.         jnz .cycle1
  215.         .cycle1end:
  216.         mov byte[edi],0
  217.  
  218.         ;㤠«¥­¨¥ ¡ãä¥à  á à ­¥¥ à á¯ ª®¢ ­­ë¬¨ ¤ ­­ë¬¨
  219.         mcall SF_SYS_MISC,SSF_MEM_FREE,[m2]
  220.        
  221.         mov eax,[m1size]
  222.         sub eax,2 ;;; 2? or 6?
  223.         mov [m2size],eax
  224.         mov eax,m1
  225.         add eax,2
  226.         stdcall [deflate_unpack],eax,m2size
  227.         mov [m2],eax ;§ ¯¨áì ­®¢ëå à á¯ ª®¢ ­­ëå ¤ ­­ëå
  228.         mov ecx,[m0size] ;;; ???
  229.         mov [m2size],ecx
  230.         ret
  231.  
  232. align 4
  233. proc print_z_struct uses eax ebx
  234.         mov eax,my_strm
  235.         mov ebx,[eax+z_stream.state]
  236.         stdcall debug_fields,eax,sv_2
  237.         stdcall debug_fields,ebx,sv_3
  238.         ret
  239. endp
  240.  
  241. sc system_colors
  242.  
  243. title db 'Zlib test, press on [Up], [Down], [Left], [Right]',0
  244.  
  245. align 4
  246. import_archiver:
  247.         deflate_unpack dd sz_deflate_unpack
  248.         deflateInit             dd sz_deflateInit
  249.         deflateInit2    dd sz_deflateInit2
  250.         deflateReset    dd sz_deflateReset
  251.         deflate                 dd sz_deflate
  252.         deflateEnd              dd sz_deflateEnd
  253.         calc_crc32              dd sz_calc_crc32
  254.         dd 0,0
  255.         sz_deflate_unpack db 'deflate_unpack',0
  256.         sz_deflateInit db 'deflateInit',0
  257.         sz_deflateInit2 db 'deflateInit2',0
  258.         sz_deflateReset db 'deflateReset',0
  259.         sz_deflate db 'deflate',0
  260.         sz_deflateEnd db 'deflateEnd',0
  261.         sz_calc_crc32 db 'calc_crc32',0
  262.  
  263. ;--------------------------------------------------
  264. system_dir_0 db '/sys/lib/'
  265. lib_name_0 db 'archiver.obj',0
  266.  
  267. err_message_found_lib0 db 'Sorry I cannot load library archiver.obj',0
  268. head_f_i:
  269. head_f_l db 'System error',0
  270. err_message_import0 db 'Error on load import library archiver.obj',0
  271.  
  272. l_libs_start:
  273.         lib0 l_libs lib_name_0, cur_dir_path, library_path, system_dir_0,\
  274.                 err_message_found_lib0, head_f_l, import_archiver,err_message_import0, head_f_i
  275. load_lib_end:
  276. ;---------------------------------------------------------------------
  277.  
  278. align 16
  279. I_END:
  280. my_strm z_stream
  281.         rd 4096
  282. align 16
  283. STACKTOP:
  284. cur_dir_path:
  285.         rb 4096
  286. library_path:
  287.         rb 4096
  288. MEM:
  289.