Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6482 → Rev 6483

/programs/system/cpuid/trunk/Build.bat
1,6 → 1,2
@erase lang.inc
@echo lang fix en >lang.inc
@fasm -m 16384 cpuid.asm cpuid
@erase lang.inc
@kpack cpuid
@pause
fasm cpuid.asm cpuid
pause
/programs/system/cpuid/trunk/CPUID.ASM
2,12 → 2,12
; project name: CPUID *
; platform: KolibriOS, x86 (IA-32), x86-64 achitectures *
; compiler: flat assembler 1.70.03 *
; version: 2.28 *
; last update: 23rd October 2013 *
; version: 2.29 *
; last update: 12 October 2014 *
; maintained by: Sergey Kuzmin aka Wildwest *
; e-mail: kuzmin_serg@list.ru *
; site: http://coolthemes.narod.ru/files.html *
; license: Copyright 2004-2013 Sergey Kuzmin and co-authors *
; license: Copyright 2004-2014 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); *
26,10 → 26,10
dd U_END+4096
dd U_END+4096
dd 0x0
dd 0x0
dd path
 
include 'lang.inc' ; language support
include '..\..\..\macros.inc' ; useful macroses
include 'macros.inc' ; useful macroses
include 'draw.inc'
include 'brand.inc' ;Brand ID decoding
include 'caches.inc' ;(L1 and L2 cashes decoding for Intel)
36,12 → 36,32
include 'multipli.inc' ;(multiplier decoding)
include 'features.inc' ;(features decoding)
 
;include 'gif2img.inc' ;macros to convert gif to img
 
include 'rsatest.inc'
include 'variable.inc'
include 'load_lib.mac'
 
@use_library
 
START: ;
mcall 68,11
mcall 66,1,1
 
START: ; LET'S GO!!!
load_libraries l_libs_start,end_l_libs
;-----------------------------------------------------------------------------
;OpenDialog initialisation
push dword OpenDialog_data
call [OpenDialog_Init]
 
mov edi,filename_area
mov esi,start_temp_file_name
call copy_file_name_path
;-----------------------------------------------------------------------------
mcall 68,12,4096*8 ; 16 Kb - I hope this will be enough for store of data
mov [store_text_area_start],eax
 
 
;------------
CYCLES:
; CPU speed
174,6 → 194,7
shr ecx,16 ;shift it to the correct position
and ecx, 0000000Fh
shl ecx, 4
mov dword[newpc],ecx ; this value for old pc=0 and for new pc>0
add ecx, [m]
mov dword[em],ecx ; effective model
 
211,15 → 232,27
 
fut:
 
call decode_sse3
call decode_sse3_5
 
 
 
;call decode_sse3_5
;-
call decode_extended
 
mov dword [myname], $612F6E
mov eax,$80000000
cpuid
 
cmp [extc], $80000003
jbe .noname
mov [extc], eax ; max number of calls
 
test eax, $80000000 ;// Test bit 31
jz .noname
 
cmp eax,$80000003
ja .mynameis
jmp .noname
 
.mynameis:
mov eax,$80000002
cpuid
mov [myname],eax
238,6 → 271,7
mov [myname+36],ebx
mov [myname+40],ecx
mov [myname+44],edx
jmp red
 
.noname:
red:
244,6 → 278,8
 
;mov byte [multiplier], 115; ; for testing
 
call decode_sse3
 
call multipl ; get multiplier
mov byte [multiplier], cl
 
278,21 → 314,7
 
call draw_window ; Draw window
 
typedetect:
mov edx, t1
cmp [t], 00b
jz @f
mov edx, t2
cmp [t], 01b
jz @f
mov edx, t3
cmp [t], 11b
jz @f
mov edx, t4
@@:
mov ebx, 290*65536 + 250
mov ecx, 0x80000000
mcall 4
;HRERE
 
PROCCORE: ; Who are you?
; Intel - "GenuineIntel" +
306,17 → 328,17
; Transmeta - "GenuineTMx86" +
; National Semiconductor - "Geode by NSC"
; Vortex - "Vortex86 SoC" + initial support
cmp dword[smallvendor], 'ntel'
cmp dword[smallvendor], 'ntel' ;1
jz Intel
cmp dword[smallvendor], 'cAMD'
cmp dword[smallvendor], 'cAMD' ;2
jz AMD
cmp dword[smallvendor], 'tead'
cmp dword[smallvendor], 'tead' ;3
jz Cyrix
cmp dword[smallvendor], 'auls'
cmp dword[smallvendor], 'auls' ;4
jz Centaur
cmp dword[smallvendor], 'Mx86'
cmp dword[smallvendor], 'Mx86' ;5
jz Transmeta
cmp dword[smallvendor], ' SoC'
cmp dword[smallvendor], ' SoC' ;6
jz Vortex
 
; cmp ecx, 'UMC '
332,18 → 354,28
; jmp Other ; I don't know what to do with you...
Other:
Text 75,70,0x00000000,other, otherlen-other
 
mov esi, other
mov edi, [saveproc]
call concatname
 
jmp MMXtest
;-------------------------
 
AMD:
 
;-------------------------------------------------------------------------------
 
Text 15, 190,0x00000000,cache, cachelen-cache
 
Text 75,70,,AMDn, AMDnlen-AMDn
 
mov esi, AMDnNew
mov edi, saveproc
call concatname
mov esi, amd
call load_gif
PutImage 135,107,201,49,img_area+8
MOV [codeN], 2
; place size
 
; Relax, man. AMD made PRETTY SIMPLE cache detection routine
400,6 → 432,18
shr ecx, 16
mov [L2],ecx
 
movzx edx, dl ;not sure
mov [linel3], eax
 
mov eax, edx
 
and eax,00FF0000h
shr eax, 16
mov [wayl3], eax
 
shr edx, 24
mov [L3], edx
 
cmp [f], $5
jz .fiv
cmp [f], $6
406,6 → 450,10
jz .si
cmp [f], $F
jz fif
cmp [f], $10 ;family 16, 010h,
jz ten
 
.fiv: ; Family=5
mov [micron], 50
mov edx, A50
469,13 → 517,11
jmp MMXtest
A6:
; mov [FRS], 266 ;!!!!!!
 
; Number 315,90,0,3,dword [FRS],0x000000; MHz
 
call newrating; !!!!
 
Text 245,70,0x00000000,pr, prlen-pr
 
Number 310,70,0,4,dword [rating],0x000000
mov edx, At6
jmp @b
483,7 → 529,6
A8:
 
; mov [FRS], 266 ;!!!!!!
 
; Number 315,90,0,3,dword [FRS],0x000000; MHz
 
cmp [L2], 256
525,83 → 570,242
;here is a need to rewrite detection of AMD F-th family according to "Revision Guide for
;AMD AthlonTM 64 and AMD OpteronTM Processors" 25759.pdf
 
; checking sse3 for new AMD's is needed
 
cmp [m],$1 ; Dual-core Opteron
jz .AF1
cmp [m],$3 ; Toledo 1024 0.09 // Manchester ||Windsor Dual Core not supported
jz .AF3
jz AF1.
cmp [m],$3 ;Toledo 1024 0.09
jz AF3.
cmp [m],$4 ;Athlon 64 Mobile Athlon 64 FX ClawHammer (1024) 0.13
jz .AF4
jz AF4.
cmp [m],$5 ; Opteron Athlon 64 FX 0.13 (1024)
jz .AF5
jz AF5.
cmp [m],$7 ;Athlon 64 Athlon 64 FX Clawhammer(1024) 0.13 Sledgehammer(1024) 0.13 // SSE3+ SanDiego(1024)
jz .AF7
jz AF7.
cmp [m],$8 ; Athlon 64 Mobile Athlon 64 FX ClawHammer (1024) 0.13
jz .AF8
jz AF8.
cmp [m],$B ; Athlon 64
jz .AFB
jz AFB.
cmp [m],$C ;Athlon 64 Newcastle(512) 0.13 Sempron> Paris (256) 0.13 |SSE3+ Sempron > Palermo FC0 0.09 // (Venice)
jz .AFC
cmp [m],$E ; Athlon 64 //
jz .AFE
jz AFC.
cmp [m],$E ;Athlon 64
jz AFE.
cmp [m],$F ; Athlon 64 Winchester(512) |SSE3+ SanDiego(1024) Venice (512) Palermo (256) 0.09
jz .AFF
jz AFF.
jmp next_generation
.AF1:
ten: ;family = 10h
 
cmp [m],$2
jz AB23.
cmp [m], $8
jz AB83.
cmp [m], $9
jz AB9.
cmp [m], $2
jz AB8check2.
AB8check2.:
cmp [s],03h
jz AB8right2.
cmp [m],$2
jz athlonCheck
athlonCheck:
cmp [s],03h
jz athlonKuma
cmp [m], $5
jz AB4.
cmp [m],$1
jz AB1.
cmp [m],$4
jz AB8check.
AB8check.:
cmp [s],02h
jz ABC2.
cmp [s],01h
jz ABC3.
cmp [m], $9
jz AB6.
cmp [m], $2
jz AB8check.
cmp [m], 06h
jz ABM.
athlonKuma:
mov [micron], 65
Text 100,70,0x00000000,AthlonKuma, AthlonKumalen-AthlonKuma
mov esi, AthlonKuma
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
AB23.:
mov [micron], 65
Text 100,70,0x00000000,AB23, AB23len-AB23
mov esi, AB23
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
AB83.:
mov [micron], 65
Text 100,70,0x00000000,AB83, AB83len-AB83
mov esi, AB83
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
AB9.:
mov [micron], 65
Text 100,70,0x00000000,AB9, AB9len-AB9
mov esi, AB9
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
AB8right2.:
mov [micron], 65
Text 100,70,0x00000000,AB8right2, AB8right2len-AB8right2
mov esi, AB8right2
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
 
AB4.:
mov [micron], 45
Text 100,70,0x00000000,AB4, AB4len-AB4
mov esi, AB4
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
AB1.:
mov [micron], 65
Text 100,70,0x00000000,AB1, AB1len-AB1
mov esi, AB1
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
ABC2.:
mov [micron], 45
Text 100,70,0x00000000,ABC2, ABC2len-ABC2
mov esi, ABC2
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
AB6.:
mov [micron], 45
Text 100,70,0x00000000,AB6, AB6len-AB6
mov esi, AB6
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
ABC3.:
mov [micron], 45
Text 100,70,0x00000000,ABC3, ABC3len-ABC3
mov esi, ABC3
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
ABM.:
mov [micron], 45
Text 100,70,0x00000000,ABM2, ABM2len-ABM
mov esi, ABM2
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
 
AF1.:
mov [micron], 09 ;?
Text 100,70,0x00000000,AF1, AF1len-AF1
mov esi, AF1
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
.AF3:
AF3.:
mov [micron], 09
Text 100,70,0x00000000,AF3, AF3len-AF3
mov esi, AF3
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
.AF4:
AF4.:
mov [micron], 13
Text 100,70,0x00000000,AF4, AF4len-AF4
mov esi, AF4
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
.AF5:
AF5.:
mov [micron], 13
Text 100,70,0x00000000,AF5, AF5len-AF5
jmp MMXtest
.AF7:
AF7.:
mov [micron], 13
Text 100,70,0x00000000,AF5, AF5len-AF5
mov esi, AF5
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
.AF8:
AF8.:
mov [micron], 13
Text 100,70,0x00000000,AF4, AF4len-AF4 ; AF4, AF5len-AF4
Text 100,70,0x00000000,AF4, AF4len-AF4
mov esi, AF4
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
.AFB:
AFB.:
mov [micron], 13
Text 100,70,0x00000000,AF4, AF4len-AF4
mov esi, AF4
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
 
.AFC:
AFC.:
cmp [L2], 512
je .AFCn
je AFC.n
 
cmp [sse3sup], 1
je .AFCnpal
je AFC.npal
 
.AFCnpar: ; paris
AFC.npar: ; paris
mov [micron], 13
Text 100,70,0x00000000,AFCs, AFCslen-AFCs
mov esi, AFCs
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
 
.AFCnpal: ; palermo
AFC.npal: ; palermo
mov [micron], 9
Text 100,70,0x00000000,AFCsp, AFCsplen-AFCsp
mov esi, AFCsp
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
 
.AFCn: ;newcastle
AFC.n: ;newcastle
mov [micron], 13
Text 100,70,0x00000000,AFC, AFClen-AFC
mov esi, AFC
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
 
.AFE: ; error in cpu
jmp .AFC
AFE.: ; error in cpu
jmp AFC.
 
.AFF:
AFF.:
 
cmp [sse3sup], 1
je .AFFsse
621,35 → 825,45
 
.AFs:
Text 100,70,0x00000000,AFS, AFSlen-AFS
mov esi, AFS
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
 
.AFd:
Text 100,70,0x00000000,AFV, AFVlen-AFV
mov esi, AFV
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
 
.AFp:
Text 100,70,0x00000000,AFCsp, AFCsplen-AFCsp
mov esi, AFCsp
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
;-----------------------------------------------
Intel:
mov [codeN], $1
Text 75,70,0x00000000,Inteln, Intelnlen-Inteln
 
mov esi, IntelnNew
mov edi, saveproc
call concatname
mov esi, intel
call load_gif
PutImage 135,107,201,49,img_area+8
;PutImage 125,107,201,49,img_area+8
; place size
 
det:
cmp [f], $5
jz .five
jz five
cmp [f], $6
jz .six
jz six
cmp [f], $7
jz .sev
jz sev
cmp [f], $F
jz .fift
.five: ;Family=5
jz fift
five: ;Family=5
 
Text 15, 190,0x00000000,cache, cachelen-cache
 
669,6 → 883,9
jz .I8
.I0:
Text 110,70,0x00000000,P50, P50len-P50
mov esi, P50
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
676,49 → 893,76
jmp MMXtest
.I1:
Text 110,70,0x00000000,P5, P5len-P5
mov esi, P5
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 50
jmp MMXtest
.I2:
Text 110,70,0x00000000,P54C, P54Clen-P54C
mov esi, P54C
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 50
jmp MMXtest
.I3:
Text 110,70,0x00000000,P54T, P54Tlen-P54T
mov esi, P54T
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 50
jmp MMXtest
.I4:
Text 110,70,0x00000000,P55C, P55Clen-P55C
mov esi, P55C
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 35
jmp MMXtest
.I7:
Text 110,70,0x00000000,P54C, P54Clen-P54C
mov esi, P54C
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 35
jmp MMXtest
.I8:
Text 110,70,0x00000000,P55C, P55Clen-P55C
mov esi, P55C
mov edi, saveproc + 0x6
call concatname
mov [L1d], 16
mov [L1i], 16
mov [L2], 256
mov [micron], 35
jmp MMXtest
.six: ;Family=6
 
six: ;Family=6
 
Text 15, 190,0x00000000,cache, cachelen-cache
cmp [newpc],$0
jnz NEWintel
 
cmp [m],$0
jz .I60
749,84 → 993,366
.I60:
mov [micron], 50
Text 110,70,0x00000000,P60, P60len-P60
mov esi, P60
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I61:
mov [micron], 35
Text 110,70,0x00000000,P61, P61len-P61
mov esi, P61
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I63:
mov [micron], 28
Text 110,70,0x00000000,P63, P63len-P63
mov esi, P63
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I65:
mov [micron], 25
cmp [L2], 0
jne .pp65 ; Pentium
Text 110,70,0x00000000,P65c, P65clen-P65c
mov esi, P65c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.pp65:
Text 110,70,0x00000000,P65, P65len-P65
mov esi, P65
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I66:
mov [micron], 25
Text 110,70,0x00000000,P66, P66len-P66
mov esi, P66
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I67:
mov [micron], 25
Text 110,70,0x00000000,P67, P67len-P67 ;but if SSE4.1 supported then it is Intel Core (Penryn)
mov esi, P67
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I68:
mov [micron], 18
cmp [L2], 128
jne .pp68 ; Pentium
Text 110,70,0x00000000,P68c, P68clen-P68c
mov esi, P68c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.pp68:
Text 110,70,0x00000000,P68, P68len-P68
mov esi, P68
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I69:
mov [micron], 13
Text 110,70,0x00000000,P69 , P69len-P69
mov esi, P69
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I6A:
mov [micron], 18
Text 110,70,0x00000000,P6A, P6Alen-P6A ;but if SSE4.2 supported then it is Intel Core (Nehalem)
mov esi, P6A
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I6B:
mov [micron], 13
cmp [L2], 256
jne .pp6B ; Pentium
Text 110,70,0x00000000,P6Bc, P6Bclen-P6Bc
mov esi, P6Bc
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.pp6B:
Text 110,70,0x00000000,P6B, P6Blen-P6B
mov esi, P6B
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I6D:
mov [micron], 9
Text 110,70,0x00000000,P6D, P6Dlen-P6D
mov esi, P6D
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I6E:
mov [micron], 6
Text 110,70,0x00000000,P6E, P6Elen-P6E
mov esi, P6E
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I6F:
mov [micron], 6
Text 110,70,0x00000000,P6F, P6Flen-P6F
mov esi, P6F
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
;06Ex - Pentium M Yonah 0.065
;06Fx - Pentium D Conroe 0.065, Xeon Woodcrest, Celeron D AllenDale, Core 2 Kentsfield
 
.sev: ;Family=7
NEWintel:
 
cmp [em],$3A ;IvyBridge
jz I3A
cmp [em],$2A ;SandyBridge
jz I2A
cmp [em],$2D ;SandyBridge-E/EN/EP
jz I2D
cmp [em],$25 ;Arrandale/Clarksdale
jz I25
cmp [em],$2C ;Gulftown/Westmere-EP
jz I2C ;westmere-EP stepping B1 -> micron 0.032
cmp [em],$2F ;Westmere-EX
jz I2F
cmp [em],$1E ;Clarksfield/Lynnfield/Jasper Forest
jz I1E
cmp [em],$1A ;Bloomfield/Nehalem-EP
jz I1A
cmp [em],$2E ;Nehalem-EX
jz I2E
cmp [em],$17 ;Yorkfield/Wolfdale/Penryn/Harpertown (DP)
jz I17
cmp [em],$1D ;Dunnington (MP)
jz I1D
cmp [em],$0F ;Clovertown/Kentsfield/Conroe/Merom/Woodcrest
jz I0F
cmp [em],$16 ;Merom Conroe
jz I16
cmp [em],$06 ;Cedar Mill/Presler
jz I06
cmp [em],$03 ;Nocona Irwindale / Prescott
jz I03
cmp [em],$04 ;NoconaIrwindale / Prescott
jz I03
cmp [em],$0D ;Dothan
jz I0D
cmp [em],$36 ;Cedarview
jz I36
cmp [em],$26 ;Lincroft
jz I26
cmp [em],$1C ;Pineview/Silverthorne
jz I1C
 
Inewunknown:
jmp MMXtest
 
I3A:
mov [micron], 32
;Text 110,70,0x00000000,P3A, P3Alen-P3A
mov [cname], P3A
mov esi, P3A
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I2A:
mov [micron], 32
;Text 110,70,0x00000000,P2A, P2Alen-P2A
mov [cname], P2A
mov esi, P2A
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I2D:
mov [micron], 32
;Text 110,70,0x00000000,P2D, P2Dlen-P2D
mov [cname], P2D
mov esi, P2D
mov edi,saveproc + 0x10
call concatname
jmp MMXtest
 
I25:
mov [micron], 32
;Text 110,70,0x00000000,P25, P25len-P25
mov [cname], P25 ;P25
mov esi, P25
mov edi, saveproc + 0x10 ;12
call concatname
jmp MMXtest
 
I2C:
mov [micron], 32
;Text 110,70,0x00000000,P2C, P2Clen-P2C
mov [cname], P2C
mov esi, P2C
mov edi,saveproc + 0x10
call concatname
jmp MMXtest
 
I2F:
mov [micron], 32
;Text 110,70,0x00000000,P2F, P2Flen-P2F
mov [cname], P2F
mov esi, P2F
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I1E:
mov [micron], 32
;Text 110,70,0x00000000,P1E, P1Elen-P1E
mov [cname], P1E
mov esi, P1E
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I1A:
mov [micron], 45
;Text 110,70,0x00000000,P1A, P1Alen-P1A
mov [cname], P1A
mov esi, P1A
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I2E:
mov [micron], 45
;Text 110,70,0x00000000,P2E, P2Elen-P2E
mov [cname], P2E
mov esi, P2E
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I17:
mov [micron], 45
;Text 110,70,0x00000000,P17, P17len-P17
mov [cname], P17
mov esi, P17
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
I1D:
mov [micron], 45
;Text 110,70,0x00000000,P1D, P1Dlen-P1D
mov [cname], P1D
mov esi, P1D
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
I0F:
mov [micron], 65
;Text 110,70,0x00000000,P0F, P0Flen-P0F
mov [cname], P0F
mov esi, P0F
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
I16:
mov [micron], 65
;Text 110,70,0x00000000,P16, P16len-P16
mov [cname], P16
mov esi, P16
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I06:
mov [micron], 32
;Text 110,70,0x00000000,P06, P06len-P06
mov [cname], P06
mov esi, P06
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
I03:
mov [micron], 32
;Text 110,70,0x00000000,P03, P03len-P03
mov [cname], P03
mov esi, P03
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
I0D:
mov [micron], 32
;Text 110,70,0x00000000,P0D, P0Dlen-P0D
mov [cname], P0D
mov esi, P0D
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I36:
mov [micron], 32
;Text 110,70,0x00000000,P36, P36len-P36
mov [cname], P36
mov esi, P36
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I26:
mov [micron], 32
;Text 110,70,0x00000000,P26, P26len-P26
mov [cname], P26
mov esi, P26
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
I1C:
mov [micron], 32
;Text 110,70,0x00000000,P1C, P1Clen-P1C
mov [cname], P1C
mov esi, P1C
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
;;;;;;;;;;;;;;;;;;;
sev: ;Family=7
.IS0:
 
Text 15, 190,0x00000000,cache, cachelen-cache ;?
 
Text 15, 190,0x00000000,cache, cachelen-cache
mov [micron], 18
Text 110,70,0x00000000,PS0, PS0len-PS0
mov esi, PS0
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.fift: ;Family=15
fift: ;Family=15
 
Text 15, 190,0x00000000,cacheP4, cacheP4len-cacheP4
 
850,9 → 1376,15
cmp [L2], 128
jne .ppF0 ; Pentium
Text 110,70,0x00000000,PF0c, PF0clen-PF0c
mov esi, PF0c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.ppF0:
Text 110,70,0x00000000,PF0, PF0len-PF0
mov esi, PF0
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.IF1:
mov [micron], 18
867,6 → 1399,9
;jmp MMXtest
;.ppF1:
Text 110,70,0x00000000,PF0, PF0len-PF0
mov esi, PF0
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.IF2:
mov [micron], 13
873,9 → 1408,15
cmp [L2], 128
jne .ppF2 ; Pentium
Text 110,70,0x00000000,PF2c, PF2clen-PF2c
mov esi, PF2c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.ppF2:
Text 110,70,0x00000000,PF2, PF2len-PF2
mov esi, PF2
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.IF3:
mov [micron], 09
882,9 → 1423,15
cmp [L2], 256
jne .ppF3 ; Pentium
Text 110,70,0x00000000,PF3c, PF3clen-PF3c
mov esi, PF3c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.ppF3:
Text 110,70,0x00000000,PF3, PF3len-PF3
mov esi, PF3
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.IF5:
892,9 → 1439,15
cmp [L2], 512
jae .ppF5 ; Pentium
Text 110,70,0x00000000,PF5c, PF5clen-PF5c
mov esi, PF5c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.ppF5:
Text 110,70,0x00000000,PF5, PF5len-PF5
mov esi, PF5
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.IF6:
902,26 → 1455,35
cmp [L2], 512
ja .ppF6 ; Pentium
Text 110,70,0x00000000,PF6c, PF6clen-PF6c
mov esi, PF6c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.ppF6:
Text 110,70,0x00000000,PF6, PF6len-PF6
mov esi, PF6
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
 
next_generation:
Text 110,70,0x00000000,NG, NGlen-NG
mov esi, NG
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
;----------------------------------
Cyrix:
 
mov [codeN], 3
Text 15, 190,0x00000000,cache, cachelen-cache
 
mov esi, cyrix
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 .fivv
cmp [f], $6
937,7 → 1499,13
mov [L1d], 8
mov [L2], 512
Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
mov esi, Cyrixn
mov edi, saveproc
call concatname
Text 110,70,0x00000000,C52, C52len-C52
mov esi, C52
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.C54:
mov [micron], 50
945,7 → 1513,13
mov [L1d], 8
mov [L2], 512
Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
mov esi, Cyrixn
mov edi, saveproc
call concatname
Text 110,70,0x00000000,C54, C54len-C54
mov esi, C54
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.sixx: ;Family=6
959,7 → 1533,13
mov [L1d], 32
mov [L2], 512
Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
mov esi, Cyrixn
mov edi, saveproc
call concatname
Text 110,70,0x00000000,C60, C60len-C60
mov esi, C60
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.C65:
mov [micron], 25 ;35?
967,6 → 1547,9
mov [L1d], 32
mov [L2], 512
Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn
mov esi, Centaurn
mov edi, saveproc
call concatname
mov edx,C65
mov esi,C65len-C65
jmp OutProcName
983,8 → 1566,6
shr edx, 24
mov [L1i], edx
 
 
 
; cache detection routine
;CACHE1:
mov eax, 80000005h
1067,6 → 1648,9
; place size
 
Text 75,70,0x00000000,IDTn, IDTnlen-IDTn
mov esi, IDTn
mov edi, saveproc + 0x4
call concatname
cmp [m],$4
jz .V54
cmp [m],$8
1094,10 → 1678,12
mov esi, via
call load_gif
PutImage 135,107,201,49,img_area+8
;PutImage 125,107,201,49,img_area+8
; place size
 
 
Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn
mov esi, Centaurn
mov edi, saveproc
call concatname
cmp [m],$6
jz .V66
cmp [m],$7
1139,12 → 1725,13
Text 15, 190,0x00000000,cache, cachelen-cache
 
Text 75,70,,Tranmsmetan, Tranmsmetanlen-Tranmsmetan
mov esi, Tranmsmetan
mov edi, saveproc
call concatname
 
mov esi, transmeta
call load_gif
PutImage 135,107,201,49,img_area+8
;PutImage 125,107,201,49,img_area+8
; place size
 
; cache detection routine - it is the same as for AMD (almost)
;CACHE1:
1240,6 → 1827,9
mov [wayli], 4
mov [wayld], 4
Text 75,70,0x00000000,Vortexn, Vortexnlen-Vortexn
mov esi, Vortexn
mov edi, saveproc
call concatname
;Text 110,70,0x00000000,V54, V54len-V54
jmp MMXtest
 
1277,64 → 1867,63
 
TEXTOUT:
 
Text 15,110,0x00000000,fam, famlen-fam
Text 15,130,,mode, modelen-mode
Text 15,150,,step, steplen-step
;--------L1 L2
Number 75,170,0,3,dword [L1d],0x000000;
Number 75,190,,,dword [L1i]
Number 41,210,0,4,dword[L2]
Number 35,230,0,5,dword[L3]
;-----------Features
Number 258,50,0,2,dword [micron] ; micron
 
Text 275,290,0x00000000,HTT, HTTlen-HTT
Text 275,310,,sse3, sse3len-sse3
 
Text 15,70,,name, namelen-name
 
Text 15,290,,MMXs, MMXslen-MMXs
Text 15,310,,SSE, SSElen-SSE
Text 95,310,,SSE2, SSE2len-SSE2
 
Number 140,170,0,2,dword [wayld],0x000000
Number 218,170,,,dword [lineld]
;-------------------
TEST3DNOW:
 
Number 140,190,,,dword [wayli]
Number 218,190,,,dword [lineli]
xor edx, edx
cmp [smallvendor], 'ntel'
; je @f ;recent change
jne .t
 
Number 140,210,,,dword [wayl2]
Number 218,210,,,dword [linel2]
.t:
 
Number 140,230,,,dword [wayl3]
Number 218,230,,,dword [linel3]
mov eax, $80000001 ;// Setup extended function 8000_0001h
cpuid
 
;-------------------
TEST3DNOW:
test edx, $80000000 ;// Test bit 31
jnz .XIT
 
xor edx, edx
.NOEXTENDED: ;// 3DNow! technology is supported
mov dword [now+ 9], $6F6E
jmp TEST3DNOWP
.XIT:
mov dword [now+ 9], $736579
jmp TEST3DNOWP
 
TEST3DNOWP:
 
cmp [smallvendor], 'ntel'
je @f
je .NOEXTENDEDP
 
.tp:
 
mov eax, $80000001 ;// Setup extended function 8000_0001h
cpuid
 
@@:
mov eax, now+9
add edx, edx
call write_yes_no_cf
test edx, $40000000 ;// Test bit 30
jnz .XITP ;// 3DNow! technology is supported
 
mov eax, nowp+9
add edx, edx
call write_yes_no_cf
.NOEXTENDEDP:
mov dword [nowp+ 9], $6F6E
jmp TESTMMXP
.XITP:
mov dword [nowp+ 9], $736579
jmp TESTMMXP
 
 
TESTMMXP:
 
mov eax,$80000000
cpuid
 
test eax, eax
jns NOEXTENDEDM
test eax, 80000000h
jna NOEXTENDEDM
 
;cmp eax, $80000000 ;// Is 800_0001h supported?
;jz .NOEXTENDEDM ;// If not, 3DNow! technology is not supported
1361,8 → 1950,8
 
text3d:
 
Text 175,290,0x00000000,now, nowlen-now
Text 175,310,,nowp, nowplen-nowp
Text 15,330,0x00000000,now, nowlen-now
Text 95,330,,nowp, nowplen-nowp
Text 95,290,,mmxp, mmxplen-mmxp
 
jmp still
1369,6 → 1958,7
 
;--------------------------
NO_CPUID:
mov [nocpuid], 1
Text 15,50,0x00000000,oblom, oblomlen-oblom
 
FREEZE:
1381,7 → 1971,7
event_wait:
 
;================_RAM_==============
Number 200,340,0,4,dword [ram_size_a],0xFFFFFF
Number 200,350,0,4,dword [ram_size_a],0xFFFFFF ;Number 200,340,0,4,dword [ram_size_a],0xFFFFFF
 
mov eax, 18
mov ebx, 16
1399,13 → 1989,11
 
mov [ram_size_t], eax
 
Text 115,340,0x00000000,ram, ramlen-ram
Text 300,340,,mb, mblen-mb
Text 115,350,0x00000000,ram, ramlen-ram
Number 200,350,0,4,dword [ram_size_a],0x000000
Number 270,350,,,dword [ram_size_t]
 
Number 200,340,0,4,dword [ram_size_a],0x000000
 
Number 270,340,,,dword [ram_size_t]
 
;==============================
 
mov eax,23 ; function 23 - event wait
1414,6 → 2002,7
 
cmp eax,1 ;
je red ; redraw
je red2
cmp eax,2 ;
je key ; key
cmp eax,3 ;
1430,41 → 2019,21
 
cmp ah,2 ; = 2 ?
je thread_start ;
;
; cmp ah,3 ; = 3 ?
jne still
 
cmp ah, 3
je call_OpenDialog
 
;vybor:
mov eax,11 ; function 23 - event wait
mov ebx,1
mcall
 
; Number 310,70,0,4,dword [rating],0xFFFFFF ;
mov eax,15 ; function 23 - event wait
mov ebx,3
mcall
 
; Number 315,90,0,3,dword [FRS]; MHz
; cmp ah,3 ; = 3 ?
jne still
 
;cmp [FRS], 266
;jz .s1
;cmp [FRS], 333
;jz .s2
;cmp [FRS], 400
;jz .s3
 
;.s1:
;mov [FRS], 333
;.rating:;
;call newrating
; Number 310,70,0,4,dword [rating],0x000000
 
; Number 315,90,0,3,dword [FRS]; MHz
;jmp still
;
;.s2:
;mov [FRS], 400
;jmp .rating
;
;.s3:
;mov [FRS], 266
;jmp .rating
 
close:
mov eax,-1
mcall
1537,21 → 2106,23
or eax,-1 ;
mcall
 
 
draw_window_2:
 
;call prepare_text_area
 
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,1h ; 1, start of draw
mcall
 
 
Window 250,250,420,390, 0x33FFFFFF, 0x805080d0, standard
Window 250,250,420,520, 0x33FFFFFF, 0x805080d0, standard ;460
; place size
 
 
Text 15, 10,0x00000000, STDCA, STDCAlen-STDCA
Text 215, 10,, EXTCA, EXTCAlen-EXTCA
 
Number 135,10,1*256,8,dword [stdc],0x000000
Number 335,10,,,dword [extc],
 
Text 15, 30,0x00000000, FPU, FPUlen-FPU
Text 115, 30,, VME, VMElen-VME
Text 215, 30,, DE, DElen-DE
1596,7 → 2167,7
 
mov eax,$80000000
cpuid
;mov eax, $03020101  for test of reaction
;mov eax, $03020101 \A0for test of reaction
test eax, eax
js goooddd
 
1613,6 → 2184,11
Text 15,295,,VMX, VMXlen-VMX
Text 15,315,,SVM, SVMlen-SVM
 
Text 15,355,0x00000000,SMX, SMXlen-SMX
Text 15,335,0x00000000,PAGE, PAGElen-PAGE
Text 15,375,0x00000000,MIS, MISlen-MIS
Text 115,355,0x00000000,WDT, WDTlen-WDT
 
Text 115,195,,CNXT_ID, CNXT_IDlen-CNXT_ID
Text 115,215,,CX16, CX16len-CX16
Text 115,235,,ETPRD, ETPRDlen-ETPRD
1621,6 → 2197,14
Text 115,295,,SSSE3, SSSE3len-SSSE3
Text 115,315,,MCR8, MCR8len-MCR8
 
 
Text 115,335,0x00000000,EAS, EASlen-EAS
 
Text 115,375,0x00000000,DNP, DNPlen-DNP
 
 
Text 315,375,0x00000000,SSE5, SSE5len-SSE5
 
Text 215,195,,MP, MPlen-MP
Text 215,215,,NX, NXlen-NX
Text 215,235,,MMXPi, MMXPilen-MMXPi
1628,22 → 2212,84
Text 215,275,,FXSRn, FXSRnlen-FXSRn
Text 215,295,,DCA,DCAlen-DCA
 
Text 315,295,0x00000000,SSE41,SSE41len-SSE41
Text 215,335,0x00000000,x2APIC,x2APIClen-x2APIC
Text 215,355,0x00000000,ABM,ABMlen-ABM
Text 215,375,0x00000000,OSVW,OSVWlen-OSVW
 
Text 315,195,,FFXSR, FFXSRlen-FFXSR
Text 315,215,,TSCP, TSCPlen-TSCP
Text 315,235,,LM, LMlen-LM
Text 315,255,,DNo, DNolen-DNo
Text 315,275,,DN, DNlen-DN
Text 315,295,,CMPL, CMPLlen-CMPL
Text 215,315,,CMPL, CMPLlen-CMPL
Text 315,315,0x00000000,SS42,SS42len-SS42
Text 315,335,0x00000000,PPCNT,PPCNTlen-PPCNT
Text 315,295,0x00000000,SSE4A,SSE4Alen-SSE4A
Text 315,355,0x00000000,SKINIT_,SKINIT_len-SKINIT_
 
 
too:
DrawLine 0, 410, 335,335,0x8080FF ;10
DrawLine 10, 400, 430,430,0x8080FF ;10
 
Text 15,350,0x00000000,speed, speedlen-speed
Text 130,350,,kbpersec, kbperseclen-kbpersec
Text 15,415,0x00000000,speed, speedlen-speed
Text 130,415,,kbpersec, kbperseclen-kbpersec
 
Number 95,350,0,5,dword [iter],0x000000; RSA test results
DrawLine 10, 80, 400, 400, 0x8080FF
 
Text 90,400,0x80000000,performancestr, 0
DrawLine 322, 400, 400, 400, 0x8080FF
DrawLine 10, 10, 400, 490, 0x8080FF
DrawLine 400, 400, 400, 490, 0x8080FF
 
DrawLine 10, 400, 490, 490, 0x8080FF
 
; your proc
Text 20,415,0x808080FF,currentcpu, 0
Number 170,415,0,5,dword [iter],0x000000 ; + 15
;Text 115,370,,kbpersec, kbperseclen-kbpersec ;+ 355
mov eax, dword[iter]
;mov ebx, 100
;mul ebx
add eax, 215
mov word[linelen], ax ; need to store it as drawline corrupts eax
DrawLine 215, [linelen], 416,416,0x8080FF ;10 + 355 , 357
DrawLine 215, [linelen], 417,417,0x8080FF ;10
DrawLine 215, [linelen], 418,418,0x8080FF ;10
;;; DrawLine 20, 390, 371,371,0x8080FF ;10
 
; sample proc 1
Text 20,435,0x80000000,samplename1,0 ; 10 + 40 + 40 +40 + 380
Number 170,435,0,5,dword [samplespeed1],0x000000; ; 25 + 40 + 40 +40 + 380
;Text 115,470,0,kbpersec, kbperseclen-kbpersec ; 25 + 40 + 40 +40 + 380
mov eax, dword[samplespeed1]
add eax, 215
mov dword[linelen], eax ; need to store it as drawline corrupts eax
DrawLine 215, [linelen], 436,436,0x8080FF ;27+40 + 40 +40 + 380
DrawLine 215, [linelen], 437,437,0x8080FF ;10
DrawLine 215, [linelen], 438,438,0x8080FF ;10
 
; sample proc 2
Text 20,455,0x80000000,samplename2,0 ; 10 + 40 + 350
Number 170,455,0,5,dword [samplespeed2],0x000000; ; 25 + 40 + 350
;Text 115,410,0,kbpersec, kbperseclen-kbpersec ; 25 + 40 + 350
mov eax, dword[samplespeed2]
add eax, 215
mov dword[linelen], eax ; need to store it as drawline corrupts eax
DrawLine 215, [linelen], 456,456,0x8080FF ;27+40 + 355
DrawLine 215, [linelen], 457,457,0x8080FF ;10
DrawLine 215, [linelen], 458,458,0x8080FF ;10
 
; sample proc 3
Text 20,475,0x80000000,samplename3,0 ; 10 + 40 + 40 + 38
Number 170,475,0,5,dword [samplespeed3],0x000000; ; 25 + 40 + 40 + 355
;Text 115,440,0,kbpersec, kbperseclen-kbpersec ; 25 + 40 + 40 + 380
mov eax, dword[samplespeed3]
add eax, 215
mov dword[linelen], eax ; need to store it as drawline corrupts eax
DrawLine 215, [linelen], 476,476,0x8080FF ;27+40 + 40
DrawLine 215, [linelen], 477,477,0x8080FF ;10
DrawLine 215, [linelen], 478,478,0x8080FF ;10
 
mov eax,12
mov ebx,2h
mcall
1650,6 → 2296,16
 
ret
 
linelen dd 0
currentcpu db 'Current CPU',0
samplename1 db 'Intel Core i5 CPU', 0x000000 ; not real results!
samplespeed1 dd 62
samplename2 db 'Intel Core i3 CPU', 0
samplespeed2 dd 48
samplename3 db 'Intel Pentium Dual CPU', 0
samplespeed3 dd 35
performancestr db 'PERFORMANCE (KB/S in RSA test 256 bit)',0
ptsstring db ''
num_win2 db 0
 
; ******* main window *******
1659,27 → 2315,34
mov ebx,1h
mcall
 
Window 150,150,350,385, 0x34FFFFFF, 0x805080d0, title
Window 150,150,350,430, 0x34FFFFFF, 0x805080d0, title
; place size
 
Button 15,330,92,23,2+0x40000000,0x03FFFFFF ; button "press for more"
Button 15,345,92,23,2+0x40000000,0x03FFFFFF ; button "press for more"
 
mov esi, knopka
mov edi, img_area2
call load_gif2
PutImage 15,330,93,24,img_area2+8 ; image "press for more"
PutImage 15,345,93,24,img_area2+8 ; image "press for more"
; place size
 
 
Button 15,380,92,23,3+0x40000000,0x03FFFFFF ; button "save"
 
mov esi, knopka2
mov edi, img_area3
call load_gif2
PutImage 15,380,93,24,img_area3+8 ; image "save"
; place size
 
mov eax,12
mov ebx,2h
mcall
 
Text 130,270,0x00000000,instruct, instructlen-instruct
 
DrawLine 10, 330, 325,325,0x8080FF
DrawLine 330, 330, 275,325;,0x8080FF
DrawLine 10, 10, 275,325;,0x8080FF
DrawLine 10, 330, 340,340,0x8080FF
DrawLine 330, 330, 275,340;,0x8080FF
DrawLine 10, 10, 275,340;,0x8080FF
DrawLine 10, 125, 275,275;,0x8080FF
DrawLine 230, 330, 275,275;,0x8080FF
 
1689,45 → 2352,267
jne cont
 
; Button 240,85,69,15,3,0x030000FF ; button for rating
 
; Text 245,90,0x00FFFFFF,FR, FRlen-FR ; text at button
 
call newrating; !!!!
 
cont:
Text 15,50,0x00000000,tsum, tsumlen-tsum ;
 
;Number 82,50,0,4,dword [total],0x000000; MHz
mov esi, total
mov edi, tsum + 0xB ;0xA
call savenumber
 
Text 15,50,0x00000000,tsum, tsumlen-tsum ;
;Number 110,50,0,2,dword [sot]; KHz
mov esi, sot
mov edi, tsum + 0x10
call savenumber
 
;Number 75,110,1*256,1,dword [f],0x000000 ;
mov esi, f
mov edi, fam + 0x8 ;0x9
call savenumber
 
;Number 75,130,,,dword [m]
mov esi, m
mov edi, mode + 0x7
call savenumber
 
;Number 75,150,,,dword [s]
mov esi, s
mov edi, step + 0xa ;0x9
call savenumber
 
;Number 110,110,1*256,2,dword [ef]
mov esi, ef
mov edi, fam + 0xE ;0x9
call savenumber
 
;Number 110,130,,,dword [em]
mov esi, em
mov edi, mode + 0xE ;0xD
call savenumber
 
mov esi, multb
mov edi, multil + 0xB
call savenumber
 
;Number 105,30,0,1,dword [multa]
mov esi, multa
mov edi, multil + 0xf
call savenumber
 
;Number 140,170,0,2,dword [wayld],0x000000
mov esi, wayld
mov edi, cache2 + 0x14 ;0x14
call savenumber
 
;Number 218,170,,,dword [lineld]
mov esi, lineld
mov edi, cache2 + 0x21
call savenumber
 
;Number 140,190,,,dword [wayli]
mov esi, wayli
mov edi, cache + 0x14
call savenumber
;Number 218,190,,,dword [lineli]
mov esi, lineli
mov edi, cache + 0x21
call savenumber
 
;Number 140,210,,,dword [wayl2]
mov esi, wayl2
mov edi, cache3 + 0x14
call savenumber
;Number 218,210,,,dword [linel2]
mov esi, linel2
mov edi, cache3 + 0x21
call savenumber
 
;Number 140,230,,,dword [wayl3]
mov esi, wayl3
mov edi, cache4 + 0x14
call savenumber
;Number 218,230,,,dword [linel3]
mov esi, linel3
mov edi, cache4 + 0x21
call savenumber
 
mov esi, L1d
mov edi, cache2 + 0xa
call savenumber
;Number 75,190,,,dword [ L1i]
mov esi, L1i
mov edi, cache + 0xa
call savenumber
 
;Number 41,210,0,4,dword[L2]
mov esi, L2
mov edi, cache3 + 0x4 ;0x3
call savenumber
 
;Number 35,230,0,5,dword[L3]
mov esi, L3
mov edi, cache4 + 0x4 ;0x3
call savenumber
 
;-----------Features
;Number 258,50,0,2,dword [micron] ; micron
mov esi, micron
mov edi, tech + 0xE
call savenumber
 
mov esi, stdc
mov edi, STDCA + 0x14
call savenumber
 
;Number 335,10,,,dword [extc],
mov esi, extc
mov edi, EXTCA + 0x14
call savenumber
 
Text 15,90,,cpuname, cpunamelen-cpuname;
Text 255,250,,typen, typenlen-typen;
Text 255,250,,typen, typenlen-typen
Text 175, 50,,tech, techlen-tech;
 
Number 82,50,0,4,dword [total],0x000000; MHz
Number 110,50,0,2,dword [sot]; KHz
red2:
 
;;;;;;;;;;;;;;;;;;;;;;;;
goon:
call decodebrand
typedetect:
mov edx, t1
cmp [t], 00b
jz @f
mov edx, t2
cmp [t], 01b
jz @f
mov edx, t3
cmp [t], 11b
jz @f
mov edx, t4
@@:
mov ebx, 290*65536 + 250
mov ecx, 0x80000000
mcall 4
Text 15,250,,brandid, brandidlen-brandid
 
Text 15,110,0x00000000,fam, famlen-fam
Text 15,130,0x00000000,mode, modelen-mode
Text 15,150,0x00000000,step, steplen-step
Text 275,290,0x00000000,HTT, HTTlen-HTT
Text 275,310,,sse3, sse3len-sse3
Text 175,290,0x00000000,SSE41, SSE41len-SSE41
Text 175,310,0x00000000,SSE42, SSE42len-SSE42
Text 175,330,0x00000000,SSE5, SSE5len-SSE5
 
Text 15,70,,name, namelen-name
Text 15,290,,MMXs, MMXslen-MMXs
Text 15,310,,SSE, SSElen-SSE
Text 95,310,,SSE2, SSE2len-SSE2
Text 95,290,,mmxp, mmxplen-mmxp
Text 15,330,0x00000000,now, nowlen-now
Text 95,330,,nowp, nowplen-nowp
Text 115,350,0x00000000,ram, ramlen-ram
Number 200,350,0,4,dword [ram_size_a],0x000000
Number 270,350,0,4,dword [ram_size_t]
Text 300,350,0x00000000,mb, mblen-mb
Text 15, 190,0x00000000,cache, cachelen-cache
Text 15,170,0x00000000,cache2, cache2len-cache2
Text 15,210,,cache3, cache3len-cache3
Text 15,230,,cache4, cache4len-cache4
Text 110,70,0x00000000,dword[cname], 40
call load_gif
 
 
Number 75,110,1*256,1,dword [f],0x000000 ;
Number 75,130,,,dword [m]
Number 75,150,,,dword [s]
 
Number 110,110,1*256,2,dword [ef]
Number 110,130,,,dword [em]
 
Text 15,30,0x00000000,multil, multillen-multil
Text 175,30,,freql, freqllen-freql
cmp [nomultiplier], $1
je nomultip
Text 15,30,0x00000000,multil2, multil2len-multil2
Text 175,30,0x00000000,freql2, freql2len-freql2
Number 85,30,0,2,dword [multb],0x000000;
Number 105,30,0,1,dword [multa]
Number 259,30,0,4,dword [freqbb]
Number 289,30,0,2,dword [freqll]
JumpForCodename:
cmp [codeN], $1
je codeNIntel
cmp [codeN], $2
je codeNAMD
cmp [codeN], $3
je codeNCyrix
cmp [codeN], $4
je codeNCentaur
cmp [codeN],$5
je codeNTransmeta
cmp [codeN], $6
je codeNVortex
codeNIntel:
Text 75,70,0x00000000,Inteln, Intelnlen-Inteln
mov esi, intel
call load_gif
PutImage 135,107,201,49,img_area+8
jmp nnn
 
codeNAMD:
Text 75,70,,AMDn, AMDnlen-AMDn
mov esi, amd
call load_gif
PutImage 135,107,201,49,img_area+8
jmp nnn
 
codeNCyrix:
Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
mov esi, cyrix
call load_gif
PutImage 135,107,201,49,img_area+8
jmp nnn
 
codeNCentaur:
Text 75,70,0x00000000,IDTn, IDTnlen-IDTn
mov esi, idt
call load_gif
PutImage 135,107,201,49,img_area+8
jmp nnn
 
codeNTransmeta:
Text 75,70,,Tranmsmetan, Tranmsmetanlen-Tranmsmetan
mov esi, transmeta
call load_gif
PutImage 135,107,201,49,img_area+8
jmp nnn
 
codeNVortex:
Text 75,70,0x00000000,Vortexn, Vortexnlen-Vortexn
mov esi, vortex
call load_gif
PutImage 135,107,201,49,img_area+8
jmp nnn
nomultip:
Text 15,30,0x00000000,multi3, multi3len-multi3
Text 175,30,0x00000000,freql3, freql3len-freql3
Text 259,30,0x00000000, clock0, clock0len-clock0
 
jmp JumpForCodename
 
nnn:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Text 115,280,0x00000000,logcpus, logcpuslen-logcpus
;Number 250,280,0,2,dword [number_of_log_cpus],0x000000
 
 
Text 15,10,0x00000000,stm, stmlen-stm
; Fix for deleting leading whitespaces
; in Intel P4's internal name
1742,248 → 2627,629
mov esi,mynamelen
sub esi,edi
Text 105, 10, 0x00000000, edi, esi
; Text 105,20,0x00000000,myname, mynamelen-myname
;-
Text 15,250,,brandid, brandidlen-brandid
 
ret ;
 
load_gif:
mov edi, img_area
load_gif2:
call_OpenDialog:
 
COLOR_ORDER equ MENUETOS
include 'gif_lite.inc' ; parse GIF files
mov [OpenDialog_data.type],1 ; Save
 
; DATA AREA
push dword OpenDialog_data
call [OpenDialog_Start]
 
title db 'CPUID 2.28 by S.Kuzmin & the KolibriOS team',0
cmp [OpenDialog_data.status],2 ; OpenDialog does not start
je .save_file_default_path
 
cmp [OpenDialog_data.status],1
jne still
 
tsum:
call store_data
jmp still
 
if lang eq it
.save_file_default_path:
mov edi,file_name
mov esi,file_default_path
call copy_file_name_path
call store_data
jmp still
 
db 'Frequenza: . MHz'
copy_file_name_path:
xor eax,eax
cld
@@:
lodsb
stosb
test eax,eax
jnz @r
ret
;-----------------------------------------------------------------------------
prepare_text_area:
mov edi,[store_text_area_start]
 
else
push edi
mov ecx,4096
mov eax,dword ' '
cld
rep stosd
pop edi
mov [store_text_area_end], edi
 
db 'Frequency: . MHz'
mov esi,title
call addstring
 
end if
mov esi, stm
call addstring
 
mov esi, myname
call addstring
cmp [nomultiplier], $1
je noMult
jne detMulti
;jne detFreq
 
detMulti:
mov esi,multil
call addstring
jmp detFreq
detFreq:
mov esi, freql
call addstring
 
tsumlen:
noMult:
mov esi,multi3
call addstring
 
mov esi,freql3
call addstring
mov esi, tech
call addstring
 
total dd 0x0
mov esi, saveproc
call addstring
 
total1 dd 0x0
mov esi, cpuname
call addstring
 
rating dd 0x0
mov esi, fam
call addstring
 
rat dd 0x0 ;
mov esi, mode
call addstring
 
mov esi, step
call addstring
mov esi, cache2
call addstring
 
ram:
mov esi, cache
call addstring
 
if lang eq it
mov esi, cache3
call addstring
 
db 'RAM libera: su'
mov esi, cache4
call addstring
 
else
mov esi, brandid
call addstring
 
db 'Available RAM: out of'
mov esi, MMXs
call addstring
 
end if
mov esi, mmxp
call addstring
 
mov esi, now
call addstring
mov esi, HTT
call addstring
 
mov esi, SSE
call addstring
mov esi, SSE41
call addstring
 
ramlen:
mov esi, SSE42
call addstring
 
mov esi, SSE5
call addstring
mov esi, SSE2
call addstring
 
NEF:
mov esi, nowp
call addstring
 
db 'EXTENDED FEATURES ARE NOT AVAILABLE'
mov esi, sse3
call addstring
 
NEFlen:
mov esi, standard
call addstring
 
mov esi, STDCA
call addstring
mov esi, EXTCA
call addstring
 
mb :
mov esi, FPU
call addstring
 
db 'MB'
mov esi, VME
call addstring
 
mblen:
mov esi, DE
call addstring
 
mov esi, PSE
call addstring
mov esi, TSC
call addstring
 
;logcpus :
mov esi, MSR
call addstring
 
;db 'Number of logical CPU:'
mov esi, PAE
call addstring
 
;logcpuslen:
mov esi, MCE
call addstring
 
mov esi, CX8
call addstring
mov esi, APIC
call addstring
 
speed :
mov esi, Res
call addstring
 
if lang eq it
mov esi, SEP
call addstring
 
db 'Performance'
mov esi, MTRR
call addstring
 
else
mov esi, PGE
call addstring
 
db 'PERFORMANCE:'
mov esi, MCA
call addstring
 
end if
mov esi, CMOV
call addstring
 
mov esi, PAT
call addstring
mov esi, PSE36
call addstring
 
mov esi, PSNUM
call addstring
mov esi, CLFLUSHn
call addstring
 
speedlen:
mov esi, Res
call addstring
 
mov esi, DTS
call addstring
mov esi, ACPI
call addstring
 
kbpersec:
mov esi, MMX
call addstring
 
db 'KB/SEC'
mov esi, FXSR
call addstring
 
kbperseclen:
mov esi, SSE
call addstring
 
mov esi, SSn
call addstring
 
instruct:
mov esi, HTT
call addstring
 
if lang eq it
mov esi, TM
call addstring
 
db 'Set istruzioni'
mov esi, IA64
call addstring
 
else
mov esi, PBE
call addstring
 
db 'Instruction sets'
mov esi, SS3
call addstring
 
end if
mov esi, CNXT_ID
call addstring
 
mov esi, MP
call addstring
mov esi, FFXSR
call addstring
 
mov esi, MON
call addstring
mov esi, CX16
call addstring
 
instructlen:
mov esi, NX
call addstring
 
mov esi, TSCP
call addstring
mov esi, DS_CPL
call addstring
 
standard db 'Standard and Extended features plus Performance test',0
mov esi, ETPRD
call addstring
 
mov esi, MMXPi
call addstring
mov esi, LM
call addstring
 
;FR:
mov esi, EST
call addstring
 
; db 'Choose FSB:'
mov esi, SYS
call addstring
 
;FRlen:
mov esi, MMXn
call addstring
 
mov esi, DNo
call addstring
mov esi, TM2
call addstring
 
STDCA:
mov esi, LAF
call addstring
 
db 'Highest STD call is '
mov esi, FFXSR
call addstring
 
STDCAlen:
mov esi, DN
call addstring
 
mov esi, VMX
call addstring
mov esi, SSSE3
call addstring
 
EXTCA:
mov esi, DCA
call addstring
 
db 'Highest EXT call is h'
mov esi, CMPL
call addstring
 
EXTCAlen:
mov esi, SVM
call addstring
 
mov esi, MCR8
call addstring
mov esi, SMX
call addstring
 
brandid:
mov esi, x2APIC
call addstring
 
db 'Brand:'
mov esi, PPCNT
call addstring
 
brandidlen:
mov esi, PAGE
call addstring
 
mov esi, EAS
call addstring
mov esi, ABM
call addstring
 
oblom:
mov esi, MIS
call addstring
 
if lang eq it
mov esi,OSVW
call addstring
 
db 'CPUID non e disponibile'
mov esi,SKINIT_
call addstring
 
else
mov esi, WDT
call addstring
 
db 'SORRY, CPUID IS NOT AVAILABLE'
ret
 
end if
addstring:
mov edi, [store_text_area_end]
xor eax, eax
xor ecx, ecx
cld
@@:
lodsb
stosb
inc [store_text_area_end]
cmp [esi], byte 0x0
jnz @r
mov al,0Ah
stosb
 
mov [store_text_area_end],edi
xor edi,edi
xor esi, esi
ret
savenumber:
xor eax, eax
cld
lodsw
call numbertostring
xor esi, esi
xor edi, edi
 
oblomlen:
ret
 
other:
savestring:
xor eax, eax
cld
lodsw
;call numbertostring
xor esi, esi
xor edi, edi
 
ret
 
numbertostring:
mov bx, 10
xor cx, cx
@@m1:
xor dx, dx
div bx
push dx
inc cx
test ax, ax
jnz @@m1
@@m2:
pop ax
add al, '0'
stosb
loop @@m2
ret
 
concatname:
;mov edi, [saveproc]
xor eax, eax
xor ecx, ecx
cld
@@:
lodsb
stosb
cmp [esi], byte 0x0
jnz @r
 
xor edi,edi
xor esi, esi
ret
 
store_data:
call prepare_text_area
mov eax,[store_text_area_start]
mov [fileinfo.return],eax
mov ebx,[store_text_area_end]
sub ebx,eax
inc ebx
mov [fileinfo.size],ebx
mcall 70,fileinfo
ret
 
 
 
load_gif:
mov edi, img_area
load_gif2:
COLOR_ORDER equ MENUETOS
include 'gif_lite.inc' ; parse GIF files
 
; DATA AREA
 
title db 'CPUID 2.29 by S.Kuzmin & the KolibriOS team',0
 
stm:
db 'Internal name:', 0
 
stmlen:
 
SS42:
db 'SSE4.2: ',0
SS42len:
 
SMX:
db 'SMX: ',0
SMXlen:
 
x2APIC:
db 'x2APIC: '
x2APIClen:
 
PPCNT:
db 'POPCNT: '
PPCNTlen:
 
PAGE:
db 'Page1Gb: '
PAGElen:
 
EAS:
db 'EAS: ',0
EASlen:
 
newLabel:
db '3DNP: ',0
newLabellen:
 
 
ABM:
db 'ABM: '
ABMlen:
 
SSE4A:
db 'SSE4A: '
SSE4Alen:
 
MIS:
db 'MIS: ',0
MISlen:
 
DNP:
db '3DNP: '
DNPlen:
 
OSVW:
db 'OSVW: ',0
OSVWlen:
 
SKINIT_:
db 'SKINIT: ',0
SKINIT_len:
 
WDT:
db 'WDT: ',0
WDTlen:
 
 
saveproc:
db ' ',0
 
multil:
db 'Multiplier: . ', 0
 
multillen:
 
multil2:
 
db 'Multiplier .'
 
multil2len:
 
multi3:
 
db 'Multiplier: n/a',0
 
multi3len:
 
freql:
 
db 'System clock: . MHz', 0
freqllen:
 
freql2:
 
db 'System clock . MHz'
 
 
freql2len:
 
freql3:
 
db 'System clock: n/a '
 
 
freql3len:
 
tsum:
 
db 'Frequency: . MHz ',0
 
tsumlen:
 
tech:
 
db 'Technology: 0. micron ', 0
 
techlen:
 
name:
 
if lang eq it
 
db 'Questo vendor non e supportato'
db 'Codename:',0
 
else
 
db 'SORRY, THIS VENDOR IS NOT SUPPORTED YET'
db 'CODENAME:',0
 
 
end if
 
namelen:
vendorname:
 
otherlen:
if lang eq it
 
db 'Vendor CPU ', 0
else
 
db 'CPU VENDOR: ', 0
 
end if
 
vendornamelen:
 
cpuname:
 
if lang eq it
 
db 'Vendor CPU '
db 'Vendor CPU ', 0
 
else
 
db 'CPU VENDOR: '
db 'CPU VENDOR: ', 0
 
end if
 
cpunamelen:
 
cpunamelen:
 
fam:
 
if lang eq it
 
db 'Famiglia: std ext'
db 'Famiglia: std ext', 0
 
else
 
db 'FAMILY: std ext'
db 'FAMILY: std ext', 0
 
end if
 
 
 
famlen:
 
mode:
1990,16 → 3256,14
 
if lang eq it
 
db 'Modello: std ext'
db 'Modello: std ext', 0
 
else
 
db 'MODEL: std ext'
db 'MODEL: std ext', 0
 
end if
 
 
modelen:
 
step:
2006,173 → 3270,270
 
if lang eq it
 
db 'Stepping:'
db 'Stepping: ', 0
 
else
 
db 'STEPPING:'
db 'STEPPING: ', 0
 
end if
 
steplen:
cache:
 
steplen:
db 'L1(inst): KB -way set -byte line size',0
 
cachelen:
 
cache2:
 
db 'L1(data): KB -way set -byte line size',0
cache2len:
 
db 'L1(data): KB -way set -byte line size'
 
cache2len:
cache3:
 
db 'L2: KB -way set -byte line size',0
cache3len:
 
cache:
cache4:
 
db 'L1(inst): KB -way set -byte line size'
db 'L3: KB -way set -byte line size',0
 
cachelen:
cache4len:
 
brandid:
db 'Brand:', 0
 
cache3:
brandidlen:
 
MMXs:
db 'MMX: ',0
 
db 'L2: KB -way set -byte line size'
MMXslen:
 
cache3len:
 
total dd 0x0
total1 dd 0x0
 
cache4:
rating dd 0x0
 
db 'L3: KB -way set -byte line size'
rat dd 0x0 ;
 
cache4len:
 
ram:
 
cacheP4:
if lang eq it
 
db 'RAM libera: su'
else
 
db 'L1(inst): Kuops -way set -byte line size'
db 'Available RAM: out of'
 
cacheP4len:
end if
 
 
tech:
 
 
ramlen:
 
 
 
NEF:
 
db 'EXTENDED FEATURES ARE NOT AVAILABLE',0
 
NEFlen:
 
 
 
mb :
 
db 'MB'
 
mblen:
 
 
 
logcpus :
 
db 'Number of logical CPU:'
 
logcpuslen:
 
 
 
speed :
 
if lang eq it
 
db 'Tecnologia: 0. micron '
; db 'Performance',0
 
else
 
db 'Technology: 0. micron '
; db 'PERFORMANCE:',0
 
end if
 
speedlen:
 
kbpersec:
 
techlen:
db 'KB/SEC'
 
kbperseclen:
 
typen:
 
instruct:
 
if lang eq it
 
db 'Tipo:'
db 'Set istruzioni'
 
else
 
db 'Type:'
db 'Instruction sets'
 
end if
 
instructlen:
 
typenlen:
 
standard db 'Standard and Extended features plus Performance test',0
 
pr:
STDCA:
 
db 'P-rating:'
db 'Highest STD call is ',0
 
prlen:
STDCAlen:
 
 
multil:
EXTCA:
 
db 'Multiplier: .'
db 'Highest EXT call is h',0
 
multillen:
EXTCAlen:
 
oblom:
 
freql:
if lang eq it
 
db 'System clock: . MHz'
db 'CPUID non e disponibile'
 
freqllen:
else
 
db 'SORRY, CPUID IS NOT AVAILABLE'
end if
 
name:
oblomlen:
 
 
other:
 
if lang eq it
 
db 'Codename:'
db 'Questo vendor non e supportato'
 
else
 
db 'CODENAME:'
db 'SORRY, THIS VENDOR IS NOT SUPPORTED YET'
 
end if
 
otherlen:
cacheP4:
 
namelen:
db 'L1(inst): Kuops -way set -byte line size'
 
cacheP4len:
 
 
 
typen:
 
if lang eq it
 
db 'Tipo:'
 
else
 
db 'Type:'
 
end if
 
 
 
typenlen:
 
 
 
pr:
 
db 'P-rating:'
 
prlen:
 
 
 
 
AMDn:
 
db 'AMD'
db 'AMD',0
 
AMDnlen:
 
AMDnNew:
 
db 'CODENAME: AMD',0
 
AMDnNewlen:
 
Inteln:
 
db 'Intel'
db 'Intel',0
 
Intelnlen:
 
IntelnNew:
db 'CODENAME: Intel',0
 
IntelnNewlen:
 
 
Cyrixn:
 
db 'Cyrix'
db 'Cyrix',0
 
Cyrixnlen:
 
IDTn:
 
db 'IDT/Centaur'
db 'IDT/Centaur',0
 
IDTnlen:
 
Centaurn:
 
db 'VIA'
db 'VIA',0
 
Centaurnlen:
 
2180,27 → 3541,19
 
Tranmsmetan:
 
db 'Transmeta'
db 'Transmeta',0
 
Tranmsmetanlen:
 
 
Vortexn:
db 'Vortex86'
db 'Vortex86',0
Vortexnlen:
 
 
MMXs:
 
db 'MMX: '
 
MMXslen:
 
 
mmxp:
 
db 'MMX+: '
db 'MMX+: ',0
 
mmxplen:
 
2208,44 → 3561,50
 
HTT:
 
db 'HTT: '
db 'HTT: ',0
 
HTTlen:
 
 
HTTn:
 
db 'HTT: '
db 'HTT: ',0
 
HTTnlen:
 
 
sse3:
 
db 'SSE3: '
db 'SSE3: ',0
 
sse3len:
 
SSE41:
db 'SSE4.1: ',0
SSE41len:
 
SSE42:
db 'SSE4.2: ',0
SSE42len:
 
SSE5:
db 'SSE5: ',0
SSE5len:
 
now:
 
db '3DNOW!: '
db '3DNOW!: ',0
 
nowlen:
 
nowp:
 
db '3DNOW!+: '
db '3DNOW!+: ',0
 
nowplen:
 
 
;-Type
 
 
t1 db 'OEM',0
 
t2 db 'Overdrive',0
2260,31 → 3619,31
 
P50:
 
db 'P5 A-step'
db 'P5 A-step',0
 
P50len:
 
P5:
 
db 'P5'
db 'P5',0
 
P5len:
 
P54T:
 
db 'P24T Overdrive'
db 'P24T Overdrive',0
 
P54Tlen:
 
P54C:
 
db 'P54C'
db 'P54C',0
 
P54Clen:
 
P55C:
 
db 'P55C (with MMX)'
db 'P55C (with MMX)',0
 
P55Clen:
 
2292,79 → 3651,79
 
P60:
 
db 'Pentium Pro A-step'
db 'Pentium Pro A-step',0
 
P60len:
 
P61:
 
db 'Pentium Pro'
db 'Pentium Pro',0
 
P61len:
 
P63:
 
db 'Pentium II (Klamath)'
db 'Pentium II (Klamath)',0
 
P63len:
 
P65:
 
db 'Pentium II (Deschutes)'
db 'Pentium II (Deschutes)',0
 
P65len:
 
P66:
 
db 'Celeron (Medocino)'
db 'Celeron (Medocino)',0
 
P66len:
 
P67:
 
db 'Pentium III (Katmai)'
db 'Pentium III (Katmai)',0
 
P67len:
 
P68:
 
db 'Pentium III (Coppermine)'
db 'Pentium III (Coppermine)',0
 
P68len:
 
P69:
 
db 'Pentium M (Banias)'
db 'Pentium M (Banias)',0
 
P69len:
 
P6A:
 
db 'Pentium III Xeon (Cascades)'
db 'Pentium III Xeon (Cascades)',0
 
P6Alen:
 
P6B:
 
db 'Pentium III (Tualatin)'
db 'Pentium III (Tualatin)',0
 
P6Blen:
 
P6D:
 
db 'Pentium M (Dothan)'
db 'Pentium M (Dothan)',0
 
P6Dlen:
 
P6E:
 
db 'Pentium M (Yonah)/ Core'
db 'Pentium M (Yonah)/ Core',0
 
P6Elen:
 
P6F:
 
db 'Pentium D (Conroe)/ Core 2 (Kentsfield)'
db 'Pentium D (Conroe)/ Core 2 (Kentsfield)',0
 
P6Flen:
 
2372,7 → 3731,7
 
PS0:
 
db 'Itanium (IA-64)'
db 'Itanium (IA-64)',0
 
PS0len:
 
2380,31 → 3739,31
 
PF0:
 
db 'Pentium 4 (Willamete)'
db 'Pentium 4 (Willamete)',0
 
PF0len:
 
PF2:
 
db 'Pentium 4 (Northwood)'
db 'Pentium 4 (Northwood)',0
 
PF2len:
 
PF3:
 
db 'Pentium 4 (Prescott)'
db 'Pentium 4 (Prescott)',0
 
PF3len:
 
PF5:
 
db 'Pentium 4 (Tejas)'
db 'Pentium 4 (Tejas)',0
 
PF5len:
 
PF6:
 
db 'Pentium 4 (Presler)'
db 'Pentium 4 (Presler)',0
 
PF6len:
 
2412,52 → 3771,140
 
P65c:
 
db 'Celeron (Covington)'
db 'Celeron (Covington)',0
 
P65clen:
 
P68c:
 
db 'Celeron (Coppermine)'
db 'Celeron (Coppermine)',0
 
P68clen:
 
P6Bc:
 
db 'Celeron (Tualatin)'
db 'Celeron (Tualatin)',0
 
P6Bclen:
 
PF0c:
 
db 'Celeron (Willamete)'
db 'Celeron (Willamete)',0
 
PF0clen:
 
PF2c:
 
db 'Celeron (Northwood)'
db 'Celeron (Northwood)',0
 
PF2clen:
 
PF3c:
 
db 'Celeron (Prescott)'
db 'Celeron (Prescott)',0
 
PF3clen:
 
PF5c:
 
db 'Celeron D (Texas)'
db 'Celeron D (Texas)',0
 
PF5clen:
 
PF6c:
 
db 'Celeron D (Presler)'
db 'Celeron D (Presler)',0
 
PF6clen:
 
;---------New Intel
P3A:
 
db 'IvyBridge',0
 
P3Alen:
 
P2A:
 
db 'Sandy Bridge',0
 
P2Alen:
 
P2D:
db 'Sandy bridge-E',0
 
P2Dlen:
 
 
P25:
db 'Arrandale',0
P25len:
 
P2C:
db 'Gulftown',0
P2Clen:
 
P2F:
db 'Westmere-EX',0
P2Flen:
 
P1E:
db 'Clarksfield',0
P1Elen:
 
P1A:
db 'Bloomfield',0
P1Alen:
 
P2E:
db 'Nehalem-EX',0
P2Elen:
 
P17:
db 'Yorkfield',0
P17len:
 
P1D:
db 'Dunnington',0
P1Dlen:
 
P0F:
db 'Clovertown',0
P0Flen:
 
P16:
db 'Merom Conroe',0
P16len:
 
P06:
db 'Cedar Mill',0
P06len:
 
P03:
db 'Nocona Irwindale',0
P03len:
 
P04:
db 'NoconaIrwindale',0
P04len:
 
P0D:
db 'Dothan',0
P0Dlen:
 
P36:
db 'Cedarview',0
P36len:
 
P26:
db 'Lincroft',0
P26len:
 
P1C:
db 'Pineview',0
P1Clen:
 
 
;---------AMD
 
A50 db 'K5 (PR75, PR90, PR100)',0
2501,68 → 3948,129
Atat db 'AthlonXP (Thorton)',0
 
;-------------------
AthlonKuma:
 
db 'AMD Athlon 7750 Black Edition',0
 
AthlonKumalen:
 
AB23:
 
db 'Opteron 2300-series',0
 
AB23len:
 
AB83:
 
db 'Opteron 8300-series',0
 
AB83len:
 
AB9:
db 'Phenom X4',0
 
AB9len:
 
AB8right2:
 
db 'Phenom X3',0
 
AB8right2len:
 
AB4:
 
db 'Athlon X2',0
 
AB4len:
 
AB1:
 
db 'Sempron',0
 
AB1len:
 
ABC2:
 
db 'Opteron (Shanghai) 2387',0
 
ABC2len:
 
AB6:
 
db 'Opteron (Magny-Cours)',0
 
AB6len:
 
ABC3:
 
db 'Opteron (Shanghai) 8300 series',0
 
ABC3len:
 
ABM2:
 
db 'Turion II ',0
 
ABM2len:
 
;---
 
AF1:
 
db 'Dual-core Opteron'
db 'Dual-core Opteron',0
 
AF1len:
 
AF3:
 
db 'Athlon 64 (Toledo)'
db 'Athlon 64 (Toledo)',0
 
AF3len:
 
AF4:
 
db 'Athlon 64 (ClawHammer)'
db 'Athlon 64 (ClawHammer)',0
 
AF4len:
 
AF5:
 
db 'Opteron/Athlon 64 FX (SledgeHammer)'
db 'Opteron/Athlon 64 FX (SledgeHammer)',0
 
AF5len:
 
 
AFC:
 
db 'Athlon 64 (Newcastle)'
db 'Athlon 64 (Newcastle)',0
 
AFClen:
 
 
AFF:
 
db 'Athlon 64 (Winchester)'
db 'Athlon 64 (Winchester)',0
 
AFFlen:
 
 
AFS:
 
db 'Athlon 64 (San Diego)'
db 'Athlon 64 (San Diego)',0
 
AFSlen:
 
 
AFV:
 
db 'Athlon 64 (Venice)'
db 'Athlon 64 (Venice)',0
 
AFVlen:
 
 
AFCs:
 
db 'Sempron (Paris)'
db 'Sempron (Paris)',0
 
AFCslen:
 
2570,7 → 4078,7
 
AFCsp:
 
db 'Sempron (Palermo)'
db 'Sempron (Palermo)',0
 
AFCsplen:
 
2580,25 → 4088,25
 
C52:
 
db '6x86 M1'
db '6x86 M1',0
 
C52len:
 
C54:
 
db 'MediaGX'
db 'MediaGX',0
 
C54len:
 
C60:
 
db '6x86MX M2'
db '6x86MX M2',0
 
C60len:
 
C65:
 
db 'C3 (Cyrix M2)' ;?
db 'C3 (Cyrix M2)',0 ;?
 
C65len:
 
2606,19 → 4114,19
 
V54:
 
db 'WinChip C6'
db 'WinChip C6',0
 
V54len:
 
V58:
 
db 'WinChip 2'
db 'WinChip 2',0
 
V58len:
 
V59:
 
db 'WinChip 3'
db 'WinChip 3',0
 
V59len:
 
2626,31 → 4134,31
 
V66:
 
db 'C3 (Samuel)' ; Joshua is unreleased 065
db 'C3 (Samuel)',0 ; Joshua is unreleased 065
 
V66len:
 
V67:
 
db 'C3 (Samuel2/Ezra)' ; ?
db 'C3 (Samuel2/Ezra)',0 ; ?
 
V67len:
 
V68:
 
db 'C3 (Ezra-T/Eden)' ;?
db 'C3 (Ezra-T/Eden)',0 ;?
 
V68len:
 
V69:
 
db 'C3 (Antaur/Nehemiah)' ;?
db 'C3 (Antaur/Nehemiah)',0 ;?
 
V69len:
 
VA:
 
db 'C7 (Esther)' ;?
db 'C7 (Esther)',0 ;?
 
VAlen:
 
2658,13 → 4166,13
 
T5:
 
db 'Crusoe' ;
db 'Crusoe',0 ;
 
T5len:
 
TF:
 
db 'Efficeon' ;
db 'Efficeon',0 ;
 
TFlen:
 
2672,30 → 4180,11
 
NG:
 
db 'Next generation CPU'
db 'Next generation CPU',0
 
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
2713,9 → 4202,7
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
2733,8 → 4220,118
img_area2: ; image is going to be unpacked to here
rb 93*24*3+8 ; image resolution (bits to reserve)
 
img_area3: ; image is going to be unpacked to here
rb 93*24*3+8 ; image resolution (bits to reserve)
 
gif_hash_area:
rd 4096+1 ;hash area size for unpacking gif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
 
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
 
err_message_import2 db 'proc_lib.obj - Wrong import!',0
 
head_f_i:
head_f_l db 'error',0
;---------------------------------------------------------------------
l_libs_start:
 
library02 l_libs system_dir_ProcLib+9, path, library_path, system_dir_ProcLib, \
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
 
end_l_libs:
;---------------------------------------------------------------------
align 4
ProcLib_import:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
;OpenDialog__Version dd aOpenDialog_Version
dd 0
dd 0
aOpenDialog_Init db 'OpenDialog_init',0
aOpenDialog_Start db 'OpenDialog_start',0
;aOpenDialog_Version db 'Version_OpenDialog',0
;---------------------------------------------------------------------
align 4
OpenDialog_data:
.type dd 0
.procinfo dd Proc_Info ;+4
.com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12
.opendir_pach dd temp_dir_pach ;+16
.dir_default_pach dd communication_area_default_pach ;+20
.start_path dd open_dialog_path ;+24
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_pach dd file_name ;+36
.filename_area dd filename_area ;+40
.filter_area dd Filter
.x:
.x_size dw 420 ;+48 ; Window X size
.x_start dw 10 ;+50 ; Window X position
.y:
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
 
communication_area_name:
db 'FFFFFFFF_open_dialog',0
open_dialog_path:
db '/sys/File Managers/opendial',0
communication_area_default_pach:
db '/sys',0
Filter:
dd Filter.end - Filter.1
.1:
db 'TXT',0
db 'LOG',0
.end:
dd 0
 
file_default_path:
db '/sys/'
start_temp_file_name:
db 'CPUID.txt',0
 
;---------------------------------------------------------------------
align 4
fileinfo:
.subfunction dd 2
.Offset dd 0
.Offset_1 dd 0
.size dd 4096
.return dd 0
db 0
.name: dd file_name
 
store_text_area_start dd ?
store_text_area_end dd ?
store_text_size dd ?
 
;---------------------------------------------------------------------
library_path:
rb 4096
;---------------------------------------------------------------------
path:
rb 4096
;---------------------------------------------------------------------
temp_dir_pach:
rb 4096
;---------------------------------------------------------------------
file_name:
rb 4096
;---------------------------------------------------------------------
file_name_1:
rb 4096
;---------------------------------------------------------------------
filename_area:
rb 256
;---------------------------------------------------------------------
rb 4096
stacktop:
;---------------------------------------------------------------------
Proc_Info process_information
; RSA test data
 
align 4
2753,8 → 4350,8
 
IncludeUGlobals
 
nocpuid db 0x0
 
ost dd ?
 
sot dd ?
2781,8 → 4378,6
 
multb dd ?
 
 
smallvendor dd ?
 
L1d dd ?
2797,7 → 4392,9
 
brand dd ?
 
newpc dd ?
nomultiplier dd ?
 
ram_size_a dd ?
 
2817,8 → 4414,12
 
sse3sup db ?
 
sse41sup dd ?
sse42sup dd ?
sse5sup dd ?
 
 
freqbb dd ?
 
freqll dd ?
2847,15 → 4448,11
 
linel3 dd ?
 
 
;number_of_log_cpus dd ?
 
 
che db ? ; numbers of calls for Intel caches detection
 
cname dd ?
codeN dd ?
 
myname:
 
2862,9 → 4459,9
rb 48
 
mynamelen:
db 0x0
 
 
align 4
 
2873,4 → 4470,6
 
thread2_esp = $
 
U_END:
U_END:
 
 
/programs/system/cpuid/trunk/HISTORY.TXT
3,8 → 3,8
; target platform: KolibriOS, x86 (IA-32), x86-64 achitectures
; 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
; version: 2.29
; last update: 12 October 2014
; maintained by: Sergey Kuzmin aka Wildwest
; e-mail: kuzmin_serg@list.ru
; site: http://coolthemes.narod.ru/files.html
37,7 → 37,7
; improve support of Vortex86
;******************************************************************************
;HISTORY:
;2.3: CPUID 23/10/2013 (not finished)
;2.3: CPUID 12/10/2014 (not finished)
;Authors: Sergey Kuzmin aka Wildwest <kuzmin_serg@list.ru>
; Pavel Rymovskiy aka Heavyiron <Heavyiron@pisem.net>
; fedesco
50,6 → 50,7
; (+) 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;
; (+) added detection of Extended Model for Intel's CPU and example of it's use
;Known issues: Sempron marked as AthlonXP
; second window doesn't closed when you close main window
; incorrect multiplier detection for newest CPU
/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.28 and you can use it on your own risk without any warranty.
Current version is 2.29 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.
 
50,7 → 50,7
Ïðèâåò! Ìåíÿ çîâóò Ñåðãåé Êóçüìèí aka Wildwest.
Ýòî îäíà èç ñàìûõ èçâåñòíûõ ïðîãðàìì äëÿ KolibriOS/MenuetOS.
Îíà íàçûâàåòñÿ CPUID è ïîêàçûâàåò ðåçóëüòàòû èäåíòèôèêàöèè ïðîöåññîðà.
Ýòî âåðñèÿ 2.28 è ÂÛ ìîæåòå å¸ èñïîëüçîâàòü íà ñâîé ñîáñòâåííûé ðèñê áåçî âñÿêèõ ãàðàíòèé.
Ýòî âåðñèÿ 2.29 è ÂÛ ìîæåòå å¸ èñïîëüçîâàòü íà ñâîé ñîáñòâåííûé ðèñê áåçî âñÿêèõ ãàðàíòèé.
Åñëè áóäóò êàêèå-òî ïðîáëåìû èëè ïðåäëîæåíèÿ, òî íàïèøèòå ìíå (kuzmin_serg@list.ru).
Âñå ïðàâà íà ïðîãðàììó ïðèíàäëåæàò ìíå, êðîìå ïðàâ íà ÷àñòè, íàïèñàííûõ îñòàëüíûìè ðàçðàáîò÷èêàìè.
 
/programs/system/cpuid/trunk/features.inc
1,5 → 1,5
;Addresses for bits
 
; edx cpuid(1)
FPU_FLAG equ 0001h ;Floating-point unit on-Chip
VME_FLAG equ 0002h ;Virtual Mode Extension
DE_FLAG equ 0004h ;Debugging Extension
38,6 → 38,7
MON_FLAG equ 0008h ;MON -3
DS_CPL_FLAG equ 0010h ;DS-CPL -4
VMX_FLAG equ 0020h ;VMX -5
SMX_FLAG equ 0040h ;SMX -6 to add
EST_FLAG equ 0080h ; EST-7
TM2_FLAG equ 0100h ; TM2-8
SSSE3_FLAG equ 0200h ;SSSE3 -9
44,55 → 45,44
CNXT_ID_FLAG equ 0400h ;CID -10
CX16_FLAG equ 2000h ;CX16 - 13
ETPRD_FLAG equ 4000h ;xTPR - 14
DCA_FLAG equ 40000h ;DCA - 18
PDCM_FLAG equ 8000h ;PDCM - 15 to add
DCA_FLAG equ 40000h ;DCA - 18 Direct Cache Access
SSE41_FLAG equ 80000h ;SSE41 - 19 to add
SSE42_FLAG equ 100000h ;SSE42 - 20 to add
x2APIC_FLAG equ 200000h ;x2APIC - 21 to add
PPCNT_FLAG equ 800000h ;PPCNT - 23 to add
 
 
; edx cpuid(8000_0001h)
 
SYS_FLAG equ 0800h ;11
 
MP_FLAG equ 80000h ;19
SYS_FLAG equ 0800h ;11 - may be we already detect it as SEP_FLAG
MP_FLAG equ 80000h ;19 ???? not found in recent guides from AMD and Intel
NX_FLAG equ 100000h ;20
MMXPi_FLAG equ 400000h ;22
MMXn_FLAG equ 800000h ;23
FXSRn_FLAG equ 1000000h ;24 it is ÌÌÕ+ for Cyrix
FFXSR_FLAG equ 2000000h ;25
PAGE_FLAG equ 4000000h ;26 Page1Gb to add
TSCP_FLAG equ 8000000h ;27
LM_FLAG equ 20000000h ;29 EM64T
DNo_FLAG equ 40000000h ;30
DN_FLAG equ 80000000h ;31
DNo_FLAG equ 40000000h ;30 3dNow! Ext
DN_FLAG equ 80000000h ;31 3dNow!
 
 
; ecx cpuid(8000_0001h)
LAHF_FLAG equ 0001h ; LAHF 0
CMPL_FLAG equ 0002h ; core multi-processing legacy mode 1
SVM_FLAG equ 0004h ; secure virtual machine 2
EAS_FLAG equ 0008h ; ExtApicSpace 3 to add
MOVCR8_FLAG equ 0010h ;AltMovCr8 4
ABM_FLAG equ 0020h ; ABM -5 to add
SSE4A_FLAG equ 0040h ; SSE4A -6 to add
MIS_FLAG equ 0080h ; MissAlignSSE -7 to add
3DNP_FLAG equ 0100h ; 3DNowPrefetch-8 to add
OSVW_FLAG equ 0200h ; OS visible workaround -9 to add
SSE5_FLAG equ 0800h ;SSE5 - 11 to add
SKINIT_FLAG equ 1000h ;SKINIT- 12 to add
WDT_FLAG equ 2000h ;Watchdog timer - 13 to add
 
;//////////////////////////////////////////////
decode_sse3: ; is SS3 supported
xor eax, eax
inc eax
cpuid
test ecx, 1
setnz [sse3sup]
mov eax, sse3+6
 
write_yes_no:
mov dword [eax], 'no'
jz @f
mov dword [eax], 'yes'
@@:
ret
 
show_next_bit:
shr edx, 1
write_yes_no_cf:
mov dword [eax], 'no'
jnc @f
mov dword [eax], 'yes'
@@:
ret
 
;decoding standard features
 
decode_standard_features:
101,230 → 91,873
inc eax
cpuid
 
mov eax, FPU+6
call show_next_bit
 
mov eax, VME+7
call show_next_bit
Test0:
test edx, FPU_FLAG
jnz Test0e
 
mov eax, DE+7
call show_next_bit
mov dword [FPU+6], $6F6E
jmp Test1
 
mov eax, PSE+8
call show_next_bit
Test0e:
mov dword [FPU+6], $736579
 
mov eax, TSC+6
call show_next_bit
;;;;;;
Test1:
test edx, VME_FLAG
jnz Test1e
 
mov eax, MSR+7
call show_next_bit
mov dword [VME+ 7], $6F6E
jmp Test2
 
mov eax, PAE+7
call show_next_bit
Test1e:
mov dword [VME+ 7], $736579
 
mov eax, MCE+8
call show_next_bit
;;;;;;
Test2:
test edx, DE_FLAG
jnz Test2e
 
mov eax, CX8+6
call show_next_bit
mov dword [DE+ 7], $6F6E
jmp Test3
 
mov eax, APIC+7
call show_next_bit
Test2e:
mov dword [DE+ 7], $736579
;;;;;;
 
shr edx, 1 ; skip reserved bit
Test3:
test edx, PSE_FLAG
jnz Test3e
 
mov eax, SEP+8
call show_next_bit
mov dword [PSE+ 8], $6F6E
jmp Test4
 
mov eax, MTRR+6
call show_next_bit
Test3e:
mov dword [PSE+ 8], $736579
 
mov eax, PGE+7
call show_next_bit
;;;;
Test4:
test edx, TSC_FLAG
jnz Test4e
 
mov eax, MCA+7
call show_next_bit
mov dword [TSC+ 6], $6F6E
jmp Test5
 
mov eax, CMOV+8
call show_next_bit
Test4e:
mov dword [TSC+ 6], $736579
 
mov eax, PAT+6
call show_next_bit
;;;;
Test5:
test edx, MSR_FLAG
jnz Test5e
 
mov eax, PSE36+7
call show_next_bit
mov dword [MSR+ 7], $6F6E
jmp Test6
 
mov eax, PSNUM+7
call show_next_bit
Test5e:
mov dword [MSR+ 7], $736579
 
mov eax, CLFLUSHn+8
call show_next_bit
;;;;
Test6:
test edx, PAE_FLAG
jnz Test6e
 
shr edx, 1 ; skip reserved bit
mov dword [PAE+ 7], $6F6E
jmp Test7
 
mov eax, DTS+7
call show_next_bit
Test6e:
mov dword [PAE+ 7], $736579
 
mov eax, ACPI+7
call show_next_bit
;;;;
Test7:
test edx, MCE_FLAG
jnz Test7e
 
mov eax, MMX+8
call show_next_bit
mov eax, [eax]
mov [MMXs+7], eax
mov dword [MCE+ 8], $6F6E
jmp Test8
 
mov eax, FXSR+6
call show_next_bit
Test7e:
mov dword [MCE+ 8], $736579
 
mov eax, SSE+7
call show_next_bit
;;;;
Test8:
test edx, CX8_FLAG
jnz Test8e
 
mov eax, SSE2+7
call show_next_bit
mov dword [CX8+ 6], $6F6E
jmp Test9
 
mov eax, SSn+8
call show_next_bit
Test8e:
mov dword [CX8+ 6], $736579
;;;;
 
shr edx, 1
; mov eax, HTT+8
Test9:
test edx, APIC_FLAG
jnz Test9e
 
mov dword [APIC+ 7], $6F6E
jmp Test11
 
Test9e:
mov dword [APIC+ 7], $736579
;;;;;
 
Test11:
test edx, SEP_FLAG
jnz Test11e
 
mov dword [SEP+ 8], $6F6E
jmp Test12
 
Test11e:
mov dword [SEP+ 8], $736579
;;;;
 
Test12:
test edx, MTRR_FLAG
jnz Test12e
 
mov dword [MTRR+ 6], $6F6E
jmp Test13
 
Test12e:
mov dword [MTRR+ 6], $736579
;;;;
 
Test13:
test edx, PGE_FLAG
jnz Test13e
 
mov dword [PGE+ 7], $6F6E
jmp Test14
 
Test13e:
mov dword [PGE+ 7], $736579
;;;;;
 
Test14:
test edx, MCA_FLAG
jnz Test14e
 
mov dword [MCA+ 7], $6F6E
jmp Test15
 
Test14e:
mov dword [MCA+ 7], $736579
;;;;
 
Test15:
test edx, CMOV_FLAG
jnz Test15e
 
mov dword [CMOV+ 8], $6F6E
jmp Test16
 
Test15e:
mov dword [CMOV+ 8], $736579
;;;;
 
Test16:
test edx, PAT_FLAG
jnz Test16e
 
mov dword [PAT+ 6], $6F6E
jmp Test17
 
Test16e:
mov dword [PAT+ 6], $736579
;;;;
 
Test17:
test edx, PSE36_FLAG
jnz Test17e
 
mov dword [PSE36+ 7], $6F6E
jmp Test18
 
Test17e:
mov dword [PSE36+ 7], $736579
;;;;
 
Test18:
test edx, PSNUM_FLAG
jnz Test18e
 
mov dword [PSNUM+ 7], $6F6E
jmp Test19
 
Test18e:
mov dword [PSNUM+ 7], $736579
;;;;
 
Test19:
test edx, CLFLUSH_FLAG
jnz Test19e
 
mov dword [CLFLUSHn + 8], $6F6E
jmp Test21
 
Test19e:
mov dword [CLFLUSHn + 8], $736579
;;;;
 
Test21:
test edx, DTS_FLAG
jnz Test21e
 
mov dword [DTS+ 7], $6F6E
jmp Test22
 
Test21e:
mov dword [DTS+ 7], $736579
;;;;
 
Test22:
test edx, ACPI_FLAG
jnz Test22e
 
mov dword [ACPI+ 7], $6F6E
jmp Test23
 
Test22e:
mov dword [ACPI+ 7], $736579
;;;;;
 
Test23:
test edx, MMX_FLAG
jnz Test23e
 
mov dword [MMX+ 8], $6F6E
mov dword [MMXs+ 7], $6F6E
jmp Test24
 
Test23e:
mov dword [MMX+ 8], $736579
mov dword [MMXs+ 7], $736579
;;;;;
 
Test24:
test edx, FXSR_FLAG
jnz Test24e
 
mov dword [FXSR+ 6], $6F6E
jmp Test25
 
Test24e:
mov dword [FXSR+ 6], $736579
;;;;;
 
Test25:
test edx, SSE_FLAG
jnz Test25e
 
mov dword [SSE+ 7], $6F6E
jmp Test26
 
Test25e:
mov dword [SSE+ 7], $736579
 
;;;;
Test26:
test edx, SSE2_FLAG
jnz Test26e
 
mov dword [SSE2+ 7], $6F6E
jmp Test27
 
Test26e:
mov dword [SSE2+ 7], $736579
 
;;;;
 
Test27:
test edx, SS_FLAG
jnz Test27e
 
mov dword [SSn+ 8], $6F6E
jmp Test29;28
 
Test27e:
mov dword [SSn+ 8], $736579
 
;;;;
 
;Test28:
; test edx, HTT_FLAG
; call write_yes_no
;jnz Test28e
;
;mov dword [HTT+ 8], $6F6E
;jmp Test29
;
;Test28e:
;mov dword [HTT+ 8], $736579
 
mov eax, TM+7
call show_next_bit
;;;;
 
mov eax, IA64+7
call show_next_bit
Test29:
test edx, TM_FLAG
jnz Test29e
 
mov eax, PBE+8
call show_next_bit
mov dword [TM+ 7], $6F6E
jmp Test30
 
Test29e:
mov dword [TM+ 7], $736579
 
;;;;
 
Test30:
test edx, IA64_FLAG
jnz Test30e
 
mov dword [IA64+ 7], $6F6E
jmp Test31
 
Test30e:
mov dword [IA64+ 7], $736579
 
;;;;
Test31:
test edx, PBE_FLAG
jnz Test31e
 
mov dword [PBE+ 8], $6F6E
jmp Standart_out
 
Test31e:
mov dword [PBE+ 8], $736579
 
Standart_out:
 
ret
;//////////////////////////////////////////////
decode_sse3_5: ; is SS3-5 supported
xor eax,eax
inc eax
cpuid
test ecx, $1 ; Test bit 1
jnz .EX; SSE3 technology is supported
jz .EXN
 
;//////////////////////////////////////////////
.EX:
mov dword [sse3+ 6], $736579
mov [sse3sup], 1
jmp exitter
.EXN:
mov dword [sse3+ 6], $6F6E
mov [sse3sup],0
 
exitter:
 
 
test ecx, $80000 ; Test bit 19
jnz .EX1; SSE41 technology is supported
jz .EXN1
 
.EX1:
mov dword [SSE41+ 11], $736579
mov [sse41sup], 1
jmp exitter1
.EXN1:
mov dword [SSE41+ 11], $6F6E
mov [sse41sup],0
 
exitter1:
 
 
test ecx, $100000 ; Test bit 20
jnz .EX2; SSE42 technology is supported
jz .EXN2
 
.EX2:
mov dword [SSE42+ 10], $736579
mov dword [SS42+ 11], $736579
mov [sse42sup], 1
jmp exitter2
.EXN2:
mov dword [SSE42+ 10], $6F6E
mov dword [SS42+ 11], $6F6E
mov [sse42sup],0
 
exitter2:
 
 
xor eax,eax
mov eax, 80000001h
cpuid
test ecx, $800 ; Test bit 11
jnz .EX3; SS5 technology is supported
jz .EXN3
 
.EX3:
mov dword [SSE5+ 12], $736579
mov [sse5sup], 1
jmp exitter3
.EXN3:
mov dword [SSE5+ 12], $6F6E
mov [sse5sup],0
 
exitter3:
 
ret
 
 
decode_extended_features:
; is called immediately after decode_standard_features
; xor eax, eax
; inc eax
; cpuid
 
mov eax, SS3+8
xor eax,eax
inc eax
cpuid
Tes1:
test ecx, SSE3_FLAG
call write_yes_no
jnz Tes1e
 
mov eax, MON+8
mov dword [SS3+ 8], $6F6E
jmp Tes2
 
Tes1e:
mov dword [SS3+ 8], $736579
 
 
Tes2:
test ecx, MON_FLAG
call write_yes_no
jnz Tes2e
 
mov eax, DS_CPL+8
mov dword [MON+ 8], $6F6E
jmp Tes3
 
Tes2e:
mov dword [MON+ 8], $736579
 
 
Tes3:
test ecx, DS_CPL_FLAG
call write_yes_no
jnz Tes3e
 
mov eax, EST+8
mov dword [DS_CPL+ 8], $6F6E
jmp Tes4
 
Tes3e:
mov dword [DS_CPL+ 8], $736579
 
Tes4:
test ecx, EST_FLAG
call write_yes_no
jnz Tes4e
 
mov eax, TM2+8
mov dword [EST+ 8], $6F6E
jmp Tes5
 
Tes4e:
mov dword [EST+ 8], $736579
 
 
Tes5:
test ecx, TM2_FLAG
call write_yes_no
jnz Tes5e
 
mov eax, CNXT_ID+12
mov dword [TM2+ 8], $6F6E
jmp Tes6
 
Tes5e:
mov dword [TM2+ 8], $736579
 
 
Tes6:
test ecx, CNXT_ID_FLAG
call write_yes_no
jnz Tes6e
 
mov eax, CX16+12
mov dword [CNXT_ID+ 12], $6F6E
jmp Tes7
 
Tes6e:
mov dword [CNXT_ID+ 12], $736579
 
 
Tes7:
test ecx, CX16_FLAG
call write_yes_no
jnz Tes7e
 
mov eax, ETPRD+12
mov dword [CX16+ 12], $6F6E
jmp Tes8
 
Tes7e:
mov dword [CX16+ 12], $736579
 
 
Tes8:
test ecx, ETPRD_FLAG
call write_yes_no
jnz Tes8e
 
mov eax, VMX+8
mov dword [ETPRD+ 12], $6F6E
jmp Tes9
 
Tes8e:
mov dword [ETPRD+ 12], $736579
 
Tes9:
test ecx, VMX_FLAG
call write_yes_no
jnz Tes9e
 
mov eax, SSSE3+12
mov dword [VMX+ 8], $6F6E
jmp Tes10
 
Tes9e:
mov dword [VMX+ 8], $736579
 
Tes10:
test ecx, SSSE3_FLAG
call write_yes_no
jnz Tes10e
 
mov eax, DCA+8
mov dword [SSSE3+ 12], $6F6E
jmp Tes11
 
Tes10e:
mov dword [SSSE3+ 12], $736579
 
Tes11:
test ecx, DCA_FLAG
call write_yes_no
@@:
jnz Tes11e
 
mov dword [DCA+ 8], $6F6E
jmp Tes12
 
Tes11e:
mov dword [DCA+ 8], $736579
 
Tes12:
test ecx, SMX_FLAG
jnz Tes12e
 
mov dword [SMX+ 8], $6F6E
jmp Tes13
 
Tes12e:
mov dword [SMX+ 8], $736579
 
Tes13:
test ecx, PDCM_FLAG
jnz Tes13e
 
mov dword [newLabel+ 8], $6F6E
jmp Tes14
 
Tes13e:
mov dword [newLabel+ 8], $736579
 
Tes14:
test ecx, x2APIC_FLAG
jnz Tes14e
 
mov dword [x2APIC+ 8], $6F6E
jmp Tes15
 
Tes14e:
mov dword [x2APIC+ 8], $736579
 
Tes15:
test ecx, PPCNT_FLAG
jnz Tes15e
 
mov dword [PPCNT+ 12], $6F6E
jmp Tes16
 
Tes15e:
mov dword [PPCNT+ 12], $736579
 
Tes16:
 
ret
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
decode_extended:
xor eax, eax
mov eax, $80000000
cpuid
mov [extc], eax ; max number of calls
test eax, eax
jns @b
 
test eax, 80000000h
jnz gooodd
 
jmp baaad
 
baaad:
 
jmp Tez13
 
gooodd:
xor eax, eax
mov eax, $80000001 ;// Setup extended function 8000_0001h
cpuid
 
mov eax, MP+8
Tez1:
test edx, MP_FLAG
call write_yes_no
jnz Tez1e
 
mov eax, NX+8
mov dword [MP+8], $6F6E
jmp Tez2
 
Tez1e:
mov dword [MP+ 8], $736579
 
Tez2:
test edx, NX_FLAG
call write_yes_no
jnz Tez2e
 
mov dword [NX+ 8], $6F6E
jmp Tez4
;jmp Tez3 we do detection in another place, because of Cyrix specific MMX+ detection
; mov eax, MMXPi+8
 
Tez2e:
mov dword [NX+ 8], $736579
 
;Tez3:
; test edx, MMXPi_FLAG
; call write_yes_no
;jnz Tez3e
 
mov eax, MMXn+8
;mov dword [MMXPi+ 8], $6F6E
;jmp Tez4
 
 
;Tez3e:
;mov dword [MMXPi+ 8], $736579
 
Tez4:
test edx, MMXn_FLAG
call write_yes_no
jnz Tez4e
 
mov eax, FXSRn+8
mov dword [MMXn+ 8], $6F6E
jmp Tez5
 
Tez4e:
mov dword [MMXn+ 8], $736579
 
Tez5:
test edx, FXSRn_FLAG
call write_yes_no
jnz Tez5e
 
mov eax, FFXSR+12
mov dword [FXSRn+ 8], $6F6E
jmp Tez6
 
Tez5e:
mov dword [FXSRn+ 8], $736579
 
Tez6:
test edx, FFXSR_FLAG
call write_yes_no
jnz Tez6e
 
mov eax, TSCP+12
mov dword [FFXSR+ 12], $6F6E
jmp Tez7
 
Tez6e:
mov dword [FFXSR+ 12], $736579
 
Tez7:
test edx, TSCP_FLAG
call write_yes_no
jnz Tez7e
 
mov eax, LM+12
mov dword [TSCP+ 12], $6F6E
jmp Tez8
 
Tez7e:
mov dword [TSCP+ 12], $736579
 
 
Tez8:
test edx, LM_FLAG
call write_yes_no
jnz Tez8e
 
mov eax, DNo+12
mov dword [LM+ 12], $6F6E
jmp Tez9
 
Tez8e:
mov dword [LM+ 12], $736579
 
Tez9:
test edx, DNo_FLAG
call write_yes_no
jnz Tez9e
 
mov eax, DN+12
mov dword [DNo+ 12], $6F6E
jmp Tez10
 
Tez9e:
mov dword [DNo+ 12], $736579
 
 
Tez10:
test edx, DN_FLAG
call write_yes_no
jnz Tez10e
 
mov dword [DN+ 12], $6F6E
jmp Tez11
 
Tez10e:
mov dword [DN+ 12], $736579
 
;Intel
mov eax, SYS+12
 
Tez11:
test edx, SYS_FLAG
call write_yes_no
jnz Tez11e
 
mov eax, LAF+12
mov dword [SYS+ 12], $6F6E
jmp Tez12
 
Tez11e:
mov dword [SYS+ 12], $736579
 
 
Tez12:
test ecx, LAHF_FLAG
call write_yes_no
jnz Tez12e
 
mov eax, CMPL+12
mov dword [LAF+ 12], $6F6E
jmp Tez13
 
Tez12e:
mov dword [LAF+ 12], $736579
 
Tez13:
test ecx, CMPL_FLAG
call write_yes_no
jnz Tez13e
 
mov eax, SVM+8
mov dword [CMPL+ 8], $6F6E
jmp Tez14
 
Tez13e:
mov dword [CMPL+ 8], $736579
 
Tez14:
test ecx, SVM_FLAG
call write_yes_no
jnz Tez14e
 
mov eax, MCR8+12
mov dword [SVM+ 8], $6F6E
jmp Tez15
 
Tez14e:
mov dword [SVM+ 8], $736579
 
Tez15:
test ecx, MOVCR8_FLAG
call write_yes_no
jnz Tez15e
 
mov dword [MCR8+ 12], $6F6E
jmp Tez16
 
Tez15e:
mov dword [MCR8+ 12], $736579
 
Tez16:
test edx, PAGE_FLAG
jnz Tez16e
 
mov dword [PAGE+ 8], $6F6E
jmp Tez17
 
Tez16e:
mov dword [PAGE+ 8], $736579
 
Tez17:
test ecx, EAS_FLAG
jnz Tez17e
 
mov dword [EAS+ 12], $6F6E
jmp Tez18
 
Tez17e:
mov dword [EAS+ 12], $736579
 
Tez18:
test ecx, ABM_FLAG
jnz Tez18e
 
mov dword [ABM+ 8], $6F6E
jmp Tez19
 
Tez18e:
mov dword [ABM+ 8], $736579
 
Tez19:
test ecx, SSE4A_FLAG
jnz Tez19e
 
mov dword [SSE4A+ 8], $6F6E
jmp Tez20
 
Tez19e:
mov dword [SSE4A+ 8], $736579
 
Tez20:
test ecx, MIS_FLAG
jnz Tez20e
 
mov dword [MIS+ 8], $6F6E
jmp Tez21
 
Tez20e:
mov dword [MIS+ 8], $736579
 
Tez21:
test ecx, 3DNP_FLAG
jnz Tez21e
 
;mov dword [DNP+ 8], $6F6E
;jmp Tez22
 
Tez21e:
;mov dword [DNP+ 8], $736579
 
Tez22:
test ecx, OSVW_FLAG
jnz Tez22e
 
mov dword [OSVW+ 8], $6F6E
jmp Tez23
 
Tez22e:
mov dword [OSVW+ 8], $736579
 
Tez23:
test ecx, SKINIT_FLAG
jnz Tez23e
 
mov dword [SKINIT_+ 12], $6F6E
jmp Tez24
 
Tez23e:
mov dword [SKINIT_+ 12], $736579
 
Tez24:
test ecx, WDT_FLAG
jnz Tez24e
 
mov dword [WDT+ 12], $6F6E
jmp Tez25
 
Tez24e:
mov dword [WDT+ 12], $736579
 
Tez25:
 
ret
 
;//////////////////////////////////////////////
decode_sse3: ; is SS3 supported
xor eax, eax
inc eax
cpuid
test ecx, 1
setnz [sse3sup]
mov eax, sse3+6
 
write_yes_no:
mov dword [eax], 'no'
jz @f
mov dword [eax], 'yes'
@@:
ret
 
show_next_bit:
shr edx, 1
write_yes_no_cf:
mov dword [eax], 'no'
jnc @f
mov dword [eax], 'yes'
@@:
ret
/programs/system/cpuid/trunk/multipli.inc
250,6 → 250,25
noIntelP4:
cmp byte[f], 6
jne noIntelP6
;edited code for test task-1
cmp byte[em],0x3A ;i3,i5,i7
je newCPU;
cmp byte[em],0x2A ;celeron dekstop, mobile, Xeon E3
je newCPU;
cmp byte[em],0x2D ;i7
je newCPU;
cmp byte[em],0x25 ;celeron, pentium, core i3,i5,i7
je newCPU;
cmp byte[em],0x2C ;Xeon 3000
je newCPU;
cmp byte[em],0x1E ;Clarksfield core i7
je newCPU;
cmp byte[em],0x1A ;Bloomfield-2008
je newCPU;
cmp byte[em],0x2E ;NEhlem ~2008
je newCPU;
 
 
mov eax, 68 ; Pentium Pro / Pentium II / Pentium III
mov ebx, 3
mov edx, 0x2A
280,4 → 299,6
noIntel:
noIntelP6:
noAMDK8:
newCPU:
mov [nomultiplier], 1
ret
/programs/system/cpuid/trunk/variable.inc
100,232 → 100,232
;features
 
FPU:
db 'FPU: '
db 'FPU: ',0
FPUlen:
 
VME:
db 'VME: '
db 'VME: ',0
VMElen:
 
DE:
db 'DE: '
db 'DE: ',0
DElen:
 
PSE:
db 'PSE: '
db 'PSE: ',0
PSElen:
 
TSC:
db 'TSC: '
db 'TSC: ',0
TSClen:
 
MSR:
db 'MSR: '
db 'MSR: ',0
MSRlen:
 
PAE:
db 'PAE: '
db 'PAE: ',0
PAElen:
 
MCE:
db 'MCE: '
db 'MCE: ',0
MCElen:
 
CX8:
db 'CX8: '
db 'CX8: ',0
CX8len:
 
APIC:
db 'APIC: '
db 'APIC: ',0
APIClen:
 
SEP:
db 'SEP: '
db 'SEP: ',0
SEPlen:
 
MTRR:
db 'MTRR: '
db 'MTRR: ',0
MTRRlen:
 
PGE:
db 'PGE: '
db 'PGE: ',0
PGElen:
 
MCA:
db 'MCA: '
db 'MCA: ',0
MCAlen:
 
CMOV:
db 'CMOV: '
db 'CMOV: ',0
CMOVlen:
 
PAT:
db 'PAT: '
db 'PAT: ',0
PATlen:
 
PSE36:
db 'PSE36: '
db 'PSE36: ',0
PSE36len:
 
PSNUM:
db 'PSNUM: '
db 'PSNUM: ',0
PSNUMlen:
 
CLFLUSHn:
db 'CLFLSH: '
db 'CLFLSH: ',0
CLFLUSHnlen:
 
DTS:
db 'DTS: '
db 'DTS: ',0
DTSlen:
 
ACPI:
db 'ACPI: '
db 'ACPI: ',0
ACPIlen:
 
MMX:
db 'MMX: '
db 'MMX: ',0
MMXlen:
 
FXSR:
db 'FXSR: '
db 'FXSR: ',0
FXSRlen:
 
SSE:
db 'SSE: '
db 'SSE: ',0
SSElen:
 
SSE2:
db 'SSE2: '
db 'SSE2: ',0
SSE2len:
 
SSn:
db 'SS: '
db 'SS: ',0
SSnlen:
 
TM:
db 'TM: '
db 'TM: ',0
TMlen:
 
IA64:
db 'IA64: '
db 'IA64: ',0
IA64len:
 
PBE:
db 'PBE: '
db 'PBE: ',0
PBElen:
 
Res:
db 'Reserved'
db 'Reserved',0
Reslen:
 
;Extended
 
SS3:
db 'SSE3: '
db 'SSE3: ',0
SS3len:
 
MON:
db 'MON: '
db 'MON: ',0
MONlen:
 
DS_CPL:
db 'DS-CPL: '
db 'DS-CPL: ',0
DS_CPLlen:
 
EST:
db 'EST: '
db 'EST: ',0
ESTlen:
 
TM2:
db 'TM2: '
db 'TM2: ',0
TM2len:
 
CNXT_ID:
db 'CNXT-ID: '
db 'CNXT-ID: ',0
CNXT_IDlen:
 
CX16:
db 'CX16: '
db 'CX16: ',0
CX16len:
 
ETPRD:
db 'xTPR/ETPRD: ' ; xTPR
db 'xTPR/ETPRD: ',0 ; xTPR
ETPRDlen:
 
;Extended2
 
SYS:
db 'SYSCALL: '
db 'SYSCALL: ',0
SYSlen:
 
MP:
db 'MP: '
db 'MP: ',0
MPlen:
 
NX:
db 'NX/XD: '
db 'NX/XD: ',0
NXlen:
 
MMXPi:
db 'MMX+: '
db 'MMX+: ',0
MMXPilen:
 
MMXn:
db 'MMX: '
db 'MMX: ',0
MMXnlen:
 
FXSRn:
db 'FXSR: '
db 'FXSR: ',0
FXSRnlen:
 
FFXSR:
db 'FFXSR: '
db 'FFXSR: ',0
FFXSRlen:
 
TSCP:
db 'TSCP: '
db 'TSCP: ',0
TSCPlen:
 
LM:
db 'EM64T/LM: ' ; AA64
db 'EM64T/LM: ',0 ; AA64
LMlen:
 
DNo:
db '3DNow!+: '
db '3DNow!+: ',0
DNolen:
 
DN:
db '3DNow!: '
db '3DNow!: ',0
DNlen:
 
LAF:
db 'LAHF: '
db 'LAHF: ',0
LAFlen:
 
VMX:
db 'VMX: '
db 'VMX: ',0
VMXlen:
 
SSSE3:
db 'SSSE3: '
db 'SSSE3: ',0
SSSE3len:
 
DCA:
db 'DCA: '
db 'DCA: ',0
DCAlen:
 
 
MCR8:
db 'MCR8: '
db 'MCR8: ',0
MCR8len:
 
SVM:
db 'SVM: '
db 'SVM: ',0
SVMlen:
 
CMPL:
db 'CMPL: '
db 'CMPL: ',0
CMPLlen:
;================================
abrand00:
343,5 → 343,13
abrand2:
db 'AMD Opteron MP'
abrand2len:
;=====================================
multi0:
db 'n/a'
multi0len:
 
;=====================================
clock0:
db 'n/a'
clock0len: