Subversion Repositories Kolibri OS

Rev

Rev 251 | Rev 340 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;
  2. ; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû
  3. ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
  4. ; All Right Reserved
  5. ;
  6. ; ÂÎÇÌÎÆÍÀ ÏÎÐ×À ÎÁÎÐÓÄÎÂÀÍÈß!
  7. ; ÈÑÏÎËÜÇÓÉÒÅ ÍÀ ÑÂÎÉ ÑÒÐÀÕ È ÐÈÑÊ!
  8. ;
  9. ; Çàìåòêè :
  10. ;       Äîïèñàòü çàïóñê òåñòîâ (rtst) (íåò ðåàêöèè íà îøèáêó çàïóñêà)
  11. ;       Ïåðåäåëàòü îáíîâëåíèå ãðàôèêà (ñäåëàòü îòäåëüíûì ïðîöåññîì)
  12. ;       Äîáàâèòü ðåàêöèþ íà ïàðàìåòðû äàò÷èêîâ
  13. ;
  14. ; Èñòîðèÿ :
  15. ;         09/2005 - íà÷àëî
  16. ;      04/10/2005 - îòêîììåíòèðîâàë êîä
  17. ;      09/11/2005 - äîïèñàíû òåñòû (ïîêà íåò òåñòà ïàìÿòè)
  18. ;      30/01/2006 - äîáàâëåííû ãðàôèêè
  19. ;      02/02/2006 - Äîáàâëåíà íàñòðîéêà âðåìåíè îáíîâëåíèÿ
  20. ;      10/02/2006 - äîáàâëåííà åùå èíôîðìàöèÿ ñ äàò÷èêîâ, îïò. wb_get_chip_name
  21. ;      01/03/2006 - äîáàâëåííà åùå èíôîðìàöèÿ ñ äàò÷èêîâ
  22. ;      16/03/2006 - îïòèìèçèðîâàíà ïî ðàçìåðó
  23. ;      17/03/2006 - ïîäñâåòêà èçìåí¸ííûõ ïàðàìåòðîâ, îïòèìèçàöèÿ, about
  24. ;      20/03/2006 - Ïóáëèêàöèÿ
  25. ;               ---  v 0.2 ---
  26. ;      24/03/2006 - Äîáàâëåííà ïîääåðæêà IT8705F, IT8712F è SIS950
  27. ;      25/03/2006 - Âûâîä òð¸õ òåìïåðàòóð è òð¸õ âåíòèëåé
  28. ;      28/03/2006 - Ãðàôèê temp3 è èçìåíåíèå öâåòà ãðàôèêîâ, îáðàáîòêà îòðèöàòåëüíûõ çíà÷åíèé ãðàôèêà
  29. ;      30/03/2006 - Îïòèìèçàöèÿ ïî ðàçìåðó âåðñèè îò 28/03/2006, ïåðåïèñàë ðèñîâàíèå ãðàôèêà
  30. ;      14/04/2006 - Èñïðàâèë ãðàôèê (jle -> jbe), äîáàâèë mem usage, âû÷èñëåíèå äëèííû ÷èñåë, çàêðûòèå ïî Esc
  31. ;      19/04/2006 - Î÷èñòêà íåèíèöèàëèçèðîâàííûõ äàííûõ
  32. ;               ---  v 0.3 ---
  33. ;      01/07/2006 - Ðàçëè÷èå ITE 8705F, ITE 8712F è IT8716F
  34. ;      04/07/2006 - Äîáàâëåííû íàïðóãè äëÿ ÷èïîâ Winbond
  35. ;      10/07/2006 - äîáàâëåííû íàïðóãè äëÿ ÷èïîâ ITE, ìíîæèòåëè äëÿ AMD K6, Intel P6, P7, îïòèìèçàöèÿ ïî ðàçìåðó
  36. ;      11/07/2006 - Ðåàêöèÿ íà èçìåíåíèå íàïðóãè, îïòèìèçàöèÿ ïî ðàçìåðó
  37. ;      12/07/2006 - it87_get_fan_speed bug fix, çàâåðøåíèå òåñòà ïî 18/18
  38. ;      13/07/2006 - it87_get_fan_speed bug fix, èñïðàâëåí âûâîä ÷èñåë ñ ïëàâàþùåé òî÷êîé
  39. ;      14/07/2006 - èñïðàâëåííû ïîêàçàíèÿ -12V äëÿ Winbond, îñòàëàñü ïðîáëåíìà ñ -5V
  40. ;      17/07/2006 - èñïðàâëåííà îøèáêà îïðåäåëåíèÿ ìíîæèòåëÿ äëÿ P6, äîáàâëåííû ìíîæèòåëè
  41. ;      18/07/2006 - Óëè÷øèë âûâîä ìíîæèòåëÿ, èñïðàâëåííû ìíîæèòåëè äëÿ P6 Tualatin, config.inc
  42. ;      22/07/2006 - P6 multiplier bugfix
  43. ;      30/07/2006 - P6 multiplier bugfix
  44. ;               --- v 0.4 ---
  45. ;      10/08/2006 - íà÷àòà ðàáîòà ïî ïîääåðæêå SMBus, ïåðåïèñàíû ôóíêöèè äëÿ ÷èïîâ ìîíèòîðèíãà
  46. ;      24/08/2006 - äîáàâëåííà ÷àñòîòà ïðîöåññîðà
  47. ;      10/09/2006 - bugfix
  48. ;      25/11/2006 - äîáàâëåí ABIT uGuru
  49. ;      20/12/2006 - W83627DHG, W83627EHF, W83627EHG, mutipliers for AthonXP-M, Athlon64, Athlon64-M,
  50. ;            Intel Dothan, Yonah, Conroe, Merom
  51. ;      24/12/2006 - ITE chips model id bugfix by Serge
  52. ;      26/12/2006 - èñïðàâëåííà ãëóïàÿ îøèáêà â îïðåäåëåíèè ITE è uGuru
  53. ;      31/01/2007 - èñïðàâëåíà îøèáêà âíåñ¸ííàÿ 17/07/06 â îïðåäåëåíèå ìíîæèòåëÿ äëÿ Intel NorthWood
  54. ;
  55. ;    Ýé! Ó ìåíÿ íåò ìíîãî âðåìåíè.
  56.  
  57. ; Âíåøíèå ôàéëû :
  58. ;       hwm*.inc        - ïðîöåäóðû ðàáîòû ñ äàò÷èêàìè ìîíèòîðèíãà
  59. ;       system.inc      - âû÷èñëåíèå çàãðóçêè ïðîöåññîðà, çàâåðøåíèå òåñòà, etc...
  60. ;       tests.inc       - òåñòû ;-)
  61. ;       diag.inc        - ïîääåðæêà äèàãðàì
  62. ;       tab_*.inc       - ïðîöåäóðû îòðèñîâêè ñîîòâåòñòâóþøèõ âêëàäîê
  63.  
  64.  
  65. ; Èäåíòèôèêàòîðû êíîïîê :
  66. ;       01 - Exit
  67. ;       02 - Info tab
  68. ;       03 - Tests tab
  69. ;       04 - Config tab
  70. ;       05 - About tab
  71. ;       06 - P5 test
  72. ;       07 - P6 test
  73. ;       08 - K6 test
  74. ;       09 - K7 test
  75. ;       10 - MMX test   - not used
  76. ;       11 - Update time increment
  77. ;       12 - Update time decriment
  78. ;       13..17 - Èçìåíåíèå öâåòà CPU_load, Mem_usage, Temp1, Temp2, Temp3
  79.  
  80. include 'config.inc'
  81. include 'macros.inc'
  82.  
  83. tcol    equ     0x5080d0
  84. atcol   equ     0x4070c0
  85. val_mod equ     0x3090
  86.  
  87. MEOS_APP_START
  88. include "tests.inc"     ; <-- Ìíîãî âûðàâíèâàíèé, ëó÷øå çäåñü
  89. CODE
  90. ;--- Init ------------------------------------------------------------
  91.         ; Î÷èùàåì íåèíèöèàëèçèðîâàííûå äàííûå
  92.         mov     ecx, __memory - __udata
  93.         mov     edi, __udata
  94.         xor     eax, eax
  95.         rep     stosb
  96.  
  97.         xor     eax, eax
  98.         cpuid                                   ; Óçíà¸ì ïðîèçâîäèòåëÿ ïðîöà
  99.         mov     [Vendor + 0], ebx
  100.         mov     [Vendor + 4], edx
  101.         mov     [Vendor + 8], ecx
  102.         mov     eax, 1
  103.         cpuid                                   ; Åñòü ëè MMX ?
  104.         mov     ecx, eax
  105.         shr     al, 4
  106.         and     ax, 0x0F0F
  107.         mov     [CPU_fam], ah
  108.         mov     [CPU_mod], al
  109.         shr     edx, 23
  110.         and     dl, 1
  111.         mov     [CPU_mmx], dl
  112.         shr     ecx, 12
  113.         and     cl, 11b
  114.         mov     [CPU_type], cl
  115.        
  116.         ; ! Öâåòà èç ìàññèâà colors
  117.         mov     dword[d_cpu_load], 0xFF00       ; èíèöèàëèçèðóåì ãðàôèê çàãðóçêè ÀËÓ
  118.         mov     dword[d_mem_usage], 0x8BA169    ; -- mem usega
  119.         mov     dword[d_temp1], 0xFF0000        ; -- ãðàôèê òåìïåðàòóðû ÖÏÓ
  120.         mov     dword[d_temp2], 0xFF            ; -- ãðàôèê òåìïåðàòóðû ÌÏ
  121.         mov     dword[d_temp3], 0xFF7E23
  122.  
  123.         call    hwm_init                        ; Èíèöèàëèçèðóåì ÷èï ìîíèòîðèíãà
  124.  
  125.         jmp     draw_window
  126. ;--- Wait & translate event ------------------------------------------
  127. wait_for_event:
  128.         mov     byte[diag_add_v], 0     ; äîáàâëÿåì äàííûå ê ãðàôèêó òîëüêî ïî òàéìåðó
  129.         mov     ebx, [update_time]
  130.         mov     eax, 23
  131.         int     0x40
  132.         test    eax, eax
  133.         jnz     @f
  134.         inc     byte [diag_add_v]
  135.         inc     eax                     ; ïåðåðèñóåì îêíî (eax := 1)
  136. @@:     dec     eax                     ; redraw request ?
  137.         jz      draw_window
  138.         dec     eax                     ; key in buffer ?
  139.         jz      key
  140.         dec     eax                     ; button in buffer ?
  141.         jz      button
  142.         jmp     wait_for_event
  143. ;--- Key pressed -----------------------------------------------------
  144. key:
  145.         mov     eax, 2
  146.         int     0x40
  147.         cmp     ah, 27                  ; Esc - çàâåðøåíèå ðàáîòû
  148.         je      exit
  149.         jmp     wait_for_event
  150. ;--- Button down -----------------------------------------------------
  151. button:
  152.         mov     eax, 17                 ; get id
  153.         int     0x40
  154.         cmp     ah, 1                   ; button id == 1 ?
  155.         jne     noexit
  156. exit:   cmp     byte[test_id], 0
  157.         je      @f
  158.         call    stop_test
  159. @@:     mov     eax, -1         ; close this program
  160.         int     0x40
  161. noexit:
  162.         ; êíîïêè âêëàäîê (2 .. 5)
  163.         cmp     ah, 5
  164.         jg      no_tabs
  165.         mov     byte[act_tab], ah
  166.         jmp     draw_window
  167. no_tabs:
  168.         ; êíîïêè çàïóñêà òåñòâî (6 .. 10)
  169.         cmp     ah, 10
  170.         jg      no_test_bt
  171.         ; åñëè íåò çàïóùåíûõ òåñòîâ - çàïóñêàåì âûáðàííûé
  172.         cmp     byte[test_id], 0
  173.         je      run_test
  174.         ; åñëè êíîïêà àêòèâíîãî òåñòà - îñòàíàâëèâàåì òåñò, èíà÷å íè÷åãî íå äåëàåì     
  175.         cmp     [test_id], ah
  176.         jne     wait_for_event
  177.         call    stop_test
  178.         jmp     draw_window
  179.  
  180. tsts:   dd      p5, p6, k6, k7
  181. run_test:
  182.         push    eax
  183.         movzx   ecx, ah
  184.         mov     ecx, [tsts + (ecx * 4) - (6 * 4)]
  185. rtst:   mov     eax, 51
  186.         mov     edx, stp
  187.         mov     ebx, 1
  188.         int     0x40
  189.         cmp     eax, 0xFFFFFFF0 ; -16
  190.         je      wait_for_event  ; <-- îøèáêà çàïóñêà òåñòà, ÏÅÐÅÏÈÑÀÒÜ
  191.         mov     [test_pid], eax
  192.         pop     eax
  193.         mov     byte [test_id], ah
  194.         jmp     draw_window
  195.         ;-------------------------
  196.         ; êíîïêè èçìåíåíèÿ âðåìåíè îáíîâëåíèÿ
  197. no_test_bt:
  198.         cmp     ah, 11
  199.         jne     no_ut_inc
  200.         add     dword[update_time], 10
  201.         jmp     draw_window
  202. no_ut_inc:
  203.         cmp     ah, 12
  204.         jne     no_ut_dec
  205.         cmp     dword[update_time], 10
  206.         jng     wait_for_event
  207.         sub     dword[update_time], 10
  208.         jmp     draw_window
  209. no_ut_dec:
  210.         ;-------------------------
  211.         ; êíîïêè èçìåíåíèÿ öâåòà ãðàôèêîâ (13..17)
  212.         cmp     ah, 17
  213.         jg      no_change_color
  214.         sub     ah, 13
  215.         movzx   ecx, ah
  216.         mov     esi, [d_colors + ecx * 4]
  217.         mov     eax, [esi]
  218.         mov     ecx, (colors_end - colors) / 4  ; êîëè÷åñòâî öâåòîâ
  219. @@:     dec     ecx
  220.         cmp     eax, [colors + ecx * 4]
  221.         jne     @b
  222.         mov     ebx, [colors + ecx * 4 - 4]
  223.         mov     [esi], ebx
  224.         jmp     draw_window
  225. no_change_color:
  226.         jmp     wait_for_event
  227. ;---------------------------------------------------------------------
  228. draw_window:
  229.         mov     eax,12
  230.         mov     ebx,1
  231.         int     0x40
  232.         ; Ñîçäà¸ì îêíî
  233.         xor     eax, eax
  234.         mov     ebx, 300 * 65536 + 309
  235.         mov     ecx, 150 * 65536 + 450
  236.         mov     edx, tcol + 0x3000000   ; color of work area RRGGBB,8->color
  237.         mov     esi, 0x805080d0         ; color of grab bar  RRGGBB,8->color
  238.         mov     edi, 0x005080d0         ; color of frames    RRGGBB
  239.         int     0x40
  240.         ; Ñîçäà¸ì ðàìêó ãðàôèêà
  241.         mov     eax, 13
  242.         mov     ebx, 10 * 65536 + 290
  243.         mov     ecx, 138 * 65536 + 105
  244.         mov     edx, atcol
  245.         int     0x40
  246.         mov     ebx, 12 * 65536 + 286
  247.         mov     ecx, 140 * 65536 + 101
  248.         mov     edx, tcol
  249.         int     0x40
  250.         mov     eax, 38
  251.         mov     edx, atcol
  252.         mov     ebx, 12 * 65536 + 286 + 12
  253.         mov     ecx, 140 * 65536 + 140
  254. @@:     add     ecx, 10 * 65536 + 10
  255.         int     0x40
  256.         cmp     cx, 230                 ; ïðèâÿçàíî ê êîîðäèíàòàì îêíà
  257.         jl      @b
  258.         ; Ïèøèì çàãîëîâîê
  259.         mov     eax, 4
  260.         mov     ebx, 8 * 65536 + 8
  261.         mov     edx, title
  262.         mov     ecx, 0x10FFFFFF
  263.         mov     esi, 29
  264.         int     0x40
  265.        
  266.         ; Ïèøèì íàçâàíèÿ ïàðàìåòðîâ (Cpu load, temper, etc...)
  267.         mov     edx, msgs_mon
  268.         mov     ebx, 17 * 65536 + 30
  269.         call    show_text
  270.        
  271.         mov     edx, msgs_mon2
  272.         mov     ebx, 156 * 65536 + 30
  273.         call    show_text
  274.        
  275.         ; Ðèñóåì êíîïêè ñìåíû öâåòà
  276.         mov     eax, 8
  277.         mov     ebx, 112 * 65536 + 5
  278.         mov     ecx, 30 * 65536 + 6
  279.         mov     edx, 13
  280. @@:     mov     esi, [d_colors - 13 * 4 + edx * 4]
  281.         mov     esi, [esi]
  282.         int     0x40
  283.         add     ecx, 10 * 65536
  284.         inc     edx
  285.         cmp     edx, 13 + 5             ; 5 êíîïîê
  286.         jne     @b
  287.        
  288.         ; Ïèøèì çàãðóçêó ïðîöåññîðà
  289.         call    cpu_usage
  290.         ;--- äîáàâëÿåì íà ãðàôèê ---
  291.         mov     esi, d_cpu_load
  292.         call    d_add
  293.         call    d_show
  294.         ;---------------------------
  295.         movzx   ecx, al
  296.         mov     eax, 47
  297.         mov     edx, 121 * 65536 + 30
  298.         xor     esi, esi
  299.         call    digit_len
  300.         int     0x40
  301.        
  302.         ; Ïèøèì èñïîëüçóåìóþ ïàìÿòü
  303.         call    mem_usage
  304.         ;--- äîáàâëÿåì íà ãðàôèê ---
  305.         mov     esi, d_mem_usage
  306.         call    d_add
  307.         call    d_show
  308.         ;---------------------------
  309.         movzx   ecx, al
  310.         mov     eax, 47
  311.         mov     edx, 121 * 65536 + 40
  312.         xor     esi, esi
  313.         call    digit_len
  314.         int     0x40
  315.        
  316.         cmp     byte[hwm_enable], 0
  317.         jne     show_mon
  318.         ; Íåò äàò÷èêîâ - ïèøåì NO
  319.         mov     ecx, 8  ;<- êîëè÷åñòâî ïàðàìåòðîâ
  320.         mov     eax, 4
  321.         mov     ebx, 121 * 65536 + 50
  322.         mov     edx, msg_no
  323.         mov     esi, 3
  324. @@:     int     0x40
  325.         add     ebx, 10
  326.         loop    @b
  327.  
  328.         mov     ecx, 7  ;<- êîëè÷åñòâî ïàðàìåòðîâ
  329.         mov     ebx, 260 * 65536 + 30
  330. @@:     int     0x40
  331.         add     ebx, 10
  332.         loop    @b
  333.  
  334.         jmp     no_monitor
  335. show_mon:
  336.         ;Åñòü äàò÷èêè ïèøèì èíôó
  337.         call    hwm_get_params
  338.         ;---------------------------
  339.         ; Òåìïåðàòóðó
  340.         mov     ecx, 3
  341.         mov     esi, hwm_temps
  342.         mov     edx, 121 * 65536 + 50
  343.         xor     eax, eax
  344. sh_temp:push    ecx
  345.         lodsw
  346.         push    esi
  347.         ; ðåàêöèÿ íà èçìåíåíèÿ
  348.         xor     esi, esi
  349.         cmp     [old_t1 + ecx * 4 - 4], eax
  350.         je      @f
  351.         mov     [old_t1 + ecx * 4 - 4], eax
  352.         mov     esi, val_mod
  353. @@:     movzx   ecx, al
  354.         push    eax
  355.         mov     eax, 47
  356.         mov     ebx, 0x20000
  357.         int     0x40
  358.         pop     eax
  359.         mov     cl, ah
  360.         mov     eax, 47
  361.         mov     ebx, 0x10000
  362.         add     edx, 15 * 65536
  363.         int     0x40
  364.         sub     edx, 15 * 65536 - 10
  365.         pop     esi
  366.         pop     ecx
  367.         loop    sh_temp
  368.         ;;--- äîáàâëÿåì íà ãðàôèê temp1 ---
  369.         movzx   eax, word[hwm_temps]
  370.         mov     esi, d_temp1
  371.         call    d_add
  372.         call    d_show
  373.         ;;--- äîáàâëÿåì íà ãðàôèê temp2 ---
  374.         movzx   eax, word[hwm_temps + 2]
  375.         mov     esi, d_temp2
  376.         call    d_add
  377.         call    d_show
  378.         ;;--- äîáàâëÿåì íà ãðàôèê temp3 ---
  379.         movzx   eax, word[hwm_temps + 4]
  380.         mov     esi, d_temp3
  381.         call    d_add
  382.         call    d_show
  383.  
  384.         ;---------------------------
  385.         ; Ñêîðîñòè âðàøåíèÿ âåíòèëåé
  386.         mov     ecx, 5
  387.         mov     esi, hwm_rpms
  388.         mov     edx, 121 * 65536 + 80
  389. sh_fan: push    ecx
  390.         lodsd
  391.         push    esi
  392.         ;ðåàêöèÿ íà èçìåíåíèÿ
  393.         xor     esi, esi
  394.         cmp     [old_f1 + ecx * 4 - 4], eax
  395.         je      @f
  396.         mov     [old_f1 + ecx * 4 - 4], eax
  397.         mov     esi, val_mod
  398. @@:     mov     ecx, eax
  399.         call    digit_len
  400.         mov     eax, 47
  401.         int     0x40
  402.         add     edx, 10
  403.         pop     esi
  404.         pop     ecx
  405.         loop    sh_fan
  406.        
  407.         ;---------------------------
  408.         ; Íàïðóãè
  409.         mov     esi, hwm_voltages
  410.         mov     edi, old_volts
  411.         mov     ecx, 7
  412.         mov     ebx, 260 * 65536 + 30
  413.         mov     edx, Data_String
  414. volt_nxt:
  415.         push    ecx
  416.         push    esi
  417.         call    ftoa
  418.         ;ðåàêöèÿ íà èçìåíåíèÿ
  419.         xor     ecx, ecx
  420.         fld     dword [esi]
  421.         fsub    dword [edi]
  422.         fabs
  423.        
  424.         ; fcomp dword [c_eps]   ; bug in MeOsEmul
  425.         ; fstsw ax
  426.         fcom    dword [c_eps]   ; 0xBADCODE
  427.         fstsw   ax
  428.         finit  
  429.        
  430.         sahf
  431.         jc      @f
  432.         mov     ecx, val_mod
  433. @@:     mov     esi, Data_String        ; ñ÷èòàåì êîë-âî ñèìâîëîâ
  434. @@:     lodsb
  435.         test    al, al
  436.         jnz     @b
  437.         sub     esi, Data_String
  438.        
  439.         mov     eax, 4
  440.         int     0x40
  441.         add     ebx, 10
  442.         pop     esi
  443.         pop     ecx
  444.         movsd
  445.         loop    volt_nxt
  446.        
  447. no_monitor:
  448.         ;---------------------------
  449.         ; Ñîçäà¸ì êíîïêè âêëàäîê
  450.         mov     edi, 250 * 65536 + 25
  451.         mov     ecx, 4
  452.         mov     eax, 8
  453.         mov     ebx, 10 * 65536 + 70
  454.         mov     edx, 2
  455. n_bt:   push    ecx
  456.         mov     ecx, edi
  457.         mov     esi, tcol
  458.         cmp     byte [act_tab], dl
  459.         jne     na1
  460.         mov     esi, atcol
  461. na1:    int     0x40
  462.         inc     edx
  463.         add     ebx, 73 * 65536
  464.         pop     ecx
  465.         loop    n_bt
  466.         ; Ïèøèì íàçâàíèÿ âêëàäîê
  467.         mov     eax, 4
  468.         mov     ebx, 35 * 65536 + 260
  469.         mov     edx, tab_lab
  470.         mov     ecx, 0x10000000
  471.         mov     esi, 39
  472.         int     0x40
  473.         ; ñîçäà¸ì ðàìêó âíèçó ýêðàíà
  474.         mov     eax, 13
  475.         mov     ebx, 10 * 65536 + 290
  476.         mov     ecx, 275 * 65536 + 160
  477.         mov     edx, atcol
  478.         int     0x40
  479.         mov     ebx, 12 * 65536 + 286
  480.         mov     ecx, 277 * 65536 + 156
  481.         mov     edx, tcol
  482.         int     0x40
  483.         ; ðèñóåì âûáðàííóþ âêëàäêó
  484.         mov     al, [act_tab]
  485.         cmp     al, 2
  486.         je      info_tab
  487.         cmp     al, 3
  488.         je      test_tab
  489.         cmp     al, 4
  490.         je      config_tab
  491.         jmp     about_tab
  492. end_drow_tab:
  493.         mov     eax, 12
  494.         mov     ebx, 2
  495.         int     0x40
  496.         jmp     wait_for_event
  497. ;--- Drow Info tab ---------------
  498. info_tab:
  499.         include "tab_info.inc"
  500. ;--- Drow test tab ---------------
  501. test_tab:
  502.         include "tab_test.inc"
  503. ;--- Drow Config tab -------------
  504. config_tab:
  505.         include "tab_conf.inc"
  506. ;--- Drow About tab --------------
  507. about_tab:
  508.         include "tab_about.inc"
  509. ;---------------------------------------------------------------------
  510.         include "system.inc"
  511.         include "hwm.inc"
  512.         include "diag.inc"
  513.        
  514.  
  515. DATA
  516. act_tab         db      2                       ; Íîìåð àêòèâíîé âêëàäêè
  517. tab_lab         db      'Info       Tests      Configs     About'
  518. title           db      'Ghost Monitor v0.4 [26/12/06]'
  519.  
  520. msgs_mon mls \
  521.         'CPU Load (%)',\
  522.         'Mem Usage(%)',\
  523.         'Temp1',\
  524.         'Temp2',\
  525.         'Temp3',\
  526.         'Fan1',\
  527.         'Fan2',\
  528.         'Fan3',\
  529.         'Fan4',\
  530.         'Fan5'
  531.        
  532. msgs_mon2 mls \
  533.         'Vcore',\
  534.         'AGP',\
  535.         '+3.3V',\
  536.         'AVcc (+5V)',\
  537.         '+12V',\
  538.         '-12V',\
  539.         '-5V'
  540.  
  541. msg_yes         db      'Yes'
  542. msg_no          db      'N/A'
  543.  
  544. update_time     dd      300                     ; ïåðèîä îáíîâëåíèÿ â ñîòûõ äîëÿõ ñåêóíäû
  545. d_colors        dd      d_cpu_load, d_mem_usage, d_temp1, d_temp2, d_temp3
  546. c_eps           dd      0.01
  547.  
  548. ; Öâåòà ãðàôèêîâ
  549. colors:         dd      0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000    ; ïåðâûé è ïîñëåäíèé ðàâíû
  550. colors_end:
  551. ;---------------------------------------------------------------------
  552. UDATA
  553.  
  554. test_pid        dd      ?                       ; åñëè test_id == 0 - íå èìååò ñìûñëà
  555. test_id         db      ?                       ; 0 - òåñò íå çàïóøåí (ñîîòâåòñòâóåò ¹ êíîïêè 6..10)
  556. diag_add_v      db      ?                       ; 0 - íå äîáàâëÿòü äàííûå íà ãðàôèê, !0 - äîáàâëÿòü
  557.  
  558. Vendor:         times   12 db ?
  559. CPU_fam:        db      ?
  560. CPU_mod:        db      ?
  561. CPU_type:       db      ?
  562. CPU_mmx:        db      ?
  563.  
  564. ; Äëÿ ðåàêöèè íà èçìåíåíèÿ
  565. old_t1:         dd      ?       ; ïîñëåäíåå çíà÷åíèå temp1
  566. old_t2:         dd      ?       ; ...
  567. old_t3:         dd      ?
  568. old_f1:         dd      ?
  569. old_f2:         dd      ?
  570. old_f3:         dd      ?
  571. old_volts:      times   7 dd ?
  572.  
  573. ; Ãðôèêè
  574. diag_beg:
  575. d_cpu_load:     dd      ?
  576.                 times 286 db ?
  577.                
  578. d_mem_usage:    dd      ?
  579.                 times 286 db ?
  580.                
  581. d_temp1:        dd      ?
  582.                 times 286 db ?
  583.                
  584. d_temp2:        dd      ?
  585.                 times 286 db ?
  586.  
  587. d_temp3:        dd      ?
  588.                 times 286 db ?
  589. diag_end:
  590.  
  591. ; --- ñòåê òåñòà, âîèçáåæàíèå ãëþêîâ íå ïåðåíîñèòü â äðóãîå ìåñòî ----
  592. th_stack:       times   1024 db ?
  593. stp:
  594. ;---------------------------------------------------------------------
  595. MEOS_APP_END
  596.