From 5756e1bfc8b22f0f6f466aa3941b1349c68eaa2c Mon Sep 17 00:00:00 2001 From: "Iliya Mihailov (Ghost)" Date: Sun, 4 Feb 2007 11:05:08 +0000 Subject: [PATCH] Trying to fix MOS_UZEL.INC stuck git-svn-id: svn://kolibrios.org@320 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/system/cpuid/trunk/MOS_UZEL.INC | 1437 ++-------------------- 1 file changed, 102 insertions(+), 1335 deletions(-) diff --git a/programs/system/cpuid/trunk/MOS_UZEL.INC b/programs/system/cpuid/trunk/MOS_UZEL.INC index 79ca440145..d143f911b2 100644 --- a/programs/system/cpuid/trunk/MOS_UZEL.INC +++ b/programs/system/cpuid/trunk/MOS_UZEL.INC @@ -1,78 +1,15 @@ -;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 { if arg1 in if arg2 eqtype 0 - if arg2 = 1 - inc arg1 - else - add arg1,arg2 - end if + if arg2 = 1 + inc arg1 + else + add arg1,arg2 + end if else - add arg1,arg2 + add arg1,arg2 end if else add arg1,arg2 @@ -83,9 +20,9 @@ macro sub arg1,arg2 { if arg2 eqtype 0 if arg2 = 1 - dec arg1 + dec arg1 else - sub arg1,arg2 + sub arg1,arg2 end if else sub arg1,arg2 @@ -96,21 +33,21 @@ macro mov arg1,arg2 { if arg1 in if arg2 eqtype 0 - if arg2 = 0 - xor arg1,arg1 - else if arg2 = 1 - xor arg1,arg1 - inc arg1 - else if arg2 = -1 - or arg1,-1 - else if arg2 > -128 & arg2 < 128 - push arg2 - pop arg1 - else - mov arg1,arg2 - end if + if arg2 = 0 + xor arg1,arg1 + else if arg2 = 1 + xor arg1,arg1 + inc arg1 + else if arg2 = -1 + or arg1,-1 + else if arg2 > -128 & arg2 < 128 + push arg2 + pop arg1 + else + mov arg1,arg2 + end if else - mov arg1,arg2 + mov arg1,arg2 end if else mov arg1,arg2 @@ -120,6 +57,22 @@ macro mov arg1,arg2 ; 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 { @@ -136,6 +89,7 @@ macro Text xStart,yStart,rgbColor,pText,nTextLen ;DisplayNumber macro Number xStart,yStart,nPrintType,noOfDigits,Data,rgbColor { + mov edx,xStart shl edx,16 add edx,yStart @@ -161,366 +115,44 @@ macro DrawLine xStart,xEnd,yStart,yEnd,rgbColor int 0x40 } -;////////////////////////////////////////////// -; Decoding cache L1,L2,L3 for Intel +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 +} + +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 @@ -554,7 +186,7 @@ jmp B000 cnnn1: -mov eax, 0x80000001 ; CPUID ext. function 0x80000001 +mov eax, 0x80000001 ; CPUID ext. function 0x80000001 cpuid cmp ebx, 0 @@ -580,7 +212,7 @@ jmp B000 res3: Text 275,210,0x00000000,abrand2, abrand2len-abrand2 jmp B000 - ;;;;;;;;;;;;;;;;;;;;; intel brand + ;;;;;;;;;;;;;;;;;;;;; intel brand intel_br: xor eax,eax inc eax @@ -674,18 +306,18 @@ jne Bi00 ;------------------ Bi00: mov byte [brand], bl ;00h -Text 275,210,0x00000000,brand0, brand0len-brand0 +Text 65,270,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 275,210,0x00000000,brand01, brand01len-brand01 +Text 65,270,0x00000000,brand01, brand01len-brand01 jmp B000 Bi02: mov [brand], 02h -Text 275,210,0x00000000,brand02, brand02len-brand02 +Text 65,270,0x00000000,brand02, brand02len-brand02 jmp B000 Bi03: @@ -693,40 +325,40 @@ mov [brand], 03h cmp [m], 8 je E3 -Text 275,210,0x00000000,brand03, brand03len-brand03 +Text 65,270,0x00000000,brand03, brand03len-brand03 jmp B000 E3: -Text 275,210,0x00000000,brand03d, brand03dlen-brand03d +Text 65,270,0x00000000,brand03d, brand03dlen-brand03d jmp B000 Bi04: mov [brand], 04h -Text 275,210,0x00000000,brand04, brand04len-brand04 +Text 65,270,0x00000000,brand04, brand04len-brand04 jmp B000 Bi06: mov [brand], 06h -Text 275,210,0x00000000,brand06, brand06len-brand06 +Text 65,270,0x00000000,brand06, brand06len-brand06 jmp B000 Bi07: mov [brand], 07h -Text 275,210,0x00000000,brand07, brand07len-brand07 +Text 65,270,0x00000000,brand07, brand07len-brand07 jmp B000 Bi08: mov [brand], 08h -Text 275,210,0x00000000,brand08, brand08len-brand08 +Text 65,270,0x00000000,brand08, brand08len-brand08 jmp B000 Bi09: mov [brand], 09h -Text 275,210,0x00000000,brand09, brand09len-brand09 +Text 65,270,0x00000000,brand09, brand09len-brand09 jmp B000 Bi0A: mov [brand], 0Ah -Text 275,210,0x00000000,brand0A, brand0Alen-brand0A +Text 65,270,0x00000000,brand0A, brand0Alen-brand0A jmp B000 Bi0B: @@ -734,15 +366,15 @@ mov [brand], 0Bh cmp [m], 13 jl Eb -Text 275,210,0x00000000,brand0B, brand0Blen-brand0B +Text 65,270,0x00000000,brand0B, brand0Blen-brand0B jmp B000 Eb: -Text 275,210,0x00000000,brand0Bd, brand0Bdlen-brand0Bd +Text 65,270,0x00000000,brand0Bd, brand0Bdlen-brand0Bd jmp B000 Bi0C: mov [brand], 0Ch -Text 275,210,0x00000000,brand0C, brand0Clen-brand0C +Text 65,270,0x00000000,brand0C, brand0Clen-brand0C jmp B000 Bi0E: @@ -750,917 +382,52 @@ mov [brand], 0Eh cmp [m], 13 jl Ed -Text 275,210,0x00000000,brand0E, brand0Elen-brand0E +Text 65,270,0x00000000,brand0E, brand0Elen-brand0E jmp B000 Ed: -Text 275,210,0x00000000,brand0Ed, brand0Edlen-brand0Ed +Text 65,270,0x00000000,brand0Ed, brand0Edlen-brand0Ed jmp B000 Bi0F: mov [brand], 0Fh -Text 275,210,0x00000000,brand0F, brand0Flen-brand0F +Text 65,270,0x00000000,brand0F, brand0Flen-brand0F jmp B000 Bi11: mov [brand], 11h -Text 275,210,0x00000000,brand11, brand11len-brand11 +Text 65,270,0x00000000,brand11, brand11len-brand11 jmp B000 Bi12: mov [brand], 12h -Text 275,210,0x00000000,brand12, brand12len-brand12 +Text 65,270,0x00000000,brand12, brand12len-brand12 jmp B000 Bi13: mov [brand], 13h -Text 275,210,0x00000000,brand13, brand13len-brand13 +Text 65,270,0x00000000,brand13, brand13len-brand13 jmp B000 Bi14: mov [brand], 14h -Text 275,210,0x00000000,brand14, brand14len-brand14 +Text 65,270,0x00000000,brand14, brand14len-brand14 jmp B000 Bi15: mov [brand], 15h -Text 275,210,0x00000000,brand15, brand15len-brand15 +Text 65,270,0x00000000,brand15, brand15len-brand15 jmp B000 Bi16: mov [brand], 16h -Text 275,210,0x00000000,brand16, brand16len-brand16 +Text 65,270,0x00000000,brand16, brand16len-brand16 jmp B000 Bi17: mov [brand], 17h -Text 275,210,0x00000000,brand17, brand17len-brand17 +Text 65,270,0x00000000,brand17, brand17len-brand17 jmp B000 B000: -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 - - +ret \ No newline at end of file