In this second episode of NES Programming Michael Chiaramonte moves code out of the VBLANK interrupt into the main execution loop.

NES programming #2 - Moving code out of the VBLANK interrupt
Watch this video on YouTube.