Essentially, the CPU executes each line of video, jumping to the start of each line of cells. The video system latches each byte onto a shift register and displays it.
But the CPU is tricked -- NOPs are forced onto its data bus right before it decodes the instruction. So it merrily marches along fetching successive bytes for the video subsystem, without interpreting them.
That is, until a certain bit of the character code is seen, then the CPU is allowed to execute the instruction and terminate the scanline (usually HALT on the ZX). This process repeats over and over for each scanline.
As a result, it's pretty tricky to program animations. There's not much CPU time left for anything while a frame is being displayed.
Essentially, the CPU executes each line of video, jumping to the start of each line of cells. The video system latches each byte onto a shift register and displays it.
But the CPU is tricked -- NOPs are forced onto its data bus right before it decodes the instruction. So it merrily marches along fetching successive bytes for the video subsystem, without interpreting them.
That is, until a certain bit of the character code is seen, then the CPU is allowed to execute the instruction and terminate the scanline (usually HALT on the ZX). This process repeats over and over for each scanline.
As a result, it's pretty tricky to program animations. There's not much CPU time left for anything while a frame is being displayed.