Subversion Repositories Kolibri OS

Rev

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

  1. dialog_line:
  2.             mov [string_x],eax
  3.             mov [string_y],ebx
  4.             mov [MaxSizeString],ecx
  5.  
  6.             and [position],0
  7.             mov eax,string_
  8.             mov ebx,64/4
  9.             next_byte_cleare:
  10.             mov [eax],dword 0
  11.             add eax,4
  12.             dec ebx
  13.             jnz next_byte_cleare
  14.             call print_line
  15.             call print_cursor
  16.  
  17.       opros:
  18.             mcall SF_WAIT_EVENT
  19.  
  20.             cmp eax,1 ;redraw window
  21.             je exit_cycle
  22.             cmp eax,3 ;press button
  23.             je exit_cycle
  24.  
  25.             cmp eax,2 ;press key
  26.             jne opros
  27.  
  28.             mcall SF_GET_KEY
  29.             shr eax,8
  30.  
  31.             cmp al,13
  32.             je exit_cycle
  33.             cmp al,8
  34.             je backspace
  35.             cmp al,176
  36.             je left
  37.             cmp al,179
  38.             je right
  39.             cmp al,32
  40.             je probel
  41.  
  42.             inc [position]
  43.             inc [MaxSizeString]
  44.             call MinMaxCorrect
  45.             dec [MaxSizeString]
  46.             test ecx,ecx
  47.             jz no_maximum_position
  48.             jmp opros
  49.             no_maximum_position:
  50.  
  51.  
  52.             mov ebx,[position]
  53.             dec ebx
  54.             mov [string_+ebx],al
  55.  
  56.             call print_line
  57.             call print_cursor
  58.             jmp  opros
  59.   backspace:
  60.             dec [position]
  61.             call MinMaxCorrect
  62.             mov ebx,[position]
  63.             mov [string_+ebx],byte ' '
  64.  
  65.             call print_line
  66.             call print_cursor
  67.             jmp opros
  68.  
  69.        left:
  70.             dec [position]
  71.             call MinMaxCorrect
  72.             call print_line
  73.             call print_cursor
  74.             jmp opros
  75.  
  76.       right:
  77.             inc [position]
  78.             call MinMaxCorrect
  79.             call print_line
  80.             call print_cursor
  81.             jmp opros
  82.  
  83.      probel:
  84.             mov ebx,[position]
  85.             mov [string_+ebx],byte ' '
  86.             inc [position]
  87.             call MinMaxCorrect
  88.             call print_line
  89.             call print_cursor
  90.             jmp opros
  91.  
  92.  exit_cycle:
  93.              inc [position]
  94.              mov ebx,[position]
  95.              mov [string_+ebx],byte 13
  96.              exit_opros:
  97.  
  98.              call print_line
  99.             ret
  100. ;---------------------------------------------------------------
  101. print_line:
  102.         mov ebx,[string_x]
  103.         mov ecx,[string_y]
  104.         mov edx,[MaxSizeString]
  105.         shl ebx,16
  106.         shl ecx,16
  107.         imul edx,6
  108.         add ebx,edx
  109.         add ebx,2
  110.         add ecx,10
  111.         mov edx,0xffffff
  112.         mcall SF_DRAW_RECT
  113.         mov ebx,[string_x]
  114.         shl ebx,16
  115.         add ebx,[string_y]
  116.         mov edx,string_
  117.         mov esi,[MaxSizeString]
  118.         mcall SF_DRAW_TEXT,,0
  119.         ret
  120.  
  121. print_cursor:
  122.         mov ebx,[position]
  123.         mov ecx,[string_y]
  124.         imul ebx,6
  125.         add ebx,[string_x]
  126.         shl ebx,16
  127.         shl ecx,16
  128.         add ebx,2
  129.         add ecx,8
  130.         mcall SF_DRAW_RECT,,,0xff6c58
  131.         ret
  132. ;----------------------------------------------------------
  133. MinMaxCorrect:
  134.             mov ebx,[MaxSizeString]
  135.             xor ecx,ecx
  136.  
  137.             cmp [position],ebx
  138.             jl no_maximum_length_string
  139.             mov [position],ebx
  140.             mov ecx,1    ;maximul position
  141.             no_maximum_length_string:
  142.  
  143.             cmp [position],0
  144.             jns no_minimum_length_string
  145.             and [position],0
  146.             no_minimum_length_string:
  147.  
  148.             ret
  149. ;----------------------------------------------------------
  150. string_       rb 65
  151. position      dd 0
  152. MaxSizeString dd 0
  153. string_x      dd 0
  154. string_y      dd 0
  155. ;**********************************************************
  156. ;----------------------------------------------------------
  157.   value:
  158.         xor edx,edx
  159.   cycle_value_:
  160.         xor ebx,ebx
  161.         mov bl,byte[eax]
  162.  
  163.         cmp bl,'0'
  164.         jne no_0
  165.         mov ebx,0
  166.         jmp exit_v
  167.         no_0:
  168.         cmp bl,'1'
  169.         jne no_1
  170.         mov ebx,1
  171.         jmp exit_v
  172.         no_1:
  173.         cmp bl,'2'
  174.         jne no_2
  175.         mov ebx,2
  176.         jmp exit_v
  177.         no_2:
  178.         cmp bl,'3'
  179.         jne no_3
  180.         mov ebx,3
  181.         jmp exit_v
  182.         no_3:
  183.         cmp bl,'4'
  184.         jne no_4
  185.         mov ebx,4
  186.         jmp exit_v
  187.         no_4:
  188.         cmp bl,'5'
  189.         jne no_5
  190.         mov ebx,5
  191.         jmp exit_v
  192.         no_5:
  193.         cmp bl,'6'
  194.         jne no_6
  195.         mov ebx,6
  196.         jmp exit_v
  197.         no_6:
  198.         cmp bl,'7'
  199.         jne no_7
  200.         mov ebx,7
  201.         jmp exit_v
  202.         no_7:
  203.         cmp bl,'8'
  204.         jne no_8
  205.         mov ebx,8
  206.         jmp exit_v
  207.         no_8:
  208.         cmp bl,'9'
  209.         jne no_9
  210.         mov ebx,9
  211.         jmp exit_v
  212.         no_9:
  213.         xor edx,edx
  214.         jmp error
  215.         exit_v:
  216.         mov ecx,[length_number]
  217.         dec ecx
  218.         test ecx,ecx
  219.         jz no_stepen
  220.  
  221.     next_mul:
  222.         imul ebx,10
  223.         dec ecx
  224.         jne next_mul
  225.  
  226.         no_stepen:
  227.         add edx,ebx
  228.  
  229.         inc eax
  230.         dec [length_number]
  231.         jnz cycle_value_
  232.         error:
  233.         mov eax,edx
  234.         ret
  235. ;----------------------------------------------------------
  236. length_number   dd 0