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

Re: Jon Relay's Apple II Info Archives: Memory Area Summary



Jonathan Schattke <wizwom@ripco.com> wrote:

> David Empson wrote:
> > Jon Bettencourt <jonINTERNETrelayCHAT@napaVALLEYnet.CLARInet> wrote:
> > > $C100 - $C7FF (49408 - 51199): Peripheral Card Memory
> > > $C800 - $CFFF (51200 - 53247): Extended Memory for Peripheral Card in Use
> > > -- or --
> > > $C100 - $C2FF (49408 - 49919): Extensions to System Monitor
> > > $C300 - $C3FF (49920 - 50175): 80-Column Display Routines
> > > $C400 - $C7FF (50176 - 51199): Self-Test Routines
> > > $C800 - $CFFF (51200 - 53247): More 80-Column Display Routines
> > 
> > These descriptions apply mainly to the IIe.  The IIc may have a slightly
> > different arrangement, and I'm sure the IIgs does.  None of this exists
> > on the ][ or ][+.
> 
> Actually, the C000-CFFF space was set out for the Apple II, and the use of the
> C3 and C8-CF pages for 80 column was an artifact of that.

I know all that.  I should have excluded the first two lines when I
quoted.  I was referring specifically to the built-in firmware in the
$C100-$C7FF area, which is arranged differently in the IIgs and possibly
also in the IIc (I'm most familiar with this area in the IIe and IIgs).

In the IIgs, each slot has a real external slot and a built-in option,
with separate soft-switches to enable the firmware and I/O space for
each slot.  The built-in firmware is the code for the corresponding
built-in function:

$C100 - $C1FF  Printer port
$C200 - $C2FF  Modem port
$C300 - $C3FF  80-column firmware
$C400 - $C4FF  Mouse
$C500 - $C5FF  SmartPort
$C600 - $C6FF  Disk Port (5.25" drives)
$C700 - $C7FF  AppleTalk
$C800 - $CFFF  Possibly more 80-column firmware (haven't looked
               in detail)

In each case, the code in the $Cn00 page is mostly entry and mode
switching code, which jumps out to the actual code in ROM bank $FF,
running in native mode instead of emulation mode.

The built-in firmware can be viewed (but not executed) via the
corresponding region of bank $FF, i.e. $FFC100-$FFCFFF.  This area is
never bank-switched.

> I'm not sure what the mapping is in 16-bit mode for a IIGS, I suspect the
> I/O is mapped into the high end of memory.

Nope.  The IIgs has the I/O space in exactly the same area, but it
appears in four banks: 0, 1, $E0 and $E1.

Banks $E0 and $E1 are technically the "main" and "auxiliary" banks from
a IIe, since they are implemented by the Mega II (effectively a IIe on a
chip), but due to the way things are arranged in the IIgs, banks 0 and 1
are the real equivalents, with shadowing of video buffers into banks $E0
and $E1.

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