By the way, I did manage to get the LCD to work by
polling the busy flag. In class you said a TA had trouble doing this.
I think I might know what went wrong.
If you poll the busy flag, you still need to insert a delay after it
before polling it again. Otherwise you get stuck in an infinite loop.
I was having trouble with this at first. That's why I bring it up as
a possible source of error from the TA. However, I don't know how
much more efficient checking the busy flag is in comparison to
inserting a delay after every character (since the busy flag requires
its own delay). However, it does save some typing time since you don't
have to actually JSR to a delay routine after writing each individual
nibble.