Subversion Repositories Kolibri OS

Rev

Rev 3004 | Rev 3088 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3004 Rev 3026
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
;; compiler:     FASM 1.69.31                                                                        |
5
;; compiler:     FASM 1.69.31                                                                        |
6
;; version:      0.2.0                                                                               |
6
;; version:      0.3.0                                                                               |
7
;; last update:  15/09/2012                                                                          |
7
;; last update:  08/11/2012                                                                          |
8
;; e-mail:       dr.steshin@gmail.com                                                                |
8
;; e-mail:       dr.steshin@gmail.com                                                                |
9
;.....................................................................................................
9
;.....................................................................................................
10
;; History:                                                                                          |
10
;; History:                                                                                          |
11
;; 0.1.0 - ¥à¢ ï ¢¥àá¨ï ¯à®£à ¬¬ë                                                                   |
11
;; 0.1.0 - Ïåðâàÿ âåðñèÿ ïðîãðàììû.                                                                  |
12
;; 0.2.0 - ˆá¯à ¢«¥­® ¯®¯ ¤ ­¨¥ ¢ á¥âªã, ¡¥à¥âáï ¡«¨¦ ©è¨© ¯® ¤¨ £®­ «¨ ¯¨ªá¥«ì.                     |
12
;; 0.2.0 - Èñïðàâëåíî ïîïàäàíèå â ñåòêó, áåðåòñÿ áëèæàéøèé ïî äèàãîíàëè ïèêñåëü.                     |
13
;;       - „®¡ ¢«¥­ë ¯®«§ã­ª¨, ¤«ï ॣ㫨஢ ­¨ï rgb á®áâ ¢«ïîé¨å æ¢¥â  ¨ ¢ë¢®¤ íâ¨å á®áâ ¢«ïîé¨å.   |
13
;;       - Äîáàâëåíû ïîëçóíêè, äëÿ ðåãóëèðîâàíèÿ rgb ñîñòàâëÿþùèõ öâåòà è âûâîä ýòèõ ñîñòàâëÿþùèõ.   |
14
;;       - “¡à ­ ¢ë¢®¤ æ¢¥â  ¢ ¡¨­ à­®¬ ¢¨¤¥ (¯®ª  §  ­¥ ­ ¤®¡­®áâìî ¨ ­¥  ªâã «ì­®áâìî).            |
14
;;       - Óáðàí âûâîä öâåòà â áèíàðíîì âèäå (ïîêà çà íå íàäîáíîñòüþ è íå àêòóàëüíîñòüþ).            |
-
 
15
;;       - Ìåëêàÿ êîñìåòèêà.                                                                         |
-
 
16
;; 0.3.0 - Äîáàâëåíî ïåðåêëþ÷åíèå âèäîâ öâåòîâûõ ñõåì (êíîïêà NEXT)                                  |
-
 
17
;;       - Óëó÷øåíû ïîëçóíêè, ïðîèçâîäèòñÿ îáðàáîòêà íàæàòèÿ ðÿäîì ñ ïîëçóíêîì.                      |
-
 
18
;;       - ×èñëî ñåòîê â öâåòîâîé ñõåìå óìåíüøåíî ñ 6 äî 4 (êðàòíîñòü 256, èíà÷å äóáëèðîâàíèå öâåòà).|
15
;;       - Œ¥«ª ï ª®á¬¥â¨ª .                                                                         |
19
;;       - Ìåëêàÿ êîñìåòèêà.                                                                         |
16
;.....................................................................................................
20
;.....................................................................................................
17
;; All rights reserved.                                                                              |
21
;; All rights reserved.                                                                              |
18
;;                                                                                                   |
22
;;                                                                                                   |
19
;; Redistribution and use in source and binary forms, with or without modification, are permitted    |
23
;; Redistribution and use in source and binary forms, with or without modification, are permitted    |
20
;; provided that the following conditions are met:                                                   |
24
;; provided that the following conditions are met:                                                   |
Line 38... Line 42...
38
;....................................................................................................|
42
;....................................................................................................|
Line 39... Line 43...
39
 
43
 
40
 
44
 
41
;#___________________________________________________________________________________________________
45
;#___________________________________________________________________________________________________
42
;****************************************************************************************************|
46
;****************************************************************************************************|
43
; ‡€ƒŽ‹Ž‚ŽŠ ˆ‘Ž‹Ÿ…ŒŽƒŽ ”€‰‹€ ˆ‹Ž†…ˆŸ „‹Ÿ ŠŽ‹ˆˆ Ž‘                                             |
47
; ÇÀÃÎËÎÂÎÊ ÈÑÏÎËÍßÅÌÎÃÎ ÔÀÉËÀ ÏÐÈËÎÆÅÍÈß ÄËß ÊÎËÈÁÐÈ ÎÑ                                             |
44
;----------------------------------------------------------------------------------------------------/
48
;----------------------------------------------------------------------------------------------------/
Line 45... Line 49...
45
  use32
49
  use32
Line 52... Line 56...
52
  dd	 0x1000
56
  dd	 0x1000
53
  dd	 0x1000
57
  dd	 0x1000
54
  dd	 0x0
58
  dd	 0x0
55
  dd	 0x0
59
  dd	 0x0
Line 56... Line 60...
56
 
60
 
-
 
61
include '../../../macros.inc'
Line 57... Line 62...
57
include 'macros.inc'
62
 
58
 
63
 
59
START:
64
START:
60
;#___________________________________________________________________________________________________
65
;#___________________________________________________________________________________________________
61
;****************************************************************************************************|
66
;****************************************************************************************************|
62
; Ž‘Ž‚Ž‰ –ˆŠ‹ Žƒ€ŒŒ› - Ž€Ž’Š€ ‘Ž›’ˆ‰                                                        |
67
; ÎÑÍÎÂÍÎÉ ÖÈÊË ÏÐÎÃÐÀÌÌÛ - ÎÁÐÀÁÎÒÊÀ ÑÎÁÛÒÈÉ                                                        |
63
;----------------------------------------------------------------------------------------------------/
68
;----------------------------------------------------------------------------------------------------/
64
red:
69
red:
65
    call draw_window			  ; ¢ë§ë¢ ¥¬ ¯¥à¥à¨á®¢ªã ®ª­  ¯à¨«®¦¥­¨ï
70
    call draw_window                      ; âûçûâàåì ïåðåðèñîâêó îêíà ïðèëîæåíèÿ
66
still:
71
still:
67
    mcall   10				  ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
72
    mcall   10                            ; ôóíêöèÿ 10 - æäàòü ñîáûòèÿ
68
    cmp     eax,1			  ; ¯¥à¥à¨á®¢ âì ®ª­® ?
73
    cmp     eax,1                         ; ïåðåðèñîâàòü îêíî ?
69
    je	    red 			  ; ¥á«¨ ¤  - ­  ¬¥âªã red
74
    je      red                           ; åñëè äà - íà ìåòêó red
70
    cmp     eax,2			  ; ­ ¦ â  ª« ¢¨è  ?
75
    cmp     eax,2                         ; íàæàòà êëàâèøà ?
71
    je	    key 			  ; ¥á«¨ ¤  - ­  key
76
    je      key                           ; åñëè äà - íà key
72
    cmp     eax,3			  ; ­ ¦ â  ª­®¯ª  ?
77
    cmp     eax,3                         ; íàæàòà êíîïêà ?
73
    je	    button			  ; ¥á«¨ ¤  - ­  button
78
    je      button                        ; åñëè äà - íà button
Line 74... Line 79...
74
    jmp     still			  ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
79
    jmp     still                         ; åñëè äðóãîå ñîáûòèå - â íà÷àëî öèêëà
75
;end_still
80
;end_still
76
 
81
 
77
 
82
 
Line 78... Line 83...
78
key:					  ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
83
key:                                      ; íàæàòà êëàâèøà íà êëàâèàòóðå
79
    mcall   2				  ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah) (âãâ ¢ ¯à¨­æ¨¯¥ ­¥ ­ã¦­ )
84
    mcall   2                             ; ôóíêöèÿ 2 - ñ÷èòàòü êîä ñèìâîëà (â ah) (òóò â ïðèíöèïå íå íóæíà)
80
    jmp     still			  ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
85
    jmp     still                         ; âåðíóòüñÿ ê íà÷àëó öèêëà
81
;end_key
86
;end_key
-
 
87
 
-
 
88
button:
-
 
89
    mcall   17                            ; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè
-
 
90
    cmp     ah, 1                         ; åñëè íàæàòà êíîïêà ñ íîìåðîì 1,
-
 
91
    jz      bexit                         ; âûõîäèì
-
 
92
  ;îáðàáîòêà êíîïêè Next
-
 
93
    cmp     ah, 11                        ; åñëè íàæàòà êíîïêà NEXT
-
 
94
    jne     next_bg                       ; âûõîäèì
-
 
95
    inc     [pnext]                       ; óâåëè÷èâàåì ïðè íàæàòèè íîìåð ïàëèòðû
-
 
96
    mov     eax,[pnext]
-
 
97
    cmp     al,6
-
 
98
    jne     next_redraw
-
 
99
    xor     eax,eax
-
 
100
    mov     [pnext],eax
-
 
101
  next_redraw:
-
 
102
    call    draw_palitra                  ; ÐÈÑÓÅÌ ÏÀËÈÒÐÓ
-
 
103
    ;call    draw_result                   ; ÐÈÑÓÅÌ ÐÅÇÓËÜÒÀÒ
-
 
104
    jmp     still
-
 
105
 
-
 
106
  next_bg:
-
 
107
    cmp     ah, 12                        ; åñëè íàæàòà êíîïêà BACKGROUND
-
 
108
    jne     next_end                      ; âûõîäèì
-
 
109
	mcall   15,4,1
82
 
110
	mcall   15,1,1,1
83
button:
111
	mcall   15,5,color,0,3*1*1
84
    mcall   17				  ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
112
	mcall   15,3
85
    cmp     ah, 1			  ; ¥á«¨ ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
113
	jne     next_redraw
86
    jz	    bexit			  ; ¢ë室¨¬
114
  next_end:
87
    cmp     ah, 7
115
    cmp     ah, 7
88
    jne     color_button
116
    jne     color_button
89
    call    mouse_get
117
    call    mouse_get
90
    jmp     still
118
    jmp     still
91
  color_button:
119
  color_button:
92
    push    eax
120
    push    eax
93
    call    mouse_local 		  ; ¯®«ã稫 «®ª «ì­ë¥ ª®®à¤¨­ âë
121
    call    mouse_local                   ; ïîëó÷èë ëîêàëüíûå êîîðäèíàòû
Line 118... Line 146...
118
    jne     still
146
    jne     still
119
    mov     [cblue],cl
147
    mov     [cblue],cl
120
    call    set_spectr
148
    call    set_spectr
121
    jmp     still
149
    jmp     still
122
  bexit:
150
  bexit:
123
    mcall -1				  ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
151
    mcall -1                              ; èíà÷å êîíåö ïðîãðàììû
124
;end_button
152
;end_button
Line 125... Line 153...
125
 
153
 
126
;#___________________________________________________________________________________________________
154
;#___________________________________________________________________________________________________
127
;****************************************************************************************************|
155
;****************************************************************************************************|
128
; ƒ‹€‚›‰ ŒŽ„“‹œ Ž’ˆ‘Ž‚Šˆ ŽŠ€ ˆ ‹…Œ…’Ž‚ ˆ‹Ž†…ˆŸ                                               |
156
; ÃËÀÂÍÛÉ ÌÎÄÓËÜ ÎÒÐÈÑÎÂÊÈ ÎÊÍÀ È ÝËÅÌÅÍÒÎÂ ÏÐÈËÎÆÅÍÈß                                               |
129
;----------------------------------------------------------------------------------------------------/
157
;----------------------------------------------------------------------------------------------------/
130
draw_window:
158
draw_window:
131
    mov     eax,12			  ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
159
    mov     eax,12                        ; ôóíêöèÿ 12: îçíà÷àåò, ÷òî áóäåò ðèñîâàòüñÿ îêíî
132
    mov     ebx,1			  ; 1,­ ç «® à¨á®¢ ­¨ï
160
    mov     ebx,1                         ; 1,íà÷àëî ðèñîâàíèÿ
133
    int     0x40			  ; à¥à뢠­¨¥
161
    int     0x40                          ; Ïðåðûâàíèå
134
 
162
 
135
    mov     eax,48			  ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­
163
    mov     eax,48                        ; Ôóíêöèÿ 48 - ñòèëè îòîáðàæåíèÿ îêîí
136
    mov     ebx,3			  ; ®¤äã­ªæ¨ï 3 - ¯®«ãç¨âì áâ ­¤ àâ­ë¥ æ¢¥â  ®ª®­.
164
    mov     ebx,3                         ; Ïîäôóíêöèÿ 3 - ïîëó÷èòü ñòàíäàðòíûå öâåòà îêîí.
137
    mov     ecx,sc			  ; “ª § â¥«ì ­  ¡ãä¥à à §¬¥à®¬ edx ¡ ©â, ¯®¤ áâàãªâãàã
165
    mov     ecx,sc                        ; Óêàçàòåëü íà áóôåð ðàçìåðîì edx áàéò, ïîä ñòðóêòóðó
138
    mov     edx,sizeof.system_colors	  ;  §¬¥à â ¡«¨æë 梥⮢ (¤®«¦¥­ ¡ëâì 40 ¡ ©â)
166
    mov     edx,sizeof.system_colors      ; Ðàçìåð òàáëèöû öâåòîâ (äîëæåí áûòü 40 áàéò)
139
    int     0x40			  ; à¥à뢠­¨¥
167
    int     0x40                          ; Ïðåðûâàíèå
140
 
168
 
141
    mov     eax,48			  ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­.
169
    mov     eax,48                        ; Ôóíêöèÿ 48 - ñòèëè îòîáðàæåíèÿ îêîí.
142
    mov     ebx,4			  ; ®¤äã­ªæ¨ï 4 - ¢®§¢à é ¥â eax = ¢ëá®â  ᪨­ .
170
    mov     ebx,4                         ; Ïîäôóíêöèÿ 4 - âîçâðàùàåò eax = âûñîòà ñêèíà.
143
    int     0x40			  ; à¥à뢠­¨¥
171
    int     0x40                          ; Ïðåðûâàíèå
144
    mov     ecx,eax			  ; ‡ ¯®¬¨­ ¥¬ ¢ëá®âã ᪨­ 
172
    mov     ecx,eax                       ; Çàïîìèíàåì âûñîòó ñêèíà
145
 
173
 
146
    xor     eax,eax			  ; Žç¨é ¥¬ eax (mov eax,0) (”ã­ªæ¨ï 0)
174
    xor     eax,eax                       ; Î÷èùàåì eax (mov eax,0) (Ôóíêöèÿ 0)
147
    mov     ebx,200 shl 16+325		  ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
175
    mov     ebx,200 shl 16+250            ; [êîîðäèíàòà ïî îñè x]*65536 + [ðàçìåð ïî îñè x]
148
    add     ecx,200 shl 16+168		  ; ‚ëá®â  ᪨­  + [ª®®à¤¨­ â  ¯® y]*65536 + [à §¬¥à ¯® y]
176
    add     ecx,200 shl 16+195            ; Âûñîòà ñêèíà + [êîîðäèíàòà ïî y]*65536 + [ðàçìåð ïî y] (168 äëÿ âåðñèè 0.2)
149
    mov     edx,[sc.work]		  ; ‚¨¤¨¬® áâ¨«ì ®ª­  ¯® ¤¥ä®«âã
177
    mov     edx,[sc.work]                 ; Âèäèìî ñòèëü îêíà ïî äåôîëòó
150
    or	    edx,0x34000000		  ; ˆ«¨ ®ª­® ᮠ᪨­®¬ 䨪á¨à®¢ ­­ëå à §¬¥à®¢
178
    or      edx,0x34000000                ; Èëè îêíî ñî ñêèíîì ôèêñèðîâàííûõ ðàçìåðîâ
151
    mov     edi,title			  ; ‡ £®«®¢®ª ®ª­ 
179
    mov     edi,title                     ; Çàãîëîâîê îêíà
152
    int     0x40			  ; à¥à뢠­¨¥
180
    int     0x40                          ; Ïðåðûâàíèå
153
 
181
 
154
    call    draw_palitra		  ; ˆ‘“…Œ €‹ˆ’“
182
    call    draw_palitra                  ; ÐÈÑÓÅÌ ÏÀËÈÒÐÓ
155
    call    draw_result 		  ; ˆ‘“…Œ …‡“‹œ’€’
183
    call    draw_result                   ; ÐÈÑÓÅÌ ÐÅÇÓËÜÒÀÒ
156
 
184
 
157
    mov     eax,8			  ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã
185
    mov     eax,8                         ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó
158
    mov     ebx,89 shl 16+222		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
186
    mov     ebx,89 shl 16+147             ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
159
    mov     ecx,9 shl 16+147		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
187
    mov     ecx,9 shl 16+147              ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
160
    mov     edx,0x60000007		  ;  ç «ì­®¥ ID ª­®¯®ª - 0xXYnnnnnn
188
    mov     edx,0x60000007                ; Íà÷àëüíîå ID êíîïîê - 0xXYnnnnnn
Line 161... Line 189...
161
    int     0x40
189
    int     0x40
162
 
190
 
163
    mov     ebx,10 shl 16+8		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® å [ª-â  x]*65536 + [à §¬¥à]
191
    mov     ebx,9 shl 16+12               ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
164
    mov     edx,0x60000008		  ; ID = 8
192
    mov     edx,0x60000008                ; ID = 8
165
    mov     ecx,45 shl 16+85		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
193
    mov     ecx,45 shl 16+85              ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
166
    int     0x40			  ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ red
194
    int     0x40                          ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì red
167
    add     ebx,29 shl 16		  ; „®¡ ¢«ï¥¬
195
    add     ebx,26 shl 16                 ; Äîáàâëÿåì
168
    inc     edx 			  ; ID = 9
196
    inc     edx                           ; ID = 9
169
    int     0x40			  ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ green
197
    int     0x40                          ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì green
170
    add     ebx,29 shl 16		  ; „®¡ ¢«ï¥¬
198
    add     ebx,26 shl 16                 ; Äîáàâëÿåì
Line 171... Line 199...
171
    inc     edx 			  ; ID = 10
199
    inc     edx                           ; ID = 10
172
    int     0x40			  ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ blue
200
    int     0x40                          ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì blue
173
 
201
 
Line -... Line 202...
-
 
202
    mov     eax,12                        ; ôóíêöèÿ 12: îçíà÷àåò, ÷òî áóäåò ðèñîâàòüñÿ îêíî
-
 
203
    mov     ebx,2                         ; 2 - êîíåö ðèñîâàíèÿ
-
 
204
    int     0x40                          ; Ïðåðûâàíèå
-
 
205
 
-
 
206
    ;.................................................................................................
-
 
207
    ; Îòðèñîâêà íèæíåé ïàíåëè
-
 
208
    ;.................................................................................................
-
 
209
    mov     eax,8                         ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó
-
 
210
    mov     ebx,4 shl 16+64               ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
-
 
211
    mov     ecx,169 shl 16+16             ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
-
 
212
    mov     edx,11                        ; ID = 11
-
 
213
    mov     esi,[sc.work_button]          ; öâåò
-
 
214
    int     0x40
-
 
215
 
-
 
216
    mov     ebx,80 shl 16+102             ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
-
 
217
    mov     edx,12                        ; ID = 11
-
 
218
    int     0x40
-
 
219
	
-
 
220
	
-
 
221
    mov     eax,4                         ; 4 - âûâåñòè ñòðîêó òåêñòà â îêíî
-
 
222
    mov     ebx,25 shl 16+174             ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y]
-
 
223
    mov     ecx,[sc.work_button_text]     ; 0xX0RRGGBB (RR, GG, BB çàäàþò öâåò òåêñòà)
-
 
224
    mov     edx,bnext                     ; óêàçàòåëü íà íà÷àëî ñòðîêè
-
 
225
    ;mov     esi,1                        ; âûâîäèòü esi ñèìâîëîâ
-
 
226
    int     0x40
-
 
227
 
-
 
228
    ;mov     ebx,247 shl 16+64             ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð]
-
 
229
    ;mov     edx,12                        ; ID = 12
-
 
230
    ;int     0x40
-
 
231
 
-
 
232
    mov     eax,38                        ; Ôóíêöèÿ 38 - íàðèñîâàòü îòðåçîê.
-
 
233
    mov     ebx,4 shl 16+236              ;[êîîðäèíàòà íà÷àëà ïî îñè x]*65536 + [êîîðäèíàòà êîíöà ïî îñè x] 
174
    mov     eax,12			  ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
234
    mov     ecx,163 shl 16+163            ;[êîîðäèíàòà íà÷àëà ïî îñè y]*65536 + [êîîðäèíàòà êîíöà ïî îñè y] 
Line 175... Line 235...
175
    mov     ebx,2			  ; 1,­ ç «® à¨á®¢ ­¨ï
235
    mov     edx,0x00666666                ;0x00RRGGBB - öâåò 
176
    int     0x40			  ; à¥à뢠­¨¥
236
    int     0x40
177
 
237
 
178
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
238
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
Line 179... Line 239...
179
 
239
 
180
 
240
 
181
;#___________________________________________________________________________________________________
241
;#___________________________________________________________________________________________________
182
;****************************************************************************************************|
242
;****************************************************************************************************|
183
; ‹ŽŠ ‚‘ŽŒŽƒ€’…‹œ›• Ž–…„“ ˆ ”“Š–ˆ‰ ˆ‹Ž†…ˆŸ                                                 |
243
; ÁËÎÊ ÂÑÏÎÌÎÃÀÒÅËÜÍÛÕ ÏÐÎÖÅÄÓÐ È ÔÓÍÊÖÈÉ ÏÐÈËÎÆÅÍÈß                                                 |
184
;----------------------------------------------------------------------------------------------------/
244
;----------------------------------------------------------------------------------------------------/
185
 
245
 
186
mouse_global:
246
mouse_global:
187
    ;.................................................................................................
247
    ;.................................................................................................
188
    ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨
248
    ; Ïîëó÷àåì êîîðäèíàòû ìûøè
189
    ;.................................................................................................
249
    ;.................................................................................................
190
    mov     eax,37			  ; ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
250
    mov     eax,37                        ; Ôóíêöèÿ 37 - ðàáîòà ñ ìûøüþ
191
    mov     ebx,0			  ; ­ ¬ ­ã¦­ë £«®¡ «ì­ë¥ ª®®à¤¨­ âë
251
    mov     ebx,0                         ; íàì íóæíû ãëîáàëüíûå êîîðäèíàòû
192
    int     0x40			  ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
252
    int     0x40                          ; eax = x*65536 + y, (x,y)=êîîðäèíàòû êóðñîðà ìûøè
193
    mov     ecx,eax			  ;
253
    mov     ecx,eax                       ;
194
    shr     ecx,16			  ; ecx = x+1
254
    shr     ecx,16                        ; ecx = x+1
Line 195... Line 255...
195
    movzx   edx,ax			  ; edx = y+1
255
    movzx   edx,ax                        ; edx = y+1
196
    dec     ecx 			  ; ecx = x
256
    dec     ecx                           ; ecx = x
197
    dec     edx 			  ; edx = y
257
    dec     edx                           ; edx = y
198
    mov     [mouse_x],ecx		  ; mouse_x = x
258
    mov     [mouse_x],ecx                 ; mouse_x = x
199
    mov     [mouse_y],edx		  ; mouse_y = y
259
    mov     [mouse_y],edx                 ; mouse_y = y
200
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
260
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
201
;end_mouse_global
261
;end_mouse_global
202
 
262
 
203
mouse_local:
263
mouse_local:
204
    ;.................................................................................................
264
    ;.................................................................................................
205
    ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
265
    ; Ïîëó÷àåì êîîðäèíàòû ìûøè îòíîñèòåëüíî îêíà
206
    ;.................................................................................................
266
    ;.................................................................................................
207
    mov     eax,37			  ; ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
267
    mov     eax,37                        ; Ôóíêöèÿ 37 - ðàáîòà ñ ìûøüþ
208
    mov     ebx,1			  ; ­ ¬ ­ã¦­ë £«®¡ «ì­ë¥ ª®®à¤¨­ âë
268
    mov     ebx,1                         ; íàì íóæíû ãëîáàëüíûå êîîðäèíàòû
209
    int     0x40			  ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
269
    int     0x40                          ; eax = x*65536 + y, (x,y)=êîîðäèíàòû êóðñîðà ìûøè
210
    mov     ecx,eax			  ;
270
    mov     ecx,eax                       ;
Line 211... Line 271...
211
    shr     ecx,16			  ; ecx = x+1
271
    shr     ecx,16                        ; ecx = x+1
212
    movzx   edx,ax			  ; edx = y+1
272
    movzx   edx,ax                        ; edx = y+1
213
    dec     ecx 			  ; ecx = x
273
    dec     ecx                           ; ecx = x
214
    dec     edx 			  ; edx = y
274
    dec     edx                           ; edx = y
215
    mov     [mouse_x],ecx		  ; mouse_x = x
275
    mov     [mouse_x],ecx                 ; mouse_x = x
216
    mov     [mouse_y],edx		  ; mouse_y = y
276
    mov     [mouse_y],edx                 ; mouse_y = y
217
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
277
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
218
;end_mouse_local
278
;end_mouse_local
219
 
279
 
220
desktop_get:
280
desktop_get:
221
    ;.................................................................................................
281
    ;.................................................................................................
222
    ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­ 
282
    ; Îïðåäåëÿåì øèðèíó ýêðàíà
223
    ;.................................................................................................
283
    ;.................................................................................................
224
    mov     eax,14			  ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­  (eax = [xsize]*65536 + [ysize])
284
    mov     eax,14                        ; Îïðåäåëÿåì øèðèíó ýêðàíà (eax = [xsize]*65536 + [ysize])
Line 225... Line 285...
225
    int     0x40			  ; xsize = à §¬¥à ¯® £®à¨§®­â «¨ - 1
285
    int     0x40                          ; xsize = ðàçìåð ïî ãîðèçîíòàëè - 1 
226
    mov     ebx,eax			  ;
286
    mov     ebx,eax                       ;
227
    shr     ebx,16			  ; ebx = xsize-1
287
    shr     ebx,16                        ; ebx = xsize-1
228
    ;movzx   edx,ax                       ;; edx = ysize-1 («¨è­¨© ª®¤)
288
    ;movzx   edx,ax                       ;; edx = ysize-1 (ëèøíèé êîä)
229
    inc     ebx 			  ; ebx = xsize
289
    inc     ebx                           ; ebx = xsize
230
    ;inc     edx                          ;; edx = ysize («¨è­¨© ª®¤)
290
    ;inc     edx                          ;; edx = ysize (ëèøíèé êîä)
231
    mov     [desctop_w],ebx
291
    mov     [desctop_w],ebx
232
    ret
292
    ret
Line 233... Line 293...
233
;end_desktop_get
293
;end_desktop_get
234
 
294
 
235
mouse_get:
295
mouse_get:
236
    mov     esi,2			  ; ŠŽ‘’›‹œ: ä« £ ¤«ï ¨§¡¥¦ ­¨ï § æ¨ª«¨¢ ­¨ï
296
    mov     esi,2                         ; ÊÎÑÒÛËÜ: ôëàã äëÿ èçáåæàíèÿ çàöèêëèâàíèÿ
237
    call    mouse_global
297
    call    mouse_global
238
    call    desktop_get
298
    call    desktop_get
239
    re_mouse_loop:			  ; ŠŽ‘’›‹œ: ¬¥âª  ¤«ï ¢®§¢à â  ¥á«¨ ¯®¯ «¨ ¢ á¥âªã
299
    re_mouse_loop:                        ; ÊÎÑÒÛËÜ: ìåòêà äëÿ âîçâðàòà åñëè ïîïàëè â ñåòêó
240
      mov     ebx,[desctop_w]
300
      mov     ebx,[desctop_w]
241
      imul    ebx,[mouse_y]		  ; ebx = y*xsize
301
      imul    ebx,[mouse_y]               ; ebx = y*xsize
242
      add     ebx,[mouse_x]		  ; ebx = y*xsize+x
302
      add     ebx,[mouse_x]               ; ebx = y*xsize+x
243
 
303
 
244
      ;.................................................................................................
304
      ;.................................................................................................
245
      ; ¥à¥¬ 梥â á ¯ «¨âàë ¢ ¯¥à¥¬¥­­ãî
305
      ; Áåðåì öâåò ñ ïàëèòðû â ïåðåìåííóþ
246
      ;.................................................................................................
306
      ;.................................................................................................
247
      mov     eax,35			  ; ”ã­ªæ¨ï ¢§ïâ¨ï 梥â 
307
      mov     eax,35                      ; Ôóíêöèÿ âçÿòèÿ öâåòà
248
      ;mov     ebx,ecx                    ;; ebx = y*xsize+x («¨è­¨© ª®¤)
308
      ;mov     ebx,ecx                    ;; ebx = y*xsize+x (ëèøíèé êîä)
249
      int     0x40			  ; ®«ãç ¥¬ 梥⠢ eax
309
      int     0x40                        ; Ïîëó÷àåì öâåò â eax
250
      cmp     eax,[sc.work]		  ; ‘à ¢­¨¢ ¥¬ á ä®­®¬ ¯à¨«®¦¥­¨ï
310
      cmp     eax,[sc.work]               ; Ñðàâíèâàåì ñ ôîíîì ïðèëîæåíèÿ
251
      je      mouse_err 		  ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
311
      je      mouse_err                   ; Åñëè ýòî îí - òî íè÷åãî íå äåëàåì
252
      cmp     eax,0x222222		  ; ‘à ¢­¨¢ ¥¬ á 梥⮬ á¥âª¨
312
      cmp     eax,0x222222                ; Ñðàâíèâàåì ñ öâåòîì ñåòêè
253
      je      mouse_err 		  ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
313
      je      mouse_err                   ; Åñëè ýòî îí - òî íè÷åãî íå äåëàåì
254
      jmp     mouse_set 		  ; ŠŽ‘’›‹œ: ¯à룠¥¬ çâ®¡ë ­¥ ¡à âì 梥â á¥âª¨
314
      jmp     mouse_set                   ; ÊÎÑÒÛËÜ: ïðûãàåì ÷òîáû íå áðàòü öâåò ñåòêè
255
    mouse_err:				  ; ŠŽ‘’›‹œ: ¥á«¨ ¯®¯ «¨ ¢ á¥âªã ¨«¨ ä®­
315
    mouse_err:                            ; ÊÎÑÒÛËÜ: åñëè ïîïàëè â ñåòêó èëè ôîí
256
      inc     [mouse_y] 		  ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ á­ ç «  ¯® å
316
      inc     [mouse_y]                   ; ÊÎÑÒÛËÜ: ñìåùàåì ïî äèàãîíàëè ñíà÷àëà ïî õ
Line 257... Line 317...
257
      inc     [mouse_x] 		  ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ ¯®â®¬ ¯® ã
317
      inc     [mouse_x]                   ; ÊÎÑÒÛËÜ: ñìåùàåì ïî äèàãîíàëè ïîòîì ïî ó
258
      dec     esi			  ; ŠŽ‘’›‹œ: “¬¥­ìè ¥¬ ä« £
318
      dec     esi                         ; ÊÎÑÒÛËÜ: Óìåíüøàåì ôëàã
259
      cmp     esi,0			  ; ŠŽ‘’›‹œ: ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
319
      cmp     esi,0                       ; ÊÎÑÒÛËÜ: Ñðàâíèâàåì ñ íóëåì
260
    jz	      mouse_exit		  ; ŠŽ‘’›‹œ: …᫨ ­®«ì ⮠ᤥ« «¨ ¢áñ çâ® ¬®£«¨
320
    jz        mouse_exit                  ; ÊÎÑÒÛËÜ: Åñëè íîëü òî ñäåëàëè âñ¸ ÷òî ìîãëè
261
    jmp    re_mouse_loop		  ; ŠŽ‘’›‹œ: …᫨ ­¥ ­®«ì â® ¯®¯à®¡ã¥¬ ¢§ïâì á®á¥«­¨© ¯¨ªá¥«ì
321
    jmp    re_mouse_loop                  ; ÊÎÑÒÛËÜ: Åñëè íå íîëü òî ïîïðîáóåì âçÿòü ñîñåëíèé ïèêñåëü
262
    mouse_set:
322
    mouse_set:
263
    mov     [color],eax 		  ; ˆ­ ç¥ § ¯®¬¨­ ¥¬ ­®¢ë© 梥â
323
    mov     [color],eax                   ; Èíà÷å çàïîìèíàåì íîâûé öâåò
264
    call    draw_result 		  ; ‚뢮¤¨¬ १ã«ìâ â
324
    call    draw_result                   ; Âûâîäèì ðåçóëüòàò
265
    mouse_exit:
325
    mouse_exit:
266
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
326
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
267
;end_mouse_get----------------------------------------------------------------------------------------
327
;end_mouse_get----------------------------------------------------------------------------------------
268
 
328
 
269
draw_palitra:
329
draw_palitra:
270
    ;.................................................................................................
330
    ;.................................................................................................
271
    ; Žâà¨á®¢ª  ä®­  ¯®¤ ª­®¯ª¨
331
    ; Îòðèñîâêà ôîíà ïîä êíîïêè
272
    ;.................................................................................................
332
    ;.................................................................................................
273
    mov     eax,13			  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
333
    mov     eax,13                        ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
274
    mov     edx,0x222222		  ; 梥â
334
    mov     edx,0x222222                  ; öâåò
275
    mov     ecx,9 shl 16+73		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
335
    mov     ecx,9 shl 16+73               ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
276
    mov     esi,2			  ; ‘ç¥â稪 «¨­¨© ¯®¤«®¦¥ª
336
    mov     esi,2                         ; Ñ÷åò÷èê ëèíèé ïîäëîæåê
277
    re_draw:
337
    re_draw:
278
    mov     ebx,89 shl 16+73		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
338
    mov     ebx,89 shl 16+73              ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
279
    mov     edi,3			  ; ‘ç¥â稪 ª®«¨ç¥á⢠ ¯®¤«®¦¥ª
339
    mov     edi,2                         ; Ñ÷åò÷èê êîëè÷åñòâà ïîäëîæåê
280
    for_fon_loop:
340
    for_fon_loop:
281
      int     0x40			  ; à¥à뢠­¨¥
341
      int     0x40                        ; Ïðåðûâàíèå
282
      add     ebx,75 shl 16		  ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® å
342
      add     ebx,75 shl 16               ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî õ
283
      dec     edi			  ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
343
      dec     edi                         ; Óìåíüøàåì ñ÷åò÷èê êíîïîê
284
      cmp     edi,0			  ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
344
      cmp     edi,0                       ; Ñðàâíèâàåì ñ íóëåì
285
    jnz     for_fon_loop		  ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
345
    jnz     for_fon_loop                  ; Åñëè íå íîëü òî â íà÷àëî öèêëà
286
    dec     esi 			  ; “¬¥­ìè ¥¬ ¥£®
346
    dec     esi                           ; Óìåíüøàåì åãî
287
    cmp     esi,0			  ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
347
    cmp     esi,0                         ; Ñðàâíèâàåì ñ íóëåì
288
    mov     ecx,84 shl 16+73		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
348
    mov     ecx,84 shl 16+73              ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
289
    jnz     re_draw			  ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
349
    jnz     re_draw                       ; Åñëè íå íîëü òî â íà÷àëî öèêëà
290
 
350
 
291
    ;.................................................................................................
351
    ;.................................................................................................
292
    ; Žâà¨á®¢ª  ª­®¯®ª ¯® 横«ã
352
    ; Îòðèñîâêà êíîïîê ïî öèêëó
293
    ;.................................................................................................
353
    ;.................................................................................................
294
    mov     eax,13			  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
354
    mov     eax,13                        ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
295
    mov     edx,0x0FFFFFFF		  ; 梥â
355
    mov     edx,0x0FFFFFFF                ; öâåò
296
    mov     esi,6			  ; ‘ç¥â稪 ª®«¨ç¥á⢠  ¡§ æ¥¢ (#4,8)
356
    mov     esi,4                         ; Ñ÷åò÷èê êîëè÷åñòâà àáçàöåâ (#4,8)
297
    mov     ebx,78 shl 16+8		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
357
    mov     ebx,78 shl 16+8               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
298
    for_abz:
358
    for_abz:
299
      ;;push    esi                       ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
359
      ;;push    esi                       ; Ñîõðàíÿåì çíà÷åíèå ñ÷åò÷èêà ëèíèé â ñòåê
300
      cmp     esi,3
360
      cmp     esi,2
301
      jne     x2_line
361
      jne     x2_line
302
      mov     ebx,78 shl 16+8
362
      mov     ebx,78 shl 16+8
303
      x2_line:
363
      x2_line:
304
      add     ebx,3 shl 16		  ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
364
      add     ebx,3 shl 16                ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî x
305
      mov     edi,8			  ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
365
      mov     edi,8                       ; Ñ÷åò÷èê êîëè÷åñòâà êíîïîê â ñòðîêå
306
      for_stolbik:
366
      for_stolbik:
307
	push	edi			  ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
367
        push    edi                       ; Ñîõðàíÿåì çíà÷åíèå ñ÷åò÷èêà ëèíèé â ñòåê
308
	mov	edi,8			  ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
368
        mov     edi,8                     ; Ñ÷åò÷èê êîëè÷åñòâà êíîïîê â ñòðîêå
309
	mov	ecx,  1 shl 16+8	  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
369
        mov     ecx,  1 shl 16+8          ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]  
310
	cmp	esi,3
370
        cmp     esi,2
311
	jg	y2_line 		  ; …᫨ ¡®«ìè¥ 4 â® ¨£­®à¨¬
371
        jg      y2_line                   ; Åñëè áîëüøå 4 òî èãíîðèì
312
	mov	ecx,76 shl 16+8
372
        mov     ecx,76 shl 16+8
313
	y2_line:
373
        y2_line:
314
	add	ebx,9 shl 16		  ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
374
        add     ebx,9 shl 16              ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî x
315
	for_loop:
375
        for_loop:
316
	  add	  ecx,9 shl 16		  ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® y
376
          add     ecx,9 shl 16            ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî y
317
	  int	  0x40			  ; à¥à뢠­¨¥
377
          int     0x40                    ; Ïðåðûâàíèå
318
	  sub	  edx,32 shl 16
378
          call    sub_red
319
	  dec	  edi			  ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
379
          dec     edi                     ; Óìåíüøàåì ñ÷åò÷èê êíîïîê
320
	  cmp	  edi,0 		  ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
380
          cmp     edi,0                   ; Ñðàâíèâàåì ñ íóëåì
321
	  jnz	  for_loop		  ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
381
          jnz     for_loop                ; Åñëè íå íîëü òî â íà÷àëî öèêëà
Line -... Line 382...
-
 
382
      call    sub_green
-
 
383
      pop     edi                         ; Èíà÷å âîññòàíàâëèâàåì ñ÷åò÷èê ëèíèé
-
 
384
      dec     edi                         ; Óìåíüøàåì åãî
-
 
385
      cmp     edi,0                       ; Ñðàâíèâàåì ñ íóëåì
-
 
386
      jnz     for_stolbik                 ; Åñëè íå íîëü òî â íà÷àëî öèêëà
-
 
387
    call    sub_blue
-
 
388
    ;;pop     esi                         ; Èíà÷å âîññòàíàâëèâàåì ñ÷åò÷èê ëèíèé
-
 
389
    dec     esi                           ; Óìåíüøàåì åãî
-
 
390
    cmp     esi,0                         ; Ñðàâíèâàåì ñ íóëåì
-
 
391
    jnz     for_abz                       ; Åñëè íå íîëü òî â íà÷àëî öèêëà
-
 
392
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
-
 
393
;end_draw_palitra-------------------------------------------------------------------------------------
-
 
394
 
-
 
395
 
-
 
396
sub_red:
-
 
397
    ;.................................................................................................
-
 
398
    ; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû
-
 
399
    ;.................................................................................................
-
 
400
    push    eax
-
 
401
    mov     eax,[pnext]
-
 
402
  ;sub_red_0                              ; palitra
-
 
403
    cmp     al,0
-
 
404
    jne     sub_red_1
-
 
405
    sub     edx,0x20
-
 
406
    jmp     sub_red_e
-
 
407
  sub_red_1:                              ; random
-
 
408
    cmp     al,1
-
 
409
    jne     sub_red_2
-
 
410
    sub     edx,0x40
-
 
411
    jmp     sub_red_e
-
 
412
  sub_red_2:                              ; gree
-
 
413
    cmp     al,2
-
 
414
    jne     sub_red_3
-
 
415
    sub     edx,0x010101
-
 
416
    jmp     sub_red_e
-
 
417
  sub_red_3:                              ; red
-
 
418
    cmp     al,3
-
 
419
    jne     sub_red_4
-
 
420
    sub     edx,0x0101
-
 
421
    jmp     sub_red_e
-
 
422
  sub_red_4:                              ; green
-
 
423
    cmp     al,4
-
 
424
    jne     sub_red_5
-
 
425
    sub     edx,0x010001
-
 
426
    jmp     sub_red_e
-
 
427
  sub_red_5:                              ; blue
-
 
428
    cmp     al,5
-
 
429
    jne     sub_red_e
-
 
430
    sub     edx,0x010100
-
 
431
    jmp     sub_red_e
-
 
432
  sub_red_e:
-
 
433
    pop     eax
-
 
434
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
-
 
435
;end_sub_red------------------------------------------------------------------------------------------
-
 
436
 
-
 
437
sub_green:
-
 
438
    ;.................................................................................................
-
 
439
    ; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû
-
 
440
    ;.................................................................................................
-
 
441
    push    eax
-
 
442
    mov     eax,[pnext]
-
 
443
  ;sub_green_0
-
 
444
    cmp     al,0
-
 
445
    jne     sub_green_1
-
 
446
    sub     edx,0x2000
-
 
447
    jmp     sub_green_e
-
 
448
  sub_green_1:
-
 
449
    cmp     al,1
-
 
450
    jne     sub_green_e
-
 
451
    sub     edx,0x4000
-
 
452
    ;jmp     sub_green_e
-
 
453
  sub_green_e:
-
 
454
    pop     eax
-
 
455
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
-
 
456
;end_sub_green----------------------------------------------------------------------------------------
-
 
457
 
-
 
458
 
-
 
459
sub_blue:
-
 
460
    ;.................................................................................................
-
 
461
    ; Ðàñ÷¸ò ñìåùåíèé êðàñíîãî öâåòà â ãåíåðàöèè öâåòà ïàëèòðû
-
 
462
    ;.................................................................................................
-
 
463
    push    eax
-
 
464
    mov     eax,[pnext]
-
 
465
  ;sub_blue_0
-
 
466
    cmp     al,0
322
      sub     edx,32 shl 8
467
    jne     sub_blue_1
323
      pop     edi			  ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
468
    sub     edx,0x400000
324
      dec     edi			  ; “¬¥­ìè ¥¬ ¥£®
469
    jmp     sub_blue_e
325
      cmp     edi,0			  ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
470
  sub_blue_1:
326
      jnz     for_stolbik		  ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
471
    cmp     al,1
327
    sub     edx,48			  ; (#64,32)
472
    jne     sub_blue_e
328
    ;;pop     esi                         ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
473
    sub     edx,0x600000
329
    dec     esi 			  ; “¬¥­ìè ¥¬ ¥£®
474
    ;jmp     sub_blue_e
330
    cmp     esi,0			  ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
475
  sub_blue_e:
331
    jnz     for_abz			  ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
476
    pop     eax
332
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
477
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
333
;end_draw_palitra-------------------------------------------------------------------------------------
478
;end_sub_blue-----------------------------------------------------------------------------------------
334
 
479
 
335
draw_result:
480
draw_result:
336
    ;.................................................................................................
481
    ;.................................................................................................
337
    ; Žâà¨á®¢ª  १ã«ìâ â  æ¢¥â  ¢ hex
482
    ; Îòðèñîâêà ðåçóëüòàòà öâåòà â hex
338
    ;.................................................................................................
483
    ;.................................................................................................
339
    mov     eax,13			  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
484
    mov     eax,13                        ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
340
    mov     edx,0x222222		  ; 梥â-®¡¢®¤ª¨
485
    mov     edx,0x222222                  ; öâåò-îáâîäêè
Line 341... Line 486...
341
    mov     ebx,4 shl 16+15		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
486
    mov     ebx,4 shl 16+15               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
342
    mov     ecx,9 shl 16+15		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
487
    mov     ecx,9 shl 16+15               ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
343
    int     0x40			  ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
488
    int     0x40                          ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
344
    mov     ebx,23 shl 16+62		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
489
    mov     ebx,23 shl 16+62              ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
345
    int     0x40			  ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
490
    int     0x40                          ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
346
 
491
 
Line 347... Line 492...
347
    mov     edx,[color] 		  ; 梥â
492
    mov     edx,[color]                   ; öâåò
348
    mov     ebx,5 shl 16+13		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
493
    mov     ebx,5 shl 16+13               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
349
    mov     ecx,10 shl 16+13		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
494
    mov     ecx,10 shl 16+13              ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
350
    int     0x40			  ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
495
    int     0x40                          ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
351
    mov     edx,0xFFFFFF		  ; 梥â-ä®­ 
496
    mov     edx,0xFFFFFF                  ; öâåò-ôîíà
352
    mov     ebx,24 shl 16+60		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
497
    mov     ebx,24 shl 16+60              ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
Line 353... Line 498...
353
    int     0x40			  ; à¥à뢠­¨¥ (®á à¨áã¥â ¯àאַ㣮«ì­¨ª)
498
    int     0x40                          ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê)
354
 
499
 
355
    mov     eax,47			  ; ”ã­ªæ¨ï 47 - ¢ë¢®¤ ç¨á«  ¢ ®ª­®
500
    mov     eax,47                        ; Ôóíêöèÿ 47 - âûâîä ÷èñëà â îêíî
356
    mov     ecx,[color] 		  ; ç¨á«® (¯à¨ bl=0) ¨«¨ 㪠§ â¥«ì (¯à¨ bl=1)
501
    mov     ecx,[color]                   ; ÷èñëî (ïðè bl=0) èëè óêàçàòåëü (ïðè bl=1)
357
    mov     esi,0x0			  ; 0xX0RRGGBB
502
    mov     esi,0x0                       ; 0xX0RRGGBB
358
    mov     ebx,256+8 shl 16		  ; ¯ à ¬¥âàë ¯à¥®¡à §®¢ ­¨ï ç¨á«  ¢ ⥪áâ (HEX)
503
    mov     ebx,256+8 shl 16              ; ïàðàìåòðû ïðåîáðàçîâàíèÿ ÷èñëà â òåêñò (HEX)
359
    mov     edx,34 shl 16+13		  ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
504
    mov     edx,34 shl 16+13              ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y]
360
    int     0x40			  ; à¥à뢠­¨¥ - ¢ë¢®¤¨¬ १ã«ìâ â ¢ ®ª­® (HEX)
505
    int     0x40                          ; Ïðåðûâàíèå - âûâîäèì ðåçóëüòàò â îêíî (HEX)
361
 
506
 
362
    mov     eax,4			  ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
507
    mov     eax,4                         ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå
363
    mov     ebx,27*65536+13		  ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
508
    mov	    ebx,27*65536+13               ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
364
    mov     ecx,0x0			  ; 梥â ⥪áâ  RRGGBB
509
    mov	    ecx,0x0                       ; öâåò òåêñòà RRGGBB
365
    mov     edx,hex			  ; à¨á㥬 '#'
510
    mov	    edx,hex                       ; ðèñóåì '#'
366
    mov     esi,1			  ; ¤«¨­  ⥪áâ  ¢ ¡ ©â å
511
    mov	    esi,1                         ; äëèíà òåêñòà â áàéòàõ
367
    int     0x40
512
    int	    0x40
368
 
513
 
369
    ;.................................................................................................
514
    ;.................................................................................................
370
    ; Žâà¨á®¢ª  ¯®«¥© ¤«ï r g b §­ ç¥­¨©
515
    ; Îòðèñîâêà ïîëåé äëÿ r g b çíà÷åíèé
371
    ;.................................................................................................
516
    ;.................................................................................................
372
    call    get_spectr
517
    call    get_spectr
373
    mov     eax,13			  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
518
    mov     eax,13                        ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê Leency{
Line 374... Line 519...
374
    mov     edx,0x222222		  ; 梥â-®¡¢®¤ª¨
519
    mov     edx,0x222222                  ; öâåò-îáâîäêè
375
    mov     ebx,4 shl 16+23		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
520
    mov     ebx,4 shl 16+24               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
376
    mov     ecx,142 shl 16+15		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
521
    mov     ecx,142 shl 16+15             ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
377
    int     0x40
522
    int     0x40 
378
    mov     ebx,33 shl 16+23		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
523
    mov     ebx,33 shl 16+24              ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
379
    int     0x40
524
    int     0x40 
Line 380... Line 525...
380
    mov     ebx,62 shl 16+23		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
525
    mov     ebx,62 shl 16+24              ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
381
    int     0x40
526
    int     0x40 
382
    mov     edx,0xFFFFFF		  ; 梥â-®¡¢®¤ª¨
527
    mov     edx,0xFFFFFF                  ; öâåò-îáâîäêè
Line 383... Line 528...
383
    mov     ebx,5 shl 16+21		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
528
    mov     ebx,5 shl 16+22               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
384
    mov     ecx,143 shl 16+13		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
529
    mov     ecx,143 shl 16+13             ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
385
    int     0x40
530
    int     0x40 
Line 386... Line 531...
386
    mov     ebx,34 shl 16+21		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
531
    mov     ebx,34 shl 16+22              ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
387
    int     0x40
532
    int     0x40 
388
    mov     ebx,63 shl 16+21		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
533
    mov     ebx,63 shl 16+22              ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
389
    int     0x40
534
    int     0x40 
390
 
535
 
391
    ;.................................................................................................
536
    ;.................................................................................................
392
    ; Žâà¨á®¢ª  r g b §­ ç¥­¨©
537
    ; Îòðèñîâêà r g b çíà÷åíèé
393
    ;.................................................................................................
538
    ;.................................................................................................
Line 394... Line 539...
394
    movzx   eax,[cred]			  ; ªà á­ë©
539
    movzx   eax,[cred]                    ; êðàñíûé
395
    mov     ebx,7*65536+146		  ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
540
    mov	    ebx,7*65536+146               ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
396
    call    draw_value			  ; ¢ë¢®¤¨¬ १ã«ìâ â
541
    call    draw_value                    ; âûâîäèì ðåçóëüòàò
397
 
542
 
398
    movzx   eax,[cgreen]		  ; §¥«¥­ë©
543
    movzx   eax,[cgreen]                  ; çåëåíûé
399
    mov     ebx,36*65536+146		  ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
544
    mov	    ebx,36*65536+146              ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
400
    call    draw_value			  ; ¢ë¢®¤¨¬ १ã«ìâ â
545
    call    draw_value                    ; âûâîäèì ðåçóëüòàò
401
 
546
 
402
    movzx   eax,[cblue] 		  ; ᨭ¨©
547
    movzx   eax,[cblue]                   ; ñèíèé
Line 403... Line 548...
403
    mov     ebx,65*65536+146		  ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
548
    mov	    ebx,65*65536+146              ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé]
404
    call    draw_value			  ; ¢ë¢®¤¨¬ १ã«ìâ â
549
    call    draw_value                    ; âûâîäèì ðåçóëüòàò
405
 
550
 
406
    ;.................................................................................................
551
    ;.................................................................................................
407
    ; Ž¡­ã«ï¥¬ ä®­
552
    ; Îáíóëÿåì ôîí
408
    ;.................................................................................................
553
    ;.................................................................................................
409
    mov     eax,13			  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
554
    mov     eax,13                        ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
410
    mov     edx,[sc.work]		  ; 梥â-®¡¢®¤ª¨
555
    mov     edx,[sc.work]                 ; öâåò-îáâîäêè
411
    mov     ebx,8 shl 16+66		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
556
    mov     ebx,8 shl 16+66               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
Line 412... Line 557...
412
    mov     ecx,40 shl 16+87		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
557
    mov     ecx,40 shl 16+87              ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
413
    int     0x40
558
    int     0x40
414
 
559
 
415
    ;mov     eax,13                        ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
560
    ; mov     eax,13                        ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
416
    ;mov     edx,0x222222                  ; 梥â-®¡¢®¤ª¨
561
    ; mov     edx,0x222222                  ; öâåò-îáâîäêè
417
    ;mov     ebx,4 shl 16+23               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
562
    ; mov     ebx,4 shl 16+24               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
418
    ;mov     ecx,30 shl 16+105             ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
563
    ; mov     ecx,30 shl 16+105             ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
419
    ;int     0x40
564
    ; int     0x40
420
    ;add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
565
    ; add     ebx,29 shl 16                 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
421
    ;int     0x40
566
    ; int     0x40
422
    ;add     ebx,29 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
567
    ; add     ebx,29 shl 16                 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
423
    ;int     0x40
568
    ; int     0x40
424
 
569
 
425
    mov     eax,13			  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
570
    mov     eax,13                        ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
Line 426... Line 571...
426
    mov     edx,[sc.work]		  ; 梥â-®¡¢®¤ª¨
571
    mov     edx,[sc.work]                 ; öâåò-îáâîäêè
427
    mov     ebx,5 shl 16+21		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
572
    mov     ebx,5 shl 16+22               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
428
    mov     ecx,31 shl 16+103		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
573
    mov     ecx,31 shl 16+103             ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
429
    int     0x40
574
    int     0x40
430
    add     ebx,29 shl 16		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
575
    add     ebx,29 shl 16                 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
431
    int     0x40
576
    int     0x40
432
    add     ebx,29 shl 16		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
577
    add     ebx,29 shl 16                 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
433
    int     0x40
578
    int     0x40
434
 
579
 
435
    ;.................................................................................................
580
    ;.................................................................................................
436
    ; ‚뢮¤¨¬ ¡ãª¢ë r g b
581
    ; Âûâîäèì áóêâû r g b
437
    ;.................................................................................................
582
    ;.................................................................................................
Line 438... Line 583...
438
    mov     eax,4			  ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ  ¢ ®ª­®
583
    mov     eax,4                         ; 4 - âûâåñòè ñòðîêó òåêñòà â îêíî
439
    mov     ebx,12 shl 16+34		  ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
584
    mov     ebx,12 shl 16+34              ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y]
440
    mov     ecx,0x0			  ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ )
585
    mov     ecx,0x0                       ; 0xX0RRGGBB (RR, GG, BB çàäàþò öâåò òåêñòà)
441
    mov     edx,cname			  ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
586
    mov     edx,cname                     ; óêàçàòåëü íà íà÷àëî ñòðîêè
442
    mov     esi,2			  ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
587
    mov     esi,1                         ; âûâîäèòü esi ñèìâîëîâ
443
    newline:				  ; 横«
588
    newline:                              ; öèêë
444
      int     0x40			    ; à¥à뢠­¨¥
589
      int     0x40                        ; Ïðåðûâàíèå
445
      add     ebx,29 shl 16		    ; „®¡ ¢«ï¥¬
590
      add     ebx,29 shl 16               ; Äîáàâëÿåì
446
      add     edx,2			    ; „®¡ ¢«ï¥¬
591
      add     edx,1                       ; Äîáàâëÿåì
447
      cmp     [edx],byte 'x'		    ; ‘à ¢­¥­¨¥ á ¡ ©â®¬ å
592
      cmp     [edx],byte 'x'              ; Ñðàâíåíèå ñ áàéòîì õ
Line 448... Line 593...
448
    jne    newline			  ; …᫨ ­¥ ­ã«ì ¨«¨ ­¥ à ¢­®
593
    jne    newline                        ; Åñëè íå íóëü èëè íå ðàâíî
449
 
594
 
450
    ;.................................................................................................
595
    ;.................................................................................................
451
    ; Žâà¨á®¢ª  á« ©¤¥à®¢
596
    ; Îòðèñîâêà ñëàéäåðîâ
452
    ;.................................................................................................
597
    ;.................................................................................................
453
    mov     eax,13			  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
598
    mov     eax,13                        ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
454
    mov     edx,0x222222		  ; 梥â-®¡¢®¤ª¨
599
    mov     edx,0x222222                  ; öâåò-îáâîäêè
455
    mov     ebx,12 shl 16+4		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
600
    mov     ebx,12 shl 16+4               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
456
    mov     ecx,45 shl 16+85		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
601
    mov     ecx,45 shl 16+85              ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
457
    int     0x40
602
    int     0x40
458
    add     ebx,29 shl 16		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
603
    add     ebx,29 shl 16                 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
459
    int     0x40
604
    int     0x40
460
    add     ebx,29 shl 16		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
605
    add     ebx,29 shl 16                 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
Line 461... Line 606...
461
    int     0x40
606
    int     0x40
462
 
607
 
Line 463... Line 608...
463
    mov     edx,0xFA0919		  ; 梥â-®¡¢®¤ª¨
608
    mov     edx,0xFA0919                  ; öâåò-îáâîäêè
464
    mov     ebx,13 shl 16+2		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
609
    mov     ebx,13 shl 16+2               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
465
    mov     ecx,46 shl 16+83		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
610
    mov     ecx,46 shl 16+83              ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð]
466
    int     0x40
611
    int     0x40
467
    mov     edx,0x08CE19		  ; 梥â-®¡¢®¤ª¨
612
    mov     edx,0x08CE19                  ; öâåò-îáâîäêè
468
    add     ebx,29 shl 16		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
613
    add     ebx,29 shl 16                 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
469
    int     0x40
614
    int     0x40
470
    mov     edx,0x0909FF		  ; 梥â-®¡¢®¤ª¨
615
    mov     edx,0x0909FF                  ; öâåò-îáâîäêè
471
    add     ebx,29 shl 16		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
616
    add     ebx,29 shl 16                 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð]
472
    int     0x40
617
    int     0x40
473
 
618
 
Line 474... Line 619...
474
    ;.................................................................................................
619
    ;.................................................................................................
Line 475... Line 620...
475
    ; Žâà¨á®¢ª  ¯®«§ã­ª®¢
620
    ; Îòðèñîâêà ïîëçóíêîâ
476
    ;.................................................................................................
621
    ;.................................................................................................
477
    mov     edx,0x0			  ; 梥â-¯®«§ã­ª®¢
622
    mov     edx,0x0                       ; öâåò-ïîëçóíêîâ
478
    mov     ebx,10 shl 16+8		  ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
623
    mov     ebx,10 shl 16+8               ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð]
479
    movzx   eax,[cred]			  ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
624
    movzx   eax,[cred]                    ; áåðåì çíà÷åíèå öâåòà
480
    call    draw_slider
625
    call    draw_slider
481
    add     ebx,29 shl 16
626
    add     ebx,29 shl 16
482
    movzx   eax,[cgreen]		  ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
627
    movzx   eax,[cgreen]                  ; áåðåì çíà÷åíèå öâåòà
483
    call    draw_slider
628
    call    draw_slider
484
    add     ebx,29 shl 16
629
    add     ebx,29 shl 16
485
    movzx   eax,[cblue] 		  ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
630
    movzx   eax,[cblue]                   ; áåðåì çíà÷åíèå öâåòà
486
    call    draw_slider
631
    call    draw_slider
487
 
632
 
488
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
633
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
489
;end_draw_result
634
;end_draw_result
Line 490... Line 635...
490
 
635
 
491
draw_slider:
636
draw_slider:
492
    xor     ecx,ecx
637
    xor     ecx,ecx
493
    mov     cl,0x3			  ; ¡ã¤¥¬ ¤¥«¨âì ¥£® ­  3 â ª ª ª ¯®«§ã­ª¨ ¤«¨­­®© 85 ¯¨ªá¥«¥©
638
    mov     cl,0x3                        ; áóäåì äåëèòü åãî íà 3 òàê êàê ïîëçóíêè äëèííîé 85 ïèêñåëåé
494
    div     cl				  ; ¤¥«¨¬ - 楫®¥ ¢ al ®áâ â®ª ¢ ah
639
    div     cl                            ; äåëèì - öåëîå â al îñòàòîê â ah
495
    mov     cl,128			  ; ­¨¦­ïï â®çª  ¯®«§ã­ª 
640
    mov     cl,128                        ; íèæíÿÿ òî÷êà ïîëçóíêà
496
    sub     cl,al			  ; cl=cl-al
641
    sub     cl,al                         ; cl=cl-al
497
    shl     ecx,16
642
    shl     ecx,16
498
    add     ecx,4			  ; § ¤ ¥¬ ­ ç «ì­®¥ ¯®«®¦¥­¨¥
643
    add     ecx,4                         ; çàäàåì íà÷àëüíîå ïîëîæåíèå
499
    mov     eax,13			  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
644
    mov     eax,13                        ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê
500
    int     0x40
645
    int     0x40
501
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
646
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
Line 502... Line 647...
502
 
647
 
503
;end_slider
648
;end_slider
504
 
649
 
505
draw_value:
650
draw_value:
506
    ;.................................................................................................
651
    ;.................................................................................................
507
    ; ‚뢮¤ ç¨á«  ¨§ áâப¨ ¢ 㪠§ ­­®© ®¡« áâ¨
652
    ; Âûâîä ÷èñëà èç ñòðîêè â óêàçàííîé îáëàñòè
508
    ;.................................................................................................
653
    ;.................................................................................................
509
    push    ebx 			  ; á®å࠭塞 ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
654
    push    ebx                           ; ñîõðàíÿåì ïðèñëàííûå êîîðäèíàòû
510
    mov     ebx,10			  ; ãáâ ­ ¢«¨¢ ¥¬ ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
655
    mov     ebx,10                        ; óñòàíàâëèâàåì îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ
511
    mov     edi,buff			  ; 㪠§ â¥«ì ­  áâப㠡ãä¥à 
656
    mov     edi,buff                      ; óêàçàòåëü íà ñòðîêó áóôåðà
512
    call    int2ascii			  ; ª®­¢¥àâ¨à㥬 ç¨á«® ¨ «®¦¨¬ ª ª áâப㠢 ¡ãä¥à + esi ¤«¨­ 
657
    call    int2ascii                     ; êîíâåðòèðóåì ÷èñëî è ëîæèì êàê ñòðîêó â áóôåð + esi äëèíà
513
    mov     eax,4			  ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
658
    mov     eax,4                         ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå
514
    pop     ebx 			  ; ¤®áâ ¥¬ ¨§ á⥪  ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
659
    pop     ebx                           ; äîñòàåì èç ñòåêà ïðèñëàííûå êîîðäèíàòû
515
    mov     ecx,0x0			  ; 梥â ⥪áâ  RRGGBB
660
    mov	    ecx,0x0                       ; öâåò òåêñòà RRGGBB
516
    mov     edx,buff			  ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
661
    mov	    edx,buff                      ; óêàçàòåëü íà íà÷àëî òåêñòà
517
    int     0x40
662
    int	    0x40
518
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
663
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
519
;end_draw_value
664
;end_draw_value
520
 
665
 
521
hex_digit:
666
hex_digit:
522
    ;.................................................................................................
667
    ;.................................................................................................
523
    ; à¥®¡à §®¢ ­¨¥ ¢ ASCII (¢­¥ § ¢¨á¨¬®á⨠®â á¨á⥬ë áç¨á«¥­¨ï)
668
    ; Ïðåîáðàçîâàíèå â ASCII (âíå çàâèñèìîñòè îò ñèñòåìû ñ÷èñëåíèÿ)
524
    ;.................................................................................................
669
    ;.................................................................................................
525
    cmp    dl,10			  ; ¢ dl ®¦¨¤ ¥âáï ç¨á«® ®â 0 ¤® 15
670
    cmp    dl,10                          ; â dl îæèäàåòñÿ ÷èñëî îò 0 äî 15
526
    jb	   .less			  ; ¥á«¨ dl<10 â® ¯¥à¥å®¤¨¬
671
    jb     .less                          ; åñëè dl<10 òî ïåðåõîäèì
527
    add    dl,'A'-10			  ; 10->A 11->B 12->C ...
672
    add    dl,'A'-10                      ; 10->A 11->B 12->C ...
528
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
673
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
529
    .less:
674
    .less:
530
    or	   dl,'0'			  ; …᫨ á¨á⥬  áç¨á«¥­¨ï 10-ï ¨ ¬¥­¥¥
675
    or     dl,'0'                         ; Åñëè ñèñòåìà ñ÷èñëåíèÿ 10-ÿ è ìåíåå
531
    ret 				  ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
676
    ret                                   ; Âîçâðàùàåì óïðàâëåíèå
532
;end_hex_digit
677
;end_hex_digit
533
 
678
 
534
int2ascii:
679
int2ascii:
Line 535... Line 680...
535
    ;.................................................................................................
680
    ;.................................................................................................
536
    ; à¥®¡à §®¢ ­¨¥ ç¨á«  ¢ áâபã
681
    ; Ïðåîáðàçîâàíèå ÷èñëà â ñòðîêó
537
    ;.................................................................................................
682
    ;.................................................................................................
538
    ; eax - 32-å §­ ç­®¥ ç¨á«®
683
    ; eax - 32-õ çíà÷íîå ÷èñëî
539
    ; ebx - ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
684
    ; ebx - îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ
540
    ; edi - 㪠§ â¥«ì ­  áâப㠡ãä¥à 
685
    ; edi - óêàçàòåëü íà ñòðîêó áóôåðà
541
    ; ‚®§¢à é ¥â § ¯®«­¥­­ë© ¡ãä¥à ¨ esi - ¤«¨­  áâப¨
686
    ; Âîçâðàùàåò çàïîëíåííûé áóôåð è esi - äëèíà ñòðîêè
542
    ;pushad
687
    ;pushad
Line 580... Line 725...
580
    mov     [cred],al
725
    mov     [cred],al
581
    ; get green
726
    ; get green
582
    shl      ecx,16
727
    shl      ecx,16
583
    shr      ecx,24
728
    shr      ecx,24
584
    mov      [cgreen],cl
729
    mov      [cgreen],cl
585
    ret 				  ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
730
    ret                                   ; è âîçâðàùàåì óïðàâëåíèå
586
;end_get_spectr
731
;end_get_spectr
Line 587... Line 732...
587
 
732
 
588
set_spectr:
733
set_spectr:
589
    ;.................................................................................................
734
    ;.................................................................................................
590
    ; ãáâ ­ ¢«¨¢ ¥â ¨§ r,g,b 梥â
735
    ; óñòàíàâëèâàåò èç r,g,b öâåò
591
    ;.................................................................................................
736
    ;.................................................................................................
592
    ; get blue
737
    ; get blue
593
    movzx   eax,[cred]
738
    movzx   eax,[cred]
594
    shl     eax,8
739
    shl     eax,8
595
    mov     al,[cgreen]
740
    mov     al,[cgreen]
596
    shl     eax,8
741
    shl     eax,8
597
    mov     al,[cblue]
742
    mov     al,[cblue]
598
    mov     [color],eax
743
    mov     [color],eax
599
    call    draw_result 		  ; ‚뢮¤¨¬ १ã«ìâ â
744
    call    draw_result                   ; Âûâîäèì ðåçóëüòàò
600
    ret 				  ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
745
    ret                                   ; è âîçâðàùàåì óïðàâëåíèå
Line 601... Line 746...
601
;end_get_spectr
746
;end_get_spectr
602
 
747
 
603
str_len:
748
str_len:
604
    ;.................................................................................................
749
    ;.................................................................................................
605
    ; ®¯à¥¤¥«ï¥â ¤«¨­ã áâப¨ (¢å®¤->EDI ZS offset ; ¢ë室->EAX ZS length)
750
    ; îïðåäåëÿåò äëèíó ñòðîêè (âõîä->EDI ZS offset ; âûõîä->EAX ZS length)
606
    ;.................................................................................................
751
    ;.................................................................................................
607
	push ecx
752
	push ecx
Line 623... Line 768...
623
 
768
 
624
	ret
769
	ret
625
;end_str_len
770
;end_str_len
626
;#___________________________________________________________________________________________________
771
;#___________________________________________________________________________________________________
627
;****************************************************************************************************|
772
;****************************************************************************************************|
628
; ‹ŽŠ ……Œ…›• ˆ ŠŽ‘’€’                                                                         |
773
; ÁËÎÊ ÏÅÐÅÌÅÍÍÛÕ È ÊÎÍÑÒÀÍÒ                                                                         |
Line 629... Line 774...
629
;----------------------------------------------------------------------------------------------------/
774
;----------------------------------------------------------------------------------------------------/
630
 
775
 
631
    color	dd 00000000h		  ; åà ­¨â §­ ç¥­¨¥ ¢ë¡à ­­®£® 梥â 
776
    color       dd 00000000h              ; õðàíèò çíà÷åíèå âûáðàííîãî öâåòà
632
    mouse_x	dd 0			  ; åà ­¨â £«®¡ «ì­ãî å ª®®à¤¨­ âã ¬ëè¨
777
    mouse_x     dd 0                      ; õðàíèò ãëîáàëüíóþ õ êîîðäèíàòó ìûøè
633
    mouse_y	dd 0			  ; åà ­¨â £«®¡ «ì­ãî ã ª®®à¤¨­ âã ¬ëè¨
778
    mouse_y     dd 0                      ; õðàíèò ãëîáàëüíóþ ó êîîðäèíàòó ìûøè
634
    desctop_w	dd 0			  ; åà ­¨â è¨à¨­ã íªà ­ 
779
    desctop_w   dd 0                      ; õðàíèò øèðèíó ýêðàíà
635
    sc		system_colors		  ; åà ­¨â áâàãªâãàã á¨á⥬­ëå 梥⮢ ᪨­ 
780
    sc          system_colors             ; õðàíèò ñòðóêòóðó ñèñòåìíûõ öâåòîâ ñêèíà
636
    title	db 'Palitra v0.2',0	  ; åà ­¨â ¨¬ï ¯à®£à ¬¬ë
781
    title       db 'Palitra v0.3',0       ; õðàíèò èìÿ ïðîãðàììû
637
    hex 	db '#',0		  ; ¤«ï ¢ë¢®¤  à¥èñ⪨ ª ª ⥪áâ 
782
    hex         db '#',0                  ; äëÿ âûâîäà ðåø¸òêè êàê òåêñòà
638
    cname	db 'R G B x'		  ; åà ­¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª  ª®­æ 
783
    cname       db 'RGBx'                 ; õðàíèò ðàçðÿäû öâåòîâ (red,green,blue) x-ìåòêà êîíöà
639
    cred	db 0			  ; åà ­¨¬ ªà á­ë© ᯥªàâ
784
    cred        db 0                      ; õðàíèì êðàñíûé ñïåêðò
640
    cgreen	db 0			  ; åà ­¨¬ §¥«¥­ë© ᯥªâà
785
    cgreen      db 0                      ; õðàíèì çåëåíûé ñïåêòð
-
 
786
    cblue       db 0                      ; õðàíèì ñèíèé ñïåêòð
-
 
787
    buff        db '000',0
641
    cblue	db 0			  ; åà ­¨¬ ᨭ¨© ᯥªâà
788
    bnext       db 'NEXT         BACKGROUND',0; èìÿ êíîïêè