Subversion Repositories Kolibri OS

Rev

Rev 9641 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
;
51 mikedld 2
;    UNIFORM WINDOW COLOURS & SKIN
31 halyavin 3
;
4
;    Compile with FASM for Menuet
5
;
6
;    < russian edition by Ivan Poddubny >
51 mikedld 7
;    < skin selection by Mike Semenyako >
3435 mario79 8
;******************************************************************************
9
; last update:  01/04/2013
10
; written by:   Marat Zakiyanov aka Mario79, aka Mario
11
; changes:      select colors with ColorDialog
12
;               some redesign of the look of the program
13
;******************************************************************************
1611 mario79 14
; last update:  10/09/2010
15
; written by:   Marat Zakiyanov aka Mario79, aka Mario
16
; changes:      select path with OpenDialog
31 halyavin 17
;******************************************************************************
3271 mario79 18
	use32
19
	org 0
20
	db 'MENUET01'	; identifier
21
	dd 1		; header version
22
	dd START	; start address
3435 mario79 23
	dd IM_END	; file size
24
	dd I_END	; memory
3271 mario79 25
	dd stacktop	; stack pointer
10017 Doczom 26
M01header.params:
7937 leency 27
	dd app_param	; parameters
3271 mario79 28
	dd cur_dir_path	; path to file
29
 
1611 mario79 30
include 'lang.inc'
7639 leency 31
include '../../../proc32.inc'
1702 Lrz 32
include '../../../config.inc'		;for nightbuild
1611 mario79 33
include '../../../macros.inc'
7937 leency 34
include '../../../string.inc'
7639 leency 35
include '../../../dll.inc'
1611 mario79 36
include 'kglobals.inc'
37
include 'unpacker.inc'
9568 IgorA 38
include '../../../KOSfuncs.inc'
39
include '../../../load_lib.mac'
1611 mario79 40
	@use_library
31 halyavin 41
;******************************************************************************
3435 mario79 42
;--------------------------------------
51 mikedld 43
struct SKIN_HEADER
485 heavyiron 44
  ident   dd ?
45
  version dd ?
46
  params  dd ?
47
  buttons dd ?
48
  bitmaps dd ?
51 mikedld 49
ends
3435 mario79 50
;--------------------------------------
51 mikedld 51
struct SKIN_PARAMS
485 heavyiron 52
  skin_height    dd ?
53
  margin.right   dw ?
54
  margin.left    dw ?
55
  margin.bottom  dw ?
56
  margin.top     dw ?
57
  colors.inner   dd ?
58
  colors.outer   dd ?
59
  colors.frame   dd ?
60
  colors_1.inner dd ?
61
  colors_1.outer dd ?
62
  colors_1.frame dd ?
63
  dtp.size       dd ?
64
  dtp.data       db 40 dup (?)
51 mikedld 65
ends
3435 mario79 66
;--------------------------------------
51 mikedld 67
struct SKIN_BUTTONS
485 heavyiron 68
  type     dd ?
69
  pos:
70
    left   dw ?
71
    top    dw ?
72
  size:
8992 leency 73
    w  dw ?
485 heavyiron 74
    height dw ?
51 mikedld 75
ends
3435 mario79 76
;--------------------------------------
51 mikedld 77
struct SKIN_BITMAPS
485 heavyiron 78
  kind  dw ?
79
  type  dw ?
80
  _data  dd ?
51 mikedld 81
ends
3435 mario79 82
;--------------------------------------
83
frame_1:
84
  .x      = 5
8992 leency 85
  .y      = area.y + area.height + 20
86
  .w  = area.w + 217
87
  .height = 65
3435 mario79 88
;--------------------------------------
89
frame_2:
8992 leency 90
  .x      = frame_1.x
91
  .y      = frame_1.y + frame_1.height + 20
92
  .w  = frame_1.w
93
  .height = frame_1.height
1611 mario79 94
;---------------------------------------------------------------------
8992 leency 95
win:
96
  .w = frame_2.w + frame_2.x + frame_2.x + 9
97
  .h = frame_2.y + frame_2.height + 10
98
;---------------------------------------------------------------------
3271 mario79 99
START:		; start of execution
100
;---------------------------------------------------------------------
9641 IgorA 101
	mcall	SF_SYS_MISC,SSF_HEAP_INIT
1611 mario79 102
 
103
	test	eax,eax
104
	jz	close
105
 
7639 leency 106
stdcall dll.Load,LibIniImportTable
1611 mario79 107
load_libraries l_libs_start,end_l_libs
108
 
109
;if return code =-1 then exit, else nornary work
110
	inc	eax
111
	test	eax,eax
112
	jz	close
113
;---------------------------------------------------------------------
7937 leency 114
; set default pathes
7938 leency 115
	stdcall string.copy, default_skin, skin_info
116
	stdcall string.copy, default_dtp, dtp_name
1611 mario79 117
;---------------------------------------------------------------------
7937 leency 118
; check app param
10017 Doczom 119
	stdcall string.length, [M01header.params]
120
	add eax, [M01header.params]
7937 leency 121
	mov ecx, [eax-4]
9641 IgorA 122
	or ecx, 0x20202000 ;letters to lowercase
7937 leency 123
	cmp ecx, '.skn'
124
	je  load_skin_from_param
125
	cmp ecx, '.dtp'
9632 leency 126
	je load_dtp_from_param
127
	jmp no_param
7937 leency 128
 
129
load_dtp_from_param:
10017 Doczom 130
	stdcall string.copy, [M01header.params], dtp_name
7937 leency 131
	call   load_dtp_file.1
132
	jmp    skin_path_ready
133
 
134
load_skin_from_param:
10017 Doczom 135
	stdcall string.copy, [M01header.params], skin_info
7937 leency 136
	call    load_skin_file.2
137
	jmp     skin_path_ready
138
 
139
no_param:
9641 IgorA 140
	mcall	SF_STYLE_SETTINGS,SSF_GET_COLORS,color_table,4*10	; get current colors
7937 leency 141
	call	load_skin_file.2
142
 
1611 mario79 143
skin_path_ready:
144
;---------------------------------------------------------------------
145
;OpenDialog	initialisation
3271 mario79 146
	push	dword OpenDialog_data
147
	call	[OpenDialog_Init]
1611 mario79 148
 
3271 mario79 149
	push	dword OpenDialog_data2
150
	call	[OpenDialog_Init]
3435 mario79 151
;--------------------------------------------------------------------
152
;init_ColorDialog	ColorDialog_data
153
	push    dword ColorDialog_data
154
	call    [ColorDialog_Init]
155
;--------------------------------------------------------------------
1611 mario79 156
; prepare for PathShow
157
	push	dword PathShow_data_1
158
	call	[PathShow_prepare]
159
 
160
	push	dword PathShow_data_2
161
	call	[PathShow_prepare]
162
;---------------------------------------------------------------------
31 halyavin 163
red:
3271 mario79 164
	call	draw_window		; at first, draw the window
165
;---------------------------------------------------------------------
31 halyavin 166
still:
9641 IgorA 167
	mcall	SF_WAIT_EVENT
31 halyavin 168
 
3271 mario79 169
	dec	eax	; redraw request ?
170
	jz	red
3435 mario79 171
 
3271 mario79 172
	dec	eax	; key in buffer ?
173
	jz	key
3435 mario79 174
 
3271 mario79 175
	dec	eax	; button in buffer ?
176
	jz	button
31 halyavin 177
 
3271 mario79 178
	jmp	still
179
;---------------------------------------------------------------------
180
key:		; key
9641 IgorA 181
	mcall	SF_GET_KEY
3271 mario79 182
	jmp	still
183
;---------------------------------------------------------------------
184
button:		; button
9641 IgorA 185
	mcall	SF_GET_BUTTON
31 halyavin 186
 
3271 mario79 187
 	cmp	ah,12	; load file
188
 	jne	no_load
31 halyavin 189
 
7937 leency 190
	call	load_dtp_file
3271 mario79 191
	call	draw_window
192
 	jmp	still
193
;--------------------------------------
194
no_load:
195
 	cmp	ah,13	; save file
196
 	jne	no_save
31 halyavin 197
 
3271 mario79 198
	call	save_file
199
 	jmp	still
200
;--------------------------------------
201
no_save:
202
 	cmp	ah,14	; set 3d buttons
203
 	jne	no_3d
31 halyavin 204
 
9641 IgorA 205
	mcall	SF_STYLE_SETTINGS,SSF_SET_BUTTON_STYLE,1
7639 leency 206
	invoke  ini_set_int, aIni, aSectionSkn, aButtonStyle, 1
3271 mario79 207
 	jmp	doapply
208
;--------------------------------------
209
no_3d:
210
 	cmp	ah,15	; set flat buttons
211
 	jne	no_flat
31 halyavin 212
 
7639 leency 213
	invoke  ini_set_int, aIni, aSectionSkn, aButtonStyle, 0
9641 IgorA 214
	mcall	SF_STYLE_SETTINGS,SSF_SET_BUTTON_STYLE, 0
3271 mario79 215
;--------------------------------------
484 diamond 216
doapply:
9641 IgorA 217
	mcall	SF_STYLE_SETTINGS,SSF_APPLY, 0
3271 mario79 218
 	jmp	still
219
;--------------------------------------
220
no_flat:
221
 	cmp	ah,16	; apply
222
 	jne	no_apply
223
;--------------------------------------
224
apply_direct:
9641 IgorA 225
	mcall	SF_STYLE_SETTINGS,SSF_SET_COLORS,color_table,10*4
3271 mario79 226
 	jmp	doapply
227
;--------------------------------------
228
 no_apply:
229
 	cmp	ah,17	; load skin file
230
 	jne	no_load_skin
31 halyavin 231
 
3271 mario79 232
	call	load_skin_file
233
	call	draw_window
234
 	jmp	still
235
;--------------------------------------
236
no_load_skin:
237
 	cmp	ah,18	; apply skin
238
 	jne	no_apply_skin
31 halyavin 239
 
3271 mario79 240
 	cmp	[skin_info],0
241
 	je	no_apply_skin
51 mikedld 242
 
9641 IgorA 243
	mcall	SF_STYLE_SETTINGS,SSF_SET_SKIN,skin_info
3271 mario79 244
	call	draw_window
245
 	jmp	still
246
;--------------------------------------
247
no_apply_skin:
248
	cmp	ah,31
249
	jb	no_new_colour
51 mikedld 250
 
3271 mario79 251
	cmp	ah,41
252
	jg	no_new_colour
253
 
3435 mario79 254
;---------------------------------------------------------------------
255
.start_ColorDialog:
256
	push    dword ColorDialog_data
257
	call    [ColorDialog_Start]
258
; 2 - use another method/not found program
259
	cmp	[ColorDialog_data.status],2
260
	je	still
261
; 1 - OK, color selected
262
	cmp	[ColorDialog_data.status],1
263
	jne	still
264
;---------------------------------------------------------------------
265
 
3271 mario79 266
	shr	eax,8
267
	sub	eax,31
268
	shl	eax,2
3435 mario79 269
	mov	ebx,[ColorDialog_data.color]
270
	and	ebx,0xffffff	; temporary for ColorDialog!!!!!!!!!!
3271 mario79 271
	mov	[eax+color_table],ebx
272
 	cmp	dword[not_packed_area+SKIN_HEADER.ident],'SKIN'
273
 	jne	@f
31 halyavin 274
 
3271 mario79 275
	mov	edi,[not_packed_area+SKIN_HEADER.params]
276
	mov	dword[edi+not_packed_area+SKIN_PARAMS.dtp.data+eax],ebx
277
	call	draw_skin
278
;--------------------------------------
279
@@:
280
	call	draw_colours
281
 	jmp	still
282
;--------------------------------------
283
no_new_colour:
284
	cmp	ah,1	; terminate
285
	jnz	noid1
286
;--------------------------------------
1611 mario79 287
close:
3271 mario79 288
	or	eax,-1
289
	mcall
290
;--------------------------------------
291
noid1:
292
 	jmp	still
293
;---------------------------------------------------------------------
7937 leency 294
load_dtp_file:
1611 mario79 295
;---------------------------------------------------------------------
296
; invoke OpenDialog
297
	mov	[OpenDialog_data.type],dword 0
3271 mario79 298
	push	dword OpenDialog_data
299
	call	[OpenDialog_Start]
1611 mario79 300
	cmp	[OpenDialog_data.status],1
301
	je	.1
302
	ret
303
.1:
304
; prepare for PathShow
305
	push	dword PathShow_data_1
306
	call	[PathShow_prepare]
31 halyavin 307
 
1611 mario79 308
	call	draw_PathShow
309
;---------------------------------------------------------------------
7937 leency 310
.2:
3271 mario79 311
	xor	eax, eax
312
	mov	ebx, read_info
313
	mov	dword [ebx], eax	; subfunction: read
314
	mov	dword [ebx+4], eax	; offset (low dword)
315
	mov	dword [ebx+8], eax	; offset (high dword)
316
	mov	dword [ebx+12], 40     ; read colors file: 4*10 bytes
317
	mov	dword [ebx+16], color_table ; address
9641 IgorA 318
	mcall	SF_FILE
3271 mario79 319
	ret
1611 mario79 320
;---------------------------------------------------------------------
321
load_skin_file:
322
;---------------------------------------------------------------------
323
; invoke OpenDialog
3271 mario79 324
	push	dword OpenDialog_data2
325
	call	[OpenDialog_Start]
1611 mario79 326
	cmp	[OpenDialog_data2.status],1
327
	je	.1
328
	ret
329
.1:
330
; prepare for PathShow
331
	push	dword PathShow_data_2
332
	call	[PathShow_prepare]
31 halyavin 333
 
1611 mario79 334
	call	draw_PathShow
335
;---------------------------------------------------------------------
336
.2:
3271 mario79 337
	xor	eax,eax
338
	mov	ebx,read_info2
339
	mov	dword [ebx], eax	; subfunction: read
340
	mov	dword [ebx+4], eax	; offset (low dword)
341
	mov	dword [ebx+8], eax	; offset (high dword)
342
	mov	dword [ebx+12], 32*1024 ; read: max 32 KBytes
343
	mov	dword [ebx+16], file_load_area ; address
9641 IgorA 344
	mcall	SF_FILE
31 halyavin 345
 
3271 mario79 346
	mov	esi, file_load_area
179 mikedld 347
 
3271 mario79 348
	cmp	dword [esi], 'KPCK'
349
	jnz	notpacked
31 halyavin 350
 
3271 mario79 351
	cmp	dword [esi+4], 32*1024 ; max 32 KBytes
352
	ja	doret
51 mikedld 353
 
3271 mario79 354
	push	unpack_area
355
	push	esi
356
	call	unpack
357
	mov	esi,unpack_area
358
;--------------------------------------
359
notpacked:
360
 	cmp	[esi+SKIN_HEADER.ident],dword 'SKIN'
361
 	jne	doret
51 mikedld 362
 
3271 mario79 363
	mov	edi,not_packed_area
364
	mov	ecx,0x8000/4
365
	rep	movsd
51 mikedld 366
 
3271 mario79 367
	mov	ebp,not_packed_area
368
	mov	esi,[ebp+SKIN_HEADER.params]
369
	add	esi,ebp
370
	lea	esi,[esi+SKIN_PARAMS.dtp.data]
371
	mov	edi,color_table
372
	mov	ecx,10
373
	rep	movsd
374
;--------------------------------------
375
doret:
376
	ret
1611 mario79 377
;---------------------------------------------------------------------
378
save_file:
379
;---------------------------------------------------------------------
380
; invoke OpenDialog
381
	mov	[OpenDialog_data.type],dword 1
3271 mario79 382
	push	dword OpenDialog_data
383
	call	[OpenDialog_Start]
1611 mario79 384
	cmp	[OpenDialog_data.status],1
385
	je	.1
386
	ret
387
.1:
388
; prepare for PathShow
389
	push	dword PathShow_data_1
390
	call	[PathShow_prepare]
31 halyavin 391
 
1611 mario79 392
	call	draw_PathShow
393
;---------------------------------------------------------------------
3271 mario79 394
	xor	eax,eax
395
	mov	ebx,write_info
396
	mov	[ebx],dword 2			; subfunction: write
397
	and	[ebx+4],eax			; (reserved)
398
	and	[ebx+8],eax			; (reserved)
399
	mov	[ebx+12],dword 10*4		; bytes to write
400
	mov	[ebx+16],dword color_table	; address
9641 IgorA 401
	mcall	SF_FILE
3271 mario79 402
	ret
1611 mario79 403
;---------------------------------------------------------------------
3435 mario79 404
draw_button_row:
8992 leency 405
	mov	edx,0x40000000 + 31		; BUTTON ROW
406
	mov	ebx,(area.w+18)*65536+29
407
	mov	ecx,9*65536+15
3435 mario79 408
	mov	eax,8
409
;-----------------------------------
410
.newb:
411
	mcall
8992 leency 412
	add	ecx,22*65536
3435 mario79 413
	inc	edx
8992 leency 414
	cmp	edx,0x40000000 + 40
3435 mario79 415
	jbe	.newb
3271 mario79 416
	ret
3435 mario79 417
;---------------------------------------------------------------------
418
draw_button_row_of_texts:
8992 leency 419
	mov	ebx,(area.w+49)*65536+9	; ROW OF TEXTS
3435 mario79 420
	mov	ecx,[w_work_text]
8992 leency 421
	add ecx,0x10000000
3435 mario79 422
	mov	edx,text
423
	mov	esi,32
424
	mov	eax,4
425
;-----------------------------------
426
.newline:
427
	mcall
8992 leency 428
	add	ebx,22
3435 mario79 429
	add	edx,32
430
	cmp	[edx],byte 'x'
431
	jne	.newline
432
	ret
433
;---------------------------------------------------------------------
31 halyavin 434
draw_colours:
3271 mario79 435
	pusha
436
	mov	esi,color_table
8992 leency 437
	mov	ebx,(area.w+19)*65536+28
3435 mario79 438
	mov	ecx,10*65536+14
439
	mov	eax,13
3472 mario79 440
	mov	[frame_data.draw_text_flag],dword 0
3271 mario79 441
;--------------------------------------
442
newcol:
443
	mov	edx,[esi]
3435 mario79 444
	mcall
3472 mario79 445
 
446
	push	ebx ecx
447
 
448
	sub	ebx,2 shl 16
449
	add	bx,4
450
	sub	ecx,2 shl 16
451
	add	cx,4
452
 
453
	mov	[frame_data.x],ebx
454
	mov	[frame_data.y],ecx
455
 
456
	push	dword frame_data
457
	call	[Frame_draw]
458
 
459
	pop	ecx ebx
460
 
8992 leency 461
	add	ecx,22*65536
3271 mario79 462
	add	esi,4
3435 mario79 463
	cmp	esi,color_table+4*9
3271 mario79 464
	jbe	newcol
31 halyavin 465
 
3271 mario79 466
	popa
467
	ret
2068 mario79 468
;----------------------------------------------------------------------
1611 mario79 469
draw_PathShow:
470
	pusha
9641 IgorA 471
	mcall	SF_DRAW_RECT,,,0xffffff
472
	mcall	SF_DRAW_RECT,,,0xffffff
1611 mario79 473
; draw for PathShow
474
	push	dword PathShow_data_1
475
	call	[PathShow_draw]
476
 
477
	push	dword PathShow_data_2
478
	call	[PathShow_draw]
479
	popa
480
	ret
481
;---------------------------------------------------------------------
31 halyavin 482
;   *********************************************
483
;   *******  WINDOW DEFINITIONS AND DRAW ********
484
;   *********************************************
485
draw_window:
9641 IgorA 486
	mcall	SF_REDRAW,SSF_BEGIN_DRAW
487
	mcall	SF_STYLE_SETTINGS,SSF_GET_COLORS,app_colours,10*4
488
	mcall	SF_GET_SCREEN_SIZE
489
	mcall	SF_STYLE_SETTINGS,SSF_GET_SKIN_HEIGHT
3435 mario79 490
	mov	[current_skin_high],eax
2068 mario79 491
; DRAW WINDOW
492
	xor	eax,eax		; function 0 : define and draw window
493
	xor	esi,esi
494
	mov	edx,[w_work]	; color of work area RRGGBB,8->color
3435 mario79 495
	or	edx,0x34000000
8992 leency 496
	mov	ecx,50 shl 16 + win.h
3435 mario79 497
	add	ecx,[current_skin_high]
8992 leency 498
	mcall	,<110, win.w>,,,,title
31 halyavin 499
 
9641 IgorA 500
	mcall	SF_THREAD_INFO,procinfo,-1
2068 mario79 501
 
502
	mov	eax,[procinfo+70] ;status of window
503
	test	eax,100b
504
	jne	.end
3271 mario79 505
 
3435 mario79 506
;if lang eq ru
51 mikedld 507
  load_w  = (5*2+6*9)
508
  save_w  = (5*2+6*9)
509
  flat_w  = (5*2+6*7)
510
  apply_w = (5*2+6*9)
3435 mario79 511
;else
512
;  load_w  = (5*2+6*6)
513
;  save_w  = (5*2+6*8)
514
;  flat_w  = (5*2+6*4)
515
;  apply_w = (5*2+6*7)
516
;end if
517
;-----------------------------------
518
; select color DTP frame
519
; LOAD BUTTON	; button 12
9641 IgorA 520
	mcall	SF_DEFINE_BUTTON,,,12,[w_work_button]
2068 mario79 521
; SAVE BUTTON
522
	add	ebx,(load_w+2)*65536-load_w+save_w
523
	inc	edx
3435 mario79 524
	mcall		; button 13
525
; APPLY BUTTON
8992 leency 526
	mov	ebx,(frame_1.x + frame_1.w - apply_w - 15)*65536+apply_w
9641 IgorA 527
	mcall	SF_DEFINE_BUTTON,,,16	; button 17
3435 mario79 528
; select color DTP button text
9641 IgorA 529
	mcall	SF_DRAW_TEXT,,[w_work_button_text],t1,t1.size
3435 mario79 530
;-----------------------------------
531
; select skin frame
532
; LOAD SKIN BUTTON	; button 17
9641 IgorA 533
	mcall	SF_DEFINE_BUTTON,,,17,[w_work_button]
2068 mario79 534
; 3D
3435 mario79 535
	mov	ebx,(frame_2.x+155)*65536+34
536
	mcall	,,,14	; button 14
2068 mario79 537
; FLAT
3435 mario79 538
	add	ebx,36*65536-34+flat_w
2068 mario79 539
	inc	edx
3435 mario79 540
	mcall		; button 15
2068 mario79 541
; APPLY SKIN BUTTON
8992 leency 542
	mov	ebx,(frame_2.x + frame_2.w - apply_w -15)*65536+apply_w
3435 mario79 543
	mcall	,,,18		; button 18
544
; select skin button text
9641 IgorA 545
	mcall	SF_DRAW_TEXT,,[w_work_button_text],t2,t2.size
3435 mario79 546
;-----------------------------------
547
	call	draw_button_row
548
	call	draw_button_row_of_texts
549
	call	draw_colours
2068 mario79 550
;-----------------------------------
8992 leency 551
	mov	[frame_data.x],dword frame_1.x shl 16+frame_1.w
3472 mario79 552
	mov	[frame_data.y],dword frame_1.y shl 16+frame_1.height
553
	mov	[frame_data.text_pointer],dword select_dtp_text
554
	mov	eax,[w_work]
555
	mov	[frame_data.font_backgr_color],eax
556
	mov	eax,[w_work_text]
557
	mov	[frame_data.font_color],eax
558
	mov	[frame_data.draw_text_flag],dword 1
559
 
560
	push	dword frame_data
561
	call	[Frame_draw]
562
;-----------------------------------
8992 leency 563
	mov	[frame_data.x],dword frame_2.x shl 16+frame_2.w
3472 mario79 564
	mov	[frame_data.y],dword frame_2.y shl 16+frame_2.height
565
	mov	[frame_data.text_pointer],dword select_skin_text
31 halyavin 566
 
3472 mario79 567
	push	dword frame_data
568
	call	[Frame_draw]
2068 mario79 569
;-----------------------------------
3435 mario79 570
	call	draw_PathShow
571
;-----------------------------------
2068 mario79 572
	cmp	dword[not_packed_area+SKIN_HEADER.ident],'SKIN'
573
	jne	@f
574
	call	draw_skin
575
@@:
576
.end:
9641 IgorA 577
	mcall	SF_REDRAW,SSF_END_DRAW
2068 mario79 578
	ret
3435 mario79 579
;-----------------------------------------------------------------------------
580
include 'drawskin.inc'
581
;-----------------------------------------------------------------------------
31 halyavin 582
; DATA AREA
3435 mario79 583
;-----------------------------------------------------------------------------
584
include 'idata.inc'
585
;-----------------------------------------------------------------------------
586
IM_END:
587
;-----------------------------------------------------------------------------
588
include 'udata.inc'
589
;-----------------------------------------------------------------------------
31 halyavin 590
I_END:
3435 mario79 591
;-----------------------------------------------------------------------------