Path: utzoo!attcan!uunet!snorkelwacker!tut.cis.ohio-state.edu!rutgers!mcdchg!ddsw1!andyross From: andyross@ddsw1.MCS.COM (Andrew Rossmann) Newsgroups: comp.os.msdos.programmer Subject: Re: Detecting an 80486 Message-ID: <1990Jul20.230335.22816@ddsw1.MCS.COM> Date: 20 Jul 90 23:03:35 GMT References: <1990Jul19.025150.6150@looking.on.ca> <315@bally.Bally.COM> Reply-To: andyross@ddsw1.MCS.COM (Andrew Rossmann) Distribution: comp.os.msdos.programmer Organization: ddsw1.MCS.COM Contributor, Wheeling, IL Lines: 28 In article <315@bally.Bally.COM> pete@bally.UUCP (exilied in my own office) writes: >In article <1990Jul19.025150.6150@looking.on.ca> brad@looking.on.ca (Brad Templeton) writes: >>For status programs that wish to detect what sort of processor they >>are running on, does anybody have the scoop on official detection >>procedure for an 80486? Assuming, for example, that one already knows >>that one is on a 386 or better. I already have code to detect >>8086, 8088, 80186, 80286, 80386, 8087, 80287 and 80387 -- I want to make >>it complete. >I spoke with an engineer at SCO (whose remains unnamed) who sadly >told me that there was no way to tell an 80386 from an 80486. >SCO wanted to market a higher-priced version of Xenix for 80486, but they >could find no way to detect the difference. >Pete Gregory : uucp: uunet!bally!pete | In my Infoplus program, the 286/386/486 are detected by trapping the invalid opcode interrupt, and then trying instructions. For the 486, I use XADD DX,DX. This is new on the 486, and exchanges the registers before doing the addition. For the 386, I now use MOV EDX,EDX, which is 32-bit do-nothing! (It used to use an instruction that read some special registers. This caused major problems with most EMS emulators!) For the 286, it tries the SMSW DX instruction (whatever that does.) The code come from a program by Robert Collins, and I just made a few changes to fit INFOPLUS (and fix the 386 problem!) If anyone is interested, I can email a copy, or post it. Andrew Rossmann andyross@ddsw1.MCS.COM