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

Re: What Apple II cards used the $c800 ROM address space



Don Bruder wrote:

>Here's where I get foggy, working from memories of long ago "intense" 
>Apple II hacking, but I believe this is correct:
>"Main" $C800 gets switched out, and the corresponding ROM at $Cx00 gets 
>switched in anytime a $Cxyy (x = Slot# * 16, yy = anything) address 
>shows up on the address lines. "Main" $C800 gets switched back in when 
>$CFFF hits the adress lines.

Actually, only machines later than the ][+ have $C1xx..$CFFF space on
the main board, and it is controlled by a different softswitch ($C007 to
switch it in and $C006 to switch it out).

The proper use of $C8xx..$CFFF space is slightly different than has
been suggested.  Any ROM space which a card may have is enabled
(on the card itself) by an access to the $Csxx slot space, but then
code in the slot space must _disable_ the ROM space by making an
access to $CFFF, which will switch of _all_ cards' expansion ROM
(again, using the cards' own logic).  Fetching of the next instruction
in sequence from the slot space will then re-enable "this" card's
expansion ROM, with the guarantee that it is the only card whose
ROM is enabled--assuming that all the other cards play by the
rules.

It's actually a very simple, elegant form of ROM bank-switching,
which enables much more interesting firmware than just using
the 256-byte slot space.  Wozniak and Baum were way ahead
of the rest of the planet on "Plug 'n' Play".

BTW, a card can implement its own internal bank switching to
re-use the $C8xx..$CFFF space for additional ROM or RAM.
The Vulcan controller maps both on-card ROM and RAM into
this 2K space under control of its firmware.

-michael

Check out amazing quality sound for 8-bit Apples on my
Home page:  http://members.aol.com/MJMahon/