Actually, there was no problem here, but sometimes it does happen.
It's just a quick debug hack I'm just not clearing the screen when starting, so that I have a bunch of image data already populated in screen buffer, from Zeus editor screen. Which is easy to produce with a simple list inside Zeus.
So, scrolling is just getting bytes from screen and shuffling them around. It looks odd, because it's not working as expected, and it damages the screen buffer, but doesn't hurt the source code, since it's located elsewhere in memory obviously.
Text on screen is just a graphical representation (using ROM font table) of source code bytes that are elsewhere.
Although it might not look like, but here is correct output from scrolling routine.
There is garbage on the left, because the ball was bouncing on the left side, scroll happens next, and then blit ball bitmap again in update position. Another awkward thing is platforms seem to be getting longer, but this is due to the same problem, scrolling and then printing them again on the same old spot, this explains the Pinocchio effect