Subversion Repositories Kolibri OS

Rev

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