Rev 3088 | Rev 3099 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3088 | Rev 3091 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;#___________________________________________________________________________________________________ |
1 | ;#___________________________________________________________________________________________________ |
2 | ;****************************************************************************************************| |
2 | ;****************************************************************************************************| |
3 | ; Program Palitra (c) Sergei Steshin (Akyltist) | |
3 | ; Program Palitra (c) Sergei Steshin (Akyltist) | |
4 | ;----------------------------------------------------------------------------------------------------| |
4 | ;----------------------------------------------------------------------------------------------------| |
5 | ;; Charset:WIN-1251 Font:Courier New Size:9pt | |
5 | ;; Charset:DOS-866 Font:Courier New Size:9pt | |
6 | ;..................................................................................................... |
6 | ;..................................................................................................... |
7 | ;; compiler: FASM 1.69.31 | |
7 | ;; compiler: FASM 1.69.31 | |
8 | ;; version: 0.3.0 | |
8 | ;; version: 0.3.0 | |
9 | ;; last update: 08/11/2012 | |
9 | ;; last update: 08/11/2012 | |
10 | ;; e-mail: dr.steshin@gmail.com | |
10 | ;; e-mail: dr.steshin@gmail.com | |
11 | ;..................................................................................................... |
11 | ;..................................................................................................... |
12 | ;; History: | |
12 | ;; History: | |
13 | ;; 0.1.0 - Ïåðâàÿ âåðñèÿ ïðîãðàììû. | |
13 | ;; 0.1.0 - ¥à¢ ï ¢¥àá¨ï ¯à®£à ¬¬ë. | |
14 | ;; 0.2.0 - Èñïðàâëåíî ïîïàäàíèå â ñåòêó, áåðåòñÿ áëèæàéøèé ïî äèàãîíàëè ïèêñåëü. | |
14 | ;; 0.2.0 - á¯à ¢«¥® ¯®¯ ¤ ¨¥ ¢ á¥âªã, ¡¥à¥âáï ¡«¨¦ ©è¨© ¯® ¤¨ £® «¨ ¯¨ªá¥«ì. | |
15 | ;; - Äîáàâëåíû ïîëçóíêè, äëÿ ðåãóëèðîâàíèÿ rgb ñîñòàâëÿþùèõ öâåòà è âûâîä ýòèõ ñîñòàâëÿþùèõ. | |
15 | ;; - ®¡ ¢«¥ë ¯®«§ãª¨, ¤«ï ॣ㫨஢ ¨ï rgb á®áâ ¢«ïîé¨å 梥⠨ ¢ë¢®¤ íâ¨å á®áâ ¢«ïîé¨å. | |
16 | ;; - Óáðàí âûâîä öâåòà â áèíàðíîì âèäå (ïîêà çà íå íàäîáíîñòüþ è íå àêòóàëüíîñòüþ). | |
16 | ;; - ¡à ¢ë¢®¤ 梥⠢ ¡¨ ஬ ¢¨¤¥ (¯®ª § ¥ ¤®¡®áâìî ¨ ¥ ªâã «ì®áâìî). | |
17 | ;; - Ìåëêàÿ êîñìåòèêà. | |
17 | ;; - ¥«ª ï ª®á¬¥â¨ª . | |
18 | ;; 0.3.0 - Äîáàâëåíî ïåðåêëþ÷åíèå âèäîâ öâåòîâûõ ñõåì (êíîïêà NEXT) | |
18 | ;; 0.3.0 - ®¡ ¢«¥® ¯¥à¥ª«î票¥ ¢¨¤®¢ 梥⮢ëå á奬 (ª®¯ª NEXT) | |
19 | ;; - Óëó÷øåíû ïîëçóíêè, ïðîèçâîäèòñÿ îáðàáîòêà íàæàòèÿ ðÿäîì ñ ïîëçóíêîì. | |
19 | ;; - «ãçè¥ë ¯®«§ãª¨, ¯à®¨§¢®¤¨âáï ®¡à ¡®âª ¦ â¨ï à冷¬ á ¯®«§ãª®¬. | |
20 | ;; - ×èñëî ñåòîê â öâåòîâîé ñõåìå óìåíüøåíî ñ 6 äî 4 (êðàòíîñòü 256, èíà÷å äóáëèðîâàíèå öâåòà).| |
20 | ;; - ¨á«® á¥â®ª ¢ 梥⮢®© á奬¥ 㬥ì襮 á 6 ¤® 4 (ªà â®áâì 256, ¨ ç¥ ¤ã¡«¨à®¢ ¨¥ 梥â ).| |
21 | ;; - Ìåëêàÿ êîñìåòèêà. | |
21 | ;; - ¥«ª ï ª®á¬¥â¨ª . | |
22 | ;; 0.4.0 - Äîáàâëåíî ïåðåêëþ÷åíèå ìåæäó äâóìÿ öâåòàìè | |
22 | ;; 0.4.0 - ®¡ ¢«¥® ¯¥à¥ª«î票¥ ¬¥¦¤ã ¤¢ã¬ï 梥⠬¨ | |
23 | ;; - Äîáàâëåí ïîëçóíîê ðåãóëèðîâàíèÿ ïðîçðà÷íîñòè (áåç âèçóàëèçàöèè). | |
23 | ;; - ®¡ ¢«¥ ¯®«§ã®ª ॣ㫨஢ ¨ï ¯à®§à ç®á⨠(¡¥§ ¢¨§ã «¨§ 樨). | |
24 | ;; - Äîáàâëåíî âûðàâíèâàíèå çíà÷åíèé rgba ïî öåíòðó, â çàâèñèìîñòè îò äëèííû. | |
24 | ;; - ®¡ ¢«¥® ¢ëà ¢¨¢ ¨¥ § 票© rgba ¯® æ¥âàã, ¢ § ¢¨á¨¬®á⨠®â ¤«¨ë. | |
25 | ;; - Êîñìåòè÷åñêèå ïðàâêè. | |
25 | ;; - ®á¬¥â¨ç¥áª¨¥ ¯à ¢ª¨. | |
26 | ;; - Íåáîëüøàÿ îïòèìèçàöèÿ. | |
26 | ;; - ¥¡®«ìè ï ®¯â¨¬¨§ æ¨ï. | |
- | 27 | ;; 0.5.0 - ®¡ ¢«¥ ª®¯ª ᬥë ä® à ¡®ç¥£® á⮫ (®â Leency). | |
|
- | 28 | ;; - ®¡ ¢«¥® ¨§¬¥¥¨¥ ä® à ¡®ç¥£® á⮫ £à ¤¨¥â®© § «¨¢ª®©. | |
|
- | 29 | ;; - ®á¬¥â¨ç¥áª¨¥ ¯à ¢ª¨. | |
|
- | 30 | ;; - ¥¡®«ìè ï ¤¥®¯â¨¬¨§ æ¨ï. | |
|
27 | ;..................................................................................................... |
31 | ;..................................................................................................... |
28 | ;; All rights reserved. | |
32 | ;; All rights reserved. | |
29 | ;; | |
33 | ;; | |
30 | ;; Redistribution and use in source and binary forms, with or without modification, are permitted | |
34 | ;; Redistribution and use in source and binary forms, with or without modification, are permitted | |
31 | ;; provided that the following conditions are met: | |
35 | ;; provided that the following conditions are met: | |
Line 49... | Line 53... | ||
49 | ;....................................................................................................| |
53 | ;....................................................................................................| |
Line 50... | Line 54... | ||
50 | 54 | ||
51 | 55 | ||
52 | ;#___________________________________________________________________________________________________ |
56 | ;#___________________________________________________________________________________________________ |
53 | ;****************************************************************************************************| |
57 | ;****************************************************************************************************| |
54 | ; ÇÀÃÎËÎÂÎÊ ÈÑÏÎËÍßÅÌÎÃÎ ÔÀÉËÀ ÏÐÈËÎÆÅÍÈß ÄËß ÊÎËÈÁÐÈ ÎÑ | |
58 | ; | |
55 | ;----------------------------------------------------------------------------------------------------/ |
59 | ;----------------------------------------------------------------------------------------------------/ |
Line 56... | Line 60... | ||
56 | use32 |
60 | use32 |
57 | org 0x0 |
61 | org 0x0 |
58 | 62 | ||
59 | db 'MENUET01' |
63 | db 'MENUET01' |
60 | dd 0x01 |
64 | dd 0x01 |
61 | dd START |
65 | dd START |
62 | dd I_END |
66 | dd I_END |
63 | dd 0x1000 |
67 | dd 0x100000 |
Line 64... | Line 68... | ||
64 | dd 0x1000 |
68 | dd 0x1000 |
65 | dd 0x0 |
69 | dd 0x0 |
66 | dd 0x0 |
70 | dd 0x0 |
67 | 71 | ||
68 | include '../../../macros.inc' |
72 | include '..\..\..\macros.inc' |
Line 69... | Line 73... | ||
69 | WIN_W equ 271 ; øèðèíà îêíà |
73 | WIN_W equ 295 ; è¨à¨ ®ª |
70 | WIN_H equ 192 ; âûñîòà îêíà |
74 | WIN_H equ 195 ; ¢ëá®â ®ª |
71 | WIN_X equ 250 ; êîîðäèíàòà õ îêíà |
75 | WIN_X equ 250 ; ª®®à¤¨ â å ®ª |
72 | WIN_Y equ 190 ; êîîðäèíàòà ó îêíà |
76 | WIN_Y equ 190 ; ª®®à¤¨ â ã ®ª |
73 | 77 | ||
74 | START: |
78 | START: |
75 | ;#___________________________________________________________________________________________________ |
79 | ;#___________________________________________________________________________________________________ |
76 | ;****************************************************************************************************| |
80 | ;****************************************************************************************************| |
77 | ; ÎÑÍÎÂÍÎÉ ÖÈÊË ÏÐÎÃÐÀÌÌÛ - ÎÁÐÀÁÎÒÊÀ ÑÎÁÛÒÈÉ | |
81 | ; - | |
78 | ;----------------------------------------------------------------------------------------------------/ |
82 | ;----------------------------------------------------------------------------------------------------/ |
79 | red: |
83 | red: |
80 | call draw_window ; âûçûâàåì ïåðåðèñîâêó îêíà ïðèëîæåíèÿ |
84 | call draw_main ; ¢ë§ë¢ ¥¬ ¯¥à¥à¨á®¢ªã ®ª ¯à¨«®¦¥¨ï |
81 | still: |
85 | still: |
82 | mcall 10 ; ôóíêöèÿ 10 - æäàòü ñîáûòèÿ |
86 | mcall 10 ; äãªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï |
83 | cmp eax,1 ; ïåðåðèñîâàòü îêíî ? |
87 | cmp eax,1 ; ¯¥à¥à¨á®¢ âì ®ª® ? |
84 | je red ; åñëè äà - íà ìåòêó red |
88 | je red ; ¥á«¨ ¤ - ¬¥âªã red |
85 | cmp eax,2 ; íàæàòà êëàâèøà ? |
89 | cmp eax,2 ; ¦ â ª« ¢¨è ? |
Line 86... | Line -... | ||
86 | je key ; åñëè äà - íà key |
- | |
87 | cmp eax,3 ; íàæàòà êíîïêà ? |
90 | je key ; ¥á«¨ ¤ - key |
88 | je button ; åñëè äà - íà button |
91 | cmp eax,3 ; ¦ â ª®¯ª ? |
89 | jmp still ; åñëè äðóãîå ñîáûòèå - â íà÷àëî öèêëà |
92 | je button ; ¥á«¨ ¤ - button |
90 | ;end_still |
93 | jmp still ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ç «® 横« |
Line 91... | Line 94... | ||
91 | 94 | ;end_still |
|
92 | 95 | ||
93 | key: ; íàæàòà êëàâèøà íà êëàâèàòóðå |
96 | key: ; ¦ â ª« ¢¨è ª« ¢¨ âãॠ|
94 | mcall 2 ; ôóíêöèÿ 2 - ñ÷èòàòü êîä ñèìâîëà (â ah) (òóò â ïðèíöèïå íå íóæíà) |
97 | mcall 2 ; äãªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®« (¢ ah) (âãâ ¢ ¯à¨æ¨¯¥ ¥ 㦠) |
95 | jmp still ; âåðíóòüñÿ ê íà÷àëó öèêëà |
98 | jmp still ; ¢¥àãâìáï ª ç «ã 横« |
96 | ;end_key |
99 | ;end_key |
97 | 100 | ||
98 | button: |
101 | button: |
- | 102 | mcall 17 ; 17 - ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨ |
|
99 | mcall 17 ; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè |
103 | cmp ah, 1 ; ¥á«¨ ¦ â ª®¯ª á ®¬¥à®¬ 1, |
100 | cmp ah, 1 ; åñëè íàæàòà êíîïêà ñ íîìåðîì 1, |
104 | jz bexit ; ¢ë室¨¬ |
101 | jz bexit ; âûõîäèì |
105 | ;®¡à ¡®âª ª®¯ª¨ Next |
102 | ;îáðàáîòêà êíîïêè Next |
106 | cmp ah, 12 ; ¥á«¨ ¦ â ª®¯ª NEXT |
103 | cmp ah, 12 ; åñëè íàæàòà êíîïêà NEXT |
107 | jne next_bg ; ¢ë室¨¬ |
104 | jne set_bg ; âûõîäèì |
108 | inc [pnext] ; 㢥«¨ç¨¢ ¥¬ ¯à¨ ¦ ⨨ ®¬¥à ¯ «¨âàë |
105 | inc [pnext] ; óâåëè÷èâàåì ïðè íàæàòèè íîìåð ïàëèòðû |
109 | mov [renmode],0 ; ¢ª«îç ¥¬ æ¢¥â®¢ë¥ á奬ë |
106 | mov eax,[pnext] ; çàíîñèì çíà÷åíèå â åàõ |
110 | mov eax,[pnext] ; § ®á¨¬ § 票¥ ¢ ¥ å |
107 | cmp al,6 ; ñðàâíèâàåì ñ çàÿâëåííûì êîëè÷åñòâîì ïàëèòð |
111 | cmp al,6 ; áà ¢¨¢ ¥¬ á § ¥ë¬ ª®«¨ç¥á⢮¬ ¯ «¨âà |
108 | jne next_redraw ; åñëè íå áîëüøå ìàêñèìóìà òî íà âûçîâ îòðèñîâêè |
112 | jne next_redraw ; ¥á«¨ ¥ ¡®«ìè¥ ¬ ªá¨¬ã¬ â® ¢ë§®¢ ®âà¨á®¢ª¨ |
109 | xor eax,eax ; èíà÷å çàíóëÿåì ïàëèòðó íà default |
113 | xor eax,eax ; ¨ ç¥ § ã«ï¥¬ ¯ «¨âàã default |
- | 114 | mov [pnext],eax ; ¨ § ¯®¬¨ ¥¬ çâ® á¡à®á¨«¨ ¯ «¨âàã default |
|
- | 115 | next_redraw: |
|
110 | mov [pnext],eax ; è çàïîìèíàåì ÷òî ñáðîñèëè ïàëèòðó íà default |
116 | call draw_palitra ; |
111 | next_redraw: |
117 | jmp still ; 室¨¬ ®¦¨¤ ¨¥ ¤à㣮£® ᮡëâ¨ï |
- | 118 | next_bg: |
|
- | 119 | cmp ah, 14 ; ®¯ª BACKGROUND |
|
112 | call draw_palitra ; ÐÈÑÓÅÌ ÏÀËÈÒÐÓ |
120 | jne circle_bg ; ¥á«¨ ¥ ¦ â â® ¢ë室¨¬ |
113 | jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
- | |
114 | set_bg: |
121 | call set_background ; ¨ ç¥ ãáâ ¢«¨¢ ¥¬ ä® |
115 | cmp ah, 14 ; åñëè íàæàòà êíîïêà BACKGROUND |
122 | jmp still ; ¨ ®¦¨¤ ¨¥ ᮡëâ¨ï |
116 | jne next_end ; âûõîäèì |
123 | circle_bg: |
117 | mcall 15,4,1 |
124 | cmp ah, 15 ; ®¯ª à㣮¢ ï ¯ «¨âà |
118 | mcall 15,1,1,1 |
125 | jne next_end ; ¥á«¨ ¥ ¦ â â® ¢ë室¨¬ |
119 | mcall 15,5,color,0,3*1*1 |
126 | ;mov [renmode],2 ; ¢ª«îç ¥¬ ®âà¨á®¢ªã ªà㣮¢®© ¯ «¨âàë |
120 | mcall 15,3 |
127 | call draw_palitra ; |
121 | jmp still |
128 | jmp still ; ¨ ®¦¨¤ ¨¥ ᮡëâ¨ï |
122 | next_end: |
129 | next_end: |
- | 130 | cmp ah,13 ; COLOR SWAP |
|
123 | cmp ah,13 ; COLOR SWAP |
131 | jne color_swap_end |
124 | jne color_swap_end |
132 | push [color2] |
125 | push [color2] |
133 | push [color] |
126 | push [color] |
134 | pop [color2] |
127 | pop [color2] |
135 | pop [color] |
128 | pop [color] |
136 | call draw_result |
129 | call draw_result |
137 | jmp still ; ã室¨¬ ®¦¨¤ ¨¥ ¤à㣮£® ᮡëâ¨ï |
130 | color_swap_end: |
138 | color_swap_end: |
131 | cmp ah, 7 ; Ïðîâåðÿåì íàæàòà êíîïêà ñ ID=7 |
139 | cmp ah, 7 ; ஢¥à塞 ¦ â ª®¯ª á ID=7 |
132 | jne color_button ; Åñëè íå íàæàòà, òî èä¸ì äàëüøå |
140 | jne color_button ; ᫨ ¥ ¦ â , â® ¨¤ñ¬ ¤ «ìè¥ |
133 | call mouse_get ; Èíà÷å âêëþ÷àåì îáðàáîò÷èê ìûøè, ÷òîáû ñ÷èòàòü çíà÷åíèå öâåòà ñ ïàëèòðû |
141 | call mouse_get ; ç¥ ¢ª«îç ¥¬ ®¡à ¡®â稪 ¬ëè¨, ç⮡ë áç¨â âì § 票¥ 梥â á ¯ «¨âàë |
134 | jmp still ; È óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
142 | jmp still ; ã室¨¬ ®¦¨¤ ¨¥ ¤à㣮£® ᮡëâ¨ï |
135 | color_button: ; ÐÀÑ×¨Ò êîîðäèíàò äëÿ ïîëçóíêîâ RGBA |
143 | color_button: ; 𠪮®à¤¨ â ¤«ï ¯®«§ãª®¢ RGBA |
136 | push eax ; çàïîìèíàåì åàõ |
144 | push eax ; § ¯®¬¨ ¥¬ ¥ å |
137 | call mouse_local ; ïîëó÷àåì ëîêàëüíûå êîîðäèíàòû |
145 | call mouse_local ; ¯®«ãç ¥¬ «®ª «ìë¥ ª®®à¤¨ âë |
138 | mov ebx,137 ; íèæíÿÿ ãðàíèöà ïîëçóíêà ïî Ó |
146 | mov ebx,137 ; ¨¦ïï £à ¨æ ¯®«§ãª ¯® |
139 | mov ecx,[mouse_y] ; çàíèñèì â åñõ çíà÷åíèå êóðñîðà ïî Ó |
147 | mov ecx,[mouse_y] ; § ¨á¨¬ ¢ ¥áå § 票¥ ªãàá®à ¯® |
140 | sub ebx,ecx ; íàõîäèì ðàçíîñòü (ò.å. êóäà ñìåùàåòñÿ ïîëçóíîê) |
148 | sub ebx,ecx ; 室¨¬ à §®áâì (â.¥. ªã¤ á¬¥é ¥âáï ¯®«§ã®ª) |
141 | mov ecx,3 ; çàíîñèì â åñõ öèôðó 3 (256/3=85, ãäå 85-âûñîòà ïîëçóíêîâ) |
149 | mov ecx,3 ; § ®á¨¬ ¢ ¥áå æ¨äàã 3 (256/3=85, £¤¥ 85-¢ëá®â ¯®«§ãª®¢) |
142 | imul ecx,ebx ; íàõîäèì èñòèííûé ïàðàìåòð öâåòà ñ ó÷¸òîì ìàñøòàáà ïîëçóíêà---+ |
150 | imul ecx,ebx ; 室¨¬ ¨áâ¨ë© ¯ à ¬¥âà 梥â á ãçñ⮬ ¬ áèâ ¡ ¯®«§ãª ---+ |
143 | pop eax ; âîññòàíàâëèâàåì åàõ : |
151 | pop eax ; ¢®ááâ ¢«¨¢ ¥¬ ¥ å : |
144 | ;red_button: ; Êðàñíûé Òðåêáàð : |
152 | ;red_button: ; à áë© à¥ª¡ à : |
145 | cmp ah, 8 ; ID=8 : |
153 | cmp ah, 8 ; ID=8 : |
146 | jne green_button ; åñëè íåò, òî ïðîâåðÿåì çåë¸íûé òðåêáàð : |
154 | jne green_button ; ¥á«¨ ¥â, â® ¯à®¢¥à塞 §¥«ñë© â४¡ à : |
147 | mov [cred],cl ; èíà÷å ïðèñâàèâàåì çíà÷åíèå, êðàñíîìó öâåòó ñïåêòðà <------+ |
155 | mov [cred],cl ; ¨ ç¥ ¯à¨á¢ ¨¢ ¥¬ § 票¥, ªà ᮬã 梥âã ᯥªâà <------+ |
148 | call set_spectr ; óñòàíàâëèâàåì ñïåêòð |
156 | call set_spectr ; ãáâ ¢«¨¢ ¥¬ ᯥªâà |
149 | jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
157 | jmp still ; 室¨¬ ®¦¨¤ ¨¥ ¤à㣮£® ᮡëâ¨ï |
150 | green_button: |
158 | green_button: |
151 | cmp ah, 9 |
159 | cmp ah, 9 |
152 | jne blue_button |
160 | jne blue_button |
153 | mov [cgreen],cl |
161 | mov [cgreen],cl |
154 | call set_spectr |
162 | call set_spectr |
155 | jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
163 | jmp still ; 室¨¬ ®¦¨¤ ¨¥ ¤à㣮£® ᮡëâ¨ï |
156 | blue_button: |
164 | blue_button: |
157 | cmp ah, 10 |
165 | cmp ah, 10 |
158 | jne alpha_button |
166 | jne alpha_button |
159 | mov [cblue],cl |
167 | mov [cblue],cl |
160 | call set_spectr |
168 | call set_spectr |
161 | jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
169 | jmp still ; 室¨¬ ®¦¨¤ ¨¥ ¤à㣮£® ᮡëâ¨ï |
162 | alpha_button: |
170 | alpha_button: |
163 | cmp ah, 11 |
171 | cmp ah, 11 |
Line 164... | Line 172... | ||
164 | jne still |
172 | jne still |
165 | mov [calpha],cl |
173 | mov [calpha],cl |
166 | call set_spectr |
174 | call set_spectr |
167 | jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
175 | jmp still ; 室¨¬ ®¦¨¤ ¨¥ ¤à㣮£® ᮡëâ¨ï |
168 | bexit: |
176 | bexit: |
169 | mcall -1 ; èíà÷å êîíåö ïðîãðàììû |
177 | mcall -1 ; ¨ ç¥ ª®¥æ ¯à®£à ¬¬ë |
170 | ;end_button |
178 | ;end_button |
171 | 179 | ||
172 | ;#___________________________________________________________________________________________________ |
180 | ;#___________________________________________________________________________________________________ |
173 | ;****************************************************************************************************| |
181 | ;****************************************************************************************************| |
174 | ; ÃËÀÂÍÛÉ ÌÎÄÓËÜ ÎÒÐÈÑÎÂÊÈ ÎÊÍÀ È ÝËÅÌÅÍÒÎÂ ÏÐÈËÎÆÅÍÈß | |
182 | ; | |
175 | ;----------------------------------------------------------------------------------------------------/ |
183 | ;----------------------------------------------------------------------------------------------------/ |
176 | draw_window: |
184 | draw_main: |
177 | mov eax,12 ; ôóíêöèÿ 12: îçíà÷àåò, ÷òî áóäåò ðèñîâàòüñÿ îêíî |
185 | mov eax,12 ; äãªæ¨ï 12: ®§ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª® |
178 | mov ebx,1 ; 1,íà÷àëî ðèñîâàíèÿ |
186 | mov ebx,1 ; 1, ç «® à¨á®¢ ¨ï |
179 | int 0x40 ; Ïðåðûâàíèå |
187 | int 0x40 ; à¥àë¢ ¨¥ |
180 | 188 | ||
181 | mov eax,48 ; Ôóíêöèÿ 48 - ñòèëè îòîáðàæåíèÿ îêîí |
189 | mov eax,48 ; ãªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥¨ï ®ª® |
182 | mov ebx,3 ; Ïîäôóíêöèÿ 3 - ïîëó÷èòü ñòàíäàðòíûå öâåòà îêîí. |
190 | mov ebx,3 ; ®¤äãªæ¨ï 3 - ¯®«ãç¨âì áâ ¤ àâë¥ æ¢¥â ®ª®. |
183 | mov ecx,sc ; Óêàçàòåëü íà áóôåð ðàçìåðîì edx áàéò, ïîä ñòðóêòóðó |
191 | mov ecx,sc ; ª § â¥«ì ¡ãä¥à à §¬¥à®¬ edx ¡ ©â, ¯®¤ áâàãªâãàã |
184 | mov edx,sizeof.system_colors ; Ðàçìåð òàáëèöû öâåòîâ (äîëæåí áûòü 40 áàéò) |
192 | mov edx,sizeof.system_colors ; §¬¥à â ¡«¨æë 梥⮢ (¤®«¦¥ ¡ëâì 40 ¡ ©â) |
185 | int 0x40 ; Ïðåðûâàíèå |
193 | int 0x40 ; à¥àë¢ ¨¥ |
186 | 194 | ||
187 | mov eax,48 ; Ôóíêöèÿ 48 - ñòèëè îòîáðàæåíèÿ îêîí. |
195 | mov eax,48 ; ãªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥¨ï ®ª®. |
188 | mov ebx,4 ; Ïîäôóíêöèÿ 4 - âîçâðàùàåò eax = âûñîòà ñêèíà. |
196 | mov ebx,4 ; ®¤äãªæ¨ï 4 - ¢®§¢à é ¥â eax = ¢ëá®â ᪨ . |
189 | int 0x40 ; Ïðåðûâàíèå |
197 | int 0x40 ; à¥àë¢ ¨¥ |
190 | mov ecx,eax ; Çàïîìèíàåì âûñîòó ñêèíà |
198 | mov ecx,eax ; ¯®¬¨ ¥¬ ¢ëá®âã ᪨ |
- | 199 | ||
191 | 200 | xor eax,eax ; ç¨é ¥¬ eax (mov eax,0) (ãªæ¨ï 0) |
|
192 | xor eax,eax ; Î÷èùàåì eax (mov eax,0) (Ôóíêöèÿ 0) |
201 | mov ebx,WIN_X shl 16+WIN_W ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x] |
193 | mov ebx,WIN_X shl 16+WIN_W ; [êîîðäèíàòà ïî îñè x]*65536 + [ðàçìåð ïî îñè x] |
202 | add ecx,WIN_Y shl 16+WIN_H ; ëá®â ᪨ + [ª®®à¤¨ â ¯® y]*65536 + [à §¬¥à ¯® y] (168 ¤«ï ¢¥àᨨ 0.2) |
194 | add ecx,WIN_Y shl 16+WIN_H ; Âûñîòà ñêèíà + [êîîðäèíàòà ïî y]*65536 + [ðàçìåð ïî y] (168 äëÿ âåðñèè 0.2) |
203 | mov edx,[sc.work] ; ¨¤¨¬® áâ¨«ì ®ª ¯® ¤¥ä®«âã |
195 | mov edx,[sc.work] ; Âèäèìî ñòèëü îêíà ïî äåôîëòó |
204 | or edx,0x34000000 ; «¨ ®ª® ᮠ᪨®¬ 䨪á¨à®¢ ëå à §¬¥à®¢ |
196 | or edx,0x34000000 ; Èëè îêíî ñî ñêèíîì ôèêñèðîâàííûõ ðàçìåðîâ |
205 | mov edi,title ; £®«®¢®ª ®ª |
197 | mov edi,title ; Çàãîëîâîê îêíà |
206 | int 0x40 ; à¥àë¢ ¨¥ |
198 | int 0x40 ; Ïðåðûâàíèå |
207 | |
199 | 208 | ||
Line 200... | Line 209... | ||
200 | call draw_palitra ; ÐÈÑÓÅÌ ÏÀËÈÒÐÓ |
209 | call draw_palitra ; |
201 | call draw_result ; ÐÈÑÓÅÌ ÐÅÇÓËÜÒÀÒ |
210 | call draw_result ; |
202 | 211 | ||
203 | mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó |
212 | mov eax,8 ; ãªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª®¯ªã |
204 | mov ebx,110 shl 16+147 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
213 | mov ebx,110 shl 16+147 ; ç «ìë¥ ª®®à¤¨ âë ¯® å [ª-â x]*65536 + [à §¬¥à] |
205 | mov ecx,9 shl 16+147 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
214 | mov ecx,9 shl 16+147 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
206 | mov edx,0x60000007 ; Íà÷àëüíîå ID êíîïîê - 0xXYnnnnnn |
215 | mov edx,0x60000007 ; ç «ì®¥ ID ª®¯®ª - 0xXYnnnnnn |
207 | int 0x40 |
216 | int 0x40 |
208 | 217 | ||
209 | mov ebx,13 shl 16+12 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
218 | mov ebx,13 shl 16+12 ; ç «ìë¥ ª®®à¤¨ âë ¯® å [ª-â x]*65536 + [à §¬¥à] |
210 | mov edx,0x60000008 ; ID = 8 |
219 | mov edx,0x60000008 ; ID = 8 |
211 | mov ecx,51 shl 16+85 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
220 | mov ecx,51 shl 16+85 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
212 | int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì red |
221 | int 0x40 ; ¨á㥬 ¥¢¨¤¨¬ãî ª®¯ªã ¯®¤ á« ©¤¥à®¬ red |
Line 213... | Line 222... | ||
213 | add ebx,23 shl 16 ; Äîáàâëÿåì |
222 | add ebx,23 shl 16 ; ®¡ ¢«ï¥¬ |
214 | inc edx ; ID = 9 |
223 | inc edx ; ID = 9 |
215 | int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì green |
224 | int 0x40 ; ¨á㥬 ¥¢¨¤¨¬ãî ª®¯ªã ¯®¤ á« ©¤¥à®¬ green |
216 | add ebx,23 shl 16 ; Äîáàâëÿåì |
225 | add ebx,23 shl 16 ; ®¡ ¢«ï¥¬ |
217 | inc edx ; ID = 10 |
226 | inc edx ; ID = 10 |
Line 218... | Line -... | ||
218 | int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì blue |
- | |
219 | add ebx,23 shl 16 ; Äîáàâëÿåì |
227 | int 0x40 ; ¨á㥬 ¥¢¨¤¨¬ãî ª®¯ªã ¯®¤ á« ©¤¥à®¬ blue |
220 | inc edx ; ID = 11 |
228 | add ebx,23 shl 16 ; ®¡ ¢«ï¥¬ |
Line 221... | Line -... | ||
221 | int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì alpha |
- | |
222 | - | ||
223 | mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó (ÑÌÅÍÀ ÖÂÅÒÀ) |
- | |
224 | mov ebx,11 shl 16+20 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
- | |
225 | mov ecx,12 shl 16+20 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
- | |
226 | mov edx,0x6000000D ; ID = 13 |
- | |
227 | int 0x40 |
- | |
228 | - | ||
229 | mov eax,12 ; ôóíêöèÿ 12: îçíà÷àåò, ÷òî áóäåò ðèñîâàòüñÿ îêíî |
- | |
230 | mov ebx,2 ; 2 - êîíåö ðèñîâàíèÿ |
- | |
231 | int 0x40 ; Ïðåðûâàíèå |
- | |
232 | - | ||
233 | ;................................................................................................. |
- | |
234 | ; Îòðèñîâêà íèæíåé ïàíåëè |
- | |
235 | ;................................................................................................. |
- | |
236 | mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó |
- | |
237 | mov ebx,4 shl 16+64 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
- | |
238 | mov ecx,169 shl 16+16 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
- | |
239 | mov edx,12 ; ID = 12 |
- | |
240 | mov esi,[sc.work_button] ; öâåò |
- | |
241 | int 0x40 |
- | |
242 | - | ||
243 | mov ebx,80 shl 16+102 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
- | |
244 | mov edx,14 ; BACKGROUND button |
- | |
245 | int 0x40 |
- | |
246 | - | ||
247 | - | ||
248 | mov eax,4 ; 4 - âûâåñòè ñòðîêó òåêñòà â îêíî |
- | |
249 | mov ebx,25 shl 16+174 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y] |
- | |
250 | mov ecx,[sc.work_button_text] ; 0xX0RRGGBB (RR, GG, BB çàäàþò öâåò òåêñòà) |
- | |
251 | mov edx,bnext ; óêàçàòåëü íà íà÷àëî ñòðîêè |
- | |
252 | ;mov esi,1 ; âûâîäèòü esi ñèìâîëîâ |
- | |
253 | int 0x40 |
- | |
Line -... | Line 229... | ||
- | 229 | inc edx ; ID = 11 |
|
- | 230 | int 0x40 ; ¨á㥬 ¥¢¨¤¨¬ãî ª®¯ªã ¯®¤ á« ©¤¥à®¬ alpha |
|
- | 231 | ||
- | 232 | mov eax,8 ; ãªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª®¯ªã ( ) |
|
Line 254... | Line 233... | ||
254 | 233 | mov ebx,11 shl 16+20 ; ç «ìë¥ ª®®à¤¨ âë ¯® å [ª-â x]*65536 + [à §¬¥à] |
|
255 | ;mov ebx,247 shl 16+64 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
234 | mov ecx,12 shl 16+20 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
256 | ;mov edx,12 ; ID = 12 |
235 | mov edx,0x6000000D ; ID = 13 |
257 | ;int 0x40 |
236 | int 0x40 |
Line -... | Line 237... | ||
- | 237 | ||
- | 238 | call draw_bottom_panel |
|
- | 239 | call draw_left_panel |
|
- | 240 | ||
- | 241 | ||
- | 242 | mov eax,12 ; äãªæ¨ï 12: ®§ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª® |
|
- | 243 | mov ebx,2 ; 2 - ª®¥æ à¨á®¢ ¨ï |
|
- | 244 | int 0x40 ; à¥àë¢ ¨¥ |
|
- | 245 | ret |
|
- | 246 | ||
- | 247 | ;#___________________________________________________________________________________________________ |
|
- | 248 | ;****************************************************************************************************| |
|
- | 249 | ; | |
|
- | 250 | ;----------------------------------------------------------------------------------------------------/ |
|
- | 251 | ||
- | 252 | ||
- | 253 | ;------------------------------------------------------------------------------------------------+ |
|
- | 254 | draw_left_panel: ; âà¨á®¢ª ¡®ª®¢®© ¯ ¥«¨ |
|
- | 255 | ;................................................................................................. |
|
- | 256 | mov eax,8 ; button_next_colorsheme |
|
- | 257 | mov ebx,266 shl 16+16 ; [x] + [size] |
|
- | 258 | mov ecx,9 shl 16+16 ; [y] + [size] |
|
- | 259 | mov edx,0x6000000C ; ID = 12 |
|
- | 260 | mov esi,[sc.work_button] ; RGB |
|
- | 261 | int 0x40 ; call |
|
- | 262 | mov eax,13 ; draw rect |
|
- | 263 | mov ebx,266 shl 16+16 ; [x] + [size] |
|
- | 264 | mov ecx,9 shl 16+16 ; [y] + [size] |
|
- | 265 | mov edx,0x666666 ; RGB |
|
- | 266 | push esi ; backup esi |
|
- | 267 | mov esi,8 ; counter=8 |
|
- | 268 | draw_lpanel: ; loop label |
|
- | 269 | int 0x40 ; call draw black rect |
|
- | 270 | add ecx,19 shl 16 ; move rect |
|
- | 271 | dec esi ; decrement counter |
|
- | 272 | cmp esi,0 ; if counter!=zero |
|
- | 273 | jne draw_lpanel ; then goto label |
|
- | 274 | mov esi,8 ; else counter=8 |
|
- | 275 | mov ebx,267 shl 16+14 ; [x] + [size] |
|
- | 276 | mov ecx,10 shl 16+14 ; [y] + [size] |
|
- | 277 | mov edx,0xF3F3F3 ; RGB |
|
- | 278 | draw_lpanel2: ; 2 loop label |
|
- | 279 | int 0x40 ; call draw white rect |
|
- | 280 | add ecx,19 shl 16 ; move rect |
|
- | 281 | dec esi ; decrement counter |
|
- | 282 | cmp esi,0 ; if counter!=0 |
|
- | 283 | jne draw_lpanel2 ; then goto label2 |
|
- | 284 | pop esi ; restore esi |
|
- | 285 | ; draw_left_arrow for button_next_colorsheme |
|
- | 286 | mov eax,4 ; Write string |
|
- | 287 | mov ebx,272 shl 16+13 ; [x] + [y] |
|
- | 288 | mov ecx,0x0 ; RGB |
|
- | 289 | mov edx,larrow ; string pointer |
|
- | 290 | mov esi,1 ; count symbol |
|
- | 291 | int 0x40 ; call |
|
- | 292 | mov eax,38 ; draw line |
|
- | 293 | mov ebx,270 shl 16+272 ; [start x] + [end x] |
|
- | 294 | mov ecx,16 shl 16+16 ; [start y] + [end y] |
|
- | 295 | mov edx,0x0 ; RGB |
|
- | 296 | int 0x40 ; call |
|
- | 297 | ret ; return |
|
- | 298 | ;................................................................................................. |
|
- | 299 | ||
- | 300 | ||
- | 301 | ;------------------------------------------------------------------------------------------------+ |
|
- | 302 | draw_bottom_panel: ; âà¨á®¢ª ¨¦¥© ¯ ¥«¨ |
|
- | 303 | ;................................................................................................. |
|
- | 304 | mov eax,8 ; draw button |
|
- | 305 | mov ebx,92 shl 16+100 ; [x] + [size] |
|
- | 306 | mov ecx,169 shl 16+16 ; [y] + [size] |
|
- | 307 | mov edx,14 ; ID = 14 |
|
- | 308 | mov esi,[sc.work_button] ; RGB |
|
258 | 309 | int 0x40 ; call |
|
259 | mov eax,38 ; Ôóíêöèÿ 38 - íàðèñîâàòü îòðåçîê. |
310 | mov eax,4 ; Write string |
260 | mov ebx,4 shl 16+257 ;[êîîðäèíàòà íà÷àëà ïî îñè x]*65536 + [êîîðäèíàòà êîíöà ïî îñè x] |
311 | mov ebx,113 shl 16+174 ; [x] + [y] |
261 | mov ecx,163 shl 16+163 ;[êîîðäèíàòà íà÷àëà ïî îñè y]*65536 + [êîîðäèíàòà êîíöà ïî îñè y] |
312 | mov ecx,[sc.work_button_text] ; RGB |
262 | mov edx,0x00666666 ;0x00RRGGBB - öâåò |
313 | mov edx,bground ; string pointer |
263 | int 0x40 |
314 | mov esi,10 ; count symbol |
264 | 315 | int 0x40 ; call |
|
265 | ret ; Âîçâðàùàåì óïðàâëåíèå |
316 | mov eax,38 ; draw line |
266 | 317 | mov ebx,4 shl 16+282 ; [start x] + [end x] |
|
267 | 318 | mov ecx,163 shl 16+163 ; [start y] + [end y] |
|
268 | ;#___________________________________________________________________________________________________ |
319 | mov edx,0x00666666 ; RGB |
269 | ;****************************************************************************************************| |
320 | int 0x40 ; call |
270 | ; ÁËÎÊ ÂÑÏÎÌÎÃÀÒÅËÜÍÛÕ ÏÐÎÖÅÄÓÐ È ÔÓÍÊÖÈÉ ÏÐÈËÎÆÅÍÈß | |
321 | ret ; return |
271 | ;----------------------------------------------------------------------------------------------------/ |
322 | ;................................................................................................. |
272 | 323 | ||
273 | mouse_global: |
324 | mouse_global: |
Line 274... | Line 325... | ||
274 | ;................................................................................................. |
325 | ;................................................................................................. |
275 | ; Ïîëó÷àåì êîîðäèíàòû ìûøè |
326 | ; ®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ |
276 | ;................................................................................................. |
327 | ;................................................................................................. |
277 | mov eax,37 ; Ôóíêöèÿ 37 - ðàáîòà ñ ìûøüþ |
328 | mov eax,37 ; ãªæ¨ï 37 - à ¡®â á ¬ëèìî |
278 | mov ebx,0 ; íàì íóæíû ãëîáàëüíûå êîîðäèíàòû |
329 | mov ebx,0 ; ¬ ã¦ë £«®¡ «ìë¥ ª®®à¤¨ âë |
279 | int 0x40 ; eax = x*65536 + y, (x,y)=êîîðäèíàòû êóðñîðà ìûøè |
330 | int 0x40 ; eax = x*65536 + y, (x,y)=ª®®à¤¨ âë ªãàá®à ¬ëè¨ |
280 | mov ecx,eax ; |
331 | mov ecx,eax ; |
281 | shr ecx,16 ; ecx = x+1 |
332 | shr ecx,16 ; ecx = x+1 |
282 | movzx edx,ax ; edx = y+1 |
333 | movzx edx,ax ; edx = y+1 |
283 | dec ecx ; ecx = x |
334 | dec ecx ; ecx = x |
284 | dec edx ; edx = y |
335 | dec edx ; edx = y |
285 | mov [mouse_x],ecx ; mouse_x = x |
336 | mov [mouse_x],ecx ; mouse_x = x |
286 | mov [mouse_y],edx ; mouse_y = y |
337 | mov [mouse_y],edx ; mouse_y = y |
287 | ret ; Âîçâðàùàåì óïðàâëåíèå |
338 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
288 | ;end_mouse_global |
339 | ;end_mouse_global |
289 | 340 | ||
Line -... | Line 341... | ||
- | 341 | mouse_local: |
|
- | 342 | ;................................................................................................. |
|
- | 343 | ; ®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® ®ª |
|
- | 344 | ;................................................................................................. |
|
- | 345 | mov eax,37 ; ãªæ¨ï 37 - à ¡®â á ¬ëèìî |
|
- | 346 | mov ebx,1 ; ¬ ã¦ë £«®¡ «ìë¥ ª®®à¤¨ âë |
|
- | 347 | int 0x40 ; eax = x*65536 + y, (x,y)=ª®®à¤¨ âë ªãàá®à ¬ëè¨ |
|
- | 348 | mov ecx,eax ; |
|
- | 349 | shr ecx,16 ; ecx = x+1 |
|
- | 350 | movzx edx,ax ; edx = y+1 |
|
- | 351 | dec ecx ; ecx = x |
|
- | 352 | dec edx ; edx = y |
|
- | 353 | mov [mouse_x],ecx ; mouse_x = x |
|
- | 354 | mov [mouse_y],edx ; mouse_y = y |
|
- | 355 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
|
- | 356 | ;end_mouse_local |
|
- | 357 | ||
- | 358 | set_background: |
|
- | 359 | ;................................................................................................. |
|
- | 360 | ; áâ ¢«¨¢ ¥â ä® à ¡®ç¥£® á⮫ |
|
- | 361 | ;................................................................................................. |
|
- | 362 | mov eax,15 ; ãªæ¨ï 15 - à ¡®â á ä®®¢®© £à 䨪®© |
|
- | 363 | mov ebx,4 ; ®¤äãªæ¨ï 4 - ãáâ ®¢¨âì ०¨¬ ®âà¨á®¢ª¨ ä® . |
|
- | 364 | mov ecx,2 ; ¥¦¨¬ ®âà¨á®¢ª¨ - § ¬®áâ¨âì (1) |
|
- | 365 | int 0x40 ; ë§ë¢ ¥¬ |
|
- | 366 | ||
- | 367 | mov eax,15 ; ãªæ¨ï 15 - à ¡®â á ä®®¢®© £à 䨪®© |
|
- | 368 | mov ebx,1 ; ®¤äãªæ¨ï 1 - ãáâ ®¢¨âì à §¬¥à ä®®¢®£® ¨§®¡à ¦¥¨ï. |
|
- | 369 | mov ecx,2 ; ¨à¨ ¨§®¡à ¦¥¨ï |
|
- | 370 | mov edx,2 ; ëá®â ¨§®¡à ¦¥¨ï |
|
- | 371 | int 0x40 ; ë§ë¢ ¥¬ |
|
- | 372 | ||
- | 373 | mov eax,[color] |
|
- | 374 | mov [cm+0],al |
|
- | 375 | mov [cm+9],al |
|
- | 376 | shr eax,8 |
|
- | 377 | mov [cm+1],al |
|
- | 378 | mov [cm+10],al |
|
- | 379 | shr eax,8 |
|
- | 380 | mov [cm+2],al |
|
- | 381 | mov [cm+11],al |
|
- | 382 | ||
- | 383 | mov eax,[color2] |
|
- | 384 | mov [cm+3],al |
|
- | 385 | mov [cm+6],al |
|
- | 386 | shr eax,8 |
|
- | 387 | mov [cm+4],al |
|
- | 388 | mov [cm+7],al |
|
- | 389 | shr eax,8 |
|
290 | mouse_local: |
390 | mov [cm+5],al |
291 | ;................................................................................................. |
391 | mov [cm+8],al |
292 | ; Ïîëó÷àåì êîîðäèíàòû ìûøè îòíîñèòåëüíî îêíà |
392 | |
293 | ;................................................................................................. |
393 | mov eax,15 ; ãªæ¨ï 15 - à ¡®â á ä®®¢®© £à 䨪®© |
294 | mov eax,37 ; Ôóíêöèÿ 37 - ðàáîòà ñ ìûøüþ |
394 | mov ebx,5 ; ®¤äãªæ¨ï 5 - ¯®¬¥áâ¨âì ¡«®ª ¯¨ªá¥«¥© ä®. |
295 | mov ebx,1 ; íàì íóæíû ãëîáàëüíûå êîîðäèíàòû |
395 | mov ecx,cm ; ª § â¥«ì ¤ ë¥ ¢ ä®à¬ ⥠BBGGRRBBGGRR |
296 | int 0x40 ; eax = x*65536 + y, (x,y)=êîîðäèíàòû êóðñîðà ìûøè |
396 | mov edx,0 ; C¬¥é¥¨¥ ¢ ¤ ëå ä®®¢®£® ¨§®¡à ¦¥¨ï |
297 | mov ecx,eax ; |
397 | mov esi,3*4 ; §¬¥à ¤ ëå ¢ ¡ ©â å = 3 * ç¨á«® ¯¨ªá¥«¥© |
298 | shr ecx,16 ; ecx = x+1 |
398 | int 0x40 ; ë§ë¢ ¥¬ |
299 | movzx edx,ax ; edx = y+1 |
399 | |
300 | dec ecx ; ecx = x |
400 | mov eax,15 ; ãªæ¨ï 15 - à ¡®â á ä®®¢®© £à 䨪®© |
301 | dec edx ; edx = y |
401 | mov ebx,3 ; ®¤äãªæ¨ï 3 - ¯¥à¥à¨á®¢ âì ä®. |
302 | mov [mouse_x],ecx ; mouse_x = x |
402 | int 0x40 ; ë§ë¢ ¥¬ |
303 | mov [mouse_y],edx ; mouse_y = y |
403 | |
Line 304... | Line 404... | ||
304 | ret ; Âîçâðàùàåì óïðàâëåíèå |
404 | ret |
305 | ;end_mouse_local |
405 | ;end_set_background |
306 | 406 | ||
307 | desktop_get: |
407 | desktop_get: |
308 | ;................................................................................................. |
408 | ;................................................................................................. |
309 | ; Îïðåäåëÿåì øèðèíó ýêðàíà |
409 | ; ¯à¥¤¥«ï¥¬ è¨à¨ã íªà |
310 | ;................................................................................................. |
410 | ;................................................................................................. |
311 | mov eax,14 ; Îïðåäåëÿåì øèðèíó ýêðàíà (eax = [xsize]*65536 + [ysize]) |
411 | mov eax,14 ; ¯à¥¤¥«ï¥¬ è¨à¨ã íªà (eax = [xsize]*65536 + [ysize]) |
Line 312... | Line 412... | ||
312 | int 0x40 ; xsize = ðàçìåð ïî ãîðèçîíòàëè - 1 |
412 | int 0x40 ; xsize = à §¬¥à ¯® £®à¨§®â «¨ - 1 |
313 | mov ebx,eax ; |
413 | mov ebx,eax ; |
314 | shr ebx,16 ; ebx = xsize-1 |
414 | shr ebx,16 ; ebx = xsize-1 |
315 | ;movzx edx,ax ;; edx = ysize-1 (ëèøíèé êîä) |
415 | ;movzx edx,ax ;; edx = ysize-1 («¨è¨© ª®¤) |
316 | inc ebx ; ebx = xsize |
416 | inc ebx ; ebx = xsize |
317 | ;inc edx ;; edx = ysize (ëèøíèé êîä) |
417 | ;inc edx ;; edx = ysize («¨è¨© ª®¤) |
318 | mov [desctop_w],ebx |
418 | mov [desctop_w],ebx |
319 | ret |
419 | ret |
320 | ;end_desktop_get |
420 | ;end_desktop_get |
321 | 421 | ||
322 | mouse_get: |
422 | mouse_get: |
323 | mov esi,2 ; ÊÎÑÒÛËÜ: ôëàã äëÿ èçáåæàíèÿ çàöèêëèâàíèÿ |
423 | mov esi,2 ; : ä« £ ¤«ï ¨§¡¥¦ ¨ï § 横«¨¢ ¨ï |
324 | call mouse_global |
424 | call mouse_global |
325 | call desktop_get |
425 | call desktop_get |
326 | re_mouse_loop: ; ÊÎÑÒÛËÜ: ìåòêà äëÿ âîçâðàòà åñëè ïîïàëè â ñåòêó |
426 | re_mouse_loop: ; : ¬¥âª ¤«ï ¢®§¢à ⠥᫨ ¯®¯ «¨ ¢ á¥âªã |
327 | mov ebx,[desctop_w] |
427 | mov ebx,[desctop_w] |
328 | imul ebx,[mouse_y] ; ebx = y*xsize |
428 | imul ebx,[mouse_y] ; ebx = y*xsize |
329 | add ebx,[mouse_x] ; ebx = y*xsize+x |
429 | add ebx,[mouse_x] ; ebx = y*xsize+x |
330 | 430 | ||
331 | ;................................................................................................. |
431 | ;................................................................................................. |
332 | ; Áåðåì öâåò ñ ïàëèòðû â ïåðåìåííóþ |
432 | ; ¥à¥¬ 梥â á ¯ «¨âàë ¢ ¯¥à¥¬¥ãî |
333 | ;................................................................................................. |
433 | ;................................................................................................. |
334 | mov eax,35 ; Ôóíêöèÿ âçÿòèÿ öâåòà |
434 | mov eax,35 ; ãªæ¨ï ¢§ïâ¨ï 梥â |
335 | ;mov ebx,ecx ;; ebx = y*xsize+x (ëèøíèé êîä) |
435 | ;mov ebx,ecx ;; ebx = y*xsize+x («¨è¨© ª®¤) |
Line 336... | Line 436... | ||
336 | int 0x40 ; Ïîëó÷àåì öâåò â eax |
436 | int 0x40 ; ®«ãç ¥¬ 梥⠢ eax |
- | 437 | cmp eax,[sc.work] ; à ¢¨¢ ¥¬ á ä®®¬ ¯à¨«®¦¥¨ï |
|
- | 438 | je mouse_err ; ᫨ íâ® ® - â® ¨ç¥£® ¥ ¤¥« ¥¬ |
|
- | 439 | cmp eax,0x222222 ; à ¢¨¢ ¥¬ á 梥⮬ á¥âª¨ |
|
- | 440 | je mouse_err ; ᫨ íâ® ® - â® ¨ç¥£® ¥ ¤¥« ¥¬ |
|
- | 441 | jmp mouse_set ; : ¯àë£ ¥¬ çâ®¡ë ¥ ¡à âì 梥â á¥âª¨ |
|
- | 442 | mouse_err: ; : ¥á«¨ ¯®¯ «¨ ¢ á¥âªã ¨«¨ ä® |
|
- | 443 | inc [mouse_y] ; : á¬¥é ¥¬ ¯® ¤¨ £® «¨ á ç « ¯® å |
|
- | 444 | inc [mouse_x] ; : á¬¥é ¥¬ ¯® ¤¨ £® «¨ ¯®â®¬ ¯® ã |
|
- | 445 | dec esi ; : ¬¥ìè ¥¬ ä« £ |
|
- | 446 | cmp esi,0 ; : à ¢¨¢ ¥¬ á ã«¥¬ |
|
- | 447 | jz mouse_exit ; : ᫨ ®«ì ⮠ᤥ« «¨ ¢áñ çâ® ¬®£«¨ |
|
- | 448 | jmp re_mouse_loop ; : ᫨ ¥ ®«ì â® ¯®¯à®¡ã¥¬ ¢§ïâì á®á¥«¨© ¯¨ªá¥«ì |
|
- | 449 | mouse_set: |
|
- | 450 | mov [color],eax ; ç¥ § ¯®¬¨ ¥¬ ®¢ë© 梥â |
|
- | 451 | call draw_result ; 뢮¤¨¬ १ã«ìâ â |
|
- | 452 | mouse_exit: |
|
- | 453 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
|
- | 454 | ;end_mouse_get---------------------------------------------------------------------------------------- |
|
- | 455 | ||
- | 456 | draw_palitra: |
|
- | 457 | mov eax,13 ; ãªæ¨ï 13 - à¨á®¢ âì ¯àאַ㣮«ì¨ª |
|
- | 458 | mov ebx,110 shl 16+148 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
|
- | 459 | mov ecx,9 shl 16+148 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
|
- | 460 | mov edx,[sc.work] ; 梥â |
|
- | 461 | int 0x40 |
|
- | 462 | ||
- | 463 | ;cmp [renmode],2 |
|
- | 464 | ;je cyrcle_draw |
|
337 | cmp eax,[sc.work] ; Ñðàâíèâàåì ñ ôîíîì ïðèëîæåíèÿ |
465 | ;cmp [renmode],1 |
338 | je mouse_err ; Åñëè ýòî îí - òî íè÷åãî íå äåëàåì |
466 | ;je picker_draw |
339 | cmp eax,0x222222 ; Ñðàâíèâàåì ñ öâåòîì ñåòêè |
467 | cmp [renmode],0 |
- | 468 | je sheme_draw |
|
340 | je mouse_err ; Åñëè ýòî îí - òî íè÷åãî íå äåëàåì |
469 | ret |
341 | jmp mouse_set ; ÊÎÑÒÛËÜ: ïðûãàåì ÷òîáû íå áðàòü öâåò ñåòêè |
470 | |
342 | mouse_err: ; ÊÎÑÒÛËÜ: åñëè ïîïàëè â ñåòêó èëè ôîí |
471 | ;................................................................................................. |
343 | inc [mouse_y] ; ÊÎÑÒÛËÜ: ñìåùàåì ïî äèàãîíàëè ñíà÷àëà ïî õ |
472 | ; âà¨á®¢ª ªà㣮¢®© ¤¨ £à ¬¬ë |
344 | inc [mouse_x] ; ÊÎÑÒÛËÜ: ñìåùàåì ïî äèàãîíàëè ïîòîì ïî ó |
473 | ;................................................................................................. |
345 | dec esi ; ÊÎÑÒÛËÜ: Óìåíüøàåì ôëàã |
474 | ;cyrcle_draw: |
346 | cmp esi,0 ; ÊÎÑÒÛËÜ: Ñðàâíèâàåì ñ íóëåì |
475 | ;mov eax,7 ; 7 - ®¬¥à äãªæ¨¨ |
347 | jz mouse_exit ; ÊÎÑÒÛËÜ: Åñëè íîëü òî ñäåëàëè âñ¸ ÷òî ìîãëè |
476 | ;mov ebx,circle ; 㪠§ â¥«ì ¨§®¡à ¦¥¨¥ ¢ ä®à¬ ⥠BBGGRRBBGGRR... |
348 | jmp re_mouse_loop ; ÊÎÑÒÛËÜ: Åñëè íå íîëü òî ïîïðîáóåì âçÿòü ñîñåëíèé ïèêñåëü |
477 | ;mov ecx,148 shl 16 + 148 ; [à §¬¥à ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ y] |
349 | mouse_set: |
478 | ;mov edx,110 shl 16 + 9 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
350 | mov [color],eax ; Èíà÷å çàïîìèíàåì íîâûé öâåò |
479 | ;int 0x40 |
351 | call draw_result ; Âûâîäèì ðåçóëüòàò |
480 | ;ret |
352 | mouse_exit: |
481 | |
353 | ret ; Âîçâðàùàåì óïðàâëåíèå |
482 | ;picker_draw: |
354 | ;end_mouse_get---------------------------------------------------------------------------------------- |
483 | ;ret |
355 | 484 | ||
356 | draw_palitra: |
485 | ;................................................................................................. |
357 | ;................................................................................................. |
486 | ; âà¨á®¢ª ä® ¯®¤ ª®¯ª¨ |
358 | ; Îòðèñîâêà ôîíà ïîä êíîïêè |
487 | ;................................................................................................. |
359 | ;................................................................................................. |
488 | sheme_draw: |
360 | mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
489 | mov eax,13 ; ãªæ¨ï 13 - à¨á®¢ âì ¯àאַ㣮«ì¨ª |
361 | mov edx,0x222222 ; öâåò |
490 | mov edx,0x222222 ; 梥â |
362 | mov ecx,9 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
491 | mov ecx,9 shl 16+73 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
363 | mov esi,2 ; Ñ÷åò÷èê ëèíèé ïîäëîæåê |
492 | mov esi,2 ; ç¥â稪 «¨¨© ¯®¤«®¦¥ª |
364 | re_draw: |
493 | re_draw: |
365 | mov ebx,110 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
494 | mov ebx,110 shl 16+73 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
366 | mov edi,2 ; Ñ÷åò÷èê êîëè÷åñòâà ïîäëîæåê |
495 | mov edi,2 ; ç¥â稪 ª®«¨ç¥á⢠¯®¤«®¦¥ª |
367 | for_fon_loop: |
496 | for_fon_loop: |
368 | int 0x40 ; Ïðåðûâàíèå |
497 | int 0x40 ; à¥àë¢ ¨¥ |
369 | add ebx,75 shl 16 ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî õ |
498 | add ebx,75 shl 16 ; ¬¥é ¥¬ ¯®«®¦¥¨¥ «¨¨¨ ¯® å |
370 | dec edi ; Óìåíüøàåì ñ÷åò÷èê êíîïîê |
499 | dec edi ; ¬¥ìè ¥¬ áç¥â稪 ª®¯®ª |
371 | cmp edi,0 ; Ñðàâíèâàåì ñ íóëåì |
500 | cmp edi,0 ; à ¢¨¢ ¥¬ á ã«¥¬ |
372 | jnz for_fon_loop ; Åñëè íå íîëü òî â íà÷àëî öèêëà |
501 | jnz for_fon_loop ; ᫨ ¥ ®«ì â® ¢ ç «® 横« |
373 | dec esi ; Óìåíüøàåì åãî |
502 | dec esi ; ¬¥ìè ¥¬ ¥£® |
374 | cmp esi,0 ; Ñðàâíèâàåì ñ íóëåì |
503 | cmp esi,0 ; à ¢¨¢ ¥¬ á ã«¥¬ |
375 | mov ecx,84 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
504 | mov ecx,84 shl 16+73 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
376 | jnz re_draw ; Åñëè íå íîëü òî â íà÷àëî öèêëà |
505 | jnz re_draw ; ᫨ ¥ ®«ì â® ¢ ç «® 横« |
377 | 506 | ||
378 | ;................................................................................................. |
507 | ;................................................................................................. |
379 | ; Îòðèñîâêà êíîïîê ïî öèêëó |
508 | ; âà¨á®¢ª ª®¯®ª ¯® 横«ã |
380 | ;................................................................................................. |
509 | ;................................................................................................. |
381 | mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
510 | mov eax,13 ; ãªæ¨ï 13 - à¨á®¢ âì ¯àאַ㣮«ì¨ª |
382 | mov edx,0x0FFFFFFF ; öâåò |
511 | mov edx,0x0FFFFFFF ; 梥â |
383 | mov esi,4 ; Ñ÷åò÷èê êîëè÷åñòâà àáçàöåâ (#4,8) |
512 | mov esi,4 ; ç¥â稪 ª®«¨ç¥á⢠¡§ 楢 (#4,8) |
384 | mov ebx,99 shl 16+8 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
513 | mov ebx,99 shl 16+8 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
385 | for_abz: |
514 | for_abz: |
386 | ;;push esi ; Ñîõðàíÿåì çíà÷åíèå ñ÷åò÷èêà ëèíèé â ñòåê |
515 | ;;push esi ; ®åà 塞 § 票¥ áç¥â稪 «¨¨© ¢ á⥪ |
387 | cmp esi,2 |
516 | cmp esi,2 |
388 | jne x2_line |
517 | jne x2_line |
389 | mov ebx,99 shl 16+8 |
518 | mov ebx,99 shl 16+8 |
390 | x2_line: |
519 | x2_line: |
391 | add ebx,3 shl 16 ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî x |
520 | add ebx,3 shl 16 ; ¬¥é ¥¬ ¯®«®¦¥¨¥ «¨¨¨ ¯® x |
392 | mov edi,8 ; Ñ÷åò÷èê êîëè÷åñòâà êíîïîê â ñòðîêå |
521 | mov edi,8 ; ç¥â稪 ª®«¨ç¥á⢠ª®¯®ª ¢ áâப¥ |
393 | for_stolbik: |
522 | for_stolbik: |
394 | push edi ; Ñîõðàíÿåì çíà÷åíèå ñ÷åò÷èêà ëèíèé â ñòåê |
523 | push edi ; ®åà 塞 § 票¥ áç¥â稪 «¨¨© ¢ á⥪ |
395 | mov edi,8 ; Ñ÷åò÷èê êîëè÷åñòâà êíîïîê â ñòðîêå |
524 | mov edi,8 ; ç¥â稪 ª®«¨ç¥á⢠ª®¯®ª ¢ áâப¥ |
396 | mov ecx, 1 shl 16+8 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
525 | mov ecx, 1 shl 16+8 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
397 | cmp esi,2 |
526 | cmp esi,2 |
398 | jg y2_line ; Åñëè áîëüøå 4 òî èãíîðèì |
527 | jg y2_line ; ᫨ ¡®«ìè¥ 4 â® ¨£®à¨¬ |
399 | mov ecx,76 shl 16+8 |
528 | mov ecx,76 shl 16+8 |
400 | y2_line: |
529 | y2_line: |
Line 401... | Line 530... | ||
401 | add ebx,9 shl 16 ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî x |
530 | add ebx,9 shl 16 ; ¬¥é ¥¬ ¯®«®¦¥¨¥ «¨¨¨ ¯® x |
402 | for_loop: |
531 | for_loop: |
403 | add ecx,9 shl 16 ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî y |
532 | add ecx,9 shl 16 ; ¬¥é ¥¬ ¯®«®¦¥¨¥ «¨¨¨ ¯® y |
404 | int 0x40 ; Ïðåðûâàíèå |
533 | int 0x40 ; à¥àë¢ ¨¥ |
405 | call sub_red |
534 | call sub_red |
406 | dec edi ; Óìåíüøàåì ñ÷åò÷èê êíîïîê |
535 | dec edi ; ¬¥ìè ¥¬ áç¥â稪 ª®¯®ª |
407 | cmp edi,0 ; Ñðàâíèâàåì ñ íóëåì |
536 | cmp edi,0 ; à ¢¨¢ ¥¬ á ã«¥¬ |
408 | jnz for_loop ; Åñëè íå íîëü òî â íà÷àëî öèêëà |
537 | jnz for_loop ; ᫨ ¥ ®«ì â® ¢ ç «® 横« |
409 | call sub_green |
538 | call sub_green |
410 | pop edi ; Èíà÷å âîññòàíàâëèâàåì ñ÷åò÷èê ëèíèé |
539 | pop edi ; ç¥ ¢®ááâ ¢«¨¢ ¥¬ áç¥â稪 «¨¨© |
411 | dec edi ; Óìåíüøàåì åãî |
540 | dec edi ; ¬¥ìè ¥¬ ¥£® |
412 | cmp edi,0 ; Ñðàâíèâàåì ñ íóëåì |
541 | cmp edi,0 ; à ¢¨¢ ¥¬ á ã«¥¬ |
413 | jnz for_stolbik ; Åñëè íå íîëü òî â íà÷àëî öèêëà |
542 | jnz for_stolbik ; ᫨ ¥ ®«ì â® ¢ ç «® 横« |
414 | call sub_blue |
543 | call sub_blue |
415 | ;;pop esi ; Èíà÷å âîññòàíàâëèâàåì ñ÷åò÷èê ëèíèé |
544 | ;;pop esi ; ç¥ ¢®ááâ ¢«¨¢ ¥¬ áç¥â稪 «¨¨© |
416 | dec esi ; Óìåíüøàåì åãî |
545 | dec esi ; ¬¥ìè ¥¬ ¥£® |
417 | cmp esi,0 ; Ñðàâíèâàåì ñ íóëåì |
546 | cmp esi,0 ; à ¢¨¢ ¥¬ á ã«¥¬ |
418 | jnz for_abz ; Åñëè íå íîëü òî â íà÷àëî öèêëà |
547 | jnz for_abz ; ᫨ ¥ ®«ì â® ¢ ç «® 横« |
419 | ret ; Âîçâðàùàåì óïðàâëåíèå |
548 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
420 | ;end_draw_palitra------------------------------------------------------------------------------------- |
549 | ;end_draw_palitra------------------------------------------------------------------------------------- |
Line 456... | Line 585... | ||
456 | jne sub_red_e |
585 | jne sub_red_e |
457 | sub edx,0x010100 |
586 | sub edx,0x010100 |
458 | jmp sub_red_e |
587 | jmp sub_red_e |
459 | sub_red_e: |
588 | sub_red_e: |
460 | pop eax |
589 | pop eax |
461 | ret ; Âîçâðàùàåì óïðàâëåíèå |
590 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
462 | ;end_sub_red------------------------------------------------------------------------------------------ |
591 | ;end_sub_red------------------------------------------------------------------------------------------ |
Line 463... | Line 592... | ||
463 | 592 | ||
464 | sub_green: |
593 | sub_green: |
465 | ;................................................................................................. |
594 | ;................................................................................................. |
466 | ; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû |
595 | ; áçñâ ᬥ饨© ªà ᮣ® 梥⠢ £¥¥à 樨 梥⠯ «¨âàë |
467 | ;................................................................................................. |
596 | ;................................................................................................. |
468 | push eax |
597 | push eax |
469 | mov eax,[pnext] |
598 | mov eax,[pnext] |
470 | ;sub_green_0 |
599 | ;sub_green_0 |
471 | cmp al,0 |
600 | cmp al,0 |
472 | jne sub_green_1 |
601 | jne sub_green_1 |
473 | sub edx,0x2000 |
602 | sub edx,0x4000 |
474 | jmp sub_green_e |
603 | jmp sub_green_e |
475 | sub_green_1: |
604 | sub_green_1: |
476 | cmp al,1 |
605 | cmp al,1 |
477 | jne sub_green_e |
606 | jne sub_green_e |
478 | sub edx,0x4000 |
607 | sub edx,0x2000 |
479 | ;jmp sub_green_e |
608 | ;jmp sub_green_e |
480 | sub_green_e: |
609 | sub_green_e: |
481 | pop eax |
610 | pop eax |
482 | ret ; Âîçâðàùàåì óïðàâëåíèå |
611 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
Line 483... | Line 612... | ||
483 | ;end_sub_green---------------------------------------------------------------------------------------- |
612 | ;end_sub_green---------------------------------------------------------------------------------------- |
484 | 613 | ||
485 | 614 | ||
486 | sub_blue: |
615 | sub_blue: |
487 | ;................................................................................................. |
616 | ;................................................................................................. |
488 | ; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû |
617 | ; áçñâ ᬥ饨© ªà ᮣ® 梥⠢ £¥¥à 樨 梥⠯ «¨âàë |
489 | ;................................................................................................. |
618 | ;................................................................................................. |
490 | push eax |
619 | push eax |
491 | mov eax,[pnext] |
620 | mov eax,[pnext] |
492 | ;sub_blue_0 |
621 | ;sub_blue_0 |
493 | cmp al,0 |
622 | cmp al,0 |
494 | jne sub_blue_1 |
623 | jne sub_blue_1 |
495 | sub edx,0x400000 |
624 | sub edx,0x600000 |
496 | jmp sub_blue_e |
625 | jmp sub_blue_e |
497 | sub_blue_1: |
626 | sub_blue_1: |
498 | cmp al,1 |
627 | cmp al,1 |
499 | jne sub_blue_e |
628 | jne sub_blue_e |
500 | sub edx,0x600000 |
629 | sub edx,0x400000 |
501 | ;jmp sub_blue_e |
630 | ;jmp sub_blue_e |
502 | sub_blue_e: |
631 | sub_blue_e: |
Line 503... | Line 632... | ||
503 | pop eax |
632 | pop eax |
504 | ret ; Âîçâðàùàåì óïðàâëåíèå |
633 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
505 | ;end_sub_blue----------------------------------------------------------------------------------------- |
634 | ;end_sub_blue----------------------------------------------------------------------------------------- |
506 | 635 | ||
507 | draw_result: |
636 | draw_result: |
508 | ;................................................................................................. |
637 | ;................................................................................................. |
509 | ; Áîëüøàÿ ðàìêà âûâîäà ðåçóëüòàòà |
638 | ; ®«ìè ï à ¬ª ¢ë¢®¤ १ã«ìâ â |
510 | ;................................................................................................. |
639 | ;................................................................................................. |
511 | mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
640 | mov eax,13 ; ãªæ¨ï 13 - à¨á®¢ âì ¯àאַ㣮«ì¨ª |
512 | mov edx,0x00666666 ; öâåò-îáâîäêè |
641 | mov edx,0x00666666 ; 梥â-®¡¢®¤ª¨ |
513 | mov ebx,4 shl 16+98 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
642 | mov ebx,4 shl 16+98 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
514 | mov ecx,9 shl 16+148 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
643 | mov ecx,9 shl 16+148 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
515 | int 0x40 |
644 | int 0x40 |
Line 516... | Line 645... | ||
516 | mov edx,0x00F3F3F3 ; öâåò-ôîíà |
645 | mov edx,0x00F3F3F3 ; 梥â-ä® |
517 | mov ebx,5 shl 16+96 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
646 | mov ebx,5 shl 16+96 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
518 | mov ecx,10 shl 16+146 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
647 | mov ecx,10 shl 16+146 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
519 | int 0x40 |
648 | int 0x40 |
520 | 649 | ||
521 | ;................................................................................................. |
650 | ;................................................................................................. |
522 | ; Îòðèñîâêà ðåçóëüòàòà öâåòà â hex color2 |
651 | ; âà¨á®¢ª १ã«ìâ â 梥⠢ hex color2 |
523 | ;................................................................................................. |
652 | ;................................................................................................. |
524 | mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
653 | mov eax,13 ; ãªæ¨ï 13 - à¨á®¢ âì ¯àאַ㣮«ì¨ª |
525 | ; color 2 - draw fringle |
654 | ; color 2 - draw fringle |
526 | mov edx,0x222222 ; öâåò-îáâîäêè |
655 | mov edx,0x222222 ; 梥â-®¡¢®¤ª¨ |
527 | mov ebx,16 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
656 | mov ebx,16 shl 16+15 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
528 | mov ecx,16 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
657 | mov ecx,16 shl 16+15 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
529 | int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
658 | int 0x40 ; à¥àë¢ ¨¥ (®á à¨áã¥â ¯àאַ㣮«ì¨ª) |
530 | ; color 2 - draw color |
659 | ; color 2 - draw color |
531 | mov edx,[color2] ; öâåò |
660 | mov edx,[color2] ; 梥â |
532 | mov ebx,17 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
661 | mov ebx,17 shl 16+13 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
533 | mov ecx,17 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
662 | mov ecx,17 shl 16+13 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
534 | int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
663 | int 0x40 ; à¥àë¢ ¨¥ (®á à¨áã¥â ¯àאַ㣮«ì¨ª) |
535 | ; color 1 - draw fringle |
664 | ; color 1 - draw fringle |
536 | mov edx,0x222222 ; öâåò-îáâîäêè |
665 | mov edx,0x222222 ; 梥â-®¡¢®¤ª¨ |
537 | mov ebx,11 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
666 | mov ebx,11 shl 16+15 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
538 | mov ecx,12 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
667 | mov ecx,12 shl 16+15 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
Line 539... | Line 668... | ||
539 | int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
668 | int 0x40 ; à¥àë¢ ¨¥ (®á à¨áã¥â ¯àאַ㣮«ì¨ª) |
540 | ; value - draw fringle |
669 | ; value - draw fringle |
541 | mov ebx,34 shl 16+62 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
670 | mov ebx,34 shl 16+62 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
542 | mov ecx,16 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
671 | mov ecx,16 shl 16+15 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
543 | int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
672 | int 0x40 ; à¥àë¢ ¨¥ (®á à¨áã¥â ¯àאַ㣮«ì¨ª) |
544 | 673 | ||
545 | ; color 2 - draw color |
674 | ; color 2 - draw color |
546 | mov edx,[color] ; öâåò |
675 | mov edx,[color] ; 梥â |
547 | mov ebx,12 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
676 | mov ebx,12 shl 16+13 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
548 | mov ecx,13 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
677 | mov ecx,13 shl 16+13 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
Line 549... | Line 678... | ||
549 | int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
678 | int 0x40 ; à¥àë¢ ¨¥ (®á à¨áã¥â ¯àאַ㣮«ì¨ª) |
550 | ; value - draw background |
679 | ; value - draw background |
551 | mov edx,0xFFFFFF ; öâåò-ôîíà |
680 | mov edx,0xFFFFFF ; 梥â-ä® |
552 | mov ebx,35 shl 16+60 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
681 | mov ebx,35 shl 16+60 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
553 | mov ecx,17 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
682 | mov ecx,17 shl 16+13 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
554 | int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
683 | int 0x40 ; à¥àë¢ ¨¥ (®á à¨áã¥â ¯àאַ㣮«ì¨ª) |
Line 555... | Line 684... | ||
555 | 684 | ||
556 | mov eax,47 ; Ôóíêöèÿ 47 - âûâîä ÷èñëà â îêíî |
685 | mov eax,47 ; ãªæ¨ï 47 - ¢ë¢®¤ ç¨á« ¢ ®ª® |
557 | mov ecx,[color] ; ÷èñëî (ïðè bl=0) èëè óêàçàòåëü (ïðè bl=1) |
686 | mov ecx,[color] ; ç¨á«® (¯à¨ bl=0) ¨«¨ 㪠§ ⥫ì (¯à¨ bl=1) |
558 | mov esi,0x0 ; 0xX0RRGGBB |
687 | mov esi,0x0 ; 0xX0RRGGBB |
559 | mov ebx,256+8 shl 16 ; ïàðàìåòðû ïðåîáðàçîâàíèÿ ÷èñëà â òåêñò (HEX) |
688 | mov ebx,256+8 shl 16 ; ¯ à ¬¥âàë ¯à¥®¡à §®¢ ¨ï ç¨á« ¢ ⥪áâ (HEX) |
560 | mov edx,45 shl 16+20 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y] |
689 | mov edx,45 shl 16+20 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
Line 561... | Line 690... | ||
561 | int 0x40 ; Ïðåðûâàíèå - âûâîäèì ðåçóëüòàò â îêíî (HEX) |
690 | int 0x40 ; à¥àë¢ ¨¥ - ¢ë¢®¤¨¬ १ã«ìâ â ¢ ®ª® (HEX) |
562 | 691 | ||
563 | mov eax,4 ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå |
692 | mov eax,4 ; äãªæ¨ï 4: ¯¨á âì ⥪áâ ¢ ®ª¥ |
564 | mov ebx,38*65536+20 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
693 | mov ebx,38*65536+20 ; [x ç «ìë©] *65536 + [y ç «ìë©] |
Line 565... | Line 694... | ||
565 | mov ecx,0x0 ; öâåò òåêñòà RRGGBB |
694 | mov ecx,0x0 ; 梥â ⥪áâ RRGGBB |
566 | mov edx,hex ; ðèñóåì '#' |
695 | mov edx,hex ; à¨á㥬 '#' |
567 | mov esi,1 ; äëèíà òåêñòà â áàéòàõ |
696 | mov esi,1 ; ¤«¨ ⥪áâ ¢ ¡ ©â å |
Line 568... | Line 697... | ||
568 | int 0x40 |
697 | int 0x40 |
569 | 698 | ||
570 | ;................................................................................................. |
699 | ;................................................................................................. |
Line 571... | Line 700... | ||
571 | ; Îòðèñîâêà r g b çíà÷åíèé |
700 | ; âà¨á®¢ª r g b § 票© |
572 | ;................................................................................................. |
701 | ;................................................................................................. |
573 | call get_spectr |
702 | call get_spectr |
Line 574... | Line 703... | ||
574 | 703 | ||
575 | movzx eax,[cred] ; êðàñíûé |
704 | movzx eax,[cred] ; ªà áë© |
576 | mov ebx,9*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
705 | mov ebx,9*65536+142 ; [x ç «ìë©] *65536 + [y ç «ìë©] |
Line 577... | Line 706... | ||
577 | call draw_value ; âûâîäèì ðåçóëüòàò |
706 | call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â |
578 | 707 | ||
579 | movzx eax,[cgreen] ; çåëåíûé |
708 | movzx eax,[cgreen] ; §¥«¥ë© |
580 | mov ebx,32*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
709 | mov ebx,32*65536+142 ; [x ç «ìë©] *65536 + [y ç «ìë©] |
581 | call draw_value ; âûâîäèì ðåçóëüòàò |
710 | call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â |
582 | 711 | ||
583 | movzx eax,[cblue] ; ñèíèé |
712 | movzx eax,[cblue] ; ᨨ© |
584 | mov ebx,55*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
713 | mov ebx,55*65536+142 ; [x ç «ìë©] *65536 + [y ç «ìë©] |
585 | call draw_value ; âûâîäèì ðåçóëüòàò |
714 | call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â |
586 | 715 | ||
587 | movzx eax,[calpha] ; àëüôà |
716 | movzx eax,[calpha] ; «ìä |
588 | mov ebx,78*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
717 | mov ebx,78*65536+142 ; [x ç «ìë©] *65536 + [y ç «ìë©] |
589 | call draw_value ; âûâîäèì ðåçóëüòàò |
718 | call draw_value ; ¢ë¢®¤¨¬ १ã«ìâ â |
590 | 719 | ||
Line 591... | Line 720... | ||
591 | ;................................................................................................. |
720 | ;................................................................................................. |
592 | ; Âûâîäèì áóêâû r g b a |
721 | ; 뢮¤¨¬ ¡ãª¢ë r g b a |
593 | ;................................................................................................. |
722 | ;................................................................................................. |
594 | mov eax,4 ; 4 - âûâåñòè ñòðîêó òåêñòà â îêíî |
723 | mov eax,4 ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ ¢ ®ª® |
595 | mov ebx,16 shl 16+40 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y] |
724 | mov ebx,16 shl 16+40 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
596 | mov ecx,0x0 ; 0xX0RRGGBB (RR, GG, BB çàäàþò öâåò òåêñòà) |
725 | mov ecx,0x0 ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ ) |
597 | mov edx,cname ; óêàçàòåëü íà íà÷àëî ñòðîêè |
726 | mov edx,cname ; 㪠§ ⥫ì ç «® áâப¨ |
598 | mov esi,1 ; âûâîäèòü esi ñèìâîëîâ |
727 | mov esi,1 ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢ |
599 | newline: ; öèêë |
728 | newline: ; 横« |
600 | int 0x40 ; Ïðåðûâàíèå |
729 | int 0x40 ; à¥àë¢ ¨¥ |
601 | add ebx,23 shl 16 ; Äîáàâëÿåì |
730 | add ebx,23 shl 16 ; ®¡ ¢«ï¥¬ |
602 | add edx,1 ; Äîáàâëÿåì |
731 | add edx,1 ; ®¡ ¢«ï¥¬ |
603 | cmp [edx],byte 'x' ; Ñðàâíåíèå ñ áàéòîì õ |
732 | cmp [edx],byte 'x' ; à ¢¥¨¥ á ¡ ©â®¬ å |
604 | jne newline ; Åñëè íå íóëü èëè íå ðàâíî |
733 | jne newline ; ᫨ ¥ ã«ì ¨«¨ ¥ à ¢® |
Line 605... | Line 734... | ||
605 | 734 | ||
606 | ;................................................................................................. |
735 | ;................................................................................................. |
607 | ; Îòðèñîâêà ñëàéäåðîâ |
736 | ; âà¨á®¢ª á« ©¤¥à®¢ |
608 | ;................................................................................................. |
737 | ;................................................................................................. |
609 | mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
738 | mov eax,13 ; ãªæ¨ï 13 - à¨á®¢ âì ¯àאַ㣮«ì¨ª |
610 | mov edx,0x222222 ; öâåò-îáâîäêè |
739 | mov edx,0x222222 ; 梥â-®¡¢®¤ª¨ |
611 | mov ebx,16 shl 16+4 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
740 | mov ebx,16 shl 16+4 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
612 | mov ecx,51 shl 16+86 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
741 | mov ecx,51 shl 16+86 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
613 | int 0x40 |
742 | int 0x40 |
614 | add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
743 | add ebx,23 shl 16 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â y]*65536 + [à §¬¥à] |
615 | int 0x40 |
744 | int 0x40 |
616 | add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
745 | add ebx,23 shl 16 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â y]*65536 + [à §¬¥à] |
617 | int 0x40 |
746 | int 0x40 |
Line 618... | Line 747... | ||
618 | add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
747 | add ebx,23 shl 16 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â y]*65536 + [à §¬¥à] |
619 | int 0x40 |
748 | int 0x40 |
620 | 749 | ||
621 | mov edx,0xFA0919 ; öâåò-îáâîäêè |
750 | mov edx,0xFA0919 ; 梥â-®¡¢®¤ª¨ |
622 | mov ebx,17 shl 16+2 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
751 | mov ebx,17 shl 16+2 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
623 | mov ecx,52 shl 16+84 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
752 | mov ecx,52 shl 16+84 ; ç «ìë¥ ª®®à¤¨ âë ¯® y [ª-â y]*65536 + [à §¬¥à] |
624 | int 0x40 |
753 | int 0x40 |
625 | mov edx,0x08CE19 ; öâåò-îáâîäêè |
754 | mov edx,0x08CE19 ; 梥â-®¡¢®¤ª¨ |
626 | add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
755 | add ebx,23 shl 16 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â y]*65536 + [à §¬¥à] |
627 | int 0x40 |
756 | int 0x40 |
628 | mov edx,0x0909FF ; öâåò-îáâîäêè |
757 | mov edx,0x0909FF ; 梥â-®¡¢®¤ª¨ |
629 | add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
758 | add ebx,23 shl 16 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â y]*65536 + [à §¬¥à] |
630 | int 0x40 |
759 | int 0x40 |
631 | mov edx,0xE4E4E4 ; öâåò-îáâîäêè |
760 | mov edx,0xE4E4E4 ; 梥â-®¡¢®¤ª¨ |
632 | add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
761 | add ebx,23 shl 16 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â y]*65536 + [à §¬¥à] |
633 | int 0x40 |
762 | int 0x40 |
Line 634... | Line 763... | ||
634 | 763 | ||
635 | ;................................................................................................. |
764 | ;................................................................................................. |
Line 636... | Line 765... | ||
636 | ; Îòðèñîâêà ïîëçóíêîâ |
765 | ; âà¨á®¢ª ¯®«§ãª®¢ |
637 | ;................................................................................................. |
766 | ;................................................................................................. |
638 | mov edx,0x0 ; öâåò-ïîëçóíêîâ |
767 | mov edx,0x0 ; 梥â-¯®«§ãª®¢ |
639 | mov ebx,17 shl 16+11 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
768 | mov ebx,17 shl 16+11 ; ç «ìë¥ ª®®à¤¨ âë ¯® x [ª-â x]*65536 + [à §¬¥à] |
640 | movzx eax,[cred] ; áåðåì çíà÷åíèå öâåòà |
769 | movzx eax,[cred] ; ¡¥à¥¬ § 票¥ 梥â |
641 | call draw_slider |
770 | call draw_slider |
642 | add ebx,23 shl 16 |
771 | add ebx,23 shl 16 |
643 | movzx eax,[cgreen] ; áåðåì çíà÷åíèå öâåòà |
772 | movzx eax,[cgreen] ; ¡¥à¥¬ § 票¥ 梥â |
644 | call draw_slider |
773 | call draw_slider |
645 | add ebx,23 shl 16 |
774 | add ebx,23 shl 16 |
646 | movzx eax,[cblue] ; áåðåì çíà÷åíèå öâåòà |
775 | movzx eax,[cblue] ; ¡¥à¥¬ § 票¥ 梥â |
647 | call draw_slider |
776 | call draw_slider |
648 | add ebx,23 shl 16 |
777 | add ebx,23 shl 16 |
649 | movzx eax,[calpha] ; áåðåì çíà÷åíèå öâåòà |
778 | movzx eax,[calpha] ; ¡¥à¥¬ § 票¥ 梥â |
650 | call draw_slider |
779 | call draw_slider |
651 | 780 | ||
652 | ret ; Âîçâðàùàåì óïðàâëåíèå |
781 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
653 | ;end_draw_result |
782 | ;end_draw_result |
Line 654... | Line 783... | ||
654 | 783 | ||
Line 655... | Line 784... | ||
655 | draw_slider: |
784 | draw_slider: |
656 | xor ecx,ecx |
785 | xor ecx,ecx |
657 | mov cl,0x3 ; áóäåì äåëèòü åãî íà 3 òàê êàê ïîëçóíêè äëèííîé 85 ïèêñåëåé |
786 | mov cl,0x3 ; ¡ã¤¥¬ ¤¥«¨âì ¥£® 3 â ª ª ª ¯®«§ãª¨ ¤«¨®© 85 ¯¨ªá¥«¥© |
658 | div cl ; äåëèì - öåëîå â al îñòàòîê â ah |
787 | div cl ; ¤¥«¨¬ - 楫®¥ ¢ al ®áâ ⮪ ¢ ah |
659 | mov cl,136 ; íèæíÿÿ òî÷êà ïîëçóíêà |
788 | mov cl,136 ; ¨¦ïï â®çª ¯®«§ãª |
660 | sub cl,al ; cl=cl-al |
789 | sub cl,al ; cl=cl-al |
661 | shl ecx,16 |
790 | shl ecx,16 |
662 | add ecx,1 ; çàäàåì íà÷àëüíîå ïîëîæåíèå |
791 | add ecx,1 ; § ¤ ¥¬ ç «ì®¥ ¯®«®¦¥¨¥ |
663 | mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
792 | mov eax,13 ; ãªæ¨ï 13 - à¨á®¢ âì ¯àאַ㣮«ì¨ª |
664 | int 0x40 |
793 | int 0x40 |
665 | push ebx ; ñîõðàíÿåì äëÿ ñëåäóþùåãî ïîëçóíêà x+w |
794 | push ebx ; á®åà 塞 ¤«ï á«¥¤ãî饣® ¯®«§ãª x+w |
666 | sub ebx,8 ; òàê êàê øèðèíà ëèíèè 11 òî îòíèìàåì 8 ÷òîáû êóáèê ñòàë øèðèíîé 3 |
795 | sub ebx,8 ; â ª ª ª è¨à¨ «¨¨¨ 11 â® ®â¨¬ ¥¬ 8 çâ®¡ë ªã¡¨ª áâ « è¨à¨®© 3 |
667 | add ebx,8 shl 16 ; Êîîðäèíàòû ïî x äëÿ êâàäðàòà íà ïîëçóíêå ñìåùàåì íà 8 â ïðàâî |
796 | add ebx,8 shl 16 ; ®®à¤¨ âë ¯® x ¤«ï ª¢ ¤à â ¯®«§ãª¥ á¬¥é ¥¬ 8 ¢ ¯à ¢® |
668 | inc ecx ; áûäëîêîäèì âûñîòó ïîëçóíêà äî 3-õ (1+1=2) |
797 | inc ecx ; ¡ë¤«®ª®¤¨¬ ¢ëá®âã ¯®«§ãª ¤® 3-å (1+1=2) |
669 | inc ecx ; (2+1=3) íó âîò ó íàñ áóäåò êóáèê 3õ3 íà 8 â ïðàâî îò ëèíèè |
798 | inc ecx ; (2+1=3) ã ¢®â ã á ¡ã¤¥â ªã¡¨ª 3å3 8 ¢ ¯à ¢® ®â «¨¨¨ |
670 | int 0x40 ; ðèñóåì |
799 | int 0x40 ; à¨á㥬 |
671 | pop ebx ; âîññòàíàâëèâàåì íîðìàëüíûå êîîðäèíàòû |
800 | pop ebx ; ¢®ááâ ¢«¨¢ ¥¬ ®à¬ «ìë¥ ª®®à¤¨ âë |
672 | ret ; Âîçâðàùàåì óïðàâëåíèå |
801 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
673 | 802 | ||
674 | ;end_slider |
803 | ;end_slider |
675 | 804 | ||
676 | draw_value: |
805 | draw_value: |
677 | ;................................................................................................. |
806 | ;................................................................................................. |
678 | ; Âûâîä ÷èñëà èç ñòðîêè â óêàçàííîé îáëàñòè |
807 | ; 뢮¤ ç¨á« ¨§ áâப¨ ¢ 㪠§ ®© ®¡« á⨠|
Line 679... | Line 808... | ||
679 | ;................................................................................................. |
808 | ;................................................................................................. |
680 | push ebx ; ñîõðàíÿåì ïðèñëàííûå êîîðäèíàòû |
809 | push ebx ; á®åà 塞 ¯à¨á« ë¥ ª®®à¤¨ âë |
681 | mov ebx,10 ; óñòàíàâëèâàåì îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ |
810 | mov ebx,10 ; ãáâ ¢«¨¢ ¥¬ ®á®¢ ¨¥ á¨á⥬ë áç¨á«¥¨ï |
682 | mov edi,buff ; óêàçàòåëü íà ñòðîêó áóôåðà |
811 | mov edi,buff ; 㪠§ ⥫ì áâப㠡ãä¥à |
683 | call int2ascii ; êîíâåðòèðóåì ÷èñëî è ëîæèì êàê ñòðîêó â áóôåð + esi äëèíà |
812 | call int2ascii ; ª®¢¥àâ¨à㥬 ç¨á«® ¨ «®¦¨¬ ª ª áâப㠢 ¡ãä¥à + esi ¤«¨ |
684 | mov eax,4 ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå |
813 | mov eax,4 ; äãªæ¨ï 4: ¯¨á âì ⥪áâ ¢ ®ª¥ |
685 | pop ebx ; äîñòàåì èç ñòåêà ïðèñëàííûå êîîðäèíàòû |
814 | pop ebx ; ¤®áâ ¥¬ ¨§ á⥪ ¯à¨á« ë¥ ª®®à¤¨ âë |
686 | cmp esi,2 ; ÖÅÍÒÐÈÐÎÂÀÍÈÅ ÒÅÊÑÒÀ |
815 | cmp esi,2 ; |
687 | jne draw_value_1 |
816 | jne draw_value_1 |
688 | add ebx,4 shl 16 |
817 | add ebx,4 shl 16 |
689 | jmp draw_value_e |
818 | jmp draw_value_e |
690 | draw_value_1: |
819 | draw_value_1: |
Line 691... | Line 820... | ||
691 | cmp esi,1 |
820 | cmp esi,1 |
692 | jne draw_value_e |
821 | jne draw_value_e |
693 | add ebx,7 shl 16 |
822 | add ebx,7 shl 16 |
694 | draw_value_e: |
823 | draw_value_e: |
695 | mov ecx,0x0 ; öâåò òåêñòà RRGGBB |
824 | mov ecx,0x0 ; 梥â ⥪áâ RRGGBB |
696 | mov edx,buff ; óêàçàòåëü íà íà÷àëî òåêñòà |
825 | mov edx,buff ; 㪠§ ⥫ì ç «® ⥪áâ |
697 | int 0x40 |
826 | int 0x40 |
698 | ret ; Âîçâðàùàåì óïðàâëåíèå |
827 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
699 | ;end_draw_value |
828 | ;end_draw_value |
700 | 829 | ||
701 | hex_digit: |
830 | hex_digit: |
702 | ;................................................................................................. |
831 | ;................................................................................................. |
703 | ; Ïðåîáðàçîâàíèå â ASCII (âíå çàâèñèìîñòè îò ñèñòåìû ñ÷èñëåíèÿ) |
832 | ; ८¡à §®¢ ¨¥ ¢ ASCII (¢¥ § ¢¨á¨¬®á⨠®â á¨á⥬ë áç¨á«¥¨ï) |
704 | ;................................................................................................. |
833 | ;................................................................................................. |
705 | cmp dl,10 ; â dl îæèäàåòñÿ ÷èñëî îò 0 äî 15 |
834 | cmp dl,10 ; ¢ dl ®¦¨¤ ¥âáï ç¨á«® ®â 0 ¤® 15 |
706 | jb .less ; åñëè dl<10 òî ïåðåõîäèì |
835 | jb .less ; ¥á«¨ dl<10 â® ¯¥à¥å®¤¨¬ |
707 | add dl,'A'-10 ; 10->A 11->B 12->C ... |
836 | add dl,'A'-10 ; 10->A 11->B 12->C ... |
708 | ret ; Âîçâðàùàåì óïðàâëåíèå |
837 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
709 | .less: |
838 | .less: |
710 | or dl,'0' ; Åñëè ñèñòåìà ñ÷èñëåíèÿ 10-ÿ è ìåíåå |
839 | or dl,'0' ; ᫨ á¨á⥬ áç¨á«¥¨ï 10-ï ¨ ¬¥¥¥ |
711 | ret ; Âîçâðàùàåì óïðàâëåíèå |
840 | ret ; ®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
712 | ;end_hex_digit |
841 | ;end_hex_digit |
713 | 842 | ||
714 | int2ascii: |
843 | int2ascii: |
715 | ;................................................................................................. |
844 | ;................................................................................................. |
716 | ; Ïðåîáðàçîâàíèå ÷èñëà â ñòðîêó |
845 | ; ८¡à §®¢ ¨¥ ç¨á« ¢ áâபã |
717 | ;................................................................................................. |
846 | ;................................................................................................. |
718 | ; eax - 32-õ çíà÷íîå ÷èñëî |
847 | ; eax - 32-å § 箥 ç¨á«® |
719 | ; ebx - îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ |
848 | ; ebx - ®á®¢ ¨¥ á¨á⥬ë áç¨á«¥¨ï |
720 | ; edi - óêàçàòåëü íà ñòðîêó áóôåðà |
849 | ; edi - 㪠§ ⥫ì áâப㠡ãä¥à |
721 | ; Âîçâðàùàåò çàïîëíåííûé áóôåð è esi - äëèíà ñòðîêè |
850 | ; ®§¢à é ¥â § ¯®«¥ë© ¡ãä¥à ¨ esi - ¤«¨ áâப¨ |
722 | ;pushad |
851 | ;pushad |
723 | xor esi,esi ; çàíóëÿåì ñ÷åò÷èê ñèìâîëîâ |
852 | xor esi,esi ; § ã«ï¥¬ áç¥â稪 ᨬ¢®«®¢ |
Line 724... | Line 853... | ||
724 | convert_loop: |
853 | convert_loop: |
725 | xor edx,edx ; çàíóëÿåì ðåãèñòð ïîä îñòàòîê |
854 | xor edx,edx ; § ã«ï¥¬ ॣ¨áâà ¯®¤ ®áâ ⮪ |
726 | div ebx ; eax/ebx - îñòàòîê â edx |
855 | div ebx ; eax/ebx - ®áâ ⮪ ¢ edx |
727 | call hex_digit ; ïðåîáðàçóåì ñèìâîë |
856 | call hex_digit ; ¯à¥®¡à §ã¥¬ ᨬ¢®« |
728 | push edx ; ëîæèì â ñòåê |
- | |
729 | inc esi ; óâåëè÷èâàåì ñ÷åò÷èê |
- | |
730 | test eax,eax ; åñëè åùå ìîæíî äåëèòü |
- | |
731 | jnz convert_loop ; òî äåëèåì åùå |
- | |
732 | cld ; ÎÁßÇÀÒÅËÜÍÎ ñáðàñûâàåì ôëàã íàïðàâëåíèÿ DF (çàïèñü âïåð¸ä) |
- | |
733 | write_loop: ; èíà÷å |
- | |
734 | pop eax ; äîñòàåì èç ñòåêà â åàõ |
- | |
735 | stosb ; çàïèñûâàåì â áóôåð ïî àäðåñó ES:(E)DI |
- | |
736 | dec esi ; óìåíüøàåì ñ÷åò÷èê |
- | |
737 | test esi,esi ; åñëè åñòü ÷òî äîñòàâàòü èç ñòåêà |
- | |
738 | jnz write_loop ; òî äîñòà¸ì |
- | |
739 | mov byte [edi],0 ; èíà÷å äîïèñûûâàåì íóëåâîé áàéò |
- | |
740 | ;popad ; âîññòàíàâëèâàåì çíà÷åíèÿ ðåãèñòðîâ |
- | |
741 | ; êîä íèæå íå èìååò íè÷åãî îáùåãî ê ôóíêöèè, ïðîñòî âîçâðàùàåò åùå äëèííó ïîëó÷åííîé ñòðîêè |
- | |
742 | mov edi,buff ; óêàçàòåëü íà íà÷àëî òåêñòà |
857 | push edx ; «®¦¨¬ ¢ á⥪ |
743 | call str_len |
858 | inc esi ; 㢥«¨ç¨¢ ¥¬ áç¥â稪 |
744 | mov esi,eax |
859 | test eax,eax ; ¥á«¨ ¥é¥ ¬®¦® ¤¥«¨âì |
745 | ret ; è âîçâðàùàåì óïðàâëåíèå |
860 | jnz convert_loop ; â® ¤¥«¨¥¬ ¥é¥ |
746 | ;end_int2ascii |
861 | cld ; á¡à áë¢ ¥¬ ä« £ ¯à ¢«¥¨ï DF (§ ¯¨áì ¢¯¥àñ¤) |
747 | 862 | write_loop: ; ¨ ç¥ |
|
748 | get_spectr: |
863 | pop eax ; ¤®áâ ¥¬ ¨§ á⥪ ¢ ¥ å |
749 | ;................................................................................................. |
864 | stosb ; § ¯¨áë¢ ¥¬ ¢ ¡ãä¥à ¯® ¤à¥áã ES:(E)DI |
750 | ; âîçâðàùàåò r,g,b ñîñòîâëÿþùèå öâåòà |
865 | dec esi ; 㬥ìè ¥¬ áç¥â稪 |
751 | ;................................................................................................. |
866 | test esi,esi ; ¥á«¨ ¥áâì çâ® ¤®áâ ¢ âì ¨§ á⥪ |
Line 752... | Line 867... | ||
752 | ;; get blue |
867 | jnz write_loop ; â® ¤®áâ ñ¬ |
753 | ;mov ecx,[color] |
868 | mov byte [edi],0 ; ¨ ç¥ ¤®¯¨áëë¢ ¥¬ ã«¥¢®© ¡ ©â |
754 | ;movzx eax,cl |
869 | ;popad ; ¢®ááâ ¢«¨¢ ¥¬ § 票ï ॣ¨áâ஢ |
755 | ;mov [cblue],al |
870 | ; ª®¤ ¨¦¥ ¥ ¨¬¥¥â ¨ç¥£® ®¡é¥£® ª äãªæ¨¨, ¯à®áâ® ¢®§¢à é ¥â ¥é¥ ¤«¨ã ¯®«ã祮© áâப¨ |
756 | ;; get red |
871 | mov edi,buff ; 㪠§ ⥫ì ç «® ⥪áâ |
757 | ;mov eax,ecx |
872 | call str_len |
758 | ;xor ax,ax ; à íàäî ëè???? |
873 | mov esi,eax |
759 | ;shr eax,16 |
874 | ret ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥¨¥ |
760 | ;mov [cred],al |
875 | ;end_int2ascii |
761 | ;; get green |
876 | |
762 | ;shl ecx,16 |
877 | get_spectr: |
763 | ;shr ecx,24 |
878 | ;................................................................................................. |
764 | ;mov [cgreen],cl |
879 | ; ¢®§¢à é ¥â r,g,b á®á⮢«ïî騥 梥â |
765 | 880 | ;................................................................................................. |
|
766 | mov ecx,[color] |
881 | mov ecx,[color] |
Line 767... | Line 882... | ||
767 | mov [cblue],cl |
882 | mov [cblue],cl |
768 | shr ecx,8 |
883 | shr ecx,8 |
769 | mov [cgreen],cl |
884 | mov [cgreen],cl |
770 | shr ecx,8 |
885 | shr ecx,8 |
771 | mov [cred],cl |
886 | mov [cred],cl |
772 | shr ecx,8 |
887 | shr ecx,8 |
773 | mov [calpha],cl |
888 | mov [calpha],cl |
Line 813... | Line 928... | ||
813 | 928 | ||
814 | ret |
929 | ret |
815 | ;end_str_len |
930 | ;end_str_len |
816 | ;#___________________________________________________________________________________________________ |
931 | ;#___________________________________________________________________________________________________ |
817 | ;****************************************************************************************************| |
932 | ;****************************************************************************************************| |
818 | ; ÁËÎÊ ÏÅÐÅÌÅÍÍÛÕ È ÊÎÍÑÒÀÍÒ | |
933 | ; | |
Line -... | Line 934... | ||
- | 934 | ;----------------------------------------------------------------------------------------------------/ |
|
- | 935 | ||
- | 936 | struct map_colors |
|
- | 937 | c1 db 0 |
|
- | 938 | c2 db 0 |
|
- | 939 | c3 db 0 |
|
- | 940 | c4 db 0 |
|
- | 941 | c5 db 0 |
|
- | 942 | c6 db 0 |
|
- | 943 | c7 db 0 |
|
- | 944 | c8 db 0 |
|
- | 945 | c9 db 0 |
|
- | 946 | c10 db 0 |
|
- | 947 | c11 db 0 |
|
- | 948 | c12 db 0 |
|
- | 949 | ends |
|
819 | ;----------------------------------------------------------------------------------------------------/ |
950 | |
820 | 951 | cm db 12 dup(0) |
|
821 | color dd 00000000h ; õðàíèò çíà÷åíèå âûáðàííîãî öâåòà |
952 | color dd 00000000h ; åà ¨â § 票¥ ¢ë¡à ®£® 梥â |
822 | color2 dd 00FFFFFFh ; õðàíèò çíà÷åíèå âòîðîãî âûáðàííîãî öâåòà |
953 | color2 dd 00FFFFFFh ; åà ¨â § 票¥ ¢â®à®£® ¢ë¡à ®£® 梥â |
- | 954 | mouse_x dd 0 ; åà ¨â £«®¡ «ìãî å ª®®à¤¨ âã ¬ëè¨ |
|
823 | mouse_x dd 0 ; õðàíèò ãëîáàëüíóþ õ êîîðäèíàòó ìûøè |
955 | mouse_y dd 0 ; åà ¨â £«®¡ «ìãî ã ª®®à¤¨ âã ¬ëè¨ |
824 | mouse_y dd 0 ; õðàíèò ãëîáàëüíóþ ó êîîðäèíàòó ìûøè |
956 | mouse_f dd 0 ; åà ¨â ¤ ë¥ ® ⮬ ª ª ï ª®¯ª ¬ëè¨ ¡ë« ¦ â |
825 | desctop_w dd 0 ; õðàíèò øèðèíó ýêðàíà |
957 | desctop_w dd 0 ; åà ¨â è¨à¨ã íªà |
826 | sc system_colors ; õðàíèò ñòðóêòóðó ñèñòåìíûõ öâåòîâ ñêèíà |
958 | sc system_colors ; åà ¨â áâàãªâãàã á¨á⥬ëå 梥⮢ ᪨ |
827 | title db 'Palitra v0.4',0 ; õðàíèò èìÿ ïðîãðàììû |
959 | title db 'Palitra v0.5',0 ; åà ¨â ¨¬ï ¯à®£à ¬¬ë |
828 | hex db '#',0 ; äëÿ âûâîäà ðåø¸òêè êàê òåêñòà |
960 | hex db '#',0 ; ¤«ï ¢ë¢®¤ à¥èñ⪨ ª ª ⥪áâ |
829 | cname db 'RGBAx' ; õðàíèò ðàçðÿäû öâåòîâ (red,green,blue) x-ìåòêà êîíöà |
961 | cname db 'RGBAx' ; åà ¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª ª®æ |
830 | cred db 0 ; õðàíèì êðàñíûé ñïåêðò |
962 | cred db 0 ; åà ¨¬ ªà áë© á¯¥ªàâ |
831 | cgreen db 0 ; õðàíèì çåëåíûé ñïåêòð |
963 | cgreen db 0 ; åà ¨¬ §¥«¥ë© ᯥªâà |
- | 964 | cblue db 0 ; åà ¨¬ ᨨ© ᯥªâà |
|
832 | cblue db 0 ; õðàíèì ñèíèé ñïåêòð |
965 | calpha db 0 ; åà ¨¬ ¯à®§à ç®áâì |
833 | calpha db 0 ; õðàíèì ïðîçðà÷íîñòü |
966 | larrow db 0x1A,0 |
834 | buff db '000',0 |
967 | buff db '000',0 |
835 | bnext db 'NEXT BACKGROUND',0; èìÿ êíîïêè |
- | |
836 | pnext dd 0 ; ñ÷åò÷èê ïåðåêëþ÷åíèÿ ïàëèòðû |
- | |
- | 968 | bground db 'BACKGROUND',0 ; ¨¬ï ª®¯ª¨ - 14 |
|
837 | 969 | pnext dd 0 ; áç¥â稪 ¯¥à¥ª«îç¥¨ï ¯ «¨âàë |