Fine and great, the problem is that you dont have your own A5 inside this task. The parameter block passed does have space for a parameter, but you need asm to get at it. In addition you need to get the memory for the deferred task parameter block from somewhere, and you cant allocate it inside the interupt vector your making the call from. My interface here preallocates a block of paramater records, and arranges to restore the current A5 when your task is called. This saves you from thinking about exactly whats going on, and writing evil assembly. Of course you'll have to make sure that you application A5 is valid when you make the call, so that I restore something reasonable.
Source and example for Mac (binhex) -
Possibly newer versions of DeferredTask.cp and DeferredTask.h - /u/jedavis/src/lib/libmac