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.