[comp.sys.amiga.programmer] CIA register

FERZAN@TREARN.BITNET (05/16/91)

             Can anyone explain the memory overlay bit
             in the CIAA chip ?
             I didn't find any info in Amiga Hardware Manual and
             Mapping The Amiga book ..
             But I think this bit sets the ROM start address to 0
             Really ?

-orhan-

phil@adam.adelaide.edu.au (Phil Kernick) (05/16/91)

FERZAN@TREARN.BITNET writes:

>             Can anyone explain the memory overlay bit
>             in the CIAA chip ?
>             I didn't find any info in Amiga Hardware Manual and
>             Mapping The Amiga book ..
>             But I think this bit sets the ROM start address to 0
>             Really ?

It probably does.  This is just sheer speculation, but I suspect that it
is set when the machine is reset, and points the ROM at 0 so the
processor will be able to pick up the initial PC from address 0 and SSP
from address 4.

It almost certainly resets after this and the ROM initialises all of the
standard 68000 vectors and then starts the OS.


Hope this helps,
Phil.

-- 
o|      ///   Phil Kernick              EMail:  phil@adam.adelaide.edu.au    |o
 |     ///    Departmental Engineer     Phone:  +61 8 228 5914               |
o| \\\///     Dept. of Psychology       Fax:    +61 8 224 0464               |o
 |  \///      University of Adelaide    Mail:   GPO Box 498 Adelaide SA 5001 |

markv@kuhub.cc.ukans.edu (05/16/91)

In article <phil.674378842@adam.adelaide.edu.au>, phil@adam.adelaide.edu.au (Phil Kernick) writes:
> FERZAN@TREARN.BITNET writes:
> 
>>             Can anyone explain the memory overlay bit
>>             in the CIAA chip ?
>>             But I think this bit sets the ROM start address to 0
>>             Really ? 
> It probably does.  This is just sheer speculation, but I suspect that it
> is set when the machine is reset, and points the ROM at 0 so the
> processor will be able to pick up the initial PC from address 0 and SSP
> from address 4.
> It almost certainly resets after this and the ROM initialises all of the
> standard 68000 vectors and then starts the OS.
 
Yes, the overlay bit maps the ROMs to 0.  That's ALL it does.  Now,
you likely will crash long and hard after that, but you dont have to.
The ROMs at 0 dont have a full exception table, since that is one of
the first things that gets done, so any interrupts or exceptions will
die hard (the OS turns off interrupts when it resets).  But if you
deal with the exception problem, and make sure your code isn't running
out of the first 512 of RAM, then you can twiddle it to your hearts
content.  Of course there is no need to since the ROM is accessable
normally.  However, this trick can be used to look at the boot ROMs in
a 3000 or 1000 (the 1000 requires other magic too, because of the WCS),
since its the *real* ROM that gets mapped in, not the ROM image.
 
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Gooderum			Only...		\    Good Cheer !!!
Academic Computing Services	       ///	  \___________________________
University of Kansas		     ///  /|         __    _
Bix:	  mgooderum	      \\\  ///  /__| |\/| | | _   /_\  makes it
Bitnet:   MARKV@UKANVAX		\/\/  /    | |  | | |__| /   \ possible...
Internet: markv@kuhub.cc.ukans.edu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

f90angu@fy.chalmers.se (Andreas Gunnarsson) (05/17/91)

In article <1991May16.103515.30814@kuhub.cc.ukans.edu> markv@kuhub.cc.ukans.edu writes:
[...]
> 
>Yes, the overlay bit maps the ROMs to 0.  That's ALL it does.
[...]
>However, this trick can be used to look at the boot ROMs in
>a 3000 or 1000 (the 1000 requires other magic too, because of the WCS),
>since its the *real* ROM that gets mapped in, not the ROM image.
>
The overlay bit maps the ROM at $f80000 to 0. In the 500 (and I'm sure the
other 256k ROM Amigas, though I haven't checked) $f80000-$fbffff comtains a
copy of $fc0000-$ffffff. However, in the A1000 the boot ROM is located at
$f80000.

To look at the boot ROM in a 1000 you simply have to jump to the RESET
instruction at the beginning of WCS ($fc0000). This will reset the computer,
and after that the ROM will be visible at $f80000 and the WCS is RAM! Now just
use your favorite monitor/debugger to (look at the boot ROM)/(change the WCS).
Of course, if you change anything you may crash the computer because it's
still running the kickstart from $fc0000.
When you write something to the address range $f80000-$fbffff, the boot ROM
will disappear and the WCS will become write protected. The boot ROM normally
does this, but since you've told the computer to bypass it and jump directly
to WCS, that instruction will not be executed.

DISC LAMER: This works on _MY_ A1000. Don't yell at me if it doesn't work on
            your!

==============================================================================
73 es 88 de SM7TLS          f90angu@fy.chalmers.se          Andreas Gunnarsson
==============================================================================
-- 
==============================================================================
73 es 88 de SM7TLS          f90angu@fy.chalmers.se          Andreas Gunnarsson
==============================================================================