Subversion Repositories Kolibri OS

Rev

Rev 3115 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. use32
  2.     org 0x0
  3.     db  'MENUET01'
  4.     dd  0x01,start,i_end,e_end,e_end,0,this_file_name
  5.  
  6. include '../../../../proc32.inc'
  7. include '../../../../macros.inc'
  8. include '../../../../dll.inc'
  9. ;include '../../../../debug.inc'
  10. include '../../../../develop/libraries/libs-dev/libio/libio.inc'
  11. include 'libcrash.inc'
  12. BUFFER_SIZE     = 8192
  13.  
  14.  
  15. start:
  16.         mcall   68, 11
  17.  
  18.         stdcall dll.Load, @IMPORT
  19.         or      eax, eax
  20.         jnz     quit
  21.  
  22.         invoke  file.open, this_file_name, O_READ
  23.         or      eax, eax
  24.         jz      quit
  25.         mov     [fh], eax
  26.  
  27.         invoke  file.size, this_file_name
  28.         mov     [file_len], ebx
  29.  
  30.         stdcall mem.Alloc, ebx
  31.         or      eax, eax
  32.         jz      quit
  33.         mov     [file_data], eax
  34.  
  35.         invoke  file.read, [fh], eax, [file_len]
  36.         cmp     eax, -1
  37.         je      quit
  38.         cmp     eax, [file_len]
  39.         jne     quit
  40.  
  41.         invoke  file.close, [fh]
  42.         inc     eax
  43.         jz      quit
  44.        
  45.         stdcall mem.Free, [file_data]
  46.         test    eax, eax
  47.         jz      quit
  48.  
  49.  
  50.         invoke  crash.hash, LIBCRASH_SHA512, hash, data_buffer, 0, update_data_buffer, msglen
  51.         invoke  crash.bin2hex, hash, hex, LIBCRASH_SHA512
  52.  
  53.  
  54. still:
  55.         mcall   10
  56.         dec     eax
  57.         jz      redraw
  58.         dec     eax
  59.         jz      key
  60.  
  61. button:
  62.         mcall   17
  63.         shr     eax, 8
  64.  
  65.         cmp     eax, 1
  66.         je      quit
  67.  
  68. redraw:
  69.         mcall   12, 1
  70.         mcall   0, <0,800>, <0,100>, 0x34000000, 0x80000000, window_title
  71.  
  72.         mcall   4, 0, 0x40ffffff, hex, 128, 0
  73.  
  74.         mcall   12, 2
  75.         jmp     still
  76.  
  77. key:
  78.         mcall   2
  79.         jmp     still
  80.  
  81.  
  82. quit:
  83.         mcall   -1
  84.  
  85.  
  86. proc update_data_buffer
  87.         mcall   70, f70_buf
  88.         mov     eax, ebx
  89.         cmp     eax, -1
  90.         jne     @f
  91.         inc     eax
  92.     @@:
  93.         add     dword[f70_buf + 4], BUFFER_SIZE
  94.         ret
  95. endp
  96.  
  97.  
  98. szZ window_title                ,'libcrash example'
  99.  
  100. sz msg_few_args         , '2 arguments required',0x0a
  101. sz msg_bad_hash_type    , 'invalid hash type',0x0a
  102. sz msg_file_not_found   , 'file not found: '
  103.  
  104. f70_buf:
  105.         funcnum dd 0
  106.         src     dd 0
  107.         res1    dd 0
  108.         count   dd BUFFER_SIZE
  109.         dst     dd data_buffer
  110.         res2    db 0
  111.         fname   dd this_file_name
  112.  
  113. align 4
  114. @IMPORT:
  115.  
  116. library                           \
  117.         libio   , 'libio.obj'   , \
  118.         libcrash, 'libcrash.obj'
  119.  
  120. import  libio                           , \
  121.         libio.init     , 'lib_init'     , \
  122.         file.size      , 'file_size'    , \
  123.         file.open      , 'file_open'    , \
  124.         file.read      , 'file_read'    , \
  125.         file.close     , 'file_close'
  126.  
  127. import  libcrash                        , \
  128.         libcrash.init  , 'lib_init'     , \
  129.         crash.hash     , 'crash_hash'   , \
  130.         crash.bin2hex  , 'crash_bin2hex'
  131.  
  132. i_end:
  133. hash            rd 16
  134. msglen          rd 1
  135. fd              rd 1
  136. fh              rd 1
  137. data_length     rd 1
  138. hex             rb 1024
  139. data_buffer     rb BUFFER_SIZE
  140. file_data       rd 1
  141. file_len        rd 1
  142.  
  143. this_file_name  rb 4096
  144. rb 0x400                                        ;stack
  145. e_end:
  146.  
  147.