[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Slot settings on a ROM 3
I think there are several things which come into play here. One may
be the rom bank switching involved, along with bank switching which
happens when the GS enters emulation mode.
When you select You Card in the control panel, you disable access to
the slot 3 rom code, but that code has been (and is?) partly used by
the video routines in bank $E0 which get swapped in whenever the GS
executes any 8 bit program. Once the system is finished switching to
emulation mode, it can no longer see the 'Pascal ID' slot codes for
$C300 which Prodos looks for to identify a device which it can use.
Thus, the Prodos kernel stores the 'no device' vector in the slot 3
device vector which effectively set the system correctly.
Prodos follows the Apple conventions for scanning slots. Apple
supplied what's called the Pascal slot protocol. I don't have all
the technical specs handy, but basically the first bytes (maybe page)
of the $Cx slot page holds an ID for the type of card and a set of
jump tables or methods for initializing the device and utilizing
the device. This description is very rough, but it explains basically
what you wanted to know.
As for the Applesoft rom, AFAIK it does not check the slots when
calling the IN# and PR# functions. These are really obsolete calls
and should not normally be used in a Prodos environment. Which as
you have noticed, will disconnect the Basic.system kernel. There are
calls which you can issue to get back to Basic.system and I think
that <CTRL>+<RESET> may also do this.
Listen to me saying this, and yet my Amperdos program uses these
very functions since the Basic.system kernel and global pages don't
exist while it is running. Oh well, what can you expect from a hack?
If I had my manuals for the Apple handy I would be a bit more specific
on some of this, but currently I'm surrounded by PC junk, but that's
a whole 'nother story.
Phoenyx