A quick cursory look at your code reveals you have made a few hacks. However, they have some loose ends

These are just a couple I could find within the few minutes I looked at your code


Busy check does not really work. Bits sta0 and sta1 are not defined anywhere. Since they would read 1, busy_chk seems to work, but isn't really doing what it is intended to do
if (glcd_sta0 <> 1) AND (glcd_sta1 <> 1) then busy_chk

txt_home already does a send2. In putchar you do it again after gosub txt_home

Since busy_chk is not working, you might be getting the artifacts on screen