Scrolling matrix display

It is choppy and I was not able to determine why exactly. The delay is to slow it down, it's not timekeeping. At first I thought the problem was that the amount of time through the loop was variable so I got the time at the start of the loop using the micros() function call and delayed the end of the loop variably as 10000 micros - the number of microseconds spent in the loop to make sure the time for every loop iteration was constant (10ms). However, that did nothing at all to fix the problem nor did some other stuff I tried before I benched it for the time being. Still not sure if it is the way I am using the MAX chips or what, but it doesn't seem to be because of variable execution time. The fact is, those bitwise operations are very fast and execute in constant time so I don't think that is part of the problem at all. All the other stuff is integer looping and comparison, these should all get translated to one clock instructions. Maybe it is in the driver library, or maybe it wasn't really designed for scrolling. I am not sure yet.

I just wanted to demonstrate that you can use bitmap operations to figure out "what bit you are on" when displaying text from a bitmapped font rather than blowing it up into a huge array in advance.