Subversion Repositories Kolibri OS

Rev

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