Filter manager SWIs:

Filter_RegisterPreFilter

Add a new pre filter to the list of pre filters.

Entry:

        R0 - Pointer to 0 terminated filter name. 
        R1 - Addresss of filter.
        R2 - Value to be passed in R12.
        R3 - Task handle of task to which filter is applied.
             or 0 for all tasks.

Exit:

        Registers preserved.
        The address pointed to by R1 will be called whenever the task who's
handle is passed in R3 calls Wimp_Poll with R12 equal to the value of R2 when this SWI is called.
                         
        The routine pointed to by R1 will be called with:
        R0 =  Event mask as passed to Wimp_Poll
        R1 -> Event block as passed to Wimp_Poll
        R2 = Task handle of task that called Wimp_Poll.  
        On Exit:
        It may clear bits in r0 to provide a new event mask.
        It must preserve all other registers.

Filter_RegisterPostFilter

Add a new post filter to the list of post filters.

Entry:

        R0 - Pointer to 0 terminated filter name. 
        R1 - Addresss of filter.
        R2 - Value to be passed in R12.
        R3 - Task handle of task to which filter is applied.
             or 0 for all tasks.
        R4 - Event mask ( 1 bit masks the event out as for Wimp_Poll).

Exit:

        Registers preserved.
        The address pointed to by R1 will be called whenever the Wimp is
about to return to the task who's handle is passed in R3 from Wimp_Poll with R12 equal to the value of R2 when this SWI is called.
        On entry to the routine pointed to by R1:
        R0 - Event reason code (as from Wimp Poll)
        R1 -> User's event buffer.
        R2 = Task handle for task to which the return is made.
        Task paged in.
        On Exit:
        The routine may modify the reason code in r0 and the contents of the 
        buffer pointed to by R1 to provide a new event.
        It must preserve R1 and R2.
                                          

Filter_DeRegisterPreFilter

Remove a pre filter from the list of pre filters.

Entry:

        R0 - Pointer to 0 terminated filter name. 
        R1 - Addresss of filter.
        R2 - Value to be passed in R12.
        R3 - Task handle of task to which filter was applied.
        All must be the same as those passed to RegisterPreFilter
Exit:
        Registers preserved.
        Filter de-registered.

Filter_DeRegisterPostFilter

Remove a pre filter from the list of pre filters.

Entry:

        R0 - Pointer to 0 terminated filter name. 
        R1 - Addresss of filter.
        R2 - Value to be passed in R12.
        R3 - Task handle of task to which filter was applied.
        All must be the same as those passed to RegisterPreFilter
Exit:
        Registers preserved.
        Filter de-registered.