Subversion Repositories Kolibri OS

Rev

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

  1. ;;      h2d2b v0.4 use editbox by IgorA     ;;
  2. ;;      30.08.2011                          ;;
  3.  
  4. ;;      h2d2b v0.3 system colors by Leency  ;;
  5. ;;      21.08.2011                          ;;
  6.  
  7. ;;      hex2dec2bin 0.2 by Alexei Ershov    ;;
  8. ;;      16.11.2006                          ;;
  9.  
  10. use32
  11.     org 0x0
  12.     db  'MENUET01'
  13.     dd  0x01,start,i_end,e_end,e_end,0,sys_path
  14.  
  15. include '../../../proc32.inc'
  16. include '../../../macros.inc' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
  17. include '../../../develop/libraries/box_lib/load_lib.mac'
  18. include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
  19. include 'lang.inc'
  20.  
  21. @use_library
  22.  
  23. start:
  24.         load_libraries l_libs_start,l_libs_end
  25.         ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  ¡¨¡«¨®â¥ª 
  26.         mov     ebp,lib_0
  27.         cmp     dword [ebp+ll_struc_size-4],0
  28.         jz      @f
  29.                 mcall -1 ;exit not correct
  30.         @@:
  31.         mcall 40,0x27
  32.         mcall 48, 3, sys_colors, 40
  33.         edit_boxes_set_sys_color edit1,editboxes_end,sys_colors
  34.  
  35. red:
  36.     call draw_window
  37.  
  38. still:
  39.     mcall 10            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
  40.  
  41.     cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
  42.     je   red            ; ¥á«¨ ¤  - ­  ¬¥âªã red
  43.     cmp  eax,2          ; ­ ¦ â  ª« ¢¨è  ?
  44.     je   key            ; ¥á«¨ ¤  - ­  key
  45.     cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
  46.     je   button         ; ¥á«¨ ¤  - ­  button
  47.     cmp  eax,6
  48.     je   mouse
  49.  
  50.     jmp  still          ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
  51.  
  52. ;---------------------------------------------------------------------
  53.  
  54. key:                   ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
  55.     mcall 2
  56.         stdcall [edit_box_key], dword edit1
  57.     jmp  still          ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  58.  
  59. read_str:
  60.     dec   edi
  61.     mov   esi, string1
  62.  
  63.     call  GetBase
  64.  
  65.     xor   ecx, ecx
  66.     inc   ecx           ; ecx = 1
  67.  
  68. make_bin:
  69.     xor   eax, eax
  70.  
  71. next_digit:
  72.     xor   edx, edx
  73.     cmp   edi, esi
  74.     jb    .done
  75.  
  76.     mov   dl, [edi]
  77.     cmp   dl, '-'
  78.     jne   @f
  79.     neg   eax
  80.     jmp   .done
  81. @@:
  82.     cmp   dl, 'F'
  83.     jbe   @f
  84.     and   dl, 11011111b
  85. @@:
  86.     sub   dl, '0'
  87.     cmp   dl, 9
  88.     jbe   @f
  89.     sub   dl, 'A'-'9'-1
  90. @@:
  91.     cmp   dl, bl
  92.     jb    @f
  93.     ; ‡¤¥áì ®¡à ¡®â âì ®è¨¡ªã
  94.  
  95.     jmp   .done
  96. @@:
  97.     push  ecx
  98.     xchg  eax, ecx
  99.     mul   edx ;        edx:eax = eax * edx
  100.     add   ecx, eax
  101.     pop   eax
  102.     mul   ebx
  103.     xchg  eax, ecx
  104.     dec   edi
  105.     jmp   next_digit
  106.  
  107. .done:
  108.    mov    [num], eax    ; á®å࠭塞 ¢¢¥¤¥­­®¥ ç¨á«®
  109.    jmp    red
  110.  
  111. ;---------------------------------------------------------------------
  112.  
  113. button:
  114.         mcall 17                ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  115.         cmp   ah, 1     ; ¥á«¨ … ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
  116.         jne   @f
  117.                 mcall -1
  118.         @@:
  119.         cmp ah, 2
  120.         jne @f
  121.                 shl [num], 1
  122.                 jmp red
  123.         @@:
  124.         cmp ah, 3
  125.         jne @f
  126.                 shr [num], 1
  127.                 jmp red
  128.         @@:
  129.         cmp ah, 4
  130.         jne @f
  131.                 sar [num], 1
  132.                 jmp red
  133.         @@:
  134.         cmp ah, 5
  135.         jne @f
  136.                 mov edi,string1
  137.                 add edi,[edit1.size] ;ãáâ ­ ¢«¨¢ ¥¬ ¢ edi ª®­¥æ áâப¨
  138.                 jmp read_str
  139.                 ;jmp red
  140.         @@:
  141.         jmp still
  142.  
  143. mouse:
  144.         stdcall [edit_box_mouse], edit1
  145.         jmp still
  146.  
  147. ;------------------------------------------------
  148.     draw_window:
  149. ;------------------------------------------------
  150.         mcall   48, 3, sys_colors, 40
  151.  
  152.     mcall 12, 1
  153.         mov     edx, 0x14000000
  154.         or      edx, [sys_colors.work]
  155.         ;mov    esi, 0x80000000
  156.         ;or     esi, [sys_colors.grab_text]
  157.     mcall 0, 200*65536+300, 200*65536+175, ,,title
  158.  
  159.        
  160.     mcall  8, 15      *65536+ 38, 90*65536+ 15, 2, [sys_colors.work_button] ; ª­®¯ª  shl
  161.     mcall  ,                   ,110*65536+ 15,  ,          ; ª­®¯ª  sal
  162.     mcall  , (300-53)*65536+ 38, 90*65536+ 15, 3,          ; ª­®¯ª  shr
  163.     mcall  ,                   ,110*65536+ 15, 4,          ; ª­®¯ª  sar
  164.     mcall  ,                   ,145*65536+ 15, 5,          ; ª­®¯ª  Ok
  165.  
  166.         mov     ecx, 0x80000000
  167.         or      ecx, [sys_colors.work_text]
  168.     mcall  4, 15*65536+30,   , binstr,
  169.     mcall  , 15*65536+44,   , decstr,
  170.     mcall  , 15*65536+58,   ,sdecstr,
  171.     mcall  , 15*65536+72,   , hexstr,
  172.     mcall  , 15*65536+150,  , numstr,
  173.  
  174.         mov     ecx, 0x80000000
  175.         or      ecx, [sys_colors.work_button_text]
  176.     mcall  ,       26*65536+94,         , shlstr,3
  177.     mcall  , (300-42)*65536+94,         , shrstr,
  178.     mcall  ,       26*65536+114,        , salstr,
  179.     mcall  , (300-42)*65536+114,        , sarstr,
  180.         mcall  , (300-42)*65536+149,    , Okstr,
  181.     mov    ecx, [num]
  182.  
  183.        
  184.     mcall  47, 8*65536+256,,240*65536+72,[sys_colors.work_text]    ; 16-­ ï
  185.     mcall    , 10*65536,   ,228*65536+44,     ; 10-­ ï
  186.     mcall    , 8*65536+512,,240*65536+30,     ; 2-­ ï
  187.     ror    ecx, 8
  188.     mcall    ,            ,,(240-56)*65536+30,
  189.     ror    ecx, 8
  190.     mcall    ,            ,,(240-56*2)*65536+30,
  191.     ror    ecx, 8
  192.     mcall    ,            ,,(240-56*3)*65536+30,
  193.     ror    ecx, 8
  194.     mov    [minus], '+'
  195.     jnc    @f
  196.     mov    [minus], '-'
  197.     neg    ecx
  198. @@:
  199.     mcall   ,  10*65536,,228*65536+58,        ; 10-­ ï á® §­ ª®¬
  200.     mcall  4, 222*65536+58, 0, minus, 1
  201.     mcall 38, 15*65536+300-15, 137*65536+137, [sys_colors.work_graph]
  202.         stdcall [edit_box_draw], edit1
  203.     mcall 12, 2                    ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
  204.  
  205. ret
  206.  
  207.  
  208. ;-------------------------------------------------
  209.     GetBase:
  210. ;-------------------------------------------------
  211.     mov   ebx, 10
  212.     cmp   edi, esi
  213.     jb    .done
  214.  
  215.     mov   al, [edi]
  216.     cmp   al, 'H'
  217.     jbe   @f
  218.     and   al, 11011111b
  219. @@:
  220.     cmp   al, 'H'
  221.     jne   @f
  222.     mov   ebx, 16
  223.     dec   edi
  224.     jmp   .done
  225.  
  226. @@:
  227.     cmp   al, 'D'
  228.     jne   @f
  229.     mov   ebx, 10
  230.     dec   edi
  231.     jmp   .done
  232.  
  233. @@:
  234.     cmp   al, 'B'
  235.     jne   .done
  236.     mov   ebx, 2
  237.     dec   edi
  238.  
  239. .done:
  240. ret
  241.  
  242. ;-------------------------------------------------
  243. string1:
  244.   db  34 dup(' ')
  245. string1_end:
  246.   num   dd  0
  247.  
  248.  
  249.  title db 'hex2dec2bin 0.4',0
  250.  minus  db '-',0
  251.  hexstr db 'hex:',0
  252.  binstr db 'bin:',0
  253.  decstr db 'dec:',0
  254.  sdecstr db 'signed dec:',0
  255.  shlstr db 'shl',0
  256.  salstr db 'sal',0
  257.  shrstr db 'shr',0
  258.  sarstr db 'sar',0
  259.  
  260. if lang eq ru
  261.         numstr db '—¨á«®:',0
  262.         Okstr db '‚¢®¤',0
  263.         head_f_i:
  264.         head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
  265. else
  266.         numstr db 'Number:',0
  267.         Okstr db 'Ok',0
  268.         head_f_i:
  269.         head_f_l db 'System error',0
  270. end if
  271.  
  272. mouse_dd dd 0
  273. edit1 edit_box 182, 59, 146, 0xffffff, 0xff, 0x80ff, 0, 0x8000, (string1_end-string1), string1, mouse_dd, 0
  274. editboxes_end:
  275.  
  276. system_dir_0 db '/sys/lib/'
  277. lib_name_0 db 'box_lib.obj',0
  278. err_msg_found_lib_0 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'box_lib.obj',39,0
  279. err_msg_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,0
  280.  
  281. l_libs_start:
  282.         lib_0 l_libs lib_name_0, sys_path, library_path, system_dir_0,\
  283.                 err_msg_found_lib_0,head_f_l,import_box_lib,err_msg_import_0,head_f_i
  284. l_libs_end:
  285.  
  286. align 4
  287. import_box_lib:
  288.         ;dd sz_init1
  289.         edit_box_draw dd sz_edit_box_draw
  290.         edit_box_key dd sz_edit_box_key
  291.         edit_box_mouse dd sz_edit_box_mouse
  292.         ;edit_box_set_text dd sz_edit_box_set_text
  293. dd 0,0
  294.         ;sz_init1 db 'lib_init',0
  295.         sz_edit_box_draw db 'edit_box',0
  296.         sz_edit_box_key db 'edit_box_key',0
  297.         sz_edit_box_mouse db 'edit_box_mouse',0
  298.         ;sz_edit_box_set_text db 'edit_box_set_text',0
  299.  
  300. i_end:
  301.  sys_colors             system_colors
  302.  rb 0x400                                       ;stack
  303.  sys_path rb 4096
  304.  library_path rb 4096
  305. e_end:                             ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
  306.