Subversion Repositories Kolibri OS

Rev

Rev 318 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;                                                   ;
  3. ;    MENUBAR for KolibriOS  - Compile with fasm     ;
  4. ;                                                   ;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6.  
  7. use32
  8.   org  0x0
  9.   db   'MENUET01'   ; 8 byte id
  10.   dd   0x01         ; header version
  11.   dd   START        ; program start
  12.   dd   I_END        ; program image size
  13.   dd   0xA000       ; reguired amount of memory - 10 Kb
  14.   dd   0xA000       ; esp
  15.   dd   0x0,0x0      ; param, icon
  16.  
  17. include 'lang.inc'
  18. include 'macros.inc'
  19.  
  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
  32.  
  33. PANEL_HEIGHT = 18
  34.  
  35. handle_key:
  36.  
  37.     mcall 18, 7
  38.     mov  [active_process],eax
  39.  
  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
  57. ; this is hotkey Ctrl+Shift ;or LShift+RShift
  58.         mov     ebx, setup_exec
  59. ;        test    ah, 001100b
  60. ;        jz      change_sys_lang
  61. change_key_lang:
  62.         mov     dword [ebx+8], chlang
  63.         mcall   70
  64.         call    chlang_music
  65. ;       mcall   5, 25
  66. begin_1:
  67.     mov  ecx,[active_process]
  68.     mcall 18, 3
  69.     mcall 5, 25
  70. .ret:
  71.         ret
  72.  
  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
  79.  
  80.   start_end_application:
  81.         mov     dword [ebx+21], end_name
  82.         mcall   70
  83.      mcall 5 ,50
  84.      jmp   begin_1.ret
  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.      jmp    begin_1.ret
  94.  
  95.    start_menu_application:
  96.         mov     [draw_window_1], 1
  97.         mov     dword [ebx+21], menu_name
  98.         mcall   70
  99.         call    menu_music
  100.      mcall 5,50
  101.      jmp   begin_1.ret
  102.  
  103. page_list_next:
  104.     cmp  [page_list],15
  105.     je     @f
  106.     inc  [page_list]
  107.     mov  [draw_window_1],1
  108.   @@:
  109.     jmp  begin_1.ret
  110.  
  111. page_list_prev:
  112.     cmp  [page_list],0
  113.     je     @f
  114.     dec  [page_list]
  115.     mov  [draw_window_1],1
  116.   @@:
  117.     jmp  begin_1.ret
  118.  
  119. active_process  dd 0
  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
  133. ;syslang_music:
  134. ;    mcall 55, eax, , , syslangmusic
  135. ;    ret
  136. chlang_music:
  137.     mcall 55, eax, , , chlangmusic
  138.     ret
  139. menu_music:
  140.     mcall 55,eax, , ,menumusic
  141.     ret
  142.  
  143. chlangmusic:    db 0x82,0x60,0x83,0x65,0x82,0x60,0
  144.  
  145. ;syslangmusic:   db 0x82,0x65,0x83,0x70,0x82,0x65,0
  146.  
  147. menumusic:      db 0x82,0x50,0x84,0x48,0x82,0x50,0x84,0x53,0x82,0x51,0
  148.  
  149. activatemusic:  db 0x83,0x30,0x85,0x60,0
  150.  
  151. buttonmusic:    db 0x85,0x25,0x85,0x40,0
  152.  
  153. sysmetermusic:  db 0x85,0x35,0x85,0x45,0
  154.  
  155. setupmusic:     db 0x85,0x40,0x85,0x50,0
  156.  
  157. calendarmusic:  db 0x85,0x37,0x85,0x48,0
  158.  
  159. ;  .exit: mcall -1
  160.  
  161.  
  162. START:
  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
  179.  
  180.     mov  edi,width
  181.     mov  esi,I_END
  182.     xor  eax,eax
  183.   new_number:
  184.     cmp  [esi],byte ';'
  185.     je   number_ready
  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:
  193.     stosd
  194.     xor  eax,eax
  195.     inc  esi
  196.     cmp  [esi],byte 'x'
  197.     jne  new_number
  198.  
  199.         mcall   14
  200.         mov     [screen_size],eax
  201.  
  202.         mcall   48,5
  203.         mov     ecx,eax
  204.         lea     edx,[ebx-PANEL_HEIGHT-1]
  205.         mcall   48,6
  206.  
  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.  
  231.     cmp  eax,1          ; redraw ?
  232.     jz   red
  233.     cmp  eax,3          ; button ?
  234.     jz   button
  235.         call    handle_key
  236.         jmp     still
  237.  
  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:
  255.     call draw_window
  256.     call draw_info
  257.     jmp  still
  258.  
  259.   button:                ; button
  260.     mov  eax,17
  261.     int  0x40
  262.  
  263.     cmp  ah,50
  264.     jb   no_activate
  265.     cmp  ah,70
  266.     jg   no_activate
  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.  
  283.     cmp  ah,101           ; minimize to left
  284.     je   left_button
  285.  
  286.     cmp  ah,102           ; minimize to right
  287.     je   right_button
  288.  
  289.     cmp  ah,byte 1        ; start/terminate menu
  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.  
  298.         mov     ebx, exec_fileinfo
  299.     cmp  ah,byte 2             ; start calendar
  300.     jnz  noid15  ;noclock
  301.         mov     dword [ebx+21], calendar_name
  302.         mov     eax, 70
  303.         int     0x40
  304.     call calendar_music
  305.     jmp  still
  306.  
  307.   noid15:
  308.     cmp  ah,16
  309.     jne  noid16
  310.         mov     ebx, setup_exec
  311.         mov     dword [ebx+8], chlang
  312.         mov     eax, 70
  313.         int     0x40
  314.     call chlang_music
  315.     mcall 5, 25
  316.     jmp  still
  317.  
  318.   noid16:
  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:
  330.     cmp  ah,18
  331.     jne  noid18
  332.         mov     dword [ebx+21], sysmeter_name
  333.         mov     eax, 70
  334.         int     0x40
  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:
  352.     cmp  ah,20             ; start system setup
  353.     jnz  noid20
  354.         mov     ebx, setup_exec
  355.         and     dword [ebx+8], 0
  356.         mov     eax, 70
  357.         int     0x40
  358.     call setup_music
  359.     jmp still
  360.  
  361.  noid20:
  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
  370.  
  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.   @@:
  379.     jmp  still
  380.  
  381.  noid22:
  382.  
  383.     jmp  still
  384.  
  385.  
  386.  
  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
  412.     mov  eax,[max_applications]
  413.     mul  [page_list]
  414.     test eax,eax
  415.     je    @f
  416.     inc  eax
  417.   @@:
  418.     mov  [draw_start_position],eax
  419.  
  420.  
  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
  431.     jb   norpl2
  432.  
  433.     cmp  byte [0x8000+10], '@'
  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:
  442.     cmp  [0x8000+10],dword '    '
  443.     je   norpl
  444.     dec  [draw_start_position]
  445.     cmp  [draw_start_position],0
  446.     jg    norpl
  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
  478.     je   contrast1
  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]
  523.     jb   newpr
  524.  
  525.   nompr:
  526.  
  527.   dr_ret:
  528.  
  529.     popa
  530.  
  531.     ret
  532.  
  533.  
  534. calculate_applications:
  535.  
  536.     mov  eax,[max_applications]
  537.     mul  [page_list]
  538.     test eax,eax
  539.     je    @f
  540.     inc  eax
  541.   @@:
  542.     mov  [draw_start_position],eax
  543.  
  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], '@'
  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:
  568.     cmp  [0x8000+11],dword 'CON '
  569.     je   cnorpl
  570.     cmp  [0x8000+11],dword 'ENU '
  571.     je   cnorpl
  572. ;    cmp  [0x8000+12],dword 'NEL '
  573. ;    je   cnorpl
  574.     cmp  [0x8000+10],dword '    '
  575.     je   cnorpl
  576.     dec  [draw_start_position]
  577.     cmp  [draw_start_position],0
  578.     jg     cnorpl
  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
  607.     mov  [max_applications],7   ;6
  608.   now1:
  609.     cmp  eax,799
  610.     jne  now2
  611.     mov  [max_applications],9 ;10    ;8
  612.   now2:
  613.     cmp  eax,1023
  614.     jne  now3
  615.     mov  [max_applications],12 ;13   ;8
  616.   now3:
  617.     cmp  eax,1279
  618.     jne  now4
  619.     mov  [max_applications],17 ;18    ;8
  620.   now4:
  621.     mov  edi,1
  622.  
  623.   nb:
  624.  
  625.     mov  eax,8
  626.     mov  ebx,edi
  627.     shl  ebx,16
  628.     imul ebx,6*10            ;13
  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
  634.     je   bufr
  635.     or   edx,0x60000000
  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:
  653.         mov     eax, 70
  654.         mov     ebx, exec_fileinfo
  655.         mov     dword [ebx+21], menu_name
  656.         int     0x40
  657.         ret
  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
  671.     or   edx, 0x01000000
  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
  716.     or   edx, 0x01000000
  717.     int  0x40
  718.  
  719.     cmp  [graph_text],1
  720.     je   nos4
  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:
  820.     cmp  eax,2
  821.     jne  no_key
  822.     call handle_key
  823.     jmp  small_wait
  824. no_key:
  825.  
  826.     mov  eax,17
  827.     int  0x40
  828.  
  829.     cmp  ah,1
  830.     jne  no_full
  831.  
  832.     mov   eax, 14                   ; get screen max x & max y
  833.     int   0x40
  834.     mov   edx, eax
  835.     shr   edx, 16
  836.     xor   ebx, ebx
  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.  
  871.      mov  eax,48           ; 3d button look
  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
  919.     je  label_1
  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
  930.     add  ebx,7  ;24
  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.  
  977.     mov  eax, 12                   ; tell os about redraw
  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]
  988.     sub  eax, 0x101010
  989.     mov  [wcolor], eax
  990.  
  991.     mov  eax,14                    ; get screen max x & max y
  992.     int  0x40
  993.  
  994.     cmp  [width],0
  995.     je   no_def_width
  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
  1011.     mov  cx,PANEL_HEIGHT
  1012.     add  ecx,20*65536
  1013.   no_text_1:
  1014.     mov  eax, 0                     ; DEFINE AND DRAW WINDOW
  1015.     mov  edx, [wcolor]
  1016.     or   edx, 0x01000000 ; do not draw the window
  1017.     mov  esi, [wcolor]
  1018.     or   esi, 0x01000000 ; unmovable window
  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
  1031.     and  edx,0x00FFFFFF
  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
  1044.     and  edx,0x00FFFFFF
  1045.     int  0x40
  1046.   no_sd:
  1047.     popa
  1048.  
  1049.     add  ecx,1*65536+1
  1050.     cmp  cx,5
  1051.     jb   newline
  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
  1065.     and  edx,0x00FFFFFF
  1066.     int  0x40
  1067.     add  ecx,1*65536+1
  1068.     cmp  cx,15
  1069.     jb   newline3
  1070.  
  1071.   no_sm:
  1072.  
  1073.     cmp  [minimize_left],1
  1074.     jne  no_mleft
  1075.     mov  eax,8                               ; ABS LEFT
  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
  1084.     mov  eax,4                               ; HIDE TEXT
  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
  1107.     mov  eax,8                               ; ABS RIGHT
  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.  
  1162.     mov  eax, 8                               ; M BUTTON
  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
  1193.     mov  ecx,6  shl 16+7
  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.  
  1231. ; load & display menuet.bmp
  1232.         mov     eax, 70
  1233.         mov     ebx, m_bmp_fileinfo
  1234.         int     0x40
  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.  
  1245.     cmp    byte [edi], 10
  1246.     jb     nopix
  1247.     cmp    byte [edi+1], 10
  1248.     jb     nopix
  1249.     cmp    byte [edi+2], 10
  1250.     jb     nopix
  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]
  1312.     or   edx, 0x20000000
  1313.     mov  eax,8
  1314.     int  0x40
  1315.     popa
  1316.  
  1317.     mov  ecx,[esp]
  1318.     add  ecx,48
  1319.     mov  [iconf+6],cl
  1320.  
  1321.         mov     eax, 70
  1322.         mov     ebx, iconf_fileinfo
  1323.         int     0x40
  1324.  
  1325.     mov  eax,0
  1326.     mov  ebx,32
  1327.     mov  edi,image+51+32*33*3
  1328.  
  1329.    np2:                             ; new pixel of file
  1330.  
  1331.     mov  edx,[edi]
  1332.     and  edx,0xffffff
  1333.  
  1334.     cmp  eax,3                      ; Y draw limits
  1335.     jb   nopix2
  1336.     cmp  eax,36
  1337.     jg   nopix2
  1338.     cmp  ebx,38                     ; X draw limits
  1339.     jg   nopix2
  1340.     cmp  ebx,2
  1341.     jb   nopix2
  1342.  
  1343.     cmp  edx,0
  1344.     jz   nopix2
  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]
  1442.     jz   _ret
  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.  
  1471. ;    mov  eax,26          ; check for change in time or country
  1472. ;    mov  ebx,5
  1473. ;    int  0x40
  1474. ;    mov  edx,eax
  1475.     mov  eax,26
  1476.     mov  ebx,2
  1477.     mov  ecx,9
  1478.     int  0x40
  1479. ;    add  edx,eax
  1480.     mov  edx,eax
  1481.     mov  eax,3
  1482.     int  0x40
  1483.     and  eax,0xffff
  1484.     add  edx,eax
  1485.     cmp  edx,[checks]
  1486.     je   _ret
  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.  
  1494.     mov  eax,8               ; time/date button
  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
  1523.     inc  edx                ;button 17
  1524. ;    int  0x40
  1525.     add  ebx,33 shl 16
  1526.     mov  bx,8
  1527.     inc  edx                ;button 18
  1528.     int  0x40
  1529.     sub  ebx,30 shl 16
  1530.     mov  bx,10
  1531.     inc  edx                ;button 19
  1532.     int  0x40
  1533.     sub  ebx,14 shl 16
  1534.     inc  edx                ;button 20
  1535.     int  0x40
  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.  
  1545.     ; flags
  1546.  
  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
  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]
  1570.     sub  ebx,92 ;109 ;112 ;28
  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
  1601.     je   dalshe
  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]
  1625.     sub  ebx,106;123
  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]
  1639.     sub  ebx,104;121
  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.  
  1649.     mov  edx,0
  1650.     mov  eax,13
  1651.     mov  ebx,[maxx]
  1652.     sub  ebx,117;134
  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]
  1670.     sub  ebx,133;150
  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]
  1682.     sub  edx,124;141
  1683.     shl  edx,16
  1684.     mov  dx,7
  1685.     mov  esi,0xffffff
  1686.     int  0x40
  1687.  
  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.  
  1732.     mov  eax,3                  ; get time
  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.  
  1761.     mov  edx,[esp]             ; __:_X
  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.  
  1769.     pop  edx                    ; __:X_
  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.  
  1778.     mov  edx,[esp]             ; _X:__
  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.  
  1786.     pop  edx                    ; X_:__
  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.  
  1813.     pushad
  1814.  
  1815.     mov  [ysi],30
  1816.     cmp  [graph_text],1
  1817.     jne  @f
  1818.     mov  [ysi],12
  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
  1838.     cmp  eax,[ysi]
  1839.     jng  no_bug
  1840.     mov  eax,[ysi]
  1841. no_bug:
  1842.     push eax
  1843.  
  1844.     mov  eax,13
  1845.     mov  ebx,[maxx]
  1846.     sub  ebx,60
  1847.     shl  ebx,16
  1848.     add  ebx,8
  1849.     mov  ecx,5 shl 16
  1850.     add  ecx,[ysi]
  1851.     mov  edx,0xdd2222
  1852.     int  0x40
  1853.  
  1854.     pop  eax
  1855.     mov  ecx,5 shl 16
  1856.     add  ecx,eax
  1857.     mov  eax,13
  1858.     mov  edx,0x44aa44
  1859.     int  0x40
  1860.  
  1861.     popad
  1862.     ret
  1863.  
  1864. ; DATA
  1865.  
  1866. stripe:
  1867.     dd  -0x010101
  1868.     dd  -0x010101
  1869.     dd  -0x020202
  1870.     dd  -0x010101
  1871.     dd  -0x000000
  1872.  
  1873.     dd   0x000000
  1874.     dd   0x010101
  1875.     dd   0x020202
  1876.     dd   0x010101
  1877.     dd   0x010101
  1878.  
  1879. m_icon:
  1880.     dd  0x0
  1881.     dd  0x808080
  1882.     dd  0x000000
  1883.     dd  0x000000
  1884.     dd  0xffffff
  1885.  
  1886.  
  1887. lsz m_text,\
  1888.   ru, "Œ…ž",\
  1889.   en, "MENU",\
  1890.   et, "MENÜÜ"
  1891.  
  1892. mi_text   db   'WAVETETRBGRDGPL '
  1893.  
  1894. flag_text db 'EnFiGeRuFrEt'
  1895.  
  1896. type_lang db 0
  1897. ;music_type db 1
  1898. sound_flag db 0
  1899. button_frames  dd  0x0
  1900.  
  1901. checks    dd -1
  1902. hidetext  db 0x11,0x10,0x1e
  1903.  
  1904. turn_text db  '><'
  1905. gpl       db  'GPL'
  1906.  
  1907. chlang db 'LANG',0
  1908. ;syslang db 'SLAN',0
  1909.  
  1910. contrast  db 0
  1911.  
  1912. running_applications  dd  0x100
  1913. max_applications      dd  11
  1914.  
  1915. page_list  dd 0
  1916. draw_start_position dd 0
  1917. draw_window_1 db 0
  1918.  
  1919. b_size_y:  dd  0x0
  1920. ysi  dd  0
  1921. small_draw dd 0x0
  1922.  
  1923. ptime   dd 0x0
  1924. maxx    dd 0x0
  1925. text    db '0123456789'
  1926. page_a1 db '<  >'
  1927. bte     dd 0xccddee
  1928.  
  1929. wcolor  dd 0x506070
  1930.  
  1931. sec     db ': '
  1932. pros    db '                                                  '
  1933.         db '                                                  '
  1934.  
  1935. screenxy    dd  0x0
  1936. stcount     dd  0x0
  1937.  
  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
  1957. menu_name       db      '/RD/1/@MENU',0
  1958. calendar_name   db      '/RD/1/CALENDAR',0
  1959. sysmeter_name   db      '/RD/1/GMON',0
  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.  
  1986. I_END:
  1987.  
  1988. screen_size:
  1989.   .height dw ?
  1990.   .width  dw ?
  1991.  
  1992. area9 rb 100
  1993. system_colours rd 10
  1994. app_list rd 50
  1995. tictable:
  1996.   rd 256
  1997. image:
  1998.