> Here's the problem: > > > push bc > > push hl > ... > > ret > > You pushed without popping. Ret uses the same stack as push and pop. You're wrong. If you look at the code aboce the pushes, you can see that the right return address is pushed back to the stack from hl. So the problem is somewhere else. Probably it would be a good idea to check the program with a debugger.