overview components memorymap downloads possibilities contact
 
ram io eprom
The Amélie project
The memory map

Certain aspects of the memory map are dictated by the processor. It requires Page One (&0100-&01FF) to be RAM for the provision of a stack, while the last six bytes of memory (&FFFA-&FFFF) are used to provide three vectored addresses for the hardware vectors.
While it is possible to locate the vectors in random access memory, because the RESET vector is one of these it is logical to place the firmware so that these final six bytes may be read out of the ROM, EPROM, FlashROM, etc...

Some systems, such as the Acorn FileStore E01S copy the entire firmware into RAM and then switch the memory decoding so the ROM is invisible - all subsequent 'firmware' activity, including the hardware vectors, takes place in RAM. This sort of thing is not required within Amélie.


The basic memory map
The basic memory map is laid out as follows:

&FFFF

  &FFFE IRQ vector
 

 EPROM

&FFFC RESET vector
    &FFFA NMI vector
 

 (BIOS area)

 

&F800

 - - - - - - - - - - -

&F800 BIOS start
 

 (application area)

 
     

&F000

 4096 bytes

&F000 EPROM base
     

&A300

 Memory-mapped

&A300 Latch
 

I/O hardware

&A100 ACIA (serial I/O)

&A000

 devices

&A000 VIA (digital I/O)
     

&07FF

  &0400-&07FF unallocated
 

 RAM

&0300-&03FF app. workspace
    &0200-&02FF serial buffer
 

 (2048 bytes)

&0100-&01FF processor stack

&0000

  &0000-&00FF Page Zero


Each part is discussed in further detail within its respective sections.

 

Address decoding ( first attempt)

The first attempt at address decoding is as follows:

First attempt at address decoding.
Click the image to view a larger version...

This, unfortunately, has a giant flaw. Can you spot it?

If not - consider that A14 and A15 both high mean the ROM is to be accessed; while A13 and A15 both high means an I/O device is being accessed.

However since the ROM is mapped in at &F000 , this in binary is %1111 0000 0000 0000; or in other words when accessing the ROM, A12, A13, A14, and A15 will always be high. Thus, the I/O device selections will always be active at the same time as the ROM selection. Aaargh!

 

The solution is pretty simple and would require only one more bit of logic to implement. But, it needs NOT so this would be another logic gate. I know I can do the entire memory decode with three logic ICs (anything else is just messy).

 

Address decoding ( second attempt)

What was necessary was not, in fact, a clever plot to fit in another logic gate; but rather a complete rethink of the address selection logic.

I am not going to explain how I arrived at the current decision, since the diagram pretty-much explains itself.

Address decoding schematic, second attempt.
Click the image to view a larger version...

If you have ProTel's CircuitMaker (or the Pro version), or ExpressPCB's ExpressSch and ExpressPCB (available from their website), you can download schematics and circuit diagrams for a hypothetical daughter-board to perform address decodes.

This circuit will, however, be a part of the main motherboard and not a daughterboard...

© 2005 Rick Murray