[comp.sys.amiga.tech] Interrupt servers - help needed

aduncan@rhea.trl.oz (Allan Duncan) (10/03/90)

This is a second posting on this topic.  If you have any knowledge or
examples on the use of interrupts with the parallel port, please mail me
- I have run into the guru in a big way when I try this.

The examples given in the RKM do not quite cover the area in question,
since the parallel port must share the interrupt with the
keyboard.device in a server chain.  My code will run through the
obtaining of resources, adding interrupts, abling the ICR etc without a
hitch, but if it gets an interrupt it will guru with an illegal
instruction near to, but not in, my code space.
Allan Duncan	ACSnet	a.duncan@trl.oz
(03) 541 6708	ARPA	a.duncan%trl.oz.au@uunet.uu.net
		UUCP	{uunet,hplabs,ukc}!munnari!trl.oz!a.duncan
Telecom Research Labs, PO Box 249, Clayton, Victoria, 3168, Australia.

peter@dbaccess.com (Peter A. Castro) (10/05/90)

in article <2307@trlluna.trl.oz>, aduncan@rhea.trl.oz (Allan Duncan) says:
> 
> This is a second posting on this topic.  If you have any knowledge or
> examples on the use of interrupts with the parallel port, please mail me
> - I have run into the guru in a big way when I try this.
> 
> The examples given in the RKM do not quite cover the area in question,
> since the parallel port must share the interrupt with the
> keyboard.device in a server chain.  My code will run through the
> obtaining of resources, adding interrupts, abling the ICR etc without a
> hitch, but if it gets an interrupt it will guru with an illegal
> instruction near to, but not in, my code space.
              ^^^^^^^^^^^^^^^^^^^
   That should be a good indicator that somewhere a bad branch is occuring.
   First, do you intentially set or clear the Zero flag before returning?
   For that matter, do you know that you *are* returning?  You might want to
   take a minimalists approach:  reduce your Interrupt server to just 
   clearing the Zero flag and returning, thus letting the chaining process
   continue.  That way you can isolate at least one part of your problem.
   Also, are you using C or Assembler?  Remember that when your Server is
   called that you don't have a heck of a lot in the way of data address
   ability.  Also, are you making any Library calls in the Server routine?
   Also, remember that you are in Supervisor mode at this time and have
   a limited Stack to play with.  One other thing is Traps.  Don't use them
   inside your code, they will summon the Guru very quickly.

   For more information you might check out the following Source:

     "Guru's Guide to the Commodore Amiga, Meditation #1 - Interrupts"
     By Carl Sassenrath
     Sassenrath Research
     P.O. Box 1510, Ukiah, CA 95482 USA

  It's a slim book (105 pages), white with a strip of maroon on the top.
  Hope this helps.  Good Luck.
  
> Allan Duncan	ACSnet	a.duncan@trl.oz
> (03) 541 6708	ARPA	a.duncan%trl.oz.au@uunet.uu.net
> 		UUCP	{uunet,hplabs,ukc}!munnari!trl.oz!a.duncan
> Telecom Research Labs, PO Box 249, Clayton, Victoria, 3168, Australia.
-- 
Peter A. Castro                   INTERNET: peter@dbaccess.com        // //|
c/o DB/Access Inc.                UUCP: {uunet,mips}!troi!peter      // //||
2900 Gordon Avenue, Suite 101     FAX: (408) 735-0328            \\ // //-||-
Santa Clara, CA 95051-0718        TEL: (408) 735-7545             \// //  ||

p554mve@mpirbn.mpifr-bonn.mpg.de (Michael van Elst) (10/07/90)

In article <2307@trlluna.trl.oz> aduncan@rhea.trl.oz (Allan Duncan) writes:
>The examples given in the RKM do not quite cover the area in question,
>since the parallel port must share the interrupt with the
>keyboard.device in a server chain.

No, the interrupts of the CIA are dispatched by the cia[ab].resource.
You add an interrupt service routine via AddICRVector().

Hope this helps,
-- 
Michael van Elst
UUCP:     universe!local-cluster!milky-way!sol!earth!uunet!unido!mpirbn!p554mve
Internet: p554mve@mpirbn.mpifr-bonn.mpg.de
                                "A potential Snark may lurk in every tree."