Source: http://www.cs.jhu.edu/~phi/csf/slides/lecture-6502-interrupt.pdf