Subversion Repositories Kolibri OS

Rev

Rev 3026 | 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. ;; compiler:     FASM 1.69.31                                                                        |
  6. ;; version:      0.2.0                                                                               |
  7. ;; last update:  15/09/2012                                                                          |
  8. ;; e-mail:       dr.steshin@gmail.com                                                                |
  9. ;.....................................................................................................
  10. ;; History:                                                                                          |
  11. ;; 0.1.0 - ¥à¢ ï ¢¥àá¨ï ¯à®£à ¬¬ë                                                                   |
  12. ;; 0.2.0 - ˆá¯à ¢«¥­® ¯®¯ ¤ ­¨¥ ¢ á¥âªã, ¡¥à¥âáï ¡«¨¦ ©è¨© ¯® ¤¨ £®­ «¨ ¯¨ªá¥«ì.                     |
  13. ;;       - „®¡ ¢«¥­ë ¯®«§ã­ª¨, ¤«ï ॣ㫨஢ ­¨ï rgb á®áâ ¢«ïîé¨å æ¢¥â  ¨ ¢ë¢®¤ íâ¨å á®áâ ¢«ïîé¨å.   |
  14. ;;       - “¡à ­ ¢ë¢®¤ æ¢¥â  ¢ ¡¨­ à­®¬ ¢¨¤¥ (¯®ª  §  ­¥ ­ ¤®¡­®áâìî ¨ ­¥  ªâã «ì­®áâìî).            |
  15. ;;       - Œ¥«ª ï ª®á¬¥â¨ª .                                                                         |
  16. ;.....................................................................................................
  17. ;; All rights reserved.                                                                              |
  18. ;;                                                                                                   |
  19. ;; Redistribution and use in source and binary forms, with or without modification, are permitted    |
  20. ;; provided that the following conditions are met:                                                   |
  21. ;;       * Redistributions of source code must retain the above copyright notice, this list of       |
  22. ;;         conditions and the following disclaimer.                                                  |
  23. ;;       * Redistributions in binary form must reproduce the above copyright notice, this list of    |
  24. ;;         conditions and the following disclaimer in the documentation and/or other materials       |
  25. ;;         provided with the distribution.                                                           |
  26. ;;       * Neither the name of the <organization> nor the names of its contributors may be used to   |
  27. ;;         endorse or promote products derived from this software without specific prior written     |
  28. ;;         permission.                                                                               |
  29. ;;                                                                                                   |
  30. ;; THIS SOFTWARE IS PROVIDED BY Sergei Steshin ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,      |
  31. ;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A        |
  32. ;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY DIRECT, |
  33. ;; INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED    |
  34. ;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS       |
  35. ;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT          |
  36. ;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  |
  37. ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                      |
  38. ;....................................................................................................|
  39.  
  40.  
  41. ;#___________________________________________________________________________________________________
  42. ;****************************************************************************************************|
  43. ; ‡€ƒŽ‹Ž‚ŽŠ ˆ‘Ž‹Ÿ…ŒŽƒŽ ”€‰‹€ ˆ‹Ž†…ˆŸ „‹Ÿ ŠŽ‹ˆˆ Ž‘                                             |
  44. ;----------------------------------------------------------------------------------------------------/
  45.   use32
  46.   org    0x0
  47.  
  48.   db     'MENUET01'
  49.   dd     0x01
  50.   dd     START
  51.   dd     I_END
  52.   dd     0x1000
  53.   dd     0x1000
  54.   dd     0x0
  55.   dd     0x0
  56.  
  57. include 'macros.inc'
  58.  
  59. START:
  60. ;#___________________________________________________________________________________________________
  61. ;****************************************************************************************************|
  62. ; Ž‘Ž‚Ž‰ –ˆŠ‹ Žƒ€ŒŒ› - Ž€Ž’Š€ ‘Ž›’ˆ‰                                                        |
  63. ;----------------------------------------------------------------------------------------------------/
  64. red:
  65.     call draw_window                      ; ¢ë§ë¢ ¥¬ ¯¥à¥à¨á®¢ªã ®ª­  ¯à¨«®¦¥­¨ï
  66. still:
  67.     mcall   10                            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
  68.     cmp     eax,1                         ; ¯¥à¥à¨á®¢ âì ®ª­® ?
  69.     je      red                           ; ¥á«¨ ¤  - ­  ¬¥âªã red
  70.     cmp     eax,2                         ; ­ ¦ â  ª« ¢¨è  ?
  71.     je      key                           ; ¥á«¨ ¤  - ­  key
  72.     cmp     eax,3                         ; ­ ¦ â  ª­®¯ª  ?
  73.     je      button                        ; ¥á«¨ ¤  - ­  button
  74.     jmp     still                         ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
  75. ;end_still
  76.  
  77.  
  78. key:                                      ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
  79.     mcall   2                             ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah) (âãâ ¢ ¯à¨­æ¨¯¥ ­¥ ­ã¦­ )
  80.     jmp     still                         ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  81. ;end_key
  82.  
  83. button:
  84.     mcall   17                            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  85.     cmp     ah, 1                         ; ¥á«¨ ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
  86.     jz      bexit                         ; ¢ë室¨¬
  87.     cmp     ah, 7
  88.     jne     color_button
  89.     call    mouse_get
  90.     jmp     still
  91.   color_button:
  92.     push    eax
  93.     call    mouse_local                   ; ¯®«ã稫 «®ª «ì­ë¥ ª®®à¤¨­ âë
  94.     mov     ebx,129
  95.     mov     ecx,[mouse_y]
  96.     sub     ebx,ecx
  97.     mov     ecx,3
  98.     imul    ecx,ebx
  99.  
  100.     ;push    ecx
  101.  
  102.  
  103.     pop     eax
  104.   red_button:
  105.     cmp     ah, 8
  106.     jne     green_button
  107.     mov     [cred],cl
  108.     call    set_spectr
  109.     jmp     still
  110.   green_button:
  111.     cmp     ah, 9
  112.     jne     blue_button
  113.     mov     [cgreen],cl
  114.     call    set_spectr
  115.     jmp     still
  116.   blue_button:
  117.     cmp     ah, 10
  118.     jne     still
  119.     mov     [cblue],cl
  120.     call    set_spectr
  121.     jmp     still
  122.   bexit:
  123.     mcall -1                              ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
  124. ;end_button
  125.  
  126. ;#___________________________________________________________________________________________________
  127. ;****************************************************************************************************|
  128. ; ƒ‹€‚›‰ ŒŽ„“‹œ Ž’ˆ‘Ž‚Šˆ ŽŠ€ ˆ ‹…Œ…’Ž‚ ˆ‹Ž†…ˆŸ                                               |
  129. ;----------------------------------------------------------------------------------------------------/
  130. draw_window:
  131.     mov     eax,12                        ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
  132.     mov     ebx,1                         ; 1,­ ç «® à¨á®¢ ­¨ï
  133.     int     0x40                          ; à¥à뢠­¨¥
  134.  
  135.     mov     eax,48                        ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­
  136.     mov     ebx,3                         ; ®¤äã­ªæ¨ï 3 - ¯®«ãç¨âì áâ ­¤ àâ­ë¥ æ¢¥â  ®ª®­.
  137.     mov     ecx,sc                        ; “ª § â¥«ì ­  ¡ãä¥à à §¬¥à®¬ edx ¡ ©â, ¯®¤ áâàãªâãàã
  138.     mov     edx,sizeof.system_colors      ;  §¬¥à â ¡«¨æë 梥⮢ (¤®«¦¥­ ¡ëâì 40 ¡ ©â)
  139.     int     0x40                          ; à¥à뢠­¨¥
  140.  
  141.     mov     eax,48                        ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­.
  142.     mov     ebx,4                         ; ®¤äã­ªæ¨ï 4 - ¢®§¢à é ¥â eax = ¢ëá®â  ᪨­ .
  143.     int     0x40                          ; à¥à뢠­¨¥
  144.     mov     ecx,eax                       ; ‡ ¯®¬¨­ ¥¬ ¢ëá®âã ᪨­ 
  145.  
  146.     xor     eax,eax                       ; Žç¨é ¥¬ eax (mov eax,0) (”ã­ªæ¨ï 0)
  147.     mov     ebx,200 shl 16+325            ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
  148.     add     ecx,200 shl 16+168            ; ‚ëá®â  ᪨­  + [ª®®à¤¨­ â  ¯® y]*65536 + [à §¬¥à ¯® y]
  149.     mov     edx,[sc.work]                 ; ‚¨¤¨¬® áâ¨«ì ®ª­  ¯® ¤¥ä®«âã
  150.     or      edx,0x34000000                ; ˆ«¨ ®ª­® ᮠ᪨­®¬ 䨪á¨à®¢ ­­ëå à §¬¥à®¢
  151.     mov     edi,title                     ; ‡ £®«®¢®ª ®ª­ 
  152.     int     0x40                          ; à¥à뢠­¨¥
  153.  
  154.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  155.     call    draw_result                   ; ˆ‘“…Œ …‡“‹œ’€’
  156.  
  157.     mov     eax,8                         ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã
  158.     mov     ebx,89 shl 16+222             ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
  159.     mov     ecx,9 shl 16+147              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  160.     mov     edx,0x60000007                ;  ç «ì­®¥ ID ª­®¯®ª - 0xXYnnnnnn
  161.     int     0x40
  162.  
  163.     mov     ebx,10 shl 16+8               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
  164.     mov     edx,0x60000008                ; ID = 8
  165.     mov     ecx,45 shl 16+85              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  166.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ red
  167.     add     ebx,29 shl 16                 ; „®¡ ¢«ï¥¬
  168.     inc     edx                           ; ID = 9
  169.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ green
  170.     add     ebx,29 shl 16                 ; „®¡ ¢«ï¥¬
  171.     inc     edx                           ; ID = 10
  172.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ blue
  173.  
  174.     mov     eax,12                        ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
  175.     mov     ebx,2                         ; 1,­ ç «® à¨á®¢ ­¨ï
  176.     int     0x40                          ; à¥à뢠­¨¥
  177.  
  178.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  179.  
  180.  
  181. ;#___________________________________________________________________________________________________
  182. ;****************************************************************************************************|
  183. ; ‹ŽŠ ‚‘ŽŒŽƒ€’…‹œ›• Ž–…„“ ˆ ”“Š–ˆ‰ ˆ‹Ž†…ˆŸ                                                 |
  184. ;----------------------------------------------------------------------------------------------------/
  185.  
  186. mouse_global:
  187.     ;.................................................................................................
  188.     ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨
  189.     ;.................................................................................................
  190.     mov     eax,37                        ; ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
  191.     mov     ebx,0                         ; ­ ¬ ­ã¦­ë £«®¡ «ì­ë¥ ª®®à¤¨­ âë
  192.     int     0x40                          ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
  193.     mov     ecx,eax                       ;
  194.     shr     ecx,16                        ; ecx = x+1
  195.     movzx   edx,ax                        ; edx = y+1
  196.     dec     ecx                           ; ecx = x
  197.     dec     edx                           ; edx = y
  198.     mov     [mouse_x],ecx                 ; mouse_x = x
  199.     mov     [mouse_y],edx                 ; mouse_y = y
  200.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  201. ;end_mouse_global
  202.  
  203. mouse_local:
  204.     ;.................................................................................................
  205.     ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
  206.     ;.................................................................................................
  207.     mov     eax,37                        ; ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
  208.     mov     ebx,1                         ; ­ ¬ ­ã¦­ë £«®¡ «ì­ë¥ ª®®à¤¨­ âë
  209.     int     0x40                          ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
  210.     mov     ecx,eax                       ;
  211.     shr     ecx,16                        ; ecx = x+1
  212.     movzx   edx,ax                        ; edx = y+1
  213.     dec     ecx                           ; ecx = x
  214.     dec     edx                           ; edx = y
  215.     mov     [mouse_x],ecx                 ; mouse_x = x
  216.     mov     [mouse_y],edx                 ; mouse_y = y
  217.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  218. ;end_mouse_local
  219.  
  220. desktop_get:
  221.     ;.................................................................................................
  222.     ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­ 
  223.     ;.................................................................................................
  224.     mov     eax,14                        ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­  (eax = [xsize]*65536 + [ysize])
  225.     int     0x40                          ; xsize = à §¬¥à ¯® £®à¨§®­â «¨ - 1
  226.     mov     ebx,eax                       ;
  227.     shr     ebx,16                        ; ebx = xsize-1
  228.     ;movzx   edx,ax                       ;; edx = ysize-1 («¨è­¨© ª®¤)
  229.     inc     ebx                           ; ebx = xsize
  230.     ;inc     edx                          ;; edx = ysize («¨è­¨© ª®¤)
  231.     mov     [desctop_w],ebx
  232.     ret
  233. ;end_desktop_get
  234.  
  235. mouse_get:
  236.     mov     esi,2                         ; ŠŽ‘’›‹œ: ä« £ ¤«ï ¨§¡¥¦ ­¨ï § æ¨ª«¨¢ ­¨ï
  237.     call    mouse_global
  238.     call    desktop_get
  239.     re_mouse_loop:                        ; ŠŽ‘’›‹œ: ¬¥âª  ¤«ï ¢®§¢à â  ¥á«¨ ¯®¯ «¨ ¢ á¥âªã
  240.       mov     ebx,[desctop_w]
  241.       imul    ebx,[mouse_y]               ; ebx = y*xsize
  242.       add     ebx,[mouse_x]               ; ebx = y*xsize+x
  243.  
  244.       ;.................................................................................................
  245.       ; ¥à¥¬ 梥â á ¯ «¨âàë ¢ ¯¥à¥¬¥­­ãî
  246.       ;.................................................................................................
  247.       mov     eax,35                      ; ”ã­ªæ¨ï ¢§ïâ¨ï 梥â 
  248.       ;mov     ebx,ecx                    ;; ebx = y*xsize+x («¨è­¨© ª®¤)
  249.       int     0x40                        ; ®«ãç ¥¬ 梥⠢ eax
  250.       cmp     eax,[sc.work]               ; ‘à ¢­¨¢ ¥¬ á ä®­®¬ ¯à¨«®¦¥­¨ï
  251.       je      mouse_err                   ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
  252.       cmp     eax,0x222222                ; ‘à ¢­¨¢ ¥¬ á 梥⮬ á¥âª¨
  253.       je      mouse_err                   ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
  254.       jmp     mouse_set                   ; ŠŽ‘’›‹œ: ¯à룠¥¬ çâ®¡ë ­¥ ¡à âì 梥â á¥âª¨
  255.     mouse_err:                            ; ŠŽ‘’›‹œ: ¥á«¨ ¯®¯ «¨ ¢ á¥âªã ¨«¨ ä®­
  256.       inc     [mouse_y]                   ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ á­ ç «  ¯® å
  257.       inc     [mouse_x]                   ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ ¯®â®¬ ¯® ã
  258.       dec     esi                         ; ŠŽ‘’›‹œ: “¬¥­ìè ¥¬ ä« £
  259.       cmp     esi,0                       ; ŠŽ‘’›‹œ: ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  260.     jz        mouse_exit                  ; ŠŽ‘’›‹œ: …᫨ ­®«ì ⮠ᤥ« «¨ ¢áñ çâ® ¬®£«¨
  261.     jmp    re_mouse_loop                  ; ŠŽ‘’›‹œ: …᫨ ­¥ ­®«ì â® ¯®¯à®¡ã¥¬ ¢§ïâì á®á¥«­¨© ¯¨ªá¥«ì
  262.     mouse_set:
  263.     mov     [color],eax                   ; ˆ­ ç¥ § ¯®¬¨­ ¥¬ ­®¢ë© 梥â
  264.     call    draw_result                   ; ‚뢮¤¨¬ १ã«ìâ â
  265.     mouse_exit:
  266.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  267. ;end_mouse_get----------------------------------------------------------------------------------------
  268.  
  269. draw_palitra:
  270.     ;.................................................................................................
  271.     ; Žâà¨á®¢ª  ä®­  ¯®¤ ª­®¯ª¨
  272.     ;.................................................................................................
  273.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  274.     mov     edx,0x222222                  ; 梥â
  275.     mov     ecx,9 shl 16+73               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  276.     mov     esi,2                         ; ‘ç¥â稪 «¨­¨© ¯®¤«®¦¥ª
  277.     re_draw:
  278.     mov     ebx,89 shl 16+73              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  279.     mov     edi,3                         ; ‘ç¥â稪 ª®«¨ç¥á⢠ ¯®¤«®¦¥ª
  280.     for_fon_loop:
  281.       int     0x40                        ; à¥à뢠­¨¥
  282.       add     ebx,75 shl 16               ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® å
  283.       dec     edi                         ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
  284.       cmp     edi,0                       ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  285.     jnz     for_fon_loop                  ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  286.     dec     esi                           ; “¬¥­ìè ¥¬ ¥£®
  287.     cmp     esi,0                         ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  288.     mov     ecx,84 shl 16+73              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  289.     jnz     re_draw                       ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  290.  
  291.     ;.................................................................................................
  292.     ; Žâà¨á®¢ª  ª­®¯®ª ¯® 横«ã
  293.     ;.................................................................................................
  294.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  295.     mov     edx,0x0FFFFFFF                ; 梥â
  296.     mov     esi,6                         ; ‘ç¥â稪 ª®«¨ç¥á⢠  ¡§ æ¥¢ (#4,8)
  297.     mov     ebx,78 shl 16+8               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  298.     for_abz:
  299.       ;;push    esi                       ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
  300.       cmp     esi,3
  301.       jne     x2_line
  302.       mov     ebx,78 shl 16+8
  303.       x2_line:
  304.       add     ebx,3 shl 16                ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
  305.       mov     edi,8                       ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
  306.       for_stolbik:
  307.         push    edi                       ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
  308.         mov     edi,8                     ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
  309.         mov     ecx,  1 shl 16+8          ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  310.         cmp     esi,3
  311.         jg      y2_line                   ; …᫨ ¡®«ìè¥ 4 â® ¨£­®à¨¬
  312.         mov     ecx,76 shl 16+8
  313.         y2_line:
  314.         add     ebx,9 shl 16              ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
  315.         for_loop:
  316.           add     ecx,9 shl 16            ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® y
  317.           int     0x40                    ; à¥à뢠­¨¥
  318.           sub     edx,32 shl 16
  319.           dec     edi                     ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
  320.           cmp     edi,0                   ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  321.           jnz     for_loop                ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  322.       sub     edx,32 shl 8
  323.       pop     edi                         ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
  324.       dec     edi                         ; “¬¥­ìè ¥¬ ¥£®
  325.       cmp     edi,0                       ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  326.       jnz     for_stolbik                 ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  327.     sub     edx,48                        ; (#64,32)
  328.     ;;pop     esi                         ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
  329.     dec     esi                           ; “¬¥­ìè ¥¬ ¥£®
  330.     cmp     esi,0                         ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  331.     jnz     for_abz                       ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  332.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  333. ;end_draw_palitra-------------------------------------------------------------------------------------
  334.  
  335. draw_result:
  336.     ;.................................................................................................
  337.     ; Žâà¨á®¢ª  १ã«ìâ â  æ¢¥â  ¢ hex
  338.     ;.................................................................................................
  339.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  340.     mov     edx,0x222222                  ; 梥â-®¡¢®¤ª¨
  341.     mov     ebx,4 shl 16+15               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  342.     mov     ecx,9 shl 16+15               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  343.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  344.     mov     ebx,23 shl 16+62              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  345.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  346.  
  347.     mov     edx,[color]                   ; 梥â
  348.     mov     ebx,5 shl 16+13               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  349.     mov     ecx,10 shl 16+13              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  350.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  351.     mov     edx,0xFFFFFF                  ; 梥â-ä®­ 
  352.     mov     ebx,24 shl 16+60              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  353.     int     0x40                          ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
  354.  
  355.     mov     eax,47                        ; ”ã­ªæ¨ï 47 - ¢ë¢®¤ ç¨á«  ¢ ®ª­®
  356.     mov     ecx,[color]                   ; ç¨á«® (¯à¨ bl=0) ¨«¨ 㪠§ â¥«ì (¯à¨ bl=1)
  357.     mov     esi,0x0                       ; 0xX0RRGGBB
  358.     mov     ebx,256+8 shl 16              ; ¯ à ¬¥âàë ¯à¥®¡à §®¢ ­¨ï ç¨á«  ¢ ⥪áâ (HEX)
  359.     mov     edx,34 shl 16+13              ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  360.     int     0x40                          ; à¥à뢠­¨¥ - ¢ë¢®¤¨¬ १ã«ìâ â ¢ ®ª­® (HEX)
  361.  
  362.     mov     eax,4                         ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
  363.     mov     ebx,27*65536+13               ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  364.     mov     ecx,0x0                       ; 梥â ⥪áâ  RRGGBB
  365.     mov     edx,hex                       ; à¨á㥬 '#'
  366.     mov     esi,1                         ; ¤«¨­  ⥪áâ  ¢ ¡ ©â å
  367.     int     0x40
  368.  
  369.     ;.................................................................................................
  370.     ; Žâà¨á®¢ª  ¯®«¥© ¤«ï r g b §­ ç¥­¨©
  371.     ;.................................................................................................
  372.     call    get_spectr
  373.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  374.     mov     edx,0x222222                  ; 梥â-®¡¢®¤ª¨
  375.     mov     ebx,4 shl 16+23               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  376.     mov     ecx,142 shl 16+15             ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  377.     int     0x40
  378.     mov     ebx,33 shl 16+23              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  379.     int     0x40
  380.     mov     ebx,62 shl 16+23              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  381.     int     0x40
  382.     mov     edx,0xFFFFFF                  ; 梥â-®¡¢®¤ª¨
  383.     mov     ebx,5 shl 16+21               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  384.     mov     ecx,143 shl 16+13             ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  385.     int     0x40
  386.     mov     ebx,34 shl 16+21              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  387.     int     0x40
  388.     mov     ebx,63 shl 16+21              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  389.     int     0x40
  390.  
  391.     ;.................................................................................................
  392.     ; Žâà¨á®¢ª  r g b §­ ç¥­¨©
  393.     ;.................................................................................................
  394.     movzx   eax,[cred]                    ; ªà á­ë©
  395.     mov     ebx,7*65536+146               ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  396.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  397.  
  398.     movzx   eax,[cgreen]                  ; §¥«¥­ë©
  399.     mov     ebx,36*65536+146              ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  400.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  401.  
  402.     movzx   eax,[cblue]                   ; ᨭ¨©
  403.     mov     ebx,65*65536+146              ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  404.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  405.  
  406.     ;.................................................................................................
  407.     ; Ž¡­ã«ï¥¬ ä®­
  408.     ;.................................................................................................
  409.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  410.     mov     edx,[sc.work]                 ; 梥â-®¡¢®¤ª¨
  411.     mov     ebx,8 shl 16+66               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  412.     mov     ecx,40 shl 16+87              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  413.     int     0x40
  414.  
  415.     ;mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  416.     ;mov     edx,0x222222                  ; 梥â-®¡¢®¤ª¨
  417.     ;mov     ebx,4 shl 16+23               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  418.     ;mov     ecx,30 shl 16+105             ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  419.     ;int     0x40
  420.     ;add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  421.     ;int     0x40
  422.     ;add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  423.     ;int     0x40
  424.  
  425.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  426.     mov     edx,[sc.work]                 ; 梥â-®¡¢®¤ª¨
  427.     mov     ebx,5 shl 16+21               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  428.     mov     ecx,31 shl 16+103             ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  429.     int     0x40
  430.     add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  431.     int     0x40
  432.     add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  433.     int     0x40
  434.  
  435.     ;.................................................................................................
  436.     ; ‚뢮¤¨¬ ¡ãª¢ë r g b
  437.     ;.................................................................................................
  438.     mov     eax,4                         ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ  ¢ ®ª­®
  439.     mov     ebx,12 shl 16+34              ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  440.     mov     ecx,0x0                       ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ )
  441.     mov     edx,cname                     ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
  442.     mov     esi,2                         ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
  443.     newline:                              ; 横«
  444.       int     0x40                          ; à¥à뢠­¨¥
  445.       add     ebx,29 shl 16                 ; „®¡ ¢«ï¥¬
  446.       add     edx,2                         ; „®¡ ¢«ï¥¬
  447.       cmp     [edx],byte 'x'                ; ‘à ¢­¥­¨¥ á ¡ ©â®¬ å
  448.     jne    newline                        ; …᫨ ­¥ ­ã«ì ¨«¨ ­¥ à ¢­®
  449.  
  450.     ;.................................................................................................
  451.     ; Žâà¨á®¢ª  á« ©¤¥à®¢
  452.     ;.................................................................................................
  453.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  454.     mov     edx,0x222222                  ; 梥â-®¡¢®¤ª¨
  455.     mov     ebx,12 shl 16+4               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  456.     mov     ecx,45 shl 16+85              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  457.     int     0x40
  458.     add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  459.     int     0x40
  460.     add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  461.     int     0x40
  462.  
  463.     mov     edx,0xFA0919                  ; 梥â-®¡¢®¤ª¨
  464.     mov     ebx,13 shl 16+2               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  465.     mov     ecx,46 shl 16+83              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  466.     int     0x40
  467.     mov     edx,0x08CE19                  ; 梥â-®¡¢®¤ª¨
  468.     add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  469.     int     0x40
  470.     mov     edx,0x0909FF                  ; 梥â-®¡¢®¤ª¨
  471.     add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  472.     int     0x40
  473.  
  474.     ;.................................................................................................
  475.     ; Žâà¨á®¢ª  ¯®«§ã­ª®¢
  476.     ;.................................................................................................
  477.     mov     edx,0x0                       ; 梥â-¯®«§ã­ª®¢
  478.     mov     ebx,10 shl 16+8               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  479.     movzx   eax,[cred]                    ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  480.     call    draw_slider
  481.     add     ebx,29 shl 16
  482.     movzx   eax,[cgreen]                  ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  483.     call    draw_slider
  484.     add     ebx,29 shl 16
  485.     movzx   eax,[cblue]                   ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  486.     call    draw_slider
  487.  
  488.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  489. ;end_draw_result
  490.  
  491. draw_slider:
  492.     xor     ecx,ecx
  493.     mov     cl,0x3                        ; ¡ã¤¥¬ ¤¥«¨âì ¥£® ­  3 â ª ª ª ¯®«§ã­ª¨ ¤«¨­­®© 85 ¯¨ªá¥«¥©
  494.     div     cl                            ; ¤¥«¨¬ - 楫®¥ ¢ al ®áâ â®ª ¢ ah
  495.     mov     cl,128                        ; ­¨¦­ïï â®çª  ¯®«§ã­ª 
  496.     sub     cl,al                         ; cl=cl-al
  497.     shl     ecx,16
  498.     add     ecx,4                         ; § ¤ ¥¬ ­ ç «ì­®¥ ¯®«®¦¥­¨¥
  499.     mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  500.     int     0x40
  501.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  502.  
  503. ;end_slider
  504.  
  505. draw_value:
  506.     ;.................................................................................................
  507.     ; ‚뢮¤ ç¨á«  ¨§ áâப¨ ¢ 㪠§ ­­®© ®¡« áâ¨
  508.     ;.................................................................................................
  509.     push    ebx                           ; á®å࠭塞 ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
  510.     mov     ebx,10                        ; ãáâ ­ ¢«¨¢ ¥¬ ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  511.     mov     edi,buff                      ; 㪠§ â¥«ì ­  áâப㠡ãä¥à 
  512.     call    int2ascii                     ; ª®­¢¥àâ¨à㥬 ç¨á«® ¨ «®¦¨¬ ª ª áâப㠢 ¡ãä¥à + esi ¤«¨­ 
  513.     mov     eax,4                         ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
  514.     pop     ebx                           ; ¤®áâ ¥¬ ¨§ á⥪  ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
  515.     mov     ecx,0x0                       ; 梥â ⥪áâ  RRGGBB
  516.     mov     edx,buff                      ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
  517.     int     0x40
  518.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  519. ;end_draw_value
  520.  
  521. hex_digit:
  522.     ;.................................................................................................
  523.     ; à¥®¡à §®¢ ­¨¥ ¢ ASCII (¢­¥ § ¢¨á¨¬®á⨠®â á¨á⥬ë áç¨á«¥­¨ï)
  524.     ;.................................................................................................
  525.     cmp    dl,10                          ; ¢ dl ®¦¨¤ ¥âáï ç¨á«® ®â 0 ¤® 15
  526.     jb     .less                          ; ¥á«¨ dl<10 â® ¯¥à¥å®¤¨¬
  527.     add    dl,'A'-10                      ; 10->A 11->B 12->C ...
  528.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  529.     .less:
  530.     or     dl,'0'                         ; …᫨ á¨á⥬  áç¨á«¥­¨ï 10-ï ¨ ¬¥­¥¥
  531.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  532. ;end_hex_digit
  533.  
  534. int2ascii:
  535.     ;.................................................................................................
  536.     ; à¥®¡à §®¢ ­¨¥ ç¨á«  ¢ áâபã
  537.     ;.................................................................................................
  538.     ; eax - 32-å §­ ç­®¥ ç¨á«®
  539.     ; ebx - ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  540.     ; edi - 㪠§ â¥«ì ­  áâப㠡ãä¥à 
  541.     ; ‚®§¢à é ¥â § ¯®«­¥­­ë© ¡ãä¥à ¨ esi - ¤«¨­  áâப¨
  542.     ;pushad
  543.     xor     esi,esi                       ; § ­ã«ï¥¬ áç¥â稪 ᨬ¢®«®¢
  544.     convert_loop:
  545.     xor     edx,edx                       ; § ­ã«ï¥¬ ॣ¨áâà ¯®¤ ®áâ â®ª
  546.     div     ebx                           ; eax/ebx - ®áâ â®ª ¢ edx
  547.     call    hex_digit                     ; ¯à¥®¡à §ã¥¬ ᨬ¢®«
  548.     push    edx                           ; «®¦¨¬ ¢ á⥪
  549.     inc     esi                           ; 㢥«¨ç¨¢ ¥¬ áç¥â稪
  550.     test    eax,eax                       ; ¥á«¨ ¥é¥ ¬®¦­® ¤¥«¨âì
  551.     jnz     convert_loop                  ; â® ¤¥«¨¥¬ ¥é¥
  552.     cld                                   ; ŽŸ‡€’…‹œŽ á¡à á뢠¥¬ ä« £ ­ ¯à ¢«¥­¨ï DF (§ ¯¨áì ¢¯¥àñ¤)
  553.     write_loop:                           ; ¨­ ç¥
  554.     pop     eax                           ; ¤®áâ ¥¬ ¨§ á⥪  ¢ ¥ å
  555.     stosb                                 ; § ¯¨á뢠¥¬ ¢ ¡ãä¥à ¯®  ¤à¥áã ES:(E)DI
  556.     dec     esi                           ; 㬥­ìè ¥¬ áç¥â稪
  557.     test    esi,esi                       ; ¥á«¨ ¥áâì çâ® ¤®áâ ¢ âì ¨§ á⥪ 
  558.     jnz     write_loop                    ; â® ¤®áâ ñ¬
  559.     mov     byte [edi],0                  ; ¨­ ç¥ ¤®¯¨áë뢠¥¬ ­ã«¥¢®© ¡ ©â
  560.     ;popad                                 ; ¢®ááâ ­ ¢«¨¢ ¥¬ §­ ç¥­¨ï ॣ¨áâ஢
  561.     ; ª®¤ ­¨¦¥ ­¥ ¨¬¥¥â ­¨ç¥£® ®¡é¥£® ª ä㭪樨, ¯à®áâ® ¢®§¢à é ¥â ¥é¥ ¤«¨­­ã ¯®«ã祭­®© áâப¨
  562.     mov     edi,buff                      ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
  563.     call    str_len
  564.     mov     esi,eax
  565.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  566. ;end_int2ascii
  567.  
  568. get_spectr:
  569.     ;.................................................................................................
  570.     ; ¢®§¢à é ¥â r,g,b á®á⮢«ïî騥 梥â 
  571.     ;.................................................................................................
  572.     ; get blue
  573.     mov     ecx,[color]
  574.     movzx   eax,cl
  575.     mov     [cblue],al
  576.     ; get red
  577.     mov     eax,ecx
  578.     xor     ax,ax
  579.     shr     eax,16
  580.     mov     [cred],al
  581.     ; get green
  582.     shl      ecx,16
  583.     shr      ecx,24
  584.     mov      [cgreen],cl
  585.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  586. ;end_get_spectr
  587.  
  588. set_spectr:
  589.     ;.................................................................................................
  590.     ; ãáâ ­ ¢«¨¢ ¥â ¨§ r,g,b 梥â
  591.     ;.................................................................................................
  592.     ; get blue
  593.     movzx   eax,[cred]
  594.     shl     eax,8
  595.     mov     al,[cgreen]
  596.     shl     eax,8
  597.     mov     al,[cblue]
  598.     mov     [color],eax
  599.     call    draw_result                   ; ‚뢮¤¨¬ १ã«ìâ â
  600.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  601. ;end_get_spectr
  602.  
  603. str_len:
  604.     ;.................................................................................................
  605.     ; ®¯à¥¤¥«ï¥â ¤«¨­ã áâப¨ (¢å®¤->EDI ZS offset ; ¢ë室->EAX ZS length)
  606.     ;.................................................................................................
  607.         push ecx
  608.         push esi
  609.         push edi
  610.  
  611.         cld
  612.         xor   al, al
  613.         mov ecx, 0FFFFFFFFh
  614.         mov esi, edi
  615.         repne scasb
  616.         sub edi, esi
  617.         mov eax, edi
  618.         dec eax
  619.  
  620.         pop edi
  621.         pop esi
  622.         pop ecx
  623.  
  624.         ret
  625. ;end_str_len
  626. ;#___________________________________________________________________________________________________
  627. ;****************************************************************************************************|
  628. ; ‹ŽŠ ……Œ…›• ˆ ŠŽ‘’€’                                                                         |
  629. ;----------------------------------------------------------------------------------------------------/
  630.  
  631.     color       dd 00000000h              ; åà ­¨â §­ ç¥­¨¥ ¢ë¡à ­­®£® 梥â 
  632.     mouse_x     dd 0                      ; åà ­¨â £«®¡ «ì­ãî å ª®®à¤¨­ âã ¬ëè¨
  633.     mouse_y     dd 0                      ; åà ­¨â £«®¡ «ì­ãî ã ª®®à¤¨­ âã ¬ëè¨
  634.     desctop_w   dd 0                      ; åà ­¨â è¨à¨­ã íªà ­ 
  635.     sc          system_colors             ; åà ­¨â áâàãªâãàã á¨á⥬­ëå 梥⮢ ᪨­ 
  636.     title       db 'Palitra v0.2',0       ; åà ­¨â ¨¬ï ¯à®£à ¬¬ë
  637.     hex         db '#',0                  ; ¤«ï ¢ë¢®¤  à¥èñ⪨ ª ª ⥪áâ 
  638.     cname       db 'R G B x'              ; åà ­¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª  ª®­æ 
  639.     cred        db 0                      ; åà ­¨¬ ªà á­ë© ᯥªàâ
  640.     cgreen      db 0                      ; åà ­¨¬ §¥«¥­ë© ᯥªâà
  641.     cblue       db 0                      ; åà ­¨¬ ᨭ¨© ᯥªâà
  642.     buff        db '000',0
  643. I_END:
  644.  
  645.  
  646.