Subversion Repositories Kolibri OS

Rev

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

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