Path: utzoo!attcan!uunet!cbmvax!rutgers!tut.cis.ohio-state.edu!osu-cis!killer!texbell!tness1!uhnix1!uhnix2!uace0 From: uace0@uhnix2.uh.edu (Michael B. Vederman) Newsgroups: comp.sys.atari.st Subject: Re: Interrupts, Interrupts, Interrupts. Summary: Save, Save, Save Message-ID: <688@uhnix2.uh.edu> Date: 18 Oct 88 23:44:55 GMT References: <8810181052.AA28587@ucbvax.Berkeley.EDU> Reply-To: uace0@uhnix2.UUCP Organization: University of Houston Lines: 30 First of all, you must do something like this: move.w sr,-(a7) ori.w #700,sr (your code) move.w (a7)+,sr In actuality, you should probably do something like: move.w sr,-(a7) ori.w #700,sr movem.l d0-d7/a0-a5,-(a7) (your code) movem.l (a7)+,d0-d7/a0-a5 move.w (a7)+,sr To protect any possible register changes. I would also be sure you are not screwing up the stack pointer which almost sounds possible. You should not mess with the status register except by oring it to mask out interrupts, but mostly you must restore its previous value. You might also need to check whether you are in super or user mode when you enter your code, so you know which stack to use... - mike vederman -- for (;;) : Use ATARINET, send an interactive do_it(c_programmers); : message such as: : Tell UH-INFO at UHUPVM1 ATARINET HELP University Atari Computer Enthusiasts : University of Houston UACE