Subversion Repositories Kolibri OS

Rev

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