Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Ignore whitespace Rev 7441 → Rev 7442

/programs/system/cpuid/trunk/Build.bat
1,2 → 1,4
fasm cpuid.asm cpuid
pause
@echo lang fix en >lang.inc
@fasm cpuid.asm cpuid
@pause
@erase lang.inc
/programs/system/cpuid/trunk/CPUID.ASM
1,35 → 1,37
;******************************************************************************
; project name: CPUID *
; platform: KolibriOS, x86 (IA-32), x86-64 achitectures *
; compiler: flat assembler 1.70.03 *
; version: 2.29 *
; last update: 12 October 2014 *
; maintained by: Sergey Kuzmin aka Wildwest *
; e-mail: kuzmin_serg@list.ru *
; site: http://coolthemes.narod.ru/files.html *
; license: Copyright 2004-2014 Sergey Kuzmin and co-authors *
; Rules: *
; 1)you can use pieces of code in your project, but should *
; mention the original author (include copyright notice); *
; 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*
; 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 *
; English comments *
;------------------------------------------------------------------------------
use32
org 0x0
db 'MENUET01'
dd 0x01
dd START
dd I_END
org 0x0
db 'MENUET01'
dd 0x01
dd START
dd I_END
dd U_END+4096
dd U_END+4096
dd 0x0
dd path
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
44,144 → 46,145
@use_library
 
START:
mcall 68,11
mcall 66,1,1
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]
push dword OpenDialog_data
call [OpenDialog_Init]
 
mov edi,filename_area
mov esi,start_temp_file_name
call copy_file_name_path
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
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
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
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
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
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
cmp ecx, 'ntel'
jne cpu1 ;is not Intel
 
;Starting L1, L2, L3 caches detection (Intel made it VERY HARD)
 
mov eax, 2
cpuid
mov eax, 2
cpuid
 
mov [che], al ; number of calls
mov [che], al ; number of calls
multik:
 
.eaxl:
test eax, eax ; Test bit 31
js .ebxl ; <> 0 =>invalid values
call decodecache24
test eax, eax ; Test bit 31
js .ebxl ; <> 0 =>invalid values
call decodecache24
.ebxl:
test ebx, ebx
js .ecxl
mov eax, ebx
call decodecache32
test ebx, ebx
js .ecxl
mov eax, ebx
call decodecache32
.ecxl:
test ecx, ecx
js .edxl
mov eax, ecx
call decodecache32
test ecx, ecx
js .edxl
mov eax, ecx
call decodecache32
.edxl:
test edx, edx
js cpu1
mov eax, edx
call decodecache32
test edx, edx
js cpu1
mov eax, edx
call decodecache32
 
dec [che] ; we made all calls
je cpu1
dec [che] ; we made all calls
je cpu1
 
multi: ; not yet
 
mov eax, 2 ; so we made call again
cpuid
mov eax, 2 ; so we made call again
cpuid
 
jmp multik
jmp multik
 
; FAMILY MODEL STEPPING
cpu1:
xor eax, eax
inc eax ; eax=1
cpuid
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,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
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
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
;-
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
cmp dword[smallvendor], 'cAMD'
jz maybe_athlon
cmp dword[smallvendor], 'ntel'
jnz no_full ; if not AMD or Intel
 
;detect_it:
;cmp [f], 0Fh
189,129 → 192,130
 
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 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
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
jmp fut
 
no_full:
 
mov ecx, [m]
mov [em], ecx
mov ecx, [m]
mov [em], ecx
 
mov ecx, [f]
mov [ef], ecx
mov ecx, [f]
mov [ef], ecx
 
jmp fut
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 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
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_sse3_5
;-
call decode_extended
;call decode_sse3_5
;-
call decode_extended
 
mov eax,$80000000
cpuid
mov eax,$80000000
cpuid
 
mov [extc], eax ; max number of calls
mov [extc], eax ; max number of calls
 
test eax, $80000000 ;// Test bit 31
jz .noname
test eax, $80000000 ;// Test bit 31
jz .noname
 
cmp eax,$80000003
ja .mynameis
jmp .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
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
;mov byte [multiplier], 115; ; for testing
 
call decode_sse3
call decode_sse3
 
call multipl ; get multiplier
mov byte [multiplier], cl
call multipl ; get multiplier
mov byte [multiplier], cl
 
mov dword [freqbb], 0
mov dword [freqll], 0
mov dword [freqbb], 0
mov dword [freqll], 0
 
mov ebx, dword [multiplier]
test ebx, ebx
jz output
mov ebx, dword [multiplier]
test ebx, ebx
jz output
 
calc:
calc:
 
mov eax,dword [ost] ; example 166474
imul eax, 10 ; example 1664740
xor edx,edx
div ebx ; get system clock (if multiplier detected)
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 ; 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
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
call draw_window ; Draw window
 
;HRERE
 
327,18 → 331,18
; 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 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
352,13 → 356,13
; jz .NSC
; jmp Other ; I don't know what to do with you...
Other:
Text 75,70,0x00000000,other, otherlen-other
Text 75,70,0x00000000,other, otherlen-other
 
mov esi, other
mov edi, [saveproc]
call concatname
mov esi, other
mov edi, [saveproc]
call concatname
 
jmp MMXtest
jmp MMXtest
;-------------------------
 
AMD:
365,172 → 369,172
 
;-------------------------------------------------------------------------------
 
Text 15, 190,0x00000000,cache, cachelen-cache
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
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
mov eax, 80000005h
cpuid
 
movzx eax, cl
mov [lineld], eax
movzx eax, cl
mov [lineld], eax
 
mov eax, ecx
;shl eax, 8
;shr eax, 24
mov eax, ecx
;shl eax, 8
;shr eax, 24
 
and eax,00FF0000h
shr eax, 16
mov [wayld], eax
and eax,00FF0000h
shr eax, 16
mov [wayld], eax
 
shr ecx, 24
mov [L1d], ecx
shr ecx, 24
mov [L1d], ecx
 
 
movzx eax, dl
mov [lineli], eax
movzx eax, dl
mov [lineli], eax
 
mov eax, edx
;shl eax, 8
;shr eax, 24
mov eax, edx
;shl eax, 8
;shr eax, 24
 
and eax,00FF0000h
shr eax, 16
mov [wayli], eax
and eax,00FF0000h
shr eax, 16
mov [wayli], eax
 
 
shr edx, 24
mov [L1i], edx
shr edx, 24
mov [L1i], edx
 
 
;CACHE2:
mov eax, 80000006h
cpuid
mov eax, 80000006h
cpuid
 
movzx eax, cl
mov dword[linel2], eax
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
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
shr ecx, 16
mov [L2],ecx
 
;CACHE3: edx provides l3
 
mov eax, 80000006h
cpuid
mov eax, 80000006h
cpuid
 
movzx eax, cl ;mov cl to eax, zero extend; cl is counter reg for loop,shifts
mov dword[linel3], eax
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
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
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
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
.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
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 [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
mov [cname], edx
jmp MMXtest
A6:
;mov [FRS], 266 ;!!!!!!
;Number 315,90,0,3,dword [FRS],0x000000; MHz
 
call newrating; !!!!
call newrating; !!!!
 
Text 245,70,0x00000000,pr, prlen-pr
Number 310,70,0,4,dword [rating],0x000000
mov edx, At6
jmp @b
Text 245,70,0x00000000,pr, prlen-pr
Number 310,70,0,4,dword [rating],0x000000
mov edx, At6
jmp @b
 
A8:
 
537,39 → 541,39
;mov [FRS], 266 ;!!!!!!
;Number 315,90,0,3,dword [FRS],0x000000; MHz
 
cmp [L2], 256
jl .App ; Applebred
cmp [L2], 256
jl .App ; Applebred
 
call newrating;!!!!
call newrating;!!!!
 
Text 245,70,0x00000000,pr, prlen-pr
Number 310,70,0,4,dword [rating],0x000000
mov edx, At8
jmp @b
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
mov edx, At8a
jmp @b
 
AA:
 
; mov [FRS], 333; !!!!
Text 245,70,0x00000000,pr, prlen-pr
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
mov edx, Atat
cmp [L2], 256
jl .Tho ; Thorton
mov edx, Ata
.Tho:
push edx
push edx
 
call newrating;!!!!!
call newrating;!!!!!
 
Number 310,70,0,4,dword [rating],0x000000
pop edx
jmp @b
Number 310,70,0,4,dword [rating],0x000000
pop edx
jmp @b
 
fif: ; AMD-64 Family=15
 
577,553 → 581,555
;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
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.
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
cmp [s],03h
jz AB8right2.
cmp [m],$2
jz athlonCheck
 
athlonCheck:
cmp [s],03h
jz athlonKuma
cmp [s],03h
jz athlonKuma
 
cmp [m], $5
jz AB4.
cmp [m],$1
jz AB1.
cmp [m],$4
jz AB8check.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 [L2], 512
je AFC.n
 
cmp [sse3sup], 1
je AFC.npal
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
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
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
mov [micron], 13
Text 100,70,0x00000000,AFC, AFClen-AFC
mov esi, AFC
mov edi, saveproc + 0x4
call concatname
jmp MMXtest
 
AFE.: ; error in cpu
jmp AFC.
AFE.: ; error in cpu
jmp AFC.
 
AFF.:
 
cmp [sse3sup], 1
je .AFFsse
cmp [sse3sup], 1
je .AFFsse
 
.win:
mov [micron], 9 ; winchester
jmp MMXtest
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
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
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
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
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
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
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
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
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 esi, P50
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 80
jmp MMXtest
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:
Text 110,70,0x00000000,P5, P5len-P5
mov esi, P5
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 50
jmp MMXtest
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:
Text 110,70,0x00000000,P54C, P54Clen-P54C
mov esi, P54C
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 50
jmp MMXtest
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:
Text 110,70,0x00000000,P54T, P54Tlen-P54T
mov esi, P54T
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 50
jmp MMXtest
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:
Text 110,70,0x00000000,P55C, P55Clen-P55C
mov esi, P55C
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 35
jmp MMXtest
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:
Text 110,70,0x00000000,P54C, P54Clen-P54C
mov esi, P54C
mov edi, saveproc + 0x6
call concatname
mov [L1d], 8
mov [L1i], 8
mov [L2], 256
mov [micron], 35
jmp MMXtest
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:
Text 110,70,0x00000000,P55C, P55Clen-P55C
mov esi, P55C
mov edi, saveproc + 0x6
call concatname
mov [L1d], 16
mov [L1i], 16
mov [L2], 256
mov [micron], 35
jmp MMXtest
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
six: ;Family=6
 
Text 15, 190,0x00000000,cache, cachelen-cache
cmp [newpc],$0
jnz NEWintel
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
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
mov esi, P60
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 50
mov [cname], P60
mov esi, P60
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.I61:
mov [micron], 35
Text 110,70,0x00000000,P61, P61len-P61
mov esi, P61
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 35
mov [cname], P61
mov esi, P61
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.I63:
mov [micron], 28
Text 110,70,0x00000000,P63, P63len-P63
mov esi, P63
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
Text 110,70,0x00000000,P65c, P65clen-P65c
mov esi, P65c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 25
cmp [L2], 0
jne .pp65 ; Pentium
mov [cname], P65c
mov esi, P65c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.pp65:
Text 110,70,0x00000000,P65, P65len-P65
mov esi, P65
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [cname], P65
mov esi, P65
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I66:
mov [micron], 25
Text 110,70,0x00000000,P66, P66len-P66
mov esi, P66
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 25
mov [cname], P66
mov esi, P66
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.I67:
mov [micron], 25
Text 110,70,0x00000000,P67, P67len-P67 ;but if SSE4.1 supported then it is Intel Core (Penryn)
mov esi, P67
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
Text 110,70,0x00000000,P68c, P68clen-P68c
mov esi, P68c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 18
cmp [L2], 128
jne .pp68 ; Pentium
mov [cname], P68c
mov esi, P68c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.pp68:
Text 110,70,0x00000000,P68, P68len-P68
mov esi, P68
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [cname], P68
mov esi, P68
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.I69:
mov [micron], 13
Text 110,70,0x00000000,P69 , P69len-P69
mov esi, P69
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 13
mov [cname], P69
mov esi, P69
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.I6A:
mov [micron], 18
Text 110,70,0x00000000,P6A, P6Alen-P6A ;but if SSE4.2 supported then it is Intel Core (Nehalem)
mov esi, P6A
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
Text 110,70,0x00000000,P6Bc, P6Bclen-P6Bc
mov esi, P6Bc
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 13
cmp [L2], 256
jne .pp6B ; Pentium
mov [cname], P6Bc
mov esi, P6Bc
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.pp6B:
Text 110,70,0x00000000,P6B, P6Blen-P6B
mov esi, P6B
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [cname], P6B
mov esi, P6B
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.I6D:
mov [micron], 9
Text 110,70,0x00000000,P6D, P6Dlen-P6D
mov esi, P6D
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 9
mov [cname], P6D
mov esi, P6D
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.I6E:
mov [micron], 6
Text 110,70,0x00000000,P6E, P6Elen-P6E
mov esi, P6E
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 6
mov [cname], P6E
mov esi, P6E
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.I6F:
mov [micron], 6
Text 110,70,0x00000000,P6F, P6Flen-P6F
mov esi, P6F
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
1130,847 → 1136,829
 
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
jnz no_known
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
jnz no_known
 
Inewunknown:
jmp MMXtest
jmp MMXtest
 
I3A:
mov [micron], 32
;Text 110,70,0x00000000,P3A, P3Alen-P3A
mov [cname], P3A
mov esi, P3A
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P3A
mov esi, P3A
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I2A:
mov [micron], 32
;Text 110,70,0x00000000,P2A, P2Alen-P2A
mov [cname], P2A
mov esi, P2A
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P2A
mov esi, P2A
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I2D:
mov [micron], 32
;Text 110,70,0x00000000,P2D, P2Dlen-P2D
mov [cname], P2D
mov esi, P2D
mov edi,saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P2D
mov esi, P2D
mov edi,saveproc + 0x10
call concatname
jmp MMXtest
 
I25:
mov [micron], 32
;Text 110,70,0x00000000,P25, P25len-P25
mov [cname], P25 ;P25
mov esi, P25
mov edi, saveproc + 0x10 ;12
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P25 ;P25
mov esi, P25
mov edi, saveproc + 0x10 ;12
call concatname
jmp MMXtest
 
I2C:
mov [micron], 32
;Text 110,70,0x00000000,P2C, P2Clen-P2C
mov [cname], P2C
mov esi, P2C
mov edi,saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P2C
mov esi, P2C
mov edi,saveproc + 0x10
call concatname
jmp MMXtest
 
I2F:
mov [micron], 32
;Text 110,70,0x00000000,P2F, P2Flen-P2F
mov [cname], P2F
mov esi, P2F
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P2F
mov esi, P2F
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I1E:
mov [micron], 32
;Text 110,70,0x00000000,P1E, P1Elen-P1E
mov [cname], P1E
mov esi, P1E
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P1E
mov esi, P1E
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I1A:
mov [micron], 45
;Text 110,70,0x00000000,P1A, P1Alen-P1A
mov [cname], P1A
mov esi, P1A
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 45
mov [cname], P1A
mov esi, P1A
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I2E:
mov [micron], 45
;Text 110,70,0x00000000,P2E, P2Elen-P2E
mov [cname], P2E
mov esi, P2E
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 45
mov [cname], P2E
mov esi, P2E
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I17:
mov [micron], 45
;Text 110,70,0x00000000,P17, P17len-P17
mov [cname], P17
mov esi, P17
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 45
mov [cname], P17
mov esi, P17
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I1D:
mov [micron], 45
;Text 110,70,0x00000000,P1D, P1Dlen-P1D
mov [cname], P1D
mov esi, P1D
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 45
mov [cname], P1D
mov esi, P1D
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I0F:
mov [micron], 65
;Text 110,70,0x00000000,P0F, P0Flen-P0F
mov [cname], P0F
mov esi, P0F
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 65
mov [cname], P0F
mov esi, P0F
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I16:
mov [micron], 65
;Text 110,70,0x00000000,P16, P16len-P16
mov [cname], P16
mov esi, P16
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 65
mov [cname], P16
mov esi, P16
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I06:
mov [micron], 32
;Text 110,70,0x00000000,P06, P06len-P06
mov [cname], P06
mov esi, P06
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P06
mov esi, P06
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I03:
mov [micron], 32
;Text 110,70,0x00000000,P03, P03len-P03
mov [cname], P03
mov esi, P03
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P03
mov esi, P03
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I0D:
mov [micron], 32
;Text 110,70,0x00000000,P0D, P0Dlen-P0D
mov [cname], P0D
mov esi, P0D
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P0D
mov esi, P0D
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I36:
mov [micron], 32
;Text 110,70,0x00000000,P36, P36len-P36
mov [cname], P36
mov esi, P36
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P36
mov esi, P36
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I26:
mov [micron], 32
;Text 110,70,0x00000000,P26, P26len-P26
mov [cname], P26
mov esi, P26
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P26
mov esi, P26
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
I1C:
mov [micron], 32
;Text 110,70,0x00000000,P1C, P1Clen-P1C
mov [cname], P1C
mov esi, P1C
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
mov [micron], 32
mov [cname], P1C
mov esi, P1C
mov edi, saveproc + 0x10
call concatname
jmp MMXtest
 
 
;;;;;;;;;;;;;;;;;;;
sev: ;Family=7
sev: ;Family=7
.IS0:
 
Text 15, 190,0x00000000,cache, cachelen-cache
mov [micron], 18
Text 110,70,0x00000000,PS0, PS0len-PS0
mov esi, PS0
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
fift: ;Family=15
 
Text 15, 190,0x00000000,cacheP4, cacheP4len-cacheP4
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
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
mov esi, PF0c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 18
cmp [L2], 128
jne .ppF0 ; Pentium
mov [cname], PF0c
mov esi, PF0c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.ppF0:
Text 110,70,0x00000000,PF0, PF0len-PF0
mov esi, PF0
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
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
mov esi, PF0
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [cname], PF0
mov esi, PF0
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.IF2:
mov [micron], 13
cmp [L2], 128
jne .ppF2 ; Pentium
Text 110,70,0x00000000,PF2c, PF2clen-PF2c
mov esi, PF2c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 13
cmp [L2], 128
jne .ppF2 ; Pentium
mov [cname], PF2c
mov esi, PF2c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.ppF2:
Text 110,70,0x00000000,PF2, PF2len-PF2
mov esi, PF2
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [cname], PF2
mov esi, PF2
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.IF3:
mov [micron], 09
cmp [L2], 256
jne .ppF3 ; Pentium
Text 110,70,0x00000000,PF3c, PF3clen-PF3c
mov esi, PF3c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 09
cmp [L2], 256
jne .ppF3 ; Pentium
mov [cname], PF3c
mov esi, PF3c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.ppF3:
Text 110,70,0x00000000,PF3, PF3len-PF3
mov esi, PF3
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [cname], PF3
mov esi, PF3
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
.IF5:
mov [micron], 09
cmp [L2], 512
jae .ppF5 ; Pentium
Text 110,70,0x00000000,PF5c, PF5clen-PF5c
mov esi, PF5c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [micron], 09
cmp [L2], 512
jae .ppF5 ; Pentium
mov [cname], PF5c
mov esi, PF5c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
.ppF5:
Text 110,70,0x00000000,PF5, PF5len-PF5
mov esi, PF5
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
Text 110,70,0x00000000,PF6c, PF6clen-PF6c
mov esi, PF6c
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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:
Text 110,70,0x00000000,PF6, PF6len-PF6
mov esi, PF6
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
mov [cname], PF6
mov esi, PF6
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
 
 
next_generation:
Text 110,70,0x00000000,NG, NGlen-NG
mov esi, NG
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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 [codeN], 3
Text 15, 190,0x00000000,cache, cachelen-cache
 
mov esi, cyrix
call load_gif
PutImage 135,107,201,49,img_area+8
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
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
Text 110,70,0x00000000,C52, C52len-C52
mov esi, C52
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
Text 110,70,0x00000000,C54, C54len-C54
mov esi, C54
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
.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
Text 110,70,0x00000000,C60, C60len-C60
mov esi, C60
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
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
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
Text 15, 190,0x00000000,cache, cachelen-cache
 
;CACHE1:
mov eax, 80000005h
cpuid
shr ecx, 24
mov [L1d], ecx
shr edx, 24
mov [L1i], edx
mov eax, 80000005h
cpuid
shr ecx, 24
mov [L1d], ecx
shr edx, 24
mov [L1i], edx
 
; cache detection routine
;CACHE1:
mov eax, 80000005h
cpuid
mov eax, 80000005h
cpuid
 
movzx eax, cl
mov [lineld], eax
movzx eax, cl
mov [lineld], eax
 
mov eax, ecx
shr eax, 16
and eax,000000FFh
mov [wayld], eax
mov eax, ecx
shr eax, 16
and eax,000000FFh
mov [wayld], eax
 
shr ecx, 24
mov [L1d], ecx
shr ecx, 24
mov [L1d], ecx
 
movzx eax, dl
mov [lineli], eax
movzx eax, dl
mov [lineli], eax
 
mov eax, edx
mov eax, edx
 
shr eax, 16
and eax,000000FFh
mov [wayli], eax
shr eax, 16
and eax,000000FFh
mov [wayli], eax
 
shr edx, 24
mov [L1i], edx
shr edx, 24
mov [L1i], edx
 
 
;CACHE2:
mov eax, 80000006h
cpuid
mov eax, 80000006h
cpuid
 
cmp [f], $6
jz vn
jmp vl2old ; if not then old identification
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
cmp [m],$9
jl vl2old
; else new
movzx eax, cl
mov dword[linel2], eax
 
mov eax, ecx
shl eax, 16
shr eax, 28
mov eax, ecx
shl eax, 16
shr eax, 28
 
mov dword[wayl2], eax
mov dword[wayl2], eax
 
shr ecx, 16 ; it is 16 bits now
mov [L2],ecx
shr ecx, 16 ; it is 16 bits now
mov [L2],ecx
 
 
 
vl2old:
movzx eax, cl
mov dword[linel2], eax
movzx eax, cl
mov dword[linel2], eax
 
mov eax, ecx
shl eax, 8
shr eax, 24
mov eax, ecx
shl eax, 8
shr eax, 24
 
mov dword[wayl2], eax
mov dword[wayl2], eax
 
shr ecx, 24 ; it was 8 bits earlier
mov [L2],ecx
shr ecx, 24 ; it was 8 bits earlier
mov [L2],ecx
 
 
cmp [f], $5
jz fivC
cmp [f], $6
jz sixC
cmp [f], $5
jz fivC
cmp [f], $6
jz sixC
 
fivC: ;Family=5
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
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
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
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
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
mov [micron], 25
mov edx,V59
mov esi,V59len-V59
jmp OutProcName
 
sixC: ;Family=6
sixC: ;Family=6
 
mov esi, via
call load_gif
PutImage 135,107,201,49,img_area+8
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
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
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
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
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
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
mov [micron], 9
mov edx,VA
mov esi,VAlen-VA
jmp OutProcName
;-----------
Transmeta:
 
Text 15, 190,0x00000000,cache, cachelen-cache
Text 15, 190,0x00000000,cache, cachelen-cache
 
Text 75,70,,Tranmsmetan, Tranmsmetanlen-Tranmsmetan
mov esi, Tranmsmetan
mov edi, saveproc
call concatname
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
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
mov eax, 80000005h
cpuid
 
movzx eax, cl
mov [lineld], eax
movzx eax, cl
mov [lineld], eax
 
mov eax, ecx
mov eax, ecx
 
shr eax,16
and eax,000000FFh
mov [wayld], eax
shr eax,16
and eax,000000FFh
mov [wayld], eax
 
shr ecx, 24
mov [L1d], ecx
shr ecx, 24
mov [L1d], ecx
 
movzx eax, dl
mov [lineli], eax
movzx eax, dl
mov [lineli], eax
 
mov eax, edx
mov eax, edx
 
shr eax, 16
and eax,000000FFh
mov [wayli], eax
shr eax, 16
and eax,000000FFh
mov [wayli], eax
 
shr edx, 24
mov [L1i], edx
shr edx, 24
mov [L1i], edx
 
 
;CACHE2:
mov eax, 80000006h
cpuid
mov eax, 80000006h
cpuid
 
movzx eax, cl
mov dword[linel2], eax
movzx eax, cl
mov dword[linel2], eax
 
mov eax, ecx
shl eax, 16
shr eax, 28
mov eax, ecx
shl eax, 16
shr eax, 28
 
mov dword[wayl2], eax
mov dword[wayl2], eax
 
shr ecx, 16
mov [L2],ecx
shr ecx, 16
mov [L2],ecx
 
 
cmp [f], $5
jz .fivt
cmp [f], $F
jz .fift
.fivt: ; Family=5
cmp [f], $5
jz .fivt
cmp [f], $F
jz .fift
.fivt: ; Family=5
 
mov edx,T5
mov esi,T5len-T5
jmp @f
mov edx,T5
mov esi,T5len-T5
jmp @f
 
.fift: ; Family=F
mov edx,TF
mov esi,TFlen-TF
.fift: ; Family=F
mov edx,TF
mov esi,TFlen-TF
@@:
mov [micron], 13 ;
Text 140,70,0
jmp MMXtest
mov [micron], 13 ;
Text 140,70,0
jmp MMXtest
 
OutProcName:
Text 100,70,0
Text 100,70,0
 
;----
;---------------------------------- new
Vortex:
 
Text 15, 190,0x00000000,cache, cachelen-cache
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
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
cmp [f], $5
jz .V54 ;fivvtx
;.fivvtx: ;Family=5
; cmp [m],$4
; jz .V54
; 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
;Text 110,70,0x00000000,V54, V54len-V54
jmp MMXtest
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
MMXtest: ; MMX test and Brand ID decoding
 
call decodebrand ; get Brand ID
call decodebrand ; get Brand ID
 
call decode_standard_features
call decode_standard_features
 
call decode_extended_features
xor eax,eax
inc eax
cpuid
call decode_extended_features
 
xor eax,eax
inc eax
cpuid
HTTtest:
test edx, $10000000; ;Test bit 28
jz .ELN
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)
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
mov dword [HTTn+9], $736579
mov dword [HTT+ 6], $736579
jmp TEXTOUT
.ELN:
 
mov dword [HTTn+ 9], $6F6E
mov dword [HTT+ 6], $6F6E
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
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
xor edx, edx
cmp [smallvendor], 'ntel'
; je @f ;recent change
jne .t
 
.t:
 
mov eax, $80000001 ;// Setup extended function 8000_0001h
cpuid
mov eax, $80000001 ;// Setup extended function 8000_0001h
cpuid
 
test edx, $80000000 ;// Test bit 31
jnz .XIT
test edx, $80000000 ;// Test bit 31
jnz .XIT
 
.NOEXTENDED: ;// 3DNow! technology is supported
mov dword [now+ 9], $6F6E
jmp TEST3DNOWP
mov dword [now+ 9], $6F6E
jmp TEST3DNOWP
.XIT:
mov dword [now+ 9], $736579
jmp TEST3DNOWP
mov dword [now+ 9], $736579
jmp TEST3DNOWP
 
TEST3DNOWP:
 
cmp [smallvendor], 'ntel'
je .NOEXTENDEDP
cmp [smallvendor], 'ntel'
je .NOEXTENDEDP
 
.tp:
 
mov eax, $80000001 ;// Setup extended function 8000_0001h
cpuid
mov eax, $80000001 ;// Setup extended function 8000_0001h
cpuid
 
test edx, $40000000 ;// Test bit 30
jnz .XITP ;// 3DNow! technology is supported
test edx, $40000000 ;// Test bit 30
jnz .XITP ;// 3DNow! technology is supported
 
.NOEXTENDEDP:
mov dword [nowp+ 9], $6F6E
jmp TESTMMXP
mov dword [nowp+ 9], $6F6E
jmp TESTMMXP
.XITP:
mov dword [nowp+ 9], $736579
jmp TESTMMXP
mov dword [nowp+ 9], $736579
jmp TESTMMXP
 
 
TESTMMXP:
 
mov eax,$80000000
cpuid
mov eax,$80000000
cpuid
 
test eax, 80000000h
jna NOEXTENDEDM
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
;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
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
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
mov dword [mmxp+ 7], $6F6E
mov dword [MMXPi+ 8], $6F6E
jmp text3d
XITM:
mov dword [mmxp+ 7], $736579
mov dword [MMXPi+ 8], $736579
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 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
jmp still
 
;--------------------------
NO_CPUID:
mov [nocpuid], 1
Text 15,50,0x00000000,oblom, oblomlen-oblom
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:
nop
jmp FREEZE ; maybe we should close application or just made some Warning and jump to still:
;----------------
still:
 
1977,331 → 1965,303
; waiting for events
event_wait:
 
;================_RAM_==============
Number 200,350,0,4,dword [ram_size_a],0xFFFFFF ;Number 200,340,0,4,dword [ram_size_a],0xFFFFFF
mov eax,23 ; function 23 - event wait
mov ebx,50 ; wait for 0.5 second
mcall
 
mov eax, 18
mov ebx, 16
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
 
shr eax, 10
cmp ah,2 ; = 2 ?
je thread_start ;
 
mov [ram_size_a], eax
cmp ah, 3
je call_OpenDialog
 
mov eax, 18
mov ebx, 17
mcall
mov eax,11 ; function 23 - event wait
mov ebx,1
mcall
 
shr eax, 10
mov eax,15 ; function 23 - event wait
mov ebx,3
mcall
 
mov [ram_size_t], eax
 
Text 115,350,0x00000000,ram, ramlen-ram
Number 200,350,0,4,dword [ram_size_a],0x000000
Number 270,350,,,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
je red2
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
jne still
 
close:
mov eax,-1
mcall
mov eax,-1
mcall
 
;**************************** THREAD-SECOND WINDOW
thread_start:
 
cmp [num_win2],0
cmp [num_win2],0
jne still
 
jne still
 
;================================================RSA test
 
;test rsa coding speed
call init_test
call init_test
;length of module - 256 bit
mov eax,26
mov ebx,9
mcall
add eax,100 ;test lasts 1 second.
push eax
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.
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
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
mov [num_win2],1
call draw_window_2
 
still_2:
 
mov eax,10
mcall
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
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 ;
jmp still_2 ;
 
key_2: ;
mcall ;
jmp still_2 ;
key_2: ;
mcall ;
jmp still_2 ;
 
button_2: ;
mov eax,17 ; 17
mcall ;
button_2: ;
mov eax,17 ; 17
mcall ;
 
cmp ah,1 ; = 1 ?
jne still_2 ; noclose
cmp ah,1 ; = 1 ?
jne still_2 ; noclose
 
mov [num_win2],0 ;
mov [num_win2],0 ;
 
or eax,-1 ;
mcall
or eax,-1 ;
mcall
 
 
draw_window_2:
 
;call prepare_text_area
;call prepare_text_area
 
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,1h ; 1, start of draw
mcall
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
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, 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, 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, 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,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,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,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,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,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
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
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
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,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 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,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,335,0x00000000,EAS, EASlen-EAS
 
Text 115,375,0x00000000,DNP, DNPlen-DNP
Text 115,375,0x00000000,DNP, DNPlen-DNP
 
 
Text 315,375,0x00000000,SSE5, SSE5len-SSE5
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 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,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_
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
DrawLine 10, 400, 430,430,0x8080FF ;10
 
Text 15,415,0x00000000,speed, speedlen-speed
Text 130,415,,kbpersec, kbperseclen-kbpersec
Text 15,415,0x00000000,speed, speedlen-speed
Text 130,415,,kbpersec, kbperseclen-kbpersec
 
DrawLine 10, 80, 400, 400, 0x8080FF
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
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
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
; 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 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 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
; 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
mov eax,12
mov ebx,2h
mcall
 
ret
ret
 
linelen dd 0
currentcpu db 'Current CPU',0
2315,773 → 2275,754
ptsstring db ''
num_win2 db 0
 
; ******* main window *******
 
draw_window:
mov eax,12
mov ebx,1h
mcall
mcall SF_REDRAW, SSF_BEGIN_DRAW
 
Window 150,150,350,430, 0x34FFFFFF, 0x805080d0, title
; place size
Window 150, 150, 350, 405, 0x34FFFFFF, 0x805080d0, title
 
Button 15,345,92,23,2+0x40000000,0x03FFFFFF ; button "press for more"
mov esi, [sc.work_button]
DefineButton 138, 345, 92, 24, 2,
DefineButton 238, 345, 92, 24, 3,
 
mov esi, knopka
mov edi, img_area2
call ReadGIF
PutImage 15,345,93,24,img_area2+8 ; image "press for more"
; place size
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
 
Button 15,380,92,23,3+0x40000000,0x03FFFFFF ; button "save"
cmp dword[smallvendor], 'cAMD'
jne cont
cmp [f], $6
jne cont
 
mov esi, knopka2
mov edi, img_area3
call ReadGIF
PutImage 15,380,93,24,img_area3+8 ; image "save"
; place size
; Button 240,85,69,15,3,0x030000FF ; button for rating
; Text 245,90,0x00FFFFFF,FR, FRlen-FR ; text at button
 
mov eax,12
mov ebx,2h
mcall
call newrating; !!!!
 
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
cont:
;Number 82,50,0,4,dword [total],0x000000; MHz
mov esi, total
mov edi, tsum + 0xB ;0xA
call savenumber
 
cmp dword[smallvendor], 'cAMD'
jne cont
cmp [f], $6
jne cont
;Number 110,50,0,2,dword [sot]; KHz
mov esi, sot
mov edi, tsum + 0x10
call savenumber
 
; Button 240,85,69,15,3,0x030000FF ; button for rating
; Text 245,90,0x00FFFFFF,FR, FRlen-FR ; text at button
;Number 75,110,1*256,1,dword [f],0x000000 ;
mov esi, f
mov edi, fam + 0x8 ;0x9
call savenumber
 
call newrating; !!!!
;Number 75,130,,,dword [m]
mov esi, m
mov edi, mode + 0x7
call savenumber
 
cont:
Text 15,50,0x00000000,tsum, tsumlen-tsum ;
;Number 75,150,,,dword [s]
mov esi, s
mov edi, step + 0xa ;0x9
call savenumber
 
;Number 82,50,0,4,dword [total],0x000000; MHz
mov esi, total
mov edi, tsum + 0xB ;0xA
call savenumber
;Number 110,110,1*256,2,dword [ef]
mov esi, ef
mov edi, fam + 0xE ;0x9
call savenumber
 
;Number 110,50,0,2,dword [sot]; KHz
mov esi, sot
mov edi, tsum + 0x10
call savenumber
;Number 110,130,,,dword [em]
mov esi, em
mov edi, mode + 0xE ;0xD
call savenumber
 
;Number 75,110,1*256,1,dword [f],0x000000 ;
mov esi, f
mov edi, fam + 0x8 ;0x9
call savenumber
mov esi, multb
mov edi, multil + 0xB
call savenumber
 
;Number 75,130,,,dword [m]
mov esi, m
mov edi, mode + 0x7
call savenumber
;Number 105,30,0,1,dword [multa]
mov esi, multa
mov edi, multil + 0xf
call savenumber
 
;Number 75,150,,,dword [s]
mov esi, s
mov edi, step + 0xa ;0x9
call savenumber
;Number 140,170,0,2,dword [wayld],0x000000
mov esi, wayld
mov edi, cache2 + 0x14 ;0x14
call savenumber
 
;Number 110,110,1*256,2,dword [ef]
mov esi, ef
mov edi, fam + 0xE ;0x9
call savenumber
;Number 218,170,,,dword [lineld]
mov esi, lineld
mov edi, cache2 + 0x21
call savenumber
 
;Number 110,130,,,dword [em]
mov esi, em
mov edi, mode + 0xE ;0xD
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
 
mov esi, multb
mov edi, multil + 0xB
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 105,30,0,1,dword [multa]
mov esi, multa
mov edi, multil + 0xf
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
 
;Number 140,170,0,2,dword [wayld],0x000000
mov esi, wayld
mov edi, cache2 + 0x14 ;0x14
call savenumber
mov esi, L1d
mov edi, cache2 + 0xa
call savenumber
 
;Number 218,170,,,dword [lineld]
mov esi, lineld
mov edi, cache2 + 0x21
call savenumber
;Number 75,190,,,dword [ L1i]
mov esi, L1i
mov edi, cache + 0xa
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 41,210,0,4,dword[L2]
mov esi, L2
mov edi, cache3 + 0x4 ;0x3
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 35,230,0,5,dword[L3]
mov esi, L3
mov edi, cache4 + 0x4 ;0x3
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
;-----------Features
;Number 258,50,0,2,dword [micron] ; micron
mov esi, micron
mov edi, tech + 0xE
call savenumber
 
mov esi, L1d
mov edi, cache2 + 0xa
call savenumber
mov esi, stdc
mov edi, STDCA + 0x14
call savenumber
 
;Number 75,190,,,dword [ L1i]
mov esi, L1i
mov edi, cache + 0xa
call savenumber
;Number 335,10,,,dword [extc],
mov esi, extc
mov edi, EXTCA + 0x14
call savenumber
 
;Number 41,210,0,4,dword[L2]
mov esi, L2
mov edi, cache3 + 0x4 ;0x3
call savenumber
Text 15,90,,cpuname, cpunamelen-cpuname;
Text 255,250,,typen, typenlen-typen
Text 175, 50,,tech, techlen-tech;
 
;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
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 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
mov ebx, 290*65536 + 250
mov ecx, 0x80000000
mcall 4
 
Text 15,250,,brandid, brandidlen-brandid
Text 15,250,,brandid, brandidlen-brandid
 
Text 15,110,0x00000000,fam, famlen-fam
Text 15,130,0x00000000,mode, modelen-mode
Text 15,150,0x00000000,step, steplen-step
Text 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 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 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 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 95,290,,mmxp, mmxplen-mmxp
Text 15,330,0x00000000,now, nowlen-now
Text 95,330,,nowp, nowplen-nowp
 
Text 115,350,0x00000000,ram, ramlen-ram
Number 200,350,0,4,dword [ram_size_a],0x000000
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
 
Number 270,350,0,4,dword [ram_size_t]
Text 300,350,0x00000000,mb, mblen-mb
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]
 
Text 15, 190,0x00000000,cache, cachelen-cache
Text 15,170,0x00000000,cache2, cache2len-cache2
Text 15,210,,cache3, cache3len-cache3
Text 15,230,,cache4, cache4len-cache4
Text 110,70,0x00000000,dword[cname], 40
call load_gif
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
 
cmp [nomultiplier], $1
je nomultip
Text 15,30,0x00000000,multil2, multil2len-multil2
Text 175,30,0x00000000,freql2, freql2len-freql2
Number 85,30,0,2,dword [multb],0x000000;
Number 105,30,0,1,dword [multa]
Number 259,30,0,4,dword [freqbb]
Number 289,30,0,2,dword [freqll]
 
JumpForCodename:
cmp [codeN], $1
je codeNIntel
cmp [codeN], $2
je codeNAMD
cmp [codeN], $3
je codeNCyrix
cmp [codeN], $4
je codeNCentaur
cmp [codeN],$5
je codeNTransmeta
cmp [codeN], $6
je codeNVortex
 
codeNIntel:
Text 75,70,0x00000000,Inteln, Intelnlen-Inteln
mov esi, intel
call load_gif
PutImage 135,107,201,49,img_area+8
jmp nnn
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
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
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
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
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
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
Text 15,30,0x00000000,multi3, multi3len-multi3
Text 175,30,0x00000000,freql3, freql3len-freql3
Text 259,30,0x00000000, clock0, clock0len-clock0
 
jmp JumpForCodename
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,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
Text 15,250,,brandid, brandidlen-brandid
 
ret ;
mcall SF_REDRAW, SSF_END_DRAW
 
ret ;
 
call_OpenDialog:
 
mov [OpenDialog_data.type],1 ; Save
mov [OpenDialog_data.type],1 ; Save
 
push dword OpenDialog_data
call [OpenDialog_Start]
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],2 ; OpenDialog does not start
je .save_file_default_path
 
cmp [OpenDialog_data.status],1
jne still
cmp [OpenDialog_data.status],1
jne still
 
call store_data
jmp 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
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
xor eax,eax
cld
@@:
lodsb
stosb
test eax,eax
jnz @r
ret
lodsb
stosb
test eax,eax
jnz @r
ret
 
;-----------------------------------------------------------------------------
prepare_text_area:
mov edi,[store_text_area_start]
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
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,title
call addstring
 
mov esi, stm
call addstring
mov esi, stm
call addstring
 
mov esi, myname
call addstring
mov esi, myname
call addstring
 
cmp [nomultiplier], $1
je noMult
jne detMulti
;jne detFreq
cmp [nomultiplier], $1
je noMult
jne detMulti
;jne detFreq
 
detMulti:
mov esi,multil
call addstring
jmp detFreq
detMulti:
mov esi,multil
call addstring
jmp detFreq
 
detFreq:
mov esi, freql
call addstring
detFreq:
mov esi, freql
call addstring
 
noMult:
mov esi,multi3
call addstring
noMult:
mov esi,multi3
call addstring
 
mov esi,freql3
call addstring
mov esi,freql3
call addstring
 
mov esi, tech
call addstring
mov esi, tech
call addstring
 
mov esi, saveproc
call addstring
mov esi, saveproc
call addstring
 
mov esi, cpuname
call addstring
mov esi, cpuname
call addstring
 
mov esi, fam
call addstring
mov esi, fam
call addstring
 
mov esi, mode
call addstring
mov esi, mode
call addstring
 
mov esi, step
call addstring
mov esi, step
call addstring
 
mov esi, cache2
call addstring
mov esi, cache2
call addstring
 
mov esi, cache
call addstring
mov esi, cache
call addstring
 
mov esi, cache3
call addstring
mov esi, cache3
call addstring
 
mov esi, cache4
call addstring
mov esi, cache4
call addstring
 
mov esi, brandid
call addstring
mov esi, brandid
call addstring
 
mov esi, MMXs
call addstring
mov esi, MMXs
call addstring
 
mov esi, mmxp
call addstring
mov esi, mmxp
call addstring
 
mov esi, now
call addstring
mov esi, now
call addstring
 
mov esi, HTT
call addstring
mov esi, HTT
call addstring
 
mov esi, SSE
call addstring
mov esi, SSE
call addstring
 
mov esi, SSE41
call addstring
mov esi, SSE41
call addstring
 
mov esi, SSE42
call addstring
mov esi, SSE42
call addstring
 
mov esi, SSE5
call addstring
mov esi, SSE5
call addstring
 
mov esi, SSE2
call addstring
mov esi, SSE2
call addstring
 
mov esi, nowp
call addstring
mov esi, nowp
call addstring
 
mov esi, sse3
call addstring
mov esi, sse3
call addstring
 
mov esi, standard
call addstring
mov esi, standard
call addstring
 
mov esi, STDCA
call addstring
mov esi, STDCA
call addstring
 
mov esi, EXTCA
call addstring
mov esi, EXTCA
call addstring
 
mov esi, FPU
call addstring
mov esi, FPU
call addstring
 
mov esi, VME
call addstring
mov esi, VME
call addstring
 
mov esi, DE
call addstring
mov esi, DE
call addstring
 
mov esi, PSE
call addstring
mov esi, PSE
call addstring
 
mov esi, TSC
call addstring
mov esi, TSC
call addstring
 
mov esi, MSR
call addstring
mov esi, MSR
call addstring
 
mov esi, PAE
call addstring
mov esi, PAE
call addstring
 
mov esi, MCE
call addstring
mov esi, MCE
call addstring
 
mov esi, CX8
call addstring
mov esi, CX8
call addstring
 
mov esi, APIC
call addstring
mov esi, APIC
call addstring
 
mov esi, Res
call addstring
mov esi, Res
call addstring
 
mov esi, SEP
call addstring
mov esi, SEP
call addstring
 
mov esi, MTRR
call addstring
mov esi, MTRR
call addstring
 
mov esi, PGE
call addstring
mov esi, PGE
call addstring
 
mov esi, MCA
call addstring
mov esi, MCA
call addstring
 
mov esi, CMOV
call addstring
mov esi, CMOV
call addstring
 
mov esi, PAT
call addstring
mov esi, PAT
call addstring
 
mov esi, PSE36
call addstring
mov esi, PSE36
call addstring
 
mov esi, PSNUM
call addstring
mov esi, PSNUM
call addstring
 
mov esi, CLFLUSHn
call addstring
mov esi, CLFLUSHn
call addstring
 
mov esi, Res
call addstring
mov esi, Res
call addstring
 
mov esi, DTS
call addstring
mov esi, DTS
call addstring
 
mov esi, ACPI
call addstring
mov esi, ACPI
call addstring
 
mov esi, MMX
call addstring
mov esi, MMX
call addstring
 
mov esi, FXSR
call addstring
mov esi, FXSR
call addstring
 
mov esi, SSE
call addstring
mov esi, SSE
call addstring
 
 
mov esi, SSn
call addstring
mov esi, SSn
call addstring
 
mov esi, HTT
call addstring
mov esi, HTT
call addstring
 
mov esi, TM
call addstring
mov esi, TM
call addstring
 
mov esi, IA64
call addstring
mov esi, IA64
call addstring
 
mov esi, PBE
call addstring
mov esi, PBE
call addstring
 
mov esi, SS3
call addstring
mov esi, SS3
call addstring
 
mov esi, CNXT_ID
call addstring
mov esi, CNXT_ID
call addstring
 
mov esi, MP
call addstring
mov esi, MP
call addstring
 
mov esi, FFXSR
call addstring
mov esi, FFXSR
call addstring
 
mov esi, MON
call addstring
mov esi, MON
call addstring
 
mov esi, CX16
call addstring
mov esi, CX16
call addstring
 
mov esi, NX
call addstring
mov esi, NX
call addstring
 
mov esi, TSCP
call addstring
mov esi, TSCP
call addstring
 
mov esi, DS_CPL
call addstring
mov esi, DS_CPL
call addstring
 
mov esi, ETPRD
call addstring
mov esi, ETPRD
call addstring
 
mov esi, MMXPi
call addstring
mov esi, MMXPi
call addstring
 
mov esi, LM
call addstring
mov esi, LM
call addstring
 
mov esi, EST
call addstring
mov esi, EST
call addstring
 
mov esi, SYS
call addstring
mov esi, SYS
call addstring
 
mov esi, MMXn
call addstring
mov esi, MMXn
call addstring
 
mov esi, DNo
call addstring
mov esi, DNo
call addstring
 
mov esi, TM2
call addstring
mov esi, TM2
call addstring
 
mov esi, LAF
call addstring
mov esi, LAF
call addstring
 
mov esi, FFXSR
call addstring
mov esi, FFXSR
call addstring
 
mov esi, DN
call addstring
mov esi, DN
call addstring
 
mov esi, VMX
call addstring
mov esi, VMX
call addstring
 
mov esi, SSSE3
call addstring
mov esi, SSSE3
call addstring
 
mov esi, DCA
call addstring
mov esi, DCA
call addstring
 
mov esi, CMPL
call addstring
mov esi, CMPL
call addstring
 
mov esi, SVM
call addstring
mov esi, SVM
call addstring
 
mov esi, MCR8
call addstring
mov esi, MCR8
call addstring
 
mov esi, SMX
call addstring
mov esi, SMX
call addstring
 
mov esi, x2APIC
call addstring
mov esi, x2APIC
call addstring
 
mov esi, PPCNT
call addstring
mov esi, PPCNT
call addstring
 
mov esi, PAGE
call addstring
mov esi, PAGE
call addstring
 
mov esi, EAS
call addstring
mov esi, EAS
call addstring
 
mov esi, ABM
call addstring
mov esi, ABM
call addstring
 
mov esi, MIS
call addstring
mov esi, MIS
call addstring
 
mov esi,OSVW
call addstring
mov esi,OSVW
call addstring
 
mov esi,SKINIT_
call addstring
mov esi,SKINIT_
call addstring
 
mov esi, WDT
call addstring
mov esi, WDT
call addstring
 
ret
ret
 
addstring:
mov edi, [store_text_area_end]
xor eax, eax
xor ecx, ecx
cld
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
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
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
xor eax, eax
cld
lodsw
call numbertostring
xor esi, esi
xor edi, edi
 
ret
ret
 
savestring:
xor eax, eax
cld
lodsw
;call numbertostring
xor esi, esi
xor edi, edi
xor eax, eax
cld
lodsw
;call numbertostring
xor esi, esi
xor edi, edi
 
ret
ret
 
numbertostring:
mov bx, 10
xor cx, cx
mov bx, 10
xor ecx, ecx
@@m1:
xor dx, dx
div bx
push dx
inc cx
test ax, ax
jnz @@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
pop ax
add al, '0'
stosb
loop @@m2
ret
 
concatname:
;mov edi, [saveproc]
xor eax, eax
xor ecx, ecx
cld
;mov edi, [saveproc]
xor eax, eax
xor ecx, ecx
cld
@@:
lodsb
stosb
cmp [esi], byte 0x0
jnz @r
lodsb
stosb
cmp [esi], byte 0x0
jnz @r
 
xor edi,edi
xor esi, esi
ret
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
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
mov edi, img_area
jmp ReadGIF
 
 
; DATA AREA
 
title db 'CPUID 2.29 by S.Kuzmin & the KolibriOS team',0
title db 'CPUID 2.31',0
 
stm:
db 'Internal name:', 0
3089,60 → 3030,60
stmlen:
 
SS42:
db 'SSE4.2: ',0
db 'SSE4.2: ',0
SS42len:
 
SMX:
db 'SMX: ',0
db 'SMX: ',0
SMXlen:
 
x2APIC:
db 'x2APIC: '
db 'x2APIC: '
x2APIClen:
 
PPCNT:
db 'POPCNT: '
db 'POPCNT: '
PPCNTlen:
 
PAGE:
db 'Page1Gb: '
db 'Page1Gb: '
PAGElen:
 
EAS:
db 'EAS: ',0
db 'EAS: ',0
EASlen:
 
newLabel:
db '3DNP: ',0
db '3DNP: ',0
newLabellen:
 
 
ABM:
db 'ABM: '
db 'ABM: '
ABMlen:
 
SSE4A:
db 'SSE4A: '
db 'SSE4A: '
SSE4Alen:
 
MIS:
db 'MIS: ',0
db 'MIS: ',0
MISlen:
 
DNP:
db '3DNP: '
db '3DNP: '
DNPlen:
 
OSVW:
db 'OSVW: ',0
db 'OSVW: ',0
OSVWlen:
 
SKINIT_:
db 'SKINIT: ',0
db 'SKINIT: ',0
SKINIT_len:
 
WDT:
db 'WDT: ',0
db 'WDT: ',0
WDTlen:
 
 
3150,13 → 3091,13
db ' ',0
 
multil:
db 'Multiplier: . ', 0
db 'Multiplier: . ', 0
 
multillen:
 
multil2:
 
db 'Multiplier .'
db 'Multiplier: . '
 
multil2len:
 
3173,7 → 3114,7
 
freql2:
 
db 'System clock . MHz'
db 'System clock: . MHz'
 
 
freql2len:
3187,13 → 3128,13
 
tsum:
 
db 'Frequency: . MHz ',0
db 'Frequency: . MHz ',0
 
tsumlen:
 
tech:
 
db 'Technology: 0. micron ', 0
db 'Technology: 0. micron ', 0
 
techlen:
 
3201,11 → 3142,11
 
if lang eq it
 
db 'Codename:',0
db 'Codename:',0
 
else
 
db 'CODENAME:',0
db 'CODENAME:',0
 
 
end if
3216,11 → 3157,11
 
if lang eq it
 
db 'Vendor CPU ', 0
db 'Vendor CPU ', 0
 
else
 
db 'CPU VENDOR: ', 0
db 'CPU VENDOR: ', 0
 
end if
 
3230,11 → 3171,11
 
if lang eq it
 
db 'Vendor CPU ', 0
db 'Vendor CPU ', 0
 
else
 
db 'CPU VENDOR: ', 0
db 'CPU VENDOR: ', 0
 
end if
 
3245,11 → 3186,11
 
if lang eq it
 
db 'Famiglia: std ext', 0
db 'Famiglia: std ext', 0
 
else
 
db 'FAMILY: std ext', 0
db 'FAMILY: std ext', 0
 
end if
 
3259,11 → 3200,11
 
if lang eq it
 
db 'Modello: std ext', 0
db 'Modello: std ext', 0
 
else
 
db 'MODEL: std ext', 0
db 'MODEL: std ext', 0
 
end if
 
3273,11 → 3214,11
 
if lang eq it
 
db 'Stepping: ', 0
db 'Stepping: ', 0
 
else
 
db 'STEPPING: ', 0
db 'STEPPING: ', 0
 
end if
 
3285,13 → 3226,13
 
cache:
 
db 'L1(inst): KB -way set -byte line size',0
db 'L1(inst): KB -way set -byte line size',0
 
cachelen:
 
cache2:
 
db 'L1(data): KB -way set -byte line size',0
db 'L1(data): KB -way set -byte line size',0
 
cache2len:
 
3298,7 → 3239,7
 
cache3:
 
db 'L2: KB -way set -byte line size',0
db 'L2: KB -way set -byte line size',0
 
cache3len:
 
3310,13 → 3251,13
 
brandid:
 
db 'Brand:', 0
db 'Brand:', 0
 
brandidlen:
 
MMXs:
 
db 'MMX: ',0
db 'MMX: ',0
 
MMXslen:
 
3329,28 → 3270,6
 
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',0
3379,11 → 3298,11
 
if lang eq it
 
; db 'Performance',0
; db 'Performance',0
 
else
 
; db 'PERFORMANCE:',0
; db 'PERFORMANCE:',0
 
end if
 
3403,11 → 3322,11
 
if lang eq it
 
db 'Set istruzioni'
db 'Set istruzioni'
 
else
 
db 'Instruction sets'
db 'Instruction sets'
 
end if
 
3420,7 → 3339,7
 
STDCA:
 
db 'Highest STD call is ',0
db 'Highest STD call is ',0
 
STDCAlen:
 
3428,7 → 3347,7
 
EXTCA:
 
db 'Highest EXT call is h',0
db 'Highest EXT call is h',0
 
EXTCAlen:
 
3437,11 → 3356,11
 
if lang eq it
 
db 'CPUID non e disponibile'
db 'CPUID non e disponibile'
 
else
 
db 'SORRY, CPUID IS NOT AVAILABLE'
db 'SORRY, CPUID IS NOT AVAILABLE'
 
end if
 
3452,11 → 3371,11
 
if lang eq it
 
db 'Questo vendor non e supportato'
db 'Questo vendor non e supportato'
 
else
 
db 'SORRY, THIS VENDOR IS NOT SUPPORTED YET'
db 'SORRY, THIS VENDOR IS NOT SUPPORTED YET'
 
end if
 
3464,7 → 3383,7
 
cacheP4:
 
db 'L1(inst): Kuops -way set -byte line size'
db 'L1(inst): Kuops -way set -byte line size'
 
cacheP4len:
 
3475,11 → 3394,11
 
if lang eq it
 
db 'Tipo:'
db 'Tipo:'
 
else
 
db 'Type:'
db 'Type:'
 
end if
 
3500,19 → 3419,19
 
AMDn:
 
db 'AMD',0
db 'AMD',0
 
AMDnlen:
 
AMDnNew:
 
db 'CODENAME: AMD',0
db 'CODENAME: AMD',0
 
AMDnNewlen:
 
Inteln:
 
db 'Intel',0
db 'Intel',0
 
Intelnlen:
 
3524,19 → 3443,19
 
Cyrixn:
 
db 'Cyrix',0
db 'Cyrix',0
 
Cyrixnlen:
 
IDTn:
 
db 'IDT/Centaur',0
db 'IDT/Centaur',0
 
IDTnlen:
 
Centaurn:
 
db 'VIA',0
db 'VIA',0
 
Centaurnlen:
 
3544,19 → 3463,19
 
Tranmsmetan:
 
db 'Transmeta',0
db 'Transmeta',0
 
Tranmsmetanlen:
 
 
Vortexn:
db 'Vortex86',0
db 'Vortex86',0
Vortexnlen:
 
 
mmxp:
 
db 'MMX+: ',0
db 'MMX+: ',0
 
mmxplen:
 
3564,7 → 3483,7
 
HTT:
 
db 'HTT: ',0
db 'HTT: ',0
 
HTTlen:
 
3571,7 → 3490,7
 
HTTn:
 
db 'HTT: ',0
db 'HTT: ',0
 
HTTnlen:
 
3578,43 → 3497,43
 
sse3:
 
db 'SSE3: ',0
db 'SSE3: ',0
 
sse3len:
 
SSE41:
db 'SSE4.1: ',0
db 'SSE4.1: ',0
SSE41len:
 
SSE42:
db 'SSE4.2: ',0
db 'SSE4.2: ',0
SSE42len:
 
SSE5:
db 'SSE5: ',0
db 'SSE5: ',0
SSE5len:
 
now:
 
db '3DNOW!: ',0
db '3DNOW!: ',0
 
nowlen:
 
nowp:
 
db '3DNOW!+: ',0
db '3DNOW!+: ',0
 
nowplen:
 
;-Type
 
t1 db 'OEM',0
t1 db 'OEM',0
 
t2 db 'Overdrive',0
t2 db 'Overdrive',0
 
t3 db 'Dual',0
t3 db 'Dual',0
 
t4 db 'Unknown',0
t4 db 'Unknown',0
 
 
 
3912,45 → 3831,45
 
;---------AMD
 
A50 db 'K5 (PR75, PR90, PR100)',0
A50 db 'K5 (PR75, PR90, PR100)',0
 
A51 db '5k86 (PR120, PR133)',0
A51 db '5k86 (PR120, PR133)',0
 
A52 db '5k86 (PR166)',0
A52 db '5k86 (PR166)',0
 
A53 db '5k86 (PR200)',0
A53 db '5k86 (PR200)',0
 
A56 db 'K6',0
A56 db 'K6',0
 
A57 db 'K6',0
A57 db 'K6',0
 
A58 db 'K6-2',0
A58 db 'K6-2',0
 
A59 db 'K6-III',0
A59 db 'K6-III',0
 
A5D db 'K6-2+ or K6-III+',0
A5D db 'K6-2+ or K6-III+',0
 
;-------------------
 
At1 db 'Athlon',0
At1 db 'Athlon',0
 
At2 db 'Athlon',0
At2 db 'Athlon',0
 
At3 db 'Duron (Spitfire)',0
At3 db 'Duron (Spitfire)',0
 
At4 db 'Athlon (Thunderbird)',0
At4 db 'Athlon (Thunderbird)',0
 
At6 db 'AthlonXP (Palomino)',0
At6 db 'AthlonXP (Palomino)',0
 
At7 db 'Duron (Morgan)',0
At7 db 'Duron (Morgan)',0
 
At8 db 'AthlonXP (Thoroughbred)',0
At8 db 'AthlonXP (Thoroughbred)',0
 
At8a db 'Duron (Applebred)',0
At8a db 'Duron (Applebred)',0
 
Ata db 'AthlonXP (Barton)',0
Ata db 'AthlonXP (Barton)',0
 
Atat db 'AthlonXP (Thorton)',0
Atat db 'AthlonXP (Thorton)',0
 
;-------------------
AthlonKuma:
4185,51 → 4104,51
 
NG:
 
db 'Next generation CPU',0
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
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
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
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
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
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)
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
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
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_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_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)
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
rd 4096+1 ;hash area size for unpacking gif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
 
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
 
err_message_import2 db 'proc_lib.obj - Wrong import!',0
err_message_import2 db 'proc_lib.obj - Wrong import!',0
 
head_f_i:
head_f_l db 'error',0
head_f_l db 'error',0
;---------------------------------------------------------------------
l_libs_start:
 
4240,93 → 4159,99
;---------------------------------------------------------------------
align 4
ProcLib_import:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
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
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
.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
.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
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
 
communication_area_name:
db 'FFFFFFFF_open_dialog',0
db 'FFFFFFFF_open_dialog',0
open_dialog_path:
db '/sys/File Managers/opendial',0
db '/sys/File Managers/opendial',0
communication_area_default_pach:
db '/sys',0
db '/sys',0
Filter:
dd Filter.end - Filter.1
dd Filter.end - Filter.1
.1:
db 'TXT',0
db 'LOG',0
db 'TXT',0
db 'LOG',0
.end:
dd 0
dd 0
 
file_default_path:
db '/sys/'
db '/sys/'
start_temp_file_name:
db 'CPUID.txt',0
 
db 'CPUID.txt',0
btn_more_cap:
db 'Details', 0
btn_save_cap:
db 'Save', 0
;---------------------------------------------------------------------
align 4
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
.subfunction dd 2
.Offset dd 0
.Offset_1 dd 0
.size dd 4096
.return dd 0
db 0
.name: dd file_name
 
store_text_area_start dd ?
store_text_area_end dd ?
store_text_size dd ?
align 4
sc system_colors
 
store_text_area_start dd ?
store_text_area_end dd ?
store_text_size dd ?
 
;---------------------------------------------------------------------
library_path:
rb 4096
rb 4096
;---------------------------------------------------------------------
path:
rb 4096
rb 4096
;---------------------------------------------------------------------
temp_dir_pach:
rb 4096
rb 4096
;---------------------------------------------------------------------
file_name:
rb 4096
rb 4096
;---------------------------------------------------------------------
file_name_1:
rb 4096
rb 4096
;---------------------------------------------------------------------
filename_area:
rb 256
rb 256
;---------------------------------------------------------------------
rb 4096
rb 4096
stacktop:
;---------------------------------------------------------------------
Proc_Info process_information
Proc_Info process_information
; RSA test data
align 4
num1 rd 40
/programs/system/cpuid/trunk/amd.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/programs/system/cpuid/trunk/cyrix.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/programs/system/cpuid/trunk/idt.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/programs/system/cpuid/trunk/intel.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/programs/system/cpuid/trunk/logos.inc
18,9 → 18,3
 
vortex:
file 'vortex.gif' ;include gif file
 
knopka:
file 'knopka.gif' ;include gif file
 
knopka2:
file 'knopka2.gif' ;gif button Save in file
/programs/system/cpuid/trunk/transmet.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/programs/system/cpuid/trunk/via.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/programs/system/cpuid/trunk/vortex.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream