Subversion Repositories Kolibri OS

Rev

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

  1. ;#___________________________________________________________________________________________________
  2. ;****************************************************************************************************|
  3. ; Program Palitra (c) Sergei Steshin (Akyltist)                                                      |
  4. ;----------------------------------------------------------------------------------------------------|
  5. ;; Charset:DOS-866 Font:Courier New Size:9pt                                                         |
  6. ;.....................................................................................................
  7. ;; compiler:     FASM 1.69.31                                                                        |
  8. ;; version:      0.3.0                                                                               |
  9. ;; last update:  08/11/2012                                                                          |
  10. ;; e-mail:       dr.steshin@gmail.com                                                                |
  11. ;.....................................................................................................
  12. ;; History:                                                                                          |
  13. ;; 0.1.0 - ¥à¢ ï ¢¥àá¨ï ¯à®£à ¬¬ë.                                                                  |
  14. ;; 0.2.0 - ˆá¯à ¢«¥­® ¯®¯ ¤ ­¨¥ ¢ á¥âªã, ¡¥à¥âáï ¡«¨¦ ©è¨© ¯® ¤¨ £®­ «¨ ¯¨ªá¥«ì.                     |
  15. ;;       - „®¡ ¢«¥­ë ¯®«§ã­ª¨, ¤«ï ॣ㫨஢ ­¨ï rgb á®áâ ¢«ïîé¨å æ¢¥â  ¨ ¢ë¢®¤ íâ¨å á®áâ ¢«ïîé¨å.   |
  16. ;;       - “¡à ­ ¢ë¢®¤ æ¢¥â  ¢ ¡¨­ à­®¬ ¢¨¤¥ (¯®ª  §  ­¥ ­ ¤®¡­®áâìî ¨ ­¥  ªâã «ì­®áâìî).            |
  17. ;;       - Œ¥«ª ï ª®á¬¥â¨ª .                                                                         |
  18. ;; 0.3.0 - „®¡ ¢«¥­® ¯¥à¥ª«î祭¨¥ ¢¨¤®¢ 梥⮢ëå á奬 (ª­®¯ª  NEXT)                                  |
  19. ;;       - “«ãçè¥­ë ¯®«§ã­ª¨, ¯à®¨§¢®¤¨âáï ®¡à ¡®âª  ­ ¦ â¨ï à冷¬ á ¯®«§ã­ª®¬.                      |
  20. ;;       - —¨á«® á¥â®ª ¢ 梥⮢®© á奬¥ 㬥­ì襭® á 6 ¤® 4 (ªà â­®áâì 256, ¨­ ç¥ ¤ã¡«¨à®¢ ­¨¥ 梥â ).|
  21. ;;       - Œ¥«ª ï ª®á¬¥â¨ª .                                                                         |
  22. ;; 0.4.0 - „®¡ ¢«¥­® ¯¥à¥ª«î祭¨¥ ¬¥¦¤ã ¤¢ã¬ï 梥⠬¨                                                |
  23. ;;       - „®¡ ¢«¥­ ¯®«§ã­®ª ॣ㫨஢ ­¨ï ¯à®§à ç­®á⨠(¡¥§ ¢¨§ã «¨§ æ¨¨).                          |
  24. ;;       - „®¡ ¢«¥­® ¢ëà ¢­¨¢ ­¨¥ §­ ç¥­¨© rgba ¯® 業âàã, ¢ § ¢¨á¨¬®á⨠®â ¤«¨­­ë.                  |
  25. ;;       - Š®á¬¥â¨ç¥áª¨¥ ¯à ¢ª¨.                                                                     |
  26. ;;       - ¥¡®«ìè ï ®¯â¨¬¨§ æ¨ï.                                                                    |
  27. ;; 0.5.0 - „®¡ ¢«¥­  ª­®¯ª  ᬥ­ë ä®­  à ¡®ç¥£® á⮫  (®â Leency).                                   |
  28. ;;       - „®¡ ¢«¥­® ¨§¬¥­¥­¨¥ ä®­  à ¡®ç¥£® á⮫  £à ¤¨¥­â­®© § «¨¢ª®©.                             |
  29. ;;       - Š®á¬¥â¨ç¥áª¨¥ ¯à ¢ª¨.                                                                     |
  30. ;;       - ¥¡®«ìè ï ¤¥®¯â¨¬¨§ æ¨ï.                                                                  |
  31. ;; 0.6.0 - „®¡ ¢«¥­  ¢®§¬®¦­®áâì § ¯ã᪠ á ¯ à ¬¥âà ¬¨                                               |
  32. ;;       - „®¡ ¢«¥­ ०¨¬ H (hidden) ¯à®¨§¢®¤¨â § ¬¥­ã ä®­  à ¡®ç¥£® á⮫  £à ¤¨¥­â­®© § «¨¢ª®©.     |
  33. ;;       - ®«ìè ï ¤¥®¯â¨¬¨§ æ¨ï.                                                                    |
  34. ;; 0.7.0 - „®¡ ¢«¥­  ¯¨¯¥âª  - ¢ë¡®à ­  á।­îî ª­®¯ªã ¬ëè¨                                          |
  35. ;; 0.7.5 -  ¦ â¨¥ ¯à ¢®© ª« ¢¨è¥© ¬ëè¨ ­  ï祩ªã á 梥⮬ ãáâ ­ ¢«¨¢ ¥â ­¥ ®á­®¢®©,   ¤®¯®«­. æ¢¥â  |
  36. ;;       - “¬¥­ì襭® ¬¥àæ ­¨¥ ¯à¨ à ¡®â¥ ¯¨¯¥âª¨                                                     |
  37. ;.....................................................................................................
  38. ;; All rights reserved.                                                                              |
  39. ;;                                                                                                   |
  40. ;; Redistribution and use in source and binary forms, with or without modification, are permitted    |
  41. ;; provided that the following conditions are met:                                                   |
  42. ;;       * Redistributions of source code must retain the above copyright notice, this list of       |
  43. ;;         conditions and the following disclaimer.                                                  |
  44. ;;       * Redistributions in binary form must reproduce the above copyright notice, this list of    |
  45. ;;         conditions and the following disclaimer in the documentation and/or other materials       |
  46. ;;         provided with the distribution.                                                           |
  47. ;;       * Neither the name of the <organization> nor the names of its contributors may be used to   |
  48. ;;         endorse or promote products derived from this software without specific prior written     |
  49. ;;         permission.                                                                               |
  50. ;;                                                                                                   |
  51. ;; THIS SOFTWARE IS PROVIDED BY Sergei Steshin ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,      |
  52. ;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A        |
  53. ;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY DIRECT, |
  54. ;; INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED    |
  55. ;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS       |
  56. ;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT          |
  57. ;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  |
  58. ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                      |
  59. ;....................................................................................................|
  60.  
  61.  
  62. ;#___________________________________________________________________________________________________
  63. ;****************************************************************************************************|
  64. ; ‡€ƒŽ‹Ž‚ŽŠ ˆ‘Ž‹Ÿ…ŒŽƒŽ ”€‰‹€ ˆ‹Ž†…ˆŸ „‹Ÿ ŠŽ‹ˆˆ Ž‘                                             |
  65. ;----------------------------------------------------------------------------------------------------/
  66.   use32
  67.   org    0x0
  68.   db     'MENUET01'
  69.   dd     0x01
  70.   dd     START
  71.   dd     I_END
  72.   dd     I_END+4096
  73.   dd     I_END+4096
  74.   dd     params
  75.   dd     0x0
  76.  
  77.   include '..\..\..\macros.inc'
  78.  
  79.   WIN_W  equ 295            ; è¨à¨­  ®ª­ 
  80.   WIN_H  equ 195            ; ¢ëá®â  ®ª­ 
  81.   WIN_X  equ 250            ; ª®®à¤¨­ â  å ®ª­ 
  82.   WIN_Y  equ 190            ; ª®®à¤¨­ â  ã ®ª­ 
  83.  
  84. panel:
  85.   file "panel.raw"
  86.  
  87. START:
  88.     mcall   68,11                         ; ¨­¨æ¨ «¨§ æ¨ï ªãç¨
  89.     mcall   40,0x27                       ; ãáâ ­ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩
  90.     include 'params_init.inc'             ; ®¡à ¡®âª  ¯ à ¬¥â஢ ª®¬ ­¤­®© áâப¨
  91.  
  92. ;#___________________________________________________________________________________________________
  93. ;****************************************************************************************************|
  94. ; Ž‘Ž‚Ž‰ –ˆŠ‹ Žƒ€ŒŒ› - Ž€Ž’Š€ ‘Ž›’ˆ‰                                                        |
  95. ;----------------------------------------------------------------------------------------------------/
  96. red:
  97.     call draw_main                        ; ¢ë§ë¢ ¥¬ ¯¥à¥à¨á®¢ªã ®ª­  ¯à¨«®¦¥­¨ï
  98. still:
  99.     mcall   10                            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
  100.     cmp     eax,1                         ; ¯¥à¥à¨á®¢ âì ®ª­® ?
  101.     je      red                           ; ¥á«¨ ¤  - ­  ¬¥âªã red
  102.     cmp     eax,2                         ; ­ ¦ â  ª« ¢¨è  ?
  103.     je      key                           ; ¥á«¨ ¤  - ­  key
  104.     cmp     eax,3                         ; ­ ¦ â  ª­®¯ª  ?
  105.     je      button                        ; ¥á«¨ ¤  - ­  button
  106.     cmp     eax,6                         ; ᮡë⨥ ®â ¬ëè¨ ¢­¥ ®ª­ 
  107.     je      mouse                         ; ¥á«¨ ¤  - ­  button
  108.     jmp     still                         ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
  109. ;end_still
  110.  
  111. key:                                      ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
  112.     mcall   2                             ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah) (âãâ ¢ ¯à¨­æ¨¯¥ ­¥ ­ã¦­ )
  113.     jmp     still                         ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  114. ;end_key
  115.  
  116. mouse:
  117.     cmp     [renmode],2
  118.     jne     left
  119.     call    cyrcle_draw
  120.     jmp     center
  121.   left:
  122.     mcall   37,2
  123.     cmp     al,1b
  124.     jne     right
  125.     mov     [mouse_f],1
  126.     jmp     still
  127.   right:
  128.     cmp     al,10b
  129.     jne     still
  130.     mov     [mouse_f],2
  131.     jmp     still
  132.   center:
  133.     mcall   37,2
  134.     cmp     al,100b
  135.     jne     still
  136.     mov     [mouse_f],3
  137.     mov     [color],edx
  138.     call    draw_result
  139.     jmp     still                         ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  140. ;end_mouse
  141.  
  142. button:
  143.     mcall   17                            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  144.     cmp     ah, 1                         ; ¥á«¨ ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
  145.     jz      bexit                         ; ¢ë室¨¬
  146.   ;®¡à ¡®âª  ª­®¯ª¨ Next
  147.     cmp     ah, 12                        ; ¥á«¨ ­ ¦ â  ª­®¯ª  NEXT
  148.     jne     next_bg                       ; ¢ë室¨¬
  149.     inc     [pnext]                       ; 㢥«¨ç¨¢ ¥¬ ¯à¨ ­ ¦ â¨¨ ­®¬¥à ¯ «¨âàë
  150.     mov     [renmode],0                   ; ¢ª«îç ¥¬ æ¢¥â®¢ë¥ á奬ë
  151.     mov     eax,[pnext]                   ; § ­®á¨¬ §­ ç¥­¨¥ ¢ ¥ å
  152.     cmp     al,6                          ; áà ¢­¨¢ ¥¬ á § ï¢«¥­­ë¬ ª®«¨ç¥á⢮¬ ¯ «¨âà
  153.     jne     next_redraw                   ; ¥á«¨ ­¥ ¡®«ìè¥ ¬ ªá¨¬ã¬  â® ­  ¢ë§®¢ ®âà¨á®¢ª¨
  154.     xor     eax,eax                       ; ¨­ ç¥ § ­ã«ï¥¬ ¯ «¨âàã ­  default
  155.     mov     [pnext],eax                   ; ¨ § ¯®¬¨­ ¥¬ çâ® á¡à®á¨«¨ ¯ «¨âàã ­  default
  156.   next_redraw:
  157.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  158.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  159.   next_bg:
  160.     cmp     ah, 14                        ; Š­®¯ª  BACKGROUND
  161.     jne     circle_bg                     ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
  162.     call    set_background                ; ¨­ ç¥ ãáâ ­ ¢«¨¢ ¥¬ ä®­
  163.     jmp     still                         ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
  164.   circle_bg:
  165.     cmp     ah, 15                        ; Š­®¯ª  Šà㣮¢ ï ¯ «¨âà 
  166.     jne     next_end                      ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
  167.     mov     [renmode],2                   ; ¢ª«îç ¥¬ ®âà¨á®¢ªã ªà㣮¢®© ¯ «¨âàë
  168.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  169.     jmp     still                         ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
  170.   next_end:
  171.     cmp     ah,13                         ; COLOR SWAP
  172.     jne     color_swap_end
  173.     push    [color2]
  174.     push    [color]
  175.     pop     [color2]
  176.     pop     [color]
  177.     call    draw_result
  178.     jmp     still                         ; ˆ ã室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  179.   color_swap_end:
  180.     cmp     ah, 7                         ; à®¢¥à塞 ­ ¦ â  ª­®¯ª  á ID=7
  181.     jne     color_button                  ; …᫨ ­¥ ­ ¦ â , â® ¨¤ñ¬ ¤ «ìè¥
  182.     call    mouse_get                     ; ˆ­ ç¥ ¢ª«îç ¥¬ ®¡à ¡®â稪 ¬ëè¨, ç⮡ë áç¨â âì §­ ç¥­¨¥ æ¢¥â  á ¯ «¨âàë
  183.     jmp     still                         ; ˆ ã室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  184.   color_button:                           ; €‘—ð’ ª®®à¤¨­ â ¤«ï ¯®«§ã­ª®¢ RGBA
  185.     push    eax                           ; § ¯®¬¨­ ¥¬ ¥ å
  186.     call    mouse_local                   ; ¯®«ãç ¥¬ «®ª «ì­ë¥ ª®®à¤¨­ âë
  187.     mov     ebx,137                       ; ­¨¦­ïï £à ­¨æ  ¯®«§ã­ª  ¯® “
  188.     mov     ecx,[mouse_y]                 ; § ­¨á¨¬ ¢ ¥áå §­ ç¥­¨¥ ªãàá®à  ¯® “
  189.     sub     ebx,ecx                       ; ­ å®¤¨¬ à §­®áâì (â.¥. ªã¤  ᬥ頥âáï ¯®«§ã­®ª)
  190.     mov     ecx,3                         ; § ­®á¨¬ ¢ ¥áå æ¨äàã 3 (256/3=85, £¤¥ 85-¢ëá®â  ¯®«§ã­ª®¢)
  191.     imul    ecx,ebx                       ; ­ å®¤¨¬ ¨á⨭­ë© ¯ à ¬¥âà æ¢¥â  á ãçñ⮬ ¬ áèâ ¡  ¯®«§ã­ª ---+
  192.     pop     eax                           ; ¢®ááâ ­ ¢«¨¢ ¥¬ ¥ å                                          :
  193.   ;red_button:                            ; Šà á­ë© ’४¡ à                                              :
  194.     cmp     ah, 8                         ; ID=8                                                         :
  195.     jne     green_button                  ; ¥á«¨ ­¥â, â® ¯à®¢¥à塞 §¥«ñ­ë© â४¡ à                       :
  196.     mov     [cred],cl                     ; ¨­ ç¥ ¯à¨á¢ ¨¢ ¥¬ §­ ç¥­¨¥, ªà á­®¬ã 梥âã ᯥªâà     <------+
  197.     call    set_spectr                    ; ãáâ ­ ¢«¨¢ ¥¬ ᯥªâà
  198.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  199.   green_button:
  200.     cmp     ah, 9
  201.     jne     blue_button
  202.     mov     [cgreen],cl
  203.     call    set_spectr
  204.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  205.   blue_button:
  206.     cmp     ah, 10
  207.     jne     alpha_button
  208.     mov     [cblue],cl
  209.     call    set_spectr
  210.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  211.   alpha_button:
  212.     cmp     ah, 11
  213.     jne     still
  214.     mov     [calpha],cl
  215.     call    set_spectr
  216.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  217.   bexit:
  218.     mcall -1                              ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
  219. ;end_button
  220.  
  221. ;#___________________________________________________________________________________________________
  222. ;****************************************************************************************************|
  223. ; ƒ‹€‚›‰ ŒŽ„“‹œ Ž’ˆ‘Ž‚Šˆ ŽŠ€ ˆ ‹…Œ…’Ž‚ ˆ‹Ž†…ˆŸ                                               |
  224. ;----------------------------------------------------------------------------------------------------/
  225. draw_main:
  226.     mov     eax,12                        ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
  227.     mov     ebx,1                         ; 1,­ ç «® à¨á®¢ ­¨ï
  228.     int     0x40                          ; à¥à뢠­¨¥
  229.  
  230.     mov     eax,48                        ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­
  231.     mov     ebx,3                         ; ®¤äã­ªæ¨ï 3 - ¯®«ãç¨âì áâ ­¤ àâ­ë¥ æ¢¥â  ®ª®­.
  232.     mov     ecx,sc                        ; “ª § â¥«ì ­  ¡ãä¥à à §¬¥à®¬ edx ¡ ©â, ¯®¤ áâàãªâãàã
  233.     mov     edx,sizeof.system_colors      ;  §¬¥à â ¡«¨æë 梥⮢ (¤®«¦¥­ ¡ëâì 40 ¡ ©â)
  234.     int     0x40                          ; à¥à뢠­¨¥
  235.  
  236.     mov     eax,48                        ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­.
  237.     mov     ebx,4                         ; ®¤äã­ªæ¨ï 4 - ¢®§¢à é ¥â eax = ¢ëá®â  ᪨­ .
  238.     int     0x40                          ; à¥à뢠­¨¥
  239.     mov     ecx,eax                       ; ‡ ¯®¬¨­ ¥¬ ¢ëá®âã ᪨­ 
  240.  
  241.     mov     edi,[runmode]
  242.     cmp     edi,2
  243.     jne     no_hiddenmode
  244.     mov     edi,hidden
  245.     jmp     set_title
  246.   no_hiddenmode:
  247.     cmp     edi,3
  248.     jne     no_dialogmode
  249.     mov     edi,hidden
  250.     jmp     set_title
  251.   no_dialogmode:
  252.     mov     edi,title                     ; ‡ £®«®¢®ª ®ª­ 
  253.   set_title:
  254.  
  255.     xor     eax,eax                       ; Žç¨é ¥¬ eax (mov eax,0) (”ã­ªæ¨ï 0)
  256.     mov     ebx,WIN_X shl 16+WIN_W        ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
  257.     add     ecx,WIN_Y shl 16+WIN_H        ; ‚ëá®â  ᪨­  + [ª®®à¤¨­ â  ¯® y]*65536 + [à §¬¥à ¯® y] (168 ¤«ï ¢¥àᨨ 0.2)
  258.     mov     edx,[sc.work]                 ; ‚¨¤¨¬® áâ¨«ì ®ª­  ¯® ¤¥ä®«âã
  259.     or      edx,0x34000000                ; ˆ«¨ ®ª­® ᮠ᪨­®¬ 䨪á¨à®¢ ­­ëå à §¬¥à®¢
  260.    
  261.     int     0x40                          ; à¥à뢠­¨¥
  262.  
  263.  
  264.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  265.     call    draw_result                   ; ˆ‘“…Œ …‡“‹œ’€’
  266.  
  267.     mov     eax,8                         ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã
  268.     mov     ebx,110 shl 16+147            ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
  269.     mov     ecx,9 shl 16+147              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  270.     mov     edx,0x60000007                ;  ç «ì­®¥ ID ª­®¯®ª - 0xXYnnnnnn
  271.     int     0x40
  272.  
  273.     mov     ebx,13 shl 16+12              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
  274.     mov     edx,0x60000008                ; ID = 8
  275.     mov     ecx,51 shl 16+85              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  276.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ red
  277.     add     ebx,23 shl 16                 ; „®¡ ¢«ï¥¬
  278.     inc     edx                           ; ID = 9
  279.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ green
  280.     add     ebx,23 shl 16                 ; „®¡ ¢«ï¥¬
  281.     inc     edx                           ; ID = 10
  282.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ blue
  283.     add     ebx,23 shl 16                 ; „®¡ ¢«ï¥¬
  284.     inc     edx                           ; ID = 11
  285.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ alpha
  286.  
  287.     mov     eax,8                         ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã (‘Œ…€ –‚…’€)
  288.     mov     ebx,11 shl 16+20              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
  289.     mov     ecx,12 shl 16+20              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  290.     mov     edx,0x6000000D                ; ID = 13
  291.     int     0x40
  292.  
  293.     call    draw_bottom_panel
  294.     call    draw_left_panel
  295.  
  296.     mov     eax,12                        ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
  297.     mov     ebx,2                         ; 2 - ª®­¥æ à¨á®¢ ­¨ï
  298.     int     0x40                          ; à¥à뢠­¨¥
  299.     ret
  300.  
  301. ;#___________________________________________________________________________________________________
  302. ;****************************************************************************************************|
  303. ; ‹ŽŠ ‚‘ŽŒŽƒ€’…‹œ›• Ž–…„“ ˆ ”“Š–ˆ‰ ˆ‹Ž†…ˆŸ                                                 |
  304. ;----------------------------------------------------------------------------------------------------/
  305.  
  306.  
  307.     ;------------------------------------------------------------------------------------------------+
  308.     draw_left_panel:                      ; Žâà¨á®¢ª  ¡®ª®¢®© ¯ ­¥«¨
  309.     ;.................................................................................................
  310.     mov     eax,8                         ; button_next_colorsheme
  311.     mov     ebx,266 shl 16+16             ; [x] + [size]
  312.     mov     ecx,9 shl 16+16               ; [y] + [size]
  313.     mov     edx,0x6000000C                ; ID = 12
  314.     mov     esi,[sc.work_button]          ; RGB
  315.     int     0x40                          ; call
  316.     ; circle diagram
  317.     add     ecx,19 shl 16                 ; move rect
  318.     mov     edx,0x6000000F                ; ID = 15
  319.     int     0x40                          ; call
  320.  
  321.     mov     eax,7                         ; 7 - ­®¬¥à ä㭪樨
  322.     mov     ebx,panel                     ; 㪠§ â¥«ì ­  ¨§®¡à ¦¥­¨¥ ¢ ä®à¬ â¥ BBGGRRBBGGRR...
  323.     mov     ecx, 16 shl 16 + 149          ; [à §¬¥à ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ y]
  324.     mov     edx,266 shl 16 +   9            ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  325.     int     0x40
  326.  
  327.     ;mov     eax,13                        ; draw rect
  328.     ;mov     ebx,266 shl 16+16             ; [x] + [size]
  329.     ;mov     ecx,9 shl 16+16               ; [y] + [size]
  330.     ;mov     edx,0x666666                  ; RGB
  331.     ;push    esi                           ; backup esi
  332.     ;mov     esi,8                         ; counter=8
  333.     ;draw_lpanel:                          ; loop label
  334.     ;  int     0x40                        ; call draw black rect
  335.     ;  add     ecx,19 shl 16               ; move rect
  336.     ;  dec     esi                         ; decrement counter
  337.     ;  cmp     esi,0                       ; if counter!=zero
  338.     ;  jne     draw_lpanel                 ; then goto label
  339.     ;  mov     esi,8                       ; else counter=8
  340.     ;  mov     ebx,267 shl 16+14           ; [x] + [size]
  341.     ;  mov     ecx,10 shl 16+14            ; [y] + [size]
  342.     ;  mov     edx,0xF3F3F3                ; RGB
  343.     ;draw_lpanel2:                         ; 2 loop label
  344.     ;  int     0x40                        ; call draw white rect
  345.     ;  add     ecx,19 shl 16               ; move rect
  346.     ;  dec     esi                         ; decrement counter
  347.     ;  cmp     esi,0                       ; if counter!=0
  348.     ;  jne     draw_lpanel2                ; then goto label2
  349.     ;pop     esi                           ; restore esi
  350.     ; draw_left_arrow for button_next_colorsheme
  351.     ;mov     eax,4                         ; Write string
  352.     ;mov     ebx,272 shl 16+13             ; [x] + [y]
  353.     ;mov     ecx,0x0                       ; RGB
  354.     ;mov     edx,larrow                    ; string pointer
  355.     ;mov     esi,1                         ; count symbol
  356.     ;int     0x40                          ; call
  357.     ;mov     eax,38                        ; draw line
  358.     ;mov     ebx,270 shl 16+272            ; [start x] + [end x]
  359.     ;mov     ecx,16 shl 16+16              ; [start y] + [end y]
  360.     ;mov     edx,0x0                       ; RGB
  361.     ;int     0x40                          ; call
  362.     ret                                   ; return
  363.     ;.................................................................................................
  364.  
  365.  
  366.     ;------------------------------------------------------------------------------------------------+
  367.     draw_bottom_panel:                    ; Žâà¨á®¢ª  ­¨¦­¥© ¯ ­¥«¨
  368.     ;.................................................................................................
  369.     mov     eax,8                         ; draw button
  370.     mov     ebx,92 shl 16+100             ; [x] + [size]
  371.     mov     ecx,169 shl 16+16             ; [y] + [size]
  372.     mov     edx,14                        ; ID = 14
  373.     mov     esi,[sc.work_button]          ; RGB
  374.     int     0x40                          ; call
  375.     mov     eax,4                         ; Write string
  376.     mov     ebx,113 shl 16+174            ; [x] + [y]
  377.     mov     ecx,[sc.work_button_text]     ; RGB
  378.     mov     edx,bground                   ; string pointer
  379.     mov     esi,10                        ; count symbol
  380.     int     0x40                          ; call
  381.     mov     eax,38                        ; draw line
  382.     mov     ebx,4 shl 16+282              ; [start x] + [end x]
  383.     mov     ecx,163 shl 16+163            ; [start y] + [end y]
  384.     mov     edx,0x00666666                ; RGB
  385.     int     0x40                          ; call
  386.     ret                                   ; return
  387.     ;.................................................................................................
  388.  
  389. mouse_global:
  390.     ;.................................................................................................
  391.     ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨
  392.     ;.................................................................................................
  393.     mov     eax,37                        ; ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
  394.     mov     ebx,0                         ; ­ ¬ ­ã¦­ë £«®¡ «ì­ë¥ ª®®à¤¨­ âë
  395.     int     0x40                          ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
  396.     mov     ecx,eax                       ;
  397.     shr     ecx,16                        ; ecx = x+1
  398.     movzx   edx,ax                        ; edx = y+1
  399.     dec     ecx                           ; ecx = x
  400.     dec     edx                           ; edx = y
  401.     mov     [mouse_x],ecx                 ; mouse_x = x
  402.     mov     [mouse_y],edx                 ; mouse_y = y
  403.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  404. ;end_mouse_global
  405.  
  406. mouse_local:
  407.     ;.................................................................................................
  408.     ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
  409.     ;.................................................................................................
  410.     mov     eax,37                        ; ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
  411.     mov     ebx,1                         ; ­ ¬ ­ã¦­ë £«®¡ «ì­ë¥ ª®®à¤¨­ âë
  412.     int     0x40                          ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
  413.     mov     ecx,eax                       ;
  414.     shr     ecx,16                        ; ecx = x+1
  415.     movzx   edx,ax                        ; edx = y+1
  416.     dec     ecx                           ; ecx = x
  417.     dec     edx                           ; edx = y
  418.     mov     [mouse_x],ecx                 ; mouse_x = x
  419.     mov     [mouse_y],edx                 ; mouse_y = y
  420.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  421. ;end_mouse_local
  422.  
  423. set_background:
  424.     ;.................................................................................................
  425.     ; “áâ ­ ¢«¨¢ ¥â ä®­ à ¡®ç¥£® á⮫ 
  426.     ;.................................................................................................
  427.     mov     eax,15                        ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  428.     mov     ebx,4                         ; ®¤äã­ªæ¨ï 4 - ãáâ ­®¢¨âì ०¨¬ ®âà¨á®¢ª¨ ä®­ .
  429.     mov     ecx,2                         ; ¥¦¨¬ ®âà¨á®¢ª¨ - § ¬®áâ¨âì (1)
  430.     int     0x40                          ; ‚ë§ë¢ ¥¬
  431.  
  432.     mov     eax,15                        ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  433.     mov     ebx,1                         ; ®¤äã­ªæ¨ï 1 - ãáâ ­®¢¨âì à §¬¥à ä®­®¢®£® ¨§®¡à ¦¥­¨ï.
  434.     mov     ecx,2                         ; ˜¨à¨­  ¨§®¡à ¦¥­¨ï
  435.     mov     edx,2                         ; ‚ëá®â  ¨§®¡à ¦¥­¨ï
  436.     int     0x40                          ; ‚ë§ë¢ ¥¬
  437.  
  438.     mov     eax,[color]
  439.     mov     [cm+0],al
  440.     mov     [cm+9],al
  441.     shr     eax,8
  442.     mov     [cm+1],al
  443.     mov     [cm+10],al
  444.     shr     eax,8
  445.     mov     [cm+2],al
  446.     mov     [cm+11],al
  447.  
  448.     mov     eax,[color2]
  449.     mov     [cm+3],al
  450.     mov     [cm+6],al
  451.     shr     eax,8
  452.     mov     [cm+4],al
  453.     mov     [cm+7],al
  454.     shr     eax,8
  455.     mov     [cm+5],al
  456.     mov     [cm+8],al
  457.  
  458.     mov     eax,15                        ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  459.     mov     ebx,5                         ; ®¤äã­ªæ¨ï 5 - ¯®¬¥áâ¨âì ¡«®ª ¯¨ªá¥«¥© ­  ä®­.
  460.     mov     ecx,cm                      ; “ª § â¥«ì ­  ¤ ­­ë¥ ¢ ä®à¬ â¥ BBGGRRBBGGRR
  461.     mov     edx,0                         ; C¬¥é¥­¨¥ ¢ ¤ ­­ëå ä®­®¢®£® ¨§®¡à ¦¥­¨ï
  462.     mov     esi,3*4                      ;  §¬¥à ¤ ­­ëå ¢ ¡ ©â å = 3 * ç¨á«® ¯¨ªá¥«¥©
  463.     int     0x40                          ; ‚ë§ë¢ ¥¬
  464.  
  465.     mov     eax,15                        ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  466.     mov     ebx,3                         ; ®¤äã­ªæ¨ï 3 - ¯¥à¥à¨á®¢ âì ä®­.
  467.     int     0x40                          ; ‚ë§ë¢ ¥¬
  468.  
  469.     ret
  470. ;end_set_background
  471.  
  472. desktop_get:
  473.     ;.................................................................................................
  474.     ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­ 
  475.     ;.................................................................................................
  476.     mov     eax,14                        ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­  (eax = [xsize]*65536 + [ysize])
  477.     int     0x40                          ; xsize = à §¬¥à ¯® £®à¨§®­â «¨ - 1
  478.     mov     ebx,eax                       ;
  479.     shr     ebx,16                        ; ebx = xsize-1
  480.     movzx   edx,ax                        ; edx = ysize-1 («¨è­¨© ª®¤)
  481.     inc     ebx                           ; ebx = xsize
  482.     inc     edx                           ; edx = ysize («¨è­¨© ª®¤)
  483.     mov     [desctop_w],ebx
  484.     mov     [desctop_h],edx
  485.     ret
  486. ;end_desktop_get
  487.  
  488. mouse_get:
  489.     mov     esi,2                         ; ŠŽ‘’›‹œ: ä« £ ¤«ï ¨§¡¥¦ ­¨ï § æ¨ª«¨¢ ­¨ï
  490.     call    mouse_global
  491.     call    desktop_get
  492.     re_mouse_loop:                        ; ŠŽ‘’›‹œ: ¬¥âª  ¤«ï ¢®§¢à â  ¥á«¨ ¯®¯ «¨ ¢ á¥âªã
  493.       mov     ebx,[desctop_w]
  494.       imul    ebx,[mouse_y]               ; ebx = y*xsize
  495.       add     ebx,[mouse_x]               ; ebx = y*xsize+x
  496.  
  497.       ;.................................................................................................
  498.       ; ¥à¥¬ 梥â á ¯ «¨âàë ¢ ¯¥à¥¬¥­­ãî
  499.       ;.................................................................................................
  500.       mov     eax,35                      ; ”ã­ªæ¨ï ¢§ïâ¨ï 梥â 
  501.       ;mov     ebx,ecx                    ;; ebx = y*xsize+x («¨è­¨© ª®¤)
  502.       int     0x40                        ; ®«ãç ¥¬ 梥⠢ eax
  503.       cmp     eax,[sc.work]               ; ‘à ¢­¨¢ ¥¬ á ä®­®¬ ¯à¨«®¦¥­¨ï
  504.       je      mouse_err                   ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
  505.       cmp     eax,0x222222                ; ‘à ¢­¨¢ ¥¬ á 梥⮬ á¥âª¨
  506.       je      mouse_err                   ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
  507.       jmp     mouse_set                   ; ŠŽ‘’›‹œ: ¯à룠¥¬ çâ®¡ë ­¥ ¡à âì 梥â á¥âª¨
  508.     mouse_err:                            ; ŠŽ‘’›‹œ: ¥á«¨ ¯®¯ «¨ ¢ á¥âªã ¨«¨ ä®­
  509.       inc     [mouse_y]                   ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ á­ ç «  ¯® å
  510.       inc     [mouse_x]                   ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ ¯®â®¬ ¯® ã
  511.       dec     esi                         ; ŠŽ‘’›‹œ: “¬¥­ìè ¥¬ ä« £
  512.       cmp     esi,0                       ; ŠŽ‘’›‹œ: ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  513.     jz        mouse_exit                  ; ŠŽ‘’›‹œ: …᫨ ­®«ì ⮠ᤥ« «¨ ¢áñ çâ® ¬®£«¨
  514.     jmp    re_mouse_loop                  ; ŠŽ‘’›‹œ: …᫨ ­¥ ­®«ì â® ¯®¯à®¡ã¥¬ ¢§ïâì á®á¥«­¨© ¯¨ªá¥«ì
  515.     mouse_set:                            ; ˆ­ ç¥ § ¯®¬¨­ ¥¬ ­®¢ë© 梥â
  516.       cmp     [mouse_f],1
  517.       jne     was_right
  518.       mov     [color],eax
  519.       call    draw_result
  520.       jmp     mouse_exit
  521.     was_right:
  522.       cmp     [mouse_f],2
  523.       jne     mouse_exit
  524.       mov     [color2],eax
  525.       call    draw_result                   ; ‚뢮¤¨¬ १ã«ìâ â
  526.     mouse_exit:
  527.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  528. ;end_mouse_get----------------------------------------------------------------------------------------
  529.  
  530. draw_palitra:
  531.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  532.     mov     ebx,110 shl 16+148            ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  533.     mov     ecx,9 shl 16+148              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  534.     mov     edx,[sc.work]                 ; 梥â
  535.     int     0x40
  536.  
  537.     cmp     [renmode],2
  538.     je      cyrcle_draw
  539.     ;cmp     [renmode],1
  540.     ;je      picker_draw
  541.     cmp     [renmode],0
  542.     je      sheme_draw
  543.     ret
  544.  
  545.     ;.................................................................................................
  546.     ; Žâà¨á®¢ª  ªà㣮¢®© ¤¨ £à ¬¬ë
  547.     ;.................................................................................................
  548.     cyrcle_draw:
  549.     ;mov     eax,13
  550.     ;mov     edx,0x666666
  551.     ;mov     ebx,108*65536+152
  552.     ;mov     ecx,125*65536+33
  553.     ;mcall
  554.     ;mov     edx,0xF3F3F3
  555.     ;mov     ebx,109*65536+150
  556.     ;mov     ecx,126*65536+31
  557.     ;mcall
  558.  
  559.     ;mov     eax,4                         ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ  ¢ ®ª­®
  560.     ;mov     ebx,115 shl 16+131            ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  561.     ;mov     ecx,0x666666                  ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ )
  562.     ;mov     edx,hint                      ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
  563.     ;mov     esi,24                        ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
  564.     ;mcall
  565.     ;mov     ebx,125 shl 16+144            ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  566.     ;mov     edx,hint2                     ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
  567.     ;mov     esi,21                        ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
  568.     ;mcall
  569.  
  570.     ;mov     edx,[color]
  571.     ;mov     ebx,109*65536+150
  572.     ;mov     ecx, 10*65536+150
  573.     ;mcall
  574.     call    mouse_local                   ; ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
  575.     mov     ecx, [mouse_x]                ; § ­®á¨¬ ¢ ॣ¨áâà
  576.     mov     edx, [mouse_y]                ; § ­®á¨¬ ¢ ॣ¨áâà
  577.     cmp     ecx, WIN_W-10
  578.     jg      cyrcle_draw_2
  579.     cmp     edx, WIN_H
  580.     jle     end_cyrcle_draw
  581.  
  582.     cyrcle_draw_2:
  583.         mcall   5,10
  584.     call    desktop_get
  585.     call    mouse_global
  586.  
  587.     mov     ebx,112*65536+11
  588.     mov     esi,0                         ; counter=8
  589.     circle_loop:
  590.       mov     ecx, 10*65536+11
  591.       mov     edi,0
  592.       circle_loop2:
  593.         mov     eax,13
  594.         call    circle_pixel_read
  595.         mcall
  596.         add     ecx,11 shl 16
  597.         inc     edi
  598.         cmp     edi,13
  599.         jne     circle_loop2
  600.  
  601.       add     ebx,11 shl 16
  602.       inc     esi
  603.       cmp     esi,13
  604.       jne     circle_loop
  605.    
  606.    
  607.     mov     eax,13
  608.     mov     edx,0x0
  609.     mov     ebx,177*65536+13
  610.     mov     ecx, 76*65536+13
  611.     mcall
  612.     mov     ecx, [mouse_x]
  613.     mov     edx, [mouse_y]
  614.     inc     ecx
  615.     inc     edx
  616.     mov     ebx, edx
  617.     imul    ebx, [desctop_w]
  618.     add     ebx, ecx
  619.     mov     eax, 35
  620.     mcall
  621.     mov     edx,eax
  622.     mov     eax,13
  623.     mov     ebx,178*65536+11
  624.     mov     ecx, 77*65536+11
  625.     mcall
  626.     ret
  627.     end_cyrcle_draw:
  628.     mov     eax,13
  629.     mov     edx,0x666666
  630.     mov     ebx,111*65536+145
  631.     mov     ecx,  9*65536+145
  632.     mcall
  633.     ret
  634.  
  635.     circle_pixel_read:
  636.     push    ecx
  637.     push    ebx
  638.     push    eax
  639.     mov     ecx, [mouse_x]
  640.     mov     edx, [mouse_y]
  641.     inc     ecx
  642.     add     ecx, esi
  643.     cmp     ecx, 6
  644.     jl      _cpr_exit
  645.     sub     ecx, 6
  646.     inc     edx
  647.     add     edx, edi
  648.     cmp     edx, 6
  649.     jl      _cpr_exit
  650.     sub     edx, 6
  651.  
  652.     mov     ebx, edx
  653.     imul    ebx, [desctop_w]
  654.     add     ebx, ecx
  655.     mov     eax, 35
  656.     mcall
  657.     mov     edx,eax
  658.     pop     eax
  659.     pop     ebx
  660.     pop     ecx
  661.     ret
  662.  
  663.     _cpr_exit:
  664.     mov     edx,0x00000000
  665.     pop     eax
  666.     pop     ebx
  667.     pop     ecx
  668.     ret
  669.  
  670.     ;picker_draw:
  671.     ;ret
  672.  
  673.     ;.................................................................................................
  674.     ; Žâà¨á®¢ª  ä®­  ¯®¤ ª­®¯ª¨
  675.     ;.................................................................................................
  676.     sheme_draw:
  677.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  678.     mov     edx,0x222222                  ; 梥â
  679.     mov     ecx,9 shl 16+73               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  680.     mov     esi,2                         ; ‘ç¥â稪 «¨­¨© ¯®¤«®¦¥ª
  681.     re_draw:
  682.     mov     ebx,110 shl 16+73             ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  683.     mov     edi,2                         ; ‘ç¥â稪 ª®«¨ç¥á⢠ ¯®¤«®¦¥ª
  684.     for_fon_loop:
  685.       int     0x40                        ; à¥à뢠­¨¥
  686.       add     ebx,75 shl 16               ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® å
  687.       dec     edi                         ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
  688.       cmp     edi,0                       ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  689.     jnz     for_fon_loop                  ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  690.     dec     esi                           ; “¬¥­ìè ¥¬ ¥£®
  691.     cmp     esi,0                         ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  692.     mov     ecx,84 shl 16+73              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  693.     jnz     re_draw                       ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  694.  
  695.     ;.................................................................................................
  696.     ; Žâà¨á®¢ª  ª­®¯®ª ¯® 横«ã
  697.     ;.................................................................................................
  698.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  699.     mov     edx,0x0FFFFFFF                ; 梥â
  700.     mov     esi,4                         ; ‘ç¥â稪 ª®«¨ç¥á⢠  ¡§ æ¥¢ (#4,8)
  701.     mov     ebx,99 shl 16+8               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  702.     for_abz:
  703.       ;;push    esi                       ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
  704.       cmp     esi,2
  705.       jne     x2_line
  706.       mov     ebx,99 shl 16+8
  707.       x2_line:
  708.       add     ebx,3 shl 16                ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
  709.       mov     edi,8                       ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
  710.       for_stolbik:
  711.         push    edi                       ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
  712.         mov     edi,8                     ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
  713.         mov     ecx,  1 shl 16+8          ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]  
  714.         cmp     esi,2
  715.         jg      y2_line                   ; …᫨ ¡®«ìè¥ 4 â® ¨£­®à¨¬
  716.         mov     ecx,76 shl 16+8
  717.         y2_line:
  718.         add     ebx,9 shl 16              ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
  719.         for_loop:
  720.           add     ecx,9 shl 16            ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® y
  721.           int     0x40                    ; à¥à뢠­¨¥
  722.           call    sub_red
  723.           dec     edi                     ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
  724.           cmp     edi,0                   ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  725.           jnz     for_loop                ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  726.       call    sub_green
  727.       pop     edi                         ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
  728.       dec     edi                         ; “¬¥­ìè ¥¬ ¥£®
  729.       cmp     edi,0                       ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  730.       jnz     for_stolbik                 ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  731.     call    sub_blue
  732.     ;;pop     esi                         ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
  733.     dec     esi                           ; “¬¥­ìè ¥¬ ¥£®
  734.     cmp     esi,0                         ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  735.     jnz     for_abz                       ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  736.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  737. ;end_draw_palitra-------------------------------------------------------------------------------------
  738.  
  739.  
  740. sub_red:
  741.     ;.................................................................................................
  742.     ;  áçñâ ᬥ饭¨© ªà á­®£® æ¢¥â  ¢ £¥­¥à æ¨¨ æ¢¥â  ¯ «¨âàë
  743.     ;.................................................................................................
  744.     push    eax
  745.     mov     eax,[pnext]
  746.   ;sub_red_0                              ; palitra
  747.     cmp     al,0
  748.     jne     sub_red_1
  749.     sub     edx,0x40
  750.     jmp     sub_red_e
  751.   sub_red_1:                              ; random
  752.     cmp     al,1
  753.     jne     sub_red_2
  754.     sub     edx,0x20
  755.     jmp     sub_red_e
  756.   sub_red_2:                              ; gree
  757.     cmp     al,2
  758.     jne     sub_red_3
  759.     sub     edx,0x010101
  760.     jmp     sub_red_e
  761.   sub_red_3:                              ; red
  762.     cmp     al,3
  763.     jne     sub_red_4
  764.     sub     edx,0x0101
  765.     jmp     sub_red_e
  766.   sub_red_4:                              ; green
  767.     cmp     al,4
  768.     jne     sub_red_5
  769.     sub     edx,0x010001
  770.     jmp     sub_red_e
  771.   sub_red_5:                              ; blue
  772.     cmp     al,5
  773.     jne     sub_red_e
  774.     sub     edx,0x010100
  775.     jmp     sub_red_e
  776.   sub_red_e:
  777.     pop     eax
  778.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  779. ;end_sub_red------------------------------------------------------------------------------------------
  780.  
  781. sub_green:
  782.     ;.................................................................................................
  783.     ;  áçñâ ᬥ饭¨© ªà á­®£® æ¢¥â  ¢ £¥­¥à æ¨¨ æ¢¥â  ¯ «¨âàë
  784.     ;.................................................................................................
  785.     push    eax
  786.     mov     eax,[pnext]
  787.   ;sub_green_0
  788.     cmp     al,0
  789.     jne     sub_green_1
  790.     sub     edx,0x4000
  791.     jmp     sub_green_e
  792.   sub_green_1:
  793.     cmp     al,1
  794.     jne     sub_green_e
  795.     sub     edx,0x2000
  796.     ;jmp     sub_green_e
  797.   sub_green_e:
  798.     pop     eax
  799.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  800. ;end_sub_green----------------------------------------------------------------------------------------
  801.  
  802.  
  803. sub_blue:
  804.     ;.................................................................................................
  805.     ;  áçñâ ᬥ饭¨© ªà á­®£® æ¢¥â  ¢ £¥­¥à æ¨¨ æ¢¥â  ¯ «¨âàë
  806.     ;.................................................................................................
  807.     push    eax
  808.     mov     eax,[pnext]
  809.   ;sub_blue_0
  810.     cmp     al,0
  811.     jne     sub_blue_1
  812.     sub     edx,0x600000
  813.     jmp     sub_blue_e
  814.   sub_blue_1:
  815.     cmp     al,1
  816.     jne     sub_blue_e
  817.     sub     edx,0x400000
  818.     ;jmp     sub_blue_e
  819.   sub_blue_e:
  820.     pop     eax
  821.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  822. ;end_sub_blue-----------------------------------------------------------------------------------------
  823.  
  824. draw_result:
  825.     ;.................................................................................................
  826.     ; ®«ìè ï à ¬ª  ¢ë¢®¤  १ã«ìâ â 
  827.     ;.................................................................................................
  828.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  829.     mov     edx,0x00666666                ; 梥â-®¡¢®¤ª¨
  830.     mov     ebx,4 shl 16+98               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  831.     mov     ecx,9 shl 16+148              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  832.     int     0x40
  833.     mov     edx,0x00F3F3F3                ; 梥â-ä®­ 
  834.     mov     ebx,5 shl 16+96               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  835.     mov     ecx,10 shl 16+146             ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  836.     int     0x40
  837.  
  838.     ;.................................................................................................
  839.     ; Žâà¨á®¢ª  १ã«ìâ â  æ¢¥â  ¢ hex color2
  840.     ;.................................................................................................
  841.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  842.     ; color 2 - draw fringle
  843.     mov     edx,0x222222                  ; 梥â-®¡¢®¤ª¨
  844.     mov     ebx,16 shl 16+15              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  845.     mov     ecx,16 shl 16+15              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  846.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  847.     ; color 2 - draw color
  848.     mov     edx,[color2]                  ; 梥â
  849.     mov     ebx,17 shl 16+13              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  850.     mov     ecx,17 shl 16+13              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  851.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  852.     ; color 1 - draw fringle
  853.     mov     edx,0x222222                  ; 梥â-®¡¢®¤ª¨
  854.     mov     ebx,11 shl 16+15              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  855.     mov     ecx,12 shl 16+15              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  856.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  857.     ; value - draw fringle
  858.     mov     ebx,34 shl 16+62              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  859.     mov     ecx,16 shl 16+15              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  860.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  861.  
  862.     ; color 2 - draw color
  863.     mov     edx,[color]                   ; 梥â
  864.     mov     ebx,12 shl 16+13              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  865.     mov     ecx,13 shl 16+13              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  866.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  867.     ; value - draw background
  868.     mov     edx,0xFFFFFF                  ; 梥â-ä®­ 
  869.     mov     ebx,35 shl 16+60              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  870.     mov     ecx,17 shl 16+13              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  871.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  872.  
  873.     mov     eax,47                        ; ”ã­ªæ¨ï 47 - ¢ë¢®¤ ç¨á«  ¢ ®ª­®
  874.     mov     ecx,[color]                   ; ç¨á«® (¯à¨ bl=0) ¨«¨ 㪠§ â¥«ì (¯à¨ bl=1)
  875.     mov     esi,0x0                       ; 0xX0RRGGBB
  876.     mov     ebx,256+8 shl 16              ; ¯ à ¬¥âàë ¯à¥®¡à §®¢ ­¨ï ç¨á«  ¢ ⥪áâ (HEX)
  877.     mov     edx,45 shl 16+20              ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  878.     int     0x40                          ; à¥à뢠­¨¥ - ¢ë¢®¤¨¬ १ã«ìâ â ¢ ®ª­® (HEX)
  879.  
  880.     mov     eax,4                         ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
  881.     mov     ebx,38*65536+20               ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  882.     mov     ecx,0x0                       ; 梥â ⥪áâ  RRGGBB
  883.     mov     edx,hex                       ; à¨á㥬 '#'
  884.     mov     esi,1                         ; ¤«¨­  ⥪áâ  ¢ ¡ ©â å
  885.     int     0x40
  886.  
  887.     ;.................................................................................................
  888.     ; Žâà¨á®¢ª  r g b §­ ç¥­¨©
  889.     ;.................................................................................................
  890.     call    get_spectr
  891.  
  892.     movzx   eax,[cred]                    ; ªà á­ë©
  893.     mov     ebx,9*65536+142               ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  894.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  895.  
  896.     movzx   eax,[cgreen]                  ; §¥«¥­ë©
  897.     mov     ebx,32*65536+142              ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  898.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  899.  
  900.     movzx   eax,[cblue]                   ; ᨭ¨©
  901.     mov     ebx,55*65536+142              ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  902.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  903.  
  904.     movzx   eax,[calpha]                  ;  «ìä 
  905.     mov     ebx,78*65536+142              ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  906.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  907.  
  908.     ;.................................................................................................
  909.     ; ‚뢮¤¨¬ ¡ãª¢ë r g b a
  910.     ;.................................................................................................
  911.     mov     eax,4                         ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ  ¢ ®ª­®
  912.     mov     ebx,16 shl 16+40              ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  913.     mov     ecx,0x0                       ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ )
  914.     mov     edx,cname                     ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
  915.     mov     esi,1                         ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
  916.     newline:                              ; 横«
  917.       int     0x40                        ; à¥à뢠­¨¥
  918.       add     ebx,23 shl 16               ; „®¡ ¢«ï¥¬
  919.       add     edx,1                       ; „®¡ ¢«ï¥¬
  920.       cmp     [edx],byte 'x'              ; ‘à ¢­¥­¨¥ á ¡ ©â®¬ å
  921.     jne    newline                        ; …᫨ ­¥ ­ã«ì ¨«¨ ­¥ à ¢­®
  922.  
  923.     ;.................................................................................................
  924.     ; Žâà¨á®¢ª  á« ©¤¥à®¢
  925.     ;.................................................................................................
  926.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  927.     mov     edx,0x222222                  ; 梥â-®¡¢®¤ª¨
  928.     mov     ebx,16 shl 16+4               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  929.     mov     ecx,51 shl 16+86              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  930.     int     0x40
  931.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  932.     int     0x40
  933.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  934.     int     0x40
  935.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  936.     int     0x40
  937.  
  938.     mov     edx,0xFA0919                  ; 梥â-®¡¢®¤ª¨
  939.     mov     ebx,17 shl 16+2               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  940.     mov     ecx,52 shl 16+84              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  941.     int     0x40
  942.     mov     edx,0x08CE19                  ; 梥â-®¡¢®¤ª¨
  943.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  944.     int     0x40
  945.     mov     edx,0x0909FF                  ; 梥â-®¡¢®¤ª¨
  946.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  947.     int     0x40
  948.     mov     edx,0xE4E4E4                  ; 梥â-®¡¢®¤ª¨
  949.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  950.     int     0x40
  951.  
  952.     ;.................................................................................................
  953.     ; Žâà¨á®¢ª  ¯®«§ã­ª®¢
  954.     ;.................................................................................................
  955.     mov     edx,0x0                       ; 梥â-¯®«§ã­ª®¢
  956.     mov     ebx,17 shl 16+11              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  957.     movzx   eax,[cred]                    ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  958.     call    draw_slider
  959.     add     ebx,23 shl 16
  960.     movzx   eax,[cgreen]                  ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  961.     call    draw_slider
  962.     add     ebx,23 shl 16
  963.     movzx   eax,[cblue]                   ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  964.     call    draw_slider
  965.     add     ebx,23 shl 16
  966.     movzx   eax,[calpha]                  ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  967.     call    draw_slider
  968.  
  969.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  970. ;end_draw_result
  971.  
  972. draw_slider:
  973.     xor     ecx,ecx
  974.     mov     cl,0x3                        ; ¡ã¤¥¬ ¤¥«¨âì ¥£® ­  3 â ª ª ª ¯®«§ã­ª¨ ¤«¨­­®© 85 ¯¨ªá¥«¥©
  975.     div     cl                            ; ¤¥«¨¬ - 楫®¥ ¢ al ®áâ â®ª ¢ ah
  976.     mov     cl,136                        ; ­¨¦­ïï â®çª  ¯®«§ã­ª 
  977.     sub     cl,al                         ; cl=cl-al
  978.     shl     ecx,16
  979.     add     ecx,1                         ; § ¤ ¥¬ ­ ç «ì­®¥ ¯®«®¦¥­¨¥
  980.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  981.     int     0x40
  982.     push    ebx                           ; á®å࠭塞 ¤«ï á«¥¤ãî饣® ¯®«§ã­ª  x+w
  983.     sub     ebx,8                         ; â ª ª ª è¨à¨­  «¨­¨¨ 11 â® ®â­¨¬ ¥¬ 8 çâ®¡ë ªã¡¨ª áâ « è¨à¨­®© 3
  984.     add     ebx,8 shl 16                  ; Š®®à¤¨­ âë ¯® x ¤«ï ª¢ ¤à â  ­  ¯®«§ã­ª¥ ᬥ頥¬ ­  8 ¢ ¯à ¢®
  985.     inc     ecx                           ; ¡ë¤«®ª®¤¨¬ ¢ëá®âã ¯®«§ã­ª  ¤® 3-å (1+1=2)
  986.     inc     ecx                           ; (2+1=3) ­ã ¢®â ã ­ á ¡ã¤¥â ªã¡¨ª 3å3 ­  8 ¢ ¯à ¢® ®â «¨­¨¨
  987.     int     0x40                          ; à¨á㥬
  988.     pop     ebx                           ; ¢®ááâ ­ ¢«¨¢ ¥¬ ­®à¬ «ì­ë¥ ª®®à¤¨­ âë
  989.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  990.  
  991. ;end_slider
  992.  
  993. draw_value:
  994.     ;.................................................................................................
  995.     ; ‚뢮¤ ç¨á«  ¨§ áâப¨ ¢ 㪠§ ­­®© ®¡« áâ¨
  996.     ;.................................................................................................
  997.     push    ebx                           ; á®å࠭塞 ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
  998.     mov     ebx,10                        ; ãáâ ­ ¢«¨¢ ¥¬ ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  999.     mov     edi,buff                      ; 㪠§ â¥«ì ­  áâப㠡ãä¥à 
  1000.     call    int2ascii                     ; ª®­¢¥àâ¨à㥬 ç¨á«® ¨ «®¦¨¬ ª ª áâப㠢 ¡ãä¥à + esi ¤«¨­ 
  1001.     mov     eax,4                         ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
  1002.     pop     ebx                           ; ¤®áâ ¥¬ ¨§ á⥪  ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
  1003.     cmp     esi,2                         ; –…’ˆŽ‚€ˆ… ’…Š‘’€
  1004.     jne     draw_value_1
  1005.     add     ebx,4 shl 16
  1006.     jmp     draw_value_e
  1007.   draw_value_1:
  1008.     cmp     esi,1
  1009.     jne     draw_value_e
  1010.     add     ebx,7 shl 16
  1011.   draw_value_e:
  1012.     mov     ecx,0x0                       ; 梥â ⥪áâ  RRGGBB
  1013.     mov     edx,buff                      ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
  1014.     int     0x40
  1015.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  1016. ;end_draw_value
  1017.  
  1018.   _read_params:
  1019.  
  1020.       mov al,[params+2]
  1021.       mov [params_c+0],al
  1022.  
  1023.       mov al,[params+3]
  1024.       mov [params_c+1],al
  1025.  
  1026.       mov al,[params+4]
  1027.       mov [params_c+2],al
  1028.  
  1029.       mov al,[params+5]
  1030.       mov [params_c+3],al
  1031.  
  1032.       mov al,[params+6]
  1033.       mov [params_c+4],al
  1034.  
  1035.       mov al,[params+7]
  1036.       mov [params_c+5],al
  1037.  
  1038.       mov al,[params+8]
  1039.       mov [params_c+6],al
  1040.  
  1041.       mov al,[params+9]
  1042.       mov [params_c+7],al
  1043.  
  1044.       mov   esi,params_c
  1045.       mov   ecx,16
  1046.       call  ascii2int
  1047.       mov   [color],eax
  1048.  
  1049.       mov al,[params+11]
  1050.       mov [params_c+0],al
  1051.  
  1052.       mov al,[params+12]
  1053.       mov [params_c+1],al
  1054.  
  1055.       mov al,[params+13]
  1056.       mov [params_c+2],al
  1057.  
  1058.       mov al,[params+14]
  1059.       mov [params_c+3],al
  1060.  
  1061.       mov al,[params+15]
  1062.       mov [params_c+4],al
  1063.  
  1064.       mov al,[params+16]
  1065.       mov [params_c+5],al
  1066.  
  1067.       mov al,[params+17]
  1068.       mov [params_c+6],al
  1069.  
  1070.       mov al,[params+18]
  1071.       mov [params_c+7],al
  1072.  
  1073.       mov   esi,params_c
  1074.       mov   ecx,16
  1075.       call  ascii2int
  1076.       mov   [color2],eax
  1077.  
  1078.       ret
  1079.  
  1080. hex_digit:
  1081.     ;.................................................................................................
  1082.     ; à¥®¡à §®¢ ­¨¥ ¢ ASCII (¢­¥ § ¢¨á¨¬®á⨠®â á¨á⥬ë áç¨á«¥­¨ï)
  1083.     ;.................................................................................................
  1084.     cmp    dl,10                          ; ¢ dl ®¦¨¤ ¥âáï ç¨á«® ®â 0 ¤® 15
  1085.     jb     .less                          ; ¥á«¨ dl<10 â® ¯¥à¥å®¤¨¬
  1086.     add    dl,'A'-10                      ; 10->A 11->B 12->C ...
  1087.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  1088.     .less:
  1089.     or     dl,'0'                         ; …᫨ á¨á⥬  áç¨á«¥­¨ï 10-ï ¨ ¬¥­¥¥
  1090.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  1091. ;end_hex_digit
  1092.  
  1093. int2ascii:
  1094.     ;.................................................................................................
  1095.     ; à¥®¡à §®¢ ­¨¥ ç¨á«  ¢ áâபã
  1096.     ;.................................................................................................
  1097.     ; eax - 32-å §­ ç­®¥ ç¨á«®
  1098.     ; ebx - ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  1099.     ; edi - 㪠§ â¥«ì ­  áâப㠡ãä¥à 
  1100.     ; ‚®§¢à é ¥â § ¯®«­¥­­ë© ¡ãä¥à ¨ esi - ¤«¨­  áâப¨
  1101.     ;pushad
  1102.     xor     esi,esi                       ; § ­ã«ï¥¬ áç¥â稪 ᨬ¢®«®¢
  1103.     convert_loop:
  1104.     xor     edx,edx                       ; § ­ã«ï¥¬ ॣ¨áâà ¯®¤ ®áâ â®ª
  1105.     div     ebx                           ; eax/ebx - ®áâ â®ª ¢ edx
  1106.     call    hex_digit                     ; ¯à¥®¡à §ã¥¬ ᨬ¢®«
  1107.     push    edx                           ; «®¦¨¬ ¢ á⥪
  1108.     inc     esi                           ; 㢥«¨ç¨¢ ¥¬ áç¥â稪
  1109.     test    eax,eax                       ; ¥á«¨ ¥é¥ ¬®¦­® ¤¥«¨âì
  1110.     jnz     convert_loop                  ; â® ¤¥«¨¥¬ ¥é¥
  1111.     cld                                   ; ŽŸ‡€’…‹œŽ á¡à á뢠¥¬ ä« £ ­ ¯à ¢«¥­¨ï DF (§ ¯¨áì ¢¯¥àñ¤)
  1112.     write_loop:                           ; ¨­ ç¥
  1113.     pop     eax                           ; ¤®áâ ¥¬ ¨§ á⥪  ¢ ¥ å
  1114.     stosb                                 ; § ¯¨á뢠¥¬ ¢ ¡ãä¥à ¯®  ¤à¥áã ES:(E)DI
  1115.     dec     esi                           ; 㬥­ìè ¥¬ áç¥â稪
  1116.     test    esi,esi                       ; ¥á«¨ ¥áâì çâ® ¤®áâ ¢ âì ¨§ á⥪ 
  1117.     jnz     write_loop                    ; â® ¤®áâ ñ¬
  1118.     mov     byte [edi],0                  ; ¨­ ç¥ ¤®¯¨áë뢠¥¬ ­ã«¥¢®© ¡ ©â
  1119.     ;popad                                 ; ¢®ááâ ­ ¢«¨¢ ¥¬ §­ ç¥­¨ï ॣ¨áâ஢
  1120.     ; ª®¤ ­¨¦¥ ­¥ ¨¬¥¥â ­¨ç¥£® ®¡é¥£® ª ä㭪樨, ¯à®áâ® ¢®§¢à é ¥â ¥é¥ ¤«¨­­ã ¯®«ã祭­®© áâப¨
  1121.     mov     edi,buff                      ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
  1122.     call    str_len
  1123.     mov     esi,eax
  1124.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  1125. ;end_int2ascii
  1126.  
  1127. char2byte:
  1128.     sub al,'0'
  1129.     cmp al,10
  1130.     jb  done
  1131.     add al,'0'
  1132.     and al,0x5f
  1133.     sub al,'A'-10
  1134.     and al,0x0f
  1135.     done:
  1136.     ret
  1137. ;end_char2byte
  1138.  
  1139. ascii2int:
  1140.     ;.................................................................................................
  1141.     ; à¥®¡à §®¢ ­¨¥ áâப¨ ¢ ç¨á«®
  1142.     ;.................................................................................................
  1143.     ; esi - 㪠§ â¥«ì ­  ­ã«ìâ¥à¬¨­¨à®¢ ­­ãî áâபã
  1144.     ; ecx - ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  1145.     ; ‚®§¢à é ¥â eax - ç¨á«®
  1146.     push esi
  1147.     xor eax,eax
  1148.     xor ebx,ebx
  1149.     cmp byte [esi],'-'
  1150.     jnz .next
  1151.     inc esi
  1152.     .next:
  1153.     lodsb
  1154.     or al,al
  1155.     jz .done
  1156.     call char2byte
  1157.     imul ebx,ecx
  1158.     add ebx,eax
  1159.     jmp .next
  1160.     .done:
  1161.     xchg ebx,eax
  1162.     pop esi
  1163.     cmp byte [esi],'-'
  1164.     jz .negate
  1165.     ret
  1166.     .negate:
  1167.     neg eax
  1168.     ret
  1169. ;end_ascii2int
  1170.  
  1171. get_spectr:
  1172.     ;.................................................................................................
  1173.     ; ¢®§¢à é ¥â r,g,b á®á⮢«ïî騥 梥â 
  1174.     ;.................................................................................................
  1175.     mov     ecx,[color]
  1176.     mov     [cblue],cl
  1177.     shr     ecx,8
  1178.     mov     [cgreen],cl
  1179.     shr     ecx,8
  1180.     mov     [cred],cl
  1181.     shr     ecx,8
  1182.     mov     [calpha],cl
  1183.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  1184. ;end_get_spectr
  1185.  
  1186. set_spectr:
  1187.     ;.................................................................................................
  1188.     ; ãáâ ­ ¢«¨¢ ¥â ¨§ r,g,b 梥â
  1189.     ;.................................................................................................
  1190.     movzx   eax,[calpha]
  1191.     shl     eax,8
  1192.     mov     al,[cred]
  1193.     shl     eax,8
  1194.     mov     al,[cgreen]
  1195.     shl     eax,8
  1196.     mov     al,[cblue]
  1197.     mov     [color],eax
  1198.     call    draw_result                   ; ‚뢮¤¨¬ १ã«ìâ â
  1199.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  1200. ;end_get_spectr
  1201.  
  1202. str_len:
  1203.     ;.................................................................................................
  1204.     ; ®¯à¥¤¥«ï¥â ¤«¨­ã áâப¨ (¢å®¤->EDI ZS offset ; ¢ë室->EAX ZS length)
  1205.     ;.................................................................................................
  1206.         push ecx
  1207.         push esi
  1208.         push edi
  1209.  
  1210.         cld
  1211.         xor   al, al
  1212.         mov ecx, 0FFFFFFFFh
  1213.         mov esi, edi
  1214.         repne scasb
  1215.         sub edi, esi
  1216.         mov eax, edi
  1217.         dec eax
  1218.  
  1219.         pop edi
  1220.         pop esi
  1221.         pop ecx
  1222.  
  1223.         ret
  1224. ;end_str_len
  1225.  
  1226.  
  1227.  
  1228. ;#___________________________________________________________________________________________________
  1229. ;****************************************************************************************************|
  1230. ; ‹ŽŠ ……Œ…›• ˆ ŠŽ‘’€’                                                                         |
  1231. ;----------------------------------------------------------------------------------------------------/
  1232. circle:
  1233.     cm          db 12 dup(0)
  1234.     color       dd 00000000h              ; åà ­¨â §­ ç¥­¨¥ ¢ë¡à ­­®£® 梥â 
  1235.     color2      dd 00FFFFFFh              ; åà ­¨â §­ ç¥­¨¥ ¢â®à®£® ¢ë¡à ­­®£® 梥â 
  1236.     mouse_x     dd 0                      ; åà ­¨â £«®¡ «ì­ãî å ª®®à¤¨­ âã ¬ëè¨
  1237.     mouse_y     dd 0                      ; åà ­¨â £«®¡ «ì­ãî ã ª®®à¤¨­ âã ¬ëè¨
  1238.     mouse_f     dd 0                      ; åà ­¨â ¤ ­­ë¥ ® ⮬ ª ª ï ª­®¯ª  ¬ëè¨ ¡ë«  ­ ¦ â 
  1239.     desctop_w   dd 0                      ; åà ­¨â è¨à¨­ã íªà ­ 
  1240.     desctop_h   dd 0                      ; åà ­¨â ¢ëá®âã íªà ­ 
  1241.     sc          system_colors             ; åà ­¨â áâàãªâãàã á¨á⥬­ëå 梥⮢ ᪨­ 
  1242.     title       db 'Palitra v0.75',0       ; åà ­¨â ¨¬ï ¯à®£à ¬¬ë
  1243.     hidden      db 'Hidden',0
  1244.     hex         db '#',0                  ; ¤«ï ¢ë¢®¤  à¥èñ⪨ ª ª ⥪áâ 
  1245.     cname       db 'RGBAx'                ; åà ­¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª  ª®­æ 
  1246.     cred        db 0                      ; åà ­¨¬ ªà á­ë© ᯥªàâ
  1247.     cgreen      db 0                      ; åà ­¨¬ §¥«¥­ë© ᯥªâà
  1248.     cblue       db 0                      ; åà ­¨¬ ᨭ¨© ᯥªâà
  1249.     calpha      db 0                      ; åà ­¨¬ ¯à®§à ç­®áâì
  1250.     larrow      db 0x1A,0
  1251.     buff        db '000',0
  1252.     bground     db 'BACKGROUND',0         ; ¨¬ï ª­®¯ª¨ - 14
  1253.     pnext       dd 0                      ; áç¥â稪 ¯¥à¥ª«î祭¨ï ¯ «¨âàë
  1254.     renmode     dd 0                      ; ०¨¬ ®âà¨á®¢ª¨ (1-梥⮢ ï á奬 ,2-¯¨¯¥âª ,3-ªà㣮¢ ï)
  1255.     runmode     dd 1                      ; ०¨¬ § ¯ã᪠ (1-normal, 2-hidden, 3-colordialog)
  1256.     params      db 20 dup(0)              ; ¯à¨ñ¬ ¯ à ¬¥â஢
  1257.     params_c    db 9  dup(0)              ; ¯à¨ñ¬­¨ª ¤«ï 梥â 
  1258.  
  1259.  
  1260.  
  1261. I_END:
  1262.  
  1263.  
  1264.