refactoring and preparing to make the screen refresh interrupt-driven
interrupt-driver refesh, there is a glitch in the row-change code still