Subversion Repositories Kolibri OS

Rev

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