How can "push r4, push r5, rets" invoke a function? I can not find such addressing in the datasheet ...
rets means return according to items on the stack. So push stuff on the stack, call rets, and its the same as a call, except when that routine rets, it returns to the caller of the original function.