forked from KolibriOS/kolibrios
27d5b67ff2
git-svn-id: svn://kolibrios.org@4862 a494cfbc-eb01-0410-851d-a64ba20cac60
2876 lines
46 KiB
NASM
2876 lines
46 KiB
NASM
;******************************************************************************
|
||
; 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 *
|
||
; 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 *
|
||
; 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 0x0
|
||
|
||
include 'lang.inc' ; language support
|
||
include '..\..\..\macros.inc' ; useful macroses
|
||
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 'rsatest.inc'
|
||
include 'variable.inc'
|
||
|
||
|
||
|
||
START: ; LET'S GO!!!
|
||
;------------
|
||
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
|
||
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
|
||
;-
|
||
call decode_extended
|
||
|
||
mov dword [myname], $612F6E
|
||
|
||
cmp [extc], $80000003
|
||
jbe .noname
|
||
|
||
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
|
||
|
||
.noname:
|
||
red:
|
||
|
||
;mov byte [multiplier], 115; ; for testing
|
||
|
||
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
|
||
|
||
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
|
||
|
||
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'
|
||
jz Intel
|
||
cmp dword[smallvendor], 'cAMD'
|
||
jz AMD
|
||
cmp dword[smallvendor], 'tead'
|
||
jz Cyrix
|
||
cmp dword[smallvendor], 'auls'
|
||
jz Centaur
|
||
cmp dword[smallvendor], 'Mx86'
|
||
jz Transmeta
|
||
cmp dword[smallvendor], ' SoC'
|
||
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
|
||
jmp MMXtest
|
||
;-------------------------
|
||
|
||
AMD:
|
||
|
||
Text 15, 190,0x00000000,cache, cachelen-cache
|
||
|
||
Text 75,70,,AMDn, AMDnlen-AMDn
|
||
|
||
mov esi, amd
|
||
call load_gif
|
||
PutImage 135,107,201,49,img_area+8
|
||
; 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
|
||
|
||
cmp [f], $5
|
||
jz .fiv
|
||
cmp [f], $6
|
||
jz .si
|
||
cmp [f], $F
|
||
jz fif
|
||
.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
|
||
@@:
|
||
Text 100,70,0x80000000
|
||
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
|
||
|
||
; 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
|
||
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
|
||
.AF1:
|
||
mov [micron], 09 ;?
|
||
Text 100,70,0x00000000,AF1, AF1len-AF1
|
||
jmp MMXtest
|
||
.AF3:
|
||
mov [micron], 09
|
||
Text 100,70,0x00000000,AF3, AF3len-AF3
|
||
jmp MMXtest
|
||
.AF4:
|
||
mov [micron], 13
|
||
Text 100,70,0x00000000,AF4, AF4len-AF4
|
||
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
|
||
jmp MMXtest
|
||
.AF8:
|
||
mov [micron], 13
|
||
Text 100,70,0x00000000,AF4, AF4len-AF4 ; AF4, AF5len-AF4
|
||
jmp MMXtest
|
||
.AFB:
|
||
mov [micron], 13
|
||
Text 100,70,0x00000000,AF4, AF4len-AF4
|
||
jmp MMXtest
|
||
|
||
.AFC:
|
||
cmp [L2], 512
|
||
je .AFCn
|
||
|
||
cmp [sse3sup], 1
|
||
je .AFCnpal
|
||
|
||
.AFCnpar: ; paris
|
||
mov [micron], 13
|
||
Text 100,70,0x00000000,AFCs, AFCslen-AFCs
|
||
jmp MMXtest
|
||
|
||
.AFCnpal: ; palermo
|
||
mov [micron], 9
|
||
Text 100,70,0x00000000,AFCsp, AFCsplen-AFCsp
|
||
jmp MMXtest
|
||
|
||
.AFCn: ;newcastle
|
||
mov [micron], 13
|
||
Text 100,70,0x00000000,AFC, AFClen-AFC
|
||
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
|
||
jmp MMXtest
|
||
|
||
.AFd:
|
||
Text 100,70,0x00000000,AFV, AFVlen-AFV
|
||
jmp MMXtest
|
||
|
||
.AFp:
|
||
Text 100,70,0x00000000,AFCsp, AFCsplen-AFCsp
|
||
jmp MMXtest
|
||
;-----------------------------------------------
|
||
Intel:
|
||
Text 75,70,0x00000000,Inteln, Intelnlen-Inteln
|
||
|
||
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
|
||
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:
|
||
Text 110,70,0x00000000,P50, P50len-P50
|
||
mov [L1d], 8
|
||
mov [L1i], 8
|
||
mov [L2], 256
|
||
mov [micron], 80
|
||
jmp MMXtest
|
||
.I1:
|
||
Text 110,70,0x00000000,P5, P5len-P5
|
||
mov [L1d], 8
|
||
mov [L1i], 8
|
||
mov [L2], 256
|
||
mov [micron], 50
|
||
jmp MMXtest
|
||
.I2:
|
||
Text 110,70,0x00000000,P54C, P54Clen-P54C
|
||
mov [L1d], 8
|
||
mov [L1i], 8
|
||
mov [L2], 256
|
||
mov [micron], 50
|
||
jmp MMXtest
|
||
.I3:
|
||
Text 110,70,0x00000000,P54T, P54Tlen-P54T
|
||
mov [L1d], 8
|
||
mov [L1i], 8
|
||
mov [L2], 256
|
||
mov [micron], 50
|
||
jmp MMXtest
|
||
.I4:
|
||
Text 110,70,0x00000000,P55C, P55Clen-P55C
|
||
mov [L1d], 8
|
||
mov [L1i], 8
|
||
mov [L2], 256
|
||
mov [micron], 35
|
||
jmp MMXtest
|
||
.I7:
|
||
Text 110,70,0x00000000,P54C, P54Clen-P54C
|
||
mov [L1d], 8
|
||
mov [L1i], 8
|
||
mov [L2], 256
|
||
mov [micron], 35
|
||
jmp MMXtest
|
||
.I8:
|
||
Text 110,70,0x00000000,P55C, P55Clen-P55C
|
||
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 [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
|
||
Text 110,70,0x00000000,P60, P60len-P60
|
||
jmp MMXtest
|
||
.I61:
|
||
mov [micron], 35
|
||
Text 110,70,0x00000000,P61, P61len-P61
|
||
jmp MMXtest
|
||
.I63:
|
||
mov [micron], 28
|
||
Text 110,70,0x00000000,P63, P63len-P63
|
||
jmp MMXtest
|
||
.I65:
|
||
mov [micron], 25
|
||
cmp [L2], 0
|
||
jne .pp65 ; Pentium
|
||
Text 110,70,0x00000000,P65c, P65clen-P65c
|
||
jmp MMXtest
|
||
.pp65:
|
||
Text 110,70,0x00000000,P65, P65len-P65
|
||
jmp MMXtest
|
||
.I66:
|
||
mov [micron], 25
|
||
Text 110,70,0x00000000,P66, P66len-P66
|
||
jmp MMXtest
|
||
.I67:
|
||
mov [micron], 25
|
||
Text 110,70,0x00000000,P67, P67len-P67 ;but if SSE4.1 supported then it is Intel Core (Penryn)
|
||
jmp MMXtest
|
||
.I68:
|
||
mov [micron], 18
|
||
cmp [L2], 128
|
||
jne .pp68 ; Pentium
|
||
Text 110,70,0x00000000,P68c, P68clen-P68c
|
||
jmp MMXtest
|
||
.pp68:
|
||
Text 110,70,0x00000000,P68, P68len-P68
|
||
jmp MMXtest
|
||
.I69:
|
||
mov [micron], 13
|
||
Text 110,70,0x00000000,P69 , P69len-P69
|
||
jmp MMXtest
|
||
.I6A:
|
||
mov [micron], 18
|
||
Text 110,70,0x00000000,P6A, P6Alen-P6A ;but if SSE4.2 supported then it is Intel Core (Nehalem)
|
||
jmp MMXtest
|
||
.I6B:
|
||
mov [micron], 13
|
||
cmp [L2], 256
|
||
jne .pp6B ; Pentium
|
||
Text 110,70,0x00000000,P6Bc, P6Bclen-P6Bc
|
||
jmp MMXtest
|
||
.pp6B:
|
||
Text 110,70,0x00000000,P6B, P6Blen-P6B
|
||
jmp MMXtest
|
||
.I6D:
|
||
mov [micron], 9
|
||
Text 110,70,0x00000000,P6D, P6Dlen-P6D
|
||
jmp MMXtest
|
||
.I6E:
|
||
mov [micron], 6
|
||
Text 110,70,0x00000000,P6E, P6Elen-P6E
|
||
jmp MMXtest
|
||
.I6F:
|
||
mov [micron], 6
|
||
Text 110,70,0x00000000,P6F, P6Flen-P6F
|
||
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
|
||
.IS0:
|
||
|
||
Text 15, 190,0x00000000,cache, cachelen-cache ;?
|
||
|
||
mov [micron], 18
|
||
Text 110,70,0x00000000,PS0, PS0len-PS0
|
||
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
|
||
Text 110,70,0x00000000,PF0c, PF0clen-PF0c
|
||
jmp MMXtest
|
||
.ppF0:
|
||
Text 110,70,0x00000000,PF0, PF0len-PF0
|
||
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:
|
||
Text 110,70,0x00000000,PF0, PF0len-PF0
|
||
jmp MMXtest
|
||
.IF2:
|
||
mov [micron], 13
|
||
cmp [L2], 128
|
||
jne .ppF2 ; Pentium
|
||
Text 110,70,0x00000000,PF2c, PF2clen-PF2c
|
||
jmp MMXtest
|
||
.ppF2:
|
||
Text 110,70,0x00000000,PF2, PF2len-PF2
|
||
jmp MMXtest
|
||
.IF3:
|
||
mov [micron], 09
|
||
cmp [L2], 256
|
||
jne .ppF3 ; Pentium
|
||
Text 110,70,0x00000000,PF3c, PF3clen-PF3c
|
||
jmp MMXtest
|
||
.ppF3:
|
||
Text 110,70,0x00000000,PF3, PF3len-PF3
|
||
jmp MMXtest
|
||
|
||
.IF5:
|
||
mov [micron], 09
|
||
cmp [L2], 512
|
||
jae .ppF5 ; Pentium
|
||
Text 110,70,0x00000000,PF5c, PF5clen-PF5c
|
||
jmp MMXtest
|
||
.ppF5:
|
||
Text 110,70,0x00000000,PF5, PF5len-PF5
|
||
jmp MMXtest
|
||
|
||
.IF6:
|
||
mov [micron], 06 ; 065
|
||
cmp [L2], 512
|
||
ja .ppF6 ; Pentium
|
||
Text 110,70,0x00000000,PF6c, PF6clen-PF6c
|
||
jmp MMXtest
|
||
.ppF6:
|
||
Text 110,70,0x00000000,PF6, PF6len-PF6
|
||
jmp MMXtest
|
||
|
||
|
||
next_generation:
|
||
Text 110,70,0x00000000,NG, NGlen-NG
|
||
jmp MMXtest
|
||
;----------------------------------
|
||
Cyrix:
|
||
|
||
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
|
||
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
|
||
Text 110,70,0x00000000,C52, C52len-C52
|
||
jmp MMXtest
|
||
.C54:
|
||
mov [micron], 50
|
||
mov [L1i], 8
|
||
mov [L1d], 8
|
||
mov [L2], 512
|
||
Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
|
||
Text 110,70,0x00000000,C54, C54len-C54
|
||
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
|
||
Text 110,70,0x00000000,C60, C60len-C60
|
||
jmp MMXtest
|
||
.C65:
|
||
mov [micron], 25 ;35?
|
||
mov [L1i], 32
|
||
mov [L1d], 32
|
||
mov [L2], 512
|
||
Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn
|
||
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
|
||
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
|
||
;PutImage 125,107,201,49,img_area+8
|
||
; place size
|
||
|
||
Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn
|
||
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, 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:
|
||
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
|
||
;Text 110,70,0x00000000,V54, V54len-V54
|
||
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 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]
|
||
|
||
Number 140,190,,,dword [wayli]
|
||
Number 218,190,,,dword [lineli]
|
||
|
||
Number 140,210,,,dword [wayl2]
|
||
Number 218,210,,,dword [linel2]
|
||
|
||
Number 140,230,,,dword [wayl3]
|
||
Number 218,230,,,dword [linel3]
|
||
|
||
;-------------------
|
||
TEST3DNOW:
|
||
|
||
xor edx, edx
|
||
cmp [smallvendor], 'ntel'
|
||
je @f
|
||
|
||
mov eax, $80000001 ;// Setup extended function 8000_0001h
|
||
cpuid
|
||
|
||
@@:
|
||
mov eax, now+9
|
||
add edx, edx
|
||
call write_yes_no_cf
|
||
|
||
mov eax, nowp+9
|
||
add edx, edx
|
||
call write_yes_no_cf
|
||
|
||
TESTMMXP:
|
||
|
||
mov eax,$80000000
|
||
cpuid
|
||
|
||
test eax, eax
|
||
jns 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 175,290,0x00000000,now, nowlen-now
|
||
Text 175,310,,nowp, nowplen-nowp
|
||
Text 95,290,,mmxp, mmxplen-mmxp
|
||
|
||
jmp still
|
||
|
||
;--------------------------
|
||
NO_CPUID:
|
||
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:
|
||
|
||
;================_RAM_==============
|
||
Number 200,340,0,4,dword [ram_size_a],0xFFFFFF
|
||
|
||
mov eax, 18
|
||
mov ebx, 16
|
||
mcall
|
||
|
||
shr eax, 10
|
||
|
||
mov [ram_size_a], eax
|
||
|
||
mov eax, 18
|
||
mov ebx, 17
|
||
mcall
|
||
|
||
shr eax, 10
|
||
|
||
mov [ram_size_t], eax
|
||
|
||
Text 115,340,0x00000000,ram, ramlen-ram
|
||
Text 300,340,,mb, mblen-mb
|
||
|
||
Number 200,340,0,4,dword [ram_size_a],0x000000
|
||
|
||
Number 270,340,,,dword [ram_size_t]
|
||
|
||
;==============================
|
||
|
||
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 ; = 3 ?
|
||
jne still
|
||
|
||
|
||
;vybor:
|
||
|
||
; Number 310,70,0,4,dword [rating],0xFFFFFF ;
|
||
|
||
; Number 315,90,0,3,dword [FRS]; MHz
|
||
|
||
;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
|
||
|
||
;**************************** 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:
|
||
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
|
||
; 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
|
||
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 <20>for 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 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 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,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
|
||
|
||
|
||
too:
|
||
DrawLine 0, 410, 335,335,0x8080FF ;10
|
||
|
||
Text 15,350,0x00000000,speed, speedlen-speed
|
||
Text 130,350,,kbpersec, kbperseclen-kbpersec
|
||
|
||
Number 95,350,0,5,dword [iter],0x000000; RSA test results
|
||
|
||
mov eax,12
|
||
mov ebx,2h
|
||
mcall
|
||
|
||
ret
|
||
|
||
num_win2 db 0
|
||
|
||
; ******* main window *******
|
||
|
||
draw_window:
|
||
mov eax,12
|
||
mov ebx,1h
|
||
mcall
|
||
|
||
Window 150,150,350,385, 0x34FFFFFF, 0x805080d0, title
|
||
; place size
|
||
|
||
Button 15,330,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"
|
||
; 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, 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:
|
||
|
||
|
||
Text 15,50,0x00000000,tsum, tsumlen-tsum ;
|
||
Text 15,90,,cpuname, cpunamelen-cpuname;
|
||
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
|
||
|
||
Text 15,170,0x00000000,cache2, cache2len-cache2
|
||
Text 15,210,,cache3, cache3len-cache3
|
||
Text 15,230,,cache4, cache4len-cache4
|
||
|
||
|
||
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
|
||
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]
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;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
|
||
; 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 105,20,0x00000000,myname, mynamelen-myname
|
||
;-
|
||
Text 15,250,,brandid, brandidlen-brandid
|
||
|
||
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.28 by S.Kuzmin & the KolibriOS team',0
|
||
|
||
|
||
tsum:
|
||
|
||
if lang eq it
|
||
|
||
db 'Frequenza: . MHz'
|
||
|
||
else
|
||
|
||
db 'Frequency: . MHz'
|
||
|
||
end if
|
||
|
||
|
||
|
||
|
||
|
||
tsumlen:
|
||
|
||
|
||
|
||
total dd 0x0
|
||
|
||
total1 dd 0x0
|
||
|
||
rating dd 0x0
|
||
|
||
rat dd 0x0 ;
|
||
|
||
|
||
|
||
ram:
|
||
|
||
if lang eq it
|
||
|
||
db 'RAM libera: su'
|
||
|
||
else
|
||
|
||
db 'Available RAM: out of'
|
||
|
||
end if
|
||
|
||
|
||
|
||
|
||
|
||
ramlen:
|
||
|
||
|
||
|
||
NEF:
|
||
|
||
db 'EXTENDED FEATURES ARE NOT AVAILABLE'
|
||
|
||
NEFlen:
|
||
|
||
|
||
|
||
mb :
|
||
|
||
db 'MB'
|
||
|
||
mblen:
|
||
|
||
|
||
|
||
;logcpus :
|
||
|
||
;db 'Number of logical CPU:'
|
||
|
||
;logcpuslen:
|
||
|
||
|
||
|
||
speed :
|
||
|
||
if lang eq it
|
||
|
||
db 'Performance'
|
||
|
||
else
|
||
|
||
db 'PERFORMANCE:'
|
||
|
||
end if
|
||
|
||
|
||
|
||
|
||
|
||
speedlen:
|
||
|
||
|
||
|
||
kbpersec:
|
||
|
||
db 'KB/SEC'
|
||
|
||
kbperseclen:
|
||
|
||
|
||
|
||
instruct:
|
||
|
||
if lang eq it
|
||
|
||
db 'Set istruzioni'
|
||
|
||
else
|
||
|
||
db 'Instruction sets'
|
||
|
||
end if
|
||
|
||
|
||
|
||
|
||
|
||
instructlen:
|
||
|
||
|
||
|
||
standard db 'Standard and Extended features plus Performance test',0
|
||
|
||
|
||
|
||
;FR:
|
||
|
||
; db 'Choose FSB:'
|
||
|
||
;FRlen:
|
||
|
||
|
||
|
||
STDCA:
|
||
|
||
db 'Highest STD call is '
|
||
|
||
STDCAlen:
|
||
|
||
|
||
|
||
EXTCA:
|
||
|
||
db 'Highest EXT call is h'
|
||
|
||
EXTCAlen:
|
||
|
||
|
||
|
||
brandid:
|
||
|
||
db 'Brand:'
|
||
|
||
brandidlen:
|
||
|
||
|
||
|
||
oblom:
|
||
|
||
if lang eq it
|
||
|
||
db 'CPUID non e disponibile'
|
||
|
||
else
|
||
|
||
db 'SORRY, CPUID IS NOT AVAILABLE'
|
||
|
||
end if
|
||
|
||
|
||
|
||
oblomlen:
|
||
|
||
other:
|
||
|
||
if lang eq it
|
||
|
||
db 'Questo vendor non e supportato'
|
||
|
||
else
|
||
|
||
db 'SORRY, THIS VENDOR IS NOT SUPPORTED YET'
|
||
|
||
end if
|
||
|
||
|
||
|
||
otherlen:
|
||
|
||
|
||
|
||
cpuname:
|
||
|
||
if lang eq it
|
||
|
||
db 'Vendor CPU '
|
||
|
||
else
|
||
|
||
db 'CPU VENDOR: '
|
||
|
||
end if
|
||
|
||
|
||
|
||
cpunamelen:
|
||
|
||
fam:
|
||
|
||
if lang eq it
|
||
|
||
db 'Famiglia: std ext'
|
||
|
||
else
|
||
|
||
db 'FAMILY: std ext'
|
||
|
||
end if
|
||
|
||
|
||
|
||
|
||
|
||
famlen:
|
||
|
||
mode:
|
||
|
||
if lang eq it
|
||
|
||
db 'Modello: std ext'
|
||
|
||
else
|
||
|
||
db 'MODEL: std ext'
|
||
|
||
end if
|
||
|
||
|
||
|
||
modelen:
|
||
|
||
step:
|
||
|
||
if lang eq it
|
||
|
||
db 'Stepping:'
|
||
|
||
else
|
||
|
||
db 'STEPPING:'
|
||
|
||
end if
|
||
|
||
|
||
|
||
steplen:
|
||
|
||
|
||
|
||
cache2:
|
||
|
||
|
||
|
||
db 'L1(data): KB -way set -byte line size'
|
||
|
||
cache2len:
|
||
|
||
|
||
|
||
cache:
|
||
|
||
db 'L1(inst): KB -way set -byte line size'
|
||
|
||
cachelen:
|
||
|
||
|
||
|
||
cache3:
|
||
|
||
|
||
|
||
db 'L2: KB -way set -byte line size'
|
||
|
||
cache3len:
|
||
|
||
|
||
|
||
cache4:
|
||
|
||
db 'L3: KB -way set -byte line size'
|
||
|
||
cache4len:
|
||
|
||
|
||
|
||
cacheP4:
|
||
|
||
|
||
|
||
db 'L1(inst): Kuops -way set -byte line size'
|
||
|
||
cacheP4len:
|
||
|
||
|
||
|
||
tech:
|
||
|
||
if lang eq it
|
||
|
||
db 'Tecnologia: 0. micron '
|
||
|
||
else
|
||
|
||
db 'Technology: 0. micron '
|
||
|
||
end if
|
||
|
||
|
||
|
||
|
||
|
||
techlen:
|
||
|
||
|
||
|
||
typen:
|
||
|
||
if lang eq it
|
||
|
||
db 'Tipo:'
|
||
|
||
else
|
||
|
||
db 'Type:'
|
||
|
||
end if
|
||
|
||
|
||
|
||
typenlen:
|
||
|
||
|
||
|
||
pr:
|
||
|
||
db 'P-rating:'
|
||
|
||
prlen:
|
||
|
||
|
||
|
||
multil:
|
||
|
||
db 'Multiplier: .'
|
||
|
||
multillen:
|
||
|
||
|
||
|
||
freql:
|
||
|
||
db 'System clock: . MHz'
|
||
|
||
freqllen:
|
||
|
||
|
||
|
||
name:
|
||
|
||
if lang eq it
|
||
|
||
db 'Codename:'
|
||
|
||
else
|
||
|
||
db 'CODENAME:'
|
||
|
||
end if
|
||
|
||
|
||
|
||
namelen:
|
||
|
||
|
||
|
||
AMDn:
|
||
|
||
db 'AMD'
|
||
|
||
AMDnlen:
|
||
|
||
Inteln:
|
||
|
||
db 'Intel'
|
||
|
||
Intelnlen:
|
||
|
||
Cyrixn:
|
||
|
||
db 'Cyrix'
|
||
|
||
Cyrixnlen:
|
||
|
||
IDTn:
|
||
|
||
db 'IDT/Centaur'
|
||
|
||
IDTnlen:
|
||
|
||
Centaurn:
|
||
|
||
db 'VIA'
|
||
|
||
Centaurnlen:
|
||
|
||
|
||
|
||
Tranmsmetan:
|
||
|
||
db 'Transmeta'
|
||
|
||
Tranmsmetanlen:
|
||
|
||
|
||
Vortexn:
|
||
db 'Vortex86'
|
||
Vortexnlen:
|
||
|
||
|
||
MMXs:
|
||
|
||
db 'MMX: '
|
||
|
||
MMXslen:
|
||
|
||
|
||
|
||
mmxp:
|
||
|
||
db 'MMX+: '
|
||
|
||
mmxplen:
|
||
|
||
|
||
|
||
HTT:
|
||
|
||
db 'HTT: '
|
||
|
||
HTTlen:
|
||
|
||
|
||
|
||
HTTn:
|
||
|
||
db 'HTT: '
|
||
|
||
HTTnlen:
|
||
|
||
|
||
|
||
sse3:
|
||
|
||
db 'SSE3: '
|
||
|
||
sse3len:
|
||
|
||
now:
|
||
|
||
db '3DNOW!: '
|
||
|
||
nowlen:
|
||
|
||
nowp:
|
||
|
||
db '3DNOW!+: '
|
||
|
||
nowplen:
|
||
|
||
|
||
|
||
;-Type
|
||
|
||
|
||
|
||
t1 db 'OEM',0
|
||
|
||
t2 db 'Overdrive',0
|
||
|
||
t3 db 'Dual',0
|
||
|
||
t4 db 'Unknown',0
|
||
|
||
|
||
|
||
;----------Intel
|
||
|
||
P50:
|
||
|
||
db 'P5 A-step'
|
||
|
||
P50len:
|
||
|
||
P5:
|
||
|
||
db 'P5'
|
||
|
||
P5len:
|
||
|
||
P54T:
|
||
|
||
db 'P24T Overdrive'
|
||
|
||
P54Tlen:
|
||
|
||
P54C:
|
||
|
||
db 'P54C'
|
||
|
||
P54Clen:
|
||
|
||
P55C:
|
||
|
||
db 'P55C (with MMX)'
|
||
|
||
P55Clen:
|
||
|
||
; ---
|
||
|
||
P60:
|
||
|
||
db 'Pentium Pro A-step'
|
||
|
||
P60len:
|
||
|
||
P61:
|
||
|
||
db 'Pentium Pro'
|
||
|
||
P61len:
|
||
|
||
P63:
|
||
|
||
db 'Pentium II (Klamath)'
|
||
|
||
P63len:
|
||
|
||
P65:
|
||
|
||
db 'Pentium II (Deschutes)'
|
||
|
||
P65len:
|
||
|
||
P66:
|
||
|
||
db 'Celeron (Medocino)'
|
||
|
||
P66len:
|
||
|
||
P67:
|
||
|
||
db 'Pentium III (Katmai)'
|
||
|
||
P67len:
|
||
|
||
P68:
|
||
|
||
db 'Pentium III (Coppermine)'
|
||
|
||
P68len:
|
||
|
||
P69:
|
||
|
||
db 'Pentium M (Banias)'
|
||
|
||
P69len:
|
||
|
||
P6A:
|
||
|
||
db 'Pentium III Xeon (Cascades)'
|
||
|
||
P6Alen:
|
||
|
||
P6B:
|
||
|
||
db 'Pentium III (Tualatin)'
|
||
|
||
P6Blen:
|
||
|
||
P6D:
|
||
|
||
db 'Pentium M (Dothan)'
|
||
|
||
P6Dlen:
|
||
|
||
P6E:
|
||
|
||
db 'Pentium M (Yonah)/ Core'
|
||
|
||
P6Elen:
|
||
|
||
P6F:
|
||
|
||
db 'Pentium D (Conroe)/ Core 2 (Kentsfield)'
|
||
|
||
P6Flen:
|
||
|
||
;---
|
||
|
||
PS0:
|
||
|
||
db 'Itanium (IA-64)'
|
||
|
||
PS0len:
|
||
|
||
;------------
|
||
|
||
PF0:
|
||
|
||
db 'Pentium 4 (Willamete)'
|
||
|
||
PF0len:
|
||
|
||
PF2:
|
||
|
||
db 'Pentium 4 (Northwood)'
|
||
|
||
PF2len:
|
||
|
||
PF3:
|
||
|
||
db 'Pentium 4 (Prescott)'
|
||
|
||
PF3len:
|
||
|
||
PF5:
|
||
|
||
db 'Pentium 4 (Tejas)'
|
||
|
||
PF5len:
|
||
|
||
PF6:
|
||
|
||
db 'Pentium 4 (Presler)'
|
||
|
||
PF6len:
|
||
|
||
;----------------Intel Celerons
|
||
|
||
P65c:
|
||
|
||
db 'Celeron (Covington)'
|
||
|
||
P65clen:
|
||
|
||
P68c:
|
||
|
||
db 'Celeron (Coppermine)'
|
||
|
||
P68clen:
|
||
|
||
P6Bc:
|
||
|
||
db 'Celeron (Tualatin)'
|
||
|
||
P6Bclen:
|
||
|
||
PF0c:
|
||
|
||
db 'Celeron (Willamete)'
|
||
|
||
PF0clen:
|
||
|
||
PF2c:
|
||
|
||
db 'Celeron (Northwood)'
|
||
|
||
PF2clen:
|
||
|
||
PF3c:
|
||
|
||
db 'Celeron (Prescott)'
|
||
|
||
PF3clen:
|
||
|
||
PF5c:
|
||
|
||
db 'Celeron D (Texas)'
|
||
|
||
PF5clen:
|
||
|
||
PF6c:
|
||
|
||
db 'Celeron D (Presler)'
|
||
|
||
PF6clen:
|
||
|
||
;---------AMD
|
||
|
||
A50 db 'K5 (PR75, PR90, PR100)',0
|
||
|
||
A51 db '5k86 (PR120, PR133)',0
|
||
|
||
A52 db '5k86 (PR166)',0
|
||
|
||
A53 db '5k86 (PR200)',0
|
||
|
||
A56 db 'K6',0
|
||
|
||
A57 db 'K6',0
|
||
|
||
A58 db 'K6-2',0
|
||
|
||
A59 db 'K6-III',0
|
||
|
||
A5D db 'K6-2+ or K6-III+',0
|
||
|
||
;-------------------
|
||
|
||
At1 db 'Athlon',0
|
||
|
||
At2 db 'Athlon',0
|
||
|
||
At3 db 'Duron (Spitfire)',0
|
||
|
||
At4 db 'Athlon (Thunderbird)',0
|
||
|
||
At6 db 'AthlonXP (Palomino)',0
|
||
|
||
At7 db 'Duron (Morgan)',0
|
||
|
||
At8 db 'AthlonXP (Thoroughbred)',0
|
||
|
||
At8a db 'Duron (Applebred)',0
|
||
|
||
Ata db 'AthlonXP (Barton)',0
|
||
|
||
Atat db 'AthlonXP (Thorton)',0
|
||
|
||
;-------------------
|
||
|
||
AF1:
|
||
|
||
db 'Dual-core Opteron'
|
||
|
||
AF1len:
|
||
|
||
AF3:
|
||
|
||
db 'Athlon 64 (Toledo)'
|
||
|
||
AF3len:
|
||
|
||
AF4:
|
||
|
||
db 'Athlon 64 (ClawHammer)'
|
||
|
||
AF4len:
|
||
|
||
AF5:
|
||
|
||
db 'Opteron/Athlon 64 FX (SledgeHammer)'
|
||
|
||
AF5len:
|
||
|
||
|
||
|
||
AFC:
|
||
|
||
db 'Athlon 64 (Newcastle)'
|
||
|
||
AFClen:
|
||
|
||
|
||
|
||
AFF:
|
||
|
||
db 'Athlon 64 (Winchester)'
|
||
|
||
AFFlen:
|
||
|
||
|
||
|
||
AFS:
|
||
|
||
db 'Athlon 64 (San Diego)'
|
||
|
||
AFSlen:
|
||
|
||
|
||
|
||
AFV:
|
||
|
||
db 'Athlon 64 (Venice)'
|
||
|
||
AFVlen:
|
||
|
||
|
||
|
||
AFCs:
|
||
|
||
db 'Sempron (Paris)'
|
||
|
||
AFCslen:
|
||
|
||
|
||
|
||
AFCsp:
|
||
|
||
db 'Sempron (Palermo)'
|
||
|
||
AFCsplen:
|
||
|
||
|
||
|
||
;---------Cyrix
|
||
|
||
C52:
|
||
|
||
db '6x86 M1'
|
||
|
||
C52len:
|
||
|
||
C54:
|
||
|
||
db 'MediaGX'
|
||
|
||
C54len:
|
||
|
||
C60:
|
||
|
||
db '6x86MX M2'
|
||
|
||
C60len:
|
||
|
||
C65:
|
||
|
||
db 'C3 (Cyrix M2)' ;?
|
||
|
||
C65len:
|
||
|
||
;--------IDT
|
||
|
||
V54:
|
||
|
||
db 'WinChip C6'
|
||
|
||
V54len:
|
||
|
||
V58:
|
||
|
||
db 'WinChip 2'
|
||
|
||
V58len:
|
||
|
||
V59:
|
||
|
||
db 'WinChip 3'
|
||
|
||
V59len:
|
||
|
||
;-------VIA
|
||
|
||
V66:
|
||
|
||
db 'C3 (Samuel)' ; Joshua is unreleased 065
|
||
|
||
V66len:
|
||
|
||
V67:
|
||
|
||
db 'C3 (Samuel2/Ezra)' ; ?
|
||
|
||
V67len:
|
||
|
||
V68:
|
||
|
||
db 'C3 (Ezra-T/Eden)' ;?
|
||
|
||
V68len:
|
||
|
||
V69:
|
||
|
||
db 'C3 (Antaur/Nehemiah)' ;?
|
||
|
||
V69len:
|
||
|
||
VA:
|
||
|
||
db 'C7 (Esther)' ;?
|
||
|
||
VAlen:
|
||
|
||
;---------Transmeta
|
||
|
||
T5:
|
||
|
||
db 'Crusoe' ;
|
||
|
||
T5len:
|
||
|
||
TF:
|
||
|
||
db 'Efficeon' ;
|
||
|
||
TFlen:
|
||
|
||
;---------
|
||
|
||
NG:
|
||
|
||
db 'Next generation CPU'
|
||
|
||
NGlen:
|
||
|
||
|
||
|
||
stm:
|
||
|
||
if lang eq it
|
||
|
||
db 'Nome: '
|
||
|
||
else
|
||
|
||
db 'Internal name:'
|
||
|
||
end if
|
||
|
||
|
||
|
||
stmlen:
|
||
|
||
|
||
|
||
athloncoef db 110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 120
|
||
|
||
db 190, 120, 200, 130, 135, 140, 210, 150, 220, 160, 165, 170, 180, 230, 240
|
||
|
||
athlonmcoef: db 110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105
|
||
|
||
db 30, 190, 40, 200, 130, 135, 14, 210, 150, 220, 160, 165, 170, 230, 240
|
||
|
||
athloncoef3 db 45, 50, 40, 55, 25, 30, 60, 35
|
||
|
||
p4coef db 160, 170, 180, 190, 200, 210, 220, 230, 80, 90, 100, 110, 120, 130, 140, 150 ; Pentium 4 (Willamete)
|
||
|
||
coppercoeff db 50, 30, 40, 20, 55, 35, 45, 25, 35, 70, 80, 60, 20, 75, 15, 65, 90, 110, 120, 20, 95, 115, 85, 25, 35, 70, 80, 100, 20, 75, 15, 105
|
||
|
||
tualatcoeff db 120, 35, 35, 40, 55, 35, 115, 35, 160, 70, 80, 60, 40, 75, 35, 65, 90, 110, 35, 35, 95, 35, 85, 35, 35, 35, 130, 100, 140, 35, 150, 105
|
||
|
||
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
||
;
|
||
|
||
; include images and unpacking- and hasharea
|
||
|
||
;
|
||
|
||
include 'logos.inc' ; include file where gif's are stored
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
I_END:
|
||
|
||
img_area: ; image is going to be unpacked to here
|
||
rb 201*49*3+8 ; image resolution (bits to reserve)
|
||
|
||
img_area2: ; image is going to be unpacked to here
|
||
rb 93*24*3+8 ; image resolution (bits to reserve)
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
||
; RSA test data
|
||
|
||
align 4
|
||
|
||
num1 rd 40
|
||
|
||
num2 rd 40
|
||
|
||
num3 rd 40
|
||
|
||
iter rd 1
|
||
|
||
openkey rd 1
|
||
|
||
|
||
|
||
IncludeUGlobals
|
||
|
||
|
||
|
||
ost dd ?
|
||
|
||
sot dd ?
|
||
|
||
f dd ?
|
||
|
||
m dd ?
|
||
|
||
s dd ?
|
||
|
||
t dd ?
|
||
|
||
|
||
|
||
ef dd ?
|
||
|
||
em dd ?
|
||
|
||
|
||
|
||
multiplier dd ?
|
||
|
||
multa dd ?
|
||
|
||
multb dd ?
|
||
|
||
|
||
|
||
smallvendor dd ?
|
||
|
||
L1d dd ?
|
||
|
||
L1i dd ?
|
||
|
||
L2 dd ?
|
||
|
||
L3 dd ?
|
||
|
||
micron dd ?
|
||
|
||
brand dd ?
|
||
|
||
|
||
|
||
ram_size_a dd ?
|
||
|
||
ram_size_t dd ?
|
||
|
||
|
||
|
||
stdc dd ?
|
||
|
||
extc dd ?
|
||
|
||
|
||
|
||
FRS dd ?
|
||
|
||
freqsel db ?
|
||
|
||
sse3sup db ?
|
||
|
||
|
||
|
||
freqbb dd ?
|
||
|
||
freqll dd ?
|
||
|
||
|
||
|
||
wayli dd ?
|
||
|
||
lineli dd ?
|
||
|
||
|
||
|
||
wayld dd ?
|
||
|
||
lineld dd ?
|
||
|
||
|
||
|
||
wayl2 dd ?
|
||
|
||
linel2 dd ?
|
||
|
||
|
||
|
||
wayl3 dd ?
|
||
|
||
linel3 dd ?
|
||
|
||
|
||
|
||
;number_of_log_cpus dd ?
|
||
|
||
|
||
|
||
che db ? ; numbers of calls for Intel caches detection
|
||
|
||
|
||
|
||
myname:
|
||
|
||
rb 48
|
||
|
||
mynamelen:
|
||
|
||
|
||
|
||
align 4
|
||
|
||
|
||
|
||
thread2_stack_area rb 64
|
||
|
||
thread2_esp = $
|
||
|
||
U_END: |