Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3090 → Rev 3091

/programs/media/palitra/trunk/palitra.asm
2,7 → 2,7
;****************************************************************************************************|
; Program Palitra (c) Sergei Steshin (Akyltist) |
;----------------------------------------------------------------------------------------------------|
;; Charset:WIN-1251 Font:Courier New Size:9pt |
;; Charset:DOS-866 Font:Courier New Size:9pt |
;.....................................................................................................
;; compiler: FASM 1.69.31 |
;; version: 0.3.0 |
10,20 → 10,24
;; e-mail: dr.steshin@gmail.com |
;.....................................................................................................
;; History: |
;; 0.1.0 - Ïåðâàÿ âåðñèÿ ïðîãðàììû. |
;; 0.2.0 - Èñïðàâëåíî ïîïàäàíèå â ñåòêó, áåðåòñÿ áëèæàéøèé ïî äèàãîíàëè ïèêñåëü. |
;; - Äîáàâëåíû ïîëçóíêè, äëÿ ðåãóëèðîâàíèÿ rgb ñîñòàâëÿþùèõ öâåòà è âûâîä ýòèõ ñîñòàâëÿþùèõ. |
;; - Óáðàí âûâîä öâåòà â áèíàðíîì âèäå (ïîêà çà íå íàäîáíîñòüþ è íå àêòóàëüíîñòüþ). |
;; - Ìåëêàÿ êîñìåòèêà. |
;; 0.3.0 - Äîáàâëåíî ïåðåêëþ÷åíèå âèäîâ öâåòîâûõ ñõåì (êíîïêà NEXT) |
;; - Óëó÷øåíû ïîëçóíêè, ïðîèçâîäèòñÿ îáðàáîòêà íàæàòèÿ ðÿäîì ñ ïîëçóíêîì. |
;; - ×èñëî ñåòîê â öâåòîâîé ñõåìå óìåíüøåíî ñ 6 äî 4 (êðàòíîñòü 256, èíà÷å äóáëèðîâàíèå öâåòà).|
;; - Ìåëêàÿ êîñìåòèêà. |
;; 0.4.0 - Äîáàâëåíî ïåðåêëþ÷åíèå ìåæäó äâóìÿ öâåòàìè |
;; - Äîáàâëåí ïîëçóíîê ðåãóëèðîâàíèÿ ïðîçðà÷íîñòè (áåç âèçóàëèçàöèè). |
;; - Äîáàâëåíî âûðàâíèâàíèå çíà÷åíèé rgba ïî öåíòðó, â çàâèñèìîñòè îò äëèííû. |
;; - Êîñìåòè÷åñêèå ïðàâêè. |
;; - Íåáîëüøàÿ îïòèìèçàöèÿ. |
;; 0.1.0 - ¥à¢ ï ¢¥àá¨ï ¯à®£à ¬¬ë. |
;; 0.2.0 - ˆá¯à ¢«¥­® ¯®¯ ¤ ­¨¥ ¢ á¥âªã, ¡¥à¥âáï ¡«¨¦ ©è¨© ¯® ¤¨ £®­ «¨ ¯¨ªá¥«ì. |
;; - „®¡ ¢«¥­ë ¯®«§ã­ª¨, ¤«ï ॣ㫨஢ ­¨ï rgb á®áâ ¢«ïîé¨å æ¢¥â  ¨ ¢ë¢®¤ íâ¨å á®áâ ¢«ïîé¨å. |
;; - “¡à ­ ¢ë¢®¤ æ¢¥â  ¢ ¡¨­ à­®¬ ¢¨¤¥ (¯®ª  §  ­¥ ­ ¤®¡­®áâìî ¨ ­¥  ªâã «ì­®áâìî). |
;; - Œ¥«ª ï ª®á¬¥â¨ª . |
;; 0.3.0 - „®¡ ¢«¥­® ¯¥à¥ª«î祭¨¥ ¢¨¤®¢ 梥⮢ëå á奬 (ª­®¯ª  NEXT) |
;; - “«ãçè¥­ë ¯®«§ã­ª¨, ¯à®¨§¢®¤¨âáï ®¡à ¡®âª  ­ ¦ â¨ï à冷¬ á ¯®«§ã­ª®¬. |
;; - —¨á«® á¥â®ª ¢ 梥⮢®© á奬¥ 㬥­ì襭® á 6 ¤® 4 (ªà â­®áâì 256, ¨­ ç¥ ¤ã¡«¨à®¢ ­¨¥ 梥â ).|
;; - Œ¥«ª ï ª®á¬¥â¨ª . |
;; 0.4.0 - „®¡ ¢«¥­® ¯¥à¥ª«î祭¨¥ ¬¥¦¤ã ¤¢ã¬ï 梥⠬¨ |
;; - „®¡ ¢«¥­ ¯®«§ã­®ª ॣ㫨஢ ­¨ï ¯à®§à ç­®á⨠(¡¥§ ¢¨§ã «¨§ æ¨¨). |
;; - „®¡ ¢«¥­® ¢ëà ¢­¨¢ ­¨¥ §­ ç¥­¨© rgba ¯® 業âàã, ¢ § ¢¨á¨¬®á⨠®â ¤«¨­­ë. |
;; - Š®á¬¥â¨ç¥áª¨¥ ¯à ¢ª¨. |
;; - ¥¡®«ìè ï ®¯â¨¬¨§ æ¨ï. |
;; 0.5.0 - „®¡ ¢«¥­  ª­®¯ª  ᬥ­ë ä®­  à ¡®ç¥£® á⮫  (®â Leency). |
;; - „®¡ ¢«¥­® ¨§¬¥­¥­¨¥ ä®­  à ¡®ç¥£® á⮫  £à ¤¨¥­â­®© § «¨¢ª®©. |
;; - Š®á¬¥â¨ç¥áª¨¥ ¯à ¢ª¨. |
;; - ¥¡®«ìè ï ¤¥®¯â¨¬¨§ æ¨ï. |
;.....................................................................................................
;; All rights reserved. |
;; |
51,7 → 55,7
 
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ÇÀÃÎËÎÂÎÊ ÈÑÏÎËÍßÅÌÎÃÎ ÔÀÉËÀ ÏÐÈËÎÆÅÍÈß ÄËß ÊÎËÈÁÐÈ ÎÑ |
; ‡€ƒŽ‹Ž‚ŽŠ ˆ‘Ž‹Ÿ…ŒŽƒŽ ”€‰‹€ ˆ‹Ž†…ˆŸ „‹Ÿ ŠŽ‹ˆˆ Ž‘ |
;----------------------------------------------------------------------------------------------------/
use32
org 0x0
60,65 → 64,68
dd 0x01
dd START
dd I_END
dd 0x100000
dd 0x1000
dd 0x1000
dd 0x0
dd 0x0
 
include '../../../macros.inc'
WIN_W equ 271 ; øèðèíà îêíà
WIN_H equ 192 ; âûñîòà îêíà
WIN_X equ 250 ; êîîðäèíàòà õ îêíà
WIN_Y equ 190 ; êîîðäèíàòà ó îêíà
include '..\..\..\macros.inc'
WIN_W equ 295 ; è¨à¨­  ®ª­ 
WIN_H equ 195 ; ¢ëá®â  ®ª­ 
WIN_X equ 250 ; ª®®à¤¨­ â  å ®ª­ 
WIN_Y equ 190 ; ª®®à¤¨­ â  ã ®ª­ 
 
START:
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ÎÑÍÎÂÍÎÉ ÖÈÊË ÏÐÎÃÐÀÌÌÛ - ÎÁÐÀÁÎÒÊÀ ÑÎÁÛÒÈÉ |
; Ž‘Ž‚Ž‰ –ˆŠ‹ Žƒ€ŒŒ› - Ž€Ž’Š€ ‘Ž›’ˆ‰ |
;----------------------------------------------------------------------------------------------------/
red:
call draw_window ; âûçûâàåì ïåðåðèñîâêó îêíà ïðèëîæåíèÿ
call draw_main ; ¢ë§ë¢ ¥¬ ¯¥à¥à¨á®¢ªã ®ª­  ¯à¨«®¦¥­¨ï
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 ; âûõîäèì
;îáðàáîòêà êíîïêè Next
cmp ah, 12 ; åñëè íàæàòà êíîïêà NEXT
jne set_bg ; âûõîäèì
inc [pnext] ; óâåëè÷èâàåì ïðè íàæàòèè íîìåð ïàëèòðû
mov eax,[pnext] ; çàíîñèì çíà÷åíèå â åàõ
cmp al,6 ; ñðàâíèâàåì ñ çàÿâëåííûì êîëè÷åñòâîì ïàëèòð
jne next_redraw ; åñëè íå áîëüøå ìàêñèìóìà òî íà âûçîâ îòðèñîâêè
xor eax,eax ; èíà÷å çàíóëÿåì ïàëèòðó íà default
mov [pnext],eax ; è çàïîìèíàåì ÷òî ñáðîñèëè ïàëèòðó íà default
mcall 17 ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
cmp ah, 1 ; ¥á«¨ ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
jz bexit ; ¢ë室¨¬
;®¡à ¡®âª  ª­®¯ª¨ Next
cmp ah, 12 ; ¥á«¨ ­ ¦ â  ª­®¯ª  NEXT
jne next_bg ; ¢ë室¨¬
inc [pnext] ; 㢥«¨ç¨¢ ¥¬ ¯à¨ ­ ¦ â¨¨ ­®¬¥à ¯ «¨âàë
mov [renmode],0 ; ¢ª«îç ¥¬ æ¢¥â®¢ë¥ á奬ë
mov eax,[pnext] ; § ­®á¨¬ §­ ç¥­¨¥ ¢ ¥ å
cmp al,6 ; áà ¢­¨¢ ¥¬ á § ï¢«¥­­ë¬ ª®«¨ç¥á⢮¬ ¯ «¨âà
jne next_redraw ; ¥á«¨ ­¥ ¡®«ìè¥ ¬ ªá¨¬ã¬  â® ­  ¢ë§®¢ ®âà¨á®¢ª¨
xor eax,eax ; ¨­ ç¥ § ­ã«ï¥¬ ¯ «¨âàã ­  default
mov [pnext],eax ; ¨ § ¯®¬¨­ ¥¬ çâ® á¡à®á¨«¨ ¯ «¨âàã ­  default
next_redraw:
call draw_palitra ; ÐÈÑÓÅÌ ÏÀËÈÒÐÓ
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ
set_bg:
cmp ah, 14 ; åñëè íàæàòà êíîïêà BACKGROUND
jne next_end ; âûõîäèì
mcall 15,4,1
mcall 15,1,1,1
mcall 15,5,color,0,3*1*1
mcall 15,3
jmp still
call draw_palitra ; ˆ‘“…Œ €‹ˆ’“
jmp still ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
next_bg:
cmp ah, 14 ; Š­®¯ª  BACKGROUND
jne circle_bg ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
call set_background ; ¨­ ç¥ ãáâ ­ ¢«¨¢ ¥¬ ä®­
jmp still ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
circle_bg:
cmp ah, 15 ; Š­®¯ª  Šà㣮¢ ï ¯ «¨âà 
jne next_end ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
;mov [renmode],2 ; ¢ª«îç ¥¬ ®âà¨á®¢ªã ªà㣮¢®© ¯ «¨âàë
call draw_palitra ; ˆ‘“…Œ €‹ˆ’“
jmp still ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
next_end:
cmp ah,13 ; COLOR SWAP
jne color_swap_end
127,156 → 134,200
pop [color2]
pop [color]
call draw_result
jmp still ; ˆ ã室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
color_swap_end:
cmp ah, 7 ; Ïðîâåðÿåì íàæàòà êíîïêà ñ ID=7
jne color_button ; Åñëè íå íàæàòà, òî èä¸ì äàëüøå
call mouse_get ; Èíà÷å âêëþ÷àåì îáðàáîò÷èê ìûøè, ÷òîáû ñ÷èòàòü çíà÷åíèå öâåòà ñ ïàëèòðû
jmp still ; È óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ
color_button: ; ÐÀÑ×¨Ò êîîðäèíàò äëÿ ïîëçóíêîâ RGBA
push eax ; çàïîìèíàåì åàõ
call mouse_local ; ïîëó÷àåì ëîêàëüíûå êîîðäèíàòû
mov ebx,137 ; íèæíÿÿ ãðàíèöà ïîëçóíêà ïî Ó
mov ecx,[mouse_y] ; çàíèñèì â åñõ çíà÷åíèå êóðñîðà ïî Ó
sub ebx,ecx ; íàõîäèì ðàçíîñòü (ò.å. êóäà ñìåùàåòñÿ ïîëçóíîê)
mov ecx,3 ; çàíîñèì â åñõ öèôðó 3 (256/3=85, ãäå 85-âûñîòà ïîëçóíêîâ)
imul ecx,ebx ; íàõîäèì èñòèííûé ïàðàìåòð öâåòà ñ ó÷¸òîì ìàñøòàáà ïîëçóíêà---+
pop eax ; âîññòàíàâëèâàåì åàõ :
;red_button: ; Êðàñíûé Òðåêáàð :
cmp ah, 7 ; à®¢¥à塞 ­ ¦ â  ª­®¯ª  á ID=7
jne color_button ; …᫨ ­¥ ­ ¦ â , â® ¨¤ñ¬ ¤ «ìè¥
call mouse_get ; ˆ­ ç¥ ¢ª«îç ¥¬ ®¡à ¡®â稪 ¬ëè¨, ç⮡ë áç¨â âì §­ ç¥­¨¥ æ¢¥â  á ¯ «¨âàë
jmp still ; ˆ ã室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
color_button: ; €‘—ð’ ª®®à¤¨­ â ¤«ï ¯®«§ã­ª®¢ RGBA
push eax ; § ¯®¬¨­ ¥¬ ¥ å
call mouse_local ; ¯®«ãç ¥¬ «®ª «ì­ë¥ ª®®à¤¨­ âë
mov ebx,137 ; ­¨¦­ïï £à ­¨æ  ¯®«§ã­ª  ¯® “
mov ecx,[mouse_y] ; § ­¨á¨¬ ¢ ¥áå §­ ç¥­¨¥ ªãàá®à  ¯® “
sub ebx,ecx ; ­ å®¤¨¬ à §­®áâì (â.¥. ªã¤  ᬥ頥âáï ¯®«§ã­®ª)
mov ecx,3 ; § ­®á¨¬ ¢ ¥áå æ¨äàã 3 (256/3=85, £¤¥ 85-¢ëá®â  ¯®«§ã­ª®¢)
imul ecx,ebx ; ­ å®¤¨¬ ¨á⨭­ë© ¯ à ¬¥âà æ¢¥â  á ãçñ⮬ ¬ áèâ ¡  ¯®«§ã­ª ---+
pop eax ; ¢®ááâ ­ ¢«¨¢ ¥¬ ¥ å :
;red_button: ; Šà á­ë© ’४¡ à :
cmp ah, 8 ; ID=8 :
jne green_button ; åñëè íåò, òî ïðîâåðÿåì çåë¸íûé òðåêáàð :
mov [cred],cl ; èíà÷å ïðèñâàèâàåì çíà÷åíèå, êðàñíîìó öâåòó ñïåêòðà <------+
call set_spectr ; óñòàíàâëèâàåì ñïåêòð
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ
jne green_button ; ¥á«¨ ­¥â, â® ¯à®¢¥à塞 §¥«ñ­ë© â४¡ à :
mov [cred],cl ; ¨­ ç¥ ¯à¨á¢ ¨¢ ¥¬ §­ ç¥­¨¥, ªà á­®¬ã 梥âã ᯥªâà  <------+
call set_spectr ; ãáâ ­ ¢«¨¢ ¥¬ ᯥªâà
jmp still ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
green_button:
cmp ah, 9
jne blue_button
mov [cgreen],cl
call set_spectr
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ
jmp still ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
blue_button:
cmp ah, 10
jne alpha_button
mov [cblue],cl
call set_spectr
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ
jmp still ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
alpha_button:
cmp ah, 11
jne still
mov [calpha],cl
call set_spectr
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ
jmp still ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
bexit:
mcall -1 ; èíà÷å êîíåö ïðîãðàììû
mcall -1 ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
;end_button
 
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ÃËÀÂÍÛÉ ÌÎÄÓËÜ ÎÒÐÈÑÎÂÊÈ ÎÊÍÀ È ÝËÅÌÅÍÒÎÂ ÏÐÈËÎÆÅÍÈß |
; ƒ‹€‚›‰ ŒŽ„“‹œ Ž’ˆ‘Ž‚Šˆ ŽŠ€ ˆ ‹…Œ…’Ž‚ ˆ‹Ž†…ˆŸ |
;----------------------------------------------------------------------------------------------------/
draw_window:
mov eax,12 ; ôóíêöèÿ 12: îçíà÷àåò, ÷òî áóäåò ðèñîâàòüñÿ îêíî
mov ebx,1 ; 1,íà÷àëî ðèñîâàíèÿ
int 0x40 ; Ïðåðûâàíèå
draw_main:
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,WIN_X shl 16+WIN_W ; [êîîðäèíàòà ïî îñè x]*65536 + [ðàçìåð ïî îñè x]
add ecx,WIN_Y shl 16+WIN_H ; Âûñîòà ñêèíà + [êîîðäèíàòà ïî y]*65536 + [ðàçìåð ïî y] (168 äëÿ âåðñèè 0.2)
mov edx,[sc.work] ; Âèäèìî ñòèëü îêíà ïî äåôîëòó
or edx,0x34000000 ; Èëè îêíî ñî ñêèíîì ôèêñèðîâàííûõ ðàçìåðîâ
mov edi,title ; Çàãîëîâîê îêíà
int 0x40 ; Ïðåðûâàíèå
xor eax,eax ; Žç¨é ¥¬ eax (mov eax,0) (”ã­ªæ¨ï 0)
mov ebx,WIN_X shl 16+WIN_W ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
add ecx,WIN_Y shl 16+WIN_H ; ‚ëá®â  ᪨­  + [ª®®à¤¨­ â  ¯® y]*65536 + [à §¬¥à ¯® y] (168 ¤«ï ¢¥àᨨ 0.2)
mov edx,[sc.work] ; ‚¨¤¨¬® áâ¨«ì ®ª­  ¯® ¤¥ä®«âã
or edx,0x34000000 ; ˆ«¨ ®ª­® ᮠ᪨­®¬ 䨪á¨à®¢ ­­ëå à §¬¥à®¢
mov edi,title ; ‡ £®«®¢®ª ®ª­ 
int 0x40 ; à¥à뢠­¨¥
 
call draw_palitra ; ÐÈÑÓÅÌ ÏÀËÈÒÐÓ
call draw_result ; ÐÈÑÓÅÌ ÐÅÇÓËÜÒÀÒ
 
mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó
mov ebx,110 shl 16+147 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
mov ecx,9 shl 16+147 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov edx,0x60000007 ; Íà÷àëüíîå ID êíîïîê - 0xXYnnnnnn
call draw_palitra ; ˆ‘“…Œ €‹ˆ’“
call draw_result ; ˆ‘“…Œ …‡“‹œ’€’
 
mov eax,8 ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã
mov ebx,110 shl 16+147 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
mov ecx,9 shl 16+147 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov edx,0x60000007 ;  ç «ì­®¥ ID ª­®¯®ª - 0xXYnnnnnn
int 0x40
 
mov ebx,13 shl 16+12 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
mov ebx,13 shl 16+12 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
mov edx,0x60000008 ; ID = 8
mov ecx,51 shl 16+85 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì red
add ebx,23 shl 16 ; Äîáàâëÿåì
mov ecx,51 shl 16+85 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40 ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ red
add ebx,23 shl 16 ; „®¡ ¢«ï¥¬
inc edx ; ID = 9
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì green
add ebx,23 shl 16 ; Äîáàâëÿåì
int 0x40 ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ green
add ebx,23 shl 16 ; „®¡ ¢«ï¥¬
inc edx ; ID = 10
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì blue
add ebx,23 shl 16 ; Äîáàâëÿåì
int 0x40 ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ blue
add ebx,23 shl 16 ; „®¡ ¢«ï¥¬
inc edx ; ID = 11
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì alpha
int 0x40 ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ alpha
 
mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó (ÑÌÅÍÀ ÖÂÅÒÀ)
mov ebx,11 shl 16+20 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
mov ecx,12 shl 16+20 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov eax,8 ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã (‘Œ…€ –‚…’€)
mov ebx,11 shl 16+20 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
mov ecx,12 shl 16+20 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov edx,0x6000000D ; ID = 13
int 0x40
 
mov eax,12 ; ôóíêöèÿ 12: îçíà÷àåò, ÷òî áóäåò ðèñîâàòüñÿ îêíî
mov ebx,2 ; 2 - êîíåö ðèñîâàíèÿ
int 0x40 ; Ïðåðûâàíèå
call draw_bottom_panel
call draw_left_panel
 
;.................................................................................................
; Îòðèñîâêà íèæíåé ïàíåëè
;.................................................................................................
mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó
mov ebx,4 shl 16+64 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
mov ecx,169 shl 16+16 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov edx,12 ; ID = 12
mov esi,[sc.work_button] ; öâåò
int 0x40
mov ebx,80 shl 16+102 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
mov edx,14 ; BACKGROUND button
int 0x40
mov eax,12 ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
mov ebx,2 ; 2 - ª®­¥æ à¨á®¢ ­¨ï
int 0x40 ; à¥à뢠­¨¥
ret
 
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ‹ŽŠ ‚‘ŽŒŽƒ€’…‹œ›• Ž–…„“ ˆ ”“Š–ˆ‰ ˆ‹Ž†…ˆŸ |
;----------------------------------------------------------------------------------------------------/
 
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
;------------------------------------------------------------------------------------------------+
draw_left_panel: ; Žâà¨á®¢ª  ¡®ª®¢®© ¯ ­¥«¨
;.................................................................................................
mov eax,8 ; button_next_colorsheme
mov ebx,266 shl 16+16 ; [x] + [size]
mov ecx,9 shl 16+16 ; [y] + [size]
mov edx,0x6000000C ; ID = 12
mov esi,[sc.work_button] ; RGB
int 0x40 ; call
mov eax,13 ; draw rect
mov ebx,266 shl 16+16 ; [x] + [size]
mov ecx,9 shl 16+16 ; [y] + [size]
mov edx,0x666666 ; RGB
push esi ; backup esi
mov esi,8 ; counter=8
draw_lpanel: ; loop label
int 0x40 ; call draw black rect
add ecx,19 shl 16 ; move rect
dec esi ; decrement counter
cmp esi,0 ; if counter!=zero
jne draw_lpanel ; then goto label
mov esi,8 ; else counter=8
mov ebx,267 shl 16+14 ; [x] + [size]
mov ecx,10 shl 16+14 ; [y] + [size]
mov edx,0xF3F3F3 ; RGB
draw_lpanel2: ; 2 loop label
int 0x40 ; call draw white rect
add ecx,19 shl 16 ; move rect
dec esi ; decrement counter
cmp esi,0 ; if counter!=0
jne draw_lpanel2 ; then goto label2
pop esi ; restore esi
; draw_left_arrow for button_next_colorsheme
mov eax,4 ; Write string
mov ebx,272 shl 16+13 ; [x] + [y]
mov ecx,0x0 ; RGB
mov edx,larrow ; string pointer
mov esi,1 ; count symbol
int 0x40 ; call
mov eax,38 ; draw line
mov ebx,270 shl 16+272 ; [start x] + [end x]
mov ecx,16 shl 16+16 ; [start y] + [end y]
mov edx,0x0 ; RGB
int 0x40 ; call
ret ; return
;.................................................................................................
 
mov eax,38 ; Ôóíêöèÿ 38 - íàðèñîâàòü îòðåçîê.
mov ebx,4 shl 16+257 ;[êîîðäèíàòà íà÷àëà ïî îñè x]*65536 + [êîîðäèíàòà êîíöà ïî îñè x]
mov ecx,163 shl 16+163 ;[êîîðäèíàòà íà÷àëà ïî îñè y]*65536 + [êîîðäèíàòà êîíöà ïî îñè y]
mov edx,0x00666666 ;0x00RRGGBB - öâåò
int 0x40
 
ret ; Âîçâðàùàåì óïðàâëåíèå
;------------------------------------------------------------------------------------------------+
draw_bottom_panel: ; Žâà¨á®¢ª  ­¨¦­¥© ¯ ­¥«¨
;.................................................................................................
mov eax,8 ; draw button
mov ebx,92 shl 16+100 ; [x] + [size]
mov ecx,169 shl 16+16 ; [y] + [size]
mov edx,14 ; ID = 14
mov esi,[sc.work_button] ; RGB
int 0x40 ; call
mov eax,4 ; Write string
mov ebx,113 shl 16+174 ; [x] + [y]
mov ecx,[sc.work_button_text] ; RGB
mov edx,bground ; string pointer
mov esi,10 ; count symbol
int 0x40 ; call
mov eax,38 ; draw line
mov ebx,4 shl 16+282 ; [start x] + [end x]
mov ecx,163 shl 16+163 ; [start y] + [end y]
mov edx,0x00666666 ; RGB
int 0x40 ; call
ret ; return
;.................................................................................................
 
 
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ÁËÎÊ ÂÑÏÎÌÎÃÀÒÅËÜÍÛÕ ÏÐÎÖÅÄÓÐ È ÔÓÍÊÖÈÉ ÏÐÈËÎÆÅÍÈß |
;----------------------------------------------------------------------------------------------------/
 
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
284,16 → 335,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
301,128 → 352,206
dec edx ; edx = y
mov [mouse_x],ecx ; mouse_x = x
mov [mouse_y],edx ; mouse_y = y
ret ; Âîçâðàùàåì óïðàâëåíèå
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
;end_mouse_local
 
set_background:
;.................................................................................................
; “áâ ­ ¢«¨¢ ¥â ä®­ à ¡®ç¥£® á⮫ 
;.................................................................................................
mov eax,15 ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
mov ebx,4 ; ®¤äã­ªæ¨ï 4 - ãáâ ­®¢¨âì ०¨¬ ®âà¨á®¢ª¨ ä®­ .
mov ecx,2 ; ¥¦¨¬ ®âà¨á®¢ª¨ - § ¬®áâ¨âì (1)
int 0x40 ; ‚ë§ë¢ ¥¬
 
mov eax,15 ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
mov ebx,1 ; ®¤äã­ªæ¨ï 1 - ãáâ ­®¢¨âì à §¬¥à ä®­®¢®£® ¨§®¡à ¦¥­¨ï.
mov ecx,2 ; ˜¨à¨­  ¨§®¡à ¦¥­¨ï
mov edx,2 ; ‚ëá®â  ¨§®¡à ¦¥­¨ï
int 0x40 ; ‚ë§ë¢ ¥¬
 
mov eax,[color]
mov [cm+0],al
mov [cm+9],al
shr eax,8
mov [cm+1],al
mov [cm+10],al
shr eax,8
mov [cm+2],al
mov [cm+11],al
 
mov eax,[color2]
mov [cm+3],al
mov [cm+6],al
shr eax,8
mov [cm+4],al
mov [cm+7],al
shr eax,8
mov [cm+5],al
mov [cm+8],al
 
mov eax,15 ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
mov ebx,5 ; ®¤äã­ªæ¨ï 5 - ¯®¬¥áâ¨âì ¡«®ª ¯¨ªá¥«¥© ­  ä®­.
mov ecx,cm ; “ª § â¥«ì ­  ¤ ­­ë¥ ¢ ä®à¬ â¥ BBGGRRBBGGRR
mov edx,0 ; C¬¥é¥­¨¥ ¢ ¤ ­­ëå ä®­®¢®£® ¨§®¡à ¦¥­¨ï
mov esi,3*4 ;  §¬¥à ¤ ­­ëå ¢ ¡ ©â å = 3 * ç¨á«® ¯¨ªá¥«¥©
int 0x40 ; ‚ë§ë¢ ¥¬
 
mov eax,15 ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
mov ebx,3 ; ®¤äã­ªæ¨ï 3 - ¯¥à¥à¨á®¢ âì ä®­.
int 0x40 ; ‚ë§ë¢ ¥¬
 
ret
;end_set_background
 
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 ebx,110 shl 16+148 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,9 shl 16+148 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov edx,[sc.work] ; 梥â
int 0x40
 
;cmp [renmode],2
;je cyrcle_draw
;cmp [renmode],1
;je picker_draw
cmp [renmode],0
je sheme_draw
ret
 
;.................................................................................................
; Îòðèñîâêà ôîíà ïîä êíîïêè
; Žâà¨á®¢ª  ªà㣮¢®© ¤¨ £à ¬¬ë
;.................................................................................................
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov edx,0x222222 ; öâåò
mov ecx,9 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov esi,2 ; Ñ÷åò÷èê ëèíèé ïîäëîæåê
;cyrcle_draw:
;mov eax,7 ; 7 - ­®¬¥à ä㭪樨
;mov ebx,circle ; 㪠§ â¥«ì ­  ¨§®¡à ¦¥­¨¥ ¢ ä®à¬ â¥ BBGGRRBBGGRR...
;mov ecx,148 shl 16 + 148 ; [à §¬¥à ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ y]
;mov edx,110 shl 16 + 9 ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
;int 0x40
;ret
 
;picker_draw:
;ret
 
;.................................................................................................
; Žâà¨á®¢ª  ä®­  ¯®¤ ª­®¯ª¨
;.................................................................................................
sheme_draw:
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,0x222222 ; 梥â
mov ecx,9 shl 16+73 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
mov esi,2 ; ‘ç¥â稪 «¨­¨© ¯®¤«®¦¥ª
re_draw:
mov ebx,110 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov edi,2 ; Ñ÷åò÷èê êîëè÷åñòâà ïîäëîæåê
mov ebx,110 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,4 ; Ñ÷åò÷èê êîëè÷åñòâà àáçàöåâ (#4,8)
mov ebx,99 shl 16+8 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,0x0FFFFFFF ; 梥â
mov esi,4 ; ‘ç¥â稪 ª®«¨ç¥á⢠  ¡§ æ¥¢ (#4,8)
mov ebx,99 shl 16+8 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
for_abz:
;;push esi ; Ñîõðàíÿåì çíà÷åíèå ñ÷åò÷èêà ëèíèé â ñòåê
;;push esi ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
cmp esi,2
jne x2_line
mov ebx,99 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 + [ðàçìåð]
push edi ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
mov edi,8 ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
mov ecx, 1 shl 16+8 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
cmp esi,2
jg y2_line ; Åñëè áîëüøå 4 òî èãíîðèì
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 ; Ïðåðûâàíèå
add ecx,9 shl 16 ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® y
int 0x40 ; à¥à뢠­¨¥
call sub_red
dec edi ; Óìåíüøàåì ñ÷åò÷èê êíîïîê
cmp edi,0 ; Ñðàâíèâàåì ñ íóëåì
jnz for_loop ; Åñëè íå íîëü òî â íà÷àëî öèêëà
dec edi ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
cmp edi,0 ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
jnz for_loop ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
call sub_green
pop edi ; Èíà÷å âîññòàíàâëèâàåì ñ÷åò÷èê ëèíèé
dec edi ; Óìåíüøàåì åãî
cmp edi,0 ; Ñðàâíèâàåì ñ íóëåì
jnz for_stolbik ; Åñëè íå íîëü òî â íà÷àëî öèêëà
pop edi ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
dec edi ; “¬¥­ìè ¥¬ ¥£®
cmp edi,0 ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
jnz for_stolbik ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
call sub_blue
;;pop esi ; Èíà÷å âîññòàíàâëèâàåì ñ÷åò÷èê ëèíèé
dec esi ; Óìåíüøàåì åãî
cmp esi,0 ; Ñðàâíèâàåì ñ íóëåì
jnz for_abz ; Åñëè íå íîëü òî â íà÷àëî öèêëà
ret ; Âîçâðàùàåì óïðàâëåíèå
;;pop esi ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
dec esi ; “¬¥­ìè ¥¬ ¥£®
cmp esi,0 ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
jnz for_abz ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
;end_draw_palitra-------------------------------------------------------------------------------------
 
 
sub_red:
;.................................................................................................
; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû
;  áçñâ ᬥ饭¨© ªà á­®£® æ¢¥â  ¢ £¥­¥à æ¨¨ æ¢¥â  ¯ «¨âàë
;.................................................................................................
push eax
mov eax,[pnext]
429,12 → 558,12
;sub_red_0 ; palitra
cmp al,0
jne sub_red_1
sub edx,0x20
sub edx,0x40
jmp sub_red_e
sub_red_1: ; random
cmp al,1
jne sub_red_2
sub edx,0x40
sub edx,0x20
jmp sub_red_e
sub_red_2: ; gree
cmp al,2
458,12 → 587,12
jmp sub_red_e
sub_red_e:
pop eax
ret ; Âîçâðàùàåì óïðàâëåíèå
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
;end_sub_red------------------------------------------------------------------------------------------
 
sub_green:
;.................................................................................................
; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû
;  áçñâ ᬥ饭¨© ªà á­®£® æ¢¥â  ¢ £¥­¥à æ¨¨ æ¢¥â  ¯ «¨âàë
;.................................................................................................
push eax
mov eax,[pnext]
470,22 → 599,22
;sub_green_0
cmp al,0
jne sub_green_1
sub edx,0x2000
sub edx,0x4000
jmp sub_green_e
sub_green_1:
cmp al,1
jne sub_green_e
sub edx,0x4000
sub edx,0x2000
;jmp sub_green_e
sub_green_e:
pop eax
ret ; Âîçâðàùàåì óïðàâëåíèå
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
;end_sub_green----------------------------------------------------------------------------------------
 
 
sub_blue:
;.................................................................................................
; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû
;  áçñâ ᬥ饭¨© ªà á­®£® æ¢¥â  ¢ £¥­¥à æ¨¨ æ¢¥â  ¯ «¨âàë
;.................................................................................................
push eax
mov eax,[pnext]
492,198 → 621,198
;sub_blue_0
cmp al,0
jne sub_blue_1
sub edx,0x400000
sub edx,0x600000
jmp sub_blue_e
sub_blue_1:
cmp al,1
jne sub_blue_e
sub edx,0x600000
sub edx,0x400000
;jmp sub_blue_e
sub_blue_e:
pop eax
ret ; Âîçâðàùàåì óïðàâëåíèå
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
;end_sub_blue-----------------------------------------------------------------------------------------
 
draw_result:
;.................................................................................................
; Áîëüøàÿ ðàìêà âûâîäà ðåçóëüòàòà
; ®«ìè ï à ¬ª  ¢ë¢®¤  १ã«ìâ â 
;.................................................................................................
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov edx,0x00666666 ; öâåò-îáâîäêè
mov ebx,4 shl 16+98 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,9 shl 16+148 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,0x00666666 ; 梥â-®¡¢®¤ª¨
mov ebx,4 shl 16+98 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,9 shl 16+148 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40
mov edx,0x00F3F3F3 ; öâåò-ôîíà
mov ebx,5 shl 16+96 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,10 shl 16+146 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov edx,0x00F3F3F3 ; 梥â-ä®­ 
mov ebx,5 shl 16+96 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,10 shl 16+146 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40
 
;.................................................................................................
; Îòðèñîâêà ðåçóëüòàòà öâåòà â hex color2
; Žâà¨á®¢ª  १ã«ìâ â  æ¢¥â  ¢ hex color2
;.................................................................................................
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
; color 2 - draw fringle
mov edx,0x222222 ; öâåò-îáâîäêè
mov ebx,16 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,16 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
mov edx,0x222222 ; 梥â-®¡¢®¤ª¨
mov ebx,16 shl 16+15 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,16 shl 16+15 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40 ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
; color 2 - draw color
mov edx,[color2] ; öâåò
mov ebx,17 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,17 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
mov edx,[color2] ; 梥â
mov ebx,17 shl 16+13 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,17 shl 16+13 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40 ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
; color 1 - draw fringle
mov edx,0x222222 ; öâåò-îáâîäêè
mov ebx,11 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,12 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
mov edx,0x222222 ; 梥â-®¡¢®¤ª¨
mov ebx,11 shl 16+15 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,12 shl 16+15 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40 ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
; value - draw fringle
mov ebx,34 shl 16+62 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,16 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
mov ebx,34 shl 16+62 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,16 shl 16+15 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40 ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
 
; color 2 - draw color
mov edx,[color] ; öâåò
mov ebx,12 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,13 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
mov edx,[color] ; 梥â
mov ebx,12 shl 16+13 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,13 shl 16+13 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40 ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
; value - draw background
mov edx,0xFFFFFF ; öâåò-ôîíà
mov ebx,35 shl 16+60 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,17 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
mov edx,0xFFFFFF ; 梥â-ä®­ 
mov ebx,35 shl 16+60 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,17 shl 16+13 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*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,45 shl 16+20 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y]
int 0x40 ; Ïðåðûâàíèå - âûâîäèì ðåçóëüòàò â îêíî (HEX)
mov ebx,256+8 shl 16 ; ¯ à ¬¥âàë ¯à¥®¡à §®¢ ­¨ï ç¨á«  ¢ ⥪áâ (HEX)
mov edx,45 shl 16+20 ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
int 0x40 ; à¥à뢠­¨¥ - ¢ë¢®¤¨¬ १ã«ìâ â ¢ ®ª­® (HEX)
 
mov eax,4 ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå
mov ebx,38*65536+20 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
mov ecx,0x0 ; öâåò òåêñòà RRGGBB
mov edx,hex ; ðèñóåì '#'
mov esi,1 ; äëèíà òåêñòà â áàéòàõ
mov eax,4 ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
mov ebx,38*65536+20 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
mov ecx,0x0 ; 梥â ⥪áâ  RRGGBB
mov edx,hex ; à¨á㥬 '#'
mov esi,1 ; ¤«¨­  ⥪áâ  ¢ ¡ ©â å
int 0x40
 
;.................................................................................................
; Îòðèñîâêà r g b çíà÷åíèé
; Žâà¨á®¢ª  r g b §­ ç¥­¨©
;.................................................................................................
call get_spectr
 
movzx eax,[cred] ; êðàñíûé
mov ebx,9*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
call draw_value ; âûâîäèì ðåçóëüòàò
movzx eax,[cred] ; ªà á­ë©
mov ebx,9*65536+142 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â
 
movzx eax,[cgreen] ; çåëåíûé
mov ebx,32*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
call draw_value ; âûâîäèì ðåçóëüòàò
movzx eax,[cgreen] ; §¥«¥­ë©
mov ebx,32*65536+142 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â
 
movzx eax,[cblue] ; ñèíèé
mov ebx,55*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
call draw_value ; âûâîäèì ðåçóëüòàò
movzx eax,[cblue] ; ᨭ¨©
mov ebx,55*65536+142 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â
 
movzx eax,[calpha] ; àëüôà
mov ebx,78*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
call draw_value ; âûâîäèì ðåçóëüòàò
movzx eax,[calpha] ;  «ìä 
mov ebx,78*65536+142 ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â
 
;.................................................................................................
; Âûâîäèì áóêâû r g b a
; ‚뢮¤¨¬ ¡ãª¢ë r g b a
;.................................................................................................
mov eax,4 ; 4 - âûâåñòè ñòðîêó òåêñòà â îêíî
mov ebx,16 shl 16+40 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y]
mov ecx,0x0 ; 0xX0RRGGBB (RR, GG, BB çàäàþò öâåò òåêñòà)
mov edx,cname ; óêàçàòåëü íà íà÷àëî ñòðîêè
mov esi,1 ; âûâîäèòü esi ñèìâîëîâ
newline: ; öèêë
int 0x40 ; Ïðåðûâàíèå
add ebx,23 shl 16 ; Äîáàâëÿåì
add edx,1 ; Äîáàâëÿåì
cmp [edx],byte 'x' ; Ñðàâíåíèå ñ áàéòîì õ
jne newline ; Åñëè íå íóëü èëè íå ðàâíî
mov eax,4 ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ  ¢ ®ª­®
mov ebx,16 shl 16+40 ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
mov ecx,0x0 ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ )
mov edx,cname ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
mov esi,1 ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
newline: ; 横«
int 0x40 ; à¥à뢠­¨¥
add ebx,23 shl 16 ; „®¡ ¢«ï¥¬
add edx,1 ; „®¡ ¢«ï¥¬
cmp [edx],byte 'x' ; ‘à ¢­¥­¨¥ á ¡ ©â®¬ å
jne newline ; …᫨ ­¥ ­ã«ì ¨«¨ ­¥ à ¢­®
 
;.................................................................................................
; Îòðèñîâêà ñëàéäåðîâ
; Žâà¨á®¢ª  á« ©¤¥à®¢
;.................................................................................................
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
mov edx,0x222222 ; öâåò-îáâîäêè
mov ebx,16 shl 16+4 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,51 shl 16+86 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
mov edx,0x222222 ; 梥â-®¡¢®¤ª¨
mov ebx,16 shl 16+4 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,51 shl 16+86 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
add ebx,23 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
int 0x40
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
add ebx,23 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
int 0x40
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
add ebx,23 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
int 0x40
 
mov edx,0xFA0919 ; öâåò-îáâîäêè
mov ebx,17 shl 16+2 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
mov ecx,52 shl 16+84 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
mov edx,0xFA0919 ; 梥â-®¡¢®¤ª¨
mov ebx,17 shl 16+2 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
mov ecx,52 shl 16+84 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
int 0x40
mov edx,0x08CE19 ; öâåò-îáâîäêè
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
mov edx,0x08CE19 ; 梥â-®¡¢®¤ª¨
add ebx,23 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
int 0x40
mov edx,0x0909FF ; öâåò-îáâîäêè
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
mov edx,0x0909FF ; 梥â-®¡¢®¤ª¨
add ebx,23 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
int 0x40
mov edx,0xE4E4E4 ; öâåò-îáâîäêè
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
mov edx,0xE4E4E4 ; 梥â-®¡¢®¤ª¨
add ebx,23 shl 16 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
int 0x40
 
;.................................................................................................
; Îòðèñîâêà ïîëçóíêîâ
; Žâà¨á®¢ª  ¯®«§ã­ª®¢
;.................................................................................................
mov edx,0x0 ; öâåò-ïîëçóíêîâ
mov ebx,17 shl 16+11 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
movzx eax,[cred] ; áåðåì çíà÷åíèå öâåòà
mov edx,0x0 ; 梥â-¯®«§ã­ª®¢
mov ebx,17 shl 16+11 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
movzx eax,[cred] ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
call draw_slider
add ebx,23 shl 16
movzx eax,[cgreen] ; áåðåì çíà÷åíèå öâåòà
movzx eax,[cgreen] ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
call draw_slider
add ebx,23 shl 16
movzx eax,[cblue] ; áåðåì çíà÷åíèå öâåòà
movzx eax,[cblue] ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
call draw_slider
add ebx,23 shl 16
movzx eax,[calpha] ; áåðåì çíà÷åíèå öâåòà
movzx eax,[calpha] ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
call draw_slider
 
ret ; Âîçâðàùàåì óïðàâëåíèå
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
;end_draw_result
 
draw_slider:
xor ecx,ecx
mov cl,0x3 ; áóäåì äåëèòü åãî íà 3 òàê êàê ïîëçóíêè äëèííîé 85 ïèêñåëåé
div cl ; äåëèì - öåëîå â al îñòàòîê â ah
mov cl,136 ; íèæíÿÿ òî÷êà ïîëçóíêà
mov cl,0x3 ; ¡ã¤¥¬ ¤¥«¨âì ¥£® ­  3 â ª ª ª ¯®«§ã­ª¨ ¤«¨­­®© 85 ¯¨ªá¥«¥©
div cl ; ¤¥«¨¬ - 楫®¥ ¢ al ®áâ â®ª ¢ ah
mov cl,136 ; ­¨¦­ïï â®çª  ¯®«§ã­ª 
sub cl,al ; cl=cl-al
shl ecx,16
add ecx,1 ; çàäàåì íà÷àëüíîå ïîëîæåíèå
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
add ecx,1 ; § ¤ ¥¬ ­ ç «ì­®¥ ¯®«®¦¥­¨¥
mov eax,13 ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
int 0x40
push ebx ; ñîõðàíÿåì äëÿ ñëåäóþùåãî ïîëçóíêà x+w
sub ebx,8 ; òàê êàê øèðèíà ëèíèè 11 òî îòíèìàåì 8 ÷òîáû êóáèê ñòàë øèðèíîé 3
add ebx,8 shl 16 ; Êîîðäèíàòû ïî x äëÿ êâàäðàòà íà ïîëçóíêå ñìåùàåì íà 8 â ïðàâî
inc ecx ; áûäëîêîäèì âûñîòó ïîëçóíêà äî 3-õ (1+1=2)
inc ecx ; (2+1=3) íó âîò ó íàñ áóäåò êóáèê 3õ3 íà 8 â ïðàâî îò ëèíèè
int 0x40 ; ðèñóåì
pop ebx ; âîññòàíàâëèâàåì íîðìàëüíûå êîîðäèíàòû
ret ; Âîçâðàùàåì óïðàâëåíèå
push ebx ; á®å࠭塞 ¤«ï á«¥¤ãî饣® ¯®«§ã­ª  x+w
sub ebx,8 ; â ª ª ª è¨à¨­  «¨­¨¨ 11 â® ®â­¨¬ ¥¬ 8 çâ®¡ë ªã¡¨ª áâ « è¨à¨­®© 3
add ebx,8 shl 16 ; Š®®à¤¨­ âë ¯® x ¤«ï ª¢ ¤à â  ­  ¯®«§ã­ª¥ ᬥ頥¬ ­  8 ¢ ¯à ¢®
inc ecx ; ¡ë¤«®ª®¤¨¬ ¢ëá®âã ¯®«§ã­ª  ¤® 3-å (1+1=2)
inc ecx ; (2+1=3) ­ã ¢®â ã ­ á ¡ã¤¥â ªã¡¨ª 3å3 ­  8 ¢ ¯à ¢® ®â «¨­¨¨
int 0x40 ; à¨á㥬
pop ebx ; ¢®ááâ ­ ¢«¨¢ ¥¬ ­®à¬ «ì­ë¥ ª®®à¤¨­ âë
ret ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
 
;end_slider
 
draw_value:
;.................................................................................................
; Âûâîä ÷èñëà èç ñòðîêè â óêàçàííîé îáëàñòè
; ‚뢮¤ ç¨á«  ¨§ áâப¨ ¢ 㪠§ ­­®© ®¡« áâ¨
;.................................................................................................
push ebx ; ñîõðàíÿåì ïðèñëàííûå êîîðäèíàòû
mov ebx,10 ; óñòàíàâëèâàåì îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ
mov edi,buff ; óêàçàòåëü íà ñòðîêó áóôåðà
call int2ascii ; êîíâåðòèðóåì ÷èñëî è ëîæèì êàê ñòðîêó â áóôåð + esi äëèíà
mov eax,4 ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå
pop ebx ; äîñòàåì èç ñòåêà ïðèñëàííûå êîîðäèíàòû
cmp esi,2 ; ÖÅÍÒÐÈÐÎÂÀÍÈÅ ÒÅÊÑÒÀ
push ebx ; á®å࠭塞 ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
mov ebx,10 ; ãáâ ­ ¢«¨¢ ¥¬ ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
mov edi,buff ; 㪠§ â¥«ì ­  áâப㠡ãä¥à 
call int2ascii ; ª®­¢¥àâ¨à㥬 ç¨á«® ¨ «®¦¨¬ ª ª áâப㠢 ¡ãä¥à + esi ¤«¨­ 
mov eax,4 ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
pop ebx ; ¤®áâ ¥¬ ¨§ á⥪  ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
cmp esi,2 ; –…’ˆŽ‚€ˆ… ’…Š‘’€
jne draw_value_1
add ebx,4 shl 16
jmp draw_value_e
692,77 → 821,63
jne draw_value_e
add ebx,7 shl 16
draw_value_e:
mov ecx,0x0 ; öâåò òåêñòà RRGGBB
mov edx,buff ; óêàçàòåëü íà íà÷àëî òåêñòà
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]
;movzx eax,cl
;mov [cblue],al
;; get red
;mov eax,ecx
;xor ax,ax ; à íàäî ëè????
;shr eax,16
;mov [cred],al
;; get green
;shl ecx,16
;shr ecx,24
;mov [cgreen],cl
 
mov ecx,[color]
mov [cblue],cl
shr ecx,8
771,12 → 886,12
mov [cred],cl
shr ecx,8
mov [calpha],cl
ret ; è âîçâðàùàåì óïðàâëåíèå
ret ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
;end_get_spectr
 
set_spectr:
;.................................................................................................
; óñòàíàâëèâàåò èç r,g,b öâåò
; ãáâ ­ ¢«¨¢ ¥â ¨§ r,g,b 梥â
;.................................................................................................
movzx eax,[calpha]
shl eax,8
786,13 → 901,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
815,27 → 930,44
;end_str_len
;#___________________________________________________________________________________________________
;****************************************************************************************************|
; ÁËÎÊ ÏÅÐÅÌÅÍÍÛÕ È ÊÎÍÑÒÀÍÒ |
; ‹ŽŠ ……Œ…›• ˆ ŠŽ‘’€’ |
;----------------------------------------------------------------------------------------------------/
 
color dd 00000000h ; õðàíèò çíà÷åíèå âûáðàííîãî öâåòà
color2 dd 00FFFFFFh ; õðàíèò çíà÷åíèå âòîðîãî âûáðàííîãî öâåòà
mouse_x dd 0 ; õðàíèò ãëîáàëüíóþ õ êîîðäèíàòó ìûøè
mouse_y dd 0 ; õðàíèò ãëîáàëüíóþ ó êîîðäèíàòó ìûøè
desctop_w dd 0 ; õðàíèò øèðèíó ýêðàíà
sc system_colors ; õðàíèò ñòðóêòóðó ñèñòåìíûõ öâåòîâ ñêèíà
title db 'Palitra v0.4',0 ; õðàíèò èìÿ ïðîãðàììû
hex db '#',0 ; äëÿ âûâîäà ðåø¸òêè êàê òåêñòà
cname db 'RGBAx' ; õðàíèò ðàçðÿäû öâåòîâ (red,green,blue) x-ìåòêà êîíöà
cred db 0 ; õðàíèì êðàñíûé ñïåêðò
cgreen db 0 ; õðàíèì çåëåíûé ñïåêòð
cblue db 0 ; õðàíèì ñèíèé ñïåêòð
calpha db 0 ; õðàíèì ïðîçðà÷íîñòü
struct map_colors
c1 db 0
c2 db 0
c3 db 0
c4 db 0
c5 db 0
c6 db 0
c7 db 0
c8 db 0
c9 db 0
c10 db 0
c11 db 0
c12 db 0
ends
 
cm db 12 dup(0)
color dd 00000000h ; åà ­¨â §­ ç¥­¨¥ ¢ë¡à ­­®£® 梥â 
color2 dd 00FFFFFFh ; åà ­¨â §­ ç¥­¨¥ ¢â®à®£® ¢ë¡à ­­®£® 梥â 
mouse_x dd 0 ; åà ­¨â £«®¡ «ì­ãî å ª®®à¤¨­ âã ¬ëè¨
mouse_y dd 0 ; åà ­¨â £«®¡ «ì­ãî ã ª®®à¤¨­ âã ¬ëè¨
mouse_f dd 0 ; åà ­¨â ¤ ­­ë¥ ® ⮬ ª ª ï ª­®¯ª  ¬ëè¨ ¡ë«  ­ ¦ â 
desctop_w dd 0 ; åà ­¨â è¨à¨­ã íªà ­ 
sc system_colors ; åà ­¨â áâàãªâãàã á¨á⥬­ëå 梥⮢ ᪨­ 
title db 'Palitra v0.5',0 ; åà ­¨â ¨¬ï ¯à®£à ¬¬ë
hex db '#',0 ; ¤«ï ¢ë¢®¤  à¥èñ⪨ ª ª ⥪áâ 
cname db 'RGBAx' ; åà ­¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª  ª®­æ 
cred db 0 ; åà ­¨¬ ªà á­ë© ᯥªàâ
cgreen db 0 ; åà ­¨¬ §¥«¥­ë© ᯥªâà
cblue db 0 ; åà ­¨¬ ᨭ¨© ᯥªâà
calpha db 0 ; åà ­¨¬ ¯à®§à ç­®áâì
larrow db 0x1A,0
buff db '000',0
bnext db 'NEXT BACKGROUND',0; èìÿ êíîïêè
pnext dd 0 ; ñ÷åò÷èê ïåðåêëþ÷åíèÿ ïàëèòðû
 
 
bground db 'BACKGROUND',0 ; ¨¬ï ª­®¯ª¨ - 14
pnext dd 0 ; áç¥â稪 ¯¥à¥ª«î祭¨ï ¯ «¨âàë
renmode dd 0 ; ०¨¬ ®âà¨á®¢ª¨ (1-梥⮢ ï á奬 ,2-¯¨¯¥âª ,3-ªà㣮¢ ï)
I_END: