Subversion Repositories Kolibri OS

Rev

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

  1. ; <Lrz> 13.02.2007 ã¡à « ¯® ¢®§¬®¦­®á⨠¬¥àæ ­¨¥, ã«ãç襭  ®¡à ¡®â ª  ¯¥à¥à¨á®¢ª¨ ä®­ 
  2. ; ¤®¡ ¢¨« ä¨âçã ¢­¥á¥­¨ï 0å0 ¯®  ¤à¥áã ed_size ¨­ ç¥ ã Maxxx32 ¡ë«¨ ­¥á®áâ몮¢ª¨ ¢ ª®¤¥. à¥ç­¨  ¢ ⮬, çâ® ®¯â¨¬¨§ æ¨ï ¡ë«  ᢥ¤¥­  ª ⮬ã çâ® ï ­¥ ç¨á⨫ ᨬ¢®«ë ¢ ¡ãä¥à¥, ª®£¤  㤠«ï«, ï ¯à®áâ® ¨å ­¥ ¢ë¢®¤¨«, ¨ ¯®â®¬ ª®£¤  ¢­®á¨«áï ­®¢ë© ᨬ¢®«, ®­ ¯® ¯à®áâã § â¨à « 㦥 ¨¬¥î騩áï. …᫨ ¡ë ¯à®£à ¬¬  ®¡à ¡ â뢠«  ª®­¥æ áâப¨ ¯® ed_size, ¯à®¡«¥¬ ¡ë ­¥ ¢®§­¨ª«®. ® ᥩç á íâ®â ­¥¤®áâ â®ª ¨á¯à ¢«¥­.
  3. ; <Lrz> 01.02.2007 ¤®à ¡®âª  edit_box, ¨á¯à ¢¨« ¡ £¨.
  4. ; <Lrz> 26.01.2007 ­®à¬ «ì­ ï à ¡®â  ª®¬¯ ­¥­â  ¨á¯à ¢¨« äãªæ¨î .check_offset
  5. ; <Lrz> 24.01.2007 ¯®ä¨ªá¥« ¡ £¨ ¢ë§¢ ­ë¥ ­¥ ¯à ¢¨«ì­ë¬ ª®¤®¬ )).
  6. ; <Lrz> 22.01.2007 ¨§¡ ¢¨«áï ®â £«îª®¢ ¯à¨ à ¡®â¥ á ¢ë¤¥«¥­¨¥¬ ¨ 㤠«¥­¨¥, ª®à४⭠ï à ¡®â  ª« ¢¨è¥© del & backspase
  7. ; <Lrz> 20.01.2007 ॠ«¨§®¢ « ¢ë¤¥«¥­¨¥ ⥪áâ  ¯® shift
  8. ; <Lrz> 12.12.2006 ॠ«¨§®¢ « ¯®¤¤¥à¦ªã ª­®¯ª¨ insert ¨ ᥣ®¤ï ª®¬¯®­¥­â ¯®ç⨠ࠡ®â ¥â!!!!
  9. ; <Lrz> 07.12.2006 ¯à®¤®«¦ ¥âáï à ¡®â  ­ ¤ ¯¥à¥à ¡®âª®© ª®¬¯®­¥­â ,¨§¬¥­¥­¨ï¬ ¯®¤¢¥à£«¨áì ¬­®£¨¥ ä㭪樨, ¯¥à¥à ¡®â ­ ¢ë¢®¤ ⥪áâ ,   â ª  ¦¥  «£®à¨â¬ ¢­¥á¥­¨ï ᨬ¢®«®¢.
  10. ; <Lrz> 03.09.2006 ¯® ¢®§¬®¦­®á⨠®âª § «áï ®â 16 ¡¨â­®©  à¨ä¬¥â¨ª¨, ¤®¡ ¢¨« ­®¢ë¥ ¡ £¨
  11. ; <Lrz> 09.08.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï à ¡®âë ª®­¯®ª DEL ¨ Backspace, 㬥­ì襭 à §¬¥à ¢ë¯®«­ï¥¬®£® ª®¤ .
  12. ; <Lrz> 21.07.2006 ¤®¡ ¢«¥­  äã­ªæ¨ï ª­®¯ª¨ Del, ⥯¥àì ¬®¦­® 㤠«ïâì ᨬ¢®«ë ¯à¨ ¯®¬®é¨ ¤ ­­®© ª« ¢¨è¨
  13. ; €¢â®à: …¢â¨å®¢ Œ ªá¨¬ (Maxxxx32) email: maxxxxm@mail.ru
  14. ; „ â  ¯®á«¥¤­¨å ¨§¬¥­¥­¨©: 13.06.06 10:40
  15. ;   ¯¨è¨â¥ ¢ ¨á室­®¬ ª®¤¥ ᢮¥© ¯à®£à ¬¬ë use_edit_box,
  16. ; íâ® ¢áâ ¢¨â ­¥®¡å®¤¨¬ë¥ ¯à®æ¥¤ãàë ¢ ª®¤ ¢ è¥© ¯à®£à ¬¬ë.
  17. ;  à®æ¥¤ãàë:
  18. ;   edit_box.draw - ¯®«­ ï ¯¥à¥à¨á®¢ª ;
  19. ;   edit_box.key - ®¡à ¡®âª  ª« ¢¨ âãàë;
  20. ;   edit_box.mouse - ®¡à ¡®âª  ¬ëè¨;
  21. ;   edit_box.focus - ãáâ ­®¢ª  䮪ãá ;
  22. ;   edit_box.blur - ¥£® à §¬ë¢ ­¨¥;
  23. ;   edit_box.get_n - ¯®«ãç¨âì ª®«¨ç¥á⢮ ¯à®à¨á®¢ë¢ ¥¬ëå ᨬ¢®«®¢.
  24. ;  à¨ ¢ë§®¢¥ «î¡ëå ¨§ íâ¨å ¯à®æ¥¤ãà ¢ ॣ¨áâॠedi á«¥¤ã¥â
  25. ; ®áâ ¢¨âì 㪠§ â¥«ì ­  áâàãªâãàã.
  26. ;  à¨¬¥à áâàãªâãàë:
  27. ; some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text
  28. ; ¤«¨­ , ¢ëá®â , ¢¥àå, 梥â ä®­ , 梥â à ¬ª¨, ¥á«¨ ¢ë¡à ­,
  29. ; 梥â à ¬ª¨, ¥á«¨ ­¥ ¢ë¡à ­, ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ ᨬ¢®«®¢,
  30. ; 㪠§ â¥«ì ­  ¡ãä¥à, £¤¥ ¡ã¤ãâ åà ­¨âáï ᨬ¢®«ë. ãä¥à ¤®«¦¥­
  31. ; ®ª ­ç¨¢ âìáï ­ã«¥¬, ­ ¯à¨¬¥à ¥á«¨ ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ 255:
  32. ;  some_edit_text:
  33. ;       rb      256 ;255+1
  34.  
  35. ;  à¨¬¥à ¢ë§®¢  ¯à®æ¥¤ãàë:
  36. ;       mov     edi,some_edit
  37. ;       call    edit_box.draw
  38.  
  39. ;  à¨ ¢ë§®¢¥ ¯à®æ¥¤ãàë edit_box.key ª®¤ ª« ¢¨è¨ ¤®«¦¥­
  40. ; ­ å®¤¨âáï ¢ ah, â® ¥áâì ¯¥à¥¤ ¢ë§®¢®¬ í⮩ ¯à®æ¥¤ãàë ­ ¤® ¢ë§¢ âì
  41. ; 2-ãî á¨á¥¬­ãî äã­ªæ¨î, ­ ¯à¨¬¥à:
  42. ;       mov     eax,2
  43. ;       int     0x40
  44. ;       mov     edi,some_edit1
  45. ;       call    edit_box.key
  46. ;       mov     edi,some_edit2
  47. ;       call    edit_box.key
  48. ;  ¥à¥¤ ¢ë§®¢®¬ ®¡à ¡®â稪  ¬ëè¨ á«¥¤ã¥â ¯à®¢¥à¨âì, ï¥âáï «¨ ®ª­®
  49. ;  ªâ¨¢­ë¬.
  50. ;  …᫨ 饫箪 ¬ëè¨ ¡ë« ¯à®©§¢¥¤¥­ §  ¯à¥¤¥« ¬¨ edit box
  51. ; 䮪ãá â¥àï¥âáï.
  52. macro use_edit_box
  53. {
  54. edit_box:
  55. ed_width        equ [edi]               ;è¨à¨­  ª®¬¯®­¥­â 
  56. ed_left         equ [edi+4]             ;¯®«®¦¥­¨¥ ¯® ®á¨ å
  57. ed_top          equ [edi+8]             ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
  58. ed_color        equ [edi+12]            ;梥â ä®­  ª®¬¯®­¥­â 
  59. ed_focus_border_color   equ [edi+16]    ;梥â à ¬ª¨ ª®¬¯®­¥­â 
  60. ed_blur_border_color    equ [edi+20]    ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
  61. ed_text_color   equ [edi+24]            ;梥â ⥪áâ 
  62. ed_max          equ [edi+28]                    ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
  63. ed_text         equ [edi+32]                    ;㪠§ â¥«ì ­  ¡ãä¥à
  64. ed_flags        equ [edi+36]            ;ä« £¨
  65. ed_size equ [edi+38]                    ;ª®«-¢® ᨬ¢®«®¢
  66. ed_pos  equ [edi+42]                    ;¯®§¨æ¨ï ªãàá®à 
  67. ed_offset       equ [edi+46]            ;ᬥ饭¨¥
  68. cl_curs_x       equ [edi+50]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
  69. cl_curs_y       equ [edi+54]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
  70. ed_shift_pos    equ [edi+58]
  71. ed_height=14 ; ¢ëá®â 
  72. shift_color=0x6a9480
  73. ed_insert=10000b
  74. ed_insert_cl=1111111111101111b
  75. ;==========================================================
  76. ;=== ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ =================================
  77. ;==========================================================
  78. .draw:
  79. pusha
  80. ;--- à¨á㥬 à ¬ªã ---
  81.         call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
  82. .draw_bg_cursor_text:
  83. ;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
  84.         call    .check_offset           ;¢ëç¨á«¥­¨¥ ¯®§¨æ¨¨ ªãàá®à  áâ ¡¨«ì­ 
  85. ;--- à¨á㥬 ¢­ãâ७­îî ®¡« áâì ---
  86.         call    .draw_bg                ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª à ¡®ç¥© ®¡« áâ¨
  87. .draw_cursor_text:
  88. ;--- à¨á㥬 ªãàá®à ---
  89.         ;--- ¬®¦¥â ¥£® ­¥ ­ ¤® à¨á®¢ âì ----
  90.         test    word ed_flags,ed_focus
  91.         je      @f
  92.         call    .draw_cursor
  93. @@:
  94.         call    .draw_text
  95. popa
  96. ret
  97.  
  98. ;.str:
  99. ;       mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
  100. ;        ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
  101. ;       cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
  102. ;       jb @f
  103. ;       xor edx,edx  ;®ç¨áâ¨âì edx
  104. ;       div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
  105. ;       push edx     ;¯®«®¦¨âì ¢ á⥪
  106. ;       ;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
  107. ;       call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
  108. ;       pop eax
  109. ;       @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
  110. ;       ;sbb al,$69  ;- ç¥áâ­® ¤ ­­ ï ¨­áâàãªæ¨ï ¬¥­ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ­¥ §­ î ª ª íâ® à ¡®â ¥â
  111. ;       ;das        ;¯®á«¥ ¤ ­­®© ª®¬ ­¤ë ª ª ¡ë ¯à®¨á室¨â 㬥­ì襭¨¥ al ­  66h  (¢ ª­¨£¥ ­ ¯¨á ­® ¤à㣮¥)
  112. ;       or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  ç¥¬ ¤¢¥ ¢ëè¥
  113. ;       stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
  114. ;
  115. ;       ret         ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
  116.  
  117. ;----------------------------------------------------------
  118. ;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ⥪áâ  --------------------------
  119. ;----------------------------------------------------------
  120. .draw_text:
  121. ;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
  122. ;--- çâ®¡ë ¬ãá®à ­¥ à¨á®¢ âì ---
  123.         call    .get_n
  124.         mov     esi,ed_size
  125.         mov     ebx,ed_offset
  126.         sub     esi,ebx
  127.         cmp     eax,esi
  128.         jae     @F
  129.         mov     esi,eax         ;çâ®¡ë ­¥ ¢ë室¨âì §  ¯à¥¤¥«ë íªà ­ 
  130. ;--- à¨á㥬 ⥪áâ ---
  131. @@:     mov     eax,4
  132.         mov     ebx,ed_left
  133.         mov     edx,ed_offset
  134.         add     ebx,2
  135.         shl     ebx,16
  136.         mov     bx,ed_top
  137.         add     ebx,4
  138.         mov     ecx,ed_text_color
  139.         add     edx,ed_text
  140.         int     0x40
  141. ret
  142. ;----------------------------------------------------------
  143. ;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ä®­  ----------------------------
  144. ;¢å®¤­ë¥ ¤ ­­ë¥
  145. ;eax
  146. ;edx - color
  147. ;----------------------------------------------------------
  148. .draw_bg_eax:
  149.         mov     ecx,ed_top
  150.         add     ecx,1
  151.         shl     ecx,16
  152.         mov     cx,13
  153.         mov     eax,13
  154.         int     0x40
  155. ret
  156.  
  157.         jmp     @f
  158. ;¢å®¤ ⮫쪮 梥â edx
  159. .draw_bg:
  160.         mov     ebx,ed_left
  161.         add     ebx,1
  162.         shl     ebx,16
  163.         mov     bx,ed_width
  164.         sub     ebx,1
  165.  
  166. @@:
  167.         mov     ecx,ed_top
  168.         mov     eax,13
  169.         add     ecx,1
  170.         shl     ecx,16
  171.         mov     edx,ed_color
  172.         mov     cx,ed_height
  173.         sub     ecx,1
  174.         int     0x40
  175. ret
  176.  
  177. ;----------------------------------------------------------
  178. ;--- ¯à®æ¥¤ãà  ¯®«ã祭¨ï ª®«¨ç¥á⢠ ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨­¥ ª®¬¯®­¥­â  --------------
  179. ;----------------------------------------------------------
  180. .get_n:
  181.         mov     eax,ed_width    ;¯®«ã祬 è¨à¨­ã ª®¬¯®­¥­â 
  182.         xor     edx,edx   ;१ã«ìâ â à á¯®«®£ ¥âáï ¢ ¯ à¥ edx:eax ¢ eax - ®áâ â®ª
  183.         sub     eax,4           ;¢ëç⨬ 4
  184.         mov     ebx,6           ;§ £à㧬¨ ¤¥«¨â¥«ì
  185.         div     ebx             ;à §¬¤¥«¨¬ ­  6
  186. ret
  187.  
  188. ;----------------------------------------------------------
  189. ;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï ªãàá®à  --------------------------
  190. ;----------------------------------------------------------
  191. .clear_cursor:
  192.         mov     edx,ed_color
  193.         test    word ed_flags,ed_shift
  194.         je      @f
  195.         mov     edx,shift_color
  196. @@:    
  197.         mov     ebx,cl_curs_x
  198.         mov     ecx,cl_curs_y
  199.         jmp     .draw_curs
  200. .draw_cursor:
  201.  
  202.         mov     edx,ed_text_color
  203. @@:
  204.         mov     ebx,ed_pos
  205.         mov     ecx,ed_offset
  206.         sub     ebx,ecx
  207.  
  208.         lea     ebx,[ebx*2+ebx]
  209.         shl     ebx,1
  210.         ;imul   ebx,6
  211.         add     bx,ed_left
  212.         mov     ecx,ed_top
  213.         inc     ebx
  214.         add     ecx,2
  215.         mov     ebp,ebx
  216.         shl     ebx,16
  217.         mov     bx,bp
  218.         mov     ebp,ecx
  219.        
  220.         shl     ecx,16
  221.         mov     cx,bp
  222.         add     cx,ed_height-4
  223.        
  224.         mov     cl_curs_x,ebx
  225.         mov     cl_curs_y,ecx
  226. .draw_curs:              
  227.         mov     eax,38
  228.         int     0x40
  229. ret
  230.  
  231. ;----------------------------------------------------------
  232. ;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï à ¬ª¨ ----------------------------
  233. ;----------------------------------------------------------
  234. .draw_border:
  235. ;--- 梥â à ¬ª¨ ---
  236.         test    dword ed_flags,ed_focus
  237.         mov     edx,ed_focus_border_color
  238.         jne     @f
  239.         mov     edx,ed_blur_border_color
  240. @@:
  241. ;--- ᢥàåã ---
  242.         mov     eax,38
  243.         mov     ebx,ed_left
  244.         mov     ecx,ebx
  245.         shl     ebx,16
  246.         mov     bx,cx
  247.         add     bx,ed_width
  248.         mov     ecx, ed_top
  249.         mov     esi,ecx
  250.         shl     ecx,16
  251.         mov     cx,si
  252.         int     0x40
  253.  
  254. ;--- á­¨§ã ---
  255.         mov     esi,ecx
  256.         add     ecx,ed_height
  257.         mov     ebp,ecx
  258.         shl     ecx,16
  259.         mov     cx,bp
  260.         int     0x40
  261.  
  262. ;--- á«¥¢  ---
  263.         mov     cx,si
  264.         mov     ebp,ebx
  265.         sub     bx,ed_width
  266.         int     0x40
  267.  
  268. ;--- á¯à ¢  ---
  269.         mov     ebx,ebp
  270.         shl     ebx,16
  271.         mov     bx,bp
  272.         int     0x40
  273. ret
  274. ;----------------------------------------------------------
  275. ;--- ¯à®¢¥àª , § è¥« «¨ ªãàá®à §  £à ­¨æë ¨, ¥á«¨ ­ ¤®, ---
  276. ;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥ ------------------------------------
  277. ;--- eax = -1, ¥á«¨ ­¥ ¨§¬¥­¨«®áì ¨«¨ eax = 0, ¥á«¨
  278. ; ¨§¬¥­¨«®áì
  279. ;----------------------------------------------------------
  280. .check_offset:
  281. pushad
  282.         mov     ecx,ed_pos
  283.         mov     ebx,ed_offset
  284.         cmp     ebx,ecx
  285.         ja      .sub_8
  286.  
  287.         push    ebx
  288.         call    .get_n                  ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ à¥ ॣ¨áâ஢ edx:eax
  289.         pop     ebx
  290.         mov     edx,ebx
  291.         add     edx,eax         ;ed_offset+width editbox
  292.         cmp     edx,ecx
  293.         ja      @f
  294.  
  295.         mov     edx,ed_size
  296.         cmp     edx,ecx
  297.         je      .add_end
  298.  
  299.         sub     edx,ecx
  300.         cmp     edx,8
  301.         jbe     .add_8
  302.         add     ebx,8
  303.         jmp     .chk_d
  304.  
  305. .sub_8: cmp     ecx,0
  306.         je      .sub_min
  307.         cmp     ebx,8
  308.         jbe     .sub_min
  309.         sub     ebx,8   ;ebx=ed_offset
  310.         jmp     .chk_d
  311. .sub_min:
  312.         xor     ebx,ebx
  313.         jmp     .chk_d
  314.  
  315. .add_end:sub    edx,eax
  316.         mov     ebx,edx
  317.         jmp     .chk_d
  318. .add_8: add     ebx,edx
  319.  
  320. ;       ;-----------  ®â« ¤ª 
  321. ;       pushad
  322. ;       mov     [data_of_code],0
  323. ;       mov eax,ebx;ed_offset
  324. ;       mov edi,data_of_code
  325. ;       call .str
  326. ;       ;à¨á®¢ ­¨¥ ä®­ 
  327. ;       mov eax,13
  328. ;       mov ebx,178*65536+36
  329. ;       mov ecx,28*65536+10
  330. ;       xor edx,edx
  331. ;       int 0x40
  332. ;       ;¢ë¢®¤ §­ ç¥­¨ï ­  íªà ­
  333. ;       mov eax,4
  334. ;       mov ebx,180*65536+30
  335. ;       mov ecx,0x10DDBBCC
  336. ;       mov edx,data_of_code
  337. ;       mov esi,4
  338. ;       int 0x40
  339. ;       popad
  340. ;       ;----------- ®â« ¤ª 
  341.  
  342. .chk_d: mov     ed_offset,ebx
  343.  
  344.         call    .draw_bg
  345.         mov     dword [esp+28],-1
  346. popad
  347.         ret
  348.  
  349. @@:
  350.         mov     dword [esp+28],0
  351. popad
  352.         ret
  353. ;==========================================================
  354. ;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
  355. ;==========================================================
  356. .key:
  357. pusha
  358.         test    word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  359.         je     .no_figure ;@f
  360.  
  361. ;à®¢¥àª  ­  ­ ¦ âë shift
  362.         xor     ecx,ecx
  363.         push    eax    
  364.         inc     ecx
  365.         mov     eax,66
  366.         mov     ebx,3
  367.         int     0x40
  368.         test    al,0x03
  369.         je      @f
  370.         or      word ed_flags,ed_shift   ;ãáâ ­®¢¨¬ ä« £
  371.  
  372. @@:     pop     eax   ;¢®ááâ ­®¢¨¬ áç¨â ­ë© ᨬ¢®« á ª« ¢¨ âãàë
  373. ;----------------------------------------------------------
  374. ;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
  375. ;----------------------------------------------------------
  376.         cmp     ah,8
  377.         jz      .backspace
  378.         cmp     ah,0xb6
  379.         jz      .delete
  380.         cmp     ah,176
  381.         jz      .left
  382.         cmp     ah,179
  383.         jz      .right
  384.         cmp     ah,180
  385.         jz      .home
  386.         cmp     ah,181
  387.         jz      .end
  388.         cmp     ah,185  ;insert
  389.         jz      .insert
  390. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  391. ;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§
  392. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;   
  393.         cmp     ah,177
  394.         jz      .no_figure
  395.         cmp     ah,178
  396.         jz      .no_figure
  397.         cmp     ah,27   ;ESC - ª« ¢¨è  ))
  398.         jz      .no_figure
  399. ;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
  400.         test    word ed_flags,ed_figure_only  ; ⮫쪮 æ¨äàë ?
  401.         jz      @f
  402.         cmp     ah,'0'
  403.         jb      .no_figure
  404.         cmp     ah,'9'
  405.         ja      .no_figure
  406.  
  407.  
  408. ;¯à®¢¥àª  ­  shift
  409. @@:     test    word ed_flags,ed_shift_on
  410.         je      @f
  411.         ;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
  412.         push    eax
  413.         mov     edx,ed_size
  414.         mov     ecx,ed_pos
  415.         call    .del_char
  416. ;clear
  417.         mov     ebp,ed_size
  418.         call    .clear_bg
  419. ;;;;
  420.         mov     eax,ed_shift_pos
  421.         mov     ebx,ed_size
  422.         sub     ebx,eax
  423.         mov     ed_size,ebx
  424.         pop     eax
  425.  
  426.         ; ¯à®¢¥à塞, ­ å®¤¨âáï «¨ ªãàá®à ¢ ª®­æ¥
  427. @@:     mov     ecx,ed_size
  428.         mov     edx, ed_max
  429.         test    word ed_flags,ed_insert
  430.         jne     @f
  431.         cmp     ecx,edx
  432.         jae     .no_figure
  433. @@:     mov     ebx, ed_pos
  434.         cmp     ebx,edx
  435.         jl      @f ; ¥á«¨ ¬¥­ìè¥ ¨«¨ à ¢­®
  436. .no_figure:
  437.         popa
  438.         ret
  439. .insert: test   word ed_flags,ed_insert ;not    word ed_insert
  440.          je     .insert_1
  441.          and    word ed_flags,ed_insert_cl
  442.         jmp     .no_figure
  443. .insert_1:
  444.         or      word ed_flags,ed_insert
  445.         jmp     .no_figure
  446. .ins_v:
  447.         dec     dword [ebp+38];ed_size    ;processing is insert
  448.         sub     esi,ecx
  449.         add     esi,ebx
  450.         mov     edi,esi
  451. ;clear
  452. pusha
  453.         mov     edi,ebp
  454.         mov     ebp,ed_pos
  455.         call    .clear_bg
  456. popa
  457.         jmp     .In_k
  458. @@:     ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à  ¢¯à ¢®
  459.         mov     ecx,ed_size
  460.         push    edi eax
  461.         mov     ebp,edi
  462.         mov     esi,ed_text     ; “ª § â¥«ì ­  ¡ãä¥à
  463.                                 ;ã¤¥¬ à ¡®â âì á® áâப®©
  464.         add     esi,ecx         ;add ed_size ¤®¡ ¢¨¬ max size
  465.         mov     edi,esi
  466.  
  467.         cmp     ecx,ebx         ;…᫨ ã ­ á ¯®§¨æ¨ï ªãàá®à  = ⥪ã饬ã à §¬¥àã ­ ¯¥ç â ­­ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®­æ¥
  468.         je      .In_k
  469.  
  470.         test    word [ebp+36],ed_insert ;IF insert is enable  â.ª. edi ¨§¬¥­¥­  ¤à¥á㥬 ç¥à¥§ ebp
  471.         jne     .ins_v
  472. ;clear
  473. pusha
  474.         mov     edi,ebp
  475.         mov     ebp,ed_size
  476.         call    .clear_bg
  477. popa
  478.  
  479.  
  480.         sub     ecx,ebx         ; ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥­¨ï.
  481.         inc     edi             ;‘¬¥á⨬ ­ è¨ ᨬ¢®«ë ¢ ¯à ¢®
  482.         std
  483.         inc     ecx
  484.    @@: 
  485.         ;--------
  486.         lodsb
  487.         stosb
  488.         ;--------
  489.         loop    @b
  490. .In_k:  cld
  491.         pop eax
  492.         mov al,ah
  493.         stosb
  494.         pop edi
  495. ; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
  496.         ; 㢥«¨ç¨¢ ¥¬ §­ ç¥­¨¥ à §¬¥à  ¨ ¯®§¨æ¨¨
  497.         inc      dword ed_size
  498.         inc      dword ed_pos
  499.         call    .draw_all2
  500.         jmp     .shift;.draw_cursor_text
  501. .delete:       
  502.         mov     edx,ed_size
  503.         mov     ecx,ed_pos
  504.         cmp     edx,ecx
  505.         jg      .bac_del
  506.         test    word ed_flags,ed_shift_on
  507.         jne     .del_bac
  508.         popa
  509.         ret
  510. .bac_del:      
  511.         call    .del_char
  512.         jmp     .draw_all
  513.        
  514. ;--- ­ ¦ â  ª« ¢¨è  backspace ---
  515. .backspace:
  516.         ; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
  517.         mov     edx,ed_size
  518.         mov     ecx,ed_pos
  519.         test    ecx,ecx
  520.         jnz     .del_bac
  521.         test    word ed_flags,ed_shift_on
  522.         jne     .bac_del
  523.         popa
  524.         ret
  525. .del_bac:
  526.         cmp     edx,ecx ;if ed_pos=ed_size
  527.         je      @f
  528.         dec     ecx
  529.         call    .del_char
  530. @@:     test    word ed_flags,ed_shift_on
  531.         jne     .bac_del
  532.         dec      dword ed_pos
  533.  
  534. .draw_all:
  535.         push    .shift;.draw_cursor_text;eax
  536.  
  537.         test    word ed_flags,ed_shift_on
  538.         je      @f
  539.         mov     eax,ed_shift_pos
  540.         mov     ebx,ed_size
  541.         sub     ebx,eax
  542.         mov     ed_size,ebx
  543.  
  544.         call    .clear_cursor
  545.         call    .check_offset
  546.         call    .draw_bg
  547.  
  548.         ret
  549.  
  550. @@:     dec      dword ed_size
  551.  
  552. .draw_all2:
  553.         and    word ed_flags,ed_shift_cl
  554.         call    .clear_cursor
  555.         call    .check_offset
  556.         mov     ebp,ed_size
  557.         call    .clear_bg
  558.         ret
  559.         ;jmp    .shift
  560. ;--- ­ ¦ â  ª« ¢¨è  left ---
  561. .left:  call    .sh_enable
  562.         mov     ebx,ed_pos
  563.         test    ebx,ebx
  564.         jz      .nd_k
  565.         call    .clear_cursor
  566.         dec      dword ed_pos
  567.         jmp     .nd_k
  568. ;--- ­ ¦ â  ª« ¢¨è  right ---
  569. .right: call    .sh_enable
  570.         mov     ebx,ed_pos
  571.         cmp     ebx,ed_size
  572.         je      .nd_k
  573.         call    .clear_cursor
  574.         inc     dword  ed_pos
  575.         jmp     .nd_k
  576. .home:  call    .sh_enable
  577.         mov     ebx,ed_pos
  578.         test    ebx,ebx
  579.         jz      .nd_k
  580.         call    .clear_cursor
  581.         xor     eax,eax
  582.         mov     ed_pos,eax
  583.         jmp     .nd_k
  584.  
  585. .end:   call    .sh_enable
  586.         mov     ebx,ed_pos
  587.         cmp     ebx,dword ed_size
  588.         je      .nd_k
  589.         call    .clear_cursor
  590.         mov     eax,ed_size
  591.         mov     ed_pos,eax
  592. .nd_k:  call    .check_offset
  593.         ;test   eax,eax
  594.         ;jz     .draw_bg_cursor_text
  595.         call    .draw_cursor
  596.  
  597.  
  598.  
  599. .shift: ;;;;;;;SHIFT
  600.         ;test   ed_flags,ed_
  601.  
  602.         ;mov    ebp,ed_size
  603.         ;call   .clear_bg
  604.         test      word ed_flags,ed_shift
  605.         je      .f_exit
  606. ;;;;;;SHIFT end
  607.         mov     eax,dword       ed_pos
  608.         mov     ebx,dword       ed_shift_pos
  609.         cmp     eax,ebx
  610.         jae     .sh_n
  611.         push    eax  ;¬¥­ì襥 ¢ eax
  612.         push    ebx  ;¡®«ì襥
  613.         jmp     .sh_n1
  614.                      ;¥á«¨ ¨­ ç¥
  615. .sh_n:  push    ebx  
  616.         push    eax
  617. .sh_n1:
  618. ;        jmp    .draw_all2
  619. ;;;;;;;;;;;;;;;;;;;;;;;;;
  620.         ;call   .clear_cursor
  621.         call    .check_offset
  622.         call    .get_n
  623.         mov     edx,eax ;size of ed_box
  624. ;       push    eax
  625.         mov     ecx,ed_offset
  626.         add     eax,ecx ;eax = w_off= ed_offset+width
  627.         mov     ebp,eax ;save
  628.         pop     ebx     ;¡®«ì襥
  629.         pop     eax     ;¬¥­ì襥
  630.  
  631.        
  632.         cmp     eax,ecx         ;áà ¢­¥­¨¥ á ¬¥­ì襣® á offset.
  633.         jae     .f_f            ;¥á«¨ ¡®«ìè¥
  634.         xor     eax,eax
  635.         cmp     ebp,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
  636.         jb      @f
  637.         sub     ebx,ecx
  638.         jmp     .nxt_f
  639. @@:     mov     ebx,ebp
  640.         sub     ebx,ecx
  641.         jmp     .nxt_f
  642.  
  643. .f_f:  
  644.         sub     eax,ecx
  645.         cmp     ebp,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
  646.         jle     @f
  647.         sub     ebx,ecx
  648.         sub     ebx,eax
  649.         jmp     .nxt_f
  650. @@:
  651.         mov     ebx,ebp
  652.         sub     ebx,ecx
  653.         sub     ebx,eax
  654. .nxt_f:
  655.         mov     edx,ebx
  656.         lea     ebx,[eax*2+eax]
  657.         shl     ebx,1
  658.         add     ebx,ed_left
  659.         inc     ebx
  660.         shl     ebx,16
  661.         lea     ecx,[edx*2+edx]
  662.         shl     ecx,1  
  663.         mov     bx,cx
  664.         mov     edx,shift_color
  665.         call    .draw_bg_eax
  666.         and    word ed_flags,1111111111111011b
  667.         call    .enable_null
  668.         jmp     .draw_cursor_text
  669. ;;;;;;;;;;;;;;;;;;;;;
  670.  
  671. .f_exit: and    word ed_flags,ed_shift_cl
  672.         call    .enable_null
  673.         jmp     .draw_cursor_text
  674.  
  675. ;¯à®¢¥àª  á®áâ®ï­¨ï shift ¡ë« «¨ ®­ ­ ¦ â à ­ìè¥?
  676. .sh_enable:
  677.         test    word ed_flags,ed_shift
  678.         je      @f
  679.         test    word ed_flags,ed_shift_on
  680.         jne     .sh_ext_en
  681.         push    dword ed_pos
  682.         pop     dword ed_shift_pos
  683.         or      word ed_flags,ed_shift_on
  684.         ret
  685.  
  686. @@:     and     word ed_flags,ed_shift_cl
  687.         ret
  688. .sh_ext_en:     mov     ebp,ed_size
  689.                 call    .clear_bg
  690.                 ret
  691.  
  692. ;äã­ªæ¨ï ¢­¥á¥­¨ï 0 ¯®  ¤à¥áã ed_size+1
  693. .enable_null:
  694.         pusha
  695.         mov     eax,ed_size
  696.         mov     ebx,ed_text
  697.         add     eax,ebx
  698.         inc     eax
  699.         xor     ebx,ebx
  700.         mov     [eax],bl
  701.         popa
  702.         ret
  703.  
  704.         ;- 㤠«¥­¨¥ ᨬ¢®« 
  705.         ;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
  706. .del_char:
  707.         mov     esi,ed_text
  708.         test    word ed_flags,ed_shift_on
  709.         je      @f
  710.         mov     eax,dword ed_shift_pos
  711.         mov     ebx,esi
  712.         cmp     eax,ecx
  713.         jae     .dh_n
  714.  
  715.         mov     ed_pos,eax      ;çâ® ¡ë ­¥ ¡ë«® ã¡¥£ ­¨ï ªãàá®à 
  716.         mov     ebp,ecx
  717.         sub     ebp,eax
  718.         add     ebx,eax  ;eax ¬¥­ìè¥
  719.         sub     edx,ecx
  720.         add     esi,ecx
  721.  
  722.  
  723.         mov     ed_shift_pos,ebp
  724.         jmp     .del_ch_sh
  725.                      ;¥á«¨ ¨­ ç¥
  726. .dh_n:  
  727.         mov     ebp,eax
  728.         sub     ebp,ecx
  729.         add     ebx,ecx
  730.         sub     edx,eax
  731.         add     esi,eax
  732.         mov     ed_shift_pos,ebp
  733.         jmp     .del_ch_sh
  734.  
  735. @@:     add     esi,ecx ;㪠§ â¥«ì + ᬥ饭¨¥ ª ॠ«ì­®¬ã ¡ãää¥àã
  736.         mov     ebx,esi
  737.         inc     esi
  738.         cld
  739.  
  740.         sub     edx,ecx
  741. .del_ch_sh:
  742.  
  743.         push    edi
  744.         mov     edi,ebx
  745. @@:
  746.         lodsb
  747.         stosb
  748.         dec edx
  749.         jns @b
  750.        
  751.         pop edi
  752.         ret
  753.  
  754. ;¢ëç¨á«¨âì § ªà è¨¢ ¥¬ãî ®¡« áâì
  755. ;ᮣ« è¥­¨¥ ¢ ebp - ¯¥à¥¤ ¥âáï ed_size
  756. .clear_bg:
  757.         call    .get_n  ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨­ë ª®¬¯®­¥­â 
  758.         push    eax
  759.         mov     ebx,ed_offset
  760.         add     eax,ebx ;eax = w_off= ed_offset+width
  761.         mov     ebx,ebp ;ed_size
  762.        
  763.         cmp     eax,ebx
  764.         jb      @f
  765.         mov     eax,ed_pos
  766.         sub     ebx,eax
  767.         mov     ecx,ed_offset
  768.         sub     eax,ecx
  769.         jmp     .nxt
  770. @@:     mov     ebx,ed_pos
  771.         push    ebx
  772.         sub     eax,ebx
  773.         mov     ebx,eax ;It is don't optimal
  774.        
  775.         pop     eax     ;ed_pos
  776.         mov     ecx,ed_offset
  777.         sub     eax,ecx
  778.  
  779. .nxt:
  780.         mov     ebp,eax  ;¯à®¢¥àª  ­  ¢ë室 § ªà è¨¢ ¥¬®© ®¡« á⨠§  ¯à¥¤¥«ë ¤«¨­ë
  781.         add     ebp,ebx
  782.         pop     edx
  783.         cmp     ebp,edx
  784.         je      @f
  785.         inc     ebx
  786.  
  787. @@:     mov     edx,ebx
  788.         lea     ebx,[eax*2+eax]
  789.         shl     ebx,1
  790.         add     ebx,ed_left
  791.         inc     ebx
  792.         shl     ebx,16
  793.         lea     ecx,[edx*2+edx]
  794.         shl     ecx,1  
  795.         mov     bx,cx
  796.         mov     edx,ed_color
  797.         call    .draw_bg_eax
  798.         ret
  799.  
  800.  
  801. ;==========================================================
  802. ;=== ®¡à ¡®âª  ¬ëè¨ =======================================
  803. ;==========================================================
  804. .mouse:
  805. pusha
  806. ;----------------------------------------------------------
  807. ;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
  808. ;----------------------------------------------------------
  809.         mov     eax,37
  810.         mov     ebx,2
  811.         int     0x40
  812. ;----------------------------------------------------------
  813. ;--- ¯à®¢¥à塞 á®áâ®ï­¨¥ ----------------------------------
  814. ;----------------------------------------------------------
  815.         test    eax,1
  816.         jnz     .mouse_left_button
  817. @@:     popa
  818.         ret
  819.  
  820. .mouse_left_button:
  821. ;----------------------------------------------------------
  822. ;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ -----------------------------
  823. ;----------------------------------------------------------
  824.         mov     eax,37
  825.         xor     ebx,ebx
  826.         inc     ebx
  827.         int     0x40
  828. ;----------------------------------------------------------
  829. ;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
  830. ;----------------------------------------------------------
  831.         mov     ebx,ed_top
  832.         cmp     ax,bx
  833.         jl      ._blur;.mouse_end_no_focus
  834.  
  835.         add     bx,ed_height
  836.         cmp     ax,bx
  837.         jg      ._blur;.mouse_end_no_focus
  838.  
  839.         shr     eax,16
  840.  
  841.         mov     bx,ed_left
  842.         cmp     ax,bx
  843.         jl      ._blur;.mouse_end_no_focus
  844.  
  845.         add     bx,ed_width
  846.         cmp     ax,bx
  847.         jg      ._blur;.mouse_end_no_focus
  848. ;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  ---
  849.         push    eax
  850.         call    .clear_cursor
  851.         pop     eax
  852.         xor     dx,dx
  853.         sub     ax,ed_left
  854.         add     ax,2
  855.         mov     bx,6
  856.         div     bx
  857.         add     ax,ed_offset
  858.         cmp     ax,ed_size
  859.         jna      @f
  860.         mov     ax,ed_size
  861. @@:
  862.         mov     ed_pos,ax
  863.         call    .check_offset
  864.         call    .draw_cursor
  865. ;----------------------------------------------------------
  866. ;--- ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ 䮪ãá  ---------------------------
  867. ;----------------------------------------------------------
  868.         bts     word ed_flags,1
  869.         jc      .mouse_pressed
  870.         call    .draw_cursor
  871.         call    .draw_border
  872. .mouse_pressed:
  873. popa
  874. ret
  875. ;.mouse_end_no_focus:
  876. ;        call    .blur
  877. ;popa
  878. ;ret
  879. ;.blur:
  880. ;pusha
  881. ._blur:
  882.         test    word ed_flags,ed_always_focus
  883.         jne     @f
  884.         btr     word ed_flags,1 ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  885.         jnc     @f
  886.         call    .clear_cursor
  887.         call    .draw_border
  888. @@:
  889. popa
  890. ret
  891.  
  892. ;----------------------------------------------------------
  893. ;--- ¯à®æ¥¤ãà  à §¬ë¢ ­¨ï 䮪ãá  --------------------------
  894. ;----------------------------------------------------------
  895. ;.blur:
  896. ;pusha
  897. ;._blur:
  898.         ;btr     ed_flags,1
  899.         ;jnc     @f
  900.         ;call    .draw_border
  901.         ;call    .clear_cursor
  902. ;@@:
  903. ;popa
  904. ;ret
  905. }
  906. ed_figure_only=1000000000000000b
  907. ed_always_focus=100000000000000b
  908. ed_focus=10b
  909. ed_shift_on=1000b
  910. ed_shift=100b
  911. ed_shift_cl=1111111111110011b
  912. macro draw_edit_boxes start,end
  913. {
  914.         mov     edi,start
  915.         mov     ecx,((end-start)/ed_struc_size)
  916. @@:
  917.         call    edit_box.draw
  918.         add     edi,ed_struc_size
  919.         loop    @b
  920. }
  921.  
  922. macro mouse_edit_boxes start,end
  923. {
  924.         mov     edi,start
  925.         mov     ecx,((end-start)/ed_struc_size)
  926. @@:
  927.         call    edit_box.mouse
  928.         add     edi,ed_struc_size
  929.         loop    @b
  930. }
  931.  
  932. macro key_edit_boxes start,end
  933. {
  934.         mov     edi,start
  935.         mov     ecx,((end-start)/ed_struc_size)
  936. @@:
  937.         call    edit_box.key
  938.         add     edi,ed_struc_size
  939.         loop    @b
  940. }
  941. ed_struc_size=62
  942. struc  edit_box width,left,top,color,focus_border_color,\
  943.        blur_border_color,text_color,max,text,flags,size
  944. {
  945. .width dd width
  946. .left dd left
  947. .top dd top
  948. .color dd color
  949. .focus_border_color dd focus_border_color
  950. .blur_border_color dd blur_border_color
  951. .text_color dd text_color
  952. .max dd max
  953. .text dd text
  954. .flags dw flags+0
  955. .size dd size+0
  956. .pos dd 0
  957. .offset dd 0
  958. .cl_curs_x dd 0
  959. .cl_curs_y dd 0
  960. .shift     dd 0
  961. }
  962.  
  963. macro edit_boxes_set_sys_color start,end,color_table
  964. {
  965.         mov     edi,start
  966.         mov     ecx,((end-start)/ed_struc_size)
  967.         mov     esi,color_table
  968. @@:
  969.         mov     eax,[esi+36]
  970.         mov     ebx,[esi+20]
  971.         mov     ed_focus_border_color,eax
  972.         shr     bh,1
  973.         shr     bl,1
  974.         shr     ah,1
  975.         shr     al,1
  976.         add     ah,bh
  977.         add     al,bl
  978.         ror     eax,16
  979.         ror     ebx,16
  980.         shr     bl,1
  981.         shr     al,1
  982.         add     al,bl
  983.         ror     eax,16
  984.         mov     ed_blur_border_color,eax
  985.         add     edi,ed_struc_size
  986.         loop    @b
  987. }
  988.  
  989. macro draw_edit_box ed_ptr
  990. {
  991.         mov     edi,ed_ptr
  992.         call    edit_box.draw
  993. }
  994.  
  995. macro mouse_edit_box ed_ptr
  996. {
  997.         mov     edi,ed_ptr
  998.         call    edit_box.mouse
  999. }
  1000.  
  1001. macro key_edit_box ed_ptr
  1002. {
  1003.         mov     edi,ed_ptr
  1004.         call    edit_box.key
  1005. }