Subversion Repositories Kolibri OS

Rev

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

Rev 4877 Rev 5410
1
use32
1
use32
2
    org     0
2
    org     0
3
    db	    'MENUET01'
3
    db	    'MENUET01'
4
    dd	    1, @entry, @end, @memory, @stack, @params, 0
4
    dd	    1, @entry, @end, @memory, @stack, @params, 0
5
 
5
 
6
    include "../../macros.inc"
6
    include "../../macros.inc"
7
    include "../../proc32.inc"
7
    include "../../proc32.inc"
8
    include "../../dll.inc"
8
    include "../../dll.inc"
9
 
9
 
10
 macro cmpe a, b, c  {
10
 macro cmpe a, b, c  {
11
    cmp     a, b
11
    cmp     a, b
12
    je	    c	     }
12
    je	    c	     }
13
 
13
 
14
 macro cmpl a, b, c  {
14
 macro cmpl a, b, c  {
15
    cmp     a, b
15
    cmp     a, b
16
    jl	    c	     }
16
    jl	    c	     }
17
 
17
 
18
 macro cmpne a, b, c {
18
 macro cmpne a, b, c {
19
    cmp     a, b
19
    cmp     a, b
20
    jne     c	     }
20
    jne     c	     }
21
 
21
 
22
 macro cmple a, b, c {
22
 macro cmple a, b, c {
23
    cmp     a, b
23
    cmp     a, b
24
    jle     c	     }
24
    jle     c	     }
25
 
25
 
26
 macro cmpge a, b, c {
26
 macro cmpge a, b, c {
27
    cmp     a, b
27
    cmp     a, b
28
    jge     c	     }
28
    jge     c	     }
29
 
29
 
30
 LINEH	    equ 12
30
 LINEH	    equ 12
31
 ICONS	    equ 11
31
 ICONS	    equ 11
32
 
32
 
33
;=====================================================================
33
;=====================================================================
34
 
34
 
35
 @entry:
35
 @entry:
36
 
36
 
37
    mcall   40, 101b
37
    mcall   40, 101b
38
 
38
 
39
 ;----------------------------
39
 ;----------------------------
40
 
40
 
41
  ;; CHECK FOR PARAMS
41
  ;; CHECK FOR PARAMS
42
    cmpne   [@params], byte 0, parse
42
    cmpne   [@params], byte 0, parse
43
    mov     eax, @params
43
    mov     eax, @params
44
    mov     ebx, sz_std
44
    mov     ebx, sz_std
45
  @@:
45
  @@:
46
    mov     cl, [ebx]
46
    mov     cl, [ebx]
47
    mov     [eax], cl
47
    mov     [eax], cl
48
    inc     eax
48
    inc     eax
49
    inc     ebx
49
    inc     ebx
50
    cmpne   [ebx - 1], byte 0, @b
50
    cmpne   [ebx - 1], byte 0, @b
51
 
51
 
52
  ;; TEXT
52
  ;; TEXT
53
 
53
 
54
 parse:
54
 parse:
55
    mov     [text.lines], dword 1
55
    mov     [text.lines], dword 1
56
    mov     [text.max_len], dword 1
56
    mov     [text.max_len], dword 1
57
 
57
 
58
    mov     eax, @params
58
    mov     eax, @params
59
    mov     ebx, text.buffer
59
    mov     ebx, text.buffer
60
    mov     edx, 0
60
    mov     edx, 0
61
    mov     esi, 0
61
    mov     esi, 0
62
 
62
 
63
    cmpne   [eax], byte "'", @f
63
    cmpne   [eax], byte "'", @f
64
    mov     dl, "'"
64
    mov     dl, "'"
65
    mov     eax, @params + 1
65
    mov     eax, @params + 1
66
    jmp     .text
66
    jmp     .text
67
 
67
 
68
  @@:
68
  @@:
69
    cmpne   [eax], byte '"', .text
69
    cmpne   [eax], byte '"', .text
70
    mov     dl, '"'
70
    mov     dl, '"'
71
    mov     eax, @params + 1
71
    mov     eax, @params + 1
72
 
72
 
73
  .text:
73
  .text:
74
    cmpe    [eax], dl, .text.end
74
    cmpe    [eax], dl, .text.end
75
    cmpe    [eax], byte 0, .text.end
75
    cmpe    [eax], byte 0, .text.end
76
    mov     cl, [eax]
76
    mov     cl, [eax]
77
 
77
 
78
    cmpe    cl, "\", .char
78
    cmpe    cl, "\", .char
79
    cmpne   cl, 10, .copy
79
    cmpne   cl, 10, .copy
80
    cmple   esi, dword [text.max_len], @f
80
    cmple   esi, dword [text.max_len], @f
81
    mov     [text.max_len], esi
81
    mov     [text.max_len], esi
82
  @@:
82
  @@:
83
    mov     esi, 0
83
    mov     esi, 0
84
    mov     cl, 0
84
    mov     cl, 0
85
    inc     dword [text.lines]
85
    inc     dword [text.lines]
86
    jmp     .copy
86
    jmp     .copy
87
 
87
 
88
  .char:
88
  .char:
89
    cmpe    [eax + 1], byte "n", .newline
89
    cmpe    [eax + 1], byte "n", .newline
90
    cmpe    [eax + 1], dl, .quote
90
    cmpe    [eax + 1], dl, .quote
91
    jmp     .copy
91
    jmp     .copy
92
 
92
 
93
  .newline:
93
  .newline:
94
    cmple   esi, dword [text.max_len], @f
94
    cmple   esi, dword [text.max_len], @f
95
    mov     [text.max_len], esi
95
    mov     [text.max_len], esi
96
  @@:
96
  @@:
97
    mov     esi, 0
97
    mov     esi, 0
98
    mov     cl, 0
98
    mov     cl, 0
99
    inc     dword [text.lines]
99
    inc     dword [text.lines]
100
    inc     eax
100
    inc     eax
101
    jmp     .copy
101
    jmp     .copy
102
 
102
 
103
  .quote:
103
  .quote:
104
    mov     cl, dl
104
    mov     cl, dl
105
    inc     eax
105
    inc     eax
106
 
106
 
107
  .copy:
107
  .copy:
108
    mov     [ebx], cl
108
    mov     [ebx], cl
109
    inc     eax
109
    inc     eax
110
    inc     ebx
110
    inc     ebx
111
    inc     esi
111
    inc     esi
112
    jmp     .text
112
    jmp     .text
113
  .text.end:
113
  .text.end:
114
 
114
 
115
    cmple   esi, dword [text.max_len], @f
115
    cmple   esi, dword [text.max_len], @f
116
    mov     [text.max_len], esi
116
    mov     [text.max_len], esi
117
  @@:
117
  @@:
118
 
118
 
119
    mov     [ebx], byte 0
119
    mov     [ebx], byte 0
120
 
120
 
121
    cmpge   [text.max_len], dword 25, @f
121
    cmpge   [text.max_len], dword 25, @f
122
    mov     [text.max_len], dword 25
122
    mov     [text.max_len], dword 25
123
  @@:
123
  @@:
124
 
124
 
125
 ;; PARAMS
125
 ;; PARAMS
126
 
126
 
127
  .params:
127
  .params:
128
    cmpe    [eax], byte 0, .params.end
128
    cmpe    [eax], byte 0, .params.end
129
    cmpe    [eax], byte "d", .set_atcl
129
    cmpe    [eax], byte "d", .set_atcl
130
    cmpe    [eax], byte "t", .set_title
130
    cmpe    [eax], byte "t", .set_title
131
    mov     ebx, 1
131
    mov     ebx, 1
132
    cmpe    [eax], byte "A", .set_icon
132
    cmpe    [eax], byte "A", .set_icon
133
    inc     ebx
133
    inc     ebx
134
    cmpe    [eax], byte "E", .set_icon
134
    cmpe    [eax], byte "E", .set_icon
135
    inc     ebx
135
    inc     ebx
136
    cmpe    [eax], byte "W", .set_icon
136
    cmpe    [eax], byte "W", .set_icon
137
    inc     ebx
137
    inc     ebx
138
    cmpe    [eax], byte "O", .set_icon
138
    cmpe    [eax], byte "O", .set_icon
139
    inc     ebx
139
    inc     ebx
140
    cmpe    [eax], byte "N", .set_icon
140
    cmpe    [eax], byte "N", .set_icon
141
    inc     ebx
141
    inc     ebx
142
    cmpe    [eax], byte "I", .set_icon
142
    cmpe    [eax], byte "I", .set_icon
143
    inc     ebx
143
    inc     ebx
144
    cmpe    [eax], byte "F", .set_icon
144
    cmpe    [eax], byte "F", .set_icon
145
    inc     ebx
145
    inc     ebx
146
    cmpe    [eax], byte "C", .set_icon
146
    cmpe    [eax], byte "C", .set_icon
147
    inc     ebx
147
    inc     ebx
148
    cmpe    [eax], byte "M", .set_icon
148
    cmpe    [eax], byte "M", .set_icon
149
    inc     ebx
149
    inc     ebx
150
    cmpe    [eax], byte "D", .set_icon
150
    cmpe    [eax], byte "D", .set_icon
151
    inc     ebx
151
    inc     ebx
152
    cmpe    [eax], byte "S", .set_icon
152
    cmpe    [eax], byte "S", .set_icon
153
 
153
 
154
    jmp     .next_char
154
    jmp     .next_char
155
 
155
 
156
  .set_atcl:
156
  .set_atcl:
157
    mov     [params.atcl], byte 1
157
    mov     [params.atcl], byte 1
158
    jmp     .next_char
158
    jmp     .next_char
159
 
159
 
160
  .set_title:
160
  .set_title:
161
    mov     [params.title], byte 1
161
    mov     [params.title], byte 1
162
    jmp     .next_char
162
    jmp     .next_char
163
 
163
 
164
  .set_icon:
164
  .set_icon:
165
    mov     [params.icon], ebx
165
    mov     [params.icon], ebx
166
 
166
 
167
  .next_char:
167
  .next_char:
168
    inc     eax
168
    inc     eax
169
    jmp     .params
169
    jmp     .params
170
 
170
 
171
  .params.end:
171
  .params.end:
172
 
172
 
173
 ;----------------------------
173
 ;----------------------------
174
 
174
 
175
    mcall   68, 11
175
    mcall   68, 11
176
    stdcall dll.Load, @imports
176
    stdcall dll.Load, @imports
177
 
177
 
178
    mov     dword [fi + 00], 5
178
    mov     dword [fi + 00], 5
179
    mov     dword [fi + 16], buffer
179
    mov     dword [fi + 16], buffer
180
    mov     dword [fi + 21], sz_ifile
180
    mov     dword [fi + 21], sz_ifile
181
    mcall   70, fi
181
    mcall   70, fi
182
 
182
 
183
    mov     edx, dword [buffer + 32]
183
    mov     edx, dword [buffer + 32]
184
    shl     edx, 2
184
    shl     edx, 2
185
    stdcall mem.Alloc, edx
185
    stdcall mem.Alloc, edx
186
    mov     [img_data.rgb_obj], eax
186
    mov     [img_data.rgb_obj], eax
187
 
187
 
188
    mov     dword [fi + 00], 0
188
    mov     dword [fi + 00], 0
189
    mov     dword [fi + 12], edx
189
    mov     dword [fi + 12], edx
190
    m2m     dword [fi + 16], [img_data.rgb_obj]
190
    m2m     dword [fi + 16], [img_data.rgb_obj]
191
    mov     dword [fi + 21], sz_ifile
191
    mov     dword [fi + 21], sz_ifile
192
    mcall   70, fi
192
    mcall   70, fi
193
 
193
 
194
    stdcall dword [img.decode], dword [img_data.rgb_obj], ebx, 0
194
    stdcall dword [img.decode], dword [img_data.rgb_obj], ebx, 0
195
    mov     dword [img_data.obj], eax
195
    mov     dword [img_data.obj], eax
196
 
196
 
197
 ;; alpha
197
 ;; alpha
198
    add     eax, 24
198
    add     eax, 24
199
    mov     eax, [eax] ;; eax - data [argb]
199
    mov     eax, [eax] ;; eax - data [argb]
200
 
200
 
201
    mov     ecx, 24 * 24 * ICONS
201
    mov     ecx, 24 * 24 * ICONS
202
 alpha:
202
 alpha:
203
    mov     ebx, [eax]
203
    mov     ebx, [eax]
204
    shr     ebx, 24
204
    shr     ebx, 24
205
    cmpne   bl, 0x00, @f
205
    cmpne   bl, 0x00, @f
206
    mov     [eax], dword 0x222222
206
    mov     [eax], dword 0x222222
207
 
207
 
208
  @@:
208
  @@:
209
    add     eax, 4
209
    add     eax, 4
210
    loop    alpha
210
    loop    alpha
211
 
211
 
212
 ;; end alpha
212
 ;; end alpha
213
 
213
 
214
    stdcall dword [img.to_rgb], dword [img_data.obj], dword [img_data.rgb_obj]
214
    stdcall dword [img.to_rgb], dword [img_data.obj], dword [img_data.rgb_obj]
215
    stdcall dword [img.destroy], dword [img_data.obj]
215
    stdcall dword [img.destroy], dword [img_data.obj]
216
 
216
 
217
 ;----------------------------
217
 ;----------------------------
218
 
218
 
219
    mov     [text.offset], LINEH
219
    mov     [text.offset], LINEH
220
 
220
 
221
    mov     eax, [text.lines]
221
    mov     eax, [text.lines]
222
    add     eax, 2
222
    add     eax, 2
223
    imul    eax, LINEH
223
    imul    eax, LINEH
224
    mov     [window.height], eax
224
    mov     [window.height], eax
225
 
225
 
226
    mov     eax, [text.max_len]
226
    mov     eax, [text.max_len]
227
    imul    eax, 6
227
    imul    eax, 6
228
    add     eax, LINEH * 2
228
    add     eax, LINEH * 2
229
    cmpe    [params.icon], dword 0, @f
229
    cmpe    [params.icon], dword 0, @f
230
    add     eax, 24 + LINEH
230
    add     eax, 24 + LINEH
231
    add     [text.offset], 24 + LINEH
231
    add     [text.offset], 24 + LINEH
232
  @@:
232
  @@:
233
    mov     [window.width], eax
233
    mov     [window.width], eax
234
 
234
 
235
    mcall   14
235
    mcall   14
236
    mov     ebx, eax
236
    mov     ebx, eax
237
    and     ebx, 0xFFFF
237
    and     ebx, 0xFFFF
238
    mov     [scr.height], ebx
238
    mov     [scr.height], ebx
239
    shr     eax, 16
239
    shr     eax, 16
240
    mov     [scr.width], eax
240
    mov     [scr.width], eax
241
    sub     eax, [window.width]
241
    sub     eax, [window.width]
242
    sub     eax, LINEH
242
    sub     eax, LINEH
243
    mov     [window.x], eax
243
    mov     [window.x], eax
244
 
244
 
245
 ;; CALC WINDOW.Y
245
 ;; CALC WINDOW.Y
246
 
246
 
247
    mcall   68, 22, sz_shname, 256 + 512, 4 + 1 ;OPEN_ALWAYS and WRITE
247
    mcall   68, 22, sz_shname, 256 + 512, 4 + 1 ;OPEN_ALWAYS and WRITE
248
    add     eax, 512
248
    add     eax, 512
249
    mov     [shm], eax
249
    mov     [shm], eax
250
 
250
 
251
 s_search:
251
 s_search:
252
    mov     eax, [shm]
252
    mov     eax, [shm]
253
 
253
 
254
    mov     ebx, 0
254
    mov     ebx, 0
255
    mov     ecx, [text.lines]
255
    mov     ecx, [text.lines]
256
    add     ecx, 3
256
    add     ecx, 3
257
 
257
 
258
    push    eax ebx
258
    push    eax ebx
259
 
259
 
260
    mov     eax, [scr.height]
260
    mov     eax, [scr.height]
261
    mov     edx, 0
261
    mov     edx, 0
262
    mov     ebx, LINEH
262
    mov     ebx, LINEH
263
    div     ebx
263
    div     ebx
264
    mov     edx, eax
264
    mov     edx, eax
265
    add     edx, [shm]
265
    add     edx, [shm]
266
    sub     edx, ecx
266
    sub     edx, ecx
267
    inc     edx
267
    inc     edx
268
 
268
 
269
    pop     ebx eax
269
    pop     ebx eax
270
 
270
 
271
 s_area:
271
 s_area:
272
    cmpe    [eax], byte 1, .is_1
272
    cmpe    [eax], byte 1, .is_1
273
 
273
 
274
  .is_0:
274
  .is_0:
275
    inc     ebx
275
    inc     ebx
276
    cmpe    ebx, ecx, s_ok
276
    cmpe    ebx, ecx, s_ok
277
    jmp     .next
277
    jmp     .next
278
 
278
 
279
  .is_1:
279
  .is_1:
280
    mov     ebx, 0
280
    mov     ebx, 0
281
 
281
 
282
  .next:
282
  .next:
283
    inc     eax
283
    inc     eax
284
    cmple   eax, edx, s_area
284
    cmple   eax, edx, s_area
285
 
285
 
286
    mcall   5, 10
286
    mcall   5, 10
287
    jmp     s_search
287
    jmp     s_search
288
 
288
 
289
 s_ok:
289
 s_ok:
290
    sub     eax, ecx
290
    sub     eax, ecx
291
    inc     eax
291
    inc     eax
292
    mov     [shm.our], eax
292
    mov     [shm.our], eax
293
 
293
 
294
    mov     edx, eax
294
    mov     edx, eax
295
    sub     edx, [shm]
295
    sub     edx, [shm]
296
    inc     edx
296
    inc     edx
297
    imul    edx, LINEH
297
    imul    edx, LINEH
298
    mov     [window.y], edx
298
    mov     [window.y], edx
299
 
299
 
300
    push    eax ebx
300
    push    eax ebx
301
    mcall   48, 5
301
    mcall   48, 5
302
    shr     ebx, 16
302
    shr     ebx, 16
303
    add     [window.y], ebx
303
    add     [window.y], ebx
304
    pop     ebx eax
304
    pop     ebx eax
305
 
305
 
306
  @@:
306
  @@:
307
    mov     [eax], byte 1
307
    mov     [eax], byte 1
308
    inc     eax
308
    inc     eax
309
    loop    @b
309
    loop    @b
310
 
310
 
311
 ;----------------------------
311
 ;----------------------------
312
 
312
 
313
    mov     eax, 60
313
    mov     eax, 60
314
    imul    eax, [text.lines]
314
    imul    eax, [text.lines]
315
    mov     [timer], eax
315
    mov     [timer], eax
316
 
316
 
317
    mov     [timer.step], dword 1
317
    mov     [timer.step], dword 1
318
    cmpne   [params.atcl], byte 1, @f
318
    cmpne   [params.atcl], byte 1, @f
319
    mov     [timer.step], dword 0
319
    mov     [timer.step], dword 0
320
  @@:
320
  @@:
321
 
321
 
322
 ;----------------------------
322
 ;----------------------------
323
 
323
 
324
 update:
324
 update:
325
    mcall   23, 10
325
    mcall   23, 10
326
    cmpe    al, EV_REDRAW, redraw
326
    cmpe    al, EV_REDRAW, redraw
327
    cmpe    al, EV_BUTTON, exit
327
    cmpe    al, EV_BUTTON, exit
328
 
328
 
329
    mov     eax, [timer.step]
329
    mov     eax, [timer.step]
330
    sub     [timer], eax
330
    sub     [timer], eax
331
    cmpne   [timer], dword 0, update
331
    cmpne   [timer], dword 0, update
332
 
332
 
333
 ;----------------------------
333
 ;----------------------------
334
 
334
 
335
 exit:
335
 exit:
336
    mov     eax, [shm.our]
336
    mov     eax, [shm.our]
337
    mov     ecx, [text.lines]
337
    mov     ecx, [text.lines]
338
    add     ecx, 3
338
    add     ecx, 3
339
  @@:
339
  @@:
340
    mov     [eax], byte 0
340
    mov     [eax], byte 0
341
    inc     eax
341
    inc     eax
342
    loop    @b
342
    loop    @b
343
 
343
 
344
    mcall   68, 23, sz_shname
344
    mcall   68, 23, sz_shname
345
 
345
 
346
    mcall   -1
346
    mcall   -1
347
 
347
 
348
 ;----------------------------
348
 ;----------------------------
349
 
349
 
350
 redraw:
350
 redraw:
351
    call    draw_window
351
    call    draw_window
352
    call    draw_text
352
    call    draw_text
353
 
353
 
354
    jmp     update
354
    jmp     update
355
 
355
 
356
 ;----------------------------
356
 ;----------------------------
357
 
357
 
358
 draw_window:
358
 draw_window:
359
    dec     dword [window.width]
359
    dec     dword [window.width]
360
    dec     dword [window.height]
360
    dec     dword [window.height]
361
    mcall   0, <[window.x], [window.width]>, <[window.y], [window.height]>, 0x61000000
361
    mcall   0, <[window.x], [window.width]>, <[window.y], [window.height]>, 0x61000000
362
    inc     dword [window.width]
362
    inc     dword [window.width]
363
    inc     dword [window.height]
363
    inc     dword [window.height]
364
 
364
 
365
    and     ebx, 0xFFFF
365
    and     ebx, 0xFFFF
366
    and     ecx, 0xFFFF
366
    and     ecx, 0xFFFF
367
    inc     ebx
367
    inc     ebx
368
    inc     ecx
368
    inc     ecx
369
    mcall   8, , , 0x61000001
369
    mcall   8, , , 0x61000001
370
 
370
 
371
    mov     eax, 13
371
    mov     eax, 13
372
    mov     ebx, [window.width]
372
    mov     ebx, [window.width]
373
    mov     edx, 0x222222
373
    mov     edx, 0x222222
374
    cmpe    [first_draw], byte 1, .draw_full
374
    cmpe    [first_draw], byte 1, .draw_full
375
    mov     [first_draw], byte 1
375
    mov     [first_draw], byte 1
376
    mov     esi, [window.height]
376
    mov     esi, [window.height]
377
    mov     ecx, LINEH
377
    mov     ecx, LINEH
378
  @@:
378
  @@:
379
    mcall
379
    mcall
380
    add     ecx, LINEH shl 16
380
    add     ecx, LINEH shl 16
381
    sub     esi, LINEH
381
    sub     esi, LINEH
382
    push    eax ebx
382
    push    eax ebx
383
    mcall   5, 1
383
    mcall   5, 1
384
    pop     ebx eax
384
    pop     ebx eax
385
    cmpne   esi, 0, @b
385
    cmpne   esi, 0, @b
386
  .draw_full:
386
  .draw_full:
387
    mcall
387
    mcall
388
 
388
 
389
    mcall   , , 1, 0x121212
389
    mcall   , , 1, 0x121212
390
 
390
 
391
    mov     ecx, [window.height]
391
    mov     ecx, [window.height]
392
    dec     ecx
392
    dec     ecx
393
    shl     ecx, 16
393
    shl     ecx, 16
394
    inc     ecx
394
    inc     ecx
395
    mcall
395
    mcall
396
 
396
 
397
    mcall   , 1, [window.width]
397
    mcall   , 1, [window.width]
398
 
398
 
399
    mov     ebx, [window.width]
399
    mov     ebx, [window.width]
400
    dec     ebx
400
    dec     ebx
401
    shl     ebx, 16
401
    shl     ebx, 16
402
    inc     ebx
402
    inc     ebx
403
    mcall
403
    mcall
404
 
404
 
405
    mcall   1, 1, 1
405
    mcall   1, 1, 1
406
    mov     ebx, [window.width]
406
    mov     ebx, [window.width]
407
    sub     ebx, 2
407
    sub     ebx, 2
408
    mcall
408
    mcall
409
    mov     ecx, [window.height]
409
    mov     ecx, [window.height]
410
    sub     ecx, 2
410
    sub     ecx, 2
411
    mcall
411
    mcall
412
    mov     ebx, 1
412
    mov     ebx, 1
413
    mcall
413
    mcall
414
 
414
 
415
 ;-----
415
 ;-----
416
 
416
 
417
    mov     ecx, [scr.width]
417
    mov     ecx, [scr.width]
418
    inc     ecx
418
    inc     ecx
419
 
419
 
420
    mov     eax, 35
420
    mov     eax, 35
421
    mov     ebx, ecx
421
    mov     ebx, ecx
422
    imul    ebx, [window.y]
422
    imul    ebx, [window.y]
423
    add     ebx, [window.x]
423
    add     ebx, [window.x]
424
    dec     ebx
424
    dec     ebx
425
    mcall
425
    mcall
426
    push    eax
426
    push    eax
427
 
427
 
428
    mov     eax, 35
428
    mov     eax, 35
429
    add     ebx, [window.width]
429
    add     ebx, [window.width]
430
    add     ebx, 2
430
    add     ebx, 2
431
    mcall
431
    mcall
432
    push    eax
432
    push    eax
433
 
433
 
434
    mov     eax, 35
434
    mov     eax, 35
435
    mov     edx, ecx
435
    mov     edx, ecx
436
    mov     esi, [window.height]
436
    mov     esi, [window.height]
437
    dec     esi
437
    dec     esi
438
    imul    edx, esi
438
    imul    edx, esi
439
    add     ebx, edx
439
    add     ebx, edx
440
    mcall
440
    mcall
441
    push    eax
441
    push    eax
442
 
442
 
443
    mov     eax, 35
443
    mov     eax, 35
444
    sub     ebx, [window.width]
444
    sub     ebx, [window.width]
445
    sub     ebx, 2
445
    sub     ebx, 2
446
    mcall
446
    mcall
447
    push    eax
447
    push    eax
448
 
448
 
449
 ;-----
449
 ;-----
450
 
450
 
451
    mov     eax, 1
451
    mov     eax, 1
452
 
452
 
453
    pop     edx
453
    pop     edx
454
    mov     ecx, [window.height]
454
    mov     ecx, [window.height]
455
    dec     ecx
455
    dec     ecx
456
    mcall   , 0
456
    mcall   , 0
457
 
457
 
458
    pop     edx
458
    pop     edx
459
    mov     ebx, [window.width]
459
    mov     ebx, [window.width]
460
    dec     ebx
460
    dec     ebx
461
    mcall
461
    mcall
462
 
462
 
463
    pop     edx
463
    pop     edx
464
    mcall   , , 0
464
    mcall   , , 0
465
 
465
 
466
    pop     edx
466
    pop     edx
467
    mcall   , 0
467
    mcall   , 0
468
 
468
 
469
 ;-----
469
 ;-----
470
 
470
 
471
    cmpe    [params.icon], dword 0, @f
471
    cmpe    [params.icon], dword 0, @f
472
 
472
 
473
    mov     ebx, [params.icon]
473
    mov     ebx, [params.icon]
474
    dec     ebx
474
    dec     ebx
475
    imul    ebx, 24 * 24 * 3
475
    imul    ebx, 24 * 24 * 3
476
    add     ebx, [img_data.rgb_obj]
476
    add     ebx, [img_data.rgb_obj]
477
 
477
 
478
    mov     edx, [window.height]
478
    mov     edx, [window.height]
479
    shr     edx, 1
479
    shr     edx, 1
480
    sub     edx, 12
480
    sub     edx, 12
481
    add     edx, LINEH shl 16
481
    add     edx, LINEH shl 16
482
 
482
 
483
    mcall   7, , <24, 24>
483
    mcall   7, , <24, 24>
484
 
484
 
485
  @@:
485
  @@:
486
 
486
 
487
    ret
487
    ret
488
 
488
 
489
 ;----------------------------
489
 ;----------------------------
490
 
490
 
491
 draw_text:
491
 draw_text:
492
    mov     esi, [text.lines]
492
    mov     esi, [text.lines]
493
 
493
 
494
    mov     eax, 4
494
    mov     eax, 4
495
    mov     ebx, [text.offset]
495
    mov     ebx, [text.offset]
496
    shl     ebx, 16
496
    shl     ebx, 16
497
    add     ebx, LINEH + (LINEH - 6) / 2
497
    add     ebx, LINEH + (LINEH - 6) / 2
498
    mov     edx, text.buffer
498
    mov     edx, text.buffer
499
 
499
 
500
  .draw_lines:
500
  .draw_lines:
501
    mov     ecx, 0x80111111
501
    mov     ecx, 0x80111111
502
 
502
 
503
    add     ebx, 0x00010000
503
    add     ebx, 0x00010000
504
    dec     ebx
504
    dec     ebx
505
    mcall
505
    mcall
506
    add     ebx, 2
506
    add     ebx, 2
507
    mcall
507
    mcall
508
    sub     ebx, 0x00020000
508
    sub     ebx, 0x00020000
509
    mcall
509
    mcall
510
    sub     ebx, 2
510
    sub     ebx, 2
511
    mcall
511
    mcall
512
 
512
 
513
    add     ebx, 0x00010001
513
    add     ebx, 0x00010001
514
    mov     ecx, 0x80D0D0D0
514
    mov     ecx, 0x80D0D0D0
515
    mcall
515
    mcall
516
 
516
 
517
    add     ebx, LINEH
517
    add     ebx, LINEH
518
    dec     esi
518
    dec     esi
519
    cmpe    esi, 0, .draw_lines.end
519
    cmpe    esi, 0, .draw_lines.end
520
 
520
 
521
    inc     edx
521
    inc     edx
522
  @@:
522
  @@:
523
    cmpe    [edx], byte 0, @f
523
    cmpe    [edx], byte 0, @f
524
    inc     edx
524
    inc     edx
525
    jmp     @b
525
    jmp     @b
526
  @@:
526
  @@:
527
    inc     edx
527
    inc     edx
528
    jmp     .draw_lines
528
    jmp     .draw_lines
529
 
529
 
530
  .draw_lines.end:
530
  .draw_lines.end:
531
 
531
 
532
    cmpne   [params.title], byte 1, @f
532
    cmpne   [params.title], byte 1, @f
533
    mov     edx, text.buffer
533
    mov     edx, text.buffer
534
    mov     ecx, 0x80111111
534
    mov     ecx, 0x80111111
535
    and     ebx, 0xFFFF0000
535
    and     ebx, 0xFFFF0000
536
    add     ebx, 1 shl 16 + LINEH + (LINEH - 6) / 2
536
    add     ebx, 1 shl 16 + LINEH + (LINEH - 6) / 2
537
    mcall
537
    mcall
538
 
538
 
539
    mov     ecx, 0x80FFFFFF
539
    mov     ecx, 0x80FFFFFF
540
    sub     ebx, 0x00010000
540
    sub     ebx, 0x00010000
541
    mcall
541
    mcall
542
  @@:
542
  @@:
543
 
543
 
544
    ret
544
    ret
545
 ;----------------------------
545
 ;----------------------------
546
 
546
 
547
 @imports:
547
 @imports:
548
    library img, "libimg.obj"
548
    library img, "libimg.obj"
549
    import  img, img.init,    "lib_init",     \
549
    import  img, img.init,    "lib_init",     \
550
		 img.to_rgb,  "img_to_rgb2",  \
550
		 img.to_rgb,  "img_to_rgb2",  \
551
		 img.decode,  "img_decode",   \
551
		 img.decode,  "img_decode",   \
552
		 img.destroy, "img_destroy"
552
		 img.destroy, "img_destroy"
553
 
553
 
554
 ;----------------------------
554
 ;----------------------------
555
 
555
 
556
 sz_ifile   db "/sys/notify3.png", 0
556
 sz_ifile   db "/sys/notify3.png", 0
557
 sz_shname  db "notify-mem-v01", 0
557
 sz_shname  db "notify-mem-v01", 0
558
 sz_std     db "'NOTIFY 3\n",                 \
558
 sz_std     db "'NOTIFY 3\n",                 \
559
		"d - disable auto-closing\n", \
559
		"d - disable auto-closing\n", \
560
		"t - title\n",		      \
560
		"t - title\n",		      \
561
		"A - application\n",	      \
561
		"A - application\n",	      \
562
		"E - error\n",		      \
562
		"E - error\n",		      \
563
		"W - warning\n",	      \
563
		"W - warning\n",	      \
564
		"O - ok\n",		      \
564
		"O - ok\n",		      \
565
		"N - network\n",	      \
565
		"N - network\n",	      \
566
		"I - info\n",		      \
566
		"I - info\n",		      \
567
		"F - folder\n", 	      \
567
		"F - folder\n", 	      \
568
		"C - component\n",	      \
568
		"C - component\n",	      \
569
		"M - mail\n",		      \
569
		"M - mail\n",		      \
570
		"D - download\n",	      \
570
		"D - download\n",	      \
571
		"P - audio player",	      \
571
		"S - audio player",	      \
572
		"' -td", 0
572
		"' -td", 0
573
 
573
 
574
 ;----------------------------
574
 ;----------------------------
575
 
575
 
576
 @end:
576
 @end:
577
 
577
 
578
;=====================================================================
578
;=====================================================================
579
 
579
 
580
 window:
580
 window:
581
  .x	    rd 1
581
  .x	    rd 1
582
  .y	    rd 1
582
  .y	    rd 1
583
  .width    rd 1
583
  .width    rd 1
584
  .height   rd 1
584
  .height   rd 1
585
 
585
 
586
 scr:
586
 scr:
587
  .width    rd 1
587
  .width    rd 1
588
  .height   rd 1
588
  .height   rd 1
589
 
589
 
590
 text:
590
 text:
591
  .buffer   rb 256
591
  .buffer   rb 256
592
  .lines    rd 1
592
  .lines    rd 1
593
  .max_len  rd 1
593
  .max_len  rd 1
594
  .offset   rd 1
594
  .offset   rd 1
595
 
595
 
596
 params:
596
 params:
597
  .atcl     rb 1
597
  .atcl     rb 1
598
  .title    rb 1
598
  .title    rb 1
599
  .icon     rd 1
599
  .icon     rd 1
600
 
600
 
601
 img_data:
601
 img_data:
602
  .rgb_obj  rd 1
602
  .rgb_obj  rd 1
603
  .obj	    rd 1
603
  .obj	    rd 1
604
 
604
 
605
 timer:
605
 timer:
606
  .value    rd 1
606
  .value    rd 1
607
  .step     rd 1
607
  .step     rd 1
608
 
608
 
609
 shm:
609
 shm:
610
  .addr     rd 1
610
  .addr     rd 1
611
  .our	    rd 1
611
  .our	    rd 1
612
 
612
 
613
 fi	    rb 26
613
 fi	    rb 26
614
 buffer     rb 1024
614
 buffer     rb 1024
615
 first_draw rb 1
615
 first_draw rb 1
616
 
616
 
617
;=====================================================================
617
;=====================================================================
618
	    rb 2048
618
	    rb 2048
619
 @stack:
619
 @stack:
620
 @params    rb 256
620
 @params    rb 256
621
 
621
 
622
 @memory:
622
 @memory: