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)