Subversion Repositories Kolibri OS

Rev

Rev 2195 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;                                                   ;
93 diamond 3
;    MENUBAR for KolibriOS  - Compile with fasm     ;
31 halyavin 4
;                                                   ;
5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2532 mario79 6
;------------------------------------------------------------------------------
7
; last update:  31/03/2012
8
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
9
; changes:      The program uses only 20 Kb memory is now.
10
;               Code optimizing and refactoring.
11
;------------------------------------------------------------------------------
12
	use32
13
	org 0x0
14
	db 'MENUET01'	; 8 byte id
15
	dd 0x01		; header version
16
	dd START	; program start
17
	dd IM_END	;I_END	    ; program image size
18
	dd I_END	;0xA000	    ; reguired amount of memory - 10 Kb
19
	dd stack_top	;0xA000	    ; esp
20
	dd 0x0		; boot parameters
21
	dd 0x0		; path
22
;------------------------------------------------------------------------------
31 halyavin 23
include 'lang.inc'
873 heavyiron 24
include '..\..\..\macros.inc'
2532 mario79 25
include 'MOI.INC'	;раскладки клавиатуры
31 halyavin 26
 
1920 Albom 27
caps_lock_check fix 0
28
 
1440 diamond 29
time_bgr_color = 0x66cc
30
 
601 Rus 31
width		dd  305
32
buttons 	dd    1  ;  0 no frames  ; 1 frames
33
soften_up	dd    1  ;  0 no         ; 1 yes
34
soften_down	dd    0  ;  0 no         ; 1 yes
35
minimize_left	dd    1
36
minimize_right	dd    1
633 diamond 37
icons_position	dd    95
601 Rus 38
menu_enable	dd    1
39
setup_enable	dd    0
40
graph_text	dd    1
41
soften_middle	dd    1  ;  0 no         ; 1 yes
42
icons		dd    1  ;  0 defaults   ; 1 activate
31 halyavin 43
 
42 mikedld 44
PANEL_HEIGHT = 18
2532 mario79 45
;------------------------------------------------------------------------------
46
align 4
93 diamond 47
handle_key:
2532 mario79 48
	mcall	18, 7
49
	mov	[active_process],eax
31 halyavin 50
 
2532 mario79 51
	mcall	2
601 Rus 52
	cmp	al, 2
53
	jnz	begin_1.ret
2532 mario79 54
 
601 Rus 55
	mov	ebx, exec_fileinfo
56
	shr	eax, 8
870 barsuk 57
	cmp	al, 0
58
	je	prod
2532 mario79 59
 
870 barsuk 60
	mov	[key_r],al
61
	sub	[key_r],2
62
	cmp	al, 2
63
	jz	alter
2532 mario79 64
 
870 barsuk 65
	cmp	al, 3
66
	jz	alter
2532 mario79 67
 
870 barsuk 68
	cmp	al, 4
69
	jz	alter
2532 mario79 70
 
870 barsuk 71
	cmp	al, 5
72
	jz	alter
2532 mario79 73
 
870 barsuk 74
	cmp	al, 6
75
	jz	alter
2532 mario79 76
 
870 barsuk 77
	cmp	al, 7
78
	jz	alter
2532 mario79 79
 
870 barsuk 80
	cmp	al, 8
81
	jz	alter
2532 mario79 82
;--------------------------------------
83
align 4
870 barsuk 84
prod:
2532 mario79 85
if caps_lock_check
86
	cmp	al,58
87
	jne	@f
88
 
89
	pusha
90
	mcall	26,2,9
91
	mov	ebx,eax
92
	mov	eax,2
93
	call	draw_window ;;;???
94
	popa
95
	ret
96
@@:
97
end if
601 Rus 98
	cmp	al, 15
99
	jz	alt_tab_pressed
2532 mario79 100
 
601 Rus 101
	cmp	al, 88
102
	jz	start_end_application
2532 mario79 103
 
601 Rus 104
	cmp	al, 91
105
	jz	start_menu_application
2532 mario79 106
 
601 Rus 107
	cmp	al, 92
108
	jz	start_menu_application
2532 mario79 109
 
601 Rus 110
	cmp	al, 62
111
	jz	kill_active_application
2532 mario79 112
 
1421 diamond 113
;	cmp	al, 71
114
;	jz	page_list_next
2532 mario79 115
 
1421 diamond 116
;	cmp	al, 72
117
;	jz	page_list_prev
2532 mario79 118
 
1421 diamond 119
	cmp	al, 69
120
	jz	start_mousemul_application
1920 Albom 121
 
601 Rus 122
	cmp	[current_alt_tab_app], -1
123
	jz	@f
2532 mario79 124
 
601 Rus 125
	test	ah, 0x30
126
	jz	alt_tab_released
2532 mario79 127
;--------------------------------------
128
align 4
443 diamond 129
@@:
304 diamond 130
; this is hotkey Ctrl+Shift ;or LShift+RShift
2532 mario79 131
	jmp	karu
132
;	mov	ebx, setup_exec
133
;	test	ah, 001100b
134
;	jz	change_sys_lang
135
;------------------------------------------------------------------------------
136
align 4
304 diamond 137
change_key_lang:
601 Rus 138
	mov	dword [ebx+8], chlang
139
	mcall	70
2532 mario79 140
;--------------------------------------
141
align 4
31 halyavin 142
begin_1:
2532 mario79 143
	mov	ecx,[active_process]
144
	mcall	18, 3
145
	mcall	5, 25
146
;--------------------------------------
147
align 4
93 diamond 148
.ret:
601 Rus 149
	ret
2532 mario79 150
;------------------------------------------------------------------------------
151
;align 4
304 diamond 152
;change_sys_lang:
2532 mario79 153
;    	mov	   dword [ebx+8], syslang
304 diamond 154
;        mcall   70
155
;        jmp     begin_1
2532 mario79 156
;------------------------------------------------------------------------------
157
align 4
158
start_end_application:
159
	mov	dword [ebx+21],end_name
601 Rus 160
	mcall	70
1421 diamond 161
	ret
2532 mario79 162
;------------------------------------------------------------------------------
163
align 4
164
start_mousemul_application:
165
	mov	dword [ebx+21],mousemul_name
1421 diamond 166
	mcall	70
167
	ret
2532 mario79 168
;------------------------------------------------------------------------------
169
align 4
170
kill_active_application:
171
	mcall	72,1,3,1
172
	jmp	begin_1.ret
173
;------------------------------------------------------------------------------
174
align 4
175
start_menu_application:
601 Rus 176
	mov	[draw_window_1], 1
177
	mov	dword [ebx+21], menu_name
178
	mcall	70
2532 mario79 179
	jmp	begin_1.ret
180
;------------------------------------------------------------------------------
181
;align 4
1421 diamond 182
;page_list_next:
2532 mario79 183
;	cmp	[page_list],15
184
;	je	@f
1421 diamond 185
;
2532 mario79 186
;	inc	[page_list]
187
;	mov	[draw_window_1],1
188
;@@:
189
;	jmp  begin_1.ret
190
;------------------------------------------------------------------------------
191
;align 4
1421 diamond 192
;page_list_prev:
2532 mario79 193
;	cmp	[page_list],0
194
;	je	@f
195
;
196
;	dec	[page_list]
197
;	mov	[draw_window_1],1
198
;@@:
199
;	jmp  begin_1.ret
200
;------------------------------------------------------------------------------
201
align 4
443 diamond 202
alt_tab_pressed:
203
; handle Alt+Tab and Alt+Shift+Tab
601 Rus 204
	mov	ebp, eax
205
	cmp	[current_alt_tab_app], -1
206
	jnz	has_alt_tab_app
443 diamond 207
; заполняем таблицу приложений, подлежащих переключению
601 Rus 208
	xor	edx, edx
2532 mario79 209
	mov	ebx, procinfo_window_tabs	;0x8000 ; WTF???!!!
601 Rus 210
	mov	ecx, 1
443 diamond 211
.fill:
601 Rus 212
	inc	ecx
2532 mario79 213
	mcall	9
601 Rus 214
	call	need_window_tab
215
	jz	@f
2532 mario79 216
 
601 Rus 217
	cmp	edx, 256
218
	jz	@f
2532 mario79 219
 
601 Rus 220
	mov	[alt_tab_list+edx*8], ecx
221
	movzx	esi, word [ebx+4]
222
	mov	[alt_tab_list+edx*8+4], esi
223
	inc	edx
2532 mario79 224
;--------------------------------------
225
align 4
443 diamond 226
@@:
2532 mario79 227
	cmp	ecx,eax
601 Rus 228
	jb	.fill
2532 mario79 229
 
601 Rus 230
	mov	[alt_tab_list_size], edx
231
	test	edx, edx
232
	jz	begin_1.ret
2532 mario79 233
 
601 Rus 234
	mcall	66,4,0,0	; ловим момент отпускания всех управляющих клавиш
235
	test	eax, eax
236
	jnz	begin_1.ret
2532 mario79 237
 
601 Rus 238
	xor	edx, edx
239
	mov	eax, [alt_tab_list+4]
240
	xor	ecx, ecx
241
	inc	ecx
2532 mario79 242
;--------------------------------------
243
align 4
443 diamond 244
.findmax:
601 Rus 245
	cmp	[alt_tab_list+ecx*8+4], eax
246
	jb	@f
2532 mario79 247
 
601 Rus 248
	mov	edx, ecx
249
	mov	eax, [alt_tab_list+ecx*8+4]
2532 mario79 250
;--------------------------------------
251
align 4
443 diamond 252
@@:
601 Rus 253
	inc	ecx
254
	cmp	ecx, [alt_tab_list_size]
255
	jb	.findmax
2532 mario79 256
 
601 Rus 257
	mov	[current_alt_tab_app], edx
2532 mario79 258
;--------------------------------------
259
align 4
443 diamond 260
has_alt_tab_app:
601 Rus 261
	mov	eax, [current_alt_tab_app]
262
	mov	edx, [alt_tab_list+eax*8+4]	; slot
263
	xor	ecx, ecx
264
	or	eax, -1
265
	test	ebp, 300h
266
	jz	.notshift
2532 mario79 267
 
601 Rus 268
	or	esi, -1
2532 mario79 269
;--------------------------------------
270
align 4
443 diamond 271
.loop1:
601 Rus 272
	cmp	[alt_tab_list+ecx*8+4], edx
273
	jbe	@f
2532 mario79 274
 
601 Rus 275
	cmp	[alt_tab_list+ecx*8+4], esi
276
	jae	@f
2532 mario79 277
 
601 Rus 278
	mov	eax, ecx
279
	mov	esi, [alt_tab_list+ecx*8+4]
2532 mario79 280
;--------------------------------------
281
align 4
443 diamond 282
@@:
601 Rus 283
	inc	ecx
284
	cmp	ecx, [alt_tab_list_size]
285
	jb	.loop1
2532 mario79 286
 
601 Rus 287
	cmp	eax, -1
288
	jnz	.found
2532 mario79 289
 
601 Rus 290
	xor	edx, edx
291
	xor	ecx, ecx
292
	jmp	.loop1
2532 mario79 293
;--------------------------------------
294
align 4
443 diamond 295
.notshift:
601 Rus 296
	xor	esi, esi
2532 mario79 297
;--------------------------------------
298
align 4
443 diamond 299
.loop2:
601 Rus 300
	cmp	[alt_tab_list+ecx*8+4], edx
301
	jae	@f
2532 mario79 302
 
601 Rus 303
	cmp	[alt_tab_list+ecx*8+4], esi
304
	jbe	@f
2532 mario79 305
 
601 Rus 306
	mov	eax, ecx
307
	mov	esi, [alt_tab_list+ecx*8+4]
2532 mario79 308
;--------------------------------------
309
align 4
443 diamond 310
@@:
601 Rus 311
	inc	ecx
312
	cmp	ecx, [alt_tab_list_size]
313
	jb	.loop2
2532 mario79 314
 
601 Rus 315
	cmp	eax, -1
316
	jnz	.found
2532 mario79 317
 
601 Rus 318
	or	edx, -1
319
	xor	ecx, ecx
320
	jmp	.loop2
2532 mario79 321
;--------------------------------------
322
align 4
443 diamond 323
.found:
601 Rus 324
	mov	[current_alt_tab_app], eax
325
	push	eax
326
	xor	edx, edx
327
	div	[max_applications]
328
	mov	[page_list], eax
329
	mov	[draw_window_1], 1
330
	mov	edi, app_list
331
	push	edi
332
	mov	ecx, 20
333
	or	eax, -1
334
	rep	stosd
335
	pop	edi
336
	pop	ecx
337
	sub	ecx, edx
2532 mario79 338
;--------------------------------------
339
align 4
443 diamond 340
@@:
601 Rus 341
	cmp	ecx, [alt_tab_list_size]
342
	jae	redraw_window_tabs
2532 mario79 343
 
601 Rus 344
	mov	eax, [alt_tab_list+ecx*8]
345
	stosd
346
	inc	ecx
347
	jmp	@b
2532 mario79 348
;--------------------------------------
349
align 4
443 diamond 350
alt_tab_released:
601 Rus 351
	mcall	66,5,0,0	; уже поймали, хватит :)
352
	or	eax, -1
353
	xchg	eax, [current_alt_tab_app]
354
	mov	ecx, [alt_tab_list+eax*8]
2532 mario79 355
	mcall	18,3
601 Rus 356
	jmp	redraw_window_tabs
2532 mario79 357
;------------------------------------------------------------------------------
358
align 4
601 Rus 359
active_process	dd 0
31 halyavin 360
 
361
;  .exit: mcall -1
362
 
363
 
364
START:
2532 mario79 365
	mcall	66,4,0,2	; LShift+RShift
366
	mcall	66,,,11h	; Ctrl+Shift
367
	mcall	66,,88,110h	; Alt+Ctrl+F12
368
	mcall	66,,91,0h 	; LWin
369
	mcall	66,,92 		; RWin
370
;	mcall	66,,91,100h	; Alt+LWin
371
;	mcall	66,,92		; Alt+RWin
372
	mcall	66,,62,100h	; Alt+F4
373
;	mcall	66,,71		; Alt+Home
374
;	mcall	66,,72		; Alt+Up
375
	mcall	66,,15		; Alt+Tab
376
	mcall	66,,2		; Alt+1
377
	mcall	66,,3		; Alt+2
378
	mcall	66,,4		; Alt+3
379
	mcall	66,,5		; Alt+4
380
	mcall	66,,6		; Alt+5
381
	mcall	66,,7		; Alt+6
382
	mcall	66,,8		; Alt+7
383
	mcall	66,,,101h 	; Alt+Shift+Tab
384
	mcall	66,,69		; Alt+Shift+NumLock
870 barsuk 385
 
2532 mario79 386
if caps_lock_check
387
	xor	edx,edx
388
	mcall	66,4,58
389
end if
390
	mcall	18,8,1
391
	test	eax,eax
392
	jne	@f
393
	mcall	18,8,2
394
;--------------------------------------
395
align 4
396
@@:
397
	mcall	70,dat_fileinfo
31 halyavin 398
 
2532 mario79 399
	mov	edi,width
400
	mov	esi,I_END
401
	xor	eax,eax
402
;--------------------------------------
403
align 4
404
new_number:
405
	cmp	[esi],byte ';'
406
	je	number_ready
31 halyavin 407
 
2532 mario79 408
	imul	eax,10
409
	movzx	ebx,byte [esi]
410
	sub	ebx,'0'
411
	add	eax,ebx
412
	inc	esi
413
	jmp	new_number
414
;--------------------------------------
415
align 4
416
number_ready:
417
	stosd
418
	xor	eax,eax
419
	inc	esi
420
	cmp	[esi],byte 'x'
421
	jne	new_number
422
 
601 Rus 423
	mcall	14
424
	mov	[screen_size],eax
31 halyavin 425
 
601 Rus 426
	mov	ecx,eax
870 barsuk 427
;eax = [xsize]*65536 + [ysize], где
2532 mario79 428
	shr	ecx,16
429
	and	eax,0xFFFF
870 barsuk 430
	lea	edx,[eax-PANEL_HEIGHT-1]
431
 
601 Rus 432
	mcall	48,6
51 mikedld 433
 
2532 mario79 434
	mcall	9,process_info_buffer,-1
435
	mov	ecx,[process_info_buffer+30]
436
	mcall	18,21
437
	mov	[this_slot],eax
438
	mov	[max_slot],255
633 diamond 439
 
2532 mario79 440
	call	set_variables
441
;--------------------------------------
442
align 4
31 halyavin 443
start_after_minimize:
2532 mario79 444
	call	draw_window
445
	call	draw_info
446
	call	draw_running_applications
31 halyavin 447
 
2532 mario79 448
	mcall	23,30
449
	call	load_ini
450
	call	fir_lng
451
;------------------------------------------------------------------------------
452
align 4
31 halyavin 453
still:
2532 mario79 454
	call	draw_info
455
	call	draw_running_applications
31 halyavin 456
 
2532 mario79 457
	mcall	18,7	; check if active window changed
870 barsuk 458
	cmp	eax, [last_active_window]
459
	jz	@f
460
; need_window_tab:
461
; in: ebx->process info
462
; out: ZF set <=> do not draw
2532 mario79 463
	mov	ebx,[last_active_window]
870 barsuk 464
	mov	[prev_active_window], ebx
465
	mov	[last_active_window], eax
466
 
467
	mov	ecx, eax
2532 mario79 468
	mcall	9,process_info_buffer
870 barsuk 469
 
470
	call	need_window_tab
471
	jnz	.need_repaint
472
 
2532 mario79 473
	mcall	9,process_info_buffer,[prev_active_window]
870 barsuk 474
	call	need_window_tab
475
	jz	@f
2532 mario79 476
;--------------------------------------
477
align 4
870 barsuk 478
.need_repaint:
479
	mov	dword [active_window_changed], 1
2532 mario79 480
;--------------------------------------
481
align 4
870 barsuk 482
@@:
2532 mario79 483
	mcall	23,20
484
	cmp	eax,1		; redraw ?
485
	jz	red
870 barsuk 486
 
2532 mario79 487
	cmp	eax,3		; button ?
488
	jz	button
31 halyavin 489
 
601 Rus 490
	call	handle_key
2532 mario79 491
	cmp	dword [active_window_changed], 0
492
	jnz	red_active
870 barsuk 493
 
601 Rus 494
	jmp	still
2532 mario79 495
;------------------------------------------------------------------------------
496
align 4
497
red_active:
498
red:
870 barsuk 499
	mov	dword [active_window_changed], 0
500
 
601 Rus 501
	mcall	14
502
	movzx	ecx,ax
503
	mov	edx,eax
504
	shr	edx,16
505
	cmp	[screen_size.height],ax
506
	jne	@f
2532 mario79 507
 
601 Rus 508
	rol	eax,16
509
	cmp	[screen_size.width],ax
510
	je	.lp1
511
	rol	eax,16
2532 mario79 512
@@:
513
	mov	[screen_size],eax
601 Rus 514
	sub	ecx,PANEL_HEIGHT
515
	mcall	67,0,,,PANEL_HEIGHT
2532 mario79 516
;--------------------------------------
517
align 4
518
.lp1:
519
	call	draw_window
520
	call	draw_info
521
	jmp	still
522
;------------------------------------------------------------------------------
523
align 4
524
button:
525
	mcall	17
526
	test	eax,0xfffffe00	; is it close button? (signal from @panel)
527
	jz	still		; if so - wait for another event, because @panel shouldn't be closed
51 mikedld 528
 
2532 mario79 529
	cmp	al, 0
530
	jnz	right_mouse
870 barsuk 531
 
2532 mario79 532
	cmp	ah,50
533
	jb	no_activate
534
	cmp	ah,70
535
	jg	no_activate
31 halyavin 536
 
2532 mario79 537
	movzx	ecx,byte ah
538
	sub	ecx,52
539
	shl	ecx,2
870 barsuk 540
 
2532 mario79 541
	mov	ecx,[app_list+ecx]
542
	mcall	18,3,
31 halyavin 543
 
2532 mario79 544
;	mcall	55,eax,,,activatemusic
545
	jmp	still
546
;------------------------------------------------------------------------------
547
align 4
548
right_mouse:
549
	cmp	ah,50
550
	jb	still
31 halyavin 551
 
2532 mario79 552
	cmp	ah,70
553
	jg	still
870 barsuk 554
 
2532 mario79 555
	movzx	ecx,byte ah
556
	sub	ecx,52
870 barsuk 557
 
2532 mario79 558
	cmp	ecx, [app_tab_count]
559
	jge	still
870 barsuk 560
 
2532 mario79 561
	shl	ecx,2
562
	mcall	37,0
563
	mov	ebx, eax
564
	shr	eax, 16
565
	mov	[x_coord], ax
566
	and	ebx, 0xFFFF
567
	mov	[y_coord], bx
870 barsuk 568
 
2532 mario79 569
	mov	ecx,[app_list+ecx]	; ecx->selected app.slot
570
	mov	[n_slot], ecx
571
	mcall	9,procinfo_for_detect
870 barsuk 572
 
2532 mario79 573
	mcall	51,1,context_menu_start,ctx_menu_stack
870 barsuk 574
 
575
	mov	[ctx_menu_PID], eax
2532 mario79 576
	jmp	still
577
;------------------------------------------------------------------------------
578
align 4
579
no_activate:
580
	cmp	ah,101 	  ; minimize to left
581
	je	left_button
870 barsuk 582
 
2532 mario79 583
	cmp	ah,102 	  ; minimize to right
584
	je	right_button
870 barsuk 585
 
2532 mario79 586
	cmp	ah, 103
587
	je	clean_desktop		    ; minimize all windows
870 barsuk 588
 
2532 mario79 589
	cmp	ah, 104
590
	je	restore_desktop	    ; restore minimized windows
31 halyavin 591
 
2532 mario79 592
	cmp	ah, 105
593
	je	swap_minimized_desktop     ; minimize normal windows, and restore minimized windows
31 halyavin 594
 
2532 mario79 595
	cmp	ah,byte 1	  ; start/terminate menu
596
	jnz	noselect
31 halyavin 597
 
2532 mario79 598
	call	menu_handler
31 halyavin 599
 
2532 mario79 600
	jmp	still
601
;--------------------------------------
602
align 4
603
noselect:
604
	mov	ebx, exec_fileinfo
605
	cmp	ah,byte 2	       ; start calendar
606
	jnz	noid15  ;noclock
633 diamond 607
 
601 Rus 608
	mov	dword [ebx+21], calendar_name
2532 mario79 609
	mcall	70
610
	jmp	still
611
;--------------------------------------
612
align 4
613
noid15:
614
	cmp	ah,16
615
	jne	noid16
31 halyavin 616
 
601 Rus 617
	mov	ebx, setup_exec
618
	mov	dword [ebx+8], chlang
2532 mario79 619
	mcall	70
620
	jmp	still
621
;--------------------------------------
622
align 4
623
noid16:
624
;	cmp	ah,17
625
;	jne	noid17
304 diamond 626
;
2532 mario79 627
;	mov	ebx, setup_exec
628
;	mov	dword [ebx+8], syslang
629
;	mcall	70
630
;	jmp	still
631
;--------------------------------------
632
;align 4
304 diamond 633
;  noid17:
2532 mario79 634
	cmp	ah,18
635
	jne	noid18
636
 
601 Rus 637
	mov	dword [ebx+21], sysmeter_name
2532 mario79 638
	mcall	70
639
	jmp	still
640
;--------------------------------------
641
align 4
642
noid18:
643
	cmp	ah,19
644
	jne	noid19
31 halyavin 645
 
2532 mario79 646
	mcall	18,8,2
647
	mcall	15,3
648
	jmp	red
649
;--------------------------------------
650
align 4
651
noid19:
652
	cmp	ah,20		   ; start system setup
653
	jnz	noid20
31 halyavin 654
 
601 Rus 655
	mov	ebx, setup_exec
656
	and	dword [ebx+8], 0
2532 mario79 657
	mcall	70
658
	jmp	still
659
;--------------------------------------
660
align 4
661
noid20:
662
	cmp	ah,21
663
	jnz	noid21
31 halyavin 664
 
2532 mario79 665
	cmp	[page_list], 99
666
	jnc	still
667
	inc	[page_list]
668
	jmp	red
669
;--------------------------------------
670
align 4
671
noid21:
672
	cmp	ah,22
673
	jnz	still
31 halyavin 674
 
2532 mario79 675
	cmp	[page_list],0
676
	je	still
31 halyavin 677
 
2532 mario79 678
	dec	[page_list]
679
	jmp	red
680
;------------------------------------------------------------------------------
681
align 4
633 diamond 682
restore_desktop:
2532 mario79 683
	mcall	9,process_info_buffer,-1
684
	mov	[max_slot], eax
685
	mov	ecx, 2
686
	mov	edx, 2
687
;--------------------------------------
688
align 4
633 diamond 689
@@:
2532 mario79 690
	mcall	18, 22
691
	inc	edx
692
	cmp	edx, [max_slot]
693
	jbe	@b
694
	jmp	still
695
;------------------------------------------------------------------------------
696
align 4
633 diamond 697
swap_minimized_desktop:
2532 mario79 698
	xor	esi, esi
699
	inc	esi
700
	jmp	min_swap_desktop
701
;------------------------------------------------------------------------------
702
align 4
633 diamond 703
clean_desktop:
2532 mario79 704
	xor	esi,esi
705
;--------------------------------------
706
align 4
707
min_swap_desktop:		   ; input esi 0 - min, <>0 swap
708
	mov	ecx, 2		   ; Начальный номер слота процесса
709
	mov	ebx, process_info_buffer
710
;--------------------------------------
711
align 4
633 diamond 712
.loop1:
2532 mario79 713
	cmp	ecx, [this_slot]
714
	je	.loop1xx
633 diamond 715
 
2532 mario79 716
	mcall	9
717
	mov	[max_slot], eax
718
	mov	dx, word [process_info_buffer+50]
719
	cmp	dx, 9		    ; Проверка свободен ли данный слот
720
	jz	.loop1xx
633 diamond 721
 
2532 mario79 722
	mov	edx, dword [ebx+10]
723
	cmp	dl, '@'
724
	je	.loop1xx
31 halyavin 725
 
2532 mario79 726
	cmp	dword [ebx+10], 'ICON'
727
	jnz	@f
31 halyavin 728
 
2532 mario79 729
	cmp	[ebx+42], dword 51
730
	jnz	@f
31 halyavin 731
 
2532 mario79 732
	cmp	[ebx+46], dword 51
733
	jz	.loop1xx
734
;--------------------------------------
735
align 4
736
@@:
737
	cmp	[ebx+10], dword '    '
738
	jz	.loop1xx
31 halyavin 739
 
2532 mario79 740
	pushad
741
	mov	  edx, ecx
742
	xor	  ecx, ecx
743
	or     esi, esi
744
	jz     @f
31 halyavin 745
 
2532 mario79 746
	movzx  eax, byte [process_info_buffer+70]
747
	and	  eax, 2	      ; mask minimize
748
	jz     @f
31 halyavin 749
 
2532 mario79 750
	mov	  ecx, 2	      ; restore
751
;--------------------------------------
752
align 4
753
@@:
754
	mcall	18, 22
755
	popad
756
;--------------------------------------
757
align 4
758
.loop1xx:
759
	inc	ecx
760
	cmp	ecx, [max_slot]
761
	jbe	.loop1
762
	jmp	still
763
;------------------------------------------------------------------------------
764
align 4
765
draw_running_applications:
766
	pusha
31 halyavin 767
 
2532 mario79 768
	cmp	[icons],1
769
	jne	dr_ret
31 halyavin 770
 
2532 mario79 771
	call	calculate_applications
51 mikedld 772
 
2532 mario79 773
	cmp	edi,[running_applications]
774
	jne	noret
775
	popa
776
	ret
777
;--------------------------------------
778
align 4
779
noret:
780
	call	draw_window
781
	mov	[running_applications],edi
782
	call	redraw_window_tabs
783
;--------------------------------------
784
align 4
785
dr_ret:
786
	popa
787
	ret
788
;------------------------------------------------------------------------------
789
align 4
443 diamond 790
need_window_tab:
791
; in: ebx->process info
792
; out: ZF set <=> do not draw
601 Rus 793
	cmp	byte [ebx+10], '@'
794
	jz	.nodraw
443 diamond 795
; do not draw undefined (zero-sized) windows
601 Rus 796
	cmp	dword [ebx+42], 0
797
	jnz	@f
798
	cmp	dword [ebx+46], 0
799
	jz	.nodraw
2532 mario79 800
;--------------------------------------
801
align 4
443 diamond 802
@@:
1659 Nasarus 803
; do not draw OpenDialog windows
2532 mario79 804
	push	edi
805
	mov	edi, dword [ebx+10]
806
	or	edi, 0x20202020
807
	cmp	edi, 'open'
1659 Nasarus 808
	jne	@f
2532 mario79 809
 
810
	mov	edi, dword [ebx+14]
811
	or	edi, 0x20202020
812
	cmp	dword [ebx+14], 'dial'
1659 Nasarus 813
	jne	@f
2532 mario79 814
 
815
	pop	edi
1659 Nasarus 816
	jmp	.nodraw
2532 mario79 817
;--------------------------------------
818
align 4
1659 Nasarus 819
@@:
2532 mario79 820
	pop	edi
601 Rus 821
	cmp	dword [ebx+10], 'ICON'
822
	jnz	@f
2532 mario79 823
 
601 Rus 824
	cmp	[ebx+42], dword 51
825
	jnz	@f
2532 mario79 826
 
601 Rus 827
	cmp	[ebx+46], dword 51
828
	jz	.nodraw
2532 mario79 829
;--------------------------------------
830
align 4
443 diamond 831
@@:
601 Rus 832
	cmp	[ebx+10], dword '    '
2532 mario79 833
;--------------------------------------
834
align 4
443 diamond 835
.nodraw:
601 Rus 836
	ret
2532 mario79 837
;------------------------------------------------------------------------------
838
align 4
443 diamond 839
redraw_window_tabs:
601 Rus 840
	xor	edi, edi
841
	mov	[contrast], 0
870 barsuk 842
 
2532 mario79 843
	push	ebp
844
	mcall	18,7
845
	mov	ebp,eax
846
;--------------------------------------
847
align 4
443 diamond 848
.loop:
2532 mario79 849
	mov	ecx,[app_list+edi*4]
850
	cmp	ecx,-1
601 Rus 851
	jz	.done
31 halyavin 852
 
601 Rus 853
	push	ecx
2532 mario79 854
	mcall	9,procinfo_window_tabs	;0x8000	; WTF???!!!
31 halyavin 855
 
601 Rus 856
	imul	ebx, edi, 6*10*10000h
633 diamond 857
	add	ebx, 12*10*10000h + 7*10000h + 54
870 barsuk 858
 
2532 mario79 859
	mcall	13,,<3,14>,0x383838
860
 
601 Rus 861
	sub	ebx, 10000h + 53
2532 mario79 862
	mcall	,,<4,12>
863
 
601 Rus 864
	sub	ebx, 10000h
2532 mario79 865
	mcall	,,<5,10>
866
 
601 Rus 867
	add	ebx, 56*10000h
2532 mario79 868
	mcall	,,<4,12>
869
 
601 Rus 870
	add	ebx, 10000h
2532 mario79 871
	mcall	,,<5,10>
31 halyavin 872
 
870 barsuk 873
	mov	edx, [wcolor]	; barsuk
1421 diamond 874
	pop	ecx
875
	cmp	ebp, ecx	; ecx=active slot number
870 barsuk 876
	jnz	@f
2532 mario79 877
 
870 barsuk 878
	mov	edx, [system_colours.work_button]
2532 mario79 879
;--------------------------------------
880
align 4
443 diamond 881
@@:
1421 diamond 882
	mov	esi, [current_alt_tab_app]
883
	cmp	esi, -1
884
	jz	@f
2532 mario79 885
 
1421 diamond 886
	cmp	ecx, [alt_tab_list+esi*8]
887
	jnz	@f
2532 mario79 888
 
1421 diamond 889
	mov	edx, 0xFF8000
2532 mario79 890
;--------------------------------------
891
align 4
1421 diamond 892
@@:
601 Rus 893
	sub	ebx, 55*10000h - 53
2532 mario79 894
	mcall	,,<4,12>
895
 
601 Rus 896
	sub	ebx, 10000h + 53
2532 mario79 897
	mcall	,,<5,10>
898
 
601 Rus 899
	add	ebx, 55*10000h
2532 mario79 900
	mcall
31 halyavin 901
 
601 Rus 902
	sub	ebx, 51*10000h - 6
2532 mario79 903
	mov	edx, procinfo_window_tabs+10	;0x8000+10		; WTF???!!!
904
	mcall	4,,[system_colours.work_button_text],,11
905
;--------------------------------------
906
align 4
870 barsuk 907
.nodraw:
601 Rus 908
	inc	edi
909
	cmp	edi, [max_applications]
910
	jb	.loop
2532 mario79 911
;--------------------------------------
912
align 4
443 diamond 913
.done:
870 barsuk 914
	pop	ebp
601 Rus 915
	ret
2532 mario79 916
;------------------------------------------------------------------------------
917
align 4
31 halyavin 918
calculate_applications:
2532 mario79 919
	mov	eax,[max_applications]
920
	mul	[page_list]
921
	test	eax,eax
922
	je	@f
31 halyavin 923
 
2532 mario79 924
	inc	eax
925
;--------------------------------------
926
align 4
927
@@:
928
	mov	[draw_start_position],eax
51 mikedld 929
 
2532 mario79 930
	mov	edi,app_list
931
	mov	ecx,20
932
	mov	eax,-1
933
	cld
934
	rep	stosd
31 halyavin 935
 
2532 mario79 936
	mov	edi,0
937
	mov	ecx,2
938
;--------------------------------------
939
align 4
940
cnewpr:
941
	mcall	9,procinfo_window_tabs	;0x8000	; WTF???!!!
31 halyavin 942
 
601 Rus 943
	call	need_window_tab
944
	jz	cnorpl
2532 mario79 945
 
601 Rus 946
	sub	[draw_start_position], 1
947
	jg	cnorpl
31 halyavin 948
 
2532 mario79 949
	mov	[app_list+edi*4],ecx
950
	inc	edi
951
;--------------------------------------
952
align 4
953
cnorpl:
954
	inc	ecx
955
	cmp	eax,ecx
956
	jge	cnewpr
31 halyavin 957
 
2532 mario79 958
	mov	[app_tab_count], edi
959
	ret
960
;------------------------------------------------------------------------------
961
align 4
31 halyavin 962
draw_application_buttons:
2532 mario79 963
	pusha
31 halyavin 964
 
2532 mario79 965
	cmp	[icons],1
966
	jne	da_ret
31 halyavin 967
 
2532 mario79 968
	mcall	14
969
	shr	eax,16
31 halyavin 970
 
2532 mario79 971
	sub	eax, 281
972
	jnc	._01
973
	xor	eax, eax
974
;--------------------------------------
975
align 4
633 diamond 976
._01:
2532 mario79 977
	mov	bl, 60
978
	div	bl
979
	xor	ah, ah		       ; eax - количество умещаюшихся пиктов
980
	mov	[max_applications], eax
981
	mov	edi,1
982
;--------------------------------------
983
align 4
984
nb:
985
	mov	ebx,edi
986
	shl	ebx,16
987
	imul	ebx,6*10	     ;13
988
	add	ebx,75*65536+10*6-1 ; << Alver 25.08.2007 >> 15*65536+10*6-1  ;13
989
	mov	edx,edi
990
	add	edx,51
991
	cmp	[buttons],1
992
	je	bufr
633 diamond 993
 
2532 mario79 994
	or	edx,0x60000000
995
;--------------------------------------
996
align 4
997
bufr:
998
	mov	esi,[wcolor]
999
	sub	ebx,11 shl 16
1000
	mcall	8,,<1,17>
31 halyavin 1001
 
2532 mario79 1002
	inc	edi
1003
	cmp	edi,[max_applications]
1004
	jbe	nb
1005
;--------------------------------------
1006
align 4
1007
da_ret:
1008
	popa
1009
	ret
1010
;------------------------------------------------------------------------------
1011
align 4
31 halyavin 1012
menu_handler:
601 Rus 1013
	mov	ebx, exec_fileinfo
2532 mario79 1014
	mov	[ebx+21],dword menu_name
1015
	mcall	70
601 Rus 1016
	ret
2532 mario79 1017
;------------------------------------------------------------------------------
1018
align 4
31 halyavin 1019
draw_small_right:
2532 mario79 1020
	pusha
1021
	mcall	12,1
31 halyavin 1022
 
2532 mario79 1023
	xor	eax,eax
1024
	mov	edx,[wcolor]
1025
	mov	esi,edx
1026
	mov	edi,edx
1027
	or	edx, 0x01000000
1028
	mcall
31 halyavin 1029
 
2532 mario79 1030
	xor	ecx,ecx
1031
	mov	cx,[b_size_y]
1032
	mcall	8,<0,9>,,1,[wcolor]
31 halyavin 1033
 
2532 mario79 1034
	mov	ebx,2*65536+16
1035
	cmp	[graph_text],1
1036
	jne	nos3
31 halyavin 1037
 
2532 mario79 1038
	mov	ebx,2*65536+7
1039
;--------------------------------------
1040
align 4
1041
nos3:
1042
	mov	ecx,[wcolor]
1043
	add	ecx,0x303030
1044
	mcall	4,,,hidetext,1
31 halyavin 1045
 
2532 mario79 1046
	mcall	12,2
1047
	popa
1048
	ret
1049
;------------------------------------------------------------------------------
1050
align 4
31 halyavin 1051
draw_small_left:
2532 mario79 1052
	pusha
1053
	mcall	12,1
31 halyavin 1054
 
2532 mario79 1055
	xor	eax,eax
1056
	mov	edx,[wcolor]
1057
	mov	esi,edx
1058
	mov	edi,edx
1059
	or	edx, 0x01000000
1060
	mcall
31 halyavin 1061
 
2532 mario79 1062
	cmp	[graph_text],1
1063
	je	nos4
31 halyavin 1064
 
2532 mario79 1065
	mcall	8,<0,9>,<0,12>,2,[wcolor]
31 halyavin 1066
 
2532 mario79 1067
	mov	ecx,[wcolor]
1068
	add	ecx,0x303030
1069
	mcall	4,<2,4>,,hidetext+2,1
1070
;--------------------------------------
1071
align 4
1072
nos4:
1073
	mov	ecx,13*65536+25
1074
	cmp	[graph_text],1
1075
	jne	nos6
31 halyavin 1076
 
2532 mario79 1077
	xor	ecx,ecx
1078
	mov	cx,word [b_size_y]
1079
;--------------------------------------
1080
align 4
1081
nos6:
1082
	mcall	8,<0,9>,,1,[wcolor]
31 halyavin 1083
 
2532 mario79 1084
	mov	ebx,3*65536+22
1085
	cmp	[graph_text],1
1086
	jne	nos7
31 halyavin 1087
 
2532 mario79 1088
	mov	ebx,3*65536+7
1089
;--------------------------------------
1090
align 4
1091
nos7:
1092
	mov	ecx,[wcolor]
1093
	add	ecx,0x303030
1094
	mcall	4,,,hidetext+1,1
31 halyavin 1095
 
2532 mario79 1096
	mcall	12,2
1097
	popa
1098
	ret
1099
;------------------------------------------------------------------------------
1100
align 4
31 halyavin 1101
right_button:
2532 mario79 1102
	mov	[small_draw],dword draw_small_right
31 halyavin 1103
 
2532 mario79 1104
	mcall	14
31 halyavin 1105
 
2532 mario79 1106
	shr	eax, 16
1107
	mov	ebx, eax
1108
	mov	ecx, -1
1109
	mov	edx, 9
1110
	sub	ebx, edx
1111
	mov	esi, -1
1112
	mcall	67
31 halyavin 1113
 
2532 mario79 1114
	call	draw_small_right
1115
	jmp	small_wait
1116
;------------------------------------------------------------------------------
1117
align 4
31 halyavin 1118
left_button:
2532 mario79 1119
	mov	[small_draw],dword draw_small_left
31 halyavin 1120
 
2532 mario79 1121
	xor	ebx,ebx
1122
	mcall	67,,-1,9,-1
31 halyavin 1123
 
2532 mario79 1124
	call	draw_small_left
1125
;--------------------------------------
1126
align 4
1127
small_wait:
1128
	mcall	10
1129
	cmp	eax,1
1130
	jne	no_win
31 halyavin 1131
 
2532 mario79 1132
	call	[small_draw]
1133
	jmp	small_wait
1134
;--------------------------------------
1135
align 4
1136
no_win:
1137
	cmp	eax,2
1138
	jne	no_key
31 halyavin 1139
 
2532 mario79 1140
	call	handle_key
1141
	jmp	small_wait
1142
;--------------------------------------
1143
align 4
93 diamond 1144
no_key:
2532 mario79 1145
	mcall	17
1146
	cmp	ah,1
1147
	jne	no_full
31 halyavin 1148
 
2532 mario79 1149
	mcall	14	; get screen max x & max y
31 halyavin 1150
 
2532 mario79 1151
	mov	edx, eax
1152
	shr	edx, 16
1153
	xor	ebx, ebx
1154
	mcall	67,,-1,,-1 ; x0 y0 xs ys
31 halyavin 1155
 
2532 mario79 1156
	jmp	still
1157
;--------------------------------------
1158
align 4
1159
no_full:
1160
	call	menu_handler
1161
	jmp	small_wait
1162
;------------------------------------------------------------------------------
1163
align 4
31 halyavin 1164
set_variables:
2532 mario79 1165
	pusha
1166
	mov	[b_size_y],dword 38
1167
	cmp	[graph_text],1
1168
	jne	noy2
31 halyavin 1169
 
2532 mario79 1170
	mov	[b_size_y],dword 18
1171
;--------------------------------------
1172
align 4
1173
noy2:
1174
	mov	[button_frames],0x0
1175
	cmp	[buttons],0
1176
	jne	no_frames
31 halyavin 1177
 
2532 mario79 1178
	mov	[button_frames],0x40000000
1179
;--------------------------------------
1180
align 4
1181
no_frames:
1182
	mcall	48,1,1	; 3d button look
31 halyavin 1183
 
2532 mario79 1184
	mov	eax,0x40404040   ; dividers for processes
1185
	mov	edi,pros
1186
	mov	ecx,10
1187
	cld
1188
	rep	stosd
31 halyavin 1189
 
2532 mario79 1190
	popa
1191
	ret
1192
;------------------------------------------------------------------------------
1193
align 4
31 halyavin 1194
; eax = number (1 or 2)
1195
; ebx = language id
1196
draw_flag:
2532 mario79 1197
	pusha
31 halyavin 1198
; eax = 2 BIG
1199
; eax = 1 small
2532 mario79 1200
	mov	edx,ebx
31 halyavin 1201
 
2532 mario79 1202
	mov	ebx,[maxx]
1203
	and	eax,1
1204
	imul	eax,17  ;17
1205
	sub	ebx,eax
1206
	sub	ebx,76 ;79 ;28
31 halyavin 1207
 
2532 mario79 1208
	pushad
1209
;	dec	ebx
1210
	sub	ebx,2
1211
	shl	ebx, 16
1212
	add	ebx, 15 ;25
1213
	xor	edx,edx
1214
	mcall	13,,<4,13>
31 halyavin 1215
 
2532 mario79 1216
	add	ebx,1 shl 16
1217
	sub	ebx,2
1218
	mov	ecx, 5 shl 16+11
1219
	cmp	[type_lang],1
1220
	je	label_1
1221
 
1222
	mov	edx,0xff ;[wcolor]
1223
	jmp	label_2
1224
;--------------------------------------
1225
align 4
31 halyavin 1226
label_1:
2532 mario79 1227
	mov	edx,0x7700
1228
;--------------------------------------
1229
align 4
31 halyavin 1230
label_2:
2532 mario79 1231
	mcall
1232
	popad
31 halyavin 1233
 
2532 mario79 1234
	shl	ebx,16
1235
	add	ebx,7	;24
31 halyavin 1236
 
2532 mario79 1237
	mov	ecx,[bte] ; color
31 halyavin 1238
 
2532 mario79 1239
if caps_lock_check
1240
; make flag_text 'enfigerufretua' or 'ENFIGERUFRETUA' depending on CapsLock state.
1241
	call	flag_text_setup
1242
end if
1243
	dec	edx
1244
	shl	edx,1
1245
	add	edx,flag_text
1246
	mcall	4,,,,2
31 halyavin 1247
 
2532 mario79 1248
	mov	ebx,[maxx]
1249
	sub	ebx,48
1250
	shl	ebx,16
1251
	mov	bx,34
1252
	xor	edx,edx
1253
	mcall	13,,<3,14>
31 halyavin 1254
 
2532 mario79 1255
	add	ebx,1 shl 16
1256
	sub	ebx,2
1257
	mov	ecx,4 shl 16+12
1258
	mov	edx,time_bgr_color
1259
    mcall
1260
 
31 halyavin 1261
    popa
1262
    ret
2532 mario79 1263
;------------------------------------------------------------------------------
1264
align 4
1920 Albom 1265
if caps_lock_check
2532 mario79 1266
flag_text_setup:
1267
	pusha
1268
	mcall	66,3
1269
	mov	edi, flag_text
1270
	mov	esi, flag_text_caps_off
1271
	test	eax, 0x40
1272
	jz	@f
1920 Albom 1273
 
2532 mario79 1274
	add	esi, 14
1275
;--------------------------------------
1276
align 4
1277
@@:
1278
	mov	ecx, 14
1279
	rep	movsb
1920 Albom 1280
 
2532 mario79 1281
	popa
1282
	ret
1283
 
1284
flag_text_caps_off db 'enfigerufretua'
1285
db 'ENFIGERUFRETUA'
1920 Albom 1286
end if
2532 mario79 1287
;------------------------------------------------------------------------------
31 halyavin 1288
; ***************************************************
1289
; ********* WINDOW DEFINITIONS AND DRAW *************
1290
; ***************************************************
2532 mario79 1291
align 4
31 halyavin 1292
draw_window:
2532 mario79 1293
	pusha
1294
	mov	[running_applications],-1
1295
	mov	[checks],-1
1296
	mcall	12,1
31 halyavin 1297
 
2532 mario79 1298
	mcall	48,3,system_colours,10*4
31 halyavin 1299
 
2532 mario79 1300
	mov	eax, [system_colours+4*6]
1301
	sub	eax, 0x101010
1302
	mov	[wcolor], eax
31 halyavin 1303
 
2532 mario79 1304
	mcall	14	; get screen max x & max y
31 halyavin 1305
 
2532 mario79 1306
	cmp	[width],0
1307
	je	no_def_width
31 halyavin 1308
 
2532 mario79 1309
	and	eax,0xffff
1310
	mov	ebx,[width]
1311
	shl	ebx,16
1312
	add	eax,ebx
1313
;--------------------------------------
1314
align 4
1315
no_def_width:
1316
	mov	ebx,eax
1317
	mov	[screenxy],ebx
1318
	shr	ebx,16
1319
	sub	ax,38
1320
	shl	eax,16
1321
	mov	ecx,eax
1322
	add	ecx,0*65536+38
1323
	cmp	[graph_text],1
1324
	jne	no_text_1
1325
	mov	cx,PANEL_HEIGHT
1326
	add	ecx,20*65536
1327
;--------------------------------------
1328
align 4
1329
no_text_1:
1330
	xor	eax,eax 		    ; DEFINE AND DRAW WINDOW
1331
	mov 	edx, [wcolor]
1332
	or	edx, 0x01000000 ; do not draw the window
1333
	mov	esi, [wcolor]
1334
	or	esi, 0x01000000 ; unmovable window
1335
	mov 	edi, [wcolor]
1336
	mov	[panel_x_pos], ebx
1337
	mov	[panel_y_pos], ecx	 ; Пока что так.
1338
	mcall
31 halyavin 1339
 
2532 mario79 1340
	movzx	ebx,word [screenxy+2]
1341
	mov	ecx,0*65536+0
1342
	mov	edx,[wcolor]
1343
	add	edx,0x161616
1344
;--------------------------------------
1345
align 4
1346
newline_:			; debug.inc has macros with the same name
1347
	sub	edx,0x040404
1348
	mov	eax,38
1349
	cmp	[soften_up],1
1350
	jne	no_su
31 halyavin 1351
 
2532 mario79 1352
	and	edx,0x00FFFFFF
1353
	mcall
1354
;--------------------------------------
1355
align 4
1356
no_su:
1357
	pusha
1358
	cmp	[soften_down],1
1359
	jne	no_sd
31 halyavin 1360
 
2532 mario79 1361
	sub	edx,0x141414
1362
	mov	edi,[b_size_y]
1363
	shl	edi,16
1364
	add	edi,[b_size_y]
1365
	add	ecx,edi
1366
	sub	ecx,3*65536+3
1367
	and	edx,0x00FFFFFF
1368
	mcall
1369
;--------------------------------------
1370
align 4
1371
no_sd:
1372
	popa
601 Rus 1373
 
2532 mario79 1374
	add	ecx,1*65536+1
1375
	cmp	cx,5
1376
	jb	newline_
601 Rus 1377
 
2532 mario79 1378
	cmp	[soften_middle],1
1379
	jne	no_sm
31 halyavin 1380
 
2532 mario79 1381
	movzx	ebx,word [screenxy+2]
1382
	mov	ecx,5*65536+5
1383
	mov	esi,stripe
1384
	mov	edx,[wcolor]
1385
;--------------------------------------
1386
align 4
1387
newline3:
1388
	add	edx,[esi]
1389
	add	esi,4
31 halyavin 1390
 
2532 mario79 1391
	and	edx,0x00FFFFFF
1392
	mcall	38
1393
	add	ecx,1*65536+1
1394
	cmp	cx,15
1395
	jb	newline3
1396
;--------------------------------------
1397
align 4
1398
no_sm:
1399
	cmp	[minimize_left],1
1400
	jne	no_mleft
31 halyavin 1401
 
2532 mario79 1402
	mov	ecx,1 *65536
1403
	add	ecx,[b_size_y]
1404
	dec	ecx
1405
	mov	edx,101
1406
	add	edx,[button_frames]
1407
	mcall	8,<0,9>,,,[wcolor]	; ABS LEFT
31 halyavin 1408
 
2532 mario79 1409
	mov	ebx,2*65536+17
1410
	cmp	[graph_text],1
1411
	jne	no_y1
31 halyavin 1412
 
2532 mario79 1413
	mov	bx,7
1414
;--------------------------------------
1415
align 4
1416
no_y1:
1417
	mov	ecx,[wcolor]
1418
	add	ecx,0x303030
1419
	mcall	4,,,hidetext,1	; HIDE TEXT
1420
;--------------------------------------
1421
align 4
1422
no_mleft:
1423
	movzx	eax,word [screenxy+2]
1424
	mov	[maxx],eax
1425
	cmp	[minimize_right],1
1426
	jne	no_mright
1427
	mov	eax,[maxx]
1428
	sub	eax,77
1429
	shl	eax,16
1430
	mov	ebx,eax
1431
	add	ebx,67
31 halyavin 1432
 
2532 mario79 1433
	mov	ecx,1 *65536
1434
	add	ecx,[b_size_y]
1435
	dec	ecx
1436
	add	ebx,68*65536
1437
	mov	bx,9
1438
	mov	edx,102
1439
	add	edx,[button_frames]
1440
	mcall	8,,,,[wcolor]	; ABS RIGHT
31 halyavin 1441
 
2532 mario79 1442
	mov	edx,hidetext+1
1443
	mov	eax,4
1444
	mov	ebx,[maxx]
1445
	sub	ebx,6
1446
	shl	ebx,16
1447
	mov	bx,17
1448
	cmp	[graph_text],1
1449
	jne	no_y2
31 halyavin 1450
 
2532 mario79 1451
	mov	bx,7
1452
;--------------------------------------
1453
align 4
1454
no_y2:
1455
	mov	ecx,[wcolor]
1456
	add	ecx,0x303030
1457
	mov	esi,1
1458
	mcall
1459
;--------------------------------------
1460
align 4
1461
no_mright:
1462
	call	draw_menuet_icon
1463
;	call	draw_program_icons
1464
	mov	[ptime],0
1465
	call	draw_info
1466
	call	draw_application_buttons
31 halyavin 1467
 
2532 mario79 1468
	mcall	12,2
1469
	popa
1470
	ret
1471
;------------------------------------------------------------------------------
1472
align 4
1473
dr_button_clean:
1474
	mcall	8,,<3,13>
1475
	ret
1476
;------------------------------------------------------------------------------
1477
align 4
1478
draw_menuet_icon:
1479
	pusha
1480
; Inserted code for drawing buttons 103, 104, 105 (Clean, Restore, Exchange windows)
1481
	mov	esi, dword [system_colours+24]    ; drawing buttons
1482
	and	esi, 0x00ffffff
1483
	mov	edx, 103
1484
	mov	ebx, 67*65536+13
1485
	call	dr_button_clean
1486
 
1487
	inc	edx
1488
	mov	ebx, 86*65536+13
1489
	call	dr_button_clean
1490
 
1491
	inc	edx
1492
	mov	ebx, 105*65536+13
1493
	call	dr_button_clean
1494
 
1495
	mov	ecx, dword [system_colours+28]
1496
	and	ecx, 0x00ffffff
1497
	mcall	4,<71,6>,,page_clean_but,1
31 halyavin 1498
 
2532 mario79 1499
	inc	edx
1500
	mcall	,<90,6>
31 halyavin 1501
 
2532 mario79 1502
	inc	edx
1503
	mcall	,<109,6>
31 halyavin 1504
 
2532 mario79 1505
	cmp	[menu_enable],1
1506
	jne	no_menu
31 halyavin 1507
 
2532 mario79 1508
	mov	ebx, 10*65536 + 47
1509
	cmp	[minimize_left], 0
1510
	jne	@f
31 halyavin 1511
 
2532 mario79 1512
	sub	ebx, 10*65536
1513
;--------------------------------------
1514
align 4
1515
@@:
1516
	mov	ecx, 1*65536
1517
	add	ecx, [b_size_y]
1518
	dec	ecx
1519
	mov	edx, 0x20d1ff01
1520
	add	edx, [button_frames]
1521
	mcall	8,,,,[wcolor]	; M BUTTON
31 halyavin 1522
 
2532 mario79 1523
;	cmp	[graph_text], 1
1524
;	jne	no_mtext
31 halyavin 1525
 
2532 mario79 1526
	push	ebx
1527
	mcall	13,<12,44>,<1,17>,0x383838
31 halyavin 1528
 
2532 mario79 1529
	mcall	,<56,1>,<2,15>
31 halyavin 1530
 
2532 mario79 1531
	mcall	,<57,1>,<4,11>
31 halyavin 1532
 
2532 mario79 1533
	mcall	,<58,1>,<6,7>
31 halyavin 1534
 
2532 mario79 1535
	mcall	,<13,43>,<2,15>,0x7700
31 halyavin 1536
 
2532 mario79 1537
	mcall	,<56,1>,<4,11>
633 diamond 1538
 
2532 mario79 1539
	mcall	,<57,1>,<6,7>
1540
	pop	ebx
31 halyavin 1541
 
2532 mario79 1542
	mov	bx,  7
1543
	add	ebx, 8*65536
31 halyavin 1544
 
2532 mario79 1545
	mcall	4,,0x10ffffff,m_text,4
31 halyavin 1546
 
2532 mario79 1547
	popa
1548
	ret
1549
;--------------------------------------
1550
;align 4
1551
;no_mtext:
1552
;	mov	eax,[wcolor]
1553
;	mov	[m_icon+4],eax
1554
;; load & display menuet.bmp
1555
;	mcall	70,m_bmp_fileinfo
31 halyavin 1556
 
2532 mario79 1557
;	mov	eax,40
1558
;	mov	ebx,0
1559
;	mov	edi,image+53
1560
;--------------------------------------
1561
;align 4
1562
;new_m_pix:
1563
;	cmp	byte [edi], 10
1564
;	jb	nopix
31 halyavin 1565
 
2532 mario79 1566
;	cmp	byte [edi+1], 10
1567
;	jb	nopix
31 halyavin 1568
 
2532 mario79 1569
;	cmp	byte [edi+2], 10
1570
;	jb	nopix
31 halyavin 1571
 
2532 mario79 1572
;	pusha
1573
;	cmp	[minimize_left],0
1574
;	jne	no_m_s2
31 halyavin 1575
 
2532 mario79 1576
;	sub	ebx,10
1577
;--------------------------------------
1578
;align 4
1579
;no_m_s2:
1580
;	mov	edx,[edi+1]
1581
;	mov	ecx,eax
1582
;	add	ebx,12
1583
;	mcall	1	; point - WTF???!!!
31 halyavin 1584
 
2532 mario79 1585
;	popa
1586
;--------------------------------------
1587
;align 4
1588
;nopix:
1589
;	add	edi,3
1590
;	add	ebx,1
1591
;	cmp	ebx,40
1592
;	jnz	new_m_pix
31 halyavin 1593
 
2532 mario79 1594
;	mov	ebx,0
1595
;	dec	eax
1596
;	jnz	new_m_pix
1597
;--------------------------------------
1598
align 4
1599
no_menu:
1600
	popa
1601
	ret
1602
;------------------------------------------------------------------------------
1603
;align 4
1604
;draw_program_icons:
1605
;	pusha
31 halyavin 1606
 
2532 mario79 1607
;	cmp	[icons],0
1608
;	jne	dp_ret
31 halyavin 1609
 
2532 mario79 1610
;	mov	edi,1
1611
;	push	edi
1612
;--------------------------------------
1613
;align 4
1614
;new_icon_file:
1615
;	pusha
1616
;	mov	edx,[esp+32]
1617
;	add	edx,10
31 halyavin 1618
 
2532 mario79 1619
;	push	edx
1620
;	mov	ecx,1*65536
1621
;	add	ecx,[b_size_y]
1622
;	dec	ecx
1623
;	mov	eax,edi
1624
;	dec	eax
1625
;	imul	eax,40
1626
;	mov	ebx,eax
1627
;	add	ebx,[icons_position]
1628
;	shl	ebx,16
1629
;	mov	bx,39
1630
;	pop	edx
31 halyavin 1631
 
2532 mario79 1632
;	add	edx,[button_frames]
1633
;	or	edx, 0x20000000
1634
;	mcall	8,,,,[wcolor]
1635
;	popa
31 halyavin 1636
 
2532 mario79 1637
;	mov	ecx,[esp]
1638
;	add	ecx,48
1639
;	mov	[iconf+6],cl
31 halyavin 1640
 
2532 mario79 1641
;	mcall	70,iconf_fileinfo
31 halyavin 1642
 
2532 mario79 1643
;	mov	eax,0
1644
;	mov	ebx,32
1645
;	mov	edi,image+51+32*33*3
1646
;--------------------------------------
1647
;align 4
1648
;np2: 			    ; new pixel of file
1649
;	mov	edx,[edi]
1650
;	and	edx,0xffffff
31 halyavin 1651
 
2532 mario79 1652
;	cmp	eax,3		; Y draw limits
1653
;	jb	nopix2
31 halyavin 1654
 
2532 mario79 1655
;	cmp	eax,36
1656
;	jg	nopix2
31 halyavin 1657
 
2532 mario79 1658
;	cmp	ebx,38		; X draw limits
1659
;	jg	nopix2
31 halyavin 1660
 
2532 mario79 1661
;	cmp	ebx,2
1662
;	jb	nopix2
31 halyavin 1663
 
2532 mario79 1664
;	cmp	edx,0
1665
;	jz	nopix2
31 halyavin 1666
 
2532 mario79 1667
;	cmp	[graph_text],1
1668
;	jne	no_icon_text
31 halyavin 1669
 
2532 mario79 1670
;	pusha
1671
;	mov	ebx,[esp+32]
1672
;	dec	ebx
1673
;	imul	ebx,40
1674
;	add	ebx,8
1675
;	add	ebx,[icons_position]
1676
;	shl	ebx,16
1677
;	mov	bx,7
31 halyavin 1678
 
2532 mario79 1679
;	mov	edx,[esp+32]
1680
;	dec	edx
1681
;	imul	edx,4
1682
;	add	edx,mi_text
1683
;	mcall	4,,0xffffff,,4
1684
;	popa
1685
;	jmp  nopix2
1686
;--------------------------------------
1687
;align 4
1688
;no_icon_text:
1689
;	mov	esi,[esp]
1690
;	pusha
1691
 
1692
;	push	edx
1693
;	mov	ecx,eax
1694
;	add	ecx,2
1695
;	mov	eax,esi
1696
;	dec	eax
1697
;	imul	eax,40
1698
;	add	ebx,eax
1699
;	add	ebx,3
1700
;	add	ebx,[icons_position]
1701
;	pop	edx
31 halyavin 1702
 
2532 mario79 1703
;	mcall	1	; WTF???!!!
1704
;	popa
1705
;--------------------------------------
1706
;align 4
1707
;nopix2:
1708
;	sub	edi,3
1709
;	dec	ebx
1710
;	jnz	np2
31 halyavin 1711
 
2532 mario79 1712
;	mov	ebx,32
1713
;	add	eax,1
1714
;	cmp	eax,32
1715
;	jnz	np2
31 halyavin 1716
 
2532 mario79 1717
;	add	dword [esp],1
1718
;	mov	edi,[esp]
1719
;	cmp	dword [esp],4
1720
;	jbe	new_icon_file
31 halyavin 1721
 
2532 mario79 1722
;	add	esp,4
31 halyavin 1723
 
2532 mario79 1724
;	mov	ebx,40
1725
;	imul	ebx,3
1726
;	add	ebx,[icons_position]
1727
;	add	ebx,10
1728
;	shl	ebx,16
1729
;	mov	bx,23
1730
;	mcall	4,,[wcolor],gpl,3
1731
;--------------------------------------
1732
;align 4
1733
;dp_ret:
1734
;	popa
1735
;	ret
1736
;------------------------------------------------------------------------------
1737
align 4
1738
draw_info:    ; draw cpu usage, time, date
31 halyavin 1739
    pusha
2532 mario79 1740
	cmp	[setup_enable],1
1741
	jne	no_setup
31 halyavin 1742
 
2532 mario79 1743
	cmp	[minimize_right],0
1744
	jne	no_m_r
1745
	add	[maxx],10
1746
;--------------------------------------
1747
align 4
1748
no_m_r:
1749
	mov	eax,3
1750
	mcall
1751
	cmp	eax,[ptime]
1752
	jz	_ret
31 halyavin 1753
 
2532 mario79 1754
	mov	[ptime],eax
31 halyavin 1755
 
2532 mario79 1756
   	call	draw_cpu_usage
31 halyavin 1757
 
2532 mario79 1758
	mov	eax,[maxx]   ; blink sec
1759
	sub	eax,33
1760
	shl	eax,16
1761
	mov	ebx,eax
1762
	add	ebx,9
1763
	mcall	3
31 halyavin 1764
 
2532 mario79 1765
	cmp	[graph_text],1
1766
	jne	no_y4
31 halyavin 1767
 
2532 mario79 1768
	sub	bx,2
1769
;--------------------------------------
1770
align 4
1771
no_y4:
1772
	mov	ecx,eax
1773
	shr	ecx,16
1774
	and	ecx,1
1775
	mov	edx,[bte]
1776
	sub	edx,time_bgr_color;[wcolor]
1777
	imul	ecx,edx
1778
	add	ecx,time_bgr_color;[wcolor]
31 halyavin 1779
 
2532 mario79 1780
	mcall	4,,,sec,1
31 halyavin 1781
 
2532 mario79 1782
	mcall	26,2,9
31 halyavin 1783
 
2532 mario79 1784
	mov	edx,eax
1785
	mcall	3
31 halyavin 1786
 
2532 mario79 1787
	and	eax,0xffff
1788
	add	edx,eax
1789
	cmp	edx,[checks]
1790
	je	_ret
31 halyavin 1791
 
2532 mario79 1792
	mov	[checks],edx
31 halyavin 1793
 
2532 mario79 1794
	mov	ebx,[maxx]
1795
	sub	ebx,48 ;;94 ;;74
1796
	shl	ebx,16
1797
	add	ebx,33 ;;84 ;;64
31 halyavin 1798
 
2532 mario79 1799
	mov	ecx,3 *65536
1800
	add	ecx,[b_size_y]
1801
	sub	cx,5
1802
	mcall	8,,,0x40000002,[wcolor]	; time/date button
31 halyavin 1803
 
2532 mario79 1804
	and	edx,0xffff
1805
	add	edx,[button_frames]
1806
	mcall
31 halyavin 1807
 
2532 mario79 1808
	mov	ebx,[maxx]
1809
	sub	ebx,77 ;80
1810
	shl	ebx,16
1811
	add	ebx,14
31 halyavin 1812
 
2532 mario79 1813
	mcall	,,<4,12>,0x60000010,[wcolor]	;button 16
31 halyavin 1814
 
2532 mario79 1815
	sub	ebx,17 shl 16
1816
	inc	edx		    ;button 17
31 halyavin 1817
 
2532 mario79 1818
	add	ebx,33 shl 16
1819
	mov	bx,8
1820
	inc	edx		    ;button 18
1821
	mcall
31 halyavin 1822
 
2532 mario79 1823
	sub	ebx,30 shl 16
1824
	mov	bx,10
1825
	inc	edx		    ;button 19
1826
	mcall
31 halyavin 1827
 
2532 mario79 1828
	sub	ebx,14 shl 16
1829
	inc	edx		    ;button 20
1830
	mcall
31 halyavin 1831
 
2532 mario79 1832
	sub	ebx,12 shl 16
1833
	mov	bx,8
1834
	mov	ecx,6 shl 16+10
1835
	inc	edx	    ;button 21
1836
	mcall
31 halyavin 1837
 
2532 mario79 1838
	sub	ebx,24 shl 16
1839
	inc	edx	    ;button 22
1840
	mcall
31 halyavin 1841
 
2532 mario79 1842
	mcall	26,2,9
31 halyavin 1843
 
2532 mario79 1844
	mov	ebx,eax
31 halyavin 1845
 
2532 mario79 1846
	mov	eax,2
1847
	mov	[type_lang],al
1848
   	call	draw_flag
31 halyavin 1849
 
2532 mario79 1850
	mcall	18,8,1
31 halyavin 1851
 
2532 mario79 1852
	mov	[sound_flag],al
31 halyavin 1853
 
2532 mario79 1854
	mov	ebx,[maxx]
1855
	sub	ebx,92 ;109 ;112 ;28
1856
	shl	ebx,16
1857
	mov	bx,12
1858
	xor	edx,edx
1859
	mcall	13,,<4,13>
51 mikedld 1860
 
2532 mario79 1861
	add	ebx,1 shl 16
1862
	sub	bx,2
1863
	mcall	,,<5,11>,0xcc
1920 Albom 1864
 
2532 mario79 1865
	add	ebx,1 shl 16
1866
	mov	bx,5
1867
	mcall	,,<8,5>,0xdddd00
31 halyavin 1868
 
2532 mario79 1869
	add	ebx,5 shl 16
1870
	mov	bx,1
1871
	mcall	,,<7,7>
31 halyavin 1872
 
2532 mario79 1873
	add	ebx,1 shl 16
1874
	mcall	,,<6,9>
1920 Albom 1875
 
2532 mario79 1876
	add	ebx,1 shl 16
1877
	mcall	,,<5,11>
31 halyavin 1878
 
2532 mario79 1879
	cmp	[sound_flag],0
1880
	je	dalshe
31 halyavin 1881
 
2532 mario79 1882
	sub	ebx,8 shl 16
1883
	ror	ebx,16
1884
	mov	cx,bx
1885
	rol	ebx,16
1886
	mov	bx,cx
1887
	add	bx,8
1888
	mcall	38,,<5,15>,0xff0000
31 halyavin 1889
 
2532 mario79 1890
	add	ebx,1 shl 16
1891
	inc	bx
1892
	mcall
31 halyavin 1893
 
2532 mario79 1894
	rol	ecx,16
1895
	mcall
31 halyavin 1896
 
2532 mario79 1897
	sub	ebx,1 shl 16
1898
	dec	bx
1899
	mcall
1900
;--------------------------------------
1901
align 4
31 halyavin 1902
dalshe:
2532 mario79 1903
	mov	ebx,[maxx]
1904
	sub	ebx,106;123
1905
	shl	ebx,16
1906
	mov	bx,12
1907
	xor	edx,edx
1908
	mcall	13,,<4,13>
31 halyavin 1909
 
2532 mario79 1910
	add	ebx,1 shl 16
1911
	sub	bx,2
1912
	mcall	,,<5,11>,0xffcc00
31 halyavin 1913
 
2532 mario79 1914
	mov	ebx,[maxx]
1915
	sub	ebx,104;121
1916
	shl	ebx,16
1917
	mov	bx,7
51 mikedld 1918
 
2532 mario79 1919
	mcall	4,,0x10000000,file_sys,1
51 mikedld 1920
 
2532 mario79 1921
	add	ebx,1 shl 16
1922
	mcall
51 mikedld 1923
 
2532 mario79 1924
	mov	ebx,[maxx]
1925
	sub	ebx,117;134
1926
	shl	ebx,16
1927
	mov	bx,9
1928
	xor	edx,edx
1929
	mcall	13,,<6,11>
31 halyavin 1930
 
2532 mario79 1931
	sub	ebx,24 shl 16 ; 18 shl 16
1932
	mcall
31 halyavin 1933
 
2532 mario79 1934
	add	ebx,25 shl 16 ; 19 shl 16
1935
	sub	bx,2
1936
	mcall	,,<7,9>,0xffffff
31 halyavin 1937
 
2532 mario79 1938
	sub	ebx,24 shl 16
1939
	mcall
31 halyavin 1940
 
2532 mario79 1941
	mov	ebx,[maxx]
1942
	sub	ebx, 139
1943
	shl	ebx,16
1944
	mov	bx,8
1945
	mcall	4,,,page_a1,5
31 halyavin 1946
 
2532 mario79 1947
	add	ebx,1 shl 16
1948
	mcall
31 halyavin 1949
 
2532 mario79 1950
	mov	edx,[maxx]
1951
	sub	edx,130
1952
	shl	edx,16
1953
	mov	dx,7
1954
	mcall	47,0x20000,[page_list],,0xffffff
31 halyavin 1955
 
2532 mario79 1956
	mcall	3	; get time
31 halyavin 1957
 
2532 mario79 1958
	movzx	ebx,al
1959
	shr	eax,8
1960
	movzx	ecx,al
1961
	shr	eax,8
1962
	movzx	edx,al
1963
; ebx ecx edx h m s
1964
	push	ebx
1965
	push	ecx
31 halyavin 1966
 
2532 mario79 1967
	mov	eax,[maxx]
1968
	sub	eax,32
1969
	shl	eax,16
1970
	mov	ebx,eax
1971
	add	ebx,9
31 halyavin 1972
 
2532 mario79 1973
	mov	ecx,[bte]
31 halyavin 1974
 
2532 mario79 1975
	cmp	[graph_text],1
1976
	jne	no_y3
31 halyavin 1977
 
2532 mario79 1978
	sub	bx,2
1979
;--------------------------------------
1980
align 4
1981
no_y3:
1982
	mov	edx,[esp]	       ; __:_X
1983
	and	edx,15
1984
	add	ebx,10*65536
1985
	add	edx,text
1986
	mcall	4,,0xffffff,,1
31 halyavin 1987
 
2532 mario79 1988
	pop	edx			; __:X_
1989
	shr	edx,4
1990
	and	edx,15
1991
	sub	ebx,6*65536
1992
	add	edx,text
1993
	mcall
31 halyavin 1994
 
2532 mario79 1995
	mov	edx,[esp]	       ; _X:__
1996
	and	edx,15
1997
	sub	ebx,11*65536
1998
	add	edx,text
1999
	mcall
31 halyavin 2000
 
2532 mario79 2001
	pop	edx			; X_:__
2002
	shr	edx,4
2003
	and	edx,15
2004
	sub	ebx,6*65536
2005
	add	edx,text
2006
	mcall
31 halyavin 2007
 
2532 mario79 2008
   	call	draw_cpu_usage
2009
;--------------------------------------
2010
align 4
2011
_ret:
2012
	cmp	[minimize_right],0
2013
	jne	no_m_r2
31 halyavin 2014
 
2532 mario79 2015
	sub	[maxx],10
2016
;--------------------------------------
2017
align 4
2018
no_m_r2:
2019
no_setup:
2020
	popa
2021
	ret
2022
;------------------------------------------------------------------------------
2023
align 4
31 halyavin 2024
draw_cpu_usage:
2532 mario79 2025
	pushad
2026
	mov	[ysi],30
2027
	cmp	[graph_text],1
2028
	jne	@f
31 halyavin 2029
 
2532 mario79 2030
	mov	[ysi],12
2031
;--------------------------------------
2032
align 4
2033
@@:
2034
	mcall	18,5	; TSC / SEC
31 halyavin 2035
 
2532 mario79 2036
	shr	eax,20
2037
	push	eax
2038
	mcall	18,4	; IDLE / SEC
31 halyavin 2039
 
2532 mario79 2040
	shr	eax,20
2041
	xor	edx,edx
2042
	imul	eax,[ysi]
2043
	cdq
2044
	pop	ebx
2045
	inc	ebx
2046
	div	ebx
2047
	cmp	eax,[ysi]
2048
	jng	no_bug
31 halyavin 2049
 
2532 mario79 2050
	mov	eax,[ysi]
2051
;--------------------------------------
2052
align 4
318 heavyiron 2053
no_bug:
2532 mario79 2054
	push	eax
31 halyavin 2055
 
2532 mario79 2056
	mov	ebx,[maxx]
2057
	sub	ebx,60
2058
	shl	ebx,16
2059
	add	ebx,8
2060
	mov	ecx,5 shl 16
2061
	add	ecx,[ysi]
2062
	mcall	13,,,0xdd2222
372 heavyiron 2063
 
2532 mario79 2064
	pop	eax
2065
	mov	ecx,5 shl 16
2066
	add	ecx,eax
2067
	mov	eax,13
2068
	mcall	13,,,0x44aa44
31 halyavin 2069
 
2532 mario79 2070
	popad
2071
	ret
2072
;------------------------------------------------------------------------------
2073
align 4
601 Rus 2074
include 'ctx_menu.asm'
2532 mario79 2075
;------------------------------------------------------------------------------
2076
align 4
31 halyavin 2077
; DATA
2078
stripe:
2532 mario79 2079
	dd -0x010101
2080
	dd -0x010101
2081
	dd -0x020202
2082
	dd -0x010101
2083
	dd -0x000000
31 halyavin 2084
 
2532 mario79 2085
	dd 0x000000
2086
	dd 0x010101
2087
	dd 0x020202
2088
	dd 0x010101
2089
	dd 0x010101
31 halyavin 2090
 
2091
m_icon:
2532 mario79 2092
	dd 0x0
2093
	dd 0x808080
2094
	dd 0x000000
2095
	dd 0x000000
2096
	dd 0xffffff
31 halyavin 2097
 
2098
 
2099
lsz m_text,\
2100
  ru, "МЕНЮ",\
275 kaitz 2101
  en, "MENU",\
870 barsuk 2102
  et, "MEN--"
31 halyavin 2103
 
2532 mario79 2104
mi_text		db 'WAVETETRBGRDGPL '
31 halyavin 2105
 
2532 mario79 2106
flag_text	db 'EnFiGeRuFrEtUa'
31 halyavin 2107
 
2532 mario79 2108
type_lang	db 0
31 halyavin 2109
 
2532 mario79 2110
sound_flag	db 0
2111
button_frames	dd 0x0
31 halyavin 2112
 
2532 mario79 2113
checks		dd -1
2114
hidetext	db 0x11,0x10,0x1e
31 halyavin 2115
 
2532 mario79 2116
turn_text	db  '><'
2117
gpl		db  'GPL'
2118
 
2119
chlang	db 'LANG',0
304 diamond 2120
;syslang db 'SLAN',0
31 halyavin 2121
 
2532 mario79 2122
contrast	db 0
31 halyavin 2123
 
2532 mario79 2124
running_applications	dd 0x100
2125
max_applications	dd 11
31 halyavin 2126
 
2532 mario79 2127
current_alt_tab_app	dd -1
443 diamond 2128
 
2532 mario79 2129
page_list		dd 0
2130
draw_start_position	dd 0
2131
draw_window_1	db 0
51 mikedld 2132
 
2532 mario79 2133
b_size_y:	dd 0x0
2134
ysi		dd 0
2135
small_draw	dd 0x0
31 halyavin 2136
 
2532 mario79 2137
ptime		dd 0x0
2138
maxx		dd 0x0
2139
text		db '0123456789'
2140
 
2141
page_a1		db '<   >'
2142
page_clean_but	db 25,24,18
2143
 
601 Rus 2144
bte	dd 0xccddee
31 halyavin 2145
 
601 Rus 2146
wcolor	dd 0x506070
31 halyavin 2147
 
601 Rus 2148
sec	db ': '
2149
pros	db '                                                  '
2150
	db '                                                  '
31 halyavin 2151
 
601 Rus 2152
screenxy    dd	0x0
2153
stcount     dd	0x0
31 halyavin 2154
 
93 diamond 2155
setup_exec:
2532 mario79 2156
		dd 7
2157
		dd 0
2158
.cmdline	dd 0
2159
		dd 0
2160
		dd 0
2161
		db '/sys/'
2162
file_sys	db 'SETUP',0
93 diamond 2163
 
2164
exec_fileinfo:
2532 mario79 2165
	dd 7
2166
	dd 0
2167
	dd 0
2168
	dd 0
2169
	dd 0
2170
	db 0
2171
.name	dd 0
93 diamond 2172
 
2532 mario79 2173
end_name	db '/sys/END',0
2174
menu_name	db '/sys/@MENU',0
2175
calendar_name	db '/sys/CALENDAR',0
2176
sysmeter_name	db '/sys/GMON',0
2177
mousemul_name	db '/sys/MOUSEMUL',0
93 diamond 2178
 
2179
dat_fileinfo:
2532 mario79 2180
	dd 0
2181
	dd 0
2182
	dd 0
2183
	dd 1024
2184
	dd I_END
2185
	db '/sys/PANEL.DAT',0
93 diamond 2186
 
2532 mario79 2187
;m_bmp_fileinfo:
2188
;	dd 0
2189
;	dd 0
2190
;	dd 0
2191
;	dd 8192
2192
;	dd image
2193
;	db '/sys/MENUET.BMP',0
93 diamond 2194
 
2532 mario79 2195
;iconf_fileinfo:
2196
;	dd 0
2197
;	dd 0
2198
;	dd 0
2199
;	dd 8192
2200
;	dd image
2201
;	db '/sys/'
2202
;iconf	db 'MBAR_IX.BMP',0
93 diamond 2203
 
2532 mario79 2204
this_slot	dd 0	      ; Slot of this process
2205
max_slot	dd 255
2206
;------------------------------------------------------------------------------
2207
IM_END:
2208
;------------------------------------------------------------------------------
2209
align 4
2210
last_active_window	rd 1
2211
prev_active_window	rd 1
2212
active_window_changed	rd 1
2213
app_tab_count		rd 1
51 mikedld 2214
 
2532 mario79 2215
alt_tab_list_size	rd 1
2216
 
2217
panel_x_pos	rd	1
2218
panel_y_pos	rd	1
2219
 
51 mikedld 2220
screen_size:
2532 mario79 2221
.height	rw 1
2222
.width	rw 1
2223
;------------------------------------------------------------------------------
2224
align 4
870 barsuk 2225
system_colours	system_colors ; rd 10
2532 mario79 2226
;------------------------------------------------------------------------------
2227
align 4
2228
app_list	rd 50
2229
;------------------------------------------------------------------------------
2230
align 4
2231
alt_tab_list	rd 256*2
2232
;------------------------------------------------------------------------------
2233
align 4
2234
process_info_buffer:
2235
	rb 1024
2236
;------------------------------------------------------------------------------
2237
align 4
2238
procinfo_for_detect:
2239
	rb 1024
2240
;------------------------------------------------------------------------------
2241
align 4
2242
procinfo_window_tabs:
2243
	rb 1024
2244
;-----------------------------------------------------------------------------
2245
align 4
31 halyavin 2246
tictable:
2532 mario79 2247
	rd 256
2248
;------------------------------------------------------------------------------
2249
align 4
2250
	rb 256
601 Rus 2251
detect_stack:
2532 mario79 2252
;------------------------------------------------------------------------------
2253
align 4
2254
	rb 256
601 Rus 2255
ctx_menu_stack:
2532 mario79 2256
;------------------------------------------------------------------------------
2257
align 4
2258
	rb 0x1000
2259
stack_top:
2260
;------------------------------------------------------------------------------
2261
;align 4
2262
;image:
2263
;------------------------------------------------------------------------------
2264
I_END: