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

Re: Any non-memory cards for IIgs memory expansion slot?



Jeff Blakeney <CUTjblakeney@sympatico.ca> wrote:

> You could actually have a 14 (or even a 16) MB memory expansion card
> but unfortunately the IIgs ROM has a bug in it which doesn't allow
> access to anything beyond 8 MB.  This is why you still only get 8 MB
> in a ROM 3 IIgs when you install an 8 MB card instead of the 9 MB
> you'd expect (8 MB on the expansion card and 1 MB on the motherboard).

It isn't as simple as that.

The IIgs Memory Manager toolset has a limitation that it will only look
for RAM in banks $00 to $7F (hence the 8 MB limit) plus it expects to
find the motherboard "slow" RAM in banks $E0 and $E1.

There is also a hardware restriction: the FPI/CYA chip is responsible
for supplying chip select signals and do address decoding for the memory
expansion slot, and it only does this for RAM accesses in banks up to
$7F (plus the ROM expansion area in banks $F0 through $FB/FD).

If you attempt to access banks $80-$DF or $E2-$EF, the memory expansion
slot's chip select signals are not activated.

Emulators have no hardware restrictions, so they can go beyond the
hardware limits of a real IIgs.

A possible hardware solution is to have a replacement CPU with its own
extra RAM (along the lines of a souped up TransWarp GS) as this could do
its own address decoding before the FPI/CYA gets in the way.

If it was a simple case of patching the memory manager, I'm sure that
one of the third party RAM card manufacturers would have released a 14
MB memory expansion card.  I never heard of one.

Many parts of the IIgs firmware can be patched in RAM (e.g. any toolbox
call can be replaced), but the memory size detection code (including the
bank $7F limit) isn't one of them.

Despite this, it should be easy enough to write some software which did
an "after the fact" reinitialization of the memory manager to give it
access to additional memory in banks $80 and higher - it would just be a
matter of manually constructing some master handles, inserting them into
a linked list and adjusting any relevant global variables.

There is no point doing this for an emulator, as you can simply change
the code in the ROM which imposes the 8 MB limit.  There is also no
point doing it for a real IIgs, as the hardware won't let you address
memory in those banks anyway (except for my "accelerated CPU with extra
RAM" suggestion above).

-- 
David Empson
dempson@actrix.gen.nz