[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Auxilary Ram card programming info..
Matt Jenkins <mdj@pacific.net.au> wrote:
> Phoenyx wrote:
> >
> > What I have is reference to the Zram 2c card. AFAIK, the info is
> > the same for all Applied aux memory cards.
>
> I hope so - I'd hate to see what I'm working on not work in a //c.
> On a similar note, does the //GS use the same system in emulation
> mode ?
Partly. The IIgs does emulate auxiliary memory, but only a single bank.
Don't try to use $C073 as a bank select register - it is code in the
IIgs (part of the interrupt handler).
The IIgs can directly address its entire 16 MB address space by using
long addressing modes, which are available in both native and emulation
mode, so it doesn't need bank switching, except for compatibility with
8-bit machines.
> OK - I thought it'd be this simple. I think I'll still need the //e
> technical reference to find out more about interrupts etc. in aux.
> memory. Oh, do the same trick and limitations apply when using
> the auxiliary bank "language card" as they do with aux. bank 0 ?
I'm not quite sure what you're referring to here, so I'll provide too
much information. :-)
I see you already know about RAMRD/RAMWR, and presumably you know about
80STORE. There is one more softswitch of relevance here:
AUXZP Selects main or auxiliary memory for both reading
and writing in $0000-$01FF (zero page and stack)
and $D000-$FFFF (language card).
The AUXMOVE and XFER routines in page 3 only deal with the AUXRD and
AUXWR switches, i.e. they can only handle the main 48K area. You have
to use your own code to handle auxiliary zero page, stack and the
language card area.
If you are dealing with a multi-bank card, $C073 selects the active RAM
bank for all of auxiliary memory.
If you switch ZP/stack/language card to auxiliary memory, then you may
have to deal with the interrupt vectors ($FFFA to $FFFF). A multi-bank
version extends the problem to other banks as well.
Note that the IIgs always fetches its vectors from ROM, so you only have
to deal with this on the IIe and IIc.
There are also conventions for dealing with the stack pointer in main
and auxiliary memory. The two stacks are supposed to be independent,
and the stack pointers and supposed to be saved and loaded in memory
locations $0100 and $0101 in auxiliary memory (I'd have to dig out a
manual to confirm which way around they go).
There are no conventions that I know of for dealing with stacks in
multi-bank auxiliary slot RAM cards.
--
David Empson
dempson@actrix.gen.nz
Snail mail: P O Box 27-103, Wellington, New Zealand