forked from KolibriOS/kolibrios
fixed CPUID extended Family/Model detection for modern CPUs
git-svn-id: svn://kolibrios.org@7676 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e1a519a379
commit
f16345a714
@ -7,47 +7,47 @@
|
|||||||
; ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК!
|
; ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК!
|
||||||
;
|
;
|
||||||
; Заметки :
|
; Заметки :
|
||||||
; Дописать запуск тестов (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 :
|
; Identifier buttons :
|
||||||
; 01 - Exit
|
; 01 - Exit
|
||||||
; 02 - Info tab
|
; 02 - Info tab
|
||||||
; 03 - Tests tab
|
; 03 - Tests tab
|
||||||
; 04 - Config tab
|
; 04 - Config tab
|
||||||
; 05 - About tab
|
; 05 - About tab
|
||||||
; 06 - P5 test (tab_test.inc)
|
; 06 - P5 test (tab_test.inc)
|
||||||
; 07 - P6 test (tab_test.inc)
|
; 07 - P6 test (tab_test.inc)
|
||||||
; 08 - K6 test (tab_test.inc)
|
; 08 - K6 test (tab_test.inc)
|
||||||
; 09 - K7 test (tab_test.inc)
|
; 09 - K7 test (tab_test.inc)
|
||||||
; 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 - Color Changing buttons CPU_load, Mem_usage, Temp1, Temp2, Temp3
|
; 13..17 - Color Changing buttons CPU_load, Mem_usage, Temp1, Temp2, Temp3
|
||||||
|
|
||||||
include 'config.inc'
|
include 'config.inc'
|
||||||
include 'macros.inc'
|
include 'macros.inc'
|
||||||
|
|
||||||
macro clear_prev_no arg1 ; clears previous number printed at arg1
|
macro clear_prev_no arg1 ; clears previous number printed at arg1
|
||||||
{
|
{
|
||||||
pusha
|
pusha
|
||||||
mov ebx, 0x00070000
|
mov ebx, 0x00070000
|
||||||
mov ecx, 1000000 ; dummy value
|
mov ecx, 1000000 ; dummy value
|
||||||
mov edx, arg1
|
mov edx, arg1
|
||||||
mov esi, 0x40000000 + tcol
|
mov esi, 0x40000000 + tcol
|
||||||
mov edi, tcol ; bg col
|
mov edi, tcol ; bg col
|
||||||
mov eax, 47
|
mov eax, 47
|
||||||
int 0x40
|
int 0x40
|
||||||
popa
|
popa
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,6 +80,15 @@ CODE
|
|||||||
and ax, 0x0F0F
|
and ax, 0x0F0F
|
||||||
mov [CPU_fam], ah
|
mov [CPU_fam], ah
|
||||||
mov [CPU_mod], al
|
mov [CPU_mod], al
|
||||||
|
mov eax, ecx
|
||||||
|
shr eax, 12
|
||||||
|
and eax, 0x0FFF0 ; Extended Family/Model bits
|
||||||
|
or [CPU_mod], al
|
||||||
|
mov al, [CPU_fam] ; will not work on AMD fam.20h -- fix it later!!
|
||||||
|
cmp al, 0x0F
|
||||||
|
jne @f
|
||||||
|
add [CPU_fam], ah
|
||||||
|
@@:
|
||||||
shr edx, 23
|
shr edx, 23
|
||||||
and dl, 1
|
and dl, 1
|
||||||
mov [CPU_mmx], dl
|
mov [CPU_mmx], dl
|
||||||
@ -218,9 +227,9 @@ draw_window:
|
|||||||
int 0x40
|
int 0x40
|
||||||
|
|
||||||
; write parameter names (Cpu load, temper, etc ...)
|
; write parameter names (Cpu load, temper, etc ...)
|
||||||
mov edx, msgs_mon ; text for indicators
|
mov edx, msgs_mon ; text for indicators
|
||||||
mov ebx, 17 * 65536 + 30
|
mov ebx, 17 * 65536 + 30
|
||||||
call show_text
|
call show_text
|
||||||
|
|
||||||
mov edx, msgs_mon2
|
mov edx, msgs_mon2
|
||||||
mov ebx, 166 * 65536 + 30
|
mov ebx, 166 * 65536 + 30
|
||||||
@ -244,7 +253,7 @@ del_tabs:
|
|||||||
@@:
|
@@:
|
||||||
int 0x40
|
int 0x40
|
||||||
inc edx
|
inc edx
|
||||||
cmp edx, 0x80000000 + 13 + 5 ; 5 (buttons)
|
cmp edx, 0x80000000 + 13 + 5 ; 5 (buttons)
|
||||||
jne @b
|
jne @b
|
||||||
|
|
||||||
draw_tabs:
|
draw_tabs:
|
||||||
@ -261,7 +270,7 @@ draw_tabs:
|
|||||||
int 0x40
|
int 0x40
|
||||||
add ecx, 10 * 65536
|
add ecx, 10 * 65536
|
||||||
inc edx
|
inc edx
|
||||||
cmp edx, 13 + 5 ; 5 (buttons)
|
cmp edx, 13 + 5 ; 5 (buttons)
|
||||||
jne @b
|
jne @b
|
||||||
|
|
||||||
; info, test, config, about buttons
|
; info, test, config, about buttons
|
||||||
@ -271,19 +280,19 @@ draw_tabs:
|
|||||||
mov eax, 8
|
mov eax, 8
|
||||||
mov ebx, 10 * 65536 + 70
|
mov ebx, 10 * 65536 + 70
|
||||||
mov edx, 2
|
mov edx, 2
|
||||||
n_bt:
|
n_bt:
|
||||||
push ecx
|
push ecx
|
||||||
mov ecx, edi
|
mov ecx, edi
|
||||||
mov esi, tcol
|
mov esi, tcol
|
||||||
cmp byte [act_tab], dl
|
cmp byte [act_tab], dl
|
||||||
jne na1
|
jne na1
|
||||||
mov esi, atcol
|
mov esi, atcol
|
||||||
na1:
|
na1:
|
||||||
int 0x40
|
int 0x40
|
||||||
inc edx
|
inc edx
|
||||||
add ebx, 73 * 65536
|
add ebx, 73 * 65536
|
||||||
pop ecx
|
pop ecx
|
||||||
loop n_bt
|
loop n_bt
|
||||||
|
|
||||||
; write name tabs
|
; write name tabs
|
||||||
mov eax, 4
|
mov eax, 4
|
||||||
@ -319,25 +328,25 @@ na1:
|
|||||||
; draw the selected tab
|
; draw the selected tab
|
||||||
mov al, [act_tab]
|
mov al, [act_tab]
|
||||||
cmp al, 2
|
cmp al, 2
|
||||||
je info_tab
|
je info_tab
|
||||||
cmp al, 3
|
cmp al, 3
|
||||||
je test_tab
|
je test_tab
|
||||||
cmp al, 4
|
cmp al, 4
|
||||||
je config_tab
|
je config_tab
|
||||||
jmp about_tab
|
jmp about_tab
|
||||||
|
|
||||||
;--- Drow Info tab ---------------
|
;--- Drow Info tab ---------------
|
||||||
info_tab:
|
info_tab:
|
||||||
include "tab_info.inc"
|
include "tab_info.inc"
|
||||||
;--- Drow test tab ---------------
|
;--- Drow test tab ---------------
|
||||||
test_tab:
|
test_tab:
|
||||||
include "tab_test.inc"
|
include "tab_test.inc"
|
||||||
;--- Drow Config tab -------------
|
;--- Drow Config tab -------------
|
||||||
config_tab:
|
config_tab:
|
||||||
include "tab_conf.inc"
|
include "tab_conf.inc"
|
||||||
;--- Drow About tab --------------
|
;--- Drow About tab --------------
|
||||||
about_tab:
|
about_tab:
|
||||||
include "tab_about.inc"
|
include "tab_about.inc"
|
||||||
|
|
||||||
redraw:
|
redraw:
|
||||||
|
|
||||||
@ -358,11 +367,11 @@ redraw:
|
|||||||
jl @b
|
jl @b
|
||||||
|
|
||||||
; write CPU usage
|
; write CPU usage
|
||||||
call cpu_usage
|
call cpu_usage
|
||||||
;--- добавляем на график ---
|
;--- добавляем на график ---
|
||||||
mov esi, d_cpu_load
|
mov esi, d_cpu_load
|
||||||
call d_add
|
call d_add
|
||||||
call d_show
|
call d_show
|
||||||
;---------------------------
|
;---------------------------
|
||||||
movzx ecx, al
|
movzx ecx, al
|
||||||
mov eax, 47
|
mov eax, 47
|
||||||
@ -497,7 +506,7 @@ volt_nxt:
|
|||||||
fsub dword [edi]
|
fsub dword [edi]
|
||||||
fabs
|
fabs
|
||||||
|
|
||||||
; fcomp dword [c_eps] ; bug in MeOsEmul
|
; fcomp dword [c_eps] ; bug in MeOsEmul
|
||||||
; fstsw ax
|
; fstsw ax
|
||||||
fcom dword [c_eps] ; 0xBADCODE
|
fcom dword [c_eps] ; 0xBADCODE
|
||||||
fstsw ax
|
fstsw ax
|
||||||
@ -522,7 +531,7 @@ volt_nxt:
|
|||||||
|
|
||||||
no_monitor:
|
no_monitor:
|
||||||
;---------------------------
|
;---------------------------
|
||||||
mov al, [act_tab] ; check if info tab is active
|
mov al, [act_tab] ; check if info tab is active
|
||||||
cmp al, 2
|
cmp al, 2
|
||||||
jne end_drow_tab
|
jne end_drow_tab
|
||||||
jmp free_mem ; in tab_info.inc
|
jmp free_mem ; in tab_info.inc
|
||||||
|
Loading…
Reference in New Issue
Block a user