;
; Code
;
CSeg segment
assume cs:CSeg,ds:DGROUP,es:DGROUP,ss:DGROUP
start:
mov eax,[esp+12]
mov EnvAddr,eax ; Save environment address
mov eax,offset Banner
call Write ; Print banner
mov eax,[esp+16]
mov CmdLine,eax
m_skip_name:
inc eax
cmp byte ptr [eax],0
jne m_skip_name
inc eax
mov Parameters,eax
mov esi,eax
call parse
call check_cpu
call check_fpu
call print
push CPUType
push 1
call DosExit
ret
CSeg ends
DSeg segment
Banner db "CPUID ver 1.0 by Giovanni Pagni",10,10,13,0
Help db "Usage: CPUID [options]",10,10,13
db " -f Full info",10,13
db " -c Force CPUID instruction",10,13
db " -? Show this message",10,10,13,0
InvalidSwitch db "Invalid switch.",10,13,0
Head db "This system has a",0
c386 db "n 80386",0
fx87 db " processor with an 80"
f087 db "287 co"
Processor db "processor.",10,13,0
c486dx db "n 80486 DX processor or 80487 SX math co",0
c486sx db "n 80486 SX ",0
Intel486 db " Genuine Intel486(TM)",0
Pentium db " Genuine Intel Pentium(TM)",0
AMD5x86 db "n AMD 5x86 processor with ",0
AMD486 db "n AMD 486 processor with ",0
WriteBack db "Write-Back",0
WriteThrough db "Write-Through"
Cache db " cache.",10,13,0
Family db 10,13
db "Processor Family: ",0
fx86 db "086",10,13,0
Model db "Model : ",0
number db "0",10,13,0
Stepping db "Stepping : ",0
Sign db "Signature : ",0
fpu_msg db "This processor contains a FPU.",10,13,0
mce_msg db "This processor supports the Machine Check Exception.",10,13,0
cmp_msg db "This processor supports the CMPXCHG8B instruction.",10,13,0
Unknown1 db "n unknown Intel CPU (PentiumPro ?).",10,13,0
Unknown2 db "n unknown AMD ",0
Unknown3 db "n unknown 80x86 processor (at least 80486).",10,13
db "I cannot fully undertand CPUID information."
crlflf db 10
crlf db 10,13,0
IntelID db "GenuineIntel"
AmdID db "AuthenticAMD"
DSeg ends
BSeg segment
EnvAddr dd ?
CmdLine dd ?
Parameters dd ?
BSeg ends