Subversion Repositories Kolibri OS

Rev

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

  1. ; <Lrz> 09.08.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï à ¡®âë ª®­¯®ª DEL ¨ Backspace? 㬥­ì襭 à §¬¥à ¢ë¯®«­ï¥¬®£® ª®¤ .
  2. ;ä䥪⨢­®¥ ¯à®£à ¬¬¨à®¢ ­¨¥ ¢ KOLIBRI
  3. ;Ž¯â¨¬¨§¨à®¢ ­­ë© ª®¬¯®­¥­â EditBox (ˆá室­ë© ¢ à¨ ­â ®â Maxxxx32)
  4. ;Ž¯â¨¬¨§ æ¨ï ª®¬ ­¤.
  5. ;<Lrz>  - ’¥¯«®¢ €«¥ªá¥©  www.test-kolibri.narod.ru
  6.  
  7. ;§ £®«®¢®ª ¯à¨«®¦¥­¨ï
  8. use32           ; âà ­á«ïâ®à, ¨á¯®«ì§ãî騩 32 à §à來ëå ª®¬ ­¤ë
  9.     org 0x0             ; ¡ §®¢ë©  ¤à¥á ª®¤ , ¢á¥£¤  0x0
  10.     db 'MENUET01'       ; ¨¤¥­â¨ä¨ª â®à ¨á¯®«­ï¥¬®£® ä ©«  (8 ¡ ©â)
  11.     dd 0x1              ; ¢¥àá¨ï ä®à¬ â  § £®«®¢ª  ¨á¯®«­ï¥¬®£® ä ©« 
  12.     dd start            ;  ¤à¥á, ­  ª®â®àë© á¨á⥬  ¯¥à¥¤ ñâ ã¯à ¢«¥­¨¥
  13.                         ; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥­¨ï ¢ ¯ ¬ïâì
  14.     dd i_end            ; à §¬¥à ¯à¨«®¦¥­¨ï
  15.     dd i_end and not 3  ; Ž¡ê¥¬ ¨á¯®«ì§ã¥¬®© ¯ ¬ïâ¨, ¤«ï á⥪  ®â¢¥¤¥¬ 0å100 ¡ ©â ¨ ¢ë஢­¨¬ ­  £à­¨æã 4 ¡ ©â 
  16.     dd i_end and not 3  ; à á¯®«®¦¨¬ ¯®§¨æ¨î á⥪  ¢ ®¡« á⨠¯ ¬ïâ¨, áࠧ㠧  ⥫®¬ ¯à®£à ¬¬ë. ‚¥à設  á⥪  ¢ ¤¨ ¯ §®­¥ ¯ ¬ïâ¨, 㪠§ ­­®¬ ¢ëè¥
  17.     dd 0x0,0x0          ; 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨.
  18.                  ;    ¥á«¨ ¯®á«¥ § ¯ã᪠ ­¥à ¢­® ­ã«î, ¯à¨«®¦¥­¨¥ ¡ë«®
  19.                  ;    § ¯ã饭® á ¯ à ¬¥âà ¬¨ ¨§ ª®¬ ­¤­®© áâப¨
  20.  
  21.                  ;    ãª § â¥«ì ­  áâபã, ¢ ª®â®àãî § ¯¨á ­ ¯ãâì,
  22.                  ;    ®âªã¤  § ¯ã饭® ¯à¨«®¦¥­¨¥
  23.  
  24.         include 'editbox.inc'
  25.         use_edit_box
  26. ;Ž¡« áâì ª®¤ 
  27. start:                          ;’®çª  ¢å®¤  ¢ ¯à®£à ¬¬ã
  28.         mov     eax,40          ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩
  29.         mov     ebx,0x27        ;á¨á⥬  ¡ã¤¥â ॠ£¨à®¢ âì ⮫쪮 ­  á®®¡é¥­¨¥ ® ¯¥à¥à¨á®¢ª¥,­ ¦ â  ª­®¯ª , ®¯à¥¤¥«ñ­­ ï à ­¥¥, ᮡë⨥ ®â ¬ëè¨ (çâ®-â® á«ã稫®áì - ­ ¦ â¨¥ ­  ª­®¯ªã ¬ëè¨ ¨«¨ ¯¥à¥¬¥é¥­¨¥; á¡à á뢠¥âáï ¯à¨ ¯à®ç⥭¨¨) ¨ ­ ¦ â¨¥ ª« ¢¨è¨
  30.         int     0x40
  31.  
  32. ;       mov  eax,66    ; keyboard mode definitions
  33. ;       mov  ebx,1     ; set
  34. ;       xor     ecx,ecx
  35. ;       inc  ecx      ; return scancodes
  36. ;       int  0x40
  37.  
  38. ;       mov  eax,26    ; get setup for keyboard
  39. ;       inc     ebx
  40. ;       mov  ebx,2
  41. ;       mov  ecx,1     ; base keymap
  42. ;       mov  edx,keymap
  43. ;       int  0x40
  44.  
  45. red_win:
  46.     call draw_window            ;¯¥à¢®­ ç «ì­® ­¥®¡å®¤¨¬® ­ à¨á®¢ âì ®ª­®
  47. still:                          ;®á­®¢­®© ®¡à ¡®â稪
  48.      mov  eax,10                ;Ž¦¨¤ âì ᮡëâ¨ï
  49.      int  0x40                  ;®¦¨¤ âì ᮡë⨥ ¢ â¥ç¥­¨¥ 2 ¬¨««¨á¥ªã­¤
  50.  
  51.     cmp al,0x1    ;¥á«¨ ¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
  52.     jz red_win
  53.     cmp al,0x2    ;¥á«¨ ­ ¦ â  ª« ¢¨è  â® ¯¥à¥©â¨
  54.     jz key
  55.     cmp al,0x3    ;¥á«¨ ­ ¦ â  ª­®¯ª  â® ¯¥à¥©â¨
  56.     jz button
  57.         mouse_edit_boxes editboxes,editboxes_end
  58.         jmp still    ;¥á«¨ ­¨ç¥£® ¨§ ¯¥à¥ç¨á«¥­­®£® â® á­®¢  ¢ 横«
  59. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  60. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  61. button:
  62. mov eax,17              ;¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª« ¢¨è¨
  63.     int 0x40
  64.     test ah,ah          ;¥á«¨ ¢ ah 0, â® ¯¥à¥©â¨ ­  ®¡à ¡®â稪 ᮡë⨩ still
  65.     jz  still
  66.     or eax,-1           ;¢ eax,-1 - 5 ,¡ ©â®¢ ã ­ á ¦¥ ⮫쪮 3  ¢ë©â¨
  67.     int 0x40            ;¤ «¥¥ ¢ë¯®«­ï¥âáï ¢ë室 ¨§ ¯à®£à ¬¬ë
  68.    
  69. key:
  70.     mov eax,2           ;§ £à㧨¬ §­ ç¥­¨¥ 2 ¢ ॣ¨áâ®à eax
  71.     int 0x40            ;¯®«ã稬 ª®¤ ­ ¦ â®© ª« ¢¨è¨
  72.     key_edit_boxes editboxes,editboxes_end    
  73.     jmp still
  74.  
  75. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  76. draw_window:            ;à¨á®¢ ­¨¥ ®ª­  ¯à¨«®¦¥­¨ï
  77.     mov eax,12          ;¢ ॣ¨áâà ¢­¥á⨠§­ ç¥­¨¥ = 12
  78.     mov ebx,1           ;¯à¨á¢®¨âì 1
  79.     int 0x40
  80.  
  81.     xor eax,eax                 ;®¡­ã«¨âì eax
  82.     mov ebx,50*65536+390        ;[ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
  83.     mov ecx,30*65536+200        ;[ª®®à¤¨­ â  ¯® ®á¨ y]*65536 + [à §¬¥à ¯® ®á¨ y]
  84.     mov edx,0x03AABBCC          ;0xXYRRGGBB  Y =3 - ¢ë¢®¤ à ¬ª¨, ¨á¯®«ì§ãï áªà¨­
  85.     mov esi,0x805080DD          ;0xXYRRGGBB - 梥⠧ £®«®¢ª 
  86.     mov edi,0x005080DD          ;0x00RRGGBB - 梥â à ¬ª¨
  87.     int 0x40                    ;­ à¨á®¢ âì ®ª­® ¯à¨«®¦¥­¨ï
  88.  
  89.     add eax,4                   ;¥á«¨ ¯à¥¤¯®« £ ¥âáï ¨á¯®«ì§®¢ âì ᪠«ïà­ë© ¯à®æ¥áá®à, â® ¬®¦­® ¨á¯®«ì§®¢ âì ¤ ­­î ¨­áâàãªæ¨î
  90.     mov ebx,8*65536+8           ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]  mov ecx,0x10DDEEFF               ; 0xX0RRGGBB, £¤¥ RR, GG, BB § ¤ îâ 梥â ⥪áâ 
  91.     mov edx,hed                 ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
  92.     mov esi,i_end1 - hed        ; ¤«¨­  áâப¨, ¤®«¦­  ¡ëâì ­¥ ¡®«ìè¥ 255
  93.     int 0x40                    ;¢ë¢¥á⨠⥪áâ
  94.        
  95.         draw_edit_boxes editboxes,editboxes_end  ;à¨á®¢ ­¨¥ edit box'®¢
  96.  
  97.     add eax,8                   ;”ã­ªæ¨ï 12 - ­ ç âì/§ ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ .
  98.     mov ebx,2                   ;®¤äã­ªæ¨ï 2 - § ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ .
  99.     int 0x40
  100.     ret
  101. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  102. ;DATA ¤ ­­ë¥
  103. editboxes:
  104. edit1 edit_box 168,10,50,0xffffff,0,0,0,100,ed_buffer.1,ed_focus
  105. edit2 edit_box 168,10,30,0xffffff,0,0,0,99,ed_buffer.2,ed_figure_only
  106. edit3 edit_box 35,10,70,0xffffff,0,0,0,9,ed_buffer.3,ed_figure_only
  107. edit4 edit_box 16,10,90,0xffffff,0,0,0,1,ed_buffer.4,ed_figure_only
  108. editboxes_end:
  109. data_of_code dd 0
  110. data_of_code1 dd 0
  111. ed_buffer:
  112. .1: rb 101;512;256
  113. .2: rb 100
  114. .3: rb 10
  115. .4: rb 2
  116. ;text_b: db 'Š®«-¢® ᨬ¢®«®¢'
  117. ;buffer: dd 0
  118. buffer_end:
  119. hed db   'EDITBOX optimization and retype <Lrz> date 22.01.2007'
  120. i_end1:
  121. rb 2048
  122. i_end:
  123. keymap: