Code: Select all
CPUName.s = Space(12)
pCPUName.l = @CPUName
FPU.l
VME.l
!XOR eax,eax
!CPUID
MOV eax,pCPUName
MOV [eax],ebx
MOV [eax+4],edx
MOV [eax+8],ecx
MOV CPUName,eax
MOV eax,1
!CPUID
BT eax,0
ADC FPU,0
BT eax,1
ADC VME,0

Code: Select all
CPUName.s = Space(12)
pCPUName.l = @CPUName
FPU.l
VME.l
!XOR eax,eax
!CPUID
MOV eax,pCPUName
MOV [eax],ebx
MOV [eax+4],edx
MOV [eax+8],ecx
MOV CPUName,eax
MOV eax,1
!CPUID
BT eax,0
ADC FPU,0
BT eax,1
ADC VME,0
Code: Select all
CPUName.s = Space(12)
pCPUName.l = @CPUName
FPU.l
VME.l
!XOR eax,eax
!CPUID
!MOV eax,[v_pCPUName]
!MOV [eax],ebx
!MOV [eax+4],edx
!MOV [eax+8],ecx
!MOV [v_CPUName],eax
!MOV eax,1
!CPUID
!BT eax,0
!ADC [v_FPU],0
!BT eax,1
!ADC [v_VME],0
Debug CPUName
Debug FPU
Debug VME
Code: Select all
Procedure.s GetCPUName()
Protected Buffer.s
Protected Pointer1.l, Pointer2.l, Pointer3.l, Pointer4.l
!MOV eax, $80000002
!CPUID
!MOV [p.v_Pointer1], EAX
!MOV [p.v_Pointer2], EBX
!MOV [p.v_Pointer3], ECX
!MOV [p.v_Pointer4], EDX
Buffer = PeekS(@Pointer1, 4, #PB_Ascii)
Buffer + PeekS(@Pointer2, 4, #PB_Ascii)
Buffer + PeekS(@Pointer3, 4, #PB_Ascii)
Buffer + PeekS(@Pointer4, 4, #PB_Ascii)
!MOV eax, $80000003
!CPUID
!MOV [p.v_Pointer1], EAX
!MOV [p.v_Pointer2], EBX
!MOV [p.v_Pointer3], ECX
!MOV [p.v_Pointer4], EDX
Buffer + PeekS(@Pointer1, 4, #PB_Ascii)
Buffer + PeekS(@Pointer2, 4, #PB_Ascii)
Buffer + PeekS(@Pointer3, 4, #PB_Ascii)
Buffer + PeekS(@Pointer4, 4, #PB_Ascii)
!MOV eax, $80000004
!CPUID
!MOV [p.v_Pointer1], EAX
!MOV [p.v_Pointer2], EBX
!MOV [p.v_Pointer3], ECX
!MOV [p.v_Pointer4], EDX
Buffer + PeekS(@Pointer1, 4, #PB_Ascii)
Buffer + PeekS(@Pointer2, 4, #PB_Ascii)
Buffer + PeekS(@Pointer3, 4, #PB_Ascii)
Buffer + PeekS(@Pointer4, 4, #PB_Ascii)
ProcedureReturn Buffer
EndProcedure
Debug GetCPUName()
The original posting was from ts-soft:LuCiFeR[SD] wrote: I cant remember where the hell I came accross this bit of code.... maybe purearea?