Subversion Repositories Kolibri OS

Rev

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

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