; ; Command & Conquer Red Alert(tm) ; Copyright 2025 Electronic Arts Inc. ; ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with this program. If not, see . ; ; $Header: g:/library/wwlib32/system/rcs/detproc.asm 1.1 1994/04/18 09:13:53 jeff_wilson Exp $ ;*************************************************************************** ;** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ** ;*************************************************************************** ;* * ;* Project Name : Westwood Library * ;* * ;* File Name : PROC.ASM * ;* * ;* Programmer : Joe L. Bostic * ;* * ;* Start Date : May 11, 1993 * ;* * ;* Last Update : May 11, 1993 [JLB] * ;* * ;* Converted to 32Bit -- JAW * ;* * ;*-------------------------------------------------------------------------* ;* Functions: * ;* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * IDEAL P386 MODEL USE32 FLAT GLOBAL Processor :NEAR PROC_80386 equ 0 PROC_80486 equ 1 PROC_80586 equ 2 DATASEG cpu_id_586 dw 0 CODESEG PROC Processor C near USES ebx LOCAL ptype:WORD pushfd ; At least a 386 -- check for 486. mov [WORD PTR ptype],PROC_80386 ; 80386 pushfd pop eax mov ebx,eax xor eax,40000h push eax popfd pushfd pop eax xor eax,ebx je short ??fini ; At least a 486 -- check for 586(Pentium) mov [ptype],PROC_80486 ; 80486 ; Some machines have a problem with this fLAG ; and thus make us think they are a 586 but they are ; really a 486. A possible way around this is to ; capture the Illegal instruction vector, then do ; an instruction only available on the 586. ; for now this is just commented out pushfd pop eax mov ebx,eax xor eax,200000h push eax popfd pushfd pop eax xor eax,ebx je short ??fini ; At least a 586(Pentium) -- check for higher. mov [ptype],PROC_80586 ; 80486 ; mov eax,1 ; DW 0fA2h ; CPUID opcode. ; shr ax,8 ; and ax,0fh ; inc ax ; inc ax ; mov [cpu_id_586],ax ; Final cleanup and exit. ??fini: popfd sub eax,eax mov ax,[ptype] ret ENDP Processor END