Subversion Repositories Kolibri OS

Rev

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