BlitzMax code which gets CPU info and O/S details too
(not sure if everything here is right though):
(not sure if everything here is right though):
Strict Framework brl.standardio Import brl.retro Extern "Win32" Function GetSystemInfo%(infoPTR:Byte Ptr) Function GetVersionExA%(versioninfoPTR:Byte Ptr) End Extern Global osname$="O/S unknown" Global procname$="Processor unknown" ' Operating System Information Const PROCESSOR_ARCHITECTURE_ALPHA = 2 Const PROCESSOR_ARCHITECTURE_INTEL = 0 Const PROCESSOR_ARCHITECTURE_MIPS = 1 Const PROCESSOR_ARCHITECTURE_PPC = 3 Const PROCESSOR_ARCHITECTURE_UNKNOWN = $FFFF Const PROCESSOR_INTEL_386 = 386 Const PROCESSOR_INTEL_486 = 486 Const PROCESSOR_INTEL_PENTIUM = 586 Const PROCESSOR_INTEL_PENTIUM2 = 686 Const PROCESSOR_INTEL_PENTIUM3 = 786 Const PROCESSOR_MIPS_R4000 = 4000 Const VER_PLATFORM_WIN32_NT = 2 Const VER_PLATFORM_WIN32_WINDOWS = 1 Type SystemInfo Field wProcessorArchitecture% Field wReserved% Field dwPageSize% Field lpMinimumApplicationAddress% Field lpMaximumApplicationAddress% Field dwActiveProcessorMask% Field dwNumberOfProcessors% Field dwProcessorType% Field dwAllocationGranularity% Field wProcessorLevel% Field wProcessorRevision% End Type Type OSInfo Field OSVersionInfoSize% Field MajorVersion% Field MinorVersion% Field BuildNumber% Field PlatformId% Field CSDVersion:Byte Ptr ' 128 in length End Type Global sys:SystemInfo=New SystemInfo Global os:OSInfo=New OSInfo os.OSVersionInfoSize=128+20 GetVersionExA os GetSystemInfo sys Local rev=sys.wProcessorRevision ' example Print "_______________________________________________________" Print "processor architech: "+sys.wProcessorArchitecture Print " reserved: "+sys.wReserved Print " pagesize: "+sys.dwPageSize Print " min app addr: "+sys.lpMinimumApplicationAddress Print " max app addr: "+sys.lpMaximumApplicationAddress Print " processor mask: "+sys.dwActiveProcessorMask Print " num processors: "+sys.dwNumberOfProcessors Print " processor type: "+sys.dwProcessorType Print " allocg: "+sys.dwAllocationGranularity Print " processor level: "+sys.wProcessorLevel Print " processor revision: "+sys.wProcessorRevision Print "" ' operating system information Print "_______________________________________________________" Select os.PlatformId Case 0 ; osname$="Windows 32s" Case VER_PLATFORM_WIN32_WINDOWS osname$="Windows 95" If os.MinorVersion>=10 osname$="Windows 98" Case VER_PLATFORM_WIN32_NT osname$="Windows NT " End Select Print "Operating System: "+osname$ Print " Version: "+String(os.MajorVersion)+"."+String(os.MinorVersion) Print " Build: "+String(os.BuildNumber) ' system processor details Print "_______________________________________________________" Select sys.wProcessorArchitecture Case PROCESSOR_ARCHITECTURE_INTEL ' Intel Select os.PlatformId Case VER_PLATFORM_WIN32_NT Select sys.wProcessorLevel Case 3 procname$="Intel 80386" If (rev & $FF00) = $FF00 procname$=procname$ + " Model " + String(((rev & $F0)/$F)-10) + " Stepping " + String((rev & $F)) Else procname$=procname$ + " Stepping " + Chr$(65+(rev & $FF)/$FF) + " Stepping " + String(rev & $FF) End If Case 4 procname$="Intel 80486" If (rev & $FF00) = $FF00 procname$=procname$ + " Model " + String(((rev & $F0) / $F) - 10) + " Stepping " + String((rev & $F)) Else procname$=procname$ + " Stepping " + Chr$(Asc("A")) + String((rev & $FF)/$FF) + " Stepping " + String(rev & $FF) End If Case 5 procname$ = "Pentium Model " + String((rev & $FF00)/$FF) + " Stepping " + String((rev & $FF)) Case 6 procname$ = "Pentium II Model " + String ((rev & $FF00)/$FF) + " Stepping " + String((rev & $FF)) Case 7 procname$ = "Pentium III Model " + String ((rev & $FF00)/$FF) + " Stepping " + String((rev & $FF)) End Select Case VER_PLATFORM_WIN32_WINDOWS Select sys.dwProcessorType Case PROCESSOR_INTEL_386 ; procname$ = "Intel 80386" Case PROCESSOR_INTEL_486 ; procname$ = "Intel 80486" Case PROCESSOR_INTEL_PENTIUM ; procname$ = "Pentium" Case PROCESSOR_INTEL_PENTIUM2 ; procname$ = "Pentium II" Case PROCESSOR_INTEL_PENTIUM3 ; procname$ = "Pentium III" End Select End Select ' MIPS Architecture (only For WinNT) Case PROCESSOR_ARCHITECTURE_MIPS procname$ = "MIPS R" + sys.wProcessorLevel + "000" ' ALPHA Architecture (only For WinNT) Case PROCESSOR_ARCHITECTURE_ALPHA procname$ = "Alpha " + sys.wProcessorLevel + " Model A" + String((rev & $FF00)/$FF) + " Pass " + String(rev & $FF) ' PPC Architecture (only For WinNT) Case PROCESSOR_ARCHITECTURE_PPC Select sys.wProcessorLevel Case 1, 3, 4, 20 procname$ = "PPC 6" + Right$("0000000000000000"+String(sys.wProcessorLevel),2) Case 6 procname$ = "PPC 603+" Case 9 procname$ = "PPC 604+" End Select procname$ = procname$ + " Processor Version " + String((rev & $FF00)/$FF) + "." + String(rev & $FF) End Select Print procname$ Print "_______________________________________________________" End