1,3 → 1,66 |
;Addresses for bits |
|
FPU_FLAG equ 0001h ;Floating-point unit on-Chip |
VME_FLAG equ 0002h ;Virtual Mode Extension |
DE_FLAG equ 0004h ;Debugging Extension |
PSE_FLAG equ 0008h ;Page Size Extension |
TSC_FLAG equ 0010h ;Time-Stamp Counter |
MSR_FLAG equ 0020h ;Model Specific Registers |
PAE_FLAG equ 0040h ;Physical Address Extension |
MCE_FLAG equ 0080h ;Machine Check Exception |
CX8_FLAG equ 0100h ;CMPXCHG8 Instruction Supported |
APIC_FLAG equ 0200h ;On-chip APIC Hardware Supported |
;10_FLAG equ 0400h ;Reserved |
SEP_FLAG equ 0800h ;Fast System Call |
MTRR_FLAG equ 1000h ;Memory Type Range Registers |
PGE_FLAG equ 2000h ;Page Global Enable |
MCA_FLAG equ 4000h ;Machine Check Architecture |
CMOV_FLAG equ 8000h ;Conditional Move Instruction Supported |
PAT_FLAG equ 10000h ;Page Attribute Table |
PSE36_FLAG equ 20000h ;36-bit Page Size Extension |
PSNUM_FLAG equ 40000h ;Processor serial number present and enabled |
CLFLUSH_FLAG equ 80000h ;CLFLUSH Instruction supported |
;20_FLAG equ 100000h ;Reserved |
DTS_FLAG equ 200000h ;Debug Store |
ACPI_FLAG equ 400000h ;Thermal Monitor and Software Controlled Clock Facilities supported |
MMX_FLAG equ 800000h ;Intel Architecture MMX technology supported |
FXSR_FLAG equ 1000000h ;Fast floating point save and restore |
SSE_FLAG equ 2000000h ;Streaming SIMD Extensions supported |
SSE2_FLAG equ 4000000h ;Streaming SIMD Extensions 2 |
SS_FLAG equ 8000000h ;Self-Snoop |
;HTT_FLAG equ 10000000h ;Hyper-Threading Technology |
TM_FLAG equ 20000000h ;Thermal Monitor supported |
IA64_FLAG equ 40000000h ; IA-64 |
PBE_FLAG equ 80000000h ;Pending Break Enable |
|
; ecx cpuid(1) |
SSE3_FLAG equ 0001h ;SSE3 0 |
MON_FLAG equ 0008h ;MON -3 |
DS_CPL_FLAG equ 0010h ;DS-CPL -4 |
EST_FLAG equ 0080h ; EST-7 |
TM2_FLAG equ 0100h ; TM2-8 |
CNXT_ID_FLAG equ 0400h ;CID -10 |
CX16_FLAG equ 2000h ;CX16 - 13 |
ETPRD_FLAG equ 4000h ;xTPR - 14 |
|
; edx cpuid(8000_0001h) |
|
SYS_FLAG equ 0800h ;11 |
|
MP_FLAG equ 80000h ;19 |
NX_FLAG equ 100000h ;20 |
MMXPi_FLAG equ 400000h ;22 |
MMXn_FLAG equ 800000h ;23 |
FXSRn_FLAG equ 1000000h ;24 äëÿ Ñèðèêñ ýòî ÌÌÕ+ |
FFXSR_FLAG equ 2000000h ;25 |
TSCP_FLAG equ 8000000h ;27 |
LM_FLAG equ 20000000h ;29 |
DNo_FLAG equ 40000000h ;30 |
DN_FLAG equ 80000000h ;31 |
|
; ecx cpuid(8000_0001h) |
LAHF_FLAG equ 100000h ;Reserved |
|
; optimize the code for size |
macro add arg1,arg2 |
{ |
57,22 → 120,6 |
|
; Interface |
|
macro Window xStart,yStart,xSize,ySize,bColor,gColor,fColor |
{ |
mov ebx,xStart |
shl ebx,16 |
add ebx,xSize |
mov ecx,yStart |
shl ecx,16 |
add ecx,ySize |
mov edx,bColor |
mov esi,gColor |
mov edi,fColor |
xor eax,eax |
int 0x40 |
} |
|
|
;WriteTextToWindow |
macro Text xStart,yStart,rgbColor,pText,nTextLen |
{ |
89,7 → 136,6 |
;DisplayNumber |
macro Number xStart,yStart,nPrintType,noOfDigits,Data,rgbColor |
{ |
|
mov edx,xStart |
shl edx,16 |
add edx,yStart |
115,44 → 161,366 |
int 0x40 |
} |
|
macro PutImage xPos,yPos,xImage,yImage,pImage |
{ |
mov ecx,xImage |
shl ecx,16 |
add ecx, yImage |
mov edx,xPos |
shl edx,16 |
add edx,yPos |
mov ebx,pImage |
mov eax,7 |
int 0x40 |
} |
;////////////////////////////////////////////// |
; Decoding cache L1,L2,L3 for Intel |
|
macro Button xStart,yStart,xSize,ySize,nID,rgbColor |
{ |
mov ebx,xStart |
shl ebx,16 |
add ebx,xSize |
mov ecx,yStart |
shl ecx,16 |
add ecx,ySize |
mov edx,nID |
mov esi,rgbColor |
mov eax,8 |
int 0x40 |
} |
|
macro CreateTread EntryPoint,StackPos |
{ |
xor ebx,ebx |
inc ebx |
mov ecx,EntryPoint |
mov edx,StackPos |
mov eax,51 |
int 0x40 |
} |
decodecache: |
|
comp0: |
cmp al, 00h |
je L000 |
|
;-------L2 inst |
|
comp1: |
cmp al, 41h |
je L128 |
|
|
comp2: |
cmp al, 42h |
je L256 |
|
comp3: |
cmp al, 43h |
je L512 |
|
comp4: |
cmp al, 44h |
je L1024 |
|
|
comp5: |
cmp al, 45h |
je L2048 |
|
;------------L1 inst |
comp6: |
cmp al, 06h |
je Li8 |
|
|
comp7: |
cmp al, 08h |
je Li16 |
|
comp8: |
cmp al, 15h |
je Li16 |
|
comp9: |
cmp al, 77h |
je Li16 |
|
comp10: |
cmp al, 30h |
je Li32 |
;---------------L1 data |
comp11: |
cmp al, 0Ah |
je Ld8 |
|
comp12: |
cmp al, 66h |
je Ld8 |
|
comp13: |
cmp al, 0Ch |
je Ld16 |
|
comp14: |
cmp al, 10h |
je Ld16 |
|
comp15: |
cmp al, 67h |
je Ld16 |
|
comp16: |
cmp al, 2Ch |
je Ld32 |
|
comp17: |
cmp al, 68h |
je Ld32 |
|
;-------L2 |
comp18: |
cmp al, 39h |
je L128 |
|
comp19: |
cmp al, 3Bh |
je L128 |
|
comp20: |
cmp al, 79h |
je L128 |
|
comp21: |
cmp al, 81h |
je L128 |
|
comp22: |
cmp al, 3Ch |
je L256 |
|
comp23: |
cmp al, 7Ah |
je L256 |
|
comp24: |
cmp al, 7Eh |
je L256 |
|
comp25: |
cmp al, 82h |
je L256 |
|
comp26: |
cmp al, 7Bh |
je L512 |
|
comp27: |
cmp al, 83h |
je L512 |
|
comp28: |
cmp al, 86h |
je L512 |
|
comp29: |
cmp al, 7Ch |
je L1024 |
|
comp30: |
cmp al, 84h |
je L1024 |
|
comp31: |
cmp al, 87h |
je L1024 |
|
comp32: |
cmp al, 85h |
je L2048 |
|
;-----L1 Trace instr |
|
comp33: |
cmp al, 70h |
je Li12 |
|
comp34: |
cmp al, 71h |
je Li16 |
|
comp35: |
cmp al, 72h |
je Li32 |
|
;----New codes |
|
comp36: |
cmp al, 60h |
je Ld16 |
|
comp37: |
cmp al, 78h |
je L1024 |
|
comp38: |
cmp al, 7Dh |
je L2048 |
|
;---- L3 |
comp39: |
cmp al, 22h |
je L305 |
|
comp40: |
cmp al, 23h |
je L31 |
|
comp41: |
cmp al, 25h |
je L32 |
|
comp42: |
cmp al, 29h |
je L34 |
|
comp43: |
cmp al, 88h |
je L32 |
|
comp44: |
cmp al, 89h |
je L34 |
|
comp45: |
cmp al, 8Ah |
je L38 |
|
comp46: |
cmp al, 8Dh |
je L34 |
|
;============= v. 2.04 |
comp47: |
cmp al, 73h |
je Li64 |
|
comp48: |
cmp al, 1Ah |
je L96 |
|
comp49: |
cmp al, 3Ah |
je L192 |
|
comp50: |
cmp al, 3Dh |
je L384 |
|
comp51: |
cmp al, 3Eh |
je L512 |
|
comp52: |
cmp al, 7Fh |
je L512 |
|
comp53: |
cmp al, 46h |
je L34 |
|
comp54: |
cmp al, 47h |
je L38 |
|
comp55: |
cmp al, 49h |
je L34 |
|
comp56: |
cmp al, 4Ah |
je L36 |
|
comp57: |
cmp al, 4Bh |
je L38 |
|
comp58: |
cmp al, 4Ch |
je L312 |
|
comp59: |
cmp al, 4Dh |
je L316 |
|
jne L000 |
|
;------------------ |
Li8: |
mov [L1i], 8 |
jmp L000 |
|
Li12: |
mov [L1i], 12 |
jmp L000 |
|
Li16: |
mov [L1i], 16 |
jmp L000 |
|
Li32: |
mov [L1i], 32 |
jmp L000 |
|
Li64: |
mov [L1i], 64 |
jmp L000 |
|
Ld8: |
mov [L1d], 8 |
jmp L000 |
|
Ld16: |
mov [L1d], 16 |
jmp L000 |
|
Ld32: |
mov [L1d], 32 |
jmp L000 |
|
L96: |
mov [L2], 96 |
jmp L000 |
|
L128: |
mov [L2], 128 |
jmp L000 |
|
L192: |
mov [L2], 192 |
jmp L000 |
|
L256: |
mov [L2], 256 |
jmp L000 |
|
L384: |
mov [L2], 384 |
jmp L000 |
|
L512: |
mov [L2], 512 |
jmp L000 |
|
L1024: |
mov [L2], 1024 |
jmp L000 |
|
L2048: |
mov [L2], 2048 |
jmp L000 |
|
L305: |
mov [L3], 512 |
jmp L000 |
|
L31: |
mov [L3], 1024 |
jmp L000 |
|
L32: |
mov [L3], 2048 |
jmp L000 |
|
L34: |
mov [L3], 4096 |
jmp L000 |
|
L36: |
mov [L3], 6144 |
jmp L000 |
|
L38: |
mov [L3], 8192 |
jmp L000 |
|
L312: |
mov [L3], 12288 |
jmp L000 |
|
L316: |
mov [L3], 16384 |
jmp L000 |
|
L000: |
ret |
;////////////////////////////////////////////// |
;Decoding Brand ID for Intel |
|
306,18 → 674,18 |
;------------------ |
Bi00: |
mov byte [brand], bl ;00h |
Text 65,270,0x00000000,brand0, brand0len-brand0 |
Text 275,210,0x00000000,brand0, brand0len-brand0 |
;Number 275,200,1*256,2,dword [brand],0x000000 was in v. 1.11 |
jmp B000 |
|
Bi01: |
mov [brand], 01h |
Text 65,270,0x00000000,brand01, brand01len-brand01 |
Text 275,210,0x00000000,brand01, brand01len-brand01 |
jmp B000 |
|
Bi02: |
mov [brand], 02h |
Text 65,270,0x00000000,brand02, brand02len-brand02 |
Text 275,210,0x00000000,brand02, brand02len-brand02 |
jmp B000 |
|
Bi03: |
325,40 → 693,40 |
|
cmp [m], 8 |
je E3 |
Text 65,270,0x00000000,brand03, brand03len-brand03 |
Text 275,210,0x00000000,brand03, brand03len-brand03 |
jmp B000 |
E3: |
Text 65,270,0x00000000,brand03d, brand03dlen-brand03d |
Text 275,210,0x00000000,brand03d, brand03dlen-brand03d |
jmp B000 |
|
Bi04: |
mov [brand], 04h |
Text 65,270,0x00000000,brand04, brand04len-brand04 |
Text 275,210,0x00000000,brand04, brand04len-brand04 |
jmp B000 |
|
Bi06: |
mov [brand], 06h |
Text 65,270,0x00000000,brand06, brand06len-brand06 |
Text 275,210,0x00000000,brand06, brand06len-brand06 |
jmp B000 |
|
Bi07: |
mov [brand], 07h |
Text 65,270,0x00000000,brand07, brand07len-brand07 |
Text 275,210,0x00000000,brand07, brand07len-brand07 |
jmp B000 |
|
Bi08: |
mov [brand], 08h |
Text 65,270,0x00000000,brand08, brand08len-brand08 |
Text 275,210,0x00000000,brand08, brand08len-brand08 |
jmp B000 |
|
Bi09: |
mov [brand], 09h |
Text 65,270,0x00000000,brand09, brand09len-brand09 |
Text 275,210,0x00000000,brand09, brand09len-brand09 |
jmp B000 |
|
Bi0A: |
mov [brand], 0Ah |
Text 65,270,0x00000000,brand0A, brand0Alen-brand0A |
Text 275,210,0x00000000,brand0A, brand0Alen-brand0A |
jmp B000 |
|
Bi0B: |
366,15 → 734,15 |
|
cmp [m], 13 |
jl Eb |
Text 65,270,0x00000000,brand0B, brand0Blen-brand0B |
Text 275,210,0x00000000,brand0B, brand0Blen-brand0B |
jmp B000 |
Eb: |
Text 65,270,0x00000000,brand0Bd, brand0Bdlen-brand0Bd |
Text 275,210,0x00000000,brand0Bd, brand0Bdlen-brand0Bd |
jmp B000 |
|
Bi0C: |
mov [brand], 0Ch |
Text 65,270,0x00000000,brand0C, brand0Clen-brand0C |
Text 275,210,0x00000000,brand0C, brand0Clen-brand0C |
jmp B000 |
|
Bi0E: |
382,52 → 750,917 |
|
cmp [m], 13 |
jl Ed |
Text 65,270,0x00000000,brand0E, brand0Elen-brand0E |
Text 275,210,0x00000000,brand0E, brand0Elen-brand0E |
jmp B000 |
Ed: |
Text 65,270,0x00000000,brand0Ed, brand0Edlen-brand0Ed |
Text 275,210,0x00000000,brand0Ed, brand0Edlen-brand0Ed |
jmp B000 |
|
Bi0F: |
mov [brand], 0Fh |
Text 65,270,0x00000000,brand0F, brand0Flen-brand0F |
Text 275,210,0x00000000,brand0F, brand0Flen-brand0F |
jmp B000 |
|
Bi11: |
mov [brand], 11h |
Text 65,270,0x00000000,brand11, brand11len-brand11 |
Text 275,210,0x00000000,brand11, brand11len-brand11 |
jmp B000 |
|
Bi12: |
mov [brand], 12h |
Text 65,270,0x00000000,brand12, brand12len-brand12 |
Text 275,210,0x00000000,brand12, brand12len-brand12 |
jmp B000 |
|
Bi13: |
mov [brand], 13h |
Text 65,270,0x00000000,brand13, brand13len-brand13 |
Text 275,210,0x00000000,brand13, brand13len-brand13 |
jmp B000 |
|
Bi14: |
mov [brand], 14h |
Text 65,270,0x00000000,brand14, brand14len-brand14 |
Text 275,210,0x00000000,brand14, brand14len-brand14 |
jmp B000 |
|
Bi15: |
mov [brand], 15h |
Text 65,270,0x00000000,brand15, brand15len-brand15 |
Text 275,210,0x00000000,brand15, brand15len-brand15 |
jmp B000 |
|
Bi16: |
mov [brand], 16h |
Text 65,270,0x00000000,brand16, brand16len-brand16 |
Text 275,210,0x00000000,brand16, brand16len-brand16 |
jmp B000 |
|
Bi17: |
mov [brand], 17h |
Text 65,270,0x00000000,brand17, brand17len-brand17 |
Text 275,210,0x00000000,brand17, brand17len-brand17 |
jmp B000 |
|
B000: |
|
ret |
ret |
;////////////////////////////////////////////// |
|
;decoding standard features |
|
decode_standard_features: |
|
xor eax,eax |
inc eax |
cpuid |
|
Test0: |
test edx, FPU_FLAG |
jnz Test0e |
|
mov dword [FPU+6], $6F6E |
jmp Test1 |
|
Test0e: |
mov dword [FPU+6], $736579 |
|
;;;;;; |
Test1: |
test edx, VME_FLAG |
jnz Test1e |
|
mov dword [VME+ 7], $6F6E |
jmp Test2 |
|
Test1e: |
mov dword [VME+ 7], $736579 |
|
;;;;;; |
Test2: |
test edx, DE_FLAG |
jnz Test2e |
|
mov dword [DE+ 7], $6F6E |
jmp Test3 |
|
Test2e: |
mov dword [DE+ 7], $736579 |
;;;;;; |
|
Test3: |
test edx, PSE_FLAG |
jnz Test3e |
|
mov dword [PSE+ 8], $6F6E |
jmp Test4 |
|
Test3e: |
mov dword [PSE+ 8], $736579 |
|
;;;; |
Test4: |
test edx, TSC_FLAG |
jnz Test4e |
|
mov dword [TSC+ 6], $6F6E |
jmp Test5 |
|
Test4e: |
mov dword [TSC+ 6], $736579 |
|
;;;; |
Test5: |
test edx, MSR_FLAG |
jnz Test5e |
|
mov dword [MSR+ 7], $6F6E |
jmp Test6 |
|
Test5e: |
mov dword [MSR+ 7], $736579 |
|
;;;; |
Test6: |
test edx, PAE_FLAG |
jnz Test6e |
|
mov dword [PAE+ 7], $6F6E |
jmp Test7 |
|
Test6e: |
mov dword [PAE+ 7], $736579 |
|
;;;; |
Test7: |
test edx, MCE_FLAG |
jnz Test7e |
|
mov dword [MCE+ 8], $6F6E |
jmp Test8 |
|
Test7e: |
mov dword [MCE+ 8], $736579 |
|
;;;; |
Test8: |
test edx, CX8_FLAG |
jnz Test8e |
|
mov dword [CX8+ 6], $6F6E |
jmp Test9 |
|
Test8e: |
mov dword [CX8+ 6], $736579 |
;;;; |
|
Test9: |
test edx, APIC_FLAG |
jnz Test9e |
|
mov dword [APIC+ 7], $6F6E |
jmp Test11 |
|
Test9e: |
mov dword [APIC+ 7], $736579 |
;;;;; |
|
Test11: |
test edx, SEP_FLAG |
jnz Test11e |
|
mov dword [SEP+ 8], $6F6E |
jmp Test12 |
|
Test11e: |
mov dword [SEP+ 8], $736579 |
;;;; |
|
Test12: |
test edx, MTRR_FLAG |
jnz Test12e |
|
mov dword [MTRR+ 6], $6F6E |
jmp Test13 |
|
Test12e: |
mov dword [MTRR+ 6], $736579 |
;;;; |
|
Test13: |
test edx, PGE_FLAG |
jnz Test13e |
|
mov dword [PGE+ 7], $6F6E |
jmp Test14 |
|
Test13e: |
mov dword [PGE+ 7], $736579 |
;;;;; |
|
Test14: |
test edx, MCA_FLAG |
jnz Test14e |
|
mov dword [MCA+ 7], $6F6E |
jmp Test15 |
|
Test14e: |
mov dword [MCA+ 7], $736579 |
;;;; |
|
Test15: |
test edx, CMOV_FLAG |
jnz Test15e |
|
mov dword [CMOV+ 8], $6F6E |
jmp Test16 |
|
Test15e: |
mov dword [CMOV+ 8], $736579 |
;;;; |
|
Test16: |
test edx, PAT_FLAG |
jnz Test16e |
|
mov dword [PAT+ 6], $6F6E |
jmp Test17 |
|
Test16e: |
mov dword [PAT+ 6], $736579 |
;;;; |
|
Test17: |
test edx, PSE36_FLAG |
jnz Test17e |
|
mov dword [PSE36+ 7], $6F6E |
jmp Test18 |
|
Test17e: |
mov dword [PSE36+ 7], $736579 |
;;;; |
|
Test18: |
test edx, PSNUM_FLAG |
jnz Test18e |
|
mov dword [PSNUM+ 7], $6F6E |
jmp Test19 |
|
Test18e: |
mov dword [PSNUM+ 7], $736579 |
;;;; |
|
Test19: |
test edx, CLFLUSH_FLAG |
jnz Test19e |
|
mov dword [CLFLUSHn + 8], $6F6E |
jmp Test21 |
|
Test19e: |
mov dword [CLFLUSHn + 8], $736579 |
;;;; |
|
Test21: |
test edx, DTS_FLAG |
jnz Test21e |
|
mov dword [DTS+ 7], $6F6E |
jmp Test22 |
|
Test21e: |
mov dword [DTS+ 7], $736579 |
;;;; |
|
Test22: |
test edx, ACPI_FLAG |
jnz Test22e |
|
mov dword [ACPI+ 7], $6F6E |
jmp Test23 |
|
Test22e: |
mov dword [ACPI+ 7], $736579 |
;;;;; |
|
Test23: |
test edx, MMX_FLAG |
jnz Test23e |
|
mov dword [MMX+ 8], $6F6E |
mov dword [MMXs+ 7], $6F6E |
jmp Test24 |
|
Test23e: |
mov dword [MMX+ 8], $736579 |
mov dword [MMXs+ 7], $736579 |
;;;;; |
|
Test24: |
test edx, FXSR_FLAG |
jnz Test24e |
|
mov dword [FXSR+ 6], $6F6E |
jmp Test25 |
|
Test24e: |
mov dword [FXSR+ 6], $736579 |
;;;;; |
|
Test25: |
test edx, SSE_FLAG |
jnz Test25e |
|
mov dword [SSE+ 7], $6F6E |
jmp Test26 |
|
Test25e: |
mov dword [SSE+ 7], $736579 |
|
;;;; |
Test26: |
test edx, SSE2_FLAG |
jnz Test26e |
|
mov dword [SSE2+ 7], $6F6E |
jmp Test27 |
|
Test26e: |
mov dword [SSE2+ 7], $736579 |
|
;;;; |
|
Test27: |
test edx, SS_FLAG |
jnz Test27e |
|
mov dword [SSn+ 8], $6F6E |
jmp Test29;28 |
|
Test27e: |
mov dword [SSn+ 8], $736579 |
|
;;;; |
|
;Test28: |
;test edx, HTT_FLAG |
;jnz Test28e |
; |
;mov dword [HTT+ 8], $6F6E |
;jmp Test29 |
; |
;Test28e: |
;mov dword [HTT+ 8], $736579 |
|
;;;; |
|
Test29: |
test edx, TM_FLAG |
jnz Test29e |
|
mov dword [TM+ 7], $6F6E |
jmp Test30 |
|
Test29e: |
mov dword [TM+ 7], $736579 |
|
;;;; |
|
Test30: |
test edx, IA64_FLAG |
jnz Test30e |
|
mov dword [IA64+ 7], $6F6E |
jmp Test31 |
|
Test30e: |
mov dword [IA64+ 7], $736579 |
|
;;;; |
Test31: |
test edx, PBE_FLAG |
jnz Test31e |
|
mov dword [PBE+ 8], $6F6E |
jmp Standart_out |
|
Test31e: |
mov dword [PBE+ 8], $736579 |
|
Standart_out: |
|
ret |
;////////////////////////////////////////////// |
decode_sse3: ; is SS3 supported |
xor eax,eax |
inc eax |
cpuid |
test ecx, $1 ; Test bit 1 |
jnz .EX; SSE3 technology is supported |
jz .EXN |
|
.EX: |
mov dword [sse3+ 6], $736579 |
mov [sse3sup], 1 |
jmp exitter |
.EXN: |
mov dword [sse3+ 6], $6F6E |
mov [sse3sup],0 |
|
exitter: |
|
ret |
;////////////////////////////////////////////// |
decode_extended_features: |
xor eax,eax |
inc eax |
cpuid |
Tes1: |
test ecx, SSE3_FLAG |
jnz Tes1e |
|
mov dword [SS3+ 8], $6F6E |
jmp Tes2 |
|
Tes1e: |
mov dword [SS3+ 8], $736579 |
|
|
Tes2: |
test ecx, MON_FLAG |
jnz Tes2e |
|
mov dword [MON+ 8], $6F6E |
jmp Tes3 |
|
Tes2e: |
mov dword [MON+ 8], $736579 |
|
|
Tes3: |
test ecx, DS_CPL_FLAG |
jnz Tes3e |
|
mov dword [DS_CPL+ 8], $6F6E |
jmp Tes4 |
|
Tes3e: |
mov dword [DS_CPL+ 8], $736579 |
|
Tes4: |
test ecx, EST_FLAG |
jnz Tes4e |
|
mov dword [EST+ 8], $6F6E |
jmp Tes5 |
|
Tes4e: |
mov dword [EST+ 8], $736579 |
|
|
Tes5: |
test ecx, TM2_FLAG |
jnz Tes5e |
|
mov dword [TM2+ 8], $6F6E |
jmp Tes6 |
|
Tes5e: |
mov dword [TM2+ 8], $736579 |
|
|
Tes6: |
test ecx, CNXT_ID_FLAG |
jnz Tes6e |
|
mov dword [CNXT_ID+ 9], $6F6E |
jmp Tes7 |
|
Tes6e: |
mov dword [CNXT_ID+ 9], $736579 |
|
|
Tes7: |
test ecx, CX16_FLAG |
jnz Tes7e |
|
mov dword [CX16+ 9], $6F6E |
jmp Tes8 |
|
Tes7e: |
mov dword [CX16+ 9], $736579 |
|
|
Tes8: |
test ecx, ETPRD_FLAG |
jnz Tes8e |
|
mov dword [ETPRD+ 9], $6F6E |
jmp Tes9 |
|
Tes8e: |
mov dword [ETPRD+ 9], $736579 |
|
Tes9: |
|
ret |
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
decode_extended: |
xor eax, eax |
mov eax,$80000000 |
cpuid |
;cmp eax,$80000000 |
test eax, 80000000h |
jnz gooodd |
; |
jmp baaad |
|
baaad: |
;mov dword [MP+8], $6F6E |
;mov dword [NX+ 8], $6F6E |
;mov dword [MMXPi+ 8], $6F6E |
;mov dword [MMXn+ 8], $6F6E |
;mov dword [FXSRn+ 8], $6F6E |
;mov dword [FFXSR+ 10], $6F6E |
;mov dword [TSCP+ 10], $6F6E |
;mov dword [LM+ 10], $6F6E |
;mov dword [DNo+ 10], $6F6E |
;mov dword [DN+ 10], $6F6E |
;mov dword [SYS+ 9], $6F6E |
;mov dword [LAF+ 9], $6F6E |
|
|
|
jmp Tez13 |
|
gooodd: |
xor eax, eax |
mov eax, $80000001 ;// Setup extended function 8000_0001h |
cpuid |
|
Tez1: |
test edx, MP_FLAG |
jnz Tez1e |
|
mov dword [MP+8], $6F6E |
jmp Tez2 |
|
Tez1e: |
mov dword [MP+ 8], $736579 |
|
Tez2: |
test edx, NX_FLAG |
jnz Tez2e |
|
mov dword [NX+ 8], $6F6E |
jmp Tez4 |
;jmp Tez3 áûëî, íî èç-çà Ñèðèêñ ïðèõîäèòñÿ äåëàòü äåòåêò â ëðóãîì ìåñòå |
|
Tez2e: |
mov dword [NX+ 8], $736579 |
|
;Tez3: |
;test edx, MMXPi_FLAG |
;jnz Tez3e |
|
;mov dword [MMXPi+ 8], $6F6E |
;jmp Tez4 |
|
|
;Tez3e: |
;mov dword [MMXPi+ 8], $736579 |
|
Tez4: |
test edx, MMXn_FLAG |
jnz Tez4e |
|
mov dword [MMXn+ 8], $6F6E |
jmp Tez5 |
|
Tez4e: |
mov dword [MMXn+ 8], $736579 |
|
Tez5: |
test edx, FXSRn_FLAG |
jnz Tez5e |
|
mov dword [FXSRn+ 8], $6F6E |
jmp Tez6 |
|
Tez5e: |
mov dword [FXSRn+ 8], $736579 |
|
Tez6: |
test edx, FFXSR_FLAG |
jnz Tez6e |
|
mov dword [FFXSR+ 10], $6F6E |
jmp Tez7 |
|
Tez6e: |
mov dword [FFXSR+ 10], $736579 |
|
Tez7: |
test edx, TSCP_FLAG |
jnz Tez7e |
|
mov dword [TSCP+ 10], $6F6E |
jmp Tez8 |
|
Tez7e: |
mov dword [TSCP+ 10], $736579 |
|
|
Tez8: |
test edx, LM_FLAG |
jnz Tez8e |
|
mov dword [LM+ 10], $6F6E |
jmp Tez9 |
|
Tez8e: |
mov dword [LM+ 10], $736579 |
|
Tez9: |
test edx, DNo_FLAG |
jnz Tez9e |
|
mov dword [DNo+ 10], $6F6E |
jmp Tez10 |
|
Tez9e: |
mov dword [DNo+ 10], $736579 |
|
|
Tez10: |
test edx, DN_FLAG |
jnz Tez10e |
|
mov dword [DN+ 10], $6F6E |
jmp Tez11 |
|
Tez10e: |
mov dword [DN+ 10], $736579 |
|
;Intel |
|
Tez11: |
test edx, SYS_FLAG |
jnz Tez11e |
|
mov dword [SYS+ 9], $6F6E |
jmp Tez12 |
|
Tez11e: |
mov dword [SYS+ 9], $736579 |
|
|
Tez12: |
test ecx, LAHF_FLAG |
jnz Tez12e |
|
mov dword [LAF+ 9], $6F6E |
jmp Tez13 |
|
Tez12e: |
mov dword [LAF+ 9], $736579 |
|
Tez13: |
|
ret |
;////////////////////////////////////////////// |
newrating: |
|
cmp [FRS], 266 |
jz f266 |
cmp [FRS], 333 |
jz f333 |
cmp [FRS], 400 |
jz f400 |
|
f266: |
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; |
; Print the unpacked img to screen |
; gif2img i333,img_area3 |
; mov eax,7 ; sysfunc7: putimage |
; mov ebx,img_area3+8 ; pointer to image |
; mov ecx,33*65536+30 ; resolution (all gif's included are 64*81) |
; mov edx,240*65536+90 ; plce to print image on screen (first number is |
;pixels from left, second pixels from top) |
; int 0x40 ; execute function |
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
;ôîðìóëû âû÷èñëåíèÿ XP-ðåéòèíãà Athlon-îâ (Tbred, Barton): |
;FSB266/256kB: ñäåëàíî |
;XP+ (Freq<2000MHz) = 1000 + (Freq-1000)*1,5 = Freq*1.5-500 |
;XP+ (Freq>=2000MHz) = 900 + (Freq-1000)*1,5 = Freq*1.5-600 |
|
|
cmp [total], 2000 |
jl pal |
|
; Ðåéòèíã äëÿ Ïàëîìèíî 2000+ |
mov eax,[total] |
imul eax, 3 |
shr eax,1 |
sub eax, 600 |
mov [rating], eax |
|
jmp vyxod |
|
pal: |
|
; Ðåéòèíã äëÿ Ïàëîìèíî 2000- |
mov eax,[total] |
imul eax, 3 |
shr eax,1 |
sub eax, 500 |
mov [rating], eax |
|
jmp vyxod |
|
|
f333: |
|
|
|
|
cmp [L2], 256 |
jl .Th ; Thorton |
|
;FSB333/512kB: ñäåëàíî |
;XP+ (Freq<2100MHz) = Freq*1.2 + 300 |
;XP+ (Freq>=2100MHz) = Freq*1.2 + 400 |
|
cmp [total], 2100 |
jl .r2100 |
mov eax,[total] |
xor edx, edx |
imul eax, 600000 |
mov ebx, 500000 |
div ebx |
mov [rating], eax |
add [rating], 400 |
|
; Rating for Barton F<2000 MHz |
jmp vyxod |
|
.r2100: |
mov eax,[total] |
xor edx, edx |
imul eax, 600000 |
mov ebx, 500000 |
div ebx |
mov [rating], eax |
add [rating], 300 |
|
|
; Rating for Barton F>2000 MHz |
jmp vyxod |
|
;FSB333/256kB: ñäåëàíî |
;XP+ = Freq*1.2 + 100 |
|
.Th: |
|
mov eax,[total] |
xor edx, edx |
imul eax, 600000 |
mov ebx, 500000 |
div ebx |
mov [rating], eax |
add [rating], 100 |
|
|
;Rating for Thorton |
|
|
jmp vyxod |
|
f400: |
|
|
;FSB400/512kB: |
;XP+ = Freq*1.5 - 100 |
|
mov eax,[total] |
imul eax, 3 |
shr eax,1 |
sub eax, 100 |
mov [rating], eax |
|
vyxod: |
|
|
ret |
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
multipl: |
;--- âû÷èñëåíèå êîýôôèöèåíòà óìíîæåíèÿ - |
; ïîðòèò ðåãèñòðû |
; out : CL = êîýôô.óìíîæåíèÿ * 10, èëè 0 |
xor ecx, ecx |
|
cmp dword[smallvendor], 'cAMD' ; Check for Advanced Micro Devices CPU |
jne noAMD |
cmp byte [f], 5 |
jne noAMDK6 |
mov eax, 68 ; AMD-K6 (p.30) |
mov ebx, 3 |
mov edx, 0x0C0000087 |
int 0x40 ; eax - low dword |
and eax, 111b |
mov cl, [athloncoef3 + eax] |
cmp eax, 6 |
jne @f |
cmp byte[m], 8 |
jae @f |
mov cl, 20 |
@@: ret |
|
noAMDK6: |
cmp byte [f], 6 |
jne noAMDK7 |
mov eax, 68 ; Athlon/AthlonXP |
mov ebx, 3 |
mov edx, 0x0C0010015 |
int 0x40 |
mov ebx, eax |
shr ebx, 24 |
and ebx, 0x0F |
shr eax, 20 |
jc @f |
mov cl, [athloncoef + ebx] |
ret |
@@: mov cl, [athloncoef2 + ebx] |
ret |
|
noAMD: |
cmp dword[smallvendor], 'ntel' ; Check for International Electronics CPU |
jne noIntel |
cmp byte[f], 0x0F |
jne noIntelP4 |
cmp byte [t], 6 |
jne @f |
mov eax, 68 ; Pentium M |
mov ebx, 3 |
mov edx, 0x2A |
int 0x40 |
shr eax, 22 |
and eax, 0x1F |
mov dl, 10 |
mul dl |
mov cl, al |
ret |
@@: cmp byte [m], 2 |
jae @f |
mov eax, 68 ; Pentium 4 / Xeon (model < 2) |
mov ebx, 3 |
mov edx, 0x2A |
int 0x40 |
shr eax, 8 |
and eax, 0x0F |
mov cl, [p4coef + eax] |
ret |
@@: mov eax, 68 ; Pentium 4 / Xeon (model >= 2) |
mov ebx, 3 |
mov edx, 0x2C |
int 0x40 |
|
; shr eax, 24 |
; and eax, 0x1F |
shr eax, 27 |
and al, 0Fh |
add al, 8 |
|
mov dl, 10 |
mul dl |
mov cl, al |
ret |
noIntelP4: |
cmp byte[f], 6 |
jne noIntelP6 |
mov eax, 68 ; Pentium Pro / Pentium II / Pentium III |
mov ebx, 3 |
mov edx, 0x2A |
int 0x40 |
shr eax, 22 |
test al, 0x20 |
jz @f |
or al, 0x10 |
@@: and eax, 0x1f |
mov cl, [coppercoeff + eax] |
cmp byte[m], 0x0B |
jb @f |
mov cl, [tualatcoeff + eax] |
@@: ret |
|
noIntel: |
noIntelP6: |
noAMDK7: |
ret |
|
|