[comp.sys.amiga.tech] Memory Map

new@udel.EDU (Darren New) (06/09/89)

A while back, somebody asked about the memory map of the amiga and
was answered by "ExecBase is a $4". Although correct, this is not
what I'm asking. I'm just curious about the actual memory mapping
in the Amiga. Where IS chip ram? What is $c00000 ram? Where is FAST ram?
where do devices configure? Where is the ROM/WCS//re-live-boot-rom-on A1000s?
And so on...     --- Darren

cmcmanis%pepper@Sun.COM (Chuck McManis) (06/10/89)

In article <17184@louie.udel.EDU> new@udel.EDU (Darren New) writes:
>A while back, somebody asked about the memory map of the amiga and
>was answered by "ExecBase is a $4". Although correct, this is not
>what I'm asking. I'm just curious about the actual memory mapping
>in the Amiga. Where IS chip ram? What is $c00000 ram? Where is FAST ram?
>where do devices configure? Where is the ROM/WCS//re-live-boot-rom-on A1000s?
>And so on...     --- Darren

The problem is that there isn't any answer for this that is correct 
other than "Ask Exec" which is what you can do by getting the address
of ExecBase in $4. On current Amiga's $000000 - $1fffff is reserved for
chip ram, but there are recognized problems with using the lower 2 meg
of ram space for this purpose, (interrupt vectors get stuck there on
68000 machines for one.) $200000 - $B00000 is normally fast ram, but
here again so is everything over 16 meg currently if you have an '020.
The custom chips have registers currently located at $DFF000 - $DFFFFF
but there is no reason that can't change. And devices, well when they
autoconig they are told what addresses they should reside at and I
believe that this means they will exist somewhere in the $E00000 address
space. Of course due to the way the 68000 resets, ROM has to be located
at $FFFFFF, but can extend "down" toward 0 an arbitrary distance, 256K
in the case of the current Amigas, probably 512K in a future Amiga. (
Especially now that Intel is selling a 256K X 16 EPROM.) All of this
information is contained in the Hardware manual, but the up to date 
information is always contained in Exec's lists. 


--Chuck McManis
uucp: {anywhere}!sun!cmcmanis   BIX: cmcmanis  ARPAnet: cmcmanis@sun.com
These opinions are my own and no one elses, but you knew that didn't you.
"A most excellent barbarian ... Genghis Kahn!"

hull@hao.ucar.edu (Howard Hull) (06/11/89)

In article <17184@louie.udel.EDU> Darren asks:
>A while back, somebody asked about the memory map of the Amiga and
>was answered by "ExecBase is a $4". Although correct, this is not
>what I'm asking. I'm just curious about the actual memory mapping
>in the Amiga. Where IS chip ram?
The physical hardware address for chip ram is designated as $000000 to $1FFFFF,
a 2 meg physical space.  The Amiga 1000 has 256K of this implemented on board
($000000 to $03FFFF), with an additional 256K implementable by a commonly
available add-on module, resulting in 512K of chip ram ($000000 to $07FFFF).
The Amiga 2000 was manufactured initially with 512K of chip ram on-board, as
that is as large an address space as can be addressed by either the original
A1000 custom chip blitter (19-bit internal and on-board blitter bus).  The
initial A2000 custom chips, while reorganized to incorporate some of the
A1000's surrounding glue login within the blitter itself still used the same
internal 19-bit bus.  However, the A2000 was built with a 20-bit external
bus in anticipation of the doubling of chip ram space that has now evidently
arrived with the new production A2000 mother boards (above Rev 6) which also
come with the "VGA-mode" 4-color blitter - presto, 1 meg chip ram located
from $000000 to $0FFFFF.  I do not know if the new mother boards have perhaps
a 21 bit bus, but I suspect that they do not, and such is being reserved for
the "Amiga 3000 class 32-bit main bus machines."  The details of such machines
are not yet determined, though, as the cost/performance analysis will have to
come into line with the protracted market.  For instance, an Amiga-style
alternate-clock-edge bus pair was a good move to give the Amiga an advantage
in certain types of graphics programs, but it failed to out-perform the
Atari-ST in straightforward number-crunching applications where the Atari's
8MHz CPU clock was absolutely faster than the Amiga's NTSC video-compatible
7.1591MHz CPU clock.

>What is $c00000 ram?
The $C00000 ram, also known as the "Ranger Memory" was a solution to the
internal memory expansion problem for the Amiga 1000 beyond 512K (non-chip)
without complicating the A1000 external bus address space specification.
If you have a copy of the original Byte article (August 1985) about the
Amiga 1000, you can look on page 88 at Figure 2, "The Amiga memory map"
and see that the space $C00000 to $DFF000 is marked "0.966 MEGABYTES-
RESERVED".  As well, the chip space from $07FFFF/$080000 to $1FFFFF/$200000
is marked "1.5 MEGABYTES-RESERVED".  As far as I know, the Byte Magazine
Figure 2 has never been updated in a publicly available forum.  The Byte
article does specify that the fast memory bus has an eight megabyte span
from $200000 to $9FFFFF, and all memory and devices with addresses $A00000
and higher will be decoded as resident on the blitter bus.  Thus $C00000
memory, while not addressable by the 19-bit blitter is resident on the
blitter bus, and is thus known as "Slow Fast Ram" among the meticulous.
Interestingly enough, most A2000s with less-than-Rev 6 motherboards have
512K of $C00000 memory implemented on the mother board.  I do not know if
this is still the situation with the new A2000s.

>Where is FAST ram?
Fast ram is designated as $200000 to $9FFFFF.

>where do devices configure?
Add-on boards which have autoconfig hardware will be added to the bus
starting at $200000 unless an A2620 MC68020 card or MC68030 card is present,
in which case all of the A2620's on-board 32-bit memory will be configured
first, starting at the $200000 boundary and working upwards until the $A00000
boundary has been reached.  Any boards on the expansion bus which have not
been configured by that point in the proceedings will thereafter be ignored.
So why have them on the expansion bus, then? you ask...  Well so that when
you chord the mouse to get your MC68000 processor on reboot you can get the
up to four meg you wouldn't otherwise have been able to have in 68000 mode,
that's why...  Do keep in mind, however, that the autoconfig firmware will
place the $C00000 memory ahead of the $200000 memory at config time - thus
the reason for the need to run "FastMemFirst" if you want true fast memory
to be used to load programs listed in your Startup-Sequence.  I might add,
however, that running FastMemFirst has a weird effect on the final location
of your recoverable ram disk, if you use one.  I advise setting up the rrd
before calling FastMemFirst, otherwise the rrd (depending on which one you
use) may end up getting located in slow fast memory.  The CBM Amiga CATS
group does provide detailed information about autoconfig firmware, circuitry,
life, the universe, and EVERYTHING in an inexpensive format.  The address and
available publications, costs, etc. have been posted at frequent intervals in
this newsgroup for the past several light years, so take an interest in local
affairs, ask a friend for a copy of such a posting and order the applicable
publications from CATS...

>Where is the ROM/WCS//re-live-boot-rom-on A1000s?
There is 192K of ROM/WCS space designated at $FD0000 to $FFFFFF.
I don't know if this will-be/has-been expanded, and if so, how so.

>And so on...     --- Darren
Well, perhaps the thing to do is reproduce the Byte 1985 table here so all
can check it out and so that the knowlegeable on the net can correct it to
the Amiga's current glory.  I mean, while a 68000 may be limited to a 16 meg
address range ($000000 to $FFFFFF), a 68020 or 030 isn't.  At least one 020
manufacturer puts his 32-bit memory above 16-meg (much to CBM's horror and
disgust).  I am inclined to think that is not exactly what CBM has in mind -
but as Jim Mackraz has so aptly pointed out, the value of my speculative
notions is not tied to any honorable currency.  Mackraz.  Mackraz would know.
Mackraz, where are you when we really need you?

Here is the table, generated from information found in Byte:
------------------------
Byte Magazine, August 1985 Vol. 10 No. 8, Page 88, Figure 2:

ADDRESS
(HEXADECIMAL)

000000						< 256K OF CHIP RAM
						  (RAM FOR STANDARD MACHINE)
040000						  256K OF CHIP RAM
						  OPTIONAL PLUG-IN MEMORY
080000
		1.5 MEGABYTES- RESERVED
200000
		8 MEGABYTES RESERVED
		FOR FUTURE USE AS PROCESSOR 
		RAM AND PERIPHERALS
		(LOCATED IN EXPANSION BOX)
A00000
		1.988 MEGABYTES- RESERVED
BFD000						< 12K RESERVED AS ADDRESS SPACE
						  FOR TWO 8520 SERIAL I/O CHIPS
C00000						  (ADDRESSED AT BFD0FF AND
						  BFE0FE HEXADECIMAL)
		0.966 MEGABYTE-  RESERVED

DFF000						< CUSTOM CHIPS ARE ADDRESSED
						  IN THIS 4K SPACE
E00000
		512K- RESERVED
E80000
		512K CONTROL AREA FOR
		CONFIGURATION EXPANSION AREA
F00000
		832K- RESERVED
FD0000						< 192K OF SYSTEM ROM
						< FFFFFF IS FINAL ADDRESS-
						  TOTAL WORKSPACE IS
						  16 MEGABYTES
------------------------
That's all, folks.
					Howard Hull
					hull@hao.ucar.edu

FelineGrace@cup.portal.com (Dana B Bourgeois) (06/11/89)

The Amiga Software Memory Map:

00 00 00 04     AbsExecBase

That's it.  Now I know that is what we already told you.  What you
really want is the Hardware Memory Map:

00 00 00 - 03 FF FF  256K DRAM
04 00 00 - 07 FF FF  256K DRAM (option card)  512K Chip RAM

08 00 00 - 1F FF FF  512K: Image of bottom 512K. Fat Agnus will expand
                           Chip RAM to 1Meg by decoding this area.
20 00 00 - 9F FF FF  8 Meg Expansion RAM space
A0 00 00 - BE FF FF  Images of registers
BF D0 00 - BF DF 00  8520-B: registers at even address only
BF E0 01 - BF EF 01  8520-A: registers at odd address only
C0 00 00 - DF EF FF  Reserved
DF F0 00 - DF FF FF  Coprocessor chip registers
E0 00 00 - E7 FF FF  Reserved
E8 00 00 - EF FF FF  Expansion Slot Decoding
F0 00 00 - F7 FF FF  Reserved
F8 00 00 - FF FF FF  KickStart: ROM or Write Only RAM

This is per RKM Addison-Wesley(white and purple) Hardware Reference
Manual.  There is more info on the register addresses and stuff.  But
unless you're into copy protection, or taking over the machine, or
hardware development, or just plain 'ol unfriendly hardware access,
there isn't a reason to dig into this stuff.  However, I hope this 
answers your question.

Dana

phils@tekigm2.MEN.TEK.COM (Philip E Staub) (06/11/89)

In article <109194@sun.Eng.Sun.COM> cmcmanis@sun.UUCP (Chuck McManis) writes:
>In article <17184@louie.udel.EDU> new@udel.EDU (Darren New) writes:

[deleted stuff about Amiga memory map questions and answers]

>space. Of course due to the way the 68000 resets, ROM has to be located
>at $FFFFFF, but can extend "down" toward 0 an arbitrary distance, 256K
>in the case of the current Amigas, probably 512K in a future Amiga. (

Well, not quite. The 68000 loads its initial PC and Stack Pointer from the
first 8 bytes in the address space ($000000 to $000007). This normally
requires one of the following:

	1. ROM is permanently located starting at 0. (Unless special
	   provisions are made to accommodate it, this usually makes it 
	   real ugly to try to redirect exception vectors.)
	2. ROM responds to an address range starting at 0 until some action 
	   causes it to assume its usual address. I've seen this action 
	   consist of anything from an explicit write to a port address to 
	   an automatic toggle that happens when you branch to an address 
	   in the normal ROM address range.
	3. ROM located at both 0 and its normal address until a similar
	   action described in 2.
	4. The base address (or entry point) of the ROM is permanently 
	   gated onto the data bus when the first longword in memory is 
	   accessed, effectively replacing the first 4 bytes of memory with 
	   a 4 byte ROM.

I'm sure there are other methods of handling this, but these are the major ones
I've encountered. Which one does the Amiga use? Well... I knew once, but I
forgot! (Shows you how important it is once you know it works, eh?)

The location of ROM at $FFFFFF and "down" is usually to avoid fragmenting
the available address space unnecessarily, or to simplify chip select decoding.

>
>--Chuck McManis
>uucp: {anywhere}!sun!cmcmanis   BIX: cmcmanis  ARPAnet: cmcmanis@sun.com
>These opinions are my own and no one elses, but you knew that didn't you.
>"A most excellent barbarian ... Genghis Kahn!"

(I guess I got a bit longwinded picking a very small nit, didn't I? Sorry.)

-Phil
-- 
------------------------------------------------------------------------------
Phil Staub        
Tektronix, Inc., Vancouver, Washington 98668
phils@tekigm2.MEN.TEK.COM

morris-ng@cup.portal.com (Yuklung Morris Ng) (06/11/89)

In the article by  new@udel.EDU (Darren New):

>A while back, somebody asked about the memory map of the amiga and
>was answered by "ExecBase is a $4". Although correct, this is not

In Amiga internal structure, the machine only guarantee a few locations
for a certain things, e.g. $4 for ExecBase, $100 for guru information...
however, the other stuff are floating on the memory.  It maybe different
whenever you reset the computer.

>what I'm asking. I'm just curious about the actual memory mapping
>in the Amiga. Where IS chip ram? What is $c00000 ram? Where is FAST ram?

Chip ram is in $420-$80000, the next .5 fast ram on A500/A2000 is at
$C004E8-$C7E800.  The extra ram may start at $200020 (the A2058) or
other locations, depend on the manufacturers.
>where do devices configure? Where is the ROM/WCS//re-live-boot-rom-on A1000s?
>And so on...     --- Darren

Again the location of the devices may vary a lot.  Maybe the ROM/WCS//,etc.
That's why you need to know the ExecBase which tell you where these stuffs
are at.

According to your messages, you must be get use to the other machines
structure.  Remember on Amiga all memory location (well most) are abstract.
Remember when I used my Apple II, -151 is the michine code entry, 800 is the
BASIC code starting point... Now it is totally different in Amiga.

Good luck!



+------------------------------+------------------------------------+
|  Morris Y. L. Ng             |  Usenet: morris-ng@cup.portal.com  |
|  Computer Science & Finance  |  Portal: Yuklung Morris Ng         |
|  San Jose State University   |  Home  : (###)###-#### (Guess?!)   |
+------------------------------+------------------------------------+
|           "Be my Amiga!  And I will be your Amigo!"               |
+-------------------------------------------------------------------+

mph@behemoth.phx.mcd.mot.com (Mark Huth) (06/13/89)

In article <109194@sun.Eng.Sun.COM> cmcmanis@sun.UUCP (Chuck McManis) writes:
>space. Of course due to the way the 68000 resets, ROM has to be located
>at $FFFFFF, but can extend "down" toward 0 an arbitrary distance, 256K
>in the case of the current Amigas, probably 512K in a future Amiga. (
Sorry Chuck, the 680xx all get their reset vectors from logical
address 0 - you have to have special circuitry to decode the first
accesses after reset in the Amiga ROM space.  The choice of ROM
location has nothing to do with the 680xx reset sequence.

After reset, the 680xx fetches a longword from location 0 in the
supervisor program space for use as the system stack pointer, and then
fetches a longword from location 4 to load the program counter.  It
then begins execution in supervisor mode at the location specified by
the PC load.

Mark Huth

chk@client1.DRETOR.UUCP (C. Harald Koch) (06/16/89)

In article <109194@sun.Eng.Sun.COM> cmcmanis@sun.UUCP (Chuck McManis) writes:
>[...]
>The custom chips have registers currently located at $DFF000 - $DFFFFF
>but there is no reason that can't change.

Um, excuse me if I am missing something, but...

The current model is that the chips are absolutely at $DFF000. Almost every
program I have seen that accesses the custom chips does so directly to this
address range. I don't think the custom chips could be moved without all
hell breaking loose.

Is there an official way to find out where the custom chips are in the Amiga
address space? I have not yet encountered anything like this.

-- 
Grandpa Charnock's Law:	 | C. Harald Koch  NTT Systems, Inc., Toronto, Ontario
You never really learn	 | chk@gpu.utcs.utoronto.ca	   (long-term address)
to swear until you learn | chk@zorac.dciem.dnd.ca	      (my current job)
to drive.		 | chk@chkent.UUCP		    (my AMIGA at home)