Path: utzoo!utgpu!news-server.csri.toronto.edu!bonnie.concordia.ca!uunet!samsung!sol.ctr.columbia.edu!bronze!bronze.ucs.indiana.edu!cmcclary From: cmcclary@bronze.ucs.indiana.edu (Charles McClary) Newsgroups: comp.sys.mac.programmer Subject: Struggling with jGNEFilter Message-ID: <1991Jan22.160544.24382@bronze.ucs.indiana.edu> Date: 22 Jan 91 16:05:44 GMT Sender: news@bronze.ucs.indiana.edu (USENET News System) Organization: Indiana Univeristy Lines: 75 I am struggling with setting a procedure to jGNEFilter. I have a feeling I need to add assembly somewhere (setting the jGNEFilter are, I think). Can this be done in C? I have included my source for reference. Thanks, Charles McClary cmcclary@bronze.ucs.indiana.edu /********** SOURCE **********/ /********** Attach procedure to jGNEFilter ***********/ #include #defineNIL_POINTER0L ProcPtr oldjGNEFilter; Str255 trash; pascal void NewjGNEFilter(void); void ResetFlags(void); void main(void); pascal void NewjGNEFilter() { SetUpA4(); asm { move.l oldjGNEFilter,A1; /* save the global in register a1 */ } RestoreA4(); asm { unlk A6; /* remove the stack frame */ jmp (A1); /* jump to the old SystemEvent */ } } /********** main **********/ void main() { Handle myHandle = NIL_POINTER; Ptr myPtr; SysEnvRec world; Str255 *namePtr; asm { move.l A0, myPtr /* copy address of this program to myPtr */ } RememberA0(); SetUpA4(); if (!Button()) { myHandle = RecoverHandle(myPtr); DetachResource(myHandle); oldjGNEFilter = JGNEFilter; JGNEFilter = (ProcPtr) NewjGNEFilter; SysBeep(1); } RestoreA4(); } Charles McClary Workstations Division University Computing Services Indiana University cmcclary@bronze.ucs.indiana.edu