Path: utzoo!utgpu!water!watmath!clyde!bellcore!faline!ulysses!allegra!mit-eddie!bloom-beacon!think!ames!pasteur!ucbvax!CORY.BERKELEY.EDU!dillon From: dillon@CORY.BERKELEY.EDU.UUCP Newsgroups: comp.sys.amiga Subject: Re: Request for Interrupt Message Port Help Message-ID: <8801231922.AA12482@cory.Berkeley.EDU> Date: 23 Jan 88 19:22:37 GMT Sender: daemon@ucbvax.BERKELEY.EDU Lines: 24 Posted: Sat Jan 23 14:22:37 1988 :ReciISR() :{ :abort = TRUE; :} : : ... : mp = (struct MsgPort *) CreateInterruptPort("intport", 0, ReciISR); If you are using the small code model it will not work. If you are using the large code model it still might not work. There are three problems: (1) The registers contain specific information and in no way reflect the registers of the task/process. Therefore, (2) The register used for the global base (small code model) does not hold the proper value and thus the reference to 'abort' will go to a random memory location. (3) Certain registers must be saved and restored. For interrupt service routines, D0/D1/A0/A1/A5/A6 are all scratch. Thus, if Lattice does not save D2 and D3 (I don't have Lattice so I don't know), they must be saved manually. I think Lattice does save D2 and D3, in which case you only need to worry about (2). -Matt