Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3025 → Rev 3026

/programs/media/palitra/trunk/build.bat
0,0 → 1,4
@fasm.exe palitra.asm palitra
@kpack palitra
 
pause
/programs/media/palitra/trunk/palitra.asm
3,16 → 3,20
; Program Palitra (c) Sergei Steshin (Akyltist) |
;----------------------------------------------------------------------------------------------------|
;; compiler: FASM 1.69.31 |
;; version: 0.2.0 |
;; last update: 15/09/2012 |
;; version: 0.3.0 |
;; last update: 08/11/2012 |
;; e-mail: dr.steshin@gmail.com |
;.....................................................................................................
;; History: |
;; 0.1.0 - ¥à¢ ï ¢¥àá¨ï ¯à®£à ¬¬ë |
;; 0.2.0 - ˆá¯à ¢«¥­® ¯®¯ ¤ ­¨¥ ¢ á¥âªã, ¡¥à¥âáï ¡«¨¦ ©è¨© ¯® ¤¨ £®­ «¨ ¯¨ªá¥«ì. |
;; - „®¡ ¢«¥­ë ¯®«§ã­ª¨, ¤«ï ॣ㫨஢ ­¨ï rgb á®áâ ¢«ïîé¨å æ¢¥â  ¨ ¢ë¢®¤ íâ¨å á®áâ ¢«ïîé¨å. |
;; - “¡à ­ ¢ë¢®¤ æ¢¥â  ¢ ¡¨­ à­®¬ ¢¨¤¥ (¯®ª  §  ­¥ ­ ¤®¡­®áâìî ¨ ­¥  ªâã «ì­®áâìî). |
;; - Œ¥«ª ï ª®á¬¥â¨ª . |
;; 0.1.0 - Ïåðâàÿ âåðñèÿ ïðîãðàììû. |
;; 0.2.0 - Èñïðàâëåíî ïîïàäàíèå â ñåòêó, áåðåòñÿ áëèæàéøèé ïî äèàãîíàëè ïèêñåëü. |
;; - Äîáàâëåíû ïîëçóíêè, äëÿ ðåãóëèðîâàíèÿ rgb ñîñòàâëÿþùèõ öâåòà è âûâîä ýòèõ ñîñòàâëÿþùèõ. |
;; - Óáðàí âûâîä öâåòà â áèíàðíîì âèäå (ïîêà çà íå íàäîáíîñòüþ è íå àêòóàëüíîñòüþ). |
;; - Ìåëêàÿ êîñìåòèêà. |
;; 0.3.0 - Äîáàâëåíî ïåðåêëþ÷åíèå âèäîâ öâåòîâûõ ñõåì (êíîïêà NEXT) |
;; - Óëó÷øåíû ïîëçóíêè, ïðîèçâîäèòñÿ îáðàáîòêà íàæàòèÿ ðÿäîì ñ ïîëçóíêîì. |
;; - ×èñëî ñåòîê â öâåòîâîé ñõåìå óìåíüøåíî ñ 6 äî 4 (êðàòíîñòü 256, èíà÷å äóáëèðîâàíèå öâåòà).|
;; - Ìåëêàÿ êîñìåòèêà. |
;.....................................................................................................
;; All rights reserved. |
;; |
40,7 → 44,7
 
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ‡€ƒŽ‹Ž‚ŽŠ ˆ‘Ž‹Ÿ…ŒŽƒŽ ”€‰‹€ ˆ‹Ž†…ˆŸ „‹Ÿ ŠŽ‹ˆˆ Ž‘ |
; ÇÀÃÎËÎÂÎÊ ÈÑÏÎËÍßÅÌÎÃÎ ÔÀÉËÀ ÏÐÈËÎÆÅÍÈß ÄËß ÊÎËÈÁÐÈ ÎÑ |
;----------------------------------------------------------------------------------------------------/
use32
org 0x0
54,36 → 58,60
dd 0x0
dd 0x0
 
include 'macros.inc'
include '../../../macros.inc'
 
 
START:
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; Ž‘Ž‚Ž‰ –ˆŠ‹ Žƒ€ŒŒ› - Ž€Ž’Š€ ‘Ž›’ˆ‰ |
; ÎÑÍÎÂÍÎÉ ÖÈÊË ÏÐÎÃÐÀÌÌÛ - ÎÁÐÀÁÎÒÊÀ ÑÎÁÛÒÈÉ |
;----------------------------------------------------------------------------------------------------/
red:
call draw_window ; ¢ë§ë¢ ¥¬ ¯¥à¥à¨á®¢ªã ®ª­  ¯à¨«®¦¥­¨ï
call draw_window ; âûçûâàåì ïåðåðèñîâêó îêíà ïðèëîæåíèÿ
still:
mcall 10 ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
cmp eax,1 ; ¯¥à¥à¨á®¢ âì ®ª­® ?
je red ; ¥á«¨ ¤  - ­  ¬¥âªã red
cmp eax,2 ; ­ ¦ â  ª« ¢¨è  ?
je key ; ¥á«¨ ¤  - ­  key
cmp eax,3 ; ­ ¦ â  ª­®¯ª  ?
je button ; ¥á«¨ ¤  - ­  button
jmp still ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
mcall 10 ; ôóíêöèÿ 10 - æäàòü ñîáûòèÿ
cmp eax,1 ; ïåðåðèñîâàòü îêíî ?
je red ; åñëè äà - íà ìåòêó red
cmp eax,2 ; íàæàòà êëàâèøà ?
je key ; åñëè äà - íà key
cmp eax,3 ; íàæàòà êíîïêà ?
je button ; åñëè äà - íà button
jmp still ; åñëè äðóãîå ñîáûòèå - â íà÷àëî öèêëà
;end_still
 
 
key: ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
mcall 2 ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah) (âãâ ¢ ¯à¨­æ¨¯¥ ­¥ ­ã¦­ )
jmp still ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
key: ; íàæàòà êëàâèøà íà êëàâèàòóðå
mcall 2 ; ôóíêöèÿ 2 - ñ÷èòàòü êîä ñèìâîëà (â ah) (òóò â ïðèíöèïå íå íóæíà)
jmp still ; âåðíóòüñÿ ê íà÷àëó öèêëà
;end_key
 
button:
mcall 17 ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
cmp ah, 1 ; ¥á«¨ ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
jz bexit ; ¢ë室¨¬
mcall 17 ; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè
cmp ah, 1 ; åñëè íàæàòà êíîïêà ñ íîìåðîì 1,
jz bexit ; âûõîäèì
;îáðàáîòêà êíîïêè Next
cmp ah, 11 ; åñëè íàæàòà êíîïêà NEXT
jne next_bg ; âûõîäèì
inc [pnext] ; óâåëè÷èâàåì ïðè íàæàòèè íîìåð ïàëèòðû
mov eax,[pnext]
cmp al,6
jne next_redraw
xor eax,eax
mov [pnext],eax
next_redraw:
call draw_palitra ; ÐÈÑÓÅÌ ÏÀËÈÒÐÓ
;call draw_result ; ÐÈÑÓÅÌ ÐÅÇÓËÜÒÀÒ
jmp still
 
next_bg:
cmp ah, 12 ; åñëè íàæàòà êíîïêà BACKGROUND
jne next_end ; âûõîäèì
mcall 15,4,1
mcall 15,1,1,1
mcall 15,5,color,0,3*1*1
mcall 15,3
jne next_redraw
next_end:
cmp ah, 7
jne color_button
call mouse_get
90,7 → 118,7
jmp still
color_button:
push eax
call mouse_local ; ¯®«ã稫 «®ª «ì­ë¥ ª®®à¤¨­ âë
call mouse_local ; ïîëó÷èë ëîêàëüíûå êîîðäèíàòû
mov ebx,129
mov ecx,[mouse_y]
sub ebx,ecx
120,76 → 148,108
call set_spectr
jmp still
bexit:
mcall -1 ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
mcall -1 ; èíà÷å êîíåö ïðîãðàììû
;end_button
 
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ƒ‹€‚›‰ ŒŽ„“‹œ Ž’ˆ‘Ž‚Šˆ ŽŠ€ ˆ ‹…Œ…’Ž‚ ˆ‹Ž†…ˆŸ |
; ÃËÀÂÍÛÉ ÌÎÄÓËÜ ÎÒÐÈÑÎÂÊÈ ÎÊÍÀ È ÝËÅÌÅÍÒÎÂ ÏÐÈËÎÆÅÍÈß |
;----------------------------------------------------------------------------------------------------/
draw_window:
mov eax,12 ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
mov ebx,1 ; 1,­ ç «® à¨á®¢ ­¨ï
int 0x40 ; à¥à뢠­¨¥
mov eax,12 ; ôóíêöèÿ 12: îçíà÷àåò, ÷òî áóäåò ðèñîâàòüñÿ îêíî
mov ebx,1 ; 1,íà÷àëî ðèñîâàíèÿ
int 0x40 ; Ïðåðûâàíèå
 
mov eax,48 ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­
mov ebx,3 ; ®¤äã­ªæ¨ï 3 - ¯®«ãç¨âì áâ ­¤ àâ­ë¥ æ¢¥â  ®ª®­.
mov ecx,sc ; “ª § â¥«ì ­  ¡ãä¥à à §¬¥à®¬ edx ¡ ©â, ¯®¤ áâàãªâãàã
mov edx,sizeof.system_colors ;  §¬¥à â ¡«¨æë 梥⮢ (¤®«¦¥­ ¡ëâì 40 ¡ ©â)
int 0x40 ; à¥à뢠­¨¥
mov eax,48 ; Ôóíêöèÿ 48 - ñòèëè îòîáðàæåíèÿ îêîí
mov ebx,3 ; Ïîäôóíêöèÿ 3 - ïîëó÷èòü ñòàíäàðòíûå öâåòà îêîí.
mov ecx,sc ; Óêàçàòåëü íà áóôåð ðàçìåðîì edx áàéò, ïîä ñòðóêòóðó
mov edx,sizeof.system_colors ; Ðàçìåð òàáëèöû öâåòîâ (äîëæåí áûòü 40 áàéò)
int 0x40 ; Ïðåðûâàíèå
 
mov eax,48 ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­.
mov ebx,4 ; ®¤äã­ªæ¨ï 4 - ¢®§¢à é ¥â eax = ¢ëá®â  ᪨­ .
int 0x40 ; à¥à뢠­¨¥
mov ecx,eax ; ‡ ¯®¬¨­ ¥¬ ¢ëá®âã ᪨­ 
mov eax,48 ; Ôóíêöèÿ 48 - ñòèëè îòîáðàæåíèÿ îêîí.
mov ebx,4 ; Ïîäôóíêöèÿ 4 - âîçâðàùàåò eax = âûñîòà ñêèíà.
int 0x40 ; Ïðåðûâàíèå
mov ecx,eax ; Çàïîìèíàåì âûñîòó ñêèíà
 
xor eax,eax ; Žç¨é ¥¬ eax (mov eax,0) (”ã­ªæ¨ï 0)
mov ebx,200 shl 16+325 ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
add ecx,200 shl 16+168 ; ‚ëá®â  ᪨­  + [ª®®à¤¨­ â  ¯® y]*65536 + [à §¬¥à ¯® y]
mov edx,[sc.work] ; ‚¨¤¨¬® áâ¨«ì ®ª­  ¯® ¤¥ä®«âã
or edx,0x34000000 ; ˆ«¨ ®ª­® ᮠ᪨­®¬ 䨪á¨à®¢ ­­ëå à §¬¥à®¢
mov edi,title ; ‡ £®«®¢®ª ®ª­ 
int 0x40 ; à¥à뢠­¨¥
xor eax,eax ; Î÷èùàåì eax (mov eax,0) (Ôóíêöèÿ 0)
mov ebx,200 shl 16+250 ; [êîîðäèíàòà ïî îñè x]*65536 + [ðàçìåð ïî îñè x]
add ecx,200 shl 16+195 ; Âûñîòà ñêèíà + [êîîðäèíàòà ïî y]*65536 + [ðàçìåð ïî y] (168 äëÿ âåðñèè 0.2)
mov edx,[sc.work] ; Âèäèìî ñòèëü îêíà ïî äåôîëòó
or edx,0x34000000 ; Èëè îêíî ñî ñêèíîì ôèêñèðîâàííûõ ðàçìåðîâ
mov edi,title ; Çàãîëîâîê îêíà
int 0x40 ; Ïðåðûâàíèå
 
call draw_palitra ; ˆ‘“…Œ €‹ˆ’“
call draw_result ; ˆ‘“…Œ …‡“‹œ’€’
call draw_palitra ; ÐÈÑÓÅÌ ÏÀËÈÒÐÓ
call draw_result ; ÐÈÑÓÅÌ ÐÅÇÓËÜÒÀÒ
 
mov eax,8 ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã
mov ebx,89 shl 16+222 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
mov ecx,9 shl 16+147 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov edx,0x60000007 ;  ç «ì­®¥ ID ª­®¯®ª - 0xXYnnnnnn
mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó
mov ebx,89 shl 16+147 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
mov ecx,9 shl 16+147 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov edx,0x60000007 ; Íà÷àëüíîå ID êíîïîê - 0xXYnnnnnn
int 0x40
 
mov ebx,10 shl 16+8 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
mov ebx,9 shl 16+12 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
mov edx,0x60000008 ; ID = 8
mov ecx,45 shl 16+85 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40 ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ red
add ebx,29 shl 16 ; „®¡ ¢«ï¥¬
mov ecx,45 shl 16+85 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì red
add ebx,26 shl 16 ; Äîáàâëÿåì
inc edx ; ID = 9
int 0x40 ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ green
add ebx,29 shl 16 ; „®¡ ¢«ï¥¬
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì green
add ebx,26 shl 16 ; Äîáàâëÿåì
inc edx ; ID = 10
int 0x40 ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ blue
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì blue
 
mov eax,12 ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
mov ebx,2 ; 1,­ ç «® à¨á®¢ ­¨ï
int 0x40 ; à¥à뢠­¨¥
mov eax,12 ; ôóíêöèÿ 12: îçíà÷àåò, ÷òî áóäåò ðèñîâàòüñÿ îêíî
mov ebx,2 ; 2 - êîíåö ðèñîâàíèÿ
int 0x40 ; Ïðåðûâàíèå
 
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
;.................................................................................................
; Îòðèñîâêà íèæíåé ïàíåëè
;.................................................................................................
mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó
mov ebx,4 shl 16+64 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
mov ecx,169 shl 16+16 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov edx,11 ; ID = 11
mov esi,[sc.work_button] ; öâåò
int 0x40
 
mov ebx,80 shl 16+102 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
mov edx,12 ; ID = 11
int 0x40
 
mov eax,4 ; 4 - âûâåñòè ñòðîêó òåêñòà â îêíî
mov ebx,25 shl 16+174 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y]
mov ecx,[sc.work_button_text] ; 0xX0RRGGBB (RR, GG, BB çàäàþò öâåò òåêñòà)
mov edx,bnext ; óêàçàòåëü íà íà÷àëî ñòðîêè
;mov esi,1 ; âûâîäèòü esi ñèìâîëîâ
int 0x40
 
;mov ebx,247 shl 16+64 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
;mov edx,12 ; ID = 12
;int 0x40
 
mov eax,38 ; Ôóíêöèÿ 38 - íàðèñîâàòü îòðåçîê.
mov ebx,4 shl 16+236 ;[êîîðäèíàòà íà÷àëà ïî îñè x]*65536 + [êîîðäèíàòà êîíöà ïî îñè x]
mov ecx,163 shl 16+163 ;[êîîðäèíàòà íà÷àëà ïî îñè y]*65536 + [êîîðäèíàòà êîíöà ïî îñè y]
mov edx,0x00666666 ;0x00RRGGBB - öâåò
int 0x40
 
ret ; Âîçâðàùàåì óïðàâëåíèå
 
 
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ‹ŽŠ ‚‘ŽŒŽƒ€’…‹œ›• Ž–…„“ ˆ ”“Š–ˆ‰ ˆ‹Ž†…ˆŸ |
; ÁËÎÊ ÂÑÏÎÌÎÃÀÒÅËÜÍÛÕ ÏÐÎÖÅÄÓÐ È ÔÓÍÊÖÈÉ ÏÐÈËÎÆÅÍÈß |
;----------------------------------------------------------------------------------------------------/
 
mouse_global:
;.................................................................................................
; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨
; Ïîëó÷àåì êîîðäèíàòû ìûøè
;.................................................................................................
mov eax,37 ; ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
mov ebx,0 ; ­ ¬ ­ã¦­ë £«®¡ «ì­ë¥ ª®®à¤¨­ âë
int 0x40 ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
mov eax,37 ; Ôóíêöèÿ 37 - ðàáîòà ñ ìûøüþ
mov ebx,0 ; íàì íóæíû ãëîáàëüíûå êîîðäèíàòû
int 0x40 ; eax = x*65536 + y, (x,y)=êîîðäèíàòû êóðñîðà ìûøè
mov ecx,eax ;
shr ecx,16 ; ecx = x+1
movzx edx,ax ; edx = y+1
197,16 → 257,16
dec edx ; edx = y
mov [mouse_x],ecx ; mouse_x = x
mov [mouse_y],edx ; mouse_y = y
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_mouse_global
 
mouse_local:
;.................................................................................................
; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
; Ïîëó÷àåì êîîðäèíàòû ìûøè îòíîñèòåëüíî îêíà
;.................................................................................................
mov eax,37 ; ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
mov ebx,1 ; ­ ¬ ­ã¦­ë £«®¡ «ì­ë¥ ª®®à¤¨­ âë
int 0x40 ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
mov eax,37 ; Ôóíêöèÿ 37 - ðàáîòà ñ ìûøüþ
mov ebx,1 ; íàì íóæíû ãëîáàëüíûå êîîðäèíàòû
int 0x40 ; eax = x*65536 + y, (x,y)=êîîðäèíàòû êóðñîðà ìûøè
mov ecx,eax ;
shr ecx,16 ; ecx = x+1
movzx edx,ax ; edx = y+1
214,360 → 274,445
dec edx ; edx = y
mov [mouse_x],ecx ; mouse_x = x
mov [mouse_y],edx ; mouse_y = y
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_mouse_local
 
desktop_get:
;.................................................................................................
; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­ 
; Îïðåäåëÿåì øèðèíó ýêðàíà
;.................................................................................................
mov eax,14 ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­  (eax = [xsize]*65536 + [ysize])
int 0x40 ; xsize = à §¬¥à ¯® £®à¨§®­â «¨ - 1
mov eax,14 ; Îïðåäåëÿåì øèðèíó ýêðàíà (eax = [xsize]*65536 + [ysize])
int 0x40 ; xsize = ðàçìåð ïî ãîðèçîíòàëè - 1
mov ebx,eax ;
shr ebx,16 ; ebx = xsize-1
;movzx edx,ax ;; edx = ysize-1 («¨è­¨© ª®¤)
;movzx edx,ax ;; edx = ysize-1 (ëèøíèé êîä)
inc ebx ; ebx = xsize
;inc edx ;; edx = ysize («¨è­¨© ª®¤)
;inc edx ;; edx = ysize (ëèøíèé êîä)
mov [desctop_w],ebx
ret
;end_desktop_get
 
mouse_get:
mov esi,2 ; ŠŽ‘’›‹œ: ä« £ ¤«ï ¨§¡¥¦ ­¨ï § æ¨ª«¨¢ ­¨ï
mov esi,2 ; ÊÎÑÒÛËÜ: ôëàã äëÿ èçáåæàíèÿ çàöèêëèâàíèÿ
call mouse_global
call desktop_get
re_mouse_loop: ; ŠŽ‘’›‹œ: ¬¥âª  ¤«ï ¢®§¢à â  ¥á«¨ ¯®¯ «¨ ¢ á¥âªã
re_mouse_loop: ; ÊÎÑÒÛËÜ: ìåòêà äëÿ âîçâðàòà åñëè ïîïàëè â ñåòêó
mov ebx,[desctop_w]
imul ebx,[mouse_y] ; ebx = y*xsize
add ebx,[mouse_x] ; ebx = y*xsize+x
 
;.................................................................................................
; ¥à¥¬ 梥â á ¯ «¨âàë ¢ ¯¥à¥¬¥­­ãî
; Áåðåì öâåò ñ ïàëèòðû â ïåðåìåííóþ
;.................................................................................................
mov eax,35 ; ”ã­ªæ¨ï ¢§ïâ¨ï 梥â 
;mov ebx,ecx ;; ebx = y*xsize+x («¨è­¨© ª®¤)
int 0x40 ; ®«ãç ¥¬ 梥⠢ eax
cmp eax,[sc.work] ; ‘à ¢­¨¢ ¥¬ á ä®­®¬ ¯à¨«®¦¥­¨ï
je mouse_err ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
cmp eax,0x222222 ; ‘à ¢­¨¢ ¥¬ á 梥⮬ á¥âª¨
je mouse_err ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
jmp mouse_set ; ŠŽ‘’›‹œ: ¯à룠¥¬ çâ®¡ë ­¥ ¡à âì 梥â á¥âª¨
mouse_err: ; ŠŽ‘’›‹œ: ¥á«¨ ¯®¯ «¨ ¢ á¥âªã ¨«¨ ä®­
inc [mouse_y] ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ á­ ç «  ¯® å
inc [mouse_x] ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ ¯®â®¬ ¯® ã
dec esi ; ŠŽ‘’›‹œ: “¬¥­ìè ¥¬ ä« £
cmp esi,0 ; ŠŽ‘’›‹œ: ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
jz mouse_exit ; ŠŽ‘’›‹œ: …᫨ ­®«ì ⮠ᤥ« «¨ ¢áñ çâ® ¬®£«¨
jmp re_mouse_loop ; ŠŽ‘’›‹œ: …᫨ ­¥ ­®«ì â® ¯®¯à®¡ã¥¬ ¢§ïâì á®á¥«­¨© ¯¨ªá¥«ì
mov eax,35 ; Ôóíêöèÿ âçÿòèÿ öâåòà
;mov ebx,ecx ;; ebx = y*xsize+x (ëèøíèé êîä)
int 0x40 ; Ïîëó÷àåì öâåò â eax
cmp eax,[sc.work] ; Ñðàâíèâàåì ñ ôîíîì ïðèëîæåíèÿ
je mouse_err ; Åñëè ýòî îí - òî íè÷åãî íå äåëàåì
cmp eax,0x222222 ; Ñðàâíèâàåì ñ öâåòîì ñåòêè
je mouse_err ; Åñëè ýòî îí - òî íè÷åãî íå äåëàåì
jmp mouse_set ; ÊÎÑÒÛËÜ: ïðûãàåì ÷òîáû íå áðàòü öâåò ñåòêè
mouse_err: ; ÊÎÑÒÛËÜ: åñëè ïîïàëè â ñåòêó èëè ôîí
inc [mouse_y] ; ÊÎÑÒÛËÜ: ñìåùàåì ïî äèàãîíàëè ñíà÷àëà ïî õ
inc [mouse_x] ; ÊÎÑÒÛËÜ: ñìåùàåì ïî äèàãîíàëè ïîòîì ïî ó
dec esi ; ÊÎÑÒÛËÜ: Óìåíüøàåì ôëàã
cmp esi,0 ; ÊÎÑÒÛËÜ: Ñðàâíèâàåì ñ íóëåì
jz mouse_exit ; ÊÎÑÒÛËÜ: Åñëè íîëü òî ñäåëàëè âñ¸ ÷òî ìîãëè
jmp re_mouse_loop ; ÊÎÑÒÛËÜ: Åñëè íå íîëü òî ïîïðîáóåì âçÿòü ñîñåëíèé ïèêñåëü
mouse_set:
mov [color],eax ; ˆ­ ç¥ § ¯®¬¨­ ¥¬ ­®¢ë© 梥â
call draw_result ; ‚뢮¤¨¬ १ã«ìâ â
mov [color],eax ; Èíà÷å çàïîìèíàåì íîâûé öâåò
call draw_result ; Âûâîäèì ðåçóëüòàò
mouse_exit:
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_mouse_get----------------------------------------------------------------------------------------
 
draw_palitra:
;.................................................................................................
; Žâà¨á®¢ª  ä®­  ¯®¤ ª­®¯ª¨
; Îòðèñîâêà ôîíà ïîä êíîïêè
;.................................................................................................
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,0x222222 ; 梥â
mov ecx,9 shl 16+73 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov esi,2 ; ‘ç¥â稪 «¨­¨© ¯®¤«®¦¥ª
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov edx,0x222222 ; öâåò
mov ecx,9 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov esi,2 ; Ñ÷åò÷èê ëèíèé ïîäëîæåê
re_draw:
mov ebx,89 shl 16+73 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov edi,3 ; ‘ç¥â稪 ª®«¨ç¥á⢠ ¯®¤«®¦¥ª
mov ebx,89 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov edi,2 ; Ñ÷åò÷èê êîëè÷åñòâà ïîäëîæåê
for_fon_loop:
int 0x40 ; à¥à뢠­¨¥
add ebx,75 shl 16 ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® å
dec edi ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
cmp edi,0 ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
jnz for_fon_loop ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
dec esi ; “¬¥­ìè ¥¬ ¥£®
cmp esi,0 ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
mov ecx,84 shl 16+73 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
jnz re_draw ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
int 0x40 ; Ïðåðûâàíèå
add ebx,75 shl 16 ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî õ
dec edi ; Óìåíüøàåì ñ÷åò÷èê êíîïîê
cmp edi,0 ; Ñðàâíèâàåì ñ íóëåì
jnz for_fon_loop ; Åñëè íå íîëü òî â íà÷àëî öèêëà
dec esi ; Óìåíüøàåì åãî
cmp esi,0 ; Ñðàâíèâàåì ñ íóëåì
mov ecx,84 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
jnz re_draw ; Åñëè íå íîëü òî â íà÷àëî öèêëà
 
;.................................................................................................
; Žâà¨á®¢ª  ª­®¯®ª ¯® 横«ã
; Îòðèñîâêà êíîïîê ïî öèêëó
;.................................................................................................
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,0x0FFFFFFF ; 梥â
mov esi,6 ; ‘ç¥â稪 ª®«¨ç¥á⢠  ¡§ æ¥¢ (#4,8)
mov ebx,78 shl 16+8 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov edx,0x0FFFFFFF ; öâåò
mov esi,4 ; Ñ÷åò÷èê êîëè÷åñòâà àáçàöåâ (#4,8)
mov ebx,78 shl 16+8 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
for_abz:
;;push esi ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
cmp esi,3
;;push esi ; Ñîõðàíÿåì çíà÷åíèå ñ÷åò÷èêà ëèíèé â ñòåê
cmp esi,2
jne x2_line
mov ebx,78 shl 16+8
x2_line:
add ebx,3 shl 16 ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
mov edi,8 ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
add ebx,3 shl 16 ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî x
mov edi,8 ; Ñ÷åò÷èê êîëè÷åñòâà êíîïîê â ñòðîêå
for_stolbik:
push edi ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
mov edi,8 ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
mov ecx, 1 shl 16+8 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
cmp esi,3
jg y2_line ; …᫨ ¡®«ìè¥ 4 â® ¨£­®à¨¬
push edi ; Ñîõðàíÿåì çíà÷åíèå ñ÷åò÷èêà ëèíèé â ñòåê
mov edi,8 ; Ñ÷åò÷èê êîëè÷åñòâà êíîïîê â ñòðîêå
mov ecx, 1 shl 16+8 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
cmp esi,2
jg y2_line ; Åñëè áîëüøå 4 òî èãíîðèì
mov ecx,76 shl 16+8
y2_line:
add ebx,9 shl 16 ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
add ebx,9 shl 16 ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî x
for_loop:
add ecx,9 shl 16 ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® y
int 0x40 ; à¥à뢠­¨¥
sub edx,32 shl 16
dec edi ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
cmp edi,0 ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
jnz for_loop ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
sub edx,32 shl 8
pop edi ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
dec edi ; “¬¥­ìè ¥¬ ¥£®
cmp edi,0 ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
jnz for_stolbik ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
sub edx,48 ; (#64,32)
;;pop esi ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
dec esi ; “¬¥­ìè ¥¬ ¥£®
cmp esi,0 ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
jnz for_abz ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
add ecx,9 shl 16 ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî y
int 0x40 ; Ïðåðûâàíèå
call sub_red
dec edi ; Óìåíüøàåì ñ÷åò÷èê êíîïîê
cmp edi,0 ; Ñðàâíèâàåì ñ íóëåì
jnz for_loop ; Åñëè íå íîëü òî â íà÷àëî öèêëà
call sub_green
pop edi ; Èíà÷å âîññòàíàâëèâàåì ñ÷åò÷èê ëèíèé
dec edi ; Óìåíüøàåì åãî
cmp edi,0 ; Ñðàâíèâàåì ñ íóëåì
jnz for_stolbik ; Åñëè íå íîëü òî â íà÷àëî öèêëà
call sub_blue
;;pop esi ; Èíà÷å âîññòàíàâëèâàåì ñ÷åò÷èê ëèíèé
dec esi ; Óìåíüøàåì åãî
cmp esi,0 ; Ñðàâíèâàåì ñ íóëåì
jnz for_abz ; Åñëè íå íîëü òî â íà÷àëî öèêëà
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_draw_palitra-------------------------------------------------------------------------------------
 
 
sub_red:
;.................................................................................................
; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû
;.................................................................................................
push eax
mov eax,[pnext]
;sub_red_0 ; palitra
cmp al,0
jne sub_red_1
sub edx,0x20
jmp sub_red_e
sub_red_1: ; random
cmp al,1
jne sub_red_2
sub edx,0x40
jmp sub_red_e
sub_red_2: ; gree
cmp al,2
jne sub_red_3
sub edx,0x010101
jmp sub_red_e
sub_red_3: ; red
cmp al,3
jne sub_red_4
sub edx,0x0101
jmp sub_red_e
sub_red_4: ; green
cmp al,4
jne sub_red_5
sub edx,0x010001
jmp sub_red_e
sub_red_5: ; blue
cmp al,5
jne sub_red_e
sub edx,0x010100
jmp sub_red_e
sub_red_e:
pop eax
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_sub_red------------------------------------------------------------------------------------------
 
sub_green:
;.................................................................................................
; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû
;.................................................................................................
push eax
mov eax,[pnext]
;sub_green_0
cmp al,0
jne sub_green_1
sub edx,0x2000
jmp sub_green_e
sub_green_1:
cmp al,1
jne sub_green_e
sub edx,0x4000
;jmp sub_green_e
sub_green_e:
pop eax
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_sub_green----------------------------------------------------------------------------------------
 
 
sub_blue:
;.................................................................................................
; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû
;.................................................................................................
push eax
mov eax,[pnext]
;sub_blue_0
cmp al,0
jne sub_blue_1
sub edx,0x400000
jmp sub_blue_e
sub_blue_1:
cmp al,1
jne sub_blue_e
sub edx,0x600000
;jmp sub_blue_e
sub_blue_e:
pop eax
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_sub_blue-----------------------------------------------------------------------------------------
 
draw_result:
;.................................................................................................
; Žâà¨á®¢ª  १ã«ìâ â  æ¢¥â  ¢ hex
; Îòðèñîâêà ðåçóëüòàòà öâåòà â hex
;.................................................................................................
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,0x222222 ; 梥â-®¡¢®¤ª¨
mov ebx,4 shl 16+15 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,9 shl 16+15 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40 ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
mov ebx,23 shl 16+62 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
int 0x40 ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov edx,0x222222 ; öâåò-îáâîäêè
mov ebx,4 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,9 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
mov ebx,23 shl 16+62 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
 
mov edx,[color] ; 梥â
mov ebx,5 shl 16+13 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,10 shl 16+13 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40 ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
mov edx,0xFFFFFF ; 梥â-ä®­ 
mov ebx,24 shl 16+60 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
int 0x40 ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
mov edx,[color] ; öâåò
mov ebx,5 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,10 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
mov edx,0xFFFFFF ; öâåò-ôîíà
mov ebx,24 shl 16+60 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
 
mov eax,47 ; ”ã­ªæ¨ï 47 - ¢ë¢®¤ ç¨á«  ¢ ®ª­®
mov ecx,[color] ; ç¨á«® (¯à¨ bl=0) ¨«¨ 㪠§ â¥«ì (¯à¨ bl=1)
mov eax,47 ; Ôóíêöèÿ 47 - âûâîä ÷èñëà â îêíî
mov ecx,[color] ; ÷èñëî (ïðè bl=0) èëè óêàçàòåëü (ïðè bl=1)
mov esi,0x0 ; 0xX0RRGGBB
mov ebx,256+8 shl 16 ; ¯ à ¬¥âàë ¯à¥®¡à §®¢ ­¨ï ç¨á«  ¢ ⥪áâ (HEX)
mov edx,34 shl 16+13 ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
int 0x40 ; à¥à뢠­¨¥ - ¢ë¢®¤¨¬ १ã«ìâ â ¢ ®ª­® (HEX)
mov ebx,256+8 shl 16 ; ïàðàìåòðû ïðåîáðàçîâàíèÿ ÷èñëà â òåêñò (HEX)
mov edx,34 shl 16+13 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y]
int 0x40 ; Ïðåðûâàíèå - âûâîäèì ðåçóëüòàò â îêíî (HEX)
 
mov eax,4 ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
mov ebx,27*65536+13 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
mov ecx,0x0 ; 梥â ⥪áâ  RRGGBB
mov edx,hex ; à¨á㥬 '#'
mov esi,1 ; ¤«¨­  ⥪áâ  ¢ ¡ ©â å
mov eax,4 ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå
mov ebx,27*65536+13 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
mov ecx,0x0 ; öâåò òåêñòà RRGGBB
mov edx,hex ; ðèñóåì '#'
mov esi,1 ; äëèíà òåêñòà â áàéòàõ
int 0x40
 
;.................................................................................................
; Žâà¨á®¢ª  ¯®«¥© ¤«ï r g b §­ ç¥­¨©
; Îòðèñîâêà ïîëåé äëÿ r g b çíà÷åíèé
;.................................................................................................
call get_spectr
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,0x222222 ; 梥â-®¡¢®¤ª¨
mov ebx,4 shl 16+23 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,142 shl 16+15 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê Leency{
mov edx,0x222222 ; öâåò-îáâîäêè
mov ebx,4 shl 16+24 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,142 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40
mov ebx,33 shl 16+23 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ebx,33 shl 16+24 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
int 0x40
mov ebx,62 shl 16+23 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ebx,62 shl 16+24 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
int 0x40
mov edx,0xFFFFFF ; 梥â-®¡¢®¤ª¨
mov ebx,5 shl 16+21 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,143 shl 16+13 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov edx,0xFFFFFF ; öâåò-îáâîäêè
mov ebx,5 shl 16+22 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,143 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40
mov ebx,34 shl 16+21 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ebx,34 shl 16+22 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
int 0x40
mov ebx,63 shl 16+21 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ebx,63 shl 16+22 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
int 0x40
 
;.................................................................................................
; Žâà¨á®¢ª  r g b §­ ç¥­¨©
; Îòðèñîâêà r g b çíà÷åíèé
;.................................................................................................
movzx eax,[cred] ; ªà á­ë©
mov ebx,7*65536+146 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â
movzx eax,[cred] ; êðàñíûé
mov ebx,7*65536+146 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
call draw_value ; âûâîäèì ðåçóëüòàò
 
movzx eax,[cgreen] ; §¥«¥­ë©
mov ebx,36*65536+146 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â
movzx eax,[cgreen] ; çåëåíûé
mov ebx,36*65536+146 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
call draw_value ; âûâîäèì ðåçóëüòàò
 
movzx eax,[cblue] ; ᨭ¨©
mov ebx,65*65536+146 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â
movzx eax,[cblue] ; ñèíèé
mov ebx,65*65536+146 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
call draw_value ; âûâîäèì ðåçóëüòàò
 
;.................................................................................................
; Ž¡­ã«ï¥¬ ä®­
; Îáíóëÿåì ôîí
;.................................................................................................
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,[sc.work] ; 梥â-®¡¢®¤ª¨
mov ebx,8 shl 16+66 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,40 shl 16+87 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov edx,[sc.work] ; öâåò-îáâîäêè
mov ebx,8 shl 16+66 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,40 shl 16+87 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40
 
;mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
;mov edx,0x222222 ; 梥â-®¡¢®¤ª¨
;mov ebx,4 shl 16+23 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
;mov ecx,30 shl 16+105 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
; mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
; mov edx,0x222222 ; öâåò-îáâîäêè
; mov ebx,4 shl 16+24 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
; mov ecx,30 shl 16+105 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
;int 0x40
;add ebx,29 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
; add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
;int 0x40
;add ebx,29 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
; add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
;int 0x40
 
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,[sc.work] ; 梥â-®¡¢®¤ª¨
mov ebx,5 shl 16+21 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,31 shl 16+103 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov edx,[sc.work] ; öâåò-îáâîäêè
mov ebx,5 shl 16+22 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,31 shl 16+103 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40
add ebx,29 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
int 0x40
add ebx,29 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
int 0x40
 
;.................................................................................................
; ‚뢮¤¨¬ ¡ãª¢ë r g b
; Âûâîäèì áóêâû r g b
;.................................................................................................
mov eax,4 ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ  ¢ ®ª­®
mov ebx,12 shl 16+34 ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
mov ecx,0x0 ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ )
mov edx,cname ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
mov esi,2 ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
newline: ; 横«
int 0x40 ; à¥à뢠­¨¥
add ebx,29 shl 16 ; „®¡ ¢«ï¥¬
add edx,2 ; „®¡ ¢«ï¥¬
cmp [edx],byte 'x' ; ‘à ¢­¥­¨¥ á ¡ ©â®¬ å
jne newline ; …᫨ ­¥ ­ã«ì ¨«¨ ­¥ à ¢­®
mov eax,4 ; 4 - âûâåñòè ñòðîêó òåêñòà â îêíî
mov ebx,12 shl 16+34 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y]
mov ecx,0x0 ; 0xX0RRGGBB (RR, GG, BB çàäàþò öâåò òåêñòà)
mov edx,cname ; óêàçàòåëü íà íà÷àëî ñòðîêè
mov esi,1 ; âûâîäèòü esi ñèìâîëîâ
newline: ; öèêë
int 0x40 ; Ïðåðûâàíèå
add ebx,29 shl 16 ; Äîáàâëÿåì
add edx,1 ; Äîáàâëÿåì
cmp [edx],byte 'x' ; Ñðàâíåíèå ñ áàéòîì õ
jne newline ; Åñëè íå íóëü èëè íå ðàâíî
 
;.................................................................................................
; Žâà¨á®¢ª  á« ©¤¥à®¢
; Îòðèñîâêà ñëàéäåðîâ
;.................................................................................................
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,0x222222 ; 梥â-®¡¢®¤ª¨
mov ebx,12 shl 16+4 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,45 shl 16+85 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov edx,0x222222 ; öâåò-îáâîäêè
mov ebx,12 shl 16+4 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,45 shl 16+85 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40
add ebx,29 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
int 0x40
add ebx,29 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
int 0x40
 
mov edx,0xFA0919 ; 梥â-®¡¢®¤ª¨
mov ebx,13 shl 16+2 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,46 shl 16+83 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov edx,0xFA0919 ; öâåò-îáâîäêè
mov ebx,13 shl 16+2 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,46 shl 16+83 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40
mov edx,0x08CE19 ; 梥â-®¡¢®¤ª¨
add ebx,29 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
mov edx,0x08CE19 ; öâåò-îáâîäêè
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
int 0x40
mov edx,0x0909FF ; 梥â-®¡¢®¤ª¨
add ebx,29 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
mov edx,0x0909FF ; öâåò-îáâîäêè
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
int 0x40
 
;.................................................................................................
; Žâà¨á®¢ª  ¯®«§ã­ª®¢
; Îòðèñîâêà ïîëçóíêîâ
;.................................................................................................
mov edx,0x0 ; 梥â-¯®«§ã­ª®¢
mov ebx,10 shl 16+8 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
movzx eax,[cred] ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
mov edx,0x0 ; öâåò-ïîëçóíêîâ
mov ebx,10 shl 16+8 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
movzx eax,[cred] ; áåðåì çíà÷åíèå öâåòà
call draw_slider
add ebx,29 shl 16
movzx eax,[cgreen] ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
movzx eax,[cgreen] ; áåðåì çíà÷åíèå öâåòà
call draw_slider
add ebx,29 shl 16
movzx eax,[cblue] ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
movzx eax,[cblue] ; áåðåì çíà÷åíèå öâåòà
call draw_slider
 
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_draw_result
 
draw_slider:
xor ecx,ecx
mov cl,0x3 ; ¡ã¤¥¬ ¤¥«¨âì ¥£® ­  3 â ª ª ª ¯®«§ã­ª¨ ¤«¨­­®© 85 ¯¨ªá¥«¥©
div cl ; ¤¥«¨¬ - 楫®¥ ¢ al ®áâ â®ª ¢ ah
mov cl,128 ; ­¨¦­ïï â®çª  ¯®«§ã­ª 
mov cl,0x3 ; áóäåì äåëèòü åãî íà 3 òàê êàê ïîëçóíêè äëèííîé 85 ïèêñåëåé
div cl ; äåëèì - öåëîå â al îñòàòîê â ah
mov cl,128 ; íèæíÿÿ òî÷êà ïîëçóíêà
sub cl,al ; cl=cl-al
shl ecx,16
add ecx,4 ; § ¤ ¥¬ ­ ç «ì­®¥ ¯®«®¦¥­¨¥
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
add ecx,4 ; çàäàåì íà÷àëüíîå ïîëîæåíèå
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
int 0x40
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
ret ; Âîçâðàùàåì óïðàâëåíèå
 
;end_slider
 
draw_value:
;.................................................................................................
; ‚뢮¤ ç¨á«  ¨§ áâப¨ ¢ 㪠§ ­­®© ®¡« áâ¨
; Âûâîä ÷èñëà èç ñòðîêè â óêàçàííîé îáëàñòè
;.................................................................................................
push ebx ; á®å࠭塞 ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
mov ebx,10 ; ãáâ ­ ¢«¨¢ ¥¬ ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
mov edi,buff ; 㪠§ â¥«ì ­  áâப㠡ãä¥à 
call int2ascii ; ª®­¢¥àâ¨à㥬 ç¨á«® ¨ «®¦¨¬ ª ª áâப㠢 ¡ãä¥à + esi ¤«¨­ 
mov eax,4 ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
pop ebx ; ¤®áâ ¥¬ ¨§ á⥪  ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
mov ecx,0x0 ; 梥â ⥪áâ  RRGGBB
mov edx,buff ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
push ebx ; ñîõðàíÿåì ïðèñëàííûå êîîðäèíàòû
mov ebx,10 ; óñòàíàâëèâàåì îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ
mov edi,buff ; óêàçàòåëü íà ñòðîêó áóôåðà
call int2ascii ; êîíâåðòèðóåì ÷èñëî è ëîæèì êàê ñòðîêó â áóôåð + esi äëèíà
mov eax,4 ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå
pop ebx ; äîñòàåì èç ñòåêà ïðèñëàííûå êîîðäèíàòû
mov ecx,0x0 ; öâåò òåêñòà RRGGBB
mov edx,buff ; óêàçàòåëü íà íà÷àëî òåêñòà
int 0x40
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_draw_value
 
hex_digit:
;.................................................................................................
; à¥®¡à §®¢ ­¨¥ ¢ ASCII (¢­¥ § ¢¨á¨¬®á⨠®â á¨á⥬ë áç¨á«¥­¨ï)
; Ïðåîáðàçîâàíèå â ASCII (âíå çàâèñèìîñòè îò ñèñòåìû ñ÷èñëåíèÿ)
;.................................................................................................
cmp dl,10 ; ¢ dl ®¦¨¤ ¥âáï ç¨á«® ®â 0 ¤® 15
jb .less ; ¥á«¨ dl<10 â® ¯¥à¥å®¤¨¬
cmp dl,10 ; â dl îæèäàåòñÿ ÷èñëî îò 0 äî 15
jb .less ; åñëè dl<10 òî ïåðåõîäèì
add dl,'A'-10 ; 10->A 11->B 12->C ...
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
ret ; Âîçâðàùàåì óïðàâëåíèå
.less:
or dl,'0' ; …᫨ á¨á⥬  áç¨á«¥­¨ï 10-ï ¨ ¬¥­¥¥
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
or dl,'0' ; Åñëè ñèñòåìà ñ÷èñëåíèÿ 10-ÿ è ìåíåå
ret ; Âîçâðàùàåì óïðàâëåíèå
;end_hex_digit
 
int2ascii:
;.................................................................................................
; à¥®¡à §®¢ ­¨¥ ç¨á«  ¢ áâபã
; Ïðåîáðàçîâàíèå ÷èñëà â ñòðîêó
;.................................................................................................
; eax - 32-å §­ ç­®¥ ç¨á«®
; ebx - ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
; edi - 㪠§ â¥«ì ­  áâப㠡ãä¥à 
; ‚®§¢à é ¥â § ¯®«­¥­­ë© ¡ãä¥à ¨ esi - ¤«¨­  áâப¨
; eax - 32-õ çíà÷íîå ÷èñëî
; ebx - îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ
; edi - óêàçàòåëü íà ñòðîêó áóôåðà
; Âîçâðàùàåò çàïîëíåííûé áóôåð è esi - äëèíà ñòðîêè
;pushad
xor esi,esi ; § ­ã«ï¥¬ áç¥â稪 ᨬ¢®«®¢
xor esi,esi ; çàíóëÿåì ñ÷åò÷èê ñèìâîëîâ
convert_loop:
xor edx,edx ; § ­ã«ï¥¬ ॣ¨áâà ¯®¤ ®áâ â®ª
div ebx ; eax/ebx - ®áâ â®ª ¢ edx
call hex_digit ; ¯à¥®¡à §ã¥¬ ᨬ¢®«
push edx ; «®¦¨¬ ¢ á⥪
inc esi ; 㢥«¨ç¨¢ ¥¬ áç¥â稪
test eax,eax ; ¥á«¨ ¥é¥ ¬®¦­® ¤¥«¨âì
jnz convert_loop ; â® ¤¥«¨¥¬ ¥é¥
cld ; ŽŸ‡€’…‹œŽ á¡à á뢠¥¬ ä« £ ­ ¯à ¢«¥­¨ï DF (§ ¯¨áì ¢¯¥àñ¤)
write_loop: ; ¨­ ç¥
pop eax ; ¤®áâ ¥¬ ¨§ á⥪  ¢ ¥ å
stosb ; § ¯¨á뢠¥¬ ¢ ¡ãä¥à ¯®  ¤à¥áã ES:(E)DI
dec esi ; 㬥­ìè ¥¬ áç¥â稪
test esi,esi ; ¥á«¨ ¥áâì çâ® ¤®áâ ¢ âì ¨§ á⥪ 
jnz write_loop ; â® ¤®áâ ñ¬
mov byte [edi],0 ; ¨­ ç¥ ¤®¯¨áë뢠¥¬ ­ã«¥¢®© ¡ ©â
;popad ; ¢®ááâ ­ ¢«¨¢ ¥¬ §­ ç¥­¨ï ॣ¨áâ஢
; ª®¤ ­¨¦¥ ­¥ ¨¬¥¥â ­¨ç¥£® ®¡é¥£® ª ä㭪樨, ¯à®áâ® ¢®§¢à é ¥â ¥é¥ ¤«¨­­ã ¯®«ã祭­®© áâப¨
mov edi,buff ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
xor edx,edx ; çàíóëÿåì ðåãèñòð ïîä îñòàòîê
div ebx ; eax/ebx - îñòàòîê â edx
call hex_digit ; ïðåîáðàçóåì ñèìâîë
push edx ; ëîæèì â ñòåê
inc esi ; óâåëè÷èâàåì ñ÷åò÷èê
test eax,eax ; åñëè åùå ìîæíî äåëèòü
jnz convert_loop ; òî äåëèåì åùå
cld ; ÎÁßÇÀÒÅËÜÍÎ ñáðàñûâàåì ôëàã íàïðàâëåíèÿ DF (çàïèñü âïåð¸ä)
write_loop: ; èíà÷å
pop eax ; äîñòàåì èç ñòåêà â åàõ
stosb ; çàïèñûâàåì â áóôåð ïî àäðåñó ES:(E)DI
dec esi ; óìåíüøàåì ñ÷åò÷èê
test esi,esi ; åñëè åñòü ÷òî äîñòàâàòü èç ñòåêà
jnz write_loop ; òî äîñòà¸ì
mov byte [edi],0 ; èíà÷å äîïèñûûâàåì íóëåâîé áàéò
;popad ; âîññòàíàâëèâàåì çíà÷åíèÿ ðåãèñòðîâ
; êîä íèæå íå èìååò íè÷åãî îáùåãî ê ôóíêöèè, ïðîñòî âîçâðàùàåò åùå äëèííó ïîëó÷åííîé ñòðîêè
mov edi,buff ; óêàçàòåëü íà íà÷àëî òåêñòà
call str_len
mov esi,eax
ret ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
ret ; è âîçâðàùàåì óïðàâëåíèå
;end_int2ascii
 
get_spectr:
;.................................................................................................
; ¢®§¢à é ¥â r,g,b á®á⮢«ïî騥 梥â 
; âîçâðàùàåò r,g,b ñîñòîâëÿþùèå öâåòà
;.................................................................................................
; get blue
mov ecx,[color]
582,12 → 727,12
shl ecx,16
shr ecx,24
mov [cgreen],cl
ret ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
ret ; è âîçâðàùàåì óïðàâëåíèå
;end_get_spectr
 
set_spectr:
;.................................................................................................
; ãáâ ­ ¢«¨¢ ¥â ¨§ r,g,b 梥â
; óñòàíàâëèâàåò èç r,g,b öâåò
;.................................................................................................
; get blue
movzx eax,[cred]
596,13 → 741,13
shl eax,8
mov al,[cblue]
mov [color],eax
call draw_result ; ‚뢮¤¨¬ १ã«ìâ â
ret ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
call draw_result ; Âûâîäèì ðåçóëüòàò
ret ; è âîçâðàùàåì óïðàâëåíèå
;end_get_spectr
 
str_len:
;.................................................................................................
; ®¯à¥¤¥«ï¥â ¤«¨­ã áâப¨ (¢å®¤->EDI ZS offset ; ¢ë室->EAX ZS length)
; îïðåäåëÿåò äëèíó ñòðîêè (âõîä->EDI ZS offset ; âûõîä->EAX ZS length)
;.................................................................................................
push ecx
push esi
625,21 → 770,23
;end_str_len
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ‹ŽŠ ……Œ…›• ˆ ŠŽ‘’€’ |
; ÁËÎÊ ÏÅÐÅÌÅÍÍÛÕ È ÊÎÍÑÒÀÍÒ |
;----------------------------------------------------------------------------------------------------/
 
color dd 00000000h ; åà ­¨â §­ ç¥­¨¥ ¢ë¡à ­­®£® 梥â 
mouse_x dd 0 ; åà ­¨â £«®¡ «ì­ãî å ª®®à¤¨­ âã ¬ëè¨
mouse_y dd 0 ; åà ­¨â £«®¡ «ì­ãî ã ª®®à¤¨­ âã ¬ëè¨
desctop_w dd 0 ; åà ­¨â è¨à¨­ã íªà ­ 
sc system_colors ; åà ­¨â áâàãªâãàã á¨á⥬­ëå 梥⮢ ᪨­ 
title db 'Palitra v0.2',0 ; åà ­¨â ¨¬ï ¯à®£à ¬¬ë
hex db '#',0 ; ¤«ï ¢ë¢®¤  à¥èñ⪨ ª ª ⥪áâ 
cname db 'R G B x' ; åà ­¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª  ª®­æ 
cred db 0 ; åà ­¨¬ ªà á­ë© ᯥªàâ
cgreen db 0 ; åà ­¨¬ §¥«¥­ë© ᯥªâà
cblue db 0 ; åà ­¨¬ ᨭ¨© ᯥªâà
color dd 00000000h ; õðàíèò çíà÷åíèå âûáðàííîãî öâåòà
mouse_x dd 0 ; õðàíèò ãëîáàëüíóþ õ êîîðäèíàòó ìûøè
mouse_y dd 0 ; õðàíèò ãëîáàëüíóþ ó êîîðäèíàòó ìûøè
desctop_w dd 0 ; õðàíèò øèðèíó ýêðàíà
sc system_colors ; õðàíèò ñòðóêòóðó ñèñòåìíûõ öâåòîâ ñêèíà
title db 'Palitra v0.3',0 ; õðàíèò èìÿ ïðîãðàììû
hex db '#',0 ; äëÿ âûâîäà ðåø¸òêè êàê òåêñòà
cname db 'RGBx' ; õðàíèò ðàçðÿäû öâåòîâ (red,green,blue) x-ìåòêà êîíöà
cred db 0 ; õðàíèì êðàñíûé ñïåêðò
cgreen db 0 ; õðàíèì çåëåíûé ñïåêòð
cblue db 0 ; õðàíèì ñèíèé ñïåêòð
buff db '000',0
bnext db 'NEXT BACKGROUND',0; èìÿ êíîïêè
pnext dd 0 ; ñ÷åò÷èê ïåðåêëþ÷åíèÿ ïàëèòðû
I_END: