Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 3587 → Rev 4107

/programs/system/cpuid/trunk/Build.bat
1,2 → 1,6
fasm cpuid.asm cpuid
pause
@erase lang.inc
@echo lang fix en >lang.inc
@fasm -m 16384 cpuid.asm cpuid
@erase lang.inc
@kpack cpuid
@pause
/programs/system/cpuid/trunk/CPUID.ASM
1,19 → 1,19
;******************************************************************************
; project name: CPUID *
; target platform: KolibriOS, x86 (IA-32), x86-64 achitectures *
; compiler: flat assembler 1.67.21 *
; version: 2.21 *
; last update: 18th May 2007 1st 2nd 3rd 4th 5th 6th 7th 8th 9th *
; platform: KolibriOS, x86 (IA-32), x86-64 achitectures *
; compiler: flat assembler 1.70.03 *
; version: 2.28 *
; last update: 23rd October 2013 *
; maintained by: Sergey Kuzmin aka Wildwest *
; e-mail: kuzmin_serg@list.ru *
; site: http://coolthemes.narod.ru/files.html *
; license: Copyright 2004-2007 Sergey Kuzmin and co-authors *
; license: Copyright 2004-2013 Sergey Kuzmin and co-authors *
; Rules: *
; 1)you can use pieces of code in your project, but should *
; mention the original author (include copyright notice); *
; 2)if you modify CPUID (improve, port, translate, etc) send *
; your changes to the maintainer or make about post changes*
; at forum http://meos.sysbin.com *
; at forum http://board.kolibrios.org/viewtopic.php?f=42&t=594*
;-----------------------------------------------------------------------------*
; English comments *
;------------------------------------------------------------------------------
29,7 → 29,6
dd 0x0
 
include 'lang.inc' ; language support
 
include '..\..\..\macros.inc' ; useful macroses
include 'draw.inc'
include 'brand.inc' ;Brand ID decoding
165,9 → 164,9
cmp dword[smallvendor], 'ntel'
jnz no_full ; if not AMD or Intel
 
detect_it:
cmp [f], 0Fh
jne no_full
;detect_it:
;cmp [f], 0Fh
;jne no_full fixed calculation of extended model for Intel
 
full:
 
306,7 → 305,7
; SiS - "SiS SiS SiS "
; Transmeta - "GenuineTMx86" +
; National Semiconductor - "Geode by NSC"
 
; Vortex - "Vortex86 SoC" + initial support
cmp dword[smallvendor], 'ntel'
jz Intel
cmp dword[smallvendor], 'cAMD'
317,6 → 316,8
jz Centaur
cmp dword[smallvendor], 'Mx86'
jz Transmeta
cmp dword[smallvendor], ' SoC'
jz Vortex
 
; cmp ecx, 'UMC '
; jz .UMC
467,9 → 468,9
Text 100,70,0x80000000
jmp MMXtest
A6:
mov [FRS], 266 ;!!!!!!
; mov [FRS], 266 ;!!!!!!
 
Number 315,90,0,3,dword [FRS],0x000000; MHz
; Number 315,90,0,3,dword [FRS],0x000000; MHz
 
call newrating; !!!!
 
481,9 → 482,9
 
A8:
 
mov [FRS], 266 ;!!!!!!
; mov [FRS], 266 ;!!!!!!
 
Number 315,90,0,3,dword [FRS],0x000000; MHz
; Number 315,90,0,3,dword [FRS],0x000000; MHz
 
cmp [L2], 256
jl .App ; Applebred
501,10 → 502,10
 
AA:
 
mov [FRS], 333; !!!!
; mov [FRS], 333; !!!!
Text 245,70,0x00000000,pr, prlen-pr
 
Number 315,90,0,3,dword [FRS],0x000000; MHz
; Number 315,90,0,3,dword [FRS],0x000000; MHz
 
mov edx, Atat
cmp [L2], 256
772,7 → 773,7
jmp MMXtest
.I67:
mov [micron], 25
Text 110,70,0x00000000,P67, P67len-P67
Text 110,70,0x00000000,P67, P67len-P67 ;but if SSE4.1 supported then it is Intel Core (Penryn)
jmp MMXtest
.I68:
mov [micron], 18
789,7 → 790,7
jmp MMXtest
.I6A:
mov [micron], 18
Text 110,70,0x00000000,P6A, P6Alen-P6A
Text 110,70,0x00000000,P6A, P6Alen-P6A ;but if SSE4.2 supported then it is Intel Core (Nehalem)
jmp MMXtest
.I6B:
mov [micron], 13
1214,6 → 1215,38
Text 100,70,0
 
;----
;---------------------------------- new
Vortex:
 
Text 15, 190,0x00000000,cache, cachelen-cache
 
mov esi, vortex
call load_gif
PutImage 135,107,201,49,img_area+8
;PutImage 130,127,201,49,img_area+8
; place size
 
cmp [f], $5
jz .V54 ;fivvtx
;.fivvtx: ;Family=5
; cmp [m],$4
; jz .V54
.V54:
mov [micron], 13
mov [L1i], 16
mov [L1d], 16
mov [L2], 256
mov [wayl2], 4
mov [wayli], 4
mov [wayld], 4
Text 75,70,0x00000000,Vortexn, Vortexnlen-Vortexn
;Text 110,70,0x00000000,V54, V54len-V54
jmp MMXtest
 
;---------------------
 
 
 
MMXtest: ; MMX test and Brand ID decoding
 
call decodebrand ; get Brand ID
1344,7 → 1377,7
;----------------
still:
 
; çàòåì ïåðåõîäèì â öèêë îæèäàíèÿ ñîáûòèé
; waiting for events
event_wait:
 
;================_RAM_==============
1375,8 → 1408,8
 
;==============================
 
mov eax,23 ; ôóíêöèÿ 23: îæèäàíèå ñîáûòèÿ
mov ebx,50 ; æäåìñ 0.5 ñåê
mov eax,23 ; function 23 - event wait
mov ebx,50 ; wait for 0.5 second
mcall
 
cmp eax,1 ;
1398,39 → 1431,40
cmp ah,2 ; = 2 ?
je thread_start ;
;
cmp ah,3 ; = 3 ?
; cmp ah,3 ; = 3 ?
jne still
 
vybor:
 
Number 310,70,0,4,dword [rating],0xFFFFFF ;
;vybor:
 
Number 315,90,0,3,dword [FRS]; MHz
; Number 310,70,0,4,dword [rating],0xFFFFFF ;
 
cmp [FRS], 266
jz .s1
cmp [FRS], 333
jz .s2
cmp [FRS], 400
jz .s3
; Number 315,90,0,3,dword [FRS]; MHz
 
.s1:
mov [FRS], 333
.rating:
call newrating
Number 310,70,0,4,dword [rating],0x000000
;cmp [FRS], 266
;jz .s1
;cmp [FRS], 333
;jz .s2
;cmp [FRS], 400
;jz .s3
 
Number 315,90,0,3,dword [FRS]; MHz
jmp still
;.s1:
;mov [FRS], 333
;.rating:;
;call newrating
; Number 310,70,0,4,dword [rating],0x000000
 
.s2:
mov [FRS], 400
jmp .rating
; Number 315,90,0,3,dword [FRS]; MHz
;jmp still
;
;.s2:
;mov [FRS], 400
;jmp .rating
;
;.s3:
;mov [FRS], 266
;jmp .rating
 
.s3:
mov [FRS], 266
jmp .rating
 
close:
mov eax,-1
mcall
1654,9 → 1688,9
cmp [f], $6
jne cont
 
Button 240,85,69,15,3,0x030000FF ; button for rating
; Button 240,85,69,15,3,0x030000FF ; button for rating
 
Text 245,90,0x00FFFFFF,FR, FRlen-FR
; Text 245,90,0x00FFFFFF,FR, FRlen-FR ; text at button
 
call newrating; !!!!
 
1723,488 → 1757,976
 
; DATA AREA
 
title db 'CPUID 2.21 by S.Kuzmin & the KolibriOS team',0
title db 'CPUID 2.28 by S.Kuzmin & the KolibriOS team',0
 
 
tsum:
 
if lang eq it
 
db 'Frequenza: . MHz'
 
else
 
db 'Frequency: . MHz'
 
end if
 
 
 
 
tsumlen:
 
 
total dd 0x0
 
total1 dd 0x0
 
rating dd 0x0
 
rat dd 0x0 ;
 
 
ram:
 
if lang eq it
 
db 'RAM libera: su'
 
else
 
db 'Available RAM: out of'
 
end if
 
 
 
 
ramlen:
 
 
NEF:
 
db 'EXTENDED FEATURES ARE NOT AVAILABLE'
 
NEFlen:
 
 
mb :
 
db 'MB'
 
mblen:
 
 
;logcpus :
 
;db 'Number of logical CPU:'
 
;logcpuslen:
 
 
speed :
 
if lang eq it
 
db 'Performance'
 
else
 
db 'PERFORMANCE:'
 
end if
 
 
 
 
speedlen:
 
 
kbpersec:
 
db 'KB/SEC'
 
kbperseclen:
 
 
instruct:
 
if lang eq it
 
db 'Set istruzioni'
 
else
 
db 'Instruction sets'
 
end if
 
 
 
 
instructlen:
 
 
standard db 'Standard and Extended features plus Performance test',0
 
FR:
db 'Choose FSB:'
FRlen:
 
 
;FR:
 
; db 'Choose FSB:'
 
;FRlen:
 
 
STDCA:
 
db 'Highest STD call is '
 
STDCAlen:
 
 
EXTCA:
 
db 'Highest EXT call is h'
 
EXTCAlen:
 
 
brandid:
 
db 'Brand:'
 
brandidlen:
 
 
oblom:
 
if lang eq it
 
db 'CPUID non e disponibile'
 
else
 
db 'SORRY, CPUID IS NOT AVAILABLE'
 
end if
 
 
oblomlen:
 
other:
 
if lang eq it
 
db 'Questo vendor non e supportato'
 
else
 
db 'SORRY, THIS VENDOR IS NOT SUPPORTED YET'
 
end if
 
 
otherlen:
 
 
cpuname:
 
if lang eq it
 
db 'Vendor CPU '
 
else
 
db 'CPU VENDOR: '
 
end if
 
 
cpunamelen:
 
fam:
 
if lang eq it
 
db 'Famiglia: std ext'
 
else
 
db 'FAMILY: std ext'
 
end if
 
 
 
 
famlen:
 
mode:
 
if lang eq it
 
db 'Modello: std ext'
 
else
 
db 'MODEL: std ext'
 
end if
 
 
modelen:
 
step:
 
if lang eq it
 
db 'Stepping:'
 
else
 
db 'STEPPING:'
 
end if
 
 
steplen:
 
 
cache2:
 
 
db 'L1(data): KB -way set -byte line size'
 
cache2len:
 
 
cache:
 
db 'L1(inst): KB -way set -byte line size'
 
cachelen:
 
 
cache3:
 
 
db 'L2: KB -way set -byte line size'
 
cache3len:
 
 
cache4:
 
db 'L3: KB -way set -byte line size'
 
cache4len:
 
 
cacheP4:
 
 
db 'L1(inst): Kuops -way set -byte line size'
 
cacheP4len:
 
 
tech:
 
if lang eq it
 
db 'Tecnologia: 0. micron '
 
else
 
db 'Technology: 0. micron '
 
end if
 
 
 
 
techlen:
 
 
typen:
 
if lang eq it
 
db 'Tipo:'
 
else
 
db 'Type:'
 
end if
 
 
typenlen:
 
 
pr:
 
db 'P-rating:'
 
prlen:
 
 
multil:
 
db 'Multiplier: .'
 
multillen:
 
 
freql:
 
db 'System clock: . MHz'
 
freqllen:
 
 
name:
 
if lang eq it
 
db 'Codename:'
 
else
 
db 'CODENAME:'
 
end if
 
 
namelen:
 
 
AMDn:
 
db 'AMD'
 
AMDnlen:
 
Inteln:
 
db 'Intel'
 
Intelnlen:
 
Cyrixn:
 
db 'Cyrix'
 
Cyrixnlen:
 
IDTn:
 
db 'IDT/Centaur'
 
IDTnlen:
 
Centaurn:
 
db 'VIA'
 
Centaurnlen:
 
 
Tranmsmetan:
 
db 'Transmeta'
 
Tranmsmetanlen:
 
 
Vortexn:
db 'Vortex86'
Vortexnlen:
 
 
MMXs:
 
db 'MMX: '
 
MMXslen:
 
 
mmxp:
 
db 'MMX+: '
 
mmxplen:
 
 
HTT:
 
db 'HTT: '
 
HTTlen:
 
 
HTTn:
 
db 'HTT: '
 
HTTnlen:
 
 
sse3:
 
db 'SSE3: '
 
sse3len:
 
now:
 
db '3DNOW!: '
 
nowlen:
 
nowp:
 
db '3DNOW!+: '
 
nowplen:
 
 
;-Type
 
 
t1 db 'OEM',0
 
t2 db 'Overdrive',0
 
t3 db 'Dual',0
 
t4 db 'Unknown',0
 
 
;----------Intel
 
P50:
 
db 'P5 A-step'
 
P50len:
 
P5:
 
db 'P5'
 
P5len:
 
P54T:
 
db 'P24T Overdrive'
 
P54Tlen:
 
P54C:
 
db 'P54C'
 
P54Clen:
 
P55C:
 
db 'P55C (with MMX)'
 
P55Clen:
 
; ---
 
P60:
 
db 'Pentium Pro A-step'
 
P60len:
 
P61:
 
db 'Pentium Pro'
 
P61len:
 
P63:
 
db 'Pentium II (Klamath)'
 
P63len:
 
P65:
 
db 'Pentium II (Deschutes)'
 
P65len:
 
P66:
 
db 'Celeron (Medocino)'
 
P66len:
 
P67:
 
db 'Pentium III (Katmai)'
 
P67len:
 
P68:
 
db 'Pentium III (Coppermine)'
 
P68len:
 
P69:
 
db 'Pentium M (Banias)'
 
P69len:
 
P6A:
 
db 'Pentium III Xeon (Cascades)'
 
P6Alen:
 
P6B:
 
db 'Pentium III (Tualatin)'
 
P6Blen:
 
P6D:
 
db 'Pentium M (Dothan)'
 
P6Dlen:
 
P6E:
 
db 'Pentium M (Yonah)/ Core'
 
P6Elen:
 
P6F:
 
db 'Pentium D (Conroe)/ Core 2 (Kentsfield)'
 
P6Flen:
 
;---
 
PS0:
 
db 'Itanium (IA-64)'
 
PS0len:
 
;------------
 
PF0:
 
db 'Pentium 4 (Willamete)'
 
PF0len:
 
PF2:
 
db 'Pentium 4 (Northwood)'
 
PF2len:
 
PF3:
 
db 'Pentium 4 (Prescott)'
 
PF3len:
 
PF5:
 
db 'Pentium 4 (Tejas)'
 
PF5len:
 
PF6:
 
db 'Pentium 4 (Presler)'
 
PF6len:
 
;----------------Intel Celerons
 
P65c:
 
db 'Celeron (Covington)'
 
P65clen:
 
P68c:
 
db 'Celeron (Coppermine)'
 
P68clen:
 
P6Bc:
 
db 'Celeron (Tualatin)'
 
P6Bclen:
 
PF0c:
 
db 'Celeron (Willamete)'
 
PF0clen:
 
PF2c:
 
db 'Celeron (Northwood)'
 
PF2clen:
 
PF3c:
 
db 'Celeron (Prescott)'
 
PF3clen:
 
PF5c:
 
db 'Celeron D (Texas)'
 
PF5clen:
 
PF6c:
 
db 'Celeron D (Presler)'
 
PF6clen:
 
;---------AMD
 
A50 db 'K5 (PR75, PR90, PR100)',0
 
A51 db '5k86 (PR120, PR133)',0
 
A52 db '5k86 (PR166)',0
 
A53 db '5k86 (PR200)',0
 
A56 db 'K6',0
 
A57 db 'K6',0
 
A58 db 'K6-2',0
 
A59 db 'K6-III',0
 
A5D db 'K6-2+ or K6-III+',0
 
;-------------------
 
At1 db 'Athlon',0
 
At2 db 'Athlon',0
 
At3 db 'Duron (Spitfire)',0
 
At4 db 'Athlon (Thunderbird)',0
 
At6 db 'AthlonXP (Palomino)',0
 
At7 db 'Duron (Morgan)',0
 
At8 db 'AthlonXP (Thoroughbred)',0
 
At8a db 'Duron (Applebred)',0
 
Ata db 'AthlonXP (Barton)',0
 
Atat db 'AthlonXP (Thorton)',0
 
;-------------------
 
AF1:
 
db 'Dual-core Opteron'
 
AF1len:
 
AF3:
 
db 'Athlon 64 (Toledo)'
 
AF3len:
 
AF4:
 
db 'Athlon 64 (ClawHammer)'
 
AF4len:
 
AF5:
 
db 'Opteron/Athlon 64 FX (SledgeHammer)'
 
AF5len:
 
 
AFC:
 
db 'Athlon 64 (Newcastle)'
 
AFClen:
 
 
AFF:
 
db 'Athlon 64 (Winchester)'
 
AFFlen:
 
 
AFS:
 
db 'Athlon 64 (San Diego)'
 
AFSlen:
 
 
AFV:
 
db 'Athlon 64 (Venice)'
 
AFVlen:
 
 
AFCs:
 
db 'Sempron (Paris)'
 
AFCslen:
 
 
AFCsp:
 
db 'Sempron (Palermo)'
 
AFCsplen:
 
 
;---------Cyrix
 
C52:
 
db '6x86 M1'
 
C52len:
 
C54:
 
db 'MediaGX'
 
C54len:
 
C60:
 
db '6x86MX M2'
 
C60len:
 
C65:
 
db 'C3 (Cyrix M2)' ;?
 
C65len:
 
;--------IDT
 
V54:
 
db 'WinChip C6'
 
V54len:
 
V58:
 
db 'WinChip 2'
 
V58len:
 
V59:
 
db 'WinChip 3'
 
V59len:
 
;-------VIA
 
V66:
 
db 'C3 (Samuel)' ; Joshua is unreleased 065
 
V66len:
 
V67:
 
db 'C3 (Samuel2/Ezra)' ; ?
 
V67len:
 
V68:
 
db 'C3 (Ezra-T/Eden)' ;?
 
V68len:
 
V69:
 
db 'C3 (Antaur/Nehemiah)' ;?
 
V69len:
 
VA:
 
db 'C7 (Esther)' ;?
 
VAlen:
 
;---------Transmeta
 
T5:
 
db 'Crusoe' ;
 
T5len:
 
TF:
 
db 'Efficeon' ;
 
TFlen:
 
;---------
 
NG:
 
db 'Next generation CPU'
 
NGlen:
 
 
stm:
 
if lang eq it
 
db 'Nome: '
 
else
 
db 'Internal name:'
 
end if
 
 
stmlen:
 
 
athloncoef db 110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 120
 
db 190, 120, 200, 130, 135, 140, 210, 150, 220, 160, 165, 170, 180, 230, 240
 
athlonmcoef: db 110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105
 
db 30, 190, 40, 200, 130, 135, 14, 210, 150, 220, 160, 165, 170, 230, 240
 
athloncoef3 db 45, 50, 40, 55, 25, 30, 60, 35
 
p4coef db 160, 170, 180, 190, 200, 210, 220, 230, 80, 90, 100, 110, 120, 130, 140, 150 ; Pentium 4 (Willamete)
 
coppercoeff db 50, 30, 40, 20, 55, 35, 45, 25, 35, 70, 80, 60, 20, 75, 15, 65, 90, 110, 120, 20, 95, 115, 85, 25, 35, 70, 80, 100, 20, 75, 15, 105
 
tualatcoeff db 120, 35, 35, 40, 55, 35, 115, 35, 160, 70, 80, 60, 40, 75, 35, 65, 90, 110, 35, 35, 95, 35, 85, 35, 35, 35, 130, 100, 140, 35, 150, 105
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
;
 
; include images and unpacking- and hasharea
 
;
 
include 'logos.inc' ; include file where gif's are stored
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
I_END:
 
img_area: ; image is going to be unpacked to here
rb 201*49*3+8 ; image resolution (bits to reserve)
 
2213,75 → 2735,142
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
I_END:
; RSA test data
 
; RSA test data
align 4
 
num1 rd 40
 
num2 rd 40
 
num3 rd 40
 
iter rd 1
 
openkey rd 1
 
 
IncludeUGlobals
 
 
ost dd ?
 
sot dd ?
 
f dd ?
 
m dd ?
 
s dd ?
 
t dd ?
 
 
ef dd ?
 
em dd ?
 
 
multiplier dd ?
 
multa dd ?
 
multb dd ?
 
 
smallvendor dd ?
 
L1d dd ?
 
L1i dd ?
 
L2 dd ?
 
L3 dd ?
 
micron dd ?
 
brand dd ?
 
 
ram_size_a dd ?
 
ram_size_t dd ?
 
 
stdc dd ?
 
extc dd ?
 
 
FRS dd ?
 
freqsel db ?
 
sse3sup db ?
 
 
freqbb dd ?
 
freqll dd ?
 
 
wayli dd ?
 
lineli dd ?
 
 
wayld dd ?
 
lineld dd ?
 
 
wayl2 dd ?
 
linel2 dd ?
 
 
wayl3 dd ?
 
linel3 dd ?
 
 
;number_of_log_cpus dd ?
 
 
che db ? ; numbers of calls for Intel caches detection
 
 
myname:
 
rb 48
 
mynamelen:
 
 
align 4
 
 
thread2_stack_area rb 64
 
thread2_esp = $
U_END:
 
U_END:
/programs/system/cpuid/trunk/HISTORY.TXT
1,16 → 1,16
;******************************************************************************
; project name: CPUID
; target platform: KolibriOS, x86 (IA-32), x86-64 achitectures
; compability: CPUID works in MS Windows by means of emulator KlbrInWin from Diamond (http://diamondz.land.ru)
; compiler: flat assembler 1.67.21
; version: 2.21
; last update: 18th May 2007
; compability: CPUID works in MS Windows by means of emulator KlbrInWin from Diamond http://board.kolibrios.org/viewtopic.php?f=23&t=1273
; compiler: flat assembler 1.70.03
; version: 2.28
; last update: 23rd October 2013
; maintained by: Sergey Kuzmin aka Wildwest
; e-mail: kuzmin_serg@list.ru
; site: http://coolthemes.narod.ru/files.html
;******************************************************************************
; Summary:
; supported vendors - Intel, AMD, VIA, Cyrix, IDT (Centaur),Transmeta
; supported vendors - Intel, AMD, VIA, Cyrix, IDT (Centaur),Transmeta, Vortex86
; displayed features - CPU frequency;
; Internal Name;
; Multiplier and System Clock frequency;
34,14 → 34,26
; update caches descriptors for intel Core 1/2
; quantity of logical CPU/cores - requires APIC ID analysis
; newest AMD/Intel codename detection
; improve support of Vortex86
;******************************************************************************
;HISTORY:
;3.0: CPUID 18/05/2007 (not finished)
;2.3: CPUID 23/10/2013 (not finished)
;Authors: Sergey Kuzmin aka Wildwest <kuzmin_serg@list.ru>
; Pavel Rymovskiy aka Heavyiron <Heavyiron@pisem.net>
; fedesco
;Features:
; (+) 'choose FSB' button removed and related code changed in the way it would use FSB value detected by Ghost's code;
; (+) fixed calculation of Extended model for newest Intel;
; (+) initial support of new vendor Vortex86 - logo, caches, technology;
; (+) Italian translation by fedesco;
; (+) makefile for *nix by fedesco;
; (+) new cache descriptors for Intel;
; (+) fixed typo, which makes output of Brand ID for AMD CPU's at incorrect place by Heavyiron;
; (+) fixed typo, which makes selection of incorrect codename for AMD F8x CPU's;
;Known issues: Sempron marked as AthlonXP
; second window doesn't closed when you close main window
; incorrect multiplier detection for newest CPU
; incorrect cache detection for several models of newest Intel CPU, because they designed for another cache detection approach
;-----------------------------------------------------------------------------
;2.2: CPUID 01/05/2007
;Authors: Sergey Kuzmin aka Wildwest <kuzmin_serg@list.ru>
/programs/system/cpuid/trunk/README.TXT
5,7 → 5,7
Hi! My name is Sergey Kuzmin aka Wildwest.
This is one of the mostly famous program for KolibriOS/MenuetOS.
I called it CPUID. CPUID talks with you CPU and show log.
Current version is 2.21 and you can use it on your own risk without any warranty.
Current version is 2.28 and you can use it on your own risk without any warranty.
E-mail me (kuzmin_serg@list.ru) if you have some problems or suggestions.
All righs on this program are mine, except parts of code written by other developers.
 
31,14 → 31,16
 
Iliya Mikhailov (Russia) for piece of code from his great GMON;
 
Pavel Rymovskiy (Belarus) and Leency (Ukraine) for their work, which enhance look & feel of CPUID.
Pavel Rymovskiy (Belarus) and Kirill Lipatov (Ukraine) for their work, which enhance look & feel of CPUID
fedesco (Italy) for makefile for compilation on *nix systems and for translation to Italian language.
Also I want to thank folks which help me by testing and suggestions -
Sonny, Smiddy and all the RU-Team.
 
Please, test it and e-mail me screenshot.
 
The CPUID thread with announcements and discussion is at http://meos.sysbin.com/viewtopic.php?t=594
The CPUID thread with announcements and discussion is at http://board.kolibrios.org/viewtopic.php?f=42&t=594
 
Bye...
 
48,13 → 50,13
Ïðèâåò! Ìåíÿ çîâóò Ñåðãåé Êóçüìèí aka Wildwest.
Ýòî îäíà èç ñàìûõ èçâåñòíûõ ïðîãðàìì äëÿ KolibriOS/MenuetOS.
Îíà íàçûâàåòñÿ CPUID è ïîêàçûâàåò ðåçóëüòàòû èäåíòèôèêàöèè ïðîöåññîðà.
Ýòî âåðñèÿ 2.21 è ÂÛ ìîæåòå å¸ èñïîëüçîâàòü íà ñâîé ñîáñòâåííûé ðèñê áåçî âñÿêèõ ãàðàíòèé.
Ýòî âåðñèÿ 2.28 è ÂÛ ìîæåòå å¸ èñïîëüçîâàòü íà ñâîé ñîáñòâåííûé ðèñê áåçî âñÿêèõ ãàðàíòèé.
Åñëè áóäóò êàêèå-òî ïðîáëåìû èëè ïðåäëîæåíèÿ, òî íàïèøèòå ìíå (kuzmin_serg@list.ru).
Âñå ïðàâà íà ïðîãðàììó ïðèíàäëåæàò ìíå, êðîìå ïðàâ íà ÷àñòè, íàïèñàííûõ îñòàëüíûìè ðàçðàáîò÷èêàìè.
 
Ñëåäóþùèå âåðñèè áóäóò âûêëàäûâàòüñÿ íà ñòðàíè÷êå: http://coolthemes.narod.ru/files.html
 
Ëþäè èç ìåæäóíàðîäíîé êîìàíäû MenuetOS ïîìîãàëè ìíå è ÿ õîòåë áû óïîìÿíóòü èõ çäåñü:
Ëþäè èç ìåæäóíàðîäíîé êîìàíäû KolibriOS/MenuetOS ïîìîãàëè ìíå è ÿ õîòåë áû óïîìÿíóòü èõ çäåñü:
 
Ville Turjanmaa (Ôèíëÿíäèÿ), íàïèñàâøåãî MenuetOS;
74,14 → 76,16
 
Èëüþ Ìèõàéëîâà (Ðîññèÿ) çà êóñîê êîäà èç åãî çàìå÷àòåëüíîé ïðîãðàììû GMON;
 
Ïàâëà Ðûìîâñêîãî (Áåëîðóññèÿ) è Leency (Óêðàèíà) çà ðàáîòó, ñïîñîñîáñòâîâàâøóþ óëó÷øåíèþ âíåøíåãî âèäà CPUID.
Ïàâëà Ðûìîâñêîãî (Áåëîðóññèÿ) è Êèðèëëà Ëèïàòîâà (Óêðàèíà) çà ðàáîòó, ñïîñîñîáñòâîâàâøóþ óëó÷øåíèþ âíåøíåãî âèäà CPUID;
fedesco (Èòàëèÿ) çà makefile äëÿ êîìïèëÿöèè â *nix-ñèñòåìàõ è ïåðåâîä èíòåðôåéñà íà èòàëüÿíñêèé ÿçûê.
Òàêæå ÿ õî÷ó ïîáëàãîäàðèòü ëþäåé, ïîìîãàâøèõ ìíå òåñòèðîâàíèåì è ïðåäëîæåíèÿìè -
Sonny, Smiddy è âñþ "ñîâåòñêóþ êîìàíäó" KolibriOS/MenuetOS .
 
Ïîæàëóéñòà, ïðîòåñòèðóéòå ïðîãðàììó è ïðèøëèòå ìíå ñêðèíøîò ïî e-mail.
 
Äî âñòðå÷ íà ôîðóìå(http://meos.sysbin.com/viewtopic.php?t=594).
Äî âñòðå÷ íà ôîðóìå http://board.kolibrios.org/viewtopic.php?f=42&t=594
 
 
 
/programs/system/cpuid/trunk/caches.inc
1,15 → 1,24
; Decoding cache L1,L2,L3 for Intel
 
decodecache32:
 
call decodecache
 
 
decodecache24:
 
shr eax, 8
 
call decodecache
 
shr eax, 8
 
call decodecache
 
shr eax, 8
 
 
decodecache:
 
comp0:
16,8 → 25,117
cmp al, 00h
je L000
 
;-------L2
 
comp6:
cmp al, 06h
je kk6
 
comp7:
cmp al, 08h
je kk7
 
comp61: ;+1
cmp al, 09h
je kk61
 
comp11:
cmp al, 0Ah
je kk11
je Ld8
 
 
comp13:
cmp al, 0Ch
je kk13
je Ld16
 
comp62: ;+1
cmp al, 0Dh
je kk15
 
comp63: ;+1
cmp al, 0Eh
je kk63
 
comp14:
cmp al, 10h
je kk14
je Ld16
 
 
comp8:
cmp al, 15h
je kk8
 
comp48:
cmp al, 1Ah
je kk48
je L96
 
comp64: ;+1
cmp al, 21h
je kk23
 
 
comp39:
cmp al, 22h
je kk39
je L305
 
comp40:
cmp al, 23h
je kk40
je L31
 
comp41:
cmp al, 25h
je kk41
je L32
 
comp42:
cmp al, 29h
je kk42
je L34
 
comp16:
cmp al, 2Ch
je kk16
je Ld32
 
comp10:
cmp al, 30h
je kk10
 
comp18:
cmp al, 39h
je kk18
je L128
 
comp49:
cmp al, 3Ah
je kk49
je L192
 
comp19:
cmp al, 3Bh
je kk19
je L128
 
comp22:
cmp al, 3Ch
je kk22
je L256
 
comp50:
cmp al, 3Dh
je kk50
je L384
 
comp51:
cmp al, 3Eh
je kk51
je L512
 
comp1:
cmp al, 41h
je kk1
43,261 → 161,334
je kk5
 
 
;------------L1 inst
comp6:
cmp al, 06h
je kk6
comp53:
cmp al, 46h
je kk53
je L34
 
comp7:
cmp al, 08h
je kk7
comp54:
cmp al, 47h
je kk54
je L38
 
comp8:
cmp al, 15h
je kk8
comp65: ;+1
cmp al, 48h
je kk26
 
 
comp9:
cmp al, 77h
je kk9
comp55:
cmp al, 49h
je kk55
je L34
 
comp56:
cmp al, 4Ah
je kk56
je L36
 
comp10:
cmp al, 30h
je kk10
comp57:
cmp al, 4Bh
je kk57
je L38
 
;---------------L1 data
comp11:
cmp al, 0Ah
je kk11
comp58:
cmp al, 4Ch
je kk58
je L312
 
comp59:
cmp al, 4Dh
je kk59
je L316
 
comp60:
cmp al, 4Eh
je kk60
je L6144
 
comp36:
cmp al, 60h
je kk36
je Ld16
 
comp12:
cmp al, 66h
je kk12
je Ld8
 
comp13:
cmp al, 0Ch
je kk13
 
comp14:
cmp al, 10h
je kk14
 
comp15:
cmp al, 67h
je kk15
je Ld16
 
comp16:
cmp al, 2Ch
je kk16
 
comp17:
cmp al, 68h
je kk17
je Ld32
 
;-------L2
comp18:
cmp al, 39h
je kk18
comp33:
cmp al, 70h
je kk33
je Li12
 
comp19:
cmp al, 3Bh
je kk19
comp34:
cmp al, 71h
je kk34
je Li16
 
comp35:
cmp al, 72h
je kk35
je Li32
 
 
comp47:
cmp al, 73h
je kk47
je Li64
 
 
comp9:
cmp al, 77h
je kk9
 
 
 
comp37:
cmp al, 78h
je kk37
je L1024
 
 
 
comp20:
cmp al, 79h
je kk20
je L128
 
comp21:
cmp al, 81h
je kk21
 
comp22:
cmp al, 3Ch
je kk22
 
comp23:
cmp al, 7Ah
je kk23
je L256
 
 
comp26:
cmp al, 7Bh
je kk26
je L512
 
comp29:
cmp al, 7Ch
je kk29
je L1024
 
comp38:
cmp al, 7Dh
je kk38
je L2048
 
comp24:
cmp al, 7Eh
je kk24
je L256
 
comp52:
cmp al, 7Fh
je kk52
je L512
 
 
comp66:
cmp al, 80h
je kk21
 
 
comp21:
cmp al, 81h
je kk21
je L128
 
 
comp25:
cmp al, 82h
je kk25
je L256
 
comp26:
cmp al, 7Bh
je kk26
 
comp27:
cmp al, 83h
je kk27
je L512
 
comp28:
cmp al, 86h
je kk28
 
comp29:
cmp al, 7Ch
je kk29
 
comp30:
cmp al, 84h
je kk30
je L1024
 
comp31:
cmp al, 87h
je kk31
 
comp32:
cmp al, 85h
je kk32
je L2048
 
;-----L1 Trace instr
comp28:
cmp al, 86h
je kk28
je L512
 
comp33:
cmp al, 70h
je kk33
comp31:
cmp al, 87h
je kk31
je L1024
 
comp34:
cmp al, 71h
je kk34
 
comp35:
cmp al, 72h
je kk35
 
;----New codes
 
comp36:
cmp al, 60h
je kk36
 
comp37:
cmp al, 78h
je kk37
 
comp38:
cmp al, 7Dh
je kk38
 
;---- L3
comp39:
cmp al, 22h
je kk39
 
comp40:
cmp al, 23h
je kk40
 
comp41:
cmp al, 25h
je kk41
 
comp42:
cmp al, 29h
je kk42
 
comp43:
cmp al, 88h
je kk43
je L32
 
comp44:
cmp al, 89h
je kk44
je L34
 
comp45:
cmp al, 8Ah
je kk45
je L38
 
comp46:
cmp al, 8Dh
je kk46
je L34
 
;============= v. 2.04
comp47:
cmp al, 73h
je kk47
 
comp48:
cmp al, 1Ah
je kk48
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;comp67: ;+1
;cmp al, 208 ; D0h
;je kk39
 
comp49:
cmp al, 3Ah
je kk49
;comp68: ;+1
;cmp al, 209 ; D1h
;je kk68
 
comp50:
cmp al, 3Dh
je kk50
;comp69: ;+1
;cmp al, 210 ; D2h
;je kk43
 
comp51:
cmp al, 3Eh
je kk51
;comp70: ;+1
;cmp al, 214 ; D6h
;je kk40
 
comp52:
cmp al, 7Fh
je kk52
;comp71: ;+1
;cmp al, 215 ; D7h
;je kk41
 
comp53:
cmp al, 46h
je kk53
;comp72: ;+1
;cmp al, 216 ;D8h
;je kk42
 
comp54:
cmp al, 47h
je kk54
;comp73: ;+1
;cmp al, 220 ; DCh
;je kk73
 
comp55:
cmp al, 49h
je kk55
;comp74: ;+1
;cmp al, 221 ;DDh
;je kk74
 
comp56:
cmp al, 4Ah
;comp75: ;+1
;cmp al, 222 ;DEh
;je kk56
 
;comp76: ;+1
;cmp al, 226 ;E2h
;je kk76
 
;comp77: ;+1
;cmp al, 227 ;E3h
;je kk55
 
;comp78: ;+1
;cmp al, 228 ;E4h
;je kk57
 
;comp79: ;+1
;cmp al, 234 ;EAh
;je kk79
 
;comp80: ;+1
;cmp al, 235 ;EBh
;je kk80
 
;comp81: ;+1
;cmp al, 236 ;ECh
;je kk81
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
comp67: ;+1
cmp al, 0D0h
je kk39
 
comp68: ;+1
cmp al, 0D1h
je kk68
 
comp69: ;+1
cmp al, 0D2h
je kk43
 
comp70: ;+1
cmp al, 0D6h
je kk40
 
comp71: ;+1
cmp al, 0D7h
je kk41
 
comp72: ;+1
cmp al, 0D8h
je kk42
 
comp73: ;+1
cmp al, 0DCh
je kk73
 
comp74: ;+1
cmp al, 0DDh
je kk74
 
comp75: ;+1
cmp al, 0DEh
je kk56
 
comp57:
cmp al, 4Bh
comp76: ;+1
cmp al, 0E2h
je kk76
 
comp77: ;+1
cmp al, 0E3h
je kk55
 
comp78: ;+1
cmp al, 0E4h
je kk57
 
comp58:
cmp al, 4Ch
je kk58
comp79: ;+1
cmp al, 0EAh
je kk79
 
comp59:
cmp al, 4Dh
je kk59
comp80: ;+1
cmp al, 0EBh
je kk80
 
ret
comp81: ;+1
cmp al, 0ECh
je kk81
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
jne L000
;------------------
 
kk1:
mov [wayl2], 4
mov [linel2], 32
jmp L128
 
kk2:
mov [wayl2], 4
mov [linel2], 32
jmp L256
 
kk3:
mov [wayl2], 4
mov [linel2], 32
jmp L512
 
kk4:
mov [wayl2], 4
mov [linel2], 32
jmp L1024
 
kk5:
mov [wayl2], 4
mov [linel2], 32
jmp L2048
;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;; L1 instr
kk6:
mov [wayli], 4
mov [lineli], 32
318,6 → 509,32
mov [lineli], 64
jmp Li16
 
kk61:
mov [wayli], 4 ;+1
mov [lineli], 64
jmp Li32
 
 
kk33:
mov [wayli], 8
;mov [lineli], 32
jmp Li12
 
kk34:
mov [wayli], 8
;mov [lineli], 32
jmp Li16
 
kk35:
mov [wayli], 8
;mov [lineli], 32
jmp Li32
 
kk47:
mov [wayli], 8
;mov [lineli], 32
jmp Li64
 
kk10:
mov [wayli], 8
mov [lineli], 64
359,75 → 576,111
mov [wayld], 4
mov [lineld], 64
jmp Ld32
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
kk18:
mov [wayl2], 4
mov [linel2], 64
jmp L128
 
kk63:
mov [wayld], 6
mov [lineld], 64
jmp Ld24
 
kk36:
mov [wayld], 8
mov [lineld], 64
jmp Ld16
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;; L2
kk19:
mov [wayl2], 2
mov [linel2], 64
jmp L128
 
kk20:
mov [wayl2], 8
kk52:
mov [wayl2], 2
mov [linel2], 64
jmp L128
jmp L512
 
kk21:
mov [wayl2], 8
kk1:
mov [wayl2], 4
mov [linel2], 32
jmp L128
 
kk22:
kk2:
mov [wayl2], 4
mov [linel2], 64
mov [linel2], 32
jmp L256
 
kk23:
mov [wayl2], 8
mov [linel2], 64
jmp L256
 
kk24:
mov [wayl2], 8
mov [linel2], 128
jmp L256
 
kk25:
mov [wayl2], 4
mov [linel2], 32
jmp L256
 
kk26:
mov [wayl2], 8
mov [linel2], 64
kk3:
mov [wayl2], 4
mov [linel2], 32
jmp L512
 
kk27:
mov [wayl2], 8
kk4:
mov [wayl2], 4
mov [linel2], 32
jmp L512
jmp L1024
 
kk5:
mov [wayl2], 4
mov [linel2], 32
jmp L2048
 
kk18:
mov [wayl2], 4
mov [linel2], 64
jmp L128
 
kk22:
mov [wayl2], 4
mov [linel2], 64
jmp L256
 
kk28:
mov [wayl2], 4
mov [linel2], 64
jmp L512
 
kk29:
mov [wayl2], 8
kk51:
mov [wayl2], 4
mov [linel2], 64
jmp L512
 
kk37:
mov [wayl2], 4
mov [linel2], 64
jmp L1024
 
kk30:
kk48:
mov [wayl2], 6
mov [linel2], 64
jmp L96
 
kk49:
mov [wayl2], 6
mov [linel2], 64
jmp L192
 
kk50:
mov [wayl2], 6
mov [linel2], 64
jmp L384
 
kk21:
mov [wayl2], 8
mov [linel2], 32
jmp L1024
jmp L128
 
kk31:
kk27:
mov [wayl2], 8
mov [linel2], 64
mov [linel2], 32
jmp L512
 
kk30:
mov [wayl2], 8
mov [linel2], 32
jmp L1024
 
kk32:
434,37 → 687,52
mov [wayl2], 8
mov [linel2], 32
jmp L2048
;;;;;;;;;;;;;;;;;;;;;;;;;
kk33:
mov [wayli], 8
;mov [lineli], 32
jmp Li12
 
kk34:
mov [wayli], 8
;mov [lineli], 32
jmp Li16
kk20:
mov [wayl2], 8
mov [linel2], 64
jmp L128
 
kk35:
mov [wayli], 8
;mov [lineli], 32
jmp Li32
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
kk36:
mov [wayld], 8
mov [lineld], 64
jmp Ld16
kk23:
mov [wayl2], 8
mov [linel2], 64
jmp L256
 
kk37:
mov [wayl2], 4
kk26:
mov [wayl2], 8
mov [linel2], 64
jmp L512
 
kk29:
mov [wayl2], 8
mov [linel2], 64
jmp L1024
 
kk31:
mov [wayl2], 8
mov [linel2], 64
jmp L1024
 
kk38:
mov [wayl2], 8
mov [linel2], 64
jmp L2048
;;;;;;;;;;;;;;;;;;;;;;;;;
 
kk24:
mov [wayl2], 8
mov [linel2], 128
jmp L256
 
kk65:
mov [wayl2], 12
mov [linel2], 64
jmp L3072
 
kk60:
mov [wayl2], 24
mov [linel2], 64
jmp L6144
;;;;;;;;;;;;;;;;;;;;;;;;; L3
kk39:
mov [wayl3], 4
mov [linel3], 64
500,75 → 768,81
mov [linel3], 64
jmp L38
 
kk46:
mov [wayl3], 12
mov [linel3], 128
jmp L33
;;;;;;;;;;;;;;;;;;;;;;
kk47:
mov [wayli], 8
;mov [lineli], 32
jmp Li64
 
kk48:
mov [wayl2], 6
mov [linel2], 64
jmp L96
 
kk49:
mov [wayl2], 6
mov [linel2], 64
jmp L192
 
kk50:
mov [wayl2], 6
mov [linel2], 64
jmp L384
 
kk51:
mov [wayl2], 4
mov [linel2], 64
jmp L512
 
kk52:
mov [wayl2], 2
mov [linel2], 64
jmp L512
 
kk53:
mov [wayl3], 4
mov [linel3], 64
jmp L34
 
kk68:
mov [wayl3], 4
mov [linel3], 64
jmp L31
 
kk54:
mov [wayl3], 8
mov [linel3], 64
jmp L38
 
kk55:
mov [wayl3], 16
kk74:
mov [wayl3], 12
mov [linel3], 64
jmp L34
jmp L33
 
kk73:
mov [wayl3], 12
mov [linel3], 64
jmp L315
 
kk56:
mov [wayl3], 12
mov [linel3], 64
jmp L36
 
kk58:
mov [wayl3], 12
mov [linel3], 64
jmp L312
 
kk46:
mov [wayl3], 12
mov [linel3], 128
jmp L33
 
kk76:
mov [wayl3], 16
mov [linel3], 64
jmp L32
 
kk55:
mov [wayl3], 16
mov [linel3], 64
jmp L34
 
kk57:
mov [wayl3], 16
mov [linel3], 64
jmp L38
 
kk58:
mov [wayl3], 12
kk59:
mov [wayl3], 16
mov [linel3], 64
jmp L316
 
kk79:
mov [wayl3], 24
mov [linel3], 64
jmp L312
 
kk59:
mov [wayl3], 16
kk80:
mov [wayl3], 24
mov [linel3], 64
jmp L316
jmp L318
 
kk81:
mov [wayl3], 24
mov [linel3], 64
jmp L324
 
;------------------
Li8:
mov [L1i], 8
598,6 → 872,10
mov [L1d], 16
jmp L000
 
Ld24:
mov [L1d], 24
jmp L000
 
Ld32:
mov [L1d], 32
jmp L000
634,6 → 912,14
mov [L2], 2048
jmp L000
 
L3072:
mov [L2], 3072
jmp L000
 
L6144:
mov [L2], 6144
jmp L000
 
L305:
mov [L3], 512
jmp L000
642,6 → 928,10
mov [L3], 1024
jmp L000
 
L315:
mov [L3], 1536
jmp L000
 
L32:
mov [L3], 2048
jmp L000
668,9 → 958,15
 
L316:
mov [L3], 16384
;jmp L000
jmp L000
 
L318:
mov [L3], 18432
jmp L000
 
L324:
mov [L3], 24576
jmp L000
 
L000:
ret
ret
/programs/system/cpuid/trunk/logos.inc
16,5 → 16,9
via:
file 'via.gif' ;include gif file
 
vortex:
file 'vortex.gif' ;include gif file
 
knopka:
file 'knopka.gif' ;include gif file
 
/programs/system/cpuid/trunk/multipli.inc
1,12 → 1,20
newrating:
 
cmp [FRS], 266
jz f266
cmp [FRS], 333
jz f333
cmp [FRS], 400
jz f400
cmp [freqbb], 151
jl f266
 
cmp [freqbb], 150
ja ft
 
jmp vyxod
ft:
 
cmp [freqbb], 180
ja f400
 
cmp [freqbb], 181
jl f333
jmp vyxod
f266:
 
;ôîðìóëû âû÷èñëåíèÿ XP-ðåéòèíãà Athlon-îâ (Tbred, Barton):
14,6 → 22,7
;XP+ (Freq<2000MHz) = 1000 + (Freq-1000)*1,5 = Freq*1.5-500
;XP+ (Freq>=2000MHz) = 900 + (Freq-1000)*1,5 = Freq*1.5-600
 
mov [FRS], 266
 
cmp [total], 2000
jl pal
41,9 → 50,9
 
f333:
 
mov [FRS], 333
 
 
 
cmp [L2], 256
jl .Th ; Thorton
 
97,8 → 106,8
jmp vyxod
 
f400:
mov [FRS], 400
 
 
;FSB400/512kB:
;XP+ = Freq*1.5 - 100
 
/programs/system/cpuid/trunk/vortex.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property