Subversion Repositories Kolibri OS

Rev

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

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