Subversion Repositories Kolibri OS

Rev

Rev 142 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 142 Rev 154
1
;
1
;
2
;   DESKTOP CONTEXT MENU
2
;   DESKTOP CONTEXT MENU
3
;   written by Ivan Poddubny
3
;   written by Ivan Poddubny
4
;
4
;
5
;   €¢â®à - ˆ¢ ­ ®¤¤ã¡­ë©
5
;   €¢â®à - ˆ¢ ­ ®¤¤ã¡­ë©
6
;   e-mail: ivan-yar@bk.ru
6
;   e-mail: ivan-yar@bk.ru
7
;
7
;
8
;   Compile with flat assembler
8
;   Compile with flat assembler
9
;
9
;
10
include 'lang.inc'
10
include 'lang.inc'
11
include 'macros.inc'
11
include 'macros.inc'
12
 
12
 
13
meos_app_start
13
meos_app_start
14
code
14
code
15
 
15
 
16
  mov   eax,40       ; ãáâ ­®¢¨¬ ¬ áªã ᮡë⨩
16
  mov   eax,40       ; ãáâ ­®¢¨¬ ¬ áªã ᮡë⨩
17
  mov   ebx,100000b  ; ­ á ¨­â¥à¥áã¥â ⮫쪮 ¬ëèì
17
  mov   ebx,100000b  ; ­ á ¨­â¥à¥áã¥â ⮫쪮 ¬ëèì
18
  int   0x40
18
  int   0x40
19
 
19
 
20
still:               ; £« ¢­ë© 横« ®á­®¢­®£® ¯à®æ¥áá 
20
still:               ; £« ¢­ë© 横« ®á­®¢­®£® ¯à®æ¥áá 
21
 
21
 
22
  mov   eax,10       ; ¦¤ñ¬ ᮡëâ¨ï
22
  mov   eax,10       ; ¦¤ñ¬ ᮡëâ¨ï
23
  int   0x40
23
  int   0x40
24
 
24
 
25
  mov   eax,37       ; ª ª¨¥ ­ ¦ âë ª¯®¯ª¨?
25
  mov   eax,37       ; ª ª¨¥ ­ ¦ âë ª¯®¯ª¨?
26
  mov   ebx,2
26
  mov   ebx,2
27
  int   0x40
27
  int   0x40
28
 
28
 
29
  cmp   eax,2        ; ¥á«¨ ­¥ ¯à ¢ ï, ¢®§¢à â
29
  cmp   eax,2        ; ¥á«¨ ­¥ ¯à ¢ ï, ¢®§¢à â
30
  jne   still
30
  jne   still
31
 
31
 
32
;---¯®¥å «¨!---
32
;---¯®¥å «¨!---
33
 
33
 
34
;  mov   eax,37       ; íâ® ¤«ï ®â« ¤ª¨ - ¥á«¨ ¬ëèì ¢ â®çª¥ (0;0), § ªà®¥¬áï
34
;  mov   eax,37       ; íâ® ¤«ï ®â« ¤ª¨ - ¥á«¨ ¬ëèì ¢ â®çª¥ (0;0), § ªà®¥¬áï
35
;  xor   ebx,ebx
35
;  xor   ebx,ebx
36
;  int   0x40
36
;  int   0x40
37
;  test  eax,eax      ; ªãàá®à ¢ â®çª¥ (0;0), â.¥. eax = 0
37
;  test  eax,eax      ; ªãàá®à ¢ â®çª¥ (0;0), â.¥. eax = 0
38
;  je    exit
38
;  je    exit
39
 
39
 
40
 
40
 
41
  mov   eax,9        ; ¯®«ã稬 ç¨á«® ¯à®æ¥áᮢ ¢ á¨á⥬¥
41
  mov   eax,9        ; ¯®«ã稬 ç¨á«® ¯à®æ¥áᮢ ¢ á¨á⥬¥
42
  mov   ebx,procinfo
42
  mov   ebx,procinfo
43
  xor   ecx,ecx
43
  xor   ecx,ecx
44
  int   0x40
44
  int   0x40
45
 
45
 
46
  inc   eax          ; ⥯¥àì ¢ eax ᮤ¥à¦¨âáï ç¨á«® ¯à®æ¥áᮢ + 1
46
  inc   eax          ; ⥯¥àì ¢ eax ᮤ¥à¦¨âáï ç¨á«® ¯à®æ¥áᮢ + 1
47
  mov   [processes],eax
47
  mov   [processes],eax
48
  mov   ecx,1
48
  mov   ecx,1
49
 
49
 
50
 new_process:
50
 new_process:
51
  pushad
51
  pushad
52
  mov   eax,9        ; ¯®«ã稬 ¨­ä®à¬ æ¨î ® ¯à®æ¥áá¥; ­®¬¥à - ¢ ecx
52
  mov   eax,9        ; ¯®«ã稬 ¨­ä®à¬ æ¨î ® ¯à®æ¥áá¥; ­®¬¥à - ¢ ecx
53
  mov   ebx,procinfo
53
  mov   ebx,procinfo
54
  int   0x40
54
  int   0x40
55
  mov   eax,37       ; ª®®à¤¨­ âë ªãàá®à 
55
  mov   eax,37       ; ª®®à¤¨­ âë ªãàá®à 
56
  xor   ebx,ebx
56
  xor   ebx,ebx
57
  int   0x40
57
  int   0x40
58
  mov   ebx,eax                  ; eax = cursor_x
58
  mov   ebx,eax                  ; eax = cursor_x
59
  shr   eax,16                   ; ebx = cursor_y
59
  shr   eax,16                   ; ebx = cursor_y
60
  and   ebx,0xffff
60
  and   ebx,0xffff
61
  mov   [curx1],eax              ; curx1 = cursor_x
61
  mov   [curx1],eax              ; curx1 = cursor_x
62
  mov   [cury1],ebx              ; cury1 = cursor_y
62
  mov   [cury1],ebx              ; cury1 = cursor_y
-
 
63
; \begin{diamond}[18.09.2006]
-
 
64
; ignore minimized windows
-
 
65
        test    [procinfo.wnd_state], 2
-
 
66
        jnz     ne_goden
-
 
67
; \end{diamond}[18.09.2006]
63
  mov   eax,[procinfo.x_start]   ; eax = wnd_x_start
68
  mov   eax,[procinfo.x_start]   ; eax = wnd_x_start
64
  mov   ebx,[procinfo.y_start]   ; ebx = wnd_y_start
69
  mov   ebx,[procinfo.y_start]   ; ebx = wnd_y_start
65
 
70
 
66
  mov   ecx,[procinfo.x_size]
71
  mov   ecx,[procinfo.x_size]
67
  add   ecx,eax                  ; ecx = wnd_x_end
72
  add   ecx,eax                  ; ecx = wnd_x_end
68
  mov   edx,[procinfo.y_size]
73
  mov   edx,[procinfo.y_size]
69
  add   edx,ebx                  ; ecx = wnd_y_end
74
  add   edx,ebx                  ; ecx = wnd_y_end
70
 
75
 
71
  cmp   eax,[curx1]  ; wnd_x_start > cursor_x => ªãàá®à «¥¢¥¥ ®ª­ 
76
  cmp   eax,[curx1]  ; wnd_x_start > cursor_x => ªãàá®à «¥¢¥¥ ®ª­ 
72
  jg    ne_goden
77
  jg    ne_goden
73
  cmp   ecx,[curx1]  ; wnd_x_end   < cursor_x => ªãàá®à ¯à ¢¥¥ ®ª­ 
78
  cmp   ecx,[curx1]  ; wnd_x_end   < cursor_x => ªãàá®à ¯à ¢¥¥ ®ª­ 
74
  jl    ne_goden
79
  jl    ne_goden
75
  cmp   ebx,[cury1]  ; wnd_y_start > cursor_y => ªãàá®à ¢ëè¥ ®ª­ 
80
  cmp   ebx,[cury1]  ; wnd_y_start > cursor_y => ªãàá®à ¢ëè¥ ®ª­ 
76
  jg    ne_goden
81
  jg    ne_goden
77
  cmp   edx,[cury1]  ; wnd_y_end   < cursor_y => ªãàá®à ­¨¦¥ ®ª­ 
82
  cmp   edx,[cury1]  ; wnd_y_end   < cursor_y => ªãàá®à ­¨¦¥ ®ª­ 
78
  jl    ne_goden
83
  jl    ne_goden
79
 
84
 
80
goden:               ; ª«¨ª ¡ë« ¢­ãâਠª ª®£®-â® ®ª­ , ¯®í⮬㠭¨ç¥£® ­¥ ¤¥« ¥¬
85
goden:               ; ª«¨ª ¡ë« ¢­ãâਠª ª®£®-â® ®ª­ , ¯®í⮬㠭¨ç¥£® ­¥ ¤¥« ¥¬
81
  popad
86
  popad
82
  jmp   still
87
  jmp   still
83
 
88
 
84
ne_goden:            ; ª«¨ª ¡ë« á­ à㦨 à áᬠâਢ ¥¬®£® ®ª­ , ¯®í⮬ã
89
ne_goden:            ; ª«¨ª ¡ë« á­ à㦨 à áᬠâਢ ¥¬®£® ®ª­ , ¯®í⮬ã
85
  popad
90
  popad
86
  inc   ecx
91
  inc   ecx
87
  cmp   ecx,[processes]
92
  cmp   ecx,[processes]
88
  jl    new_process  ; «¨¡® ᬮਬ á«¥¤ãî饥 ®ª­®, «¨¡® § ¯ã᪠¥¬ ¬¥­î
93
  jl    new_process  ; «¨¡® ᬮਬ á«¥¤ãî饥 ®ª­®, «¨¡® § ¯ã᪠¥¬ ¬¥­î
89
 
94
 
90
 
95
 
91
@@:             ; ¯®¤®¦¤ñ¬, ¯®ª  ¯®«ì§®¢ â¥«ì ­¥ ®â¯ãá⨫ ¯à ¢ãî ª­®¯ªã ¬ëè¨
96
@@:             ; ¯®¤®¦¤ñ¬, ¯®ª  ¯®«ì§®¢ â¥«ì ­¥ ®â¯ãá⨫ ¯à ¢ãî ª­®¯ªã ¬ëè¨
92
  mov   eax,37
97
  mov   eax,37
93
  mov   ebx,2   ; äã­ªæ¨ï 37-2:
98
  mov   ebx,2   ; äã­ªæ¨ï 37-2:
94
  int   0x40    ;   ­ ¦ âë «¨ ª­®¯ª¨ ¬ëè¨?
99
  int   0x40    ;   ­ ¦ âë «¨ ª­®¯ª¨ ¬ëè¨?
95
  cmp   eax,ebx ; ¥á«¨ ®â¯ãá⨫, (eax != 2)
100
  cmp   eax,ebx ; ¥á«¨ ®â¯ãá⨫, (eax != 2)
96
  jnz   @f      ;   ¨¤ñ¬ ¢ ­ ç «® £« ¢­®£® 横« 
101
  jnz   @f      ;   ¨¤ñ¬ ¢ ­ ç «® £« ¢­®£® 横« 
97
 
102
 
98
  mov   eax,5   ; ¨­ ç¥
103
  mov   eax,5   ; ¨­ ç¥
99
  mov   ebx,2   ;   ¯®¤®¦¤ñ¬ 2 ¬á
104
  mov   ebx,2   ;   ¯®¤®¦¤ñ¬ 2 ¬á
100
  int   0x40
105
  int   0x40
101
 
106
 
102
  jmp   @b      ;   ¨ ¯à®¢¥à¨¬ ¬ëèì ®¯ïâì
107
  jmp   @b      ;   ¨ ¯à®¢¥à¨¬ ¬ëèì ®¯ïâì
103
@@:
108
@@:
104
 
109
 
105
; ¥á«¨ 㦥 ¡ë«® ®âªàëâ® ¬¥­î, ­ã¦­® ¯®¤®¦¤ âì, ¯®ª  ®­® § ªà®¥âáï:
110
; ¥á«¨ 㦥 ¡ë«® ®âªàëâ® ¬¥­î, ­ã¦­® ¯®¤®¦¤ âì, ¯®ª  ®­® § ªà®¥âáï:
106
@@:
111
@@:
107
  cmp   [menu_opened],0
112
  cmp   [menu_opened],0
108
  je    @f
113
  je    @f
109
  mov   eax,5
114
  mov   eax,5
110
  mov   ebx,3  ; ¦¤ñ¬ 3 ¬á
115
  mov   ebx,3  ; ¦¤ñ¬ 3 ¬á
111
  int   0x40
116
  int   0x40
112
  jmp   @b
117
  jmp   @b
113
@@:
118
@@:
114
 
119
 
115
  mov   eax,51           ;   ⥯¥àì ¬®¦­® ᬥ«® § ¯ã᪠âì ¯à®æ¥áá (¯®â®ª) ¬¥­î
120
  mov   eax,51           ;   ⥯¥àì ¬®¦­® ᬥ«® § ¯ã᪠âì ¯à®æ¥áá (¯®â®ª) ¬¥­î
116
  mov   ebx,1            ; ᮧ¤ ñ¬ ¯®â®ª (thread)
121
  mov   ebx,1            ; ᮧ¤ ñ¬ ¯®â®ª (thread)
117
  mov   ecx,start_wnd    ; â®çª  ¢å®¤  ¯®â®ª 
122
  mov   ecx,start_wnd    ; â®çª  ¢å®¤  ¯®â®ª 
118
  mov   edx,stack_wnd    ; ¢¥à設  áâíª  ¤«ï ¯®â®ª 
123
  mov   edx,stack_wnd    ; ¢¥à設  áâíª  ¤«ï ¯®â®ª 
119
  int   0x40
124
  int   0x40
120
 
125
 
121
  jmp   still
126
  jmp   still
122
 
127
 
123
 
128
 
124
 
129
 
125
exit_menu:            ; ¥á«¨ ¢ë室¨¬ ¨§ ¬¥­î, ­ ¤® § ¯¨á âì ¢ [menu_opened] 0
130
exit_menu:            ; ¥á«¨ ¢ë室¨¬ ¨§ ¬¥­î, ­ ¤® § ¯¨á âì ¢ [menu_opened] 0
126
  mov   [menu_opened],0
131
  mov   [menu_opened],0
127
exit:                 ; á ¬ë ¨¤ñ¬, ª®£¤  ¢ë室¨¬ ¨§ ®á­®¢­®£® ¯à®æ¥áá 
132
exit:                 ; á ¬ë ¨¤ñ¬, ª®£¤  ¢ë室¨¬ ¨§ ®á­®¢­®£® ¯à®æ¥áá 
128
  or    eax,-1        ; eax = -1
133
  or    eax,-1        ; eax = -1
129
  int   0x40
134
  int   0x40
130
 
135
 
131
 
136
 
132
 
137
 
133
 
138
 
134
; §¤¥áì áâ àâã¥â ¯à®æ¥áá ¬¥­î
139
; §¤¥áì áâ àâã¥â ¯à®æ¥áá ¬¥­î
135
start_wnd:
140
start_wnd:
136
  mov   [menu_opened],1
141
  mov   [menu_opened],1
137
  mov   eax,40      ; ãáâ ­®¢¨¬ ¬ áªã ¦¥« ¥¬ëå ᮡë⨩ ¤«ï í⮣® ¯à®æ¥áá 
142
  mov   eax,40      ; ãáâ ­®¢¨¬ ¬ áªã ¦¥« ¥¬ëå ᮡë⨩ ¤«ï í⮣® ¯à®æ¥áá 
138
  mov   ebx,100101b ; ¬¥­î + ª­®¯ª¨ + ¯¥à¥à¨á®¢ª 
143
  mov   ebx,100101b ; ¬¥­î + ª­®¯ª¨ + ¯¥à¥à¨á®¢ª 
139
  int   0x40
144
  int   0x40
140
 
145
 
141
red:
146
red:
142
  call  draw_window
147
  call  draw_window
143
 
148
 
144
still2:             ; £« ¢­ë© 横« ¯à®æ¥áá  ¬¥­î
149
still2:             ; £« ¢­ë© 横« ¯à®æ¥áá  ¬¥­î
145
 
150
 
146
  mov   eax,10      ; ¦¤ñ¬ ᮡëâ¨ï
151
  mov   eax,10      ; ¦¤ñ¬ ᮡëâ¨ï
147
  int   0x40
152
  int   0x40
148
 
153
 
149
  cmp   eax,1       ; ¯¥à¥à¨á®¢ª ?
154
  cmp   eax,1       ; ¯¥à¥à¨á®¢ª ?
150
  je    red
155
  je    red
151
  cmp   eax,3       ; ª­®¯ª ?
156
  cmp   eax,3       ; ª­®¯ª ?
152
  je    button
157
  je    button
153
  cmp   eax,6       ; ¬ëèì?
158
  cmp   eax,6       ; ¬ëèì?
154
  je    mouse
159
  je    mouse
155
 
160
 
156
  jmp   still2      ; ¢¥à­ñ¬áï ¢ ­ ç «® £« ¢­®£® 横« 
161
  jmp   still2      ; ¢¥à­ñ¬áï ¢ ­ ç «® £« ¢­®£® 横« 
157
 
162
 
158
 
163
 
159
; Ž€Ž’—ˆŠ Œ›˜ˆ
164
; Ž€Ž’—ˆŠ Œ›˜ˆ
160
mouse:            ; ª®£¤  ¯®«ì§®¢ â¥«ì ­ ¦¬ñâ ª­®¯ªã ¬ëè¨, § ªà®¥¬áï
165
mouse:            ; ª®£¤  ¯®«ì§®¢ â¥«ì ­ ¦¬ñâ ª­®¯ªã ¬ëè¨, § ªà®¥¬áï
161
  mov   eax,37
166
  mov   eax,37
162
  mov   ebx,2     ; ª ª¨¥ ª­®¯ª¨ ­ ¦ âë?
167
  mov   ebx,2     ; ª ª¨¥ ª­®¯ª¨ ­ ¦ âë?
163
  int   0x40
168
  int   0x40
164
  test  eax,eax   ; ­¨ª ª¨¥? - ⮣¤  ¯à¥ªà á­®! ¢¥à­ñ¬áï ¢ £« ­ë© 横«
169
  test  eax,eax   ; ­¨ª ª¨¥? - ⮣¤  ¯à¥ªà á­®! ¢¥à­ñ¬áï ¢ £« ­ë© 横«
165
  jz    still2
170
  jz    still2
166
  jmp   exit_menu ;   ¥á«¨ ¢áñ-â ª¨ ­ ¦ âë - § ªà®¥¬ ®ª­®
171
  jmp   exit_menu ;   ¥á«¨ ¢áñ-â ª¨ ­ ¦ âë - § ªà®¥¬ ®ª­®
167
 
172
 
168
 
173
 
169
; €†€’€ ŠŽŠ€
174
; €†€’€ ŠŽŠ€
170
button:
175
button:
171
  mov   eax,17        ; ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
176
  mov   eax,17        ; ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
172
  int   0x40
177
  int   0x40
173
 
178
 
174
  sub   ah,10         ; áà ¢­¨¢ ¥¬ á 10
179
  sub   ah,10         ; áà ¢­¨¢ ¥¬ á 10
175
  jl    nofuncbtns    ; ¥á«¨ ¬¥­ìè¥ - § ªà뢠¥¬ ¬¥­î
180
  jl    nofuncbtns    ; ¥á«¨ ¬¥­ìè¥ - § ªà뢠¥¬ ¬¥­î
176
 
181
 
177
  movzx ebx,ah        ; ¯®«ã稫¨ ­®¬¥à ¯à®£à ¬¬ë ¢ ᯨ᪥ ¢ ebx
182
  movzx ebx,ah        ; ¯®«ã稫¨ ­®¬¥à ¯à®£à ¬¬ë ¢ ᯨ᪥ ¢ ebx
178
  mov   esi, [startapps + ebx*4]
183
  mov   esi, [startapps + ebx*4]
179
  mov   edi, start_info.path
184
  mov   edi, start_info.path
180
  cld
185
  cld
181
 @@:
186
 @@:
182
  lodsb
187
  lodsb
183
  stosb
188
  stosb
184
  test  al, al
189
  test  al, al
185
  jnz   @b
190
  jnz   @b
186
  mcall 70, start_info
191
  mcall 70, start_info
187
 
192
 
188
;  mov   eax,5         ; ¯®¤®¦¤ñ¬, ¯®ª  ¯à®£à ¬¬  § ¯ãáâ¨âìáï
193
;  mov   eax,5         ; ¯®¤®¦¤ñ¬, ¯®ª  ¯à®£à ¬¬  § ¯ãáâ¨âìáï
189
;  mov   ebx,1         ;   â® ¥ñ ®ª­® ­¥ ¡ã¤¥â ®âà¨á®¢ ­® (¡ £ ¢ ï¤à¥???)
194
;  mov   ebx,1         ;   â® ¥ñ ®ª­® ­¥ ¡ã¤¥â ®âà¨á®¢ ­® (¡ £ ¢ ï¤à¥???)
190
;  int   0x40          ; à áª®¬¬¥­â¨àã©â¥ í⨠áâப¨, ¥á«¨ ã ¢ á ¯à®¡«¥¬ë
195
;  int   0x40          ; à áª®¬¬¥­â¨àã©â¥ í⨠áâப¨, ¥á«¨ ã ¢ á ¯à®¡«¥¬ë
191
                       ; á ®âà¨á®¢ª®©
196
                       ; á ®âà¨á®¢ª®©
192
 
197
 
193
nofuncbtns:           ; § ªà뢠¥¬ ¬¥­î
198
nofuncbtns:           ; § ªà뢠¥¬ ¬¥­î
194
  jmp   exit_menu
199
  jmp   exit_menu
195
 
200
 
196
 
201
 
197
 
202
 
198
_BTNS_            = 8     ; ª®«¨ç¥á⢮ ª­®¯®ª ("¯ã­ªâ®¢ ¬¥­î")
203
_BTNS_            = 8     ; ª®«¨ç¥á⢮ ª­®¯®ª ("¯ã­ªâ®¢ ¬¥­î")
199
 
204
 
200
if lang eq ru
205
if lang eq ru
201
  font            = 0x00000000
206
  font            = 0x00000000
202
  string_length   = 20          ; ¤«¨­  áâப¨
207
  string_length   = 20          ; ¤«¨­  áâப¨
203
  wnd_x_size      = 133         ; è¨à¨­  ®ª­ 
208
  wnd_x_size      = 133         ; è¨à¨­  ®ª­ 
204
  header_pos      = 36 shl 16 + 7
209
  header_pos      = 36 shl 16 + 7
205
else
210
else
206
  font            = 0x10000000
211
  font            = 0x10000000
207
  string_length   = 12          ; ¤«¨­  áâப¨
212
  string_length   = 12          ; ¤«¨­  áâப¨
208
  wnd_x_size      = 105         ; è¨à¨­  ®ª­ 
213
  wnd_x_size      = 105         ; è¨à¨­  ®ª­ 
209
  header_pos      = 23 shl 16 + 7
214
  header_pos      = 23 shl 16 + 7
210
end if
215
end if
211
 
216
 
212
;*******************************
217
;*******************************
213
;********  ˆ‘“…Œ ŽŠŽ  ********
218
;********  ˆ‘“…Œ ŽŠŽ  ********
214
;*******************************
219
;*******************************
215
 
220
 
216
draw_window:
221
draw_window:
217
 
222
 
218
  mov   eax,12           ; ­ ç¨­ ¥¬ "à¨á®¢ âì"
223
  mov   eax,12           ; ­ ç¨­ ¥¬ "à¨á®¢ âì"
219
  mov   ebx,1
224
  mov   ebx,1
220
  int   0x40
225
  int   0x40
221
 
226
 
222
  mov   eax,[curx1]      ; ⥪ã騥 ª®®à¤¨­ âë ªãàá®à 
227
  mov   eax,[curx1]      ; ⥪ã騥 ª®®à¤¨­ âë ªãàá®à 
223
  mov   [curx],eax       ; § ¯¨è¥¬ ¢ ª®®à¤¨­ âë ®ª­ 
228
  mov   [curx],eax       ; § ¯¨è¥¬ ¢ ª®®à¤¨­ âë ®ª­ 
224
  mov   eax,[cury1]
229
  mov   eax,[cury1]
225
  mov   [cury],eax
230
  mov   [cury],eax
226
 
231
 
227
; ⥯¥àì ¡ã¤¥¬ áç¨â âì ª®®à¤¨­ âë ®ª­ , çâ®¡ë ®­® §  ªà © íªà ­  ­¥ ¢ë«¥§«®
232
; ⥯¥àì ¡ã¤¥¬ áç¨â âì ª®®à¤¨­ âë ®ª­ , çâ®¡ë ®­® §  ªà © íªà ­  ­¥ ¢ë«¥§«®
228
  mov   eax,14                ; ¯®«ã稬 à §¬¥à íªà ­ 
233
  mov   eax,14                ; ¯®«ã稬 à §¬¥à íªà ­ 
229
  int   0x40
234
  int   0x40
230
  mov   ebx,eax
235
  mov   ebx,eax
231
  shr   eax,16                ; ¢ eax - x_screen
236
  shr   eax,16                ; ¢ eax - x_screen
232
  and   ebx,0xffff            ; ¢ ebx - y_screen
237
  and   ebx,0xffff            ; ¢ ebx - y_screen
233
  add   eax,-wnd_x_size       ; eax = [x_screen - è¨à¨­  ®ª­ ]
238
  add   eax,-wnd_x_size       ; eax = [x_screen - è¨à¨­  ®ª­ ]
234
  add   ebx,-_BTNS_*15-21     ; ebx = [y_screen - ¢ëá®â  ®ª­ ]
239
  add   ebx,-_BTNS_*15-21     ; ebx = [y_screen - ¢ëá®â  ®ª­ ]
235
 
240
 
236
  cmp   eax,[curx]
241
  cmp   eax,[curx]
237
  jg    .okx                  ; ¥á«¨ ®ª­® ᫨誮¬ ¡«¨§ª® ª ¯à ¢®¬ã ªà î,
242
  jg    .okx                  ; ¥á«¨ ®ª­® ᫨誮¬ ¡«¨§ª® ª ¯à ¢®¬ã ªà î,
238
  add   [curx],-wnd_x_size    ; ᤢ¨­¥¬ ¥£® ¢«¥¢® ­  100
243
  add   [curx],-wnd_x_size    ; ᤢ¨­¥¬ ¥£® ¢«¥¢® ­  100
239
 .okx:
244
 .okx:
240
 
245
 
241
  cmp   ebx, [cury]
246
  cmp   ebx, [cury]
242
  jg    .oky                  ; ¯® ¢¥à⨪ «¨ â®ç­® â ª¦¥
247
  jg    .oky                  ; ¯® ¢¥à⨪ «¨ â®ç­® â ª¦¥
243
  add   [cury], -_BTNS_*15-21
248
  add   [cury], -_BTNS_*15-21
244
 .oky:
249
 .oky:
245
 
250
 
246
  mov   eax, 48                   ; ¯®«ãç¨âì á¨á⥬­ë¥ 梥â 
251
  mov   eax, 48                   ; ¯®«ãç¨âì á¨á⥬­ë¥ 梥â 
247
  mov   ebx, 3
252
  mov   ebx, 3
248
  mov   ecx, sc                   ;   ¤à¥á áâàãªâãàë
253
  mov   ecx, sc                   ;   ¤à¥á áâàãªâãàë
249
  mov   edx, sizeof.system_colors ;  ¨ ¥¥ à §¬¥à
254
  mov   edx, sizeof.system_colors ;  ¨ ¥¥ à §¬¥à
250
  int   0x40
255
  int   0x40
251
 
256
 
252
  xor   eax, eax           ; äã­ªæ¨ï 0 - ᮧ¤ âì ®ª­®
257
  xor   eax, eax           ; äã­ªæ¨ï 0 - ᮧ¤ âì ®ª­®
253
  mov   ebx, [curx]        ;  ebx = [ª®®à¤¨­ â  ¯® x] shl 16 + [è¨à¨­ ]
258
  mov   ebx, [curx]        ;  ebx = [ª®®à¤¨­ â  ¯® x] shl 16 + [è¨à¨­ ]
254
  shl   ebx, 16
259
  shl   ebx, 16
255
  add   ebx, wnd_x_size
260
  add   ebx, wnd_x_size
256
  mov   ecx, [cury]        ;  ecx = [ª®®à¤¨­ â  ¯® y] shl 16 + [¢ëá®â ]
261
  mov   ecx, [cury]        ;  ecx = [ª®®à¤¨­ â  ¯® y] shl 16 + [¢ëá®â ]
257
  shl   ecx, 16
262
  shl   ecx, 16
258
  add   ecx, _BTNS_*15+21
263
  add   ecx, _BTNS_*15+21
259
  mov   edx, [sc.work]     ;  梥â à ¡®ç¥© ®¡« áâ¨
264
  mov   edx, [sc.work]     ;  梥â à ¡®ç¥© ®¡« áâ¨
260
  mov   esi, [sc.grab]     ;  梥⠧ £®«®¢ª 
265
  mov   esi, [sc.grab]     ;  梥⠧ £®«®¢ª 
261
  or    esi, 0x81000000
266
  or    esi, 0x81000000
262
  mov   edi, [sc.frame]    ;  梥â à ¬ª¨
267
  mov   edi, [sc.frame]    ;  梥â à ¬ª¨
263
  int   0x40
268
  int   0x40
264
 
269
 
265
  mov   eax, 4             ; § £®«®¢®ª
270
  mov   eax, 4             ; § £®«®¢®ª
266
  mov   ebx, header_pos    ;  [x] shl 16 + [y]
271
  mov   ebx, header_pos    ;  [x] shl 16 + [y]
267
  mov   ecx, [sc.grab_text];  èà¨äâ ¨ 梥â (á¥àë©)
272
  mov   ecx, [sc.grab_text];  èà¨äâ ¨ 梥â (á¥àë©)
268
  or    ecx, 0x10000000
273
  or    ecx, 0x10000000
269
;  add   ecx, -0x333333
274
;  add   ecx, -0x333333
270
  push  ecx
275
  push  ecx
271
  push  ecx
276
  push  ecx
272
  xor   edx,edx
277
  xor   edx,edx
273
.dec_color:
278
.dec_color:
274
  sub   byte [esp+edx], 0x33
279
  sub   byte [esp+edx], 0x33
275
  jae   @f
280
  jae   @f
276
  mov   byte [esp+edx], 0
281
  mov   byte [esp+edx], 0
277
@@:
282
@@:
278
  inc   edx
283
  inc   edx
279
  jnp   .dec_color
284
  jnp   .dec_color
280
  pop   ecx
285
  pop   ecx
281
  mov   edx, header        ;   ¤à¥á § £®«®¢ª 
286
  mov   edx, header        ;   ¤à¥á § £®«®¢ª 
282
  mov   esi, header.size   ;  ¤«¨­  § £®«®¢ª  ("M E N U")
287
  mov   esi, header.size   ;  ¤«¨­  § £®«®¢ª  ("M E N U")
283
  int   0x40
288
  int   0x40
284
  pop   ecx
289
  pop   ecx
285
  add   ebx, 1 shl 16      ;  ᤢ¨­¥¬ ¢¯à ¢® ­  1
290
  add   ebx, 1 shl 16      ;  ᤢ¨­¥¬ ¢¯à ¢® ­  1
286
  int   0x40
291
  int   0x40
287
 
292
 
288
  mov   ebx, 1*65536+wnd_x_size-2  ; ­ ç¨­ ¥¬ ¤¥« âì ª­®¯ª¨
293
  mov   ebx, 1*65536+wnd_x_size-2  ; ­ ç¨­ ¥¬ ¤¥« âì ª­®¯ª¨
289
  mov   ecx, 20*65536+15
294
  mov   ecx, 20*65536+15
290
  mov   edx, 10 or 0x40000000 ; ¡¨â 30 ãáâ ­®¢«¥­ => ª­®¯ª  ­¥ à¨áã¥âáï
295
  mov   edx, 10 or 0x40000000 ; ¡¨â 30 ãáâ ­®¢«¥­ => ª­®¯ª  ­¥ à¨áã¥âáï
291
 
296
 
292
  mov   edi,_BTNS_           ; ª®«¨ç¥á⢮ ª­®¯®ª (áçñâ稪)
297
  mov   edi,_BTNS_           ; ª®«¨ç¥á⢮ ª­®¯®ª (áçñâ稪)
293
 
298
 
294
 newbtn:                     ; ­ ç «® 横« 
299
 newbtn:                     ; ­ ç «® 横« 
295
  mov   eax,8                ;  ᮧ¤ ñ¬ ª­®¯ªã
300
  mov   eax,8                ;  ᮧ¤ ñ¬ ª­®¯ªã
296
  int   0x40
301
  int   0x40
297
 
302
 
298
                             ;  ¯¨è¥¬ ⥪áâ ­  ª­®¯ª¥
303
                             ;  ¯¨è¥¬ ⥪áâ ­  ª­®¯ª¥
299
  pushad                     ;   ᯠᠥ¬ ॣ¨áâàë
304
  pushad                     ;   ᯠᠥ¬ ॣ¨áâàë
300
  shr   ecx, 16
305
  shr   ecx, 16
301
  and   ebx, 0xffff0000
306
  and   ebx, 0xffff0000
302
  add   ebx, ecx             ;   ebx = [x] shl 16 + [y];
307
  add   ebx, ecx             ;   ebx = [x] shl 16 + [y];
303
  add   ebx, 10*65536+4      ;   ebx += ᬥ饭¨¥ ®â­®á¨â¥«ì­® ªà ï ª­®¯ª¨;
308
  add   ebx, 10*65536+4      ;   ebx += ᬥ饭¨¥ ®â­®á¨â¥«ì­® ªà ï ª­®¯ª¨;
304
  mov   ecx, [sc.work_text]  ;   èà¨äâ ¨ 梥â
309
  mov   ecx, [sc.work_text]  ;   èà¨äâ ¨ 梥â
305
  or    ecx, font
310
  or    ecx, font
306
  add   edx, -10             ;   edx = ­®¬¥à ª­®¯ª¨;
311
  add   edx, -10             ;   edx = ­®¬¥à ª­®¯ª¨;
307
  imul  edx, string_length   ;   edx *= ¤«¨­  áâப¨;
312
  imul  edx, string_length   ;   edx *= ¤«¨­  áâப¨;
308
  add   edx, text            ;   edx += text;  ⥯¥àì ¢ edx  ¤à¥á áâப¨
313
  add   edx, text            ;   edx += text;  ⥯¥àì ¢ edx  ¤à¥á áâப¨
309
  mov   esi, string_length   ;   ¢ esi - ¤«¨­  áâப¨
314
  mov   esi, string_length   ;   ¢ esi - ¤«¨­  áâப¨
310
  mov   eax, 4               ;   äã­ªæ¨ï 4 - ¢ë¢®¤ ⥪áâ 
315
  mov   eax, 4               ;   äã­ªæ¨ï 4 - ¢ë¢®¤ ⥪áâ 
311
  int   0x40
316
  int   0x40
312
  popad
317
  popad
313
 
318
 
314
  inc   edx                  ;  ­®¬¥à ª­®¯ª¨++;
319
  inc   edx                  ;  ­®¬¥à ª­®¯ª¨++;
315
  add   ecx,15*65536         ;  㢥«¨ç¨¬ ᬥ饭¨¥ ¯® y
320
  add   ecx,15*65536         ;  㢥«¨ç¨¬ ᬥ饭¨¥ ¯® y
316
  dec   edi                  ;  㬥­ì訬 áçñâ稪
321
  dec   edi                  ;  㬥­ì訬 áçñâ稪
317
  jnz   newbtn               ; ¥á«¨ ­¥ ­®«ì, ¯®¢â®à¨¬ ¢áñ ¥éñ à §
322
  jnz   newbtn               ; ¥á«¨ ­¥ ­®«ì, ¯®¢â®à¨¬ ¢áñ ¥éñ à §
318
 
323
 
319
  mov   eax,12               ; § ª®­ç¨«¨ "à¨á®¢ âì"
324
  mov   eax,12               ; § ª®­ç¨«¨ "à¨á®¢ âì"
320
  mov   ebx,2
325
  mov   ebx,2
321
  int   0x40
326
  int   0x40
322
 
327
 
323
ret                          ; ¢®§¢à â
328
ret                          ; ¢®§¢à â
324
 
329
 
325
 
330
 
326
 
331
 
327
; „€›… Žƒ€ŒŒ›
332
; „€›… Žƒ€ŒŒ›
328
DATA
333
DATA
329
 
334
 
330
  macro strtbl name, [string]
335
  macro strtbl name, [string]
331
  {
336
  {
332
   common
337
   common
333
     label name dword
338
     label name dword
334
   forward
339
   forward
335
     local str
340
     local str
336
     dd str
341
     dd str
337
   forward
342
   forward
338
     str db string
343
     str db string
339
  }
344
  }
340
 
345
 
341
  strtbl startapps       ,\
346
  strtbl startapps       ,\
342
    <"/RD/1/PIC4",0>     ,\
347
    <"/RD/1/PIC4",0>     ,\
343
    <"/RD/1/DESKTOP",0>  ,\
348
    <"/RD/1/DESKTOP",0>  ,\
344
    <"/RD/1/MV",0>       ,\
349
    <"/RD/1/MV",0>       ,\
345
    <"/RD/1/JPEGVIEW",0> ,\
350
    <"/RD/1/JPEGVIEW",0> ,\
346
    <"/RD/1/CPU",0>      ,\
351
    <"/RD/1/CPU",0>      ,\
347
    <"/RD/1/SPANEL",0>   ,\
352
    <"/RD/1/SPANEL",0>   ,\
348
    <"/RD/1/ICON2",0> ,\
353
    <"/RD/1/ICON2",0> ,\
349
    <"/RD/1/VRR",0>
354
    <"/RD/1/VRR",0>
350
 
355
 
351
;  header:            ; § £®«®¢®ª
356
;  header:            ; § £®«®¢®ª
352
;    db 'M E N U'
357
;    db 'M E N U'
353
;  header_len = $ - header
358
;  header_len = $ - header
354
 
359
 
355
;  text:              ; ⥪áâ ­  ª­®¯ª å
360
;  text:              ; ⥪áâ ­  ª­®¯ª å
356
;    db 'Background  '; 12
361
;    db 'Background  '; 12
357
;    db 'Colors      '
362
;    db 'Colors      '
358
;    db 'MeView      '
363
;    db 'MeView      '
359
;    db 'Processes   '
364
;    db 'Processes   '
360
;    db 'Panel setup '
365
;    db 'Panel setup '
361
;    db 'Icon manager'
366
;    db 'Icon manager'
362
 
367
 
363
  sz header, "KolibriOS"
368
  sz header, "KolibriOS"
364
 
369
 
365
  lsz text,\
370
  lsz text,\
366
    en, 'Background  ',\
371
    en, 'Background  ',\
367
    en, 'Colors      ',\
372
    en, 'Colors      ',\
368
    en, 'MeView      ',\
373
    en, 'MeView      ',\
369
    en, 'JpegView    ',\
374
    en, 'JpegView    ',\
370
    en, 'Processes   ',\
375
    en, 'Processes   ',\
371
    en, 'Panel setup ',\
376
    en, 'Panel setup ',\
372
    en, 'Icon manager',\
377
    en, 'Icon manager',\
373
    en, 'VRR         ',\
378
    en, 'VRR         ',\
374
    \
379
    \
375
    ru, 'ƒ¥­¥à â®à ®¡®¥¢     ',\
380
    ru, 'ƒ¥­¥à â®à ®¡®¥¢     ',\
376
    ru, '‘¨á⥬­ë¥ æ¢¥â      ',\
381
    ru, '‘¨á⥬­ë¥ æ¢¥â      ',\
377
    ru, 'à®á¬®âà BMP        ',\
382
    ru, 'à®á¬®âà BMP        ',\
378
    ru, 'à®á¬®âà JPEG       ',\
383
    ru, 'à®á¬®âà JPEG       ',\
379
    ru, 'à®æ¥ááë            ',\
384
    ru, 'à®æ¥ááë            ',\
380
    ru, ' áâனª  ¯ ­¥«¨    ',\
385
    ru, ' áâனª  ¯ ­¥«¨    ',\
381
    ru, '“¯à ¢«¥­¨¥ ¨ª®­ª ¬¨ ',\
386
    ru, '“¯à ¢«¥­¨¥ ¨ª®­ª ¬¨ ',\
382
    ru, ' áâனª  ¬®­¨â®à   '
387
    ru, ' áâனª  ¬®­¨â®à   '
383
 
388
 
384
start_info:
389
start_info:
385
        .mode   dd      7
390
        .mode   dd      7
386
                dd      0
391
                dd      0
387
        .params dd      0
392
        .params dd      0
388
                dd      0
393
                dd      0
389
                dd      0
394
                dd      0
390
                db      0
395
                db      0
391
                dd      start_info.path
396
                dd      start_info.path
392
 
397
 
393
; …ˆˆ–ˆ€‹ˆ‡ˆŽ‚€›… „€›…
398
; …ˆˆ–ˆ€‹ˆ‡ˆŽ‚€›… „€›…
394
UDATA
399
UDATA
395
  processes   dd ?              ; ª®«¨ç¥á⢮ ¯à®æ¥áᮢ ¢ á¨á⥬¥
400
  processes   dd ?              ; ª®«¨ç¥á⢮ ¯à®æ¥áᮢ ¢ á¨á⥬¥
396
  curx1       dd ?              ; ª®®à¤¨­ âë ªãàá®à 
401
  curx1       dd ?              ; ª®®à¤¨­ âë ªãàá®à 
397
  cury1       dd ?
402
  cury1       dd ?
398
  curx        dd ?              ; ª®®à¤¨­ âë ®ª­  ¬¥­î
403
  curx        dd ?              ; ª®®à¤¨­ âë ®ª­  ¬¥­î
399
  cury        dd ?
404
  cury        dd ?
400
 
405
 
401
  menu_opened db ?              ; ®âªàëâ® ¬¥­î ¨«¨ ­¥â? (1-¤ , 0-­¥â)
406
  menu_opened db ?              ; ®âªàëâ® ¬¥­î ¨«¨ ­¥â? (1-¤ , 0-­¥â)
402
 
407
 
403
align 4
408
align 4
404
start_info.path rb 256
409
start_info.path rb 256
405
 
410
 
406
  sc       system_colors        ; á¨á⥬­ë¥ 梥â 
411
  sc       system_colors        ; á¨á⥬­ë¥ 梥â 
407
  procinfo process_information  ; ¨­ä®à¬ æ¨ï ® ¯à®æ¥áá¥
412
  procinfo process_information  ; ¨­ä®à¬ æ¨ï ® ¯à®æ¥áá¥
408
 
413
 
409
  rb 1024                       ; áâíª ¤«ï ®ª­  ¬¥­î - 墠â¨â ¨ 1 Š¡
414
  rb 1024                       ; áâíª ¤«ï ®ª­  ¬¥­î - 墠â¨â ¨ 1 Š¡
410
  align 32
415
  align 32
411
  stack_wnd:
416
  stack_wnd:
412
 
417
 
413
 
418
 
414
MEOS_APP_END
419
MEOS_APP_END
415
; ŠŽ…– Žƒ€ŒŒ›
420
; ŠŽ…– Žƒ€ŒŒ›