<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Thu, 14 Feb 2008 12:58:41 +0000
From   : pete@... (Pete Turnbull)
Subject: Model A (16K) RAM memory map?

On 14/02/2008 11:13, Chris Johns wrote:
> On Thu, 14 Feb 2008, Mark McDougall wrote:
> 
>> According to MESS, the RAM $0000-$3FFF is mirrored at $4000-$7FFF?!? Is this
>> the case from system startup, or is there some soft switch to configure it?
>> Is it mirrored for *both* reads and writes? It must be at least for writes
>> because booting in Mode 6, the MOS ROM is printing "BBC Computer" at address
>> $6000+... but OTOH if it is mirrored for reads, then how does the ROM work
>> out if it's a 16K or 32K machine?
> 
> There is a link inside the machine that sets if the machine is 16k or 32k, 
> so the MOS could use this to determine the memory size.

The MOS has no way to read the link, though.  All the link does is 
prevent the two /CAS signals from being controlled by address line A14. 
  The result is that /CAS0 is always the active one, regardless of the 
address on the bus (so long as it's in the RAM at all), and therefore 
reading or writing to $4000-$7FFF has exactly the same effect as reading 
or writing to $0000-$3FFF.  What the MOS does is something like writing 
a zero to both banks, then writing $FF to the lower bank, and testing to 
see if that's affected the upper bank as well.

As an aside, the 16K position grounds an input to a demultiplexer chip 
so half the outputs are disabled (otherwise, in the 32K position, it's 
controlled by A14).  A useful trick when testing RAM is to force the 
other half of the outputs to be used instead, thus enabling the upper 
bank of RAM instead of the lower, and that can be done by simply 
removing the link altogether.

-- 
Pete                                           Peter Turnbull
                                               Network Manager
                                               University of York
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>