Subversion Repositories Kolibri OS

Rev

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

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