Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!rutgers!ucsd!ucbvax!dewey.soe.berkeley.edu!oster
From: oster@dewey.soe.berkeley.edu (David Phillip Oster)
Newsgroups: comp.sys.mac.programmer
Subject: Re: Making a Mac SE think its a II
Message-ID: <25630@ucbvax.BERKELEY.EDU>
Date: 14 Aug 88 05:34:29 GMT
References: <17630@glacier.STANFORD.EDU>
Sender: usenet@ucbvax.BERKELEY.EDU
Reply-To: oster@dewey.soe.berkeley.edu.UUCP (David Phillip Oster)
Organization: School of Education, UC-Berkeley
Lines: 32

I've complained and complained about this, but too many applications check
for the presence of a MacII, when all they are really interested in is
some specific feature, such as a 68020, or color quickdraw.

If this program really makes no color quickdraw calls, and you have a
68020, you can try to fool it by doing the following:

There is a low memory global, RomVersion:
extern int RomVersion : 0x28E;
that holds:
0xFFFF on a classic mac
0x7FFF on a MacPlus and an SE
and 
0x3FFF on a II.

You can patch this in a debugger.

Apple decided that this wasn't detailed enough, so they provided the trap:
SysEnvirons().
This returns a record, and is declared in OSUtil.h
You can: 1.) set a breakpoint on this trap to see if your app calls it.
If it does, patch the return value to claim to be a MacII.

If all this manual patching works, you can write an INIT to do it all for
you at system startup. I know tail patching is not approved of, but you
don't need a product, and I doubt anyone will be looking at the caller of
SysEnvirons().


--- David Phillip Oster            --When you asked me to live in sin with you
Arpa: oster@dewey.soe.berkeley.edu --I didn't know you meant sloth.
Uucp: {uwvax,decvax,ihnp4}!ucbvax!oster%dewey.soe.berkeley.edu