[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: AppleTalk / Interrupts / ProDOS 8 / DOS 3.3 Launcher
Firstly, thanks to those who have helped out so far (both here and via mail).
>> THE MAIN QUESTION:
>> I have a rather unique situation in which I need to swap out the
>> memory occupied by the ProDOS 8 MLI.
>> Would it be possible to patch an interrupt vector (either in page 3
>> of bank 0, or in bank E1/E0 on a GS) to handle the interrupts
>> generated by Appletalk without having the MLI in memory?
>> ProDOS is still in the language card, if this is any help.
>
>ProDOS-8 itself isn't involved in handling AppleTalk interrupts on the
>IIgs. They are handled by the IIgs interrupt firmware. Patching this
>will achieve nothing except give you a headache trying to reinvent the
>wheel.
I swap the global page into its proper place $BF00..$BFFF when I make
a ProDOS MLI call, so having interrupts enabled at this point is not
a problem [and I now know that I definitely need to].
However, what happens when the ProDOS global page is not in place?
I know now that I cannot disable interrupts for a long period (even
when I'm not making ProDOS calls), so the interrupts must be handled.
The ProDOS global page (as defined in Beneath Apple ProDOS), has
various interrupt vectors, etc. This tends to indicate that processing
of an interrupt needs the global page to be in place.
Is this the case?
Does an Appletalk interrupt go through any other RAM vectors in bank 0
(specifically, in page 3)?
If they do, then DOS 3.3 initialisation is likely to patch this vector
(I think - I can check this).
If Appletalk interrupts are handled exclusively by GS interrupt code (and
never make it to bank 0 vectors at all), then all I need to do is make
sure interrupts are enabled all the time (or most of the time), and
Appletalk will run perfectly OK whether or not the ProDOS global page
is in place.
However, if some bank 0 vectors are called during the handling of the
interrupts, then I need to make sure that these vectors are patched to
point to valid code.
I don't want to re-invent the wheel and handle the interrupts my self,
I just want to patch any vectors in bank 0 so that I can cause interrupts
to get handled by the firmware.
Any further help would be much appreciated...
John MacLean.
--
Email: johnmac@fawlty.towers.oz.au Phone: +61 2 427 2999
Snail: John MacLean c/- Tower Technology Fax: +61 2 427 7072
1 Apollo Place, Home: +61 2 449 5930
Lane Cove, NSW 2066, Australia.