It was a single interrupt, but you could trigger it on a specific scan line by storing the number of the scan line in $D012. So to do stuff during the vertical blank you'd just need to set $D012 to a large enough value.
It was/is the bread and butter of the C64 demo scene.
It was/is the bread and butter of the C64 demo scene.