fix gmon flickering issue

git-svn-id: svn://kolibrios.org@6353 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
nisargshah95 2016-03-16 19:35:22 +00:00
parent 22762353bf
commit 52fcf098d4
7 changed files with 276 additions and 210 deletions

View File

@ -1,26 +1,26 @@
; ;
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы ; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
; All Right Reserved ; All Right Reserved
; ;
; ВОЗМОЖНА ПОРЧА ОБОРУДОВАНИЯ! ; ВОЗМОЖНА ПОРЧА ОБОРУДОВАНИЯ!
; ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК! ; ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК!
; ;
; Заметки : ; Заметки :
; Дописать запуск тестов (rtst) (нет реакции на ошибку запуска) ; Дописать запуск тестов (rtst) (нет реакции на ошибку запуска)
; Переделать обновление графика (сделать отдельным процессом) ; Переделать обновление графика (сделать отдельным процессом)
; Добавить реакцию на параметры датчиков ; Добавить реакцию на параметры датчиков
; ;
; Внешние файлы : ; Внешние файлы :
; hwm*.inc - процедуры работы с датчиками мониторинга ; hwm*.inc - процедуры работы с датчиками мониторинга
; system.inc - вычисление загрузки процессора, завершение теста, etc... ; system.inc - вычисление загрузки процессора, завершение теста, etc...
; tests.inc - тесты ;-) ; tests.inc - тесты ;-)
; diag.inc - поддержка диаграм ; diag.inc - поддержка диаграм
; tab_*.inc - процедуры отрисовки соответствуюших вкладок ; tab_*.inc - процедуры отрисовки соответствуюших вкладок
; Идентификаторы кнопок : ; Identifier buttons :
; 01 - Exit ; 01 - Exit
; 02 - Info tab ; 02 - Info tab
; 03 - Tests tab ; 03 - Tests tab
@ -33,7 +33,7 @@
; 10 - MMX test - not used (tab_test.inc) ; 10 - MMX test - not used (tab_test.inc)
; 11 - Update time increment (tab_conf.inc) ; 11 - Update time increment (tab_conf.inc)
; 12 - Update time decriment (tab_conf.inc) ; 12 - Update time decriment (tab_conf.inc)
; 13..17 - Изменение цвета CPU_load, Mem_usage, Temp1, Temp2, Temp3 ; 13..17 - Color Changing buttons CPU_load, Mem_usage, Temp1, Temp2, Temp3
include 'lang.inc' include 'lang.inc'
include 'config.inc' include 'config.inc'
@ -44,22 +44,22 @@ atcol equ 0x4070c0
val_mod equ 0x3090 val_mod equ 0x3090
MEOS_APP_START MEOS_APP_START
include "tests.inc" ; <-- Много выравниваний, лучше здесь include "tests.inc" ; <-- Много выравниваний, лучше здесь
CODE CODE
;--- Init ------------------------------------------------------------ ;--- Init ------------------------------------------------------------
; Очищаем неинициализированные данные ; Очищаем неинициализированные данные
mov ecx, __memory - __udata mov ecx, __memory - __udata
mov edi, __udata mov edi, __udata
xor eax, eax xor eax, eax
rep stosb rep stosb
xor eax, eax xor eax, eax
cpuid ; Узнаём производителя проца cpuid ; Узнаём производителя проца
mov [Vendor + 0], ebx mov [Vendor + 0], ebx
mov [Vendor + 4], edx mov [Vendor + 4], edx
mov [Vendor + 8], ecx mov [Vendor + 8], ecx
mov eax, 1 mov eax, 1
cpuid ; Есть ли MMX ? cpuid ; Есть ли MMX ?
mov ecx, eax mov ecx, eax
shr al, 4 shr al, 4
and ax, 0x0F0F and ax, 0x0F0F
@ -72,26 +72,26 @@ CODE
and cl, 11b and cl, 11b
mov [CPU_type], cl mov [CPU_type], cl
; ! Цвета из массива colors ; ! Цвета из массива colors
mov dword[d_cpu_load], 0xFF00 ; инициализируем график загрузки АЛУ mov dword[d_cpu_load], 0xFF00 ; инициализируем график загрузки АЛУ
mov dword[d_mem_usage], 0x8BA169 ; -- mem usega mov dword[d_mem_usage], 0x8BA169 ; -- mem usega
mov dword[d_temp1], 0xFF0000 ; -- график температуры ЦПУ mov dword[d_temp1], 0xFF0000 ; -- график температуры ЦПУ
mov dword[d_temp2], 0xFF ; -- график температуры МП mov dword[d_temp2], 0xFF ; -- график температуры МП
mov dword[d_temp3], 0xFF7E23 mov dword[d_temp3], 0xFF7E23
call hwm_init ; Инициализируем чип мониторинга call hwm_init ; Initialize monitoring chip
jmp draw_window jmp draw_window
;--- Wait & translate event ------------------------------------------ ;--- Wait & translate event ------------------------------------------
wait_for_event: wait_for_event:
mov byte[diag_add_v], 0 ; добавляем данные к графику только по таймеру mov byte[diag_add_v], 0 ; добавляем данные к графику только по таймеру
mov ebx, [update_time] mov ebx, [update_time]
mov eax, 23 mov eax, 23
int 0x40 int 0x40
test eax, eax test eax, eax
jnz @f jnz @f
inc byte [diag_add_v] inc byte [diag_add_v]
inc eax ; перерисуем окно (eax := 1) jmp redraw
@@: dec eax ; redraw request ? @@: dec eax ; redraw request ?
jz draw_window jz draw_window
dec eax ; key in buffer ? dec eax ; key in buffer ?
@ -103,7 +103,7 @@ wait_for_event:
key: key:
mov eax, 2 mov eax, 2
int 0x40 int 0x40
cmp ah, 27 ; Esc - завершение работы cmp ah, 27 ; Esc - shutdown
je exit je exit
jmp wait_for_event jmp wait_for_event
;--- Button down ----------------------------------------------------- ;--- Button down -----------------------------------------------------
@ -118,25 +118,25 @@ exit: cmp byte[test_id], 0
@@: mov eax, -1 ; close this program @@: mov eax, -1 ; close this program
int 0x40 int 0x40
noexit: noexit:
; кнопки вкладок (2 .. 5) ; button tabs (2 .. 5)
cmp ah, 5 cmp ah, 5
jg no_tabs jg no_tabs
mov byte[act_tab], ah mov byte[act_tab], ah
jmp draw_window jmp redraw_tabs
no_tabs: no_tabs:
; кнопки запуска тество (6 .. 10) ; кнопки запуска тество (6 .. 10)
cmp ah, 10 cmp ah, 10
jg no_test_bt jg no_test_bt
; если нет запущеных тестов - запускаем выбранный ; если нет запущеных тестов - запускаем выбранный
cmp byte[test_id], 0 cmp byte[test_id], 0
je run_test je run_test
; если кнопка активного теста - останавливаем тест, иначе ничего не делаем ; если кнопка активного теста - останавливаем тест, иначе ничего не делаем
cmp [test_id], ah cmp [test_id], ah
jne wait_for_event jne wait_for_event
call stop_test call stop_test
jmp draw_window jmp redraw_tabs
tsts: dd p5, p6, k6, k7 tsts: dd p5, p6, k6_, k7_
run_test: run_test:
push eax push eax
movzx ecx, ah movzx ecx, ah
@ -146,41 +146,41 @@ rtst: mov eax, 51
mov ebx, 1 mov ebx, 1
int 0x40 int 0x40
cmp eax, 0xFFFFFFF0 ; -16 cmp eax, 0xFFFFFFF0 ; -16
je wait_for_event ; <-- ошибка запуска теста, ПЕРЕПИСАТЬ je wait_for_event ; <-- ошибка запуска теста, ПЕРЕПИСАТЬ
mov [test_pid], eax mov [test_pid], eax
pop eax pop eax
mov byte [test_id], ah mov byte [test_id], ah
jmp draw_window jmp redraw_tabs
;------------------------- ;-------------------------
; кнопки изменения времени обновления ; кнопки изменения времени обновления
no_test_bt: no_test_bt:
cmp ah, 11 cmp ah, 11
jne no_ut_inc jne no_ut_inc
add dword[update_time], 10 add dword[update_time], 10
jmp draw_window jmp redraw_tabs
no_ut_inc: no_ut_inc:
cmp ah, 12 cmp ah, 12
jne no_ut_dec jne no_ut_dec
cmp dword[update_time], 10 cmp dword[update_time], 10
jng wait_for_event jng wait_for_event
sub dword[update_time], 10 sub dword[update_time], 10
jmp draw_window jmp redraw_tabs
no_ut_dec: no_ut_dec:
;------------------------- ;-------------------------
; кнопки изменения цвета графиков (13..17) ; color change button schedules (13..17)
cmp ah, 17 cmp ah, 17
jg no_change_color jg no_change_color
sub ah, 13 sub ah, 13
movzx ecx, ah movzx ecx, ah
mov esi, [d_colors + ecx * 4] mov esi, [d_colors + ecx * 4]
mov eax, [esi] mov eax, [esi]
mov ecx, (colors_end - colors) / 4 ; количество цветов mov ecx, (colors_end - colors) / 4 ; number of colors
@@: dec ecx @@: dec ecx
cmp eax, [colors + ecx * 4] cmp eax, [colors + ecx * 4]
jne @b jne @b
mov ebx, [colors + ecx * 4 - 4] mov ebx, [colors + ecx * 4 - 4]
mov [esi], ebx mov [esi], ebx
jmp draw_window jmp redraw_tabs
no_change_color: no_change_color:
jmp wait_for_event jmp wait_for_event
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
@ -188,19 +188,147 @@ draw_window:
mov eax,12 mov eax,12
mov ebx,1 mov ebx,1
int 0x40 int 0x40
; Создаём окно ; Создаём окно
xor eax, eax xor eax, eax
mov ebx, 300 * 65536 + 309 mov ebx, 300 * 65536 + 309
mov ecx, 150 * 65536 + 450 mov ecx, 150 * 65536 + 450
mov edx, tcol + 0x14000000 ; color of work area RRGGBB,8->color mov edx, tcol + 0x14000000 ; color of work area RRGGBB,8->color
mov edi, title ; color of frames RRGGBB mov edi, title ; color of frames RRGGBB
int 0x40 int 0x40
; Создаём рамку графика ; Create a graphic frame (not for graph)
mov eax, 13 mov eax, 13
mov ebx, 10 * 65536 + 290 mov ebx, 10 * 65536 + 290
mov ecx, 138 * 65536 + 105 mov ecx, 138 * 65536 + 105
mov edx, atcol mov edx, atcol
int 0x40 int 0x40
; write parameter names (Cpu load, temper, etc ...)
mov edx, msgs_mon ; text for indicators
mov ebx, 17 * 65536 + 30
call show_text
mov edx, msgs_mon2
mov ebx, 166 * 65536 + 30
call show_text
jmp draw_tabs ; draw tabs for the first time
redraw_tabs: ; delete previously created tabs
mov ecx, 4
mov eax, 8
mov edx, 0x80000000 + 2
del_tabs:
int 0x40
inc edx
loop del_tabs
; Delete color change buttons
mov eax, 8
mov edx, 0x80000000 + 13
@@:
int 0x40
inc edx
cmp edx, 0x80000000 + 13 + 5 ; 5 (buttons)
jne @b
draw_tabs:
; Drawing color change buttons
mov eax, 8
mov ebx, 112 * 65536 + 5
mov ecx, 30 * 65536 + 6
mov edx, 13
@@:
mov esi, [d_colors - 13 * 4 + edx * 4]
mov esi, [esi]
int 0x40
add ecx, 10 * 65536
inc edx
cmp edx, 13 + 5 ; 5 (buttons)
jne @b
; info, test, config, about buttons
; Create 4 buttons
mov edi, 250 * 65536 + 25
mov ecx, 4
mov eax, 8
mov ebx, 10 * 65536 + 70
mov edx, 2
n_bt:
push ecx
mov ecx, edi
mov esi, tcol
cmp byte [act_tab], dl
jne na1
mov esi, atcol
na1:
int 0x40
inc edx
add ebx, 73 * 65536
pop ecx
loop n_bt
; write name tabs
mov eax, 4
mov ebx, (18 shl 16) + 256
mov edx, tab_lab
mov ecx, 0x10000000
mov esi, 4
int 0x40
add ebx, (72 shl 16)
mov edx, tab_lab.2
mov esi, 5
int 0x40
add ebx, (72 shl 16)
mov edx, tab_lab.3
mov esi, 7
int 0x40
add ebx, (72 shl 16)
mov edx, tab_lab.4
mov esi, 5
int 0x40
; create a frame at the bottom of the screen
mov eax, 13
mov ebx, 10 * 65536 + 290
mov ecx, 275 * 65536 + 160
mov edx, atcol
int 0x40
mov ebx, 12 * 65536 + 286
mov ecx, 277 * 65536 + 156
mov edx, tcol
int 0x40
; draw the selected tab
mov al, [act_tab]
cmp al, 2
je info_tab
cmp al, 3
je test_tab
cmp al, 4
je config_tab
jmp about_tab
;--- Drow Info tab ---------------
info_tab:
include "tab_info.inc"
;--- Drow test tab ---------------
test_tab:
include "tab_test.inc"
;--- Drow Config tab -------------
config_tab:
include "tab_conf.inc"
;--- Drow About tab --------------
about_tab:
include "tab_about.inc"
redraw:
; frame for graph
mov eax, 13
mov ebx, 12 * 65536 + 286 mov ebx, 12 * 65536 + 286
mov ecx, 140 * 65536 + 101 mov ecx, 140 * 65536 + 101
mov edx, tcol mov edx, tcol
@ -211,48 +339,27 @@ draw_window:
mov ecx, 140 * 65536 + 140 mov ecx, 140 * 65536 + 140
@@: add ecx, 10 * 65536 + 10 @@: add ecx, 10 * 65536 + 10
int 0x40 int 0x40
cmp cx, 230 ; привязано к координатам окна cmp cx, 230 ; привязано к координатам окна
jl @b jl @b
; Пишим названия параметров (Cpu load, temper, etc...) ; write CPU usage
mov edx, msgs_mon call cpu_usage
mov ebx, 17 * 65536 + 30 ;--- добавляем на график ---
call show_text mov esi, d_cpu_load
call d_add
mov edx, msgs_mon2 call d_show
mov ebx, 156 * 65536 + 30
call show_text
; Рисуем кнопки смены цвета
mov eax, 8
mov ebx, 112 * 65536 + 5
mov ecx, 30 * 65536 + 6
mov edx, 13
@@: mov esi, [d_colors - 13 * 4 + edx * 4]
mov esi, [esi]
int 0x40
add ecx, 10 * 65536
inc edx
cmp edx, 13 + 5 ; 5 кнопок
jne @b
; Пишим загрузку процессора
call cpu_usage
;--- добавляем на график ---
mov esi, d_cpu_load
call d_add
call d_show
;--------------------------- ;---------------------------
movzx ecx, al movzx ecx, al
mov eax, 47 mov eax, 47
mov edx, 121 * 65536 + 30 mov edx, 121 * 65536 + 30
xor esi, esi xor esi, esi
call digit_len call digit_len
clear_prev_no edx
int 0x40 int 0x40
; Пишим используемую память ; write used memory
call mem_usage call mem_usage
;--- добавляем на график --- ;--- добавляем на график ---
mov esi, d_mem_usage mov esi, d_mem_usage
call d_add call d_add
call d_show call d_show
@ -262,12 +369,13 @@ draw_window:
mov edx, 121 * 65536 + 40 mov edx, 121 * 65536 + 40
xor esi, esi xor esi, esi
call digit_len call digit_len
clear_prev_no edx
int 0x40 int 0x40
cmp byte[hwm_enable], 0 cmp byte[hwm_enable], 0
jne show_mon jne show_mon
; Нет датчиков - пишем NO ; Нет датчиков - пишем NO
mov ecx, 8 ;<- количество параметров mov ecx, 8 ;<- number of parameters
mov eax, 4 mov eax, 4
mov ebx, 121 * 65536 + 50 mov ebx, 121 * 65536 + 50
mov edx, msg_no mov edx, msg_no
@ -276,7 +384,7 @@ draw_window:
add ebx, 10 add ebx, 10
loop @b loop @b
mov ecx, 7 ;<- количество параметров mov ecx, 7 ;<- number of parameters
mov ebx, 260 * 65536 + 30 mov ebx, 260 * 65536 + 30
@@: int 0x40 @@: int 0x40
add ebx, 10 add ebx, 10
@ -284,10 +392,10 @@ draw_window:
jmp no_monitor jmp no_monitor
show_mon: show_mon:
;Есть датчики пишим инфу ;Есть датчики пишим инфу
call hwm_get_params call hwm_get_params
;--------------------------- ;---------------------------
; Температуру ; Температуру
mov ecx, 3 mov ecx, 3
mov esi, hwm_temps mov esi, hwm_temps
mov edx, 121 * 65536 + 50 mov edx, 121 * 65536 + 50
@ -295,7 +403,7 @@ show_mon:
sh_temp:push ecx sh_temp:push ecx
lodsw lodsw
push esi push esi
; реакция на изменения ; реакция на изменения
xor esi, esi xor esi, esi
cmp [old_t1 + ecx * 4 - 4], eax cmp [old_t1 + ecx * 4 - 4], eax
je @f je @f
@ -305,6 +413,7 @@ sh_temp:push ecx
push eax push eax
mov eax, 47 mov eax, 47
mov ebx, 0x20000 mov ebx, 0x20000
clear_prev_no edx
int 0x40 int 0x40
pop eax pop eax
mov cl, ah mov cl, ah
@ -316,31 +425,31 @@ sh_temp:push ecx
pop esi pop esi
pop ecx pop ecx
loop sh_temp loop sh_temp
;;--- добавляем на график temp1 --- ;;--- Add to the chart temp1 ---
movzx eax, word[hwm_temps] movzx eax, word[hwm_temps]
mov esi, d_temp1 mov esi, d_temp1
call d_add call d_add
call d_show call d_show
;;--- добавляем на график temp2 --- ;;--- Add to the chart temp2 ---
movzx eax, word[hwm_temps + 2] movzx eax, word[hwm_temps + 2]
mov esi, d_temp2 mov esi, d_temp2
call d_add call d_add
call d_show call d_show
;;--- добавляем на график temp3 --- ;;--- Add to the chart temp3 ---
movzx eax, word[hwm_temps + 4] movzx eax, word[hwm_temps + 4]
mov esi, d_temp3 mov esi, d_temp3
call d_add call d_add
call d_show call d_show
;--------------------------- ;---------------------------
; Скорости врашения вентилей ; Скорости врашения вентилей
mov ecx, 5 mov ecx, 5
mov esi, hwm_rpms mov esi, hwm_rpms
mov edx, 121 * 65536 + 80 mov edx, 121 * 65536 + 80
sh_fan: push ecx sh_fan: push ecx
lodsd lodsd
push esi push esi
;реакция на изменения ;реакция на изменения
xor esi, esi xor esi, esi
cmp [old_f1 + ecx * 4 - 4], eax cmp [old_f1 + ecx * 4 - 4], eax
je @f je @f
@ -349,6 +458,7 @@ sh_fan: push ecx
@@: mov ecx, eax @@: mov ecx, eax
call digit_len call digit_len
mov eax, 47 mov eax, 47
clear_prev_no edx
int 0x40 int 0x40
add edx, 10 add edx, 10
pop esi pop esi
@ -356,7 +466,7 @@ sh_fan: push ecx
loop sh_fan loop sh_fan
;--------------------------- ;---------------------------
; Напруги ; Напруги
mov esi, hwm_voltages mov esi, hwm_voltages
mov edi, old_volts mov edi, old_volts
mov ecx, 7 mov ecx, 7
@ -366,7 +476,7 @@ volt_nxt:
push ecx push ecx
push esi push esi
call ftoa call ftoa
;реакция на изменения ;реакция на изменения
xor ecx, ecx xor ecx, ecx
fld dword [esi] fld dword [esi]
fsub dword [edi] fsub dword [edi]
@ -381,7 +491,7 @@ volt_nxt:
sahf sahf
jc @f jc @f
mov ecx, val_mod mov ecx, val_mod
@@: mov esi, Data_String ; считаем кол-во символов @@: mov esi, Data_String ; считаем кол-во символов
@@: lodsb @@: lodsb
test al, al test al, al
jnz @b jnz @b
@ -397,78 +507,16 @@ volt_nxt:
no_monitor: no_monitor:
;--------------------------- ;---------------------------
; Создаём кнопки вкладок mov al, [act_tab] ; check if info tab is active
mov edi, 250 * 65536 + 25
mov ecx, 4
mov eax, 8
mov ebx, 10 * 65536 + 70
mov edx, 2
n_bt: push ecx
mov ecx, edi
mov esi, tcol
cmp byte [act_tab], dl
jne na1
mov esi, atcol
na1: int 0x40
inc edx
add ebx, 73 * 65536
pop ecx
loop n_bt
; Пишим названия вкладок
mov eax, 4
mov ebx, (18 shl 16) + 256
mov edx, tab_lab
mov ecx, 0x10000000
mov esi, 4
int 0x40
add ebx, (72 shl 16)
mov edx, tab_lab.2
mov esi, 5
int 0x40
add ebx, (72 shl 16)
mov edx, tab_lab.3
mov esi, 7
int 0x40
add ebx, (72 shl 16)
mov edx, tab_lab.4
mov esi, 5
int 0x40
; создаём рамку внизу экрана
mov eax, 13
mov ebx, 10 * 65536 + 290
mov ecx, 275 * 65536 + 160
mov edx, atcol
int 0x40
mov ebx, 12 * 65536 + 286
mov ecx, 277 * 65536 + 156
mov edx, tcol
int 0x40
; рисуем выбранную вкладку
mov al, [act_tab]
cmp al, 2 cmp al, 2
je info_tab jne end_drow_tab
cmp al, 3 jmp free_mem ; in tab_info.inc
je test_tab
cmp al, 4
je config_tab
jmp about_tab
end_drow_tab: end_drow_tab:
mov eax, 12 mov eax, 12
mov ebx, 2 mov ebx, 2
int 0x40 int 0x40
jmp wait_for_event jmp wait_for_event
;--- Drow Info tab ---------------
info_tab:
include "tab_info.inc"
;--- Drow test tab ---------------
test_tab:
include "tab_test.inc"
;--- Drow Config tab -------------
config_tab:
include "tab_conf.inc"
;--- Drow About tab --------------
about_tab:
include "tab_about.inc"
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
include "system.inc" include "system.inc"
include "hwm.inc" include "hwm.inc"
@ -476,7 +524,7 @@ about_tab:
DATA DATA
act_tab db 2 ; Номер активной вкладки act_tab db 2 ; active tab number
tab_lab: tab_lab:
.1: db 'Info' .1: db 'Info'
.2: db 'Tests' .2: db 'Tests'
@ -508,19 +556,19 @@ msgs_mon2 mls \
msg_yes db 'Yes' msg_yes db 'Yes'
msg_no db 'N/A' msg_no db 'N/A'
update_time dd 300 ; период обновления в сотых долях секунды update_time dd 300 ; период обновления в сотых долях секунды
d_colors dd d_cpu_load, d_mem_usage, d_temp1, d_temp2, d_temp3 d_colors dd d_cpu_load, d_mem_usage, d_temp1, d_temp2, d_temp3
c_eps dd 0.01 c_eps dd 0.01
; Цвета графиков ; Цвета графиков
colors: dd 0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000 ; первый и последний равны colors: dd 0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000 ; первый и последний равны
colors_end: colors_end:
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
UDATA UDATA
test_pid dd ? ; если test_id == 0 - не имеет смысла test_pid dd ? ; если test_id == 0 - не имеет смысла
test_id db ? ; 0 - тест не запушен (соответствует № кнопки 6..10) test_id db ? ; 0 - тест не запушен (соответствует № кнопки 6..10)
diag_add_v db ? ; 0 - не добавлять данные на график, !0 - добавлять diag_add_v db ? ; 0 - не добавлять данные на график, !0 - добавлять
Vendor: times 12 db ? Vendor: times 12 db ?
CPU_fam: db ? CPU_fam: db ?
@ -528,8 +576,8 @@ CPU_mod: db ?
CPU_type: db ? CPU_type: db ?
CPU_mmx: db ? CPU_mmx: db ?
; Для реакции на изменения ; Для реакции на изменения
old_t1: dd ? ; последнее значение temp1 old_t1: dd ? ; последнее значение temp1
old_t2: dd ? ; ... old_t2: dd ? ; ...
old_t3: dd ? old_t3: dd ?
old_f1: dd ? old_f1: dd ?
@ -537,7 +585,7 @@ old_f2: dd ?
old_f3: dd ? old_f3: dd ?
old_volts: times 7 dd ? old_volts: times 7 dd ?
; Грфики ; Грфики
diag_beg: diag_beg:
d_cpu_load: dd ? d_cpu_load: dd ?
times 286 db ? times 286 db ?
@ -555,7 +603,7 @@ d_temp3: dd ?
times 286 db ? times 286 db ?
diag_end: diag_end:
; --- стек теста, воизбежание глюков не переносить в другое место ---- ; --- стек теста, воизбежание глюков не переносить в другое место ----
th_stack: times 1024 db ? th_stack: times 1024 db ?
stp: stp:
;--------------------------------------------------------------------- ;---------------------------------------------------------------------

View File

@ -335,6 +335,19 @@ macro mov arg1,arg2
end if end if
} }
macro clear_prev_no arg1 ; clears previous number printed at arg1
{
pusha
mov ebx, 0x00070000
mov ecx, 1000000 ; dummy value
mov edx, arg1
mov esi, 0x40000000 + tcol
mov edi, tcol ; bg col
mov eax, 47
int 0x40
popa
}
struc POINT _t,_dx,_dy { struc POINT _t,_dx,_dy {
.x _t _dx .x _t _dx

View File

@ -1,5 +1,5 @@
; ;
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы ; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
; All Right Reserved ; All Right Reserved
@ -7,7 +7,7 @@
mov edx, msg_about mov edx, msg_about
mov ebx, 17 * 65536 + 285 mov ebx, 17 * 65536 + 285
call show_text call show_text
jmp end_drow_tab jmp redraw
if lang eq it if lang eq it
msg_about mls \ msg_about mls \
@ -26,7 +26,7 @@ if lang eq it
'',\ '',\
' *** Usare a prioprio rischio ***' ' *** Usare a prioprio rischio ***'
else else
msg_about mls \ ; должна быть хотябы одна строка msg_about mls \ ; должна быть хотябы одна строка
' Ghost Monitor',\ ' Ghost Monitor',\
'',\ '',\
' tool for testing and monitoring hardware',\ ' tool for testing and monitoring hardware',\

View File

@ -1,14 +1,14 @@
; ;
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы ; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
; All Right Reserved ; All Right Reserved
; ;
; ;
; Вкладка настроек ; Вкладка настроек
; ;
; Время обновления ; Время обновления
mov eax, 8 mov eax, 8
mov ebx, 200 * 65536 + 15 mov ebx, 200 * 65536 + 15
mov ecx, 280 * 65536 + 15 mov ecx, 280 * 65536 + 15
@ -40,7 +40,7 @@
mov eax, 47 mov eax, 47
int 0x40 int 0x40
; Расставляем двоеточия ; Расставляем двоеточия
mov eax, 4 mov eax, 4
mov ebx, 152 * 65536 + 285 mov ebx, 152 * 65536 + 285
mov edx, dub_p mov edx, dub_p
@ -48,7 +48,7 @@
xor ecx, ecx xor ecx, ecx
int 0x40 int 0x40
jmp end_drow_tab jmp redraw
msg_cf_utime db 'Update time' ; 11 msg_cf_utime db 'Update time' ; 11
msg_cf_pm db '+ -' ; 4 msg_cf_pm db '+ -' ; 4

View File

@ -1,27 +1,27 @@
; ;
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы ; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
; All Right Reserved ; All Right Reserved
; ;
; ;
; Вкладка информации о системе ; Вкладка информации о системе
; ;
; Дописать ещё чтоить (маловато будет) ; Дописать ещё чтоить (маловато будет)
; ;
; ;
; Пишем параметры ; Пишем параметры
mov edx, lab_info_tab mov edx, lab_info_tab
mov ebx, 17 * 65536 + 285 mov ebx, 17 * 65536 + 285
call show_text call show_text
; Пишем производителя процессора ; Пишем производителя процессора
mov edx, Vendor mov edx, Vendor
mov esi, 12 mov esi, 12
mov ebx, 160 * 65536 + 285 mov ebx, 160 * 65536 + 285
int 0x40 int 0x40
; Поддержка MMX ; Поддержка MMX
mov ebx, 160 * 65536 + 305 mov ebx, 160 * 65536 + 305
mov esi, 3 mov esi, 3
mov edx, msg_yes mov edx, msg_yes
@ -29,13 +29,13 @@
je mmx_en je mmx_en
mov edx, msg_no mov edx, msg_no
mmx_en: int 0x40 mmx_en: int 0x40
; Чип мониторинга ; Чип мониторинга
mov edx, [hwm_chip_name] mov edx, [hwm_chip_name]
or ecx, 0x80000000 or ecx, 0x80000000
mov ebx, 160 * 65536 + 325 mov ebx, 160 * 65536 + 325
mov al, 4 mov al, 4
int 0x40 int 0x40
; Частота процессора ; Частота процессора
mov eax, 18 mov eax, 18
mov ebx, 5 mov ebx, 5
int 0x40 int 0x40
@ -50,7 +50,7 @@ mmx_en: int 0x40
xor esi, esi xor esi, esi
int 0x40 int 0x40
; push eax ; Вернуть код после исправления ftoa ; push eax ; Вернуть код после исправления ftoa
; fild dword[esp] ; fild dword[esp]
; push 1000;000 ; push 1000;000
; fidiv dword[esp] ; fidiv dword[esp]
@ -67,7 +67,7 @@ mmx_en: int 0x40
; pop eax ; pop eax
; pop eax ; pop eax
; Семейство и модель процессора ; Семейство и модель процессора
mov eax, 47 mov eax, 47
mov ebx, 0x10100 mov ebx, 0x10100
xor ecx, ecx xor ecx, ecx
@ -79,7 +79,7 @@ mmx_en: int 0x40
add edx, 10 * 65536 add edx, 10 * 65536
int 0x40 int 0x40
; коэффициент умножения ; коэффициент умножения
call multiplier call multiplier
test ecx, ecx test ecx, ecx
jz @f jz @f
@ -100,7 +100,24 @@ mmx_en: int 0x40
pop eax pop eax
pop eax pop eax
@@: @@:
; Свободная память
; Расставляем двоеточия
mov eax, 4
mov ebx, 152 * 65536 + 285
mov edx, dub_p
mov esi, 1
mov ecx, 6 ; <- количество строк
nxt_dp: push ecx
xor ecx, ecx
int 0x40
add ebx, 10
pop ecx
loop nxt_dp
;---------------------------------------------------------------------
jmp redraw
free_mem:
; Свободная память
if (OS_version >= 0x0530) if (OS_version >= 0x0530)
mov eax, 18 mov eax, 18
mov ebx, 16 mov ebx, 16
@ -110,23 +127,11 @@ if (OS_version >= 0x0530)
mov eax, 47 mov eax, 47
mov edx, 160 * 65536 + 335 mov edx, 160 * 65536 + 335
xor esi, esi xor esi, esi
clear_prev_no edx
int 0x40 int 0x40
end if end if
jmp end_drow_tab
; Расставляем двоеточия
mov eax, 4
mov ebx, 152 * 65536 + 285
mov edx, dub_p
mov esi, 1
mov ecx, 6 ; <- количество строк
nxt_dp: push ecx
xor ecx, ecx
int 0x40
add ebx, 10
pop ecx
loop nxt_dp
;---------------------------------------------------------------------
jmp end_drow_tab
dub_p db ':' dub_p db ':'
if lang eq it if lang eq it

View File

@ -1,9 +1,9 @@
; ;
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы ; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
; All Right Reserved ; All Right Reserved
; ;
; Вкладка тестов ; Вкладка тестов
; ;
; "GenuineIntel" - International Electronics ; "GenuineIntel" - International Electronics
; "GenuineTMx86" - Transmeta Processor ; "GenuineTMx86" - Transmeta Processor
@ -59,7 +59,7 @@ k6n: int 0x40
jne k7n jne k7n
mov esi, atcol mov esi, atcol
k7n: int 0x40 k7n: int 0x40
; Пишем названия кнопок ; Пишем названия кнопок
mov eax, 4 mov eax, 4
mov ebx, 30 * 65536 + 307 mov ebx, 30 * 65536 + 307
mov esi, 7 mov esi, 7
@ -110,7 +110,7 @@ nr4: int 0x40
mov edx, atcol mov edx, atcol
int 0x40 int 0x40
jmp end_drow_tab jmp redraw
tmsg_p db 'Pentium (Pro/II/III)' ; 7/20 tmsg_p db 'Pentium (Pro/II/III)' ; 7/20
tmsg_k6 db 'K6 (I/II/III)' ; 13 tmsg_k6 db 'K6 (I/II/III)' ; 13

View File

@ -1,5 +1,5 @@
; ;
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы ; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
; All Right Reserved ; All Right Reserved
; ;
@ -9,10 +9,10 @@
; adapted by Mihailov Ilia ; adapted by Mihailov Ilia
; ;
; Заметки : ; Заметки :
; переписть реакцию на ошибки ; переписть реакцию на ошибки
k6: k6_:
finit finit
push ebp push ebp
mov ebp, esp mov ebp, esp
@ -67,7 +67,7 @@ k6_int_exit:
int 0x40 int 0x40
;####################################################################### ;#######################################################################
;####################################################################### ;#######################################################################
k7: finit k7_: finit
mov ebp, esp mov ebp, esp
and ebp,-32 and ebp,-32
sub esp,96 sub esp,96