/programs/system/gmon/info_tab.inc |
---|
File deleted |
/programs/system/gmon/test_tab.inc |
---|
File deleted |
\ No newline at end of file |
/programs/system/gmon/abou_tab.inc |
---|
File deleted |
/programs/system/gmon/conf_tab.inc |
---|
File deleted |
\ No newline at end of file |
/programs/system/gmon/SMBus.inc |
---|
0,0 → 1,67 |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
; SMBus interface |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
;include 'smb_nf2.inc' |
smb_base dd 0 ; IO port base for SMBus acces |
smb_slave dd 0 ; SMBus addres for monitoring chip |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
smbInit: |
; Èçìåíèòü, êîä òîëüêî äëÿ òåñòèðîâàíèÿ !!! |
; mov dword[IO_Read ], nf2_readb |
; mov dword[IO_Write], nf2_writeb |
; See pci_pm.c -> pci_pm_smb_prob |
.exit_err: |
stc |
ret |
.exit_ok: |
clc |
ret |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
; pci_bus_num: db 2 ; Íîìåð øèíû |
; pci_devfn: db 255 |
; find_north_bridg: |
; mov bl, 6 |
; xor cl, cl |
; nbus: mov bh, [pci_bus_num] |
; ndevfn: mov ch, [pci_devfn] |
; mov eax, 62 |
; int 0x40 |
; cmp eax, 0xffffffff |
; je bd_next |
;;;;--------- |
; mov esi, bd_table_end - bd_table - 12 |
; @@: cmp eax, [bd_table + esi] |
; je bd_found |
; test esi, esi |
; jz bd_next |
; sub esi, 12 |
; jmp @b |
;;;;--------- |
; bd_next:dec byte[pci_devfn] |
; jns ndevfn |
; mov byte[pci_devfn], 0 |
; dec byte[pci_bus_num] |
; jns nbus |
; ret |
; bd_found: |
; add esi, bd_table + 4 |
; mov edi, nb_name |
; mov ecx, 2 |
; rep movsd |
; mov [bd_id], eax |
; ret |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
smbClose: |
ret |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
/programs/system/gmon/config.inc |
---|
1,4 → 1,3 |
nl equ 0x0d, 0x0a |
; 0x00xx - Menuet 0.xx |
; 0x0400 - Kolibi 4 (íîâîå çàâåðøåíèå ïðîöåññà) |
6,3 → 5,5 |
; 0x0530 - âñåãî/ñâîáîäíî ïàìÿòè |
; 0x0580 - íîâîå çàâåðøåíèå ïðîöåññà |
OS_version equ 0x0580 |
SMBus fix no ; yes |
/programs/system/gmon/diag.inc |
---|
21,11 → 21,11 |
mov ebx, 12 * 65536 + 13 |
xor eax, eax |
lodsb |
mov cx, 220 |
mov cx, 240 |
sub ecx, eax |
@@: shl ecx, 16 |
mov cx, 220 |
mov cx, 240 |
lodsb |
sub ecx, eax |
mov eax, 38 |
/programs/system/gmon/gmon.asm |
---|
38,6 → 38,11 |
; 18/07/2006 - Óëè÷øèë âûâîä ìíîæèòåëÿ, èñïðàâëåííû ìíîæèòåëè äëÿ P6 Tualatin, config.inc |
; 22/07/2006 - P6 multiplier bugfix |
; 30/07/2006 - P6 multiplier bugfix |
; --- v 0.4 --- |
; 10/08/2006 - íà÷àòà ðàáîòà ïî ïîääåðæêå SMBus, ïåðåïèñàíû ôóíêöèè äëÿ ÷èïîâ ìîíèòîðèíãà |
; 24/08/2006 - äîáàâëåííà ÷àñòîòà ïðîöåññîðà |
; 10/09/2006 - bugfix |
; 25/11/2006 - äîáàâëåí ABIT uGuru |
; |
; Ýé! Ó ìåíÿ íåò ìíîãî âðåìåíè. |
46,7 → 51,7 |
; system.inc - âû÷èñëåíèå çàãðóçêè ïðîöåññîðà, çàâåðøåíèå òåñòà, etc... |
; tests.inc - òåñòû ;-) |
; diag.inc - ïîääåðæêà äèàãðàì |
; *_tab.inc - ïðîöåäóðû îòðèñîâêè ñîîòâåòñòâóþøèõ âêëàäîê |
; tab_*.inc - ïðîöåäóðû îòðèñîâêè ñîîòâåòñòâóþøèõ âêëàäîê |
; Èäåíòèôèêàòîðû êíîïîê : |
202,23 → 207,16 |
movzx ecx, ah |
mov esi, [d_colors + ecx * 4] |
mov eax, [esi] |
call next_color |
mov ecx, (colors_end - colors) / 4 ; êîëè÷åñòâî öâåòîâ |
@@: dec ecx |
cmp eax, [colors + ecx * 4] |
jne @b |
mov ebx, [colors + ecx * 4 - 4] |
mov [esi], ebx |
jmp draw_window |
no_change_color: |
jmp wait_for_event |
;--------------------------------------------------------------------- |
; Öâåòà ãðàôèêîâ |
colors: dd 0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000 ; ïåðâûé è ïîñëåäíèé ðàâíû |
next_color: |
mov ecx, (next_color - colors) / 4 ; êîëè÷åñòâî öâåòîâ |
@@: dec ecx |
cmp eax, [colors + ecx * 4] |
jne @b |
mov ebx, [colors + ecx * 4 - 4] |
ret |
;--------------------------------------------------------------------- |
draw_window: |
mov eax,12 |
mov ebx,1 |
226,7 → 224,7 |
; Ñîçäà¸ì îêíî |
xor eax, eax |
mov ebx, 300 * 65536 + 309 |
mov ecx, 150 * 65536 + 430 |
mov ecx, 150 * 65536 + 450 |
mov edx, tcol + 0x3000000 ; color of work area RRGGBB,8->color |
mov esi, 0x805080d0 ; color of grab bar RRGGBB,8->color |
mov edi, 0x005080d0 ; color of frames RRGGBB |
234,20 → 232,20 |
; Ñîçäà¸ì ðàìêó ãðàôèêà |
mov eax, 13 |
mov ebx, 10 * 65536 + 290 |
mov ecx, 118 * 65536 + 105 |
mov ecx, 138 * 65536 + 105 |
mov edx, atcol |
int 0x40 |
mov ebx, 12 * 65536 + 286 |
mov ecx, 120 * 65536 + 101 |
mov ecx, 140 * 65536 + 101 |
mov edx, tcol |
int 0x40 |
mov eax, 38 |
mov edx, atcol |
mov ebx, 12 * 65536 + 286 + 12 |
mov ecx, 120 * 65536 + 120 |
mov ecx, 140 * 65536 + 140 |
@@: add ecx, 10 * 65536 + 10 |
int 0x40 |
cmp cx, 210 ; ïðèâÿçàíî ê êîîðäèíàòàì îêíà |
cmp cx, 230 ; ïðèâÿçàíî ê êîîðäèíàòàì îêíà |
jl @b |
; Ïèøèì çàãîëîâîê |
mov eax, 4 |
310,7 → 308,7 |
cmp byte[hwm_enable], 0 |
jne show_mon |
; Íåò äàò÷èêîâ - ïèøåì NO |
mov ecx, 6 ;<- êîëè÷åñòâî ïàðàìåòðîâ |
mov ecx, 8 ;<- êîëè÷åñòâî ïàðàìåòðîâ |
mov eax, 4 |
mov ebx, 121 * 65536 + 50 |
mov edx, msg_no |
332,7 → 330,7 |
;--------------------------- |
; Òåìïåðàòóðó |
mov ecx, 3 |
mov esi, temps |
mov esi, hwm_temps |
mov edx, 121 * 65536 + 50 |
xor eax, eax |
sh_temp:push ecx |
360,17 → 358,17 |
pop ecx |
loop sh_temp |
;;--- äîáàâëÿåì íà ãðàôèê temp1 --- |
movzx eax, word[temps] |
movzx eax, word[hwm_temps] |
mov esi, d_temp1 |
call d_add |
call d_show |
;;--- äîáàâëÿåì íà ãðàôèê temp2 --- |
movzx eax, word[temps + 2] |
movzx eax, word[hwm_temps + 2] |
mov esi, d_temp2 |
call d_add |
call d_show |
;;--- äîáàâëÿåì íà ãðàôèê temp3 --- |
movzx eax, word[temps + 4] |
movzx eax, word[hwm_temps + 4] |
mov esi, d_temp3 |
call d_add |
call d_show |
377,8 → 375,8 |
;--------------------------- |
; Ñêîðîñòè âðàøåíèÿ âåíòèëåé |
mov ecx, 3 |
mov esi, rpms |
mov ecx, 5 |
mov esi, hwm_rpms |
mov edx, 121 * 65536 + 80 |
sh_fan: push ecx |
lodsd |
400,7 → 398,7 |
;--------------------------- |
; Íàïðóãè |
mov esi, Vcore |
mov esi, hwm_voltages |
mov edi, old_volts |
mov ecx, 7 |
mov ebx, 260 * 65536 + 30 |
441,7 → 439,7 |
no_monitor: |
;--------------------------- |
; Ñîçäà¸ì êíîïêè âêëàäîê |
mov edi, 230 * 65536 + 25 |
mov edi, 250 * 65536 + 25 |
mov ecx, 4 |
mov eax, 8 |
mov ebx, 10 * 65536 + 70 |
459,7 → 457,7 |
loop n_bt |
; Ïèøèì íàçâàíèÿ âêëàäîê |
mov eax, 4 |
mov ebx, 35 * 65536 + 240 |
mov ebx, 35 * 65536 + 260 |
mov edx, tab_lab |
mov ecx, 0x10000000 |
mov esi, 39 |
467,11 → 465,11 |
; ñîçäà¸ì ðàìêó âíèçó ýêðàíà |
mov eax, 13 |
mov ebx, 10 * 65536 + 290 |
mov ecx, 255 * 65536 + 160 |
mov ecx, 275 * 65536 + 160 |
mov edx, atcol |
int 0x40 |
mov ebx, 12 * 65536 + 286 |
mov ecx, 257 * 65536 + 156 |
mov ecx, 277 * 65536 + 156 |
mov edx, tcol |
int 0x40 |
; ðèñóåì âûáðàííóþ âêëàäêó |
490,16 → 488,16 |
jmp wait_for_event |
;--- Drow Info tab --------------- |
info_tab: |
include "info_tab.inc" |
include "tab_info.inc" |
;--- Drow test tab --------------- |
test_tab: |
include "test_tab.inc" |
include "tab_test.inc" |
;--- Drow Config tab ------------- |
config_tab: |
include "conf_tab.inc" |
include "tab_conf.inc" |
;--- Drow About tab -------------- |
about_tab: |
include "abou_tab.inc" |
include "tab_about.inc" |
;--------------------------------------------------------------------- |
include "system.inc" |
include "hwm.inc" |
509,7 → 507,7 |
DATA |
act_tab db 2 ; Íîìåð àêòèâíîé âêëàäêè |
tab_lab db 'Info Tests Configs About' |
title db 'Ghost Monitor v0.3 [30/07/06]' |
title db 'Ghost Monitor v0.4 [25/11/06]' |
msgs_mon mls \ |
'CPU Load (%)',\ |
519,7 → 517,9 |
'Temp3',\ |
'Fan1',\ |
'Fan2',\ |
'Fan3' |
'Fan3',\ |
'Fan4',\ |
'Fan5' |
msgs_mon2 mls \ |
'Vcore',\ |
536,6 → 536,10 |
update_time dd 300 ; ïåðèîä îáíîâëåíèÿ â ñîòûõ äîëÿõ ñåêóíäû |
d_colors dd d_cpu_load, d_mem_usage, d_temp1, d_temp2, d_temp3 |
c_eps dd 0.01 |
; Öâåòà ãðàôèêîâ |
colors: dd 0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000 ; ïåðâûé è ïîñëåäíèé ðàâíû |
colors_end: |
;--------------------------------------------------------------------- |
UDATA |
/programs/system/gmon/hwm.inc |
---|
1,11 → 1,26 |
; |
; HWM abstract interface, provide: |
; hwm_init, hwm_get_params, hwm_enable, hwm_temps, hwm_rpms, hwm_voltages, hwm_chip_name |
; |
if SMBus eq yes |
include 'SMBus.inc' |
end if |
include 'hwm_wb.inc' |
include 'hwm_it87.inc' |
include 'hwm_uguru.inc' |
;include 'hwm_via686.inc' |
uglobal |
hwm_enable:db 0 ; 0 - no, 1 - Winbond, 2 - ITE |
temps db 0,0, 0,0, 0,0 ; ãðàäóñ, äåñÿòûå, ãðàäóñ, ... |
rpms dd 0, 0, 0 ; fan1, fan2, fan3 |
hwm_enable: |
dd 0 ; 0 - no, 1 - Winbond, 2 - ITE, ... see HWMProbe list |
hwm_temps: |
db 0,0, 0,0, 0,0 ; ãðàäóñ, äåñÿòûå, ãðàäóñ, ... |
hwm_rpms: |
dd 0, 0, 0, 0, 0 ; fan1, fan2, fan3, ... |
hwm_voltages: |
Vcore dd 0.0 |
Vin0 dd 0.0 |
Vin1 dd 0.0 |
13,68 → 28,126 |
Vin2 dd 0.0 |
V12 dd 0.0 |
V5 dd 0.0 |
vol8 dd 0.0 |
vol9 dd 0.0 |
vol10 dd 0.0 |
vol11 dd 0.0 |
acc_type db 0 ; 0 - ISA Bus, 1 - SMBus, 2 - other |
endg |
IO_Read dd isaRead ; In : al - addr, out : al - value |
IO_Write dd isaWrite ; In : al - addr, bl - value |
hwm_unk db 9, 'Not found' |
hwm_chip_name dd hwm_unk |
; NOTE !!! |
; HWMProbe - ñïèñîê, ïðîöåäóð ïðîâåðêè ÷èïîâ, çàêàí÷èâàåòñÿ |
; íóëåâûì äâîéíûì ñëîâîì |
; HWMGetParam - ñïèñîê, ïðîöåäóð ïîëó÷åíèÿ ïàðàìåòðîâ |
; îáà ýòè ñïèñêà äîëæíû ñîîòâåòñòâîâàòü äðóã äðóãó ïî |
; ïî ïîðÿäêó ïðîöåäóð |
HWMProbe: dd wb_init |
dd it87_init |
dd uGuru_init |
dd 0 ; <- êîíåö ñïèñêà |
HWMGetParam: dd wb_getparam |
dd it87_getparam |
dd uGuru_getparam |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
hwm_init: |
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ |
pusha |
; Èùåì äàò÷èêè íà øèíå ISA |
call isaInit |
jc @f |
call chips_probe |
cmp byte[hwm_enable], 0 |
jne .exit |
@@: call isaClose |
mov eax, 46 ; ðåçåðâèðóåì 0x295 è 0x296 ïîðòû |
xor ebx, ebx |
mov ecx, 0x295 |
mov edx, 0x296 |
int 0x40 |
; Èùåì äàò÷èêè íà øèíå SMBus |
inc byte [acc_type] |
if SMBus eq yes |
call smbInit |
jc @f |
call chips_probe |
cmp byte[hwm_enable], 0 |
jne .exit |
@@: call smbClose |
end if |
; Èùåì äàò÷èêè íà ñîáñòâåííîé øèíå (LPC etc) |
inc byte [acc_type] |
call chips_probe |
.exit: popa |
ret |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
chips_probe: |
; Íàõîäèì íóæíûé ÷èï |
; Out : hwm_enable = !0 if found, else hwm_enable not changed |
cld ; Paranoia |
mov esi, HWMProbe |
@@: lodsd |
test eax, eax |
jz hwm_ports_ok |
hwm_no: |
mov eax, 46 ; îñâîáîæäàåì 0x295 è 0x296 ïîðòû |
xor ebx, ebx |
inc ebx |
mov ecx, 0x295 |
mov edx, 0x296 |
int 0x40 |
popa |
jz @f ; Êîíåö ñïèñêà |
call eax |
jc @b |
sub esi, HWMProbe |
shr esi, 2 |
mov dword[hwm_enable], esi |
@@: ret |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
hwm_get_params: |
pusha |
mov eax, [hwm_enable] |
test eax, eax |
jz @f |
dec eax |
sal eax, 2 |
call dword[eax + HWMGetParam] |
@@: popa |
ret |
hwm_ports_ok: |
call wb_init |
jc not_wb |
mov byte [hwm_enable], 1 |
call wb_get_name |
jmp hwm_ok |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
; ISA interface |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
isaRead: |
push edx |
mov dx, 0x295 |
out dx, al |
inc edx |
in al, dx |
pop edx |
ret |
not_wb: call it87_init |
jc hwm_no |
mov byte [hwm_enable], 2 |
call it87_get_name |
isaWrite: |
push edx |
mov dx, 0x295 |
out dx, al |
inc edx |
mov al, bl |
out dx, al |
pop edx |
ret |
hwm_ok: mov [hwm_chip_name], edx |
popa |
isaInit: |
; Out : CF = 0 if Ok |
; ðåçåðâèðóåì 0x295 è 0x296 ïîðòû |
mov ecx, 0x295 |
mov edx, 0x296 |
call ReservePorts |
; jc @f |
; mov [IO_Read], isaRead |
; mov [IO_Write], isaWrite |
; @@: |
ret |
;---------------------------------------------------- |
hwm_get_params: |
; Âûçûâàòü òîëüêî åñëè íàéäåí |
pusha |
mov al, [hwm_enable] |
dec al |
jnz @f |
call wb_get_temp |
call wb_get_fan_speed |
mov edi, wb_coeff |
call wb_get_volt |
fld dword[V12] |
fld dword[wb_n12v_const] |
faddp st1, st0 |
fstp dword[V12] |
popa |
isaClose: |
; îñâîáîæäàåì 0x295 è 0x296 ïîðòû |
mov ecx, 0x295 |
mov edx, 0x296 |
call FreePorts |
ret |
@@: call it87_get_temp |
call it87_get_fan_speed |
mov edi, ite_coeff |
call wb_get_volt |
popa |
ret |
;---------------------------------------------------- |
/programs/system/gmon/hwm_it87.inc |
---|
1,18 → 1,15 |
; Integrated Technology Express |
; Chip Temp Volt Fan |
; it8705 3 8 3 |
; it8712 3 8 3 |
; Chip Temp Volt Fan ISA SMBus |
; it8705 3 8 3 + + |
; it8712 3 8 3 + + |
; SiS |
; Chip Temp Volt Fan |
; sis950 3 8 3 |
; Chip Temp Volt Fan ISA SMBus |
; sis950 3 8 3 + + |
IT87_REGCHIP equ 0x58 |
IT87_CHIPID equ 0x90 |
IT87_FANDIV equ 0x0B |
uglobal |
it_chip_id db 0 |
endg |
it8705 db 15, 'IT8705F/SiS 950' |
it8712 db 7, 'IT8712F' |
it8716 db 7, 'IT8716F' |
29,37 → 26,47 |
it87_init: |
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ |
; OUT - CF = 1 - error |
cmp byte[acc_type], 2 ; Only ISA and SMBus |
jae it87_no |
;--- Ïðîâåðÿåì IT87* -------- |
mov dx, 0x295 |
mov al, IT87_REGCHIP |
out dx, al |
inc edx |
in al, dx |
call [IO_Read] |
cmp al, IT87_CHIPID |
jne it87_no ; ýòî íå it87 !!! |
; -~- not tested ~-~- |
dec edx ; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà -- |
mov al, 0x21 |
out dx, al |
inc edx |
in al, dx |
mov byte[it_chip_id], al |
mov al, 0x21 ; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà -- |
call [IO_Read] |
mov edx, it8705 |
cmp al, 0x05 |
je @f |
mov edx, it8712 |
cmp al, 0x12 |
je @f |
mov edx, it8716 |
cmp al, 0x16 |
je @f |
mov edx, ite_unk |
@@: mov [hwm_chip_name], edx |
; -~-~-~-~-~-~-~-~-~- |
clc |
ret |
it87_no:stc |
ret |
;----------------------------------- |
it87_getparam: |
call it87_get_temp |
call it87_get_fan_speed |
mov edi, ite_coeff |
call wb_get_volt |
ret |
;----------------------------------- |
it87_get_temp: |
mov dx, 0x296 |
xor ecx, ecx |
mov esi, temps |
@@: dec edx |
mov eax, ecx |
mov esi, hwm_temps |
@@: mov eax, ecx |
add al, 0x29 |
out dx, al |
inc edx |
in al, dx |
call [IO_Read] |
mov [esi + ecx * 2], al |
inc ecx |
cmp ecx, 3 |
69,11 → 76,9 |
it87_fan_div db 1, 1, 1 |
it87_get_fan_speed: |
; ÷èòàåì äåëèòåëè |
mov dx, 0x295 |
mov al, IT87_FANDIV |
out dx, al |
inc dx |
in al, dx |
call [IO_Read] |
mov ah, al |
and al, 0x07 |
mov [it87_fan_div], al |
82,12 → 87,10 |
mov [it87_fan_div + 1], ah |
xor ecx, ecx |
@@: mov dx, 0x295 |
mov al, 0x0D |
@@: mov al, 0x0D |
add al, cl |
out dx, al |
inc edx |
in al, dx |
call [IO_Read] |
movzx ebx, al |
push ecx |
mov cl, [it87_fan_div + ecx] |
96,7 → 99,7 |
mov eax, 1350000 |
xor edx, edx |
div ebx |
mov [rpms + 4 * ecx], eax |
mov [hwm_rpms + 4 * ecx], eax |
inc ecx |
cmp ecx, 3 |
jb @b |
103,15 → 106,3 |
ret |
;-------------------------------------------------------------------------- |
it87_get_name: |
mov edx, it8705 |
cmp byte[it_chip_id], 0x05 |
je @f |
mov edx, it8712 |
cmp byte[it_chip_id], 0x12 |
je @f |
mov edx, it8716 |
cmp byte[it_chip_id], 0x16 |
je @f |
mov edx, ite_unk |
@@: ret |
/programs/system/gmon/hwm_uguru.inc |
---|
0,0 → 1,212 |
; ABIT uGuru |
; |
; Chip Temp Volt Fan ISA SMBus LPC |
; W83L950D(?) 3 11 5 - - + |
; uGuru ports |
UGURU_CMD_PORT equ 0x0e0 |
UGURU_DATA_PORT equ 0x0e4 |
; temp sensors |
UGURU_CPUTEMP equ 0x2100 |
UGURU_SYSTEMP equ 0x2101 |
UGURU_PWMTEMP equ 0x210f |
; fans. These are placed at bank 2 |
SENS_CPUFAN equ 0x2600 |
SENS_NBFAN equ 0x2601 |
SENS_SYSFAN equ 0x2602 |
SENS_AUXFAN1 equ 0x2603 |
SENS_AUXFAN2 equ 0x2604 |
; Voltage sensors |
SENS_VCORE equ 0x2103 ; 3.49V max |
SENS_DDRVDD equ 0x2104 ; 3.49V max |
SENS_DDRVTT equ 0x210A ; 3.49V max |
SENS_NBVDD equ 0x2108 ; 3.49V max |
SENS_SBVDD equ 0x210E ; 3.49V max |
SENS_HTV equ 0x2102 ; 3.49V max |
SENS_AGP equ 0x2109 ; 3.49V max |
SENS_5V equ 0x2106 ; 6.25V max |
SENS_3V3 equ 0x2105 ; 4.36V max |
SENS_5VSB equ 0x210B ; 6.25V max |
SENS_3VDUAL equ 0x210D ; 4.36V max |
; Voltage ADC multipliers |
MLTP_3V49 equ 0.0136862745098039 |
MLTP_4V36 equ 0.0170980392156863 |
MLTP_6V25 equ 0.0245098039215686 |
v_addr: dw SENS_VCORE, SENS_DDRVDD, SENS_DDRVTT, SENS_NBVDD, SENS_SBVDD |
dw SENS_HTV, SENS_AGP, SENS_5V, SENS_3V3, SENS_5VSB, SENS_3VDUAL |
v_mult: dd MLTP_3V49, MLTP_3V49, MLTP_3V49, MLTP_3V49, MLTP_3V49, MLTP_3V49 |
dd MLTP_3V49, MLTP_6V25, MLTP_4V36, MLTP_6V25, MLTP_4V36 |
msg_uguru: db 10, 'ABIT uGuru' |
;----------------------------------- |
uGuru_init: |
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ |
; OUT - CF = 1 - error |
cmp byte[acc_type], 3 ; Special IO interface |
jne .uGuru_no |
pusha |
mov ecx, UGURU_CMD_PORT |
mov edx, UGURU_DATA_PORT |
call ReservePorts |
test eax, eax |
jnz .no_lpc |
in al, UGURU_CMD_PORT |
test al, al |
jz @f |
cmp al, 0xac |
jne .bad_sig |
@@: in al, UGURU_DATA_PORT |
test al, al |
jz @f |
cmp al, 8 |
jne .bad_sig |
@@: mov [hwm_chip_name], msg_uguru |
popa |
clc |
ret |
.bad_sig: |
; popa ; |
; clc ; <- uncomment this three line, if you certain that you |
; ret ; have ABIT uGuru but he is not defined |
.no_lpc: |
mov ecx, UGURU_CMD_PORT |
mov edx, UGURU_DATA_PORT |
call FreePorts |
popa |
.uGuru_no: |
stc |
ret |
;----------------------------------- |
uGuru_getparam: |
; Temperature |
mov ax, UGURU_CPUTEMP |
call uGuru_ReadSensor |
mov [hwm_temps + 0], al |
mov ax, UGURU_SYSTEMP |
call uGuru_ReadSensor |
mov [hwm_temps + 1], al |
mov ax, UGURU_PWMTEMP |
call uGuru_ReadSensor |
mov [hwm_temps + 2], al |
; Fan speed |
mov ax, SENS_CPUFAN |
call uGuru_ReadSensor |
mov dl, 60 |
mul dl |
mov word[hwm_rpms + 0 ], ax |
mov ax, SENS_NBFAN |
call uGuru_ReadSensor |
mov dl, 60 |
mul dl |
mov word[hwm_rpms + 4 ], ax |
mov ax, SENS_SYSFAN |
call uGuru_ReadSensor |
mov dl, 60 |
mul dl |
mov word[hwm_rpms + 8 ], ax |
mov ax, SENS_AUXFAN1 |
call uGuru_ReadSensor |
mov dl, 60 |
mul dl |
mov word[hwm_rpms + 12], ax |
mov ax, SENS_AUXFAN2 |
call uGuru_ReadSensor |
mov dl, 60 |
mul dl |
mov word[hwm_rpms + 16], ax |
; voltages |
cld ; Paranoia |
xor ecx, ecx |
mov esi, v_addr |
@@: push ecx |
lodsw |
call uGuru_ReadSensor |
movzx eax, al |
fld dword[v_mult + ecx * 4] |
push eax |
fild dword [esp] |
fmulp st1, st0 |
fstp dword [hwm_voltages + ecx * 4] |
pop eax |
pop ecx |
inc ecx |
cmp ecx, 11 ; <-- êîëè÷åñòâî äàò÷èêîâ (ADC Vin) |
jne @b |
ret |
;----------------------------------- |
uGuru_ReadSensor: |
; Read a sensor |
; In : ax - sensorID |
; Out : al - result |
mov ebx, eax ; Ask to read from uGuru |
shr eax, 8 |
out UGURU_DATA_PORT, al |
mov ecx, 1000 ; I guess this is to se if uGuru is ready to take a command |
.is_ready: |
in al, UGURU_DATA_PORT |
dec ecx |
jnz @f |
xor al, al |
ret |
@@: cmp al, 8 |
jne .is_ready |
mov al, bl ; Whitch sensor to read? |
out UGURU_CMD_PORT, al |
mov ecx, 1000 ; Wait until uGuru is ready to be read |
.is_ready2: |
in al, UGURU_DATA_PORT |
dec ecx |
jnz @f |
xor al, al |
ret |
@@: cmp al, 1 |
jne .is_ready2 |
in al, UGURU_CMD_PORT ; Read the sensor |
push eax |
call uGuru_Ready ; Put the chip in ready state |
pop eax ; Return the result of the sensor |
ret |
;----------------------------------- |
uGuru_Ready: |
; Put uGuru in ready state. uGuru will hold 0x08 at Data port and 0xAC at Command port after this. |
; Out : CF = 1 - error |
; Wait until uGuru is in ready-state |
; The loop shouldn't be needed to execut more then one time |
mov edx, 1000 |
.nxt: in al, UGURU_DATA_PORT |
cmp al, 8 |
je .ok |
xor al, al ; after 0x00 is written to Data port |
out UGURU_DATA_PORT, al |
mov ecx, 1000 ; Wait until 0x09 is read at Data port |
.is_ready: |
in al, UGURU_DATA_PORT |
dec ecx |
jnz @f |
stc |
ret |
@@: cmp al, 9 |
jne .is_ready |
mov ecx, 1000 ; Wait until 0xAC is read at Cmd port |
.is_ready2: |
in al, UGURU_CMD_PORT |
dec ecx |
jnz @f |
stc |
ret |
@@: cmp al, 0xAC |
jne .is_ready2 |
dec edx ; Prevent a lockup |
jnz .nxt |
stc |
ret |
.ok: clc |
ret |
/programs/system/gmon/hwm_wb.inc |
---|
6,21 → 6,18 |
; + 16.03.06 Èñïðàâëåíà îøèáêà â wb_get_cpu_temper ñ äåñÿòûõ ãðàäóñà (áûëî 30.5 30.0 31.5 ...) |
; |
; |
uglobal |
wb_chip_id: db 0 ; Èäåíòèôèêàòîð ÷èïà (åñëè íàøëè) |
endg |
; | Chip name | ID Vin Fanin PWM Temp |
msg_wb27HF: db 8, 'W83627HF' ; 0x20|0x21 9 3 2 3 |
msg_wb27THF: db 9, 'W83627THF' ; 0x90|0x91 7 3 3 3 |
msg_wb37THF: db 9, 'W83637THF' ; 0x80 7 3 3 3 |
msg_wb97HF: db 8, 'W83697HF' ; 0x60|0x61 8 2 2 2 |
; | Chip name | ID Vin Fanin PWM Temp ISA SMBus |
msg_wb27HF: db 8, 'W83627HF' ; 0x20|0x21 9 3 2 3 + + |
msg_wb27THF: db 9, 'W83627THF' ; 0x90|0x91 7 3 3 3 + + |
msg_wb37THF: db 9, 'W83637THF' ; 0x80 7 3 3 3 + + |
msg_wb97HF: db 8, 'W83697HF' ; 0x60|0x61 8 2 2 2 + - |
msg_wb27EHF: db 11,'W83627EHF-A' ; 0x88 |
msg_wb27THFA: db 11,'W83627THF-A' ; 0x1A |
; db 7, 'W83781D' ; 0x10|0x11 7 3 3 |
; db 7, 'W83782D' ; 0x30 9 3 3 |
; db 8, 'AS99127F' ; 0x31 |
; db 7, 'W83783S' ; 0x40|0x41 5-6 3 1-2 |
; db 7, 'W83791D' ; 0x70|0x71 10 5 3 |
; db 7, 'W83781D' ; 0x10|0x11 7 3 3 + + |
; db 7, 'W83782D' ; 0x30 9 3 3 + + |
; db 8, 'AS99127F' ; 0x31 7 3 3 - + |
; db 7, 'W83783S' ; 0x40|0x41 5-6 3 1-2 - + |
; db 7, 'W83791D' ; 0x70|0x71 10 5 3 - + |
msg_wbunk: db 15,'Unknown Winbond' ; other, non zero ;-) |
;----------------------------------- |
27,37 → 24,47 |
wb_init: |
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ |
; OUT - CF = 1 - error |
mov dx, 0x295 |
cmp byte[acc_type], 2 ; Only ISA and SMBus |
jae wb_no |
mov al, 0x4e |
out dx, al |
inc edx |
xor al, al |
out dx, al |
dec edx |
xor bl, bl |
call [IO_Write] |
mov al, 0x4f |
out dx, al |
inc edx |
in al, dx |
call [IO_Read] |
mov ah, al ;! |
dec edx |
mov al, 0x4e |
out dx, al |
inc edx |
mov al, 0x80 |
out dx, al |
dec edx |
mov bl, 0x80 |
call [IO_Write] |
mov al, 0x4f |
out dx, al |
inc edx |
in al, dx |
call [IO_Read] |
cmp ax, 0xa35c |
jne wb_no ; ýòî íå Winbond !!! |
dec edx ; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà -- |
; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà -- |
mov al, 0x58 |
out dx, al |
inc edx |
in al, dx |
mov byte[wb_chip_id], al |
call [IO_Read] |
and al, 0xFE ; 0x20 = 0x21, 0x60 = 0x61, etc |
mov edx, msg_wb27HF |
cmp al, 0x20 |
je @f |
mov edx, msg_wb27THF |
cmp al, 0x90 |
je @f |
mov edx, msg_wb37THF |
cmp al, 0x80 |
je @f |
mov edx, msg_wb97HF |
cmp al, 0x60 |
je @f |
mov edx, msg_wb27EHF |
cmp al, 0x88 |
je @f |
mov edx, msg_wb27THFA |
cmp al, 0x1A |
je @f |
mov edx, msg_wbunk |
@@: mov [hwm_chip_name], edx |
clc |
ret |
wb_no: stc |
64,70 → 71,57 |
ret |
;----------------------------------- |
wb_getparam: |
call wb_get_temp |
call wb_get_fan_speed |
mov edi, wb_coeff |
call wb_get_volt |
fld dword[V12] |
fld dword[wb_n12v_const] |
faddp st1, st0 |
fstp dword[V12] |
ret |
;----------------------------------- |
wb_get_temp: |
; temp 1 |
mov dx, 0x295 ; Âûáèðàåì bank 1 |
mov al, 0x4e |
out dx, al |
inc edx |
mov al, 1 |
out dx, al |
dec edx ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû) |
mov al, 0x50 |
out dx, al |
inc edx |
in al, dx |
mov [temps], al |
dec edx ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (0.5`C) |
mov al, 0x51 |
out dx, al |
inc edx |
in al, dx ; if al == 0 then 0.0, else 0.5 |
cmp al, 0 |
mov al, 0x4e ; Âûáèðàåì bank 1 |
mov bl, 1 |
call [IO_Write] |
mov al, 0x50 ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû) |
call [IO_Read] |
mov [hwm_temps], al |
mov al, 0x51 ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (x.5`C) |
call [IO_Read] |
cmp al, 0 ; if al == 0 then x.0, else x.5 |
je @f |
mov al, 5 |
@@: mov [temps + 1], al |
@@: mov [hwm_temps + 1], al |
; temp 2 (3 SYSTIN) |
dec edx ; Âûáèðàåì bank 0 |
mov al, 0x4e |
out dx, al |
inc edx |
mov al, 0 |
out dx, al |
mov al, 0x4e ; Âûáèðàåì bank 0 |
xor bl, bl |
call [IO_Write] |
mov al, 0x27 ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû) |
call [IO_Read] |
mov [hwm_temps + 2], al |
dec edx ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû) |
mov al, 0x27 |
out dx, al |
inc edx |
in al, dx |
mov [temps + 2], al |
; temp 3 (VTIN) |
dec edx ; Âûáèðàåì bank 2 |
mov al, 0x4e |
out dx, al |
inc edx |
mov al, 2 |
out dx, al |
dec edx ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû) |
mov al, 0x50 |
out dx, al |
inc edx |
in al, dx |
mov [temps + 4], al |
dec edx ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (0.5`C) |
mov al, 0x51 |
out dx, al |
inc edx |
in al, dx ; if al == 0 then 0.0, else 0.5 |
cmp al, 0 |
mov al, 0x4e ; Âûáèðàåì bank 2 |
mov bl, 2 |
call [IO_Write] |
mov al, 0x50 ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû) |
call [IO_Read] |
mov [hwm_temps + 4], al |
mov al, 0x51 ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (x.5`C) |
call [IO_Read] |
cmp al, 0 ; if al == 0 then x.0, else x.5 |
je @f |
mov al, 5 |
@@: mov [temps + 5], al |
@@: mov [hwm_temps + 5], al |
; Ïðîâåðêà òåìïåðàòóðû, äàò÷èêè ñ 127.5`C íå èñïîëüçóþòñÿ |
mov ecx, 3 |
mov esi, temps |
mov esi, hwm_temps |
wb_check_temp: |
cmp word[esi + ecx * 2 - 2], 0x057F |
jne wb_temp_ok |
140,47 → 134,34 |
wb_get_fan_speed: |
; fan1 |
mov al, 0x47 |
mov dx, 0x295 |
out dx, al |
inc edx |
in al, dx |
call [IO_Read] |
and al, 0x30 |
shr al, 4 |
mov ebx, 1 |
mov cl, al |
shl ebx, cl ; <- div1 |
dec edx |
xor eax, eax |
mov al, 0x28 |
out dx, al |
inc edx |
xor eax, eax |
in al, dx |
call [IO_Read] |
cmp al, 255 |
jne @f |
xor eax, eax |
ret |
xor eax, eax ; ??? |
ret ; ??? |
@@: mul ebx |
mov ebx, eax |
mov eax, 1350000 |
xor edx, edx |
div ebx |
mov [rpms], eax |
mov [hwm_rpms], eax |
mov al, 0x47 |
mov dx, 0x295 |
out dx, al |
inc edx |
in al, dx |
call [IO_Read] |
shr al, 6 |
mov ebx, 1 |
mov cl, al |
shl ebx, cl ; <- div2 |
dec edx |
xor eax, eax |
mov al, 0x29 |
out dx, al |
inc edx |
xor eax, eax |
in al, dx |
call [IO_Read] |
cmp al, 255 |
jne @f |
xor eax, eax |
190,19 → 171,16 |
mov eax, 1350000 |
xor edx, edx |
div ebx |
mov [rpms + 4], eax |
mov [hwm_rpms + 4], eax |
ret |
;----------------------------------- |
wb_get_volt: |
mov dx, 0x295 |
;mov edi, vcoeff ; <-- possible differences for miscellaneous chip |
mov esi, Vcore |
;mov edi, wb_coeff ; <-- possible differences for miscellaneous chip |
mov esi, hwm_voltages |
xor ecx, ecx |
@@: mov eax, ecx |
add al, 0x20 |
out dx, al |
inc edx |
in al, dx |
call [IO_Read] |
fld dword [edi + ecx * 4] |
push eax |
fild dword [esp] |
210,7 → 188,6 |
fstp dword [esi + ecx * 4] |
pop eax |
inc ecx |
dec edx |
cmp ecx, 7 |
jb @b |
ret |
224,31 → 201,6 |
dd -0.02408 ; -5V ; false |
wb_n12v_const dd -14.9142857142857 |
;----------------------------------- |
wb_get_name: |
; Âîçâðàùàåò èìÿ ÷èïà |
; Out : EDX - pointer to string (size:string - Pascal style) |
mov al, [wb_chip_id] |
and al, 0xFE ; 0x20 = 0x21, 0x60 = 0x61, etc |
mov edx, msg_wb27HF |
cmp al, 0x20 |
je @f |
mov edx, msg_wb27THF |
cmp al, 0x90 |
je @f |
mov edx, msg_wb37THF |
cmp al, 0x80 |
je @f |
mov edx, msg_wb97HF |
cmp al, 0x60 |
je @f |
mov edx, msg_wb27EHF |
cmp al, 0x88 |
je @f |
mov edx, msg_wb27THFA |
cmp al, 0x1A |
je @f |
mov edx, msg_wbunk |
@@: ret |
/programs/system/gmon/macros.inc |
---|
4,6 → 4,7 |
@^ fix macro comment { |
^@ fix } |
nl equ 0x0d, 0x0a |
;~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- |
macro uglobal { |
UGlobals equ UGlobals, |
/programs/system/gmon/readme.txt |
---|
1,38 → 1,46 |
==[CP1251]======================================== |
Ghost Monitor |
Àâòîð : Ìèõàéëîâ Èëüÿ Àíäðååâè÷ aka Ghost |
Âåðñèÿ : 0.3 îò 30/07/06 |
ÎÑ : äëÿ ïîëíîãî ôóíêöèîíèðîâàíèÿ Kolibri 0.5.8.0 è ñòàðøå |
Âåðñèÿ : 0.4 îò 25/11/06 |
ÎÑ : äëÿ ïîëíîãî ôóíêöèîíèðîâàíèÿ ñêà÷àéòå ïîñëåäííå ÿäðî, èëè ïîñëåäíèé äèñòðèáóòèâ. |
files : svn://kolibrios.org/programs/system/gmon/ |
http://iam.gorodok.net/Gmon.zip |
forum : meos.sysbin.com -> Ïðîãðàììû -> GMon |
file : http://iam.gorodok.net/Gmon.zip |
mailto : ghost.nsk@mail.ru |
Íàçíà÷åíèå : |
Ìîíèòîðèíã òåìïåðàòóðû è ñêîðîñòè âðàøåíèÿ âåíòèëÿòîðîâ ïðîöåññîðà è |
Ìîíèòîðèíã òåìïåðàòóðû, íàïðÿæåíèÿ è ñêîðîñòè âðàøåíèÿ âåíòèëÿòîðîâ ïðîöåññîðà è |
ìàòåðèíñêîé ïëàòû, ñòðåññ òåñòèðîâàíèå íàä¸æíîñòè ñèñòåìû îõëàæäåíèÿ è áëîêà |
ïèòàíèÿ êîìïüþòåðà. |
Ìîíèòîðèíã : |
 íàñòîÿùåå âðåìÿ îòîáðàæàþòñÿ çàãðóçêà ïðîöåññîðà, çàãðóçêà ïàìÿòè, òåìïåðàòóðà, ñêîðîñòè |
âðàøåíèÿ âåíòèëÿòîðîâ è íàïðÿæåíèå. Ïîääåðæèâàåìûå ÷èïû ìîíèòîðèíãà : |
 íàñòîÿùåå âðåìÿ îòîáðàæàþòñÿ çàãðóçêà/÷àñòîòà ïðîöåññîðà, çàãðóçêà ïàìÿòè, òåìïåðàòóðà, |
ñêîðîñòè âðàøåíèÿ âåíòèëÿòîðîâ è íàïðÿæåíèå. Ïîääåðæèâàåìûå ÷èïû ìîíèòîðèíãà : |
WinBond chip : W83627HF/THF/THF-A/EHF-A, W83637THF, W83697HF, è àíàëîãè. |
Integrated Technology Express : IT8705F, IT8712F, IT8716F, è àíàëîãè. |
SiS : sis950 (àíàëîã IT8705F) |
Ôóíêöèè ìîíèòîðèíãà òåìïåðàòóðû ìîæíî ïðîâåðèòü â Windows íà ýìóëÿòîðå KlbrInWin, äëÿ ýòîãî |
íåîáõîäèìî â ôàéëå íàñòðîåê íàïèñàòü EnablePorts 295 296 |
Integrated Technology Express (ITE) : IT8705F, IT8712F, IT8716F, è àíàëîãè. |
Silicon Integrated Systems Corp. (SiS) : sis950 (àíàëîã IT8705F) |
ABIT : uGuru |
Ôóíêöèè ìîíèòîðèíãà ìîæíî ïðîâåðèòü â Windows íà ýìóëÿòîðå KlbrInWin, äëÿ ýòîãî íåîáõîäèìî â |
ôàéëå íàñòðîåê íàïèñàòü (ïîëüçóéòåñü ïîñëåäíåé âåðñèåé): |
EnablePorts=e0-e8 295 296 |
AllowReadMSR=true |
Òåñòû : |
Òåñòû îðèåíòèðîâàíû íà ïðîöåññîðû P5, P6, K6 è K7, îñíîâàíû íà Robert Redelmeier's CPUburn |
[http://pages.sbcglobal.net/redelm/]. Öëÿ òåñòèðîâàíèÿ Pentium 4, ðåêîìåíäóþ òåñò äëÿ K7, äëÿ |
îñòàëüíûõ ïðîöåññîðîâ ïîäáåðèòå ïî ìàêñèìàëüíîé òåìïåðàòóðå (íàïèøèòå ìíå îá ýòîì). |
Âíèìàíèå! Ïðîãðàììà íå ðåàãèðóåò íà êðèòè÷åñêèé ïîðîã òåìïåðàòóðû, ïîýòîìó äëÿ èçáåæàíèÿ |
ïîð÷è îáîðóäîâàíèÿ íå îñòàâëÿéòå çàïóøåííûé òåñò áåç ïðèñìîòðà!  ñâÿçè ñ ðàçëè÷èåì â |
ðåàëèçàöèè ôóíêöèè 18-2, äëÿ Menuet è Kolibri íåîáõîäèìû ðàçëè÷íûå ðåàëèçàöèè ïðîãðàììû, ïî |
óìîë÷àíèþ êîìïèëèðóåòñÿ äëÿ Kolibri 0.5.8.0, ïðè íåîáõîäèìîñòè èçìåíèòå ïðîöåäóðó stop_test â |
system.inc. Òåñòû ðàáîòàþò îäèíàêîâî ýôôåêòèâíî êàê íà ðåàëüíîì îáîðóäîâàíèè, òàê è íà |
âèðòóàëüíûõ ìàøèíàõ. |
óìîë÷àíèþ êîìïèëèðóåòñÿ äëÿ Kolibri 0.5.8.0 è ñòàðøå, ïðè íåîáõîäèìîñòè èçìåíèòå ïàðàìåòð |
OS_version â ôàéëå config.inc. Òåñòû ðàáîòàþò îäèíàêîâî ýôôåêòèâíî êàê íà ðåàëüíîì îáîðóäîâàíèè, |
òàê è íà âèðòóàëüíûõ ìàøèíàõ, íî íå ðåêîììåíäóåòñÿ çàïóñêàòü èõ íà ýìóëÿòîðàõ (KlbrInWin, |
MeOSEmul, etc) â ñâÿçè ñ ïëîõîé ðåàëèçàöèåé çàâåðøåíèÿ ïðîöåññà, ÷òî ìîæåò ïðèâåñòè ê ïîð÷å |
îáîðóäîâàíèÿ. |
Íà áóäóùåå : |
Íîâûå ÷èïû |
42,58 → 50,9 |
Îñîáàÿ áëàãîäàðíîñòü âñåì ó÷àñòíèêàì ôîðóìà. |
Íàéäåííûå îøèáêè è ïðåäëîæåíèÿ ïèøèòå â ôîðóì èëè íà ïî÷òó. |
ÂÍÈÌÀÍÈÅ !!! ÂÎÇÌÎÆÍÀ ÏÎÐ×À ÎÁÎÐÓÖÎÂÀÍÈß! |
ÈÑÏÎËÜÇÓÉÒÅ ÍÀ ÑÂÎÉ ÑÒÐÀÕ È ÐÈÑÊ! |
È íàïîñëåäîê : |
ÂÍÈÌÀÍÈÅ !!! ÂÎÇÌÎÆÍÀ ÏÎÐ×À ÎÁÎÐÓÄÎÂÀÍÈß! ÈÑÏÎËÜÇÓÉÒÅ ÍÀ ÑÂÎÉ ÑÒÐÀÕ È ÐÈÑÊ! |
Ïðîãðàììà ðàñïîñòðàíÿåòñÿ "as is", è àâòîð íå íåñåò îòâåòñòâåííîñòè çà âîçìîæíûé óùåðá, ïðè÷èíåííûé |
ïðîãðàììîé. |
==[CP866]========================================= |
Ghost Monitor |
¢â®à : ¨å ©«®¢ «ìï ¤à¥¥¢¨ç aka Ghost |
¥àá¨ï : 0.3 ®â 30/07/06 |
: ¤«ï ¯®«®£® äãªæ¨®¨à®¢ ¨ï Kolibri 0.5.8.0 ¨ áâ àè¥ |
forum : meos.sysbin.com -> à®£à ¬¬ë -> GMon |
file : http://iam.gorodok.net/Gmon.zip |
mailto : ghost.nsk@mail.ru |
§ 票¥ : |
®¨â®à¨£ ⥬¯¥à âãàë ¨ ᪮à®á⨠¢à è¥¨ï ¢¥â¨«ïâ®à®¢ ¯à®æ¥áá®à ¨ |
¬ â¥à¨áª®© ¯« âë, áâà¥áá â¥áâ¨à®¢ ¨¥ ¤ñ¦®á⨠á¨áâ¥¬ë ®å« ¦¤¥¨ï ¨ ¡«®ª |
¯¨â ¨ï ª®¬¯ìîâ¥à . |
®¨â®à¨£ : |
áâ®ï饥 ¢à¥¬ï ®â®¡à ¦ îâáï § £à㧪 ¯à®æ¥áá®à , § £à㧪 ¯ ¬ïâ¨, ⥬¯¥à âãà , ᪮à®á⨠|
¢à è¥¨ï ¢¥â¨«ïâ®à®¢ ¨ ¯à殮¨¥. ®¤¤¥à¦¨¢ ¥¬ë¥ ç¨¯ë ¬®¨â®à¨£ : |
WinBond chip : W83627HF/THF/THF-A/EHF-A, W83637THF, W83697HF, ¨ «®£¨. |
Integrated Technology Express : IT8705F, IT8712F, IT8716F, ¨ «®£¨. |
SiS : sis950 ( «®£ IT8705F) |
ãªæ¨¨ ¬®¨â®à¨£ ⥬¯¥à âãàë ¬®¦® ¯à®¢¥à¨âì ¢ Windows í¬ã«ïâ®à¥ KlbrInWin, ¤«ï í⮣® |
¥®¡å®¤¨¬® ¢ ä ©«¥ áâ஥ª ¯¨á âì EnablePorts 295 296 |
¥áâë : |
¥áâë ®à¨¥â¨à®¢ ë ¯à®æ¥áá®àë P5, P6, K6 ¨ K7, ®á®¢ ë Robert Redelmeier's CPUburn |
[http://pages.sbcglobal.net/redelm/]. «ï â¥áâ¨à®¢ ¨ï Pentium 4, ४®¬¥¤ãî â¥áâ ¤«ï K7, ¤«ï |
®áâ «ìëå ¯à®æ¥áá®à®¢ ¯®¤¡¥à¨â¥ ¯® ¬ ªá¨¬ «ì®© ⥬¯¥à âãॠ( ¯¨è¨â¥ ¬¥ ®¡ í⮬). |
¨¬ ¨¥! à®£à ¬¬ ¥ ॠ£¨àã¥â ªà¨â¨ç¥áª¨© ¯®à®£ ⥬¯¥à âãàë, ¯®í⮬㠤«ï ¨§¡¥¦ ¨ï |
¯®àç¨ ®¡®à㤮¢ ¨ï ¥ ®áâ ¢«ï©â¥ § ¯ãè¥ë© â¥áâ ¡¥§ ¯à¨á¬®âà ! á¢ï§¨ á à §«¨ç¨¥¬ ¢ |
ॠ«¨§ 樨 äãªæ¨¨ 18-2, ¤«ï Menuet ¨ Kolibri ¥®¡å®¤¨¬ë à §«¨çë¥ à¥ «¨§ 樨 ¯à®£à ¬¬ë, ¯® |
㬮«ç ¨î ª®¬¯¨«¨àã¥âáï ¤«ï Kolibri 0.5.8.0, ¯à¨ ¥®¡å®¤¨¬®á⨠¨§¬¥¨â¥ ¯à®æ¥¤ãàã stop_test ¢ |
system.inc. ¥áâë à ¡®â îâ ®¤¨ ª®¢® íä䥪⨢® ª ª ॠ«ì®¬ ®¡®à㤮¢ ¨¨, â ª ¨ |
¢¨àâã «ìëå ¬ è¨ å. |
¡ã¤ã饥 : |
®¢ë¥ 稯ë |
¥ ªæ¨ï ªà¨â¨ç¥áª¨© ¯®à®£ ⥬¯¥à âãàë |
஢¥ª ¤ñ¦®á⨠á奬 ¯¨â ¨ï |
ᮡ ï ¡« £®¤ à®áâì ¢á¥¬ ãç á⨪ ¬ ä®à㬠. |
©¤¥ë¥ ®è¨¡ª¨ ¨ ¯à¥¤«®¦¥¨ï ¯¨è¨â¥ ¢ ä®à㬠¨«¨ ¯®çâã. |
!!! ! |
! |
à®£à ¬¬ à ᯮáâà ï¥âáï "as is", ¨ ¢â®à ¥ ¥á¥â ®â¢¥âá⢥®á⨠§ ¢®§¬®¦ë© ãé¥à¡, ¯à¨ç¨¥ë© |
¯à®£à ¬¬®©. |
ïðîãðàììîé. |
/programs/system/gmon/system.inc |
---|
161,7 → 161,7 |
; out : CL = êîýôô.óìíîæåíèÿ * 10, èëè 0 |
xor ecx, ecx |
if (OS_version >= 0x0510) |
display nl, 'Multiplier : yes' |
display nl, 'Multiplier (RDMSR) : yes' |
cmp dword [Vendor + 8], 'cAMD' ; Check for Advanced Micro Devices CPU |
jne noAMD |
cmp byte [CPU_fam], 5 |
369,3 → 369,26 |
Data_String: times 20 db 0 ; ASCIIZ ñòîðêà ñ ïðåîáðàçîâàííûì ÷èñëîì |
endg |
;-------------------------------------------------------------------- |
ReservePorts: |
; In : ecx - first port, edx - last port |
; Out : CF = 1 if error |
pusha |
mov eax, 46 |
xor ebx, ebx |
int 0x40 |
clc |
test eax, eax |
jz @f |
stc |
@@: popa |
ret |
FreePorts: |
; In : ecx - first port, edx - last port |
pusha |
mov eax, 46 ; îñâîáîæäàåì 0x295 è 0x296 ïîðòû |
xor ebx, ebx |
inc ebx |
int 0x40 |
popa |
ret |
/programs/system/gmon/tab_about.inc |
---|
0,0 → 1,21 |
mov edx, msg_about |
mov ebx, 17 * 65536 + 285 |
call show_text |
jmp end_drow_tab |
msg_about mls \ ; äîëæíà áûòü õîòÿáû îäíà ñòðîêà |
' Ghost Monitor',\ |
'',\ |
' tool for testing and monitoring hardware',\ |
'',\ |
'Supported SuperIO : W83627HF,W83697HF',\ |
' W83627THF,W83627THF-A,W83627EHF-A,',\ |
' W83637THF,IT8705F,IT8712F,SiS950',\ |
' ABIT uGuru',\ |
'',\ |
'Tests based on R.J.Redelmeier CPUBurn',\ |
'',\ |
'Mailto : ghost.nsk@mail.ru',\ |
'',\ |
' *** Use at YOUR own RISK ***' |
/programs/system/gmon/tab_conf.inc |
---|
0,0 → 1,49 |
; |
; |
; Âêëàäêà íàñòðîåê |
; |
; Âðåìÿ îáíîâëåíèÿ |
mov eax, 8 |
mov ebx, 200 * 65536 + 15 |
mov ecx, 280 * 65536 + 15 |
mov edx, 11 |
mov esi, tcol |
int 0x40 |
mov ebx, 217 * 65536 + 15 |
inc edx |
int 0x40 |
mov eax, 4 |
mov ebx, 17 * 65536 + 285 |
mov edx, msg_cf_utime |
mov ecx, 0x10000000 |
mov esi, 11 |
int 0x40 |
mov ebx, 205 * 65536 + 285 |
mov edx, msg_cf_pm |
xor ecx, ecx |
mov esi, 4 |
int 0x40 |
mov ecx, [update_time] |
call digit_len |
mov edx, 160 * 65536 + 285 |
xor esi, esi |
mov eax, 47 |
int 0x40 |
; Ðàññòàâëÿåì äâîåòî÷èÿ |
mov eax, 4 |
mov ebx, 152 * 65536 + 285 |
mov edx, dub_p |
mov esi, 1 |
mov ecx, 0x10000000 |
int 0x40 |
jmp end_drow_tab |
msg_cf_utime db 'Update time' ; 11 |
msg_cf_pm db '+ -' ; 4 |
/programs/system/gmon/tab_info.inc |
---|
0,0 → 1,124 |
; |
; |
; Âêëàäêà èíôîðìàöèè î ñèñòåìå |
; |
; Äîïèñàòü åù¸ ÷òîèòü (ìàëîâàòî áóäåò) |
; |
; |
; Ïèøåì ïàðàìåòðû |
mov edx, lab_info_tab |
mov ebx, 17 * 65536 + 285 |
call show_text |
; Ïèøåì ïðîèçâîäèòåëÿ ïðîöåññîðà |
mov edx, Vendor |
mov esi, 12 |
mov ebx, 160 * 65536 + 285 |
int 0x40 |
; Ïîääåðæêà MMX |
mov ebx, 160 * 65536 + 305 |
mov esi, 3 |
mov edx, msg_yes |
cmp byte[CPU_mmx], 1 |
je mmx_en |
mov edx, msg_no |
mmx_en: int 0x40 |
; ×èï ìîíèòîðèíãà |
mov edx, [hwm_chip_name] |
mov al, byte[edx] |
movzx esi, al |
inc edx |
mov ebx, 160 * 65536 + 315 |
mov al, 4 |
int 0x40 |
; ×àñòîòà ïðîöåññîðà |
mov eax, 18 |
mov ebx, 5 |
int 0x40 |
push eax |
fild dword[esp] |
push 1000;000 |
fidiv dword[esp] |
fidiv dword[esp] |
fstp dword[esp] |
mov esi, esp |
call ftoa |
mov ebx, 160 * 65536 + 295 |
mov edx, Data_String |
mov eax, 4 |
mov esi, 7 |
xor ecx, ecx |
int 0x40 |
pop eax |
pop eax |
; Ñåìåéñòâî è ìîäåëü ïðîöåññîðà |
mov eax, 47 |
mov ebx, 0x10100 |
xor ecx, ecx |
mov cl, [CPU_fam] |
mov edx, 250 * 65536 + 285 |
xor esi, esi |
int 0x40 |
mov cl, [CPU_mod] |
add edx, 10 * 65536 |
int 0x40 |
; êîýôôèöèåíò óìíîæåíèÿ |
call multiplier |
test ecx, ecx |
jz @f |
movzx ecx, cl |
push ecx |
fild dword[esp] |
push 10 |
fidiv dword[esp] |
fstp dword[esp] |
mov esi, esp |
call ftoa |
mov ebx, 160 * 65536 + 325 |
mov edx, Data_String |
mov eax, 4 |
mov esi, eax |
xor ecx, ecx |
int 0x40 |
pop eax |
pop eax |
@@: |
; Ñâîáîäíàÿ ïàìÿòü |
if (OS_version >= 0x0530) |
mov eax, 18 |
mov ebx, 16 |
int 0x40 |
mov ecx, eax |
call digit_len |
mov eax, 47 |
mov edx, 160 * 65536 + 335 |
xor esi, esi |
int 0x40 |
end if |
; Ðàññòàâëÿåì äâîåòî÷èÿ |
mov eax, 4 |
mov ebx, 152 * 65536 + 285 |
mov edx, dub_p |
mov esi, 1 |
mov ecx, 6 ; <- êîëè÷åñòâî ñòðîê |
nxt_dp: push ecx |
mov ecx, 0x10000000 |
int 0x40 |
add ebx, 10 |
pop ecx |
loop nxt_dp |
;--------------------------------------------------------------------- |
jmp end_drow_tab |
dub_p db ':' |
lab_info_tab mls \ |
'CPU Vendor',\ |
'CPU frequency (MHz)',\ |
'MMX tehnology',\ |
'Monitoring chip',\ |
'Multiplier',\ |
'Free memory (Kb)' |
/programs/system/gmon/tab_test.inc |
---|
0,0 → 1,139 |
; |
; |
; |
; Âêëàäêà òåñòîâ |
; |
; |
; |
; |
; "GenuineIntel" - International Electronics |
; "GenuineTMx86" - Transmeta Processor |
; "AuthenticAMD" - Advanced Micro Devices |
; "AMD ISBETTER" - Advanced Micro Devices |
; "UMC UMC UMC " - United Microelectronics Corporation |
; "CyrixInstead" - Cyrix Processor |
; "Geode by NSC" - National Semiconductor Processor |
; "SiS SiS SiS " - SiS Processor |
; "RiseRiseRise" - Rise Processor |
; "NexGenDriven" - NexGen Processor (acquired by AMD) |
; "CentaurHauls" - IDT/Centaur, now VIA Processor |
; Pentium (P5) button |
mov eax, 8 |
mov ebx, 17 * 65536 + 145 |
mov ecx, 297 * 65536 + 25 |
mov edx, 6 |
mov esi, tcol |
cmp byte[Vendor + 11], 'l' |
jne p5n |
cmp byte[CPU_fam], 5 |
jne p5n |
mov esi, atcol |
p5n: int 0x40 |
; Pentium Pro / II / III (P6) button |
add ecx, 27 * 65536 |
inc edx |
mov esi, tcol |
cmp byte[Vendor + 11], 'l' |
jne p6n |
cmp byte[CPU_fam], 6 |
jne p6n |
mov esi, atcol |
p6n: int 0x40 |
; AMD K6 button |
add ecx, 27 * 65536 |
inc edx |
mov esi, tcol |
cmp byte[Vendor], 'A' |
jne k6n |
cmp byte[CPU_fam], 5 |
jne k6n |
mov esi, atcol |
k6n: int 0x40 |
; AMD K7 (Athlon / Duron) |
add ecx, 27 * 65536 |
inc edx |
mov esi, tcol |
cmp byte[Vendor], 'A' |
jne k7n |
cmp byte[CPU_fam], 6 |
jne k7n |
mov esi, atcol |
k7n: int 0x40 |
; MMX òåñò |
; add ecx, 27 * 65536 |
; inc edx |
; mov esi, tcol |
; cmp byte[CPU_mmx], 1 |
; jne mmxn |
; mov esi, atcol |
; mmxn: int 0x40 |
; Ïèøåì íàçâàíèÿ êíîïîê |
mov eax, 4 |
mov ebx, 30 * 65536 + 307 |
mov esi, 7 |
mov edx, tmsg_p ; P5 |
mov ecx, 0x10000000 |
cmp byte[test_id], 6 |
jne nr1 |
mov ecx, 0x10FF0000 |
nr1: int 0x40 |
mov ebx, 30 * 65536 + 307 + 27 |
mov esi, 20 ; P6 |
mov ecx, 0x10000000 |
cmp byte[test_id], 7 |
jne nr2 |
mov ecx, 0x10FF0000 |
nr2: int 0x40 |
mov ebx, 30 * 65536 + 307 + 27 + 27 |
mov edx, tmsg_k6 ; K6 |
mov esi, 13 |
mov ecx, 0x10000000 |
cmp byte[test_id], 8 |
jne nr3 |
mov ecx, 0x10FF0000 |
nr3: int 0x40 |
mov ebx, 30 * 65536 + 307 + 27 + 27 + 27 |
mov edx, tmsg_k7 ; K7 |
mov esi, 15 |
mov ecx, 0x10000000 |
cmp byte[test_id], 9 |
jne nr4 |
mov ecx, 0x10FF0000 |
nr4: int 0x40 |
; mov ebx, 30 * 65536 + 307 + 27 + 27 + 27 + 27 |
; mov edx, tmsg_mmx ; MMX |
; mov esi, 12 |
; mov ecx, 0x10000000 |
; cmp byte[test_id], 10 |
; jne nr5 |
; mov ecx, 0x10FF0000 |
; nr5: int 0x40 |
; recommendate |
mov ecx, 0x10000000 |
mov ebx, 190 * 65536 + 420 |
mov edx, tmsg_rec |
mov esi, 14 |
int 0x40 |
; read about |
mov ebx, 30 * 65536 + 282 |
mov edx, tmsg_war |
mov esi, 34 |
mov ecx, 0x10FF0000 |
int 0x40 |
; recommendate color |
mov eax, 13 |
mov ebx, 170 * 65536 + 10 |
mov ecx, 418 * 65536 + 10 |
mov edx, atcol |
int 0x40 |
jmp end_drow_tab |
tmsg_p db 'Pentium (Pro/II/III)' ; 7/20 |
tmsg_k6 db 'K6 (I/II/III)' ; 13 |
tmsg_k7 db 'K7/Athlon/Duron' ; 15 |
;tmsg_mmx db 'MMX (memory)' ; 12 |
tmsg_rec db '- recommendate' ; 14 |
tmsg_war db 'May permanent damage to electronic' ; 34 |