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 274 | ||
---|---|---|---|
1 | ; |
1 | ; |
2 | ; UNIFORM WINDOW COLOURS & SKIN |
2 | ; UNIFORM WINDOW COLOURS & SKIN |
3 | ; |
3 | ; |
4 | ; Compile with FASM for Menuet |
4 | ; Compile with FASM for Menuet |
5 | ; |
5 | ; |
6 | ; < russian edition by Ivan Poddubny > |
6 | ; < russian edition by Ivan Poddubny > |
7 | ; < skin selection by Mike Semenyako > |
7 | ; < skin selection by Mike Semenyako > |
8 | ; |
8 | ; |
9 | 9 | ||
10 | ;****************************************************************************** |
10 | ;****************************************************************************** |
11 | use32 |
11 | use32 |
12 | org 0 |
12 | org 0 |
13 | db 'MENUET01' ; identifier |
13 | db 'MENUET01' ; identifier |
14 | dd 1 ; header version |
14 | dd 1 ; header version |
15 | dd START ; start address |
15 | dd START ; start address |
16 | dd I_END ; file size |
16 | dd I_END ; file size |
17 | dd 28000h ; memory |
17 | dd 28000h ; memory |
18 | dd 28000h ; stack pointer (0x10000+ - work area for os) |
18 | dd 28000h ; stack pointer (0x10000+ - work area for os) |
19 | dd 0,0 ; parameters, reserved |
19 | dd 0,0 ; parameters, reserved |
20 | 20 | ||
21 | include 'lang.inc' |
21 | include 'lang.inc' |
22 | include 'macros.inc' |
22 | include 'macros.inc' |
23 | ;****************************************************************************** |
23 | ;****************************************************************************** |
24 | 24 | ||
25 | 25 | ||
26 | struct SKIN_HEADER |
26 | struct SKIN_HEADER |
27 | .ident dd ? |
27 | .ident dd ? |
28 | .version dd ? |
28 | .version dd ? |
29 | .params dd ? |
29 | .params dd ? |
30 | .buttons dd ? |
30 | .buttons dd ? |
31 | .bitmaps dd ? |
31 | .bitmaps dd ? |
32 | ends |
32 | ends |
33 | 33 | ||
34 | struct SKIN_PARAMS |
34 | struct SKIN_PARAMS |
35 | .skin_height dd ? |
35 | .skin_height dd ? |
36 | .margin.right dw ? |
36 | .margin.right dw ? |
37 | .margin.left dw ? |
37 | .margin.left dw ? |
38 | .margin.bottom dw ? |
38 | .margin.bottom dw ? |
39 | .margin.top dw ? |
39 | .margin.top dw ? |
40 | .colors.inner dd ? |
40 | .colors.inner dd ? |
41 | .colors.outer dd ? |
41 | .colors.outer dd ? |
42 | .colors.frame dd ? |
42 | .colors.frame dd ? |
43 | .colors_1.inner dd ? |
43 | .colors_1.inner dd ? |
44 | .colors_1.outer dd ? |
44 | .colors_1.outer dd ? |
45 | .colors_1.frame dd ? |
45 | .colors_1.frame dd ? |
46 | .dtp.size dd ? |
46 | .dtp.size dd ? |
47 | .dtp.data db 40 dup (?) |
47 | .dtp.data db 40 dup (?) |
48 | ends |
48 | ends |
49 | 49 | ||
50 | struct SKIN_BUTTONS |
50 | struct SKIN_BUTTONS |
51 | .type dd ? |
51 | .type dd ? |
52 | .pos: |
52 | .pos: |
53 | .left dw ? |
53 | .left dw ? |
54 | .top dw ? |
54 | .top dw ? |
55 | .size: |
55 | .size: |
56 | .width dw ? |
56 | .width dw ? |
57 | .height dw ? |
57 | .height dw ? |
58 | ends |
58 | ends |
59 | 59 | ||
60 | struct SKIN_BITMAPS |
60 | struct SKIN_BITMAPS |
61 | .kind dw ? |
61 | .kind dw ? |
62 | .type dw ? |
62 | .type dw ? |
63 | .data dd ? |
63 | .data dd ? |
64 | ends |
64 | ends |
65 | 65 | ||
66 | 66 | ||
67 | START: ; start of execution |
67 | START: ; start of execution |
68 | 68 | ||
69 | mov eax,48 ; get current colors |
69 | mov eax,48 ; get current colors |
70 | mov ebx,3 |
70 | mov ebx,3 |
71 | mov ecx,color_table |
71 | mov ecx,color_table |
72 | mov edx,4*10 |
72 | mov edx,4*10 |
73 | int 0x40 |
73 | int 0x40 |
74 | 74 | ||
75 | cld |
75 | cld |
76 | mov esi,default_skn |
76 | mov esi,default_skn |
77 | mov edi,fname |
77 | mov edi,fname |
78 | mov ecx,default_skn.size |
78 | mov ecx,default_skn.size |
79 | rep movsb |
79 | rep movsb |
80 | mov [skin_info.fname],0 |
80 | mov [skin_info.fname],0 |
81 | mov [skin_info.workarea],0x10000 |
81 | mov [skin_info.workarea],0x10000 |
82 | call load_skin_file |
82 | call load_skin_file |
83 | 83 | ||
84 | ; mov esi, default_dtp |
84 | ; mov esi, default_dtp |
85 | ; mov edi, fname |
85 | ; mov edi, fname |
86 | ; mov ecx, default_dtp.size |
86 | ; mov ecx, default_dtp.size |
87 | ; rep movsb |
87 | ; rep movsb |
88 | 88 | ||
89 | red: |
89 | red: |
90 | call draw_window ; at first, draw the window |
90 | call draw_window ; at first, draw the window |
91 | 91 | ||
92 | still: |
92 | still: |
93 | 93 | ||
94 | mov eax,23 ; wait here for event |
94 | mov eax,23 ; wait here for event |
95 | mov ebx,5 |
95 | mov ebx,5 |
96 | int 0x40 |
96 | int 0x40 |
97 | 97 | ||
98 | dec eax ; redraw request ? |
98 | dec eax ; redraw request ? |
99 | jz red |
99 | jz red |
100 | dec eax ; key in buffer ? |
100 | dec eax ; key in buffer ? |
101 | jz key |
101 | jz key |
102 | dec eax ; button in buffer ? |
102 | dec eax ; button in buffer ? |
103 | jz button |
103 | jz button |
104 | 104 | ||
105 | call draw_cursor |
105 | call draw_cursor |
106 | 106 | ||
107 | jmp still |
107 | jmp still |
108 | 108 | ||
109 | 109 | ||
110 | key: ; key |
110 | key: ; key |
111 | mov al,2 ; just read it and ignore |
111 | mov al,2 ; just read it and ignore |
112 | int 0x40 |
112 | int 0x40 |
113 | jmp still |
113 | jmp still |
114 | 114 | ||
115 | button: ; button |
115 | button: ; button |
116 | mov al,17 ; get id |
116 | mov al,17 ; get id |
117 | int 0x40 |
117 | int 0x40 |
118 | 118 | ||
119 | cmp ah,11 ; read string |
119 | cmp ah,11 ; read string |
120 | jne no_string |
120 | jne no_string |
121 | call read_string |
121 | call read_string |
122 | jmp still |
122 | jmp still |
123 | no_string: |
123 | no_string: |
124 | 124 | ||
125 | cmp ah,12 ; load file |
125 | cmp ah,12 ; load file |
126 | jne no_load |
126 | jne no_load |
127 | call load_file |
127 | call load_file |
128 | call draw_window |
128 | call draw_window |
129 | jmp still |
129 | jmp still |
130 | no_load: |
130 | no_load: |
131 | 131 | ||
132 | cmp ah,13 ; save file |
132 | cmp ah,13 ; save file |
133 | jne no_save |
133 | jne no_save |
134 | call save_file |
134 | call save_file |
135 | jmp still |
135 | jmp still |
136 | no_save: |
136 | no_save: |
137 | 137 | ||
138 | cmp ah,14 ; set 3d buttons |
138 | cmp ah,14 ; set 3d buttons |
139 | jne no_3d |
139 | jne no_3d |
140 | mov eax,48 |
140 | mov eax,48 |
141 | mov ebx,1 |
141 | mov ebx,1 |
142 | mov ecx,1 |
142 | mov ecx,1 |
143 | int 0x40 |
143 | int 0x40 |
144 | mov eax,48 |
144 | mov eax,48 |
145 | mov ebx,0 |
145 | mov ebx,0 |
146 | mov ecx,0 |
146 | mov ecx,0 |
147 | int 0x40 |
147 | int 0x40 |
148 | jmp still |
148 | jmp still |
149 | no_3d: |
149 | no_3d: |
150 | 150 | ||
151 | cmp ah,15 ; set flat buttons |
151 | cmp ah,15 ; set flat buttons |
152 | jne no_flat |
152 | jne no_flat |
153 | mcall 48, 1, 0 |
153 | mcall 48, 1, 0 |
154 | mcall 48, 0, 0 |
154 | mcall 48, 0, 0 |
155 | jmp still |
155 | jmp still |
156 | no_flat: |
156 | no_flat: |
157 | 157 | ||
158 | cmp ah,16 ; apply |
158 | cmp ah,16 ; apply |
159 | jne no_apply |
159 | jne no_apply |
160 | apply_direct: |
160 | apply_direct: |
161 | mov eax,48 |
161 | mov eax,48 |
162 | mov ebx,2 |
162 | mov ebx,2 |
163 | mov ecx,color_table |
163 | mov ecx,color_table |
164 | mov edx,10*4 |
164 | mov edx,10*4 |
165 | int 0x40 |
165 | int 0x40 |
166 | mov eax,48 |
166 | mov eax,48 |
167 | mov ebx,0 |
167 | mov ebx,0 |
168 | mov ecx,0 |
168 | mov ecx,0 |
169 | int 0x40 |
169 | int 0x40 |
170 | no_apply: |
170 | no_apply: |
171 | 171 | ||
172 | cmp ah,17 ; load skin file |
172 | cmp ah,17 ; load skin file |
173 | jne no_load_skin |
173 | jne no_load_skin |
174 | call load_skin_file |
174 | call load_skin_file |
175 | call draw_window |
175 | call draw_window |
176 | jmp still |
176 | jmp still |
177 | no_load_skin: |
177 | no_load_skin: |
178 | 178 | ||
179 | cmp ah,18 ; apply skin |
179 | cmp ah,18 ; apply skin |
180 | jne no_apply_skin |
180 | jne no_apply_skin |
181 | cmp [skin_info.fname],0 |
181 | cmp [skin_info.fname],0 |
182 | je no_apply_skin |
182 | je no_apply_skin |
183 | mcall 48,8,skin_info |
183 | mcall 48,8,skin_info |
184 | call draw_window |
184 | call draw_window |
185 | jmp still |
185 | jmp still |
186 | no_apply_skin: |
186 | no_apply_skin: |
187 | 187 | ||
188 | cmp ah,31 |
188 | cmp ah,31 |
189 | jb no_new_colour |
189 | jb no_new_colour |
190 | cmp ah,41 |
190 | cmp ah,41 |
191 | jg no_new_colour |
191 | jg no_new_colour |
192 | shr eax,8 |
192 | shr eax,8 |
193 | sub eax,31 |
193 | sub eax,31 |
194 | shl eax,2 |
194 | shl eax,2 |
195 | mov ebx,[color] |
195 | mov ebx,[color] |
196 | mov [eax+color_table],ebx |
196 | mov [eax+color_table],ebx |
197 | cmp dword[0x18000+SKIN_HEADER.ident],'SKIN' |
197 | cmp dword[0x18000+SKIN_HEADER.ident],'SKIN' |
198 | jne @f |
198 | jne @f |
199 | mov edi,[0x18000+SKIN_HEADER.params] |
199 | mov edi,[0x18000+SKIN_HEADER.params] |
200 | mov dword[edi+0x18000+SKIN_PARAMS.dtp.data+eax],ebx |
200 | mov dword[edi+0x18000+SKIN_PARAMS.dtp.data+eax],ebx |
201 | call draw_skin |
201 | call draw_skin |
202 | @@: call draw_colours |
202 | @@: call draw_colours |
203 | jmp still |
203 | jmp still |
204 | no_new_colour: |
204 | no_new_colour: |
205 | 205 | ||
206 | cmp ah,1 ; terminate |
206 | cmp ah,1 ; terminate |
207 | jnz noid1 |
207 | jnz noid1 |
208 | or eax,-1 |
208 | or eax,-1 |
209 | int 0x40 |
209 | int 0x40 |
210 | noid1: |
210 | noid1: |
211 | 211 | ||
212 | jmp still |
212 | jmp still |
213 | 213 | ||
214 | 214 | ||
215 | draw_cursor: |
215 | draw_cursor: |
216 | 216 | ||
217 | pusha |
217 | pusha |
218 | mov eax,37 |
218 | mov eax,37 |
219 | mov ebx,2 |
219 | mov ebx,2 |
220 | int 0x40 |
220 | int 0x40 |
221 | 221 | ||
222 | cmp eax,0 |
222 | cmp eax,0 |
223 | jne dc1 |
223 | jne dc1 |
224 | popa |
224 | popa |
225 | ret |
225 | ret |
226 | 226 | ||
227 | dc1: |
227 | dc1: |
228 | 228 | ||
229 | mov eax,37 |
229 | mov eax,37 |
230 | mov ebx,1 |
230 | mov ebx,1 |
231 | int 0x40 |
231 | int 0x40 |
232 | 232 | ||
233 | mov ebx,eax |
233 | mov ebx,eax |
234 | shr ebx,16 |
234 | shr ebx,16 |
235 | mov ecx,eax |
235 | mov ecx,eax |
236 | and ecx,0xffff |
236 | and ecx,0xffff |
237 | 237 | ||
238 | cmp ecx,32 |
238 | cmp ecx,32 |
239 | jbe no_color |
239 | jbe no_color |
240 | cmp ebx,32 |
240 | cmp ebx,32 |
241 | jbe no_color |
241 | jbe no_color |
242 | 242 | ||
243 | cmp ebx,266 ; CHANGE COLOR |
243 | cmp ebx,266 ; CHANGE COLOR |
244 | jb no_color |
244 | jb no_color |
245 | cmp ebx,266+20*3 |
245 | cmp ebx,266+20*3 |
246 | jg no_color |
246 | jg no_color |
247 | 247 | ||
248 | cmp ecx,30+128 |
248 | cmp ecx,30+128 |
249 | jge no_color |
249 | jge no_color |
250 | cmp ecx,30 |
250 | cmp ecx,30 |
251 | jb no_color |
251 | jb no_color |
252 | 252 | ||
253 | sub ebx,266 |
253 | sub ebx,266 |
254 | mov eax,ebx |
254 | mov eax,ebx |
255 | cdq |
255 | cdq |
256 | mov ebx,20 |
256 | mov ebx,20 |
257 | div ebx |
257 | div ebx |
258 | mov ebx,2 |
258 | mov ebx,2 |
259 | sub ebx,eax |
259 | sub ebx,eax |
260 | 260 | ||
261 | add ecx,-30 |
261 | add ecx,-30 |
262 | not ecx |
262 | not ecx |
263 | shl ecx,1 |
263 | shl ecx,1 |
264 | 264 | ||
265 | mov byte [ebx+color],cl |
265 | mov byte [ebx+color],cl |
266 | call draw_color |
266 | call draw_color |
267 | 267 | ||
268 | popa |
268 | popa |
269 | ret |
269 | ret |
270 | 270 | ||
271 | no_color: |
271 | no_color: |
272 | 272 | ||
273 | popa |
273 | popa |
274 | ret |
274 | ret |
275 | 275 | ||
276 | 276 | ||
277 | load_file: |
277 | load_file: |
278 | pushad |
278 | pushad |
279 | 279 | ||
280 | mov [read_info.mode] ,0 |
280 | mov [read_info.mode] ,0 |
281 | mov [read_info.start_block],0 |
281 | mov [read_info.start_block],0 |
282 | mov [read_info.blocks] ,1 |
282 | mov [read_info.blocks] ,1 |
283 | mov [read_info.address] ,color_table |
283 | mov [read_info.address] ,color_table |
284 | mov [read_info.workarea] ,0x10000 |
284 | mov [read_info.workarea] ,0x10000 |
285 | mcall 58, read_info |
285 | mcall 58, read_info |
286 | 286 | ||
287 | ; call draw_colours |
287 | ; call draw_colours |
288 | 288 | ||
289 | popad |
289 | popad |
290 | ret |
290 | ret |
291 | 291 | ||
292 | load_skin_file: |
292 | load_skin_file: |
293 | pushad |
293 | pushad |
294 | 294 | ||
295 | mov [read_info.mode] ,0 |
295 | mov [read_info.mode] ,0 |
296 | mov [read_info.start_block],0 |
296 | mov [read_info.start_block],0 |
297 | mov [read_info.blocks] ,64 |
297 | mov [read_info.blocks] ,64 |
298 | mov [read_info.address] ,0x20000 |
298 | mov [read_info.address] ,0x20000 |
299 | mov [read_info.workarea] ,0x10000 |
299 | mov [read_info.workarea] ,0x10000 |
300 | mcall 58, read_info |
300 | mcall 58, read_info |
301 | 301 | ||
302 | cmp dword[0x20000+SKIN_HEADER.ident],'SKIN' |
302 | cmp dword[0x20000+SKIN_HEADER.ident],'SKIN' |
303 | jne @f |
303 | jne @f |
304 | 304 | ||
305 | mov esi,fname |
305 | mov esi,fname |
306 | mov edi,skin_info.fname |
306 | mov edi,skin_info.fname |
307 | mov ecx,257 |
307 | mov ecx,257 |
308 | rep movsb |
308 | rep movsb |
309 | 309 | ||
310 | mov esi,0x20000 |
310 | mov esi,0x20000 |
311 | mov edi,0x18000 |
311 | mov edi,0x18000 |
312 | mov ecx,0x8000/4 |
312 | mov ecx,0x8000/4 |
313 | rep movsd |
313 | rep movsd |
314 | 314 | ||
315 | mov ebp,0x18000 |
315 | mov ebp,0x18000 |
316 | mov esi,[ebp+SKIN_HEADER.params] |
316 | mov esi,[ebp+SKIN_HEADER.params] |
317 | add esi,ebp |
317 | add esi,ebp |
318 | lea esi,[esi+SKIN_PARAMS.dtp.data] |
318 | lea esi,[esi+SKIN_PARAMS.dtp.data] |
319 | mov edi,color_table |
319 | mov edi,color_table |
320 | mov ecx,10 |
320 | mov ecx,10 |
321 | rep movsd |
321 | rep movsd |
322 | @@: |
322 | @@: |
323 | 323 | ||
324 | popad |
324 | popad |
325 | ret |
325 | ret |
326 | 326 | ||
327 | 327 | ||
328 | save_file: |
328 | save_file: |
329 | pushad |
329 | pushad |
330 | 330 | ||
331 | mov [write_info.mode] ,1 |
331 | mov [write_info.mode] ,1 |
332 | mov [write_info.bytes2write],10*4 |
332 | mov [write_info.bytes2write],10*4 |
333 | mov [write_info.address] ,color_table |
333 | mov [write_info.address] ,color_table |
334 | mov [write_info.workarea] ,0x10000 |
334 | mov [write_info.workarea] ,0x10000 |
335 | mcall 58, write_info |
335 | mcall 58, write_info |
336 | 336 | ||
337 | popad |
337 | popad |
338 | ret |
338 | ret |
339 | 339 | ||
340 | 340 | ||
341 | read_string: |
341 | read_string: |
342 | 342 | ||
343 | pusha |
343 | pusha |
344 | 344 | ||
345 | mov edi,fname |
345 | mov edi,fname |
346 | mov al,'_' |
346 | mov al,'_' |
347 | mov ecx,87 |
347 | mov ecx,87 |
348 | cld |
348 | cld |
349 | rep stosb |
349 | rep stosb |
350 | 350 | ||
351 | call print_text |
351 | call print_text |
352 | 352 | ||
353 | mov edi,fname |
353 | mov edi,fname |
354 | 354 | ||
355 | f11: |
355 | f11: |
356 | mov eax,10 |
356 | mov eax,10 |
357 | int 0x40 |
357 | int 0x40 |
358 | cmp eax,2 |
358 | cmp eax,2 |
359 | jne read_done |
359 | jne read_done |
360 | mov eax,2 |
360 | mov eax,2 |
361 | int 0x40 |
361 | int 0x40 |
362 | shr eax,8 |
362 | shr eax,8 |
363 | cmp eax,13 |
363 | cmp eax,13 |
364 | je read_done |
364 | je read_done |
365 | cmp eax,8 |
365 | cmp eax,8 |
366 | jne nobsl |
366 | jne nobsl |
367 | cmp edi,fname |
367 | cmp edi,fname |
368 | je f11 |
368 | je f11 |
369 | dec edi |
369 | dec edi |
370 | mov [edi],byte '_' |
370 | mov [edi],byte '_' |
371 | call print_text |
371 | call print_text |
372 | jmp f11 |
372 | jmp f11 |
373 | nobsl: |
373 | nobsl: |
374 | mov [edi],al |
374 | mov [edi],al |
375 | 375 | ||
376 | call print_text |
376 | call print_text |
377 | 377 | ||
378 | inc edi |
378 | inc edi |
379 | cmp edi, fname+87 |
379 | cmp edi, fname+87 |
380 | jne f11 |
380 | jne f11 |
381 | 381 | ||
382 | read_done: |
382 | read_done: |
383 | 383 | ||
384 | mov ecx, fname |
384 | mov ecx, fname |
385 | add ecx, 88 |
385 | add ecx, 88 |
386 | sub ecx, edi |
386 | sub ecx, edi |
387 | mov eax, 0 |
387 | mov eax, 0 |
388 | cld |
388 | cld |
389 | rep stosb |
389 | rep stosb |
390 | 390 | ||
391 | call print_text |
391 | call print_text |
392 | 392 | ||
393 | popa |
393 | popa |
394 | 394 | ||
395 | ret |
395 | ret |
396 | 396 | ||
397 | 397 | ||
398 | print_text: |
398 | print_text: |
399 | pushad |
399 | pushad |
400 | 400 | ||
401 | mpack ebx,15,6*87+4 |
401 | mpack ebx,15,6*87+4 |
402 | mpack ecx,(30+18*10+2),11 |
402 | mpack ecx,(30+18*10+2),11 |
403 | mcall 13,,,[w_work] |
403 | mcall 13,,,[w_work] |
404 | 404 | ||
405 | mpack ebx,17,(30+18*10+4) |
405 | mpack ebx,17,(30+18*10+4) |
406 | mcall 4,,[w_work_text],fname,87 |
406 | mcall 4,,[w_work_text],fname,87 |
407 | 407 | ||
408 | popad |
408 | popad |
409 | ret |
409 | ret |
410 | 410 | ||
411 | 411 | ||
412 | draw_color: |
412 | draw_color: |
413 | 413 | ||
414 | pusha |
414 | pusha |
415 | 415 | ||
416 | mov eax,13 |
416 | mov eax,13 |
417 | mov ebx,266*65536+60 |
417 | mov ebx,266*65536+60 |
418 | mov ecx,170*65536+30 |
418 | mov ecx,170*65536+30 |
419 | mov edx,[color] |
419 | mov edx,[color] |
420 | int 0x40 |
420 | int 0x40 |
421 | 421 | ||
422 | ; mov eax,13 |
422 | ; mov eax,13 |
423 | mov ebx,266*65536+60 |
423 | mov ebx,266*65536+60 |
424 | mov ecx,200*65536+10 |
424 | mov ecx,200*65536+10 |
425 | mov edx,[w_work] |
425 | mov edx,[w_work] |
426 | int 0x40 |
426 | int 0x40 |
427 | 427 | ||
428 | mov eax,47 |
428 | mov eax,47 |
429 | mov ebx,0+1*256+8*65536 |
429 | mov ebx,0+1*256+8*65536 |
430 | mov ecx,[color] |
430 | mov ecx,[color] |
431 | mov edx,272*65536+201 |
431 | mov edx,272*65536+201 |
432 | mov esi,[w_work_text] |
432 | mov esi,[w_work_text] |
433 | int 0x40 |
433 | int 0x40 |
434 | 434 | ||
435 | popa |
435 | popa |
436 | 436 | ||
437 | ret |
437 | ret |
438 | 438 | ||
439 | 439 | ||
440 | draw_colours: |
440 | draw_colours: |
441 | 441 | ||
442 | pusha |
442 | pusha |
443 | 443 | ||
444 | mov esi,color_table |
444 | mov esi,color_table |
445 | 445 | ||
446 | mov ebx,225*65536+32 |
446 | mov ebx,225*65536+32 |
447 | mov ecx,32*65536+12 |
447 | mov ecx,32*65536+12 |
448 | newcol: |
448 | newcol: |
449 | mov eax,13 |
449 | mov eax,13 |
450 | mov edx,[esi] |
450 | mov edx,[esi] |
451 | int 0x40 |
451 | int 0x40 |
452 | add ecx,18*65536 |
452 | add ecx,18*65536 |
453 | add esi,4 |
453 | add esi,4 |
454 | cmp esi,color_table+4*9 |
454 | cmp esi,color_table+4*9 |
455 | jbe newcol |
455 | jbe newcol |
456 | 456 | ||
457 | popa |
457 | popa |
458 | 458 | ||
459 | ret |
459 | ret |
460 | 460 | ||
461 | 461 | ||
462 | draw_framerect: ; ebx,ecx |
462 | draw_framerect: ; ebx,ecx |
463 | push ebx ecx |
463 | push ebx ecx |
464 | add bx,[esp+6] |
464 | add bx,[esp+6] |
465 | mov cx,[esp+2] |
465 | mov cx,[esp+2] |
466 | dec ebx |
466 | dec ebx |
467 | mcall 38 |
467 | mcall 38 |
468 | add cx,[esp] |
468 | add cx,[esp] |
469 | rol ecx,16 |
469 | rol ecx,16 |
470 | add cx,[esp] |
470 | add cx,[esp] |
471 | sub ecx,0x00010001 |
471 | sub ecx,0x00010001 |
472 | mcall |
472 | mcall |
473 | mov ebx,[esp+4] |
473 | mov ebx,[esp+4] |
474 | mov ecx,[esp] |
474 | mov ecx,[esp] |
475 | mov bx,[esp+6] |
475 | mov bx,[esp+6] |
476 | add cx,[esp+2] |
476 | add cx,[esp+2] |
477 | dec ecx |
477 | dec ecx |
478 | mcall |
478 | mcall |
479 | add bx,[esp+4] |
479 | add bx,[esp+4] |
480 | rol ebx,16 |
480 | rol ebx,16 |
481 | add bx,[esp+4] |
481 | add bx,[esp+4] |
482 | sub ebx,0x00010001 |
482 | sub ebx,0x00010001 |
483 | mcall |
483 | mcall |
484 | add esp,8 |
484 | add esp,8 |
485 | ret |
485 | ret |
486 | 486 | ||
487 | find_bitmap: |
487 | find_bitmap: |
488 | mov edi,[ebp+SKIN_HEADER.bitmaps] |
488 | mov edi,[ebp+SKIN_HEADER.bitmaps] |
489 | add edi,ebp |
489 | add edi,ebp |
490 | xor ebx,ebx |
490 | xor ebx,ebx |
491 | .lp1: cmp dword[edi],0 |
491 | .lp1: cmp dword[edi],0 |
492 | je .lp2 |
492 | je .lp2 |
493 | cmp dword[edi+0],eax |
493 | cmp dword[edi+0],eax |
494 | jne @f |
494 | jne @f |
495 | mov ebx,[edi+SKIN_BITMAPS.data] |
495 | mov ebx,[edi+SKIN_BITMAPS.data] |
496 | add ebx,ebp |
496 | add ebx,ebp |
497 | mov ecx,[ebx-2] |
497 | mov ecx,[ebx-2] |
498 | mov cx,[ebx+4] |
498 | mov cx,[ebx+4] |
499 | add ebx,8 |
499 | add ebx,8 |
500 | .lp2: ret |
500 | .lp2: ret |
501 | @@: add edi,8 |
501 | @@: add edi,8 |
502 | jmp .lp1 |
502 | jmp .lp1 |
503 | 503 | ||
504 | dec_edx: |
504 | dec_edx: |
505 | sub dl,4 |
505 | sub dl,4 |
506 | jnc @f |
506 | jnc @f |
507 | xor dl,dl |
507 | xor dl,dl |
508 | @@: sub dh,4 |
508 | @@: sub dh,4 |
509 | jnc @f |
509 | jnc @f |
510 | xor dh,dh |
510 | xor dh,dh |
511 | @@: rol edx,16 |
511 | @@: rol edx,16 |
512 | sub dl,4 |
512 | sub dl,4 |
513 | jnc @f |
513 | jnc @f |
514 | xor dl,dl |
514 | xor dl,dl |
515 | @@: rol edx,16 |
515 | @@: rol edx,16 |
516 | ret |
516 | ret |
517 | 517 | ||
518 | area: |
518 | area: |
519 | .x = 345 |
519 | .x = 345 |
520 | .y = 20 |
520 | .y = 20 |
521 | .width = 206 |
521 | .width = 206 |
522 | .height = 191 |
522 | .height = 191 |
523 | 523 | ||
524 | wnd1: |
524 | wnd1: |
525 | .x = area.x+49 |
525 | .x = area.x+49 |
526 | .y = area.y+5 |
526 | .y = area.y+5 |
527 | .width = 150 |
527 | .width = 150 |
528 | .height = 90 |
528 | .height = 90 |
529 | wnd2: |
529 | wnd2: |
530 | .x = area.x+35 |
530 | .x = area.x+35 |
531 | .y = area.y+35 |
531 | .y = area.y+35 |
532 | .width = 150 |
532 | .width = 150 |
533 | .height = 90 |
533 | .height = 90 |
534 | wnd3: |
534 | wnd3: |
535 | .x = area.x+21 |
535 | .x = area.x+21 |
536 | .y = area.y+65 |
536 | .y = area.y+65 |
537 | .width = 150 |
537 | .width = 150 |
538 | .height = 90 |
538 | .height = 90 |
539 | wnd4: |
539 | wnd4: |
540 | .x = area.x+7 |
540 | .x = area.x+7 |
541 | .y = area.y+95 |
541 | .y = area.y+95 |
542 | .width = 150 |
542 | .width = 150 |
543 | .height = 90 |
543 | .height = 90 |
544 | 544 | ||
545 | virtual at edi+SKIN_PARAMS.dtp.data |
545 | virtual at edi+SKIN_PARAMS.dtp.data |
546 | dtp system_colors |
546 | dtp system_colors |
547 | end virtual |
547 | end virtual |
548 | 548 | ||
549 | draw_skin: |
549 | draw_skin: |
550 | mcall 13, |
550 | mcall 13, |
551 | 551 | ||
552 | mov ebp,0x18000 |
552 | mov ebp,0x18000 |
553 | mov edi,[ebp+SKIN_HEADER.params] |
553 | mov edi,[ebp+SKIN_HEADER.params] |
554 | add edi,ebp |
554 | add edi,ebp |
555 | mpack ebx,wnd1.x,wnd1.width |
555 | mpack ebx,wnd1.x,wnd1.width |
556 | mpack ecx,wnd1.y,wnd1.height |
556 | mpack ecx,wnd1.y,wnd1.height |
557 | mov edx,[dtp.frame] |
557 | mov edx,[dtp.frame] |
558 | call draw_framerect |
558 | call draw_framerect |
559 | mcall 13, |
559 | mcall 13, |
560 | 560 | ||
561 | mov eax,38 |
561 | mov eax,38 |
562 | mpack ebx,wnd1.x+1,wnd1.x+wnd1.width-2 |
562 | mpack ebx,wnd1.x+1,wnd1.x+wnd1.width-2 |
563 | mpack ecx,wnd1.y+1,wnd1.y+1 |
563 | mpack ecx,wnd1.y+1,wnd1.y+1 |
564 | mov edx,[dtp.grab] |
564 | mov edx,[dtp.grab] |
565 | mov esi,20 |
565 | mov esi,20 |
566 | @@: mcall |
566 | @@: mcall |
567 | call dec_edx |
567 | call dec_edx |
568 | add ecx,0x00010001 |
568 | add ecx,0x00010001 |
569 | dec esi |
569 | dec esi |
570 | jnz @b |
570 | jnz @b |
571 | 571 | ||
572 | mov edi,[ebp+SKIN_HEADER.params] |
572 | mov edi,[ebp+SKIN_HEADER.params] |
573 | add edi,ebp |
573 | add edi,ebp |
574 | mcall 4, |
574 | mcall 4, |
575 | 575 | ||
576 | mcall 8, |
576 | mcall 8, |
577 | mcall 4, |
577 | mcall 4, |
578 | 578 | ||
579 | ;---------------------------------------------------------------------- |
579 | ;---------------------------------------------------------------------- |
580 | 580 | ||
581 | mov edi,[ebp+SKIN_HEADER.params] |
581 | mov edi,[ebp+SKIN_HEADER.params] |
582 | add edi,ebp |
582 | add edi,ebp |
583 | mpack ebx,wnd2.x,wnd2.width |
583 | mpack ebx,wnd2.x,wnd2.width |
584 | mpack ecx,wnd2.y,wnd2.height |
584 | mpack ecx,wnd2.y,wnd2.height |
585 | mov edx,[dtp.frame] |
585 | mov edx,[dtp.frame] |
586 | shr edx,1 |
586 | shr edx,1 |
587 | and edx,0x007F7F7F |
587 | and edx,0x007F7F7F |
588 | call draw_framerect |
588 | call draw_framerect |
589 | mpack ebx,wnd2.x+4,wnd2.width-8 |
589 | mpack ebx,wnd2.x+4,wnd2.width-8 |
590 | mpack ecx,wnd2.y+4,wnd2.height-8 |
590 | mpack ecx,wnd2.y+4,wnd2.height-8 |
591 | call draw_framerect |
591 | call draw_framerect |
592 | mcall 13, |
592 | mcall 13, |
593 | add ecx,(wnd2.height-5)*65536 |
593 | add ecx,(wnd2.height-5)*65536 |
594 | mcall |
594 | mcall |
595 | mcall , |
595 | mcall , |
596 | add ebx,(wnd2.width-5)*65536 |
596 | add ebx,(wnd2.width-5)*65536 |
597 | mcall |
597 | mcall |
598 | mcall , |
598 | mcall , |
599 | 599 | ||
600 | mov eax,38 |
600 | mov eax,38 |
601 | mpack ebx,wnd2.x+4,wnd2.x+wnd2.width-5 |
601 | mpack ebx,wnd2.x+4,wnd2.x+wnd2.width-5 |
602 | mpack ecx,wnd2.y+4,wnd2.y+4 |
602 | mpack ecx,wnd2.y+4,wnd2.y+4 |
603 | mov edx,[dtp.grab] |
603 | mov edx,[dtp.grab] |
604 | mov esi,16 |
604 | mov esi,16 |
605 | @@: mcall |
605 | @@: mcall |
606 | call dec_edx |
606 | call dec_edx |
607 | add ecx,0x00010001 |
607 | add ecx,0x00010001 |
608 | dec esi |
608 | dec esi |
609 | jnz @b |
609 | jnz @b |
610 | 610 | ||
611 | mov edi,[ebp+SKIN_HEADER.params] |
611 | mov edi,[ebp+SKIN_HEADER.params] |
612 | add edi,ebp |
612 | add edi,ebp |
613 | mcall 4, |
613 | mcall 4, |
614 | 614 | ||
615 | mcall 8, |
615 | mcall 8, |
616 | mcall 4, |
616 | mcall 4, |
617 | 617 | ||
618 | ;---------------------------------------------------------------------- |
618 | ;---------------------------------------------------------------------- |
619 | 619 | ||
620 | mov edi,[ebp+SKIN_HEADER.params] |
620 | mov edi,[ebp+SKIN_HEADER.params] |
621 | add edi,ebp |
621 | add edi,ebp |
622 | mpack ebx,wnd3.x,wnd3.width |
622 | mpack ebx,wnd3.x,wnd3.width |
623 | mpack ecx,wnd3.y,wnd3.height |
623 | mpack ecx,wnd3.y,wnd3.height |
624 | mov edx,[edi+SKIN_PARAMS.colors_1.outer] |
624 | mov edx,[edi+SKIN_PARAMS.colors_1.outer] |
625 | call draw_framerect |
625 | call draw_framerect |
626 | mpack ebx,wnd3.x+4,wnd3.width-8 |
626 | mpack ebx,wnd3.x+4,wnd3.width-8 |
627 | mpack ecx,wnd3.y+4,wnd3.height-8 |
627 | mpack ecx,wnd3.y+4,wnd3.height-8 |
628 | mov edx,[edi+SKIN_PARAMS.colors_1.inner] |
628 | mov edx,[edi+SKIN_PARAMS.colors_1.inner] |
629 | call draw_framerect |
629 | call draw_framerect |
630 | mcall 13, |
630 | mcall 13, |
631 | add ecx,(wnd3.height-5)*65536 |
631 | add ecx,(wnd3.height-5)*65536 |
632 | mcall |
632 | mcall |
633 | mcall , |
633 | mcall , |
634 | add ebx,(wnd3.width-5)*65536 |
634 | add ebx,(wnd3.width-5)*65536 |
635 | mcall |
635 | mcall |
636 | mcall , |
636 | mcall , |
637 | 637 | ||
638 | mov eax,0x00000001 ; left, inactive |
638 | mov eax,0x00000001 ; left, inactive |
639 | call find_bitmap |
639 | call find_bitmap |
640 | mcall 7,,, |
640 | mcall 7,,, |
641 | 641 | ||
642 | pushd [ebx-8] |
642 | pushd [ebx-8] |
643 | mov eax,0x00000003 ; base, inactive |
643 | mov eax,0x00000003 ; base, inactive |
644 | call find_bitmap |
644 | call find_bitmap |
645 | pop edx |
645 | pop edx |
646 | mov esi,wnd3.x+wnd3.width-1 |
646 | mov esi,wnd3.x+wnd3.width-1 |
647 | sub esi,edx |
647 | sub esi,edx |
648 | shl edx,16 |
648 | shl edx,16 |
649 | add edx,wnd3.x*65536+wnd3.y |
649 | add edx,wnd3.x*65536+wnd3.y |
650 | mcall 7 |
650 | mcall 7 |
651 | @@: rol edx,16 |
651 | @@: rol edx,16 |
652 | add dx,[ebx-8] |
652 | add dx,[ebx-8] |
653 | cmp dx,si |
653 | cmp dx,si |
654 | ja @f |
654 | ja @f |
655 | rol edx,16 |
655 | rol edx,16 |
656 | mcall 7 |
656 | mcall 7 |
657 | jmp @b |
657 | jmp @b |
658 | @@: |
658 | @@: |
659 | 659 | ||
660 | mov eax,0x00000002 ; oper, inactive |
660 | mov eax,0x00000002 ; oper, inactive |
661 | call find_bitmap |
661 | call find_bitmap |
662 | mov edx,ecx |
662 | mov edx,ecx |
663 | shr edx,16 |
663 | shr edx,16 |
664 | neg edx |
664 | neg edx |
665 | shl edx,16 |
665 | shl edx,16 |
666 | add edx,(wnd3.x+wnd3.width)*65536+wnd3.y |
666 | add edx,(wnd3.x+wnd3.width)*65536+wnd3.y |
667 | mcall 7 |
667 | mcall 7 |
668 | 668 | ||
669 | mov ebp,0x18000 |
669 | mov ebp,0x18000 |
670 | mov edi,[ebp+SKIN_HEADER.params] |
670 | mov edi,[ebp+SKIN_HEADER.params] |
671 | add edi,ebp |
671 | add edi,ebp |
672 | mov eax,dword[edi+SKIN_PARAMS.margin.left-2] |
672 | mov eax,dword[edi+SKIN_PARAMS.margin.left-2] |
673 | mov ax,word[edi+SKIN_PARAMS.skin_height] |
673 | mov ax,word[edi+SKIN_PARAMS.skin_height] |
674 | sub ax,[edi+SKIN_PARAMS.margin.bottom] |
674 | sub ax,[edi+SKIN_PARAMS.margin.bottom] |
675 | shr ax,1 |
675 | shr ax,1 |
676 | add ax,[edi+SKIN_PARAMS.margin.top] |
676 | add ax,[edi+SKIN_PARAMS.margin.top] |
677 | add ax,-4 |
677 | add ax,-4 |
678 | push eax |
678 | push eax |
679 | lea ebx,[eax+wnd3.x*65536+wnd3.y] |
679 | lea ebx,[eax+wnd3.x*65536+wnd3.y] |
680 | mcall 4,,dword[dtp.grab_text],caption_text,caption_text.size |
680 | mcall 4,,dword[dtp.grab_text],caption_text,caption_text.size |
681 | 681 | ||
682 | ;--------------------------------------------------------- |
682 | ;--------------------------------------------------------- |
683 | 683 | ||
684 | mov edi,[ebp+SKIN_HEADER.params] |
684 | mov edi,[ebp+SKIN_HEADER.params] |
685 | add edi,ebp |
685 | add edi,ebp |
686 | mpack ebx,wnd4.x,wnd4.width |
686 | mpack ebx,wnd4.x,wnd4.width |
687 | mpack ecx,wnd4.y,wnd4.height |
687 | mpack ecx,wnd4.y,wnd4.height |
688 | mov edx,[edi+SKIN_PARAMS.colors.outer] |
688 | mov edx,[edi+SKIN_PARAMS.colors.outer] |
689 | call draw_framerect |
689 | call draw_framerect |
690 | mpack ebx,wnd4.x+4,wnd4.width-8 |
690 | mpack ebx,wnd4.x+4,wnd4.width-8 |
691 | mpack ecx,wnd4.y+4,wnd4.height-8 |
691 | mpack ecx,wnd4.y+4,wnd4.height-8 |
692 | mov edx,[edi+SKIN_PARAMS.colors.inner] |
692 | mov edx,[edi+SKIN_PARAMS.colors.inner] |
693 | call draw_framerect |
693 | call draw_framerect |
694 | mcall 13, |
694 | mcall 13, |
695 | add ecx,(wnd4.height-5)*65536 |
695 | add ecx,(wnd4.height-5)*65536 |
696 | mcall |
696 | mcall |
697 | mcall , |
697 | mcall , |
698 | add ebx,(wnd4.width-5)*65536 |
698 | add ebx,(wnd4.width-5)*65536 |
699 | mcall |
699 | mcall |
700 | mcall , |
700 | mcall , |
701 | 701 | ||
702 | mov eax,0x00010001 ; left, inactive |
702 | mov eax,0x00010001 ; left, inactive |
703 | call find_bitmap |
703 | call find_bitmap |
704 | mcall 7,,, |
704 | mcall 7,,, |
705 | 705 | ||
706 | pushd [ebx-8] |
706 | pushd [ebx-8] |
707 | mov eax,0x00010003 ; base, inactive |
707 | mov eax,0x00010003 ; base, inactive |
708 | call find_bitmap |
708 | call find_bitmap |
709 | pop edx |
709 | pop edx |
710 | mov esi,wnd4.x+wnd4.width-1 |
710 | mov esi,wnd4.x+wnd4.width-1 |
711 | sub esi,edx |
711 | sub esi,edx |
712 | shl edx,16 |
712 | shl edx,16 |
713 | add edx,wnd4.x*65536+wnd4.y |
713 | add edx,wnd4.x*65536+wnd4.y |
714 | mcall 7 |
714 | mcall 7 |
715 | @@: rol edx,16 |
715 | @@: rol edx,16 |
716 | add dx,[ebx-8] |
716 | add dx,[ebx-8] |
717 | cmp dx,si |
717 | cmp dx,si |
718 | ja @f |
718 | ja @f |
719 | rol edx,16 |
719 | rol edx,16 |
720 | mcall 7 |
720 | mcall 7 |
721 | jmp @b |
721 | jmp @b |
722 | @@: |
722 | @@: |
723 | 723 | ||
724 | mov eax,0x00010002 ; oper, inactive |
724 | mov eax,0x00010002 ; oper, inactive |
725 | call find_bitmap |
725 | call find_bitmap |
726 | mov edx,ecx |
726 | mov edx,ecx |
727 | shr edx,16 |
727 | shr edx,16 |
728 | neg edx |
728 | neg edx |
729 | shl edx,16 |
729 | shl edx,16 |
730 | add edx,(wnd4.x+wnd4.width)*65536+wnd4.y |
730 | add edx,(wnd4.x+wnd4.width)*65536+wnd4.y |
731 | mcall 7 |
731 | mcall 7 |
732 | 732 | ||
733 | mov ebp,0x18000 |
733 | mov ebp,0x18000 |
734 | mov edi,[ebp+SKIN_HEADER.params] |
734 | mov edi,[ebp+SKIN_HEADER.params] |
735 | add edi,ebp |
735 | add edi,ebp |
736 | pop eax |
736 | pop eax |
737 | lea ebx,[eax+wnd4.x*65536+wnd4.y] |
737 | lea ebx,[eax+wnd4.x*65536+wnd4.y] |
738 | mcall 4,,dword[dtp.grab_text],caption_text,caption_text.size |
738 | mcall 4,,dword[dtp.grab_text],caption_text,caption_text.size |
739 | 739 | ||
740 | ;---------------------------------------------------------------------- |
740 | ;---------------------------------------------------------------------- |
741 | 741 | ||
742 | mov edi,[ebp+SKIN_HEADER.buttons] |
742 | mov edi,[ebp+SKIN_HEADER.buttons] |
743 | add edi,ebp |
743 | add edi,ebp |
744 | .lp1: cmp dword[edi],0 |
744 | .lp1: cmp dword[edi],0 |
745 | je .lp2 |
745 | je .lp2 |
746 | mov ebx,dword[edi+SKIN_BUTTONS.left-2] |
746 | mov ebx,dword[edi+SKIN_BUTTONS.left-2] |
747 | mov bx,[edi+SKIN_BUTTONS.width] |
747 | mov bx,[edi+SKIN_BUTTONS.width] |
748 | mov ecx,dword[edi+SKIN_BUTTONS.top-2] |
748 | mov ecx,dword[edi+SKIN_BUTTONS.top-2] |
749 | mov cx,[edi+SKIN_BUTTONS.height] |
749 | mov cx,[edi+SKIN_BUTTONS.height] |
750 | add ebx,(wnd4.x+wnd4.width)*65536 |
750 | add ebx,(wnd4.x+wnd4.width)*65536 |
751 | add ecx,wnd4.y*65536 |
751 | add ecx,wnd4.y*65536 |
752 | dec ebx |
752 | dec ebx |
753 | dec ecx |
753 | dec ecx |
754 | mcall 8,,,0x40000000 |
754 | mcall 8,,,0x40000000 |
755 | add edi,12 |
755 | add edi,12 |
756 | jmp .lp1 |
756 | jmp .lp1 |
757 | .lp2: |
757 | .lp2: |
758 | 758 | ||
759 | mov edi,[ebp+SKIN_HEADER.params] |
759 | mov edi,[ebp+SKIN_HEADER.params] |
760 | add edi,ebp |
760 | add edi,ebp |
761 | mpack ebx,wnd4.x+10,wnd4.y+10 |
761 | mpack ebx,wnd4.x+10,wnd4.y+10 |
762 | add bx,word[edi+SKIN_PARAMS.skin_height] |
762 | add bx,word[edi+SKIN_PARAMS.skin_height] |
763 | mcall 4,,[dtp.work_text],window_text,window_text.size |
763 | mcall 4,,[dtp.work_text],window_text,window_text.size |
764 | 764 | ||
765 | mov ecx,[edi+SKIN_PARAMS.skin_height] |
765 | mov ecx,[edi+SKIN_PARAMS.skin_height] |
766 | shl ecx,16 |
766 | shl ecx,16 |
767 | add ecx,(wnd4.y+8)*65536+10 |
767 | add ecx,(wnd4.y+8)*65536+10 |
768 | mcall 13, |
768 | mcall 13, |
769 | (wnd4.x+window_text.size*6+20)>,,[dtp.work_graph] |
769 | (wnd4.x+window_text.size*6+20)>,,[dtp.work_graph] |
770 | 770 | ||
771 | add ecx,25*65536+8 |
771 | add ecx,25*65536+8 |
772 | mcall 8, |
772 | mcall 8, |
773 | button_text.size*6+11>,,0,[dtp.work_button] |
773 | button_text.size*6+11>,,0,[dtp.work_button] |
774 | 774 | ||
775 | shr ecx,16 |
775 | shr ecx,16 |
776 | mov bx,cx |
776 | mov bx,cx |
777 | add ebx,0x00060006 |
777 | add ebx,0x00060006 |
778 | mcall 4,,[dtp.work_button_text],button_text,button_text.size |
778 | mcall 4,,[dtp.work_button_text],button_text,button_text.size |
779 | 779 | ||
780 | ret |
780 | ret |
781 | 781 | ||
782 | ; ********************************************* |
782 | ; ********************************************* |
783 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
783 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
784 | ; ********************************************* |
784 | ; ********************************************* |
785 | 785 | ||
786 | 786 | ||
787 | draw_window: |
787 | draw_window: |
788 | 788 | ||
789 | mov eax,12 ; function 12:tell os about windowdraw |
789 | mov eax,12 ; function 12:tell os about windowdraw |
790 | mov ebx,1 ; 1, start of draw |
790 | mov ebx,1 ; 1, start of draw |
791 | int 0x40 |
791 | int 0x40 |
792 | 792 | ||
793 | mov eax,48 |
793 | mov eax,48 |
794 | mov ebx,3 |
794 | mov ebx,3 |
795 | mov ecx,app_colours |
795 | mov ecx,app_colours |
796 | mov edx,10*4 |
796 | mov edx,10*4 |
797 | int 0x40 |
797 | int 0x40 |
798 | 798 | ||
799 | mov eax,14 |
799 | mov eax,14 |
800 | int 0x40 |
800 | int 0x40 |
801 | 801 | ||
802 | ; DRAW WINDOW |
802 | ; DRAW WINDOW |
803 | mov eax,0 ; function 0 : define and draw window |
803 | mov eax,0 ; function 0 : define and draw window |
804 | mov ebx,110*65536+555 ; [x start] *65536 + [x size] |
804 | mov ebx,110*65536+555 ; [x start] *65536 + [x size] |
805 | mov ecx,50*65536+255 ; [y start] *65536 + [y size] |
805 | mov ecx,50*65536+255 ; [y start] *65536 + [y size] |
806 | mov edx,[w_work] ; color of work area RRGGBB,8->color |
806 | mov edx,[w_work] ; color of work area RRGGBB,8->color |
807 | or edx,0x13000000 |
807 | or edx,0x13000000 |
808 | mov edi,header ; WINDOW LABEL |
808 | mov edi,header ; WINDOW LABEL |
809 | int 0x40 |
809 | int 0x40 |
810 | 810 | ||
811 | if lang eq ru |
811 | if lang eq ru |
812 | load_w = (5*2+6*9) |
812 | load_w = (5*2+6*9) |
813 | save_w = (5*2+6*9) |
813 | save_w = (5*2+6*9) |
814 | flat_w = (5*2+6*7) |
814 | flat_w = (5*2+6*7) |
815 | apply_w = (5*2+6*9) |
815 | apply_w = (5*2+6*9) |
816 | else |
816 | else |
817 | load_w = (5*2+6*6) |
817 | load_w = (5*2+6*6) |
818 | save_w = (5*2+6*6) |
818 | save_w = (5*2+6*6) |
819 | flat_w = (5*2+6*4) |
819 | flat_w = (5*2+6*4) |
820 | apply_w = (5*2+6*7) |
820 | apply_w = (5*2+6*7) |
821 | end if |
821 | end if |
822 | 822 | ||
823 | mov eax,8 ; FILENAME BUTTON |
823 | mov eax,8 ; FILENAME BUTTON |
824 | mov ebx,5*65536+545 |
824 | mov ebx,5*65536+545 |
825 | mov ecx,212*65536+10 |
825 | mov ecx,212*65536+10 |
826 | mov edx,0x4000000B |
826 | mov edx,0x4000000B |
827 | mov esi,[w_grab_button] ; button color RRGGBB |
827 | mov esi,[w_grab_button] ; button color RRGGBB |
828 | int 0x40 |
828 | int 0x40 |
829 | 829 | ||
830 | ; mov eax,8 ; LOAD BUTTON |
830 | ; mov eax,8 ; LOAD BUTTON |
831 | mov ebx,15*65536+load_w |
831 | mov ebx,15*65536+load_w |
832 | mov ecx,(30+18*11)*65536+14 |
832 | mov ecx,(30+18*11)*65536+14 |
833 | mov edx,12 |
833 | mov edx,12 |
834 | mov esi,[w_work_button] |
834 | mov esi,[w_work_button] |
835 | int 0x40 |
835 | int 0x40 |
836 | 836 | ||
837 | ; mov eax,8 ; SAVE BUTTON |
837 | ; mov eax,8 ; SAVE BUTTON |
838 | add ebx,(load_w+2)*65536-load_w+save_w |
838 | add ebx,(load_w+2)*65536-load_w+save_w |
839 | inc edx |
839 | inc edx |
840 | int 0x40 |
840 | int 0x40 |
841 | 841 | ||
842 | ; mov eax,8 ; 3D |
842 | ; mov eax,8 ; 3D |
843 | ; mov ebx,15*65536+35 |
843 | ; mov ebx,15*65536+35 |
844 | ; mov ecx,(30+18*12)*65536+14 |
844 | ; mov ecx,(30+18*12)*65536+14 |
845 | mov ebx,(340-t1.size*6-13)*65536+(5*2+6*4) |
845 | mov ebx,(340-t1.size*6-13)*65536+(5*2+6*4) |
846 | inc edx |
846 | inc edx |
847 | int 0x40 |
847 | int 0x40 |
848 | 848 | ||
849 | ; mov eax,8 ; FLAT |
849 | ; mov eax,8 ; FLAT |
850 | add ebx,(5*2+6*4+2)*65536-(5*2+6*4)+flat_w |
850 | add ebx,(5*2+6*4+2)*65536-(5*2+6*4)+flat_w |
851 | inc edx |
851 | inc edx |
852 | int 0x40 |
852 | int 0x40 |
853 | 853 | ||
854 | ; mov eax,8 ; APPLY BUTTON |
854 | ; mov eax,8 ; APPLY BUTTON |
855 | add ebx,(flat_w+6+2)*65536-flat_w+apply_w |
855 | add ebx,(flat_w+6+2)*65536-flat_w+apply_w |
856 | inc edx |
856 | inc edx |
857 | int 0x40 |
857 | int 0x40 |
858 | 858 | ||
859 | ; mov eax,8 ; LOAD SKIN BUTTON |
859 | ; mov eax,8 ; LOAD SKIN BUTTON |
860 | mov ebx,(336+(555-335)/2-t2.size*6/2)*65536+load_w |
860 | mov ebx,(336+(555-335)/2-t2.size*6/2)*65536+load_w |
861 | inc edx |
861 | inc edx |
862 | int 0x40 |
862 | int 0x40 |
863 | 863 | ||
864 | ; mov eax,8 ; APPLY SKIN BUTTON |
864 | ; mov eax,8 ; APPLY SKIN BUTTON |
865 | add ebx,(load_w+6+2)*65536-load_w+apply_w |
865 | add ebx,(load_w+6+2)*65536-load_w+apply_w |
866 | inc edx |
866 | inc edx |
867 | int 0x40 |
867 | int 0x40 |
868 | 868 | ||
869 | mov eax, 4 |
869 | mov eax, 4 |
870 | mov ebx, (339-t1.size*6-12)*65536+(30+18*11+4) |
870 | mov ebx, (339-t1.size*6-12)*65536+(30+18*11+4) |
871 | mov ecx, [w_work_button_text] |
871 | mov ecx, [w_work_button_text] |
872 | mov edx, t1 |
872 | mov edx, t1 |
873 | mov esi, t1.size |
873 | mov esi, t1.size |
874 | int 0x40 |
874 | int 0x40 |
875 | 875 | ||
876 | mov ebx,(336+(555-335)/2-t2.size*6/2)*65536+(30+18*11+4) |
876 | mov ebx,(336+(555-335)/2-t2.size*6/2)*65536+(30+18*11+4) |
877 | mov edx,t2 |
877 | mov edx,t2 |
878 | mov esi,t2.size |
878 | mov esi,t2.size |
879 | int 0x40 |
879 | int 0x40 |
880 | 880 | ||
881 | ; mov eax, 4 |
881 | ; mov eax, 4 |
882 | ; mov ebx, 277*65536+(30+18*12+4) |
882 | ; mov ebx, 277*65536+(30+18*12+4) |
883 | ; mov edx, t2 |
883 | ; mov edx, t2 |
884 | ; mov esi, t2.size |
884 | ; mov esi, t2.size |
885 | ; int 0x40 |
885 | ; int 0x40 |
886 | 886 | ||
887 | mov eax,38 ; R G B COLOR GLIDES |
887 | mov eax,38 ; R G B COLOR GLIDES |
888 | mov ebx,266*65536+285 |
888 | mov ebx,266*65536+285 |
889 | mov ecx,30*65536+30 |
889 | mov ecx,30*65536+30 |
890 | mov edx,0xff0000 |
890 | mov edx,0xff0000 |
891 | .newl: |
891 | .newl: |
892 | int 0x40 |
892 | int 0x40 |
893 | pusha |
893 | pusha |
894 | add ebx,20*65536+20 |
894 | add ebx,20*65536+20 |
895 | shr edx,8 |
895 | shr edx,8 |
896 | int 0x40 |
896 | int 0x40 |
897 | add ebx,20*65536+20 |
897 | add ebx,20*65536+20 |
898 | shr edx,8 |
898 | shr edx,8 |
899 | int 0x40 |
899 | int 0x40 |
900 | popa |
900 | popa |
901 | sub edx,0x020000 |
901 | sub edx,0x020000 |
902 | add ecx,0x00010001 |
902 | add ecx,0x00010001 |
903 | cmp ecx,158*65536+158 |
903 | cmp ecx,158*65536+158 |
904 | jnz .newl |
904 | jnz .newl |
905 | 905 | ||
906 | call draw_color |
906 | call draw_color |
907 | 907 | ||
908 | mov edx,31 ; BUTTON ROW |
908 | mov edx,31 ; BUTTON ROW |
909 | mov ebx,15*65536+200 |
909 | mov ebx,15*65536+200 |
910 | mov ecx,30*65536+14 |
910 | mov ecx,30*65536+14 |
911 | mov esi,[w_work_button] |
911 | mov esi,[w_work_button] |
912 | newb: |
912 | newb: |
913 | mov eax,8 |
913 | mov eax,8 |
914 | int 0x40 |
914 | int 0x40 |
915 | add ecx,18*65536 |
915 | add ecx,18*65536 |
916 | inc edx |
916 | inc edx |
917 | cmp edx,40 |
917 | cmp edx,40 |
918 | jbe newb |
918 | jbe newb |
919 | 919 | ||
920 | mov ebx,15*65536+34 ; ROW OF TEXTS |
920 | mov ebx,15*65536+34 ; ROW OF TEXTS |
921 | mov ecx,[w_work_button_text] |
921 | mov ecx,[w_work_button_text] |
922 | mov edx,text |
922 | mov edx,text |
923 | mov esi,32 |
923 | mov esi,32 |
924 | newline: |
924 | newline: |
925 | mov eax,4 |
925 | mov eax,4 |
926 | int 0x40 |
926 | int 0x40 |
927 | add ebx,18 |
927 | add ebx,18 |
928 | add edx,32 |
928 | add edx,32 |
929 | cmp [edx],byte 'x' |
929 | cmp [edx],byte 'x' |
930 | jne newline |
930 | jne newline |
931 | 931 | ||
932 | call draw_colours |
932 | call draw_colours |
933 | 933 | ||
934 | mcall 13,<5,546>,<212,11>,[w_work] |
934 | mcall 13,<5,546>,<212,11>,[w_work] |
935 | mcall 13,<337,7>,<2,250>,[w_frame] |
935 | mcall 13,<337,7>,<2,250>,[w_frame] |
936 | shr edx,1 |
936 | shr edx,1 |
937 | and edx,0x007F7F7F |
937 | and edx,0x007F7F7F |
938 | mcall 38,<336,336>,<20,250> |
938 | mcall 38,<336,336>,<20,250> |
939 | add ebx,0x00080008 |
939 | add ebx,0x00080008 |
940 | mcall |
940 | mcall |
941 | sub ebx,0x00040004 |
941 | sub ebx,0x00040004 |
942 | mcall ,,<0,255> |
942 | mcall ,,<0,255> |
943 | mcall ,<5,550>,<211,211> |
943 | mcall ,<5,550>,<211,211> |
944 | add ecx,0x000C000C |
944 | add ecx,0x000C000C |
945 | mcall |
945 | mcall |
946 | 946 | ||
947 | call print_text |
947 | call print_text |
948 | 948 | ||
949 | cmp dword[0x18000+SKIN_HEADER.ident],'SKIN' |
949 | cmp dword[0x18000+SKIN_HEADER.ident],'SKIN' |
950 | jne @f |
950 | jne @f |
951 | call draw_skin |
951 | call draw_skin |
952 | @@: |
952 | @@: |
953 | 953 | ||
954 | mov eax,12 ; function 12:tell os about windowdraw |
954 | mov eax,12 ; function 12:tell os about windowdraw |
955 | mov ebx,2 ; 2, end of draw |
955 | mov ebx,2 ; 2, end of draw |
956 | int 0x40 |
956 | int 0x40 |
957 | 957 | ||
958 | ret |
958 | ret |
959 | 959 | ||
960 | 960 | ||
961 | ; DATA AREA |
961 | ; DATA AREA |
962 | 962 | ||
963 | lsz text,\ |
963 | lsz text,\ |
964 | ru, ' ',\ |
964 | ru, ' ',\ |
965 | ru, ' ',\ |
965 | ru, ' ',\ |
966 | ru, ' ',\ |
966 | ru, ' ',\ |
967 | ru, ' ',\ |
967 | ru, ' ',\ |
968 | ru, ' ',\ |
968 | ru, ' ',\ |
969 | ru, ' ',\ |
969 | ru, ' ',\ |
970 | ru, ' ',\ |
970 | ru, ' ',\ |
971 | ru, ' ',\ |
971 | ru, ' ',\ |
972 | ru, ' ',\ |
972 | ru, ' ',\ |
973 | ru, ' ',\ |
973 | ru, ' ',\ |
974 | ru, ' ',\ |
974 | ru, ' ',\ |
975 | ru, ' ',\ |
975 | ru, ' ',\ |
976 | ru, 'x',\ |
976 | ru, 'x',\ |
977 | en, ' WINDOW FRAME ',\ |
977 | en, ' WINDOW FRAME ',\ |
978 | en, ' WINDOW GRAB BAR ',\ |
978 | en, ' WINDOW GRAB BAR ',\ |
979 | en, ' WINDOW GRAB BUTTON ',\ |
979 | en, ' WINDOW GRAB BUTTON ',\ |
980 | en, ' WINDOW GRAB BUTTON TEXT ',\ |
980 | en, ' WINDOW GRAB BUTTON TEXT ',\ |
981 | en, ' WINDOW GRAB TITLE ',\ |
981 | en, ' WINDOW GRAB TITLE ',\ |
982 | en, ' WINDOW WORK AREA ',\ |
982 | en, ' WINDOW WORK AREA ',\ |
983 | en, ' WINDOW WORK AREA BUTTON ',\ |
983 | en, ' WINDOW WORK AREA BUTTON ',\ |
984 | en, ' WINDOW WORK AREA BUTTON TEXT ',\ |
984 | en, ' WINDOW WORK AREA BUTTON TEXT ',\ |
985 | en, ' WINDOW WORK AREA TEXT ',\ |
985 | en, ' WINDOW WORK AREA TEXT ',\ |
986 | en, ' WINDOW WORK AREA GRAPH ',\ |
986 | en, ' WINDOW WORK AREA GRAPH ',\ |
987 | en, ' ',\ |
987 | en, ' ',\ |
988 | en, ' LOAD SAVE ',\ |
988 | en, ' LOAD SAVE ',\ |
989 | en, 'x' |
989 | en, 'x',\ |
- | 990 | et, ' AKNA RAAM ',\ |
|
- | 991 | et, ' AKNA HAARAMISE RIBA ',\ |
|
- | 992 | et, ' AKNA HAARAMISE NUPP ',\ |
|
- | 993 | et, ' AKNA HAARAMISE NUPU TEKST ',\ |
|
- | 994 | et, ' AKNA HAARAMISE PEALKIRI ',\ |
|
- | 995 | et, ' AKNA TÖÖPIIRKOND ',\ |
|
- | 996 | et, ' AKNA TÖÖPIIRKONNA NUPP ',\ |
|
- | 997 | et, ' AKNA TÖÖPIIRKONNA NUPPU TEKST ',\ |
|
- | 998 | et, ' AKNA TÖÖPIIRKONNA TEKST ',\ |
|
- | 999 | et, ' AKNA TÖÖPIIRKONNA GRAAFIKA ',\ |
|
- | 1000 | et, ' ',\ |
|
- | 1001 | et, ' LAADI SALVESTA ',\ |
|
990 | 1002 | et, 'x' |
|
991 | 1003 | ||
992 | lsz t1,\ |
1004 | lsz t1,\ |
993 | ru, ' 3D ',\ |
1005 | ru, ' 3D ',\ |
994 | en, ' 3D FLAT APPLY ' |
1006 | en, ' 3D FLAT APPLY ',\ |
- | 1007 | et, ' 3D LAME KINNITA ' |
|
995 | 1008 | ||
996 | lsz t2,\ |
1009 | lsz t2,\ |
997 | ru, ' ',\ |
1010 | ru, ' ',\ |
998 | en, ' LOAD APPLY ',\ |
1011 | en, ' LOAD APPLY ',\ |
- | 1012 | et, ' LAADI KINNITA ' |
|
999 | 1013 | ||
1000 | lsz caption_text,\ |
1014 | lsz caption_text,\ |
1001 | ru, ' £®«®¢®ª',\ |
1015 | ru, ' £®«®¢®ª',\ |
1002 | en, 'Caption' |
1016 | en, 'Caption',\ |
- | 1017 | et, 'Pealkiri' |
|
1003 | 1018 | ||
1004 | sz close_text,'x' |
1019 | sz close_text,'x' |
1005 | 1020 | ||
1006 | lsz window_text,\ |
1021 | lsz window_text,\ |
1007 | ru, '¥ªáâ ¢ ®ª¥',\ |
1022 | ru, '¥ªáâ ¢ ®ª¥',\ |
1008 | en, 'Window text' |
1023 | en, 'Window text',\ |
- | 1024 | et, 'Akna tekst' |
|
1009 | 1025 | ||
1010 | lsz button_text,\ |
1026 | lsz button_text,\ |
1011 | ru, '¥ªáâ ª®¯ª¥',\ |
1027 | ru, '¥ªáâ ª®¯ª¥',\ |
1012 | en, 'Button text' |
1028 | en, 'Button text',\ |
- | 1029 | et, 'Nupu tekst' |
|
1013 | 1030 | ||
1014 | sz default_skn, '/RD/1/DEFAULT.SKN',0 |
1031 | sz default_skn, '/RD/1/DEFAULT.SKN',0 |
1015 | 1032 | ||
1016 | if lang eq ru |
1033 | if lang eq ru |
1017 | header db ' ',0 |
1034 | header db ' ',0 |
- | 1035 | else if lang eq et |
|
- | 1036 | header db 'AKNA SEADED - VALI VÄRV JA VAJUTA OBJEKTILE',0 |
|
1018 | else |
1037 | else |
1019 | header db 'WINDOWS SETTINGS - DEFINE COLOR AND CLICK ON TARGET',0 |
1038 | header db 'WINDOWS SETTINGS - DEFINE COLOR AND CLICK ON TARGET',0 |
1020 | end if |
1039 | end if |
1021 | 1040 | ||
1022 | 1041 | ||
1023 | color dd 0 |
1042 | color dd 0 |
1024 | 1043 | ||
1025 | I_END: |
1044 | I_END: |
1026 | 1045 | ||
1027 | read_info: |
1046 | read_info: |
1028 | .mode dd ? ; read |
1047 | .mode dd ? ; read |
1029 | .start_block dd ? ; first block |
1048 | .start_block dd ? ; first block |
1030 | .blocks dd ? ; 512 bytes |
1049 | .blocks dd ? ; 512 bytes |
1031 | .address dd ? |
1050 | .address dd ? |
1032 | .workarea dd ? |
1051 | .workarea dd ? |
1033 | fname rb 256+1 ; filename (+1 - for zero at the end) |
1052 | fname rb 256+1 ; filename (+1 - for zero at the end) |
1034 | 1053 | ||
1035 | virtual at read_info |
1054 | virtual at read_info |
1036 | write_info: |
1055 | write_info: |
1037 | .mode dd ? |
1056 | .mode dd ? |
1038 | rd 1 |
1057 | rd 1 |
1039 | .bytes2write dd ? |
1058 | .bytes2write dd ? |
1040 | .address dd ? |
1059 | .address dd ? |
1041 | .workarea dd ? |
1060 | .workarea dd ? |
1042 | end virtual |
1061 | end virtual |
1043 | 1062 | ||
1044 | skin_info: |
1063 | skin_info: |
1045 | .mode dd ? |
1064 | .mode dd ? |
1046 | .start_block dd ? |
1065 | .start_block dd ? |
1047 | .blocks dd ? |
1066 | .blocks dd ? |
1048 | .address dd ? |
1067 | .address dd ? |
1049 | .workarea dd ? |
1068 | .workarea dd ? |
1050 | .fname rb 256+1 |
1069 | .fname rb 256+1 |
1051 | 1070 | ||
1052 | app_colours: |
1071 | app_colours: |
1053 | 1072 | ||
1054 | w_frame dd ? |
1073 | w_frame dd ? |
1055 | w_grab dd ? |
1074 | w_grab dd ? |
1056 | w_grab_button dd ? |
1075 | w_grab_button dd ? |
1057 | w_grab_button_text dd ? |
1076 | w_grab_button_text dd ? |
1058 | w_grab_text dd ? |
1077 | w_grab_text dd ? |
1059 | w_work dd ? |
1078 | w_work dd ? |
1060 | w_work_button dd ? |
1079 | w_work_button dd ? |
1061 | w_work_button_text dd ? |
1080 | w_work_button_text dd ? |
1062 | w_work_text dd ? |
1081 | w_work_text dd ? |
1063 | w_work_graph dd ? |
1082 | w_work_graph dd ? |
1064 | 1083 | ||
1065 | color_table: |
1084 | color_table: |
1066 | times 10 dd ?211,211>5,550>0,255>20,250>336,336>2,250>337,7>212,11>5,546> |
1085 | times 10 dd ?211,211>5,550>0,255>20,250>336,336>2,250>337,7>212,11>5,546> |
1067 | > |
1086 | > |
1068 | >>> |
1087 | >>> |