[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: IIGS slot addresses



Steve Mentzer <!smentzer@ecom.net> wrote:

> >Does anyone know the slot addresses of the IIGS?  e.g slot one is 49408.  I
> >especially need the addresses of slots 5, 6, & 7.  I need to move a stepper
> >motor card from 1 to 5, 6, or 7.  BEagle Bros. used to have a tips sheet
> >that had the addresses, but I lost mine.  Thanks for any help.Bob
> 
> I might be totally wrong, but I dont think the slot 1 rom mapped to $BFDF
> (49408).

I don't think 49408 is equal to $BFDF.  My calculator says $C100, which
is correct.  ;-)

> I always thought that the slots were mapped into $Cx00 where x = slot
> number. Therefore, $C600 is the equivalent of typing PR#6 from the command
> prompt.

Well, C600G in the monitor is approximately equivalent to typing PR#6,
depending on the card in the slot (usually a disk controller, which
produces this effect).


Here is a complete list of the base hex, decimal and negative decimal
addresses of the main slot memory areas:

Slot       ROM (IOSEL)              I/O (DEVSEL)
 0            n/a              $C080  49280  -16256
 1    $C100  49408  -16128     $C090  49296  -16240
 2    $C200  49664  -15872     $C0A0  49312  -16224
 3    $C300  49920  -15616     $C0B0  49328  -16208
 4    $C400  50176  -15360     $C0C0  49344  -16192
 5    $C500  50432  -15104     $C0D0  49360  -16176
 6    $C600  50688  -14848     $C0E0  49376  -16160
 7    $C700  50944  -14592     $C0F0  49392  -16144


Each slot (except 0) has 256 bytes available for firmware, in the
$Cn00-$CnFF area.  Each slot (including 0) has a further 16 bytes for
I/O registers, in the $C0x8-$C0xF area, where 'x' is the slot number
plus 8.

In the IIe and later machines, slot 0 is not physically available, but
the same memory area refers to the "bank-switched memory", which behaves
like a language card installed in slot 0 of an Apple ][ or ][+.

The IIe also reuses the $C100-$C7FF area for internal firmware.  This is
mapped in and out as required, and doesn't generally interfere with slot
access.

In the IIc, there are no physical slots, but built-in peripherals use
the appropriate memory areas to appear as if they are cards in slots.

In the IIgs, there are both internal peripherals and real slots .  The
Control Panel is used to select whether the appropriate internal
peripheral or corresponding real slot is enabled.  In a few cases, the
real slot I/O area is available even if the slot is set to use the
internal peripheral, but the main ROM area follows the Control Panel
setting (after a reboot).


The traditional ROM area ($Cn00-$CnFF) may be used for I/O locations or
other purposes on some cards.  In addition, some cards change the the
firmware that appears here (e.g. at least one version of the Epson APL
causes the code to change according to the BUSY status from the printer;
Apple's final parallel card has two different firmware sets that are
switch selectable).
 
There is also the $C800-$CFFF area, which is shared between all cards.
It is used for additional ROM space in most cases.  Some cards have
multiple ROM banks in this area, and may have additional I/O and/or RAM
as well.  It is not practical to access this area from BASIC.

-- 
David Empson
dempson@actrix.gen.nz
Snail mail: P.O. Box 27-103, Wellington, New Zealand