First thought, before I look at your code, is that you have enabled trimming the right hand pixels from the characters. Yes, you are setting the screen ram to $5000 + card. But bits 5 to 7 of the high byte indicate the number of pixels to trim. The top 3 bits of $50 are 0b010 = 2 in decimal, so indeed it _should_ be trimming the two right most pixels from each character. Change the $5000 to $1000, and it should work -- but I haven't had the chance to test it.