Answers:
1. I don't know
2. It's probably the same as return 0; in C. 0 is a RETURN_OK (edited). You have the answer yourself... 78 was stored in your d0, and everything returned to DOS (via d0) except 0 is considered a fail code. So just return 0.
3. All other registers than A0, A1, D0 and D1 must have the same value on program exit as they had on entry. So it's a must to restore these registers (a2-a7 and d2-d7)!