;****************************************************************************** ; project name: CPUID * ; platform: KolibriOS, x86 (IA-32), x86-64 achitectures * ; compiler: flat assembler 1.70.03 * ; version: 2.31 * ; last update: 9 October 2018 * ; maintained by: Sergey Kuzmin aka Wildwest * ; e-mail: kuzmin_serg@list.ru * ; site: http://coolthemes.narod.ru/files.html * ; license: Copyright 2004-2018 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://board.kolibrios.org/viewtopic.php?f=42&t=594* ;-----------------------------------------------------------------------------* ; English comments * ;------------------------------------------------------------------------------ use32 org 0x0 db 'MENUET01' dd 0x01 dd START dd I_END dd U_END+4096 dd U_END+4096 dd 0x0 dd path include '..\..\..\develop\libraries\box_lib\load_lib.mac' include '..\..\..\macros.inc' include '../../../gui_patterns.inc' include '../../../KOSfuncs.inc' include 'lang.inc' include 'draw.inc' include 'brand.inc' ; brand ID decoding include 'caches.inc' ; L1 and L2 cashes decoding for Intel include 'multipli.inc' ; multiplier decoding include 'features.inc' ; features decoding include 'logos.inc' ; include file where gif's are stored include 'rsatest.inc' include 'variable.inc' include 'gif_lite.inc' @use_library START: mcall 68,11 mcall 66,1,1 mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc, sizeof.system_colors 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 mov eax, 18 mov ebx,5 mcall mov [total1],eax ;in Hz, example 1600490000 xor edx,edx mov ebx,1000000 div ebx mov [total], eax ; in Mhz, example 1600 xor edx, edx mov eax, [total1] mov ebx, 10000 div ebx mov [ost], eax ; example 160049 mov ecx, [total] imul ecx, 100 neg ecx add ecx, eax mov [sot], ecx ; example 49 ;------------ cpu: ;is CPUID supported? pushfd ;push original EFLAGS pop eax ;get original EFLAGS mov ebx, eax ;save original EFLAGS xor eax, 00200000h ;flip 21th bit in EFLAGS push eax ;save new EFLAGS value on stack popfd ;replace current EFLAGS value pushfd ;get new EFLAGS pop eax ;store new EFLAGS in EAX cmp eax, ebx ;compare values of 21th bit jz NO_CPUID ;CPUID isn't supported ;------------ CPUNAME: ; VENDOR mov eax,0 ; eax=0 cpuid mov [stdc], eax ; number of calls mov [cpuname+ 12],ebx mov [cpuname+ 16],edx mov [cpuname+ 20],ecx mov [smallvendor],ecx ; for various vendors we should later use different methods ;Decoding cache L1 and L2 for Intel cmp ecx, 'ntel' jne cpu1 ;is not Intel ;Starting L1, L2, L3 caches detection (Intel made it VERY HARD) mov eax, 2 cpuid mov [che], al ; number of calls multik: .eaxl: test eax, eax ; Test bit 31 js .ebxl ; <> 0 =>invalid values call decodecache24 .ebxl: test ebx, ebx js .ecxl mov eax, ebx call decodecache32 .ecxl: test ecx, ecx js .edxl mov eax, ecx call decodecache32 .edxl: test edx, edx js cpu1 mov eax, edx call decodecache32 dec [che] ; we made all calls je cpu1 multi: ; not yet mov eax, 2 ; so we made call again cpuid jmp multik ; FAMILY MODEL STEPPING cpu1: xor eax, eax inc eax ; eax=1 cpuid mov ecx, eax shr ecx,8 ; shift it to the correct position and ecx,0000000Fh ; get CPU family mov dword[f],ecx mov ecx, eax shr ecx,4 and ecx,0000000Fh ; get CPU model mov dword[m],ecx mov ecx, eax and ecx,0000000Fh ; get CPU stepping mov dword[s],ecx ;- mov ecx, eax ; get Type shl ecx, 18 shr ecx,30 ;and ecx, 0000000Fh ; only two lower bits can be nonzero mov dword[t], ecx ;======================================================= cmp dword[smallvendor], 'cAMD' jz maybe_athlon cmp dword[smallvendor], 'ntel' jnz no_full ; if not AMD or Intel ;detect_it: ;cmp [f], 0Fh ;jne no_full fixed calculation of extended model for Intel full: mov ecx, eax ; get Extended model 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 mov ecx, eax ; get Extended family shr ecx, 20 ;shift it to the correct position and ecx, 000000FFh add ecx, [f] mov dword[ef],ecx ; effective family jmp fut no_full: mov ecx, [m] mov [em], ecx mov ecx, [f] mov [ef], ecx jmp fut maybe_athlon: mov eax, 0x80000001 ; CPUID ext. function 0x80000001 cpuid mov ecx, eax shr ecx,8 ; shift it to the correct position and ecx,0000000Fh ; get CPU family mov dword[ef],ecx mov ecx, eax shr ecx,4 and ecx,0000000Fh ; get CPU model mov dword[em],ecx fut: call decode_sse3_5 ;call decode_sse3_5 ;- call decode_extended mov eax,$80000000 cpuid 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 mov [myname+4],ebx mov [myname+8],ecx mov [myname+12],edx mov eax,$80000003 cpuid mov [myname+16],eax mov [myname+20],ebx mov [myname+24],ecx mov [myname+28],edx mov eax,$80000004 cpuid mov [myname+32],eax mov [myname+36],ebx mov [myname+40],ecx mov [myname+44],edx jmp red .noname: red: ;mov byte [multiplier], 115; ; for testing call decode_sse3 call multipl ; get multiplier mov byte [multiplier], cl mov dword [freqbb], 0 mov dword [freqll], 0 mov ebx, dword [multiplier] test ebx, ebx jz output calc: mov eax,dword [ost] ; example 166474 imul eax, 10 ; example 1664740 xor edx,edx div ebx ; get system clock (if multiplier detected) xor edx, edx ; example eax=16647 mov ebx, 100 div ebx mov dword [freqbb], eax ; example 166 mov dword [freqll], edx ; example 47 xor edx, edx mov eax,dword[multiplier] ; example 115 mov ebx,10 div ebx mov dword[multb], eax ; example 11 mov dword[multa], edx ; example 5 output: call draw_window ; Draw window ;HRERE PROCCORE: ; Who are you? ; Intel - "GenuineIntel" + ; AMD - "AuthenticAMD" + ; Cyrix - "CyrixInstead" + ; UMC - "UMC UMC UMC " ; NexGen - "NexGenDriven" ; Centaur - "CentaurHauls" + ; Rise Technology - "RiseRiseRise" ; SiS - "SiS SiS SiS " ; Transmeta - "GenuineTMx86" + ; National Semiconductor - "Geode by NSC" ; Vortex - "Vortex86 SoC" + initial support cmp dword[smallvendor], 'ntel' ;1 jz Intel cmp dword[smallvendor], 'cAMD' ;2 jz AMD cmp dword[smallvendor], 'tead' ;3 jz Cyrix cmp dword[smallvendor], 'auls' ;4 jz Centaur cmp dword[smallvendor], 'Mx86' ;5 jz Transmeta cmp dword[smallvendor], ' SoC' ;6 jz Vortex ; cmp ecx, 'UMC ' ; jz .UMC ; cmp ecx, 'iven' ; jz .NexGen ; cmp ecx, 'Rise' ; jz .Rise ; cmp ecx, 'SiS ' ; jz .SiS ; cmp ecx, ' NSC' ; jz .NSC ; 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 ;CACHE1: mov eax, 80000005h cpuid movzx eax, cl mov [lineld], eax mov eax, ecx ;shl eax, 8 ;shr eax, 24 and eax,00FF0000h shr eax, 16 mov [wayld], eax shr ecx, 24 mov [L1d], ecx movzx eax, dl mov [lineli], eax mov eax, edx ;shl eax, 8 ;shr eax, 24 and eax,00FF0000h shr eax, 16 mov [wayli], eax shr edx, 24 mov [L1i], edx ;CACHE2: mov eax, 80000006h cpuid movzx eax, cl mov dword[linel2], eax push ecx shr ecx, 12+1 and ecx, 0x7 mov eax, 1 shl eax, cl mov dword [wayl2], eax pop ecx shr ecx, 16 mov [L2],ecx ;CACHE3: edx provides l3 mov eax, 80000006h cpuid movzx eax, cl ;mov cl to eax, zero extend; cl is counter reg for loop,shifts mov dword[linel3], eax push edx shr edx, 12+1 and edx, 0x7 mov eax, 1 shl eax, cl mov dword [wayl3], eax pop edx shr edx, 18 mov [L3],ecx cmp [f], $5 jz .fiv cmp [f], $6 jz .si cmp [f], $F jz fif cmp [f], $10 ;family 16, 010h, jz ten .fiv: ; Family=5 mov [micron], 50 mov edx, A50 cmp [m], $0 jz @f mov [micron], 35 mov edx, A51 cmp [m], $1 jz @f mov edx, A52 cmp [m], $2 jz @f mov edx, A53 cmp [m], $3 jz @f mov [micron], 30 mov edx, A56 cmp [m], $6 jz @f mov [micron], 25 mov edx, A57 cmp [m], $7 jz @f mov edx, A58 cmp [m], $8 jz @f mov edx, A59 cmp [m], $9 jz @f mov [micron], 18 mov edx, A5D @@: jmp @f .si: ; Family=6 mov [micron], 25 mov edx, At1 cmp [m], $1 jz @f mov [micron], 18 mov edx, At2 cmp [m], $2 jz @f mov edx, At3 cmp [m], $3 jz @f mov edx, At4 cmp [m], $4 jz @f cmp [m], $6 jz A6 mov [micron], 13 mov edx, At7 cmp [m], $7 jz @f cmp [m], $8 jz A8 jmp AA @@: mov [cname], edx 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 A8: ;mov [FRS], 266 ;!!!!!! ;Number 315,90,0,3,dword [FRS],0x000000; MHz cmp [L2], 256 jl .App ; Applebred call newrating;!!!! Text 245,70,0x00000000,pr, prlen-pr Number 310,70,0,4,dword [rating],0x000000 mov edx, At8 jmp @b .App: mov edx, At8a jmp @b AA: ; mov [FRS], 333; !!!! Text 245,70,0x00000000,pr, prlen-pr ; Number 315,90,0,3,dword [FRS],0x000000; MHz mov edx, Atat cmp [L2], 256 jl .Tho ; Thorton mov edx, Ata .Tho: push edx call newrating;!!!!! Number 310,70,0,4,dword [rating],0x000000 pop edx jmp @b fif: ; AMD-64 Family=15 ;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 cmp [m],$1 ;Dual-core Opteron 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. cmp [m],$5 ;Opteron Athlon 64 FX 0.13 (1024) jz AF5. cmp [m],$7 ;Athlon 64 Athlon 64 FX Clawhammer(1024) 0.13 Sledgehammer(1024) 0.13 // SSE3+ SanDiego(1024) jz AF7. cmp [m],$8 ;Athlon 64 Mobile Athlon 64 FX ClawHammer (1024) 0.13 jz AF8. cmp [m],$B ;Athlon 64 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. cmp [m],$F ;Athlon 64 Winchester(512) |SSE3+ SanDiego(1024) Venice (512) Palermo (256) 0.09 jz AFF. jmp next_generation 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.: mov [micron], 09 Text 100,70,0x00000000,AF3, AF3len-AF3 mov esi, AF3 mov edi, saveproc + 0x4 call concatname jmp MMXtest AF4.: mov [micron], 13 Text 100,70,0x00000000,AF4, AF4len-AF4 mov esi, AF4 mov edi, saveproc + 0x4 call concatname jmp MMXtest AF5.: mov [micron], 13 Text 100,70,0x00000000,AF5, AF5len-AF5 jmp MMXtest AF7.: mov [micron], 13 Text 100,70,0x00000000,AF5, AF5len-AF5 mov esi, AF5 mov edi, saveproc + 0x4 call concatname jmp MMXtest AF8.: mov [micron], 13 Text 100,70,0x00000000,AF4, AF4len-AF4 mov esi, AF4 mov edi, saveproc + 0x4 call concatname jmp MMXtest AFB.: mov [micron], 13 Text 100,70,0x00000000,AF4, AF4len-AF4 mov esi, AF4 mov edi, saveproc + 0x4 call concatname jmp MMXtest AFC.: cmp [L2], 512 je AFC.n cmp [sse3sup], 1 je AFC.npal AFC.npar: ; paris mov [micron], 13 Text 100,70,0x00000000,AFCs, AFCslen-AFCs mov esi, AFCs mov edi, saveproc + 0x4 call concatname jmp MMXtest AFC.npal: ; palermo mov [micron], 9 Text 100,70,0x00000000,AFCsp, AFCsplen-AFCsp mov esi, AFCsp mov edi, saveproc + 0x4 call concatname jmp MMXtest 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. AFF.: cmp [sse3sup], 1 je .AFFsse .win: mov [micron], 9 ; winchester jmp MMXtest .AFFsse: mov [micron], 9 cmp [L2], 1024 jz .AFs cmp [L2], 512 jz .AFd cmp [L2], 256 jz .AFp .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 det: cmp [f], $5 jz five cmp [f], $6 jz six cmp [f], $7 jz sev cmp [f], $F jz fift five: ;Family=5 Text 15, 190,0x00000000,cache, cachelen-cache cmp [m],$0 jz .I0 cmp [m],$1 jz .I1 cmp [m],$2 jz .I2 cmp [m],$3 jz .I3 cmp [m],$4 jz .I4 cmp [m],$7 jz .I7 cmp [m],$8 jz .I8 .I0: mov [cname], P50 mov esi, P50 mov edi, saveproc + 0x6 call concatname mov [L1d], 8 mov [L1i], 8 mov [L2], 256 mov [micron], 80 jmp MMXtest .I1: mov [cname], 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: mov [cname], 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: mov [cname], 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: mov [cname], 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: mov [cname], 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: mov [cname], 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 Text 15, 190,0x00000000,cache, cachelen-cache cmp [newpc],$0 jnz NEWintel cmp [m],$0 jz .I60 cmp [m],$1 jz .I61 cmp [m],$3 jz .I63 cmp [m],$5 jz .I65 cmp [m],$6 jz .I66 cmp [m],$7 jz .I67 cmp [m],$8 jz .I68 cmp [m],$9 jz .I69 cmp [m],$A jz .I6A cmp [m],$B jz .I6B cmp [m],$D jz .I6D cmp [m],$E jz .I6E cmp [m],$F jz .I6F .I60: mov [micron], 50 mov [cname], P60 mov esi, P60 mov edi, saveproc + 0x6 call concatname jmp MMXtest .I61: mov [micron], 35 mov [cname], P61 mov esi, P61 mov edi, saveproc + 0x6 call concatname jmp MMXtest .I63: mov [micron], 28 mov [cname], P63 mov esi, P63 mov edi, saveproc + 0x6 call concatname jmp MMXtest .I65: mov [micron], 25 cmp [L2], 0 jne .pp65 ; Pentium mov [cname], P65c mov esi, P65c mov edi, saveproc + 0x6 call concatname jmp MMXtest .pp65: mov [cname], P65 mov esi, P65 mov edi, saveproc + 0x6 call concatname jmp MMXtest .I66: mov [micron], 25 mov [cname], P66 mov esi, P66 mov edi, saveproc + 0x6 call concatname jmp MMXtest .I67: mov [micron], 25 ;but if SSE4.1 supported then it is Intel Core (Penryn) mov [cname], P67 mov esi, P67 mov edi, saveproc + 0x6 call concatname jmp MMXtest .I68: mov [micron], 18 cmp [L2], 128 jne .pp68 ; Pentium mov [cname], P68c mov esi, P68c mov edi, saveproc + 0x6 call concatname jmp MMXtest .pp68: mov [cname], P68 mov esi, P68 mov edi, saveproc + 0x6 call concatname jmp MMXtest .I69: mov [micron], 13 mov [cname], P69 mov esi, P69 mov edi, saveproc + 0x6 call concatname jmp MMXtest .I6A: mov [micron], 18 ;but if SSE4.2 supported then it is Intel Core (Nehalem) mov [cname], P6A mov esi, P6A mov edi, saveproc + 0x6 call concatname jmp MMXtest .I6B: mov [micron], 13 cmp [L2], 256 jne .pp6B ; Pentium mov [cname], P6Bc mov esi, P6Bc mov edi, saveproc + 0x6 call concatname jmp MMXtest .pp6B: mov [cname], P6B mov esi, P6B mov edi, saveproc + 0x6 call concatname jmp MMXtest .I6D: mov [micron], 9 mov [cname], P6D mov esi, P6D mov edi, saveproc + 0x6 call concatname jmp MMXtest .I6E: mov [micron], 6 mov [cname], P6E mov esi, P6E mov edi, saveproc + 0x6 call concatname jmp MMXtest .I6F: mov [micron], 6 mov [cname], 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 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 mov [cname], no_known Inewunknown: jmp MMXtest I3A: mov [micron], 32 mov [cname], P3A mov esi, P3A mov edi, saveproc + 0x10 call concatname jmp MMXtest I2A: mov [micron], 32 mov [cname], P2A mov esi, P2A mov edi, saveproc + 0x10 call concatname jmp MMXtest I2D: mov [micron], 32 mov [cname], P2D mov esi, P2D mov edi,saveproc + 0x10 call concatname jmp MMXtest I25: mov [micron], 32 mov [cname], P25 ;P25 mov esi, P25 mov edi, saveproc + 0x10 ;12 call concatname jmp MMXtest I2C: mov [micron], 32 mov [cname], P2C mov esi, P2C mov edi,saveproc + 0x10 call concatname jmp MMXtest I2F: mov [micron], 32 mov [cname], P2F mov esi, P2F mov edi, saveproc + 0x10 call concatname jmp MMXtest I1E: mov [micron], 32 mov [cname], P1E mov esi, P1E mov edi, saveproc + 0x10 call concatname jmp MMXtest I1A: mov [micron], 45 mov [cname], P1A mov esi, P1A mov edi, saveproc + 0x10 call concatname jmp MMXtest I2E: mov [micron], 45 mov [cname], P2E mov esi, P2E mov edi, saveproc + 0x10 call concatname jmp MMXtest I17: mov [micron], 45 mov [cname], P17 mov esi, P17 mov edi, saveproc + 0x10 call concatname jmp MMXtest I1D: mov [micron], 45 mov [cname], P1D mov esi, P1D mov edi, saveproc + 0x10 call concatname jmp MMXtest I0F: mov [micron], 65 mov [cname], P0F mov esi, P0F mov edi, saveproc + 0x10 call concatname jmp MMXtest I16: mov [micron], 65 mov [cname], P16 mov esi, P16 mov edi, saveproc + 0x10 call concatname jmp MMXtest I06: mov [micron], 32 mov [cname], P06 mov esi, P06 mov edi, saveproc + 0x10 call concatname jmp MMXtest I03: mov [micron], 32 mov [cname], P03 mov esi, P03 mov edi, saveproc + 0x10 call concatname jmp MMXtest I0D: mov [micron], 32 mov [cname], P0D mov esi, P0D mov edi, saveproc + 0x10 call concatname jmp MMXtest I36: mov [micron], 32 mov [cname], P36 mov esi, P36 mov edi, saveproc + 0x10 call concatname jmp MMXtest I26: mov [micron], 32 mov [cname], P26 mov esi, P26 mov edi, saveproc + 0x10 call concatname jmp MMXtest I1C: mov [micron], 32 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 mov [micron], 18 mov [cname], PS0 mov esi, PS0 mov edi, saveproc + 0x6 call concatname jmp MMXtest fift: ;Family=15 Text 15, 190,0x00000000,cacheP4, cacheP4len-cacheP4 cmp [m],$0 jz .IF0 cmp [m],$1 jz .IF1 cmp [m],$2 jz .IF2 cmp [m],$3 jz .IF3 cmp [m],$4 jz .IF3 ;identical to F3xh cmp [m],$5 jz .IF5 cmp [m],$6 jz .IF6 jmp next_generation .IF0: mov [micron], 18 cmp [L2], 128 jne .ppF0 ; Pentium mov [cname], PF0c mov esi, PF0c mov edi, saveproc + 0x6 call concatname jmp MMXtest .ppF0: mov [cname], PF0 mov esi, PF0 mov edi, saveproc + 0x6 call concatname jmp MMXtest .IF1: mov [micron], 18 cmp [L2], 128 je .IF0;jne.ppF1 ; Pentium ; mov eax,dword 0x00000004 ; mov ebx,115*65536+80 ; mov ecx,dword 0x00000000 ; mov edx,PF0c ; mov esi,PF0clen-PF0c ; mcall ;jmp MMXtest ;.ppF1: mov [cname], PF0 mov esi, PF0 mov edi, saveproc + 0x6 call concatname jmp MMXtest .IF2: mov [micron], 13 cmp [L2], 128 jne .ppF2 ; Pentium mov [cname], PF2c mov esi, PF2c mov edi, saveproc + 0x6 call concatname jmp MMXtest .ppF2: mov [cname], PF2 mov esi, PF2 mov edi, saveproc + 0x6 call concatname jmp MMXtest .IF3: mov [micron], 09 cmp [L2], 256 jne .ppF3 ; Pentium mov [cname], PF3c mov esi, PF3c mov edi, saveproc + 0x6 call concatname jmp MMXtest .ppF3: mov [cname], PF3 mov esi, PF3 mov edi, saveproc + 0x6 call concatname jmp MMXtest .IF5: mov [micron], 09 cmp [L2], 512 jae .ppF5 ; Pentium mov [cname], PF5c mov esi, PF5c mov edi, saveproc + 0x6 call concatname jmp MMXtest .ppF5: mov [cname], PF5 mov esi, PF5 mov edi, saveproc + 0x6 call concatname jmp MMXtest .IF6: mov [micron], 06 ; 065 cmp [L2], 512 ja .ppF6 ; Pentium mov [cname], PF6c mov esi, PF6c mov edi, saveproc + 0x6 call concatname jmp MMXtest .ppF6: mov [cname], PF6 mov esi, PF6 mov edi, saveproc + 0x6 call concatname jmp MMXtest next_generation: mov [cname], 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 cmp [f], $5 jz .fivv cmp [f], $6 jz .sixx .fivv: ;Family=5 cmp [m],$2 jz .C52 cmp [m],$4 jz .C54 .C52: mov [micron], 50 ;35? mov [L1i], 8 mov [L1d], 8 mov [L2], 512 Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn mov esi, Cyrixn mov edi, saveproc call concatname mov [cname], C52 mov esi, C52 mov edi, saveproc + 0x6 call concatname jmp MMXtest .C54: mov [micron], 50 mov [L1i], 8 mov [L1d], 8 mov [L2], 512 Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn mov esi, Cyrixn mov edi, saveproc call concatname mov [cname], C54 mov esi, C54 mov edi, saveproc + 0x6 call concatname jmp MMXtest .sixx: ;Family=6 cmp [m],$0 jz .C60 cmp [m],$5 jz .C65 .C60: mov [micron], 25 mov [L1i], 32 mov [L1d], 32 mov [L2], 512 Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn mov esi, Cyrixn mov edi, saveproc call concatname mov [cname], C60 mov esi, C60 mov edi, saveproc + 0x6 call concatname jmp MMXtest .C65: mov [micron], 25 ;35? mov [L1i], 32 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 ;--------------------- Centaur: Text 15, 190,0x00000000,cache, cachelen-cache ;CACHE1: mov eax, 80000005h cpuid shr ecx, 24 mov [L1d], ecx shr edx, 24 mov [L1i], edx ; cache detection routine ;CACHE1: mov eax, 80000005h cpuid movzx eax, cl mov [lineld], eax mov eax, ecx shr eax, 16 and eax,000000FFh mov [wayld], eax shr ecx, 24 mov [L1d], ecx movzx eax, dl mov [lineli], eax mov eax, edx shr eax, 16 and eax,000000FFh mov [wayli], eax shr edx, 24 mov [L1i], edx ;CACHE2: mov eax, 80000006h cpuid cmp [f], $6 jz vn jmp vl2old ; if not then old identification vn: cmp [m],$9 jl vl2old ; else new movzx eax, cl mov dword[linel2], eax mov eax, ecx shl eax, 16 shr eax, 28 mov dword[wayl2], eax shr ecx, 16 ; it is 16 bits now mov [L2],ecx vl2old: movzx eax, cl mov dword[linel2], eax mov eax, ecx shl eax, 8 shr eax, 24 mov dword[wayl2], eax shr ecx, 24 ; it was 8 bits earlier mov [L2],ecx cmp [f], $5 jz fivC cmp [f], $6 jz sixC fivC: ;Family=5 mov esi, idt 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,IDTn, IDTnlen-IDTn mov esi, IDTn mov edi, saveproc + 0x4 call concatname cmp [m],$4 jz .V54 cmp [m],$8 jz .V58 cmp [m],$9 jz .V59 .V54: mov [micron], 35 mov edx,V54 mov esi,V54len-V54 jmp OutProcName .V58: mov [micron], 25 mov edx,V58 mov esi,V58len-V58 jmp OutProcName .V59: mov [micron], 25 mov edx,V59 mov esi,V59len-V59 jmp OutProcName sixC: ;Family=6 mov esi, via call load_gif PutImage 135,107,201,49,img_area+8 Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn mov esi, Centaurn mov edi, saveproc call concatname cmp [m],$6 jz .V66 cmp [m],$7 jz .V67 cmp [m],$8 jz .V68 cmp [m],$9 jz .V69 cmp [m],$A jz .V6A .V66: mov [micron], 18 ; 25? mov edx,V66 mov esi,V66len-V66 jmp OutProcName .V67: mov [micron], 15 mov edx,V67 mov esi,V67len-V67 jmp OutProcName .V68: mov [micron], 13 mov edx,V68 mov esi,V68len-V68 jmp OutProcName .V69: mov [micron], 13 mov edx,V69 mov esi,V69len-V69 jmp OutProcName .V6A: mov [micron], 9 mov edx,VA mov esi,VAlen-VA jmp OutProcName ;----------- Transmeta: 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 ; cache detection routine - it is the same as for AMD (almost) ;CACHE1: mov eax, 80000005h cpuid movzx eax, cl mov [lineld], eax mov eax, ecx shr eax,16 and eax,000000FFh mov [wayld], eax shr ecx, 24 mov [L1d], ecx movzx eax, dl mov [lineli], eax mov eax, edx shr eax, 16 and eax,000000FFh mov [wayli], eax shr edx, 24 mov [L1i], edx ;CACHE2: mov eax, 80000006h cpuid movzx eax, cl mov dword[linel2], eax mov eax, ecx shl eax, 16 shr eax, 28 mov dword[wayl2], eax shr ecx, 16 mov [L2],ecx cmp [f], $5 jz .fivt cmp [f], $F jz .fift .fivt: ; Family=5 mov edx,T5 mov esi,T5len-T5 jmp @f .fift: ; Family=F mov edx,TF mov esi,TFlen-TF @@: mov [micron], 13 ; Text 140,70,0 jmp MMXtest OutProcName: 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 mov esi, Vortexn mov edi, saveproc call concatname jmp MMXtest ;--------------------- MMXtest: ; MMX test and Brand ID decoding call decodebrand ; get Brand ID call decode_standard_features call decode_extended_features xor eax,eax inc eax cpuid HTTtest: test edx, $10000000; ;Test bit 28 jz .ELN .EL: ;HTT technology is supported and ebx,00FF0000h ; numbers of logical processors cmp ebx, 1 shl 16 ; mov [number_of_log_cpus], ebx je .ELN ; HHT not enabled (Celeron) mov dword [HTTn+9], $736579 mov dword [HTT+ 6], $736579 jmp TEXTOUT .ELN: mov dword [HTTn+ 9], $6F6E mov dword [HTT+ 6], $6F6E TEXTOUT: Text 275,290,0x00000000,HTT, HTTlen-HTT Text 275,310,,sse3, sse3len-sse3 Text 15,290,,MMXs, MMXslen-MMXs Text 15,310,,SSE, SSElen-SSE Text 95,310,,SSE2, SSE2len-SSE2 ;------------------- TEST3DNOW: xor edx, edx cmp [smallvendor], 'ntel' ; je @f ;recent change jne .t .t: mov eax, $80000001 ;// Setup extended function 8000_0001h cpuid test edx, $80000000 ;// Test bit 31 jnz .XIT .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 .NOEXTENDEDP .tp: mov eax, $80000001 ;// Setup extended function 8000_0001h cpuid test edx, $40000000 ;// Test bit 30 jnz .XITP ;// 3DNow! technology is supported .NOEXTENDEDP: mov dword [nowp+ 9], $6F6E jmp TESTMMXP .XITP: mov dword [nowp+ 9], $736579 jmp TESTMMXP TESTMMXP: mov eax,$80000000 cpuid test eax, 80000000h jna NOEXTENDEDM ;cmp eax, $80000000 ;// Is 800_0001h supported? ;jz .NOEXTENDEDM ;// If not, 3DNow! technology is not supported mov eax, $80000001 ;// Setup extended function 8000_0001h cpuid cmp [smallvendor], 'tead' jne noCyr Cyrmx: test edx, $01000000 ;// Test bit 24 jnz XITM ;// 3DNow! technology is supported jz NOEXTENDEDM noCyr: test edx, $00400000 ;// Test bit 22 jnz XITM ;// 3DNow! technology is supported ;jz .NOEXTENDEDM NOEXTENDEDM: mov dword [mmxp+ 7], $6F6E mov dword [MMXPi+ 8], $6F6E jmp text3d XITM: mov dword [mmxp+ 7], $736579 mov dword [MMXPi+ 8], $736579 text3d: Text 15,330,0x00000000,now, nowlen-now Text 95,330,,nowp, nowplen-nowp Text 95,290,,mmxp, mmxplen-mmxp Text 110,70,0x80000000,dword[cname] jmp still ;-------------------------- NO_CPUID: mov [nocpuid], 1 Text 15,50,0x00000000,oblom, oblomlen-oblom FREEZE: nop jmp FREEZE ; maybe we should close application or just made some Warning and jump to still: ;---------------- still: ; waiting for events event_wait: mov eax,23 ; function 23 - event wait mov ebx,50 ; wait for 0.5 second mcall cmp eax,1 ; je red ; redraw cmp eax,2 ; je key ; key cmp eax,3 ; je button ; button jmp still ; key: ; mcall ; jmp still ; button: ; mov eax,17 ; mcall ; cmp ah,1 ; = 1 ? je close ; close cmp ah,2 ; = 2 ? je thread_start ; cmp ah, 3 je call_OpenDialog mov eax,11 ; function 23 - event wait mov ebx,1 mcall mov eax,15 ; function 23 - event wait mov ebx,3 mcall ; cmp ah,3 ; = 3 ? jne still close: mov eax,-1 mcall ;**************************** THREAD-SECOND WINDOW thread_start: cmp [num_win2],0 jne still ;================================================RSA test ;test rsa coding speed call init_test ;length of module - 256 bit mov eax,26 mov ebx,9 mcall add eax,100 ;test lasts 1 second. push eax .loop: push 4 ;do 4 iterations - this reduces number of calls mcall. .loop1: call rsa_test ;this procedure change all registers dec dword [esp] jnz .loop1 pop ecx mov eax,26 mov ebx,9 mcall cmp eax,dword [esp] ;Is time changed? jl .loop pop eax shr dword [iter],4 ;[iter] - speed in Kb/sec. (every iteration codes 64 bytes) CreateTread window_2,thread2_esp jmp still window_2: mov [num_win2],1 call draw_window_2 still_2: mov eax,10 mcall cmp eax,1 je window_2 ; window_2 cmp eax,2 ; je key_2 ; key_2 cmp eax,3 ; je button_2 ; button_2 jmp still_2 ; key_2: ; mcall ; jmp still_2 ; button_2: ; mov eax,17 ; 17 mcall ; cmp ah,1 ; = 1 ? jne still_2 ; noclose mov [num_win2],0 ; 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,520, 0x33FFFFFF, 0x805080d0, standard ;460 ; place size Text 15, 10,0x00000000, STDCA, STDCAlen-STDCA Text 215, 10,, EXTCA, EXTCAlen-EXTCA Text 15, 30,0x00000000, FPU, FPUlen-FPU Text 115, 30,, VME, VMElen-VME Text 215, 30,, DE, DElen-DE Text 315, 30,, PSE, PSElen-PSE Text 15, 50,,TSC, TSClen-TSC Text 115,50,,MSR, MSRlen-MSR Text 215,50,,PAE, PAElen-PAE Text 315,50,,MCE, MCElen-MCE Text 15,70,,CX8, CX8len-CX8 Text 115,70,,APIC, APIClen-APIC Text 215,70,,Res, Reslen-Res Text 315,70,,SEP, SEPlen-SEP Text 15,90,,MTRR, MTRRlen-MTRR Text 115,90,,PGE, PGElen-PGE Text 215,90,,MCA, MCAlen-MCA Text 315,90,,CMOV, CMOVlen-CMOV Text 15,110,,PAT, PATlen-PAT Text 115,110,,PSE36, PSE36len-PSE36 Text 215,110,,PSNUM, PSNUMlen-PSNUM Text 315,110,,CLFLUSHn, CLFLUSHnlen-CLFLUSHn Text 15,130,,Res, Reslen-Res Text 115,130,,DTS, DTSlen-DTS Text 215,130,,ACPI, ACPIlen-ACPI Text 315,130,,MMX, MMXlen-MMX Text 15,150,,FXSR, FXSRlen-FXSR Text 115,150,,SSE, SSElen-SSE Text 215,150,,SSE2, SSE2len-SSE2 Text 315,150,,SSn, SSnlen-SSn Text 15,170,,HTT, HTTnlen-HTTn Text 115,170,,TM, TMlen-TM Text 215,170,,IA64, IA64len-IA64 Text 315,170,,PBE, PBElen-PBE ;--------------- DrawLine 0, 410, 185,185,0x8080FF ;10 mov eax,$80000000 cpuid ;mov eax, $03020101 \A0for test of reaction test eax, eax js goooddd baaadd: Text 95,235,0x00000000,NEF, NEFlen-NEF jmp too goooddd: Text 15,195,0x00000000,SS3, SS3len-SS3 Text 15,215,,MON, MONlen-MON Text 15,235,,DS_CPL, DS_CPLlen-DS_CPL Text 15,255,,EST, ESTlen-EST Text 15,275,,TM2, TM2len-TM2 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 Text 115,255,,SYS, SYSlen-SYS Text 115,275,,LAF, LAFlen-LAF 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 Text 215,255,,MMXn, MMXnlen-MMXn 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 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 10, 400, 430,430,0x8080FF ;10 Text 15,415,0x00000000,speed, speedlen-speed Text 130,415,,kbpersec, kbperseclen-kbpersec 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 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 draw_window: mcall SF_REDRAW, SSF_BEGIN_DRAW Window 150, 150, 350, 405, 0x34FFFFFF, 0x805080d0, title mov esi, [sc.work_button] DefineButton 138, 345, 92, 24, 2, DefineButton 238, 345, 92, 24, 3, mov ecx, [sc.work_button_text] or ecx, 0x90000000 mov edx, btn_more_cap mcall SF_DRAW_TEXT, (138 + (92 - 7 * 8) / 2) shl 16 + 350 mov edx, btn_save_cap mcall SF_DRAW_TEXT, (238 + (92 - 4 * 8) / 2) shl 16 + 350 Text 130,270,0x00000000,instruct, instructlen-instruct 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 cmp dword[smallvendor], 'cAMD' jne cont cmp [f], $6 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: ;Number 82,50,0,4,dword [total],0x000000; MHz mov esi, total mov edi, tsum + 0xB ;0xA call savenumber ;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 175, 50,,tech, techlen-tech; 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,50,0x00000000,tsum, tsumlen-tsum 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 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 call load_gif 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 jmp nnn 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 15,10,0x00000000,stm, stmlen-stm ; Fix for deleting leading whitespaces ; in Intel P4's internal name ; by Madis Calme ; 23.12.2004 ver. 0.81 cld mov edi,myname mov al,20h or ecx,-1 repe scasb dec edi mov esi,mynamelen sub esi,edi Text 105, 10, 0x00000000, edi, esi ;- Text 15,250,,brandid, brandidlen-brandid mcall SF_REDRAW, SSF_END_DRAW ret ; call_OpenDialog: mov [OpenDialog_data.type],1 ; Save push dword OpenDialog_data call [OpenDialog_Start] cmp [OpenDialog_data.status],2 ; OpenDialog does not start je .save_file_default_path cmp [OpenDialog_data.status],1 jne still call store_data jmp still .save_file_default_path: mov edi,file_name mov esi,file_default_path call copy_file_name_path call store_data jmp still 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] push edi mov ecx,4096 mov eax,dword ' ' cld rep stosd pop edi mov [store_text_area_end], edi mov esi,title call addstring 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 noMult: mov esi,multi3 call addstring mov esi,freql3 call addstring mov esi, tech call addstring mov esi, saveproc call addstring mov esi, cpuname call addstring mov esi, fam call addstring mov esi, mode call addstring mov esi, step call addstring mov esi, cache2 call addstring mov esi, cache call addstring mov esi, cache3 call addstring mov esi, cache4 call addstring mov esi, brandid call addstring mov esi, MMXs call addstring 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 mov esi, SSE42 call addstring mov esi, SSE5 call addstring mov esi, SSE2 call addstring mov esi, nowp call addstring mov esi, sse3 call addstring mov esi, standard call addstring mov esi, STDCA call addstring mov esi, EXTCA call addstring mov esi, FPU call addstring mov esi, VME call addstring mov esi, DE call addstring mov esi, PSE call addstring mov esi, TSC call addstring mov esi, MSR call addstring mov esi, PAE call addstring mov esi, MCE call addstring mov esi, CX8 call addstring mov esi, APIC call addstring mov esi, Res call addstring mov esi, SEP call addstring mov esi, MTRR call addstring mov esi, PGE call addstring mov esi, MCA call addstring 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 mov esi, Res call addstring mov esi, DTS call addstring mov esi, ACPI call addstring mov esi, MMX call addstring mov esi, FXSR call addstring mov esi, SSE call addstring mov esi, SSn call addstring mov esi, HTT call addstring mov esi, TM call addstring mov esi, IA64 call addstring mov esi, PBE call addstring mov esi, SS3 call addstring 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 mov esi, NX call addstring mov esi, TSCP call addstring mov esi, DS_CPL call addstring mov esi, ETPRD call addstring mov esi, MMXPi call addstring mov esi, LM call addstring mov esi, EST call addstring mov esi, SYS call addstring mov esi, MMXn call addstring mov esi, DNo call addstring mov esi, TM2 call addstring mov esi, LAF call addstring mov esi, FFXSR call addstring mov esi, DN call addstring mov esi, VMX call addstring mov esi, SSSE3 call addstring mov esi, DCA call addstring mov esi, CMPL call addstring mov esi, SVM call addstring mov esi, MCR8 call addstring mov esi, SMX call addstring mov esi, x2APIC call addstring mov esi, PPCNT call addstring mov esi, PAGE call addstring mov esi, EAS call addstring mov esi, ABM call addstring mov esi, MIS call addstring mov esi,OSVW call addstring mov esi,SKINIT_ call addstring mov esi, WDT call addstring ret 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 ret savestring: xor eax, eax cld lodsw ;call numbertostring xor esi, esi xor edi, edi ret numbertostring: mov bx, 10 xor ecx, ecx @@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 jmp ReadGIF ; DATA AREA title db 'CPUID 2.31',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 'Codename:',0 else db 'CODENAME:',0 end if namelen: vendorname: if lang eq it db 'Vendor CPU ', 0 else db 'CPU VENDOR: ', 0 end if vendornamelen: cpuname: if lang eq it db 'Vendor CPU ', 0 else db 'CPU VENDOR: ', 0 end if cpunamelen: fam: if lang eq it db 'Famiglia: std ext', 0 else db 'FAMILY: std ext', 0 end if famlen: mode: if lang eq it db 'Modello: std ext', 0 else db 'MODEL: std ext', 0 end if modelen: step: if lang eq it db 'Stepping: ', 0 else db 'STEPPING: ', 0 end if steplen: cache: db 'L1(inst): KB -way set -byte line size',0 cachelen: cache2: db 'L1(data): KB -way set -byte line size',0 cache2len: cache3: db 'L2: KB -way set -byte line size',0 cache3len: cache4: db 'L3: KB -way set -byte line size',0 cache4len: brandid: db 'Brand:', 0 brandidlen: MMXs: db 'MMX: ',0 MMXslen: total dd 0x0 total1 dd 0x0 rating dd 0x0 rat dd 0x0 ; 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 'Performance',0 else ; db 'PERFORMANCE:',0 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 STDCA: db 'Highest STD call is ',0 STDCAlen: EXTCA: db 'Highest EXT call is h',0 EXTCAlen: 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: cacheP4: 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',0 AMDnlen: AMDnNew: db 'CODENAME: AMD',0 AMDnNewlen: Inteln: db 'Intel',0 Intelnlen: IntelnNew: db 'CODENAME: Intel',0 IntelnNewlen: Cyrixn: db 'Cyrix',0 Cyrixnlen: IDTn: db 'IDT/Centaur',0 IDTnlen: Centaurn: db 'VIA',0 Centaurnlen: Tranmsmetan: db 'Transmeta',0 Tranmsmetanlen: Vortexn: db 'Vortex86',0 Vortexnlen: mmxp: db 'MMX+: ',0 mmxplen: HTT: db 'HTT: ',0 HTTlen: HTTn: db 'HTT: ',0 HTTnlen: 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!: ',0 nowlen: nowp: db '3DNOW!+: ',0 nowplen: ;-Type t1 db 'OEM',0 t2 db 'Overdrive',0 t3 db 'Dual',0 t4 db 'Unknown',0 ;----------Intel P50: db 'P5 A-step',0 P50len: P5: db 'P5',0 P5len: P54T: db 'P24T Overdrive',0 P54Tlen: P54C: db 'P54C',0 P54Clen: P55C: db 'P55C (with MMX)',0 P55Clen: ; --- P60: db 'Pentium Pro A-step',0 P60len: P61: db 'Pentium Pro',0 P61len: P63: db 'Pentium II (Klamath)',0 P63len: P65: db 'Pentium II (Deschutes)',0 P65len: P66: db 'Celeron (Medocino)',0 P66len: P67: db 'Pentium III (Katmai)',0 P67len: P68: db 'Pentium III (Coppermine)',0 P68len: P69: db 'Pentium M (Banias)',0 P69len: P6A: db 'Pentium III Xeon (Cascades)',0 P6Alen: P6B: db 'Pentium III (Tualatin)',0 P6Blen: P6D: db 'Pentium M (Dothan)',0 P6Dlen: P6E: db 'Pentium M (Yonah)/ Core',0 P6Elen: P6F: db 'Pentium D (Conroe)/ Core 2 (Kentsfield)',0 P6Flen: ;--- PS0: db 'Itanium (IA-64)',0 PS0len: ;------------ PF0: db 'Pentium 4 (Willamete)',0 PF0len: PF2: db 'Pentium 4 (Northwood)',0 PF2len: PF3: db 'Pentium 4 (Prescott)',0 PF3len: PF5: db 'Pentium 4 (Tejas)',0 PF5len: PF6: db 'Pentium 4 (Presler)',0 PF6len: ;----------------Intel Celerons P65c: db 'Celeron (Covington)',0 P65clen: P68c: db 'Celeron (Coppermine)',0 P68clen: P6Bc: db 'Celeron (Tualatin)',0 P6Bclen: PF0c: db 'Celeron (Willamete)',0 PF0clen: PF2c: db 'Celeron (Northwood)',0 PF2clen: PF3c: db 'Celeron (Prescott)',0 PF3clen: PF5c: db 'Celeron D (Texas)',0 PF5clen: PF6c: 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: no_known: db 'SORRY, CODENAME IS NOT SUPPORTED YET ', 0 ;---------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 ;------------------- 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',0 AF1len: AF3: db 'Athlon 64 (Toledo)',0 AF3len: AF4: db 'Athlon 64 (ClawHammer)',0 AF4len: AF5: db 'Opteron/Athlon 64 FX (SledgeHammer)',0 AF5len: AFC: db 'Athlon 64 (Newcastle)',0 AFClen: AFF: db 'Athlon 64 (Winchester)',0 AFFlen: AFS: db 'Athlon 64 (San Diego)',0 AFSlen: AFV: db 'Athlon 64 (Venice)',0 AFVlen: AFCs: db 'Sempron (Paris)',0 AFCslen: AFCsp: db 'Sempron (Palermo)',0 AFCsplen: ;---------Cyrix C52: db '6x86 M1',0 C52len: C54: db 'MediaGX',0 C54len: C60: db '6x86MX M2',0 C60len: C65: db 'C3 (Cyrix M2)',0 ;? C65len: ;--------IDT V54: db 'WinChip C6',0 V54len: V58: db 'WinChip 2',0 V58len: V59: db 'WinChip 3',0 V59len: ;-------VIA V66: db 'C3 (Samuel)',0 ; Joshua is unreleased 065 V66len: V67: db 'C3 (Samuel2/Ezra)',0 ; ? V67len: V68: db 'C3 (Ezra-T/Eden)',0 ;? V68len: V69: db 'C3 (Antaur/Nehemiah)',0 ;? V69len: VA: db 'C7 (Esther)',0 ;? VAlen: ;---------Transmeta T5: db 'Crusoe',0 ; T5len: TF: db 'Efficeon',0 ; TFlen: ;--------- NG: db 'Next generation CPU',0 NGlen: 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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; I_END: img_area: ; image is going to be unpacked to here rb 201*49*3+8 ; image resolution (bits to reserve) 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 btn_more_cap: db 'Details', 0 btn_save_cap: db 'Save', 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 align 4 sc system_colors 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 num1 rd 40 num2 rd 40 num3 rd 40 iter rd 1 openkey rd 1 IncludeUGlobals nocpuid db ? 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 ? newpc dd ? nomultiplier dd ? ram_size_a dd ? ram_size_t dd ? stdc dd ? extc dd ? FRS dd ? freqsel db ? sse3sup db ? sse41sup dd ? sse42sup dd ? sse5sup dd ? freqbb dd ? freqll dd ? wayli dd ? lineli dd ? wayld dd ? lineld dd ? wayl2 dd ? linel2 dd ? wayl3 dd ? linel3 dd ? che db ? ; numbers of calls for Intel caches detection cname dd ? codeN dd ? myname: rb 48 mynamelen: db ? align 4 thread2_stack_area rb 64 thread2_esp = $ U_END: