Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1.chuqui 4/7/84; site apple.UUCP
Path: utzoo!watmath!clyde!cbosgd!ihnp4!nsc!voder!apple!north
From: north@apple.UUCP (Donald N. North)
Newsgroups: net.micro.mac
Subject: Re: Re: 1.5 Meg Upgrade from MacMemory
Message-ID: <7807@apple.UUCP>
Date: Mon, 28-Oct-85 21:46:11 EST
Article-I.D.: apple.7807
Posted: Mon Oct 28 21:46:11 1985
Date-Received: Wed, 30-Oct-85 05:30:36 EST
References: <501@ihwpt.UUCP> <2092@amdahl.UUCP> <509@ihwpt.UUCP> <523@ihwpt.UUCP> <240@well.UUCP>
Reply-To: north@apple.UUCP (Donald N. North)
Distribution: net
Organization: Apple Computer, Inc.
Lines: 46

In article <240@well.UUCP> espen@well.UUCP (Peter Espen) writes:
>In article <523@ihwpt.UUCP>, dafa@ihwpt.UUCP (David Fay) writes:
>> After talking further with MacMemory and with my hardware friends,
>> I would like to clarify several issues discussed in my
>> previous submissions on the MacMemory 1.5 Megabyte upgrade.
>> 
>> As several people pointed out, I was confused about how screen memory
>> location is determined. In fact, screen memory location is determined
>> entirely by hardware address decoding. However, in order that programs
>> can know about the location of screen memory, the ROM puts a pointer to
>> it in the low memory location ScreenBase. This is done by figuring out how
>> much memory the Mac has, and then assuming screen memory starts a
>> certain distance below the top of memory. Currently, the ROM assumes
>> that a Mac can have only 128K or 512K. If you increase memory beyond
>> 512K, the current ROM will set ScreenBase incorrectly, so you must
>> patch it to point to the actual location of the screen memory. This is
>> done by the ROMs that Levco and others provide with their upgrades.
>>
> 
>	If the screen memory location is determined entirely by hardware
>address decoding, then how can the Apple ROM alter the screen memory
>location to point to the top of RAM for a 512K Mac? I did the Dr. Dobbs
>128 to 512K upgrade on my Mac and I didn't alter any of the hardware
>address decoding for screen memory at all. The only thing that the
>upgrade did was add the 256K memory chips and add the address decoding
>for address lines A17 and A18 to select Memory address line MA8 when
> needed. My screen memory never-the-less is right up there at 7a700
>as it should be. I always assumed that was because the ROM was detecting
>that I had more than 128K of memory and so was writing the ScreenBase
>pointer as 7a700. I still don't understand why that ScreenBase pointer
>can't be made to point to whatever the top of memory is. Perhaps 
>someone out there can clear this up for me. Thanks!
>		Peter Espen 
>
> 
In the 128K/512K MAC, the RAM address decode logic only looks at the upper
two bits of the address; A<23:22>='00' selects RAM.  The display/sound buffers
only need the low 16 word-address lines A<16:01> multiplexed (because they
occupy less than 64K total).  Hardware pullups keep intermediate address bits
high during display refresh access memory cycles, thus the hardware location
of the display will 'float' automatically to the top of any RAM memory in the
low 4 MByte chunk of address space.  Since memory 'wraps' from only decoding
A<23:22>, a screen address base of $7A700 will handle physical memory sizes
of 128K (screen at $3A700) or 512K (screen at $7A700).  If one were to set
the ROM-generated screenbase at $3FA700, RAM sizes of 128K - 4096K (the limit
imposed by hardware) could be handled transparently to the software.